From 91a57916ea71dce8009ad954cd640f06359dec09 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Mon, 22 Jul 2024 13:11:05 +0300 Subject: [PATCH 001/188] fix DatabaseResourceArn SSM param (#1398) ### Feature or Bugfix - Bugfix ### Detail - fix the wrong cluster arn (now pull from construct) - improve db-name handling ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/stacks/aurora.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deploy/stacks/aurora.py b/deploy/stacks/aurora.py index 4446968bd..21d2f9314 100644 --- a/deploy/stacks/aurora.py +++ b/deploy/stacks/aurora.py @@ -63,6 +63,8 @@ def __init__( self, f'{resource_prefix}-{envname}-aurora-db', username='dtaadmin', encryption_key=key ) + database_name = f'{envname}db' + database = rds.ServerlessCluster( self, f'AuroraDatabase{envname}', @@ -73,7 +75,7 @@ def __init__( self, 'ParameterGroup', 'default.aurora-postgresql13' ), enable_data_api=True, - default_database_name=f'{envname}db', + default_database_name=database_name, backup_retention=Duration.days(30) if prod_sizing else None, subnet_group=db_subnet_group, vpc=vpc, @@ -145,7 +147,7 @@ def __init__( self, 'DatabaseDb', parameter_name=f'/dataall/{envname}/aurora/db', - string_value=f'{envname}db', + string_value=database_name, ) ssm.StringParameter( @@ -166,7 +168,7 @@ def __init__( self, 'DatabaseResourceArn', parameter_name=f'/dataall/{envname}/aurora/resource_arn', - string_value=f'arn:aws:rds:{self.region}:{self.account}:cluster:dataall{envname}db', + string_value=database.cluster_arn, ) ssm.StringParameter( From 2deee63414a3a387e3467c35c5bb3f7c43356cce Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Mon, 22 Jul 2024 13:37:55 +0300 Subject: [PATCH 002/188] fix delete_env parameter (#1397) ### Feature or Bugfix - Bugfix ### Detail - delete_env takes the env object ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- tests_new/integration_tests/core/environment/global_conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index b700afbeb..d24321c11 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -135,7 +135,7 @@ def get_or_create_persistent_env(env_name, client, group, testdata): if env.stack.status in ['CREATE_COMPLETE', 'UPDATE_COMPLETE']: return env else: - delete_env(client, env['environmentUri']) + delete_env(client, env) raise RuntimeError(f'failed to create {env_name=} {env=}') From e67bbdeea1c1d7ca0b711be1a09344dbf836259a Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:22:25 -0400 Subject: [PATCH 003/188] Fix deprecated mui tree view (#1427) ### Feature or Bugfix - Bugfix ### Detail - Tree View from mui lab is deprecated and no longer renders on FE appropriately --> move to `@mui/x-tree-view` ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 49 ++++++++++++------- frontend/package.json | 1 + .../Catalog/components/GlossarySearchUI.js | 2 +- .../components/GlossaryManagement.js | 3 +- frontend/yarn.lock | 39 ++++++++++++--- 5 files changed, 67 insertions(+), 27 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d40dba0b8..8dd0e6c5f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -20,6 +20,7 @@ "@mui/styles": "^5.5.1", "@mui/x-data-grid": "^5.17.26", "@mui/x-date-pickers": "^5.0.0", + "@mui/x-tree-view": "^6.17.0", "@reduxjs/toolkit": "^1.8.0", "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.4", @@ -11558,6 +11559,36 @@ "node": ">=6" } }, + "node_modules/@mui/x-tree-view": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-6.17.0.tgz", + "integrity": "sha512-09dc2D+Rjg2z8KOaxbUXyPi0aw7fm2jurEtV8Xw48xJ00joLWd5QJm1/v4CarEvaiyhTQzHImNqdgeJW8ZQB6g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/base": "^5.0.0-beta.20", + "@mui/utils": "^5.14.14", + "@types/react-transition-group": "^4.4.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.8.6", + "@mui/system": "^5.8.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -26743,15 +26774,6 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "peer": true }, - "node_modules/metro/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, "node_modules/metro/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -29650,15 +29672,6 @@ "ws": "^7" } }, - "node_modules/react-devtools-core/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, "node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9afe2219b..a9996a427 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,6 +29,7 @@ "@mui/styles": "^5.5.1", "@mui/x-data-grid": "^5.17.26", "@mui/x-date-pickers": "^5.0.0", + "@mui/x-tree-view": "^6.17.0", "@reduxjs/toolkit": "^1.8.0", "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.4", diff --git a/frontend/src/modules/Catalog/components/GlossarySearchUI.js b/frontend/src/modules/Catalog/components/GlossarySearchUI.js index 5920fa485..bc36dc622 100644 --- a/frontend/src/modules/Catalog/components/GlossarySearchUI.js +++ b/frontend/src/modules/Catalog/components/GlossarySearchUI.js @@ -1,6 +1,6 @@ import ArrowDropDown from '@mui/icons-material/ArrowDropDown'; import ArrowRight from '@mui/icons-material/ArrowRight'; -import { TreeItem, TreeView } from '@mui/lab'; +import { TreeItem, TreeView } from '@mui/x-tree-view'; import { Box, CircularProgress, Typography } from '@mui/material'; import { makeStyles } from '@mui/styles'; import PropTypes from 'prop-types'; diff --git a/frontend/src/modules/Glossaries/components/GlossaryManagement.js b/frontend/src/modules/Glossaries/components/GlossaryManagement.js index e5af3c30b..5177ecc38 100644 --- a/frontend/src/modules/Glossaries/components/GlossaryManagement.js +++ b/frontend/src/modules/Glossaries/components/GlossaryManagement.js @@ -1,6 +1,7 @@ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; import ArrowRightIcon from '@mui/icons-material/ArrowRight'; -import { LoadingButton, TreeItem, TreeView } from '@mui/lab'; +import { LoadingButton } from '@mui/lab'; +import { TreeItem, TreeView } from '@mui/x-tree-view'; import { Box, CircularProgress, Typography } from '@mui/material'; import { makeStyles } from '@mui/styles'; import PropTypes from 'prop-types'; diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 92c81e4f7..be8b503b7 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -3976,7 +3976,7 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@mui/base@5.0.0-beta.40": +"@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.40": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -4014,7 +4014,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@>=5.15.0": +"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@^5.8.6", "@mui/material@>=5.15.0": version "5.15.19" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.19.tgz" integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== @@ -4074,7 +4074,7 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.15", "@mui/system@^5.4.1": +"@mui/system@^5.15.15", "@mui/system@^5.4.1", "@mui/system@^5.8.0": version "5.15.15" resolved "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz" integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== @@ -4093,7 +4093,7 @@ resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz" integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== -"@mui/utils@^5.10.3", "@mui/utils@^5.15.14": +"@mui/utils@^5.10.3", "@mui/utils@^5.14.14", "@mui/utils@^5.15.14": version "5.15.14" resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz" integrity sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA== @@ -4132,6 +4132,19 @@ react-transition-group "^4.4.5" rifm "^0.12.1" +"@mui/x-tree-view@^6.17.0": + version "6.17.0" + resolved "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-6.17.0.tgz" + integrity sha512-09dc2D+Rjg2z8KOaxbUXyPi0aw7fm2jurEtV8Xw48xJ00joLWd5QJm1/v4CarEvaiyhTQzHImNqdgeJW8ZQB6g== + dependencies: + "@babel/runtime" "^7.23.2" + "@mui/base" "^5.0.0-beta.20" + "@mui/utils" "^5.14.14" + "@types/react-transition-group" "^4.4.8" + clsx "^2.0.0" + prop-types "^15.8.1" + react-transition-group "^4.4.5" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" @@ -5089,7 +5102,7 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-transition-group@^4.4.10", "@types/react-transition-group@^4.4.5": +"@types/react-transition-group@^4.4.10", "@types/react-transition-group@^4.4.5", "@types/react-transition-group@^4.4.8": version "4.4.10" resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz" integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== @@ -6754,7 +6767,7 @@ clsx@^1.2.1: resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -clsx@^2.1.0: +clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -8778,6 +8791,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -15369,6 +15387,13 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@^6.2.2: + version "6.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + ws@^6.2.3: version "6.2.3" resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" @@ -15376,7 +15401,7 @@ ws@^6.2.3: dependencies: async-limiter "~1.0.0" -ws@^7.4.6: +ws@^7, ws@^7.4.6, ws@^7.5.1: version "7.5.10" resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== From 6ef41a46802b5add039f237bb23a0984efc86d2c Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:22:39 -0400 Subject: [PATCH 004/188] Add init for resource lock (#1426) ### Feature or Bugfix ### Detail - Make sure alembic auto generate detects resource lock model by adding imports as part of `init` files ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/dataall/core/resource_lock/__init__.py | 1 + backend/dataall/core/resource_lock/db/__init__.py | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/dataall/core/resource_lock/__init__.py b/backend/dataall/core/resource_lock/__init__.py index e69de29bb..5115d1f82 100644 --- a/backend/dataall/core/resource_lock/__init__.py +++ b/backend/dataall/core/resource_lock/__init__.py @@ -0,0 +1 @@ +from dataall.core.resource_lock import db diff --git a/backend/dataall/core/resource_lock/db/__init__.py b/backend/dataall/core/resource_lock/db/__init__.py index e69de29bb..633c7e90a 100644 --- a/backend/dataall/core/resource_lock/db/__init__.py +++ b/backend/dataall/core/resource_lock/db/__init__.py @@ -0,0 +1 @@ +from dataall.core.resource_lock.db import resource_lock_models From 1cec5fe5f3196634a709a11cfc9fe7dc87051d7a Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 23 Jul 2024 16:56:45 +0100 Subject: [PATCH 005/188] Database tables and enums for metadata forms (#1422) ### Feature or Bugfix - Feature ### Detail ![MF DB](https://github.com/user-attachments/assets/fb73a260-afc4-4811-850a-3a8600c4eb03) ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/db/enums.py | 47 ++++++ .../metadata_forms/db/metadata_form_models.py | 133 +++++++++++++++++ backend/migrations/env.py | 1 + .../versions/7c5b30fee306_metadata_forms.py | 135 ++++++++++++++++++ 4 files changed, 316 insertions(+) create mode 100644 backend/dataall/modules/metadata_forms/db/enums.py create mode 100644 backend/dataall/modules/metadata_forms/db/metadata_form_models.py create mode 100644 backend/migrations/versions/7c5b30fee306_metadata_forms.py diff --git a/backend/dataall/modules/metadata_forms/db/enums.py b/backend/dataall/modules/metadata_forms/db/enums.py new file mode 100644 index 000000000..219514258 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/db/enums.py @@ -0,0 +1,47 @@ +from dataall.base.api.constants import GraphQLEnumMapper + + +class MetadataFormVisibility(GraphQLEnumMapper): + Team = 'Team Only' + Environment = 'Environment-Wide' + Organization = 'Organization-Wide' + Global = 'Global' + + +class MetadataFormFieldType(GraphQLEnumMapper): + String = 'String' + Integer = 'Integer' + Boolean = 'Boolean' + GlossaryTerm = 'Glossary Term' + + +class MetadataFormEntityTypes(GraphQLEnumMapper): + Organizations = 'Organization' + OrganizationTeams = 'Organization Team' + Environments = 'Environment' + EnvironmentTeams = 'Environment Team' + Datasets = 'Dataset' + Worksheets = 'Worksheets' + Dashboards = 'Dashboard' + ConsumptionRoles = 'Consumption Role' + Notebooks = 'Notebook' + MLStudioEntities = 'ML Studio Entity' + Pipelines = 'Pipeline' + Tables = 'Table' + Folder = 'Folder' + Bucket = 'Bucket' + Share = 'Share' + ShareItem = 'Share Item' + + +class MetadataFormEnforcementSeverity(GraphQLEnumMapper): + Mandatory = 'Mandatory' + Recommended = 'Recommended' + + +class MetadataFormEnforcementScope(GraphQLEnumMapper): + Item = 'Item Level' + Dataset = 'Dataset Level' + Environment = 'Environmental Level' + Organization = 'Organizational Level' + Global = 'Global' diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py new file mode 100644 index 000000000..22db3b415 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py @@ -0,0 +1,133 @@ +from sqlalchemy import ( + Column, + String, + Integer, + ForeignKey, + Boolean, + ForeignKeyConstraint, + PrimaryKeyConstraint, +) +from sqlalchemy.dialects.postgresql import ARRAY +from sqlalchemy.orm import relationship, validates + +from dataall.base.db import Base, utils + +from dataall.modules.metadata_forms.db.enums import MetadataFormFieldType + + +class MetadataForm(Base): + __tablename__ = 'metadata_form' + uri = Column(String, primary_key=True, default=utils.uuid('metadata_form')) + name = Column(String, nullable=False) + description = Column(String, nullable=False) + SamlGroupName = Column(String, nullable=False) + visibility = Column(String, nullable=False) # enum MetadataFormVisibility + homeEntity = Column(String, nullable=True) + + +class MetadataFormEnforcementRule(Base): + __tablename__ = 'metadata_form_enforcement_rule' + uri = Column(String, primary_key=True, default=utils.uuid('rule')) + metadataFormUri = Column(String, ForeignKey('metadata_form.uri')) + level = Column(String, nullable=False) # enum MetadataFormEnforcementScope + entityTypes = Column(ARRAY(String), nullable=False) # enum MetadataFormEntityTypes + severity = Column(String, nullable=False) # enum MetadataFormEnforcementSeverity + + +class MetadataFormField(Base): + __tablename__ = 'metadata_form_field' + metadataFormUri = Column(String, ForeignKey('metadata_form.uri')) + uri = Column(String, primary_key=True, default=utils.uuid('field')) + name = Column(String, nullable=False) + type = Column(String, nullable=False) # enum MetadataFormFieldType + required = Column(Boolean, nullable=False) + glossaryNodeUri = Column(String, ForeignKey('glossary_node.nodeUri'), nullable=True) + possibleValues = Column(ARRAY(String), nullable=True) + + +class AttachedMetadataForm(Base): + __tablename__ = 'attached_metadata_form' + metadataFormUri = Column(String, ForeignKey('metadata_form.uri'), nullable=False) + uri = Column(String, primary_key=True, default=utils.uuid('attached_form')) + entityUri = Column(String, nullable=False) + entityType = Column(String, nullable=False) + + +class AttachedMetadataFormField(Base): + __tablename__ = 'attached_metadata_form_field' + attachedFormUri = Column(String, ForeignKey('attached_metadata_form.uri'), primary_key=True) + fieldUri = Column(String, ForeignKey('metadata_form_field.uri'), primary_key=True) + type = Column(String, nullable=False) + field = relationship('MetadataFormField', backref='attached_fields') + + __table_args__ = (PrimaryKeyConstraint('attachedFormUri', 'fieldUri'),) + __mapper_args__ = {'polymorphic_identity': 'attached_metadata_form_field', 'polymorphic_on': type} + + @property + def value(self): + raise NotImplementedError('Basic AttachedMetadataFormField has no implemented property value') + + @validates('type') + def update_type(self, key, new_type): + if new_type != self.field.type: + raise ValueError("Value type doesn't match field type") + + +class StringAttachedMetadataFormField(AttachedMetadataFormField): + __tablename__ = 'string_attached_metadata_form_field' + attachedFormUri = Column(String, primary_key=True) + fieldUri = Column(String, primary_key=True) + value = Column(String, nullable=False) + __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.String} + + __table_args__ = ( + ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + ), + ) + + +class BooleanAttachedMetadataFormField(AttachedMetadataFormField): + __tablename__ = 'boolean_attached_metadata_form_field' + attachedFormUri = Column(String, primary_key=True) + fieldUri = Column(String, primary_key=True) + value = Column(Boolean, nullable=False) + __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.Boolean} + + __table_args__ = ( + ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + ), + ) + + +class IntegerAttachedMetadataFormField(AttachedMetadataFormField): + __tablename__ = 'integer_attached_metadata_form_field' + attachedFormUri = Column(String, primary_key=True) + fieldUri = Column(String, primary_key=True) + value = Column(Integer, nullable=False) + __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.Integer} + + __table_args__ = ( + ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + ), + ) + + +class GlossaryTermAttachedMetadataFormField(AttachedMetadataFormField): + __tablename__ = 'glossary_term_attached_metadata_form_field' + attachedFormUri = Column(String, primary_key=True) + fieldUri = Column(String, primary_key=True) + value = Column(String, nullable=False) + __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.GlossaryTerm} + + __table_args__ = ( + ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + ), + ) diff --git a/backend/migrations/env.py b/backend/migrations/env.py index ceab48e3a..7319d31fe 100644 --- a/backend/migrations/env.py +++ b/backend/migrations/env.py @@ -18,6 +18,7 @@ from dataall.modules.vote.db.vote_models import Vote from dataall.modules.worksheets.db.worksheet_models import WorksheetQueryResult, Worksheet from dataall.modules.omics.db.omics_models import OmicsWorkflow, OmicsRun +from dataall.modules.metadata_forms.db.metadata_form_models import * # fmt: on # enable ruff-format back diff --git a/backend/migrations/versions/7c5b30fee306_metadata_forms.py b/backend/migrations/versions/7c5b30fee306_metadata_forms.py new file mode 100644 index 000000000..d8fed9e4e --- /dev/null +++ b/backend/migrations/versions/7c5b30fee306_metadata_forms.py @@ -0,0 +1,135 @@ +"""metadata_forms + +Revision ID: 7c5b30fee306 +Revises: 797dd1012be1 +Create Date: 2024-07-19 15:03:20.671575 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '7c5b30fee306' +down_revision = '797dd1012be1' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + 'metadata_form', + sa.Column('uri', sa.String(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('description', sa.String(), nullable=False), + sa.Column('SamlGroupName', sa.String(), nullable=False), + sa.Column('visibility', sa.String(), nullable=False), + sa.Column('homeEntity', sa.String(), nullable=True), + sa.PrimaryKeyConstraint('uri', name='pk_metadata_form'), + ) + op.create_table( + 'attached_metadata_form', + sa.Column('metadataFormUri', sa.String(), nullable=False), + sa.Column('uri', sa.String(), nullable=False), + sa.Column('entityUri', sa.String(), nullable=False), + sa.Column('entityType', sa.String(), nullable=False), + sa.ForeignKeyConstraint(['metadataFormUri'], ['metadata_form.uri'], name='fk_attached_mf_uri'), + sa.PrimaryKeyConstraint('uri', name='pk_attached_metadata_form'), + ) + op.create_table( + 'metadata_form_enforcement_rule', + sa.Column('uri', sa.String(), nullable=False), + sa.Column('metadataFormUri', sa.String(), nullable=False), + sa.Column('level', sa.String(), nullable=False), + sa.Column('entityTypes', postgresql.ARRAY(sa.String()), nullable=False), + sa.Column('severity', sa.String(), nullable=False), + sa.ForeignKeyConstraint(['metadataFormUri'], ['metadata_form.uri'], name='fk_mf_enforced_uri'), + sa.PrimaryKeyConstraint('uri', name='pk_metadata_form_enforcement_rule'), + ) + op.create_table( + 'metadata_form_field', + sa.Column('metadataFormUri', sa.String(), nullable=True), + sa.Column('uri', sa.String(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('type', sa.String(), nullable=False), + sa.Column('required', sa.Boolean(), nullable=False), + sa.Column('glossaryNodeUri', sa.String(), nullable=True), + sa.Column('possibleValues', postgresql.ARRAY(sa.String()), nullable=True), + sa.ForeignKeyConstraint(['glossaryNodeUri'], ['glossary_node.nodeUri'], name='fk_mf_field_glossary_node'), + sa.ForeignKeyConstraint(['metadataFormUri'], ['metadata_form.uri'], name='fk_mf_filed_form_uri'), + sa.PrimaryKeyConstraint('uri', name='pk_metadata_form_field'), + ) + op.create_table( + 'attached_metadata_form_field', + sa.Column('attachedFormUri', sa.String(), nullable=False), + sa.Column('fieldUri', sa.String(), nullable=False), + sa.Column('type', sa.String(), nullable=False), + sa.ForeignKeyConstraint(['attachedFormUri'], ['attached_metadata_form.uri'], name='fk_attached_field_mf_uri'), + sa.ForeignKeyConstraint(['fieldUri'], ['metadata_form_field.uri'], name='fk_attached_field_uri'), + sa.PrimaryKeyConstraint('attachedFormUri', 'fieldUri', name='pk_attached_metadata_form_field'), + ) + op.create_table( + 'boolean_attached_metadata_form_field', + sa.Column('attachedFormUri', sa.String(), nullable=False), + sa.Column('fieldUri', sa.String(), nullable=False), + sa.Column('value', sa.Boolean(), nullable=False), + sa.ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_b_field', + ), + sa.PrimaryKeyConstraint('attachedFormUri', 'fieldUri', name='pk_boolean_attached_metadata_form_field'), + ) + op.create_table( + 'glossary_term_attached_metadata_form_field', + sa.Column('attachedFormUri', sa.String(), nullable=False), + sa.Column('fieldUri', sa.String(), nullable=False), + sa.Column('value', sa.String(), nullable=False), + sa.ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_gt_field', + ), + sa.PrimaryKeyConstraint('attachedFormUri', 'fieldUri', name='pk_glossary_term_attached_metadata_form_field'), + ) + op.create_table( + 'integer_attached_metadata_form_field', + sa.Column('attachedFormUri', sa.String(), nullable=False), + sa.Column('fieldUri', sa.String(), nullable=False), + sa.Column('value', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_i_field', + ), + sa.PrimaryKeyConstraint('attachedFormUri', 'fieldUri', name='pk_integer_attached_metadata_form_field'), + ) + op.create_table( + 'string_attached_metadata_form_field', + sa.Column('attachedFormUri', sa.String(), nullable=False), + sa.Column('fieldUri', sa.String(), nullable=False), + sa.Column('value', sa.String(), nullable=False), + sa.ForeignKeyConstraint( + ['attachedFormUri', 'fieldUri'], + ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_s_field', + ), + sa.PrimaryKeyConstraint('attachedFormUri', 'fieldUri', name='pk_string_attached_metadata_form_field'), + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('string_attached_metadata_form_field') + op.drop_table('integer_attached_metadata_form_field') + op.drop_table('glossary_term_attached_metadata_form_field') + op.drop_table('boolean_attached_metadata_form_field') + op.drop_table('attached_metadata_form_field') + op.drop_table('metadata_form_field') + op.drop_table('metadata_form_enforcement_rule') + op.drop_table('attached_metadata_form') + op.drop_table('metadata_form') + # ### end Alembic commands ### From 3273bcbb77025ae9d4c4d095226af39f838c5a32 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:38:33 +0200 Subject: [PATCH 006/188] Dependencies: Upgrade `fast-xml-parser` to 4.4.1 (#1441) ### Feature or Bugfix - Dependencies ### Detail Upgrade "fast-xml-parser": "4.4.1" to non vulnerable version When running yarn install the yarn-lock file was updated removing some unnecessary packages. ### Relates - [security recommendation](https://github.com/advisories/GHSA-mpg4-rc92-vx8v) ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 27 +- frontend/package.json | 6 +- frontend/yarn.lock | 2831 ++++++------------------------------ 3 files changed, 414 insertions(+), 2450 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8dd0e6c5f..1062faf1b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -4584,27 +4584,6 @@ "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/@aws-sdk/client-sts/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -19537,9 +19516,9 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", "funding": [ { "type": "github", diff --git a/frontend/package.json b/frontend/package.json index a9996a427..1c73268fd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -93,7 +93,8 @@ "follow-redirects": "1.15.6", "webpack-dev-middleware": "5.3.4", "express": "4.19.2", - "ejs": "3.1.10" + "ejs": "3.1.10", + "fast-xml-parser": "4.4.1" }, "resolutions": { "react-redux": "^7.2.6", @@ -108,7 +109,8 @@ "webpack-dev-middleware": "5.3.4", "express": "4.19.2", "ejs": "3.1.10", - "ws": "^8.17.1" + "ws": "^8.17.1", + "fast-xml-parser": "4.4.1" }, "devDependencies": { "env-cmd": "^10.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index be8b503b7..8930f8131 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@4.3.3": +"@adobe/css-tools@4.3.3", "@adobe/css-tools@^4.0.1": version "4.3.3" resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== @@ -289,15 +289,6 @@ fast-xml-parser "^4.2.5" tslib "^1.8.0" -"@aws-crypto/crc32@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" - integrity sha512-8K0b1672qbv05chSoKpwGZ3fhvVp28Fg3AVHVkEHFl2lTLChO7wD/hTyyo8ING7uc31uZRt7bNra/hA74Td7Tw== - dependencies: - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - "@aws-crypto/crc32@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" @@ -307,6 +298,15 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" +"@aws-crypto/crc32@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" + integrity sha512-8K0b1672qbv05chSoKpwGZ3fhvVp28Fg3AVHVkEHFl2lTLChO7wD/hTyyo8ING7uc31uZRt7bNra/hA74Td7Tw== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + "@aws-crypto/ie11-detection@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz" @@ -321,19 +321,6 @@ dependencies: tslib "^1.11.1" -"@aws-crypto/sha256-browser@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" - integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== - dependencies: - "@aws-crypto/ie11-detection" "^1.0.0" - "@aws-crypto/sha256-js" "^1.2.2" - "@aws-crypto/supports-web-crypto" "^1.0.0" - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - tslib "^1.11.1" - "@aws-crypto/sha256-browser@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" @@ -348,7 +335,20 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2", "@aws-crypto/sha256-js@1.2.2": +"@aws-crypto/sha256-browser@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" + integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== + dependencies: + "@aws-crypto/ie11-detection" "^1.0.0" + "@aws-crypto/sha256-js" "^1.2.2" + "@aws-crypto/supports-web-crypto" "^1.0.0" + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@1.2.2", "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz" integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== @@ -357,7 +357,7 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^2.0.0", "@aws-crypto/sha256-js@2.0.0": +"@aws-crypto/sha256-js@2.0.0", "@aws-crypto/sha256-js@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== @@ -1641,7 +1641,12 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/types@^3.1.0", "@aws-sdk/types@3.6.1": +"@aws-sdk/types@3.186.0": + version "3.186.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" + integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== + +"@aws-sdk/types@3.6.1", "@aws-sdk/types@^3.1.0": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.6.1.tgz" integrity sha512-4Dx3eRTrUHLxhFdLJL8zdNGzVsJfAxtxPYYGmIddUkO2Gj3WA1TGjdfG4XN/ClI6e1XonCHafQX3UYO/mgnH3g== @@ -1654,11 +1659,6 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/types@3.186.0": - version "3.186.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" - integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== - "@aws-sdk/url-parser-native@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/url-parser-native/-/url-parser-native-3.6.1.tgz" @@ -1868,13 +1868,6 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.6.1": - version "3.6.1" - resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" - integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== - dependencies: - tslib "^1.8.0" - "@aws-sdk/util-utf8-browser@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz" @@ -1882,6 +1875,13 @@ dependencies: tslib "^2.3.1" +"@aws-sdk/util-utf8-browser@3.6.1", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.6.1" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" + integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== + dependencies: + tslib "^1.8.0" + "@aws-sdk/util-utf8-node@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz" @@ -1915,12 +1915,12 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -1950,7 +1950,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": +"@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz" integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== @@ -1975,7 +1975,7 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz" integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== @@ -2021,7 +2021,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== @@ -2082,7 +2082,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz" integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.24.7": +"@babel/helper-remap-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz" integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== @@ -2166,7 +2166,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== @@ -2203,17 +2203,7 @@ "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-proposal-async-generator-functions@^7.0.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.0": +"@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -2230,23 +2220,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-decorators" "^7.24.7" -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz" - integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-default-from" "^7.24.7" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -2254,7 +2228,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.16.0": +"@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -2262,26 +2236,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.20.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.0": +"@babel/plugin-proposal-optional-chaining@^7.16.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -2338,20 +2293,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz" - integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" @@ -2359,7 +2307,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.7": +"@babel/plugin-syntax-flow@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz" integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== @@ -2408,7 +2356,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -2436,7 +2384,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -2472,7 +2420,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.7": +"@babel/plugin-transform-arrow-functions@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== @@ -2489,7 +2437,7 @@ "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.7": +"@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== @@ -2505,7 +2453,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.7": +"@babel/plugin-transform-block-scoping@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz" integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== @@ -2529,7 +2477,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.7": +"@babel/plugin-transform-classes@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz" integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== @@ -2543,7 +2491,7 @@ "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.7": +"@babel/plugin-transform-computed-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== @@ -2551,7 +2499,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.7": +"@babel/plugin-transform-destructuring@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz" integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== @@ -2597,7 +2545,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.7": +"@babel/plugin-transform-flow-strip-types@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz" integrity sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA== @@ -2613,7 +2561,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.7": +"@babel/plugin-transform-function-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz" integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== @@ -2630,7 +2578,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.7": +"@babel/plugin-transform-literals@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz" integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== @@ -2660,7 +2608,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7": +"@babel/plugin-transform-modules-commonjs@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz" integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== @@ -2687,7 +2635,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== @@ -2753,14 +2701,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7": +"@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": +"@babel/plugin-transform-private-methods@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz" integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== @@ -2768,7 +2716,7 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.7": +"@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== @@ -2792,7 +2740,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz" integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== @@ -2806,21 +2754,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.24.7": +"@babel/plugin-transform-react-jsx@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz" integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== @@ -2854,7 +2788,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.16.4": +"@babel/plugin-transform-runtime@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== @@ -2866,14 +2800,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.7": +"@babel/plugin-transform-shorthand-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.7": +"@babel/plugin-transform-spread@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== @@ -2881,7 +2815,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.7": +"@babel/plugin-transform-sticky-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== @@ -2902,7 +2836,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typescript@^7.24.7", "@babel/plugin-transform-typescript@^7.5.0": +"@babel/plugin-transform-typescript@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz" integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== @@ -2927,7 +2861,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.7": +"@babel/plugin-transform-unicode-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== @@ -2943,7 +2877,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz" integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== @@ -3030,15 +2964,6 @@ core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-flow@^7.13.13": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz" - integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-flow-strip-types" "^7.24.7" - "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" @@ -3060,7 +2985,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.24.7" "@babel/plugin-transform-react-pure-annotations" "^7.24.7" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz" integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== @@ -3071,30 +2996,19 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.7" "@babel/plugin-transform-typescript" "^7.24.7" -"@babel/register@^7.13.16": - version "7.24.6" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz" - integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.6" - source-map-support "^0.5.16" - "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.0.0", "@babel/template@^7.24.7", "@babel/template@^7.3.3": +"@babel/template@^7.24.7", "@babel/template@^7.3.3": version "7.24.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== @@ -3103,7 +3017,7 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/traverse@7.23.2": +"@babel/traverse@7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.7.2": version "7.23.2" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -3119,7 +3033,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz" integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== @@ -3315,7 +3229,7 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/core@^10.0.27", "@emotion/core@^10.0.28": +"@emotion/core@^10.0.28": version "10.3.1" resolved "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== @@ -3336,22 +3250,15 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - "@emotion/hash@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/is-prop-valid@^1.2.2": - version "1.2.2" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" - integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== - dependencies: - "@emotion/memoize" "^0.8.1" +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== "@emotion/is-prop-valid@0.8.8": version "0.8.8" @@ -3360,17 +3267,24 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/is-prop-valid@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.2", "@emotion/react@^11.9.0": +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.8.2": version "11.11.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz" integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== @@ -3395,18 +3309,7 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^1.1.2": - version "1.1.4" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - -"@emotion/serialize@^1.1.3": +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4": version "1.1.4" resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== @@ -3417,27 +3320,16 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/serialize@^1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== "@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== - "@emotion/styled-base@^10.3.0": version "10.3.0" resolved "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz" @@ -3456,7 +3348,7 @@ "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" -"@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": +"@emotion/styled@^11.8.1": version "11.11.5" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz" integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ== @@ -3473,41 +3365,41 @@ resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - "@emotion/unitless@0.7.5": version "0.7.5" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - "@emotion/utils@0.11.3": version "0.11.3" resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== "@emotion/weak-memoize@0.2.5": version "0.2.5" resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -3572,18 +3464,6 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" @@ -3615,11 +3495,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@isaacs/ttlcache@^1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" - integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" @@ -3694,13 +3569,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.6.3": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" - integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== - dependencies: - "@jest/types" "^29.6.3" - "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" @@ -3711,16 +3579,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" @@ -3740,18 +3598,6 @@ jest-mock "^27.5.1" jest-util "^27.5.1" -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" @@ -3866,17 +3712,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" @@ -3976,7 +3811,7 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.40": +"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.20": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -4014,7 +3849,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@^5.8.6", "@mui/material@>=5.15.0": +"@mui/material@^5.5.2": version "5.15.19" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.19.tgz" integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== @@ -4074,7 +3909,7 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.15", "@mui/system@^5.4.1", "@mui/system@^5.8.0": +"@mui/system@^5.15.15": version "5.15.15" resolved "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz" integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== @@ -4160,7 +3995,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -4196,310 +4031,6 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@react-native-community/cli-clean@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz" - integrity sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - -"@react-native-community/cli-config@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.8.tgz" - integrity sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - cosmiconfig "^5.1.0" - deepmerge "^4.3.0" - fast-glob "^3.3.2" - joi "^17.2.1" - -"@react-native-community/cli-debugger-ui@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.8.tgz" - integrity sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.8.tgz" - integrity sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA== - dependencies: - "@react-native-community/cli-config" "13.6.8" - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-platform-apple" "13.6.8" - "@react-native-community/cli-platform-ios" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - command-exists "^1.2.8" - deepmerge "^4.3.0" - envinfo "^7.10.0" - execa "^5.0.0" - hermes-profile-transformer "^0.0.6" - node-stream-zip "^1.9.1" - ora "^5.4.1" - semver "^7.5.2" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - yaml "^2.2.1" - -"@react-native-community/cli-hermes@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.8.tgz" - integrity sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ== - dependencies: - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - -"@react-native-community/cli-platform-android@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.8.tgz" - integrity sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - fast-xml-parser "^4.2.4" - logkitty "^0.7.1" - -"@react-native-community/cli-platform-apple@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.8.tgz" - integrity sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - fast-xml-parser "^4.0.12" - ora "^5.4.1" - -"@react-native-community/cli-platform-ios@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.8.tgz" - integrity sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw== - dependencies: - "@react-native-community/cli-platform-apple" "13.6.8" - -"@react-native-community/cli-server-api@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.8.tgz" - integrity sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg== - dependencies: - "@react-native-community/cli-debugger-ui" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.1" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^6.2.2" - -"@react-native-community/cli-tools@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.8.tgz" - integrity sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - execa "^5.0.0" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - sudo-prompt "^9.0.0" - -"@react-native-community/cli-types@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.8.tgz" - integrity sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.8.tgz" - integrity sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ== - dependencies: - "@react-native-community/cli-clean" "13.6.8" - "@react-native-community/cli-config" "13.6.8" - "@react-native-community/cli-debugger-ui" "13.6.8" - "@react-native-community/cli-doctor" "13.6.8" - "@react-native-community/cli-hermes" "13.6.8" - "@react-native-community/cli-server-api" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - "@react-native-community/cli-types" "13.6.8" - chalk "^4.1.2" - commander "^9.4.1" - deepmerge "^4.3.0" - execa "^5.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.2" - semver "^7.5.2" - -"@react-native/assets-registry@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.84.tgz" - integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ== - -"@react-native/babel-plugin-codegen@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz" - integrity sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw== - dependencies: - "@react-native/codegen" "0.74.84" - -"@react-native/babel-preset@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.84.tgz" - integrity sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.74.84" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.14.0" - -"@react-native/codegen@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.84.tgz" - integrity sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ== - dependencies: - "@babel/parser" "^7.20.0" - glob "^7.1.1" - hermes-parser "0.19.1" - invariant "^2.2.4" - jscodeshift "^0.14.0" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - -"@react-native/community-cli-plugin@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.84.tgz" - integrity sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ== - dependencies: - "@react-native-community/cli-server-api" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - "@react-native/dev-middleware" "0.74.84" - "@react-native/metro-babel-transformer" "0.74.84" - chalk "^4.0.0" - execa "^5.1.1" - metro "^0.80.3" - metro-config "^0.80.3" - metro-core "^0.80.3" - node-fetch "^2.2.0" - querystring "^0.2.1" - readline "^1.3.0" - -"@react-native/debugger-frontend@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz" - integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A== - -"@react-native/dev-middleware@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz" - integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ== - dependencies: - "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.74.84" - "@rnx-kit/chromium-edge-launcher" "^1.0.0" - chrome-launcher "^0.15.2" - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - open "^7.0.3" - selfsigned "^2.4.1" - serve-static "^1.13.1" - temp-dir "^2.0.0" - ws "^6.2.2" - -"@react-native/gradle-plugin@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz" - integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg== - -"@react-native/js-polyfills@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz" - integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ== - -"@react-native/metro-babel-transformer@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz" - integrity sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw== - dependencies: - "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.74.84" - hermes-parser "0.19.1" - nullthrows "^1.1.1" - -"@react-native/normalize-colors@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz" - integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A== - -"@react-native/virtualized-lists@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz" - integrity sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw== - dependencies: - invariant "^2.2.4" - nullthrows "^1.1.1" - "@reduxjs/toolkit@^1.8.0": version "1.9.7" resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz" @@ -4510,18 +4041,6 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@rnx-kit/chromium-edge-launcher@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" - integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== - dependencies: - "@types/node" "^18.0.0" - escape-string-regexp "^4.0.0" - is-wsl "^2.2.0" - lighthouse-logger "^1.0.0" - mkdirp "^1.0.4" - rimraf "^3.0.2" - "@rollup/plugin-babel@^5.2.0": version "5.3.1" resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" @@ -4564,23 +4083,6 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz" integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" @@ -4598,20 +4100,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" @@ -4753,20 +4241,6 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/dom@>=7.21.4": - version "10.1.0" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz" - integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.3.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - "@testing-library/jest-dom@^5.16.2": version "5.17.0" resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz" @@ -4833,7 +4307,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -5048,13 +4522,6 @@ dependencies: undici-types "~5.26.4" -"@types/node@^18.0.0": - version "18.19.34" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz" - integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== - dependencies: - undici-types "~5.26.4" - "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" @@ -5109,7 +4576,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17", "@types/react@^17.0.0 || ^18.0.0": +"@types/react@*", "@types/react@^17": version "17.0.80" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz" integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== @@ -5118,14 +4585,6 @@ "@types/scheduler" "^0.16" csstype "^3.0.2" -"@types/react@^18.2.6": - version "18.3.3" - resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -5208,13 +4667,6 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^15.0.0": - version "15.0.19" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" - integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^16.0.0": version "16.0.9" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" @@ -5234,7 +4686,7 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.7.tgz" integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA== -"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -5257,7 +4709,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -5303,7 +4755,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -5330,7 +4782,7 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -5431,7 +4883,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -5521,14 +4973,7 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -5559,16 +5004,16 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -5608,7 +5053,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5618,27 +5063,7 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0: - version "8.16.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^8.6.0, ajv@>=8: - version "8.16.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: version "8.16.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== @@ -5664,11 +5089,6 @@ amazon-quicksight-embedding-sdk@^1.18.1: resolved "https://registry.npmjs.org/amazon-quicksight-embedding-sdk/-/amazon-quicksight-embedding-sdk-1.20.1.tgz" integrity sha512-JYBCeq1Rq1OOeZQB9ry85uASTTtqZzp5hFv0ihIX7XyD9anvcoW6GHo4ttzdkJMTMMAnzXhIBe9CRKm3tHMzeg== -anser@^1.4.9: - version "1.4.10" - resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" - integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== - ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -5676,15 +5096,6 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" -ansi-fragments@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" - integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== - dependencies: - colorette "^1.0.7" - slice-ansi "^2.0.0" - strip-ansi "^5.0.0" - ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -5695,12 +5106,7 @@ ansi-html@^0.0.9: resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz" integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: +ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -5710,7 +5116,7 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5747,7 +5153,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@^3.33.2, apexcharts@^3.41.0: +apexcharts@^3.33.2: version "3.49.1" resolved "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz" integrity sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw== @@ -5786,7 +5192,7 @@ apollo-cache-inmemory@^1.6.6: ts-invariant "^0.4.0" tslib "^1.10.0" -apollo-cache@^1.3.5, apollo-cache@1.3.5: +apollo-cache@1.3.5, apollo-cache@^1.3.5: version "1.3.5" resolved "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz" integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== @@ -5845,7 +5251,7 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: tslib "^1.9.3" zen-observable-ts "^0.8.21" -apollo-utilities@^1.3.0, apollo-utilities@^1.3.4, apollo-utilities@1.3.4: +apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: version "1.3.4" resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== @@ -5864,11 +5270,6 @@ appbase-js@^5.3.4: querystring "^0.2.0" url-parser-lite "^0.1.0" -appdirsjs@^1.2.4: - version "1.2.7" - resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" - integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== - arg@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" @@ -5886,13 +5287,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0, aria-query@^5.3.0, aria-query@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" @@ -5900,6 +5294,13 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" +aria-query@^5.0.0, aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -6032,23 +5433,6 @@ ast-types-flow@^0.0.8: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - async@^3.2.3: version "3.2.5" resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" @@ -6128,11 +5512,6 @@ axobject-query@^3.2.1: dependencies: dequal "^2.0.3" -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" @@ -6246,13 +5625,6 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== -babel-plugin-transform-flow-enums@^0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" - integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== - dependencies: - "@babel/plugin-syntax-flow" "^7.12.1" - babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" @@ -6316,7 +5688,7 @@ base-64@1.0.0: resolved "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -6347,15 +5719,6 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" @@ -6412,7 +5775,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.3, braces@~3.0.2, braces@3.0.3: +braces@3.0.3, braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -6424,7 +5787,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz" integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== @@ -6446,22 +5809,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.4.3: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@4.9.2: version "4.9.2" resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" @@ -6471,6 +5818,14 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.4.3: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" @@ -6497,25 +5852,6 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -6543,17 +5879,12 @@ camelcase-keys@6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^6.2.1: +camelcase@^6.2.0, camelcase@^6.2.1: version "6.3.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -6600,31 +5931,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6662,26 +5969,11 @@ chokidar@^3.4.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chrome-launcher@^0.15.2: - version "0.15.2" - resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" - integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== - dependencies: - "@types/node" "*" - escape-string-regexp "^4.0.0" - is-wsl "^2.2.0" - lighthouse-logger "^1.0.0" - chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" @@ -6704,27 +5996,6 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -6734,35 +6005,7 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clsx@^1.1.0: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -clsx@^1.2.1: +clsx@^1.1.0, clsx@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -6805,26 +6048,21 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^1.0.7: - version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - colorette@^2.0.10: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" @@ -6837,17 +6075,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^2.20.3: +commander@^2.20.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6867,11 +6095,6 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.1: - version "9.5.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" @@ -6889,7 +6112,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.1, compression@^1.7.4: +compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -6917,16 +6140,6 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -connect@^3.6.5: - version "3.7.0" - resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -6954,16 +6167,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@^0.4.0: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookie@0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" @@ -6993,26 +6206,6 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^5.0.5: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" @@ -7060,25 +6253,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -7173,15 +6348,15 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: - mdn-data "2.0.14" + mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.3: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -7189,14 +6364,6 @@ css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" @@ -7313,12 +6480,7 @@ csstype@^2.5.7: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -csstype@^3.1.3: +csstype@^3.0.2, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -7364,38 +6526,31 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.0.0, date-fns@^2.25.0, date-fns@^2.28.0: +date-fns@^2.28.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" -dayjs@^1.10.7, dayjs@^1.11.0, dayjs@^1.11.7, dayjs@^1.8.15, dayjs@^1.8.17: +dayjs@^1.11.0, dayjs@^1.11.7: version "1.11.11" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^2.6.0: +debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: - ms "2.0.0" + ms "2.1.2" debug@^3.2.7: version "3.2.7" @@ -7404,25 +6559,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: - version "4.3.5" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - decimal.js@^10.2.1: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -7472,11 +6608,6 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -deepmerge@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -7484,13 +6615,6 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" @@ -7519,21 +6643,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -7630,6 +6749,14 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -7639,24 +6766,16 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" @@ -7734,7 +6853,7 @@ echarts-for-react@^3.0.2: fast-deep-equal "^3.1.3" size-sensor "^1.0.1" -"echarts@^3.0.0 || ^4.0.0 || ^5.0.0", echarts@^5.3.3: +echarts@^5.3.3: version "5.5.0" resolved "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz" integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== @@ -7747,7 +6866,7 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@3.1.10: +ejs@3.1.10, ejs@^3.1.6: version "3.1.10" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -7806,7 +6925,7 @@ enhanced-resolve@^5.16.0: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^2.0.0, entities@2.2.0: +entities@2.2.0, entities@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== @@ -7819,11 +6938,6 @@ env-cmd@^10.1.0: commander "^4.0.0" cross-spawn "^7.0.0" -envinfo@^7.10.0: - version "7.13.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -7838,14 +6952,6 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -errorhandler@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" - integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== - dependencies: - accepts "~1.3.7" - escape-html "~1.0.3" - es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" @@ -8089,7 +7195,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5, eslint-plugin-import@>=1.4.0: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: version "2.29.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -8184,7 +7290,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -8200,14 +7306,6 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -8229,7 +7327,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6", eslint@>=7.0.0, eslint@>=7.28.0: +eslint@^8.3.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -8282,16 +7380,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esprima@1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" @@ -8306,12 +7404,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -8336,11 +7429,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-target-shim@^5.0.0, event-target-shim@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" @@ -8358,7 +7446,7 @@ exec-sh@^0.2.0: dependencies: merge "^1.2.0" -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -8399,7 +7487,7 @@ expect@^29.0.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@4.19.2: +express@4.19.2, express@^4.17.3: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -8451,7 +7539,7 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -8472,17 +7560,10 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4, fast-xml-parser@^4.2.5: - version "4.4.0" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz" - integrity sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg== - dependencies: - strnum "^1.0.5" - -fast-xml-parser@4.2.5: - version "4.2.5" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz" - integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== +fast-xml-parser@4.2.5, fast-xml-parser@4.4.1, fast-xml-parser@^4.2.5: + version "4.4.1" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" + integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== dependencies: strnum "^1.0.5" @@ -8553,19 +7634,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" @@ -8579,15 +7647,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" @@ -8609,15 +7668,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -8647,17 +7698,7 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -flow-enums-runtime@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" - integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== - -flow-parser@0.*: - version "0.237.2" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz" - integrity sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ== - -follow-redirects@1.15.6: +follow-redirects@1.15.6, follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8752,26 +7793,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -8821,7 +7843,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -8861,7 +7883,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -8875,13 +7897,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -8965,7 +7980,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -8982,7 +7997,7 @@ graphql-tag@^2.12.6, graphql-tag@^2.4.2: dependencies: tslib "^2.1.0" -"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.0.0 || ^16.0.0", graphql@15.8.0: +graphql@15.8.0: version "15.8.0" resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== @@ -9055,37 +8070,6 @@ he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hermes-estree@0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz" - integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== - -hermes-estree@0.20.1: - version "0.20.1" - resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" - integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== - -hermes-parser@0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz" - integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== - dependencies: - hermes-estree "0.19.1" - -hermes-parser@0.20.1: - version "0.20.1" - resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" - integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== - dependencies: - hermes-estree "0.20.1" - -hermes-profile-transformer@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" - integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== - dependencies: - source-map "^0.7.3" - history@^5.0.3: version "5.3.0" resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz" @@ -9176,16 +8160,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -9197,6 +8171,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -9249,13 +8233,6 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.5.tgz" integrity sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw== -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -9263,21 +8240,28 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - idb@5.0.6: version "5.0.6" resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + identity-obj-proxy@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" @@ -9295,30 +8279,15 @@ ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.21, immer@^9.0.7: - version "9.0.21" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - immer@9.0.6: version "9.0.6" resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +immer@^9.0.21, immer@^9.0.7: + version "9.0.21" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -9354,7 +8323,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -9385,16 +8354,21 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ip@1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -9471,11 +8445,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -9493,11 +8462,6 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -9527,11 +8491,6 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" @@ -9574,13 +8533,6 @@ is-plain-obj@^3.0.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" @@ -9647,11 +8599,6 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" @@ -9672,12 +8619,7 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -9699,11 +8641,6 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - isomorphic-unfetch@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" @@ -9929,18 +8866,6 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" -jest-environment-node@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" @@ -10075,15 +9000,6 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" @@ -10108,7 +9024,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -10263,18 +9179,6 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-validate@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - jest-watch-typeahead@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" @@ -10342,17 +9246,7 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: +jest@^27.4.3: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -10366,17 +9260,6 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== -joi@^17.2.1: - version "17.13.1" - resolved "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz" - integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" @@ -10402,41 +9285,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsc-android@^250231.0.0: - version "250231.0.0" - resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" - integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== - -jsc-safe-url@^0.2.2: - version "0.2.4" - resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" - integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== - -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" - jsdom@^16.6.0: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" @@ -10485,11 +9333,6 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -10527,13 +9370,6 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -10617,7 +9453,7 @@ jss-plugin-vendor-prefixer@^10.10.0: css-vendor "^2.0.8" jss "10.10.0" -jss@^10.10.0, jss@10.10.0: +jss@10.10.0, jss@^10.10.0: version "10.10.0" resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz" integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== @@ -10705,14 +9541,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lighthouse-logger@^1.0.0: - version "1.4.2" - resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" - integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== - dependencies: - debug "^2.6.9" - marky "^1.2.2" - lilconfig@^2.0.3, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -10809,23 +9637,6 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -logkitty@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" - integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== - dependencies: - ansi-fragments "^0.2.1" - dayjs "^1.8.15" - yargs "^15.1.0" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -10864,14 +9675,6 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" @@ -10898,11 +9701,6 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -marky@^1.2.2: - version "1.2.5" - resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" - integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" @@ -10925,11 +9723,6 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" @@ -10940,205 +9733,21 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" - integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== - merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge@2.1.1, merge@^1.2.0: + version "2.1.1" + resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -metro-babel-transformer@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz" - integrity sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ== - dependencies: - "@babel/core" "^7.20.0" - hermes-parser "0.20.1" - nullthrows "^1.1.1" - -metro-cache-key@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz" - integrity sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg== - -metro-cache@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz" - integrity sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w== - dependencies: - metro-core "0.80.9" - rimraf "^3.0.2" - -metro-config@^0.80.3, metro-config@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz" - integrity sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg== - dependencies: - connect "^3.6.5" - cosmiconfig "^5.0.5" - jest-validate "^29.6.3" - metro "0.80.9" - metro-cache "0.80.9" - metro-core "0.80.9" - metro-runtime "0.80.9" - -metro-core@^0.80.3, metro-core@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz" - integrity sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.80.9" - -metro-file-map@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz" - integrity sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ== - dependencies: - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-worker "^29.6.3" - micromatch "^4.0.4" - node-abort-controller "^3.1.1" - nullthrows "^1.1.1" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -metro-minify-terser@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz" - integrity sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A== - dependencies: - terser "^5.15.0" - -metro-resolver@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz" - integrity sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w== - -metro-runtime@^0.80.3, metro-runtime@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz" - integrity sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg== - dependencies: - "@babel/runtime" "^7.0.0" - -metro-source-map@^0.80.3, metro-source-map@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz" - integrity sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw== - dependencies: - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - invariant "^2.2.4" - metro-symbolicate "0.80.9" - nullthrows "^1.1.1" - ob1 "0.80.9" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz" - integrity sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA== - dependencies: - invariant "^2.2.4" - metro-source-map "0.80.9" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz" - integrity sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz" - integrity sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - metro "0.80.9" - metro-babel-transformer "0.80.9" - metro-cache "0.80.9" - metro-cache-key "0.80.9" - metro-minify-terser "0.80.9" - metro-source-map "0.80.9" - metro-transform-plugins "0.80.9" - nullthrows "^1.1.1" - -metro@^0.80.3, metro@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz" - integrity sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - accepts "^1.3.7" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - graceful-fs "^4.2.4" - hermes-parser "0.20.1" - image-size "^1.0.2" - invariant "^2.2.4" - jest-worker "^29.6.3" - jsc-safe-url "^0.2.2" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.80.9" - metro-cache "0.80.9" - metro-cache-key "0.80.9" - metro-config "0.80.9" - metro-core "0.80.9" - metro-file-map "0.80.9" - metro-resolver "0.80.9" - metro-runtime "0.80.9" - metro-source-map "0.80.9" - metro-symbolicate "0.80.9" - metro-transform-plugins "0.80.9" - metro-transform-worker "0.80.9" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^3.0.2" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - throat "^5.0.0" - ws "^7.5.1" - yargs "^17.6.2" - micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.7" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" @@ -11147,7 +9756,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -11159,11 +9768,6 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@^2.4.1: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -11192,7 +9796,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11223,33 +9827,23 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -"monaco-editor@>= 0.21.0 < 1", "monaco-editor@>= 0.25.0 < 1": - version "0.49.0" - resolved "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz" - integrity sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ== - -ms@^2.1.1, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -11297,7 +9891,7 @@ negotiator@0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -11315,24 +9909,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nocache@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" - integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== - -node-abort-controller@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12: +node-fetch@^2.6.1, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -11354,11 +9931,6 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-stream-zip@^1.9.1: - version "1.15.0" - resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -11394,28 +9966,18 @@ nprogress@^0.2.0: resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== -nth-check@^2.0.1: +nth-check@^1.0.2, nth-check@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - nwsapi@^2.2.0: version "2.2.10" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== -ob1@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz" - integrity sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA== - object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" @@ -11518,7 +10080,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: +oidc-client-ts@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.4.0.tgz" integrity sha512-WijhkTrlXK2VvgGoakWJiBdfIsVGz6CFzgjNNqZU1hPKV2kyeEaJgLs7RwuiSp2WhLfWBQuLvr2SxVlZnk3N1w== @@ -11526,13 +10088,6 @@ oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: crypto-js "^4.2.0" jwt-decode "^3.1.2" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -11552,28 +10107,13 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^6.2.0: - version "6.4.0" - resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -open@^7.0.3: - version "7.4.2" - resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -11624,29 +10164,7 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -11714,14 +10232,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -11770,12 +10280,7 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -11823,23 +10328,11 @@ pify@^2.3.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: +pirates@^4.0.1, pirates@^4.0.4: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -12399,7 +10892,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.31: +postcss@8.4.31, postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -12425,7 +10918,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@>=2.0.0, prettier@2.8.7: +prettier@2.8.7: version "2.8.7" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -12443,26 +10936,6 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@^26.5.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" @@ -12482,16 +10955,7 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0: - version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^29.7.0: +pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -12505,7 +10969,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^8.1.0, promise@^8.3.0: +promise@^8.1.0: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== @@ -12520,7 +10984,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@>=15: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -12552,16 +11016,16 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - punycode@1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + q@^1.1.2: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" @@ -12574,16 +11038,16 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -querystring@^0.2.0, querystring@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - querystring@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" @@ -12594,13 +11058,6 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" @@ -12699,15 +11156,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-devtools-core@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz" - integrity sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", react-dom@^17.0.2, "react-dom@^17.0.2 || ^18.0.0", react-dom@<18.0.0, react-dom@>=15, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: +react-dom@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -12761,30 +11210,20 @@ react-if@^4.1.1: resolved "https://registry.npmjs.org/react-if/-/react-if-4.1.5.tgz" integrity sha512-Uk+Ub2gC83PAakuU4+7iLdTEP4LPi2ihNEPCtz/vr8SLGbzkMApbpYbkDZ5z9zYXurd0gg+EK/bpOLFFC1r1eQ== -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: +react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0, react-is@^18.2.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-native-get-random-values@^1.4.0: version "1.11.0" @@ -12800,55 +11239,12 @@ react-native-url-polyfill@^1.3.0: dependencies: whatwg-url-without-unicode "8.0.0-3" -react-native@*, react-native@>=0.56: - version "0.74.2" - resolved "https://registry.npmjs.org/react-native/-/react-native-0.74.2.tgz" - integrity sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw== - dependencies: - "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "13.6.8" - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-platform-ios" "13.6.8" - "@react-native/assets-registry" "0.74.84" - "@react-native/codegen" "0.74.84" - "@react-native/community-cli-plugin" "0.74.84" - "@react-native/gradle-plugin" "0.74.84" - "@react-native/js-polyfills" "0.74.84" - "@react-native/normalize-colors" "0.74.84" - "@react-native/virtualized-lists" "0.74.84" - abort-controller "^3.0.0" - anser "^1.4.9" - ansi-regex "^5.0.0" - base64-js "^1.5.1" - chalk "^4.0.0" - event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.6" - invariant "^2.2.4" - jest-environment-node "^29.6.3" - jsc-android "^250231.0.0" - memoize-one "^5.0.0" - metro-runtime "^0.80.3" - metro-source-map "^0.80.3" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.3.0" - react-devtools-core "^5.0.0" - react-refresh "^0.14.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "0.24.0-canary-efb381bbf-20230505" - stacktrace-parser "^0.1.10" - whatwg-fetch "^3.0.0" - ws "^6.2.2" - yargs "^17.6.2" - react-oidc-context@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/react-oidc-context/-/react-oidc-context-2.3.1.tgz" integrity sha512-WdhmEU6odNzMk9pvOScxUkf6/1aduiI/nQryr7+iCl2VDnYLASDTIV/zy58KuK4VXG3fBaRKukc/mRpMjF9a3Q== -"react-redux@^7.2.1 || ^8.0.2", react-redux@^7.2.6: +react-redux@^6.0.1, react-redux@^7.2.6: version "7.2.9" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -12860,16 +11256,11 @@ react-oidc-context@^2.3.1: prop-types "^15.7.2" react-is "^17.0.2" -react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": +react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -react-refresh@^0.14.0: - version "0.14.2" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" - integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== - react-router-dom@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0.tgz" @@ -12939,14 +11330,6 @@ react-scripts@^5.0.1: optionalDependencies: fsevents "^2.3.2" -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" @@ -12957,7 +11340,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.0.0 || >=16.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.9.0 || ^17.0.0 || ^18", "react@^16.x || ^17.x || ^18.x", react@^17.0.0, "react@^17.0.0 || ^18.0.0", react@^17.0.2, "react@^17.0.2 || ^18.0.0", react@<18.0.0, "react@>= 16", "react@>= 16.8", react@>=0.13, react@>=0.13.x, react@>=0.14.x, react@>=15, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@~0.13.x || ~0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0", react@17.0.2: +react@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -12965,13 +11348,6 @@ react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", loose-envify "^1.1.0" object-assign "^4.1.1" -react@18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" @@ -12992,7 +11368,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.4.0: +readable-stream@^3.0.6: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -13001,19 +11377,6 @@ readable-stream@^3.0.6, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -13021,21 +11384,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" @@ -13056,7 +11404,7 @@ redux-thunk@^2.3.0, redux-thunk@^2.4.2: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4, redux@^4.0.0, redux@^4.2.1: +redux@^4.0.0, redux@^4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -13088,11 +11436,6 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.2: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" @@ -13175,11 +11518,6 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" @@ -13197,11 +11535,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" @@ -13212,7 +11545,7 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@5.0.0: +resolve-url-loader@5.0.0, resolve-url-loader@^4.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== @@ -13251,14 +11584,6 @@ response-iterator@^0.2.6: resolved "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -13281,13 +11606,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" @@ -13298,7 +11616,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: +rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -13322,21 +11640,16 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.1.2: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -13384,12 +11697,14 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@0.24.0-canary-efb381bbf-20230505: - version "0.24.0-canary-efb381bbf-20230505" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" - integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - loose-envify "^1.1.0" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" schema-utils@^2.6.5: version "2.7.1" @@ -13400,25 +11715,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -13437,21 +11734,12 @@ schema-utils@^4.0.0, schema-utils@^4.2.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1, selfsigned@^2.4.1: +selfsigned@^2.1.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -13459,52 +11747,17 @@ selfsigned@^2.1.1, selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^5.5.0, semver@^5.6.0: +semver@^5.5.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.1: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.3.5: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.3.7: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.2: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.3: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.4: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -13528,11 +11781,6 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-error@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" - integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" @@ -13560,7 +11808,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@^1.13.1, serve-static@1.15.0: +serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -13570,11 +11818,6 @@ serve-static@^1.13.1, serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -13607,13 +11850,6 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" @@ -13643,7 +11879,7 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -13708,15 +11944,6 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slice-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -13745,7 +11972,7 @@ source-map-loader@^3.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -13753,20 +11980,15 @@ source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.2 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.7.3: version "0.7.4" @@ -13780,21 +12002,6 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -13845,13 +12052,6 @@ stackframe@^1.3.4: resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - state-local@^1.0.6: version "1.0.7" resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" @@ -13864,21 +12064,16 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -13886,20 +12081,6 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -13921,16 +12102,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13994,6 +12166,20 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -14003,28 +12189,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -14106,11 +12271,6 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -14118,14 +12278,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -14178,7 +12331,7 @@ svg.filter.js@^2.0.2: dependencies: svg.js "^2.2.5" -svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5, svg.js@>=2.3.x: +svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz" integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== @@ -14302,13 +12455,6 @@ temp-dir@^2.0.0: resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - tempy@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" @@ -14338,7 +12484,7 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.15.0, terser@^5.26.0: +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: version "5.31.1" resolved "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz" integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== @@ -14376,24 +12522,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - throat@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - thunky@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" @@ -14499,31 +12632,21 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.8.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^1.11.1, tslib@^1.8.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tslib@^1.8.1: +tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== -tslib@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -14560,16 +12683,11 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3, "type-fest@>=0.17.0 <5.0.0": +type-fest@^0.21.3: version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -14629,11 +12747,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - ulid@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz" @@ -14702,11 +12815,6 @@ universal-cookie@^4.0.4: "@types/cookie" "^0.3.3" cookie "^0.4.0" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" @@ -14717,7 +12825,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -14765,7 +12873,7 @@ url-search-params-polyfill@^7.0.0: resolved "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz" integrity sha512-bAw7L2E+jn9XHG5P9zrPnHdO0yJub4U+yXJOdpcpkr7OBd9T8oll4lUos0iSGRcDvfZoLUKfx9a6aNmIhJ4+mQ== -url@^0.11.0, url@0.11.0: +url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== @@ -14798,7 +12906,7 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.0.0, uuid@^3.2.1, uuid@3.4.0: +uuid@3.4.0, uuid@^3.0.0, uuid@^3.2.1: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -14822,11 +12930,6 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" @@ -14871,13 +12974,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - web-vitals@^2.1.4: version "2.1.4" resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz" @@ -14903,7 +12999,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@5.3.4: +webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== @@ -14914,7 +13010,7 @@ webpack-dev-middleware@5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": +webpack-dev-server@^4.6.0: version "4.15.2" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -14979,7 +13075,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": +webpack@^5.64.4: version "5.91.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== @@ -15009,7 +13105,7 @@ webpack-sources@^3.2.3: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -15030,7 +13126,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: +whatwg-fetch@^3.6.2: version "3.6.20" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== @@ -15066,16 +13162,7 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0: - version "8.7.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -15123,11 +13210,6 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" @@ -15327,25 +13409,7 @@ workbox-window@6.6.0: "@types/trusted-types" "^2.0.2" workbox-core "6.6.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -15368,15 +13432,6 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" @@ -15387,24 +13442,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^6.2.2: - version "6.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" - integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.2.3: - version "6.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" - integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== - dependencies: - async-limiter "~1.0.0" - -ws@^7, ws@^7.4.6, ws@^7.5.1: - version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^7.4.6, ws@^8.13.0, ws@^8.17.1: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xml-name-validator@^3.0.0: version "3.0.0" @@ -15424,16 +13465,6 @@ xss@^1.0.11: commander "^2.20.3" cssfilter "0.0.10" -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -15449,51 +13480,16 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.1: - version "2.4.5" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" - integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== - yaml@^2.3.4: version "2.4.5" resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^15.1.0: - version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -15507,19 +13503,6 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.6.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" @@ -15538,6 +13521,14 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" +zen-observable-ts@0.8.19: + version "0.8.19" + resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" + integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" @@ -15553,24 +13544,16 @@ zen-observable-ts@^1.2.5: dependencies: zen-observable "0.8.15" -zen-observable-ts@0.8.19: - version "0.8.19" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" - integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" +zen-observable@0.8.15, zen-observable@^0.8.0: + version "0.8.15" + resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== zen-observable@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz" integrity sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg== -zen-observable@^0.8.0, zen-observable@0.8.15: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zen-push@0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/zen-push/-/zen-push-0.2.1.tgz" From 93560749739d9a082af8ccc17e6f7b2747fd82b6 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:05:00 +0200 Subject: [PATCH 007/188] Fix: Typo, missing @staticmethod in ResourcePolicyRepository method (#1439) ### Feature or Bugfix - Bugfix ### Detail `dataall.core.permissions.db.resource_policy.resource_policy_repositories.ResourcePolicyRepository.query_all_resource_policies` is missing @staticmethod and is taking session as self. I am not sure of the implications. Because there are some arguments that can be None it was not failing, but it might not have deleted some permissions ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../db/resource_policy/resource_policy_repositories.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/dataall/core/permissions/db/resource_policy/resource_policy_repositories.py b/backend/dataall/core/permissions/db/resource_policy/resource_policy_repositories.py index ecb68ce65..4b2b4d6c9 100644 --- a/backend/dataall/core/permissions/db/resource_policy/resource_policy_repositories.py +++ b/backend/dataall/core/permissions/db/resource_policy/resource_policy_repositories.py @@ -70,6 +70,7 @@ def has_group_resource_permission( else: return policy + @staticmethod def query_all_resource_policies( session, group_uri: str, resource_uri: str, resource_type: str = None, permissions: List[str] = None ): From 6f19119dc61cd361ffc6ca2c4336e642e3e79a93 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 30 Jul 2024 16:33:26 +0100 Subject: [PATCH 008/188] Utils for enum-queries (#1435) ### Feature or Bugfix - Refactoring ### Detail - new api query `queryEnum` to query multiple enums at once by names - shared frontend util to query several enums (fetchEnums`) by name. Output -- dictionary ``` { 'enumName': [{name: '...', value: '..'}] } ``` - example for Maintenance mode enum ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- backend/dataall/base/api/__init__.py | 1 + backend/dataall/base/api/queries.py | 11 ++++++ backend/dataall/base/api/resolvers.py | 14 ++++++++ backend/dataall/base/api/types.py | 17 +++++++++ .../components/MaintenanceViewer.js | 24 +++++++++---- .../services/graphql/Shared/getEnumByName.js | 36 +++++++++++++++++++ frontend/src/services/graphql/Shared/index.js | 1 + frontend/src/services/graphql/index.js | 1 + 8 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 backend/dataall/base/api/queries.py create mode 100644 backend/dataall/base/api/resolvers.py create mode 100644 backend/dataall/base/api/types.py create mode 100644 frontend/src/services/graphql/Shared/getEnumByName.js create mode 100644 frontend/src/services/graphql/Shared/index.js diff --git a/backend/dataall/base/api/__init__.py b/backend/dataall/base/api/__init__.py index 4aef8e332..36f7a275a 100644 --- a/backend/dataall/base/api/__init__.py +++ b/backend/dataall/base/api/__init__.py @@ -12,6 +12,7 @@ from dataall.base.api import gql from dataall.base.api.constants import GraphQLEnumMapper +from dataall.base.api.queries import enumsQuery def bootstrap(): diff --git a/backend/dataall/base/api/queries.py b/backend/dataall/base/api/queries.py new file mode 100644 index 000000000..6401fff0b --- /dev/null +++ b/backend/dataall/base/api/queries.py @@ -0,0 +1,11 @@ +from dataall.base.api import gql +from dataall.base.api.resolvers import enum_resolver +from dataall.base.api.types import EnumResult + +enumsQuery = gql.QueryField( + name='queryEnums', + args=[gql.Argument(name='enums_names', type=gql.ArrayType(gql.String))], + type=gql.ArrayType(EnumResult), + resolver=enum_resolver, + test_scope='Enums', +) diff --git a/backend/dataall/base/api/resolvers.py b/backend/dataall/base/api/resolvers.py new file mode 100644 index 000000000..e59165d46 --- /dev/null +++ b/backend/dataall/base/api/resolvers.py @@ -0,0 +1,14 @@ +from dataall.base.api.constants import GraphQLEnumMapper + + +def enum_resolver(context, source, enums_names): + result = [] + for enum_class in GraphQLEnumMapper.__subclasses__(): + if enum_class.__name__ in enums_names: + result.append( + { + 'name': enum_class.__name__, + 'items': [{'name': item.name, 'value': str(item.value)} for item in enum_class], + } + ) + return result diff --git a/backend/dataall/base/api/types.py b/backend/dataall/base/api/types.py new file mode 100644 index 000000000..8d0236d64 --- /dev/null +++ b/backend/dataall/base/api/types.py @@ -0,0 +1,17 @@ +from dataall.base.api import gql + +EnumItem = gql.ObjectType( + name='EnumItem', + fields=[ + gql.Field(name='name', type=gql.String), + gql.Field(name='value', type=gql.String), + ], +) + +EnumResult = gql.ObjectType( + name='EnumResult', + fields=[ + gql.Field(name='name', type=gql.String), + gql.Field(name='items', type=gql.ArrayType(EnumItem)), + ], +) diff --git a/frontend/src/modules/Maintenance/components/MaintenanceViewer.js b/frontend/src/modules/Maintenance/components/MaintenanceViewer.js index 8fcf252f0..a4048dba9 100644 --- a/frontend/src/modules/Maintenance/components/MaintenanceViewer.js +++ b/frontend/src/modules/Maintenance/components/MaintenanceViewer.js @@ -27,16 +27,11 @@ import { startMaintenanceWindow, startReindexCatalog } from '../services'; -import { useClient } from 'services'; +import { useClient, fetchEnums } from 'services'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { useSnackbar } from 'notistack'; import { ModuleNames, isModuleEnabled } from 'utils'; -const maintenanceModes = [ - { value: 'READ-ONLY', label: 'Read-Only' }, - { value: 'NO-ACCESS', label: 'No-Access' } -]; - const START_MAINTENANCE = 'Start Maintenance'; const END_MAINTENANCE = 'End Maintenance'; export const PENDING_STATUS = 'PENDING'; @@ -314,11 +309,25 @@ export const MaintenanceViewer = () => { useState(START_MAINTENANCE); const [maintenanceWindowStatus, setMaintenanceWindowStatus] = useState(INACTIVE_STATUS); + const [maintenanceModes, setMaintenanceModes] = useState([]); const [dropDownStatus, setDropDownStatus] = useState(false); const [refreshingTimer, setRefreshingTimer] = useState(''); const { enqueueSnackbar, closeSnackbar } = useSnackbar(); const dispatch = useDispatch(); + const fetchMaintenanceModes = async () => { + const maintenanceModesEnum = await fetchEnums(client, ['MaintenanceModes']); + if (maintenanceModesEnum['MaintenanceModes'].length > 0) { + setMaintenanceModes( + maintenanceModesEnum['MaintenanceModes'].map((elem) => { + return { label: elem.value, value: elem.name }; + }) + ); + } else { + dispatch({ type: SET_ERROR, error: 'Could not fetch maintenance modes' }); + } + }; + const refreshMaintenanceView = async () => { setUpdating(true); setRefreshing(true); @@ -468,6 +477,9 @@ export const MaintenanceViewer = () => { initializeMaintenanceView().catch((e) => dispatch({ type: SET_ERROR, e }) ); + fetchMaintenanceModes().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); const setTimer = setInterval(() => { refreshStatus().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) diff --git a/frontend/src/services/graphql/Shared/getEnumByName.js b/frontend/src/services/graphql/Shared/getEnumByName.js new file mode 100644 index 000000000..a24742df4 --- /dev/null +++ b/frontend/src/services/graphql/Shared/getEnumByName.js @@ -0,0 +1,36 @@ +import { gql } from 'apollo-boost'; + +const getEnumByName = ({ enum_names }) => ({ + variables: { + enum_names: enum_names + }, + query: gql` + query queryEnums($enum_names: [String]) { + queryEnums(enums_names: $enum_names) { + name + items { + name + value + } + } + } + ` +}); + +/// function to fetch multiple enums +/// output -- dictionary +// { +// 'enumName': [{name: '...', value: '..'}] +// } +export const fetchEnums = async (client, enum_names) => { + const response = await client.query( + getEnumByName({ enum_names: enum_names }) + ); + if (!response.errors && response.data.queryEnums != null) { + return Object.assign( + {}, + ...response.data.queryEnums.map((x) => ({ [x.name]: x.items })) + ); + } + return {}; +}; diff --git a/frontend/src/services/graphql/Shared/index.js b/frontend/src/services/graphql/Shared/index.js new file mode 100644 index 000000000..af6921f17 --- /dev/null +++ b/frontend/src/services/graphql/Shared/index.js @@ -0,0 +1 @@ +export * from './getEnumByName'; diff --git a/frontend/src/services/graphql/index.js b/frontend/src/services/graphql/index.js index ce1c3fba2..144c217fe 100644 --- a/frontend/src/services/graphql/index.js +++ b/frontend/src/services/graphql/index.js @@ -13,6 +13,7 @@ export * from './Notification'; export * from './Organization'; export * from './Principal'; export * from './SavedQuery'; +export * from './Shared'; export * from './Search'; export * from './ShareObject'; export * from './Stack'; From 8eb1bd0d711b3fcf2e390a830e7ce9e3aa942ef9 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 31 Jul 2024 12:31:29 +0100 Subject: [PATCH 009/188] Feat: API call to query Enum values - continuation - semgrep fix (#1445) ### Feature or Bugfix - Bugfix ### Detail - replace Object.assign for enums ### Relates - https://github.com/data-dot-all/dataall/pull/1435 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- frontend/src/services/graphql/Shared/getEnumByName.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/services/graphql/Shared/getEnumByName.js b/frontend/src/services/graphql/Shared/getEnumByName.js index a24742df4..f4345544b 100644 --- a/frontend/src/services/graphql/Shared/getEnumByName.js +++ b/frontend/src/services/graphql/Shared/getEnumByName.js @@ -26,11 +26,11 @@ export const fetchEnums = async (client, enum_names) => { const response = await client.query( getEnumByName({ enum_names: enum_names }) ); + let enum_dict = {}; if (!response.errors && response.data.queryEnums != null) { - return Object.assign( - {}, - ...response.data.queryEnums.map((x) => ({ [x.name]: x.items })) - ); + response.data.queryEnums.map((x) => { + enum_dict[x.name] = x.items; + }); } - return {}; + return enum_dict; }; From 276dceb9e35210f4c31f53df2c0f8efd56b27a2c Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:24:52 +0200 Subject: [PATCH 010/188] Add Redshift datasets module (#1424) ### Feature or Bugfix - Feature ### Detail The design is up-to-date in the issue https://github.com/data-dot-all/dataall/issues/955 as well as next steps ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../dataall/base/cdkproxy/requirements.txt | 6 +- backend/dataall/base/db/paginator.py | 11 + .../core/environment/cdk/pivot_role_stack.py | 2 +- .../datasets_base/services/datasets_enums.py | 1 + .../modules/redshift_datasets/__init__.py | 96 ++ .../modules/redshift_datasets/api/__init__.py | 5 + .../api/connections/__init__.py | 9 + .../api/connections/enums.py | 6 + .../api/connections/input_types.py | 30 + .../api/connections/mutations.py | 22 + .../api/connections/queries.py | 30 + .../api/connections/resolvers.py | 61 ++ .../api/connections/types.py | 40 + .../api/datasets/__init__.py | 9 + .../redshift_datasets/api/datasets/enums.py | 1 + .../api/datasets/input_types.py | 46 + .../api/datasets/mutations.py | 68 ++ .../redshift_datasets/api/datasets/queries.py | 53 ++ .../api/datasets/resolvers.py | 162 ++++ .../redshift_datasets/api/datasets/types.py | 153 ++++ .../modules/redshift_datasets/aws/__init__.py | 0 .../modules/redshift_datasets/aws/redshift.py | 21 + .../redshift_datasets/aws/redshift_data.py | 145 +++ .../aws/redshift_serverless.py | 34 + .../modules/redshift_datasets/cdk/__init__.py | 3 + .../cdk/pivot_role_redshift_policy.py | 100 +++ .../modules/redshift_datasets/db/__init__.py | 1 + .../db/redshift_connection_repositories.py | 77 ++ .../db/redshift_dataset_repositories.py | 141 +++ .../redshift_datasets/db/redshift_models.py | 41 + .../redshift_datasets/indexers/__init__.py | 1 + .../indexers/dataset_indexer.py | 62 ++ .../indexers/table_indexer.py | 59 ++ .../redshift_datasets/services/__init__.py | 1 + .../redshift_connection_permissions.py | 59 ++ .../services/redshift_connection_service.py | 163 ++++ .../services/redshift_constants.py | 10 + .../services/redshift_dataset_permissions.py | 71 ++ .../services/redshift_dataset_service.py | 371 ++++++++ .../services/redshift_enums.py | 6 + backend/migrations/env.py | 1 + .../852cdf6cf1e0_add_redshift_datasets.py | 151 ++++ backend/requirements.txt | 4 +- config.json | 3 + frontend/public/static/icons/amazon-s3.svg | 1 + frontend/public/static/icons/aws-redshift.svg | 1 + .../components/GlossarySearchResultItem.js | 42 +- .../components/DatasetCreateWindow.js | 65 +- .../components/DatasetGovernance.js | 130 +++ .../components/DatasetListItem.js | 62 +- .../modules/DatasetsBase/components/index.js | 1 + frontend/src/modules/DatasetsBase/index.js | 5 +- .../components/EnvironmentOwnedDatasets.js | 19 +- .../EnvironmentRedshiftConnectionAddForm.js | 365 ++++++++ .../EnvironmentRedshiftConnections.js | 378 ++++++++ .../modules/Environments/components/index.js | 1 + .../services/createRedshiftConnection.js | 14 + .../services/deleteRedshiftConnection.js | 12 + .../modules/Environments/services/index.js | 2 + .../Environments/views/EnvironmentView.js | 14 +- .../components/GlossaryAssociations.js | 36 +- .../components/AddTablesModal.js | 191 ++++ .../components/RedshiftDatasetAWSInfo.js | 82 ++ .../components/RedshiftDatasetOverview.js | 50 ++ .../components/RedshiftDatasetTables.js | 346 ++++++++ .../components/TableColumns.js | 138 +++ .../components/TableOverview.js | 43 + .../components/TableSchemaModal.js | 162 ++++ .../Redshift_Datasets/components/index.js | 5 + .../src/modules/Redshift_Datasets/index.js | 5 + .../services/addRedshiftDatasetTables.js | 16 + .../services/deleteRedshiftDataset.js | 12 + .../services/deleteRedshiftDatasetTable.js | 12 + .../services/getRedshiftDataset.js | 66 ++ .../services/getRedshiftDatasetTable.js | 45 + .../getRedshiftDatasetTableColumns.js | 30 + .../services/importRedshiftDataset.js | 16 + .../Redshift_Datasets/services/index.js | 13 + .../services/listRedshiftConnectionSchemas.js | 12 + .../services/listRedshiftDatasetTables.js | 30 + .../listRedshiftSchemaDatasetTables.js | 16 + .../services/listRedshiftSchemaTables.js | 16 + .../services/updateRedshiftDataset.js | 20 + .../services/updateRedshiftDatasetTable.js | 19 + .../views/RSDatasetEditForm.js | 606 +++++++++++++ .../views/RSDatasetImportForm.js | 830 ++++++++++++++++++ .../Redshift_Datasets/views/RSDatasetView.js | 327 +++++++ .../views/RSTableEditForm.js | 392 +++++++++ .../Redshift_Datasets/views/RSTableView.js | 301 +++++++ .../components/DatasetGovernance.js | 115 --- .../S3_Datasets/components/DatasetOverview.js | 2 +- .../modules/S3_Datasets/components/index.js | 1 - frontend/src/modules/Tables/index.js | 10 + frontend/src/modules/index.js | 1 + frontend/src/routes.js | 44 + .../graphql/Redshift_Datasets/index.js | 1 + .../listEnvironmentRedshiftConnections.js | 30 + frontend/src/services/graphql/index.js | 1 + tests/modules/redshift_datasets/__init__.py | 0 tests/modules/redshift_datasets/conftest.py | 239 +++++ .../test_unit_redshift_connection_service.py | 233 +++++ .../test_unit_redshift_dataset_service.py | 230 +++++ tests/requirements.txt | 3 +- 103 files changed, 8025 insertions(+), 170 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/api/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/enums.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/input_types.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/mutations.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/queries.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/resolvers.py create mode 100644 backend/dataall/modules/redshift_datasets/api/connections/types.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/enums.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/input_types.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/mutations.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/queries.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py create mode 100644 backend/dataall/modules/redshift_datasets/api/datasets/types.py create mode 100644 backend/dataall/modules/redshift_datasets/aws/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/aws/redshift.py create mode 100644 backend/dataall/modules/redshift_datasets/aws/redshift_data.py create mode 100644 backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py create mode 100644 backend/dataall/modules/redshift_datasets/cdk/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py create mode 100644 backend/dataall/modules/redshift_datasets/db/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py create mode 100644 backend/dataall/modules/redshift_datasets/db/redshift_dataset_repositories.py create mode 100644 backend/dataall/modules/redshift_datasets/db/redshift_models.py create mode 100644 backend/dataall/modules/redshift_datasets/indexers/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/indexers/dataset_indexer.py create mode 100644 backend/dataall/modules/redshift_datasets/indexers/table_indexer.py create mode 100644 backend/dataall/modules/redshift_datasets/services/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_constants.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_dataset_permissions.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py create mode 100644 backend/dataall/modules/redshift_datasets/services/redshift_enums.py create mode 100644 backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py create mode 100644 frontend/public/static/icons/amazon-s3.svg create mode 100644 frontend/public/static/icons/aws-redshift.svg create mode 100644 frontend/src/modules/DatasetsBase/components/DatasetGovernance.js create mode 100644 frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js create mode 100644 frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js create mode 100644 frontend/src/modules/Environments/services/createRedshiftConnection.js create mode 100644 frontend/src/modules/Environments/services/deleteRedshiftConnection.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetAWSInfo.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetOverview.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetTables.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/TableColumns.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/TableOverview.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/TableSchemaModal.js create mode 100644 frontend/src/modules/Redshift_Datasets/components/index.js create mode 100644 frontend/src/modules/Redshift_Datasets/index.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDataset.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDatasetTable.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/getRedshiftDataset.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTable.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTableColumns.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/index.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/listRedshiftConnectionSchemas.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/listRedshiftDatasetTables.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaDatasetTables.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaTables.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/updateRedshiftDataset.js create mode 100644 frontend/src/modules/Redshift_Datasets/services/updateRedshiftDatasetTable.js create mode 100644 frontend/src/modules/Redshift_Datasets/views/RSDatasetEditForm.js create mode 100644 frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js create mode 100644 frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js create mode 100644 frontend/src/modules/Redshift_Datasets/views/RSTableEditForm.js create mode 100644 frontend/src/modules/Redshift_Datasets/views/RSTableView.js delete mode 100644 frontend/src/modules/S3_Datasets/components/DatasetGovernance.js create mode 100644 frontend/src/modules/Tables/index.js create mode 100644 frontend/src/services/graphql/Redshift_Datasets/index.js create mode 100644 frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js create mode 100644 tests/modules/redshift_datasets/__init__.py create mode 100644 tests/modules/redshift_datasets/conftest.py create mode 100644 tests/modules/redshift_datasets/test_unit_redshift_connection_service.py create mode 100644 tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py diff --git a/backend/dataall/base/cdkproxy/requirements.txt b/backend/dataall/base/cdkproxy/requirements.txt index f55e149a6..2c9be32f7 100644 --- a/backend/dataall/base/cdkproxy/requirements.txt +++ b/backend/dataall/base/cdkproxy/requirements.txt @@ -1,7 +1,7 @@ aws-cdk-lib==2.99.0 -boto3==1.28.23 -boto3-stubs==1.28.23 -botocore==1.31.23 +boto3==1.34.119 +boto3-stubs==1.34.119 +botocore==1.34.119 cdk-nag==2.7.2 constructs==10.0.73 starlette==0.36.3 diff --git a/backend/dataall/base/db/paginator.py b/backend/dataall/base/db/paginator.py index 6d2657580..3b502f36a 100644 --- a/backend/dataall/base/db/paginator.py +++ b/backend/dataall/base/db/paginator.py @@ -44,3 +44,14 @@ def paginate(query, page, page_size): # nosemgrep: python.sqlalchemy.performance.performance-improvements.len-all-count total = len(query.order_by(None).all()) return Page(items, page, page_size, total) + + +def paginate_list(items, page, page_size): + if page <= 0: + raise AttributeError('page needs to be >= 1') + if page_size <= 0: + raise AttributeError('page_size needs to be >= 1') + start = (page - 1) * page_size + end = start + page_size + total = len(items) + return Page(items[start:end], page, page_size, total) diff --git a/backend/dataall/core/environment/cdk/pivot_role_stack.py b/backend/dataall/core/environment/cdk/pivot_role_stack.py index 8228c58fd..d6368ea55 100644 --- a/backend/dataall/core/environment/cdk/pivot_role_stack.py +++ b/backend/dataall/core/environment/cdk/pivot_role_stack.py @@ -32,8 +32,8 @@ def generate_policies(self) -> List[iam.ManagedPolicy]: ) for service in services: - statements.extend(service.get_statements(self)) logger.info(f'Adding {service.__name__} statements to policy') + statements.extend(service.get_statements(self)) logger.info(f'statements: {str(service.get_statements(self))}') statements_chunks = split_policy_statements_in_chunks(statements) diff --git a/backend/dataall/modules/datasets_base/services/datasets_enums.py b/backend/dataall/modules/datasets_base/services/datasets_enums.py index df5db44ac..49a252456 100644 --- a/backend/dataall/modules/datasets_base/services/datasets_enums.py +++ b/backend/dataall/modules/datasets_base/services/datasets_enums.py @@ -7,6 +7,7 @@ class DatasetTypes(GraphQLEnumMapper): S3 = 'S3' + Redshift = 'Redshift' class DatasetRole(GraphQLEnumMapper): diff --git a/backend/dataall/modules/redshift_datasets/__init__.py b/backend/dataall/modules/redshift_datasets/__init__.py new file mode 100644 index 000000000..cd9e73f68 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/__init__.py @@ -0,0 +1,96 @@ +"""Contains the code related to datasets""" + +import logging +from typing import List, Type, Set + +from dataall.base.loader import ModuleInterface, ImportMode + +log = logging.getLogger(__name__) + + +class RedshiftDatasetApiModuleInterface(ModuleInterface): + """Implements ModuleInterface for dataset GraphQl lambda""" + + @staticmethod + def is_supported(modes): + return ImportMode.API in modes + + @staticmethod + def depends_on() -> List[Type['ModuleInterface']]: + from dataall.modules.datasets_base import DatasetBaseApiModuleInterface + from dataall.modules.catalog import CatalogApiModuleInterface + from dataall.modules.feed import FeedApiModuleInterface + from dataall.modules.vote import VoteApiModuleInterface + + return [ + DatasetBaseApiModuleInterface, + CatalogApiModuleInterface, + FeedApiModuleInterface, + VoteApiModuleInterface, + ] + + def __init__(self): + from dataall.modules.vote.services.vote_service import add_vote_type + from dataall.modules.feed.api.registry import FeedRegistry, FeedDefinition + from dataall.modules.catalog.indexers.registry import GlossaryRegistry, GlossaryDefinition + from dataall.core.environment.services.environment_resource_manager import EnvironmentResourceManager + + from dataall.modules.redshift_datasets.indexers.dataset_indexer import DatasetIndexer + from dataall.modules.redshift_datasets.indexers.table_indexer import DatasetTableIndexer + from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import ( + RedshiftDatasetEnvironmentResource, + ) + from dataall.modules.redshift_datasets.db.redshift_connection_repositories import ( + RedshiftConnectionEnvironmentResource, + ) + from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable + from dataall.modules.redshift_datasets.services.redshift_constants import ( + GLOSSARY_REDSHIFT_DATASET_NAME, + GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, + FEED_REDSHIFT_DATASET_NAME, + FEED_REDSHIFT_DATASET_TABLE_NAME, + VOTE_REDSHIFT_DATASET_NAME, + ) + + import dataall.modules.redshift_datasets.api + + FeedRegistry.register(FeedDefinition(FEED_REDSHIFT_DATASET_TABLE_NAME, RedshiftTable)) + FeedRegistry.register(FeedDefinition(FEED_REDSHIFT_DATASET_NAME, RedshiftDataset)) + + GlossaryRegistry.register( + GlossaryDefinition( + target_type=GLOSSARY_REDSHIFT_DATASET_NAME, + object_type='RedshiftDataset', + model=RedshiftDataset, + reindexer=DatasetIndexer, + ) + ) + + GlossaryRegistry.register( + GlossaryDefinition( + target_type=GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, + object_type='RedshiftDatasetTable', + model=RedshiftTable, + reindexer=DatasetTableIndexer, + ) + ) + + add_vote_type(VOTE_REDSHIFT_DATASET_NAME, DatasetIndexer) + + EnvironmentResourceManager.register(RedshiftDatasetEnvironmentResource()) + EnvironmentResourceManager.register(RedshiftConnectionEnvironmentResource()) + + log.info('API of Redshift datasets has been imported') + + +class RedshiftDatasetCdkModuleInterface(ModuleInterface): + """Loads dataset cdk stacks""" + + @staticmethod + def is_supported(modes: Set[ImportMode]): + return ImportMode.CDK in modes + + def __init__(self): + import dataall.modules.redshift_datasets.cdk + + log.info('Redshift Dataset CDK has been imported') diff --git a/backend/dataall/modules/redshift_datasets/api/__init__.py b/backend/dataall/modules/redshift_datasets/api/__init__.py new file mode 100644 index 000000000..b375b5a66 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/__init__.py @@ -0,0 +1,5 @@ +"""The GraphQL schema of datasets and related functionality""" + +from dataall.modules.redshift_datasets.api import connections, datasets + +__all__ = ['connections', 'datasets'] diff --git a/backend/dataall/modules/redshift_datasets/api/connections/__init__.py b/backend/dataall/modules/redshift_datasets/api/connections/__init__.py new file mode 100644 index 000000000..d72a971ec --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/__init__.py @@ -0,0 +1,9 @@ +from . import ( + input_types, + queries, + mutations, + resolvers, + types, +) + +__all__ = ['resolvers', 'types', 'input_types', 'queries', 'mutations'] diff --git a/backend/dataall/modules/redshift_datasets/api/connections/enums.py b/backend/dataall/modules/redshift_datasets/api/connections/enums.py new file mode 100644 index 000000000..de49eeca6 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/enums.py @@ -0,0 +1,6 @@ +from dataall.base.api.constants import GraphQLEnumMapper + + +class RedshiftType(GraphQLEnumMapper): + Serverless = 'serverless' + Cluster = 'cluster' diff --git a/backend/dataall/modules/redshift_datasets/api/connections/input_types.py b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py new file mode 100644 index 000000000..d742324c8 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py @@ -0,0 +1,30 @@ +from dataall.base.api import gql + + +CreateRedshiftConnectionInput = gql.InputType( + name='CreateRedshiftConnectionInput', + arguments=[ + gql.Argument('connectionName', gql.NonNullableType(gql.String)), + gql.Argument('environmentUri', gql.NonNullableType(gql.String)), + gql.Argument('SamlGroupName', gql.NonNullableType(gql.String)), + gql.Argument('redshiftType', gql.NonNullableType(gql.String)), + gql.Argument('clusterId', gql.String), + gql.Argument('nameSpaceId', gql.String), + gql.Argument('workgroup', gql.String), + gql.Argument('database', gql.NonNullableType(gql.String)), + gql.Argument('redshiftUser', gql.String), + gql.Argument('secretArn', gql.String), + ], +) + + +ConnectionFilter = gql.InputType( + name='ConnectionFilter', + arguments=[ + gql.Argument('term', gql.String), + gql.Argument('page', gql.Integer), + gql.Argument('pageSize', gql.Integer), + gql.Argument('environmentUri', gql.String), + gql.Argument('groupUri', gql.String), + ], +) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/mutations.py b/backend/dataall/modules/redshift_datasets/api/connections/mutations.py new file mode 100644 index 000000000..291944e33 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/mutations.py @@ -0,0 +1,22 @@ +from dataall.base.api import gql +from dataall.modules.redshift_datasets.api.connections.resolvers import ( + create_redshift_connection, + delete_redshift_connection, +) +from dataall.modules.redshift_datasets.api.connections.types import ( + RedshiftConnection, +) + +createRedshiftConnection = gql.MutationField( + name='createRedshiftConnection', + args=[gql.Argument('input', gql.Ref('CreateRedshiftConnectionInput'))], + type=RedshiftConnection, + resolver=create_redshift_connection, +) + +deleteRedshiftConnection = gql.MutationField( + name='deleteRedshiftConnection', + args=[gql.Argument('connectionUri', gql.NonNullableType(gql.String))], + type=gql.Boolean, + resolver=delete_redshift_connection, +) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/queries.py b/backend/dataall/modules/redshift_datasets/api/connections/queries.py new file mode 100644 index 000000000..166ee5a7b --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/queries.py @@ -0,0 +1,30 @@ +from dataall.base.api import gql +from dataall.modules.redshift_datasets.api.connections.resolvers import ( + list_environment_redshift_connections, + list_redshift_connection_schemas, + list_redshift_schema_tables, +) + +listEnvironmentRedshiftConnections = gql.QueryField( + name='listEnvironmentRedshiftConnections', + args=[gql.Argument('filter', gql.Ref('ConnectionFilter'))], + type=gql.Ref('RedshiftConnectionSearchResult'), + resolver=list_environment_redshift_connections, +) + +listRedshiftConnectionSchemas = gql.QueryField( + name='listRedshiftConnectionSchemas', + args=[gql.Argument('connectionUri', gql.NonNullableType(gql.String))], + type=gql.ArrayType(gql.String), + resolver=list_redshift_connection_schemas, +) + +listRedshiftSchemaTables = gql.QueryField( + name='listRedshiftSchemaTables', + args=[ + gql.Argument('connectionUri', gql.NonNullableType(gql.String)), + gql.Argument('schema', gql.NonNullableType(gql.String)), + ], + type=gql.ArrayType(gql.Ref('RedshiftTable')), + resolver=list_redshift_schema_tables, +) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py b/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py new file mode 100644 index 000000000..95d700ef0 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py @@ -0,0 +1,61 @@ +import logging +from typing import Any +from dataall.base.db import exceptions +from dataall.base.api.context import Context + +from dataall.modules.redshift_datasets.api.connections.enums import RedshiftType +from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService + +log = logging.getLogger(__name__) + + +def create_redshift_connection(context: Context, source, input=None): + RequestValidator.validate_connection_creation_request(data=input) + return RedshiftConnectionService.create_redshift_connection( + uri=input['environmentUri'], admin_group=input['SamlGroupName'], data=input + ) + + +def delete_redshift_connection(context: Context, source, connectionUri: str): + RequestValidator.required_param('connectionUri', connectionUri) + return RedshiftConnectionService.delete_redshift_connection(uri=connectionUri) + + +def list_environment_redshift_connections(context: Context, source, filter: dict = None): + environmentUri = filter['environmentUri'] + RequestValidator.required_param('environmentUri', environmentUri) + return RedshiftConnectionService.list_environment_redshift_connections(uri=environmentUri, filter=filter) + + +def list_redshift_connection_schemas(context: Context, source, connectionUri): + RequestValidator.required_param('connectionUri', connectionUri) + return RedshiftConnectionService.list_connection_schemas(uri=connectionUri) + + +def list_redshift_schema_tables(context: Context, source, connectionUri: str, schema: str): + RequestValidator.required_param('connectionUri', connectionUri) + RequestValidator.required_param('schema', schema) + return RedshiftConnectionService.list_schema_tables(uri=connectionUri, schema=schema) + + +class RequestValidator: + def required_param(param_name: str, param_value: Any): + if not param_value: + raise exceptions.RequiredParameter(param_name) + + def validate_connection_creation_request(data): + if not data: + raise exceptions.RequiredParameter('data') + + RequestValidator.required_param('SamlGroupName', data.get('SamlGroupName')) + RequestValidator.required_param('environmentUri', data.get('environmentUri')) + RequestValidator.required_param('connectionName', data.get('connectionName')) + RequestValidator.required_param('redshiftType', data.get('redshiftType')) + RequestValidator.required_param('database', data.get('database')) + if not data.get('redshiftUser') and not data.get('secretArn'): + raise exceptions.RequiredParameter('RedshiftUser OR secretArn') + if data.get('redshiftType') == RedshiftType.Serverless.value: + RequestValidator.required_param('nameSpaceId', data.get('nameSpaceId')) + RequestValidator.required_param('workgroup', data.get('workgroup')) + if data.get('redshiftType') == RedshiftType.Cluster.value: + RequestValidator.required_param('clusterId', data.get('clusterId')) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/types.py b/backend/dataall/modules/redshift_datasets/api/connections/types.py new file mode 100644 index 000000000..54a6d3968 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/connections/types.py @@ -0,0 +1,40 @@ +from dataall.base.api import gql + +RedshiftConnection = gql.ObjectType( + name='RedshiftConnection', + fields=[ + gql.Field('connectionUri', gql.ID), + gql.Field('name', gql.String), + gql.Field('connectionType', gql.String), + gql.Field('SamlGroupName', gql.String), + gql.Field('label', gql.String), + gql.Field('redshiftType', gql.String), + gql.Field('clusterId', gql.String), + gql.Field('nameSpaceId', gql.String), + gql.Field('workgroup', gql.String), + gql.Field('database', gql.String), + gql.Field('redshiftUser', gql.String), + gql.Field('secretArn', gql.String), + ], +) + +RedshiftConnectionSearchResult = gql.ObjectType( + name='RedshiftConnectionSearchResult', + fields=[ + gql.Field('count', gql.Integer), + gql.Field('page', gql.Integer), + gql.Field('pages', gql.Integer), + gql.Field('hasNext', gql.Boolean), + gql.Field('hasPrevious', gql.Boolean), + gql.Field('nodes', gql.ArrayType(RedshiftConnection)), + ], +) + +RedshiftTable = gql.ObjectType( + name='RedshiftTable', + fields=[ + gql.Field('name', gql.String), + gql.Field('type', gql.String), + gql.Field('alreadyAdded', gql.String), + ], +) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/__init__.py b/backend/dataall/modules/redshift_datasets/api/datasets/__init__.py new file mode 100644 index 000000000..d72a971ec --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/__init__.py @@ -0,0 +1,9 @@ +from . import ( + input_types, + queries, + mutations, + resolvers, + types, +) + +__all__ = ['resolvers', 'types', 'input_types', 'queries', 'mutations'] diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/enums.py b/backend/dataall/modules/redshift_datasets/api/datasets/enums.py new file mode 100644 index 000000000..8d1048a7f --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/enums.py @@ -0,0 +1 @@ +"""Contains the enums GraphQL mapping for enums""" diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/input_types.py b/backend/dataall/modules/redshift_datasets/api/datasets/input_types.py new file mode 100644 index 000000000..dfdb6360d --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/input_types.py @@ -0,0 +1,46 @@ +from dataall.base.api import gql + + +ImportRedshiftDatasetInput = gql.InputType( + name='ImportRedshiftDatasetInput', + arguments=[ + gql.Argument('label', gql.NonNullableType(gql.String)), + gql.Argument('organizationUri', gql.NonNullableType(gql.String)), + gql.Argument('environmentUri', gql.NonNullableType(gql.String)), + gql.Argument('description', gql.String), + gql.Argument('tags', gql.ArrayType(gql.String)), + gql.Argument('owner', gql.NonNullableType(gql.String)), + gql.Argument('topics', gql.ArrayType(gql.Ref('Topic'))), + gql.Argument('SamlAdminGroupName', gql.NonNullableType(gql.String)), + gql.Argument('confidentiality', gql.String), + gql.Argument('stewards', gql.String), + gql.Argument('autoApprovalEnabled', gql.Boolean), + gql.Argument('connectionUri', gql.NonNullableType(gql.String)), + gql.Argument('schema', gql.NonNullableType(gql.String)), + gql.Argument('tables', gql.ArrayType(gql.String)), + ], +) + + +ModifyRedshiftDatasetInput = gql.InputType( + name='ModifyRedshiftDatasetInput', + arguments=[ + gql.Argument('label', gql.String), + gql.Argument('description', gql.String), + gql.Argument('tags', gql.ArrayType(gql.String)), + gql.Argument('topics', gql.ArrayType(gql.Ref('Topic'))), + gql.Argument('terms', gql.ArrayType(gql.String)), + gql.Argument('confidentiality', gql.String), + gql.Argument('stewards', gql.String), + gql.Argument('autoApprovalEnabled', gql.Boolean), + ], +) + +RedshiftDatasetTableFilter = gql.InputType( + name='RedshiftDatasetTableFilter', + arguments=[ + gql.Argument('term', gql.String), + gql.Argument('page', gql.Integer), + gql.Argument('pageSize', gql.Integer), + ], +) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py b/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py new file mode 100644 index 000000000..330883b32 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py @@ -0,0 +1,68 @@ +from dataall.base.api import gql +from dataall.modules.redshift_datasets.api.datasets.input_types import ( + ImportRedshiftDatasetInput, + ModifyRedshiftDatasetInput, +) +from dataall.modules.redshift_datasets.api.datasets.resolvers import ( + add_redshift_dataset_tables, + delete_redshift_dataset, + delete_redshift_dataset_table, + import_redshift_dataset, + update_redshift_dataset, + update_redshift_dataset_table, +) + +importRedshiftDataset = gql.MutationField( + name='importRedshiftDataset', + args=[gql.Argument('input', ImportRedshiftDatasetInput)], + type=gql.Ref('RedshiftDataset'), + resolver=import_redshift_dataset, +) + +updateRedshiftDataset = gql.MutationField( + name='updateRedshiftDataset', + args=[ + gql.Argument('datasetUri', gql.String), + gql.Argument('input', ModifyRedshiftDatasetInput), + ], + type=gql.Ref('RedshiftDataset'), + resolver=update_redshift_dataset, +) + +deleteRedshiftDataset = gql.MutationField( + name='deleteRedshiftDataset', + args=[ + gql.Argument('datasetUri', gql.NonNullableType(gql.String)), + ], + resolver=delete_redshift_dataset, + type=gql.Boolean, +) + +addRedshiftDatasetTables = gql.MutationField( + name='addRedshiftDatasetTables', + args=[ + gql.Argument('datasetUri', gql.NonNullableType(gql.String)), + gql.Argument('tables', gql.NonNullableType(gql.ArrayType(gql.String))), + ], + type=gql.Boolean, + resolver=add_redshift_dataset_tables, +) + +deleteRedshiftDatasetTable = gql.MutationField( + name='deleteRedshiftDatasetTable', + args=[ + gql.Argument('rsTableUri', gql.NonNullableType(gql.String)), + ], + type=gql.Boolean, + resolver=delete_redshift_dataset_table, +) + +updateRedshiftDatasetTable = gql.MutationField( + name='updateRedshiftDatasetTable', + args=[ + gql.Argument('rsTableUri', gql.String), + gql.Argument('input', ModifyRedshiftDatasetInput), + ], + type=gql.Ref('RedshiftDatasetTable'), + resolver=update_redshift_dataset_table, +) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/queries.py b/backend/dataall/modules/redshift_datasets/api/datasets/queries.py new file mode 100644 index 000000000..2da615b60 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/queries.py @@ -0,0 +1,53 @@ +from dataall.base.api import gql +from dataall.modules.redshift_datasets.api.datasets.resolvers import ( + get_redshift_dataset, + get_redshift_dataset_table, + list_redshift_schema_dataset_tables, + list_redshift_dataset_table_columns, + list_redshift_dataset_tables, +) +from dataall.modules.redshift_datasets.api.datasets.input_types import RedshiftDatasetTableFilter + + +getRedshiftDataset = gql.QueryField( + name='getRedshiftDataset', + args=[gql.Argument('datasetUri', gql.NonNullableType(gql.String))], + type=gql.Ref('RedshiftDataset'), + resolver=get_redshift_dataset, +) + +listRedshiftDatasetTables = gql.QueryField( + name='listRedshiftDatasetTables', + args=[ + gql.Argument('datasetUri', gql.NonNullableType(gql.String)), + gql.Argument('filter', RedshiftDatasetTableFilter), + ], + type=gql.Ref('RedshiftDatasetTableSearchResult'), + resolver=list_redshift_dataset_tables, +) + +getRedshiftDatasetTable = gql.QueryField( + name='getRedshiftDatasetTable', + args=[gql.Argument('rsTableUri', gql.NonNullableType(gql.String))], + type=gql.Ref('RedshiftDatasetTable'), + resolver=get_redshift_dataset_table, +) + +getRedshiftDatasetTableColumns = gql.QueryField( + name='getRedshiftDatasetTableColumns', + args=[ + gql.Argument('rsTableUri', gql.NonNullableType(gql.String)), + gql.Argument('filter', RedshiftDatasetTableFilter), + ], + type=gql.Ref('RedshiftDatasetTableColumnSearchResult'), + resolver=list_redshift_dataset_table_columns, +) + +listRedshiftSchemaDatasetTables = gql.QueryField( + name='listRedshiftSchemaDatasetTables', + args=[ + gql.Argument('datasetUri', gql.NonNullableType(gql.String)), + ], + type=gql.ArrayType(gql.Ref('RedshiftTable')), + resolver=list_redshift_schema_dataset_tables, +) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py b/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py new file mode 100644 index 000000000..6579099b9 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py @@ -0,0 +1,162 @@ +import logging +from typing import Any +from dataall.base.api.context import Context +from dataall.base.db import exceptions +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository +from dataall.modules.datasets_base.services.datasets_enums import DatasetRole +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable +from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService +from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService +from dataall.modules.redshift_datasets.services.redshift_constants import ( + GLOSSARY_REDSHIFT_DATASET_NAME, + GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, +) + +log = logging.getLogger(__name__) + + +def import_redshift_dataset(context: Context, source, input=None): + RequestValidator.validate_dataset_import_request(input) + admin_group = input['SamlAdminGroupName'] + uri = input['environmentUri'] + return RedshiftDatasetService.import_redshift_dataset(uri=uri, admin_group=admin_group, data=input) + + +def update_redshift_dataset(context: Context, source, datasetUri: str, input: dict): + RequestValidator.required_param('datasetUri', datasetUri) + return RedshiftDatasetService.update_redshift_dataset(uri=datasetUri, data=input) + + +def delete_redshift_dataset(context: Context, source, datasetUri: str): + RequestValidator.required_param('datasetUri', datasetUri) + return RedshiftDatasetService.delete_redshift_dataset(uri=datasetUri) + + +def list_redshift_schema_dataset_tables(context: Context, source, datasetUri: str): + RequestValidator.required_param('datasetUri', datasetUri) + return RedshiftDatasetService.list_redshift_schema_dataset_tables(uri=datasetUri) + + +def add_redshift_dataset_tables(context: Context, source, datasetUri: str, tables: [str]): + RequestValidator.required_param('datasetUri', datasetUri) + RequestValidator.required_param('tables', tables) + return RedshiftDatasetService.add_redshift_dataset_tables(uri=datasetUri, tables=tables) + + +def delete_redshift_dataset_table(context: Context, source, rsTableUri: str): + RequestValidator.required_param('rsTableUri', rsTableUri) + return RedshiftDatasetService.delete_redshift_dataset_table(uri=rsTableUri) + + +def update_redshift_dataset_table(context: Context, source, rsTableUri: str, input: dict): + RequestValidator.required_param('rsTableUri', rsTableUri) + return RedshiftDatasetService.update_redshift_dataset_table(uri=rsTableUri, data=input) + + +def get_redshift_dataset(context, source, datasetUri: str): + RequestValidator.required_param('datasetUri', datasetUri) + return RedshiftDatasetService.get_redshift_dataset(uri=datasetUri) + + +def list_redshift_dataset_tables(context, source, datasetUri: str, filter: dict = None): + RequestValidator.required_param('datasetUri', datasetUri) + return RedshiftDatasetService.list_redshift_dataset_tables(uri=datasetUri, filter=filter) + + +def get_redshift_dataset_table(context, source, rsTableUri: str): + RequestValidator.required_param('rsTableUri', rsTableUri) + return RedshiftDatasetService.get_redshift_dataset_table(uri=rsTableUri) + + +def list_redshift_dataset_table_columns(context, source, rsTableUri: str, filter: dict = None): + RequestValidator.required_param('rsTableUri', rsTableUri) + return RedshiftDatasetService.list_redshift_dataset_table_columns(uri=rsTableUri, filter=filter) + + +def resolve_dataset_organization(context, source: RedshiftDataset, **kwargs): + if not source: + return None + with context.engine.scoped_session() as session: + return OrganizationRepository.get_organization_by_uri(session, source.organizationUri) + + +def resolve_dataset_environment( + context, source: RedshiftDataset, **kwargs +): # TODO- duplicated with S3 datasets - follow-up PR + if not source: + return None + with context.engine.scoped_session() as session: + return EnvironmentService.get_environment_by_uri(session, source.environmentUri) + + +def resolve_dataset_owners_group( + context, source: RedshiftDataset, **kwargs +): # TODO- duplicated with S3 datasets - follow-up PR + if not source: + return None + return source.SamlAdminGroupName + + +def resolve_dataset_stewards_group( + context, source: RedshiftDataset, **kwargs +): # TODO- duplicated with S3 datasets - follow-up PR + if not source: + return None + return source.stewards + + +def resolve_user_role(context: Context, source: RedshiftDataset, **kwargs): + if not source: + return None + if source.owner == context.username: + return DatasetRole.Creator.value + elif source.SamlAdminGroupName in context.groups: + return DatasetRole.Admin.value + elif source.stewards in context.groups: + return DatasetRole.DataSteward.value + return DatasetRole.NoPermission.value + + +def resolve_dataset_glossary_terms(context: Context, source: RedshiftDataset, **kwargs): + if not source: + return None + with context.engine.scoped_session() as session: + return GlossaryRepository.get_glossary_terms_links(session, source.datasetUri, GLOSSARY_REDSHIFT_DATASET_NAME) + + +def resolve_table_glossary_terms(context: Context, source: RedshiftTable, **kwargs): + if not source: + return None + with context.engine.scoped_session() as session: + return GlossaryRepository.get_glossary_terms_links( + session, source.rsTableUri, GLOSSARY_REDSHIFT_DATASET_TABLE_NAME + ) + + +def resolve_dataset_connection(context: Context, source: RedshiftDataset, **kwargs): + return RedshiftConnectionService.get_redshift_connection_by_uri(uri=source.connectionUri) + + +def resolve_dataset_upvotes(context: Context, source: RedshiftDataset, **kwargs): + return RedshiftDatasetService.get_dataset_upvotes(uri=source.datasetUri) + + +def resolve_table_dataset(context: Context, source: RedshiftTable, **kwargs): + return RedshiftDatasetService.get_redshift_dataset(uri=source.datasetUri) + + +class RequestValidator: + @staticmethod + def required_param(param_name: str, param_value: Any): + if not param_value: + raise exceptions.RequiredParameter(param_name) + + @staticmethod + def validate_dataset_import_request(data): + RequestValidator.required_param('input', data) + RequestValidator.required_param('label', data.get('label')) + RequestValidator.required_param('SamlAdminGroupName', data.get('SamlAdminGroupName')) + RequestValidator.required_param('connectionUri', data.get('connectionUri')) + RequestValidator.required_param('schema', data.get('schema')) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/types.py b/backend/dataall/modules/redshift_datasets/api/datasets/types.py new file mode 100644 index 000000000..ab1fd1b52 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/api/datasets/types.py @@ -0,0 +1,153 @@ +from dataall.base.api import gql +from dataall.modules.datasets_base.services.datasets_enums import DatasetRole + +from dataall.modules.redshift_datasets.api.datasets.resolvers import ( + resolve_dataset_environment, + resolve_dataset_organization, + resolve_dataset_owners_group, + resolve_dataset_stewards_group, + resolve_user_role, + resolve_dataset_glossary_terms, + resolve_table_glossary_terms, + resolve_dataset_connection, + resolve_dataset_upvotes, + resolve_table_dataset, +) + +RedshiftDataset = gql.ObjectType( + name='RedshiftDataset', + fields=[ + gql.Field('datasetUri', gql.ID), + gql.Field('label', gql.String), + gql.Field('name', gql.String), + gql.Field('description', gql.String), + gql.Field('tags', gql.ArrayType(gql.String)), + gql.Field('owner', gql.String), + gql.Field('created', gql.String), + gql.Field('updated', gql.String), + gql.Field('admins', gql.ArrayType(gql.String)), + gql.Field('AwsAccountId', gql.String), + gql.Field('region', gql.String), + gql.Field('SamlAdminGroupName', gql.String), + gql.Field('imported', gql.Boolean), + gql.Field( + name='environment', + type=gql.Ref('Environment'), + resolver=resolve_dataset_environment, + ), + gql.Field( + name='organization', + type=gql.Ref('Organization'), + resolver=resolve_dataset_organization, + ), + gql.Field( + name='owners', + type=gql.String, + resolver=resolve_dataset_owners_group, + ), + gql.Field( + name='stewards', + type=gql.String, + resolver=resolve_dataset_stewards_group, + ), + gql.Field( + name='userRoleForDataset', + type=DatasetRole.toGraphQLEnum(), + resolver=resolve_user_role, + ), + gql.Field( + name='terms', + resolver=resolve_dataset_glossary_terms, + type=gql.Ref('TermSearchResult'), + ), + gql.Field('topics', gql.ArrayType(gql.Ref('Topic'))), + gql.Field('confidentiality', gql.String), + gql.Field('autoApprovalEnabled', gql.Boolean), + gql.Field('schema', gql.String), + gql.Field('upvotes', gql.Integer, resolver=resolve_dataset_upvotes), + gql.Field( + name='connection', + type=gql.Ref('RedshiftConnection'), + resolver=resolve_dataset_connection, + ), + ], +) + +RedshiftDatasetTable = gql.ObjectType( + name='RedshiftDatasetTable', + fields=[ + gql.Field('rsTableUri', gql.ID), + gql.Field('datasetUri', gql.String), + gql.Field('label', gql.String), + gql.Field('name', gql.String), + gql.Field('description', gql.String), + gql.Field('owner', gql.String), + gql.Field('created', gql.String), + gql.Field('updated', gql.String), + gql.Field('region', gql.String), + gql.Field('tags', gql.ArrayType(gql.String)), + gql.Field( + name='terms', + resolver=resolve_table_glossary_terms, + type=gql.Ref('TermSearchResult'), + ), + gql.Field('dataset', gql.Ref('RedshiftDataset'), resolver=resolve_table_dataset), + ], +) + +RedshiftDatasetTableListItem = gql.ObjectType( + name='RedshiftDatasetTableListItem', + fields=[ + gql.Field('rsTableUri', gql.ID), + gql.Field('datasetUri', gql.String), + gql.Field('label', gql.String), + gql.Field('name', gql.String), + gql.Field('description', gql.String), + gql.Field('owner', gql.String), + gql.Field('created', gql.String), + gql.Field('updated', gql.String), + gql.Field('region', gql.String), + gql.Field('tags', gql.ArrayType(gql.String)), + ], +) + +RedshiftDatasetTableSearchResult = gql.ObjectType( + name='RedshiftDatasetTableSearchResult', + fields=[ + gql.Field('nodes', gql.ArrayType(RedshiftDatasetTableListItem)), + gql.Field('count', gql.Integer), + gql.Field('pages', gql.Integer), + gql.Field('page', gql.Integer), + gql.Field('hasNext', gql.Boolean), + gql.Field('hasPrevious', gql.Boolean), + ], +) + +RedshiftDatasetTableColumn = gql.ObjectType( + name='RedshiftDatasetTableColumn', + fields=[ + gql.Field('columnDefault', gql.String), + gql.Field('isCaseSensitive', gql.Boolean), + gql.Field('isCurrency', gql.Boolean), + gql.Field('isSigned', gql.Boolean), + gql.Field('label', gql.String), + gql.Field('length', gql.Integer), + gql.Field('name', gql.String), + gql.Field('nullable', gql.Boolean), + gql.Field('precision', gql.Integer), + gql.Field('scale', gql.Integer), + gql.Field('typeName', gql.String), + ], +) + +RedshiftDatasetTableColumnSearchResult = gql.ObjectType( + name='RedshiftDatasetTableColumnSearchResult', + fields=[ + gql.Field('nodes', gql.ArrayType(RedshiftDatasetTableColumn)), + gql.Field('count', gql.Integer), + gql.Field('pages', gql.Integer), + gql.Field('page', gql.Integer), + gql.Field('hasNext', gql.Boolean), + gql.Field('hasPrevious', gql.Boolean), + ], +) diff --git a/backend/dataall/modules/redshift_datasets/aws/__init__.py b/backend/dataall/modules/redshift_datasets/aws/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift.py b/backend/dataall/modules/redshift_datasets/aws/redshift.py new file mode 100644 index 000000000..2414643be --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/aws/redshift.py @@ -0,0 +1,21 @@ +import logging + +from botocore.exceptions import ClientError + +from dataall.base.aws.sts import SessionHelper + +log = logging.getLogger(__name__) + + +class RedshiftClient: + def __init__(self, account_id: str, region: str) -> None: + session = SessionHelper.remote_session(accountid=account_id, region=region) + self.client = session.client(service_name='redshift', region_name=region) + + def describe_cluster(self, clusterId: str): + try: + log.info(f'Describing cluster {clusterId=}') + return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0] + except ClientError as e: + log.error(e) + raise e diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift_data.py b/backend/dataall/modules/redshift_datasets/aws/redshift_data.py new file mode 100644 index 000000000..c821cd553 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/aws/redshift_data.py @@ -0,0 +1,145 @@ +import logging +import time +from botocore.exceptions import ClientError +from dataall.base.aws.sts import SessionHelper +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection + +log = logging.getLogger(__name__) + + +class RedshiftDataClient: + def __init__(self, account_id: str, region: str, connection: RedshiftConnection) -> None: + session = SessionHelper.remote_session(accountid=account_id, region=region) + self.client = session.client(service_name='redshift-data', region_name=region) + self.database = connection.database + self.execute_connection_params = { + 'Database': connection.database, + } + if connection.workgroup: + self.execute_connection_params['WorkgroupName'] = connection.workgroup + if connection.clusterId: + self.execute_connection_params['ClusterIdentifier'] = connection.clusterId + if connection.secretArn: + self.execute_connection_params['SecretArn'] = connection.secretArn + if connection.redshiftUser and connection.clusterId: + # https://boto3.amazonaws.com/v1/documentation/api/1.26.93/reference/services/redshift-data/client/list_databases.html + # We cannot use DbUser with serverless for role federation. + # It must use the current session IAM role, which in this case would be the pivot role. + self.execute_connection_params['DbUser'] = connection.redshiftUser + + def _execute_statement(self, sql: str): + log.info(f'Executing {sql=} with connection {self.execute_connection_params}...') + execute_dict = self.execute_connection_params + execute_dict['Sql'] = sql + execute_statement_response = self.client.execute_statement(**execute_dict) + + execution_finished = False + describe_statement_response = None + while not execution_finished: + describe_statement_response = self.client.describe_statement(Id=execute_statement_response['Id']) + time.sleep(1) + execution_finished = describe_statement_response['Status'] not in ['PICKED', 'STARTED', 'SUBMITTED'] + + if describe_statement_response['Status'] == 'FAILED': + raise Exception(describe_statement_response['Error']) + + log.info(f'Received response {describe_statement_response=}') + return describe_statement_response['Id'] + + @staticmethod + def identifier(name: str) -> str: + return f'"{name}"' + + def fully_qualified_table_name(self, schema: str, table_name: str) -> str: + return f'{RedshiftDataClient.identifier(self.database)}.{RedshiftDataClient.identifier(schema)}.{RedshiftDataClient.identifier(table_name)}' + + def get_redshift_connection_database(self): + databases = [] + try: + log.info(f'Looking for {self.database} in databases...') + + list_databases_response = self.client.list_databases(**self.execute_connection_params) + if 'Databases' in list_databases_response.keys(): + databases = list_databases_response['Databases'] + log.info(f'Returning {databases=}...') + return databases + except ClientError as e: + log.error(e) + raise e + + def list_redshift_schemas(self): + schemas = [] + try: + log.info(f'Fetching {self.database} schemas') + list_schemas_response = self.client.list_schemas(**self.execute_connection_params) + if 'Schemas' in list_schemas_response.keys(): + schemas = list_schemas_response['Schemas'] + + # Remove "internal" schemas + if 'information_schema' in schemas: + schemas.remove('information_schema') + if 'pg_catalog' in schemas: + schemas.remove('pg_catalog') + log.info(f'Returning {schemas=}...') + return schemas + except ClientError as e: + log.error(e) + raise e + + def list_redshift_tables(self, schema: str): + tables_list = [] + try: + log.info(f'Fetching {self.database} tables') + list_tables_response = self.client.list_tables( + **self.execute_connection_params, SchemaPattern=schema, MaxResults=1000 + ) + next_token = list_tables_response.get('NextToken', None) + if 'Tables' in list_tables_response.keys(): + tables_list = list_tables_response['Tables'] + while next_token: + list_tables_response = self.client.list_tables( + **self.execute_connection_params, NextToken=next_token, MaxResults=1000, SchemaPattern=schema + ) + if 'Tables' in list_tables_response.keys(): + tables_list.extend(list_tables_response['Tables']) + next_token = list_tables_response.get('NextToken', None) + + tables = [ + {'name': table['name'], 'type': table['type']} + for table in tables_list + if table['type'] in ['TABLE', 'VIEW'] + ] + log.info(f'Returning {tables=}...') + return tables + except ClientError as e: + log.error(e) + raise e + + def list_redshift_table_columns(self, schema: str, table: str): + columns_list = [] + try: + log.info(f'Fetching {self.database} tables') + response = self.client.describe_table( + **self.execute_connection_params, Schema=schema, Table=table, MaxResults=1000 + ) + next_token = response.get('NextToken', None) + if 'ColumnList' in response.keys(): + columns_list = response['ColumnList'] + while next_token: + response = self.client.describe_table( + **self.execute_connection_params, + Schema=schema, + Table=table, + MaxResults=1000, + NextToken=next_token, + ) + if 'ColumnList' in response.keys(): + columns_list.extend(response['ColumnList']) + next_token = response.get('NextToken', None) + for col in columns_list: + col['nullable'] = True if col['nullable'] == 1 else False + log.info(f'Returning {columns_list=}') + return columns_list + except ClientError as e: + log.error(e) + raise e diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py new file mode 100644 index 000000000..5294f626a --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py @@ -0,0 +1,34 @@ +import logging +from typing import List +from botocore.exceptions import ClientError + +from dataall.base.aws.sts import SessionHelper + + +log = logging.getLogger(__name__) + + +class RedshiftServerlessClient: + def __init__(self, account_id: str, region: str, role=None) -> None: + session = SessionHelper.remote_session(accountid=account_id, region=region, role=role) + self.client = session.client(service_name='redshift-serverless', region_name=region) + + def get_namespace_by_id(self, namespace_id: str): + response = self.client.list_namespaces() + namespaces = response.get('namespaces', []) + namespaces_filtered = [namespace for namespace in namespaces if namespace['namespaceId'] == namespace_id] + return namespaces_filtered[0] if namespaces_filtered else None + + def list_workgroups_in_namespace(self, namespace_name: str) -> List[dict]: + response = self.client.list_workgroups() + workgroups = response.get('workgroups', []) + return [wg for wg in workgroups if wg['namespaceName'] == namespace_name] + + def get_workgroup_arn(self, workgroup_name: str) -> str: + try: + log.info(f'Getting arn of {workgroup_name=}') + response = self.client.get_workgroup(workgroupName=workgroup_name) + return response.get('workgroup').get('workgroupArn') + except ClientError as e: + log.error(e) + raise e diff --git a/backend/dataall/modules/redshift_datasets/cdk/__init__.py b/backend/dataall/modules/redshift_datasets/cdk/__init__.py new file mode 100644 index 000000000..3b590a010 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/cdk/__init__.py @@ -0,0 +1,3 @@ +from dataall.modules.redshift_datasets.cdk import pivot_role_redshift_policy + +__all__ = ['pivot_role_redshift_policy'] diff --git a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py new file mode 100644 index 000000000..8f7875b25 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py @@ -0,0 +1,100 @@ +import os +from aws_cdk import aws_iam as iam + +from dataall.base import db +from dataall.base.aws.sts import SessionHelper +from dataall.base.utils.iam_policy_utils import split_policy_with_resources_in_statements +from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient + + +class RedshiftDatasetsPivotRole(PivotRoleStatementSet): + """ + Class including all permissions needed by the pivot role to work with Amazon Redshift. + """ + + def get_statements(self): + base_statements = [ + iam.PolicyStatement( + sid='RedshiftSecretsManager', + effect=iam.Effect.ALLOW, + actions=[ + 'secretsmanager:GetSecretValue', + ], + resources=[ + f'arn:aws:secretsmanager:{self.region}:{self.account}:secret:*', + ], + conditions={ + 'StringEquals': { + 'aws:ResourceTag/dataall': 'True', + }, + }, + ), + iam.PolicyStatement( + sid='RedshiftReadAllResources', # These permissions can only be applied to * + effect=iam.Effect.ALLOW, + actions=[ + 'redshift-data:DescribeStatement', + 'redshift:DescribeClusters', + 'redshift-serverless:ListNamespaces', + 'redshift-serverless:ListWorkgroups', + ], + resources=[ + '*', + ], + ), + iam.PolicyStatement( + sid='RedshiftRead', + effect=iam.Effect.ALLOW, + actions=[ + 'redshift-data:ListDatabases', + 'redshift-serverless:GetWorkgroup', + 'redshift:GetClusterCredentials', + ], + resources=[ + f'arn:aws:redshift-serverless:{self.region}:{self.account}:workgroup/*', + f'arn:aws:redshift:{self.region}:{self.account}:cluster:*', + f'arn:aws:redshift:{self.region}:{self.account}:dbuser:*/*', + f'arn:aws:redshift:{self.region}:{self.account}:dbname:*/*', + ], + ), + ] + engine = db.get_engine(envname=os.environ.get('envname', 'local')) + with engine.scoped_session() as session: + connections = RedshiftConnectionRepository.list_environment_redshift_connections( + session, environment_uri=self.environmentUri + ) + additional_statements = [] + if connections: + cdk_look_up_role_arn = SessionHelper.get_cdk_look_up_role_arn( + accountid=self.account, region=self.region + ) + rs_client = RedshiftServerlessClient( + account_id=self.account, region=self.region, role=cdk_look_up_role_arn + ) + cluster_arns = [ + f'arn:aws:redshift:{self.region}:{self.account}:cluster:{conn.clusterId}' + for conn in connections + if conn.clusterId != '' + ] + workgroup_arns = [ + rs_client.get_workgroup_arn(workgroup_name=conn.workgroup) + for conn in connections + if conn.workgroup != '' + ] + additional_statements.extend( + split_policy_with_resources_in_statements( + base_sid='RedshiftData', + effect=iam.Effect.ALLOW, + actions=[ + 'redshift-data:ListSchemas', + 'redshift-data:ListTables', + 'redshift-data:ExecuteStatement', + 'redshift-data:DescribeTable', + ], + resources=cluster_arns + workgroup_arns, + ) + ) + + return base_statements + additional_statements diff --git a/backend/dataall/modules/redshift_datasets/db/__init__.py b/backend/dataall/modules/redshift_datasets/db/__init__.py new file mode 100644 index 000000000..104b49a42 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/db/__init__.py @@ -0,0 +1 @@ +"""Database logic for datasets""" diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py new file mode 100644 index 000000000..1e2a779ab --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -0,0 +1,77 @@ +import logging + +from sqlalchemy import or_ +from sqlalchemy.orm import Query +from dataall.base.db import exceptions +from dataall.core.environment.services.environment_resource_manager import EnvironmentResource +from dataall.base.db import paginate +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection + +logger = logging.getLogger(__name__) + + +class RedshiftConnectionEnvironmentResource(EnvironmentResource): + """Actions performed on any environment resource on environment operations""" + + @staticmethod + def delete_env(session, environment): + RedshiftConnectionRepository.delete_all_environment_connections(session, environment.environmentUri) + + +class RedshiftConnectionRepository: + """DAO layer for Redshift Connections""" + + _DEFAULT_PAGE = 1 + _DEFAULT_PAGE_SIZE = 10 + + @staticmethod + def save_redshift_connection(session, connection): + """Save Redshift Connection to the database""" + session.add(connection) + session.commit() + + @staticmethod + def get_redshift_connection(session, uri) -> RedshiftConnection: + """Find Redshift Connection by URI""" + connection = session.query(RedshiftConnection).get(uri) + if not connection: + raise exceptions.ObjectNotFound('RedshiftConnection', uri) + return connection + + @staticmethod + def _query_user_redshift_connections(session, username, groups, filter) -> Query: + query = session.query(RedshiftConnection).filter( + or_( + RedshiftConnection.owner == username, + RedshiftConnection.SamlGroupName.in_(groups), + ) + ) + if filter and filter.get('environmentUri'): + query = query.filter(RedshiftConnection.environmentUri == filter.get('environmentUri')) + if filter and filter.get('groupUri'): + query = query.filter(RedshiftConnection.SamlGroupName == filter.get('groupUri')) + if filter and filter.get('term'): + query = query.filter( + or_( + RedshiftConnection.description.ilike(filter.get('term') + '%%'), + RedshiftConnection.label.ilike(filter.get('term') + '%%'), + ) + ) + return query.order_by(RedshiftConnection.label) + + @staticmethod + def list_environment_redshift_connections(session, environment_uri): + query = session.query(RedshiftConnection).filter(RedshiftConnection.environmentUri == environment_uri) + return query.order_by(RedshiftConnection.label).all() + + @staticmethod + def paginated_user_redshift_connections(session, username, groups, filter={}) -> dict: + return paginate( + query=RedshiftConnectionRepository._query_user_redshift_connections(session, username, groups, filter), + page=filter.get('page', RedshiftConnectionRepository._DEFAULT_PAGE), + page_size=filter.get('pageSize', RedshiftConnectionRepository._DEFAULT_PAGE_SIZE), + ).to_dict() + + @staticmethod + def delete_all_environment_connections(session, environment_uri): + session.query(RedshiftConnection).filter(RedshiftConnection.environmentUri == environment_uri).delete() diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_dataset_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_dataset_repositories.py new file mode 100644 index 000000000..3b9438774 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/db/redshift_dataset_repositories.py @@ -0,0 +1,141 @@ +import logging + +from sqlalchemy import or_, and_ +from dataall.core.activity.db.activity_models import Activity +from dataall.core.environment.db.environment_models import Environment +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.base.db import paginate +from dataall.base.db.exceptions import ObjectNotFound +from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification, Language +from dataall.core.environment.services.environment_resource_manager import EnvironmentResource +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable + +logger = logging.getLogger(__name__) + + +class RedshiftDatasetEnvironmentResource(EnvironmentResource): + """Actions performed on any environment resource on environment operations""" + + @staticmethod + def count_resources(session, environment, group_uri) -> int: + return RedshiftDatasetRepository.count_environment_group_datasets(session, environment, group_uri) + + +class RedshiftDatasetRepository: + """DAO layer for Redshift Datasets""" + + _DEFAULT_PAGE = 1 + _DEFAULT_PAGE_SIZE = 10 + + @classmethod + def create_redshift_dataset(cls, session, username, env: Environment, data: dict) -> RedshiftDataset: + organization = OrganizationRepository.get_organization_by_uri(session, env.organizationUri) + dataset = RedshiftDataset( + label=data.get('label'), + owner=username, + description=data.get('description', 'No description provided'), + tags=data.get('tags', []), + AwsAccountId=env.AwsAccountId, + SamlAdminGroupName=data['SamlAdminGroupName'], + region=env.region, + environmentUri=env.environmentUri, + organizationUri=env.organizationUri, + language=data.get('language', Language.English.value), + confidentiality=data.get('confidentiality', ConfidentialityClassification.Unclassified.value), + topics=data.get('topics', []), + businessOwnerEmail=data.get('businessOwnerEmail', ''), + businessOwnerDelegationEmails=data.get('businessOwnerDelegationEmails', []), + stewards=data.get('stewards') if data.get('stewards') else data['SamlAdminGroupName'], + autoApprovalEnabled=data.get('autoApprovalEnabled', False), + connectionUri=data.get('connectionUri'), + schema=data.get('schema'), + ) + session.add(dataset) + session.commit() + + activity = Activity( + action='redshift-dataset:import', + label='redshift-dataset:import', + owner=dataset.owner, + summary=f'{dataset.owner} imported redshift dataset {dataset.name} in {env.name} on organization {organization.name}', + targetUri=dataset.datasetUri, + targetType='redshift-dataset', + ) + session.add(activity) + session.commit() + return dataset + + @staticmethod + def get_redshift_dataset_by_uri(session, dataset_uri) -> RedshiftDataset: + dataset: RedshiftDataset = session.query(RedshiftDataset).get(dataset_uri) + if not dataset: + raise ObjectNotFound('RedshiftDataset', dataset_uri) + return dataset + + @staticmethod + def create_redshift_table(session, username, dataset_uri, data: dict) -> RedshiftTable: + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, dataset_uri) + table = RedshiftTable( + datasetUri=dataset.datasetUri, + owner=username, + name=data.get('name'), + label=data.get('name'), + description=data.get('description', 'No description provided'), + tags=data.get('tags', []), + topics=data.get('topics', []), + ) + session.add(table) + session.commit() + return table + + @staticmethod + def get_redshift_table_by_uri(session, table_uri) -> RedshiftTable: + table: RedshiftTable = session.query(RedshiftTable).get(table_uri) + if not table: + raise ObjectNotFound('RedshiftTable', table_uri) + return table + + @staticmethod + def _query_redshift_dataset_tables(session, dataset_uri, filter: dict = None): + query = session.query(RedshiftTable).filter(RedshiftTable.datasetUri == dataset_uri) + if filter and filter.get('term'): + query = query.filter( + or_( + *[ + RedshiftTable.name.ilike('%' + filter.get('term') + '%'), + RedshiftTable.label.ilike('%' + filter.get('term') + '%'), + ] + ) + ) + return query + + @staticmethod + def list_redshift_dataset_tables(session, dataset_uri, filter: dict = None): + query = RedshiftDatasetRepository._query_redshift_dataset_tables(session, dataset_uri, filter) + return query.order_by(RedshiftTable.label).all() + + @staticmethod + def paginated_redshift_dataset_tables(session, dataset_uri, data=None) -> dict: + query = RedshiftDatasetRepository._query_redshift_dataset_tables(session, dataset_uri, data) + return paginate( + query=query, + page_size=data.get('pageSize', RedshiftDatasetRepository._DEFAULT_PAGE_SIZE), + page=data.get('page', RedshiftDatasetRepository._DEFAULT_PAGE), + ).to_dict() + + @staticmethod + def count_dataset_tables(session, dataset_uri) -> int: + return RedshiftDatasetRepository._query_redshift_dataset_tables(session, dataset_uri).count() + + @staticmethod + def count_environment_group_datasets(session, environment, group_uri) -> int: + return ( + session.query(RedshiftDataset) + .filter( + and_( + RedshiftDataset.environmentUri == environment.environmentUri, + RedshiftDataset.SamlAdminGroupName == group_uri, + ) + ) + .count() + ) diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_models.py b/backend/dataall/modules/redshift_datasets/db/redshift_models.py new file mode 100644 index 000000000..e2012b922 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/db/redshift_models.py @@ -0,0 +1,41 @@ +from sqlalchemy import Column, String, ForeignKey +from sqlalchemy.dialects.postgresql import ARRAY +from dataall.modules.datasets_base.db.dataset_models import DatasetBase +from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes +from dataall.base.db import Resource, Base, utils + + +class RedshiftConnection(Base, Resource): + __tablename__ = 'redshift_connection' + connectionUri = Column(String, primary_key=True, default=utils.uuid('connection')) + environmentUri = Column(String, ForeignKey('environment.environmentUri'), nullable=False) + SamlGroupName = Column(String, nullable=False) + redshiftType = Column(String, nullable=False) + clusterId = Column(String, nullable=True) + nameSpaceId = Column(String, nullable=True) + workgroup = Column(String, nullable=True) + database = Column(String, nullable=False) + redshiftUser = Column(String, nullable=True) + secretArn = Column(String, nullable=True) + + +class RedshiftDataset(DatasetBase): + __tablename__ = 'redshift_dataset' + datasetUri = Column(String, ForeignKey('dataset.datasetUri'), primary_key=True) + connectionUri = Column(String, ForeignKey('redshift_connection.connectionUri'), nullable=False) + schema = Column(String, nullable=False) + + __mapper_args__ = { + 'polymorphic_identity': DatasetTypes.Redshift, + } + + +class RedshiftTable(Base, Resource): + __tablename__ = 'redshift_table' + datasetUri = Column(String, ForeignKey('redshift_dataset.datasetUri', ondelete='CASCADE'), nullable=False) + rsTableUri = Column(String, primary_key=True, default=utils.uuid('rs_table')) + topics = Column(ARRAY(String), nullable=True) + + @classmethod + def uri(cls): + return cls.rsTableUri diff --git a/backend/dataall/modules/redshift_datasets/indexers/__init__.py b/backend/dataall/modules/redshift_datasets/indexers/__init__.py new file mode 100644 index 000000000..faf66363b --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/indexers/__init__.py @@ -0,0 +1 @@ +"""Contains dataset related indexers for OpenSearch""" diff --git a/backend/dataall/modules/redshift_datasets/indexers/dataset_indexer.py b/backend/dataall/modules/redshift_datasets/indexers/dataset_indexer.py new file mode 100644 index 000000000..73cfe57f1 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/indexers/dataset_indexer.py @@ -0,0 +1,62 @@ +"""Indexes Datasets in OpenSearch""" + +import re + +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.modules.vote.db.vote_repositories import VoteRepository +from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftType +from dataall.modules.redshift_datasets.services.redshift_constants import ( + VOTE_REDSHIFT_DATASET_NAME, + INDEXER_REDSHIFT_DATASET_NAME, +) +from dataall.modules.catalog.indexers.base_indexer import BaseIndexer + + +class DatasetIndexer(BaseIndexer): + @classmethod + def upsert(cls, session, dataset_uri: str): + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session=session, dataset_uri=dataset_uri) + connection = RedshiftConnectionRepository.get_redshift_connection(session=session, uri=dataset.connectionUri) + + if dataset: + env = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + org = OrganizationRepository.get_organization_by_uri(session, dataset.organizationUri) + + count_tables = RedshiftDatasetRepository.count_dataset_tables(session=session, dataset_uri=dataset_uri) + count_upvotes = VoteRepository.count_upvotes(session, dataset_uri, target_type=VOTE_REDSHIFT_DATASET_NAME) + + glossary = BaseIndexer._get_target_glossary_terms(session, dataset_uri) + BaseIndexer._index( + doc_id=dataset_uri, + doc={ + 'name': dataset.name, + 'owner': dataset.owner, + 'label': dataset.label, + 'admins': dataset.SamlAdminGroupName, + 'database': connection.database, + 'schema': dataset.schema, + 'source': connection.clusterId + if connection.redshiftType == RedshiftType.Cluster.value + else connection.nameSpaceId, + 'resourceKind': INDEXER_REDSHIFT_DATASET_NAME, + 'description': dataset.description, + 'classification': re.sub('[^A-Za-z0-9]+', '', dataset.confidentiality), + 'tags': [t.replace('-', '') for t in dataset.tags or []], + 'topics': dataset.topics, + 'region': dataset.region.replace('-', ''), + 'environmentUri': env.environmentUri, + 'environmentName': env.name, + 'organizationUri': org.organizationUri, + 'organizationName': org.name, + 'created': dataset.created, + 'updated': dataset.updated, + 'deleted': dataset.deleted, + 'glossary': glossary, + 'tables': count_tables, + 'upvotes': count_upvotes, + }, + ) + return dataset diff --git a/backend/dataall/modules/redshift_datasets/indexers/table_indexer.py b/backend/dataall/modules/redshift_datasets/indexers/table_indexer.py new file mode 100644 index 000000000..0b5d3cfd2 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/indexers/table_indexer.py @@ -0,0 +1,59 @@ +"""Indexes DatasetTable in OpenSearch""" + +import re + +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftType +from dataall.modules.catalog.indexers.base_indexer import BaseIndexer + + +class DatasetTableIndexer(BaseIndexer): + @classmethod + def upsert(cls, session, table_uri: str, dataset=None, env=None, org=None): + table = RedshiftDatasetRepository.get_redshift_table_by_uri(session, table_uri) + + if table: + dataset = ( + RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, table.datasetUri) + if not dataset + else dataset + ) + connection = RedshiftConnectionRepository.get_redshift_connection(session, dataset.connectionUri) + env = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) if not env else env + org = OrganizationRepository.get_organization_by_uri(session, dataset.organizationUri) if not org else org + glossary = BaseIndexer._get_target_glossary_terms(session, table_uri) + + tags = table.tags if table.tags else [] + BaseIndexer._index( + doc_id=table_uri, + doc={ + 'name': table.name, + 'admins': dataset.SamlAdminGroupName, + 'owner': table.owner, + 'label': table.label, + 'resourceKind': 'redshifttable', + 'description': table.description, + 'database': connection.database, + 'schema': dataset.schema, + 'source': connection.clusterId + if connection.redshiftType == RedshiftType.Cluster.value + else connection.nameSpaceId, + 'classification': re.sub('[^A-Za-z0-9]+', '', dataset.confidentiality), + 'tags': [t.replace('-', '') for t in tags or []], + 'topics': dataset.topics, + 'region': dataset.region.replace('-', ''), + 'datasetUri': table.datasetUri, + 'environmentUri': env.environmentUri, + 'environmentName': env.name, + 'organizationUri': org.organizationUri, + 'organizationName': org.name, + 'created': table.created, + 'updated': table.updated, + 'deleted': table.deleted, + 'glossary': glossary, + }, + ) + return table diff --git a/backend/dataall/modules/redshift_datasets/services/__init__.py b/backend/dataall/modules/redshift_datasets/services/__init__.py new file mode 100644 index 000000000..03ef29863 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/__init__.py @@ -0,0 +1 @@ +"""Contains business logic for datasets""" diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py new file mode 100644 index 000000000..bad6ab72a --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py @@ -0,0 +1,59 @@ +from itertools import chain +from dataall.core.permissions.services.tenant_permissions import TENANT_ALL, TENANT_ALL_WITH_DESC +from dataall.core.permissions.services.environment_permissions import ( + ENVIRONMENT_INVITED, + ENVIRONMENT_INVITATION_REQUEST, + ENVIRONMENT_INVITED_DEFAULT, + ENVIRONMENT_ALL, +) +from dataall.core.permissions.services.resources_permissions import ( + RESOURCES_ALL, + RESOURCES_ALL_WITH_DESC, +) + +""" +REDSHIFT CONNECTION TENANT PERMISSIONS +""" + +MANAGE_REDSHIFT_CONNECTIONS = 'MANAGE_REDSHIFT_CONNECTIONS' + +TENANT_ALL.append(MANAGE_REDSHIFT_CONNECTIONS) +TENANT_ALL_WITH_DESC[MANAGE_REDSHIFT_CONNECTIONS] = 'Manage Redshift connections' + +""" +REDSHIFT CONNECTION PERMISSIONS +""" +GET_REDSHIFT_CONNECTION = 'GET_REDSHIFT_CONNECTION' +REDSHIFT_CONNECTION_READ = [GET_REDSHIFT_CONNECTION] + +DELETE_REDSHIFT_CONNECTION = 'DELETE_REDSHIFT_CONNECTION' +REDSHIFT_CONNECTION_WRITE = [DELETE_REDSHIFT_CONNECTION] + +REDSHIFT_CONNECTION_ALL = list(set(REDSHIFT_CONNECTION_WRITE + REDSHIFT_CONNECTION_READ)) +RESOURCES_ALL.extend(REDSHIFT_CONNECTION_ALL) + +for perm in chain(REDSHIFT_CONNECTION_ALL): + RESOURCES_ALL_WITH_DESC[perm] = perm + + +""" +REDSHIFT CONNECTION PERMISSIONS FOR ENVIRONMENT +""" + +LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS = 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS' +CREATE_REDSHIFT_CONNECTION = 'CREATE_REDSHIFT_CONNECTION' + +ENVIRONMENT_INVITED.append(LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS) +ENVIRONMENT_INVITED.append(CREATE_REDSHIFT_CONNECTION) + +ENVIRONMENT_INVITATION_REQUEST.append(CREATE_REDSHIFT_CONNECTION) # Selectable in invitation toogle +ENVIRONMENT_INVITED_DEFAULT.append(LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS) # Granted by default + + +ENVIRONMENT_ALL.append(LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS) +ENVIRONMENT_ALL.append(CREATE_REDSHIFT_CONNECTION) + +RESOURCES_ALL.append(LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS) +RESOURCES_ALL.append(CREATE_REDSHIFT_CONNECTION) +RESOURCES_ALL_WITH_DESC[LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS] = 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS' +RESOURCES_ALL_WITH_DESC[CREATE_REDSHIFT_CONNECTION] = 'Create Redshift Connection in this environment' diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py new file mode 100644 index 000000000..f658b17b3 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -0,0 +1,163 @@ +import logging +from dataall.base.context import get_context +from dataall.base.db import exceptions +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService +from dataall.core.permissions.services.group_policy_service import GroupPolicyService +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.core.stacks.services.stack_service import StackService +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository + +from dataall.modules.redshift_datasets.services.redshift_connection_permissions import ( + MANAGE_REDSHIFT_CONNECTIONS, + REDSHIFT_CONNECTION_ALL, + DELETE_REDSHIFT_CONNECTION, + GET_REDSHIFT_CONNECTION, + CREATE_REDSHIFT_CONNECTION, + LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS, +) +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection +from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient +from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient +from dataall.modules.redshift_datasets.aws.redshift import RedshiftClient + +log = logging.getLogger(__name__) + + +class RedshiftConnectionService: + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(CREATE_REDSHIFT_CONNECTION) + @GroupPolicyService.has_group_permission(CREATE_REDSHIFT_CONNECTION) + def create_redshift_connection(uri, admin_group, data: dict) -> RedshiftConnection: + context = get_context() + with context.db_engine.scoped_session() as session: + environment = EnvironmentService.get_environment_by_uri(session, uri) + connection = RedshiftConnection( + label=data.get('connectionName'), + name=data.get('connectionName'), + owner=context.username, + environmentUri=environment.environmentUri, + SamlGroupName=admin_group, + redshiftType=data.get('redshiftType'), + clusterId=data.get('clusterId', ''), + nameSpaceId=data.get('nameSpaceId', ''), + workgroup=data.get('workgroup', ''), + database=data.get('database'), + redshiftUser=data.get('redshiftUser', ''), + secretArn=data.get('secretArn', ''), + ) + RedshiftConnectionService._check_redshift_connection( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ) + RedshiftConnectionRepository.save_redshift_connection(session, connection) + + ResourcePolicyService.attach_resource_policy( + session=session, + group=connection.SamlGroupName, + permissions=REDSHIFT_CONNECTION_ALL, + resource_uri=connection.connectionUri, + resource_type=RedshiftConnection.__name__, + ) + StackService.deploy_stack(targetUri=environment.environmentUri) + return connection + + @staticmethod + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_CONNECTION) + def get_redshift_connection_by_uri(uri) -> RedshiftConnection: + with get_context().db_engine.scoped_session() as session: + connection = RedshiftConnectionRepository.get_redshift_connection(session, uri) + if not connection: + raise exceptions.ObjectNotFound('RedshiftConnection', uri) + return connection + + @staticmethod + def _get_redshift_connection(session, uri) -> RedshiftConnection: + return RedshiftConnectionRepository.get_redshift_connection(session, uri) + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(DELETE_REDSHIFT_CONNECTION) + def delete_redshift_connection(uri) -> bool: + context = get_context() + with context.db_engine.scoped_session() as session: + connection = RedshiftConnectionService._get_redshift_connection(session=session, uri=uri) + ResourcePolicyService.delete_resource_policy( + session=session, + resource_uri=connection.connectionUri, + group=connection.SamlGroupName, + ) + session.delete(connection) + session.commit() + return True + + @staticmethod + @ResourcePolicyService.has_resource_permission(LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS) + def list_environment_redshift_connections(uri, filter): + context = get_context() + with context.db_engine.scoped_session() as session: + connections = RedshiftConnectionRepository.paginated_user_redshift_connections( + session, context.username, context.groups, filter + ) + return connections + + @staticmethod + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_CONNECTION) + def list_connection_schemas(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) + environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) + return RedshiftDataClient( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ).list_redshift_schemas() + + @staticmethod + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_CONNECTION) + def list_schema_tables(uri, schema): + context = get_context() + with context.db_engine.scoped_session() as session: + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) + environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) + response = RedshiftDataClient( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ).list_redshift_tables(schema) + return response + + @staticmethod + def _check_redshift_connection(account_id: str, region: str, connection: RedshiftConnection): + if connection.nameSpaceId: + if ( + namespace := RedshiftServerlessClient(account_id=account_id, region=region).get_namespace_by_id( + connection.nameSpaceId + ) + ) is None: + raise Exception( + f'Redshift namespaceId {connection.nameSpaceId} does not exist. Remember to introduce the Id and not the name of the namespace.' + ) + if connection.workgroup and connection.workgroup not in [ + workgroup['workgroupName'] + for workgroup in RedshiftServerlessClient( + account_id=account_id, region=region + ).list_workgroups_in_namespace(namespace['namespaceName']) + ]: + raise Exception( + f'Redshift workgroup {connection.workgroup} does not exist or is not associated to namespace {connection.nameSpaceId}' + ) + + if connection.clusterId and not RedshiftClient(account_id=account_id, region=region).describe_cluster( + connection.clusterId + ): + raise Exception( + f'Redshift cluster {connection.clusterId} does not exist or cannot be accessed with these parameters' + ) + + try: + RedshiftDataClient( + account_id=account_id, region=region, connection=connection + ).get_redshift_connection_database() + except Exception as e: + raise Exception( + f'Redshift database {connection.database} does not exist or cannot be accessed with these parameters: {e}' + ) + return diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_constants.py b/backend/dataall/modules/redshift_datasets/services/redshift_constants.py new file mode 100644 index 000000000..c37fdee92 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_constants.py @@ -0,0 +1,10 @@ +GLOSSARY_REDSHIFT_DATASET_NAME = 'RedshiftDataset' +GLOSSARY_REDSHIFT_DATASET_TABLE_NAME = 'RedshiftDatasetTable' + +FEED_REDSHIFT_DATASET_NAME = 'RedshiftDataset' +FEED_REDSHIFT_DATASET_TABLE_NAME = 'RedshiftDatasetTable' + +VOTE_REDSHIFT_DATASET_NAME = 'redshiftdataset' + +INDEXER_REDSHIFT_DATASET_NAME = 'redshiftdataset' +INDEXER_REDSHIFT_DATASET_TABLE_NAME = 'redshiftdatasettable' diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_permissions.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_permissions.py new file mode 100644 index 000000000..ee3c04c02 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_permissions.py @@ -0,0 +1,71 @@ +from itertools import chain + +from dataall.core.permissions.services.environment_permissions import ( + ENVIRONMENT_INVITED, + ENVIRONMENT_INVITATION_REQUEST, + ENVIRONMENT_ALL, +) +from dataall.core.permissions.services.tenant_permissions import TENANT_ALL, TENANT_ALL_WITH_DESC +from dataall.core.permissions.services.resources_permissions import ( + RESOURCES_ALL, + RESOURCES_ALL_WITH_DESC, +) + +""" +REDSHIFT DATASET TENANT PERMISSIONS +""" + +MANAGE_REDSHIFT_DATASETS = 'MANAGE_REDSHIFT_DATASETS' + +TENANT_ALL.append(MANAGE_REDSHIFT_DATASETS) +TENANT_ALL_WITH_DESC[MANAGE_REDSHIFT_DATASETS] = 'Manage Redshift datasets' + +""" +REDSHIFT DATASET RESOURCE-GROUP PERMISSIONS +""" + +GET_REDSHIFT_DATASET = 'GET_REDSHIFT_DATASET' + +REDSHIFT_DATASET_READ = [GET_REDSHIFT_DATASET] + +ADD_TABLES_REDSHIFT_DATASET = 'ADD_TABLES_REDSHIFT_DATASET' +DELETE_REDSHIFT_DATASET = 'DELETE_REDSHIFT_DATASET' +UPDATE_REDSHIFT_DATASET = 'UPDATE_REDSHIFT_DATASET' + +REDSHIFT_DATASET_WRITE = [ADD_TABLES_REDSHIFT_DATASET, DELETE_REDSHIFT_DATASET, UPDATE_REDSHIFT_DATASET] + +REDSHIFT_DATASET_ALL = list(set(REDSHIFT_DATASET_WRITE + REDSHIFT_DATASET_READ)) +RESOURCES_ALL.extend(REDSHIFT_DATASET_ALL) + +""" +REDSHIFT DATASET TABLE RESOURCE-GROUP PERMISSIONS +""" + +GET_REDSHIFT_DATASET_TABLE = 'GET_REDSHIFT_DATASET_TABLE' +REDSHIFT_DATASET_TABLE_READ = [GET_REDSHIFT_DATASET_TABLE] + +DELETE_REDSHIFT_DATASET_TABLE = 'DELETE_REDSHIFT_DATASET_TABLE' +UPDATE_REDSHIFT_DATASET_TABLE = 'UPDATE_REDSHIFT_DATASET_TABLE' +REDSHIFT_DATASET_TABLE_WRITE = [DELETE_REDSHIFT_DATASET_TABLE, UPDATE_REDSHIFT_DATASET_TABLE] + +REDSHIFT_DATASET_TABLE_ALL = list(set(REDSHIFT_DATASET_TABLE_WRITE + REDSHIFT_DATASET_TABLE_READ)) +RESOURCES_ALL.extend(REDSHIFT_DATASET_TABLE_ALL) + +""" +REDSHIFT DATASET PERMISSIONS FOR ENVIRONMENT +""" + +IMPORT_REDSHIFT_DATASET = 'IMPORT_REDSHIFT_DATASET' + +ENVIRONMENT_INVITED.append(IMPORT_REDSHIFT_DATASET) + +ENVIRONMENT_INVITATION_REQUEST.append(IMPORT_REDSHIFT_DATASET) + +ENVIRONMENT_ALL.append(IMPORT_REDSHIFT_DATASET) + +RESOURCES_ALL.append(IMPORT_REDSHIFT_DATASET) + +for perm in chain(REDSHIFT_DATASET_ALL + REDSHIFT_DATASET_TABLE_ALL): + RESOURCES_ALL_WITH_DESC[perm] = perm + +RESOURCES_ALL_WITH_DESC[IMPORT_REDSHIFT_DATASET] = 'Import Redshift Datasets to this environment' diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py new file mode 100644 index 000000000..288bc949d --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -0,0 +1,371 @@ +import logging + +from dataall.base.context import get_context +from dataall.base.db.paginator import paginate_list +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService +from dataall.core.permissions.services.group_policy_service import GroupPolicyService +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.modules.vote.db.vote_repositories import VoteRepository +from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository + + +from dataall.modules.datasets_base.services.datasets_enums import DatasetRole +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository + +from dataall.modules.redshift_datasets.services.redshift_dataset_permissions import ( + MANAGE_REDSHIFT_DATASETS, + IMPORT_REDSHIFT_DATASET, + ADD_TABLES_REDSHIFT_DATASET, + DELETE_REDSHIFT_DATASET, + UPDATE_REDSHIFT_DATASET, + GET_REDSHIFT_DATASET, + REDSHIFT_DATASET_ALL, + REDSHIFT_DATASET_READ, + GET_REDSHIFT_DATASET_TABLE, + DELETE_REDSHIFT_DATASET_TABLE, + UPDATE_REDSHIFT_DATASET_TABLE, + REDSHIFT_DATASET_TABLE_ALL, + REDSHIFT_DATASET_TABLE_READ, +) +from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable +from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient +from dataall.modules.redshift_datasets.indexers.dataset_indexer import DatasetIndexer +from dataall.modules.redshift_datasets.indexers.table_indexer import DatasetTableIndexer +from dataall.modules.redshift_datasets.services.redshift_constants import ( + GLOSSARY_REDSHIFT_DATASET_NAME, + GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, + VOTE_REDSHIFT_DATASET_NAME, +) + + +log = logging.getLogger(__name__) + + +class RedshiftDatasetService: + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(IMPORT_REDSHIFT_DATASET) + @GroupPolicyService.has_group_permission(IMPORT_REDSHIFT_DATASET) + def import_redshift_dataset(uri, admin_group, data: dict): + context = get_context() + with context.db_engine.scoped_session() as session: + environment = EnvironmentService.get_environment_by_uri(session, uri) + + dataset = RedshiftDatasetRepository.create_redshift_dataset( + session=session, username=context.username, env=environment, data=data + ) + dataset.userRoleForDataset = DatasetRole.Creator.value + + RedshiftDatasetService._attach_dataset_permissions(session, dataset, environment) + + DatasetIndexer.upsert(session=session, dataset_uri=dataset.datasetUri) + + for table in data.get('tables', []): + rs_table = RedshiftDatasetRepository.create_redshift_table( + session=session, + username=context.username, + dataset_uri=dataset.datasetUri, + data={'name': table}, + ) + RedshiftDatasetService._attach_table_permissions(session, dataset, environment, rs_table) + DatasetTableIndexer.upsert(session=session, table_uri=rs_table.rsTableUri) + + return dataset + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(UPDATE_REDSHIFT_DATASET) + def update_redshift_dataset(uri, data: dict): + context = get_context() + username = context.username + with context.db_engine.scoped_session() as session: + dataset: RedshiftDataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) + if data and isinstance(data, dict): + for k in data.keys(): + if k not in ['stewards']: + setattr(dataset, k, data.get(k)) + + if data.get('stewards') and data.get('stewards') != dataset.stewards: + if data.get('stewards') != dataset.SamlAdminGroupName: + RedshiftDatasetService._transfer_stewardship_to_new_stewards(session, dataset, data['stewards']) + dataset.stewards = data['stewards'] + else: + RedshiftDatasetService._transfer_stewardship_to_owners(session, dataset) + dataset.stewards = dataset.SamlAdminGroupName + + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + permissions=REDSHIFT_DATASET_ALL, + resource_uri=dataset.datasetUri, + resource_type=RedshiftDataset.__name__, + ) + if data.get('terms'): + GlossaryRepository.set_glossary_terms_links( + session, username, uri, GLOSSARY_REDSHIFT_DATASET_NAME, data.get('terms') + ) + DatasetBaseRepository.update_dataset_activity(session, dataset, username) + + DatasetIndexer.upsert(session, dataset_uri=uri) + return dataset + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(DELETE_REDSHIFT_DATASET) + def delete_redshift_dataset(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + dataset: RedshiftDataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) + + # TODO: when adding sharing, add check_on_delete for shared items + tables: [RedshiftTable] = RedshiftDatasetRepository.list_redshift_dataset_tables( + session, dataset.datasetUri + ) + for table in tables: + DatasetTableIndexer.delete_doc(doc_id=table.rsTableUri) + session.delete(table) + + ResourcePolicyService.delete_resource_policy( + session=session, resource_uri=uri, group=dataset.SamlAdminGroupName + ) + env = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + if dataset.SamlAdminGroupName != env.SamlGroupName: + ResourcePolicyService.delete_resource_policy(session=session, resource_uri=uri, group=env.SamlGroupName) + if dataset.stewards: + ResourcePolicyService.delete_resource_policy(session=session, resource_uri=uri, group=dataset.stewards) + + DatasetTableIndexer.delete_doc(doc_id=dataset.datasetUri) + RedshiftDatasetService._delete_dataset_term_links(session, uri) + VoteRepository.delete_votes(session, dataset.datasetUri, VOTE_REDSHIFT_DATASET_NAME) + session.delete(dataset) + session.commit() + return True + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(ADD_TABLES_REDSHIFT_DATASET) + def add_redshift_dataset_tables(uri, tables): + context = get_context() + datasetUri = uri + with context.db_engine.scoped_session() as session: + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, datasetUri) + dataset_tables = RedshiftDatasetRepository.list_redshift_dataset_tables(session, datasetUri) + tables = [new_t for new_t in tables if new_t not in [t.name for t in dataset_tables]] + for table in tables: + rs_table = RedshiftDatasetRepository.create_redshift_table( + session=session, + username=context.username, + dataset_uri=datasetUri, + data={'name': table}, + ) + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + permissions=REDSHIFT_DATASET_TABLE_ALL, + resource_uri=rs_table.rsTableUri, + resource_type=RedshiftTable.__name__, + ) + DatasetTableIndexer.upsert(session=session, table_uri=rs_table.rsTableUri) + return True + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(DELETE_REDSHIFT_DATASET_TABLE) + def delete_redshift_dataset_table(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + table: RedshiftTable = RedshiftDatasetRepository.get_redshift_table_by_uri(session, uri) + DatasetTableIndexer.delete_doc(doc_id=table.rsTableUri) + session.delete(table) + session.commit() + return True + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(UPDATE_REDSHIFT_DATASET_TABLE) + def update_redshift_dataset_table(uri, data: dict): + context = get_context() + username = context.username + with context.db_engine.scoped_session() as session: + table: RedshiftTable = RedshiftDatasetRepository.get_redshift_table_by_uri(session, uri) + if data and isinstance(data, dict): + for k in data.keys(): + setattr(table, k, data.get(k)) + + if data.get('terms'): + GlossaryRepository.set_glossary_terms_links( + session, username, table.rsTableUri, GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, data.get('terms') + ) + DatasetTableIndexer.upsert(session, table_uri=uri) + return table + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET) + def get_redshift_dataset(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) + if dataset.SamlAdminGroupName in context.groups: + dataset.userRoleForDataset = DatasetRole.Admin.value + return dataset + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET) + def list_redshift_dataset_tables(uri, filter): + context = get_context() + with context.db_engine.scoped_session() as session: + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) + return RedshiftDatasetRepository.paginated_redshift_dataset_tables( + session=session, dataset_uri=dataset.datasetUri, data=filter + ) + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET) + def list_redshift_schema_dataset_tables(uri): + with get_context().db_engine.scoped_session() as session: + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) + dataset_tables_names = [ + t.name for t in RedshiftDatasetRepository.list_redshift_dataset_tables(session, dataset.datasetUri) + ] + connection = RedshiftConnectionRepository.get_redshift_connection(session, dataset.connectionUri) + environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) + tables = RedshiftDataClient( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ).list_redshift_tables(dataset.schema) + for table in tables: + if table['name'] in dataset_tables_names: + table.update({'alreadyAdded': True}) + else: + table.update({'alreadyAdded': False}) + return tables + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET) + def get_dataset_upvotes(uri): + with get_context().db_engine.scoped_session() as session: + return VoteRepository.count_upvotes(session, uri, target_type=VOTE_REDSHIFT_DATASET_NAME) or 0 + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET_TABLE) + def get_redshift_dataset_table(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + table = RedshiftDatasetRepository.get_redshift_table_by_uri(session, uri) + return table + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) + @ResourcePolicyService.has_resource_permission(GET_REDSHIFT_DATASET_TABLE) + def list_redshift_dataset_table_columns(uri, filter): + context = get_context() + with context.db_engine.scoped_session() as session: + table = RedshiftDatasetRepository.get_redshift_table_by_uri(session=session, table_uri=uri) + dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri( + session=session, dataset_uri=table.datasetUri + ) + connection = RedshiftConnectionRepository.get_redshift_connection( + session=session, uri=dataset.connectionUri + ) + columns = RedshiftDataClient( + account_id=dataset.AwsAccountId, region=dataset.region, connection=connection + ).list_redshift_table_columns(dataset.schema, table.name) + return paginate_list( + items=columns, page_size=filter.get('pageSize', 10), page=filter.get('page', 1) + ).to_dict() + + @staticmethod + def _delete_dataset_term_links(session, dataset_uri): + tables = [t.rsTableUri for t in RedshiftDatasetRepository.list_redshift_dataset_tables(session, dataset_uri)] + for table_uri in tables: + GlossaryRepository.delete_glossary_terms_links(session, table_uri, GLOSSARY_REDSHIFT_DATASET_TABLE_NAME) + GlossaryRepository.delete_glossary_terms_links(session, dataset_uri, GLOSSARY_REDSHIFT_DATASET_NAME) + + @staticmethod + def _attach_dataset_permissions(session, dataset, environment): + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + permissions=REDSHIFT_DATASET_ALL, + resource_uri=dataset.datasetUri, + resource_type=RedshiftDataset.__name__, + ) + if dataset.stewards and dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.stewards, + permissions=REDSHIFT_DATASET_READ, + resource_uri=dataset.datasetUri, + resource_type=RedshiftDataset.__name__, + ) + + if environment.SamlGroupName != dataset.SamlAdminGroupName: + ResourcePolicyService.attach_resource_policy( + session=session, + group=environment.SamlGroupName, + permissions=REDSHIFT_DATASET_ALL, + resource_uri=dataset.datasetUri, + resource_type=RedshiftDataset.__name__, + ) + + @staticmethod + def _attach_table_permissions(session, dataset, environment, table): + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + permissions=REDSHIFT_DATASET_TABLE_ALL, + resource_uri=table.rsTableUri, + resource_type=RedshiftTable.__name__, + ) + if dataset.stewards and dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.stewards, + permissions=REDSHIFT_DATASET_TABLE_READ, + resource_uri=table.rsTableUri, + resource_type=RedshiftTable.__name__, + ) + if environment.SamlGroupName != dataset.SamlAdminGroupName: + ResourcePolicyService.attach_resource_policy( + session=session, + group=environment.SamlGroupName, + permissions=REDSHIFT_DATASET_TABLE_ALL, + resource_uri=table.rsTableUri, + resource_type=RedshiftTable.__name__, + ) + + @staticmethod + def _transfer_stewardship_to_owners(session, dataset): + env = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + if dataset.stewards != env.SamlGroupName: + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=dataset.datasetUri, + ) + + return dataset + + @staticmethod + def _transfer_stewardship_to_new_stewards(session, dataset, new_stewards): + if dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=dataset.datasetUri, + ) + ResourcePolicyService.attach_resource_policy( + session=session, + group=new_stewards, + permissions=REDSHIFT_DATASET_READ, + resource_uri=dataset.datasetUri, + resource_type=RedshiftDataset.__name__, + ) + return dataset diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_enums.py b/backend/dataall/modules/redshift_datasets/services/redshift_enums.py new file mode 100644 index 000000000..52e052a32 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/services/redshift_enums.py @@ -0,0 +1,6 @@ +from enum import Enum + + +class RedshiftType(Enum): + Serverless = 'serverless' + Cluster = 'cluster' diff --git a/backend/migrations/env.py b/backend/migrations/env.py index 7319d31fe..2816677cc 100644 --- a/backend/migrations/env.py +++ b/backend/migrations/env.py @@ -19,6 +19,7 @@ from dataall.modules.worksheets.db.worksheet_models import WorksheetQueryResult, Worksheet from dataall.modules.omics.db.omics_models import OmicsWorkflow, OmicsRun from dataall.modules.metadata_forms.db.metadata_form_models import * +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable, RedshiftConnection # fmt: on # enable ruff-format back diff --git a/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py b/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py new file mode 100644 index 000000000..3e7a38c35 --- /dev/null +++ b/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py @@ -0,0 +1,151 @@ +"""add_redshift_datasets + +Revision ID: 852cdf6cf1e0 +Revises: 7c5b30fee306 +Create Date: 2024-07-25 08:25:34.122091 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy import orm +from sqlalchemy.dialects import postgresql + +from dataall.core.environment.db.environment_models import Environment +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.permission_service import PermissionService +from dataall.core.permissions.api.enums import PermissionType + + +# revision identifiers, used by Alembic. +revision = '852cdf6cf1e0' +down_revision = '7c5b30fee306' +branch_labels = None +depends_on = None + +# Redshift permissions +LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS = 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS' +CREATE_REDSHIFT_CONNECTION = 'CREATE_REDSHIFT_CONNECTION' +IMPORT_REDSHIFT_DATASET = 'IMPORT_REDSHIFT_DATASET' + +ENVIRONMENT_REDSHIFT_ALL = [LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS, CREATE_REDSHIFT_CONNECTION, IMPORT_REDSHIFT_DATASET] +ENVIRONMENT_REDSHIFT_ALL_WITH_DESC = {} +ENVIRONMENT_REDSHIFT_ALL_WITH_DESC[LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS] = 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS' +ENVIRONMENT_REDSHIFT_ALL_WITH_DESC[CREATE_REDSHIFT_CONNECTION] = 'Create Redshift Connection in this environment' +ENVIRONMENT_REDSHIFT_ALL_WITH_DESC[IMPORT_REDSHIFT_DATASET] = 'Import Redshift Datasets to this environment' + + +def upgrade(): + op.create_table( + 'redshift_connection', + sa.Column('label', sa.String(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('owner', sa.String(), nullable=False), + sa.Column('created', sa.DateTime(), nullable=True), + sa.Column('updated', sa.DateTime(), nullable=True), + sa.Column('deleted', sa.DateTime(), nullable=True), + sa.Column('description', sa.String(), nullable=True), + sa.Column('tags', postgresql.ARRAY(sa.String()), nullable=True), + sa.Column('connectionUri', sa.String(), nullable=False), + sa.Column('environmentUri', sa.String(), nullable=False), + sa.Column('SamlGroupName', sa.String(), nullable=False), + sa.Column('redshiftType', sa.String(), nullable=False), + sa.Column('clusterId', sa.String(), nullable=True), + sa.Column('nameSpaceId', sa.String(), nullable=True), + sa.Column('workgroup', sa.String(), nullable=True), + sa.Column('database', sa.String(), nullable=False), + sa.Column('redshiftUser', sa.String(), nullable=True), + sa.Column('secretArn', sa.String(), nullable=True), + sa.ForeignKeyConstraint( + ['environmentUri'], + ['environment.environmentUri'], + ), + sa.PrimaryKeyConstraint('connectionUri'), + ) + + op.create_table( + 'redshift_dataset', + sa.Column('datasetUri', sa.String(), nullable=False), + sa.Column('connectionUri', sa.String(), nullable=False), + sa.Column('schema', sa.String(), nullable=False), + sa.ForeignKeyConstraint( + ['connectionUri'], + ['redshift_connection.connectionUri'], + ), + sa.ForeignKeyConstraint( + ['datasetUri'], + ['dataset.datasetUri'], + ), + sa.PrimaryKeyConstraint('datasetUri'), + ) + + op.create_table( + 'redshift_table', + sa.Column('label', sa.String(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('owner', sa.String(), nullable=False), + sa.Column('created', sa.DateTime(), nullable=True), + sa.Column('updated', sa.DateTime(), nullable=True), + sa.Column('deleted', sa.DateTime(), nullable=True), + sa.Column('description', sa.String(), nullable=True), + sa.Column('tags', postgresql.ARRAY(sa.String()), nullable=True), + sa.Column('datasetUri', sa.String(), nullable=False), + sa.Column('rsTableUri', sa.String(), nullable=False), + sa.Column('topics', postgresql.ARRAY(sa.String()), nullable=True), + sa.ForeignKeyConstraint(['datasetUri'], ['redshift_dataset.datasetUri'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('rsTableUri'), + ) + try: + op.execute("ALTER TYPE datasettypes ADD VALUE 'Redshift'") + except Exception as e: + if 'already exists' in str(e): + pass + else: + raise e + + ## Backfilling Redshift permissions + # First we need to create the permissions as save_perms runs after the migrations + bind = op.get_bind() + session = orm.Session(bind=bind) + for perm in ENVIRONMENT_REDSHIFT_ALL: + PermissionService.save_permission( + session, + name=perm, + description=ENVIRONMENT_REDSHIFT_ALL_WITH_DESC[perm], + permission_type=PermissionType.RESOURCE.name, + ) + all_environments = session.query(Environment).all() + for env in all_environments: + ResourcePolicyService.attach_resource_policy( + session=session, + group=env.SamlGroupName, + resource_uri=env.environmentUri, + permissions=ENVIRONMENT_REDSHIFT_ALL, + resource_type=Environment.__name__, + ) + + +def downgrade(): + op.drop_table('redshift_table') + op.drop_table('redshift_dataset') + op.drop_table('redshift_connection') + # There is no postgres command to DELETE VALUE from an enum + # In the official docs is recommended to leave it: + # https://www.postgresql.org/message-id/21012.1459434338%40sss.pgh.pa.us + + # Deleting Redshift permissions + bind = op.get_bind() + session = orm.Session(bind=bind) + all_environments = session.query(Environment).all() + for env in all_environments: + policies = ResourcePolicyService.find_resource_policies( + session=session, + group=env.SamlGroupName, + resource_uri=env.environmentUri, + resource_type=Environment.__name__, + permissions=ENVIRONMENT_REDSHIFT_ALL, + ) + for policy in policies: + for permission in policy.permissions: + session.delete(permission) + session.commit() diff --git a/backend/requirements.txt b/backend/requirements.txt index 5fccee041..e0a34d519 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,7 +1,7 @@ ariadne==0.17.0 aws-xray-sdk==2.4.3 -boto3==1.28.23 -botocore==1.31.23 +boto3==1.34.119 +botocore==1.34.119 fastapi == 0.109.2 Flask==3.0.3 flask-cors==4.0.1 diff --git a/config.json b/config.json index 09d2b1ad5..3027bf95a 100644 --- a/config.json +++ b/config.json @@ -46,6 +46,9 @@ "s3_datasets_shares": { "active": true }, + "redshift_datasets": { + "active": true + }, "worksheets": { "active": true }, diff --git a/frontend/public/static/icons/amazon-s3.svg b/frontend/public/static/icons/amazon-s3.svg new file mode 100644 index 000000000..cd203eaad --- /dev/null +++ b/frontend/public/static/icons/amazon-s3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/static/icons/aws-redshift.svg b/frontend/public/static/icons/aws-redshift.svg new file mode 100644 index 000000000..364155af6 --- /dev/null +++ b/frontend/public/static/icons/aws-redshift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js b/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js index 7b624c53a..0b94b91e8 100644 --- a/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js +++ b/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js @@ -27,10 +27,18 @@ import { RequestDashboardAccessModal } from './RequestDashboardAccessModal'; const HitICon = ({ hit }) => ( - + } /> - + } /> @@ -127,6 +135,28 @@ export const GlossarySearchResultItem = ({ hit }) => { {hit.label} )} + {hit.resourceKind === 'redshiftdataset' && ( + + {hit.label} + + )} + {hit.resourceKind === 'redshifttable' && ( + + {hit.label} + + )} by{' '} @@ -279,7 +309,9 @@ export const GlossarySearchResultItem = ({ hit }) => { }} > - {isOpeningModal || isOpeningDashboardModal ? ( + {hit.resourceKind === 'redshiftdataset' || + hit.resourceKind === 'redshifttable' ? null : isOpeningModal || + isOpeningDashboardModal ? ( ) : ( + + + + )} diff --git a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js new file mode 100644 index 000000000..e484636ef --- /dev/null +++ b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js @@ -0,0 +1,130 @@ +import { + Box, + Card, + CardContent, + CardHeader, + Chip, + Divider, + Grid, + Typography +} from '@mui/material'; +import PropTypes from 'prop-types'; +import { Label } from 'design'; +import { isFeatureEnabled } from 'utils'; + +export const DatasetGovernance = (props) => { + const { dataset } = props; + const terms = + dataset.terms.nodes.length > 0 + ? dataset.terms.nodes + : [{ label: '-', nodeUri: '-' }]; + const tags = dataset.tags.length > 0 ? dataset.tags : ['-']; + + return ( + + + + + + {isFeatureEnabled('datasets_base', 'confidentiality_dropdown') && ( + + + Confidentiality + + + + + + )} + {isFeatureEnabled('datasets_base', 'topics_dropdown') && ( + + + Topics + + + {dataset.topics && + dataset.topics.length > 0 && + dataset.topics.map((t) => ( + + ))} + + + )} + + + + Tags + + + {tags && + tags.map((t) => ( + + ))} + + + + + Glossary terms + + + {terms && + terms.map((term) => ( + + ))} + + + + + + + + + + + Owners + + + {dataset.SamlAdminGroupName} + + + + + Stewards + + + {dataset.stewards} + + + + + Auto-Approval + + + + + + + + + ); +}; + +DatasetGovernance.propTypes = { + dataset: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/DatasetsBase/components/DatasetListItem.js b/frontend/src/modules/DatasetsBase/components/DatasetListItem.js index 85726a435..23cdc5d87 100644 --- a/frontend/src/modules/DatasetsBase/components/DatasetListItem.js +++ b/frontend/src/modules/DatasetsBase/components/DatasetListItem.js @@ -1,4 +1,5 @@ import { + Avatar, Box, Button, Card, @@ -14,10 +15,22 @@ import * as FaIcons from 'react-icons/fa'; import * as FiIcons from 'react-icons/fi'; import { useNavigate } from 'react-router'; import { Link as RouterLink } from 'react-router-dom'; -import { IconAvatar, Label, StackStatus, useCardStyle } from 'design'; +import { Label, StackStatus, useCardStyle } from 'design'; export const DatasetListItem = (props) => { const { dataset } = props; + const datasetTypeLink = + dataset.datasetType === 'DatasetTypes.S3' + ? `s3-datasets` + : dataset.datasetType === 'DatasetTypes.Redshift' + ? `redshift-datasets` + : '-'; + const datasetTypeIcon = + dataset.datasetType === 'DatasetTypes.S3' + ? `/static/icons/amazon-s3.svg` + : dataset.datasetType === 'DatasetTypes.Redshift' + ? `/static/icons/aws-redshift.svg` + : '-'; const classes = useCardStyle(); const navigate = useNavigate(); return ( @@ -32,7 +45,7 @@ export const DatasetListItem = (props) => { display: 'flex' }} > - } /> + { variant="h6" onClick={() => { navigate( - dataset.datasetType === 'DatasetTypes.S3' - ? `/console/s3-datasets/${dataset.datasetUri}` + datasetTypeLink + ? `/console/${datasetTypeLink}/${dataset.datasetUri}` : '-' ); }} @@ -57,7 +70,12 @@ export const DatasetListItem = (props) => { }} > - {dataset.label} + {dataset.datasetType === 'DatasetTypes.S3' + ? `S3/Glue: ` + : dataset.datasetType === 'DatasetTypes.Redshift' + ? `Redshift: ` + : '-'} + {dataset.label} @@ -159,20 +177,22 @@ export const DatasetListItem = (props) => { py: 0.5 }} > - - - - Status - + {dataset.stack && dataset.stack.status && ( + + + + Status + + + + + + + - - - - - - + )} { diff --git a/frontend/src/modules/DatasetsBase/components/index.js b/frontend/src/modules/DatasetsBase/components/index.js index 8d69e525d..2010fb826 100644 --- a/frontend/src/modules/DatasetsBase/components/index.js +++ b/frontend/src/modules/DatasetsBase/components/index.js @@ -1,2 +1,3 @@ export * from './DatasetCreateWindow'; +export * from './DatasetGovernance'; export * from './DatasetListItem'; diff --git a/frontend/src/modules/DatasetsBase/index.js b/frontend/src/modules/DatasetsBase/index.js index cbf3f4b7f..57ad639e1 100644 --- a/frontend/src/modules/DatasetsBase/index.js +++ b/frontend/src/modules/DatasetsBase/index.js @@ -5,6 +5,9 @@ export const DatasetsBaseModule = { name: 'datasets_base', isEnvironmentModule: false, resolve_dependency: () => { - return getModuleActiveStatus(ModuleNames.S3_DATASETS); // Add other dataset types when needed + return ( + getModuleActiveStatus(ModuleNames.S3_DATASETS) || + getModuleActiveStatus(ModuleNames.REDSHIFT_DATASETS) + ); } }; diff --git a/frontend/src/modules/Environments/components/EnvironmentOwnedDatasets.js b/frontend/src/modules/Environments/components/EnvironmentOwnedDatasets.js index 5ef920184..cf03bd568 100644 --- a/frontend/src/modules/Environments/components/EnvironmentOwnedDatasets.js +++ b/frontend/src/modules/Environments/components/EnvironmentOwnedDatasets.js @@ -123,6 +123,7 @@ export const EnvironmentOwnedDatasets = ({ environment }) => { Name + Dataset type Creator Owners Status @@ -137,6 +138,13 @@ export const EnvironmentOwnedDatasets = ({ environment }) => { items.nodes.map((dataset) => ( {dataset.label} + + {dataset.datasetType === 'DatasetTypes.S3' + ? `S3/Glue Dataset` + : dataset.datasetType === 'DatasetTypes.Redshift' + ? `Redshift Dataset` + : '-'} + {dataset.owner} {dataset.SamlAdminGroupName} @@ -149,9 +157,16 @@ export const EnvironmentOwnedDatasets = ({ environment }) => { { - navigate( + let datasetTypeLink = dataset.datasetType === 'DatasetTypes.S3' - ? `/console/s3-datasets/${dataset.datasetUri}` + ? `s3-datasets` + : dataset.datasetType === + 'DatasetTypes.Redshift' + ? `redshift-datasets` + : '-'; + navigate( + datasetTypeLink + ? `/console/${datasetTypeLink}/${dataset.datasetUri}` : '-' ); }} diff --git a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js new file mode 100644 index 000000000..9dd0b28fc --- /dev/null +++ b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js @@ -0,0 +1,365 @@ +import { GroupAddOutlined } from '@mui/icons-material'; +import { LoadingButton } from '@mui/lab'; +import { + Autocomplete, + Box, + CardContent, + CircularProgress, + Dialog, + Divider, + Grid, + MenuItem, + TextField, + Typography +} from '@mui/material'; +import { Formik } from 'formik'; +import { useSnackbar } from 'notistack'; +import PropTypes from 'prop-types'; +import React from 'react'; +import * as Yup from 'yup'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient, useFetchGroups } from 'services'; +import { createRedshiftConnection } from '../services'; + +export const EnvironmentRedshiftConnectionAddForm = (props) => { + const { environment, onClose, open, reload, ...other } = props; + const { enqueueSnackbar } = useSnackbar(); + const dispatch = useDispatch(); + const client = useClient(); + + let { groupOptions, loadingGroups } = useFetchGroups(environment); + + const clusterOptions = [ + { value: 'serverless', label: 'Serverless' }, + { value: 'cluster', label: 'Provisioned Cluster' } + ]; + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + const response = await client.mutate( + createRedshiftConnection({ + connectionName: values.connectionName, + SamlGroupName: values.SamlAdminGroupName, + environmentUri: environment.environmentUri, + redshiftType: values.redshiftType, + clusterId: values.clusterId, + nameSpaceId: values.nameSpaceId, + workgroup: values.workgroup, + database: values.database, + redshiftUser: values.redshiftUser, + secretArn: values.secretArn + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Redshift connection added to environment', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + if (reload) { + reload(); + } + if (onClose) { + onClose(); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + if (!environment) { + return null; + } + + if (loadingGroups) { + return ; + } + + return ( + + + + Add a Redshift connection to environment {environment.label} + + + The Redshift connection is owned by the selected Team. It is used to + import Redshift Datasets. + + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + option)} + noOptionsText="No teams found for this environment" + onChange={(event, value) => { + if (value && value.value) { + setFieldValue('SamlAdminGroupName', value.value); + } else { + setFieldValue('SamlAdminGroupName', ''); + } + }} + renderInput={(params) => ( + + )} + /> + + + + + + + {clusterOptions.map((r) => ( + + {r.label} + + ))} + + + + + {values.redshiftType === 'serverless' && ( + + + + + + + + + )} + {values.redshiftType === 'cluster' && ( + + + + + + )} + + + + + + + + You can choose to provide a Redshift user (for Provisioned + Cluster) or a Secrets Manager secret. + + + {values.redshiftType !== 'serverless' && ( + + + + + OR + + )} + + + + + + } + color="primary" + disabled={isSubmitting} + type="submit" + variant="contained" + > + Add Connection + + + +
+ )} +
+
+
+
+ ); +}; + +EnvironmentRedshiftConnectionAddForm.propTypes = { + environment: PropTypes.object.isRequired, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + reload: PropTypes.func +}; diff --git a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js new file mode 100644 index 000000000..76c7e057a --- /dev/null +++ b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js @@ -0,0 +1,378 @@ +import { + Box, + Button, + Card, + CardHeader, + CircularProgress, + Divider, + Grid, + InputAdornment, + TextField +} from '@mui/material'; +import { DataGrid, GridActionsCellItem, GridRowModes } from '@mui/x-data-grid'; +import { + GroupAddOutlined, + SupervisedUserCircleRounded +} from '@mui/icons-material'; +import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { listEnvironmentRedshiftConnections, useClient } from 'services'; +import { + Defaults, + DeleteObjectWithFrictionModal, + RefreshTableMenu, + Scrollbar, + SearchIcon +} from 'design'; + +import { EnvironmentRedshiftConnectionAddForm } from './EnvironmentRedshiftConnectionAddForm'; +import { deleteRedshiftConnection } from '../services'; +import SaveIcon from '@mui/icons-material/Save'; +import CancelIcon from '@mui/icons-material/Close'; +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import { useSnackbar } from 'notistack'; + +export const EnvironmentRedshiftConnections = ({ environment }) => { + const client = useClient(); + const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const [loading, setLoading] = useState(true); + const [items, setItems] = useState(Defaults.pagedResponse); + const [filter, setFilter] = useState(Defaults.filter); + const [inputValue, setInputValue] = useState(''); + const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); + const [rowModesModel, setRowModesModel] = useState({}); + const [isDeleteModalOpenId, setIsDeleteModalOpen] = useState(0); + + const handleInputChange = (event) => { + setInputValue(event.target.value); + setFilter({ ...filter, term: event.target.value }); + }; + + const handleInputKeyup = (event) => { + if (event.code === 'Enter') { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }; + const handleCreateModalOpen = () => { + setIsCreateModalOpen(true); + }; + + const handleCreateModalClose = () => { + setIsCreateModalOpen(false); + }; + + const handlePageChange = async (page) => { + page += 1; //expecting 1-indexing + if (page <= items.pages && page !== items.page) { + await setFilter({ ...filter, page: page }); + } + }; + + const handleSaveClick = (id) => () => { + setRowModesModel({ ...rowModesModel, [id]: { mode: GridRowModes.View } }); + }; + + const handleCancelClick = (id) => () => { + setRowModesModel({ + ...rowModesModel, + [id]: { mode: GridRowModes.View, ignoreModifications: true } + }); + }; + + const handleRowEditStart = (params, event) => { + event.defaultMuiPrevented = true; + }; + + const handleRowEditStop = (params, event) => { + event.defaultMuiPrevented = true; + }; + + const handleDeleteModalOpen = (id) => { + setIsDeleteModalOpen(id); + }; + const handleDeleteModalClosed = (id) => { + setIsDeleteModalOpen(0); + }; + + const deleteConnection = async (connectionUri) => { + try { + const response = await client.mutate( + deleteRedshiftConnection({ + connectionUri: connectionUri + }) + ); + if (!response.errors) { + enqueueSnackbar('Redshift connection removed from environment', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + fetchItems(); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + const fetchItems = useCallback(async () => { + try { + const response = await client.query( + listEnvironmentRedshiftConnections({ + filter: { ...filter, environmentUri: environment.environmentUri } + }) + ); + if (!response.errors) { + setItems({ + ...response.data.listEnvironmentRedshiftConnections, + nodes: [ + ...response.data.listEnvironmentRedshiftConnections.nodes.map( + (item) => ({ + ...item, + id: item.connectionUri, + redshiftId: + item.redshiftType === 'serverless' + ? item.nameSpaceId + : item.clusterId, + connectionType: item.secretArn ? 'SecretArn' : 'Redshift User', + connectionDetails: item.secretArn + ? item.secretArn + : item.redshiftUser, + workgroup: item.workgroup ? item.workgroup : '-' + }) + ) + ] + }); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } finally { + setLoading(false); + } + }, [client, dispatch, filter, environment.environmentUri]); + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, filter.page, fetchItems, dispatch]); + + if (loading) { + return ; + } + + return ( + + + + } + title={ + + {' '} + Redshift Connections + + } + /> + + + + + + + + ) + }} + onChange={handleInputChange} + onKeyUp={handleInputKeyup} + placeholder="Search" + value={inputValue} + variant="outlined" + /> + + + + + {isCreateModalOpen && ( + + )} + + + + + node.connectionUri} + rows={items.nodes} + columns={[ + { field: 'id', hide: true }, + { + field: 'name', + headerName: 'Name', + flex: 0.5, + editable: true + }, + { + field: 'SamlGroupName', + headerName: 'Team', + flex: 1, + editable: false + }, + { + field: 'redshiftType', + headerName: 'Redshift Type', + flex: 1, + editable: false + }, + { + field: 'redshiftId', + headerName: 'NamespaceId/ClusterId', + flex: 1, + editable: false + }, + { + field: 'workgroup', + headerName: 'Workgroup', + flex: 1, + editable: false + }, + { + field: 'connectionType', + headerName: 'Connection Type', + flex: 1, + editable: false + }, + { + field: 'database', + headerName: 'Database', + flex: 1, + editable: false + }, + { + field: 'connectionDetails', + headerName: 'SecretArn/Redshift user', + flex: 1, + editable: false + }, + { + field: 'actions', + headerName: 'Actions', + flex: 0.5, + type: 'actions', + cellClassName: 'actions', + getActions: ({ id, ...props }) => { + const name = props.row.name; + const isInEditMode = + rowModesModel[id]?.mode === GridRowModes.Edit; + + if (isInEditMode) { + return [ + } + label="Save" + sx={{ + color: 'primary.main' + }} + onClick={handleSaveClick(id)} + />, + } + label="Cancel" + className="textPrimary" + onClick={handleCancelClick(id)} + color="inherit" + /> + ]; + } + return [ + } + label="Delete" + onClick={() => handleDeleteModalOpen(id)} + color="inherit" + />, + handleDeleteModalClosed(id)} + onClose={() => handleDeleteModalClosed(id)} + open={isDeleteModalOpenId === id} + isAWSResource={false} + deleteFunction={() => deleteConnection(id)} + /> + ]; + } + } + ]} + editMode="row" + rowModesModel={rowModesModel} + onRowModesModelChange={setRowModesModel} + onRowEditStart={handleRowEditStart} + onRowEditStop={handleRowEditStop} + experimentalFeatures={{ newEditingApi: true }} + rowCount={items.count} + page={items.page - 1} + pageSize={filter.pageSize} + paginationMode="server" + onPageChange={handlePageChange} + loading={loading} + onPageSizeChange={(pageSize) => { + setFilter({ ...filter, pageSize: pageSize }); + }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + sx={{ wordWrap: 'break-word' }} + /> + + + + + + ); +}; + +EnvironmentRedshiftConnections.propTypes = { + environment: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Environments/components/index.js b/frontend/src/modules/Environments/components/index.js index 7aecd51fa..5c7379322 100644 --- a/frontend/src/modules/Environments/components/index.js +++ b/frontend/src/modules/Environments/components/index.js @@ -1,3 +1,4 @@ +export * from './EnvironmentRedshiftConnections'; export * from './EnvironmentConsoleAccess'; export * from './EnvironmentDatasets'; export * from './EnvironmentFeatures'; diff --git a/frontend/src/modules/Environments/services/createRedshiftConnection.js b/frontend/src/modules/Environments/services/createRedshiftConnection.js new file mode 100644 index 000000000..6d37e0041 --- /dev/null +++ b/frontend/src/modules/Environments/services/createRedshiftConnection.js @@ -0,0 +1,14 @@ +import { gql } from 'apollo-boost'; + +export const createRedshiftConnection = (input) => ({ + variables: { + input + }, + mutation: gql` + mutation createRedshiftConnection($input: CreateRedshiftConnectionInput) { + createRedshiftConnection(input: $input) { + connectionUri + } + } + ` +}); diff --git a/frontend/src/modules/Environments/services/deleteRedshiftConnection.js b/frontend/src/modules/Environments/services/deleteRedshiftConnection.js new file mode 100644 index 000000000..9c1720553 --- /dev/null +++ b/frontend/src/modules/Environments/services/deleteRedshiftConnection.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteRedshiftConnection = ({ connectionUri }) => ({ + variables: { + connectionUri + }, + mutation: gql` + mutation deleteRedshiftConnection($connectionUri: String!) { + deleteRedshiftConnection(connectionUri: $connectionUri) + } + ` +}); diff --git a/frontend/src/modules/Environments/services/index.js b/frontend/src/modules/Environments/services/index.js index e52b10a61..4151f0d7c 100644 --- a/frontend/src/modules/Environments/services/index.js +++ b/frontend/src/modules/Environments/services/index.js @@ -2,6 +2,8 @@ export * from './addConsumptionRoleToEnvironment'; export * from './archiveEnvironment'; export * from './createEnvironment'; export * from './createNetwork'; +export * from './createRedshiftConnection'; +export * from './deleteRedshiftConnection'; export * from './deleteNetwork'; export * from './disableDataSubscriptions'; export * from './enableDataSubscriptions'; diff --git a/frontend/src/modules/Environments/views/EnvironmentView.js b/frontend/src/modules/Environments/views/EnvironmentView.js index 1ac3e4629..42d726c3b 100644 --- a/frontend/src/modules/Environments/views/EnvironmentView.js +++ b/frontend/src/modules/Environments/views/EnvironmentView.js @@ -38,6 +38,7 @@ import { useClient } from 'services'; import { archiveEnvironment, getEnvironment } from '../services'; import { KeyValueTagList, Stack } from 'modules/Shared'; import { + EnvironmentRedshiftConnections, EnvironmentDatasets, EnvironmentMLStudio, EnvironmentOverview, @@ -58,7 +59,15 @@ const tabs = [ label: 'Datasets', value: 'datasets', icon: , - active: isModuleEnabled(ModuleNames.S3_DATASETS) + active: isModuleEnabled( + ModuleNames.S3_DATASETS || ModuleNames.REDSHIFT_DATASETS + ) + }, + { + label: 'Connections', + value: 'connections', + icon: , + active: isModuleEnabled(ModuleNames.REDSHIFT_DATASETS) }, { label: 'ML Studio Domain', @@ -258,6 +267,9 @@ const EnvironmentView = () => { {currentTab === 'datasets' && ( )} + {currentTab === 'connections' && ( + + )} {currentTab === 'networks' && ( )} diff --git a/frontend/src/modules/Glossaries/components/GlossaryAssociations.js b/frontend/src/modules/Glossaries/components/GlossaryAssociations.js index 8db3303e6..373ee70f6 100644 --- a/frontend/src/modules/Glossaries/components/GlossaryAssociations.js +++ b/frontend/src/modules/Glossaries/components/GlossaryAssociations.js @@ -138,17 +138,25 @@ export const GlossaryAssociations = ({ glossary }) => { {/* eslint-disable-next-line no-underscore-dangle */} {item.targetType === 'Dataset' && ( - Dataset + S3/Glue Dataset )} {/* eslint-disable-next-line no-underscore-dangle */} {item.targetType === 'DatasetTable' && ( - Table + Glue Table )} {/* eslint-disable-next-line no-underscore-dangle */} {item.targetType === 'Folder' && Folder} {item.targetType === 'Dashboard' && ( Dashboard )} + {/* eslint-disable-next-line no-underscore-dangle */} + {item.targetType === 'RedshiftDataset' && ( + Redshift Dataset + )} + {/* eslint-disable-next-line no-underscore-dangle */} + {item.targetType === 'RedshiftDatasetTable' && ( + Redshift Table + )} {/* eslint-disable-next-line no-underscore-dangle */} @@ -199,6 +207,30 @@ export const GlossaryAssociations = ({ glossary }) => { {item.target.label} )} + {/* eslint-disable-next-line no-underscore-dangle */} + {item.targetType === 'RedshiftDataset' && ( + + {item.target.label} + + )} + {/* eslint-disable-next-line no-underscore-dangle */} + {item.targetType === 'RedshiftDatasetTable' && ( + + {item.target.label} + + )} {!item.approvedBySteward ? ( diff --git a/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js b/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js new file mode 100644 index 000000000..820c0dfe8 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js @@ -0,0 +1,191 @@ +import PropTypes from 'prop-types'; +import { + Box, + Button, + CircularProgress, + Dialog, + Divider, + Typography +} from '@mui/material'; +import PostAddIcon from '@mui/icons-material/PostAdd'; +import { DataGrid, GridRowParams } from '@mui/x-data-grid'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { useSnackbar } from 'notistack'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { Defaults, Scrollbar } from 'design'; +import { useClient } from 'services'; +import { + addRedshiftDatasetTables, + listRedshiftSchemaDatasetTables +} from '../services'; + +export const AddTablesModal = (props) => { + const { onClose, open, dataset } = props; + const client = useClient(); + const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const [loading, setLoading] = useState(false); + const [items, setItems] = useState(null); + const [selectedTables, setSelectedTables] = useState(null); + const [filter, setFilter] = useState(Defaults.filter); + + const fetchItems = useCallback(async () => { + setLoading(true); + try { + const response = await client.query( + listRedshiftSchemaDatasetTables({ + datasetUri: dataset.datasetUri + }) + ); + if (!response.errors) { + setItems(response.data.listRedshiftSchemaDatasetTables); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + setLoading(false); + }, [client, dispatch, dataset]); + + const addTables = async (selected_tables) => { + const response = await client.mutate( + addRedshiftDatasetTables({ + datasetUri: dataset.datasetUri, + tables: selected_tables + }) + ); + if (!response.errors) { + enqueueSnackbar('Tables added', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + fetchItems(); + setSelectedTables(null); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + + useEffect(() => { + if (client && dataset) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, fetchItems, dispatch, dataset]); + + const handlePageChange = async (page) => { + page += 1; //expecting 1-indexing + if (page <= items.pages && page !== items.page) { + await setFilter({ ...filter, page: page }); + } + }; + + if (loading) { + return ( + + + + Loading database tables + + + + + + + ); + } + if (!dataset || !items) { + return null; + } + return ( + + + + Add tables to dataset: {dataset.label} + + + + + + params.row.alreadyAdded === 'false' + } + getRowId={(node) => node.name} + rows={items} + columns={[ + { field: 'id', hide: true }, + { + field: 'name', + headerName: 'Redshift tables', + flex: 0.5, + editable: false + }, + { + field: 'alreadyAdded', + headerName: 'Already added', + flex: 0.2, + editable: false + } + ]} + pageSize={filter.pageSize} + rowsPerPageOptions={[filter.pageSize]} + onPageChange={handlePageChange} + loading={loading} + onPageSizeChange={(pageSize) => { + setFilter({ + ...filter, + pageSize: pageSize + }); + }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + onSelectionModelChange={(newSelectionModel) => { + setSelectedTables(newSelectionModel); + }} + sx={{ + wordWrap: 'break-word', + '& .MuiDataGrid-row': { + borderBottom: '1px solid rgba(145, 158, 171, 0.24)' + }, + '& .MuiDataGrid-columnHeaders': { + borderBottom: 0.5 + } + }} + /> + + + + + + ); +}; +AddTablesModal.propTypes = { + onApply: PropTypes.func, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + dataset: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetAWSInfo.js b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetAWSInfo.js new file mode 100644 index 000000000..7906663b7 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetAWSInfo.js @@ -0,0 +1,82 @@ +import PropTypes from 'prop-types'; +import { + Card, + CardContent, + CardHeader, + Divider, + Typography +} from '@mui/material'; + +import React from 'react'; + +export const RedshiftDatasetAWSInfo = (props) => { + const { dataset } = props; + + return ( + + + + + + Account + + + {dataset.AwsAccountId} + + + + + Redshift Connection + + + {dataset.connection.label} + + + + + Redshift type + + + {dataset.connection.redshiftType === 'cluster' + ? 'Provisioned cluster' + : dataset.connection.redshiftType === 'serverless' + ? 'Redshift Serverless' + : 'Unknown'} + + + {dataset.connection.redshiftType === 'serverless' ? ( +
+ + + Namespace Id + + + {dataset.connection.nameSpaceId} + + + + + Workgroup Id + + + {dataset.connection.workgroup} + + +
+ ) : ( + + + Cluster Id + + + {dataset.connection.clusterId} + + + )} +
+ ); +}; + +RedshiftDatasetAWSInfo.propTypes = { + dataset: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetOverview.js b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetOverview.js new file mode 100644 index 000000000..ca0f8c992 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetOverview.js @@ -0,0 +1,50 @@ +import { Box, Grid } from '@mui/material'; +import PropTypes from 'prop-types'; +import { ObjectBrief, ObjectMetadata } from 'design'; +import { DatasetGovernance } from 'modules/DatasetsBase/components/DatasetGovernance'; +import { RedshiftDatasetAWSInfo } from './RedshiftDatasetAWSInfo'; + +export const RedshiftDatasetOverview = (props) => { + const { dataset, isAdmin, ...other } = props; + + return ( + + + + + + + + + + + + + + + + + + + + + ); +}; + +RedshiftDatasetOverview.propTypes = { + dataset: PropTypes.object.isRequired, + isAdmin: PropTypes.bool.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetTables.js b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetTables.js new file mode 100644 index 000000000..371f247e8 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/RedshiftDatasetTables.js @@ -0,0 +1,346 @@ +import { DeleteOutlined, Warning } from '@mui/icons-material'; +import PostAddIcon from '@mui/icons-material/PostAdd'; +import OpenInNewIcon from '@mui/icons-material/OpenInNew'; +import { + Box, + Button, + Card, + CardContent, + CardHeader, + Divider, + Grid, + IconButton, + InputAdornment, + Link, + Table, + TableBody, + TableCell, + TableHead, + TableRow, + TextField, + Typography +} from '@mui/material'; +import CircularProgress from '@mui/material/CircularProgress'; +import { useSnackbar } from 'notistack'; +import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; +import { BsTable } from 'react-icons/bs'; +import { useNavigate } from 'react-router'; +import { Link as RouterLink } from 'react-router-dom'; +import { + ArrowRightIcon, + Defaults, + DeleteObjectModal, + Pager, + RefreshTableMenu, + Scrollbar, + SearchIcon +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient } from 'services'; + +import { + deleteRedshiftDatasetTable, + listRedshiftDatasetTables +} from '../services'; + +import { AddTablesModal } from './AddTablesModal'; +import { TableSchemaModal } from './TableSchemaModal'; + +export const RedshiftDatasetTables = (props) => { + const { dataset, isAdmin } = props; + const client = useClient(); + const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const navigate = useNavigate(); + const [items, setItems] = useState(Defaults.pagedResponse); + const [filter, setFilter] = useState(Defaults.filter); + const [loading, setLoading] = useState(null); + const [inputValue, setInputValue] = useState(''); + const [isDeleteObjectModalOpen, setIsDeleteObjectModalOpen] = useState(false); + const [isTableSchemaModalOpen, setIsTableSchemaModalOpen] = useState(false); + const [tableToDelete, setTableToDelete] = useState(null); + const [tableToSee, setTableToSee] = useState(null); + const [isAddTablesModalOpen, setIsAddTablesModalOpen] = useState(false); + + const handleDeleteObjectModalOpen = (table) => { + setTableToDelete(table); + setIsDeleteObjectModalOpen(true); + }; + const handleDeleteObjectModalClose = () => { + setTableToDelete(null); + setIsDeleteObjectModalOpen(false); + }; + + const handleAddTablesModalOpen = () => { + setIsAddTablesModalOpen(true); + }; + const handleAddTablesModalClose = () => { + setIsAddTablesModalOpen(false); + fetchItems().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + }; + + const handleTableSchemaModalOpen = () => { + setIsTableSchemaModalOpen(true); + }; + const handleTableSchemaModalClose = () => { + setIsTableSchemaModalOpen(false); + }; + + const fetchItems = useCallback(async () => { + setLoading(true); + const response = await client.query( + listRedshiftDatasetTables({ + datasetUri: dataset.datasetUri, + filter: { ...filter } + }) + ); + if (!response.errors) { + setItems({ ...response.data.listRedshiftDatasetTables }); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, [dispatch, client, dataset, filter]); + + const deleteTable = async () => { + const response = await client.mutate( + deleteRedshiftDatasetTable({ + rsTableUri: tableToDelete.rsTableUri + }) + ); + if (!response.errors) { + handleDeleteObjectModalClose(); + enqueueSnackbar('Table deleted', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, filter.page, dispatch, fetchItems]); + + const handleInputChange = (event) => { + setInputValue(event.target.value); + setFilter({ ...filter, term: event.target.value }); + }; + + const handleInputKeyup = (event) => { + if (event.code === 'Enter') { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }; + + const handlePageChange = async (event, value) => { + if (value <= items.pages && value !== items.page) { + await setFilter({ ...filter, page: value }); + } + }; + + return ( + <> + + + + + + + Database + + + {dataset.connection.database} + + + + + Schema + + + {dataset.schema} + + + + + + + + } + title={ + + + Tables + + } + /> + + + + + + + ) + }} + onChange={handleInputChange} + onKeyUp={handleInputKeyup} + placeholder="Search" + value={inputValue} + variant="outlined" + /> + + + + {isAddTablesModalOpen && ( + + )} + + + + + + + + Name + Description + Actions + + + {loading ? ( + + ) : ( + + {items.nodes.length > 0 ? ( + items.nodes.map((table) => ( + + + + {table.name} + + + {table.description} + + + {isAdmin && ( + { + setTableToDelete(table); + handleDeleteObjectModalOpen(table); + }} + > + + + )} + { + navigate( + `/console/redshift-datasets/table/${table.rsTableUri}` + ); + }} + > + + + + + )) + ) : ( + + No tables found + + )} + + )} +
+ {!loading && items.nodes.length > 0 && ( + + )} +
+
+
+ {isAdmin && tableToDelete && ( + + + + Redshift Table will be deleted from data.all + catalog, but will still be available in Amazon Redshift. + + + + } + /> + )} + + + ); +}; + +RedshiftDatasetTables.propTypes = { + dataset: PropTypes.object.isRequired, + isAdmin: PropTypes.bool.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/TableColumns.js b/frontend/src/modules/Redshift_Datasets/components/TableColumns.js new file mode 100644 index 000000000..de8d89d8c --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/TableColumns.js @@ -0,0 +1,138 @@ +import { Box, Card, CircularProgress } from '@mui/material'; +import { DataGrid } from '@mui/x-data-grid'; +import * as PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Defaults, Scrollbar } from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient } from 'services'; +import { getRedshiftDatasetTableColumns } from '../services'; + +export const TableColumns = (props) => { + const { table } = props; + const dispatch = useDispatch(); + const client = useClient(); + const [loading, setLoading] = useState(true); + const [items, setItems] = useState(null); + const [filter, setFilter] = useState(Defaults.filter); + + const fetchItems = useCallback(async () => { + setLoading(true); + const response = await client.query( + getRedshiftDatasetTableColumns({ + rsTableUri: table.rsTableUri, + filter: filter + }) + ); + if ( + !response.errors && + response.data.getRedshiftDatasetTableColumns !== null + ) { + setItems(response.data.getRedshiftDatasetTableColumns); + } else { + const error = response.errors + ? response.errors[0].message + : 'Redshift table not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, table]); + + useEffect(() => { + if (client && table) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, fetchItems, dispatch, table]); + + const handlePageChange = async (page) => { + page += 1; //expecting 1-indexing + if (page <= items.pages && page !== items.page) { + await setFilter({ ...filter, page: page }); + } + }; + + if (loading) { + return ; + } + + if (!table || !items) { + return null; + } + + return ( + + + + + node.name} + rows={items.nodes} + columns={[ + { field: 'id', hide: true }, + { + field: 'name', + headerName: 'Name', + flex: 1.5, + editable: false + }, + { + field: 'typeName', + headerName: 'Type', + flex: 1, + editable: false + }, + { + field: 'length', + headerName: 'Length', + flex: 1, + editable: false + }, + { + field: 'nullable', + headerName: 'Nullable', + flex: 1, + editable: false + }, + { + field: 'columnDefault', + headerName: 'Default value', + flex: 1, + editable: false + } + ]} + rowCount={items.count} + page={items.page - 1} + pageSize={filter.pageSize} + paginationMode="server" + onPageChange={handlePageChange} + loading={loading} + onPageSizeChange={(pageSize) => { + setFilter({ ...filter, pageSize: pageSize }); + }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + sx={{ + wordWrap: 'break-word', //TODO: create a generic styled datagrid to be used across features + '& .MuiDataGrid-row': { + borderBottom: '1px solid rgba(145, 158, 171, 0.24)' + }, + '& .MuiDataGrid-columnHeaders': { + borderBottom: 0.5 + }, + '&.MuiDataGrid-root--densityStandard .MuiDataGrid-cell': { + py: '15px' + } + }} + /> + + + + + ); +}; + +TableColumns.propTypes = { + table: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/TableOverview.js b/frontend/src/modules/Redshift_Datasets/components/TableOverview.js new file mode 100644 index 000000000..df17bb57d --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/TableOverview.js @@ -0,0 +1,43 @@ +import { Box, Grid } from '@mui/material'; +import PropTypes from 'prop-types'; +import { ObjectBrief, ObjectMetadata } from 'design'; + +export const TableOverview = (props) => { + const { table, ...other } = props; + + return ( + + + + 0 ? table.tags : ['-']} + terms={ + table.terms && table.terms.nodes.length > 0 + ? table.terms.nodes + : [{ label: '-', nodeUri: '-' }] + } + /> + + + + + + + ); +}; + +TableOverview.propTypes = { + table: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/TableSchemaModal.js b/frontend/src/modules/Redshift_Datasets/components/TableSchemaModal.js new file mode 100644 index 000000000..ab475b7a7 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/TableSchemaModal.js @@ -0,0 +1,162 @@ +import PropTypes from 'prop-types'; +import { + Box, + CircularProgress, + Dialog, + Divider, + Typography +} from '@mui/material'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { getRedshiftDatasetTableColumns } from '../services'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient } from 'services'; +import { DataGrid } from '@mui/x-data-grid'; +import { Defaults, Scrollbar } from 'design'; + +export const TableSchemaModal = (props) => { + const { onClose, open, table } = props; + const client = useClient(); + const dispatch = useDispatch(); + const [loading, setLoading] = useState(false); + const [items, setItems] = useState(null); + const [filter, setFilter] = useState(Defaults.filter); + + const fetchItems = useCallback(async () => { + setLoading(true); + const response = await client.query( + getRedshiftDatasetTableColumns({ + rsTableUri: table.rsTableUri, + filter: filter + }) + ); + if ( + !response.errors && + response.data.getRedshiftDatasetTableColumns !== null + ) { + setItems(response.data.getRedshiftDatasetTableColumns); + } else { + const error = response.errors + ? response.errors[0].message + : 'Redshift table not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, table]); + + useEffect(() => { + if (client && table) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, fetchItems, dispatch, table]); + + const handlePageChange = async (page) => { + page += 1; //expecting 1-indexing + if (page <= items.pages && page !== items.page) { + await setFilter({ ...filter, page: page }); + } + }; + + if (loading) { + return ( + + + + Loading table schema + + + + + + + ); + } + if (!table || !items) { + return null; + } + return ( + + + + Redshift table: {table.label} + + + + + node.name} + rows={items.nodes} + columns={[ + { field: 'id', hide: true }, + { + field: 'name', + headerName: 'Name', + flex: 1.5, + editable: false + }, + { + field: 'typeName', + headerName: 'Type', + flex: 1, + editable: false + }, + { + field: 'length', + headerName: 'Length', + flex: 1, + editable: false + }, + { + field: 'nullable', + headerName: 'Nullable', + flex: 1, + editable: false + }, + { + field: 'columnDefault', + headerName: 'Default value', + flex: 1, + editable: false + } + ]} + rowCount={items.count} + page={items.page - 1} + pageSize={filter.pageSize} + paginationMode="server" + onPageChange={handlePageChange} + loading={loading} + onPageSizeChange={(pageSize) => { + setFilter({ ...filter, pageSize: pageSize }); + }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + sx={{ + wordWrap: 'break-word', //TODO: create a generic styled datagrid to be used across features + '& .MuiDataGrid-row': { + borderBottom: '1px solid rgba(145, 158, 171, 0.24)' + }, + '& .MuiDataGrid-columnHeaders': { + borderBottom: 0.5 + } + }} + /> + + + + + ); +}; +TableSchemaModal.propTypes = { + onApply: PropTypes.func, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + table: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Redshift_Datasets/components/index.js b/frontend/src/modules/Redshift_Datasets/components/index.js new file mode 100644 index 000000000..c22707a58 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/components/index.js @@ -0,0 +1,5 @@ +export * from './RedshiftDatasetAWSInfo'; +export * from './RedshiftDatasetOverview'; +export * from './RedshiftDatasetTables'; +export * from './TableColumns'; +export * from './TableOverview'; diff --git a/frontend/src/modules/Redshift_Datasets/index.js b/frontend/src/modules/Redshift_Datasets/index.js new file mode 100644 index 000000000..a24217572 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/index.js @@ -0,0 +1,5 @@ +export const Redshift_DatasetsModule = { + moduleDefinition: true, + name: 'redshift_datasets', + isEnvironmentModule: false +}; diff --git a/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js b/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js new file mode 100644 index 000000000..ec001085f --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js @@ -0,0 +1,16 @@ +import { gql } from 'apollo-boost'; + +export const addRedshiftDatasetTables = ({ datasetUri, tables }) => ({ + variables: { + datasetUri, + tables + }, + mutation: gql` + mutation addRedshiftDatasetTables( + $datasetUri: String! + $tables: [String]! + ) { + addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDataset.js b/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDataset.js new file mode 100644 index 000000000..8d5abd517 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDataset.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteRedshiftDataset = (datasetUri) => ({ + variables: { + datasetUri + }, + mutation: gql` + mutation deleteRedshiftDataset($datasetUri: String!) { + deleteRedshiftDataset(datasetUri: $datasetUri) + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDatasetTable.js b/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDatasetTable.js new file mode 100644 index 000000000..f5658fb2a --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/deleteRedshiftDatasetTable.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteRedshiftDatasetTable = ({ rsTableUri }) => ({ + variables: { + rsTableUri + }, + mutation: gql` + mutation deleteRedshiftDatasetTable($rsTableUri: String!) { + deleteRedshiftDatasetTable(rsTableUri: $rsTableUri) + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/getRedshiftDataset.js b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDataset.js new file mode 100644 index 000000000..64fc2ae3a --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDataset.js @@ -0,0 +1,66 @@ +import { gql } from 'apollo-boost'; + +export const getRedshiftDataset = (datasetUri) => ({ + variables: { + datasetUri + }, + query: gql` + query getRedshiftDataset($datasetUri: String!) { + getRedshiftDataset(datasetUri: $datasetUri) { + datasetUri + owner + description + label + name + region + created + imported + userRoleForDataset + SamlAdminGroupName + AwsAccountId + tags + stewards + topics + confidentiality + autoApprovalEnabled + organization { + organizationUri + label + } + terms { + count + nodes { + __typename + ... on Term { + nodeUri + path + label + } + } + } + environment { + environmentUri + label + region + organization { + organizationUri + label + } + } + upvotes + connection { + connectionUri + label + redshiftType + clusterId + nameSpaceId + workgroup + redshiftUser + secretArn + database + } + schema + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTable.js b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTable.js new file mode 100644 index 000000000..0a0fbe5d9 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTable.js @@ -0,0 +1,45 @@ +import { gql } from 'apollo-boost'; + +export const getRedshiftDatasetTable = ({ rsTableUri }) => ({ + variables: { + rsTableUri + }, + query: gql` + query getRedshiftDatasetTable($rsTableUri: String!) { + getRedshiftDatasetTable(rsTableUri: $rsTableUri) { + rsTableUri + name + label + created + description + tags + terms { + count + nodes { + __typename + ... on Term { + nodeUri + path + label + } + } + } + dataset { + owner + SamlAdminGroupName + datasetUri + name + label + userRoleForDataset + organization { + label + } + environment { + label + } + region + } + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTableColumns.js b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTableColumns.js new file mode 100644 index 000000000..7a3f0f8f6 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/getRedshiftDatasetTableColumns.js @@ -0,0 +1,30 @@ +import { gql } from 'apollo-boost'; + +export const getRedshiftDatasetTableColumns = ({ rsTableUri, filter }) => ({ + variables: { + rsTableUri, + filter + }, + query: gql` + query getRedshiftDatasetTableColumns( + $rsTableUri: String! + $filter: RedshiftDatasetTableFilter + ) { + getRedshiftDatasetTableColumns(rsTableUri: $rsTableUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + columnDefault + label + length + name + nullable + typeName + } + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js b/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js new file mode 100644 index 000000000..4f476fd19 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js @@ -0,0 +1,16 @@ +import { gql } from 'apollo-boost'; + +export const importRedshiftDataset = (input) => ({ + variables: { + input + }, + mutation: gql` + mutation importRedshiftDataset($input: ImportRedshiftDatasetInput) { + importRedshiftDataset(input: $input) { + datasetUri + label + userRoleForDataset + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/index.js b/frontend/src/modules/Redshift_Datasets/services/index.js new file mode 100644 index 000000000..e21f732b0 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/index.js @@ -0,0 +1,13 @@ +export * from './addRedshiftDatasetTables'; +export * from './deleteRedshiftDataset'; +export * from './deleteRedshiftDatasetTable'; +export * from './getRedshiftDataset'; +export * from './getRedshiftDatasetTable'; +export * from './getRedshiftDatasetTableColumns'; +export * from './importRedshiftDataset'; +export * from './listRedshiftDatasetTables'; +export * from './listRedshiftConnectionSchemas'; +export * from './listRedshiftSchemaDatasetTables'; +export * from './listRedshiftSchemaTables'; +export * from './updateRedshiftDataset'; +export * from './updateRedshiftDatasetTable'; diff --git a/frontend/src/modules/Redshift_Datasets/services/listRedshiftConnectionSchemas.js b/frontend/src/modules/Redshift_Datasets/services/listRedshiftConnectionSchemas.js new file mode 100644 index 000000000..922bd66b6 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/listRedshiftConnectionSchemas.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const listRedshiftConnectionSchemas = ({ connectionUri }) => ({ + variables: { + connectionUri + }, + query: gql` + query listRedshiftConnectionSchemas($connectionUri: String!) { + listRedshiftConnectionSchemas(connectionUri: $connectionUri) + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/listRedshiftDatasetTables.js b/frontend/src/modules/Redshift_Datasets/services/listRedshiftDatasetTables.js new file mode 100644 index 000000000..5e85826f5 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/listRedshiftDatasetTables.js @@ -0,0 +1,30 @@ +import { gql } from 'apollo-boost'; + +export const listRedshiftDatasetTables = ({ datasetUri, filter }) => ({ + variables: { + datasetUri, + filter + }, + query: gql` + query listRedshiftDatasetTables( + $datasetUri: String! + $filter: RedshiftDatasetTableFilter + ) { + listRedshiftDatasetTables(datasetUri: $datasetUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + rsTableUri + datasetUri + name + label + created + description + } + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaDatasetTables.js b/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaDatasetTables.js new file mode 100644 index 000000000..7b063a08c --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaDatasetTables.js @@ -0,0 +1,16 @@ +import { gql } from 'apollo-boost'; + +export const listRedshiftSchemaDatasetTables = ({ datasetUri }) => ({ + variables: { + datasetUri + }, + query: gql` + query listRedshiftSchemaDatasetTables($datasetUri: String!) { + listRedshiftSchemaDatasetTables(datasetUri: $datasetUri) { + name + type + alreadyAdded + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaTables.js b/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaTables.js new file mode 100644 index 000000000..55c2b827d --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/listRedshiftSchemaTables.js @@ -0,0 +1,16 @@ +import { gql } from 'apollo-boost'; + +export const listRedshiftSchemaTables = ({ connectionUri, schema }) => ({ + variables: { + connectionUri, + schema + }, + query: gql` + query listRedshiftSchemaTables($connectionUri: String!, $schema: String!) { + listRedshiftSchemaTables(connectionUri: $connectionUri, schema: $schema) { + name + type + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDataset.js b/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDataset.js new file mode 100644 index 000000000..926b8e0e4 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDataset.js @@ -0,0 +1,20 @@ +import { gql } from 'apollo-boost'; + +export const updateRedshiftDataset = ({ datasetUri, input }) => ({ + variables: { + datasetUri, + input + }, + mutation: gql` + mutation updateRedshiftDataset( + $datasetUri: String! + $input: ModifyRedshiftDatasetInput + ) { + updateRedshiftDataset(datasetUri: $datasetUri, input: $input) { + datasetUri + label + userRoleForDataset + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDatasetTable.js b/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDatasetTable.js new file mode 100644 index 000000000..7e5fa528b --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/services/updateRedshiftDatasetTable.js @@ -0,0 +1,19 @@ +import { gql } from 'apollo-boost'; + +export const updateRedshiftDatasetTable = ({ rsTableUri, input }) => ({ + variables: { + rsTableUri, + input + }, + mutation: gql` + mutation updateRedshiftDatasetTable( + $rsTableUri: String! + $input: ModifyRedshiftDatasetInput + ) { + updateRedshiftDatasetTable(rsTableUri: $rsTableUri, input: $input) { + rsTableUri + label + } + } + ` +}); diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetEditForm.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetEditForm.js new file mode 100644 index 000000000..e4ad5dad1 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetEditForm.js @@ -0,0 +1,606 @@ +import { LoadingButton } from '@mui/lab'; +import { + Autocomplete, + Box, + Breadcrumbs, + Button, + Card, + CardContent, + CardHeader, + Chip, + CircularProgress, + Container, + FormHelperText, + Grid, + Link, + MenuItem, + TextField, + Typography +} from '@mui/material'; +import { Formik } from 'formik'; +import { useSnackbar } from 'notistack'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { Link as RouterLink, useNavigate, useParams } from 'react-router-dom'; +import * as Yup from 'yup'; +import { + ArrowLeftIcon, + ChevronRightIcon, + ChipInput, + Defaults, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { listEnvironmentGroups, searchGlossary, useClient } from 'services'; +import { getRedshiftDataset, updateRedshiftDataset } from '../services'; +import { ConfidentialityList, Topics } from '../../constants'; +import config from '../../../generated/config.json'; +import { isFeatureEnabled } from 'utils'; + +const RSDatasetEditForm = (props) => { + const dispatch = useDispatch(); + const navigate = useNavigate(); + const params = useParams(); + const { enqueueSnackbar } = useSnackbar(); + const client = useClient(); + const { settings } = useSettings(); + const [loading, setLoading] = useState(true); + const [dataset, setDataset] = useState(null); + const [groupOptions, setGroupOptions] = useState([]); + const [selectableTerms, setSelectableTerms] = useState([]); + const [tableTerms, setTableTerms] = useState([]); + const [confidentialityOptions] = useState( + config.modules.datasets_base.features.confidentiality_dropdown === true && + config.modules.datasets_base.features.custom_confidentiality_mapping + ? Object.keys( + config.modules.datasets_base.features.custom_confidentiality_mapping + ) + : ConfidentialityList + ); + + const topicsData = Topics.map((t) => ({ label: t, value: t })); + + const fetchGroups = useCallback( + async (environmentUri) => { + try { + const response = await client.query( + listEnvironmentGroups({ + filter: Defaults.selectListFilter, + environmentUri + }) + ); + if (!response.errors) { + setGroupOptions( + response.data.listEnvironmentGroups.nodes.map((g) => ({ + value: g.groupUri, + label: g.groupUri + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }, + [client, dispatch] + ); + + const fetchItem = useCallback(async () => { + setLoading(true); + const response = await client.query(getRedshiftDataset(params.uri)); + if (!response.errors && response.data.getRedshiftDataset !== null) { + setDataset(response.data.getRedshiftDataset); + fetchGroups( + response.data.getRedshiftDataset.environment.environmentUri + ).catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + let fetchedTerms = []; + if ( + response.data.getRedshiftDataset.terms && + response.data.getRedshiftDataset.terms.nodes.length > 0 + ) { + fetchedTerms = response.data.getRedshiftDataset.terms.nodes.map( + (node) => ({ + label: node.label, + value: node.nodeUri, + nodeUri: node.nodeUri, + disabled: node.__typename !== 'Term' /*eslint-disable-line*/, + nodePath: node.path, + nodeType: node.__typename /*eslint-disable-line*/ + }) + ); + } + setTableTerms(fetchedTerms); + client.query(searchGlossary(Defaults.selectListFilter)).then((result) => { + if ( + result.data.searchGlossary && + result.data.searchGlossary.nodes.length > 0 + ) { + const selectables = result.data.searchGlossary.nodes.map((node) => ({ + label: node.label, + value: node.nodeUri, + nodeUri: node.nodeUri, + disabled: node.__typename !== 'Term' /* eslint-disable-line*/, + nodePath: node.path, + nodeType: node.__typename /* eslint-disable-line*/ + })); + setSelectableTerms(selectables); + } + }); + } else { + const error = response.errors + ? response.errors[0].message + : 'Dataset not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, params.uri, fetchGroups]); + + useEffect(() => { + if (client) { + fetchItem().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + } + }, [client, dispatch, fetchItem]); + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + const response = await client.mutate( + updateRedshiftDataset({ + datasetUri: dataset.datasetUri, + input: { + label: values.label, + description: values.description, + tags: values.tags, + stewards: values.stewards, + topics: values.topics ? values.topics.map((t) => t.value) : [], + terms: values.terms.nodes + ? values.terms.nodes.map((t) => t.nodeUri) + : values.terms.map((t) => t.nodeUri), + confidentiality: values.confidentiality, + autoApprovalEnabled: values.autoApprovalEnabled + } + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Dataset updated', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + navigate( + `/console/redshift-datasets/${response.data.updateRedshiftDataset.datasetUri}` + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + if (loading || !(dataset && dataset.environment)) { + return ; + } + + return ( + <> + + Dataset: Dataset Update | data.all + + + + + + + Edit dataset {dataset.label} + + } + sx={{ mt: 1 }} + > + + Contribute + + + Datasets + + + {dataset.label} + + + Edit + + + + + + + + + + + ({ label: s, value: s })), + tags: dataset.tags, + terms: dataset.terms || [], + stewards: dataset.stewards, + confidentiality: dataset.confidentiality, + autoApprovalEnabled: dataset.autoApprovalEnabled + }} + validationSchema={Yup.object().shape({ + label: Yup.string() + .max(255) + .required('*Dataset name is required'), + description: Yup.string().max(5000), + topics: isFeatureEnabled('datasets_base', 'topics_dropdown') + ? Yup.array().min(1).required('*Topics are required') + : Yup.array(), + tags: Yup.array().min(1).required('*Tags are required'), + confidentiality: isFeatureEnabled( + 'datasets_base', + 'confidentiality_dropdown' + ) + ? Yup.string() + .max(255) + .required('*Confidentiality is required') + : Yup.string(), + autoApprovalEnabled: Yup.boolean().required( + '*AutoApproval property is required' + ) + })} + onSubmit={async ( + values, + { setErrors, setStatus, setSubmitting } + ) => { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + + + + + {touched.description && errors.description && ( + + + {errors.description} + + + )} + + + + + {isFeatureEnabled( + 'datasets_base', + 'confidentiality_dropdown' + ) && ( + + + {confidentialityOptions.map((c) => ( + + {c} + + ))} + + + )} + {isFeatureEnabled( + 'datasets_base', + 'topics_dropdown' + ) && ( + + + option.value === value.value + } + getOptionLabel={(opt) => opt.label} + onChange={(event, value) => { + setFieldValue('topics', value); + }} + renderTags={(tagValue, getTagProps) => + tagValue.map((option, index) => ( + + )) + } + renderInput={(p) => ( + + )} + /> + + )} + + {dataset && ( + ({ + label: node.label, + nodeUri: node.nodeUri + }))} + getOptionLabel={(opt) => opt.label} + getOptionDisabled={(opt) => opt.disabled} + getOptionSelected={(option, value) => + option.nodeUri === value.nodeUri + } + onChange={(event, value) => { + setFieldValue('terms', value); + }} + renderTags={(tagValue, getTagProps) => + tagValue.map((option, index) => ( + + )) + } + renderInput={(p) => ( + + )} + /> + )} + + + + { + setFieldValue('tags', [...chip]); + }} + /> + + + + {config.modules.datasets_base.features + .auto_approval_for_confidentiality_level[ + values.confidentiality + ] === true && ( + + + Enabled + + + Disabled + + + )} + + + + + + + + + + + + + + + + + + + + + + + option.value)} + onChange={(event, value) => { + setFieldValue('stewards', value); + }} + renderInput={(renderParams) => ( + + )} + /> + + + + + Save + + + + +
+ )} +
+
+
+
+ + ); +}; + +export default RSDatasetEditForm; diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js new file mode 100644 index 000000000..f1bfc0f04 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js @@ -0,0 +1,830 @@ +import { LoadingButton } from '@mui/lab'; +import { + Autocomplete, + Box, + Breadcrumbs, + Button, + Card, + CardContent, + CardHeader, + Chip, + CircularProgress, + Container, + FormHelperText, + Grid, + Link, + MenuItem, + TextField, + Typography +} from '@mui/material'; +import LinearProgress from '@mui/material/LinearProgress'; +import { Formik } from 'formik'; +import { useSnackbar } from 'notistack'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { Link as RouterLink, useNavigate } from 'react-router-dom'; +import * as Yup from 'yup'; +import { + ArrowLeftIcon, + ChevronRightIcon, + ChipInput, + Defaults, + Scrollbar, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { + listEnvironmentGroups, + listValidEnvironments, + listEnvironmentRedshiftConnections, + useClient +} from 'services'; +import { + importRedshiftDataset, + listRedshiftConnectionSchemas, + listRedshiftSchemaTables +} from '../services'; +import { Topics, ConfidentialityList } from '../../constants'; +import config from '../../../generated/config.json'; +import { isFeatureEnabled } from 'utils'; +import { DataGrid } from '@mui/x-data-grid'; + +const RSDatasetImportForm = (props) => { + const dispatch = useDispatch(); + const navigate = useNavigate(); + const { enqueueSnackbar } = useSnackbar(); + const client = useClient(); + const { settings } = useSettings(); + const [loading, setLoading] = useState(true); + const [loadingSchemas, setLoadingSchemas] = useState(false); + const [loadingTables, setLoadingTables] = useState(false); + const [groupOptions, setGroupOptions] = useState([]); + const [environmentOptions, setEnvironmentOptions] = useState([]); + const [connectionOptions, setConnectionOptions] = useState([]); + const [schemaOptions, setSchemaOptions] = useState([]); + const [tableOptions, setTableOptions] = useState(null); + const [filter, setFilter] = useState(Defaults.filter); + const [confidentialityOptions] = useState( + config.modules.datasets_base.features.confidentiality_dropdown === true && + config.modules.datasets_base.features.custom_confidentiality_mapping + ? Object.keys( + config.modules.datasets_base.features.custom_confidentiality_mapping + ) + : ConfidentialityList + ); + + const topicsData = Topics.map((t) => ({ label: t, value: t })); + + const fetchEnvironments = useCallback(async () => { + setLoading(true); + const response = await client.query( + listValidEnvironments({ + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setEnvironmentOptions( + response.data.listValidEnvironments.nodes.map((e) => ({ + ...e, + value: e.environmentUri, + label: e.label + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, [client, dispatch]); + const fetchGroups = async (environmentUri) => { + try { + const response = await client.query( + listEnvironmentGroups({ + filter: Defaults.selectListFilter, + environmentUri + }) + ); + if (!response.errors) { + setGroupOptions( + response.data.listEnvironmentGroups.nodes.map((g) => ({ + value: g.groupUri, + label: g.groupUri + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + const fetchRedshiftConnections = async (environmentUri, groupUri) => { + try { + const response = await client.query( + listEnvironmentRedshiftConnections({ + filter: { + ...Defaults.selectListFilter, + environmentUri: environmentUri, + groupUri: groupUri + } + }) + ); + if (!response.errors) { + setConnectionOptions( + response.data.listEnvironmentRedshiftConnections.nodes.map((g) => ({ + value: g.connectionUri, + label: `${g.name} [DATABASE: ${g.database}]` + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + const fetchSchemas = async (connectionUri) => { + setLoadingSchemas(true); + try { + const response = await client.query( + listRedshiftConnectionSchemas({ + connectionUri + }) + ); + if (!response.errors) { + setSchemaOptions(response.data.listRedshiftConnectionSchemas); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + setLoadingSchemas(false); + }; + + const fetchTables = async (connectionUri, schema) => { + setLoadingTables(true); + try { + const response = await client.query( + listRedshiftSchemaTables({ + connectionUri, + schema + }) + ); + if (!response.errors) { + setTableOptions(response.data.listRedshiftSchemaTables); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + setLoadingTables(false); + }; + + useEffect(() => { + if (client) { + fetchEnvironments().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch, fetchEnvironments]); + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + const response = await client.mutate( + importRedshiftDataset({ + organizationUri: values.environment.organization.organizationUri, + environmentUri: values.environment.environmentUri, + owner: '', + label: values.label, + SamlAdminGroupName: values.SamlAdminGroupName, + tags: values.tags, + description: values.description, + topics: values.topics ? values.topics.map((t) => t.value) : [], + stewards: values.stewards, + confidentiality: values.confidentiality, + autoApprovalEnabled: values.autoApprovalEnabled, + connectionUri: values.connection.value, + schema: values.schema, + tables: values.tables + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Dataset imported successfully', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + navigate( + `/console/redshift-datasets/${response.data.importRedshiftDataset.datasetUri}` + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + if (loading) { + return ; + } + + return ( + <> + + Dataset: Redshift Dataset Import | data.all + + + + + + + Import a new Redshift dataset + + } + sx={{ mt: 1 }} + > + + Contribute + + + Datasets + + + Import + + + + + + + + + + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + + + + + {touched.description && errors.description && ( + + + {errors.description} + + + )} + + + + + {isFeatureEnabled( + 'datasets_base', + 'confidentiality_dropdown' + ) && ( + + + {confidentialityOptions.map((c) => ( + + {c} + + ))} + + + )} + {isFeatureEnabled( + 'datasets_base', + 'topics_dropdown' + ) && ( + + opt.label} + onChange={(event, value) => { + setFieldValue('topics', value); + }} + renderTags={(tagValue, getTagProps) => + tagValue.map((option, index) => ( + + )) + } + renderInput={(p) => ( + + )} + /> + + )} + + + { + setFieldValue('tags', [...chip]); + }} + /> + + + + {config.modules.datasets_base.features + .auto_approval_for_confidentiality_level[ + values.confidentiality + ] === true && ( + + + Enabled + + + Disabled + + + )} + + + + + + + + option)} + onChange={(event, value) => { + setFieldValue('SamlAdminGroupName', ''); + setFieldValue('stewards', ''); + if (value && value.environmentUri) { + setFieldValue('environment', value); + fetchGroups(value.environmentUri).catch((e) => + dispatch({ + type: SET_ERROR, + error: e.message + }) + ); + } else { + setFieldValue('environment', ''); + setFieldValue('SamlAdminGroup', ''); + setFieldValue('connection', ''); + setFieldValue('schema', ''); + setFieldValue('tables', []); + setGroupOptions([]); + setConnectionOptions([]); + setSchemaOptions([]); + setTableOptions(null); + } + }} + renderInput={(params) => ( + + )} + /> + + + + + + option)} + onChange={(event, value) => { + if (value && value.value) { + setFieldValue( + 'SamlAdminGroupName', + value.value + ); + fetchRedshiftConnections( + values.environment.environmentUri, + value.value + ).catch((e) => + dispatch({ + type: SET_ERROR, + error: e.message + }) + ); + } else { + setFieldValue('SamlAdminGroupName', ''); + setFieldValue('connection', ''); + setFieldValue('schema', ''); + setFieldValue('tables', []); + setConnectionOptions([]); + setSchemaOptions([]); + setTableOptions(null); + } + }} + inputValue={values.SamlAdminGroupName} + renderInput={(params) => ( + + )} + /> + + + option)} + onChange={(event, value) => { + if (value && value.value) { + setFieldValue('stewards', value.value); + } else { + setFieldValue('stewards', ''); + } + }} + inputValue={values.stewards} + renderInput={(params) => ( + + )} + /> + + + + + + option)} + noOptionsText="No connections for the selected Team and Environment" + onChange={(event, value) => { + if (value && value) { + setFieldValue('connection', value); + fetchSchemas(value.value).catch((e) => + dispatch({ + type: SET_ERROR, + error: e.message + }) + ); + } else { + setFieldValue('connection', ''); + setSchemaOptions([]); + setTableOptions(null); + setFieldValue('schema', ''); + setFieldValue('tables', []); + } + }} + inputValue={values.connection.label} + renderInput={(params) => ( + + )} + /> + + + option)} + noOptionsText="No schemas for the selected Connection" + onChange={(event, value) => { + if (value) { + setFieldValue('schema', value); + fetchTables( + values.connection.value, + value + ).catch((e) => + dispatch({ + type: SET_ERROR, + error: e.message + }) + ); + } else { + setTableOptions(null); + setFieldValue('schema', ''); + setFieldValue('tables', []); + } + }} + inputValue={values.schema} + renderInput={(params) => ( + + )} + /> + + {loadingTables && ( + + + Loading database tables + + + + )} + {tableOptions && ( + + + + node.name} + rows={tableOptions} + columns={[ + { field: 'id', hide: true }, + { + field: 'name', + headerName: 'Redshift tables', + flex: 0.5, + editable: false + } + ]} + pageSize={filter.pageSize} + rowsPerPageOptions={[filter.pageSize]} + loading={loading} + onPageSizeChange={(pageSize) => { + setFilter({ + ...filter, + pageSize: pageSize + }); + }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + onSelectionModelChange={( + newSelectionModel + ) => { + setFieldValue('tables', newSelectionModel); + }} + components={{ + LoadingOverlay: LinearProgress + }} + sx={{ wordWrap: 'break-word' }} + /> + + + + )} + + + + Import Dataset + + + + +
+ )} +
+
+
+
+ + ); +}; + +export default RSDatasetImportForm; diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js new file mode 100644 index 000000000..4b1d50cd9 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js @@ -0,0 +1,327 @@ +import { + ForumOutlined, + Info, + ViewArrayOutlined, + Warning +} from '@mui/icons-material'; +import { + Box, + Breadcrumbs, + Button, + Card, + CardContent, + CircularProgress, + Container, + Divider, + Grid, + Link, + Tab, + Tabs, + Typography +} from '@mui/material'; +import { useSnackbar } from 'notistack'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { FaTrash } from 'react-icons/fa'; +import { useNavigate } from 'react-router'; +import { Link as RouterLink, useParams } from 'react-router-dom'; +import { + ChevronRightIcon, + DeleteObjectWithFrictionModal, + PencilAltIcon, + UpVoteButton, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { countUpVotes, getVote, upVote, useClient } from 'services'; +import { deleteRedshiftDataset, getRedshiftDataset } from '../services'; +import { FeedComments } from 'modules/Shared'; +import { RedshiftDatasetTables, RedshiftDatasetOverview } from '../components'; + +const RSDatasetView = () => { + const dispatch = useDispatch(); + const { settings } = useSettings(); + const { enqueueSnackbar } = useSnackbar(); + const params = useParams(); + const client = useClient(); + const navigate = useNavigate(); + const [currentTab, setCurrentTab] = useState('overview'); + const [loading, setLoading] = useState(true); + const [dataset, setDataset] = useState(null); + const [isDeleteObjectModalOpen, setIsDeleteObjectModalOpen] = useState(false); + const [isAdmin, setIsAdmin] = useState(false); + const [isUpVoted, setIsUpVoted] = useState(false); + const [upVotes, setUpvotes] = useState(null); + const [openFeed, setOpenFeed] = useState(false); + const getTabs = () => { + const tabs = [ + { label: 'Overview', value: 'overview', icon: }, + { + label: 'Data', + value: 'data', + icon: + } + ]; + return tabs; + }; + + const handleDeleteObjectModalOpen = () => { + setIsDeleteObjectModalOpen(true); + }; + + const handleDeleteObjectModalClose = () => { + setIsDeleteObjectModalOpen(false); + }; + + const getUserDatasetVote = useCallback( + async (datasetUri) => { + const response = await client.query( + getVote(datasetUri, 'redshiftdataset') + ); + if (!response.errors && response.data.getVote !== null) { + setIsUpVoted(response.data.getVote.upvote); + } + }, + [client] + ); + + const reloadVotes = async () => { + const response = await client.query( + countUpVotes(params.uri, 'redshiftdataset') + ); + if (!response.errors && response.data.countUpVotes !== null) { + setUpvotes(response.data.countUpVotes); + } else { + setUpvotes(0); + } + }; + + const upVoteDataset = async (datasetUri) => { + const response = await client.mutate( + upVote({ + targetUri: datasetUri, + targetType: 'redshiftdataset', + upvote: !isUpVoted + }) + ); + if (!response.errors && response.data.upVote !== null) { + setIsUpVoted(response.data.upVote.upvote); + } + reloadVotes().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + }; + + const fetchItem = useCallback(async () => { + setLoading(true); + const response = await client.query(getRedshiftDataset(params.uri)); + if (!response.errors && response.data.getRedshiftDataset !== null) { + setDataset(response.data.getRedshiftDataset); + setIsAdmin( + ['BusinessOwner', 'Admin', 'DataSteward', 'Creator'].indexOf( + response.data.getRedshiftDataset.userRoleForDataset + ) !== -1 + ); + setUpvotes(response.data.getRedshiftDataset.upvotes); + } else { + const error = response.errors + ? response.errors[0].message + : 'Dataset not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, params.uri]); + + useEffect(() => { + if (client) { + getUserDatasetVote(params.uri).catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchItem().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + } + }, [client, fetchItem, getUserDatasetVote, dispatch, params.uri]); + + const handleTabsChange = (event, value) => { + setCurrentTab(value); + }; + + const removeDataset = async (deleteFromAWS = false) => { + const response = await client.mutate( + deleteRedshiftDataset(dataset.datasetUri, deleteFromAWS) + ); + if (!response.errors) { + handleDeleteObjectModalClose(); + enqueueSnackbar('Dataset deleted', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + navigate('/console/datasets'); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + + if (loading) { + return ; + } + if (!dataset) { + return null; + } + + return ( + <> + + Datasets: Dataset Details | data.all + + + + + + + Redshift Dataset {dataset.label} + + } + sx={{ mt: 1 }} + > + + Contribute + + + Datasets + + + {dataset.label} + + + + + + {isAdmin && ( + + upVoteDataset(dataset.datasetUri)} + upVotes={upVotes} + /> + + + + + )} + + + + + + {getTabs().map((tab) => ( + + ))} + + + + + {currentTab === 'data' && ( + + )} + {currentTab === 'overview' && ( + + )} + + + + {isAdmin && ( + + + + Redshift Dataset will be deleted from data.all + catalog, but its tables and schema will still be available in + Amazon Redshift. + + + + } + isAWSResource={false} + /> + )} + {openFeed && ( + setOpenFeed(false)} + /> + )} + + ); +}; + +export default RSDatasetView; diff --git a/frontend/src/modules/Redshift_Datasets/views/RSTableEditForm.js b/frontend/src/modules/Redshift_Datasets/views/RSTableEditForm.js new file mode 100644 index 000000000..6a271af7a --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/views/RSTableEditForm.js @@ -0,0 +1,392 @@ +import { LoadingButton } from '@mui/lab'; +import { + Autocomplete, + Box, + Breadcrumbs, + Button, + Card, + CardContent, + CardHeader, + Chip, + Container, + FormHelperText, + Grid, + Link, + TextField, + Typography +} from '@mui/material'; +import CircularProgress from '@mui/material/CircularProgress'; +import { Formik } from 'formik'; +import { useSnackbar } from 'notistack'; +import * as PropTypes from 'prop-types'; +import { useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { Link as RouterLink, useNavigate, useParams } from 'react-router-dom'; +import { + ArrowLeftIcon, + ChevronRightIcon, + ChipInput, + Defaults, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { searchGlossary, useClient } from 'services'; +import { + getRedshiftDatasetTable, + updateRedshiftDatasetTable +} from '../services'; + +function TableEditHeader(props) { + const { table } = props; + return ( + + + + {`Update Table: ${table.label}`} + + } + sx={{ mt: 1 }} + > + + Discover + + + Datasets + + + {table.dataset.name} + + + + {table.name} + + + + Edit + + + + + + + + + + ); +} + +TableEditHeader.propTypes = { table: PropTypes.object.isRequired }; + +const RSTableEditForm = () => { + const dispatch = useDispatch(); + const { settings } = useSettings(); + const params = useParams(); + const client = useClient(); + const navigate = useNavigate(); + const { enqueueSnackbar } = useSnackbar(); + const [table, setTable] = useState({}); + const [loading, setLoading] = useState(true); + const [selectableTerms, setSelectableTerms] = useState([]); + const [tableTerms, setTableTerms] = useState([]); + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + await client.mutate( + updateRedshiftDatasetTable({ + rsTableUri: table.rsTableUri, + input: { + description: values.description, + terms: values.terms.nodes + ? values.terms.nodes.map((t) => t.nodeUri) + : values.terms.map((t) => t.nodeUri), + tags: values.tags + } + }) + ); + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Table updated', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + navigate(`/console/redshift-datasets/table/${table.rsTableUri}`); + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + useEffect(() => { + const fetchItem = async () => { + setLoading(true); + let response = await client.query( + getRedshiftDatasetTable({ rsTableUri: params.uri }) + ); + let fetchedTerms = []; + if (!response.errors && response.data.getRedshiftDatasetTable !== null) { + setTable(response.data.getRedshiftDatasetTable); + if ( + response.data.getRedshiftDatasetTable.terms && + response.data.getRedshiftDatasetTable.terms.nodes.length > 0 + ) { + fetchedTerms = response.data.getRedshiftDatasetTable.terms.nodes.map( + (node) => ({ + label: node.label, + value: node.nodeUri, + nodeUri: node.nodeUri, + disabled: node.__typename !== 'Term' /*eslint-disable-line*/, + nodePath: node.path, + nodeType: node.__typename /*eslint-disable-line*/ + }) + ); + } + setTableTerms(fetchedTerms); + response = client.query(searchGlossary(Defaults.selectListFilter)); + response.then((result) => { + if ( + result.data.searchGlossary && + result.data.searchGlossary.nodes.length > 0 + ) { + const selectables = result.data.searchGlossary.nodes.map( + (node) => ({ + label: node.label, + value: node.nodeUri, + nodeUri: node.nodeUri, + disabled: node.__typename !== 'Term' /* eslint-disable-line*/, + nodePath: node.path, + nodeType: node.__typename /* eslint-disable-line*/ + }) + ); + setSelectableTerms(selectables); + } + }); + } else { + const error = response.errors + ? response.errors[0].message + : 'Dataset table not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + if (client) { + fetchItem().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + } + }, [client, dispatch, params.uri]); + + if (loading) { + return ; + } + if (!table) { + return null; + } + + return ( + <> + + Tables: Table Update | data.all + + + + + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + + + + + + {touched.description && errors.description && ( + + + {errors.description} + + + )} + + + + + + + + + + { + setFieldValue('tags', [...chip]); + }} + /> + + + {table && ( + ({ + label: node.label, + nodeUri: node.nodeUri + }))} + getOptionLabel={(opt) => opt.label} + getOptionDisabled={(opt) => opt.disabled} + getOptionSelected={(option, value) => + option.nodeUri === value.nodeUri + } + onChange={(event, value) => { + setFieldValue('terms', value); + }} + renderTags={(tagValue, getTagProps) => + tagValue.map((option, index) => ( + + )) + } + renderInput={(p) => ( + + )} + /> + )} + + + + {errors.submit && ( + + {errors.submit} + + )} + + + Update table + + + + +
+ )} +
+
+
+
+ + ); +}; + +export default RSTableEditForm; diff --git a/frontend/src/modules/Redshift_Datasets/views/RSTableView.js b/frontend/src/modules/Redshift_Datasets/views/RSTableView.js new file mode 100644 index 000000000..ecfea2806 --- /dev/null +++ b/frontend/src/modules/Redshift_Datasets/views/RSTableView.js @@ -0,0 +1,301 @@ +import { ForumOutlined, Warning } from '@mui/icons-material'; +import { + Box, + Breadcrumbs, + Button, + Card, + CardContent, + CircularProgress, + Container, + Divider, + Grid, + Link, + Tab, + Tabs, + Typography +} from '@mui/material'; +import * as PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { FaTrash } from 'react-icons/fa'; +import { useNavigate } from 'react-router'; +import { useSnackbar } from 'notistack'; +import { Link as RouterLink, useParams } from 'react-router-dom'; +import { + ChevronRightIcon, + DeleteObjectModal, + PencilAltIcon, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient } from 'services'; +import { FeedComments } from 'modules/Shared'; +import { + getRedshiftDatasetTable, + deleteRedshiftDatasetTable +} from '../services'; +import { TableColumns, TableOverview } from '../components'; + +const tabs = [ + { label: 'Overview', value: 'overview' }, + { label: 'Columns', value: 'columns' } +]; + +function TablePageHeader(props) { + const { table, handleDeleteObjectModalOpen, isAdmin } = props; + const [openFeed, setOpenFeed] = useState(false); + return ( + + + + Table {table.name} + + } + sx={{ mt: 1 }} + > + + Discover + + + Datasets + + + {table?.dataset?.name} + + + {table.name} + + + + {isAdmin && ( + + + + + + + + )} + {openFeed && ( + setOpenFeed(false)} + /> + )} + + ); +} + +TablePageHeader.propTypes = { + table: PropTypes.object.isRequired, + handleDeleteObjectModalOpen: PropTypes.func.isRequired, + isAdmin: PropTypes.bool.isRequired +}; + +const RSTableView = () => { + const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const { settings } = useSettings(); + const params = useParams(); + const client = useClient(); + const navigate = useNavigate(); + const [table, setTable] = useState({}); + const [currentTab, setCurrentTab] = useState(tabs[0].value); + const [loading, setLoading] = useState(true); + const [isDeleteObjectModalOpen, setIsDeleteObjectModalOpen] = useState(false); + const [isAdmin, setIsAdmin] = useState(false); + + const handleDeleteObjectModalOpen = () => { + setIsDeleteObjectModalOpen(true); + }; + const handleDeleteObjectModalClose = () => { + setIsDeleteObjectModalOpen(false); + }; + + const deleteTable = async () => { + const response = await client.mutate( + deleteRedshiftDatasetTable({ + rsTableUri: table.rsTableUri + }) + ); + if (!response.errors) { + enqueueSnackbar('Table deleted', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + navigate(`/console/redshift-datasets/${table.datasetUri}`); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + + const fetchItem = useCallback(async () => { + setLoading(true); + const response = await client.query( + getRedshiftDatasetTable({ rsTableUri: params.uri }) + ); + if (!response.errors && response.data.getRedshiftDatasetTable !== null) { + setTable(response.data.getRedshiftDatasetTable); + setIsAdmin( + ['Creator', 'Admin', 'Owner'].indexOf( + response.data.getRedshiftDatasetTable.dataset.userRoleForDataset + ) !== -1 + ); + } else { + setTable(null); + const error = response.errors + ? response.errors[0].message + : 'Redshift Dataset table not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, params.uri]); + + useEffect(() => { + if (client) { + fetchItem().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + } + }, [client, fetchItem, dispatch]); + + const handleTabsChange = (event, value) => { + setCurrentTab(value); + }; + + if (loading) { + return ; + } + + if (!table) { + return null; + } + + return ( + <> + + Tables: Table Details | data.all + + + + + + + {tabs.map((tab) => ( + + ))} + + + + + {currentTab === 'overview' && ( + + )} + {currentTab === 'columns' && } + + + + {isAdmin && ( + + + + Redshift Table will be deleted from data.all + catalog, but will still be available in Amazon Redshift. + + + + } + /> + )} + + ); +}; + +export default RSTableView; diff --git a/frontend/src/modules/S3_Datasets/components/DatasetGovernance.js b/frontend/src/modules/S3_Datasets/components/DatasetGovernance.js deleted file mode 100644 index 4d8d9b3f2..000000000 --- a/frontend/src/modules/S3_Datasets/components/DatasetGovernance.js +++ /dev/null @@ -1,115 +0,0 @@ -import { - Box, - Card, - CardContent, - CardHeader, - Chip, - Divider, - Typography -} from '@mui/material'; -import PropTypes from 'prop-types'; -import { Label } from 'design'; -import { isFeatureEnabled } from 'utils'; - -export const DatasetGovernance = (props) => { - const { dataset } = props; - const terms = - dataset.terms.nodes.length > 0 - ? dataset.terms.nodes - : [{ label: '-', nodeUri: '-' }]; - const tags = dataset.tags.length > 0 ? dataset.tags : ['-']; - - return ( - - - - - - Owners - - - {dataset.SamlAdminGroupName} - - - - - Stewards - - - {dataset.stewards} - - - - - Auto-Approval - - - - - - {isFeatureEnabled('datasets_base', 'confidentiality_dropdown') && ( - - - Classification - - - - - - )} - {isFeatureEnabled('datasets_base', 'topics_dropdown') && ( - - - Topics - - - {dataset.topics && - dataset.topics.length > 0 && - dataset.topics.map((t) => ( - - ))} - - - )} - - - - Tags - - - {tags && - tags.map((t) => ( - - ))} - - - - - Glossary terms - - - {terms && - terms.map((term) => ( - - ))} - - - - ); -}; - -DatasetGovernance.propTypes = { - dataset: PropTypes.object.isRequired -}; diff --git a/frontend/src/modules/S3_Datasets/components/DatasetOverview.js b/frontend/src/modules/S3_Datasets/components/DatasetOverview.js index 83ce686ea..7d7d4ed62 100644 --- a/frontend/src/modules/S3_Datasets/components/DatasetOverview.js +++ b/frontend/src/modules/S3_Datasets/components/DatasetOverview.js @@ -2,7 +2,7 @@ import { Box, Grid } from '@mui/material'; import PropTypes from 'prop-types'; import { ObjectBrief, ObjectMetadata } from 'design'; import { DatasetConsoleAccess } from './DatasetConsoleAccess'; -import { DatasetGovernance } from './DatasetGovernance'; +import { DatasetGovernance } from 'modules/DatasetsBase/components/DatasetGovernance'; export const DatasetOverview = (props) => { const { dataset, isAdmin, ...other } = props; diff --git a/frontend/src/modules/S3_Datasets/components/index.js b/frontend/src/modules/S3_Datasets/components/index.js index 31b7ca3bc..7e899832c 100644 --- a/frontend/src/modules/S3_Datasets/components/index.js +++ b/frontend/src/modules/S3_Datasets/components/index.js @@ -2,7 +2,6 @@ export * from './DatasetAWSActions'; export * from './DatasetConsoleAccess'; export * from './DatasetData'; export * from './DatasetFolders'; -export * from './DatasetGovernance'; export * from './DatasetOverview'; export * from './DatasetStartCrawlerModal'; export * from './DatasetTables'; diff --git a/frontend/src/modules/Tables/index.js b/frontend/src/modules/Tables/index.js new file mode 100644 index 000000000..a49758dc3 --- /dev/null +++ b/frontend/src/modules/Tables/index.js @@ -0,0 +1,10 @@ +import { getModuleActiveStatus, ModuleNames } from 'utils'; + +export const S3TablesModule = { + moduleDefinition: true, + name: 's3_tables', + isEnvironmentModule: false, + resolve_dependency: () => { + return getModuleActiveStatus(ModuleNames.S3_DATASETS); + } +}; diff --git a/frontend/src/modules/index.js b/frontend/src/modules/index.js index 47718e776..3acdc8bc3 100644 --- a/frontend/src/modules/index.js +++ b/frontend/src/modules/index.js @@ -7,6 +7,7 @@ export * from './Notebooks'; export * from './Notifications'; export * from './Omics'; export * from './Pipelines'; +export * from './Redshift_Datasets'; export * from './S3_Datasets'; export * from './Shares'; export * from './Worksheets'; diff --git a/frontend/src/routes.js b/frontend/src/routes.js index 31679cef5..041763fdb 100644 --- a/frontend/src/routes.js +++ b/frontend/src/routes.js @@ -77,6 +77,26 @@ const FolderEditForm = Loadable( lazy(() => import('./modules/Folders/views/FolderEditForm')) ); +const RedshiftDatasetView = Loadable( + lazy(() => import('./modules/Redshift_Datasets/views/RSDatasetView')) +); + +const RedshiftDatasetImportForm = Loadable( + lazy(() => import('./modules/Redshift_Datasets/views/RSDatasetImportForm')) +); + +const RedshiftDatasetEditForm = Loadable( + lazy(() => import('./modules/Redshift_Datasets/views/RSDatasetEditForm')) +); + +const RedshiftTableView = Loadable( + lazy(() => import('./modules/Redshift_Datasets/views/RSTableView')) +); + +const RedshiftTableEditForm = Loadable( + lazy(() => import('./modules/Redshift_Datasets/views/RSTableEditForm')) +); + const NotebookList = Loadable( lazy(() => import('./modules/Notebooks/views/NotebookList')) ); @@ -292,6 +312,30 @@ const routes = [ } ] }, + isModuleEnabled(ModuleNames.REDSHIFT_DATASETS) && { + children: [ + { + path: 'redshift-datasets/:uri', + element: + }, + { + path: 'redshift-datasets/import', + element: + }, + { + path: 'redshift-datasets/:uri/edit', + element: + }, + { + path: 'redshift-datasets/table/:uri', + element: + }, + { + path: 'redshift-datasets/table/:uri/edit', + element: + } + ] + }, isModuleEnabled(ModuleNames.MLSTUDIO) && { children: [ { diff --git a/frontend/src/services/graphql/Redshift_Datasets/index.js b/frontend/src/services/graphql/Redshift_Datasets/index.js new file mode 100644 index 000000000..122a37d00 --- /dev/null +++ b/frontend/src/services/graphql/Redshift_Datasets/index.js @@ -0,0 +1 @@ +export * from './listEnvironmentRedshiftConnections'; diff --git a/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js b/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js new file mode 100644 index 000000000..e2e1d2199 --- /dev/null +++ b/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js @@ -0,0 +1,30 @@ +import { gql } from 'apollo-boost'; + +export const listEnvironmentRedshiftConnections = ({ filter }) => ({ + variables: { + filter + }, + query: gql` + query listEnvironmentRedshiftConnections($filter: ConnectionFilter) { + listEnvironmentRedshiftConnections(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + name + connectionUri + SamlGroupName + redshiftType + clusterId + nameSpaceId + workgroup + database + redshiftUser + secretArn + } + } + } + ` +}); diff --git a/frontend/src/services/graphql/index.js b/frontend/src/services/graphql/index.js index 144c217fe..c37eb2ef6 100644 --- a/frontend/src/services/graphql/index.js +++ b/frontend/src/services/graphql/index.js @@ -12,6 +12,7 @@ export * from './MLStudio'; export * from './Notification'; export * from './Organization'; export * from './Principal'; +export * from './Redshift_Datasets'; export * from './SavedQuery'; export * from './Shared'; export * from './Search'; diff --git a/tests/modules/redshift_datasets/__init__.py b/tests/modules/redshift_datasets/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py new file mode 100644 index 000000000..e6a5d76a2 --- /dev/null +++ b/tests/modules/redshift_datasets/conftest.py @@ -0,0 +1,239 @@ +import os +import pytest +import boto3 +from dataall.base.context import set_context, dispose_context, RequestContext + +from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService +from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService +from dataall.modules.redshift_datasets.aws.redshift import RedshiftClient +from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient +from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient + +ENVNAME = os.environ.get('envname', 'pytest') + + +class MockRedshiftDataClient: + def get_redshift_connection_database(self, *args, **kwargs): + return True + + def list_redshift_schemas(self, *args, **kwargs): + return ['public', 'dev'] + + def list_redshift_tables(self, *args, **kwargs): + return [ + {'name': 'table1', 'type': 'TABLE'}, + {'name': 'table2', 'type': 'TABLE'}, + {'name': 'table3', 'type': 'TABLE'}, + {'name': 'table4', 'type': 'TABLE'}, + ] + + def list_redshift_table_columns(self, *args, **kwargs): + return [ + {'name': 'column1', 'type': 'VARCHAR', 'nullable': True}, + {'name': 'column2', 'type': 'INTEGER', 'nullable': False}, + {'name': 'column3', 'type': 'DOUBLE', 'nullable': True}, + {'name': 'column4', 'type': 'BOOLEAN', 'nullable': False}, + ] + + +class MockRedshiftClient: + def describe_cluster(self, *args, **kwargs): + return {'ClusterIdentifier': 'cluster_id_1', 'ClusterStatus': 'available'} + + +class MockRedshiftServerlessClient: + def get_namespace_by_id(self, *args, **kwargs): + return {'namespaceId': 'XXXXXXXXXXXXXX', 'namespaceName': 'namespace_name_1'} + + def list_workgroups_in_namespace(self, *args, **kwargs): + return [ + { + 'workgroupName': 'workgroup_name_1', + 'workgroupArn': 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1', + } + ] + + def get_workgroup_arn(self, *args, **kwargs): + return 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1' + + +@pytest.fixture(scope='module', autouse=True) +def patch_sts_remote_session(module_mocker): + module_mocker.patch( + 'dataall.base.aws.sts.SessionHelper.remote_session', + return_value=boto3.Session(), + ) + + +@pytest.fixture(scope='function') +def patch_redshift(mocker): + # autospec=True ensures methods called in the MockClient correspond to real client methods + mocker.patch.object( + RedshiftClient, + '__new__', + return_value=MockRedshiftClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftDataClient, + '__new__', + return_value=MockRedshiftDataClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftServerlessClient, + '__new__', + return_value=MockRedshiftServerlessClient(), + autospec=True, + ) + + +@pytest.fixture(scope='function') +def api_context_1(db, user, group): + yield set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dispose_context() + + +@pytest.fixture(scope='function') +def api_context_2(db, user2, group2): + yield set_context( + RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username) + ) + dispose_context() + + +@pytest.fixture(scope='function') +def connection1_serverless(db, user, group, env_fixture, mocker): + # autospec=True ensures methods called in the MockClient correspond to real client methods + mocker.patch.object( + RedshiftClient, + '__new__', + return_value=MockRedshiftClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftDataClient, + '__new__', + return_value=MockRedshiftDataClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftServerlessClient, + '__new__', + return_value=MockRedshiftServerlessClient(), + autospec=True, + ) + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection1', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'XXXXXXXXXXXXXX', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def connection2_cluster(db, user, group, env_fixture, mocker): + # autospec=True ensures methods called in the MockClient correspond to real client methods + mocker.patch.object( + RedshiftClient, + '__new__', + return_value=MockRedshiftClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftDataClient, + '__new__', + return_value=MockRedshiftDataClient(), + autospec=True, + ) + mocker.patch.object( + RedshiftServerlessClient, + '__new__', + return_value=MockRedshiftServerlessClient(), + autospec=True, + ) + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection2', + 'redshiftType': 'cluster', + 'clusterId': 'cluster-id', + 'nameSpaceId': None, + 'workgroup': None, + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connection1_serverless): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dataset = RedshiftDatasetService.import_redshift_dataset( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'label': 'imported_redshift_dataset_1', + 'SamlAdminGroupName': group.name, + 'connectionUri': connection1_serverless.connectionUri, + 'schema': 'public', + }, + ) + dispose_context() + yield dataset + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftDatasetService.delete_redshift_dataset(uri=dataset.datasetUri) + dispose_context() + + +@pytest.fixture(scope='function') +def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connection1_serverless): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dataset = RedshiftDatasetService.import_redshift_dataset( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'label': 'imported_redshift_dataset_2', + 'SamlAdminGroupName': group.name, + 'connectionUri': connection1_serverless.connectionUri, + 'schema': 'public', + 'tables': ['table1', 'table2'], + }, + ) + dispose_context() + yield dataset + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftDatasetService.delete_redshift_dataset(uri=dataset.datasetUri) + dispose_context() + + +@pytest.fixture(scope='function') +def imported_dataset_2_table_1(db, user, group, env_fixture, imported_redshift_dataset_2_with_tables): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + tables = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_2_with_tables.datasetUri, filter={'term': 'table1'} + ) + dispose_context() + yield tables['nodes'][0] diff --git a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py new file mode 100644 index 000000000..d71f3851c --- /dev/null +++ b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py @@ -0,0 +1,233 @@ +from assertpy import assert_that +from unittest.mock import MagicMock, patch +from .conftest import MockRedshiftClient, MockRedshiftDataClient, MockRedshiftServerlessClient +from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService + + +def test_create_redshift_connection_namespace_not_found(env_fixture, api_context_1, group, mocker): + # Given a namespace that does not exist + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.get_namespace_by_id', + return_value=None, + ) + # Then + assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'not-existent-id', + 'workgroup': 'workgroup-id', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ).contains('Redshift namespaceId not-existent-id does not exist') + + +def test_create_redshift_connection_workgroup_not_in_namespace(env_fixture, api_context_1, group, mocker): + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.get_namespace_by_id', + return_value=MockRedshiftServerlessClient().get_namespace_by_id(), + ) + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.list_workgroups_in_namespace', + return_value=[], + ) + + # Then + assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'not-existent-id', + 'workgroup': 'workgroup-id', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ).contains('Redshift workgroup workgroup-id does not exist or is not associated to namespace not-existent-id') + + +def test_create_redshift_connection_cluster_not_found(env_fixture, api_context_1, group, mocker): + # Given a redshift cluster id that does not exist + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift.RedshiftClient.describe_cluster', + return_value=False, + ) + + # Then + assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'cluster', + 'clusterId': 'cluster-id', + 'nameSpaceId': None, + 'workgroup': None, + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ).contains('Redshift cluster cluster-id does not exist or cannot be accessed with these parameters') + + +def test_create_redshift_connection_database_not_found(env_fixture, api_context_1, group, mocker): + # Given a redshift cluster id + mock_redshift = MagicMock() + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift.RedshiftClient.describe_cluster', + return_value=mock_redshift, + autospec=True, + ) + mock_redshift.describe_cluster.return_value = MockRedshiftClient().describe_cluster() + mock_redshift_data = MagicMock() + mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_data.RedshiftDataClient', + return_value=mock_redshift_data, + ) + mock_redshift_data.get_redshift_connection_database.side_effect = Exception + + # Then + assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'cluster', + 'clusterId': 'cluster-id', + 'nameSpaceId': None, + 'workgroup': None, + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ).contains('Redshift database database_1 does not exist or cannot be accessed with these parameters') + + +def test_create_redshift_serverless_connection(connection1_serverless): + # When connection is created + # Then + assert_that(connection1_serverless).is_not_none() + assert_that(connection1_serverless.connectionUri).is_not_none() + assert_that(connection1_serverless.redshiftType).is_equal_to('serverless') + + +def test_create_redshift_cluster_connection(connection2_cluster): + # When connection is created + # Then + assert_that(connection2_cluster).is_not_none() + assert_that(connection2_cluster.connectionUri).is_not_none() + assert_that(connection2_cluster.redshiftType).is_equal_to('cluster') + + +def test_get_redshift_connection(connection1_serverless, api_context_1, patch_redshift): + # When + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=connection1_serverless.connectionUri) + + # Then + assert_that(connection).is_not_none() + assert_that(connection.connectionUri).is_equal_to(connection1_serverless.connectionUri) + assert_that(connection.redshiftType).is_equal_to('serverless') + + +def test_get_redshift_connection_unauthorized(connection1_serverless, api_context_2, patch_redshift): + # When + assert_that(RedshiftConnectionService.get_redshift_connection_by_uri).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) + + +def test_delete_redshift_connection(api_context_1, env_fixture, group, patch_redshift): + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection-to-delete', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'XXXXXXXXXXXXXX', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', + }, + ) + # When + response = RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + # Then + assert_that(response).is_true() + + +def test_delete_redshift_connection_unauthorized(connection1_serverless, api_context_2, patch_redshift): + # When + assert_that(RedshiftConnectionService.delete_redshift_connection).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri + ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) + + +def test_list_environment_redshift_connections(connection1_serverless, connection2_cluster, api_context_1, env_fixture): + # When + response = RedshiftConnectionService.list_environment_redshift_connections( + uri=env_fixture.environmentUri, filter={} + ) + # Then + assert_that(response).contains_entry(count=2) + assert_that(response).contains_key('page', 'pages', 'pageSize', 'nodes', 'count') + connections = [conn.connectionUri for conn in response['nodes']] + assert_that(connections).is_equal_to([connection1_serverless.connectionUri, connection2_cluster.connectionUri]) + + +def test_list_environment_redshift_connections_with_filter( + connection1_serverless, connection2_cluster, api_context_1, env_fixture +): + # When + response = RedshiftConnectionService.list_environment_redshift_connections( + uri=env_fixture.environmentUri, filter={'term': connection1_serverless.name} + ) + # Then + assert_that(response).contains_entry(count=1) + assert_that(response).contains_key('page', 'pages', 'pageSize', 'nodes') + connections = [conn.connectionUri for conn in response['nodes']] + assert_that(connections).is_equal_to([connection1_serverless.connectionUri]) + + +def test_list_environment_redshift_connections_unauthorized( + connection1_serverless, connection2_cluster, api_context_2, env_fixture +): + # When + assert_that(RedshiftConnectionService.list_environment_redshift_connections).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, filter={} + ).contains('UnauthorizedOperation', 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS', env_fixture.environmentUri) + + +def test_list_connection_schemas(connection1_serverless, api_context_1, patch_redshift): + # When + response = RedshiftConnectionService.list_connection_schemas(uri=connection1_serverless.connectionUri) + assert_that(response).is_equal_to(MockRedshiftDataClient().list_redshift_schemas()) + + +def test_list_connection_schemas_unauthorized(connection1_serverless, api_context_2): + # When + assert_that(RedshiftConnectionService.list_connection_schemas).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) + + +def test_list_schema_tables(connection1_serverless, api_context_1, patch_redshift): + # When + response = RedshiftConnectionService.list_schema_tables(uri=connection1_serverless.connectionUri, schema='schema1') + assert_that(response).is_equal_to(MockRedshiftDataClient().list_redshift_tables()) + + +def test_list_schema_tables_unauthorized(connection1_serverless, api_context_2): + # When + assert_that(RedshiftConnectionService.list_schema_tables).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) diff --git a/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py new file mode 100644 index 000000000..2f9b58912 --- /dev/null +++ b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py @@ -0,0 +1,230 @@ +from assertpy import assert_that +from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService +from .conftest import MockRedshiftDataClient + + +def test_import_redshift_dataset_with_no_tables(imported_redshift_dataset_1_no_tables, api_context_1): + # When dataset is imported + # Then + assert_that(imported_redshift_dataset_1_no_tables).is_not_none() + assert_that(imported_redshift_dataset_1_no_tables.datasetUri).is_not_none() + assert_that(imported_redshift_dataset_1_no_tables.schema).is_equal_to('public') + # When we list the tables in this dataset + tables = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={} + ) + # Then + assert_that(tables).contains_entry(count=0) + + +def test_import_redshift_dataset_with_tables(imported_redshift_dataset_2_with_tables, api_context_1): + # When dataset is imported + # Then + assert_that(imported_redshift_dataset_2_with_tables).is_not_none() + assert_that(imported_redshift_dataset_2_with_tables.datasetUri).is_not_none() + assert_that(imported_redshift_dataset_2_with_tables.schema).is_equal_to('public') + # When we list the tables in this dataset + tables = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_2_with_tables.datasetUri, filter={} + ) + # Then + assert_that(tables).contains_entry(count=2) + + +def test_update_redshift_dataset_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.update_redshift_dataset).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri, data={'description': 'new description'} + ).contains('UnauthorizedOperation', 'UPDATE_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_update_redshift_dataset(imported_redshift_dataset_1_no_tables, group3, group, api_context_1): + # When + dataset = RedshiftDatasetService.update_redshift_dataset( + uri=imported_redshift_dataset_1_no_tables.datasetUri, + data={'description': 'new description', 'stewards': group3.name}, + ) + # Then + assert_that(dataset.description).is_equal_to('new description') + assert_that(dataset.stewards).is_equal_to(group3.name) + # Revert stewards + dataset = RedshiftDatasetService.update_redshift_dataset( + uri=imported_redshift_dataset_1_no_tables.datasetUri, + data={'description': 'new description', 'stewards': group.name}, + ) + assert_that(dataset.stewards).is_equal_to(group.name) + + +def test_delete_redshift_dataset_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.delete_redshift_dataset).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri, + ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_delete_redshift_dataset(env_fixture, group, connection1_serverless, api_context_1): + dataset = RedshiftDatasetService.import_redshift_dataset( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'label': 'imported_redshift_to_delete', + 'SamlAdminGroupName': group.name, + 'connectionUri': connection1_serverless.connectionUri, + 'schema': 'public', + }, + ) + # When + response = RedshiftDatasetService.delete_redshift_dataset( + uri=dataset.datasetUri, + ) + # Then + assert_that(response).is_true() + + +def test_add_redshift_dataset_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.add_redshift_dataset_tables).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table3'] + ).contains('UnauthorizedOperation', 'ADD_TABLES_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_add_redshift_dataset_tables(imported_redshift_dataset_1_no_tables, api_context_1): + # When + response = RedshiftDatasetService.add_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table3'] + ) + tables = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={'term': 'table3'} + ) + # Then + assert_that(tables).contains_entry(count=1) + + +def test_delete_redshift_dataset_table_unauthorized(imported_dataset_2_table_1, api_context_2): + # When + assert_that(RedshiftDatasetService.delete_redshift_dataset_table).raises(Exception).when_called_with( + uri=imported_dataset_2_table_1.rsTableUri + ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_DATASET_TABLE', imported_dataset_2_table_1.rsTableUri) + + +def test_delete_redshift_dataset_table(imported_redshift_dataset_1_no_tables, api_context_1): + # Given` + response = RedshiftDatasetService.add_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table-to-delete'] + ) + tables = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={'term': 'table-to-delete'} + ) + # When + response = RedshiftDatasetService.delete_redshift_dataset_table(uri=tables['nodes'][0].rsTableUri) + assert_that(response).is_true() + + +def test_update_redshift_dataset_table_unauthorized(imported_dataset_2_table_1, api_context_2): + # When + assert_that(RedshiftDatasetService.update_redshift_dataset_table).raises(Exception).when_called_with( + uri=imported_dataset_2_table_1.rsTableUri, data={'description': 'new description'} + ).contains('UnauthorizedOperation', 'UPDATE_REDSHIFT_DATASET_TABLE', imported_dataset_2_table_1.rsTableUri) + + +def test_update_redshift_dataset_table(imported_dataset_2_table_1, api_context_1): + # When + table = RedshiftDatasetService.update_redshift_dataset_table( + uri=imported_dataset_2_table_1.rsTableUri, data={'description': 'new description'} + ) + # Then + assert_that(table.description).is_equal_to('new description') + + +def test_get_redshift_dataset_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.get_redshift_dataset).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_get_redshift_dataset(imported_redshift_dataset_1_no_tables, api_context_1): + # When + dataset = RedshiftDatasetService.get_redshift_dataset(uri=imported_redshift_dataset_1_no_tables.datasetUri) + # Then + assert_that(dataset.datasetUri).is_equal_to(imported_redshift_dataset_1_no_tables.datasetUri) + assert_that(dataset.schema).is_equal_to('public') + + +def test_list_redshift_dataset_tables_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.list_redshift_dataset_tables).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={} + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_list_redshift_dataset_tables(imported_redshift_dataset_2_with_tables, api_context_1): + # When + response = RedshiftDatasetService.list_redshift_dataset_tables( + uri=imported_redshift_dataset_2_with_tables.datasetUri, filter={} + ) + # Then + assert_that(response).contains_key('count', 'page', 'pages', 'nodes') + + +def test_list_redshift_schema_dataset_tables_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.list_redshift_schema_dataset_tables).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_list_redshift_schema_dataset_tables(imported_redshift_dataset_1_no_tables, patch_redshift, api_context_1): + # When + tables = RedshiftDatasetService.list_redshift_schema_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri + ) + # Then + assert_that(tables).is_not_none() + assert_that(tables[0]).contains_key('alreadyAdded', 'type', 'name') + + +def test_get_dataset_upvotes_unauthorized(imported_redshift_dataset_1_no_tables, api_context_2): + # When + assert_that(RedshiftDatasetService.get_dataset_upvotes).raises(Exception).when_called_with( + uri=imported_redshift_dataset_1_no_tables.datasetUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) + + +def test_get_dataset_upvotes(imported_redshift_dataset_1_no_tables, api_context_1): + # When + response = RedshiftDatasetService.get_dataset_upvotes(uri=imported_redshift_dataset_1_no_tables.datasetUri) + # Then + assert_that(response).is_equal_to(0) + + +def test_get_redshift_dataset_table_unauthorized(imported_dataset_2_table_1, api_context_2): + # When + assert_that(RedshiftDatasetService.get_redshift_dataset_table).raises(Exception).when_called_with( + uri=imported_dataset_2_table_1.rsTableUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET_TABLE', imported_dataset_2_table_1.rsTableUri) + + +def test_get_redshift_dataset_table(imported_dataset_2_table_1, api_context_1): + # When + table = RedshiftDatasetService.get_redshift_dataset_table(uri=imported_dataset_2_table_1.rsTableUri) + # Then + assert_that(table.rsTableUri).is_equal_to(imported_dataset_2_table_1.rsTableUri) + assert_that(table.name).is_equal_to('table1') + + +def test_list_redshift_dataset_table_columns_unauthorized(imported_dataset_2_table_1, api_context_2): + # When + assert_that(RedshiftDatasetService.list_redshift_dataset_table_columns).raises(Exception).when_called_with( + uri=imported_dataset_2_table_1.rsTableUri, filter={} + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET_TABLE', imported_dataset_2_table_1.rsTableUri) + + +def test_list_redshift_dataset_table_columns(imported_dataset_2_table_1, api_context_1): + # When + response = RedshiftDatasetService.list_redshift_dataset_table_columns( + uri=imported_dataset_2_table_1.rsTableUri, filter={} + ) + # Then + assert_that(response).contains_key('count', 'page', 'pages', 'nodes') + assert_that(response['nodes']).is_equal_to(MockRedshiftDataClient().list_redshift_table_columns()) diff --git a/tests/requirements.txt b/tests/requirements.txt index c19b64d12..87c1432ef 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -3,4 +3,5 @@ pytest==7.3.1 pytest-cov==3.0.0 pytest-mock==3.6.1 pytest-dependency==0.5.1 -werkzeug==3.0.3 \ No newline at end of file +werkzeug==3.0.3 +assertpy==1.1.0 \ No newline at end of file From 59d0650240134de807714fe772c36b8072074846 Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Thu, 1 Aug 2024 13:13:11 -0500 Subject: [PATCH 011/188] Fix for getting correct gluedb name for central cataloged dataset (#1433) ### Feature or Bugfix - Bugfix ### Detail - Resolved issue raised in - https://github.com/data-dot-all/dataall/issues/1432 ### Relates - https://github.com/data-dot-all/dataall/issues/1432 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? N/A - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../services/s3_share_service.py | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py index 255544bc7..f77e55445 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py @@ -9,6 +9,8 @@ from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.tasks.db.task_models import Task from dataall.core.tasks.service_handlers import Worker +from dataall.modules.datasets_base.db.dataset_models import DatasetBase +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.services.share_item_service import ShareItemService @@ -255,8 +257,18 @@ def list_shared_databases_tables_with_env_group(environmentUri: str, groupUri: s @staticmethod def resolve_shared_db_name(GlueDatabaseName: str, shareUri: str, targetEnvAwsAccountId: str, targetEnvRegion: str): - old_shared_db_name = (GlueDatabaseName + '_shared_' + shareUri)[:254] - database = GlueClient( - account_id=targetEnvAwsAccountId, database=old_shared_db_name, region=targetEnvRegion - ).get_glue_database() - return old_shared_db_name if database else GlueDatabaseName + '_shared' + with get_context().db_engine.scoped_session() as session: + share = ShareObjectRepository.get_share_by_uri(session, shareUri) + dataset = DatasetBaseRepository.get_dataset_by_uri(session, share.datasetUri) + try: + datasetGlueDatabase = GlueClient( + account_id=dataset.AwsAccountId, region=dataset.region, database=GlueDatabaseName + ).get_glue_database_from_catalog() + except Exception as e: + log.info(f'Error while calling the get_glue_database_from_catalog when resolving db name due to: {e}') + datasetGlueDatabase = GlueDatabaseName + old_shared_db_name = (datasetGlueDatabase + '_shared_' + shareUri)[:254] + database = GlueClient( + account_id=targetEnvAwsAccountId, database=old_shared_db_name, region=targetEnvRegion + ).get_glue_database() + return old_shared_db_name if database else datasetGlueDatabase + '_shared' From 586864cb25c1d389a0f933527c67233b5e280a61 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Mon, 5 Aug 2024 15:20:44 +0300 Subject: [PATCH 012/188] pass ShareableType instead of it's value and log exception details (#1452) ### Feature or Bugfix - Bugfix ### Detail in update_share_item_status_batch we pass `processor.type.value` but `processor.type` is expected ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/shares_base/services/sharing_service.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index ce35623e7..bb375b867 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -112,26 +112,26 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: if not success: share_successful = False except Exception as e: - log.error(f'Error occurred during sharing of {type.value}: {e}') + log.exception(f'Error occurred during sharing of {type.value}') ShareStatusRepository.update_share_item_status_batch( session, share_uri, old_status=ShareItemStatus.Share_Approved.value, new_status=ShareItemStatus.Share_Failed.value, - share_item_type=processor.type.value, + share_item_type=processor.type, ) ShareStatusRepository.update_share_item_status_batch( session, share_uri, old_status=ShareItemStatus.Share_In_Progress.value, new_status=ShareItemStatus.Share_Failed.value, - share_item_type=processor.type.value, + share_item_type=processor.type, ) share_successful = False return share_successful except Exception as e: - log.error(f'Error occurred during share approval: {e}') + log.exception('Error occurred during share approval') new_share_item_state = share_item_sm.run_transition(ShareItemActions.Failure.value) share_item_sm.update_state(session, share_data.share.shareUri, new_share_item_state) return False @@ -373,7 +373,7 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: ) except Exception as e: - log.error(f'Error occurred during share approval: {e}') + log.exception('Error occurred during share approval') return False @staticmethod From 2277dbb57ed32c1441b6196923eef25337934173 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Mon, 5 Aug 2024 14:32:37 +0200 Subject: [PATCH 013/188] Redshift dataset module testing: Re-added client factories, mocking clients (#1449) ### Feature or Bugfix - Bugfix ### Detail - Use client factories in Redshift boto3 clients - use single mock for the factory clients ### Relates - #1424 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/redshift_datasets/aws/redshift.py | 5 + .../redshift_datasets/aws/redshift_data.py | 5 + .../aws/redshift_serverless.py | 5 + .../cdk/pivot_role_redshift_policy.py | 4 +- .../services/redshift_connection_service.py | 18 +- .../services/redshift_dataset_service.py | 6 +- tests/modules/redshift_datasets/conftest.py | 181 ++++++------------ .../test_unit_redshift_connection_service.py | 68 +++---- .../test_unit_redshift_dataset_service.py | 5 +- 9 files changed, 114 insertions(+), 183 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift.py b/backend/dataall/modules/redshift_datasets/aws/redshift.py index 2414643be..30c738398 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift.py @@ -19,3 +19,8 @@ def describe_cluster(self, clusterId: str): except ClientError as e: log.error(e) raise e + + +def redshift_client(account_id: str, region: str) -> RedshiftClient: + "Factory of Client" + return RedshiftClient(account_id=account_id, region=region) diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift_data.py b/backend/dataall/modules/redshift_datasets/aws/redshift_data.py index c821cd553..8fde82d63 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift_data.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift_data.py @@ -143,3 +143,8 @@ def list_redshift_table_columns(self, schema: str, table: str): except ClientError as e: log.error(e) raise e + + +def redshift_data_client(account_id: str, region: str, connection: RedshiftConnection) -> RedshiftDataClient: + "Factory of Client" + return RedshiftDataClient(account_id=account_id, region=region, connection=connection) diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py index 5294f626a..04970dc1d 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py @@ -32,3 +32,8 @@ def get_workgroup_arn(self, workgroup_name: str) -> str: except ClientError as e: log.error(e) raise e + + +def redshift_serverless_client(account_id: str, region: str, role: str = None) -> RedshiftServerlessClient: + "Factory of Client" + return RedshiftServerlessClient(account_id=account_id, region=region, role=role) diff --git a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py index 8f7875b25..8eb7c7712 100644 --- a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py +++ b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py @@ -6,7 +6,7 @@ from dataall.base.utils.iam_policy_utils import split_policy_with_resources_in_statements from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository -from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient +from dataall.modules.redshift_datasets.aws.redshift_serverless import redshift_serverless_client class RedshiftDatasetsPivotRole(PivotRoleStatementSet): @@ -70,7 +70,7 @@ def get_statements(self): cdk_look_up_role_arn = SessionHelper.get_cdk_look_up_role_arn( accountid=self.account, region=self.region ) - rs_client = RedshiftServerlessClient( + rs_client = redshift_serverless_client( account_id=self.account, region=self.region, role=cdk_look_up_role_arn ) cluster_arns = [ diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index f658b17b3..529dbf7ad 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -17,9 +17,9 @@ LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS, ) from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection -from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient -from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient -from dataall.modules.redshift_datasets.aws.redshift import RedshiftClient +from dataall.modules.redshift_datasets.aws.redshift_data import redshift_data_client +from dataall.modules.redshift_datasets.aws.redshift_serverless import redshift_serverless_client +from dataall.modules.redshift_datasets.aws.redshift import redshift_client log = logging.getLogger(__name__) @@ -108,7 +108,7 @@ def list_connection_schemas(uri): with context.db_engine.scoped_session() as session: connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) - return RedshiftDataClient( + return redshift_data_client( account_id=environment.AwsAccountId, region=environment.region, connection=connection ).list_redshift_schemas() @@ -119,7 +119,7 @@ def list_schema_tables(uri, schema): with context.db_engine.scoped_session() as session: connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) - response = RedshiftDataClient( + response = redshift_data_client( account_id=environment.AwsAccountId, region=environment.region, connection=connection ).list_redshift_tables(schema) return response @@ -128,7 +128,7 @@ def list_schema_tables(uri, schema): def _check_redshift_connection(account_id: str, region: str, connection: RedshiftConnection): if connection.nameSpaceId: if ( - namespace := RedshiftServerlessClient(account_id=account_id, region=region).get_namespace_by_id( + namespace := redshift_serverless_client(account_id=account_id, region=region).get_namespace_by_id( connection.nameSpaceId ) ) is None: @@ -137,7 +137,7 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif ) if connection.workgroup and connection.workgroup not in [ workgroup['workgroupName'] - for workgroup in RedshiftServerlessClient( + for workgroup in redshift_serverless_client( account_id=account_id, region=region ).list_workgroups_in_namespace(namespace['namespaceName']) ]: @@ -145,7 +145,7 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif f'Redshift workgroup {connection.workgroup} does not exist or is not associated to namespace {connection.nameSpaceId}' ) - if connection.clusterId and not RedshiftClient(account_id=account_id, region=region).describe_cluster( + if connection.clusterId and not redshift_client(account_id=account_id, region=region).describe_cluster( connection.clusterId ): raise Exception( @@ -153,7 +153,7 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif ) try: - RedshiftDataClient( + redshift_data_client( account_id=account_id, region=region, connection=connection ).get_redshift_connection_database() except Exception as e: diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py index 288bc949d..0dd5425ef 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -31,7 +31,7 @@ from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository from dataall.modules.redshift_datasets.db.redshift_models import RedshiftDataset, RedshiftTable -from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient +from dataall.modules.redshift_datasets.aws.redshift_data import redshift_data_client from dataall.modules.redshift_datasets.indexers.dataset_indexer import DatasetIndexer from dataall.modules.redshift_datasets.indexers.table_indexer import DatasetTableIndexer from dataall.modules.redshift_datasets.services.redshift_constants import ( @@ -235,7 +235,7 @@ def list_redshift_schema_dataset_tables(uri): ] connection = RedshiftConnectionRepository.get_redshift_connection(session, dataset.connectionUri) environment = EnvironmentService.get_environment_by_uri(session, connection.environmentUri) - tables = RedshiftDataClient( + tables = redshift_data_client( account_id=environment.AwsAccountId, region=environment.region, connection=connection ).list_redshift_tables(dataset.schema) for table in tables: @@ -274,7 +274,7 @@ def list_redshift_dataset_table_columns(uri, filter): connection = RedshiftConnectionRepository.get_redshift_connection( session=session, uri=dataset.connectionUri ) - columns = RedshiftDataClient( + columns = redshift_data_client( account_id=dataset.AwsAccountId, region=dataset.region, connection=connection ).list_redshift_table_columns(dataset.schema, table.name) return paginate_list( diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index e6a5d76a2..9d545ef72 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -1,62 +1,15 @@ import os -import pytest + import boto3 -from dataall.base.context import set_context, dispose_context, RequestContext +import pytest +from dataall.base.context import set_context, dispose_context, RequestContext from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService -from dataall.modules.redshift_datasets.aws.redshift import RedshiftClient -from dataall.modules.redshift_datasets.aws.redshift_serverless import RedshiftServerlessClient -from dataall.modules.redshift_datasets.aws.redshift_data import RedshiftDataClient ENVNAME = os.environ.get('envname', 'pytest') -class MockRedshiftDataClient: - def get_redshift_connection_database(self, *args, **kwargs): - return True - - def list_redshift_schemas(self, *args, **kwargs): - return ['public', 'dev'] - - def list_redshift_tables(self, *args, **kwargs): - return [ - {'name': 'table1', 'type': 'TABLE'}, - {'name': 'table2', 'type': 'TABLE'}, - {'name': 'table3', 'type': 'TABLE'}, - {'name': 'table4', 'type': 'TABLE'}, - ] - - def list_redshift_table_columns(self, *args, **kwargs): - return [ - {'name': 'column1', 'type': 'VARCHAR', 'nullable': True}, - {'name': 'column2', 'type': 'INTEGER', 'nullable': False}, - {'name': 'column3', 'type': 'DOUBLE', 'nullable': True}, - {'name': 'column4', 'type': 'BOOLEAN', 'nullable': False}, - ] - - -class MockRedshiftClient: - def describe_cluster(self, *args, **kwargs): - return {'ClusterIdentifier': 'cluster_id_1', 'ClusterStatus': 'available'} - - -class MockRedshiftServerlessClient: - def get_namespace_by_id(self, *args, **kwargs): - return {'namespaceId': 'XXXXXXXXXXXXXX', 'namespaceName': 'namespace_name_1'} - - def list_workgroups_in_namespace(self, *args, **kwargs): - return [ - { - 'workgroupName': 'workgroup_name_1', - 'workgroupArn': 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1', - } - ] - - def get_workgroup_arn(self, *args, **kwargs): - return 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1' - - @pytest.fixture(scope='module', autouse=True) def patch_sts_remote_session(module_mocker): module_mocker.patch( @@ -66,26 +19,56 @@ def patch_sts_remote_session(module_mocker): @pytest.fixture(scope='function') -def patch_redshift(mocker): - # autospec=True ensures methods called in the MockClient correspond to real client methods - mocker.patch.object( - RedshiftClient, - '__new__', - return_value=MockRedshiftClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftDataClient, - '__new__', - return_value=MockRedshiftDataClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftServerlessClient, - '__new__', - return_value=MockRedshiftServerlessClient(), - autospec=True, - ) +def mock_redshift(mocker): + redshiftClient = mocker.patch('dataall.modules.redshift_datasets.aws.redshift.RedshiftClient', autospec=True) + redshiftClient.return_value.describe_cluster.return_value = { + 'ClusterIdentifier': 'cluster_id_1', + 'ClusterStatus': 'available', + } + yield redshiftClient + + +@pytest.fixture(scope='function') +def mock_redshift_data(mocker): + redshiftDataClient = mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_data.RedshiftDataClient', autospec=True + ) + redshiftDataClient.return_value.get_redshift_connection_database.return_value = True + redshiftDataClient.return_value.list_redshift_schemas.return_value = ['public', 'dev'] + redshiftDataClient.return_value.list_redshift_tables.return_value = [ + {'name': 'table1', 'type': 'TABLE'}, + {'name': 'table2', 'type': 'TABLE'}, + {'name': 'table3', 'type': 'TABLE'}, + {'name': 'table4', 'type': 'TABLE'}, + ] + redshiftDataClient.return_value.list_redshift_table_columns.return_value = [ + {'name': 'column1', 'type': 'VARCHAR', 'nullable': True}, + {'name': 'column2', 'type': 'INTEGER', 'nullable': False}, + {'name': 'column3', 'type': 'DOUBLE', 'nullable': True}, + {'name': 'column4', 'type': 'BOOLEAN', 'nullable': False}, + ] + yield redshiftDataClient + + +@pytest.fixture(scope='function') +def mock_redshift_serverless(mocker): + redshiftServerlessClient = mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient', autospec=True + ) + redshiftServerlessClient.return_value.get_namespace_by_id.return_value = { + 'namespaceId': 'XXXXXXXXXXXXXX', + 'namespaceName': 'namespace_name_1', + } + redshiftServerlessClient.return_value.list_workgroups_in_namespace.return_value = [ + { + 'workgroupName': 'workgroup_name_1', + 'workgroupArn': 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1', + } + ] + redshiftServerlessClient.return_value.get_workgroup_arn.return_value = ( + 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1' + ) + yield redshiftServerlessClient @pytest.fixture(scope='function') @@ -103,27 +86,7 @@ def api_context_2(db, user2, group2): @pytest.fixture(scope='function') -def connection1_serverless(db, user, group, env_fixture, mocker): - # autospec=True ensures methods called in the MockClient correspond to real client methods - mocker.patch.object( - RedshiftClient, - '__new__', - return_value=MockRedshiftClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftDataClient, - '__new__', - return_value=MockRedshiftDataClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftServerlessClient, - '__new__', - return_value=MockRedshiftServerlessClient(), - autospec=True, - ) - set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) +def connection1_serverless(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data, api_context_1): connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, admin_group=group.name, @@ -138,7 +101,6 @@ def connection1_serverless(db, user, group, env_fixture, mocker): 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', }, ) - dispose_context() yield connection set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) @@ -146,27 +108,7 @@ def connection1_serverless(db, user, group, env_fixture, mocker): @pytest.fixture(scope='function') -def connection2_cluster(db, user, group, env_fixture, mocker): - # autospec=True ensures methods called in the MockClient correspond to real client methods - mocker.patch.object( - RedshiftClient, - '__new__', - return_value=MockRedshiftClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftDataClient, - '__new__', - return_value=MockRedshiftDataClient(), - autospec=True, - ) - mocker.patch.object( - RedshiftServerlessClient, - '__new__', - return_value=MockRedshiftServerlessClient(), - autospec=True, - ) - set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) +def connection2_cluster(db, user, group, env_fixture, mock_redshift, mock_redshift_data, api_context_1): connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, admin_group=group.name, @@ -181,7 +123,6 @@ def connection2_cluster(db, user, group, env_fixture, mocker): 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', }, ) - dispose_context() yield connection set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) @@ -189,8 +130,7 @@ def connection2_cluster(db, user, group, env_fixture, mocker): @pytest.fixture(scope='function') -def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connection1_serverless): - set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) +def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connection1_serverless, api_context_1): dataset = RedshiftDatasetService.import_redshift_dataset( uri=env_fixture.environmentUri, admin_group=group.name, @@ -201,7 +141,6 @@ def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connecti 'schema': 'public', }, ) - dispose_context() yield dataset set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) RedshiftDatasetService.delete_redshift_dataset(uri=dataset.datasetUri) @@ -209,8 +148,7 @@ def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connecti @pytest.fixture(scope='function') -def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connection1_serverless): - set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) +def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connection1_serverless, api_context_1): dataset = RedshiftDatasetService.import_redshift_dataset( uri=env_fixture.environmentUri, admin_group=group.name, @@ -222,7 +160,6 @@ def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connec 'tables': ['table1', 'table2'], }, ) - dispose_context() yield dataset set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) RedshiftDatasetService.delete_redshift_dataset(uri=dataset.datasetUri) @@ -230,10 +167,8 @@ def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connec @pytest.fixture(scope='function') -def imported_dataset_2_table_1(db, user, group, env_fixture, imported_redshift_dataset_2_with_tables): - set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) +def imported_dataset_2_table_1(db, user, group, env_fixture, imported_redshift_dataset_2_with_tables, api_context_1): tables = RedshiftDatasetService.list_redshift_dataset_tables( uri=imported_redshift_dataset_2_with_tables.datasetUri, filter={'term': 'table1'} ) - dispose_context() yield tables['nodes'][0] diff --git a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py index d71f3851c..85d748973 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py @@ -1,15 +1,14 @@ +from unittest.mock import MagicMock + from assertpy import assert_that -from unittest.mock import MagicMock, patch -from .conftest import MockRedshiftClient, MockRedshiftDataClient, MockRedshiftServerlessClient + from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService -def test_create_redshift_connection_namespace_not_found(env_fixture, api_context_1, group, mocker): +def test_create_redshift_connection_namespace_not_found(env_fixture, api_context_1, group, mock_redshift_serverless): # Given a namespace that does not exist - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.get_namespace_by_id', - return_value=None, - ) + mock_redshift_serverless.return_value.get_namespace_by_id.return_value = None + # Then assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( uri=env_fixture.environmentUri, @@ -27,15 +26,11 @@ def test_create_redshift_connection_namespace_not_found(env_fixture, api_context ).contains('Redshift namespaceId not-existent-id does not exist') -def test_create_redshift_connection_workgroup_not_in_namespace(env_fixture, api_context_1, group, mocker): - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.get_namespace_by_id', - return_value=MockRedshiftServerlessClient().get_namespace_by_id(), - ) - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient.list_workgroups_in_namespace', - return_value=[], - ) +def test_create_redshift_connection_workgroup_not_in_namespace( + env_fixture, api_context_1, group, mock_redshift_serverless +): + # Given a workgroup that is not in the namespace + mock_redshift_serverless.return_value.list_workgroups_in_namespace.return_value = [] # Then assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( @@ -54,12 +49,9 @@ def test_create_redshift_connection_workgroup_not_in_namespace(env_fixture, api_ ).contains('Redshift workgroup workgroup-id does not exist or is not associated to namespace not-existent-id') -def test_create_redshift_connection_cluster_not_found(env_fixture, api_context_1, group, mocker): +def test_create_redshift_connection_cluster_not_found(env_fixture, api_context_1, group, mock_redshift): # Given a redshift cluster id that does not exist - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift.RedshiftClient.describe_cluster', - return_value=False, - ) + mock_redshift.return_value.describe_cluster.return_value = False # Then assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( @@ -78,21 +70,11 @@ def test_create_redshift_connection_cluster_not_found(env_fixture, api_context_1 ).contains('Redshift cluster cluster-id does not exist or cannot be accessed with these parameters') -def test_create_redshift_connection_database_not_found(env_fixture, api_context_1, group, mocker): +def test_create_redshift_connection_database_not_found( + env_fixture, api_context_1, group, mock_redshift, mock_redshift_data +): # Given a redshift cluster id - mock_redshift = MagicMock() - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift.RedshiftClient.describe_cluster', - return_value=mock_redshift, - autospec=True, - ) - mock_redshift.describe_cluster.return_value = MockRedshiftClient().describe_cluster() - mock_redshift_data = MagicMock() - mocker.patch( - 'dataall.modules.redshift_datasets.aws.redshift_data.RedshiftDataClient', - return_value=mock_redshift_data, - ) - mock_redshift_data.get_redshift_connection_database.side_effect = Exception + mock_redshift_data.return_value.get_redshift_connection_database.side_effect = Exception # Then assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( @@ -127,7 +109,7 @@ def test_create_redshift_cluster_connection(connection2_cluster): assert_that(connection2_cluster.redshiftType).is_equal_to('cluster') -def test_get_redshift_connection(connection1_serverless, api_context_1, patch_redshift): +def test_get_redshift_connection(connection1_serverless, api_context_1): # When connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=connection1_serverless.connectionUri) @@ -137,14 +119,14 @@ def test_get_redshift_connection(connection1_serverless, api_context_1, patch_re assert_that(connection.redshiftType).is_equal_to('serverless') -def test_get_redshift_connection_unauthorized(connection1_serverless, api_context_2, patch_redshift): +def test_get_redshift_connection_unauthorized(connection1_serverless, api_context_2): # When assert_that(RedshiftConnectionService.get_redshift_connection_by_uri).raises(Exception).when_called_with( uri=connection1_serverless.connectionUri ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) -def test_delete_redshift_connection(api_context_1, env_fixture, group, patch_redshift): +def test_delete_redshift_connection(api_context_1, env_fixture, group, mock_redshift_serverless, mock_redshift_data): connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, admin_group=group.name, @@ -165,7 +147,7 @@ def test_delete_redshift_connection(api_context_1, env_fixture, group, patch_red assert_that(response).is_true() -def test_delete_redshift_connection_unauthorized(connection1_serverless, api_context_2, patch_redshift): +def test_delete_redshift_connection_unauthorized(connection1_serverless, api_context_2): # When assert_that(RedshiftConnectionService.delete_redshift_connection).raises(Exception).when_called_with( uri=connection1_serverless.connectionUri @@ -207,10 +189,10 @@ def test_list_environment_redshift_connections_unauthorized( ).contains('UnauthorizedOperation', 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS', env_fixture.environmentUri) -def test_list_connection_schemas(connection1_serverless, api_context_1, patch_redshift): +def test_list_connection_schemas(connection1_serverless, api_context_1, mock_redshift_data): # When response = RedshiftConnectionService.list_connection_schemas(uri=connection1_serverless.connectionUri) - assert_that(response).is_equal_to(MockRedshiftDataClient().list_redshift_schemas()) + assert_that(response).contains('public', 'dev') def test_list_connection_schemas_unauthorized(connection1_serverless, api_context_2): @@ -220,10 +202,10 @@ def test_list_connection_schemas_unauthorized(connection1_serverless, api_contex ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) -def test_list_schema_tables(connection1_serverless, api_context_1, patch_redshift): +def test_list_schema_tables(connection1_serverless, api_context_1, mock_redshift_data): # When response = RedshiftConnectionService.list_schema_tables(uri=connection1_serverless.connectionUri, schema='schema1') - assert_that(response).is_equal_to(MockRedshiftDataClient().list_redshift_tables()) + assert_that(response).is_length(4) def test_list_schema_tables_unauthorized(connection1_serverless, api_context_2): diff --git a/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py index 2f9b58912..2559d8501 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py @@ -1,6 +1,5 @@ from assertpy import assert_that from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService -from .conftest import MockRedshiftDataClient def test_import_redshift_dataset_with_no_tables(imported_redshift_dataset_1_no_tables, api_context_1): @@ -174,7 +173,7 @@ def test_list_redshift_schema_dataset_tables_unauthorized(imported_redshift_data ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) -def test_list_redshift_schema_dataset_tables(imported_redshift_dataset_1_no_tables, patch_redshift, api_context_1): +def test_list_redshift_schema_dataset_tables(imported_redshift_dataset_1_no_tables, mock_redshift, api_context_1): # When tables = RedshiftDatasetService.list_redshift_schema_dataset_tables( uri=imported_redshift_dataset_1_no_tables.datasetUri @@ -227,4 +226,4 @@ def test_list_redshift_dataset_table_columns(imported_dataset_2_table_1, api_con ) # Then assert_that(response).contains_key('count', 'page', 'pages', 'nodes') - assert_that(response['nodes']).is_equal_to(MockRedshiftDataClient().list_redshift_table_columns()) + assert_that(response['nodes']).is_length(4) From fec4ecccaf70e4ce62656cd7f7037b6cae8283b5 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 6 Aug 2024 10:58:31 +0200 Subject: [PATCH 014/188] Redshift data sharing - Cluster encryption guardrails and information (#1447) ### Feature or Bugfix - Feature TO BE MERGED AFTER https://github.com/data-dot-all/dataall/pull/1424 and after #1449 ### Detail This PR is part of the design explained in detail in #955 - Add check that verifies the Redshift cluster imported is encrypted before creating a redshift connection - Store the Redshift encryption type in the redshift-connection table. This is needed because Redshift datashares only work between namespaces that use the same encryption type - In the migration script and in the db model of the redshift-connection table we add the columns encryptionType and connectionType. ConnectionType is not needed in this particular PR, but it will be needed in the next PR. It is added to simplify the migration scripts ### Relates - #955 - Sharing part ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/connections/types.py | 1 + .../redshift_datasets/aws/kms_redshift.py | 37 +++++++++++++ .../aws/redshift_serverless.py | 2 + .../redshift_datasets/db/redshift_models.py | 2 + .../services/redshift_connection_service.py | 54 ++++++++++++++++--- .../services/redshift_enums.py | 11 ++++ ...4b72ca4_add_encryption_column_redshift_.py | 33 ++++++++++++ tests/modules/redshift_datasets/conftest.py | 14 ++++- .../test_unit_redshift_connection_service.py | 25 +++++++++ 9 files changed, 171 insertions(+), 8 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets/aws/kms_redshift.py create mode 100644 backend/migrations/versions/b2ca24b72ca4_add_encryption_column_redshift_.py diff --git a/backend/dataall/modules/redshift_datasets/api/connections/types.py b/backend/dataall/modules/redshift_datasets/api/connections/types.py index 54a6d3968..b509b3668 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/types.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/types.py @@ -15,6 +15,7 @@ gql.Field('database', gql.String), gql.Field('redshiftUser', gql.String), gql.Field('secretArn', gql.String), + gql.Field('encryptionType', gql.String), ], ) diff --git a/backend/dataall/modules/redshift_datasets/aws/kms_redshift.py b/backend/dataall/modules/redshift_datasets/aws/kms_redshift.py new file mode 100644 index 000000000..e032227cb --- /dev/null +++ b/backend/dataall/modules/redshift_datasets/aws/kms_redshift.py @@ -0,0 +1,37 @@ +import logging + +from dataall.base.aws.sts import SessionHelper +from botocore.exceptions import ClientError + + +log = logging.getLogger(__name__) + + +class KmsClient: + def __init__(self, account_id: str, region: str): + session = SessionHelper.remote_session(accountid=account_id, region=region) + self._client = session.client('kms', region_name=region) + self._account_id = account_id + self.region = region + + def describe_kms_key(self, key_id: str): + # The same client function is defined in the data_sharing module. Duplication is allowed to avoid coupling. + try: + response = self._client.describe_key( + KeyId=key_id, + ) + log.info(f'KMS key used to encrypt cluster {response=}') + except ClientError as e: + if e.response['Error']['Code'] == 'AccessDenied': + raise Exception( + f'Data.all Environment Pivot Role does not have kms:DescribeKey Permission for key {key_id}: {e}' + ) + log.error(f'Failed to describe key {key_id}: {e}') + return None + else: + return response['KeyMetadata'] + + +def kms_redshift_client(account_id: str, region: str) -> KmsClient: + "Factory of Client" + return KmsClient(account_id=account_id, region=region) diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py index 04970dc1d..0d917fa92 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift_serverless.py @@ -14,12 +14,14 @@ def __init__(self, account_id: str, region: str, role=None) -> None: self.client = session.client(service_name='redshift-serverless', region_name=region) def get_namespace_by_id(self, namespace_id: str): + log.info(f'Get namespace with {namespace_id=}') response = self.client.list_namespaces() namespaces = response.get('namespaces', []) namespaces_filtered = [namespace for namespace in namespaces if namespace['namespaceId'] == namespace_id] return namespaces_filtered[0] if namespaces_filtered else None def list_workgroups_in_namespace(self, namespace_name: str) -> List[dict]: + log.info(f'Listing workgroups in {namespace_name=}') response = self.client.list_workgroups() workgroups = response.get('workgroups', []) return [wg for wg in workgroups if wg['namespaceName'] == namespace_name] diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_models.py b/backend/dataall/modules/redshift_datasets/db/redshift_models.py index e2012b922..683e01693 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_models.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_models.py @@ -17,6 +17,8 @@ class RedshiftConnection(Base, Resource): database = Column(String, nullable=False) redshiftUser = Column(String, nullable=True) secretArn = Column(String, nullable=True) + encryptionType = Column(String, nullable=True) + connectionType = Column(String, nullable=False) class RedshiftDataset(DatasetBase): diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index 529dbf7ad..b94d2a428 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -20,6 +20,12 @@ from dataall.modules.redshift_datasets.aws.redshift_data import redshift_data_client from dataall.modules.redshift_datasets.aws.redshift_serverless import redshift_serverless_client from dataall.modules.redshift_datasets.aws.redshift import redshift_client +from dataall.modules.redshift_datasets.aws.kms_redshift import kms_redshift_client +from dataall.modules.redshift_datasets.services.redshift_enums import ( + RedshiftType, + RedshiftEncryptionType, + RedshiftConnectionTypes, +) log = logging.getLogger(__name__) @@ -46,10 +52,14 @@ def create_redshift_connection(uri, admin_group, data: dict) -> RedshiftConnecti database=data.get('database'), redshiftUser=data.get('redshiftUser', ''), secretArn=data.get('secretArn', ''), + connectionType=data.get('connectionType', RedshiftConnectionTypes.DATA_USER.value), ) RedshiftConnectionService._check_redshift_connection( account_id=environment.AwsAccountId, region=environment.region, connection=connection ) + connection.encryptionType = RedshiftConnectionService._get_redshift_encryption( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ).value RedshiftConnectionRepository.save_redshift_connection(session, connection) ResourcePolicyService.attach_resource_policy( @@ -145,13 +155,16 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif f'Redshift workgroup {connection.workgroup} does not exist or is not associated to namespace {connection.nameSpaceId}' ) - if connection.clusterId and not redshift_client(account_id=account_id, region=region).describe_cluster( - connection.clusterId - ): - raise Exception( - f'Redshift cluster {connection.clusterId} does not exist or cannot be accessed with these parameters' - ) - + if connection.clusterId: + cluster = redshift_client(account_id=account_id, region=region).describe_cluster(connection.clusterId) + if not cluster: + raise Exception( + f'Redshift cluster {connection.clusterId} does not exist or cannot be accessed with these parameters' + ) + if not cluster.get('Encrypted', False): + raise Exception( + f'Redshift cluster {connection.clusterId} is not encrypted. Data.all clusters MUST be encrypted' + ) try: redshift_data_client( account_id=account_id, region=region, connection=connection @@ -161,3 +174,30 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif f'Redshift database {connection.database} does not exist or cannot be accessed with these parameters: {e}' ) return + + @staticmethod + def _get_redshift_encryption( + account_id: str, region: str, connection: RedshiftConnection + ) -> RedshiftEncryptionType: + if connection.redshiftType == RedshiftType.Serverless.value: + namespace = redshift_serverless_client(account_id=account_id, region=region).get_namespace_by_id( + connection.nameSpaceId + ) + return ( + RedshiftEncryptionType.AWS_OWNED_KMS_KEY + if namespace.get('kmsKeyId', None) == RedshiftEncryptionType.AWS_OWNED_KMS_KEY.value + else RedshiftEncryptionType.CUSTOMER_MANAGED_KMS_KEY + ) + if connection.redshiftType == RedshiftType.Cluster.value: + cluster = redshift_client(account_id=account_id, region=region).describe_cluster(connection.clusterId) + if key_id := cluster.get('KmsKeyId', None): + key = kms_redshift_client(account_id=account_id, region=region).describe_kms_key(key_id=key_id) + if key.get('KeyManager', None) == 'AWS': + return RedshiftEncryptionType.AWS_OWNED_KMS_KEY + elif key.get('KeyManager', None) == 'CUSTOMER': + return RedshiftEncryptionType.CUSTOMER_MANAGED_KMS_KEY + else: + raise Exception + if cluster.get('HsmStatus', None): + return RedshiftEncryptionType.HSM + raise Exception diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_enums.py b/backend/dataall/modules/redshift_datasets/services/redshift_enums.py index 52e052a32..6fdbdd592 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_enums.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_enums.py @@ -4,3 +4,14 @@ class RedshiftType(Enum): Serverless = 'serverless' Cluster = 'cluster' + + +class RedshiftEncryptionType(Enum): + AWS_OWNED_KMS_KEY = 'AWS_OWNED_KMS_KEY' + CUSTOMER_MANAGED_KMS_KEY = 'CUSTOMER_MANAGED_KMS_KEY' + HSM = 'HSM' + + +class RedshiftConnectionTypes(Enum): + DATA_USER = 'DATA_USER' + ADMIN = 'ADMIN' diff --git a/backend/migrations/versions/b2ca24b72ca4_add_encryption_column_redshift_.py b/backend/migrations/versions/b2ca24b72ca4_add_encryption_column_redshift_.py new file mode 100644 index 000000000..4ea6954f8 --- /dev/null +++ b/backend/migrations/versions/b2ca24b72ca4_add_encryption_column_redshift_.py @@ -0,0 +1,33 @@ +"""add_encryption_column_redshift_connection + +Revision ID: b2ca24b72ca4 +Revises: 852cdf6cf1e0 +Create Date: 2024-07-31 15:52:32.597785 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b2ca24b72ca4' +down_revision = '852cdf6cf1e0' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + 'redshift_connection', + sa.Column('encryptionType', sa.String(), nullable=True), + ) + op.add_column( + 'redshift_connection', + sa.Column('connectionType', sa.String(), nullable=False), + ) + + +def downgrade(): + op.drop_column('redshift_connection', 'encryptionType') + op.drop_column('redshift_connection', 'connectionType') diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index 9d545ef72..8aa0d0911 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -24,6 +24,8 @@ def mock_redshift(mocker): redshiftClient.return_value.describe_cluster.return_value = { 'ClusterIdentifier': 'cluster_id_1', 'ClusterStatus': 'available', + 'Encrypted': True, + 'KmsKeyId': 'some-key-id', } yield redshiftClient @@ -58,6 +60,7 @@ def mock_redshift_serverless(mocker): redshiftServerlessClient.return_value.get_namespace_by_id.return_value = { 'namespaceId': 'XXXXXXXXXXXXXX', 'namespaceName': 'namespace_name_1', + 'KmsKeyId': 'AWS_OWNED_KMS_KEY', } redshiftServerlessClient.return_value.list_workgroups_in_namespace.return_value = [ { @@ -71,6 +74,13 @@ def mock_redshift_serverless(mocker): yield redshiftServerlessClient +@pytest.fixture(scope='function') +def mock_redshift_kms(mocker): + kmsClient = mocker.patch('dataall.modules.redshift_datasets.aws.kms_redshift.KmsClient', autospec=True) + kmsClient.return_value.describe_kms_key.return_value = {'KeyManager': 'AWS'} + yield kmsClient + + @pytest.fixture(scope='function') def api_context_1(db, user, group): yield set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) @@ -108,7 +118,9 @@ def connection1_serverless(db, user, group, env_fixture, mock_redshift_serverles @pytest.fixture(scope='function') -def connection2_cluster(db, user, group, env_fixture, mock_redshift, mock_redshift_data, api_context_1): +def connection2_cluster( + db, user, group, env_fixture, mock_redshift, mock_redshift_data, mock_redshift_kms, api_context_1 +): connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, admin_group=group.name, diff --git a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py index 85d748973..a3274fa05 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py @@ -70,6 +70,31 @@ def test_create_redshift_connection_cluster_not_found(env_fixture, api_context_1 ).contains('Redshift cluster cluster-id does not exist or cannot be accessed with these parameters') +def test_create_redshift_connection_cluster_not_encrypted(env_fixture, api_context_1, group, mock_redshift): + # Given a redshift cluster id that is not encrypted + mock_redshift.return_value.describe_cluster.return_value = { + 'ClusterIdentifier': 'cluster_id_1', + 'ClusterStatus': 'available', + 'Encrypted': False, + } + + # Then + assert_that(RedshiftConnectionService.create_redshift_connection).raises(Exception).when_called_with( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'cluster', + 'clusterId': 'cluster-id', + 'nameSpaceId': None, + 'workgroup': None, + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + }, + ).contains('is not encrypted. Data.all clusters MUST be encrypted') + + def test_create_redshift_connection_database_not_found( env_fixture, api_context_1, group, mock_redshift, mock_redshift_data ): From 5dd10c9faba56478c45d97c985d29213bb717e99 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:29:28 +0200 Subject: [PATCH 015/188] Redshift data sharing - frontend changes in the Catalog - clean (#1458) ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is part of the redshift dataset sharing implementation. (It is easier to see the snapshots) - To be able to share redshift items this PR enables the request access button for redshift tables and datasets - IMPORTANT: New request modal for Redshift Datasets that lists namespaces with connections that are of type ADMIN (we cannot open a share request for namespaces that are not "linked" to data.all). See a screenshot of this request below: - It adds icons in the Catalog search view for each item - It adds the type of item right below the Catalog item - It standardizes the icons used in the dataset list and in the Catalog with the latests AWS public icons - It fixes the principal type for principals that are not groups or consumption roles - It moves the consumption data details outside of the share view as a child component and renders it conditionally only if the dataset type is S3. ![Screenshot 2024-08-05 at 16 14 26](https://github.com/user-attachments/assets/35e60ada-3ce0-4fad-a1b0-c4f631624b3f) ![Screenshot 2024-08-05 at 17 45 15](https://github.com/user-attachments/assets/d7d67a9f-8387-425e-b17c-d1ae9f8745bd) ### Key decisions - Separate request modal for redshift - we could have re-used the request access modal, but it contains several elements that are very particular to S3 (e.g. consumption roles, checking that the policy is attached). So I decided to keep it separate. This way future changes to any of the sharing methods is independent from each other. ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/connections/input_types.py | 1 + .../db/redshift_connection_repositories.py | 2 + .../modules/shares_base/api/resolvers.py | 11 +- .../dataall/modules/shares_base/api/types.py | 1 + .../icons/Arch_Amazon-QuickSight_64.svg | 10 + .../static/icons/Arch_Amazon-Redshift_64.svg | 10 + .../Arch_Amazon-Simple-Storage-Service_64.svg | 12 + frontend/public/static/icons/amazon-s3.svg | 1 - frontend/public/static/icons/aws-redshift.svg | 1 - .../components/GlossarySearchResultItem.js | 241 ++++---- .../components/RequestRedshiftAccessModal.js | 534 ++++++++++++++++++ .../src/modules/Catalog/components/index.js | 1 + .../components/DatasetListItem.js | 6 +- .../Shares/components/S3ConsumptionData.js | 184 ++++++ .../src/modules/Shares/components/index.js | 1 + .../modules/Shares/services/getShareObject.js | 1 + .../src/modules/Shares/views/ShareView.js | 152 +---- 17 files changed, 887 insertions(+), 282 deletions(-) create mode 100644 frontend/public/static/icons/Arch_Amazon-QuickSight_64.svg create mode 100644 frontend/public/static/icons/Arch_Amazon-Redshift_64.svg create mode 100644 frontend/public/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg delete mode 100644 frontend/public/static/icons/amazon-s3.svg delete mode 100644 frontend/public/static/icons/aws-redshift.svg create mode 100644 frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js create mode 100644 frontend/src/modules/Shares/components/S3ConsumptionData.js diff --git a/backend/dataall/modules/redshift_datasets/api/connections/input_types.py b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py index d742324c8..4b8d0948a 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/input_types.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py @@ -26,5 +26,6 @@ gql.Argument('pageSize', gql.Integer), gql.Argument('environmentUri', gql.String), gql.Argument('groupUri', gql.String), + gql.Argument('connectionType', gql.String), ], ) diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py index 1e2a779ab..742a850e8 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -50,6 +50,8 @@ def _query_user_redshift_connections(session, username, groups, filter) -> Query query = query.filter(RedshiftConnection.environmentUri == filter.get('environmentUri')) if filter and filter.get('groupUri'): query = query.filter(RedshiftConnection.SamlGroupName == filter.get('groupUri')) + if filter and filter.get('connectionType'): + query = query.filter(RedshiftConnection.connectionType == filter.get('connectionType')) if filter and filter.get('term'): query = query.filter( or_( diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index dc43640ba..d24dbc9cf 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -7,7 +7,7 @@ from dataall.base.db.exceptions import RequiredParameter from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository -from dataall.modules.shares_base.services.shares_enums import ShareObjectPermission +from dataall.modules.shares_base.services.shares_enums import ShareObjectPermission, PrincipalType from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject from dataall.modules.shares_base.services.share_item_service import ShareItemService from dataall.modules.shares_base.services.share_object_service import ShareObjectService @@ -187,6 +187,7 @@ def resolve_dataset(context: Context, source: ShareObject, **kwargs): 'region': env.region if env else 'NotFound', 'exists': True if ds else False, 'description': ds.description, + 'datasetType': ds.datasetType, } @@ -195,17 +196,19 @@ def resolve_principal(context: Context, source: ShareObject, **kwargs): return None with context.engine.scoped_session() as session: - if source.principalType in ['Group', 'ConsumptionRole']: + if source.principalType in set(item.value for item in PrincipalType): environment = EnvironmentService.get_environment_by_uri(session, source.environmentUri) organization = OrganizationRepository.get_organization_by_uri(session, environment.organizationUri) - if source.principalType in ['ConsumptionRole']: + if source.principalType == PrincipalType.ConsumptionRole.value: principal = EnvironmentService.get_environment_consumption_role( session, source.principalId, source.environmentUri ) principalName = f'{principal.consumptionRoleName} [{principal.IAMRoleArn}]' - else: + elif source.principalType == PrincipalType.Group.value: principal = EnvironmentService.get_environment_group(session, source.groupUri, source.environmentUri) principalName = f'{source.groupUri} [{principal.environmentIAMRoleArn}]' + else: + principalName = source.principalId return { 'principalId': source.principalId, diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 293ed96f4..3f96c1f52 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -99,6 +99,7 @@ gql.Field(name='region', type=gql.String), gql.Field(name='exists', type=gql.Boolean), gql.Field(name='description', type=gql.String), + gql.Field(name='datasetType', type=gql.String), ], ) diff --git a/frontend/public/static/icons/Arch_Amazon-QuickSight_64.svg b/frontend/public/static/icons/Arch_Amazon-QuickSight_64.svg new file mode 100644 index 000000000..f8e212d93 --- /dev/null +++ b/frontend/public/static/icons/Arch_Amazon-QuickSight_64.svg @@ -0,0 +1,10 @@ + + + Icon-Architecture/64/Arch_Amazon-QuickSight_64 + + + + + + + \ No newline at end of file diff --git a/frontend/public/static/icons/Arch_Amazon-Redshift_64.svg b/frontend/public/static/icons/Arch_Amazon-Redshift_64.svg new file mode 100644 index 000000000..4a36d2dd1 --- /dev/null +++ b/frontend/public/static/icons/Arch_Amazon-Redshift_64.svg @@ -0,0 +1,10 @@ + + + Icon-Architecture/64/Arch_Amazon-Redshift_64 + + + + + + + \ No newline at end of file diff --git a/frontend/public/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg b/frontend/public/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg new file mode 100644 index 000000000..a562fe1f6 --- /dev/null +++ b/frontend/public/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg @@ -0,0 +1,12 @@ + + + Icon-Architecture/64/Arch_Amazon-Simple-Storage-Service_64 + + + + + + + + + \ No newline at end of file diff --git a/frontend/public/static/icons/amazon-s3.svg b/frontend/public/static/icons/amazon-s3.svg deleted file mode 100644 index cd203eaad..000000000 --- a/frontend/public/static/icons/amazon-s3.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/public/static/icons/aws-redshift.svg b/frontend/public/static/icons/aws-redshift.svg deleted file mode 100644 index 364155af6..000000000 --- a/frontend/public/static/icons/aws-redshift.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js b/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js index 0b94b91e8..3594818d0 100644 --- a/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js +++ b/frontend/src/modules/Catalog/components/GlossarySearchResultItem.js @@ -10,48 +10,65 @@ import { Button, Link, Tooltip, - Typography + Typography, + Avatar } from '@mui/material'; import PropTypes from 'prop-types'; import React, { useState } from 'react'; -import * as BsIcons from 'react-icons/bs'; import * as FaIcons from 'react-icons/fa'; -import * as FiIcons from 'react-icons/fi'; -import { MdShowChart } from 'react-icons/md'; -import * as ReactIf from 'react-if'; import { Link as RouterLink } from 'react-router-dom'; -import { IconAvatar, useCardStyle } from 'design'; +import { useCardStyle } from 'design'; import { dayjs } from 'utils'; import { RequestAccessModal } from './RequestAccessModal'; import { RequestDashboardAccessModal } from './RequestDashboardAccessModal'; +import { RequestRedshiftAccessModal } from './RequestRedshiftAccessModal'; -const HitICon = ({ hit }) => ( - - - } /> - - - } /> - - - } /> - - - } /> - - -); +// Add new types of items by adding them in the following type_dicts +// DO NOT change the returned frontend view -HitICon.propTypes = { - hit: PropTypes.object.isRequired +const icon_paths_by_type = { + dataset: '/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg', + table: '/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg', + folder: '/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg', + dashboard: '/static/icons/Arch_Amazon-Quicksight_64.svg', + redshiftdataset: '/static/icons/Arch_Amazon-Redshift_64.svg', + redshifttable: '/static/icons/Arch_Amazon-Redshift_64.svg' +}; + +const redirect_link_by_type = { + dataset: '/console/s3-datasets/', + table: '/console/s3-datasets/table/', + folder: '/console/s3-datasets/folder/', + dashboard: '/console/dashboards/', + redshiftdataset: '/console/redshift-datasets/', + redshifttable: '/console/redshift-datasets/table/' +}; + +const tooltip_message_by_type = { + dataset: `Create the request in which to add Glue tables, S3 prefixes and S3 Buckets`, + table: `Create the request to a S3/Glue Dataset already adding this table`, + folder: `Create the request to a S3/Glue Dataset already adding this folder`, + dashboard: `Create the request to a Quicksight Dashboard`, + redshiftdataset: `Create the request in which to add Redshift tables`, + redshifttable: `Create the request to a Redshift Dataset already adding this table` +}; + +const tooltip_span_by_type = { + dataset: `S3/Glue Dataset`, + table: `Glue Table`, + folder: `S3 Prefix`, + dashboard: `Quicksight Dashboard`, + redshiftdataset: `Redshift Dataset`, + redshifttable: `Redshift Table` +}; + +const upvotes_enabled_by_type = { + dataset: true, + table: false, + folder: false, + dashboard: false, + redshiftdataset: true, + redshifttable: false }; export const GlossarySearchResultItem = ({ hit }) => { @@ -61,6 +78,9 @@ export const GlossarySearchResultItem = ({ hit }) => { const [isRequestDashboardAccessOpen, setIsRequestDashboardAccessOpen] = useState(false); const [isOpeningDashboardModal, setIsOpeningDashboardModal] = useState(false); + const [isRequestRedshiftAccessOpen, setIsRequestRedshiftAccessOpen] = + useState(false); + const [isOpeningRedshiftModal, setIsOpeningRedshiftModal] = useState(false); const handleRequestAccessModalOpen = () => { setIsOpeningModal(true); setIsRequestAccessOpen(true); @@ -80,6 +100,16 @@ export const GlossarySearchResultItem = ({ hit }) => { setIsRequestDashboardAccessOpen(false); }; + const handleRequestRedshiftAccessModalOpen = () => { + setIsOpeningRedshiftModal(true); + setIsRequestRedshiftAccessOpen(true); + }; + + const handleRequestRedshiftAccessModalClose = () => { + setIsOpeningRedshiftModal(false); + setIsRequestRedshiftAccessOpen(false); + }; + return ( @@ -89,80 +119,36 @@ export const GlossarySearchResultItem = ({ hit }) => { display: 'flex' }} > - + - {hit.resourceKind === 'dataset' && ( - - {hit.label} - - )} - {hit.resourceKind === 'table' && ( - - {hit.label} - - )} - {hit.resourceKind === 'folder' && ( - - {hit.label} - - )} - {hit.resourceKind === 'dashboard' && ( - - {hit.label} - - )} - {hit.resourceKind === 'redshiftdataset' && ( - - {hit.label} - - )} - {hit.resourceKind === 'redshifttable' && ( - - {hit.label} - - )} - - by{' '} - - {hit.owner} - {' '} - | created {dayjs(hit.created).fromNow()} + + {hit.label} + + + + + {tooltip_span_by_type[hit.resourceKind]} + @@ -173,20 +159,12 @@ export const GlossarySearchResultItem = ({ hit }) => { px: 3 }} > - - - {hit.description || 'No description provided'} - + + by{' '} + + {hit.owner} + {' '} + | created {dayjs(hit.created).fromNow()}
{ }} > - {hit.resourceKind === 'redshiftdataset' || - hit.resourceKind === 'redshifttable' ? null : isOpeningModal || - isOpeningDashboardModal ? ( + {isOpeningModal || + isOpeningDashboardModal || + isOpeningRedshiftModal ? ( ) : ( + + )} + + )} + + + + )} + {step === 1 && ( + + )} + + ); +}; + +RequestRedshiftAccessModal.propTypes = { + hit: PropTypes.object.isRequired, + onApply: PropTypes.func, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + stopLoader: PropTypes.func +}; diff --git a/frontend/src/modules/Catalog/components/index.js b/frontend/src/modules/Catalog/components/index.js index b56943fb6..02d314cb9 100644 --- a/frontend/src/modules/Catalog/components/index.js +++ b/frontend/src/modules/Catalog/components/index.js @@ -3,3 +3,4 @@ export * from './GlossarySearchWrapper'; export * from './GlossarySearchResultItem'; export * from './RequestAccessModal'; export * from './RequestDashboardAccessModal'; +export * from './RequestRedshiftAccessModal'; diff --git a/frontend/src/modules/DatasetsBase/components/DatasetListItem.js b/frontend/src/modules/DatasetsBase/components/DatasetListItem.js index 23cdc5d87..7127d3144 100644 --- a/frontend/src/modules/DatasetsBase/components/DatasetListItem.js +++ b/frontend/src/modules/DatasetsBase/components/DatasetListItem.js @@ -27,9 +27,9 @@ export const DatasetListItem = (props) => { : '-'; const datasetTypeIcon = dataset.datasetType === 'DatasetTypes.S3' - ? `/static/icons/amazon-s3.svg` + ? `/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg` : dataset.datasetType === 'DatasetTypes.Redshift' - ? `/static/icons/aws-redshift.svg` + ? `/static/icons/Arch_Amazon-Redshift_64.svg` : '-'; const classes = useCardStyle(); const navigate = useNavigate(); @@ -45,7 +45,7 @@ export const DatasetListItem = (props) => { display: 'flex' }} > - + { + const { share } = props; + const theme = useTheme(); + const { enqueueSnackbar } = useSnackbar(); + const client = useClient(); + const dispatch = useDispatch(); + const params = useParams(); + const [consumptionData, setConsumptionData] = useState({}); + const fetchData = useCallback(async () => { + const response_c = await client.query( + getS3ConsumptionData({ + shareUri: params.uri + }) + ); + if (!response_c.errors) { + setConsumptionData({ + s3bucketName: response_c.data.getS3ConsumptionData.s3bucketName, + s3AccessPointName: + response_c.data.getS3ConsumptionData.s3AccessPointName, + sharedGlueDatabase: + response_c.data.getS3ConsumptionData.sharedGlueDatabase + }); + } else { + dispatch({ type: SET_ERROR, error: response_c.errors[0].message }); + } + }, [client, dispatch, share]); + + useEffect(() => { + if (client && share) { + fetchData().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + } + }, [client, fetchData, dispatch, share]); + + const copyNotification = () => { + enqueueSnackbar('Copied to clipboard', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + }; + + return ( + + + + + + + + + + + S3 Bucket name (Bucket sharing): + + + {` ${consumptionData.s3bucketName || '-'}`} + + + copyNotification()} + text={`aws s3 ls s3://${consumptionData.s3bucketName}`} + > + + + + + {`aws s3 ls s3://${consumptionData.s3bucketName}`} + + + + + S3 Access Point name (Folder sharing): + + + {` ${consumptionData.s3AccessPointName || '-'}`} + + + copyNotification()} + text={`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} + > + + + + + {`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} + + + + + Glue database name (Table sharing): + + + {` ${consumptionData.sharedGlueDatabase || '-'}`} + + + copyNotification()} + text={`SELECT * FROM ${consumptionData.sharedGlueDatabase}.TABLENAME`} + > + + + + + {`SELECT * FROM ${consumptionData.sharedGlueDatabase}.TABLENAME`} + + + + + + + ); +}; + +S3ConsumptionData.propTypes = { + share: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Shares/components/index.js b/frontend/src/modules/Shares/components/index.js index 86373e838..7c4f98d5d 100644 --- a/frontend/src/modules/Shares/components/index.js +++ b/frontend/src/modules/Shares/components/index.js @@ -1,4 +1,5 @@ export * from './AddShareItemModal'; +export * from './S3ConsumptionData'; export * from './ShareBoxList'; export * from './ShareBoxListItem'; export * from './ShareRejectModal'; diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index b71542192..2c79e240b 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -56,6 +56,7 @@ export const getShareObject = ({ shareUri, filter }) => ({ region exists description + datasetType } } } diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 7bb05feda..051df5de2 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -2,7 +2,6 @@ import { Article, BlockOutlined, CheckCircleOutlined, - CopyAllOutlined, DeleteOutlined, RefreshRounded } from '@mui/icons-material'; @@ -18,7 +17,6 @@ import { Container, Divider, Grid, - IconButton, Link, List, ListItem, @@ -31,11 +29,9 @@ import { Typography } from '@mui/material'; import CircularProgress from '@mui/material/CircularProgress'; -import { useTheme } from '@mui/styles'; import { useSnackbar } from 'notistack'; import * as PropTypes from 'prop-types'; import React, { useCallback, useEffect, useState } from 'react'; -import { CopyToClipboard } from 'react-copy-to-clipboard/lib/Component'; import { Helmet } from 'react-helmet-async'; import { useNavigate } from 'react-router'; import { Link as RouterLink, useParams } from 'react-router-dom'; @@ -61,11 +57,11 @@ import { submitApproval, revokeItemsShareObject, verifyItemsShareObject, - reApplyItemsShareObject, - getS3ConsumptionData + reApplyItemsShareObject } from '../services'; import { AddShareItemModal, + S3ConsumptionData, ShareItemsSelectorModal, ShareRejectModal, UpdateRejectReason, @@ -527,7 +523,6 @@ const ShareView = () => { const dispatch = useDispatch(); const params = useParams(); const client = useClient(); - const theme = useTheme(); const [loading, setLoading] = useState(true); const [loadingShareItems, setLoadingShareItems] = useState(false); const [isAddItemModalOpen, setIsAddItemModalOpen] = useState(false); @@ -535,7 +530,6 @@ const ShareView = () => { const [isVerifyItemsModalOpen, setIsVerifyItemsModalOpen] = useState(false); const [isReApplyShareItemModalOpen, setIsReApplyShareItemModalOpen] = useState(false); - const [consumptionData, setConsumptionData] = useState({}); const handleAddItemModalClose = () => { setIsAddItemModalOpen(false); @@ -564,15 +558,6 @@ const ShareView = () => { await setFilter({ ...filter, isShared: true, page: value }); } }; - const copyNotification = () => { - enqueueSnackbar('Copied to clipboard', { - anchorOrigin: { - horizontal: 'right', - vertical: 'top' - }, - variant: 'success' - }); - }; const fetchItem = useCallback(async () => { setLoading(true); @@ -581,22 +566,6 @@ const ShareView = () => { ); if (!response.errors) { setShare(response.data.getShareObject); - const response_c = await client.query( - getS3ConsumptionData({ - shareUri: response.data.getShareObject.shareUri - }) - ); - if (!response_c.errors) { - setConsumptionData({ - s3bucketName: response_c.data.getS3ConsumptionData.s3bucketName, - s3AccessPointName: - response_c.data.getS3ConsumptionData.s3AccessPointName, - sharedGlueDatabase: - response_c.data.getS3ConsumptionData.sharedGlueDatabase - }); - } else { - dispatch({ type: SET_ERROR, error: response_c.errors[0].message }); - } } else { dispatch({ type: SET_ERROR, error: response.errors[0].message }); } @@ -1154,120 +1123,9 @@ const ShareView = () => { - - - - - - - - - - - S3 Bucket name (Bucket sharing): - - - {` ${consumptionData.s3bucketName || '-'}`} - - - copyNotification()} - text={`aws s3 ls s3://${consumptionData.s3bucketName}`} - > - - - - - {`aws s3 ls s3://${consumptionData.s3bucketName}`} - - - - - S3 Access Point name (Folder sharing): - - - {` ${consumptionData.s3AccessPointName || '-'}`} - - - copyNotification()} - text={`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} - > - - - - - {`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} - - - - - Glue database name (Table sharing): - - - {` ${consumptionData.sharedGlueDatabase || '-'}`} - - - copyNotification()} - text={`SELECT * FROM ${consumptionData.sharedGlueDatabase}.TABLENAME`} - > - - - - - {`SELECT * FROM ${consumptionData.sharedGlueDatabase}.TABLENAME`} - - - - - - + {share.dataset.datasetType === 'DatasetTypes.S3' && ( + + )} )} From f69af72c4274d0d72b1821b5754d9f0b193b3abc Mon Sep 17 00:00:00 2001 From: Anushka Singh Date: Tue, 6 Aug 2024 14:35:46 -0400 Subject: [PATCH 016/188] Issue1456: Fix for persistent email reminders (#1457) ### Feature or Bugfix - Bugfix ### Relates - https://github.com/data-dot-all/dataall/issues/1456 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Signed-off-by: dependabot[bot] Co-authored-by: Anushka Singh Co-authored-by: trajopadhye Co-authored-by: Mohit Arora Co-authored-by: rbernota Co-authored-by: Rick Bernotas Co-authored-by: Raj Chopde Co-authored-by: Noah Paige <69586985+noah-paige@users.noreply.github.com> Co-authored-by: dlpzx <71252798+dlpzx@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: jaidisido Co-authored-by: dlpzx Co-authored-by: mourya-33 <134511711+mourya-33@users.noreply.github.com> Co-authored-by: nikpodsh <124577300+nikpodsh@users.noreply.github.com> Co-authored-by: MK Co-authored-by: Manjula Co-authored-by: Zilvinas Saltys Co-authored-by: Zilvinas Saltys Co-authored-by: Daniel Lorch <98748454+lorchda@users.noreply.github.com> Co-authored-by: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Co-authored-by: Zilvinas Saltys Co-authored-by: Sofia Sazonova Co-authored-by: Sofia Sazonova --- .../db/share_object_repositories.py | 25 +++++++++---------- .../tasks/persistent_email_reminders_task.py | 6 ++--- deploy/stacks/container.py | 8 +++++- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index 596a5771a..e83875c30 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -398,17 +398,16 @@ def fetch_submitted_shares_with_notifications(session): A method used by the scheduled ECS Task to run fetch_submitted_shares_with_notifications() process against ALL shared objects in ALL active share objects within dataall """ - with session() as session: - pending_shares = ( - session.query(ShareObject) - .join( - Notification, - and_( - ShareObject.shareUri == func.split_part(Notification.target_uri, '|', 1), - ShareObject.datasetUri == func.split_part(Notification.target_uri, '|', 2), - ), - ) - .filter(and_(Notification.type == 'SHARE_OBJECT_SUBMITTED', ShareObject.status == 'Submitted')) - .all() + pending_shares = ( + session.query(ShareObject) + .join( + Notification, + and_( + ShareObject.shareUri == func.split_part(Notification.target_uri, '|', 1), + ShareObject.datasetUri == func.split_part(Notification.target_uri, '|', 2), + ), ) - return pending_shares + .filter(and_(Notification.type == 'SHARE_OBJECT_SUBMITTED', ShareObject.status == 'Submitted')) + .all() + ) + return pending_shares diff --git a/backend/dataall/modules/shares_base/tasks/persistent_email_reminders_task.py b/backend/dataall/modules/shares_base/tasks/persistent_email_reminders_task.py index 67a77145f..861f317f6 100644 --- a/backend/dataall/modules/shares_base/tasks/persistent_email_reminders_task.py +++ b/backend/dataall/modules/shares_base/tasks/persistent_email_reminders_task.py @@ -1,11 +1,10 @@ import logging import os import sys +from dataall.base.loader import load_modules, ImportMode from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.base.db import get_engine -from dataall.base.aws.sqs import SqsQueue -from dataall.core.tasks.service_handlers import Worker -from backend.dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.services.share_notification_service import ShareNotificationService from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository @@ -39,6 +38,7 @@ def persistent_email_reminders(engine): if __name__ == '__main__': + load_modules(modes={ImportMode.SHARES_TASK}) ENVNAME = os.environ.get('envname', 'local') ENGINE = get_engine(envname=ENVNAME) persistent_email_reminders(engine=ENGINE) diff --git a/deploy/stacks/container.py b/deploy/stacks/container.py index bbad9efa5..31a713654 100644 --- a/deploy/stacks/container.py +++ b/deploy/stacks/container.py @@ -59,6 +59,12 @@ def __init__( # This is used for sending data.all share weblinks in the email notifications. if custom_domain and custom_domain.get('hosted_zone_name'): self.env_vars.update({'frontend_domain_url': f'https://{custom_domain["hosted_zone_name"]}'}) + email_sender = ( + custom_domain.get('email_notification_sender_email_id', 'noreply') + + '@' + + custom_domain.get('hosted_zone_name') + ) + self.env_vars.update({'email_sender_id': email_sender}) cluster = ecs.Cluster( self, @@ -330,7 +336,7 @@ def add_share_reapplier_task(self): self.ecs_task_definitions_families.append(share_reapplier_task_definition.family) - @run_if(['modules.dataset_base.features.share_notifications.email.persistent_reminders']) + @run_if(['modules.datasets_base.features.share_notifications.email.persistent_reminders']) def add_persistent_email_reminders_task(self): persistent_email_reminders_task, persistent_email_reminders_task_def = self.set_scheduled_task( cluster=self.ecs_cluster, From 997177f67ba84491bc2c48781c02652e07e9f09c Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:21:09 +0200 Subject: [PATCH 017/188] Redshift data sharing - Redshift connection types and namespace Id (#1451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature ⚠️ Needs to be merged after #1447 ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is part of the redshift dataset sharing implementation. To be able to do sharing, the dataset namespace and the consumer namespace need to be accessible by data.all. For this reason we introduce the concept of types of connections. When opening a share request, the datasets that can be shared are only those whose namespace has an admin connection + the requester redshift role will be selected from a list of namespaces with admin connections. In addition, this PR adds the namespaceId in the RDS database for both serverless and provisioned clusters, as it is very handy information when working with datashares ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/connections/input_types.py | 1 + .../modules/redshift_datasets/aws/redshift.py | 14 ++++--- .../cdk/pivot_role_redshift_policy.py | 1 + .../db/redshift_connection_repositories.py | 4 +- .../services/redshift_connection_service.py | 9 ++++- .../EnvironmentRedshiftConnectionAddForm.js | 39 +++++++++++++++++-- .../EnvironmentRedshiftConnections.js | 37 +++++++++++------- .../listEnvironmentRedshiftConnections.js | 1 + tests/modules/redshift_datasets/conftest.py | 1 + 9 files changed, 80 insertions(+), 27 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/input_types.py b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py index 4b8d0948a..ef6afa883 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/input_types.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/input_types.py @@ -5,6 +5,7 @@ name='CreateRedshiftConnectionInput', arguments=[ gql.Argument('connectionName', gql.NonNullableType(gql.String)), + gql.Argument('connectionType', gql.NonNullableType(gql.String)), gql.Argument('environmentUri', gql.NonNullableType(gql.String)), gql.Argument('SamlGroupName', gql.NonNullableType(gql.String)), gql.Argument('redshiftType', gql.NonNullableType(gql.String)), diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift.py b/backend/dataall/modules/redshift_datasets/aws/redshift.py index 30c738398..7a6c808cf 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift.py @@ -13,12 +13,14 @@ def __init__(self, account_id: str, region: str) -> None: self.client = session.client(service_name='redshift', region_name=region) def describe_cluster(self, clusterId: str): - try: - log.info(f'Describing cluster {clusterId=}') - return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0] - except ClientError as e: - log.error(e) - raise e + log.info(f'Describing cluster {clusterId=}') + return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0] + + def get_cluster_namespaceId(self, clusterId: str): + log.info(f'Describing cluster {clusterId=}') + return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0]['ClusterNamespaceArn'].split( + ':' + )[-1] def redshift_client(account_id: str, region: str) -> RedshiftClient: diff --git a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py index 8eb7c7712..d61d92b1e 100644 --- a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py +++ b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py @@ -7,6 +7,7 @@ from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository from dataall.modules.redshift_datasets.aws.redshift_serverless import redshift_serverless_client +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftConnectionTypes class RedshiftDatasetsPivotRole(PivotRoleStatementSet): diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py index 742a850e8..31fc6e9b7 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -62,8 +62,10 @@ def _query_user_redshift_connections(session, username, groups, filter) -> Query return query.order_by(RedshiftConnection.label) @staticmethod - def list_environment_redshift_connections(session, environment_uri): + def list_environment_redshift_connections(session, environment_uri, filter_type=[]): query = session.query(RedshiftConnection).filter(RedshiftConnection.environmentUri == environment_uri) + if filter_type: + query = query.filter(RedshiftConnection.connectionType.in_(filter_type)) return query.order_by(RedshiftConnection.label).all() @staticmethod diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index b94d2a428..daf2e2b7c 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -57,6 +57,11 @@ def create_redshift_connection(uri, admin_group, data: dict) -> RedshiftConnecti RedshiftConnectionService._check_redshift_connection( account_id=environment.AwsAccountId, region=environment.region, connection=connection ) + if connection.redshiftType == RedshiftType.Cluster.value: + connection.nameSpaceId = redshift_client( + account_id=environment.AwsAccountId, + region=environment.region, + ).get_cluster_namespaceId(connection.clusterId) connection.encryptionType = RedshiftConnectionService._get_redshift_encryption( account_id=environment.AwsAccountId, region=environment.region, connection=connection ).value @@ -136,7 +141,7 @@ def list_schema_tables(uri, schema): @staticmethod def _check_redshift_connection(account_id: str, region: str, connection: RedshiftConnection): - if connection.nameSpaceId: + if connection.redshiftType == RedshiftType.Serverless.value: if ( namespace := redshift_serverless_client(account_id=account_id, region=region).get_namespace_by_id( connection.nameSpaceId @@ -155,7 +160,7 @@ def _check_redshift_connection(account_id: str, region: str, connection: Redshif f'Redshift workgroup {connection.workgroup} does not exist or is not associated to namespace {connection.nameSpaceId}' ) - if connection.clusterId: + if connection.redshiftType == RedshiftType.Cluster.value: cluster = redshift_client(account_id=account_id, region=region).describe_cluster(connection.clusterId) if not cluster: raise Exception( diff --git a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js index 9dd0b28fc..60b673e4a 100644 --- a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js +++ b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js @@ -29,6 +29,11 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { let { groupOptions, loadingGroups } = useFetchGroups(environment); + const connectionOptions = [ + { value: 'DATA_USER', label: 'Data User' }, + { value: 'ADMIN', label: 'Admin' } + ]; + const clusterOptions = [ { value: 'serverless', label: 'Serverless' }, { value: 'cluster', label: 'Provisioned Cluster' } @@ -47,7 +52,8 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { workgroup: values.workgroup, database: values.database, redshiftUser: values.redshiftUser, - secretArn: values.secretArn + secretArn: values.secretArn, + connectionType: values.connectionType }) ); if (!response.errors) { @@ -112,7 +118,8 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { workgroup: '', database: '', redshiftUser: '', - secretArn: '' + secretArn: '', + connectionType: '' }} validationSchema={Yup.object().shape({ connectionName: Yup.string() @@ -129,7 +136,10 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { workgroup: Yup.string().max(255), database: Yup.string().max(255).required('*Database is required'), redshiftUser: Yup.string().max(255), - secretArn: Yup.string().max(255) + secretArn: Yup.string().max(255), + connectionType: Yup.string() + .max(255) + .required('*ConnectionType is required') })} onSubmit={async ( values, @@ -166,6 +176,29 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { variant="outlined" /> + + + {connectionOptions.map((r) => ( + + {r.label} + + ))} + + { id: item.connectionUri, redshiftId: item.redshiftType === 'serverless' - ? item.nameSpaceId + ? item.workgroup : item.clusterId, - connectionType: item.secretArn ? 'SecretArn' : 'Redshift User', connectionDetails: item.secretArn ? item.secretArn - : item.redshiftUser, - workgroup: item.workgroup ? item.workgroup : '-' + : item.redshiftUser }) ) ] @@ -172,7 +171,6 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { if (loading) { return ; } - return ( @@ -255,6 +253,21 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { flex: 0.5, editable: true }, + { + field: 'connectionType', + headerName: 'Connection Type', + flex: 1, + editable: false, + renderCell: (params) => { + return ( + + ); + } + }, { field: 'SamlGroupName', headerName: 'Team', @@ -268,20 +281,14 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { editable: false }, { - field: 'redshiftId', - headerName: 'NamespaceId/ClusterId', + field: 'nameSpaceId', + headerName: 'Namespace Id', flex: 1, editable: false }, { - field: 'workgroup', - headerName: 'Workgroup', - flex: 1, - editable: false - }, - { - field: 'connectionType', - headerName: 'Connection Type', + field: 'redshiftId', + headerName: 'Workgroup/ClusterId', flex: 1, editable: false }, diff --git a/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js b/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js index e2e1d2199..dcf52dc8a 100644 --- a/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js +++ b/frontend/src/services/graphql/Redshift_Datasets/listEnvironmentRedshiftConnections.js @@ -23,6 +23,7 @@ export const listEnvironmentRedshiftConnections = ({ filter }) => ({ database redshiftUser secretArn + connectionType } } } diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index 8aa0d0911..bf67515d5 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -27,6 +27,7 @@ def mock_redshift(mocker): 'Encrypted': True, 'KmsKeyId': 'some-key-id', } + redshiftClient.return_value.get_cluster_namespaceId.return_value = 'namespaceId1' yield redshiftClient From 3ed953678efed84c365ae5dc4f848155aeff1b7a Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:22:37 +0200 Subject: [PATCH 018/188] Redshift data sharing - Boilerplate for redshift dataset sharing module (#1461) ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is part of the redshift dataset sharing implementation. - it adds the `redshift_datasets_shares` module package and its __init__ file - it creates the main subpackages in the module - it registers the share processor and creates the base share processor - in db.repository it adds a EnvironmentResource class to prevent orphan resources left in environment deletes - it adds the module in config.json - It adds RedshiftTable as a ShareableItem - It adds RedshiftRole as a PrincipalType (also remove unused types, including one only used in testing the subscription task) ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../redshift_datasets_shares/__init__.py | 96 +++++++++++++++++++ .../redshift_datasets_shares/api/__init__.py | 8 ++ .../redshift_datasets_shares/api/mutations.py | 1 + .../redshift_datasets_shares/api/queries.py | 1 + .../redshift_datasets_shares/api/resolvers.py | 0 .../redshift_datasets_shares/api/types.py | 1 + .../redshift_datasets_shares/aws/__init__.py | 0 .../redshift_datasets_shares/cdk/__init__.py | 3 + ...pivot_role_redshift_data_sharing_policy.py | 12 +++ .../redshift_datasets_shares/db/__init__.py | 0 .../db/redshift_share_object_repositories.py | 78 +++++++++++++++ .../services/__init__.py | 0 .../redshift_table_share_processor.py | 28 ++++++ .../db/share_object_repositories.py | 5 + .../services/share_object_service.py | 4 +- .../shares_base/services/shares_enums.py | 8 +- .../shares_base/services/sharing_service.py | 15 +-- config.json | 3 + .../tasks/test_dataset_subscriptions.py | 2 +- 19 files changed, 251 insertions(+), 14 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets_shares/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/api/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/api/mutations.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/api/queries.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/api/resolvers.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/api/types.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/aws/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/cdk/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/db/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/services/__init__.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py diff --git a/backend/dataall/modules/redshift_datasets_shares/__init__.py b/backend/dataall/modules/redshift_datasets_shares/__init__.py new file mode 100644 index 000000000..905b18028 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/__init__.py @@ -0,0 +1,96 @@ +import logging +from typing import List, Type, Set + +from dataall.base.loader import ModuleInterface, ImportMode + + +log = logging.getLogger(__name__) + + +class RedshiftDatasetsSharesApiModuleInterface(ModuleInterface): + @staticmethod + def is_supported(modes: Set[ImportMode]) -> bool: + return ImportMode.API in modes + + @staticmethod + def depends_on() -> List[Type['ModuleInterface']]: + from dataall.modules.notifications import NotificationsModuleInterface + from dataall.modules.redshift_datasets import RedshiftDatasetApiModuleInterface + from dataall.modules.shares_base import SharesBaseAPIModuleInterface + + return [RedshiftDatasetApiModuleInterface, NotificationsModuleInterface, SharesBaseAPIModuleInterface] + + def __init__(self): + from dataall.core.environment.services.environment_resource_manager import EnvironmentResourceManager + from dataall.modules.redshift_datasets_shares import api + from dataall.modules.redshift_datasets_shares.db.redshift_share_object_repositories import ( + RedshiftShareEnvironmentResource, + ) + + from dataall.modules.shares_base.services.share_processor_manager import ( + ShareProcessorManager, + ShareProcessorDefinition, + ) + from dataall.modules.shares_base.services.shares_enums import ShareableType + from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable + from dataall.modules.redshift_datasets_shares.services.redshift_table_share_processor import ( + ProcessRedshiftShare, + ) + + EnvironmentResourceManager.register(RedshiftShareEnvironmentResource()) + + ShareProcessorManager.register_processor( + ShareProcessorDefinition( + ShareableType.RedshiftTable, ProcessRedshiftShare, RedshiftTable, RedshiftTable.rsTableUri + ) + ) + + log.info('API of redshift dataset sharing has been imported') + + +class RedshiftDatasetsSharesCdkModuleInterface(ModuleInterface): + """Implements ModuleInterface for data sharing""" + + @staticmethod + def is_supported(modes): + return ImportMode.CDK in modes + + def __init__(self): + import dataall.modules.redshift_datasets_shares.cdk + + log.info('CDK module redshift_datasets_shares has been imported') + + +class RedshiftDatasetsSharesECSShareModuleInterface(ModuleInterface): + """Implements ModuleInterface for data sharing""" + + @staticmethod + def is_supported(modes): + return ImportMode.SHARES_TASK in modes + + @staticmethod + def depends_on() -> List[Type['ModuleInterface']]: + from dataall.modules.shares_base import SharesBaseECSTaskModuleInterface + from dataall.modules.notifications import NotificationsModuleInterface + + return [SharesBaseECSTaskModuleInterface, NotificationsModuleInterface] + + def __init__(self): + from dataall.modules.shares_base.services.share_processor_manager import ( + ShareProcessorManager, + ShareProcessorDefinition, + ) + from dataall.modules.shares_base.services.shares_enums import ShareableType + + from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable + from dataall.modules.redshift_datasets_shares.services.redshift_table_share_processor import ( + ProcessRedshiftShare, + ) + + ShareProcessorManager.register_processor( + ShareProcessorDefinition( + ShareableType.RedshiftTable, ProcessRedshiftShare, RedshiftTable, RedshiftTable.rsTableUri + ) + ) + + log.info('ECS Share module redshift_datasets_shares has been imported') diff --git a/backend/dataall/modules/redshift_datasets_shares/api/__init__.py b/backend/dataall/modules/redshift_datasets_shares/api/__init__.py new file mode 100644 index 000000000..8da1c0031 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/api/__init__.py @@ -0,0 +1,8 @@ +from dataall.modules.redshift_datasets_shares.api import ( + mutations, + queries, + resolvers, + types, +) + +__all__ = ['resolvers', 'queries', 'mutations', 'types'] diff --git a/backend/dataall/modules/redshift_datasets_shares/api/mutations.py b/backend/dataall/modules/redshift_datasets_shares/api/mutations.py new file mode 100644 index 000000000..c0264a16a --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/api/mutations.py @@ -0,0 +1 @@ +from dataall.base.api import gql diff --git a/backend/dataall/modules/redshift_datasets_shares/api/queries.py b/backend/dataall/modules/redshift_datasets_shares/api/queries.py new file mode 100644 index 000000000..c0264a16a --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/api/queries.py @@ -0,0 +1 @@ +from dataall.base.api import gql diff --git a/backend/dataall/modules/redshift_datasets_shares/api/resolvers.py b/backend/dataall/modules/redshift_datasets_shares/api/resolvers.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/dataall/modules/redshift_datasets_shares/api/types.py b/backend/dataall/modules/redshift_datasets_shares/api/types.py new file mode 100644 index 000000000..c0264a16a --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/api/types.py @@ -0,0 +1 @@ +from dataall.base.api import gql diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/__init__.py b/backend/dataall/modules/redshift_datasets_shares/aws/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/dataall/modules/redshift_datasets_shares/cdk/__init__.py b/backend/dataall/modules/redshift_datasets_shares/cdk/__init__.py new file mode 100644 index 000000000..e7e1cd744 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/cdk/__init__.py @@ -0,0 +1,3 @@ +from dataall.modules.redshift_datasets_shares.cdk import pivot_role_redshift_data_sharing_policy + +__all__ = ['pivot_role_redshift_data_sharing_policy'] diff --git a/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py b/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py new file mode 100644 index 000000000..254d3f206 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py @@ -0,0 +1,12 @@ +from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet +from aws_cdk import aws_iam as iam + + +class RedshiftDataSharingPivotRole(PivotRoleStatementSet): + """ + Class including all permissions needed by the pivot role to process Redshift data shares + """ + + def get_statements(self): + statements = [] + return statements diff --git a/backend/dataall/modules/redshift_datasets_shares/db/__init__.py b/backend/dataall/modules/redshift_datasets_shares/db/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py b/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py new file mode 100644 index 000000000..6131a1fa7 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py @@ -0,0 +1,78 @@ +import logging + +from sqlalchemy import and_ +from dataall.core.environment.services.environment_resource_manager import EnvironmentResource +from dataall.modules.shares_base.services.shares_enums import ( + ShareableType, + PrincipalType, +) +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository + +logger = logging.getLogger(__name__) + + +class RedshiftShareEnvironmentResource(EnvironmentResource): + @staticmethod + def count_resources(session, environment, group_uri) -> int: + return RedshiftShareObjectRepository.count_redshift_principal_shares( + session=session, environment_uri=environment.environmentUri, group_uri=group_uri + ) + + @staticmethod + def delete_env(session, environment): + RedshiftShareObjectRepository.delete_all_redshift_share_items(session, environment.environmentUri) + + +class RedshiftShareObjectRepository: + @staticmethod + def count_redshift_principal_shares(session, environment_uri: str, group_uri: str): + """ + Count RedshiftTables currently shared with Redshift Roles for a particular + environment on behalf of a particular group + """ + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + return ( + session.query(ShareObject) + .join( + ShareObjectItem, + ShareObjectItem.shareUri == ShareObject.shareUri, + ) + .filter( + and_( + ShareObject.environmentUri == environment_uri, + ShareObject.groupUri == group_uri, + ShareObject.principalType == PrincipalType.RedshiftRole.value, + ShareObjectItem.itemType == ShareableType.RedshiftTable.value, + ShareObjectItem.status.in_(share_item_shared_states), + ) + ) + .count() + ) + + @staticmethod + def delete_all_redshift_share_items(session, env_uri): + """ + Delete all ShareObjects and ShareObjectItems of Redshift type for a particular environment + """ + env_shared_with_objects = ( + session.query(ShareObject) + .filter( + and_( + ShareObject.environmentUri == env_uri, ShareObject.principalType == PrincipalType.RedshiftRole.value + ) + ) + .all() + ) + for share in env_shared_with_objects: + ( + session.query(ShareObjectItem) + .filter( + and_( + ShareObjectItem.shareUri == share.shareUri, + ShareObjectItem.itemType == ShareableType.RedshiftTable.value, + ), + ) + .delete() + ) + session.delete(share) diff --git a/backend/dataall/modules/redshift_datasets_shares/services/__init__.py b/backend/dataall/modules/redshift_datasets_shares/services/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py new file mode 100644 index 000000000..2d4014e65 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py @@ -0,0 +1,28 @@ +import logging +import json +from typing import List +from dataall.modules.shares_base.services.sharing_service import ShareData +from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository + +log = logging.getLogger(__name__) + + +class ProcessRedshiftShare(SharesProcessorInterface): + def __init__(self, session, share_data, shareable_items, reapply=False): + self.session = session + self.share_data: ShareData = share_data + self.dataset = share_data.dataset + self.share = share_data.share + self.tables: List[RedshiftTable] = shareable_items + self.reapply: bool = reapply + + def process_approved_shares(self) -> bool: + return True + + def process_revoked_shares(self) -> bool: + return True + + def verify_shares(self) -> bool: + return True diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index e83875c30..5ba8e6b3a 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -322,6 +322,11 @@ def paginate_shared_datasets(session, env_uri, data, share_item_shared_states): @staticmethod def list_shareable_items_of_type(session, share, type, share_type_model, share_type_uri, status=None): + """ + type: ShareableType e.g. ShareableType.StorageLocation + share_type_model: ShareProcessorDefinition.shareable_type e.g. DatasetStorageLocation + share_type_uri: ShareProcessorDefinition.shareable_uri e.g DatasetStorageLocation.locationUri + """ logger.info(f'Getting all shareable items {status=}, for {share_type_model=}') query = ( session.query( diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index 8e191beae..826f39a8c 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -260,7 +260,9 @@ def approve_share_object(cls, uri: str): with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - if not ShareObjectService.verify_principal_role(session, share): + if not ShareObjectService.verify_principal_role( + session, share + ): # TODO make it generic to non IAM role principals raise PrincipalRoleNotFound( action='Approve Share Object', message=f'The principal role {share.principalIAMRoleName} is not found.', diff --git a/backend/dataall/modules/shares_base/services/shares_enums.py b/backend/dataall/modules/shares_base/services/shares_enums.py index 4bc79226c..0c6739767 100644 --- a/backend/dataall/modules/shares_base/services/shares_enums.py +++ b/backend/dataall/modules/shares_base/services/shares_enums.py @@ -5,6 +5,7 @@ class ShareableType(GraphQLEnumMapper): Table = 'DatasetTable' StorageLocation = 'DatasetStorageLocation' S3Bucket = 'S3Bucket' + RedshiftTable = 'RedshiftTable' class ShareObjectPermission(GraphQLEnumMapper): @@ -67,14 +68,9 @@ class ShareItemActions(GraphQLEnumMapper): class PrincipalType(GraphQLEnumMapper): - Any = 'Any' - Organization = 'Organization' - Environment = 'Environment' - User = 'User' - Project = 'Project' - Public = 'Public' Group = 'Group' ConsumptionRole = 'ConsumptionRole' + RedshiftRole = 'RedshiftRole' class ShareSortField(GraphQLEnumMapper): diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index bb375b867..72e65bbed 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -105,12 +105,15 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: processor.shareable_uri, status=ShareItemStatus.Share_Approved.value, ) - success = processor.Processor( - session, share_data, shareable_items - ).process_approved_shares() - log.info(f'Sharing {type.value} succeeded = {success}') - if not success: - share_successful = False + if shareable_items: + success = processor.Processor( + session, share_data, shareable_items + ).process_approved_shares() + log.info(f'Sharing {type.value} succeeded = {success}') + if not success: + share_successful = False + else: + log.info(f'There are no items to share of type{type.value}') except Exception as e: log.exception(f'Error occurred during sharing of {type.value}') ShareStatusRepository.update_share_item_status_batch( diff --git a/config.json b/config.json index 3027bf95a..cd518487c 100644 --- a/config.json +++ b/config.json @@ -49,6 +49,9 @@ "redshift_datasets": { "active": true }, + "redshift_datasets_shares": { + "active": true + }, "worksheets": { "active": true }, diff --git a/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py b/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py index 312018233..8da837fb3 100644 --- a/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py +++ b/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py @@ -70,7 +70,7 @@ def share( environmentUri=otherenv.environmentUri, owner='bob', principalId='group2', - principalType=PrincipalType.Environment.value, + principalType=PrincipalType.Group.value, status=ShareObjectStatus.Approved.value, ) session.add(share) From a19ecee0e05a1ece1c98587de8a0c20d84ae2ff3 Mon Sep 17 00:00:00 2001 From: Zilvinas Saltys <1583403+zsaltys@users.noreply.github.com> Date: Wed, 7 Aug 2024 23:30:29 +0100 Subject: [PATCH 019/188] hide access point consumer details if access points feature is disabled (#1466) ### Feature or Bugfix - Feature ### Detail - Hide access point consumer details if access points feature is disabled ### Relates https://github.com/data-dot-all/dataall/issues/1464 ### Security N/A By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../Shares/components/S3ConsumptionData.js | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/frontend/src/modules/Shares/components/S3ConsumptionData.js b/frontend/src/modules/Shares/components/S3ConsumptionData.js index 250ed4b60..3d8cee322 100644 --- a/frontend/src/modules/Shares/components/S3ConsumptionData.js +++ b/frontend/src/modules/Shares/components/S3ConsumptionData.js @@ -17,6 +17,7 @@ import { CopyToClipboard } from 'react-copy-to-clipboard/lib/Component'; import { CopyAllOutlined } from '@mui/icons-material'; import { useTheme } from '@mui/styles'; import { useSnackbar } from 'notistack'; +import { isFeatureEnabled } from 'utils'; export const S3ConsumptionData = (props) => { const { share } = props; @@ -104,40 +105,42 @@ export const S3ConsumptionData = (props) => { {`aws s3 ls s3://${consumptionData.s3bucketName}`}
- - - S3 Access Point name (Folder sharing): - - - {` ${consumptionData.s3AccessPointName || '-'}`} - - - copyNotification()} - text={`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} + {isFeatureEnabled('s3_datasets', 'file_actions') && ( + + - - - - - {`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} - - + S3 Access Point name (Folder sharing): + + + {` ${consumptionData.s3AccessPointName || '-'}`} + + + copyNotification()} + text={`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} + > + + + + + {`aws s3 ls arn:aws:s3:${share.dataset.region}:${share.dataset.AwsAccountId}:accesspoint/${consumptionData.s3AccessPointName}/SHARED_FOLDER/`} + + + )} Date: Thu, 8 Aug 2024 08:33:42 +0200 Subject: [PATCH 020/188] Redshift data sharing - Make ShareObject.IAMRole a generic "Role" (#1462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature ⚠️ merge after #1461 ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is part of the redshift dataset sharing implementation. The purpose of this particular PR is to make the create share object more generic. At the moment it is intertwined with IAM roles and share policies that need to be attached to them. - Rename ShareObject.principalIAMRoleName as ShareObject.principalRoleName and make it a mandatory field - Rename usages of principalIAMRoleName - Add migration script - Make attachMissingPolicies an optional input parameter for createShareObject and default it to false - Add principalRoleName as an optional input parameter for createShareObject - Modify createShareObject service to skip IAM actions on non Group/ConsumptionRole principal types This PR fixes the creation of different types of share objects; but the ideal design should not include if-conditions in create_share_object. Instead the input could include a field for "additional_actions" such as ['CHECK_IAM_ROLE', 'ATTACH_MISSING_POLICIES'] that handle the different principal cases in a more generic way. I listed this as enhancements in the original ticket. ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../share_managers/lf_share_manager.py | 6 +- .../s3_access_point_share_manager.py | 4 +- .../share_managers/s3_bucket_share_manager.py | 6 +- .../glue_table_share_processor.py | 2 +- .../s3_access_point_share_processor.py | 2 +- .../s3_bucket_share_processor.py | 2 +- .../modules/shares_base/api/input_types.py | 3 +- .../modules/shares_base/api/resolvers.py | 5 +- .../dataall/modules/shares_base/api/types.py | 2 +- .../shares_base/db/share_object_models.py | 2 +- .../db/share_object_repositories.py | 4 +- .../services/share_object_service.py | 87 ++++++++++--------- .../shares_base/services/sharing_service.py | 14 +-- .../72b8a90b6ee8__share_request_purpose.py | 24 ++++- ...b99093a_rename_share_object_role_column.py | 25 ++++++ ...9d_add_backfill_read_folder_permissions.py | 24 ++++- .../components/RequestRedshiftAccessModal.js | 11 +-- .../modules/Shares/components/ShareBoxList.js | 2 +- .../Shares/components/ShareBoxListItem.js | 2 +- .../components/ShareObjectSelectorModal.js | 2 +- .../modules/Shares/services/getShareObject.js | 2 +- .../Shares/services/getShareRequestsFromMe.js | 2 +- .../ShareObject/getShareRequestsToMe.js | 2 +- tests/modules/s3_datasets/conftest.py | 2 +- tests/modules/s3_datasets/tasks/conftest.py | 2 +- .../tasks/test_dataset_subscriptions.py | 1 + tests/modules/s3_datasets_shares/conftest.py | 2 +- .../s3_datasets_shares/tasks/conftest.py | 2 +- .../tasks/test_lf_share_manager.py | 2 +- .../test_s3_access_point_share_manager.py | 24 ++--- .../tasks/test_s3_bucket_share_manager.py | 48 +++++----- .../modules/s3_datasets_shares/test_share.py | 4 +- 32 files changed, 192 insertions(+), 130 deletions(-) create mode 100644 backend/migrations/versions/aa42cb99093a_rename_share_object_role_column.py diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py index b2ddef07a..d3523c441 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py @@ -77,15 +77,15 @@ def get_share_principals(self) -> [str]: principal_iam_role_arn = IAM.get_role_arn_by_name( account_id=self.target_environment.AwsAccountId, region=self.target_environment.region, - role_name=self.share.principalIAMRoleName, + role_name=self.share.principalRoleName, ) if principal_iam_role_arn is None: logger.info( - f'Principal IAM Role {self.share.principalIAMRoleName} not found in {self.target_environment.AwsAccountId}' + f'Principal IAM Role {self.share.principalRoleName} not found in {self.target_environment.AwsAccountId}' ) logger.info('Try to build arn') principal_iam_role_arn = ( - f'arn:aws:iam::{self.target_environment.AwsAccountId}:role/{self.share.principalIAMRoleName}' + f'arn:aws:iam::{self.target_environment.AwsAccountId}:role/{self.share.principalRoleName}' ) principals = [principal_iam_role_arn] diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index 6bd026a9e..ef06f8142 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -61,7 +61,7 @@ def __init__( self.source_account_id = share_data.dataset.AwsAccountId self.target_account_id = share_data.target_environment.AwsAccountId self.source_env_admin = share_data.source_env_group.environmentIAMRoleArn - self.target_requester_IAMRoleName = share_data.share.principalIAMRoleName + self.target_requester_IAMRoleName = share_data.share.principalRoleName self.bucket_name = target_folder.S3BucketName self.dataset_admin = share_data.dataset.IAMDatasetAdminRoleArn self.dataset_account_id = share_data.dataset.AwsAccountId @@ -175,7 +175,7 @@ def check_target_role_access_policy(self) -> None: if not share_policy_service.check_if_policy_attached(): logger.info( - f'IAM Policy {share_resource_policy_name} exists but is not attached to role {self.share.principalIAMRoleName}' + f'IAM Policy {share_resource_policy_name} exists but is not attached to role {self.share.principalRoleName}' ) self.folder_errors.append( ShareErrorFormatter.dne_error_msg('IAM Policy attached', share_resource_policy_name) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py index b7e429870..f37f8753a 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py @@ -52,7 +52,7 @@ def __init__( self.source_account_id = target_bucket.AwsAccountId self.target_account_id = share_data.target_environment.AwsAccountId self.source_env_admin = share_data.source_env_group.environmentIAMRoleArn - self.target_requester_IAMRoleName = share_data.share.principalIAMRoleName + self.target_requester_IAMRoleName = share_data.share.principalRoleName self.bucket_name = target_bucket.S3BucketName self.dataset_admin = share_data.dataset.IAMDatasetAdminRoleArn self.bucket_region = target_bucket.region @@ -86,7 +86,7 @@ def check_s3_iam_access(self) -> None: if not share_policy_service.check_if_policy_attached(): logger.info( - f'IAM Policy {share_resource_policy_name} exists but is not attached to role {self.share.principalIAMRoleName}' + f'IAM Policy {share_resource_policy_name} exists but is not attached to role {self.share.principalRoleName}' ) self.bucket_errors.append( ShareErrorFormatter.dne_error_msg('IAM Policy attached', share_resource_policy_name) @@ -513,7 +513,7 @@ def delete_target_role_access_policy( logger.info('Deleting target role IAM statements...') share_policy_service = S3SharePolicyService( - role_name=share.principalIAMRoleName, + role_name=share.principalRoleName, account=target_environment.AwsAccountId, region=self.target_environment.region, environmentUri=target_environment.environmentUri, diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index 3091f7041..59c7a7d16 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -72,7 +72,7 @@ def process_approved_shares(self) -> bool: if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', - f'Principal role {self.share_data.share.principalIAMRoleName} is not found. Failed to update LF policy', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update LF policy', ) if None in [ diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py index 87ec4f6c0..2a20ecdbf 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py @@ -66,7 +66,7 @@ def process_approved_shares(self) -> bool: if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', - f'Principal role {self.share_data.share.principalIAMRoleName} is not found. Failed to update bucket policy', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update bucket policy', ) manager.manage_bucket_policy() diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py index 481cd1ef9..cd83ef3a8 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py @@ -52,7 +52,7 @@ def process_approved_shares(self) -> bool: if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', - f'Principal role {self.share_data.share.principalIAMRoleName} is not found. Failed to update KMS key policy', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update KMS key policy', ) for bucket in self.buckets: log.info(f'Sharing bucket {bucket.bucketUri}/{bucket.S3BucketName} ') diff --git a/backend/dataall/modules/shares_base/api/input_types.py b/backend/dataall/modules/shares_base/api/input_types.py index 572c8aa9e..7625c2eea 100644 --- a/backend/dataall/modules/shares_base/api/input_types.py +++ b/backend/dataall/modules/shares_base/api/input_types.py @@ -8,9 +8,10 @@ gql.Argument(name='environmentUri', type=gql.NonNullableType(gql.String)), gql.Argument(name='groupUri', type=gql.NonNullableType(gql.String)), gql.Argument(name='principalId', type=gql.NonNullableType(gql.String)), + gql.Argument(name='principalRoleName', type=gql.String), gql.Argument(name='principalType', type=gql.NonNullableType(gql.String)), gql.Argument(name='requestPurpose', type=gql.String), - gql.Argument(name='attachMissingPolicies', type=gql.NonNullableType(gql.Boolean)), + gql.Argument(name='attachMissingPolicies', type=gql.Boolean), ], ) diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index d24dbc9cf..0d534171f 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -65,9 +65,10 @@ def create_share_object( item_type=itemType, group_uri=input['groupUri'], principal_id=input['principalId'], + principal_role_name=input.get('principalRoleName'), principal_type=input['principalType'], requestPurpose=input.get('requestPurpose'), - attachMissingPolicies=input.get('attachMissingPolicies'), + attachMissingPolicies=input.get('attachMissingPolicies', False), ) @@ -214,7 +215,7 @@ def resolve_principal(context: Context, source: ShareObject, **kwargs): 'principalId': source.principalId, 'principalType': source.principalType, 'principalName': principalName, - 'principalIAMRoleName': source.principalIAMRoleName, + 'principalRoleName': source.principalRoleName, 'SamlGroupName': source.groupUri, 'environmentUri': environment.environmentUri, 'environmentName': environment.label, diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 3f96c1f52..7e96c534c 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -206,7 +206,7 @@ gql.Field(name='principalId', type=gql.ID), gql.Field(name='principalType', type=PrincipalType.toGraphQLEnum()), gql.Field(name='principalName', type=gql.String), - gql.Field(name='principalIAMRoleName', type=gql.String), + gql.Field(name='principalRoleName', type=gql.String), gql.Field(name='SamlGroupName', type=gql.String), gql.Field(name='environmentName', type=gql.String), gql.Field(name='environmentUri', type=gql.String), diff --git a/backend/dataall/modules/shares_base/db/share_object_models.py b/backend/dataall/modules/shares_base/db/share_object_models.py index 19342f1dc..b5759719f 100644 --- a/backend/dataall/modules/shares_base/db/share_object_models.py +++ b/backend/dataall/modules/shares_base/db/share_object_models.py @@ -25,7 +25,7 @@ class ShareObject(Base): datasetUri = Column(String, nullable=False) environmentUri = Column(String) groupUri = Column(String) - principalIAMRoleName = Column(String, nullable=True) + principalRoleName = Column(String, nullable=True) principalId = Column(String, nullable=True) principalType = Column(String, nullable=True, default='Group') status = Column(String, nullable=False, default=ShareObjectStatus.Draft.value) diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index 5ba8e6b3a..09a1ada4b 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -215,7 +215,7 @@ def list_user_received_share_requests(session, username, groups, data=None): query = query.filter(ShareObject.groupUri.in_(data.get('share_requesters'))) if data and data.get('share_iam_roles'): if len(data.get('share_iam_roles')) > 0: - query = query.filter(ShareObject.principalIAMRoleName.in_(data.get('share_iam_roles'))) + query = query.filter(ShareObject.principalRoleName.in_(data.get('share_iam_roles'))) return paginate(query.order_by(ShareObject.shareUri), data.get('page', 1), data.get('pageSize', 10)).to_dict() @staticmethod @@ -254,7 +254,7 @@ def list_user_sent_share_requests(session, username, groups, data=None): query = query.filter(ShareObject.groupUri.in_(data.get('share_requesters'))) if data and data.get('share_iam_roles'): if len(data.get('share_iam_roles')) > 0: - query = query.filter(ShareObject.principalIAMRoleName.in_(data.get('share_iam_roles'))) + query = query.filter(ShareObject.principalRoleName.in_(data.get('share_iam_roles'))) return paginate(query.order_by(ShareObject.shareUri), data.get('page', 1), data.get('pageSize', 10)).to_dict() @staticmethod diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index 826f39a8c..0b13b8aa8 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -49,7 +49,7 @@ class ShareObjectService: @staticmethod def verify_principal_role(session, share: ShareObject) -> bool: log.info('Verifying principal IAM role...') - role_name = share.principalIAMRoleName + role_name = share.principalRoleName env = EnvironmentService.get_environment_by_uri(session, share.environmentUri) principal_role = IAM.get_role_arn_by_name(account_id=env.AwsAccountId, region=env.region, role_name=role_name) return principal_role is not None @@ -70,6 +70,7 @@ def create_share_object( item_type: str, group_uri, principal_id, + principal_role_name, principal_type, requestPurpose, attachMissingPolicies, @@ -85,21 +86,6 @@ def create_share_object( message=f'Requester Team {group_uri} works in region {environment.region} ' f'and the requested dataset is stored in region {dataset.region}', ) - - if principal_type == PrincipalType.ConsumptionRole.value: - consumption_role: ConsumptionRole = EnvironmentService.get_environment_consumption_role( - session, principal_id, environment.environmentUri - ) - principal_iam_role_name = consumption_role.IAMRoleName - managed = consumption_role.dataallManaged - - else: - env_group: EnvironmentGroup = EnvironmentService.get_environment_group( - session, group_uri, environment.environmentUri - ) - principal_iam_role_name = env_group.environmentIAMRoleName - managed = True - if ( (dataset.stewards == group_uri or dataset.SamlAdminGroupName == group_uri) and environment.environmentUri == dataset.environmentUri @@ -112,31 +98,46 @@ def create_share_object( cls._validate_group_membership(session, group_uri, environment.environmentUri) - share_policy_manager = PolicyManager( - role_name=principal_iam_role_name, - environmentUri=environment.environmentUri, - account=environment.AwsAccountId, - region=environment.region, - resource_prefix=environment.resourcePrefix, - ) - for Policy in [ - Policy for Policy in share_policy_manager.initializedPolicies if Policy.policy_type == 'SharePolicy' - ]: - # Backwards compatibility - # we check if a managed share policy exists. If False, the role was introduced to data.all before this update - # We create the policy from the inline statements - # In this case it could also happen that the role is the Admin of the environment - if not Policy.check_if_policy_exists(): - Policy.create_managed_policy_from_inline_and_delete_inline() - # End of backwards compatibility - - attached = Policy.check_if_policy_attached() - if not attached and not managed and not attachMissingPolicies: - raise Exception( - f'Required customer managed policy {Policy.generate_policy_name()} is not attached to role {principal_iam_role_name}' + if principal_type in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + if principal_type == PrincipalType.ConsumptionRole.value: + consumption_role: ConsumptionRole = EnvironmentService.get_environment_consumption_role( + session, principal_id, environment.environmentUri ) - elif not attached: - Policy.attach_policy() + principal_role_name = consumption_role.IAMRoleName + managed = consumption_role.dataallManaged + + else: + env_group: EnvironmentGroup = EnvironmentService.get_environment_group( + session, group_uri, environment.environmentUri + ) + principal_role_name = env_group.environmentIAMRoleName + managed = True + + share_policy_manager = PolicyManager( + role_name=principal_role_name, + environmentUri=environment.environmentUri, + account=environment.AwsAccountId, + region=environment.region, + resource_prefix=environment.resourcePrefix, + ) + for Policy in [ + Policy for Policy in share_policy_manager.initializedPolicies if Policy.policy_type == 'SharePolicy' + ]: + # Backwards compatibility + # we check if a managed share policy exists. If False, the role was introduced to data.all before this update + # We create the policy from the inline statements + # In this case it could also happen that the role is the Admin of the environment + if not Policy.check_if_policy_exists(): + Policy.create_managed_policy_from_inline_and_delete_inline() + # End of backwards compatibility + + attached = Policy.check_if_policy_attached() + if not attached and not managed and not attachMissingPolicies: + raise Exception( + f'Required customer managed policy {Policy.generate_policy_name()} is not attached to role {principal_role_name}' + ) + elif not attached: + Policy.attach_policy() share = ShareObjectRepository.find_share(session, dataset, environment, principal_id, group_uri) already_existed = share is not None @@ -148,7 +149,7 @@ def create_share_object( groupUri=group_uri, principalId=principal_id, principalType=principal_type, - principalIAMRoleName=principal_iam_role_name, + principalRoleName=principal_role_name, status=ShareObjectStatus.Draft.value, requestPurpose=requestPurpose, ) @@ -222,7 +223,7 @@ def submit_share_object(cls, uri: str): if not ShareObjectService.verify_principal_role(session, share): raise PrincipalRoleNotFound( action='Submit Share Object', - message=f'The principal role {share.principalIAMRoleName} is not found.', + message=f'The principal role {share.principalRoleName} is not found.', ) valid_states = [ShareItemStatus.PendingApproval.value] @@ -265,7 +266,7 @@ def approve_share_object(cls, uri: str): ): # TODO make it generic to non IAM role principals raise PrincipalRoleNotFound( action='Approve Share Object', - message=f'The principal role {share.principalIAMRoleName} is not found.', + message=f'The principal role {share.principalRoleName} is not found.', ) cls._run_transitions(session, share, states, ShareObjectActions.Approve) diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index 72e65bbed..9d880480b 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -86,7 +86,7 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: if not ShareObjectService.verify_principal_role(session, share_data.share): raise PrincipalRoleNotFound( 'process approved shares', - f'Principal role {share_data.share.principalIAMRoleName} is not found.', + f'Principal role {share_data.share.principalRoleName} is not found.', ) with ResourceLockRepository.acquire_lock_with_retry( @@ -189,7 +189,7 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: if not ShareObjectService.verify_principal_role(session, share_data.share): raise PrincipalRoleNotFound( 'process revoked shares', - f'Principal role {share_data.share.principalIAMRoleName} is not found.', + f'Principal role {share_data.share.principalRoleName} is not found.', ) with ResourceLockRepository.acquire_lock_with_retry( @@ -268,17 +268,17 @@ def verify_share( with engine.scoped_session() as session: share_data, share_items = cls._get_share_data_and_items(session, share_uri, status, healthStatus) - log.info(f'Verifying principal IAM Role {share_data.share.principalIAMRoleName}') + log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') if not ShareObjectService.verify_principal_role(session, share_data.share): log.error( - f'Failed to get Principal IAM Role {share_data.share.principalIAMRoleName}, updating health status...' + f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, updating health status...' ) ShareStatusRepository.update_share_item_health_status_batch( session, share_uri, old_status=healthStatus, new_status=ShareItemHealthStatus.Unhealthy.value, - message=f'Share principal Role {share_data.share.principalIAMRoleName} not found. Check the team or consumption IAM role used.', + message=f'Share principal Role {share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', ) return True @@ -332,10 +332,10 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: ) try: - log.info(f'Verifying principal IAM Role {share_data.share.principalIAMRoleName}') + log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') reapply_successful = ShareObjectService.verify_principal_role(session, share_data.share) if not reapply_successful: - log.error(f'Failed to get Principal IAM Role {share_data.share.principalIAMRoleName}, exiting...') + log.error(f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, exiting...') return False else: with ResourceLockRepository.acquire_lock_with_retry( diff --git a/backend/migrations/versions/72b8a90b6ee8__share_request_purpose.py b/backend/migrations/versions/72b8a90b6ee8__share_request_purpose.py index 43091708b..d6203c37b 100644 --- a/backend/migrations/versions/72b8a90b6ee8__share_request_purpose.py +++ b/backend/migrations/versions/72b8a90b6ee8__share_request_purpose.py @@ -7,14 +7,17 @@ """ from alembic import op -from sqlalchemy import orm, Column, String +from sqlalchemy import orm, Column, String, Boolean, DateTime from sqlalchemy.ext.declarative import declarative_base +from dataall.base.db import utils +from datetime import datetime + from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService -from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_APPROVER, SHARE_OBJECT_REQUESTER from dataall.modules.s3_datasets.db.dataset_repositories import DatasetRepository +from dataall.modules.shares_base.services.shares_enums import ShareObjectStatus # revision identifiers, used by Alembic. revision = '72b8a90b6ee8' @@ -25,6 +28,23 @@ Base = declarative_base() +class ShareObject(Base): + __tablename__ = 'share_object' + shareUri = Column(String, nullable=False, primary_key=True, default=utils.uuid('share')) + datasetUri = Column(String, nullable=False) + environmentUri = Column(String) + groupUri = Column(String) + principalIAMRoleName = Column(String, nullable=True) + principalId = Column(String, nullable=True) + principalType = Column(String, nullable=True, default='Group') + status = Column(String, nullable=False, default=ShareObjectStatus.Draft.value) + owner = Column(String, nullable=False) + created = Column(DateTime, default=datetime.now) + updated = Column(DateTime, onupdate=datetime.now) + deleted = Column(DateTime) + confirmed = Column(Boolean, default=False) + + def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column('share_object', Column('requestPurpose', String(), nullable=True)) diff --git a/backend/migrations/versions/aa42cb99093a_rename_share_object_role_column.py b/backend/migrations/versions/aa42cb99093a_rename_share_object_role_column.py new file mode 100644 index 000000000..122e243ce --- /dev/null +++ b/backend/migrations/versions/aa42cb99093a_rename_share_object_role_column.py @@ -0,0 +1,25 @@ +"""rename_share_object_role_column + +Revision ID: aa42cb99093a +Revises: b2ca24b72ca4 +Create Date: 2024-08-07 09:59:57.691419 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'aa42cb99093a' +down_revision = 'b2ca24b72ca4' +branch_labels = None +depends_on = None + + +def upgrade(): + op.alter_column('share_object', 'principalIAMRoleName', nullable=True, new_column_name='principalRoleName') + + +def downgrade(): + op.alter_column('share_object', 'principalRoleName', nullable=True, new_column_name='principalIAMRoleName') diff --git a/backend/migrations/versions/c6d01930179d_add_backfill_read_folder_permissions.py b/backend/migrations/versions/c6d01930179d_add_backfill_read_folder_permissions.py index 0fc1c0de7..fe33fe615 100644 --- a/backend/migrations/versions/c6d01930179d_add_backfill_read_folder_permissions.py +++ b/backend/migrations/versions/c6d01930179d_add_backfill_read_folder_permissions.py @@ -9,17 +9,18 @@ from alembic import op from sqlalchemy import orm from sqlalchemy import and_ -from sqlalchemy import Column, String, Boolean +from sqlalchemy import Column, String, Boolean, DateTime from sqlalchemy.dialects import postgresql from sqlalchemy.ext.declarative import declarative_base from dataall.base.db import utils, Resource +from datetime import datetime from dataall.core.permissions.api.enums import PermissionType from dataall.core.permissions.services.permission_service import PermissionService from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_FOLDER_READ, GET_DATASET_FOLDER from dataall.modules.s3_datasets.db.dataset_models import DatasetStorageLocation -from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem -from dataall.modules.shares_base.services.shares_enums import ShareItemStatus, ShareableType +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem +from dataall.modules.shares_base.services.shares_enums import ShareItemStatus, ShareableType, ShareObjectStatus from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification, Language # revision identifiers, used by Alembic. @@ -38,6 +39,23 @@ def get_session(): Base = declarative_base() +class ShareObject(Base): + __tablename__ = 'share_object' + shareUri = Column(String, nullable=False, primary_key=True, default=utils.uuid('share')) + datasetUri = Column(String, nullable=False) + environmentUri = Column(String) + groupUri = Column(String) + principalIAMRoleName = Column(String, nullable=True) + principalId = Column(String, nullable=True) + principalType = Column(String, nullable=True, default='Group') + status = Column(String, nullable=False, default=ShareObjectStatus.Draft.value) + owner = Column(String, nullable=False) + created = Column(DateTime, default=datetime.now) + updated = Column(DateTime, onupdate=datetime.now) + deleted = Column(DateTime) + confirmed = Column(Boolean, default=False) + + class Dataset(Resource, Base): __tablename__ = 'dataset' environmentUri = Column(String, nullable=False) diff --git a/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js b/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js index d136362b0..9cbea973f 100644 --- a/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js +++ b/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js @@ -164,16 +164,13 @@ export const RequestRedshiftAccessModal = (props) => { }; const formRequestObject = (values) => { - let type = 'RedshiftRole'; - let principal = `{connectionUri: ${values.connection}, rsRole: ${values.rsRole}`; - let inputObject = { environmentUri: values.environmentUri, groupUri: values.groupUri, - principalId: principal, - principalType: type, - requestPurpose: values.comment, - attachMissingPolicies: values.attachMissingPolicies + principalId: values.connection, + principalRoleName: values.rsRole, + principalType: 'RedshiftRole', + requestPurpose: values.comment }; if (hit.resourceKind === 'redshiftdataset') { diff --git a/frontend/src/modules/Shares/components/ShareBoxList.js b/frontend/src/modules/Shares/components/ShareBoxList.js index a8611e43e..44f1c0e41 100644 --- a/frontend/src/modules/Shares/components/ShareBoxList.js +++ b/frontend/src/modules/Shares/components/ShareBoxList.js @@ -198,7 +198,7 @@ export const ShareBoxList = (props) => { Array.from( new Set( response.data.getShareRequestsToMe.nodes.map( - (node) => node.principal.principalIAMRoleName + (node) => node.principal.principalRoleName ) ) ) diff --git a/frontend/src/modules/Shares/components/ShareBoxListItem.js b/frontend/src/modules/Shares/components/ShareBoxListItem.js index 2788c34b7..c99c8cc03 100644 --- a/frontend/src/modules/Shares/components/ShareBoxListItem.js +++ b/frontend/src/modules/Shares/components/ShareBoxListItem.js @@ -64,7 +64,7 @@ export const ShareBoxListItem = ({ share }) => { variant="body1" style={{ wordWrap: 'break-word' }} > - {`${share.principal.principalIAMRoleName}`} + {`${share.principal.principalRoleName}`} diff --git a/frontend/src/modules/Shares/components/ShareObjectSelectorModal.js b/frontend/src/modules/Shares/components/ShareObjectSelectorModal.js index 6cf216ae7..7583dcdbb 100644 --- a/frontend/src/modules/Shares/components/ShareObjectSelectorModal.js +++ b/frontend/src/modules/Shares/components/ShareObjectSelectorModal.js @@ -52,7 +52,7 @@ export const ShareObjectSelectorModal = (props) => { filteredShares.map((share) => ({ id: share.shareUri, requestOwner: share.principal.SamlGroupName, - IAMRole: share.principal.principalIAMRoleName, + IAMRole: share.principal.principalRoleName, status: share.status })) ); diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index 2c79e240b..eefc2472d 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -20,7 +20,7 @@ export const getShareObject = ({ shareUri, filter }) => ({ principalId principalType principalName - principalIAMRoleName + principalRoleName SamlGroupName environmentUri environmentName diff --git a/frontend/src/modules/Shares/services/getShareRequestsFromMe.js b/frontend/src/modules/Shares/services/getShareRequestsFromMe.js index 17a91784c..7998c5035 100644 --- a/frontend/src/modules/Shares/services/getShareRequestsFromMe.js +++ b/frontend/src/modules/Shares/services/getShareRequestsFromMe.js @@ -21,7 +21,7 @@ export const getShareRequestsFromMe = ({ filter }) => ({ principalId principalType principalName - principalIAMRoleName + principalRoleName SamlGroupName environmentUri environmentName diff --git a/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js b/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js index 1050172c5..b1120cfbd 100644 --- a/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js +++ b/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js @@ -21,7 +21,7 @@ export const getShareRequestsToMe = ({ filter }) => ({ principalId principalType principalName - principalIAMRoleName + principalRoleName SamlGroupName environmentUri environmentName diff --git a/tests/modules/s3_datasets/conftest.py b/tests/modules/s3_datasets/conftest.py index 0ea9d4ae7..976aba2fc 100644 --- a/tests/modules/s3_datasets/conftest.py +++ b/tests/modules/s3_datasets/conftest.py @@ -378,7 +378,7 @@ def factory( groupUri=env_group.groupUri, principalId=env_group.groupUri, principalType=PrincipalType.Group.value, - principalIAMRoleName=env_group.environmentIAMRoleName, + principalRoleName=env_group.environmentIAMRoleName, status=status, ) session.add(share) diff --git a/tests/modules/s3_datasets/tasks/conftest.py b/tests/modules/s3_datasets/tasks/conftest.py index 9af472585..001468524 100644 --- a/tests/modules/s3_datasets/tasks/conftest.py +++ b/tests/modules/s3_datasets/tasks/conftest.py @@ -129,7 +129,7 @@ def factory(dataset: S3Dataset, environment: Environment, env_group: Environment owner='bob', principalId=environment.SamlGroupName, principalType=PrincipalType.Group.value, - principalIAMRoleName=env_group.environmentIAMRoleName, + principalRoleName=env_group.environmentIAMRoleName, status=ShareObjectStatus.Approved.value, groupUri=env_group.groupUri, ) diff --git a/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py b/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py index 8da837fb3..5ca06dab1 100644 --- a/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py +++ b/tests/modules/s3_datasets/tasks/test_dataset_subscriptions.py @@ -70,6 +70,7 @@ def share( environmentUri=otherenv.environmentUri, owner='bob', principalId='group2', + principalRoleName='uri-group2', principalType=PrincipalType.Group.value, status=ShareObjectStatus.Approved.value, ) diff --git a/tests/modules/s3_datasets_shares/conftest.py b/tests/modules/s3_datasets_shares/conftest.py index 0ea9d4ae7..976aba2fc 100644 --- a/tests/modules/s3_datasets_shares/conftest.py +++ b/tests/modules/s3_datasets_shares/conftest.py @@ -378,7 +378,7 @@ def factory( groupUri=env_group.groupUri, principalId=env_group.groupUri, principalType=PrincipalType.Group.value, - principalIAMRoleName=env_group.environmentIAMRoleName, + principalRoleName=env_group.environmentIAMRoleName, status=status, ) session.add(share) diff --git a/tests/modules/s3_datasets_shares/tasks/conftest.py b/tests/modules/s3_datasets_shares/tasks/conftest.py index c365cfdcc..4f2cf2744 100644 --- a/tests/modules/s3_datasets_shares/tasks/conftest.py +++ b/tests/modules/s3_datasets_shares/tasks/conftest.py @@ -129,7 +129,7 @@ def factory(dataset: S3Dataset, environment: Environment, env_group: Environment owner='bob', principalId=environment.SamlGroupName, principalType=PrincipalType.Group.value, - principalIAMRoleName=env_group.environmentIAMRoleName, + principalRoleName=env_group.environmentIAMRoleName, status=ShareObjectStatus.Approved.value, groupUri=env_group.groupUri, ) diff --git a/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py index 451eec950..1043b1044 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py @@ -173,7 +173,7 @@ def test_get_share_principals( # Then, it should return assert manager.get_share_principals() == [ - f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share.principalIAMRoleName}' + f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share.principalRoleName}' ] get_iam_role_arn_mock.assert_called_once() diff --git a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py index 96724bceb..9fd7c8e14 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py @@ -378,7 +378,7 @@ def test_grant_target_role_access_policy_test_empty_policy( expected_policy_name = S3SharePolicyService( environmentUri=target_environment.environmentUri, - role_name=share1.principalIAMRoleName, + role_name=share1.principalRoleName, account=target_environment.AwsAccountId, region=target_environment.region, resource_prefix=target_environment.resourcePrefix, @@ -485,7 +485,7 @@ def test_update_dataset_bucket_key_policy_with_env_admin( # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = None - mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) existing_key_policy = { 'Version': '2012-10-17', @@ -562,7 +562,7 @@ def test_update_dataset_bucket_key_policy_without_env_admin( # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = 'kms-key' - iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) existing_key_policy = { 'Version': '2012-10-17', @@ -933,7 +933,7 @@ def test_delete_target_role_access_policy_no_remaining_statement( expected_policy_name = S3SharePolicyService( environmentUri=target_environment.environmentUri, - role_name=share1.principalIAMRoleName, + role_name=share1.principalRoleName, account=target_environment.AwsAccountId, region=target_environment.region, resource_prefix=target_environment.resourcePrefix, @@ -1037,7 +1037,7 @@ def test_delete_target_role_access_policy_with_remaining_statement( # Then expected_policy_name = S3SharePolicyService( environmentUri=target_environment.environmentUri, - role_name=share1.principalIAMRoleName, + role_name=share1.principalRoleName, account=target_environment.AwsAccountId, region=target_environment.region, resource_prefix=target_environment.resourcePrefix, @@ -1060,7 +1060,7 @@ def test_delete_dataset_bucket_key_policy_existing_policy_with_additional_target # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = '1' - mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) # Includes target env admin to be removed and another, that should remain existing_key_policy = { @@ -1072,7 +1072,7 @@ def test_delete_dataset_bucket_key_policy_existing_policy_with_additional_target 'Principal': { 'AWS': [ 'SomeTargetResourceArn', - f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalIAMRoleName}', + f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalRoleName}', ] }, 'Action': 'kms:Decrypt', @@ -1111,7 +1111,7 @@ def test_delete_dataset_bucket_key_policy_existing_policy_with_no_additional_tar # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = '1' - mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) # Includes target env admin to be removed and another, that should remain existing_key_policy = { @@ -1121,7 +1121,7 @@ def test_delete_dataset_bucket_key_policy_existing_policy_with_no_additional_tar 'Sid': f'{DATAALL_ACCESS_POINT_KMS_DECRYPT_SID}', 'Effect': 'Allow', 'Principal': { - 'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalIAMRoleName}'] + 'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalRoleName}'] }, 'Action': 'kms:Decrypt', 'Resource': '*', @@ -1467,7 +1467,7 @@ def test_check_dataset_bucket_key_policy(mocker, share1: ShareObject, target_env # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = None - mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) existing_key_policy = { 'Version': '2012-10-17', @@ -1476,7 +1476,7 @@ def test_check_dataset_bucket_key_policy(mocker, share1: ShareObject, target_env 'Sid': f'{DATAALL_ACCESS_POINT_KMS_DECRYPT_SID}', 'Effect': 'Allow', 'Principal': { - 'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalIAMRoleName}'] + 'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share1.principalRoleName}'] }, 'Action': 'kms:Decrypt', 'Resource': '*', @@ -1515,7 +1515,7 @@ def test_check_dataset_bucket_key_policy_mising_role( # Given kms_client = mock_kms_client(mocker) kms_client().get_key_id.return_value = 'kms-key' - mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share1.principalRoleName) existing_key_policy = { 'Version': '2012-10-17', diff --git a/tests/modules/s3_datasets_shares/tasks/test_s3_bucket_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_s3_bucket_share_manager.py index 45ac1332d..a8d175e56 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_s3_bucket_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_s3_bucket_share_manager.py @@ -271,7 +271,7 @@ def test_grant_role_bucket_policy_with_no_policy_present( # No Bucket policy. A Default bucket policy should be formed with DataAll-Bucket-ReadOnly & RequiredSecureTransport Sids s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = None - iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', @@ -316,7 +316,7 @@ def test_grant_role_bucket_policy_with_default_complete_policy( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + iam_client = mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.grant_role_bucket_policy() @@ -341,7 +341,7 @@ def test_grant_role_bucket_policy_with_policy_and_no_read_only_sid( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', @@ -385,7 +385,7 @@ def test_grant_role_bucket_policy_with_another_read_only_role( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', @@ -682,7 +682,7 @@ def test_grant_dataset_bucket_key_policy_with_complete_policy_present( existing_key_policy = base_kms_key_policy() kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_name', @@ -704,7 +704,7 @@ def test_grant_dataset_bucket_key_policy_with_target_requester_id_absent( existing_key_policy = base_kms_key_policy('OtherTargetRequestorArn') kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_name', @@ -745,7 +745,7 @@ def test_grant_dataset_bucket_key_policy_and_default_bucket_key_policy( kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalRoleName) with db.scoped_session() as session: # dataset2 should not have importedKey to simulate that while importing the dataset a key was not added @@ -782,7 +782,7 @@ def test_grant_dataset_bucket_key_policy_with_imported( kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalRoleName) mocker.patch( 'dataall.base.aws.sts.SessionHelper.get_delegation_role_name', @@ -813,7 +813,7 @@ def test_delete_target_role_bucket_policy_with_no_read_only_sid( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_policy() @@ -846,7 +846,7 @@ def test_delete_target_role_bucket_policy_with_multiple_principals_in_policy( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_policy() @@ -895,7 +895,7 @@ def test_delete_target_role_bucket_policy_with_one_principal_in_policy( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_policy() @@ -1181,7 +1181,7 @@ def test_delete_target_role_bucket_key_policy_with_no_target_requester_id( kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_key_policy(target_bucket=bucket2) @@ -1200,7 +1200,7 @@ def test_delete_target_role_bucket_key_policy_with_target_requester_id( kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_key_policy(target_bucket=bucket2) @@ -1225,7 +1225,7 @@ def test_delete_target_role_bucket_key_policy_with_target_requester_id_and_impor kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalRoleName) share2_manager.delete_target_role_bucket_key_policy(target_bucket=bucket3) @@ -1250,7 +1250,7 @@ def test_delete_target_role_bucket_key_policy_with_target_requester_id_and_impor kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share3.principalRoleName) with db.scoped_session() as session: # dataset2 should not have importedKey to simulate that while importing the dataset a key was not added @@ -1293,7 +1293,7 @@ def test_delete_target_role_bucket_key_policy_with_multiple_principals_in_policy kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.delete_target_role_bucket_key_policy(target_bucket=bucket2) @@ -1322,9 +1322,7 @@ def test_check_role_bucket_policy( { 'Sid': f'{DATAALL_READ_ONLY_SID}', 'Effect': 'Allow', - 'Principal': { - 'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share2.principalIAMRoleName}'] - }, + 'Principal': {'AWS': [f'arn:aws:iam::{target_environment.AwsAccountId}:role/{share2.principalRoleName}']}, 'Action': ['s3:List*', 's3:GetObject'], 'Resource': [f'arn:aws:s3:::someS3Bucket', f'arn:aws:s3:::someS3Bucket/*'], } @@ -1332,7 +1330,7 @@ def test_check_role_bucket_policy( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.check_role_bucket_policy() assert (len(share2_manager.bucket_errors)) == 0 @@ -1357,7 +1355,7 @@ def test_check_role_bucket_policy_missing_role_principal( s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = json.dumps(bucket_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.check_role_bucket_policy() assert (len(share2_manager.bucket_errors)) == 1 @@ -1370,7 +1368,7 @@ def test_check_role_bucket_policy_no_policy( # No Bucket policy s3_client = mock_s3_client(mocker) s3_client().get_bucket_policy.return_value = None - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) # When share2_manager.check_role_bucket_policy() @@ -1617,7 +1615,7 @@ def test_check_dataset_bucket_key_policy(mocker, share2: ShareObject, target_env existing_key_policy = base_kms_key_policy() kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) # When share2_manager.check_dataset_bucket_key_policy() @@ -1633,7 +1631,7 @@ def test_check_dataset_bucket_key_policy_missing( kms_client().get_key_id.return_value = 'kms-key' kms_client().get_key_policy.return_value = None - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) # When share2_manager.check_dataset_bucket_key_policy() @@ -1651,7 +1649,7 @@ def test_check_dataset_bucket_key_policy_missing_principal( existing_key_policy = base_kms_key_policy('OtherTargetRequestorArn') kms_client().get_key_policy.return_value = json.dumps(existing_key_policy) - mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalIAMRoleName) + mock_iam_client(mocker, target_environment.AwsAccountId, share2.principalRoleName) share2_manager.check_dataset_bucket_key_policy() # Then diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 68670a65b..96433d787 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -472,7 +472,7 @@ def get_share_object(client, user, group, shareUri, filter): principalId principalType principalName - principalIAMRoleName + principalRoleName SamlGroupName environmentUri environmentName @@ -1084,7 +1084,7 @@ def test_get_share_object(client, share1_draft, user, group): # Then we get the info about the share assert get_share_object_response.data.getShareObject.shareUri == share1_draft.shareUri assert get_share_object_response.data.getShareObject.get('principal').principalType == PrincipalType.Group.name - assert get_share_object_response.data.getShareObject.get('principal').principalIAMRoleName + assert get_share_object_response.data.getShareObject.get('principal').principalRoleName assert get_share_object_response.data.getShareObject.get('principal').SamlGroupName assert get_share_object_response.data.getShareObject.get('principal').region From 7ca67b86cd5c899fdf206d2958024d02fa47850c Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Thu, 8 Aug 2024 09:50:10 +0100 Subject: [PATCH 021/188] Metadata forms-2: Create, display list, search list (#1444) ### Feature or Bugfix - Feature ### Detail - Sidebar item "Metadata Forms" if module enabled - List of all Metadata Forms - Search in the list by Name or Description - Create Metadata Form (no fields yet) - Integration test (create, delete, list) ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? **Yes** - What precautions are you taking before deserializing the data you consume? **backend typisation** - Is injection prevented by parametrizing queries? **yes** - Have you ensured no `eval` or similar functions are used? **no evals or similar** - Does this PR introduce any functionality or component that requires authorization? **NA** - Are you using or adding any cryptographic features? **NA** - Are you introducing any new policies/roles/users? **NA** By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .gitignore | 1 + backend/dataall/base/api/constants.py | 8 + .../base/api/gql/graphql_type_modifiers.py | 2 +- .../modules/metadata_forms/__init__.py | 13 + .../modules/metadata_forms/api/__init__.py | 10 + .../modules/metadata_forms/api/enums.py | 5 + .../modules/metadata_forms/api/input_types.py | 22 + .../modules/metadata_forms/api/mutations.py | 20 + .../modules/metadata_forms/api/queries.py | 10 + .../modules/metadata_forms/api/resolvers.py | 19 + .../modules/metadata_forms/api/types.py | 30 ++ .../db/metadata_form_repository.py | 36 ++ .../services/metadata_form_service.py | 71 ++++ config.json | 3 + frontend/src/design/components/defaults.js | 6 +- .../components/layout/DefaultSidebar.js | 17 +- .../components/MetadataFormListItem.js | 186 ++++++++ .../components/createMetadataFormModal.js | 397 ++++++++++++++++++ .../Metadata_Forms/components/index.js | 2 + frontend/src/modules/Metadata_Forms/index.js | 5 + .../services/createMetadataForm.js | 14 + .../modules/Metadata_Forms/services/index.js | 2 + .../services/listMetadataForms.js | 27 ++ .../Metadata_Forms/views/MetadataFormEdit.js | 0 .../Metadata_Forms/views/MetadataFormList.js | 232 ++++++++++ .../Metadata_Forms/views/MetadataFormView.js | 0 frontend/src/modules/index.js | 1 + frontend/src/routes.js | 21 + .../modules/metadata_forms/conftest.py | 24 ++ .../modules/metadata_forms/queries.py | 60 +++ .../metadata_forms/test_metadata_forms.py | 17 + 31 files changed, 1254 insertions(+), 7 deletions(-) create mode 100644 backend/dataall/modules/metadata_forms/__init__.py create mode 100644 backend/dataall/modules/metadata_forms/api/__init__.py create mode 100644 backend/dataall/modules/metadata_forms/api/enums.py create mode 100644 backend/dataall/modules/metadata_forms/api/input_types.py create mode 100644 backend/dataall/modules/metadata_forms/api/mutations.py create mode 100644 backend/dataall/modules/metadata_forms/api/queries.py create mode 100644 backend/dataall/modules/metadata_forms/api/resolvers.py create mode 100644 backend/dataall/modules/metadata_forms/api/types.py create mode 100644 backend/dataall/modules/metadata_forms/db/metadata_form_repository.py create mode 100644 backend/dataall/modules/metadata_forms/services/metadata_form_service.py create mode 100644 frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js create mode 100644 frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js create mode 100644 frontend/src/modules/Metadata_Forms/components/index.js create mode 100644 frontend/src/modules/Metadata_Forms/index.js create mode 100644 frontend/src/modules/Metadata_Forms/services/createMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/index.js create mode 100644 frontend/src/modules/Metadata_Forms/services/listMetadataForms.js create mode 100644 frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js create mode 100644 frontend/src/modules/Metadata_Forms/views/MetadataFormList.js create mode 100644 frontend/src/modules/Metadata_Forms/views/MetadataFormView.js create mode 100644 tests_new/integration_tests/modules/metadata_forms/conftest.py create mode 100644 tests_new/integration_tests/modules/metadata_forms/queries.py create mode 100644 tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py diff --git a/.gitignore b/.gitignore index 95e9e9664..5c130e68b 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ yarn-debug.log* yarn-error.log* .idea /.ruff_cache/ +/testdata.json diff --git a/backend/dataall/base/api/constants.py b/backend/dataall/base/api/constants.py index f0edc5e68..63284acca 100644 --- a/backend/dataall/base/api/constants.py +++ b/backend/dataall/base/api/constants.py @@ -21,6 +21,14 @@ def to_label(cls, value): return c.name return None + @classmethod + def has_value(cls, value): + return value in cls._value2member_map_ + + @classmethod + def has_key(cls, key): + return key in cls._member_map_ + class SortDirection(GraphQLEnumMapper): asc = 'asc' diff --git a/backend/dataall/base/api/gql/graphql_type_modifiers.py b/backend/dataall/base/api/gql/graphql_type_modifiers.py index 3d24dfb2f..140eab401 100644 --- a/backend/dataall/base/api/gql/graphql_type_modifiers.py +++ b/backend/dataall/base/api/gql/graphql_type_modifiers.py @@ -36,7 +36,7 @@ def gql(self): elif isinstance(self.of_type, Thunk): return template(self.of_type.target.name) else: - raise Exception('Cant gql ') + raise Exception(f'Cant gql {self.of_type}') return Modifier diff --git a/backend/dataall/modules/metadata_forms/__init__.py b/backend/dataall/modules/metadata_forms/__init__.py new file mode 100644 index 000000000..64ecae114 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/__init__.py @@ -0,0 +1,13 @@ +from dataall.base.loader import ModuleInterface, ImportMode + + +class MetadataFormsApiModuleInterface(ModuleInterface): + """Implements ModuleInterface for Metadata Forms GraphQl lambda""" + + @classmethod + def is_supported(cls, modes): + return ImportMode.API in modes + + def __init__(self): + import dataall.modules.metadata_forms.api + import dataall.modules.metadata_forms.db.enums diff --git a/backend/dataall/modules/metadata_forms/api/__init__.py b/backend/dataall/modules/metadata_forms/api/__init__.py new file mode 100644 index 000000000..c4423b653 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/__init__.py @@ -0,0 +1,10 @@ +from . import ( + input_types, + types, + resolvers, + enums, + mutations, + queries, +) + +__all__ = ['enums', 'resolvers', 'types', 'input_types', 'queries', 'mutations'] diff --git a/backend/dataall/modules/metadata_forms/api/enums.py b/backend/dataall/modules/metadata_forms/api/enums.py new file mode 100644 index 000000000..a795ce5b0 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/enums.py @@ -0,0 +1,5 @@ +from dataall.base.api import GraphQLEnumMapper + + +class EnvironmentSortField(GraphQLEnumMapper): + name = 'name' diff --git a/backend/dataall/modules/metadata_forms/api/input_types.py b/backend/dataall/modules/metadata_forms/api/input_types.py new file mode 100644 index 000000000..94b1068e8 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/input_types.py @@ -0,0 +1,22 @@ +from dataall.base.api import gql + +NewMetadataFormInput = gql.InputType( + name='NewMetadataFormInput', + arguments=[ + gql.Field(name='name', type=gql.NonNullableType(gql.String)), + gql.Field(name='description', type=gql.String), + gql.Field(name='SamlGroupName', type=gql.NonNullableType(gql.String)), + gql.Field(name='visibility', type=gql.NonNullableType(gql.String)), + gql.Field(name='homeEntity', type=gql.String), + ], +) + + +MetadataFormFilter = gql.InputType( + name='MetadataFormFilter', + arguments=[ + gql.Argument('page', gql.Integer), + gql.Argument('search_input', gql.String), + gql.Argument('pageSize', gql.Integer), + ], +) diff --git a/backend/dataall/modules/metadata_forms/api/mutations.py b/backend/dataall/modules/metadata_forms/api/mutations.py new file mode 100644 index 000000000..0b95ead33 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/mutations.py @@ -0,0 +1,20 @@ +from dataall.base.api import gql +from dataall.modules.metadata_forms.api.resolvers import create_metadata_form, delete_metadata_form + +createMetadataForm = gql.MutationField( + name='createMetadataForm', + args=[gql.Argument(name='input', type=gql.NonNullableType(gql.Ref('NewMetadataFormInput')))], + type=gql.Ref('MetadataForm'), + resolver=create_metadata_form, + test_scope='MetadataForm', +) + +deleteMetadataForm = gql.MutationField( + name='deleteMetadataForm', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + ], + type=gql.Boolean, + resolver=delete_metadata_form, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/queries.py b/backend/dataall/modules/metadata_forms/api/queries.py new file mode 100644 index 000000000..753ef5f1b --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/queries.py @@ -0,0 +1,10 @@ +from dataall.base.api import gql +from dataall.modules.metadata_forms.api.resolvers import list_metadata_forms + +listMetadataForms = gql.QueryField( + name='listMetadataForms', + args=[gql.Argument('filter', gql.Ref('MetadataFormFilter'))], + type=gql.Ref('MetadataFormSearchResult'), + resolver=list_metadata_forms, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py new file mode 100644 index 000000000..6b3fdbb71 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -0,0 +1,19 @@ +from dataall.base.api.context import Context +from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm +from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService + + +def create_metadata_form(context: Context, source, input): + return MetadataFormService.create_metadata_form(input) + + +def delete_metadata_form(context: Context, source, formUri): + return MetadataFormService.delete_metadata_form_by_uri(formUri) + + +def list_metadata_forms(context: Context, source, filter=None): + return MetadataFormService.paginated_metadata_form_list(filter) + + +def get_home_entity_name(context: Context, source: MetadataForm): + return MetadataFormService.get_home_entity_name(source) diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py new file mode 100644 index 000000000..9318c4a30 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -0,0 +1,30 @@ +from dataall.base.api import gql +from dataall.modules.metadata_forms.api.resolvers import get_home_entity_name + +MetadataForm = gql.ObjectType( + name='MetadataForm', + fields=[ + gql.Field(name='uri', type=gql.ID), + gql.Field(name='name', type=gql.String), + gql.Field(name='description', type=gql.String), + gql.Field(name='SamlGroupName', type=gql.String), + gql.Field(name='visibility', type=gql.String), + gql.Field(name='homeEntity', type=gql.String), + gql.Field(name='homeEntityName', type=gql.String, resolver=get_home_entity_name), + ], +) + +MetadataFormSearchResult = gql.ObjectType( + name='MetadataFormSearchResult', + fields=[ + gql.Field(name='count', type=gql.Integer), + gql.Field(name='nodes', type=gql.ArrayType(gql.Ref('MetadataForm'))), + gql.Field(name='pageSize', type=gql.Integer), + gql.Field(name='nextPage', type=gql.Integer), + gql.Field(name='pages', type=gql.Integer), + gql.Field(name='page', type=gql.Integer), + gql.Field(name='previousPage', type=gql.Integer), + gql.Field(name='hasNext', type=gql.Boolean), + gql.Field(name='hasPrevious', type=gql.Boolean), + ], +) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py new file mode 100644 index 000000000..9b2753b5d --- /dev/null +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -0,0 +1,36 @@ +from sqlalchemy import or_ + +from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility + + +class MetadataFormRepository: + @staticmethod + def create_metadata_form(session, data=None): + mf: MetadataForm = MetadataForm( + name=data.get('name'), + description=data.get('description'), + SamlGroupName=data.get('SamlGroupName'), + visibility=data.get('visibility'), + homeEntity=data.get('homeEntity'), + ) + session.add(mf) + session.commit() + return mf + + @staticmethod + def get_metadata_form(session, uri): + return session.query(MetadataForm).get(uri) + + @staticmethod + def list_metadata_forms(session, filter=None): + query = session.query(MetadataForm) + if filter and filter.get('search_input'): + query = query.filter( + or_( + MetadataForm.name.ilike('%' + filter.get('search_input') + '%'), + MetadataForm.description.ilike('%' + filter.get('search_input') + '%'), + ) + ) + + return query.order_by(MetadataForm.name) diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py new file mode 100644 index 000000000..eb6e8fbf9 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -0,0 +1,71 @@ +from dataall.base.context import get_context +from dataall.base.db import exceptions, paginate +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.core.environment.db.environment_repositories import EnvironmentRepository + +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility +from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository + + +class MetadataFormParamValidationService: + @staticmethod + def validate_create_form_params(data): + visibility = data.get('visibility', MetadataFormVisibility.Team.value) + if not MetadataFormVisibility.has_value(visibility): + data['visibility'] = MetadataFormVisibility.Global.value + + if not data.get('SamlGroupName'): + raise exceptions.RequiredParameter('SamlGroupName') + + if (not data.get('homeEntity')) and (visibility != MetadataFormVisibility.Global.value): + raise exceptions.RequiredParameter('homeEntity') + + if not data.get('name'): + raise exceptions.RequiredParameter('name') + + +class MetadataFormService: + @staticmethod + def create_metadata_form(data): + MetadataFormParamValidationService.validate_create_form_params(data) + with get_context().db_engine.scoped_session() as session: + form = MetadataFormRepository.create_metadata_form(session, data) + return form + + # toDo: add permission check + @staticmethod + def get_metadata_form_by_uri(uri): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.get_metadata_form(session, uri) + + # toDo: add permission check + # toDo: deletion logic + @staticmethod + def delete_metadata_form_by_uri(uri): + mf = MetadataFormService.get_metadata_form_by_uri(uri) + with get_context().db_engine.scoped_session() as session: + return session.delete(mf) + + @staticmethod + def paginated_metadata_form_list(data=None) -> dict: + context = get_context() + data = data if data is not None else {} + with context.db_engine.scoped_session() as session: + return paginate( + query=MetadataFormRepository.list_metadata_forms(session, data), + page=data.get('page', 1), + page_size=data.get('pageSize', 5), + ).to_dict() + + @staticmethod + def get_home_entity_name(metadata_form): + if metadata_form.visibility == MetadataFormVisibility.Team.value: + return metadata_form.homeEntity + elif metadata_form.visibility == MetadataFormVisibility.Organization.value: + with get_context().db_engine.scoped_session() as session: + return OrganizationRepository.get_organization_by_uri(session, metadata_form.homeEntity).name + elif metadata_form.visibility == MetadataFormVisibility.Environment.value: + with get_context().db_engine.scoped_session() as session: + return EnvironmentRepository.get_environment_by_uri(session, metadata_form.homeEntity).name + else: + return '' diff --git a/config.json b/config.json index cd518487c..d54252ac9 100644 --- a/config.json +++ b/config.json @@ -12,6 +12,9 @@ "omics": { "active": false }, + "metadata_forms": { + "active": true + }, "datasets_base": { "active": true, "features": { diff --git a/frontend/src/design/components/defaults.js b/frontend/src/design/components/defaults.js index bc0682bca..fb538078f 100644 --- a/frontend/src/design/components/defaults.js +++ b/frontend/src/design/components/defaults.js @@ -1,8 +1,7 @@ export const Defaults = { filter: { page: 1, - pageSize: 10, - term: '' + pageSize: 10 }, pagedResponse: { @@ -16,7 +15,6 @@ export const Defaults = { selectListFilter: { page: 1, - pageSize: 10000, - term: '' + pageSize: 10000 } }; diff --git a/frontend/src/design/components/layout/DefaultSidebar.js b/frontend/src/design/components/layout/DefaultSidebar.js index 1152f5d40..44041d772 100644 --- a/frontend/src/design/components/layout/DefaultSidebar.js +++ b/frontend/src/design/components/layout/DefaultSidebar.js @@ -1,4 +1,9 @@ -import { ChevronLeft, ChevronRight, ShareOutlined } from '@mui/icons-material'; +import { + ChevronLeft, + ChevronRight, + ShareOutlined, + BallotOutlined +} from '@mui/icons-material'; import { Box, Button, @@ -53,6 +58,13 @@ export const DefaultSidebar = ({ openDrawer, onOpenDrawerChange }) => { active: isModuleEnabled(ModuleNames.GLOSSARIES) }; + const metadataFormSection = { + title: 'Metadata Forms', + path: '/console/metadata-forms', + icon: , + active: isModuleEnabled(ModuleNames.METADATA_FORMS) + }; + const worksheetsSection = { title: 'Worksheets', path: '/console/worksheets', @@ -117,7 +129,8 @@ export const DefaultSidebar = ({ openDrawer, onOpenDrawerChange }) => { catalogSection, datasetsSection, sharesSection, - glossariesSection + glossariesSection, + metadataFormSection ] }, { diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js new file mode 100644 index 000000000..0dac3cf78 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js @@ -0,0 +1,186 @@ +import { + Box, + Card, + Divider, + Grid, + Link, + Tooltip, + Typography +} from '@mui/material'; +import PropTypes from 'prop-types'; +import * as FaIcons from 'react-icons/fa'; +import { IconAvatar, useCardStyle } from 'design'; +import { BallotOutlined } from '@mui/icons-material'; + +export const MetadataFormListItem = (props) => { + const { metadata_form, visibilityDict } = props; + const classes = useCardStyle(); + // const navigate = useNavigate(); + + return ( + + + + + + + } /> + + { + //navigate(`/console/metadata-forms/${metadata_form.uri}`); + }} + > + + {metadata_form.name} + + + + owned by{' '} + + {metadata_form.SamlGroupName} + + + + + + + + + + + + {metadata_form.description || 'No description provided'} + + + + + + + + + Visibility + + + + + + {metadata_form.visibility || '-'} + + + + + + + + + {metadata_form.visibility !== visibilityDict.Global && ( + + {' '} + {Object.keys(visibilityDict).find( + (key) => visibilityDict[key] === metadata_form.visibility + )} + + )} + + + {metadata_form.visibility !== visibilityDict.Global && ( + + + + {metadata_form.homeEntityName || '-'} + + + + )} + + + + + + + + ); +}; +MetadataFormListItem.propTypes = { + metadata_form: PropTypes.object.isRequired, + visibilityDict: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js b/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js new file mode 100644 index 000000000..bdd18c702 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js @@ -0,0 +1,397 @@ +import SendIcon from '@mui/icons-material/Send'; +import { LoadingButton } from '@mui/lab'; +import { + Box, + Button, + CardContent, + CircularProgress, + Dialog, + TextField, + Typography, + Autocomplete +} from '@mui/material'; +import { Formik } from 'formik'; +import PropTypes from 'prop-types'; +import React, { useEffect, useState } from 'react'; +import { Defaults } from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { listValidEnvironments, useClient, useGroups } from 'services'; +import { listOrganizations } from '../../Organizations/services'; +import { createMetadataForm } from '../services'; +import * as Yup from 'yup'; + +export const CreateMetadataFormModal = (props) => { + const { visibilityDict, onApply, onClose, open, stopLoader, ...other } = + props; + const dispatch = useDispatch(); + const client = useClient(); + const groups = useGroups(); + const [loading, setLoading] = useState(false); + const [environmentOptions, setEnvironmentOptions] = useState([]); + const [organizationOptions, setOrganizationOptions] = useState([]); + const [visibilityOptions, setVisibilityOptions] = useState([]); + + const fetchOrganizations = async () => { + try { + const response = await client.query( + listOrganizations({ + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setOrganizationOptions( + response.data.listOrganizations.nodes.map((e) => ({ + ...e, + value: e.organizationUri, + label: e.label + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + const fetchEnvironments = async () => { + try { + const response = await client.query( + listValidEnvironments({ + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setEnvironmentOptions( + response.data.listValidEnvironments.nodes.map((e) => ({ + ...e, + value: e.environmentUri, + label: e.label + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + useEffect(() => { + setVisibilityOptions( + Object.entries(visibilityDict).map((elem) => { + return { name: elem[0], value: elem[1] }; + }) + ); + + if (client && open) { + setLoading(true); + fetchEnvironments().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchOrganizations().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + setLoading(false); + stopLoader(); + } + }, [client, open, dispatch]); + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + let homeEntity = ''; + if (values.visibility === visibilityDict.Team) { + homeEntity = values.group; + } + if (values.visibility === visibilityDict.Environment) { + homeEntity = values.environment; + } + if (values.visibility === visibilityDict.Organization) { + homeEntity = values.organization; + } + const response = await client.mutate( + createMetadataForm({ + name: values.name, + description: values.description, + visibility: values.visibility, + SamlGroupName: values.owner, + homeEntity: homeEntity + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + onApply(); + } else { + setStatus({ success: false }); + setErrors({ submit: response.errors[0].message }); + setSubmitting(false); + } + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + if (loading) { + return null; + } + + return ( + + + + Create Metadata Form + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + + + + { + setFieldValue('owner', value); + }} + renderInput={(params) => ( + + )} + /> + + + option.value)} + onChange={(event, value) => { + setFieldValue('visibility', value); + }} + renderInput={(params) => ( + + )} + /> + + {values.visibility === visibilityDict.Organization && ( + + { + setFieldValue('organization', value.value); + }} + options={organizationOptions.map((option) => option)} + renderInput={(params) => ( + + )} + /> + + )} + {values.visibility === visibilityDict.Environment && ( + + option)} + onChange={(event, value) => { + setFieldValue('environment', value.value); + }} + renderInput={(params) => ( + + )} + /> + + )} + {values.visibility === visibilityDict.Team && ( + + { + setFieldValue('group', value); + }} + renderInput={(params) => ( + + )} + /> + + )} + + {isSubmitting ? ( + + + + ) : ( + + } + color="primary" + disabled={isSubmitting} + type="submit" + variant="contained" + > + Create + + + + + )} +
+ )} +
+
+
+ ); +}; + +CreateMetadataFormModal.propTypes = { + onApply: PropTypes.func, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + stopLoader: PropTypes.func +}; diff --git a/frontend/src/modules/Metadata_Forms/components/index.js b/frontend/src/modules/Metadata_Forms/components/index.js new file mode 100644 index 000000000..bf29c401f --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/index.js @@ -0,0 +1,2 @@ +export * from './MetadataFormListItem'; +export * from './createMetadataFormModal'; diff --git a/frontend/src/modules/Metadata_Forms/index.js b/frontend/src/modules/Metadata_Forms/index.js new file mode 100644 index 000000000..cdb6eda51 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/index.js @@ -0,0 +1,5 @@ +export const MetadataFormsModule = { + moduleDefinition: true, + name: 'metadata_forms', + isEnvironmentModule: false +}; diff --git a/frontend/src/modules/Metadata_Forms/services/createMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/createMetadataForm.js new file mode 100644 index 000000000..fdcbf0503 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/createMetadataForm.js @@ -0,0 +1,14 @@ +import { gql } from 'apollo-boost'; + +export const createMetadataForm = (input) => ({ + variables: { + input + }, + mutation: gql` + mutation createMetadataForm($input: NewMetadataFormInput!) { + createMetadataForm(input: $input) { + uri + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/index.js b/frontend/src/modules/Metadata_Forms/services/index.js new file mode 100644 index 000000000..caf98c619 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/index.js @@ -0,0 +1,2 @@ +export * from './listMetadataForms'; +export * from './createMetadataForm'; diff --git a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js new file mode 100644 index 000000000..325e0ac85 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js @@ -0,0 +1,27 @@ +import { gql } from 'apollo-boost'; + +export const listMetadataForms = (filter) => ({ + variables: { + filter + }, + query: gql` + query listMetadataForms($filter: MetadataFormFilter) { + listMetadataForms(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js new file mode 100644 index 000000000..e69de29bb diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js new file mode 100644 index 000000000..f98aa0e57 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js @@ -0,0 +1,232 @@ +import { + Box, + Breadcrumbs, + Button, + Container, + Grid, + Link, + Typography +} from '@mui/material'; +import CircularProgress from '@mui/material/CircularProgress'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet-async'; +import { Link as RouterLink } from 'react-router-dom'; +import { + ChevronRightIcon, + Defaults, + Pager, + PlusIcon, + SearchInput, + useSettings +} from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { fetchEnums, useClient } from 'services'; +import { listMetadataForms } from '../services'; +import { MetadataFormListItem, CreateMetadataFormModal } from '../components'; + +function MetadataFormsListPageHeader(props) { + const { onCreate, visibilityDict } = props; + const [showCreateModal, setShowCreateModal] = useState(false); + const [isOpeningModal, setIsOpeningModal] = useState(false); + + const handleOpenModal = () => { + setShowCreateModal(true); + setIsOpeningModal(true); + }; + const handleCloseModal = () => { + setShowCreateModal(false); + }; + + return ( + + {showCreateModal && ( + { + handleCloseModal(); + onCreate(); + }} + onClose={handleCloseModal} + open={showCreateModal} + visibilityDict={visibilityDict} + stopLoader={() => setIsOpeningModal(false)} + > + )} + + + Metadata Forms + + } + sx={{ mt: 1 }} + > + + Discover + + + Metadata Forms + + + + + + + + + + ); +} + +const MetadataFormsList = () => { + const dispatch = useDispatch(); + const [items, setItems] = useState(Defaults.pagedResponse); + const [filter, setFilter] = useState(Defaults.filter); + const { settings } = useSettings(); + const [inputValue, setInputValue] = useState(''); + const [loading, setLoading] = useState(true); + const [visibilityDict, setVisibilityDict] = useState({}); + + const client = useClient(); + + const fetchItems = useCallback(async () => { + setLoading(true); + const response = await client.query(listMetadataForms(filter)); + if (!response.errors) { + setItems(response.data.listMetadataForms); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, [client, dispatch, filter]); + + const handleInputChange = (event) => { + setInputValue(event.target.value); + setFilter({ ...filter, search_input: event.target.value }); + }; + + const handleInputKeyup = (event) => { + if (event.code === 'Enter') { + setFilter({ page: 1, search_input: event.target.value }); + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }; + + const handlePageChange = async (event, value) => { + if (value <= items.pages && value !== items.page) { + await setFilter({ ...filter, page: value }); + } + }; + + const fetchVisibilityOptions = async () => { + try { + const enumVisibilityOptions = await fetchEnums(client, [ + 'MetadataFormVisibility' + ]); + if (enumVisibilityOptions['MetadataFormVisibility'].length > 0) { + let tmpVisibilityDict = {}; + enumVisibilityOptions['MetadataFormVisibility'].map((x) => { + tmpVisibilityDict[x.name] = x.value; + }); + setVisibilityDict(tmpVisibilityDict); + } else { + const error = 'Could not fetch visibility options'; + dispatch({ type: SET_ERROR, error }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchVisibilityOptions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, filter.page, fetchItems, dispatch]); + + return ( + <> + + Metadata Forms| data.all + + + + + + + + + + {loading ? ( + + ) : ( + + + {items.nodes.map((node) => ( + + ))} + + + + + )} + + + + + ); +}; + +export default MetadataFormsList; diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js new file mode 100644 index 000000000..e69de29bb diff --git a/frontend/src/modules/index.js b/frontend/src/modules/index.js index 3acdc8bc3..ce5359953 100644 --- a/frontend/src/modules/index.js +++ b/frontend/src/modules/index.js @@ -12,3 +12,4 @@ export * from './S3_Datasets'; export * from './Shares'; export * from './Worksheets'; export * from './Maintenance'; +export * from './Metadata_Forms'; diff --git a/frontend/src/routes.js b/frontend/src/routes.js index 041763fdb..502f91abf 100644 --- a/frontend/src/routes.js +++ b/frontend/src/routes.js @@ -107,6 +107,14 @@ const NotebookCreateForm = Loadable( lazy(() => import('./modules/Notebooks/views/NotebookCreateForm')) ); +const MetadataFormList = Loadable( + lazy(() => import('./modules/Metadata_Forms/views/MetadataFormList')) +); + +const MetadataFormView = Loadable( + lazy(() => import('./modules/Metadata_Forms/views/MetadataFormView')) +); + const MLStudioList = Loadable( lazy(() => import('./modules/MLStudio/views/MLStudioList')) ); @@ -312,6 +320,19 @@ const routes = [ } ] }, + + isModuleEnabled(ModuleNames.METADATA_FORMS) && { + children: [ + { + path: 'metadata-forms', + element: + }, + { + path: 'metadata-forms/:uri', + element: + } + ] + }, isModuleEnabled(ModuleNames.REDSHIFT_DATASETS) && { children: [ { diff --git a/tests_new/integration_tests/modules/metadata_forms/conftest.py b/tests_new/integration_tests/modules/metadata_forms/conftest.py new file mode 100644 index 000000000..658c8e748 --- /dev/null +++ b/tests_new/integration_tests/modules/metadata_forms/conftest.py @@ -0,0 +1,24 @@ +import pytest +from integration_tests.modules.metadata_forms.queries import create_metadata_form, delete_metadata_form +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility + + +@pytest.fixture(scope='session') +def metadata_form_1(client1, group1, session_id): + """ + Session worksheet owned by group1 + """ + mf1 = None + try: + input = { + 'name': 'MF Test 1', + 'description': 'first session test metadata form', + 'visibility': MetadataFormVisibility.Global.value, + 'SamlGroupName': group1, + 'homeEntity': None, + } + mf1 = create_metadata_form(client1, input) + yield mf1 + finally: + if mf1: + delete_metadata_form(client1, mf1.uri) diff --git a/tests_new/integration_tests/modules/metadata_forms/queries.py b/tests_new/integration_tests/modules/metadata_forms/queries.py new file mode 100644 index 000000000..12d4eee19 --- /dev/null +++ b/tests_new/integration_tests/modules/metadata_forms/queries.py @@ -0,0 +1,60 @@ +# TODO: This file will be replaced by using the SDK directly + + +def create_metadata_form(client, input): + query = { + 'operationName': 'createMetadataForm', + 'variables': {'input': input}, + 'query': f""" + mutation createMetadataForm($input: NewMetadataFormInput!) {{ + createMetadataForm(input: $input) {{ + uri + }} + }} + """, + } + response = client.query(query=query) + return response.data.createMetadataForm + + +def list_metadata_forms(client, filter): + query = { + 'operationName': 'listMetadataForms', + 'variables': {'filter': filter}, + 'query': f""" + query listMetadataForms($filter: MetadataFormFilter) {{ + listMetadataForms(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listMetadataForms + + +def delete_metadata_form(client, uri): + query = { + 'operationName': 'deleteMetadataForm', + 'variables': {'formUri': uri}, + 'query': f""" + mutation deleteMetadataForm($formUri: String!) {{ + deleteMetadataForm(formUri: $formUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteMetadataForm diff --git a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py new file mode 100644 index 000000000..be5f0f49c --- /dev/null +++ b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py @@ -0,0 +1,17 @@ +from assertpy import assert_that + +from integration_tests.modules.metadata_forms.queries import list_metadata_forms + + +def test_metadata_form_create(metadata_form_1): + assert_that(metadata_form_1).is_not_none() + assert_that(metadata_form_1.uri).is_not_none() + + +def test_list_metadata_forms(client1, metadata_form_1): + filter = {'page': 1, 'pageSize': 10} + response = list_metadata_forms(client1, filter) + assert_that(response.count).is_greater_than(0) + + all_uris = [item.uri for item in response.nodes] + assert_that(all_uris).contains(metadata_form_1.uri) From 773ebd8dc7feb849a03627e3063101c576bea0dd Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Thu, 8 Aug 2024 15:46:32 +0100 Subject: [PATCH 022/188] Fix: Remove enums from i-tests for MFs (#1473) ### Feature or Bugfix - Bugfix ### Detail - Make intergration tests for MFs backend-internals agnostic ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- tests_new/integration_tests/modules/metadata_forms/conftest.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests_new/integration_tests/modules/metadata_forms/conftest.py b/tests_new/integration_tests/modules/metadata_forms/conftest.py index 658c8e748..792874f3b 100644 --- a/tests_new/integration_tests/modules/metadata_forms/conftest.py +++ b/tests_new/integration_tests/modules/metadata_forms/conftest.py @@ -1,6 +1,5 @@ import pytest from integration_tests.modules.metadata_forms.queries import create_metadata_form, delete_metadata_form -from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility @pytest.fixture(scope='session') @@ -13,7 +12,7 @@ def metadata_form_1(client1, group1, session_id): input = { 'name': 'MF Test 1', 'description': 'first session test metadata form', - 'visibility': MetadataFormVisibility.Global.value, + 'visibility': 'Global', 'SamlGroupName': group1, 'homeEntity': None, } From 3abeeeb803107ebac6ec9583e90b0290980aceab Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Thu, 8 Aug 2024 18:35:08 +0300 Subject: [PATCH 023/188] move backend approval_tests as the last step within the backend stage (#1423) ### Feature or Bugfix - Bugfix ### Detail Currently if approval tests are running and a new backend deployment happens (tests take a long time ~50 minutes so this scenario if very likely) then the tests will run against the new deployment. With the propose change the tests are running as part of the backend deployment stage which is an atomic unit. ![image](https://github.com/user-attachments/assets/0068d1ac-7783-4a11-97fa-770eed21246f) ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/stacks/pipeline.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 11f77288e..20cd59310 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -185,7 +185,7 @@ def __init__( ) if target_env.get('with_approval_tests', False): - self.set_approval_tests_stage(target_env) + self.set_approval_tests_stage(backend_stage, target_env) if target_env.get('enable_update_dataall_stacks_in_cicd_pipeline', False): self.set_stacks_updater_stage(target_env) @@ -657,6 +657,7 @@ def set_backend_stage(self, target_env, repository_name): def set_approval_tests_stage( self, + backend_stage, target_env, ): if target_env.get('custom_auth', None) is None: @@ -664,8 +665,7 @@ def set_approval_tests_stage( else: frontend_deployment_role_arn = f'arn:aws:iam::{target_env["account"]}:role/{self.resource_prefix}-{target_env["envname"]}-frontend-config-role' - wave = self.pipeline.add_wave(f"{self.resource_prefix}-{target_env['envname']}-approval-tests-stage") - wave.add_post( + backend_stage.add_post( pipelines.CodeBuildStep( id='ApprovalTests', build_environment=codebuild.BuildEnvironment( From 13c900f0e8bcdd24f3aee99ddf15676403ac8b1b Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:13:27 -0400 Subject: [PATCH 024/188] Fix local share processors registered (#1470) ### Feature or Bugfix - Local Dev Bugfix ### Detail - Fix `register_processor` for local data.all to correctly process shares ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/s3_datasets_shares/__init__.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/dataall/modules/s3_datasets_shares/__init__.py b/backend/dataall/modules/s3_datasets_shares/__init__.py index fcf520992..750ed5d84 100644 --- a/backend/dataall/modules/s3_datasets_shares/__init__.py +++ b/backend/dataall/modules/s3_datasets_shares/__init__.py @@ -34,21 +34,34 @@ def __init__(self): ) from dataall.modules.shares_base.services.shares_enums import ShareableType from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, DatasetBucket, DatasetStorageLocation + from dataall.modules.s3_datasets_shares.services.share_processors.glue_table_share_processor import ( + ProcessLakeFormationShare, + ) + from dataall.modules.s3_datasets_shares.services.share_processors.s3_bucket_share_processor import ( + ProcessS3BucketShare, + ) + from dataall.modules.s3_datasets_shares.services.share_processors.s3_access_point_share_processor import ( + ProcessS3AccessPointShare, + ) EnvironmentResourceManager.register(S3ShareEnvironmentResource()) DatasetService.register(S3ShareDatasetService()) DatasetListService.register(S3ShareDatasetService()) ShareProcessorManager.register_processor( - ShareProcessorDefinition(ShareableType.Table, None, DatasetTable, DatasetTable.tableUri) + ShareProcessorDefinition( + ShareableType.Table, ProcessLakeFormationShare, DatasetTable, DatasetTable.tableUri + ) ) ShareProcessorManager.register_processor( - ShareProcessorDefinition(ShareableType.S3Bucket, None, DatasetBucket, DatasetBucket.bucketUri) + ShareProcessorDefinition( + ShareableType.S3Bucket, ProcessS3BucketShare, DatasetBucket, DatasetBucket.bucketUri + ) ) ShareProcessorManager.register_processor( ShareProcessorDefinition( ShareableType.StorageLocation, - None, + ProcessS3AccessPointShare, DatasetStorageLocation, DatasetStorageLocation.locationUri, ) From 332a56b715bebc840cca640f7d7906e22c45232d Mon Sep 17 00:00:00 2001 From: Anushka Singh Date: Thu, 8 Aug 2024 14:06:11 -0400 Subject: [PATCH 025/188] Issue1468: Submit request redirect (#1469) ### Feature or Bugfix - Feature ### Detail - Submit request redirects to share request page instead of catalog page ### Relates - https://github.com/data-dot-all/dataall/issues/1468 ### Testing - Submit request button redirects to share page and not catalog anymore. ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/src/modules/Shared/Shares/ShareEditForm.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/modules/Shared/Shares/ShareEditForm.js b/frontend/src/modules/Shared/Shares/ShareEditForm.js index 39943b9eb..9798f1ade 100644 --- a/frontend/src/modules/Shared/Shares/ShareEditForm.js +++ b/frontend/src/modules/Shared/Shares/ShareEditForm.js @@ -26,7 +26,7 @@ import { import { SET_ERROR } from '../../../globalErrors'; import { DeleteOutlined } from '@mui/icons-material'; import PropTypes from 'prop-types'; -import { useNavigate } from 'react-router-dom'; +import { useNavigate, useLocation } from 'react-router-dom'; const ItemRow = (props) => { const { @@ -214,6 +214,7 @@ export const ShareEditForm = (props) => { showViewShare } = props; const navigate = useNavigate(); + const location = useLocation(); const [sharedItems, setSharedItems] = useState(Defaults.pagedResponse); const [shareStatus, setShareStatus] = useState(''); const [filter, setFilter] = useState(Defaults.filter); @@ -276,6 +277,10 @@ export const ShareEditForm = (props) => { if (onApply) { onApply(); } + const targetPath = `/console/shares/${share.shareUri}`; + if (location.pathname !== targetPath) { + navigate(targetPath); + } }; const draftRequest = async () => { From 49a0a169467757b8a701f97f4e54258554530120 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Fri, 9 Aug 2024 12:53:55 -0400 Subject: [PATCH 026/188] update checkov baseline for cdk synth output (#1450) ### Feature or Bugfix - Feature ### Detail - Add checkov scans on cdk synth output ### Relates - #1023 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 631 +++++++++++++++++- .github/workflows/checkov.yml | 48 +- Makefile | 4 + tests/modules/conftest.py | 15 +- .../datapipelines/test_pipeline_stack.py | 12 +- .../cdk/test_sagemaker_studio_stack.py | 28 + tests/modules/notebooks/cdk/conftest.py | 1 + .../cdk/test_sagemaker_notebook_stack.py | 9 +- .../modules/s3_datasets/test_dataset_stack.py | 9 +- .../test_environment_stack_with_dataset.py | 46 +- tests/skip_conditions.py | 6 + 11 files changed, 784 insertions(+), 25 deletions(-) create mode 100644 tests/skip_conditions.py diff --git a/.checkov.baseline b/.checkov.baseline index 83829801d..9946ec12f 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -33,16 +33,639 @@ ] }, { - "file": "/deploy/cdk_exec_policy/cdkExecPolicy.yaml", + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackAurora5C370E8D.nested.template.json", "findings": [ { - "resource": "AWS::IAM::ManagedPolicy.CDKCustomExecutionPolicy0", + "resource": "AWS::RDS::DBCluster.AuroraDatabasedev25ACBF71", + "check_ids": [ + "CKV_AWS_162" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackCognito10115F09.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWSCDKTriggerCustomResourceProviderCustomResourceProviderHandler97BECD91", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.CognitoParamsSyncHandlerdevCD2D1951", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116" + ] + }, + { + "resource": "AWS::Lambda::Function.CognitoProviderdevframeworkonEvent2C5E785F", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.TriggerFunctionCognitoConfig4D80131A", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackDbMigrations2A0FEBE6.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWSCDKTriggerCustomResourceProviderCustomResourceProviderHandler97BECD91", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.TriggerFunctiondeploymenttriggersdbmigrationshandlerhandlerC889DF98", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackDbSnapshotsF1AA6385.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWSCDKTriggerCustomResourceProviderCustomResourceProviderHandler97BECD91", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.TriggerFunctiondeploymenttriggersdbsnapshotshandlerhandler31D769F8", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackECSA27D2427.nested.template.json", + "findings": [ + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupcatalogindexerdev2B9059AB", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupcdkproxydev11E8A2C0", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupsharemanagerdev49FFAB5E", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupsharereapplierdev58405762", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupshareverifierdev877E0507", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupstacksupdaterdev2CE91D51", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupsubscriptionsdev7B40E2D8", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGrouptablessyncerdevAB12C7DE", + "check_ids": [ + "CKV_AWS_158" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackLambdas4B1DE6AF.nested.template.json", + "findings": [ + { + "resource": "AWS::ApiGateway::Stage.dataalldevapiDeploymentStageprodE0313A5B", + "check_ids": [ + "CKV_AWS_120" + ] + }, + { + "resource": "AWS::Lambda::Function.AWSWorkerAA1523CA", + "check_ids": [ + "CKV_AWS_115" + ] + }, + { + "resource": "AWS::Lambda::Function.ElasticSearchProxyHandlerDBDE7574", + "check_ids": [ + "CKV_AWS_115" + ] + }, + { + "resource": "AWS::Lambda::Function.LambdaGraphQL1131F2C3", + "check_ids": [ + "CKV_AWS_115" + ] + }, + { + "resource": "AWS::Logs::LogGroup.awsworkerloggroupF395EFD3", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.dataalldevapigateway2625FE76", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.esproxyloggroup53203D0B", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.graphqlloggroupB3FAA5F5", + "check_ids": [ + "CKV_AWS_158" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackOpenSearchA18441EC.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWS679f53fac002430cb0da5b7982bd22872D164C4C", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Logs::LogGroup.EsAppLogGroupD5A3BCEA", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.OpenSearchDomaindevSlowIndexLogs6F7350C9", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::Logs::LogGroup.OpenSearchDomaindevSlowSearchLogs1F374004", + "check_ids": [ + "CKV_AWS_158" + ] + }, + { + "resource": "AWS::OpenSearchService::Domain.OpenSearchDomaindev1A616D02", + "check_ids": [ + "CKV_AWS_317" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackParamStoreC907C0F0.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWS679f53fac002430cb0da5b7982bd22872D164C4C", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackS3Resources1DD771FA.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::Lambda::Function.CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::S3::Bucket.dataalldevaccesslogsAE3B6354", + "check_ids": [ + "CKV_AWS_18" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackSavePermsE1C53B74.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWSCDKTriggerCustomResourceProviderCustomResourceProviderHandler97BECD91", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.TriggerFunctiondeploymenttriggerssavepermshandlerhandler04AEF392", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-backend-stage/dataallmaincicdstackdataalldevbackendstagebackendstackVpc2C1E1115.nested.template.json", + "findings": [ + { + "resource": "AWS::Logs::LogGroup.dataalldevflowlogs44F8EC01", + "check_ids": [ + "CKV_AWS_158" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-cloudfront-stage/dataallmaincicdstackdataalldevcloudfrontstagecloudfrontstackCloudFront118EAF32.nested.template.json", + "findings": [ + { + "resource": "AWS::CloudFront::Distribution.CloudFrontDistributionBA64CE3A", + "check_ids": [ + "CKV_AWS_174" + ] + }, + { + "resource": "AWS::CloudFront::Distribution.userguideDistribution9C9E7FE0", + "check_ids": [ + "CKV_AWS_174" + ] + }, + { + "resource": "AWS::Lambda::Function.dataalldevhttpheadersredirection47B7A62B", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::S3::Bucket.dataalldevfrontend64065639", + "check_ids": [ + "CKV_AWS_18", + "CKV_AWS_21" + ] + }, + { + "resource": "AWS::S3::Bucket.dataalldevlogging0F6723EE", + "check_ids": [ + "CKV_AWS_18" + ] + }, + { + "resource": "AWS::S3::Bucket.dataalldevuserguide5964DC13", + "check_ids": [ + "CKV_AWS_18", + "CKV_AWS_21" + ] + } + ] + }, + { + "file": "/cdk.out/assembly-dataall-main-cicd-stack-dataall-dev-cloudfront-stage/dataallmaincicdstackdataalldevcloudfrontstagecloudfrontstackFrontendCognitoConfig345B272A.nested.template.json", + "findings": [ + { + "resource": "AWS::Lambda::Function.AWSCDKTriggerCustomResourceProviderCustomResourceProviderHandler97BECD91", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::Lambda::Function.TriggerFunctionCognitoUrlsConfig9FD27FEB", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + } + ] + }, + { + "file": "/cdk.out/asset.3045cb6b4340be1e173df6dcf6248d565aa849ceda3e2cf2c2f221ccee4bc1d6/pivotRole.yaml", + "findings": [ + { + "resource": "AWS::IAM::ManagedPolicy.PivotRolePolicy0", "check_ids": [ - "CKV_AWS_107", "CKV_AWS_109", - "CKV_AWS_110", "CKV_AWS_111" ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.PivotRolePolicy1", + "check_ids": [ + "CKV_AWS_109" + ] + } + ] + }, + { + "file": "/cdk.out/cross-region-stack-111111111111:eu-west-1.template.json", + "findings": [ + { + "resource": "AWS::S3::Bucket.CrossRegionCodePipelineReplicationBucketFC3227F2", + "check_ids": [ + "CKV_AWS_18", + "CKV_AWS_21" + ] + } + ] + }, + { + "file": "/cdk.out/dataall-main-cicd-stack.template.json", + "findings": [ + { + "resource": "AWS::IAM::Policy.dataallmaincdkpipelineAssetsFileRoleDefaultPolicyFCD7832D", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::Policy.dataallmaincdkpipelinePipelineRoleDefaultPolicy98FFDB2A", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::Lambda::Function.CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117" + ] + }, + { + "resource": "AWS::S3::Bucket.dataallmaincdkpipelinePipelineArtifactsBucketF1C6C602", + "check_ids": [ + "CKV_AWS_18", + "CKV_AWS_21" + ] + }, + { + "resource": "AWS::S3::Bucket.sourcecodebucket464EEFA3", + "check_ids": [ + "CKV_AWS_18" + ] + } + ] + }, + { + "file": "/cdk.out/dataallmaincicdstackAuroraB3A9A7CA.nested.template.json", + "findings": [ + { + "resource": "AWS::RDS::DBCluster.AuroraDatabasemainA7A8A785", + "check_ids": [ + "CKV_AWS_162" + ] + } + ] + }, + { + "file": "/cdk.out/dataallmaincicdstackVpcC62303B8.nested.template.json", + "findings": [ + { + "resource": "AWS::Logs::LogGroup.dataallmainflowlogsEBED4B4A", + "check_ids": [ + "CKV_AWS_158" + ] + } + ] + }, + { + "file": "/checkov_environment_synth.json", + "findings": [ + { + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy19AC37181", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy2E85AF510", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy306EE0E93", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy7BF536CC5", + "check_ids": [ + "CKV_AWS_109" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicyCC720210", + "check_ids": [ + "CKV_AWS_109" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy1A0C96958", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy2B12D381A", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy391D03768", + "check_ids": [ + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy3E3CBA9E", + "check_ids": [ + "CKV_AWS_109" + ] + }, + { + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy7DCF428B2", + "check_ids": [ + "CKV_AWS_109" + ] + }, + { + "resource": "AWS::Lambda::Function.CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::Lambda::Function.GlueDatabaseLFCustomResourceHandler7FAF0F82", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::Lambda::Function.LakeformationDefaultSettingsHandler2CBEDB06", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::Lambda::Function.dataallGlueDbCustomResourceProviderframeworkonEventF8347BA7", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::Lambda::Function.dataallLakeformationDefaultSettingsProviderframeworkonEventBB660E32", + "check_ids": [ + "CKV_AWS_115", + "CKV_AWS_116", + "CKV_AWS_117", + "CKV_AWS_173" + ] + }, + { + "resource": "AWS::S3::Bucket.EnvironmentDefaultBucket78C3A8B0", + "check_ids": [ + "CKV_AWS_18" + ] + } + ] + }, + { + "file": "/checkov_notebook_synth.json", + "findings": [ + { + "resource": "AWS::SageMaker::NotebookInstance.Notebook111111", + "check_ids": [ + "CKV2_AWS_68", + "CKV_AWS_371" + ] + } + ] + }, + { + "file": "/checkov_pipeline_synth.json", + "findings": [ + { + "resource": "AWS::IAM::Role.PipelineRoleDCFDBB91", + "check_ids": [ + "CKV_AWS_107", + "CKV_AWS_108", + "CKV_AWS_111" + ] + }, + { + "resource": "AWS::KMS::Key.thistableArtifactsBucketEncryptionKey127159D3", + "check_ids": [ + "CKV_AWS_7" + ] + }, + { + "resource": "AWS::S3::Bucket.thistableArtifactsBucket145BFFDF", + "check_ids": [ + "CKV_AWS_18", + "CKV_AWS_21" + ] + } + ] + }, + { + "file": "/checkov_s3_dataset_synth.json", + "findings": [ + { + "resource": "AWS::Glue::Crawler.dhCrawler", + "check_ids": [ + "CKV_AWS_195" + ] + }, + { + "resource": "AWS::Glue::Job.DatasetGlueProfilingJob", + "check_ids": [ + "CKV_AWS_195" + ] + } + ] + }, + { + "file": "/checkov_smstudio_extension_synth.json", + "findings": [ + { + "resource": "AWS::Logs::LogGroup.SageMakerStudiodev97911306", + "check_ids": [ + "CKV_AWS_158" + ] } ] }, diff --git a/.github/workflows/checkov.yml b/.github/workflows/checkov.yml index cc8d471d4..3fa149607 100644 --- a/.github/workflows/checkov.yml +++ b/.github/workflows/checkov.yml @@ -15,17 +15,55 @@ permissions: jobs: build: - + env: + CDK_DEFAULT_REGION: eu-west-1 + CDK_DEFAULT_ACCOUNT: 111111111111 + GITHUB_ACTIONS: true + CHECKOV_ACTIONS: true + DATAALL_REPO_BRANCH: main + strategy: + matrix: + python-version: [3.9] + services: + postgres: + image: postgres + env: + POSTGRES_DB: dataall + POSTGRES_PASSWORD: docker + POSTGRES_USER: postgres + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Set up Python + - name: Git clone + uses: actions/checkout@v4 + - name: Set up Node.js + uses: actions/setup-node@v3 + - name: Install CDK + run: | + npm install -g aws-cdk cdk-nag + cdk --version + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: - python-version: 3.9 + python-version: ${{ matrix.python-version }} + - name: Upgrade Pip + run: python -m pip install --upgrade pip + - name: Install Requirements + run: python -m pip install -r deploy/requirements.txt + - name: CDK Synth + run: | + npx cdk synth + - name: Resources CDK Synth + run: make checkov-synth - name: Test with Checkov id: checkov - uses: bridgecrewio/checkov-action@master + uses: bridgecrewio/checkov-action@v12.2845.0 with: directory: . quiet: true diff --git a/Makefile b/Makefile index 888927042..6605b8b96 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,10 @@ check-security: upgrade-pip install-backend install-cdkproxy bandit -lll -r backend safety check --ignore=51668,70612,70624 +checkov-synth: upgrade-pip install-backend install-cdkproxy install-tests + export PYTHONPATH=./backend:/./tests && \ + python -m pytest -v -ra -k test_checkov tests + test: export PYTHONPATH=./backend:/./tests && \ python -m pytest -v -ra tests/ diff --git a/tests/modules/conftest.py b/tests/modules/conftest.py index 499c7bd26..4e17c02e7 100644 --- a/tests/modules/conftest.py +++ b/tests/modules/conftest.py @@ -75,8 +75,20 @@ def _create_env_stack(session, env): @pytest.fixture(scope='module', autouse=True) def env(db, environment_group): - def factory(org, envname, owner, group, account, region='eu-west-1', desc='test', role='iam_role', parameters=None): + def factory( + org, + envname, + owner, + group, + account, + region='eu-west-1', + desc='test', + role='iam_role', + parameters=None, + envUri=None, + ): with db.scoped_session() as session: + kwargs = {'environmentUri': envUri} if envUri else {} env = Environment( organizationUri=org.organizationUri, AwsAccountId=account, @@ -91,6 +103,7 @@ def factory(org, envname, owner, group, account, region='eu-west-1', desc='test' EnvironmentDefaultBucketName='defaultbucketname1234567789', CDKRoleArn=f'arn:aws::{account}:role/EnvRole', EnvironmentDefaultAthenaWorkGroup='DefaultWorkGroup', + **kwargs, ) session.add(env) session.commit() diff --git a/tests/modules/datapipelines/test_pipeline_stack.py b/tests/modules/datapipelines/test_pipeline_stack.py index 5e5506a17..0e33f6f6a 100644 --- a/tests/modules/datapipelines/test_pipeline_stack.py +++ b/tests/modules/datapipelines/test_pipeline_stack.py @@ -1,5 +1,5 @@ import os - +import json import pytest from aws_cdk import App from aws_cdk.assertions import Template @@ -8,6 +8,7 @@ from dataall.modules.datapipelines.cdk.datapipelines_pipeline import PipelineStack from dataall.modules.datapipelines.db.datapipelines_models import DataPipeline, DataPipelineEnvironment from dataall.modules.datapipelines.db.datapipelines_repositories import DatapipelinesRepository +from tests.skip_conditions import checkov_scan @pytest.fixture(scope='module', autouse=True) @@ -102,3 +103,12 @@ def test_resources_created(pipeline_db): template.resource_count_is('AWS::CodeCommit::Repository', 1) template.resource_count_is('AWS::CodePipeline::Pipeline', 1) template.resource_count_is('AWS::CodeBuild::Project', 1) + + +@checkov_scan +def test_checkov(pipeline_db): + app = App() + stack = PipelineStack(app, 'Pipeline', target_uri=pipeline_db.DataPipelineUri) + template = json.dumps(app.synth().get_stack_by_name('Pipeline').template) + with open('checkov_pipeline_synth.json', 'w') as f: + f.write(template) diff --git a/tests/modules/mlstudio/cdk/test_sagemaker_studio_stack.py b/tests/modules/mlstudio/cdk/test_sagemaker_studio_stack.py index 23a9d52f1..966662ccd 100644 --- a/tests/modules/mlstudio/cdk/test_sagemaker_studio_stack.py +++ b/tests/modules/mlstudio/cdk/test_sagemaker_studio_stack.py @@ -1,9 +1,12 @@ import pytest from aws_cdk.assertions import Template from aws_cdk import App, Stack, aws_iam +import json +import os from dataall.modules.mlstudio.cdk.mlstudio_stack import SagemakerStudioUserProfile from dataall.modules.mlstudio.cdk.mlstudio_extension import SageMakerDomainExtension +from tests.skip_conditions import checkov_scan class MockEnvironmentSageMakerExtension(Stack): @@ -112,3 +115,28 @@ def test_resources_sgmstudio_extension_stack_created(db, env_fixture): # Assert that we have created a SageMaker domain # TODO: Add more assertions template.resource_count_is('AWS::SageMaker::Domain', 1) + + +@checkov_scan +def test_checkov_smstudio_extension(db, env_fixture): + app = App() + stack = MockEnvironmentSageMakerExtension( + app, + 'SagemakerExtension', + env=env_fixture, + db=db, + ) + + template = json.dumps(app.synth().get_stack_by_name('SagemakerExtension').template) + with open('checkov_smstudio_extension_synth.json', 'w') as f: + f.write(template) + + +@checkov_scan +def test_checkov_smstudio_user(sgm_studio): + app = App() + # Create the Stack + stack = SagemakerStudioUserProfile(app, 'StudioUser', target_uri=sgm_studio.sagemakerStudioUserUri) + template = json.dumps(app.synth().get_stack_by_name('StudioUser').template) + with open('checkov_smstudio_user_synth.json', 'w') as f: + f.write(template) diff --git a/tests/modules/notebooks/cdk/conftest.py b/tests/modules/notebooks/cdk/conftest.py index 596873274..6ff78a846 100644 --- a/tests/modules/notebooks/cdk/conftest.py +++ b/tests/modules/notebooks/cdk/conftest.py @@ -8,6 +8,7 @@ def notebook(db, env_fixture: Environment) -> SagemakerNotebook: with db.scoped_session() as session: notebook = SagemakerNotebook( + notebookUri='111111', label='thistable', NotebookInstanceStatus='RUNNING', owner='me', diff --git a/tests/modules/notebooks/cdk/test_sagemaker_notebook_stack.py b/tests/modules/notebooks/cdk/test_sagemaker_notebook_stack.py index 49a393d8f..5fb135add 100644 --- a/tests/modules/notebooks/cdk/test_sagemaker_notebook_stack.py +++ b/tests/modules/notebooks/cdk/test_sagemaker_notebook_stack.py @@ -1,9 +1,10 @@ import json - +import os import pytest from aws_cdk import App from dataall.modules.notebooks.cdk.notebook_stack import NotebookStack +from tests.skip_conditions import checkov_scan @pytest.fixture(scope='function', autouse=True) @@ -41,3 +42,9 @@ def template(notebook): def test_resources_created(template): assert 'AWS::SageMaker::NotebookInstance' in template + + +@checkov_scan +def test_checkov(template): + with open('checkov_notebook_synth.json', 'w') as f: + f.write(template) diff --git a/tests/modules/s3_datasets/test_dataset_stack.py b/tests/modules/s3_datasets/test_dataset_stack.py index dcea7a494..34c428ee2 100644 --- a/tests/modules/s3_datasets/test_dataset_stack.py +++ b/tests/modules/s3_datasets/test_dataset_stack.py @@ -1,12 +1,13 @@ import json from unittest.mock import MagicMock - +import os import pytest from aws_cdk import App from dataall.core.environment.db.environment_models import Environment from dataall.modules.s3_datasets.cdk.dataset_stack import DatasetStack from dataall.modules.s3_datasets.db.dataset_models import S3Dataset +from tests.skip_conditions import checkov_scan @pytest.fixture(scope='module', autouse=True) @@ -82,3 +83,9 @@ def test_resources_created(template): assert 'AWS::IAM::Policy' in template assert 'AWS::S3::BucketPolicy' in template assert 'AWS::Glue::Job' in template + + +@checkov_scan +def test_checkov(template): + with open('checkov_s3_dataset_synth.json', 'w') as f: + f.write(template) diff --git a/tests/modules/s3_datasets/test_environment_stack_with_dataset.py b/tests/modules/s3_datasets/test_environment_stack_with_dataset.py index c27d335b9..249b87daa 100644 --- a/tests/modules/s3_datasets/test_environment_stack_with_dataset.py +++ b/tests/modules/s3_datasets/test_environment_stack_with_dataset.py @@ -1,10 +1,20 @@ import pytest from aws_cdk import App from aws_cdk.assertions import Template, Match +import os +import json from dataall.core.environment.cdk.environment_stack import EnvironmentSetup from dataall.core.environment.db.environment_models import EnvironmentGroup from dataall.modules.s3_datasets.db.dataset_models import S3Dataset +from tests.skip_conditions import checkov_scan + + +@pytest.fixture(scope='module') +def env_fixture_fixed_naming(env, environment_group, org_fixture, user, group, tenant, env_params): + env1 = env(org_fixture, 'dev', 'alice', 'testadmins', '111111111111', parameters=env_params, envUri='111111') + environment_group(env1, group.name) + yield env1 @pytest.fixture(scope='function', autouse=True) @@ -18,10 +28,10 @@ def patch_extensions(mocker): @pytest.fixture(scope='function', autouse=True) -def another_group(db, env_fixture): +def another_group(db, env_fixture_fixed_naming): with db.scoped_session() as session: env_group: EnvironmentGroup = EnvironmentGroup( - environmentUri=env_fixture.environmentUri, + environmentUri=env_fixture_fixed_naming.environmentUri, groupUri='anothergroup', environmentIAMRoleArn='aontherGroupArn', environmentIAMRoleName='anotherGroupRole', @@ -30,12 +40,12 @@ def another_group(db, env_fixture): session.add(env_group) dataset = S3Dataset( label='thisdataset', - environmentUri=env_fixture.environmentUri, - organizationUri=env_fixture.organizationUri, + environmentUri=env_fixture_fixed_naming.environmentUri, + organizationUri=env_fixture_fixed_naming.organizationUri, name='anotherdataset', description='test', - AwsAccountId=env_fixture.AwsAccountId, - region=env_fixture.region, + AwsAccountId=env_fixture_fixed_naming.AwsAccountId, + region=env_fixture_fixed_naming.region, S3BucketName='bucket', GlueDatabaseName='db', IAMDatasetAdminRoleArn='role', @@ -53,7 +63,7 @@ def another_group(db, env_fixture): @pytest.fixture(scope='function', autouse=True) -def patch_methods(mocker, db, env_fixture, another_group, permissions): +def patch_methods(mocker, db, env_fixture_fixed_naming, another_group, permissions): mocker.patch( 'dataall.core.environment.cdk.environment_stack.EnvironmentSetup.get_engine', return_value=db, @@ -68,7 +78,7 @@ def patch_methods(mocker, db, env_fixture, another_group, permissions): ) mocker.patch( 'dataall.core.environment.cdk.environment_stack.EnvironmentSetup.get_target', - return_value=env_fixture, + return_value=env_fixture_fixed_naming, ) mocker.patch( 'dataall.core.environment.cdk.environment_stack.EnvironmentSetup.get_environment_groups', @@ -81,7 +91,7 @@ def patch_methods(mocker, db, env_fixture, another_group, permissions): mocker.patch('dataall.core.stacks.services.runtime_stacks_tagging.TagsUtil.get_engine', return_value=db) mocker.patch( 'dataall.core.stacks.services.runtime_stacks_tagging.TagsUtil.get_target', - return_value=env_fixture, + return_value=env_fixture_fixed_naming, ) mocker.patch( 'dataall.core.environment.cdk.environment_stack.EnvironmentSetup.get_environment_group_permissions', @@ -93,14 +103,14 @@ def patch_methods(mocker, db, env_fixture, another_group, permissions): ) -def test_resources_created(env_fixture, org_fixture, mocker): +def test_resources_created(env_fixture_fixed_naming, org_fixture, mocker): app = App() mocker.patch( 'dataall.core.environment.services.managed_iam_policies.PolicyManager.get_all_policies', return_value=[] ) # Create the Stack - stack = EnvironmentSetup(app, 'Environment', target_uri=env_fixture.environmentUri) + stack = EnvironmentSetup(app, 'Environment', target_uri=env_fixture_fixed_naming.environmentUri) app.synth() # Prepare the stack for assertions. template = Template.from_stack(stack) @@ -109,7 +119,7 @@ def test_resources_created(env_fixture, org_fixture, mocker): template.resource_properties_count_is( type='AWS::S3::Bucket', props={ - 'BucketName': env_fixture.EnvironmentDefaultBucketName, + 'BucketName': env_fixture_fixed_naming.EnvironmentDefaultBucketName, 'BucketEncryption': { 'ServerSideEncryptionConfiguration': [{'ServerSideEncryptionByDefault': {'SSEAlgorithm': 'AES256'}}] }, @@ -140,3 +150,15 @@ def test_resources_created(env_fixture, org_fixture, mocker): template.resource_count_is('AWS::SSM::Parameter', 5) template.resource_count_is('AWS::IAM::Role', 5) template.resource_count_is('AWS::IAM::Policy', 4) + + +@checkov_scan +def test_checkov(env_fixture_fixed_naming, org_fixture, mocker): + app = App() + mocker.patch( + 'dataall.core.environment.services.managed_iam_policies.PolicyManager.get_all_policies', return_value=[] + ) + stack = EnvironmentSetup(app, 'Environment', target_uri=env_fixture_fixed_naming.environmentUri) + template = json.dumps(app.synth().get_stack_by_name('Environment').template) + with open('checkov_environment_synth.json', 'w') as f: + f.write(template) diff --git a/tests/skip_conditions.py b/tests/skip_conditions.py new file mode 100644 index 000000000..8e978246c --- /dev/null +++ b/tests/skip_conditions.py @@ -0,0 +1,6 @@ +import os +import pytest + +checkov_scan = pytest.mark.skipif( + os.getenv('CHECKOV_ACTIONS', 'false') != 'true', reason='Pytest used for Checkov Scan CDK Synth Output' +) From d769afc876a6482044d08fcbc04cdce95e8e13ad Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Mon, 12 Aug 2024 10:46:06 +0100 Subject: [PATCH 027/188] Metadata forms 3: Metadata Form View page. Add, Edit fields (#1455) ### Feature or Bugfix - Feature ### Detail - Metadata Form View page - Added 'description' to Metadata Form Field model - NO ACCESS RESTRICTIONS for now User Can: - Delete dataform - Add new fields to data form - Edit fields - Delte fields ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/api/input_types.py | 29 + .../modules/metadata_forms/api/mutations.py | 41 +- .../modules/metadata_forms/api/queries.py | 10 +- .../modules/metadata_forms/api/resolvers.py | 27 +- .../modules/metadata_forms/api/types.py | 23 +- .../metadata_forms/db/metadata_form_models.py | 4 +- .../db/metadata_form_repository.py | 46 +- .../services/metadata_form_service.py | 61 +++ .../afcfc928c640_mf_field_description.py | 31 ++ frontend/src/design/icons/AsteriskIcon.js | 14 + frontend/src/design/icons/index.js | 1 + .../components/MetadataFormEnforcement.js | 9 + .../components/MetadataFormFields.js | 510 ++++++++++++++++++ .../components/MetadataFormInfo.js | 135 +++++ .../components/MetadataFormListItem.js | 19 +- .../components/MetadataFormPreview.js | 9 + .../components/createMetadataFormModal.js | 24 +- .../Metadata_Forms/components/index.js | 4 + .../services/batchMetadataFormFieldUpdates.js | 27 + .../services/createMetadataFormField.js | 18 + .../services/deleteMetadataForm.js | 12 + .../services/deleteMetadataFormField.js | 13 + .../services/getMetadataForm.js | 32 ++ .../modules/Metadata_Forms/services/index.js | 3 + .../Metadata_Forms/views/MetadataFormView.js | 252 +++++++++ .../modules/metadata_forms/conftest.py | 30 +- .../modules/metadata_forms/mutations.py | 85 +++ .../modules/metadata_forms/queries.py | 49 +- .../metadata_forms/test_metadata_forms.py | 62 ++- 29 files changed, 1529 insertions(+), 51 deletions(-) create mode 100644 backend/migrations/versions/afcfc928c640_mf_field_description.py create mode 100644 frontend/src/design/icons/AsteriskIcon.js create mode 100644 frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js create mode 100644 frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js create mode 100644 frontend/src/modules/Metadata_Forms/components/MetadataFormInfo.js create mode 100644 frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js create mode 100644 frontend/src/modules/Metadata_Forms/services/batchMetadataFormFieldUpdates.js create mode 100644 frontend/src/modules/Metadata_Forms/services/createMetadataFormField.js create mode 100644 frontend/src/modules/Metadata_Forms/services/deleteMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/deleteMetadataFormField.js create mode 100644 frontend/src/modules/Metadata_Forms/services/getMetadataForm.js create mode 100644 tests_new/integration_tests/modules/metadata_forms/mutations.py diff --git a/backend/dataall/modules/metadata_forms/api/input_types.py b/backend/dataall/modules/metadata_forms/api/input_types.py index 94b1068e8..f49ae7d9b 100644 --- a/backend/dataall/modules/metadata_forms/api/input_types.py +++ b/backend/dataall/modules/metadata_forms/api/input_types.py @@ -11,6 +11,35 @@ ], ) +NewMetadataFormFieldInput = gql.InputType( + name='NewMetadataFormFieldInput', + arguments=[ + gql.Field(name='name', type=gql.NonNullableType(gql.String)), + gql.Field(name='type', type=gql.NonNullableType(gql.String)), + gql.Field(name='displayNumber', type=gql.NonNullableType(gql.Integer)), + gql.Field(name='description', type=gql.String), + gql.Field(name='required', type=gql.Boolean), + gql.Field(name='glossaryNodeUri', type=gql.String), + gql.Field(name='possibleValues', type=gql.ArrayType(gql.String)), + ], +) + +MetadataFormFieldUpdateInput = gql.InputType( + name='MetadataFormFieldUpdateInput', + arguments=[ + gql.Field(name='uri', type=gql.String), + gql.Field(name='metadataFormUri', type=gql.String), + gql.Field(name='displayNumber', type=gql.NonNullableType(gql.Integer)), + gql.Field(name='deleted', type=gql.Boolean), + gql.Field(name='name', type=gql.String), + gql.Field(name='description', type=gql.String), + gql.Field(name='type', type=gql.String), + gql.Field(name='required', type=gql.Boolean), + gql.Field(name='glossaryNodeUri', type=gql.String), + gql.Field(name='possibleValues', type=gql.ArrayType(gql.String)), + ], +) + MetadataFormFilter = gql.InputType( name='MetadataFormFilter', diff --git a/backend/dataall/modules/metadata_forms/api/mutations.py b/backend/dataall/modules/metadata_forms/api/mutations.py index 0b95ead33..130e0f020 100644 --- a/backend/dataall/modules/metadata_forms/api/mutations.py +++ b/backend/dataall/modules/metadata_forms/api/mutations.py @@ -1,5 +1,11 @@ from dataall.base.api import gql -from dataall.modules.metadata_forms.api.resolvers import create_metadata_form, delete_metadata_form +from dataall.modules.metadata_forms.api.resolvers import ( + create_metadata_form, + delete_metadata_form, + create_metadata_form_fields, + delete_metadata_form_field, + batch_metadata_form_field_update, +) createMetadataForm = gql.MutationField( name='createMetadataForm', @@ -18,3 +24,36 @@ resolver=delete_metadata_form, test_scope='MetadataForm', ) + +createMetadataFormFields = gql.MutationField( + name='createMetadataFormFields', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='input', type=gql.ArrayType(gql.Ref('NewMetadataFormFieldInput'))), + ], + type=gql.ArrayType(gql.Ref('MetadataFormField')), + resolver=create_metadata_form_fields, + test_scope='MetadataForm', +) + +deleteMetadataFormField = gql.MutationField( + name='deleteMetadataFormField', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='fieldUri', type=gql.NonNullableType(gql.String)), + ], + type=gql.Boolean, + resolver=delete_metadata_form_field, + test_scope='MetadataForm', +) + +batchMetadataFormFieldUpdates = gql.MutationField( + name='batchMetadataFormFieldUpdates', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='input', type=gql.ArrayType(gql.Ref('MetadataFormFieldUpdateInput'))), + ], + type=gql.ArrayType(gql.Ref('MetadataFormField')), + resolver=batch_metadata_form_field_update, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/queries.py b/backend/dataall/modules/metadata_forms/api/queries.py index 753ef5f1b..9801272a3 100644 --- a/backend/dataall/modules/metadata_forms/api/queries.py +++ b/backend/dataall/modules/metadata_forms/api/queries.py @@ -1,5 +1,5 @@ from dataall.base.api import gql -from dataall.modules.metadata_forms.api.resolvers import list_metadata_forms +from dataall.modules.metadata_forms.api.resolvers import list_metadata_forms, get_metadata_form listMetadataForms = gql.QueryField( name='listMetadataForms', @@ -8,3 +8,11 @@ resolver=list_metadata_forms, test_scope='MetadataForm', ) + +getMetadataForm = gql.QueryField( + name='getMetadataForm', + args=[gql.Argument('uri', gql.NonNullableType(gql.String))], + type=gql.Ref('MetadataForm'), + resolver=get_metadata_form, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 6b3fdbb71..2a0752f81 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -1,5 +1,6 @@ from dataall.base.api.context import Context -from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm +from dataall.modules.catalog.services.glossaries_service import GlossariesService +from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService @@ -17,3 +18,27 @@ def list_metadata_forms(context: Context, source, filter=None): def get_home_entity_name(context: Context, source: MetadataForm): return MetadataFormService.get_home_entity_name(source) + + +def get_metadata_form(context: Context, source, uri): + return MetadataFormService.get_metadata_form_by_uri(uri) + + +def get_form_fields(context: Context, source: MetadataForm): + return MetadataFormService.get_metadata_form_fields(source.uri) + + +def create_metadata_form_fields(context: Context, source, formUri, input): + return MetadataFormService.create_metadata_form_fields(formUri, input) + + +def delete_metadata_form_field(context: Context, source, formUri, fieldUri): + return MetadataFormService.delete_metadata_form_field(formUri, fieldUri) + + +def batch_metadata_form_field_update(context: Context, source, formUri, input): + return MetadataFormService.batch_metadata_form_field_update(formUri, input) + + +def get_fields_glossary_node_name(context: Context, source: MetadataFormField): + return GlossariesService.get_node(source.glossaryNodeUri).label if source.glossaryNodeUri else None diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index 9318c4a30..646324a9a 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -1,5 +1,9 @@ from dataall.base.api import gql -from dataall.modules.metadata_forms.api.resolvers import get_home_entity_name +from dataall.modules.metadata_forms.api.resolvers import ( + get_home_entity_name, + get_form_fields, + get_fields_glossary_node_name, +) MetadataForm = gql.ObjectType( name='MetadataForm', @@ -11,6 +15,23 @@ gql.Field(name='visibility', type=gql.String), gql.Field(name='homeEntity', type=gql.String), gql.Field(name='homeEntityName', type=gql.String, resolver=get_home_entity_name), + gql.Field(name='fields', type=gql.ArrayType(gql.Ref('MetadataFormField')), resolver=get_form_fields), + ], +) + +MetadataFormField = gql.ObjectType( + name='MetadataFormField', + fields=[ + gql.Field(name='uri', type=gql.ID), + gql.Field(name='name', type=gql.String), + gql.Field(name='displayNumber', type=gql.Integer), + gql.Field(name='description', type=gql.String), + gql.Field(name='type', type=gql.String), + gql.Field(name='required', type=gql.Boolean), + gql.Field(name='metadataFormUri', type=gql.String), + gql.Field(name='glossaryNodeUri', type=gql.String), + gql.Field(name='glossaryNodeName', type=gql.String, resolver=get_fields_glossary_node_name), + gql.Field(name='possibleValues', type=gql.ArrayType(gql.String)), ], ) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py index 22db3b415..079b56247 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py @@ -28,7 +28,7 @@ class MetadataForm(Base): class MetadataFormEnforcementRule(Base): __tablename__ = 'metadata_form_enforcement_rule' uri = Column(String, primary_key=True, default=utils.uuid('rule')) - metadataFormUri = Column(String, ForeignKey('metadata_form.uri')) + metadataFormUri = Column(String, ForeignKey('metadata_form.uri'), nullable=False) level = Column(String, nullable=False) # enum MetadataFormEnforcementScope entityTypes = Column(ARRAY(String), nullable=False) # enum MetadataFormEntityTypes severity = Column(String, nullable=False) # enum MetadataFormEnforcementSeverity @@ -38,6 +38,8 @@ class MetadataFormField(Base): __tablename__ = 'metadata_form_field' metadataFormUri = Column(String, ForeignKey('metadata_form.uri')) uri = Column(String, primary_key=True, default=utils.uuid('field')) + displayNumber = Column(Integer, nullable=False) + description = Column(String, nullable=True) name = Column(String, nullable=False) type = Column(String, nullable=False) # enum MetadataFormFieldType required = Column(Boolean, nullable=False) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index 9b2753b5d..521aeefb3 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -1,7 +1,6 @@ from sqlalchemy import or_ -from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm -from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility +from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField class MetadataFormRepository: @@ -32,5 +31,46 @@ def list_metadata_forms(session, filter=None): MetadataForm.description.ilike('%' + filter.get('search_input') + '%'), ) ) - return query.order_by(MetadataForm.name) + + @staticmethod + def get_metadata_form_fields(session, form_uri): + return ( + session.query(MetadataFormField) + .filter(MetadataFormField.metadataFormUri == form_uri) + .order_by(MetadataFormField.displayNumber) + .all() + ) + + @staticmethod + def create_metadata_form_field(session, uri, data): + field: MetadataFormField = MetadataFormField( + metadataFormUri=uri, + name=data.get('name'), + description=data.get('description'), + type=data.get('type'), + required=data.get('required', False), + glossaryNodeUri=data.get('glossaryNodeUri', None), + possibleValues=data.get('possibleValues', None), + displayNumber=data.get('displayNumber'), + ) + session.add(field) + session.commit() + return field + + @staticmethod + def get_metadata_form_field_by_uri(session, uri): + return session.query(MetadataFormField).get(uri) + + @staticmethod + def update_metadata_form_field(session, fieldUri, data): + mf = MetadataFormRepository.get_metadata_form_field_by_uri(session, fieldUri) + mf.name = data.get('name', mf.name) + mf.description = data.get('description', mf.description) + mf.type = data.get('type', mf.type) + mf.glossaryNodeUri = data.get('glossaryNodeUri', mf.glossaryNodeUri) + mf.required = data.get('required', mf.required) + mf.possibleValues = data.get('possibleValues', mf.possibleValues) + mf.displayNumber = data.get('displayNumber', mf.displayNumber) + session.commit() + return mf diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index eb6e8fbf9..b2bf969fc 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -4,6 +4,7 @@ from dataall.core.environment.db.environment_repositories import EnvironmentRepository from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility +from dataall.modules.metadata_forms.db.enums import MetadataFormFieldType from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository @@ -23,6 +24,18 @@ def validate_create_form_params(data): if not data.get('name'): raise exceptions.RequiredParameter('name') + @staticmethod + def validate_create_field_params(data): + if 'name' not in data: + raise exceptions.RequiredParameter('name') + if 'type' not in data: + raise exceptions.RequiredParameter('type') + if 'displayNumber' not in data: + raise exceptions.RequiredParameter('displayNumber') + + if data.get('type') == MetadataFormFieldType.GlossaryTerm.value and 'glossaryNodeUri' not in data: + raise exceptions.RequiredParameter('glossaryNodeUri') + class MetadataFormService: @staticmethod @@ -69,3 +82,51 @@ def get_home_entity_name(metadata_form): return EnvironmentRepository.get_environment_by_uri(session, metadata_form.homeEntity).name else: return '' + + @staticmethod + def get_metadata_form_fields(uri): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.get_metadata_form_fields(session, uri) + + @staticmethod + def get_metadata_form_field_by_uri(uri): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.get_metadata_form_field_by_uri(session, uri) + + @staticmethod + def create_metadata_form_field(uri, data): + MetadataFormParamValidationService.validate_create_field_params(data) + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.create_metadata_form_field(session, uri, data) + + @staticmethod + def create_metadata_form_fields(uri, data_arr): + fields = [] + for data in data_arr: + fields.append(MetadataFormService.create_metadata_form_field(uri, data)) + return fields + + @staticmethod + def delete_metadata_form_field(uri, fieldUri): + mf = MetadataFormService.get_metadata_form_field_by_uri(fieldUri) + with get_context().db_engine.scoped_session() as session: + return session.delete(mf) + + @staticmethod + def batch_metadata_form_field_update(uri, data): + for item in data: + if item.get('metadataFormUri') != uri: + raise Exception('property metadataFormUri does not match form uri') + if 'uri' not in item: + MetadataFormService.create_metadata_form_field(uri, item) + elif item.get('uri') is not None: + if item.get('deleted', False): + MetadataFormService.delete_metadata_form_field(uri, item['uri']) + else: + MetadataFormService.update_metadata_form_field(uri, item['uri'], item) + return MetadataFormService.get_metadata_form_fields(uri) + + @staticmethod + def update_metadata_form_field(uri, fieldUri, data): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.update_metadata_form_field(session, fieldUri, data) diff --git a/backend/migrations/versions/afcfc928c640_mf_field_description.py b/backend/migrations/versions/afcfc928c640_mf_field_description.py new file mode 100644 index 000000000..df1b9f240 --- /dev/null +++ b/backend/migrations/versions/afcfc928c640_mf_field_description.py @@ -0,0 +1,31 @@ +"""mf_field_description + +Revision ID: afcfc928c640 +Revises: 7c5b30fee306 +Create Date: 2024-08-05 14:09:40.972177 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'afcfc928c640' +down_revision = 'aa42cb99093a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('metadata_form_field', sa.Column('description', sa.String(), nullable=True)) + op.add_column('metadata_form_field', sa.Column('displayNumber', sa.Integer(), nullable=False)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('metadata_form_field', 'description') + op.drop_column('metadata_form_field', 'displayNumber') + # ### end Alembic commands ### diff --git a/frontend/src/design/icons/AsteriskIcon.js b/frontend/src/design/icons/AsteriskIcon.js new file mode 100644 index 000000000..acdb97a2a --- /dev/null +++ b/frontend/src/design/icons/AsteriskIcon.js @@ -0,0 +1,14 @@ +import createSvgIcon from '@mui/material/utils/createSvgIcon'; + +export const AsteriskIcon = createSvgIcon( + + + , + 'AsteriskIcon' +); diff --git a/frontend/src/design/icons/index.js b/frontend/src/design/icons/index.js index da5922b34..06a773c74 100644 --- a/frontend/src/design/icons/index.js +++ b/frontend/src/design/icons/index.js @@ -26,3 +26,4 @@ export * from './SearchIcon'; export * from './SunIcon'; export * from './UserIcon'; export * from './XIcon'; +export * from './AsteriskIcon'; diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js new file mode 100644 index 000000000..d02c2f46f --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js @@ -0,0 +1,9 @@ +import PropTypes from 'prop-types'; + +export const MetadataFormEnforcement = (props) => { + return MetadataFormEnforcement; +}; + +MetadataFormEnforcement.propTypes = { + metadataForm: PropTypes.any.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js new file mode 100644 index 000000000..4ed04cf1d --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js @@ -0,0 +1,510 @@ +import { useDispatch } from 'react-redux'; + +import React, { useEffect, useState } from 'react'; + +import PropTypes from 'prop-types'; +import { + Table, + TableCell, + TableHead, + TableRow, + TableBody, + Card, + Box, + TextField, + InputAdornment, + Divider, + Button, + Autocomplete, + Tooltip, + Chip +} from '@mui/material'; +import { + Scrollbar, + SearchIcon, + AsteriskIcon, + PencilAltIcon, + SaveIcon, + PlusIcon, + ChipInput +} from '../../../design'; +import { SET_ERROR } from '../../../globalErrors'; +import Checkbox from '@mui/material/Checkbox'; +import { + // createMetadataFormFields, + getMetadataForm + // deleteMetadataFormField +} from '../services'; +import { useClient } from '../../../services'; +import { GridActionsCellItem } from '@mui/x-data-grid'; +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import SettingsBackupRestoreOutlinedIcon from '@mui/icons-material/SettingsBackupRestoreOutlined'; +import { batchMetadataFormFieldUpdates } from '../services/batchMetadataFormFieldUpdates'; +import CircularProgress from '@mui/material/CircularProgress'; +import { listGlossaries } from '../../Glossaries/services'; + +const EditTable = (props) => { + const { fields, fieldTypeOptions, saveChanges, formUri, glossaryNodes } = + props; + const [localFields, setLocalFields] = useState(fields); + + const updateField = (index, propertyName, value) => { + localFields[index][propertyName] = value; + setLocalFields([...localFields]); + }; + const addField = () => { + localFields.push({ + name: 'New Field', + required: false, + metadataFormUri: formUri, + type: fieldTypeOptions[0].value, + possibleValues: [], + deleted: false + }); + setLocalFields([...localFields]); + }; + + return ( + + + + Required + Name + Type + Description + + Possible Values or Glossary Term + + + + + + + + + + + + + {localFields.length === 0 ? ( + + + No fields found + + + ) : ( + localFields.map((field, index) => ( + + + { + updateField(index, 'required', event.target.value === 'on'); + }} + /> + + + { + updateField(index, 'name', event.target.value); + }} + sx={{ width: '100%' }} + /> + + + option.value)} + defaultValue={field.type} + onChange={(event, value) => { + updateField( + index, + 'type', + value || fieldTypeOptions[0].value + ); + }} + renderInput={(params) => ( + + )} + /> + + + { + updateField(index, 'description', event.target.value); + }} + /> + + + {field.type !== + fieldTypeOptions.find((o) => o.name === 'GlossaryTerm') + .value ? ( + { + updateField(index, 'possibleValues', [...chip]); + }} + /> + ) : ( + { + return { label: node.label, value: node.nodeUri }; + })} + defaultValue={glossaryNodes.find( + (node) => field.glossaryNodeUri === node.nodeUri + )} + onChange={(event, node) => { + if (node) { + updateField(index, 'glossaryNodeUri', node.value); + } + }} + renderInput={(params) => ( + + )} + /> + )} + + + + + ) : ( + + ) + } + label={field.deleted ? 'Restore' : 'Delete'} + sx={{ + color: 'primary.main' + }} + onClick={() => { + updateField(index, 'deleted', !field.deleted); + }} + /> + + + + )) + )} + +
+ ); +}; + +EditTable.propTypes = { + fields: PropTypes.array.isRequired, + fieldTypeOptions: PropTypes.array.isRequired, + saveChanges: PropTypes.func.isRequired, + formUri: PropTypes.string.isRequired, + glossaryNodes: PropTypes.array.isRequired +}; + +const DisplayTable = (props) => { + const { fields, startEdit } = props; + return ( + + + + Required + Name + Type + Description + + Possible Values or Glossary Term + + + + + + + + {fields.length === 0 ? ( + + + No fields found + + + ) : ( + fields.map((field) => ( + + + {field.required ? : ''} + + {field.name} + {field.type} + {field.description} + + {field.possibleValues?.map((val) => ( + + ))} + {field.glossaryNodeUri && field.glossaryNodeName} + + + + )) + )} + +
+ ); +}; +DisplayTable.propTypes = { + fields: PropTypes.array.isRequired, + startEdit: PropTypes.func.isRequired +}; + +export const MetadataFormFields = (props) => { + const dispatch = useDispatch(); + const client = useClient(); + const { metadataForm, fieldTypeOptions } = props; + const [loading, setLoading] = useState(false); + const [editOn, setEditOn] = useState(false); + const [fields, setFields] = useState(metadataForm.fields); + const [inputValue, setInputValue] = useState(''); + const [filter, setFilter] = useState({}); + const [glossaryNodes, setGlossaryNodes] = useState([]); + + const handleInputChange = (event) => { + setInputValue(event.target.value); + setFilter({ ...filter, term: event.target.value }); + }; + + const startEdit = () => { + setEditOn(true); + }; + + const fetchGlossaryNodes = async () => { + const response = await client.query(listGlossaries({})); + if ( + !response.errors && + response.data && + response.data.listGlossaries !== null + ) { + setGlossaryNodes(response.data.listGlossaries.nodes); + } else { + const error = response.errors + ? response.errors[0].message + : 'Glossary Nodes not found'; + dispatch({ type: SET_ERROR, error }); + } + }; + + const fetchItems = async () => { + setLoading(true); + const response = await client.query(getMetadataForm(metadataForm.uri)); + if ( + !response.errors && + response.data && + response.data.getMetadataForm !== null + ) { + setFields(response.data.getMetadataForm.fields); + } else { + const error = response.errors + ? response.errors[0].message + : 'Metadata Forms not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + + const saveChanges = async (updatedFields) => { + const badfield = updatedFields.find( + (field) => + !field.deleted && + field.type === + fieldTypeOptions.find((o) => o.name === 'GlossaryTerm').value && + !field.glossaryNodeUri + ); + if (badfield) { + dispatch({ + type: SET_ERROR, + error: 'Glossary Term is required for field ' + badfield.name + }); + return; + } + setLoading(true); + // remove new fields (not yet saved in DB), that were deleted during editing + const data = updatedFields.filter((field) => !field.deleted || field.uri); + data.forEach((field, index) => { + delete field.__typename; + delete field.glossaryNodeName; + field.displayNumber = index; + }); + const response = await client.mutate( + batchMetadataFormFieldUpdates(metadataForm.uri, data) + ); + if ( + !response.errors && + response.data && + response.data.batchMetadataFormFieldUpdates !== null + ) { + setFields(response.data.batchMetadataFormFieldUpdates); + setEditOn(false); + } else { + const error = response.errors + ? response.errors[0].message + : 'Update failed'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + + const handleInputKeyup = (event) => { + if (event.code === 'Enter') { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }; + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + if (glossaryNodes.length === 0) { + fetchGlossaryNodes().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + } + }, [client, dispatch]); + + return ( + + + + + + + ) + }} + onChange={handleInputChange} + onKeyUp={handleInputKeyup} + placeholder="Search (temporary deisabled)" + value={inputValue} + variant="outlined" + /> + + + {loading ? ( + + + + ) : ( + + + {editOn ? ( + + ) : ( + + )} + + + )} + + + ); +}; + +MetadataFormFields.propTypes = { + metadataForm: PropTypes.any.isRequired, + fieldTypeOptions: PropTypes.any.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormInfo.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormInfo.js new file mode 100644 index 000000000..b76f5a825 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormInfo.js @@ -0,0 +1,135 @@ +import PropTypes from 'prop-types'; +import { + Box, + Card, + CardContent, + CardHeader, + Divider, + Grid, + List, + ListItem, + Typography +} from '@mui/material'; + +export const MetadataFormInfo = (props) => { + const { metadataForm, visibilityDict } = props; + return ( + <> + + + + + + + + + + + + Name + + + {metadataForm.name} + + + + + URI + + + {metadataForm.uri} + + + + + Visibility + + + {metadataForm.visibility} + + + + + {Object.keys(visibilityDict).find( + (key) => visibilityDict[key] === metadataForm.visibility + )} + + + {metadataForm.homeEntityName} + + + + + + + + + + + + + + + + {metadataForm.description || 'No description provided'} + + + + + + + + ); +}; + +MetadataFormInfo.propTypes = { + metadataForm: PropTypes.any.isRequired, + visibilityDict: PropTypes.any.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js index 0dac3cf78..192caff67 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js @@ -9,13 +9,14 @@ import { } from '@mui/material'; import PropTypes from 'prop-types'; import * as FaIcons from 'react-icons/fa'; +import { useNavigate } from 'react-router'; import { IconAvatar, useCardStyle } from 'design'; import { BallotOutlined } from '@mui/icons-material'; export const MetadataFormListItem = (props) => { const { metadata_form, visibilityDict } = props; const classes = useCardStyle(); - // const navigate = useNavigate(); + const navigate = useNavigate(); return ( @@ -33,13 +34,8 @@ export const MetadataFormListItem = (props) => { { color="textPrimary" variant="h6" onClick={() => { - //navigate(`/console/metadata-forms/${metadata_form.uri}`); + navigate(`/console/metadata-forms/${metadata_form.uri}`); + }} + sx={{ + maxWidth: '200px', + overflow: 'hidden', + textOverflow: 'ellipsis' }} > @@ -80,7 +81,6 @@ export const MetadataFormListItem = (props) => { color="textSecondary" variant="body2" sx={{ - width: '200px', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', @@ -165,6 +165,7 @@ export const MetadataFormListItem = (props) => { color="textPrimary" variant="subtitle2" underline="false" + sx={{ overflow: 'hidden', textOverflow: 'ellipsis' }} > {metadata_form.homeEntityName || '-'} diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js new file mode 100644 index 000000000..dc1ec5b1b --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js @@ -0,0 +1,9 @@ +import PropTypes from 'prop-types'; + +export const MetadataFormPreview = (props) => { + return MetadataFormPreview; +}; + +MetadataFormPreview.propTypes = { + metadataForm: PropTypes.any.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js b/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js index bdd18c702..37e76d570 100644 --- a/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js +++ b/frontend/src/modules/Metadata_Forms/components/createMetadataFormModal.js @@ -165,19 +165,29 @@ export const CreateMetadataFormModal = (props) => { .max(255) .required('*Metadata forms name is required'), description: Yup.string().max(200), - owner: Yup.string().required('*Owner is required'), - visibility: Yup.string().required('*Visibility is required'), + owner: Yup.string() + .oneOf(groups || []) + .required('*Owner is required'), + visibility: Yup.string() + .oneOf(Object.values(visibilityDict)) + .required('*Visibility is required'), environment: Yup.string().when('visibility', { is: visibilityDict.Environment, - then: Yup.string().required('*Environment is required') + then: Yup.string() + .oneOf(environmentOptions.map((option) => option.value)) + .required('*Environment is required') }), group: Yup.string().when('visibility', { is: visibilityDict.Team, - then: Yup.string().required('*Team is required') + then: Yup.string() + .oneOf(groups || []) + .required('*Team is required') }), organization: Yup.string().when('visibility', { is: visibilityDict.Organization, - then: Yup.string().required('*Organization is required') + then: Yup.string() + .oneOf(organizationOptions.map((option) => option.value)) + .required('*Organization is required') }) })} onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => { @@ -284,7 +294,7 @@ export const CreateMetadataFormModal = (props) => { onChange={(event, value) => { setFieldValue('organization', value.value); }} - options={organizationOptions.map((option) => option)} + options={organizationOptions} renderInput={(params) => ( { option)} + options={environmentOptions} onChange={(event, value) => { setFieldValue('environment', value.value); }} diff --git a/frontend/src/modules/Metadata_Forms/components/index.js b/frontend/src/modules/Metadata_Forms/components/index.js index bf29c401f..9ee903a57 100644 --- a/frontend/src/modules/Metadata_Forms/components/index.js +++ b/frontend/src/modules/Metadata_Forms/components/index.js @@ -1,2 +1,6 @@ export * from './MetadataFormListItem'; export * from './createMetadataFormModal'; +export * from './MetadataFormInfo'; +export * from './MetadataFormPreview'; +export * from './MetadataFormEnforcement'; +export * from './MetadataFormFields'; diff --git a/frontend/src/modules/Metadata_Forms/services/batchMetadataFormFieldUpdates.js b/frontend/src/modules/Metadata_Forms/services/batchMetadataFormFieldUpdates.js new file mode 100644 index 000000000..e8771620a --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/batchMetadataFormFieldUpdates.js @@ -0,0 +1,27 @@ +import { gql } from 'apollo-boost'; + +export const batchMetadataFormFieldUpdates = (formUri, input) => ({ + variables: { + formUri: formUri, + input: input + }, + mutation: gql` + mutation batchMetadataFormFieldUpdates( + $formUri: String! + $input: [MetadataFormFieldUpdateInput] + ) { + batchMetadataFormFieldUpdates(formUri: $formUri, input: $input) { + uri + metadataFormUri + displayNumber + name + description + required + type + glossaryNodeUri + glossaryNodeName + possibleValues + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/createMetadataFormField.js b/frontend/src/modules/Metadata_Forms/services/createMetadataFormField.js new file mode 100644 index 000000000..252fb3074 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/createMetadataFormField.js @@ -0,0 +1,18 @@ +import { gql } from 'apollo-boost'; + +export const createMetadataFormFields = (formUri, input) => ({ + variables: { + formUri: formUri, + input: input + }, + mutation: gql` + mutation createMetadataFormFields( + $formUri: String! + $input: [NewMetadataFormFieldInput] + ) { + createMetadataFormFields(formUri: $formUri, input: $input) { + uri + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/deleteMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/deleteMetadataForm.js new file mode 100644 index 000000000..3b7706a20 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/deleteMetadataForm.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteMetadataForm = (formUri) => ({ + variables: { + formUri: formUri + }, + mutation: gql` + mutation deleteMetadataForm($formUri: String!) { + deleteMetadataForm(formUri: $formUri) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormField.js b/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormField.js new file mode 100644 index 000000000..2b987345a --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormField.js @@ -0,0 +1,13 @@ +import { gql } from 'apollo-boost'; + +export const deleteMetadataFormField = (formUri, fieldUri) => ({ + variables: { + formUri: formUri, + fieldUri: fieldUri + }, + mutation: gql` + mutation deleteMetadataFormField($formUri: String!, $fieldUri: String!) { + deleteMetadataFormField(formUri: $formUri, fieldUri: $fieldUri) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js new file mode 100644 index 000000000..f59ca5df5 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js @@ -0,0 +1,32 @@ +import { gql } from 'apollo-boost'; + +export const getMetadataForm = (uri) => ({ + variables: { + uri + }, + query: gql` + query getMetadataForm($uri: String!) { + getMetadataForm(uri: $uri) { + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + fields { + uri + metadataFormUri + name + displayNumber + description + required + type + glossaryNodeUri + glossaryNodeName + possibleValues + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/index.js b/frontend/src/modules/Metadata_Forms/services/index.js index caf98c619..c10246552 100644 --- a/frontend/src/modules/Metadata_Forms/services/index.js +++ b/frontend/src/modules/Metadata_Forms/services/index.js @@ -1,2 +1,5 @@ export * from './listMetadataForms'; export * from './createMetadataForm'; +export * from './getMetadataForm'; +export * from './createMetadataFormField'; +export * from './deleteMetadataFormField'; diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js index e69de29bb..50c06bb44 100644 --- a/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js +++ b/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js @@ -0,0 +1,252 @@ +import React, { useEffect, useCallback, useState } from 'react'; + +import { Helmet } from 'react-helmet-async'; +import { SET_ERROR, useDispatch } from '../../../globalErrors'; +import { fetchEnums, useClient } from '../../../services'; +import { getMetadataForm } from '../services'; +import { Link as RouterLink, useParams } from 'react-router-dom'; +import { + Box, + Breadcrumbs, + Button, + CircularProgress, + Container, + Divider, + Grid, + Link, + Tab, + Tabs, + Typography +} from '@mui/material'; +import { ChevronRightIcon, useSettings } from '../../../design'; +import { FaTrash } from 'react-icons/fa'; +import { + MetadataFormInfo, + MetadataFormFields, + MetadataFormPreview, + MetadataFormEnforcement +} from '../components'; +import { deleteMetadataForm } from '../services/deleteMetadataForm'; +import { useNavigate } from 'react-router'; + +const MetadataFormView = () => { + const params = useParams(); + const dispatch = useDispatch(); + const client = useClient(); + const navigate = useNavigate(); + const { settings } = useSettings(); + const tabs = [ + { label: 'Form Info', value: 'info' }, + { label: 'Fields', value: 'fields' }, + { label: 'Enforcement', value: 'enforcement' }, + { label: 'Preview', value: 'preview' } + ]; + const [metadataForm, setMetadataForm] = useState(null); + const [currentTab, setCurrentTab] = useState(null); + const [loading, setLoading] = useState(true); + const [visibilityDict, setVisibilityDict] = useState({}); + const [fieldTypeOptions, setFieldTypeOptions] = useState([]); + + const handleTabsChange = (event, value) => { + setCurrentTab(value); + }; + + const deleteForm = async () => { + setLoading(true); + const response = await client.mutate(deleteMetadataForm(params.uri)); + if (!response.errors) { + navigate('/console/metadata-forms'); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + setLoading(false); + } + }; + + const fetchMetadataForm = useCallback(async () => { + setLoading(true); + const response = await client.query(getMetadataForm(params.uri)); + if (!response.errors && response.data.getMetadataForm !== null) { + setMetadataForm(response.data.getMetadataForm); + } else { + const error = response.errors + ? response.errors[0].message + : 'Metadata Forms not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }, [client, dispatch, params.uri]); + + const fetchMFEnums = async () => { + try { + const enums = await fetchEnums(client, [ + 'MetadataFormVisibility', + 'MetadataFormFieldType' + ]); + if (enums['MetadataFormVisibility'].length > 0) { + let tmpVisibilityDict = {}; + enums['MetadataFormVisibility'].map((x) => { + tmpVisibilityDict[x.name] = x.value; + }); + setVisibilityDict(tmpVisibilityDict); + } else { + const error = 'Could not fetch visibility options'; + dispatch({ type: SET_ERROR, error }); + } + if (enums['MetadataFormFieldType'].length > 0) { + setFieldTypeOptions(enums['MetadataFormFieldType']); + } else { + const error = 'Could not fetch field type options'; + dispatch({ type: SET_ERROR, error }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + useEffect(() => { + if (client) { + fetchMetadataForm().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchMFEnums().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + setCurrentTab('info'); + }, [client, dispatch]); + + if (loading) { + return ( + <> + + Metadata Form: Metadata Form Details | data.all + + + + + + + + ); + } + if (!metadataForm && !loading) { + return null; + } + + return ( + <> + + Metadata Form: Metadata Form Details | data.all + + + + + + + {metadataForm.name} + + } + sx={{ mt: 1 }} + > + + Discover + + + Metadata Forms + + + {metadataForm.name} + + + + + + + + + + + + + {tabs.map((tab) => ( + + ))} + + + + + {currentTab === 'info' && ( + + )} + {currentTab === 'fields' && ( + + )} + {currentTab === 'enforcement' && ( + + )} + {currentTab === 'preview' && ( + + )} + + + + + ); +}; + +export default MetadataFormView; diff --git a/tests_new/integration_tests/modules/metadata_forms/conftest.py b/tests_new/integration_tests/modules/metadata_forms/conftest.py index 792874f3b..79d5d7c37 100644 --- a/tests_new/integration_tests/modules/metadata_forms/conftest.py +++ b/tests_new/integration_tests/modules/metadata_forms/conftest.py @@ -1,9 +1,14 @@ import pytest -from integration_tests.modules.metadata_forms.queries import create_metadata_form, delete_metadata_form +from integration_tests.modules.metadata_forms.mutations import ( + create_metadata_form, + delete_metadata_form, + delete_metadata_form_field, + create_metadata_form_fields, +) @pytest.fixture(scope='session') -def metadata_form_1(client1, group1, session_id): +def metadata_form_1(client1, group1): """ Session worksheet owned by group1 """ @@ -21,3 +26,24 @@ def metadata_form_1(client1, group1, session_id): finally: if mf1: delete_metadata_form(client1, mf1.uri) + + +@pytest.fixture(scope='session') +def metadata_form_field_1(client1, group1, metadata_form_1): + """ + Session worksheet owned by group1 + """ + mff = None + try: + input = { + 'name': 'Test Field 1', + 'description': 'test field', + 'type': 'String', + 'required': True, + 'displayNumber': 0, + } + mff = create_metadata_form_fields(client1, metadata_form_1.uri, [input])[0] + yield mff + finally: + if mff: + delete_metadata_form_field(client1, metadata_form_1.uri, mff.uri) diff --git a/tests_new/integration_tests/modules/metadata_forms/mutations.py b/tests_new/integration_tests/modules/metadata_forms/mutations.py new file mode 100644 index 000000000..dbfa523e9 --- /dev/null +++ b/tests_new/integration_tests/modules/metadata_forms/mutations.py @@ -0,0 +1,85 @@ +def create_metadata_form(client, input): + query = { + 'operationName': 'createMetadataForm', + 'variables': {'input': input}, + 'query': f""" + mutation createMetadataForm($input: NewMetadataFormInput!) {{ + createMetadataForm(input: $input) {{ + uri + }} + }} + """, + } + response = client.query(query=query) + return response.data.createMetadataForm + + +def delete_metadata_form(client, uri): + query = { + 'operationName': 'deleteMetadataForm', + 'variables': {'formUri': uri}, + 'query': f""" + mutation deleteMetadataForm($formUri: String!) {{ + deleteMetadataForm(formUri: $formUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteMetadataForm + + +def create_metadata_form_fields(client, formUri, input): + query = { + 'operationName': 'createMetadataFormFields', + 'variables': {'formUri': formUri, 'input': input}, + 'query': f""" + mutation createMetadataFormFields($formUri: String!, $input: [NewMetadataFormFieldInput]) {{ + createMetadataFormFields(formUri: $formUri, input: $input) {{ + uri + }} + }} + """, + } + response = client.query(query=query) + return response.data.createMetadataFormFields + + +def delete_metadata_form_field(client, formUri, fieldUri): + query = { + 'operationName': 'deleteMetadataFormField', + 'variables': {'formUri': formUri, 'fieldUri': fieldUri}, + 'query': f""" + mutation deleteMetadataFormField($formUri: String!, $fieldUri: String!) {{ + deleteMetadataFormField(formUri: $formUri, fieldUri: $fieldUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteMetadataFormField + + +def update_metadata_form_fields(client, formUri, input): + query = { + 'operationName': 'batchMetadataFormFieldUpdates', + 'variables': {'formUri': formUri, 'input': input}, + 'query': f""" + mutation batchMetadataFormFieldUpdates( + $formUri: String! + $input: [MetadataFormFieldUpdateInput] + ) {{ + batchMetadataFormFieldUpdates(formUri: $formUri, input: $input) {{ + uri + metadataFormUri + name + displayNumber + description + required + type + glossaryNodeUri + possibleValues + }} + }} + """, + } + response = client.query(query=query) + return response.data.batchMetadataFormFieldUpdates diff --git a/tests_new/integration_tests/modules/metadata_forms/queries.py b/tests_new/integration_tests/modules/metadata_forms/queries.py index 12d4eee19..e8bd1e711 100644 --- a/tests_new/integration_tests/modules/metadata_forms/queries.py +++ b/tests_new/integration_tests/modules/metadata_forms/queries.py @@ -1,22 +1,6 @@ # TODO: This file will be replaced by using the SDK directly -def create_metadata_form(client, input): - query = { - 'operationName': 'createMetadataForm', - 'variables': {'input': input}, - 'query': f""" - mutation createMetadataForm($input: NewMetadataFormInput!) {{ - createMetadataForm(input: $input) {{ - uri - }} - }} - """, - } - response = client.query(query=query) - return response.data.createMetadataForm - - def list_metadata_forms(client, filter): query = { 'operationName': 'listMetadataForms', @@ -46,15 +30,34 @@ def list_metadata_forms(client, filter): return response.data.listMetadataForms -def delete_metadata_form(client, uri): +def get_metadata_form_full_info(client, uri): query = { - 'operationName': 'deleteMetadataForm', - 'variables': {'formUri': uri}, + 'operationName': 'getMetadataForm', + 'variables': {'uri': uri}, 'query': f""" - mutation deleteMetadataForm($formUri: String!) {{ - deleteMetadataForm(formUri: $formUri) - }} + query getMetadataForm($uri: String!) {{ + getMetadataForm(uri: $uri) {{ + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + fields {{ + uri + metadataFormUri + name + displayNumber + description + required + type + glossaryNodeUri + possibleValues + }} + }} + }} """, } response = client.query(query=query) - return response.data.deleteMetadataForm + return response.data.getMetadataForm diff --git a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py index be5f0f49c..2f06f2542 100644 --- a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py +++ b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py @@ -1,6 +1,7 @@ from assertpy import assert_that -from integration_tests.modules.metadata_forms.queries import list_metadata_forms +from integration_tests.modules.metadata_forms.queries import list_metadata_forms, get_metadata_form_full_info +from integration_tests.modules.metadata_forms.mutations import update_metadata_form_fields def test_metadata_form_create(metadata_form_1): @@ -9,9 +10,66 @@ def test_metadata_form_create(metadata_form_1): def test_list_metadata_forms(client1, metadata_form_1): - filter = {'page': 1, 'pageSize': 10} + filter = {'page': 1, 'pageSize': 10, 'search_input': metadata_form_1.name} response = list_metadata_forms(client1, filter) assert_that(response.count).is_greater_than(0) all_uris = [item.uri for item in response.nodes] assert_that(all_uris).contains(metadata_form_1.uri) + + +def test_metadataform_field_create(metadata_form_field_1): + assert_that(metadata_form_field_1).is_not_none() + assert_that(metadata_form_field_1.uri).is_not_none() + + +def test_get_metadataform_full_info(client1, metadata_form_1, metadata_form_field_1): + fullinfo = get_metadata_form_full_info(client1, metadata_form_1.uri) + assert_that(fullinfo).is_not_none() + assert_that(fullinfo.uri).is_equal_to(metadata_form_1.uri) + + all_field_uris = [item.uri for item in fullinfo.fields] + assert_that(all_field_uris).contains(metadata_form_field_1.uri) + + +def test_metadata_form_fields_batch(client1, metadata_form_1, metadata_form_field_1): + fullinfo_before = get_metadata_form_full_info(client1, metadata_form_1.uri) + + field_data_1 = { + 'name': 'field_1', + 'metadataFormUri': metadata_form_1.uri, + 'description': 'Field 1', + 'type': 'String', + 'required': True, + 'displayNumber': 1, + } + field_data_2 = { + 'name': 'field_2', + 'metadataFormUri': metadata_form_1.uri, + 'description': 'Field 2', + 'type': 'Integer', + 'required': False, + 'displayNumber': 2, + } + field_data_3 = { + 'name': 'field_3', + 'metadataFormUri': metadata_form_1.uri, + 'description': 'Field 3', + 'type': 'Boolean', + 'required': False, + 'displayNumber': 3, + } + + new_fields = [field_data_1, field_data_2, field_data_3] + all_fields = update_metadata_form_fields(client1, metadata_form_1.uri, new_fields) + fullinfo_after = get_metadata_form_full_info(client1, metadata_form_1.uri) + + assert_that(len(fullinfo_after.fields)).is_equal_to(len(fullinfo_before.fields) + len(new_fields)) + + for f in all_fields: + if f['uri'] != metadata_form_field_1.uri: + f['deleted'] = True + + update_metadata_form_fields(client1, metadata_form_1.uri, all_fields) + fullinfo_after_delete = get_metadata_form_full_info(client1, metadata_form_1.uri) + assert_that(len(fullinfo_after_delete.fields)).is_equal_to(len(fullinfo_before.fields)) From d85f0c4151fe03782ef7e8f038b5378c10cd87be Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 12 Aug 2024 22:30:42 -0400 Subject: [PATCH 028/188] Row/Column Level Data Filters (#1438) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature ### Detail - Add row/column level filters for table share items in data.all ### Relates - https://github.com/data-dot-all/dataall/issues/348 ### ⚠️ Important Call Outs for This PR ⚠️ - (1) data.all will NO LONGER support cross account sharing of table data to QuickSight Principals (i.e. QS Groups) - This PR introduces a more efficient sharing mechanism to directly share with foreign IAM principals (not support with QS Principals at the moment) - Access to data via QuickSight in same account is still supported as well as sharing of QuickSight dashboards - Please look at [comments in issue](https://github.com/data-dot-all/dataall/issues/348#issuecomment-2245400193) for more details on sharing mechanism, most importantly the changes involve: - Upgrade to using LF Data Catalog Settings Version 3 - Direct shares to IAM Principals (for both cross or same account principals) - (2) data.all will NO LONGER support "old_share" naming convention - Sharing of dataset tables was improved to reuse share DB and resource link resources as of [this PR](https://github.com/data-dot-all/dataall/pull/1016) released in [version v2.3.0](https://github.com/data-dot-all/dataall/releases/tag/v2.3.0) - "old_share" naming convention can be identified as shared database resources that follow the naming convention `source_db_name + '_shared_' + shareUri` (new naming convention is ``source_db_name + '_shared`) - To update to new naming convention please revoke and recreate the table share on data.all >= v2.3.0 - More details on migration path to be provided closer to release of v2.7.0! - (3) As part of upgrade from v2.6 -> v2.7 data.all admins will have to verify + reapply all of the table shares in data.all - There are already built-in ECS Tasks to easily manage verify + reapply for you! - This will allow data.all to migrate all table shares to the new direct share to foreign IAM principals and clean up unused LakeFormation permissions (wherever applicable) - (4) With this PR there will be a change to the way preview-ability of table data + metadata works - Please read [comment below](https://github.com/data-dot-all/dataall/pull/1438#issuecomment-2261536325) for more details ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../dataall/base/utils/naming_convention.py | 19 +- .../s3_datasets/api/table/input_types.py | 11 + .../s3_datasets/api/table/mutations.py | 21 +- .../modules/s3_datasets/api/table/queries.py | 15 +- .../s3_datasets/api/table/resolvers.py | 16 + .../modules/s3_datasets/api/table/types.py | 26 + .../s3_datasets/aws/athena_table_client.py | 26 +- .../s3_datasets/aws/lf_data_filter_client.py | 54 ++ .../modules/s3_datasets/cdk/dataset_stack.py | 18 + .../db/dataset_column_repositories.py | 3 + .../modules/s3_datasets/db/dataset_models.py | 9 + .../dataset_table_data_filter_repositories.py | 65 ++ .../db/dataset_table_repositories.py | 16 +- .../services/dataset_column_service.py | 12 +- .../services/dataset_permissions.py | 16 +- .../services/dataset_profiling_service.py | 12 +- .../s3_datasets/services/dataset_service.py | 4 +- .../dataset_table_data_filter_enums.py | 6 + .../dataset_table_data_filter_service.py | 117 +++ .../services/dataset_table_service.py | 29 +- .../modules/s3_datasets_shares/api/queries.py | 23 + .../s3_datasets_shares/api/resolvers.py | 16 + .../s3_datasets_shares/aws/glue_client.py | 2 +- .../aws/lakeformation_client.py | 103 ++- .../db/s3_share_object_repositories.py | 60 +- .../services/s3_share_dataset_service.py | 14 + .../services/s3_share_service.py | 72 +- .../share_managers/lf_share_manager.py | 304 ++++---- .../glue_table_share_processor.py | 168 ++--- .../modules/shares_base/api/input_types.py | 10 + .../modules/shares_base/api/mutations.py | 16 + .../modules/shares_base/api/queries.py | 10 + .../modules/shares_base/api/resolvers.py | 40 +- .../dataall/modules/shares_base/api/types.py | 13 + .../db/share_object_item_repositories.py | 77 ++ .../shares_base/db/share_object_models.py | 17 +- .../db/share_object_repositories.py | 1 + .../services/share_item_service.py | 68 +- .../shares_base/services/sharing_service.py | 6 +- .../9efe5f7c69a1_add_data_filters_table.py | 151 ++++ .../modules/Shared/Shares/ShareEditForm.js | 10 + .../Shares/components/ShareItemFilterModal.js | 399 ++++++++++ .../src/modules/Shares/components/index.js | 1 + .../services/getShareItemDataFilters.js | 18 + .../modules/Shares/services/getShareObject.js | 1 + frontend/src/modules/Shares/services/index.js | 4 + .../listTableDataFiltersByAttached.js | 36 + .../Shares/services/removeShareItemFilter.js | 14 + .../Shares/services/updateShareItemFilters.js | 16 + .../src/modules/Shares/views/ShareView.js | 126 +++- .../components/TableDataFilterAddForm.js | 691 ++++++++++++++++++ .../modules/Tables/components/TableFilters.js | 215 ++++++ .../Tables/components/TableFiltersDataGrid.js | 151 ++++ .../src/modules/Tables/components/index.js | 3 + .../Tables/services/createTableDataFilter.js | 18 + .../Tables/services/deleteTableDataFilter.js | 12 + .../Tables/services/getDatasetTable.js | 1 + frontend/src/modules/Tables/services/index.js | 2 + .../src/modules/Tables/views/TableView.js | 72 +- .../src/modules/Worksheets/services/index.js | 1 + .../listS3DatasetsSharedWithEnvGroup.js | 1 + .../services/listSharedDatasetTableColumns.js | 54 ++ .../modules/Worksheets/views/WorksheetView.js | 56 +- .../services/graphql/DatasetTable/index.js | 1 + .../DatasetTable/listTableDataFilters.js | 30 + tests/modules/s3_datasets/conftest.py | 8 +- .../s3_datasets/test_dataset_permissions.py | 4 +- .../modules/s3_datasets/test_dataset_table.py | 211 +++++- tests/modules/s3_datasets_shares/conftest.py | 38 +- .../s3_datasets_shares/tasks/conftest.py | 32 +- .../tasks/test_lf_share_manager.py | 266 ++++--- .../modules/s3_datasets_shares/test_share.py | 133 ++++ 72 files changed, 3769 insertions(+), 522 deletions(-) create mode 100644 backend/dataall/modules/s3_datasets/aws/lf_data_filter_client.py create mode 100644 backend/dataall/modules/s3_datasets/db/dataset_table_data_filter_repositories.py create mode 100644 backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_enums.py create mode 100644 backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_service.py create mode 100644 backend/dataall/modules/shares_base/db/share_object_item_repositories.py create mode 100644 backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py create mode 100644 frontend/src/modules/Shares/components/ShareItemFilterModal.js create mode 100644 frontend/src/modules/Shares/services/getShareItemDataFilters.js create mode 100644 frontend/src/modules/Shares/services/listTableDataFiltersByAttached.js create mode 100644 frontend/src/modules/Shares/services/removeShareItemFilter.js create mode 100644 frontend/src/modules/Shares/services/updateShareItemFilters.js create mode 100644 frontend/src/modules/Tables/components/TableDataFilterAddForm.js create mode 100644 frontend/src/modules/Tables/components/TableFilters.js create mode 100644 frontend/src/modules/Tables/components/TableFiltersDataGrid.js create mode 100644 frontend/src/modules/Tables/services/createTableDataFilter.js create mode 100644 frontend/src/modules/Tables/services/deleteTableDataFilter.js create mode 100644 frontend/src/modules/Worksheets/services/listSharedDatasetTableColumns.js create mode 100644 frontend/src/services/graphql/DatasetTable/listTableDataFilters.js diff --git a/backend/dataall/base/utils/naming_convention.py b/backend/dataall/base/utils/naming_convention.py index 178bb1882..8299e7d9c 100644 --- a/backend/dataall/base/utils/naming_convention.py +++ b/backend/dataall/base/utils/naming_convention.py @@ -1,5 +1,5 @@ from enum import Enum - +import re from .slugify import slugify @@ -14,15 +14,16 @@ class NamingConventionPattern(Enum): DEFAULT = {'regex': '[^a-zA-Z0-9-_]', 'separator': '-', 'max_length': 63} OPENSEARCH = {'regex': '[^a-z0-9-]', 'separator': '-', 'max_length': 27} OPENSEARCH_SERVERLESS = {'regex': '[^a-z0-9-]', 'separator': '-', 'max_length': 31} + DATA_FILTERS = {'regex': '^[a-z0-9_]*$', 'separator': '_', 'max_length': 31} class NamingConventionService: def __init__( self, target_label: str, - target_uri: str, pattern: NamingConventionPattern, - resource_prefix: str, + target_uri: str = '', + resource_prefix: str = '', ): self.target_label = target_label self.target_uri = target_uri if target_uri else '' @@ -38,3 +39,15 @@ def build_compliant_name(self) -> str: max_length = NamingConventionPattern[self.service].value['max_length'] suffix = f'-{self.target_uri}' if len(self.target_uri) else '' return f"{slugify(self.resource_prefix + '-' + self.target_label[:(max_length- len(self.resource_prefix + self.target_uri))] + suffix, regex_pattern=fr'{regex}', separator=separator, lowercase=True)}" + + def validate_name(self): + regex = NamingConventionPattern[self.service].value['regex'] + max_length = NamingConventionPattern[self.service].value['max_length'] + if not re.search(regex, self.target_label): + raise Exception( + f'An error occurred (InvalidInput): label value {self.target_label} must match the pattern {regex}' + ) + elif len(self.target_label) > max_length: + raise Exception( + f'An error occurred (InvalidInput): label value {self.target_label} must be less than {max_length} characters' + ) diff --git a/backend/dataall/modules/s3_datasets/api/table/input_types.py b/backend/dataall/modules/s3_datasets/api/table/input_types.py index 0f25aaa20..df07ce1b0 100644 --- a/backend/dataall/modules/s3_datasets/api/table/input_types.py +++ b/backend/dataall/modules/s3_datasets/api/table/input_types.py @@ -32,3 +32,14 @@ gql.Argument('pageSize', gql.Integer), ], ) + +NewTableDataFilterInput = gql.InputType( + name='NewTableDataFilterInput', + arguments=[ + gql.Argument('filterName', gql.NonNullableType(gql.String)), + gql.Argument('description', gql.String), + gql.Argument('filterType', gql.NonNullableType(gql.String)), + gql.Argument('rowExpression', gql.String), + gql.Argument('includedCols', gql.ArrayType(gql.String)), + ], +) diff --git a/backend/dataall/modules/s3_datasets/api/table/mutations.py b/backend/dataall/modules/s3_datasets/api/table/mutations.py index 08e601409..9c846ebca 100644 --- a/backend/dataall/modules/s3_datasets/api/table/mutations.py +++ b/backend/dataall/modules/s3_datasets/api/table/mutations.py @@ -1,9 +1,11 @@ from dataall.base.api import gql -from dataall.modules.s3_datasets.api.table.input_types import ModifyDatasetTableInput +from dataall.modules.s3_datasets.api.table.input_types import ModifyDatasetTableInput, NewTableDataFilterInput from dataall.modules.s3_datasets.api.table.resolvers import ( update_table, delete_table, sync_tables, + create_table_data_filter, + delete_table_data_filter, ) updateDatasetTable = gql.MutationField( @@ -29,3 +31,20 @@ type=gql.Ref('DatasetTableSearchResult'), resolver=sync_tables, ) + +createTableDataFilter = gql.MutationField( + name='createTableDataFilter', + args=[ + gql.Argument(name='tableUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='input', type=gql.NonNullableType(NewTableDataFilterInput)), + ], + type=gql.Ref('DatasetTableDataFilter'), + resolver=create_table_data_filter, +) + +deleteTableDataFilter = gql.MutationField( + name='deleteTableDataFilter', + args=[gql.Argument(name='filterUri', type=gql.NonNullableType(gql.String))], + type=gql.Boolean, + resolver=delete_table_data_filter, +) diff --git a/backend/dataall/modules/s3_datasets/api/table/queries.py b/backend/dataall/modules/s3_datasets/api/table/queries.py index af39a1cf7..6b86acb1f 100644 --- a/backend/dataall/modules/s3_datasets/api/table/queries.py +++ b/backend/dataall/modules/s3_datasets/api/table/queries.py @@ -1,9 +1,10 @@ from dataall.base.api import gql from dataall.modules.s3_datasets.api.table.input_types import DatasetTableFilter -from dataall.modules.s3_datasets.api.table.resolvers import get_table, preview +from dataall.modules.s3_datasets.api.table.resolvers import get_table, preview, list_table_data_filters from dataall.modules.s3_datasets.api.table.types import ( DatasetTable, DatasetTableSearchResult, + DatasetTableDataFilterSearchResult, ) getDatasetTable = gql.QueryField( @@ -16,7 +17,7 @@ listDatasetTables = gql.QueryField( name='listDatasetTables', - args=[gql.Argument('filter', DatasetTableFilter)], + args=[gql.Argument(name='filter', type=DatasetTableFilter)], type=DatasetTableSearchResult, resolver=lambda *_, **__: None, ) @@ -36,3 +37,13 @@ resolver=preview, type=gql.Ref('QueryPreviewResult'), ) + +listTableDataFilters = gql.QueryField( + name='listTableDataFilters', + args=[ + gql.Argument(name='tableUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='filter', type=DatasetTableFilter), + ], + type=DatasetTableDataFilterSearchResult, + resolver=list_table_data_filters, +) diff --git a/backend/dataall/modules/s3_datasets/api/table/resolvers.py b/backend/dataall/modules/s3_datasets/api/table/resolvers.py index 7e810bdbe..b88c62405 100644 --- a/backend/dataall/modules/s3_datasets/api/table/resolvers.py +++ b/backend/dataall/modules/s3_datasets/api/table/resolvers.py @@ -5,6 +5,8 @@ from dataall.modules.s3_datasets.api.dataset.resolvers import get_dataset from dataall.base.api.context import Context from dataall.modules.s3_datasets.services.dataset_table_service import DatasetTableService +from dataall.modules.s3_datasets.services.dataset_table_data_filter_service import DatasetTableDataFilterService + from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, S3Dataset log = logging.getLogger(__name__) @@ -56,3 +58,17 @@ def resolve_glossary_terms(context: Context, source: DatasetTable, **kwargs): return None with context.engine.scoped_session() as session: return GlossaryRepository.get_glossary_terms_links(session, source.tableUri, 'DatasetTable') + + +def create_table_data_filter(context: Context, source, tableUri: str = None, input: dict = None): + return DatasetTableDataFilterService.create_table_data_filter(uri=tableUri, data=input) + + +def delete_table_data_filter(context: Context, source, filterUri: str = None): + return DatasetTableDataFilterService.delete_table_data_filter(uri=filterUri) + + +def list_table_data_filters(context: Context, source, tableUri: str = None, filter: dict = None): + if not filter: + filter = {'page': 1, 'pageSize': 5} + return DatasetTableDataFilterService.list_table_data_filters(uri=tableUri, data=filter) diff --git a/backend/dataall/modules/s3_datasets/api/table/types.py b/backend/dataall/modules/s3_datasets/api/table/types.py index 20911734f..e91291f6f 100644 --- a/backend/dataall/modules/s3_datasets/api/table/types.py +++ b/backend/dataall/modules/s3_datasets/api/table/types.py @@ -75,6 +75,32 @@ ], ) +DatasetTableDataFilter = gql.ObjectType( + name='DatasetTableDataFilter', + fields=[ + gql.Field(name='filterUri', type=gql.String), + gql.Field(name='tableUri', type=gql.String), + gql.Field(name='label', type=gql.String), + gql.Field(name='name', type=gql.String), + gql.Field(name='description', type=gql.String), + gql.Field(name='filterType', type=gql.String), + gql.Field(name='includedCols', type=gql.ArrayType(gql.String)), + gql.Field(name='rowExpression', type=gql.String), + ], +) + +DatasetTableDataFilterSearchResult = gql.ObjectType( + name='DatasetTableDataFilterSearchResult', + fields=[ + gql.Field(name='nodes', type=gql.ArrayType(DatasetTableDataFilter)), + gql.Field(name='count', type=gql.Integer), + gql.Field(name='pages', type=gql.Integer), + gql.Field(name='page', type=gql.Integer), + gql.Field(name='hasNext', type=gql.Boolean), + gql.Field(name='hasPrevious', type=gql.Boolean), + ], +) + DatasetTableRecord = gql.ObjectType(name='DatasetTableRecord', fields=[gql.Field(name='data', type=gql.String)]) DatasetTableMetadataItem = gql.ObjectType( diff --git a/backend/dataall/modules/s3_datasets/aws/athena_table_client.py b/backend/dataall/modules/s3_datasets/aws/athena_table_client.py index 2dd843295..fb5b2dde0 100644 --- a/backend/dataall/modules/s3_datasets/aws/athena_table_client.py +++ b/backend/dataall/modules/s3_datasets/aws/athena_table_client.py @@ -14,35 +14,31 @@ class AthenaTableClient: def __init__(self, env: Environment, table: DatasetTable): - session = SessionHelper.remote_session(accountid=table.AWSAccountId, region=env.region) + session = SessionHelper.remote_session(accountid=table.AWSAccountId, region=table.region) + self._client = session.client('athena', region_name=env.region) self._creds = session.get_credentials() self._env = env self._table = table - def get_table(self, dataset_uri): - env = self._env - table = self._table - creds = self._creds - - env_workgroup = {} + def get_table(self): try: - env_workgroup = self._client.get_work_group(WorkGroup=env.EnvironmentDefaultAthenaWorkGroup) + env_workgroup = self._client.get_work_group(WorkGroup=self._env.EnvironmentDefaultAthenaWorkGroup) except ClientError as e: - log.info(f'Workgroup {env.EnvironmentDefaultAthenaWorkGroup} can not be found' f'due to: {e}') + log.info(f'Workgroup {self._env.EnvironmentDefaultAthenaWorkGroup} can not be found' f'due to: {e}') connection = connect( - aws_access_key_id=creds.access_key, - aws_secret_access_key=creds.secret_key, - aws_session_token=creds.token, + aws_access_key_id=self._creds.access_key, + aws_secret_access_key=self._creds.secret_key, + aws_session_token=self._creds.token, work_group=env_workgroup.get('WorkGroup', {}).get('Name', 'primary'), - s3_staging_dir=f's3://{env.EnvironmentDefaultBucketName}/preview/{dataset_uri}/{table.tableUri}', - region_name=table.region, + s3_staging_dir=f's3://{self._env.EnvironmentDefaultBucketName}/preview/{self._table.datasetUri}/{self._table.tableUri}', + region_name=self._table.region, ) cursor = connection.cursor() sql = 'select * from {table_identifier} limit 50'.format( - table_identifier=sql_utils.Identifier(table.GlueDatabaseName, table.GlueTableName) + table_identifier=sql_utils.Identifier(self._table.GlueDatabaseName, self._table.GlueTableName) ) cursor.execute(sql) # nosemgrep # it is not possible to build the query string with the table.X parameters using Pyathena connect diff --git a/backend/dataall/modules/s3_datasets/aws/lf_data_filter_client.py b/backend/dataall/modules/s3_datasets/aws/lf_data_filter_client.py new file mode 100644 index 000000000..cd33ef632 --- /dev/null +++ b/backend/dataall/modules/s3_datasets/aws/lf_data_filter_client.py @@ -0,0 +1,54 @@ +import logging +from botocore.exceptions import ClientError + +from dataall.base.aws.sts import SessionHelper +from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, DatasetTableDataFilter, S3Dataset + +log = logging.getLogger(__name__) + + +class LakeFormationDataFilterClient: + """Requests to AWS LakeFormation""" + + def __init__(self, table: DatasetTable, dataset: S3Dataset, aws_session=None): + if not aws_session: + base_session = SessionHelper.remote_session(table.AWSAccountId, table.region) + aws_session = SessionHelper.get_session(base_session=base_session, role_arn=dataset.IAMDatasetAdminRoleArn) + + self._client = aws_session.client('lakeformation', region_name=table.region) + self._table = table + + def delete_table_data_filter(self, data_filter: DatasetTableDataFilter): + try: + self._client.delete_data_cells_filter( + TableCatalogId=self._table.AWSAccountId, + DatabaseName=self._table.GlueDatabaseName, + TableName=self._table.name, + Name=data_filter.label, + ) + except self._client.exceptions.EntityNotFoundException: + log.info(f'Data filter {data_filter.label} not found, passing...') + + def create_table_row_filter(self, data_filter: DatasetTableDataFilter): + RowFilter = { + 'RowFilter': { + 'FilterExpression': data_filter.rowExpression, + }, + 'ColumnWildcard': {'ExcludedColumnNames': []}, + } + self._create_table_data_filter(data_filter, RowFilter) + + def create_table_column_filter(self, data_filter: DatasetTableDataFilter): + ColumnFilter = {'ColumnNames': data_filter.includedCols, 'RowFilter': {'AllRowsWildcard': {}}} + self._create_table_data_filter(data_filter, ColumnFilter) + + def _create_table_data_filter(self, data_filter: DatasetTableDataFilter, filterExpression): + return self._client.create_data_cells_filter( + TableData={ + 'TableCatalogId': self._table.AWSAccountId, + 'DatabaseName': self._table.GlueDatabaseName, + 'TableName': self._table.name, + 'Name': data_filter.label, + **filterExpression, + } + ) diff --git a/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py b/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py index fd6d0cf0b..a94d66990 100644 --- a/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py +++ b/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py @@ -325,6 +325,24 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): f'arn:aws:logs:{dataset.region}:{dataset.AwsAccountId}:log-group:/aws-glue/jobs/*', ], ), + iam.PolicyStatement( + sid='LFDataFilters', + actions=[ + 'lakeformation:ListDataCellsFilter', + 'lakeformation:GetDataCellsFilter', + 'lakeformation:CreateDataCellsFilter', + 'lakeformation:DeleteDataCellsFilter', + 'lakeformation:UpdateDataCellsFilter', + ], + effect=iam.Effect.ALLOW, + resources=['*'], # NOTE: LF Accepts Only '*' Wildcard Resources + conditions={ + 'ForAllValues:StringEquals': { + 'aws:ResourceAccount': dataset.AwsAccountId, + 'aws:RequestedRegion': dataset.region, + } + }, + ), iam.PolicyStatement( actions=['s3:ListBucket'], resources=[f'arn:aws:s3:::{env.EnvironmentDefaultBucketName}'], diff --git a/backend/dataall/modules/s3_datasets/db/dataset_column_repositories.py b/backend/dataall/modules/s3_datasets/db/dataset_column_repositories.py index 438cace9b..c2038084b 100644 --- a/backend/dataall/modules/s3_datasets/db/dataset_column_repositories.py +++ b/backend/dataall/modules/s3_datasets/db/dataset_column_repositories.py @@ -29,6 +29,9 @@ def paginate_active_columns_for_table(session, table_uri: str, filter: dict): .order_by(DatasetTableColumn.columnType.asc()) ) + if filter.get('filteredColumns'): + q = q.filter(DatasetTableColumn.name.in_(filter['filteredColumns'])) + if 'term' in filter: term = filter['term'] q = q.filter( diff --git a/backend/dataall/modules/s3_datasets/db/dataset_models.py b/backend/dataall/modules/s3_datasets/db/dataset_models.py index ce732437c..3e9291485 100644 --- a/backend/dataall/modules/s3_datasets/db/dataset_models.py +++ b/backend/dataall/modules/s3_datasets/db/dataset_models.py @@ -136,3 +136,12 @@ class DatasetBucket(Resource, Base): @classmethod def uri(cls): return cls.bucketUri + + +class DatasetTableDataFilter(Resource, Base): + __tablename__ = 'data_filter' + filterUri = Column(String, primary_key=True, default=utils.uuid('datafilter')) + tableUri = Column(String, ForeignKey('dataset_table.tableUri'), nullable=False) + filterType = Column(String, nullable=False) + includedCols = Column(ARRAY(String), nullable=True) + rowExpression = Column(String, nullable=True) diff --git a/backend/dataall/modules/s3_datasets/db/dataset_table_data_filter_repositories.py b/backend/dataall/modules/s3_datasets/db/dataset_table_data_filter_repositories.py new file mode 100644 index 000000000..3584358b5 --- /dev/null +++ b/backend/dataall/modules/s3_datasets/db/dataset_table_data_filter_repositories.py @@ -0,0 +1,65 @@ +import logging + +from dataall.base.db import exceptions +from dataall.modules.s3_datasets.db.dataset_models import DatasetTableDataFilter +from dataall.modules.s3_datasets.services.dataset_table_data_filter_enums import DataFilterType +from dataall.base.db import paginate + +logger = logging.getLogger(__name__) + + +class DatasetTableDataFilterRepository: + @staticmethod + def build_data_filter(session, username, table_uri, data): + return DatasetTableDataFilter( + tableUri=table_uri, + label=data.get('filterName'), + filterType=data.get('filterType'), + description=data.get('description'), + rowExpression=data.get('rowExpression') if data.get('filterType') == DataFilterType.ROW.value else None, + includedCols=data.get('includedCols') if data.get('filterType') == DataFilterType.COLUMN.value else None, + owner=username, + ) + + @staticmethod + def save(session, data_filter: DatasetTableDataFilter): + session.add(data_filter) + session.commit() + + @staticmethod + def delete(session, data_filter: DatasetTableDataFilter): + session.delete(data_filter) + return True + + @staticmethod + def get_data_filter_by_uri(session, filter_uri): + data_filter: DatasetTableDataFilter = session.query(DatasetTableDataFilter).get(filter_uri) + if not data_filter: + raise exceptions.ObjectNotFound('DatasetTableDataFilter', filter_uri) + return data_filter + + @staticmethod + def _list_data_filters(session, table_uri, data): + query = ( + session.query(DatasetTableDataFilter) + .filter(DatasetTableDataFilter.tableUri == table_uri) + .order_by(DatasetTableDataFilter.created.desc()) + ) + + if filterUris := data.get('filterUris'): + query = query.filter(DatasetTableDataFilter.filterUri.in_(filterUris)) + + if term := data.get('term'): + query = query.filter(DatasetTableDataFilter.name.ilike('%' + term + '%')) + + return query + + @staticmethod + def paginated_data_filters(session, table_uri, data) -> dict: + query = DatasetTableDataFilterRepository._list_data_filters(session, table_uri, data) + return paginate(query=query, page_size=data.get('pageSize', 10), page=data.get('page', 1)).to_dict() + + @staticmethod + def list_data_filters(session, table_uri): + query = DatasetTableDataFilterRepository._list_data_filters(session, table_uri, {}) + return query.all() diff --git a/backend/dataall/modules/s3_datasets/db/dataset_table_repositories.py b/backend/dataall/modules/s3_datasets/db/dataset_table_repositories.py index ae778a412..6fd86610b 100644 --- a/backend/dataall/modules/s3_datasets/db/dataset_table_repositories.py +++ b/backend/dataall/modules/s3_datasets/db/dataset_table_repositories.py @@ -4,7 +4,12 @@ from sqlalchemy.sql import and_ from dataall.base.db import exceptions -from dataall.modules.s3_datasets.db.dataset_models import DatasetTableColumn, DatasetTable, S3Dataset +from dataall.modules.s3_datasets.db.dataset_models import ( + DatasetTableColumn, + DatasetTable, + S3Dataset, + DatasetTableDataFilter, +) from dataall.base.utils import json_utils logger = logging.getLogger(__name__) @@ -39,6 +44,15 @@ def create_synced_table(session, dataset: S3Dataset, table: dict): def delete(session, table: DatasetTable): session.delete(table) + @staticmethod + def delete_all_table_filters(session, table: DatasetTable): + session.query(DatasetTableDataFilter).filter( + and_( + DatasetTableDataFilter.tableUri == table.tableUri, + ) + ).delete() + session.commit() + @staticmethod def get_dataset_table_by_uri(session, table_uri): table: DatasetTable = session.query(DatasetTable).get(table_uri) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_column_service.py b/backend/dataall/modules/s3_datasets/services/dataset_column_service.py index eb7c19a00..987b855a4 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_column_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_column_service.py @@ -2,6 +2,7 @@ from dataall.core.tasks.service_handlers import Worker from dataall.base.aws.sts import SessionHelper from dataall.base.context import get_context +from dataall.base.db import exceptions from dataall.core.tasks.db.task_models import Task from dataall.modules.s3_datasets.aws.glue_table_client import GlueTableClient from dataall.modules.s3_datasets.db.dataset_column_repositories import DatasetColumnRepository @@ -33,13 +34,10 @@ def paginate_active_columns_for_table(uri: str, filter=None): if ( ConfidentialityClassification.get_confidentiality_level(dataset.confidentiality) != ConfidentialityClassification.Unclassified.value - ): - ResourcePolicyService.check_user_resource_permission( - session=session, - username=context.username, - groups=context.groups, - resource_uri=table.tableUri, - permission_name=PREVIEW_DATASET_TABLE, + ) and (dataset.SamlAdminGroupName not in context.groups and dataset.stewards not in context.groups): + raise exceptions.UnauthorizedOperation( + action='LIST_DATASET_TABLE_COLUMNS', + message='User is not authorized to view Columns for Confidential datasets', ) return DatasetColumnRepository.paginate_active_columns_for_table(session, uri, filter) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_permissions.py b/backend/dataall/modules/s3_datasets/services/dataset_permissions.py index c6b1c0254..196afcb05 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_permissions.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_permissions.py @@ -71,6 +71,19 @@ DATASET_TABLE_READ = [GET_DATASET_TABLE, PREVIEW_DATASET_TABLE] +""" +DATASET TABLE DATA FILTER PERMISSIOSN +""" +CREATE_TABLE_DATA_FILTER = 'CREATE_TABLE_DATA_FILTER' +DELETE_TABLE_DATA_FILTER = 'DELETE_TABLE_DATA_FILTER' +LIST_TABLE_DATA_FILTERS = 'LIST_TABLE_DATA_FILTERS' + +DATASET_TABLE_DATA_FILTERS = [CREATE_TABLE_DATA_FILTER, DELETE_TABLE_DATA_FILTER, LIST_TABLE_DATA_FILTERS] + +DATASET_TABLE_ALL = list(set(DATASET_TABLE_READ + DATASET_TABLE_DATA_FILTERS)) + +RESOURCES_ALL.extend(DATASET_TABLE_ALL) + """ DATASET FOLDER PERMISSIONS """ @@ -79,7 +92,6 @@ DATASET_FOLDER_READ = [GET_DATASET_FOLDER] -RESOURCES_ALL.extend(DATASET_TABLE_READ) RESOURCES_ALL.extend(DATASET_FOLDER_READ) """ @@ -96,7 +108,7 @@ RESOURCES_ALL.append(CREATE_DATASET) -for perm in chain(DATASET_ALL, DATASET_TABLE_READ, DATASET_FOLDER_READ): +for perm in chain(DATASET_ALL, DATASET_TABLE_ALL, DATASET_FOLDER_READ): RESOURCES_ALL_WITH_DESC[perm] = perm RESOURCES_ALL_WITH_DESC[CREATE_DATASET] = 'Create datasets on this environment' diff --git a/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py b/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py index be94ce51c..7839ca9d1 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py @@ -3,6 +3,7 @@ from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.tasks.service_handlers import Worker from dataall.base.context import get_context +from dataall.base.db import exceptions from dataall.core.environment.db.environment_models import Environment from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.tasks.db.task_models import Task @@ -106,12 +107,9 @@ def _check_preview_permissions_if_needed(session, table_uri): if ( ConfidentialityClassification.get_confidentiality_level(dataset.confidentiality) != ConfidentialityClassification.Unclassified.value - ): - ResourcePolicyService.check_user_resource_permission( - session=session, - username=context.username, - groups=context.groups, - resource_uri=table.tableUri, - permission_name=PREVIEW_DATASET_TABLE, + ) and (dataset.SamlAdminGroupName not in context.groups and dataset.stewards not in context.groups): + raise exceptions.UnauthorizedOperation( + action='GET_TABLE_PROFILING_METRICS', + message='User is not authorized to view Profiling Metrics for Confidential datasets', ) return True diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index a8bdbc700..2f82dc666 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -43,7 +43,7 @@ from dataall.modules.datasets_base.services.datasets_enums import DatasetRole from dataall.modules.s3_datasets.db.dataset_models import S3Dataset, DatasetTable from dataall.modules.datasets_base.db.dataset_models import DatasetBase -from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_READ +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_ALL from dataall.modules.datasets_base.services.dataset_service_interface import DatasetServiceInterface log = logging.getLogger(__name__) @@ -508,7 +508,7 @@ def _transfer_stewardship_to_new_stewards(session, dataset, new_stewards): ResourcePolicyService.attach_resource_policy( session=session, group=new_stewards, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=tableUri, resource_type=DatasetTable.__name__, ) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_enums.py b/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_enums.py new file mode 100644 index 000000000..42cf7f61f --- /dev/null +++ b/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_enums.py @@ -0,0 +1,6 @@ +from dataall.base.api.constants import GraphQLEnumMapper + + +class DataFilterType(GraphQLEnumMapper): + ROW = 'ROW' + COLUMN = 'COLUMN' diff --git a/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_service.py b/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_service.py new file mode 100644 index 000000000..a6a75996f --- /dev/null +++ b/backend/dataall/modules/s3_datasets/services/dataset_table_data_filter_service.py @@ -0,0 +1,117 @@ +import logging +import re +from dataall.base.context import get_context +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.modules.s3_datasets.db.dataset_table_data_filter_repositories import DatasetTableDataFilterRepository +from dataall.modules.s3_datasets.db.dataset_table_repositories import DatasetTableRepository +from dataall.modules.s3_datasets.db.dataset_repositories import DatasetRepository +from dataall.modules.s3_datasets.services.dataset_table_data_filter_enums import DataFilterType +from dataall.modules.s3_datasets.services.dataset_service import DatasetService +from dataall.modules.s3_datasets.services.dataset_permissions import ( + CREATE_TABLE_DATA_FILTER, + DELETE_TABLE_DATA_FILTER, + LIST_TABLE_DATA_FILTERS, +) +from dataall.base.db import exceptions +from dataall.modules.s3_datasets.aws.lf_data_filter_client import LakeFormationDataFilterClient +from dataall.base.utils.naming_convention import ( + NamingConventionService, + NamingConventionPattern, +) + +log = logging.getLogger(__name__) + + +class DatasetTableDataFilterRequestValidationService: + @staticmethod + def _required_param(param, name): + if not param: + raise exceptions.RequiredParameter(name) + + @staticmethod + def validate_data_filter_type(data): + DatasetTableDataFilterRequestValidationService._required_param(data.get('filterType'), 'filterType') + if data.get('filterType') not in set(item.value for item in DataFilterType): + raise exceptions.InvalidInput( + 'filterType', + data.get('filterType'), + 'ROW or COLUMN value', + ) + if data.get('filterType') == DataFilterType.ROW.value and not data.get('rowExpression'): + raise exceptions.InvalidInput( + 'rowExpression', + data.get('rowExpression'), + f'must be provided for {data.get("filterType")} filter', + ) + if data.get('filterType') == DataFilterType.COLUMN.value and not data.get('includedCols'): + raise exceptions.InvalidInput( + 'includedCols', + data.get('includedCols'), + f'must be provided for {data.get("filterType")} filter', + ) + + @staticmethod + def validate_creation_data_filter_params(uri, data): + DatasetTableDataFilterRequestValidationService._required_param(uri, 'tableUri') + DatasetTableDataFilterRequestValidationService._required_param(data, 'data') + DatasetTableDataFilterRequestValidationService._required_param(data.get('filterName'), 'filterName') + NamingConventionService( + target_label=data.get('filterName'), + pattern=NamingConventionPattern.DATA_FILTERS, + ).validate_name() + + DatasetTableDataFilterRequestValidationService.validate_data_filter_type(data) + + +class DatasetTableDataFilterService: + @staticmethod + def _get_table_uri_from_filter(session, uri): + data_filter = DatasetTableDataFilterRepository.get_data_filter_by_uri(session, filter_uri=uri) + return data_filter.tableUri + + @staticmethod + @ResourcePolicyService.has_resource_permission(CREATE_TABLE_DATA_FILTER) + def create_table_data_filter(uri: str, data: dict): + DatasetTableDataFilterRequestValidationService.validate_creation_data_filter_params(uri, data) + context = get_context() + + with context.db_engine.scoped_session() as session: + table = DatasetTableRepository.get_dataset_table_by_uri(session, uri) + dataset = DatasetRepository.get_dataset_by_uri(session, table.datasetUri) + data_filter = DatasetTableDataFilterRepository.build_data_filter( + session, context.username, table.tableUri, data + ) + + # Create LF Filter + lf_client = LakeFormationDataFilterClient(table=table, dataset=dataset) + lf_client.create_table_row_filter(data_filter) if data.get( + 'filterType' + ) == DataFilterType.ROW.value else lf_client.create_table_column_filter(data_filter) + + # Save to RDS + DatasetTableDataFilterRepository.save(session, data_filter=data_filter) + return data_filter + + @staticmethod + @ResourcePolicyService.has_resource_permission(DELETE_TABLE_DATA_FILTER, parent_resource=_get_table_uri_from_filter) + def delete_table_data_filter(uri: str): + with get_context().db_engine.scoped_session() as session: + data_filter = DatasetTableDataFilterRepository.get_data_filter_by_uri(session, filter_uri=uri) + + # Check if Share Items w Filter before Delete + DatasetService.check_before_delete(session, data_filter.filterUri, action=DELETE_TABLE_DATA_FILTER) + + # Delete LF Filter + table = DatasetTableRepository.get_dataset_table_by_uri(session, data_filter.tableUri) + dataset = DatasetRepository.get_dataset_by_uri(session, table.datasetUri) + lf_client = LakeFormationDataFilterClient(table=table, dataset=dataset) + lf_client.delete_table_data_filter(data_filter) + + # Delete from RDS + return DatasetTableDataFilterRepository.delete(session, data_filter) + + @staticmethod + @ResourcePolicyService.has_resource_permission(LIST_TABLE_DATA_FILTERS) + def list_table_data_filters(uri: str, data: dict): + with get_context().db_engine.scoped_session() as session: + return DatasetTableDataFilterRepository.paginated_data_filters(session, table_uri=uri, data=data) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_table_service.py b/backend/dataall/modules/s3_datasets/services/dataset_table_service.py index 804156912..5c3c3228f 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_table_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_table_service.py @@ -8,6 +8,7 @@ from dataall.modules.s3_datasets.aws.athena_table_client import AthenaTableClient from dataall.modules.s3_datasets.aws.glue_dataset_client import DatasetCrawler from dataall.modules.s3_datasets.db.dataset_table_repositories import DatasetTableRepository +from dataall.modules.s3_datasets.db.dataset_table_data_filter_repositories import DatasetTableDataFilterRepository from dataall.modules.s3_datasets.indexers.table_indexer import DatasetTableIndexer from dataall.modules.s3_datasets.indexers.dataset_indexer import DatasetIndexer from dataall.modules.s3_datasets.services.dataset_permissions import ( @@ -16,16 +17,18 @@ DELETE_DATASET_TABLE, SYNC_DATASET, ) +from dataall.modules.s3_datasets.aws.lf_data_filter_client import LakeFormationDataFilterClient from dataall.modules.s3_datasets.db.dataset_repositories import DatasetRepository from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, S3Dataset from dataall.modules.s3_datasets.services.dataset_permissions import ( PREVIEW_DATASET_TABLE, - DATASET_TABLE_READ, + DATASET_TABLE_ALL, GET_DATASET_TABLE, ) from dataall.modules.s3_datasets.services.dataset_service import DatasetService from dataall.base.utils import json_utils +from dataall.base.db import exceptions log = logging.getLogger(__name__) @@ -70,6 +73,15 @@ def delete_table(uri: str): table = DatasetTableRepository.get_dataset_table_by_uri(session, uri) DatasetService.check_before_delete(session, table.tableUri, action=DELETE_DATASET_TABLE) DatasetService.execute_on_delete(session, table.tableUri, action=DELETE_DATASET_TABLE) + + table_data_filters = DatasetTableDataFilterRepository.list_data_filters(session, table.tableUri) + dataset = DatasetRepository.get_dataset_by_uri(session, table.datasetUri) + lf_client = LakeFormationDataFilterClient(table=table, dataset=dataset) + # Delete LF Filters + for data_filter in table_data_filters: + lf_client.delete_table_data_filter(data_filter) + DatasetTableRepository.delete_all_table_filters(session, table) + DatasetTableRepository.delete(session, table) DatasetTableService._delete_dataset_table_read_permission(session, uri) @@ -88,16 +100,13 @@ def preview(uri: str): if ( ConfidentialityClassification.get_confidentiality_level(dataset.confidentiality) != ConfidentialityClassification.Unclassified.value - ): - ResourcePolicyService.check_user_resource_permission( - session=session, - username=context.username, - groups=context.groups, - resource_uri=table.tableUri, - permission_name=PREVIEW_DATASET_TABLE, + ) and (dataset.SamlAdminGroupName not in context.groups and dataset.stewards not in context.groups): + raise exceptions.UnauthorizedOperation( + action=PREVIEW_DATASET_TABLE, + message='User is not authorized to Preview Table for Confidential datasets', ) env = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) - return AthenaTableClient(env, table).get_table(dataset_uri=dataset.datasetUri) + return AthenaTableClient(env, table).get_table() @staticmethod @ResourcePolicyService.has_resource_permission(GET_DATASET_TABLE) @@ -161,7 +170,7 @@ def _attach_dataset_table_permission(session, dataset: S3Dataset, table_uri): ResourcePolicyService.attach_resource_policy( session=session, group=group, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table_uri, resource_type=DatasetTable.__name__, ) diff --git a/backend/dataall/modules/s3_datasets_shares/api/queries.py b/backend/dataall/modules/s3_datasets_shares/api/queries.py index 8ccab5a35..a58c83eca 100644 --- a/backend/dataall/modules/s3_datasets_shares/api/queries.py +++ b/backend/dataall/modules/s3_datasets_shares/api/queries.py @@ -4,6 +4,8 @@ list_shared_tables_by_env_dataset, list_shared_databases_tables_with_env_group, get_s3_consumption_data, + list_shared_table_columns, + list_table_data_filters_by_attached, ) @@ -43,3 +45,24 @@ ], type=gql.ArrayType(gql.Ref('SharedDatabaseTableItem')), ) + +listSharedDatasetTableColumns = gql.QueryField( + name='listSharedDatasetTableColumns', + args=[ + gql.Argument(name='tableUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='filter', type=gql.Ref('DatasetTableColumnFilter')), + ], + type=gql.Ref('DatasetTableColumnSearchResult'), + resolver=list_shared_table_columns, +) + +listTableDataFiltersByAttached = gql.QueryField( + name='listTableDataFiltersByAttached', + args=[ + gql.Argument(name='attachedDataFilterUri', type=gql.String), + gql.Argument('filter', gql.Ref('DatasetTableFilter')), + ], + type=gql.Ref('DatasetTableDataFilterSearchResult'), + resolver=list_table_data_filters_by_attached, +) diff --git a/backend/dataall/modules/s3_datasets_shares/api/resolvers.py b/backend/dataall/modules/s3_datasets_shares/api/resolvers.py index f77076a7a..b531cc29d 100644 --- a/backend/dataall/modules/s3_datasets_shares/api/resolvers.py +++ b/backend/dataall/modules/s3_datasets_shares/api/resolvers.py @@ -72,3 +72,19 @@ def resolve_shared_db_name(context: Context, source, **kwargs): return S3ShareService.resolve_shared_db_name( source.GlueDatabaseName, source.shareUri, source.targetEnvAwsAccountId, source.targetEnvRegion ) + + +def list_shared_table_columns(context: Context, source, tableUri: str, shareUri: str, filter: dict): + if source: + tableUri = source.tableUri + if not filter: + filter = {} + return S3ShareService.paginate_active_columns_for_table_share(uri=tableUri, shareUri=shareUri, filter=filter) + + +def list_table_data_filters_by_attached( + context: Context, source, attachedDataFilterUri: str = None, filter: dict = None +): + if not filter: + filter = {'page': 1, 'pageSize': 5} + return S3ShareService.list_table_data_filters_by_attached(uri=attachedDataFilterUri, data=filter) diff --git a/backend/dataall/modules/s3_datasets_shares/aws/glue_client.py b/backend/dataall/modules/s3_datasets_shares/aws/glue_client.py index ef694d8c0..e0a317fe9 100644 --- a/backend/dataall/modules/s3_datasets_shares/aws/glue_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/glue_client.py @@ -102,7 +102,7 @@ def create_resource_link(self, resource_link_name, table, catalog_id, database): account_id = self._account_id shared_database = self._database resource_link_input = { - 'Name': table.GlueTableName, + 'Name': resource_link_name, 'TargetTable': { 'CatalogId': catalog_id, 'DatabaseName': database, diff --git a/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py b/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py index 5214d57a5..1c1ba42cc 100644 --- a/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py @@ -14,6 +14,34 @@ def __init__(self, account_id, region): self._session = SessionHelper.remote_session(accountid=account_id, region=region) self._client = self._session.client('lakeformation', region_name=region) + def upgrade_lakeformation_data_catalog_settings(self, version_num=3): + """ + Upgrades the AWS Lake Formation data catalog settings version. + + Returns: + None + """ + try: + # Get the current Lake Formation settings + settings = self._client.get_data_lake_settings()['DataLakeSettings'] + # Check if the current version is already 3 + if int(settings['Parameters']['CROSS_ACCOUNT_VERSION']) >= version_num: + log.info(f'Lake Formation settings are already at Version {str(version_num)}.') + return + + settings['Parameters']['CROSS_ACCOUNT_VERSION'] = str(version_num) + # Update the settings to Version 3 + self._client.put_data_lake_settings( + DataLakeSettings={ + **settings, + } + ) + + log.info(f'Lake Formation settings have been upgraded to Version {str(version_num)}.') + + except Exception as e: + print(f'Error upgrading Lake Formation settings to Version {str(version_num)}: {e}') + def grant_permissions_to_database( self, principals, @@ -83,6 +111,27 @@ def grant_permissions_to_table_with_columns( ) return True + def grant_permissions_to_table_with_filters( + self, principals, database_name, table_name, catalog_id, permissions, data_filters=[] + ) -> True: + for f_name in data_filters: + data_filter_resource = { + 'DataCellsFilter': { + 'TableCatalogId': catalog_id, + 'DatabaseName': database_name, + 'TableName': table_name, + 'Name': f_name, + }, + } + self._grant_permissions_to_resource( + principals=principals, + resource=data_filter_resource, + permissions=permissions, + permissions_with_grant_options=None, + check_resource=data_filter_resource, + ) + return True + def _grant_permissions_to_resource( self, principals: List, @@ -182,6 +231,25 @@ def revoke_permissions_from_table_with_columns( ) return True + def revoke_permissions_to_table_with_filters( + self, principals, database_name, table_name, catalog_id, permissions, data_filters + ) -> True: + for f_name in data_filters: + data_filter_resource = { + 'DataCellsFilter': { + 'TableCatalogId': catalog_id, + 'DatabaseName': database_name, + 'TableName': table_name, + 'Name': f_name, + }, + } + self._revoke_permissions_from_resource( + principals=principals, + resource=data_filter_resource, + permissions=permissions, + ) + return True + def _revoke_permissions_from_resource( self, principals, resource, permissions, permissions_with_grant_options=None ) -> True: @@ -318,6 +386,31 @@ def check_permissions_to_table_with_columns( ) return all(check) + def check_permissions_to_table_with_filters( + self, principals, database_name, table_name, catalog_id, permissions, data_filters=[] + ) -> True: + check = [] + for principal in principals: + for f_name in data_filters: + data_filter_resource = { + 'DataCellsFilter': { + 'TableCatalogId': catalog_id, + 'DatabaseName': database_name, + 'TableName': table_name, + 'Name': f_name, + }, + } + check.append( + self._check_permissions_to_resource( + principal=principal, + resource=data_filter_resource, + permissions=permissions, + permissions_with_grant_options=None, + check_resource=data_filter_resource, + ) + ) + return all(check) + def _check_permissions_to_resource( self, principal: str, @@ -332,12 +425,18 @@ def _check_permissions_to_resource( Principal={'DataLakePrincipalIdentifier': principal}, Resource=check_resource if check_resource else resource, ) + + # Cannot Specify Filter by Principal for Data Filter List Permissions + if 'DataCellsFilter' in check_dict['Resource']: + del check_dict['Principal'] + existing = self._client.list_permissions(**check_dict) current = [] current_grant = [] for permission in existing['PrincipalResourcePermissions']: - current.extend(permission['Permissions']) - current_grant.extend(permission['PermissionsWithGrantOption']) + if permission['Principal']['DataLakePrincipalIdentifier'] == principal: + current.extend(permission['Permissions']) + current_grant.extend(permission['PermissionsWithGrantOption']) missing_permissions = list(set(permissions) - set(current)) missing_grant_permissions = ( diff --git a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py index dac3ae8f0..cfeea83f6 100644 --- a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py +++ b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py @@ -1,5 +1,4 @@ import logging -from warnings import warn from typing import List from sqlalchemy import and_, or_ @@ -13,9 +12,8 @@ PrincipalType, ) from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository -from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject, ShareObjectItemDataFilter from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository -from dataall.modules.s3_datasets.db.dataset_repositories import DatasetRepository from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, S3Dataset from dataall.modules.datasets_base.db.dataset_models import DatasetBase @@ -98,7 +96,7 @@ def delete_all_S3_share_items(session, env_uri): ), ) ) - .delete() + .delete(synchronize_session=False) ) session.delete(share) @@ -166,7 +164,7 @@ def get_share_by_dataset_attributes(session, dataset_uri, dataset_owner, groups= @staticmethod def check_other_approved_share_item_table_exists(session, environment_uri, item_uri, share_item_uri): share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - return ( + query = ( session.query(ShareObject) .join( ShareObjectItem, @@ -181,8 +179,8 @@ def check_other_approved_share_item_table_exists(session, environment_uri, item_ ShareObjectItem.status.in_(share_item_shared_states), ) ) - .first() ) + return query.first() @staticmethod def check_existing_shared_items_of_type(session, uri, item_type): @@ -203,40 +201,6 @@ def check_existing_shared_items_of_type(session, uri, item_type): return True return False - @staticmethod - def list_shares_with_existing_shared_items_in_environment( - session, dataset_uri, environment_uri=None, item_type=None - ) -> [ShareObject]: - warn( - 'S3ShareObjectRepository.list_shares_with_existing_shared_items_in_environment will be deprecated in v2.6.0', - DeprecationWarning, - stacklevel=2, - ) - # When deprecated, use ist_dataset_shares_with_existing_shared_items instead - share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - query = ( - session.query(ShareObject) - .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) - .filter( - and_( - ShareObject.datasetUri == dataset_uri, - ShareObject.deleted.is_(None), - ShareObjectItem.status.in_(share_item_shared_states), - ) - ) - ) - if environment_uri: - query = query.filter(ShareObject.environmentUri == environment_uri) - if item_type: - query = query.filter(ShareObjectItem.itemType == item_type) - shares_datasets = [] - for share in query.all(): - dataset: S3Dataset = DatasetRepository.get_dataset_by_uri(session, share.datasetUri) - shares_datasets.append( - {'shareUri': share.shareUri, 'databaseName': f'{dataset.GlueDatabaseName}_shared_{share.shareUri}'} - ) - return shares_datasets - @staticmethod def query_dataset_tables_shared_with_env( session, environment_uri: str, dataset_uri: str, username: str, groups: [str] @@ -246,12 +210,20 @@ def query_dataset_tables_shared_with_env( for the share object associating the dataset and environment """ share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - env_tables_shared = ( - session.query(DatasetTable) + env_tables_shared_query = ( + session.query( + DatasetTable.tableUri.label('tableUri'), + DatasetTable.GlueTableName.label('GlueTableName'), + ShareObjectItemDataFilter.label.label('resourceLinkSuffix'), + ) .join( ShareObjectItem, ShareObjectItem.itemUri == DatasetTable.tableUri, ) + .outerjoin( + ShareObjectItemDataFilter, + ShareObjectItemDataFilter.attachedDataFilterUri == ShareObjectItem.attachedDataFilterUri, + ) .join( ShareObject, ShareObject.shareUri == ShareObjectItem.shareUri, @@ -268,10 +240,8 @@ def query_dataset_tables_shared_with_env( ), ) ) - .all() ) - - return env_tables_shared + return env_tables_shared_query.all() @staticmethod def query_shared_glue_databases(session, groups, env_uri, group_uri): diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py index 435ed4e8e..5b62e255b 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py @@ -2,11 +2,13 @@ from dataall.base.db import exceptions from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository +from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_APPROVER from dataall.modules.s3_datasets.services.dataset_permissions import ( DELETE_DATASET, DELETE_DATASET_TABLE, DELETE_DATASET_FOLDER, + DELETE_TABLE_DATA_FILTER, ) from dataall.modules.datasets_base.services.datasets_enums import DatasetRole, DatasetTypes from dataall.modules.datasets_base.services.dataset_service_interface import DatasetServiceInterface @@ -50,6 +52,15 @@ def check_before_delete(session, uri, **kwargs): action=DELETE_DATASET, message='Revoke all dataset shares before deletion.', ) + elif action in [DELETE_TABLE_DATA_FILTER]: + existing_share_item_w_filters = ShareObjectItemRepository.count_all_share_item_filters_with_data_filter_uri( + session, uri + ) + if existing_share_item_w_filters: + raise exceptions.ResourceShared( + action=action, + message='Remove all share items using this filter before deletion', + ) else: raise exceptions.RequiredParameter('Delete action') return True @@ -60,8 +71,11 @@ def execute_on_delete(session, uri, **kwargs): action = kwargs.get('action') if action in [DELETE_DATASET_FOLDER, DELETE_DATASET_TABLE]: S3ShareObjectRepository.delete_s3_share_item(session, uri) + ShareObjectItemRepository.delete_all_share_item_filters(session, uri) elif action in [DELETE_DATASET]: S3ShareObjectRepository.delete_s3_shares_with_no_shared_items(session, uri) + elif action in [DELETE_TABLE_DATA_FILTER]: + ShareObjectItemRepository.delete_share_item_filters_with_data_filter_uri(session, uri) else: raise exceptions.RequiredParameter('Delete action') return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py index f77e55445..da1bdf0e8 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py @@ -1,5 +1,4 @@ import logging -from warnings import warn from dataall.base.db import utils from dataall.base.context import get_context @@ -9,9 +8,9 @@ from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.tasks.db.task_models import Task from dataall.core.tasks.service_handlers import Worker -from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.services.share_item_service import ShareItemService from dataall.modules.shares_base.services.share_permissions import GET_SHARE_OBJECT @@ -19,14 +18,20 @@ ShareableType, ShareItemStatus, ) +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem +from dataall.modules.s3_datasets.services.dataset_table_data_filter_enums import DataFilterType + from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, DatasetStorageLocation from dataall.modules.s3_datasets.db.dataset_repositories import DatasetRepository +from dataall.modules.s3_datasets.db.dataset_table_data_filter_repositories import DatasetTableDataFilterRepository +from dataall.modules.s3_datasets.db.dataset_column_repositories import DatasetColumnRepository from dataall.modules.s3_datasets.services.dataset_permissions import ( MANAGE_DATASETS, UPDATE_DATASET, CREDENTIALS_DATASET, DATASET_TABLE_READ, DATASET_FOLDER_READ, + GET_DATASET_TABLE, ) from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository from dataall.modules.s3_datasets_shares.aws.glue_client import GlueClient @@ -169,9 +174,18 @@ def reapply_share_items_for_dataset(uri: str): def list_shared_tables_by_env_dataset(dataset_uri: str, env_uri: str): context = get_context() with context.db_engine.scoped_session() as session: + log.info( + S3ShareObjectRepository.query_dataset_tables_shared_with_env( + session, env_uri, dataset_uri, context.username, context.groups + ) + ) return [ - {'tableUri': t.tableUri, 'GlueTableName': t.GlueTableName} - for t in S3ShareObjectRepository.query_dataset_tables_shared_with_env( + { + 'tableUri': res.tableUri, + 'GlueTableName': res.GlueTableName + + (f'_{res.resourceLinkSuffix}' if res.resourceLinkSuffix else ''), + } + for res in S3ShareObjectRepository.query_dataset_tables_shared_with_env( session, env_uri, dataset_uri, context.username, context.groups ) ] @@ -230,15 +244,9 @@ def get_s3_consumption_data(uri): account_id=dataset.AwsAccountId, region=dataset.region, database=dataset.GlueDatabaseName ).get_glue_database_from_catalog() - old_shared_db_name = f'{datasetGlueDatabase}_shared_{uri}'[:254] - database = GlueClient( - account_id=environment.AwsAccountId, region=environment.region, database=old_shared_db_name - ).get_glue_database() - warn('old_shared_db_name will be deprecated in v2.6.0', DeprecationWarning, stacklevel=2) - sharedGlueDatabase = old_shared_db_name if database else f'{datasetGlueDatabase}_shared' return { 's3AccessPointName': S3AccessPointName, - 'sharedGlueDatabase': sharedGlueDatabase, + 'sharedGlueDatabase': f'{datasetGlueDatabase}_shared', 's3bucketName': dataset.S3BucketName, } return { @@ -255,6 +263,42 @@ def list_shared_databases_tables_with_env_group(environmentUri: str, groupUri: s session=session, groups=context.groups, env_uri=environmentUri, group_uri=groupUri ) + @staticmethod + @ResourcePolicyService.has_resource_permission(GET_DATASET_TABLE) + def paginate_active_columns_for_table_share(uri: str, shareUri: str, filter=None): + context = get_context() + with context.db_engine.scoped_session() as session: + share_item: ShareObjectItem = ShareObjectRepository.find_sharable_item(session, shareUri, uri) + filtered_columns = [] + if share_item.attachedDataFilterUri: + item_data_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + session, share_item.attachedDataFilterUri + ) + for filter_uri in item_data_filter.dataFilterUris: + data_filter = DatasetTableDataFilterRepository.get_data_filter_by_uri( + session, filter_uri=filter_uri + ) + if data_filter.filterType == DataFilterType.ROW.value: + filtered_columns = None + break + elif data_filter.filterType == DataFilterType.COLUMN.value: + filtered_columns.extend(data_filter.includedCols) + if filtered_columns: + filter['filteredColumns'] = list(set(filtered_columns)) + return DatasetColumnRepository.paginate_active_columns_for_table(session, uri, filter) + + @staticmethod + @ResourcePolicyService.has_resource_permission( + GET_SHARE_OBJECT, parent_resource=ShareItemService._get_share_uri_from_item_filter_uri + ) + def list_table_data_filters_by_attached(uri: str, data: dict): + with get_context().db_engine.scoped_session() as session: + item_data_filter = ShareObjectItemRepository.get_share_item_filter_by_uri(session, uri) + data['filterUris'] = item_data_filter.dataFilterUris + return DatasetTableDataFilterRepository.paginated_data_filters( + session, table_uri=item_data_filter.itemUri, data=data + ) + @staticmethod def resolve_shared_db_name(GlueDatabaseName: str, shareUri: str, targetEnvAwsAccountId: str, targetEnvRegion: str): with get_context().db_engine.scoped_session() as session: @@ -267,8 +311,4 @@ def resolve_shared_db_name(GlueDatabaseName: str, shareUri: str, targetEnvAwsAcc except Exception as e: log.info(f'Error while calling the get_glue_database_from_catalog when resolving db name due to: {e}') datasetGlueDatabase = GlueDatabaseName - old_shared_db_name = (datasetGlueDatabase + '_shared_' + shareUri)[:254] - database = GlueClient( - account_id=targetEnvAwsAccountId, database=old_shared_db_name, region=targetEnvRegion - ).get_glue_database() - return old_shared_db_name if database else datasetGlueDatabase + '_shared' + return datasetGlueDatabase + '_shared' diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py index d3523c441..d8632d9ed 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py @@ -1,7 +1,6 @@ import logging import time from datetime import datetime -from warnings import warn from dataall.core.environment.services.environment_service import EnvironmentService from dataall.modules.s3_datasets_shares.aws.glue_client import GlueClient from dataall.modules.s3_datasets_shares.aws.lakeformation_client import LakeFormationClient @@ -20,7 +19,7 @@ ) from dataall.modules.s3_datasets.db.dataset_models import DatasetTable from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService -from dataall.modules.shares_base.db.share_object_models import ShareObjectItem +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObjectItemDataFilter from dataall.modules.s3_datasets_shares.services.share_managers.share_manager_utils import ShareErrorFormatter from dataall.modules.shares_base.services.sharing_service import ShareData @@ -45,7 +44,7 @@ def __init__( self.source_account_id, self.source_account_region, self.source_database_name = ( self.init_source_account_details() ) - self.shared_db_name, self.is_new_share = self.build_shared_db_name() + self.shared_db_name = self.build_shared_db_name() self.principals = self.get_share_principals() self.cross_account = self.target_environment.AwsAccountId != self.source_account_id self.tbl_level_errors = [] @@ -88,21 +87,7 @@ def get_share_principals(self) -> [str]: f'arn:aws:iam::{self.target_environment.AwsAccountId}:role/{self.share.principalRoleName}' ) - principals = [principal_iam_role_arn] - dashboard_enabled = EnvironmentService.get_boolean_env_param( - self.session, self.target_environment, 'dashboardsEnabled' - ) - - if dashboard_enabled: - group = QuicksightClient.create_quicksight_group( - AwsAccountId=self.target_environment.AwsAccountId, region=self.target_environment.region - ) - if group and group.get('Group'): - group_arn = group.get('Group').get('Arn') - if group_arn: - principals.append(group_arn) - - return principals + return [principal_iam_role_arn] def build_shared_db_name(self) -> tuple: """ @@ -111,20 +96,8 @@ def build_shared_db_name(self) -> tuple: :return: Shared database name, boolean indicating if it is a new share """ if self.source_database_name is None: - return '', True - old_shared_db_name = (self.source_database_name + '_shared_' + self.share.shareUri)[:254] - warn('old_shared_db_name will be deprecated in v2.6.0', DeprecationWarning, stacklevel=2) - logger.info(f'Checking shared db {old_shared_db_name} exists in {self.target_environment.AwsAccountId}...') - - database = GlueClient( - account_id=self.target_environment.AwsAccountId, - database=old_shared_db_name, - region=self.target_environment.region, - ).get_glue_database() - - if database: - return old_shared_db_name, False - return self.source_database_name + '_shared', True + return '' + return self.source_database_name + '_shared' def verify_table_exists_in_source_database(self, share_item: ShareObjectItem, table: DatasetTable) -> None: """ @@ -156,31 +129,31 @@ def check_table_exists_in_source_database(self, share_item: ShareObjectItem, tab ) return True - def verify_resource_link_table_exists_in_target_database(self, table: DatasetTable) -> None: + def verify_resource_link_table_exists_in_target_database(self, resource_link_name: str) -> None: """ Checks if the resource link table exists on the shared Glue database in the target account and add to tbl level errors if check fails :return: None """ - if not self.check_resource_link_table_exists_in_target_database(table): + if not self.check_resource_link_table_exists_in_target_database(resource_link_name): self.tbl_level_errors.append( ShareErrorFormatter.dne_error_msg( 'Resource Link Table', - f'{self.target_environment.AwsAccountId}/{table.GlueDatabaseName}.{table.GlueTableName}', + f'{self.target_environment.AwsAccountId}/{self.shared_db_name}/{resource_link_name} ', ) ) - def check_resource_link_table_exists_in_target_database(self, table: DatasetTable) -> bool: + def check_resource_link_table_exists_in_target_database(self, resource_link_name: str) -> bool: """ Checks if the table to be shared exists on the Glue catalog in the target account as resource link :param table: DatasetTable :return: Boolean """ - if self.glue_client_in_target.table_exists(table.GlueTableName): + if self.glue_client_in_target.table_exists(resource_link_name): return True logger.info( f'Resource link could not be found ' - f'on {self.target_environment.AwsAccountId}/{self.shared_db_name}/{table.GlueTableName} ' + f'on {self.target_environment.AwsAccountId}/{self.shared_db_name}/{resource_link_name}' ) return False @@ -200,6 +173,13 @@ def revoke_iam_allowed_principals_from_table(self, table: DatasetTable) -> True: ) return True + def upgrade_lakeformation_settings_in_source(self) -> None: + """ + Upgrades LakeFormation settings to enable cross-account permissions + :return: None + """ + self.lf_client_in_source.upgrade_lakeformation_data_catalog_settings() + def grant_pivot_role_all_database_permissions_to_source_database(self) -> True: """ Grants 'ALL' Lake Formation permissions to data.all PivotRole to the original database in source account @@ -292,32 +272,53 @@ def check_principals_permissions_to_shared_database(self) -> None: ) ) - def check_target_account_permissions_to_source_table(self, table: DatasetTable) -> None: + def check_target_principals_permissions_to_source_table( + self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None + ) -> None: """ - Checks 'DESCRIBE' 'SELECT' Lake Formation permissions to target account to the original table in source account + Checks 'DESCRIBE' 'SELECT' Lake Formation permissions to target principals to the original table in source account and add to tbl level errors if check fails :param table: DatasetTable :return: None """ - if not self.lf_client_in_source.check_permissions_to_table( - principals=[self.target_environment.AwsAccountId], - database_name=self.source_database_name, - table_name=table.GlueTableName, - catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], - ): - self.tbl_level_errors.append( - ShareErrorFormatter.missing_permission_error_msg( - self.target_environment.AwsAccountId, - 'LF', - ['DESCRIBE', 'SELECT'], - 'Glue Table', - f'{table.GlueDatabaseName}.{table.GlueTableName}', + if share_item_filter: + if not self.lf_client_in_source.check_permissions_to_table_with_filters( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['SELECT'], + data_filters=share_item_filter.dataFilterNames, + ): + self.tbl_level_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.principals, + 'LF', + ['SELECT'], + 'Glue Table with Filters', + f'{table.GlueDatabaseName}.{table.GlueTableName}, Filters:{share_item_filter.dataFilterNames}', + ) ) - ) + else: + if not self.lf_client_in_source.check_permissions_to_table_with_columns( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['DESCRIBE', 'SELECT'], + ): + self.tbl_level_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.principals, + 'LF', + ['DESCRIBE', 'SELECT'], + 'Glue Table', + f'{table.GlueDatabaseName}.{table.GlueTableName}', + ) + ) + return True - def grant_pivot_role_drop_permissions_to_resource_link_table(self, table: DatasetTable) -> True: + def grant_pivot_role_drop_permissions_to_resource_link_table(self, resource_link_name: str) -> True: """ Grants 'DROP' Lake Formation permissions to pivot role to the resource link table in target account :param table: DatasetTable @@ -330,7 +331,7 @@ def grant_pivot_role_drop_permissions_to_resource_link_table(self, table: Datase ) ], database_name=self.shared_db_name, - table_name=table.GlueTableName, + table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, permissions=['DROP'], ) @@ -348,40 +349,53 @@ def grant_principals_database_permissions_to_shared_database(self) -> True: ) return True - def grant_target_account_permissions_to_source_table(self, table: DatasetTable) -> True: + def grant_principals_permissions_to_source_table( + self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None + ) -> True: """ - Grants 'DESCRIBE' 'SELECT' Lake Formation permissions to target account to the original table in source account + Grants 'DESCRIBE' 'SELECT' Lake Formation permissions to target principals to the original table in source account :param table: DatasetTable :return: True if it is successful """ - self.lf_client_in_source.grant_permissions_to_table( - principals=[self.target_environment.AwsAccountId], - database_name=self.source_database_name, - table_name=table.GlueTableName, - catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], - ) + if share_item_filter: + self.lf_client_in_source.grant_permissions_to_table_with_filters( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['SELECT'], + data_filters=share_item_filter.dataFilterNames, + ) + else: + self.lf_client_in_source.grant_permissions_to_table_with_columns( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['DESCRIBE', 'SELECT'], + ) time.sleep(2) return True - def check_if_exists_and_create_resource_link_table_in_shared_database(self, table: DatasetTable) -> True: + def check_if_exists_and_create_resource_link_table_in_shared_database( + self, table: DatasetTable, resource_link_name: str + ) -> True: """ Checks if resource link to the source shared Glue table exists in target account Creates a resource link if it does not exist :param table: DatasetTable :return: True if it is successful """ - if not self.check_resource_link_table_exists_in_target_database(table): + if not self.check_resource_link_table_exists_in_target_database(resource_link_name): self.glue_client_in_target.create_resource_link( - resource_link_name=table.GlueTableName, + resource_link_name=resource_link_name, table=table, catalog_id=self.source_account_id, database=self.source_database_name, ) return True - def grant_principals_permissions_to_resource_link_table(self, table: DatasetTable) -> True: + def grant_principals_permissions_to_resource_link_table(self, resource_link_name: str) -> True: """ Grants 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account :param table: DatasetTable @@ -390,104 +404,84 @@ def grant_principals_permissions_to_resource_link_table(self, table: DatasetTabl self.lf_client_in_target.grant_permissions_to_table( principals=self.principals, database_name=self.shared_db_name, - table_name=table.GlueTableName, + table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, permissions=['DESCRIBE'], ) return True - def grant_principals_permissions_to_table_in_target(self, table: DatasetTable) -> True: - """ - Grants 'DESCRIBE', 'SELECT' Lake Formation permissions to share principals to the table shared in target account - :param table: DatasetTable - :return: True if it is successful - """ - self.lf_client_in_target.grant_permissions_to_table_with_columns( - principals=self.principals, - database_name=self.source_database_name, - table_name=table.GlueTableName, - catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], - ) - return True - - def check_principals_permissions_to_resource_link_table(self, table: DatasetTable) -> None: - """ - Checks 'DESCRIBE', 'SELECT' Lake Formation permissions to share principals to the table shared in target account - and add to tbl level errors if check fails - :param table: DatasetTable - :return: None - """ - if not self.lf_client_in_target.check_permissions_to_table_with_columns( - principals=self.principals, - database_name=self.source_database_name, - table_name=table.GlueTableName, - catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], - ): - self.tbl_level_errors.append( - ShareErrorFormatter.missing_permission_error_msg( - self.principals, - 'LF', - ['DESCRIBE', 'SELECT'], - 'Glue Table', - f'{table.GlueDatabaseName}.{table.GlueTableName}', - ) - ) - - def check_principals_permissions_to_table_in_target(self, table: DatasetTable) -> None: + def check_principals_permissions_to_resource_link_table(self, resource_link_name: str) -> None: """ Checks 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account and add to tbl level errors if check fails :param table: DatasetTable :return: None """ + if not self.lf_client_in_target.check_permissions_to_table( principals=self.principals, database_name=self.shared_db_name, - table_name=table.GlueTableName, + table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, permissions=['DESCRIBE'], ): self.tbl_level_errors.append( ShareErrorFormatter.missing_permission_error_msg( - self.principals, 'LF', ['DESCRIBE'], 'Glue Table', f'{self.shared_db_name}.{table.GlueTableName}' + self.principals, 'LF', ['DESCRIBE'], 'Glue Table', f'{self.shared_db_name}.{resource_link_name}' ) ) - def revoke_principals_permissions_to_resource_link_table(self, table: DatasetTable) -> True: + def revoke_principals_permissions_to_resource_link_table(self, resource_link_name) -> True: """ Revokes 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account - At the moment there is one single Quicksight group per environment. Permissions for the Quicksight group - are removed when the resource link table is deleted. :param table: DatasetTable :return: True if it is successful """ - principals = [p for p in self.principals if 'arn:aws:quicksight' not in p] self.lf_client_in_target.revoke_permissions_from_table( - principals=principals, + principals=self.principals, database_name=self.shared_db_name, - table_name=table.GlueTableName, + table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, permissions=['DESCRIBE'], ) return True - def revoke_principals_permissions_to_table_in_target(self, table: DatasetTable, other_table_shares_in_env) -> True: + def _clean_up_lf_permissions_account_delegation_pattern(self, table: DatasetTable) -> True: """ - Revokes 'DESCRIBE', 'SELECT' Lake Formation permissions to share principals to the table shared in target account - If there are no more shares for this table in the environment then revoke to Quicksight group - :param table: DatasetTable - :param other_table_shares_in_env: Boolean. Other table shares in this environment for this table - :return: True if it is successful + THIS FUNCTION IS TO CLEAN UP THE SHARING MECHANISM OF DATA.ALL PRIOR TO v2.7 AND MIGRATE EXISTING + TABLES SHARES TO DIRECT IAM PRINCIPAL SHARES MOVING FORWARD + + NOTE: THIS FUNCTION TO BE DEPRECATED IN A FUTURE RELEASE """ - principals = ( - self.principals - if not other_table_shares_in_env - else [p for p in self.principals if 'arn:aws:quicksight' not in p] + + # Get QS Principal (if applicable) + principals = self.principals + group_arn = None + dashboard_enabled = EnvironmentService.get_boolean_env_param( + self.session, self.target_environment, 'dashboardsEnabled' ) + if EnvironmentService.get_boolean_env_param(self.session, self.target_environment, 'dashboardsEnabled'): + if ( + group_arn := QuicksightClient.create_quicksight_group( + AwsAccountId=self.target_environment.AwsAccountId, region=self.target_environment.region + ) + .get('Group', {}) + .get('Arn') + ): + principals.append(group_arn) + + if group_arn: + logger.info('Revoking QS Group Permissions to Resource Link...') + self.lf_client_in_target.revoke_permissions_from_table( + principals=[group_arn], + database_name=self.shared_db_name, + table_name=table.GlueTableName, + catalog_id=self.target_environment.AwsAccountId, + permissions=['DESCRIBE'], + ) + logger.info('Revoking principal permissions from table in target...') self.lf_client_in_target.revoke_permissions_from_table_with_columns( principals=principals, database_name=self.source_database_name, @@ -495,6 +489,16 @@ def revoke_principals_permissions_to_table_in_target(self, table: DatasetTable, catalog_id=self.source_account_id, permissions=['DESCRIBE', 'SELECT'], ) + + logger.info('Revoking target account permissions from source table') + self.lf_client_in_source.revoke_permissions_from_table_with_columns( + principals=[self.target_environment.AwsAccountId], + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['DESCRIBE', 'SELECT'], + permissions_with_grant_options=['DESCRIBE', 'SELECT'], + ) return True def revoke_principals_database_permissions_to_shared_database(self) -> True: @@ -509,7 +513,7 @@ def revoke_principals_database_permissions_to_shared_database(self) -> True: ) return True - def delete_resource_link_table_in_shared_database(self, table: DatasetTable) -> True: + def delete_resource_link_table_in_shared_database(self, resource_link_name: str) -> True: """ Checks if resource link table from shared database in target account exists Deletes it if it exists @@ -517,10 +521,10 @@ def delete_resource_link_table_in_shared_database(self, table: DatasetTable) -> :return: True if it is successful """ glue_client = self.glue_client_in_target - if not glue_client.table_exists(table.GlueTableName): + if not glue_client.table_exists(resource_link_name): return True - glue_client.delete_table(table.GlueTableName) + glue_client.delete_table(resource_link_name) return True def delete_shared_database_in_target(self) -> True: @@ -533,22 +537,34 @@ def delete_shared_database_in_target(self) -> True: self.glue_client_in_target.delete_database() return True - def revoke_external_account_access_on_source_account(self, table: DatasetTable) -> True: + def revoke_principals_permissions_to_table_in_source( + self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None + ) -> True: """ - Revokes 'DESCRIBE' 'SELECT' Lake Formation permissions to target account to the original table in source account + Revokes 'SELECT' Lake Formation permissions to target principals to the original table in source account If the table is not shared with any other team in the environment, it deletes resource_shares on RAM associated to revoked table :param table: DatasetTable :return: True if it is successful """ - self.lf_client_in_source.revoke_permissions_from_table_with_columns( - principals=[self.target_environment.AwsAccountId], - database_name=self.source_database_name, - table_name=table.GlueTableName, - catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], - ) + + if share_item_filter: + self.lf_client_in_source.revoke_permissions_to_table_with_filters( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['SELECT'], + data_filters=share_item_filter.dataFilterNames, + ) + else: + self.lf_client_in_source.revoke_permissions_from_table_with_columns( + principals=self.principals, + database_name=self.source_database_name, + table_name=table.GlueTableName, + catalog_id=self.source_account_id, + permissions=['DESCRIBE', 'SELECT'], + ) return True def handle_share_failure( diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index 59c7a7d16..b85354a25 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -3,7 +3,6 @@ from warnings import warn from datetime import datetime from dataall.core.environment.services.environment_service import EnvironmentService -from dataall.base.aws.quicksight import QuicksightClient from dataall.modules.shares_base.services.shares_enums import ( ShareItemHealthStatus, ShareItemStatus, @@ -12,12 +11,14 @@ ShareableType, ) from dataall.modules.s3_datasets.db.dataset_models import DatasetTable +from dataall.modules.shares_base.db.share_object_models import ShareObjectItemDataFilter from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.s3_datasets_shares.services.share_managers import LFShareManager from dataall.modules.s3_datasets_shares.aws.ram_client import RamClient from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.s3_datasets_shares.services.s3_share_service import S3ShareService from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM @@ -39,6 +40,11 @@ def __init__(self, session, share_data, shareable_items, reapply=False): def _initialize_share_manager(self, tables): return LFShareManager(session=self.session, share_data=self.share_data, tables=tables) + def _build_resource_link_name(self, table_name: str, share_item_filter: ShareObjectItemDataFilter): + if share_item_filter: + return f'{table_name}_{share_item_filter.label}' + return table_name + def process_approved_shares(self) -> bool: """ 0) Check if source account details are properly initialized and initialize the Glue and LF clients @@ -50,10 +56,10 @@ def process_approved_shares(self) -> bool: b) Check if table exists on glue catalog raise error if not and flag share item status to failed c) If it is a cross-account share: c.1) Revoke iamallowedgroups permissions from table - c.2) Grant target account permissions to original table -> create RAM invitation - c.3) Accept pending RAM invitation - d) Create resource link for table in target account - e) If it is a cross-account share: grant permission to principals to RAM-shared table in target account + c.2) Upgrade LF Data Catalog Settings to Version 3 (if not already >=3) + d) Grant Permissions to target principals -> create RAM invitation + d.1) (If cross-account) And Accept pending RAM invitation + e) Create resource link for table in target account f) grant permission to principals to resource link table g) update share item status to SHARE_SUCCESSFUL with Action Success @@ -84,10 +90,6 @@ def process_approved_shares(self) -> bool: 'Source account details not initialized properly. Please check if the catalog account is properly onboarded on data.all' ) env = EnvironmentService.get_environment_by_uri(self.session, self.share_data.share.environmentUri) - if EnvironmentService.get_boolean_env_param(self.session, env, 'dashboardsEnabled'): - QuicksightClient.check_quicksight_enterprise_subscription( - AwsAccountId=env.AwsAccountId, region=env.region - ) manager.initialize_clients() manager.grant_pivot_role_all_database_permissions_to_source_database() manager.check_if_exists_and_create_shared_database_in_target() @@ -122,26 +124,42 @@ def process_approved_shares(self) -> bool: shared_item_SM.update_state_single_item(self.session, share_item, new_state) try: + if self.reapply: + # CHECK IF SHARING WITH ACCOUNT AND CLEAN UP + warn( + 'Clean up of non-direct IAM Principal shares will be deprecated in version >= v2.9.0', + DeprecationWarning, + stacklevel=2, + ) + # Revoke Target Account Permissions To Table + try: + log.info('Check & clean up of delegated LF Permission to Target Account...') + manager._clean_up_lf_permissions_account_delegation_pattern(table) + except Exception as e: + log.info(f'Clean Up ran into error {e}, continuing re-apply without clean up...') + + share_item_filter = None + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + self.session, share_item.attachedDataFilterUri + ) + manager.check_table_exists_in_source_database(share_item, table) if manager.cross_account: log.info(f'Processing cross-account permissions for table {table.GlueTableName}...') manager.revoke_iam_allowed_principals_from_table(table) - manager.grant_target_account_permissions_to_source_table(table) - ( - retry_share_table, - failed_invitations, - ) = RamClient.accept_ram_invitation( - source_account_id=manager.source_account_id, - source_region=manager.source_account_region, - source_database=manager.source_database_name, - source_table_name=table.GlueTableName, - target_account_id=self.share_data.target_environment.AwsAccountId, - target_region=self.share_data.target_environment.region, - ) - if retry_share_table: - manager.grant_target_account_permissions_to_source_table(table) - RamClient.accept_ram_invitation( + manager.upgrade_lakeformation_settings_in_source() + + manager.grant_principals_permissions_to_source_table(table, share_item, share_item_filter) + if manager.cross_account: + retries = 0 + retry_share_table = False + while retry_share_table and retries < 1: + ( + retry_share_table, + failed_invitations, + ) = RamClient.accept_ram_invitation( source_account_id=manager.source_account_id, source_region=manager.source_account_region, source_database=manager.source_database_name, @@ -149,9 +167,10 @@ def process_approved_shares(self) -> bool: target_account_id=self.share_data.target_environment.AwsAccountId, target_region=self.share_data.target_environment.region, ) - manager.check_if_exists_and_create_resource_link_table_in_shared_database(table) - manager.grant_principals_permissions_to_table_in_target(table) - manager.grant_principals_permissions_to_resource_link_table(table) + + resource_link_name = self._build_resource_link_name(table.GlueTableName, share_item_filter) + manager.check_if_exists_and_create_resource_link_table_in_shared_database(table, resource_link_name) + manager.grant_principals_permissions_to_resource_link_table(resource_link_name) log.info('Attaching TABLE READ permissions...') S3ShareService.attach_dataset_table_read_permission( @@ -231,6 +250,11 @@ def process_revoked_shares(self) -> bool: share_item = ShareObjectRepository.find_sharable_item( self.session, self.share_data.share.shareUri, table.tableUri ) + share_item_filter = None + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + self.session, share_item.attachedDataFilterUri + ) revoked_item_SM = ShareItemSM(ShareItemStatus.Revoke_Approved.value) new_state = revoked_item_SM.run_transition(ShareObjectActions.Start.value) @@ -241,35 +265,35 @@ def process_revoked_shares(self) -> bool: manager.check_table_exists_in_source_database(share_item, table) log.info('Check resource link table exists') - resource_link_table_exists = manager.check_resource_link_table_exists_in_target_database(table) - other_table_shares_in_env = ( - True - if S3ShareObjectRepository.check_other_approved_share_item_table_exists( - self.session, - self.share_data.target_environment.environmentUri, - share_item.itemUri, - share_item.shareItemUri, - ) - else False + resource_link_name = self._build_resource_link_name(table.GlueTableName, share_item_filter) + + resource_link_table_exists = manager.check_resource_link_table_exists_in_target_database( + resource_link_name ) if resource_link_table_exists: log.info('Revoking principal permissions from resource link table') - manager.revoke_principals_permissions_to_resource_link_table(table) - log.info('Revoking principal permissions from table in target') - manager.revoke_principals_permissions_to_table_in_target(table, other_table_shares_in_env) - - if (manager.is_new_share and not other_table_shares_in_env) or not manager.is_new_share: - warn( - 'share_manager.is_new_share will be deprecated in v2.6.0', - DeprecationWarning, - stacklevel=2, + manager.revoke_principals_permissions_to_resource_link_table(resource_link_name) + log.info('Revoking principal permissions from table in source') + manager.revoke_principals_permissions_to_table_in_source(table, share_item, share_item_filter) + if share_item_filter: + can_delete_resource_link = True + else: + can_delete_resource_link = ( + False + if S3ShareObjectRepository.check_other_approved_share_item_table_exists( + self.session, + self.share_data.target_environment.environmentUri, + share_item.itemUri, + share_item.shareItemUri, + share_item_filter.dataFilterUris if share_item_filter else None, + ) + else True ) - manager.grant_pivot_role_drop_permissions_to_resource_link_table(table) - manager.delete_resource_link_table_in_shared_database(table) - if not other_table_shares_in_env: - manager.revoke_external_account_access_on_source_account(table) + if can_delete_resource_link: + manager.grant_pivot_role_drop_permissions_to_resource_link_table(resource_link_name) + manager.delete_resource_link_table_in_shared_database(resource_link_name) if ( self.share_data.share.groupUri != self.share_data.dataset.SamlAdminGroupName @@ -305,40 +329,16 @@ def process_revoked_shares(self) -> bool: log.info('Revoking permissions to target shared database...') manager.revoke_principals_database_permissions_to_shared_database() - if not manager.is_new_share: - log.info('Deleting OLD target shared database...') - warn( - 'share_manager.is_new_share will be deprecated in v2.6.0', - DeprecationWarning, - stacklevel=2, - ) - manager.delete_shared_database_in_target() - existing_shares_with_shared_tables_in_environment = ( - S3ShareObjectRepository.list_shares_with_existing_shared_items_in_environment( + S3ShareObjectRepository.list_s3_dataset_shares_with_existing_shared_items( session=self.session, dataset_uri=self.share_data.dataset.datasetUri, environment_uri=self.share_data.target_environment.environmentUri, item_type=ShareableType.Table.value, ) ) - warn( - 'S3ShareObjectRepository.list_shares_with_existing_shared_items_in_environment will be deprecated in v2.6.0', - DeprecationWarning, - stacklevel=2, - ) - existing_old_shares_bool = [ - manager.glue_client_in_target.database_exists(item['databaseName']) - for item in existing_shares_with_shared_tables_in_environment - ] - log.info( - f'Remaining tables shared from this dataset to this environment = {existing_shares_with_shared_tables_in_environment}, {existing_old_shares_bool}' - ) - if manager.is_new_share and False not in existing_old_shares_bool: + if not len(existing_shares_with_shared_tables_in_environment): log.info('Deleting target shared database...') - warn( - 'share_manager.is_new_share will be deprecated in v2.6.0', DeprecationWarning, stacklevel=2 - ) manager.delete_shared_database_in_target() except Exception as e: log.error( @@ -374,16 +374,21 @@ def verify_shares(self) -> bool: manager.db_level_errors = [str(e)] for table in self.tables: + manager.tbl_level_errors = [] log.info(f'Verifying access to table {table.tableUri}/{table.GlueTableName}...') try: share_item = ShareObjectRepository.find_sharable_item( self.session, self.share_data.share.shareUri, table.tableUri ) + share_item_filter = None + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + self.session, share_item.attachedDataFilterUri + ) manager.verify_table_exists_in_source_database(share_item, table) + manager.check_target_principals_permissions_to_source_table(table, share_item, share_item_filter) if manager.cross_account: - manager.check_target_account_permissions_to_source_table(table) - if not RamClient.check_ram_invitation_status( source_account_id=manager.source_account_id, source_region=manager.source_account_region, @@ -400,10 +405,9 @@ def verify_shares(self) -> bool: f'{manager.source_database_name}.{table.GlueTableName}', ) ) - - manager.verify_resource_link_table_exists_in_target_database(table) - manager.check_principals_permissions_to_table_in_target(table) - manager.check_principals_permissions_to_resource_link_table(table) + resource_link_name = self._build_resource_link_name(table.GlueTableName, share_item_filter) + manager.verify_resource_link_table_exists_in_target_database(resource_link_name) + manager.check_principals_permissions_to_resource_link_table(resource_link_name) except Exception as e: manager.tbl_level_errors = [str(e)] diff --git a/backend/dataall/modules/shares_base/api/input_types.py b/backend/dataall/modules/shares_base/api/input_types.py index 7625c2eea..86f22f8f2 100644 --- a/backend/dataall/modules/shares_base/api/input_types.py +++ b/backend/dataall/modules/shares_base/api/input_types.py @@ -91,3 +91,13 @@ gql.Argument(name='term', type=gql.String), ], ) + +ModifyFiltersTableShareItemInput = gql.InputType( + name='ModifyFiltersTableShareItemInput', + arguments=[ + gql.Argument(name='shareItemUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='label', type=gql.NonNullableType(gql.String)), + gql.Argument(name='filterUris', type=gql.ArrayType(gql.String)), + gql.Argument(name='filterNames', type=gql.ArrayType(gql.String)), + ], +) diff --git a/backend/dataall/modules/shares_base/api/mutations.py b/backend/dataall/modules/shares_base/api/mutations.py index afc180f93..8d2bb49d0 100644 --- a/backend/dataall/modules/shares_base/api/mutations.py +++ b/backend/dataall/modules/shares_base/api/mutations.py @@ -12,6 +12,8 @@ update_share_reject_purpose, update_share_request_purpose, verify_items_share_object, + update_filters_table_share_item, + remove_filters_table_share_item, ) createShareObject = gql.MutationField( @@ -116,3 +118,17 @@ type=gql.Boolean, resolver=update_share_request_purpose, ) + +updateShareItemFilters = gql.MutationField( + name='updateShareItemFilters', + args=[gql.Argument(name='input', type=gql.NonNullableType(gql.Ref('ModifyFiltersTableShareItemInput')))], + type=gql.Boolean, + resolver=update_filters_table_share_item, +) + +removeShareItemFilter = gql.MutationField( + name='removeShareItemFilter', + args=[gql.Argument(name='attachedDataFilterUri', type=gql.NonNullableType(gql.String))], + type=gql.Boolean, + resolver=remove_filters_table_share_item, +) diff --git a/backend/dataall/modules/shares_base/api/queries.py b/backend/dataall/modules/shares_base/api/queries.py index 7cc3f675a..cc447f233 100644 --- a/backend/dataall/modules/shares_base/api/queries.py +++ b/backend/dataall/modules/shares_base/api/queries.py @@ -5,6 +5,7 @@ list_shared_with_environment_data_items, list_shares_in_my_inbox, list_shares_in_my_outbox, + get_share_item_data_filters, ) getShareObject = gql.QueryField( @@ -44,3 +45,12 @@ type=gql.ArrayType(gql.Ref('ShareLog')), resolver=get_share_logs, ) + +getShareItemDataFilters = gql.QueryField( + name='getShareItemDataFilters', + args=[ + gql.Argument(name='attachedDataFilterUri', type=gql.NonNullableType(gql.String)), + ], + type=gql.Ref('ShareObjectItemDataFilter'), + resolver=get_share_item_data_filters, +) diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index 0d534171f..aacd81398 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -1,10 +1,11 @@ import logging +import re from dataall.base.api.context import Context +from dataall.base.db.exceptions import RequiredParameter from dataall.core.environment.db.environment_models import Environment from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.organizations.db.organization_repositories import OrganizationRepository -from dataall.base.db.exceptions import RequiredParameter from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.services.shares_enums import ShareObjectPermission, PrincipalType @@ -12,7 +13,10 @@ from dataall.modules.shares_base.services.share_item_service import ShareItemService from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.shares_base.services.share_logs_service import ShareLogsService - +from dataall.base.utils.naming_convention import ( + NamingConventionService, + NamingConventionPattern, +) log = logging.getLogger(__name__) @@ -47,6 +51,21 @@ def validate_dataset_share_selector_input(data): if not data.get('shareUris'): raise RequiredParameter('shareUris') + @staticmethod + def validate_update_share_item_filters(data): + if not data.get('shareItemUri'): + RequiredParameter('shareItemUri') + if not data: + raise RequiredParameter(data) + if not data.get('filterUris'): + raise RequiredParameter('filterUris') + if not data.get('filterNames'): + raise RequiredParameter('filterNames') + NamingConventionService( + target_label=data.get('label'), + pattern=NamingConventionPattern.DATA_FILTERS, + ).validate_name() + def create_share_object( context: Context, @@ -290,3 +309,20 @@ def update_share_reject_purpose(context: Context, source, shareUri: str = None, uri=shareUri, reject_purpose=rejectPurpose, ) + + +def update_filters_table_share_item(context: Context, source, input): + RequestValidator.validate_update_share_item_filters(input) + return ShareItemService.update_filters_table_share_item(uri=input.get('shareItemUri'), data=input) + + +def remove_filters_table_share_item(context: Context, source, attachedDataFilterUri: str = None): + if not attachedDataFilterUri: + RequiredParameter('attachedDataFilterUri') + return ShareItemService.remove_share_item_data_filters(uri=attachedDataFilterUri) + + +def get_share_item_data_filters(context: Context, source, attachedDataFilterUri: str = None): + if not attachedDataFilterUri: + RequiredParameter('attachedDataFilterUri') + return ShareItemService.get_share_item_data_filters(uri=attachedDataFilterUri) diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 7e96c534c..6f2fba524 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -31,9 +31,22 @@ gql.Field('healthStatus', ShareItemHealthStatus.toGraphQLEnum()), gql.Field('healthMessage', gql.String), gql.Field('lastVerificationTime', gql.String), + gql.Field('attachedDataFilterUri', gql.String), ], ) +ShareObjectItemDataFilter = gql.ObjectType( + name='ShareObjectItemDataFilter', + fields=[ + gql.Field(name='attachedDataFilterUri', type=gql.String), + gql.Field(name='label', type=gql.String), + gql.Field(name='dataFilterUris', type=gql.ArrayType(gql.String)), + gql.Field(name='dataFilterNames', type=gql.ArrayType(gql.String)), + gql.Field(name='itemUri', type=gql.String), + ], +) + + NotSharedItem = gql.ObjectType( name='NotSharedItem', fields=[ diff --git a/backend/dataall/modules/shares_base/db/share_object_item_repositories.py b/backend/dataall/modules/shares_base/db/share_object_item_repositories.py new file mode 100644 index 000000000..a35e82f1a --- /dev/null +++ b/backend/dataall/modules/shares_base/db/share_object_item_repositories.py @@ -0,0 +1,77 @@ +import logging + +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObjectItemDataFilter +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.base.db import exceptions + +logger = logging.getLogger(__name__) + + +class ShareObjectItemRepository: + @staticmethod + def get_share_item_filter_by_uri(session, attached_filter_uri): + item_data_filter: ShareObjectItemDataFilter = session.query(ShareObjectItemDataFilter).get(attached_filter_uri) + if not item_data_filter: + raise exceptions.ObjectNotFound('ShareObjectItemDataFilter', attached_filter_uri) + return item_data_filter + + @staticmethod + def count_all_share_item_filters_with_data_filter_uri(session, filter_uri): + return ( + session.query(ShareObjectItemDataFilter) + .filter( + ShareObjectItemDataFilter.dataFilterUris.contains(f'{{{filter_uri}}}'), + ) + .count() + ) + + @staticmethod + def get_share_item_by_item_filter_uri(session, uri): + return session.query(ShareObjectItem).filter(ShareObjectItem.attachedDataFilterUri == uri).first() + + @staticmethod + def delete_share_item_filter(session, share_item_filter) -> None: + session.delete(share_item_filter) + + @staticmethod + def update_share_item_filter( + session, + share_item_filter: ShareObjectItemDataFilter, + data: dict, + ) -> ShareObjectItemDataFilter: + share_item_filter.label = data.get('label') + share_item_filter.dataFilterUris = data.get('filterUris') + share_item_filter.dataFilterNames = data.get('filterNames') + session.commit() + return share_item_filter + + @staticmethod + def create_share_item_filter( + session, + share_item: ShareObjectItem, + data: dict, + ) -> ShareObjectItemDataFilter: + share_item_data_filter = ShareObjectItemDataFilter( + label=data.get('label'), + itemUri=share_item.itemUri, + dataFilterUris=data.get('filterUris'), + dataFilterNames=data.get('filterNames'), + ) + session.add(share_item_data_filter) + session.commit() + return share_item_data_filter + + @staticmethod + def delete_all_share_item_filters(session, item_uri): + session.query(ShareObjectItemDataFilter).filter(ShareObjectItemDataFilter.itemUri == item_uri).delete() + + @staticmethod + def delete_share_item_filters_with_data_filter_uri(session, filter_uri): + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + return ( + session.query(ShareObjectItemDataFilter) + .filter( + ShareObjectItemDataFilter.dataFilterUris.contains(f'{{{filter_uri}}}'), + ) + .delete() + ) diff --git a/backend/dataall/modules/shares_base/db/share_object_models.py b/backend/dataall/modules/shares_base/db/share_object_models.py index b5759719f..701fdc0fb 100644 --- a/backend/dataall/modules/shares_base/db/share_object_models.py +++ b/backend/dataall/modules/shares_base/db/share_object_models.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from uuid import uuid4 -from sqlalchemy import Boolean, Column, String, DateTime +from sqlalchemy import Boolean, Column, String, DateTime, ForeignKey, Index +from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import query_expression from dataall.base.db import Base, utils @@ -57,3 +58,17 @@ class ShareObjectItem(Base): healthStatus = Column(String, nullable=True) healthMessage = Column(String, nullable=True) lastVerificationTime = Column(DateTime, nullable=True) + attachedDataFilterUri = Column( + String, ForeignKey('share_object_item_data_filter.attachedDataFilterUri'), nullable=True + ) + + +class ShareObjectItemDataFilter(Base): + __tablename__ = 'share_object_item_data_filter' + attachedDataFilterUri = Column(String, primary_key=True, default=utils.uuid('shareitemdatafilter')) + label = Column(String, nullable=False) + dataFilterUris = Column(ARRAY(String), nullable=False) + dataFilterNames = Column(ARRAY(String), nullable=False) + itemUri = Column(String, nullable=False) + + __table_args__ = (Index('ix_itemUri_label', 'itemUri', 'label', unique=True),) diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index 09a1ada4b..8ce765bfc 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -340,6 +340,7 @@ def list_shareable_items_of_type(session, share, type, share_type_model, share_t ShareObjectItem.healthStatus.label('healthStatus'), ShareObjectItem.healthMessage.label('healthMessage'), ShareObjectItem.lastVerificationTime.label('lastVerificationTime'), + ShareObjectItem.attachedDataFilterUri.label('attachedDataFilterUri'), case( [(ShareObjectItem.shareItemUri.isnot(None), True)], else_=False, diff --git a/backend/dataall/modules/shares_base/services/share_item_service.py b/backend/dataall/modules/shares_base/services/share_item_service.py index 7237e4f4d..f75b90525 100644 --- a/backend/dataall/modules/shares_base/services/share_item_service.py +++ b/backend/dataall/modules/shares_base/services/share_item_service.py @@ -4,20 +4,23 @@ from dataall.core.tasks.service_handlers import Worker from dataall.base.context import get_context from dataall.core.tasks.db.task_models import Task -from dataall.base.db.exceptions import ObjectNotFound, UnauthorizedOperation +from dataall.base.db.exceptions import ObjectNotFound, UnauthorizedOperation, InvalidInput from dataall.modules.shares_base.services.shares_enums import ( ShareObjectActions, ShareItemStatus, ShareItemActions, ShareItemHealthStatus, + ShareableType, ) from dataall.modules.shares_base.db.share_object_models import ShareObjectItem from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.db.share_object_state_machines import ( ShareObjectSM, ShareItemSM, ) +from sqlalchemy import exc from dataall.modules.shares_base.services.share_exceptions import ShareItemsFound from dataall.modules.shares_base.services.share_notification_service import ShareNotificationService from dataall.modules.shares_base.services.share_permissions import ( @@ -37,8 +40,12 @@ class ShareItemService: @staticmethod def _get_share_uri(session, uri): share_item = ShareObjectRepository.get_share_item_by_uri(session, uri) - share = ShareObjectRepository.get_share_by_uri(session, share_item.shareUri) - return share.shareUri + return share_item.shareUri + + @staticmethod + def _get_share_uri_from_item_filter_uri(session, uri): + share_item = ShareObjectItemRepository.get_share_item_by_item_filter_uri(session, uri) + return share_item.shareUri @staticmethod @ResourcePolicyService.has_resource_permission(GET_SHARE_OBJECT) @@ -162,6 +169,11 @@ def remove_shared_item(uri: str): item_sm = ShareItemSM(share_item.status) item_sm.run_transition(ShareItemActions.RemoveItem.value) ShareObjectRepository.remove_share_object_item(session, share_item) + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + session, share_item.attachedDataFilterUri + ) + ShareObjectItemRepository.delete_share_item_filter(session, share_item_filter) return True @staticmethod @@ -204,3 +216,53 @@ def list_shareable_objects(share, filter, is_revokable=False): def paginated_shared_with_environment_datasets(session, uri, data) -> dict: share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() return ShareObjectRepository.paginate_shared_datasets(session, uri, data, share_item_shared_states) + + @staticmethod + @ResourcePolicyService.has_resource_permission(APPROVE_SHARE_OBJECT, parent_resource=_get_share_uri) + def update_filters_table_share_item(uri: str, data: dict): + context = get_context() + with context.db_engine.scoped_session() as session: + if share_item := ShareObjectRepository.get_share_item_by_uri(session, uri): + if share_item.itemType != ShareableType.Table.value: + raise Exception(f'Share item is not type {ShareableType.Table.value} - required for data filters') + + if share_item.status in ShareStatusRepository.get_share_item_shared_states(): + raise Exception(f'Share item already shared in state {share_item.status} - can not assign filters') + try: + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + session, share_item.attachedDataFilterUri + ) + ShareObjectItemRepository.update_share_item_filter(session, share_item_filter, data) + return True + + share_item_filter = ShareObjectItemRepository.create_share_item_filter(session, share_item, data) + share_item.attachedDataFilterUri = share_item_filter.attachedDataFilterUri + return True + except exc.IntegrityError: + raise InvalidInput( + 'label', + data.get('label'), + f'same label already exists on another share item for table {share_item.itemName}', + ) + raise ObjectNotFound('ShareObjectItem', uri) + + @staticmethod + def get_share_item_data_filters(uri: str): + with get_context().db_engine.scoped_session() as session: + return ShareObjectItemRepository.get_share_item_filter_by_uri(session, uri) + + @staticmethod + @ResourcePolicyService.has_resource_permission( + APPROVE_SHARE_OBJECT, parent_resource=_get_share_uri_from_item_filter_uri + ) + def remove_share_item_data_filters(uri: str): + with get_context().db_engine.scoped_session() as session: + share_item = ShareObjectItemRepository.get_share_item_by_item_filter_uri(session, uri) + if share_item.status in ShareStatusRepository.get_share_item_shared_states(): + raise Exception( + f'Share item in shared state {share_item.status} - can not remove filters, must revoke first...' + ) + share_item.attachedDataFilterUri = None + item_data_filter = ShareObjectItemRepository.get_share_item_filter_by_uri(session, uri) + return ShareObjectItemRepository.delete_share_item_filter(session, item_data_filter) diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index 9d880480b..a4188305f 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -219,14 +219,14 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: share_uri, old_status=ShareItemStatus.Revoke_Approved.value, new_status=ShareItemStatus.Revoke_Failed.value, - share_item_type=processor.type.value, + share_item_type=processor.type, ) ShareStatusRepository.update_share_item_status_batch( session, share_uri, old_status=ShareItemStatus.Revoke_In_Progress.value, new_status=ShareItemStatus.Revoke_Failed.value, - share_item_type=processor.type.value, + share_item_type=processor.type, ) revoke_successful = False @@ -356,7 +356,7 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: ShareItemHealthStatus.PendingReApply.value, ) success = processor.Processor( - session, share_data, shareable_items + session, share_data, shareable_items, True ).process_approved_shares() log.info(f'Reapplying {type.value} succeeded = {success}') if not success: diff --git a/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py new file mode 100644 index 000000000..415cc40bb --- /dev/null +++ b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py @@ -0,0 +1,151 @@ +"""add_data_filters_table + +Revision ID: 9efe5f7c69a1 +Revises: b2ca24b72ca4 +Create Date: 2024-07-17 11:05:26.077658 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy import Column, String, DateTime, Enum, ForeignKey, orm +from sqlalchemy.dialects import postgresql +from dataall.base.db import Resource, utils +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_DATA_FILTERS, DATASET_TABLE_READ +from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes +from sqlalchemy.ext.declarative import declarative_base + +# revision identifiers, used by Alembic. +revision = '9efe5f7c69a1' +down_revision = 'b2ca24b72ca4' +branch_labels = None +depends_on = None + +Base = declarative_base() + + +class DatasetBase(Resource, Base): + __tablename__ = 'dataset' + environmentUri = Column(String, ForeignKey('environment.environmentUri'), nullable=False) + organizationUri = Column(String, nullable=False) + datasetUri = Column(String, primary_key=True, default=utils.uuid('dataset')) + stewards = Column(String, nullable=True) + SamlAdminGroupName = Column(String, nullable=True) + datasetType = Column(Enum(DatasetTypes), nullable=False, default=DatasetTypes.S3) + + __mapper_args__ = {'polymorphic_identity': 'dataset', 'polymorphic_on': datasetType} + + +class S3Dataset(DatasetBase): + __tablename__ = 's3_dataset' + datasetUri = Column(String, ForeignKey('dataset.datasetUri'), primary_key=True) + __mapper_args__ = { + 'polymorphic_identity': DatasetTypes.S3, + } + + +class DatasetTable(Resource, Base): + __tablename__ = 'dataset_table' + datasetUri = Column(String, nullable=False) + tableUri = Column(String, primary_key=True, default=utils.uuid('table')) + + +def upgrade(): + op.create_table( + 'data_filter', + sa.Column('label', sa.String(), nullable=False), + sa.Column('name', sa.String(), nullable=False), + sa.Column('owner', sa.String(), nullable=False), + sa.Column('created', sa.DateTime(), nullable=True), + sa.Column('updated', sa.DateTime(), nullable=True), + sa.Column('deleted', sa.DateTime(), nullable=True), + sa.Column('description', sa.String(), nullable=True), + sa.Column('tags', postgresql.ARRAY(sa.String()), nullable=True), + sa.Column('filterUri', sa.String(), nullable=False), + sa.Column('tableUri', sa.String(), nullable=False), + sa.Column('filterType', sa.String(), nullable=False), + sa.Column('includedCols', postgresql.ARRAY(sa.String()), nullable=True), + sa.Column('rowExpression', sa.String(), nullable=True), + sa.ForeignKeyConstraint(['tableUri'], ['dataset_table.tableUri'], name='data_filter_tableUri_fkey'), + sa.PrimaryKeyConstraint('filterUri'), + ) + + op.create_table( + 'share_object_item_data_filter', + sa.Column('attachedDataFilterUri', sa.String(), nullable=False), + sa.Column('label', sa.String(), nullable=False), + sa.Column('itemUri', sa.String(), nullable=False), + sa.Column('dataFilterUris', postgresql.ARRAY(sa.String()), nullable=False), + sa.Column('dataFilterNames', postgresql.ARRAY(sa.String()), nullable=False), + sa.PrimaryKeyConstraint('attachedDataFilterUri'), + sa.Index('ix_itemUri_label', 'itemUri', 'label', unique=True), + ) + + op.add_column('share_object_item', sa.Column('attachedDataFilterUri', sa.String(), nullable=True)) + op.create_foreign_key( + 'share_object_item_attachedDataFilterUri_fkey', + 'share_object_item', + 'share_object_item_data_filter', + ['attachedDataFilterUri'], + ['attachedDataFilterUri'], + ) + + bind = op.get_bind() + session = orm.Session(bind=bind) + print('Adding DATASET_TABLE_DATA_FILTERS permissions for all s3 dataset tables...') + s3_datasets: [S3Dataset] = session.query(S3Dataset).all() + for dataset in s3_datasets: + dataset_tables = session.query(DatasetTable).filter(DatasetTable.datasetUri == dataset.datasetUri).all() + for table in dataset_tables: + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + resource_uri=table.tableUri, + permissions=DATASET_TABLE_DATA_FILTERS, + resource_type=DatasetTable.__name__, + ) + if dataset.stewards is not None and dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=table.tableUri, + permissions=DATASET_TABLE_DATA_FILTERS, + resource_type=DatasetTable.__name__, + ) + # ### end Alembic commands ### + + +def downgrade(): + op.drop_constraint('share_object_item_attachedDataFilterUri_fkey', 'share_object_item', type_='foreignkey') + op.drop_column('share_object_item', 'attachedDataFilterUri') + op.drop_index('ix_itemUri_label', table_name='share_object_item_data_filter') + op.drop_table('share_object_item_data_filter') + op.drop_table('data_filter') + + bind = op.get_bind() + session = orm.Session(bind=bind) + print('Removing DATASET_TABLE_DATA_FILTERS permissions for all s3 dataset tables...') + s3_datasets: [S3Dataset] = session.query(S3Dataset).all() + for dataset in s3_datasets: + dataset_tables = session.query(DatasetTable).filter(DatasetTable.datasetUri == dataset.datasetUri).all() + for table in dataset_tables: + ResourcePolicyService.update_resource_policy( + session=session, + resource_uri=table.tableUri, + resource_type=DatasetTable.__name__, + old_group=dataset.SamlAdminGroupName, + new_group=dataset.SamlAdminGroupName, + new_permissions=DATASET_TABLE_READ, + ) + if dataset.stewards is not None and dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.update_resource_policy( + session=session, + resource_uri=table.tableUri, + resource_type=DatasetTable.__name__, + old_group=dataset.stewards, + new_group=dataset.stewards, + new_permissions=DATASET_TABLE_READ, + ) + + # ### end Alembic commands ### diff --git a/frontend/src/modules/Shared/Shares/ShareEditForm.js b/frontend/src/modules/Shared/Shares/ShareEditForm.js index 9798f1ade..a7d7bd6da 100644 --- a/frontend/src/modules/Shared/Shares/ShareEditForm.js +++ b/frontend/src/modules/Shared/Shares/ShareEditForm.js @@ -1,4 +1,5 @@ import { + Alert, Box, Button, CardContent, @@ -403,6 +404,15 @@ export const ShareEditForm = (props) => { {getExplanation(shareStatus)} + + {sharedItems.nodes.find((item) => item.itemType === 'S3Bucket') && ( + + Sharing S3Bucket gives Requestor read access to{' '} + the entire S3 Bucket superseding Folder shares and + providing potential workarounds for Table access + + )} + diff --git a/frontend/src/modules/Shares/components/ShareItemFilterModal.js b/frontend/src/modules/Shares/components/ShareItemFilterModal.js new file mode 100644 index 000000000..1c35e5dfb --- /dev/null +++ b/frontend/src/modules/Shares/components/ShareItemFilterModal.js @@ -0,0 +1,399 @@ +import { LoadingButton } from '@mui/lab'; +import { + Box, + CardContent, + Dialog, + FormHelperText, + Typography, + TextField, + Link +} from '@mui/material'; +import { Formik } from 'formik'; +import * as Yup from 'yup'; +import { DataGrid } from '@mui/x-data-grid'; +import { Link as RouterLink } from 'react-router-dom'; +import { useSnackbar } from 'notistack'; +import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Defaults } from 'design'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import CircularProgress from '@mui/material/CircularProgress'; +import { listTableDataFilters, useClient } from 'services'; +import { + removeShareItemFilter, + updateShareItemFilters, + listTableDataFiltersByAttached +} from '../services'; + +export const ShareItemFilterModal = (props) => { + const { + item, + shareUri, + itemDataFilter, + onApply, + onClose, + reloadItems, + open, + viewOnly, + ...other + } = props; + const { enqueueSnackbar } = useSnackbar(); + const dispatch = useDispatch(); + const client = useClient(); + const [pageSize, setPageSize] = useState(5); + const [selectionModel, setSelectionModel] = useState([]); + const [selectionModelNames, setSelectionModelNames] = useState([]); + + const columns = [ + { field: 'id', hide: true }, + { + field: 'label', + headerName: 'Filter Name', + flex: 1, + editable: false + }, + { + field: 'description', + headerName: 'Description', + flex: 1, + editable: false + }, + { + field: 'filterType', + headerName: 'Filter Type', + flex: 0.5, + editable: false + }, + { + field: 'includedCols', + headerName: 'Included Columns', + flex: 2, + editable: false + }, + { + field: 'rowExpression', + headerName: 'Row Expression', + flex: 2, + editable: false + } + ]; + + const [loading, setLoading] = useState(false); + const [isRemoving, setRemoving] = useState(false); + + const [filters, setFilters] = useState([]); + + const fetchFilters = useCallback(async () => { + try { + setLoading(true); + let response; + if (viewOnly) { + response = await client.query( + listTableDataFiltersByAttached({ + attachedDataFilterUri: + itemDataFilter?.attachedDataFilterUri || null, + filter: Defaults.selectListFilter + }) + ); + } else { + response = await client.query( + listTableDataFilters({ + tableUri: item.itemUri, + filter: Defaults.selectListFilter + }) + ); + } + if (!response.errors) { + if (viewOnly) { + setFilters(response.data.listTableDataFiltersByAttached.nodes); + } else { + setFilters(response.data.listTableDataFilters.nodes); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } finally { + setLoading(false); + } + }, [client, dispatch, item.shareItemUri]); + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + const response = await client.mutate( + updateShareItemFilters({ + shareItemUri: item.shareItemUri, + label: values.label, + filterUris: selectionModel, + filterNames: selectionModelNames + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Filters added', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + if (reloadItems) { + reloadItems(); + } + if (onApply) { + onApply(); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (err) { + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + const remove = async (attachedDataFilterUri) => { + setRemoving(true); + const response = await client.mutate( + removeShareItemFilter({ attachedDataFilterUri: attachedDataFilterUri }) + ); + if (!response.errors) { + enqueueSnackbar('Removed data filters from table item', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + if (reloadItems) { + reloadItems(); + } + if (onApply) { + onApply(); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setRemoving(false); + }; + + useEffect(() => { + if (client) { + if (itemDataFilter) { + setSelectionModel(itemDataFilter.dataFilterUris); + setSelectionModelNames(itemDataFilter.dataFilterNames); + } + fetchFilters().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch, fetchFilters]); + + if (!item) { + return null; + } + + if (viewOnly) { + return ( + + + + Data filters assigned to {item.itemName} + + {loading ? ( + + ) : ( + + itemDataFilter.dataFilterUris.includes(f.filterUri) + )} + getRowId={(filter) => filter.filterUri} + columns={columns} + pageSize={pageSize} + rowsPerPageOptions={[5, 10, 20]} + onPageSizeChange={(newPageSize) => setPageSize(newPageSize)} + loading={loading} + /> + )} + + + ); + } + + return ( + + + + Assign data filters to {item.itemName} + + + Data filters allow data.all share approvers to restrict data access by + column and/or row level access. NOTE: Adding more than 1 filter will + be the intersection of all filters (logical AND operator) + + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ {loading ? ( + + ) : ( + <> + + + + + Create New Data Filters + + + filter.filterUri} + columns={columns} + pageSize={pageSize} + rowsPerPageOptions={[5, 10, 20]} + onPageSizeChange={(newPageSize) => + setPageSize(newPageSize) + } + checkboxSelection + onSelectionModelChange={(newSelection) => { + setSelectionModel(newSelection); + setSelectionModelNames( + newSelection.map((uri) => { + const filter = filters.find( + (filter) => filter.filterUri === uri + ); + return filter.label; + }) + ); + }} + selectionModel={selectionModel} + loading={loading} + /> + + {errors.submit && ( + + {errors.submit} + + )} + + + + Assign Filters + + remove(item.attachedDataFilterUri)} + type="button" + variant="outlined" + > + Remove Filter(s) + + + + + )} + + )} +
+
+
+
+ ); +}; + +ShareItemFilterModal.propTypes = { + item: PropTypes.object.isRequired, + shareUri: PropTypes.string, + itemDataFilter: PropTypes.object, + onApply: PropTypes.func, + onClose: PropTypes.func, + reloadItems: PropTypes.func, + open: PropTypes.bool.isRequired, + viewOnly: PropTypes.bool +}; diff --git a/frontend/src/modules/Shares/components/index.js b/frontend/src/modules/Shares/components/index.js index 7c4f98d5d..405f30825 100644 --- a/frontend/src/modules/Shares/components/index.js +++ b/frontend/src/modules/Shares/components/index.js @@ -8,3 +8,4 @@ export * from './ShareUpdateRequest'; export * from './ShareItemsSelectorModal'; export * from './ShareObjectSelectorModal'; export * from './NavigateShareViewModal'; +export * from './ShareItemFilterModal'; diff --git a/frontend/src/modules/Shares/services/getShareItemDataFilters.js b/frontend/src/modules/Shares/services/getShareItemDataFilters.js new file mode 100644 index 000000000..d9c3d7d68 --- /dev/null +++ b/frontend/src/modules/Shares/services/getShareItemDataFilters.js @@ -0,0 +1,18 @@ +import { gql } from 'apollo-boost'; + +export const getShareItemDataFilters = ({ attachedDataFilterUri }) => ({ + variables: { + attachedDataFilterUri + }, + query: gql` + query getShareItemDataFilters($attachedDataFilterUri: String!) { + getShareItemDataFilters(attachedDataFilterUri: $attachedDataFilterUri) { + attachedDataFilterUri + label + dataFilterUris + dataFilterNames + itemUri + } + } + ` +}); diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index eefc2472d..dec6ea662 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -45,6 +45,7 @@ export const getShareObject = ({ shareUri, filter }) => ({ healthStatus healthMessage lastVerificationTime + attachedDataFilterUri } } dataset { diff --git a/frontend/src/modules/Shares/services/index.js b/frontend/src/modules/Shares/services/index.js index da37d2b7c..60063c20c 100644 --- a/frontend/src/modules/Shares/services/index.js +++ b/frontend/src/modules/Shares/services/index.js @@ -14,3 +14,7 @@ export * from './updateShareRequestReason'; export * from './verifyItemsShareObject'; export * from './reApplyItemsShareObject'; export * from './verifyDatasetShareObjects'; +export * from './updateShareItemFilters'; +export * from './getShareItemDataFilters'; +export * from './removeShareItemFilter'; +export * from './listTableDataFiltersByAttached'; diff --git a/frontend/src/modules/Shares/services/listTableDataFiltersByAttached.js b/frontend/src/modules/Shares/services/listTableDataFiltersByAttached.js new file mode 100644 index 000000000..5cffef6f0 --- /dev/null +++ b/frontend/src/modules/Shares/services/listTableDataFiltersByAttached.js @@ -0,0 +1,36 @@ +import { gql } from 'apollo-boost'; + +export const listTableDataFiltersByAttached = ({ + attachedDataFilterUri, + filter +}) => ({ + variables: { + attachedDataFilterUri, + filter + }, + query: gql` + query listTableDataFiltersByAttached( + $attachedDataFilterUri: String + $filter: DatasetTableFilter + ) { + listTableDataFiltersByAttached( + attachedDataFilterUri: $attachedDataFilterUri + filter: $filter + ) { + count + page + pages + hasNext + hasPrevious + nodes { + filterUri + label + description + filterType + includedCols + rowExpression + } + } + } + ` +}); diff --git a/frontend/src/modules/Shares/services/removeShareItemFilter.js b/frontend/src/modules/Shares/services/removeShareItemFilter.js new file mode 100644 index 000000000..507b0e57e --- /dev/null +++ b/frontend/src/modules/Shares/services/removeShareItemFilter.js @@ -0,0 +1,14 @@ +import { gql } from 'apollo-boost'; + +export const removeShareItemFilter = ({ attachedDataFilterUri }) => { + return { + variables: { + attachedDataFilterUri + }, + mutation: gql` + mutation removeShareItemFilter($attachedDataFilterUri: String!) { + removeShareItemFilter(attachedDataFilterUri: $attachedDataFilterUri) + } + ` + }; +}; diff --git a/frontend/src/modules/Shares/services/updateShareItemFilters.js b/frontend/src/modules/Shares/services/updateShareItemFilters.js new file mode 100644 index 000000000..8870f45c1 --- /dev/null +++ b/frontend/src/modules/Shares/services/updateShareItemFilters.js @@ -0,0 +1,16 @@ +import { gql } from 'apollo-boost'; + +export const updateShareItemFilters = (input) => { + return { + variables: { + input + }, + mutation: gql` + mutation updateShareItemFilters( + $input: ModifyFiltersTableShareItemInput! + ) { + updateShareItemFilters(input: $input) + } + ` + }; +}; diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 051df5de2..1ed59f1f4 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -5,6 +5,7 @@ import { DeleteOutlined, RefreshRounded } from '@mui/icons-material'; +import OpenInNewIcon from '@mui/icons-material/OpenInNew'; import SecurityIcon from '@mui/icons-material/Security'; import { LoadingButton } from '@mui/lab'; import { @@ -29,9 +30,10 @@ import { Typography } from '@mui/material'; import CircularProgress from '@mui/material/CircularProgress'; +import FilterAltIcon from '@mui/icons-material/FilterAlt'; import { useSnackbar } from 'notistack'; import * as PropTypes from 'prop-types'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState, useRef } from 'react'; import { Helmet } from 'react-helmet-async'; import { useNavigate } from 'react-router'; import { Link as RouterLink, useParams } from 'react-router-dom'; @@ -57,7 +59,8 @@ import { submitApproval, revokeItemsShareObject, verifyItemsShareObject, - reApplyItemsShareObject + reApplyItemsShareObject, + getShareItemDataFilters } from '../services'; import { AddShareItemModal, @@ -65,7 +68,8 @@ import { ShareItemsSelectorModal, ShareRejectModal, UpdateRejectReason, - UpdateRequestReason + UpdateRequestReason, + ShareItemFilterModal } from '../components'; import { generateShareItemLabel } from 'utils'; import { ShareLogs } from '../components/ShareLogs'; @@ -88,6 +92,7 @@ function ShareViewHeader(props) { const [submitting, setSubmitting] = useState(false); const [isRejectShareModalOpen, setIsRejectShareModalOpen] = useState(false); const [openLogsModal, setOpenLogsModal] = useState(null); + const anchorRef = useRef(null); const [isSubmitShareModalOpen, setIsSubmitShareModalOpen] = useState(false); @@ -293,6 +298,7 @@ function ShareViewHeader(props) { startIcon={} sx={{ m: 1 }} onClick={accept} + ref={anchorRef} type="button" variant="outlined" > @@ -415,6 +421,7 @@ ShareViewHeader.propTypes = { export function SharedItem(props) { const { item, + share, client, dispatch, enqueueSnackbar, @@ -422,6 +429,54 @@ export function SharedItem(props) { fetchItem } = props; const [isRemovingItem, setIsRemovingItem] = useState(false); + const [isFilterModalOpenUri, setIsFilterModalOpenUri] = useState(0); + const [isLoadingFilters, setIsLoadingFilters] = useState(false); + const [itemDataFilter, setItemDataFilter] = useState(null); + const [isAssignedFilterModalOpen, setIsAssignedFilterModalOpen] = + useState(''); + + const getItemDataFilters = async (attachedDataFilterUri) => { + setIsLoadingFilters(true); + try { + const response = await client.query( + getShareItemDataFilters({ + attachedDataFilterUri: attachedDataFilterUri + }) + ); + if (!response.errors) { + if (response.data && response.data.getShareItemDataFilters) { + setItemDataFilter(response.data.getShareItemDataFilters); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } finally { + setIsLoadingFilters(false); + } + }; + + useEffect(() => { + if (client && item.itemType === 'Table' && item.attachedDataFilterUri) { + getItemDataFilters(item.attachedDataFilterUri); + } + }, [client, item, dispatch]); + + const handleFilterModalClose = () => { + setIsFilterModalOpenUri(0); + }; + + const handleFilterModalOpen = (uri) => { + setIsFilterModalOpenUri(uri); + }; + + const handleAssignedFilterModalOpen = (label) => { + setIsAssignedFilterModalOpen(label); + }; + const handleAssignedFilterModalClose = () => { + setIsAssignedFilterModalOpen(''); + }; const removeItemFromShareObject = async () => { setIsRemovingItem(true); @@ -451,6 +506,40 @@ export function SharedItem(props) { + + {isLoadingFilters ? ( + + ) : ( + <> + {itemDataFilter && + itemDataFilter?.dataFilterNames && + itemDataFilter?.dataFilterNames.length > 0 && ( + + )} + {isAssignedFilterModalOpen === itemDataFilter?.label && ( + handleAssignedFilterModalClose()} + onClose={() => handleAssignedFilterModalClose()} + open={isAssignedFilterModalOpen === itemDataFilter?.label} + viewOnly={true} + /> + )} + + )} + {isRemovingItem ? ( @@ -479,6 +568,34 @@ export function SharedItem(props) { Delete )} + {/* If item status is PENDINGAPPROVAL and is of type table then have a button the is 'Assign Filters' */} + {item.status === 'PendingApproval' && + item.itemType === 'Table' && + (share.userRoleForShareObject === 'Approvers' || + share.userRoleForShareObject === 'ApproversAndRequesters') && ( + + )} + {isFilterModalOpenUri === item.shareItemUri && ( + handleFilterModalClose()} + onClose={() => handleFilterModalClose()} + reloadItems={fetchShareItems} + open={isFilterModalOpenUri === item.shareItemUri} + /> + )} )} @@ -506,6 +623,7 @@ export function SharedItem(props) { SharedItem.propTypes = { item: PropTypes.any, + share: PropTypes.any, client: PropTypes.any, dispatch: PropTypes.any, enqueueSnackbar: PropTypes.any, @@ -1082,6 +1200,7 @@ const ShareView = () => { Type Name Status + Data Filters Action Health Status Health Message @@ -1096,6 +1215,7 @@ const ShareView = () => { ', + label: '> (greater than)', + acceptsArgument: true, + dTypesSupported: numericDataTypes + }, + { + value: '<', + label: '< (less than)', + acceptsArgument: true, + dTypesSupported: numericDataTypes + }, + { + value: '>=', + label: '>= (greater than or equal)', + acceptsArgument: true, + dTypesSupported: numericDataTypes + }, + { + value: '<=', + label: '<= (less than or equal)', + acceptsArgument: true, + dTypesSupported: numericDataTypes + }, + { + value: '!=', + label: '!= (not equal)', + acceptsArgument: true + }, + { + value: 'IN', + label: 'IN', + acceptsArgument: true, + dTypesSupported: [ + ...numericDataTypes, + ...stringLikeDataTypes, + ...compositeDataTypes + ] + }, + { + value: 'NOT IN', + label: 'NOT IN', + acceptsArgument: true, + dTypesSupported: [ + ...numericDataTypes, + ...stringLikeDataTypes, + ...compositeDataTypes + ] + }, + { + value: 'LIKE', + label: 'LIKE', + acceptsArgument: true, + dTypesSupported: [...stringLikeDataTypes, ...compositeDataTypes] + }, + { + value: 'NOT LIKE', + label: 'NOT LIKE', + acceptsArgument: true, + dTypesSupported: [...stringLikeDataTypes, ...compositeDataTypes] + }, + { + value: 'IS NULL', + label: 'IS NULL', + acceptsArgument: false + }, + { + value: 'IS NOT NULL', + label: 'IS NOT NULL', + acceptsArgument: false + } +]; + +function EditToolbar(props) { + const { setRowExpressionRows, setRowModesModel } = props; + + const handleClick = () => { + const id = Date.now(); + setRowExpressionRows((oldRows) => [ + ...oldRows, + { id, columnName: '', operator: '', userValue: '', isNew: true } + ]); + setRowModesModel((oldModel) => ({ + ...oldModel, + [id]: { mode: GridRowModes.Edit, fieldToFocus: 'columnName' } + })); + }; + + return ( + + + + ); +} + +export const TableDataFilterAddForm = (props) => { + const { table, onClose, open, reload, ...other } = props; + const { enqueueSnackbar } = useSnackbar(); + const dispatch = useDispatch(); + const client = useClient(); + const [columns, setColumns] = useState([]); + const [loadingColumns, setLoadingColumns] = useState(false); + const [pageSize, setPageSize] = useState(5); + + const [rowExpressionRows, setRowExpressionRows] = useState([]); + const [rowModesModel, setRowModesModel] = useState({}); + const [rowExpressionColumns, setRowExpressionColumns] = useState([]); + + const handleRowEditStop = (params, event) => { + event.defaultMuiPrevented = true; + }; + + const handleEditClick = (id) => () => { + setRowModesModel({ ...rowModesModel, [id]: { mode: GridRowModes.Edit } }); + }; + + const handleSaveClick = (id) => () => { + setRowModesModel({ ...rowModesModel, [id]: { mode: GridRowModes.View } }); + }; + + const handleDeleteClick = (id) => () => { + setRowExpressionRows(rowExpressionRows.filter((row) => row.id !== id)); + }; + + const handleCancelClick = (id) => () => { + setRowModesModel({ + ...rowModesModel, + [id]: { mode: GridRowModes.View, ignoreModifications: true } + }); + + const editedRow = rowExpressionRows.find((row) => row.id === id); + if (editedRow.isNew) { + setRowExpressionRows(rowExpressionRows.filter((row) => row.id !== id)); + } + }; + + const processRowUpdate = (newRow) => { + const updatedRow = { ...newRow, isNew: false }; + setRowExpressionRows( + rowExpressionRows.map((row) => (row.id === newRow.id ? updatedRow : row)) + ); + return updatedRow; + }; + + const handleRowModesModelChange = (newRowModesModel) => { + setRowModesModel(newRowModesModel); + }; + + const fetchColumns = useCallback(async () => { + setLoadingColumns(true); + const response = await client.query( + listDatasetTableColumns({ + tableUri: table.tableUri, + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setColumns( + response.data.listDatasetTableColumns.nodes.map((c) => ({ + id: c.columnUri, + columnType: c.columnType, + name: + c.columnType && c.columnType !== 'column' + ? `${c.name} (${c.columnType})` + : c.name, + type: c.typeName, + description: c.description + })) + ); + setRowExpressionColumns( + response.data.listDatasetTableColumns.nodes + .filter((c) => c.columnType === 'column') + .map((c) => c.name) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoadingColumns(false); + }, [client, dispatch, table]); + + useEffect(() => { + if (client) { + fetchColumns().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch, fetchColumns, table.tableUri]); + + const dataFilterOptions = ['COLUMN', 'ROW']; + + async function submit(values, setStatus, setSubmitting, setErrors) { + try { + let includedColumns; + let rowExpressionString; + if (values.filterType === 'COLUMN') { + includedColumns = columns + .filter((c) => values.includedCols.includes(c.id)) + .map((c) => c.name); + rowExpressionString = null; + } else if (values.filterType === 'ROW') { + includedColumns = null; + + rowExpressionString = rowExpressionRows + .map((row) => { + let usrVal; + if (!row.userValue) { + usrVal = ''; + } else { + usrVal = row.userValue; + } + return ( + '"' + row.columnName + '"' + ' ' + row.operator + ' ' + usrVal + ); + }) + .join(' AND '); + } + + const response = await client.mutate( + createTableDataFilter({ + tableUri: table.tableUri, + input: { + filterName: values.filterName, + description: values.description, + filterType: values.filterType, + includedCols: includedColumns, + rowExpression: rowExpressionString + } + }) + ); + if (!response.errors) { + setStatus({ success: true }); + setSubmitting(false); + enqueueSnackbar('Data filter created for table', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + if (reload) { + reload(); + } + if (onClose) { + onClose(); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (err) { + console.error(err); + setStatus({ success: false }); + setErrors({ submit: err.message }); + setSubmitting(false); + dispatch({ type: SET_ERROR, error: err.message }); + } + } + + if (!table) { + return null; + } + + const header = [ + { field: 'name', headerName: 'Name', width: 300, editable: false }, + { field: 'type', headerName: 'Type', width: 200, editable: false }, + { + field: 'description', + headerName: 'Description', + width: 600 + } + ]; + + return ( + + + + Add a new data filter for table {table.label} + + + Data filters allow you to restrict access to a table in data.all. They + are owned by the dataset owners and can be applied on data shares in + the data.all UI. Each data filter is specific to a particular table. + + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + + + + + + + Filter Type + { + setFieldValue( + 'filterType', + event.currentTarget.value + ); + if (value && value === 'ROW') { + setFieldValue('includedCols', []); + } else { + setRowExpressionRows([]); + } + }} + > + {dataFilterOptions.map((option) => ( + } + label={option} + /> + ))} + + + + + + {values.filterType === 'ROW' && ( + <> + {loadingColumns || !rowExpressionColumns ? ( + + ) : ( + <> + + + + { + const columnType = columns.find( + (col) => + col.name === params.row.columnName + )?.type; + if (!columnType) { + return []; + } + return rowFilterExpressions.filter( + (exp) => + exp.dTypesSupported === undefined || + exp.dTypesSupported.includes(columnType) + ); + } + }, + { + field: 'userValue', + headerName: 'Value', + flex: 1, + editable: true, + renderEditCell: (params) => { + const rowFilter = rowFilterExpressions.find( + (exp) => exp.value === params.row.operator + ); + if ( + rowFilter && + !rowFilter?.acceptsArgument + ) { + return null; + } + return ; + }, + renderCell: (params) => { + const rowFilter = rowFilterExpressions.find( + (exp) => exp.value === params.row.operator + ); + if ( + rowFilter && + !rowFilter?.acceptsArgument + ) { + return null; + } + return params.value; + } + }, + { + field: 'actions', + type: 'actions', + headerName: 'Actions', + flex: 0.5, + cellClassName: 'actions', + getActions: ({ id }) => { + const isInEditMode = + rowModesModel[id]?.mode === + GridRowModes.Edit; + if (isInEditMode) { + return [ + } + label="Save" + sx={{ + color: 'primary.main' + }} + onClick={handleSaveClick(id)} + />, + } + label="Cancel" + className="textPrimary" + onClick={handleCancelClick(id)} + color="inherit" + /> + ]; + } + return [ + } + label="Edit" + className="textPrimary" + onClick={handleEditClick(id)} + color="inherit" + />, + } + label="Delete" + onClick={handleDeleteClick(id)} + color="inherit" + /> + ]; + } + } + ]} + rowsPerPageOptions={[10]} + pageSize={10} + editMode="row" + rowModesModel={rowModesModel} + onRowModesModelChange={handleRowModesModelChange} + onRowEditStop={handleRowEditStop} + experimentalFeatures={{ newEditingApi: true }} + processRowUpdate={processRowUpdate} + onProcessRowUpdateError={(error) => + dispatch({ + type: SET_ERROR, + error: error.message + }) + } + components={{ + Toolbar: EditToolbar + }} + componentsProps={{ + toolbar: { + setRowExpressionRows, + setRowModesModel + } + }} + /> + + + )} + + )} + {values.filterType === 'COLUMN' && ( + <> + {loadingColumns ? ( + + ) : ( + <> + + + + {columns.length > 0 ? ( + + setPageSize(newPageSize) + } + checkboxSelection + onSelectionModelChange={(newSelection) => { + setFieldValue('includedCols', newSelection); + }} + selectionModel={values.includedCols} + loading={loadingColumns} + /> + ) : ( + + No columns found for this table + + )} + + + )} + + )} + + + + } + color="primary" + disabled={ + isSubmitting || + loadingColumns || + (!rowExpressionRows.length && + !values.includedCols.length) + } + type="submit" + variant="contained" + > + Add Data Filter + + + + + )} +
+
+
+
+ ); +}; + +TableDataFilterAddForm.propTypes = { + table: PropTypes.object.isRequired, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + reload: PropTypes.func +}; diff --git a/frontend/src/modules/Tables/components/TableFilters.js b/frontend/src/modules/Tables/components/TableFilters.js new file mode 100644 index 000000000..c484a038c --- /dev/null +++ b/frontend/src/modules/Tables/components/TableFilters.js @@ -0,0 +1,215 @@ +import { + Box, + Button, + Card, + CardHeader, + CircularProgress, + Divider, + Grid, + InputAdornment, + TextField +} from '@mui/material'; +import { + GroupAddOutlined, + SupervisedUserCircleRounded +} from '@mui/icons-material'; +import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; + +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { listTableDataFilters, useClient } from 'services'; +import { Defaults, RefreshTableMenu, Scrollbar, SearchIcon } from 'design'; + +import { TableDataFilterAddForm } from './TableDataFilterAddForm'; +import { TableFiltersDataGrid } from './TableFiltersDataGrid'; +import { deleteTableDataFilter } from '../services'; +import { useSnackbar } from 'notistack'; + +export const TableFilters = ({ table }) => { + const client = useClient(); + const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const [loading, setLoading] = useState(true); + const [items, setItems] = useState(Defaults.pagedResponse); + const [filter, setFilter] = useState(Defaults.filter); + const [inputValue, setInputValue] = useState(''); + const [isCreateFilterModalOpen, setIsCreateFilterModalOpen] = useState(false); + + const handleInputChange = (event) => { + setInputValue(event.target.value); + setFilter({ ...filter, term: event.target.value }); + }; + + const handlePageSizeChange = (pageSize) => { + setFilter({ ...filter, pageSize: pageSize }); + }; + + const handlePageChange = async (page) => { + page += 1; //expecting 1-indexing + if (page <= items.pages && page !== items.page) { + await setFilter({ ...filter, page: page }); + } + }; + + const handleInputKeyup = (event) => { + if (event.code === 'Enter') { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }; + const handleCreateFilterModalOpen = () => { + setIsCreateFilterModalOpen(true); + }; + + const handleCreateFilterModalClose = () => { + setIsCreateFilterModalOpen(false); + }; + + const deleteDataFilter = async (filterUri) => { + try { + const response = await client.mutate( + deleteTableDataFilter({ + filterUri: filterUri + }) + ); + if (!response.errors) { + enqueueSnackbar('Data filter removed from table', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + fetchItems(); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + + const fetchItems = useCallback(async () => { + try { + const response = await client.query( + listTableDataFilters({ + tableUri: table.tableUri, + filter: filter + }) + ); + if (!response.errors) { + setItems(response.data.listTableDataFilters); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } finally { + setLoading(false); + } + }, [client, dispatch, filter, table.tableUri]); + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, filter.page, fetchItems, dispatch]); + + if (loading) { + return ; + } + + return ( + + + + } + title={ + + {' '} + Data Filters + + } + /> + + + + + + + + ) + }} + onChange={handleInputChange} + onKeyUp={handleInputKeyup} + placeholder="Search" + value={inputValue} + variant="outlined" + /> + + + + + {isCreateFilterModalOpen && ( + + )} + + + + + {!loading && ( + + )} + + + + + + ); +}; + +TableFilters.propTypes = { + table: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Tables/components/TableFiltersDataGrid.js b/frontend/src/modules/Tables/components/TableFiltersDataGrid.js new file mode 100644 index 000000000..c1dd6f0b7 --- /dev/null +++ b/frontend/src/modules/Tables/components/TableFiltersDataGrid.js @@ -0,0 +1,151 @@ +import { Card, CardContent, CircularProgress, Typography } from '@mui/material'; +import { DataGrid, GridActionsCellItem } from '@mui/x-data-grid'; +import { Warning } from '@mui/icons-material'; +import PropTypes from 'prop-types'; +import React, { useState } from 'react'; + +import { DeleteObjectWithFrictionModal } from 'design'; + +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import { useTheme } from '@mui/styles'; + +export const TableFiltersDataGrid = ({ + items, + filter, + loading, + handlePageSizeChange, + handlePageChange, + deleteFunction, + assignFunction, + ...other +}) => { + const theme = useTheme(); + const [isDeleteFilterModalOpenId, setIsDeleteFilterModalOpen] = useState(0); + + const handleDeleteFilterModalOpen = (id) => { + setIsDeleteFilterModalOpen(id); + }; + const handleDeleteFilterModalClosed = () => { + setIsDeleteFilterModalOpen(0); + }; + + if (loading) { + return ; + } + + return ( + node.filterUri} + rows={items.nodes} + columns={[ + { field: 'id', hide: true }, + { + field: 'label', + headerName: 'Filter Name', + flex: 1, + editable: false + }, + { + field: 'description', + headerName: 'Description', + flex: 1, + editable: false + }, + { + field: 'filterType', + headerName: 'Filter Type', + flex: 0.5, + editable: false + }, + { + field: 'includedCols', + headerName: 'Included Columns', + flex: 1, + editable: false + }, + { + field: 'rowExpression', + headerName: 'Row Expression', + flex: 1, + editable: false + }, + { + field: 'actions', + headerName: 'Actions', + flex: 0.5, + type: 'actions', + cellClassName: 'actions', + getActions: ({ id, ...props }) => { + const name = props.row.label; + return [ + } + label="Delete" + onClick={() => handleDeleteFilterModalOpen(id)} + color="inherit" + />, + handleDeleteFilterModalClosed()} + onClose={() => handleDeleteFilterModalClosed()} + open={isDeleteFilterModalOpenId === id} + isAWSResource={false} + deleteFunction={() => deleteFunction(id)} + deleteMessage={ + + + + Revoke all share items where + data filter {name} is used before proceeding with + the deletion ! + + + + } + /> + ]; + } + } + ]} + rowCount={items.count} + page={items.page - 1} + pageSize={filter.pageSize} + paginationMode="server" + onPageChange={handlePageChange} + onPageSizeChange={(pageSize) => handlePageSizeChange(pageSize)} + loading={loading} + getRowHeight={() => 'auto'} + disableSelectionOnClick + /> + ); +}; + +TableFiltersDataGrid.propTypes = { + items: PropTypes.object.isRequired, + filter: PropTypes.object.isRequired, + loading: PropTypes.bool.isRequired, + handlePageSizeChange: PropTypes.func, + handlePageChange: PropTypes.func, + deleteFunction: PropTypes.func, + assignFunction: PropTypes.func +}; diff --git a/frontend/src/modules/Tables/components/index.js b/frontend/src/modules/Tables/components/index.js index 5dda7b857..24435a71c 100644 --- a/frontend/src/modules/Tables/components/index.js +++ b/frontend/src/modules/Tables/components/index.js @@ -2,3 +2,6 @@ export * from './TableColumns'; export * from './TableMetrics'; export * from './TableOverview'; export * from './TablePreview'; +export * from './TableFilters'; +export * from './TableDataFilterAddForm'; +export * from './TableFiltersDataGrid'; diff --git a/frontend/src/modules/Tables/services/createTableDataFilter.js b/frontend/src/modules/Tables/services/createTableDataFilter.js new file mode 100644 index 000000000..a055d286e --- /dev/null +++ b/frontend/src/modules/Tables/services/createTableDataFilter.js @@ -0,0 +1,18 @@ +import { gql } from 'apollo-boost'; + +export const createTableDataFilter = ({ tableUri, input }) => ({ + variables: { + tableUri, + input + }, + mutation: gql` + mutation createTableDataFilter( + $tableUri: String! + $input: NewTableDataFilterInput! + ) { + createTableDataFilter(tableUri: $tableUri, input: $input) { + filterUri + } + } + ` +}); diff --git a/frontend/src/modules/Tables/services/deleteTableDataFilter.js b/frontend/src/modules/Tables/services/deleteTableDataFilter.js new file mode 100644 index 000000000..28e4fb9c5 --- /dev/null +++ b/frontend/src/modules/Tables/services/deleteTableDataFilter.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteTableDataFilter = ({ filterUri }) => ({ + variables: { + filterUri + }, + mutation: gql` + mutation deleteTableDataFilter($filterUri: String!) { + deleteTableDataFilter(filterUri: $filterUri) + } + ` +}); diff --git a/frontend/src/modules/Tables/services/getDatasetTable.js b/frontend/src/modules/Tables/services/getDatasetTable.js index a3fcd1da9..40712b07c 100644 --- a/frontend/src/modules/Tables/services/getDatasetTable.js +++ b/frontend/src/modules/Tables/services/getDatasetTable.js @@ -14,6 +14,7 @@ export const getDatasetTable = (tableUri) => ({ region SamlAdminGroupName owner + confidentiality organization { label } diff --git a/frontend/src/modules/Tables/services/index.js b/frontend/src/modules/Tables/services/index.js index 8edb0b861..32d1a3c60 100644 --- a/frontend/src/modules/Tables/services/index.js +++ b/frontend/src/modules/Tables/services/index.js @@ -6,3 +6,5 @@ export * from './startDatasetProfilingRun'; export * from './syncDatasetTableColumns'; export * from './updateDatasetTable'; export * from './updateDatasetTableColumn'; +export * from './createTableDataFilter'; +export * from './deleteTableDataFilter'; diff --git a/frontend/src/modules/Tables/views/TableView.js b/frontend/src/modules/Tables/views/TableView.js index 624bf4167..a7f0fb028 100644 --- a/frontend/src/modules/Tables/views/TableView.js +++ b/frontend/src/modules/Tables/views/TableView.js @@ -14,12 +14,13 @@ import { Tabs, Typography } from '@mui/material'; +import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import * as PropTypes from 'prop-types'; +import { useLocation, Link as RouterLink, useParams } from 'react-router-dom'; import React, { useCallback, useEffect, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { FaTrash } from 'react-icons/fa'; import { useNavigate } from 'react-router'; -import { Link as RouterLink, useParams } from 'react-router-dom'; import { ChevronRightIcon, DeleteObjectModal, @@ -34,21 +35,21 @@ import { TableColumns, TableMetrics, TableOverview, - TablePreview + TablePreview, + TableFilters } from '../components'; import { isFeatureEnabled } from 'utils'; +import config from '../../../generated/config.json'; const previewDataEnabled = isFeatureEnabled('s3_datasets', 'preview_data'); -const tabs = [ - { label: 'Overview', value: 'overview' }, - { label: 'Columns', value: 'columns' }, - { label: 'Metrics', value: 'metrics' } -]; +const confidentialityOptionsDict = + config.modules.datasets_base.features.confidentiality_dropdown === true && + config.modules.s3_datasets.features.custom_confidentiality_mapping + ? config.modules.s3_datasets.features.custom_confidentiality_mapping + : {}; -if (previewDataEnabled) { - tabs.unshift({ label: 'Preview', value: 'preview' }); -} +const tabs = [{ label: 'Overview', value: 'overview' }]; function TablePageHeader(props) { const { table, handleDeleteObjectModalOpen, isAdmin } = props; @@ -163,11 +164,16 @@ const TableView = () => { const client = useClient(); const navigate = useNavigate(); const [table, setTable] = useState({}); - const [currentTab, setCurrentTab] = useState(tabs[0].value); const [loading, setLoading] = useState(true); const [isDeleteObjectModalOpen, setIsDeleteObjectModalOpen] = useState(false); const [isAdmin, setIsAdmin] = useState(false); + const location = useLocation(); + const shareUri = location?.state?.shareUri; + const tab = location?.state?.tab; + + const [currentTab, setCurrentTab] = useState(tab || tabs[0].value); + const handleDeleteObjectModalOpen = () => { setIsDeleteObjectModalOpen(true); }; @@ -175,6 +181,32 @@ const TableView = () => { setIsDeleteObjectModalOpen(false); }; + const handleUserRole = useCallback(async (userRole, confidentiality) => { + const isUnclassified = + confidentiality === 'Unclassified' || + confidentialityOptionsDict[confidentiality] === 'Unclassified'; + const adminValue = ['Creator', 'Admin', 'Owner'].indexOf(userRole) !== -1; + const stewardValue = ['DataSteward'].indexOf(userRole) !== -1; + setIsAdmin(adminValue); + if (adminValue || stewardValue || isUnclassified) { + if (previewDataEnabled && !tabs.find((t) => t.value === 'preview')) { + tabs.unshift({ label: 'Preview', value: 'preview' }); + } + if (!tabs.find((t) => t.value === 'columns')) { + tabs.push({ label: 'Columns', value: 'columns' }); + } + if (!tabs.find((t) => t.value === 'metrics')) { + tabs.push({ label: 'Metrics', value: 'metrics' }); + } + if ( + (adminValue || stewardValue) && + !tabs.find((t) => t.value === 'datafilters') + ) { + tabs.push({ label: 'Data Filters', value: 'datafilters' }); + } + } + }, []); + const deleteTable = async () => { const response = await client.mutate( deleteDatasetTable({ tableUri: table.tableUri }) @@ -191,10 +223,9 @@ const TableView = () => { const response = await client.query(getDatasetTable(params.uri)); if (!response.errors && response.data.getDatasetTable !== null) { setTable(response.data.getDatasetTable); - setIsAdmin( - ['Creator', 'Admin', 'Owner'].indexOf( - response.data.getDatasetTable.dataset.userRoleForDataset - ) !== -1 + handleUserRole( + response.data.getDatasetTable.dataset.userRoleForDataset, + response.data.getDatasetTable.dataset.confidentiality ); } else { setTable(null); @@ -240,6 +271,14 @@ const TableView = () => { handleDeleteObjectModalOpen={handleDeleteObjectModalOpen} isAdmin={isAdmin} /> + {shareUri && ( + + )} { {currentTab === 'metrics' && ( )} + {currentTab === 'datafilters' && isAdmin && ( + + )} diff --git a/frontend/src/modules/Worksheets/services/index.js b/frontend/src/modules/Worksheets/services/index.js index 8b56e0066..b10e7d361 100644 --- a/frontend/src/modules/Worksheets/services/index.js +++ b/frontend/src/modules/Worksheets/services/index.js @@ -5,3 +5,4 @@ export * from './listS3DatasetsSharedWithEnvGroup'; export * from './listWorksheets'; export * from './runAthenaSqlQuery'; export * from './updateWorksheet'; +export * from './listSharedDatasetTableColumns'; diff --git a/frontend/src/modules/Worksheets/services/listS3DatasetsSharedWithEnvGroup.js b/frontend/src/modules/Worksheets/services/listS3DatasetsSharedWithEnvGroup.js index 49dbb37f1..a7a7ceaaf 100644 --- a/frontend/src/modules/Worksheets/services/listS3DatasetsSharedWithEnvGroup.js +++ b/frontend/src/modules/Worksheets/services/listS3DatasetsSharedWithEnvGroup.js @@ -18,6 +18,7 @@ export const listS3DatasetsSharedWithEnvGroup = ({ ) { datasetUri sharedGlueDatabaseName + shareUri } } ` diff --git a/frontend/src/modules/Worksheets/services/listSharedDatasetTableColumns.js b/frontend/src/modules/Worksheets/services/listSharedDatasetTableColumns.js new file mode 100644 index 000000000..567b02bc3 --- /dev/null +++ b/frontend/src/modules/Worksheets/services/listSharedDatasetTableColumns.js @@ -0,0 +1,54 @@ +import { gql } from 'apollo-boost'; + +export const listSharedDatasetTableColumns = ({ + tableUri, + shareUri, + filter +}) => ({ + variables: { + tableUri, + shareUri, + filter + }, + query: gql` + query listSharedDatasetTableColumns( + $tableUri: String! + $shareUri: String! + $filter: DatasetTableColumnFilter + ) { + listSharedDatasetTableColumns( + tableUri: $tableUri + shareUri: $shareUri + filter: $filter + ) { + count + page + pages + hasNext + hasPrevious + nodes { + columnUri + name + label + description + typeName + columnType + terms { + count + page + pages + nodes { + linkUri + term { + label + created + path + nodeUri + } + } + } + } + } + } + ` +}); diff --git a/frontend/src/modules/Worksheets/views/WorksheetView.js b/frontend/src/modules/Worksheets/views/WorksheetView.js index bb8e256de..545c3f190 100644 --- a/frontend/src/modules/Worksheets/views/WorksheetView.js +++ b/frontend/src/modules/Worksheets/views/WorksheetView.js @@ -40,6 +40,7 @@ import { deleteWorksheet, getWorksheet, listS3DatasetsSharedWithEnvGroup, + listSharedDatasetTableColumns, runAthenaSqlQuery, updateWorksheet } from '../services'; @@ -152,7 +153,8 @@ const WorksheetView = () => { sharedWithDatabases = response.data.listS3DatasetsSharedWithEnvGroup?.map((d) => ({ value: d.datasetUri, - label: d.sharedGlueDatabaseName + label: d.sharedGlueDatabaseName, + shareUri: d.shareUri })); } setDatabaseOptions(ownedDatabases.concat(sharedWithDatabases)); @@ -207,22 +209,44 @@ const WorksheetView = () => { [client, dispatch] ); const fetchColumns = useCallback( - async (table) => { + async (table, database) => { setLoadingColumns(true); - const response = await client.query( - listDatasetTableColumns({ - tableUri: table.tableUri, - filter: Defaults.selectListFilter - }) - ); - if (!response.errors) { - setColumns( - response.data.listDatasetTableColumns.nodes.map((c) => ({ - ...c, - value: c.columnUri, - label: c.name - })) + let response; + if (database?.shareUri) { + response = await client.query( + listSharedDatasetTableColumns({ + tableUri: table.tableUri, + shareUri: database.shareUri, + filter: Defaults.selectListFilter + }) ); + } else { + response = await client.query( + listDatasetTableColumns({ + tableUri: table.tableUri, + filter: Defaults.selectListFilter + }) + ); + } + + if (!response.errors) { + if (database?.shareUri) { + setColumns( + response.data.listSharedDatasetTableColumns.nodes.map((c) => ({ + ...c, + value: c.columnUri, + label: c.name + })) + ); + } else { + setColumns( + response.data.listDatasetTableColumns.nodes.map((c) => ({ + ...c, + value: c.columnUri, + label: c.name + })) + ); + } } else { dispatch({ type: SET_ERROR, error: response.errors[0].message }); } @@ -351,7 +375,7 @@ const WorksheetView = () => { function handleTableChange(event) { setColumns([]); setSelectedTable(event.target.value); - fetchColumns(event.target.value).catch((e) => + fetchColumns(event.target.value, selectedDatabase).catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); setSqlBody( diff --git a/frontend/src/services/graphql/DatasetTable/index.js b/frontend/src/services/graphql/DatasetTable/index.js index 7c46f5143..8baa7a72b 100644 --- a/frontend/src/services/graphql/DatasetTable/index.js +++ b/frontend/src/services/graphql/DatasetTable/index.js @@ -1,3 +1,4 @@ export * from './deleteDatasetTable'; export * from './getSharedDatasetTables'; export * from './listDatasetTableColumns'; +export * from './listTableDataFilters'; diff --git a/frontend/src/services/graphql/DatasetTable/listTableDataFilters.js b/frontend/src/services/graphql/DatasetTable/listTableDataFilters.js new file mode 100644 index 000000000..62b848ed8 --- /dev/null +++ b/frontend/src/services/graphql/DatasetTable/listTableDataFilters.js @@ -0,0 +1,30 @@ +import { gql } from 'apollo-boost'; + +export const listTableDataFilters = ({ tableUri, filter }) => ({ + variables: { + tableUri, + filter + }, + query: gql` + query listTableDataFilters( + $tableUri: String! + $filter: DatasetTableFilter + ) { + listTableDataFilters(tableUri: $tableUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + filterUri + label + description + filterType + includedCols + rowExpression + } + } + } + ` +}); diff --git a/tests/modules/s3_datasets/conftest.py b/tests/modules/s3_datasets/conftest.py index 976aba2fc..2ab1e6a06 100644 --- a/tests/modules/s3_datasets/conftest.py +++ b/tests/modules/s3_datasets/conftest.py @@ -10,7 +10,7 @@ from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_REQUESTER, SHARE_OBJECT_APPROVER from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification -from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_READ +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_ALL from dataall.modules.s3_datasets.db.dataset_models import S3Dataset, DatasetTable, DatasetStorageLocation from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_ALL @@ -197,7 +197,7 @@ def factory(dataset: S3Dataset, name, username) -> DatasetTable: ResourcePolicyService.attach_resource_policy( session=session, group=dataset.SamlAdminGroupName, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table.tableUri, resource_type=DatasetTable.__name__, ) @@ -237,7 +237,7 @@ def table_fixture(db, dataset_fixture, table, group, user): ResourcePolicyService.attach_resource_policy( session=session, group=group.groupUri, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table1.tableUri, resource_type=DatasetTable.__name__, ) @@ -252,7 +252,7 @@ def table_confidential_fixture(db, dataset_confidential_fixture, table, group, u ResourcePolicyService.attach_resource_policy( session=session, group=group.groupUri, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table2.tableUri, resource_type=DatasetTable.__name__, ) diff --git a/tests/modules/s3_datasets/test_dataset_permissions.py b/tests/modules/s3_datasets/test_dataset_permissions.py index 18a8b652c..1807ab54d 100644 --- a/tests/modules/s3_datasets/test_dataset_permissions.py +++ b/tests/modules/s3_datasets/test_dataset_permissions.py @@ -10,7 +10,7 @@ ) from dataall.modules.s3_datasets.services.dataset_service import DatasetService from dataall.modules.datasets_base.db.dataset_models import DatasetBase -from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_READ +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_ALL from tests.core.permissions.test_permission import * from dataall.core.organizations.services.organization_service import OrganizationService @@ -18,7 +18,7 @@ def test_attach_resource_policy(db, user, group, dataset_fixture): - permissions(db, ENVIRONMENT_ALL + ORGANIZATION_ALL + DATASET_READ + DATASET_WRITE + DATASET_TABLE_READ) + permissions(db, ENVIRONMENT_ALL + ORGANIZATION_ALL + DATASET_READ + DATASET_WRITE + DATASET_TABLE_ALL) with db.scoped_session() as session: ResourcePolicyService.attach_resource_policy( session=session, diff --git a/tests/modules/s3_datasets/test_dataset_table.py b/tests/modules/s3_datasets/test_dataset_table.py index 57a44c7ae..e20af5b86 100644 --- a/tests/modules/s3_datasets/test_dataset_table.py +++ b/tests/modules/s3_datasets/test_dataset_table.py @@ -1,5 +1,21 @@ from dataall.modules.s3_datasets.services.dataset_table_service import DatasetTableService -from dataall.modules.s3_datasets.db.dataset_models import DatasetTableColumn, DatasetTable +from dataall.modules.s3_datasets.services.dataset_table_data_filter_service import DatasetTableDataFilterService +from dataall.modules.s3_datasets.db.dataset_models import DatasetTableColumn, DatasetTable, DatasetTableDataFilter +from dataall.base.db.exceptions import UnauthorizedOperation +import pytest +import boto3 +from unittest.mock import MagicMock + + +@pytest.fixture(scope='function') +def mock_lf_client(mocker, mock_aws_client): + mocker.patch('dataall.modules.s3_datasets.aws.lf_data_filter_client.SessionHelper', autospec=True) + + mock_class = mocker.patch( + 'dataall.modules.s3_datasets.aws.lf_data_filter_client.LakeFormationDataFilterClient', autospec=True + ) + + mock_class._create_table_data_filter.return_value = {} def test_add_tables(table, dataset_fixture, db): @@ -229,16 +245,197 @@ def test_sync_tables_and_columns(client, table, dataset_fixture, db): assert deleted_table.LastGlueTableStatus == 'Deleted' -def test_delete_table(client, table, dataset_fixture, db, group): - table_to_delete = table(dataset=dataset_fixture, name=f'table_to_update', username=dataset_fixture.owner) - response = client.query( +def delete_table(client, tableUri, username, groups): + return client.query( """ mutation deleteDatasetTable($tableUri:String!){ deleteDatasetTable(tableUri:$tableUri) } """, - username='alice', - groups=[group.name], - tableUri=table_to_delete.tableUri, + username=username, + groups=groups, + tableUri=tableUri, ) + + +def test_delete_table(mock_lf_client, client, table, dataset_fixture, db, group): + table_to_delete = table(dataset=dataset_fixture, name=f'table_to_update', username=dataset_fixture.owner) + response = delete_table(client, table_to_delete.tableUri, 'alice', [group.name]) assert response.data.deleteDatasetTable + + +def create_data_filter(client, tableUri, username, groups, input): + return client.query( + """ + mutation createTableDataFilter($tableUri: String!,$input: NewTableDataFilterInput!) { + createTableDataFilter(tableUri: $tableUri, input: $input) { + filterUri + label + description + filterType + includedCols + } + } + """, + tableUri=tableUri, + groups=groups, + username=username, + input=input, + ) + + +def list_data_filters(client, tableUri, username, groups): + return client.query( + """ + query listTableDataFilters( + $tableUri: String! + $filter: DatasetTableFilter + ) { + listTableDataFilters(tableUri: $tableUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + filterUri + label + description + filterType + includedCols + rowExpression + } + } + } + """, + tableUri=tableUri, + groups=groups, + username=username, + ) + + +def delete_data_filters(client, filterUri, username, groups): + return client.query( + """ + mutation deleteTableDataFilter($filterUri: String!) { + deleteTableDataFilter(filterUri: $filterUri) + } + """, + filterUri=filterUri, + groups=groups, + username=username, + ) + + +def test_delete_table_with_filters(mock_lf_client, client, table, dataset_fixture, db, user, group): + table_to_delete = table(dataset=dataset_fixture, name='table', username=dataset_fixture.owner) + + filterName = 'colfilter' + filterType = 'COLUMN' + input = { + 'filterName': filterName, + 'filterType': filterType, + 'includedCols': ['id'], + } + create_data_filter(client, table_to_delete.tableUri, user.username, [group.name], input) + + dfilter_response = list_data_filters(client, table_to_delete.tableUri, user.username, [group.name]) + assert dfilter_response.data.listTableDataFilters.count == 1 + + response = delete_table(client, table_to_delete.tableUri, user.username, [group.name]) + + dfilter_response = list_data_filters(client, table_to_delete.tableUri, user.username, [group.name]) + assert 'UnauthorizedOperation' in dfilter_response.errors[0].message + with db.scoped_session() as session: + assert ( + session.query(DatasetTableDataFilter) + .filter(DatasetTableDataFilter.tableUri == table_to_delete.tableUri) + .count() + == 0 + ) + + +def test_create_table_data_filter_column(mock_lf_client, client, table_fixture, db, user, group): + filterName = 'colfilter' + filterType = 'COLUMN' + input = { + 'filterName': filterName, + 'description': 'mylocation', + 'filterType': filterType, + 'rowExpression': '', + 'includedCols': ['id_col', 'id2_col'], + } + response = create_data_filter(client, table_fixture.tableUri, user.username, [group.name], input) + + assert response.data.createTableDataFilter + assert response.data.createTableDataFilter.filterUri + assert response.data.createTableDataFilter.label == filterName + assert response.data.createTableDataFilter.filterType == filterType + assert response.data.createTableDataFilter.rowExpression is None + + +def test_create_table_data_filter_row(mock_lf_client, client, table_fixture, db, user, group): + filterName = 'rowfilter' + filterType = 'ROW' + input = { + 'filterName': filterName, + 'description': 'mylocation', + 'filterType': filterType, + 'rowExpression': 'id_col IS NOT NULL AND id2_col > 100', + 'includedCols': [], + } + response = create_data_filter(client, table_fixture.tableUri, user.username, [group.name], input) + + assert response.data.createTableDataFilter + assert response.data.createTableDataFilter.filterUri + assert response.data.createTableDataFilter.label == filterName + assert response.data.createTableDataFilter.filterType == filterType + assert response.data.createTableDataFilter.includedCols is None + + +def test_create_table_data_filter_invalid_input(mock_lf_client, client, table_fixture, db, user, group): + filterName = 'RowFilter ###' + filterType = 'ROW' + input = { + 'filterName': filterName, + 'description': 'mylocation', + 'filterType': filterType, + 'rowExpression': 'id_col IS NOT NULL AND id2_col > 100', + 'includedCols': [], + } + + response = create_data_filter(client, table_fixture.tableUri, user.username, [group.name], input) + + assert response.errors + assert 'InvalidInput' in response.errors[0].message + + +def test_create_table_data_filter_invalid_type(mock_lf_client, client, table_fixture, db, user, group): + filterName = 'filter' + filterType = 'NEWTYPE' + input = { + 'filterName': filterName, + 'description': 'mylocation', + 'filterType': filterType, + 'rowExpression': 'id_col IS NOT NULL AND id2_col > 100', + 'includedCols': [], + } + + response = create_data_filter(client, table_fixture.tableUri, user.username, [group.name], input) + + assert response.errors + assert 'InvalidInput' in response.errors[0].message + + +def test_list_table_data_filters(mock_lf_client, client, table_fixture, db, user, group): + response = list_data_filters(client, table_fixture.tableUri, user.username, [group.name]) + + assert response.data.listTableDataFilters.count == 2 + for dfilter in response.data.listTableDataFilters.nodes: + assert dfilter.filterType in ['COLUMN', 'ROW'] + + +def test_delete_table_data_filter(mock_lf_client, client, table_fixture, db, user, group): + response = list_data_filters(client, table_fixture.tableUri, user.username, [group.name]) + for dfilter in response.data.listTableDataFilters.nodes: + response = delete_data_filters(client, dfilter.filterUri, user.username, [group.name]) diff --git a/tests/modules/s3_datasets_shares/conftest.py b/tests/modules/s3_datasets_shares/conftest.py index 976aba2fc..2fe83d3ae 100644 --- a/tests/modules/s3_datasets_shares/conftest.py +++ b/tests/modules/s3_datasets_shares/conftest.py @@ -10,8 +10,13 @@ from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_REQUESTER, SHARE_OBJECT_APPROVER from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification -from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_READ -from dataall.modules.s3_datasets.db.dataset_models import S3Dataset, DatasetTable, DatasetStorageLocation +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_ALL +from dataall.modules.s3_datasets.db.dataset_models import ( + S3Dataset, + DatasetTable, + DatasetStorageLocation, + DatasetTableDataFilter, +) from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_ALL @@ -197,7 +202,7 @@ def factory(dataset: S3Dataset, name, username) -> DatasetTable: ResourcePolicyService.attach_resource_policy( session=session, group=dataset.SamlAdminGroupName, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table.tableUri, resource_type=DatasetTable.__name__, ) @@ -206,6 +211,29 @@ def factory(dataset: S3Dataset, name, username) -> DatasetTable: yield factory +@pytest.fixture(scope='module') +def table_column_data_filter(db): + def factory( + table: DatasetTable, + name, + filterType, + ) -> DatasetTableDataFilter: + with db.scoped_session() as session: + data_filter = DatasetTableDataFilter( + tableUri=table.tableUri, + label=name, + filterType=filterType, + rowExpression=None, + includedCols=['id1', 'id2'], + owner='foo', + ) + session.add(data_filter) + session.commit() + return data_filter + + yield factory + + @pytest.fixture(scope='module') def dataset_fixture(env_fixture, org_fixture, dataset, group) -> S3Dataset: yield dataset( @@ -237,7 +265,7 @@ def table_fixture(db, dataset_fixture, table, group, user): ResourcePolicyService.attach_resource_policy( session=session, group=group.groupUri, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table1.tableUri, resource_type=DatasetTable.__name__, ) @@ -252,7 +280,7 @@ def table_confidential_fixture(db, dataset_confidential_fixture, table, group, u ResourcePolicyService.attach_resource_policy( session=session, group=group.groupUri, - permissions=DATASET_TABLE_READ, + permissions=DATASET_TABLE_ALL, resource_uri=table2.tableUri, resource_type=DatasetTable.__name__, ) diff --git a/tests/modules/s3_datasets_shares/tasks/conftest.py b/tests/modules/s3_datasets_shares/tasks/conftest.py index 4f2cf2744..8971acfca 100644 --- a/tests/modules/s3_datasets_shares/tasks/conftest.py +++ b/tests/modules/s3_datasets_shares/tasks/conftest.py @@ -8,8 +8,14 @@ ShareObjectStatus, PrincipalType, ) -from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject -from dataall.modules.s3_datasets.db.dataset_models import DatasetStorageLocation, DatasetTable, S3Dataset, DatasetBucket +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject, ShareObjectItemDataFilter +from dataall.modules.s3_datasets.db.dataset_models import ( + DatasetStorageLocation, + DatasetTable, + S3Dataset, + DatasetBucket, + DatasetTableDataFilter, +) @pytest.fixture(scope='module') @@ -168,6 +174,7 @@ def factory( share: ShareObject, table: DatasetTable, status: str, + attachedDataFilterUri: str = None, ) -> ShareObjectItem: with db.scoped_session() as session: share_item = ShareObjectItem( @@ -177,6 +184,7 @@ def factory( itemType=ShareableType.Table.value, itemName=table.name, status=status, + attachedDataFilterUri=attachedDataFilterUri, ) session.add(share_item) session.commit() @@ -185,6 +193,26 @@ def factory( yield factory +@pytest.fixture(scope='module') +def share_item_table_data_filter(db): + def factory( + table: DatasetTable, + table_data_filter: DatasetTableDataFilter, + ) -> ShareObjectItem: + with db.scoped_session() as session: + share_item_data_filter = ShareObjectItemDataFilter( + label='testsharefilter', + itemUri=table.tableUri, + dataFilterUris=[table_data_filter.filterUri], + dataFilterNames=[table_data_filter.label], + ) + session.add(share_item_data_filter) + session.commit() + return share_item_data_filter + + yield factory + + @pytest.fixture(scope='module') def share_item_bucket(db): def factory( diff --git a/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py index 1043b1044..dbd0cfb4b 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_lf_share_manager.py @@ -15,7 +15,7 @@ from dataall.core.organizations.db.organization_models import Organization from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup from dataall.modules.shares_base.services.shares_enums import ShareItemStatus -from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem +from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem, ShareObjectItemDataFilter from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, S3Dataset from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService from dataall.modules.s3_datasets_shares.services.share_processors.glue_table_share_processor import ( @@ -97,6 +97,34 @@ def share_item(share_item_table: Callable, share: ShareObject, table1: DatasetTa yield share_item_table(share=share, table=table1, status=ShareItemStatus.Share_Approved.value) +@pytest.fixture(scope='module') +def table_data_filter_fixture(db, table1, table_column_data_filter, group, user): + yield table_column_data_filter(table=table1, name='datafilter1', filterType='COLUMN') + + +@pytest.fixture(scope='module') +def share_item_data_filter( + share_item_table_data_filter: Callable, table1: DatasetTable, table_data_filter_fixture +) -> ShareObjectItemDataFilter: + share_item_data_filter = share_item_table_data_filter(table=table1, table_data_filter=table_data_filter_fixture) + yield share_item_data_filter + + +@pytest.fixture(scope='module') +def share_item_with_filters( + share_item_table: Callable, + share: ShareObject, + table1: DatasetTable, + share_item_data_filter: ShareObjectItemDataFilter, +) -> ShareObjectItem: + yield share_item_table( + share=share, + table=table1, + status=ShareItemStatus.Share_Approved.value, + attachedDataFilterUri=share_item_data_filter.attachedDataFilterUri, + ) + + @pytest.fixture(scope='module') def share_data( share, dataset1, source_environment, target_environment, source_environment_group, target_environment_group @@ -178,28 +206,11 @@ def test_get_share_principals( get_iam_role_arn_mock.assert_called_once() -def test_build_shared_db_name(manager_with_mocked_clients, dataset1: S3Dataset, mock_glue_client): +def test_build_shared_db_name(manager_with_mocked_clients, dataset1: S3Dataset): # Given a new share, build db_share name manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - mock_glue_client().get_glue_database.return_value = False - # Reset to remove call in __init__ - mock_glue_client().get_glue_database.reset_mock() # Then - assert manager.build_shared_db_name() == (f'{dataset1.GlueDatabaseName[:247]}_shared', True) - mock_glue_client().get_glue_database.assert_called_once() - - -def test_build_shared_db_name_old( - manager_with_mocked_clients, dataset1: S3Dataset, share: ShareObject, mock_glue_client -): - # Given an existing old share (shared db name with shareUri), build db_share name - manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - mock_glue_client().get_glue_database.return_value = True - # Reset to remove call in __init__ - mock_glue_client().get_glue_database.reset_mock() - # Then - assert manager.build_shared_db_name() == (f'{dataset1.GlueDatabaseName}_shared_{share.shareUri}'[:254], False) - mock_glue_client().get_glue_database.assert_called_once() + assert manager.build_shared_db_name() == f'{dataset1.GlueDatabaseName[:247]}_shared' def test_check_table_exists_in_source_database( @@ -232,7 +243,7 @@ def test_check_resource_link_table_exists_in_target_database_true(manager_with_m manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients glue_client.table_exists.return_value = True # When - response = manager.check_resource_link_table_exists_in_target_database(table=table1) + response = manager.check_resource_link_table_exists_in_target_database(resource_link_name=table1.GlueTableName) # Then assert response == True glue_client.table_exists.assert_called_once() @@ -246,7 +257,7 @@ def test_check_resource_link_table_exists_in_target_database_false( manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients glue_client.table_exists.return_value = False # Then - assert manager.check_resource_link_table_exists_in_target_database(table=table1) == False + assert manager.check_resource_link_table_exists_in_target_database(resource_link_name=table1.GlueTableName) == False glue_client.table_exists.assert_called_once() glue_client.table_exists.assert_called_with(table1.GlueTableName) @@ -329,21 +340,24 @@ def test_grant_principals_database_permissions_to_shared_database(manager_with_m ) -def test_grant_target_account_permissions_to_source_table( - manager_with_mocked_clients, target_environment: Environment, source_environment: Environment, table1: DatasetTable +def test_grant_principals_permissions_to_source_table( + manager_with_mocked_clients, + target_environment: Environment, + source_environment: Environment, + table1: DatasetTable, + share_item: ShareObjectItem, ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients # When - manager.grant_target_account_permissions_to_source_table(table1) + manager.grant_principals_permissions_to_source_table(table1, share_item) # Then - lf_client.grant_permissions_to_table.assert_called_once() - lf_client.grant_permissions_to_table.assert_called_with( - principals=[target_environment.AwsAccountId], + lf_client.grant_permissions_to_table_with_columns.assert_called_once() + lf_client.grant_permissions_to_table_with_columns.assert_called_with( + principals=manager.principals, database_name=table1.GlueDatabaseName, table_name=table1.GlueTableName, catalog_id=source_environment.AwsAccountId, permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], ) @@ -355,7 +369,7 @@ def test_check_if_exists_and_create_resource_link_table_in_shared_database_false glue_client.create_resource_link.return_value = True # When - manager.check_if_exists_and_create_resource_link_table_in_shared_database(table1) + manager.check_if_exists_and_create_resource_link_table_in_shared_database(table1, table1.GlueTableName) # Then glue_client.table_exists.assert_called_once() @@ -376,7 +390,7 @@ def test_check_if_exists_and_create_resource_link_table_in_shared_database_true( glue_client.create_resource_link.return_value = True # When - manager.check_if_exists_and_create_resource_link_table_in_shared_database(table1) + manager.check_if_exists_and_create_resource_link_table_in_shared_database(table1, table1.GlueTableName) # Then glue_client.table_exists.assert_called_once() @@ -388,7 +402,7 @@ def test_grant_principals_permissions_to_resource_link_table( ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients # When - manager.grant_principals_permissions_to_resource_link_table(table1) + manager.grant_principals_permissions_to_resource_link_table(table1.GlueTableName) # Then lf_client.grant_permissions_to_table.assert_called_once() lf_client.grant_permissions_to_table.assert_called_with( @@ -409,7 +423,7 @@ def test_grant_pivot_role_drop_permissions_to_resource_link_table( return_value='arn:role', ) # When - manager.grant_pivot_role_drop_permissions_to_resource_link_table(table1) + manager.grant_pivot_role_drop_permissions_to_resource_link_table(table1.GlueTableName) # Then lf_client.grant_permissions_to_table.assert_called_once() lf_client.grant_permissions_to_table.assert_called_with( @@ -421,23 +435,6 @@ def test_grant_pivot_role_drop_permissions_to_resource_link_table( ) -def test_grant_principals_permissions_to_table_in_target( - manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment -): - manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - # When - manager.grant_principals_permissions_to_table_in_target(table1) - # Then - lf_client.grant_permissions_to_table_with_columns.assert_called_once() - lf_client.grant_permissions_to_table_with_columns.assert_called_with( - principals=manager.principals, - database_name=table1.GlueDatabaseName, - table_name=table1.GlueTableName, - catalog_id=source_environment.AwsAccountId, - permissions=['DESCRIBE', 'SELECT'], - ) - - def test_check_pivot_role_permissions_to_source_database(manager_with_mocked_clients, dataset1: S3Dataset, mocker): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients lf_client.check_permissions_to_database.return_value = True @@ -543,98 +540,147 @@ def test_verify_table_exists_in_source_database_failed( assert len(manager.tbl_level_errors) == 1 -def test_check_target_account_permissions_to_source_table( - manager_with_mocked_clients, target_environment: Environment, source_environment: Environment, table1: DatasetTable +def test_check_target_principals_permissions_to_source_table( + manager_with_mocked_clients, + target_environment: Environment, + source_environment: Environment, + table1: DatasetTable, + share_item: ShareObjectItem, ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - lf_client.check_permissions_to_table.return_value = True + lf_client.check_permissions_to_table_with_columns.return_value = True # When - manager.check_target_account_permissions_to_source_table(table1) + manager.check_target_principals_permissions_to_source_table(table1, share_item) # Then assert len(manager.tbl_level_errors) == 0 - lf_client.check_permissions_to_table.assert_called_once() - lf_client.check_permissions_to_table.assert_called_with( - principals=[target_environment.AwsAccountId], + lf_client.check_permissions_to_table_with_columns.assert_called_once() + lf_client.check_permissions_to_table_with_columns.assert_called_with( + principals=manager.principals, database_name=table1.GlueDatabaseName, table_name=table1.GlueTableName, catalog_id=source_environment.AwsAccountId, permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], ) -def test_check_target_account_permissions_to_source_table_failed( - manager_with_mocked_clients, target_environment: Environment, source_environment: Environment, table1: DatasetTable +def test_check_target_principals_permissions_to_source_table_data_filters( + manager_with_mocked_clients, + target_environment: Environment, + source_environment: Environment, + table1: DatasetTable, + share_item_with_filters: ShareObjectItem, + share_item_data_filter: ShareObjectItemDataFilter, ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - lf_client.check_permissions_to_table.return_value = False + lf_client.check_permissions_to_table_with_filters.return_value = True # When - manager.check_target_account_permissions_to_source_table(table1) + manager.check_target_principals_permissions_to_source_table(table1, share_item, share_item_data_filter) # Then - assert len(manager.tbl_level_errors) == 1 + assert len(manager.tbl_level_errors) == 0 + lf_client.check_permissions_to_table_with_filters.assert_called_once() + lf_client.check_permissions_to_table_with_filters.assert_called_with( + principals=manager.principals, + database_name=table1.GlueDatabaseName, + table_name=table1.GlueTableName, + catalog_id=source_environment.AwsAccountId, + permissions=['SELECT'], + data_filters=share_item_data_filter.dataFilterNames, + ) -def test_verify_resource_link_table_exists_in_target_database( - manager_with_mocked_clients, table1: DatasetTable, mock_glue_client +def test_grant_principals_permissions_to_source_table_data_filters( + manager_with_mocked_clients, + target_environment: Environment, + source_environment: Environment, + table1: DatasetTable, + share_item_with_filters: ShareObjectItem, + share_item_data_filter: ShareObjectItemDataFilter, ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - glue_client.table_exists.return_value = True # When - manager.verify_resource_link_table_exists_in_target_database(table=table1) + manager.grant_principals_permissions_to_source_table(table1, share_item, share_item_data_filter) # Then - assert len(manager.tbl_level_errors) == 0 - glue_client.table_exists.assert_called_once() - glue_client.table_exists.assert_called_with(table1.GlueTableName) + lf_client.grant_permissions_to_table_with_filters.assert_called_once() + lf_client.grant_permissions_to_table_with_filters.assert_called_with( + principals=manager.principals, + database_name=table1.GlueDatabaseName, + table_name=table1.GlueTableName, + catalog_id=source_environment.AwsAccountId, + permissions=['SELECT'], + data_filters=share_item_data_filter.dataFilterNames, + ) -def test_verify_resource_link_table_exists_in_target_database_failed( - manager_with_mocked_clients, table1: DatasetTable, mock_glue_client +def test_revoke_principals_permissions_to_table_in_source_data_filters( + manager_with_mocked_clients, + table1: DatasetTable, + source_environment: Environment, + share_item_with_filters: ShareObjectItem, + share_item_data_filter: ShareObjectItemDataFilter, ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - glue_client.table_exists.return_value = False # When - manager.verify_resource_link_table_exists_in_target_database(table=table1) + manager.revoke_principals_permissions_to_table_in_source( + table=table1, share_item=share_item, share_item_filter=share_item_data_filter + ) + # Then + lf_client.revoke_permissions_to_table_with_filters.assert_called_once() + lf_client.revoke_permissions_to_table_with_filters.assert_called_with( + principals=manager.principals, + database_name=table1.GlueDatabaseName, + table_name=table1.GlueTableName, + catalog_id=source_environment.AwsAccountId, + permissions=['SELECT'], + data_filters=share_item_data_filter.dataFilterNames, + ) + + +def test_check_target_principals_permissions_to_source_table_failed( + manager_with_mocked_clients, + target_environment: Environment, + source_environment: Environment, + table1: DatasetTable, + share_item: ShareObjectItem, +): + manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients + lf_client.check_permissions_to_table_with_columns.return_value = False + # When + manager.check_target_principals_permissions_to_source_table(table1, share_item) # Then assert len(manager.tbl_level_errors) == 1 -def test_check_principals_permissions_to_resource_link_table( - manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment +def test_verify_resource_link_table_exists_in_target_database( + manager_with_mocked_clients, table1: DatasetTable, mock_glue_client ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - lf_client.check_permissions_to_table_with_columns.return_value = True + glue_client.table_exists.return_value = True # When - manager.check_principals_permissions_to_resource_link_table(table1) + manager.verify_resource_link_table_exists_in_target_database(resource_link_name=table1.GlueTableName) # Then assert len(manager.tbl_level_errors) == 0 - lf_client.check_permissions_to_table_with_columns.assert_called_once() - lf_client.check_permissions_to_table_with_columns.assert_called_with( - principals=manager.principals, - database_name=table1.GlueDatabaseName, - table_name=table1.GlueTableName, - catalog_id=source_environment.AwsAccountId, - permissions=['DESCRIBE', 'SELECT'], - ) + glue_client.table_exists.assert_called_once() + glue_client.table_exists.assert_called_with(table1.GlueTableName) -def test_check_principals_permissions_to_resource_link_table_failed( - manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment +def test_verify_resource_link_table_exists_in_target_database_failed( + manager_with_mocked_clients, table1: DatasetTable, mock_glue_client ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - lf_client.check_permissions_to_table_with_columns.return_value = False + glue_client.table_exists.return_value = False # When - manager.check_principals_permissions_to_resource_link_table(table1) + manager.verify_resource_link_table_exists_in_target_database(resource_link_name=table1.GlueTableName) # Then assert len(manager.tbl_level_errors) == 1 -def test_check_principals_permissions_to_table_in_target( +def test_check_principals_permissions_to_resource_link_table( manager_with_mocked_clients, table1: DatasetTable, target_environment: Environment ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - lf_client.check_permissions_to_table.return_value = True + lf_client.check_permissions_to_table_with_columns.return_value = True # When - manager.check_principals_permissions_to_table_in_target(table1) + manager.check_principals_permissions_to_resource_link_table(table1.GlueTableName) # Then assert len(manager.tbl_level_errors) == 0 lf_client.check_permissions_to_table.assert_called_once() @@ -647,13 +693,13 @@ def test_check_principals_permissions_to_table_in_target( ) -def test_check_principals_permissions_to_table_in_target_failed( - manager_with_mocked_clients, table1: DatasetTable, target_environment: Environment +def test_check_principals_permissions_to_resource_link_table_failed( + manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients lf_client.check_permissions_to_table.return_value = False # When - manager.check_principals_permissions_to_table_in_target(table1) + manager.check_principals_permissions_to_resource_link_table(table1.GlueTableName) # Then assert len(manager.tbl_level_errors) == 1 @@ -663,7 +709,7 @@ def test_revoke_principals_permissions_to_resource_link_table( ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients # When - manager.revoke_principals_permissions_to_resource_link_table(table=table1) + manager.revoke_principals_permissions_to_resource_link_table(resource_link_name=table1.GlueTableName) # Then lf_client.revoke_permissions_from_table.assert_called_once() lf_client.revoke_permissions_from_table.assert_called_with( @@ -675,12 +721,12 @@ def test_revoke_principals_permissions_to_resource_link_table( ) -def test_revoke_principals_permissions_to_table_in_target( - manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment +def test_revoke_principals_permissions_to_table_in_source( + manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment, share_item: ShareObjectItem ): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients # When - manager.revoke_principals_permissions_to_table_in_target(table=table1, other_table_shares_in_env=False) + manager.revoke_principals_permissions_to_table_in_source(table=table1, share_item=share_item) # Then lf_client.revoke_permissions_from_table_with_columns.assert_called_once() lf_client.revoke_permissions_from_table_with_columns.assert_called_with( @@ -695,7 +741,7 @@ def test_revoke_principals_permissions_to_table_in_target( def test_delete_resource_link_table_in_shared_database_true(manager_with_mocked_clients, table2: DatasetTable): manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients # When - manager.delete_resource_link_table_in_shared_database(table=table2) + manager.delete_resource_link_table_in_shared_database(resource_link_name=table2.GlueTableName) # Then glue_client.table_exists.assert_called_once() glue_client.delete_table.assert_called_once() @@ -724,24 +770,6 @@ def test_delete_shared_database_in_target( glue_client.delete_database.assert_called_once() -def test_revoke_external_account_access_on_source_account( - manager_with_mocked_clients, table1: DatasetTable, source_environment: Environment, target_environment: Environment -): - manager, lf_client, glue_client, mock_glue_client = manager_with_mocked_clients - # When - manager.revoke_external_account_access_on_source_account(table1) - # Then - lf_client.revoke_permissions_from_table_with_columns.assert_called_once() - lf_client.revoke_permissions_from_table_with_columns.assert_called_with( - principals=[target_environment.AwsAccountId], - database_name=table1.GlueDatabaseName, - table_name=table1.GlueTableName, - catalog_id=source_environment.AwsAccountId, - permissions=['DESCRIBE', 'SELECT'], - permissions_with_grant_options=['DESCRIBE', 'SELECT'], - ) - - def test_check_catalog_account_exists_and_update_processor_with_catalog_exists( db, table1, diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 96433d787..2f69502dd 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -146,6 +146,11 @@ def table3(table: typing.Callable, dataset3: S3Dataset) -> DatasetTable: yield table(dataset=dataset3, name='table3', username='bob') +@pytest.fixture(scope='module') +def table_data_filter_fixture(db, table_fixture, table_column_data_filter, group, user): + yield table_column_data_filter(table=table_fixture, name='datafilter1', filterType='COLUMN') + + @pytest.fixture(scope='function') def share1_draft( db, @@ -497,6 +502,7 @@ def get_share_object(client, user, group, shareUri, filter): healthStatus healthMessage lastVerificationTime + attachedDataFilterUri } } dataset { @@ -522,6 +528,30 @@ def get_share_object(client, user, group, shareUri, filter): return response +def get_share_item_data_filters(client, user, group, attachedDataFilterUri): + q = """ + query getShareItemDataFilters($attachedDataFilterUri: String!) { + getShareItemDataFilters(attachedDataFilterUri: $attachedDataFilterUri) { + attachedDataFilterUri + label + dataFilterUris + dataFilterNames + itemUri + } + } + """ + + response = client.query( + q, + username=user.username, + groups=[group.name], + attachedDataFilterUri=attachedDataFilterUri, + ) + # Print response + print('get_share_item_data_filters response: ', response) + return response + + def update_share_request_purpose(client, user, group, shareUri, requestPurpose): q = """ mutation updateShareRequestReason($shareUri: String!,$requestPurpose: String!) { @@ -622,6 +652,37 @@ def add_share_item(client, user, group, shareUri, itemUri, itemType): return response +def update_share_item_filter(client, user, group, input): + q = """ + mutation updateShareItemFilters($input: ModifyFiltersTableShareItemInput!) { + updateShareItemFilters(input: $input) + } + """ + + response = client.query(q, username=user.username, groups=[group.name], input=input) + + print('Response from updateShareItemFilters: ', response) + return response + + +def remove_share_item_filter(client, user, group, attachedDataFilterUri): + q = """ + mutation removeShareItemFilter($attachedDataFilterUri: String!) { + removeShareItemFilter(attachedDataFilterUri: $attachedDataFilterUri) + } + """ + + response = client.query( + q, + username=user.username, + groups=[group.name], + attachedDataFilterUri=attachedDataFilterUri, + ) + + print('Response from removeShareItemFilter: ', response) + return response + + def remove_share_item(client, user, group, shareItemUri): q = """ mutation RemoveSharedItem($shareItemUri: String!) { @@ -1177,6 +1238,78 @@ def test_add_share_item(client, user2, group2, share1_draft, mock_glue_client): assert add_share_item_response.data.addSharedItem.status == ShareItemStatus.PendingApproval.name +# remove_share_item_filter +def test_update_share_item_filter(client, user, group, share1_draft, share1_item_pa, table_data_filter_fixture): + # # Given + # # Existing share object in status Draft (-> fixture share1_draft) + get_share_object_response = get_share_object( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={'isShared': True} + ) + # # Given existing shareable items (-> fixture) + shareItem = get_share_object_response.data.getShareObject.get('items').nodes[0] + print('\n\n\n\n SHARE ITMES \n\n') + print(get_share_object_response.data.getShareObject.get('items')) + assert shareItem.shareItemUri == share1_item_pa.shareItemUri + + # When we update share item filter + input = { + 'shareItemUri': share1_item_pa.shareItemUri, + 'label': 'test', + 'filterUris': [table_data_filter_fixture.filterUri], + 'filterNames': [table_data_filter_fixture.label], + } + update_share_item_filter_response = update_share_item_filter(client=client, user=user, group=group, input=input) + + # Then shared item filter was added to share object item + assert update_share_item_filter_response.data.updateShareItemFilters == True + get_share_object_response = get_share_object( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={'isShared': True} + ) + shareItem = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert shareItem.attachedDataFilterUri + + get_share_item_data_filters_response = get_share_item_data_filters( + client=client, user=user, group=group, attachedDataFilterUri=shareItem.attachedDataFilterUri + ) + assert get_share_item_data_filters_response.data.getShareItemDataFilters.itemUri == share1_item_pa.itemUri + assert ( + get_share_item_data_filters_response.data.getShareItemDataFilters.dataFilterUris[0] + == table_data_filter_fixture.filterUri + ) + assert ( + get_share_item_data_filters_response.data.getShareItemDataFilters.dataFilterNames[0] + == table_data_filter_fixture.label + ) + + # When we update share item filter + input = { + 'shareItemUri': share1_item_pa.shareItemUri, + 'label': 'testnew', + 'filterUris': [table_data_filter_fixture.filterUri], + 'filterNames': [table_data_filter_fixture.label], + } + update_share_item_filter_response = update_share_item_filter(client=client, user=user, group=group, input=input) + + # Then shared item filter name was updated + get_share_item_data_filters_response = get_share_item_data_filters( + client=client, user=user, group=group, attachedDataFilterUri=shareItem.attachedDataFilterUri + ) + assert get_share_item_data_filters_response.data.getShareItemDataFilters.label == 'testnew' + + # When we remove the share item filter + remove_share_item_filter_response = remove_share_item_filter( + client=client, user=user, group=group, attachedDataFilterUri=shareItem.attachedDataFilterUri + ) + + # Then Share item has not attached filter URI + get_share_object_response = get_share_object( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={'isShared': True} + ) + # # Given existing shareable items (-> fixture) + shareItem = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert shareItem.attachedDataFilterUri is None + + def test_remove_share_item(client, user2, group2, share1_draft, share1_item_pa): # Existing share object in status Draft (-> fixture share1_draft) # with existing share item in status Pending Approval (-> fixture share_item_pa) From 3269cb7efc69e47d17c0674b7454cd96d516b63b Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 13 Aug 2024 11:29:44 +0200 Subject: [PATCH 029/188] Fix history of alembic migration scripts data filters vs metadata forms (#1478) ### Feature or Bugfix - Bugfix ### Detail Given 2 pull requests that were tested but approved&merged at different points in time the alembic migration scripts run into a history mismatch because the migrations sequence ended up with 2 heads. image `add_data_filters_table` should be executed after `mf_field_description`. This PR updates the down revision of `add_data_filters_table` accordingly to end up with: image ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../versions/9efe5f7c69a1_add_data_filters_table.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py index 415cc40bb..5b85e8a9f 100644 --- a/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py +++ b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py @@ -1,7 +1,7 @@ """add_data_filters_table Revision ID: 9efe5f7c69a1 -Revises: b2ca24b72ca4 +Revises: afcfc928c640 Create Date: 2024-07-17 11:05:26.077658 """ @@ -18,7 +18,7 @@ # revision identifiers, used by Alembic. revision = '9efe5f7c69a1' -down_revision = 'b2ca24b72ca4' +down_revision = 'afcfc928c640' branch_labels = None depends_on = None From b640e88a3268c46cdf64768b1ec8d4574335ba4e Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 13 Aug 2024 11:30:06 +0200 Subject: [PATCH 030/188] Redshift data sharing - Polish frontend views for Redshit shares (#1477) ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is focused on small FE enhancements to adapt the share views to Redshift shares: Add RedshiftTable as type to plot in shareView -> list Items, edit (add items), verify items ![Screenshot 2024-08-12 at 13 29 18](https://github.com/user-attachments/assets/0c48ca8f-5ce4-41c5-aca9-62928c4345d0) Solve issue with redirect in the ShareView header (it redirected to s3-datasets/dataset/uri) Add principal resolver that resolves as principal the Redshift role (also removed unused fields for principal in backend) ![Screenshot 2024-08-12 at 13 31 07](https://github.com/user-attachments/assets/60be4e6d-fb0c-4a23-9e04-3775f9d0d4f8) Replace IAM role references with a generic role and added icons ![Screenshot 2024-08-12 at 13 31 51](https://github.com/user-attachments/assets/1798a902-3398-4cbc-8aef-96797298c91a) Finally, added shares tab in the Redshift Dataset View: ![image](https://github.com/user-attachments/assets/e321304c-8dfa-460f-bca0-ef24f4fcb594) ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/shares_base/api/resolvers.py | 10 ++---- .../dataall/modules/shares_base/api/types.py | 9 ++--- .../Redshift_Datasets/views/RSDatasetView.js | 14 +++++++- .../modules/Shares/components/ShareBoxList.js | 2 +- .../Shares/components/ShareBoxListItem.js | 34 ++++++++++++++++--- .../modules/Shares/services/getShareObject.js | 9 ++--- .../Shares/services/getShareRequestsFromMe.js | 10 ++---- .../src/modules/Shares/views/ShareView.js | 9 ++++- .../ShareObject/getShareRequestsToMe.js | 10 ++---- frontend/src/utils/share.js | 4 ++- .../modules/s3_datasets_shares/test_share.py | 10 ++---- 11 files changed, 69 insertions(+), 52 deletions(-) diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index aacd81398..96e05d60b 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -218,7 +218,6 @@ def resolve_principal(context: Context, source: ShareObject, **kwargs): with context.engine.scoped_session() as session: if source.principalType in set(item.value for item in PrincipalType): environment = EnvironmentService.get_environment_by_uri(session, source.environmentUri) - organization = OrganizationRepository.get_organization_by_uri(session, environment.organizationUri) if source.principalType == PrincipalType.ConsumptionRole.value: principal = EnvironmentService.get_environment_consumption_role( session, source.principalId, source.environmentUri @@ -228,20 +227,15 @@ def resolve_principal(context: Context, source: ShareObject, **kwargs): principal = EnvironmentService.get_environment_group(session, source.groupUri, source.environmentUri) principalName = f'{source.groupUri} [{principal.environmentIAMRoleArn}]' else: - principalName = source.principalId + principalName = f'Redshift Role [{source.principalRoleName}]' return { + 'principalName': principalName, 'principalId': source.principalId, 'principalType': source.principalType, - 'principalName': principalName, 'principalRoleName': source.principalRoleName, 'SamlGroupName': source.groupUri, - 'environmentUri': environment.environmentUri, 'environmentName': environment.label, - 'AwsAccountId': environment.AwsAccountId, - 'region': environment.region, - 'organizationUri': organization.organizationUri, - 'organizationName': organization.label, } diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 6f2fba524..7ed7d4258 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -216,17 +216,12 @@ Principal = gql.ObjectType( name='Principal', fields=[ - gql.Field(name='principalId', type=gql.ID), - gql.Field(name='principalType', type=PrincipalType.toGraphQLEnum()), gql.Field(name='principalName', type=gql.String), + gql.Field(name='principalType', type=PrincipalType.toGraphQLEnum()), + gql.Field(name='principalId', type=gql.ID), gql.Field(name='principalRoleName', type=gql.String), gql.Field(name='SamlGroupName', type=gql.String), gql.Field(name='environmentName', type=gql.String), - gql.Field(name='environmentUri', type=gql.String), - gql.Field(name='AwsAccountId', type=gql.String), - gql.Field(name='region', type=gql.String), - gql.Field(name='organizationName', type=gql.String), - gql.Field(name='organizationUri', type=gql.String), ], ) diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js index 4b1d50cd9..e0bdea6ef 100644 --- a/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetView.js @@ -1,6 +1,7 @@ import { ForumOutlined, Info, + ShareOutlined, ViewArrayOutlined, Warning } from '@mui/icons-material'; @@ -34,8 +35,9 @@ import { } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { countUpVotes, getVote, upVote, useClient } from 'services'; -import { deleteRedshiftDataset, getRedshiftDataset } from '../services'; import { FeedComments } from 'modules/Shared'; +import { ShareBoxList } from 'modules/Shares'; +import { deleteRedshiftDataset, getRedshiftDataset } from '../services'; import { RedshiftDatasetTables, RedshiftDatasetOverview } from '../components'; const RSDatasetView = () => { @@ -62,6 +64,13 @@ const RSDatasetView = () => { icon: } ]; + if (isAdmin) { + tabs.push({ + label: 'Shares', + value: 'shares', + icon: + }); + } return tabs; }; @@ -287,6 +296,9 @@ const RSDatasetView = () => { {currentTab === 'overview' && ( )} + {isAdmin && currentTab === 'shares' && ( + + )} diff --git a/frontend/src/modules/Shares/components/ShareBoxList.js b/frontend/src/modules/Shares/components/ShareBoxList.js index 44f1c0e41..1f9bcf539 100644 --- a/frontend/src/modules/Shares/components/ShareBoxList.js +++ b/frontend/src/modules/Shares/components/ShareBoxList.js @@ -481,7 +481,7 @@ export const ShareBoxList = (props) => { renderInput={(params) => ( diff --git a/frontend/src/modules/Shares/components/ShareBoxListItem.js b/frontend/src/modules/Shares/components/ShareBoxListItem.js index c99c8cc03..f404bdc1e 100644 --- a/frontend/src/modules/Shares/components/ShareBoxListItem.js +++ b/frontend/src/modules/Shares/components/ShareBoxListItem.js @@ -1,12 +1,27 @@ -import { Box, Button, Card, Grid, Tooltip, Typography } from '@mui/material'; +import { + Avatar, + Box, + Button, + Card, + Grid, + Tooltip, + Typography +} from '@mui/material'; import PropTypes from 'prop-types'; import { Link as RouterLink } from 'react-router-dom'; import { ShareStatus, useCardStyle } from 'design'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import ErrorIcon from '@mui/icons-material/Error'; +import React from 'react'; export const ShareBoxListItem = ({ share }) => { const classes = useCardStyle(); + const dataset_icon = + share.dataset.datasetType === 'DatasetTypes.S3' + ? '/static/icons/Arch_Amazon-Simple-Storage-Service_64.svg' + : share.dataset.datasetType === 'DatasetTypes.Redshift' + ? '/static/icons/Arch_Amazon-Redshift_64.svg' + : '-'; return ( { }} > + + + + + { }} > - IAM role name + Role name { - + diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index dec6ea662..1942489e5 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -17,17 +17,12 @@ export const getShareObject = ({ shareUri, filter }) => ({ userRoleForShareObject canViewLogs principal { - principalId - principalType principalName + principalType + principalId principalRoleName SamlGroupName - environmentUri environmentName - AwsAccountId - region - organizationUri - organizationName } items(filter: $filter) { count diff --git a/frontend/src/modules/Shares/services/getShareRequestsFromMe.js b/frontend/src/modules/Shares/services/getShareRequestsFromMe.js index 7998c5035..3f7e2996e 100644 --- a/frontend/src/modules/Shares/services/getShareRequestsFromMe.js +++ b/frontend/src/modules/Shares/services/getShareRequestsFromMe.js @@ -18,17 +18,12 @@ export const getShareRequestsFromMe = ({ filter }) => ({ status userRoleForShareObject principal { - principalId - principalType principalName + principalType + principalId principalRoleName SamlGroupName - environmentUri environmentName - AwsAccountId - region - organizationUri - organizationName } statistics { sharedItems @@ -39,6 +34,7 @@ export const getShareRequestsFromMe = ({ filter }) => ({ dataset { datasetUri datasetName + datasetType SamlAdminGroupName environmentName exists diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 1ed59f1f4..3ee8d8c66 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -96,6 +96,13 @@ function ShareViewHeader(props) { const [isSubmitShareModalOpen, setIsSubmitShareModalOpen] = useState(false); + const datasetTypeLink = + share.dataset.datasetType === 'DatasetTypes.S3' + ? `s3-datasets` + : share.dataset.datasetType === 'DatasetTypes.Redshift' + ? `redshift-datasets` + : '-'; + const submit = async () => { setSubmitting(true); const response = await client.mutate( @@ -255,7 +262,7 @@ function ShareViewHeader(props) { color="textSecondary" variant="subtitle2" component={RouterLink} - to={`/console/s3-datasets/${share.dataset?.datasetUri}`} + to={`/console/${datasetTypeLink}/${share.dataset?.datasetUri}`} > {share.dataset?.datasetName} diff --git a/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js b/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js index b1120cfbd..aadd3347d 100644 --- a/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js +++ b/frontend/src/services/graphql/ShareObject/getShareRequestsToMe.js @@ -18,17 +18,12 @@ export const getShareRequestsToMe = ({ filter }) => ({ status userRoleForShareObject principal { - principalId - principalType principalName + principalType + principalId principalRoleName SamlGroupName - environmentUri environmentName - AwsAccountId - region - organizationUri - organizationName } statistics { sharedItems @@ -39,6 +34,7 @@ export const getShareRequestsToMe = ({ filter }) => ({ dataset { datasetUri datasetName + datasetType SamlAdminGroupName environmentName exists diff --git a/frontend/src/utils/share.js b/frontend/src/utils/share.js index c52099d0e..041819dff 100644 --- a/frontend/src/utils/share.js +++ b/frontend/src/utils/share.js @@ -1,10 +1,12 @@ export const generateShareItemLabel = (itemType): string => { switch (itemType) { case 'Table': - return 'Table'; + return 'GlueTable'; case 'S3Bucket': return 'S3Bucket'; case 'StorageLocation': return 'Folder'; + case 'RedshiftTable': + return 'RedshiftTable'; } }; diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 2f69502dd..c5eacf7f3 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -474,17 +474,12 @@ def get_share_object(client, user, group, shareUri, filter): rejectPurpose userRoleForShareObject principal { - principalId - principalType principalName + principalType + principalId principalRoleName SamlGroupName - environmentUri environmentName - AwsAccountId - region - organizationUri - organizationName } items(filter: $filter) { count @@ -1147,7 +1142,6 @@ def test_get_share_object(client, share1_draft, user, group): assert get_share_object_response.data.getShareObject.get('principal').principalType == PrincipalType.Group.name assert get_share_object_response.data.getShareObject.get('principal').principalRoleName assert get_share_object_response.data.getShareObject.get('principal').SamlGroupName - assert get_share_object_response.data.getShareObject.get('principal').region def test_update_share_request_purpose(client, share1_draft, user2, group2): From 1abb4702f56a264f39404ca90c87e40673a88876 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 14 Aug 2024 09:17:53 +0100 Subject: [PATCH 031/188] Bugfix: Parsing error in Admin settings tab (#1482) ### Feature or Bugfix - Bugfix ### Detail - if permissions is not found -- do not put them (null) in the list ### Relates - #1481 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../permissions/services/tenant_policy_service.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/dataall/core/permissions/services/tenant_policy_service.py b/backend/dataall/core/permissions/services/tenant_policy_service.py index 71823b3fa..190fcff35 100644 --- a/backend/dataall/core/permissions/services/tenant_policy_service.py +++ b/backend/dataall/core/permissions/services/tenant_policy_service.py @@ -159,13 +159,15 @@ def list_tenant_permissions(): group_invitation_permissions = [] with context.db_engine.scoped_session() as session: for p in TENANT_ALL: - group_invitation_permissions.append( - PermissionRepository.find_permission_by_name( - session=session, - permission_name=p, - permission_type=PermissionType.TENANT.name, - ) + perm_obj = PermissionRepository.find_permission_by_name( + session=session, + permission_name=p, + permission_type=PermissionType.TENANT.name, ) + if perm_obj is not None: + group_invitation_permissions.append(perm_obj) + else: + log.error(f'Permission {p} not found') return group_invitation_permissions @staticmethod From 7774aadf2b9255ecedf5e55948323e2bfb2e0a9e Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:31:59 +0200 Subject: [PATCH 032/188] Redshift data sharing - Add sharing tasks to process Redshift datashares (#1467) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is the CORE of the redshift dataset sharing implementation. - Implement sharing logic in ECS task for approve, revoke and verify. ❗check the "Sharing with Redshift" section of the design with the key decisions on the sharing workflow - Add the necessary redshift data API calls in the redshift_data client - Move share alarm utils to shares_base so that they can be re-used in redshift sharing. It would be good to rename the file but it can wait. - Includes tests for the processor functions: approve, revoke, verify In contrast to the design in the Glue or S3 sharing mechanisms, in this case I decided to keep it simple and use the AWS client directly from the processor without a manager. ❗ I did not find a way to check permissions granted to redshift roles in Redshift. For this reason in the verification task we are not checking the last 2 steps of the share. In Redshift it is possible to check user permissions to tables (with [has_table_permissions](https://docs.aws.amazon.com/redshift/latest/dg/r_HAS_TABLE_PRIVILEGE.html)) and role permissions to datashares, databases and schemas woth some of the [info tables and views](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_system-tables.html); but when it comes to tables there is not a table to look up or a system function. For the moment I have not included this step, but I'll be meeting more Redshift experts for guidance. The "good" thing is that it is the last step for a share to succeed, so it will be a matter of users trying and getting an "Access denied for insufficient permissions", which can be troubleshooted There are still a number of issues to be fixed on subsequent PRs: - add guardrails to share creation - polish FE (e.g. principal id, resource type) - avoid IAM checks and dataset and IAM locks for Redshift ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../dataall/base/utils/naming_convention.py | 5 + .../cdk/pivot_role_redshift_policy.py | 1 - .../db/redshift_connection_repositories.py | 14 +- .../services/redshift_connection_service.py | 1 - .../redshift_datasets_shares/aws/redshift.py | 57 ++ .../aws/redshift_data.py | 442 +++++++++++++ ...pivot_role_redshift_data_sharing_policy.py | 41 +- .../db/redshift_share_object_repositories.py | 92 ++- .../services/redshift_shares_enums.py | 15 + .../redshift_table_share_processor.py | 583 +++++++++++++++++- .../share_managers/lf_share_manager.py | 2 +- .../s3_access_point_share_manager.py | 2 +- .../share_managers/s3_bucket_share_manager.py | 2 +- .../glue_table_share_processor.py | 2 +- .../db/share_object_repositories.py | 3 +- .../services}/share_manager_utils.py | 4 + .../services/share_object_service.py | 37 +- .../shares_base/services/sharing_service.py | 117 ++-- .../redshift_datasets_shares/__init__.py | 0 .../redshift_datasets_shares/conftest.py | 378 ++++++++++++ .../test_redshift_share.py | 11 + .../test_redshift_table_processor.py | 397 ++++++++++++ 22 files changed, 2118 insertions(+), 88 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets_shares/aws/redshift.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py create mode 100644 backend/dataall/modules/redshift_datasets_shares/services/redshift_shares_enums.py rename backend/dataall/modules/{s3_datasets_shares/services/share_managers => shares_base/services}/share_manager_utils.py (86%) create mode 100644 tests/modules/redshift_datasets_shares/__init__.py create mode 100644 tests/modules/redshift_datasets_shares/conftest.py create mode 100644 tests/modules/redshift_datasets_shares/test_redshift_share.py create mode 100644 tests/modules/redshift_datasets_shares/test_redshift_table_processor.py diff --git a/backend/dataall/base/utils/naming_convention.py b/backend/dataall/base/utils/naming_convention.py index 8299e7d9c..a756c371c 100644 --- a/backend/dataall/base/utils/naming_convention.py +++ b/backend/dataall/base/utils/naming_convention.py @@ -15,6 +15,11 @@ class NamingConventionPattern(Enum): OPENSEARCH = {'regex': '[^a-z0-9-]', 'separator': '-', 'max_length': 27} OPENSEARCH_SERVERLESS = {'regex': '[^a-z0-9-]', 'separator': '-', 'max_length': 31} DATA_FILTERS = {'regex': '^[a-z0-9_]*$', 'separator': '_', 'max_length': 31} + REDSHIFT_DATASHARE = { + 'regex': '[^a-zA-Z0-9_]', + 'separator': '_', + 'max_length': 1000, + } # Maximum length of 2147483647 class NamingConventionService: diff --git a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py index d61d92b1e..8eb7c7712 100644 --- a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py +++ b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py @@ -7,7 +7,6 @@ from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository from dataall.modules.redshift_datasets.aws.redshift_serverless import redshift_serverless_client -from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftConnectionTypes class RedshiftDatasetsPivotRole(PivotRoleStatementSet): diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py index 31fc6e9b7..fed9c525a 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -6,6 +6,7 @@ from dataall.core.environment.services.environment_resource_manager import EnvironmentResource from dataall.base.db import paginate from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftConnectionTypes logger = logging.getLogger(__name__) @@ -62,12 +63,19 @@ def _query_user_redshift_connections(session, username, groups, filter) -> Query return query.order_by(RedshiftConnection.label) @staticmethod - def list_environment_redshift_connections(session, environment_uri, filter_type=[]): + def list_environment_redshift_connections(session, environment_uri): query = session.query(RedshiftConnection).filter(RedshiftConnection.environmentUri == environment_uri) - if filter_type: - query = query.filter(RedshiftConnection.connectionType.in_(filter_type)) return query.order_by(RedshiftConnection.label).all() + @staticmethod + def get_namespace_admin_connection(session, environment_uri, namespace_id): + query = session.query(RedshiftConnection).filter( + RedshiftConnection.environmentUri == environment_uri, + RedshiftConnection.nameSpaceId == namespace_id, + RedshiftConnection.connectionType == RedshiftConnectionTypes.ADMIN.value, + ) + return query.first() + @staticmethod def paginated_user_redshift_connections(session, username, groups, filter={}) -> dict: return paginate( diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index daf2e2b7c..d0edc0c05 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -41,7 +41,6 @@ def create_redshift_connection(uri, admin_group, data: dict) -> RedshiftConnecti environment = EnvironmentService.get_environment_by_uri(session, uri) connection = RedshiftConnection( label=data.get('connectionName'), - name=data.get('connectionName'), owner=context.username, environmentUri=environment.environmentUri, SamlGroupName=admin_group, diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py new file mode 100644 index 000000000..39e218bdb --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py @@ -0,0 +1,57 @@ +import logging + +from botocore.exceptions import ClientError + +from dataall.base.aws.sts import SessionHelper +from dataall.modules.redshift_datasets_shares.services.redshift_shares_enums import RedshiftDatashareStatus + +log = logging.getLogger(__name__) + + +class RedshiftShareClient: + def __init__(self, account_id: str, region: str) -> None: + session = SessionHelper.remote_session(accountid=account_id, region=region) + self.client = session.client(service_name='redshift', region_name=region) + + def authorize_datashare(self, datashare_arn: str, account: str) -> None: + """ + Authorize a datashare to an account. If the datashare is already authorized it will succeed. + """ + try: + log.info(f'Authorizing datashare {datashare_arn=} to consumer {account}...') + self.client.authorize_data_share(DataShareArn=datashare_arn, ConsumerIdentifier=account, AllowWrites=False) + except ClientError as e: + log.error(e) + raise e + + def associate_datashare(self, datashare_arn: str, consumer_arn: str): + """ + Associate a datashare with a namespace. If the datashare is already associated it will succeed. + """ + try: + log.info(f'Associating datashare {datashare_arn=} to {consumer_arn=}...') + self.client.associate_data_share_consumer( + DataShareArn=datashare_arn, ConsumerArn=consumer_arn, AllowWrites=False, AssociateEntireAccount=False + ) + except ClientError as e: + log.error(e) + raise e + + def get_datashare_status(self, datashare_arn: str, consumer_id: str): + try: + log.info(f'Checking status of datashare {datashare_arn=} for {consumer_id=}') + response = self.client.describe_data_shares(DataShareArn=datashare_arn) + datashares = [ + d + for d in response.get('DataShares', [])[0].get('DataShareAssociations', []) + if d.get('ConsumerIdentifier') == consumer_id + ] + return datashares[0].get('Status') if len(datashares) > 0 else RedshiftDatashareStatus.NotFound.value + except ClientError as e: + log.error(e) + return RedshiftDatashareStatus.NotFound.value + + +def redshift_share_client(account_id: str, region: str) -> RedshiftShareClient: + "Factory of Client" + return RedshiftShareClient(account_id=account_id, region=region) diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py new file mode 100644 index 000000000..9be00b236 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py @@ -0,0 +1,442 @@ +import logging +import time +from dataall.base.aws.sts import SessionHelper +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection + +log = logging.getLogger(__name__) + + +class RedshiftShareDataClient: + def __init__(self, account_id: str, region: str, connection: RedshiftConnection) -> None: + session = SessionHelper.remote_session(accountid=account_id, region=region) + self.client = session.client(service_name='redshift-data', region_name=region) + self.database = connection.database + self.execute_connection_params = { + 'Database': connection.database, + } + if connection.workgroup: + self.execute_connection_params['WorkgroupName'] = connection.workgroup + if connection.clusterId: + self.execute_connection_params['ClusterIdentifier'] = connection.clusterId + if connection.secretArn: + self.execute_connection_params['SecretArn'] = connection.secretArn + if connection.redshiftUser and connection.clusterId: + # https://boto3.amazonaws.com/v1/documentation/api/1.26.93/reference/services/redshift-data/client/list_databases.html + # We cannot use DbUser with serverless for role federation. + # It must use the current session IAM role, which in this case would be the pivot role. + self.execute_connection_params['DbUser'] = connection.redshiftUser + + def _execute_statement(self, sql: str): + log.info(f'Executing {sql=} with connection {self.execute_connection_params}...') + execute_dict = self.execute_connection_params + execute_dict['Sql'] = sql + execute_statement_response = self.client.execute_statement(**execute_dict) + + while (describe_statement_response := self.client.describe_statement(Id=execute_statement_response['Id']))[ + 'Status' + ] in ['PICKED', 'STARTED', 'SUBMITTED']: + time.sleep(1) + + if describe_statement_response['Status'] == 'FAILED': + raise Exception(describe_statement_response['Error']) + + log.info(f'Received response {describe_statement_response["Id"]}') + return describe_statement_response['Id'] + + def _execute_statement_return_records(self, sql: str): + id = self._execute_statement(sql=sql) + log.info(f'Returning records for sql {id=}...') + try: + response = self.client.get_statement_result(Id=id) + next_token = response.get('NextToken', None) + records = response.get('Records', []) + while next_token: + response = self.client.get_statement_result(Id=response['Id'], NextToken=next_token) + new_records = response.get('Records', []) + records.extend(new_records) + next_token = response.get('NextToken', None) + filtered_records = [[d for d in record if d.get('stringValue', False)] for record in records] + log.info(f'Returning {len(filtered_records)} records from executed statement') + return filtered_records + except Exception as e: + log.error(f'Failed to retrieve records for sql {id=}: {e}') + raise e + + @staticmethod + def double_quoted_name(name: str) -> str: + return f'"{name}"' + + @staticmethod + def single_quoted_name(name: str) -> str: + return f"'{name}'" + + @staticmethod + def quoted_object_names(*names) -> str: + quoted_names = [RedshiftShareDataClient.double_quoted_name(name) for name in names if name] + return '.'.join(quoted_names) + + def create_datashare(self, datashare: str) -> bool: + """Create datashare if not already created. + Returns: bool: True if created, False if already exists + """ + try: + log.info(f'Creating {datashare=}...') + sql_statement = f'CREATE DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)};' + self._execute_statement(sql=sql_statement) + return True + except Exception as e: + allowed_error_messages = [f'ERROR: share "{datashare}" already exists'] + error_message = e.args[0] + if error_message in allowed_error_messages: + log.info(f'Datashare {datashare} already exists') + return False + else: + log.error(f'Creation of {datashare=} failed due to: {e}') + raise e + + def drop_datashare(self, datashare: str): + """ + Drop datashare if not already deleted + """ + try: + log.info(f'Dropping {datashare=}...') + sql_statement = f'DROP DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)};' + self._execute_statement(sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Datashare {datashare} does not exist' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'Datashare {datashare} does not exist. No need to drop it any more.') + else: + log.error(f'Deletion of {datashare=} failed due to: {e}') + raise e + + def check_datashare_exists(self, datashare: str): + """Check that datashare exists by describing datashare""" + try: + log.info(f'Checking {datashare=}...') + sql_statement = f'DESC DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)};' + return self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Checking of {datashare=} failed due to: {e}') + return False + + def add_schema_to_datashare(self, datashare: str, schema: str): + """Add schema to datashare if not already added""" + try: + log.info(f'Adding schema {schema=} to {datashare=}...') + sql_statement = f'ALTER DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} ADD SCHEMA {RedshiftShareDataClient.double_quoted_name(schema)};' + self._execute_statement(sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Schema {schema} is already added to the datashare {datashare}' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'{schema=} is already present in {datashare=}') + else: + log.error(f'Adding {schema=} to {datashare=} failed due to: {e}') + raise e + + def check_schema_in_datashare(self, datashare: str, schema: str) -> bool: + """Check that schema exists in datashare by describing datashare""" + try: + log.info(f'Checking {schema=} in {datashare=}...') + sql_statement = f'DESC DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)};' + records = self._execute_statement_return_records(sql=sql_statement) + schemas_in_datashare = [ + [d for d in record][5]['stringValue'] + for record in records + if [d for d in record][4]['stringValue'] in ['schema'] + ] + log.info(f'Found {schemas_in_datashare=}') + return schema in schemas_in_datashare + except Exception as e: + log.error(f'Checking of {schema=} in {datashare=} failed due to: {e}') + return False + + def add_table_to_datashare(self, datashare: str, schema: str, table_name: str): + """Add table to datashare if not already added""" + try: + log.info(f'Adding table {table_name=} to {datashare=}...') + table = RedshiftShareDataClient.quoted_object_names(self.database, schema, table_name) + sql_statement = ( + f'ALTER DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} ADD TABLE {table};' + ) + self._execute_statement(sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Relation {table_name} is already added to the datashare {datashare}' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'Table {table_name} is already present in the {datashare=}') + else: + log.error(f'Adding {table_name=} of {datashare=} failed due to: {e}') + raise e + + def check_table_in_datashare(self, datashare: str, table_name: str) -> bool: + """Check that table exists in datashare by describing datashare""" + try: + log.info(f'Checking {table_name=} in {datashare=}...') + sql_statement = f'DESC DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)};' + records = self._execute_statement_return_records(sql=sql_statement) + tables_in_datashare = [ + [d for d in record][5]['stringValue'].split('.')[-1] # "schemaname.tablename" + for record in records + if [d for d in record][4]['stringValue'] in ['table'] + ] + log.info(f'Found {tables_in_datashare=}') + return table_name in tables_in_datashare + except Exception as e: + log.error(f'Checking of {table_name} in {datashare=} failed due to: {e}') + return False + + def remove_table_from_datashare(self, datashare: str, schema: str, table_name: str): + """Remove table from datashare if not already removed""" + try: + log.info(f'Removing table {table_name=} from {datashare=}...') + table = RedshiftShareDataClient.quoted_object_names(self.database, schema, table_name) + sql_statement = ( + f'ALTER DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} REMOVE TABLE {table};' + ) + self._execute_statement(sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Datashare {datashare} does not contain the Relation {table_name}' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'Table {table_name} does not exist on datashare {datashare}. No need to remove it any more.') + else: + log.error(f'Removing {table_name=} from {datashare=} failed due to: {e}') + raise e + + def grant_datashare_usage_to_namespace(self, datashare: str, namespace: str): + """Grant usage on datashare to cluster. If already granted, it succeeds""" + try: + log.info(f'Grant usage on {datashare=} to {namespace=}..') + sql_statement = f'GRANT USAGE ON DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} TO NAMESPACE {RedshiftShareDataClient.single_quoted_name(namespace)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Granting usage to datashare failed due to: {e}') + raise e + + def grant_datashare_usage_to_account(self, datashare: str, account: str): + """Grant usage on datashare to AWS account. If already granted, it succeeds""" + try: + log.info(f'Grant usage on {datashare=} to {account=}..') + sql_statement = f'GRANT USAGE ON DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} TO ACCOUNT {RedshiftShareDataClient.single_quoted_name(account)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Granting usage to datashare failed due to: {e}') + raise e + + def check_consumer_permissions_to_datashare(self, datashare: str) -> bool: + """Lists consumer datashares and checks it input datashare is among consumer datashares""" + try: + log.info(f'Check {datashare=} is accessible from target') + sql_statement = 'SHOW DATASHARES;' + records = self._execute_statement_return_records(sql=sql_statement) + datashares_in_namespace = [[d for d in record][0]['stringValue'] for record in records] + log.info(f'Found {datashares_in_namespace=}') + return datashare in datashares_in_namespace + except Exception as e: + log.error(f'Checking of {datashare=} in consumer namespace failed due to: {e}') + return False + + def create_database_from_datashare(self, database: str, datashare: str, namespace: str, account: str = None): + """Create database from datashare. If it already exists, it succeeds""" + try: + log.info(f'Create {database=} from {datashare=} from source {namespace=}') + if account: + sql_statement = f'CREATE DATABASE {RedshiftShareDataClient.double_quoted_name(database)} WITH PERMISSIONS FROM DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} OF ACCOUNT {RedshiftShareDataClient.single_quoted_name(account)} NAMESPACE {RedshiftShareDataClient.single_quoted_name(namespace)};' + else: + sql_statement = f'CREATE DATABASE {RedshiftShareDataClient.double_quoted_name(database)} WITH PERMISSIONS FROM DATASHARE {RedshiftShareDataClient.double_quoted_name(datashare)} OF NAMESPACE {RedshiftShareDataClient.single_quoted_name(namespace)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + allowed_error_message = ( + f'ERROR: database {RedshiftShareDataClient.double_quoted_name(database)} already exists' + ) + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'Database {RedshiftShareDataClient.double_quoted_name(database)} already exists') + else: + log.error(f'Creation of {database=} failed due to: {e}') + raise e + + def drop_database(self, database: str): + """Delete database, if not deleted already""" + try: + log.info(f'Dropping {database=}...') + sql_statement = f'DROP DATABASE {RedshiftShareDataClient.double_quoted_name(database)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + allowed_error_message = ( + f'ERROR: database {RedshiftShareDataClient.double_quoted_name(database)} does not exist' + ) + error_message = e.args[0] + if error_message == allowed_error_message: + log.info( + f'Database {RedshiftShareDataClient.double_quoted_name(database)} does not exist. No need to drop it any more.' + ) + else: + log.error(f'Dropping {database=} failed due to: {e}') + raise e + + def check_database_exists(self, database: str) -> bool: + """Check that database exists. List all databases in PG_DATABASE_INFO""" + try: + log.info(f'Checking {database=}...') + sql_statement = 'SELECT * FROM PG_DATABASE_INFO' + records = self._execute_statement_return_records(sql=sql_statement) + databases_in_namespace = [[d for d in record][0]['stringValue'] for record in records] # dataname + log.info(f'Found {databases_in_namespace=}') + return database in databases_in_namespace + except Exception as e: + log.error(f'Checking of {database=} failed due to: {e}') + return False + + def grant_database_usage_access_to_redshift_role(self, database: str, rs_role: str): + """Grant usage on database to a role. If already granted, it succeeds""" + try: + log.info(f'Grant usage on {database=} to Redshift role {rs_role=}..') + sql_statement = f'GRANT USAGE ON DATABASE {RedshiftShareDataClient.double_quoted_name(database)} TO ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)} ;' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Granting usage to {database=} to {rs_role=} failed due to: {e}') + raise e + + def revoke_database_usage_access_to_redshift_role(self, database: str, rs_role: str): + """Revoke usage on database to a role. If already revoked, it succeeds""" + try: + log.info(f'Revoke usage on {database=} to Redshift role {rs_role=}..') + sql_statement = f'REVOKE USAGE ON DATABASE {RedshiftShareDataClient.double_quoted_name(database)} FROM ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)} ;' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Revoking usage to {database=} to {rs_role=} failed due to: {e}') + raise e + + def check_role_permissions_in_database(self, database: str, rs_role: str): + """Check role permissions in database by querying SVV_DATABASE_PRIVILEGES""" + try: + log.info(f'Check if Redshift role {rs_role=} has usage permissions on {database=}..') + sql_statement = f"SELECT database_name, privilege_type, identity_name, identity_type from SVV_DATABASE_PRIVILEGES where database_name={RedshiftShareDataClient.single_quoted_name(database)} and identity_name={RedshiftShareDataClient.single_quoted_name(rs_role)} and identity_type='role' and privilege_type='USAGE';" + records = self._execute_statement_return_records(sql=sql_statement) + return len(records) > 0 + except Exception as e: + log.error(f'Checking of {rs_role=} usage permissions in {database=} failed due to: {e}') + return False + + def create_external_schema(self, database: str, schema: str, external_schema: str): + """Create external schema. If already exists, it succeeds""" + try: + log.info(f'Create external schema {external_schema=} in {database=}') + sql_statement = f'CREATE EXTERNAL SCHEMA {RedshiftShareDataClient.double_quoted_name(external_schema)} FROM REDSHIFT DATABASE {RedshiftShareDataClient.double_quoted_name(database)} SCHEMA {RedshiftShareDataClient.double_quoted_name(schema)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + allowed_error_message = ( + f'ERROR: Schema {RedshiftShareDataClient.double_quoted_name(external_schema)} already exists' + ) + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'External schema {external_schema} already exists') + else: + log.error(f'Creation of external schema {external_schema=} in {database=} failed due to: {e}') + raise e + + def drop_schema(self, schema: str): + """Delete schema, if not deleted already""" + try: + log.info(f'Dropping {schema=}...') + sql_statement = f'DROP SCHEMA {RedshiftShareDataClient.double_quoted_name(schema)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Schema {RedshiftShareDataClient.double_quoted_name(schema)} does not exist' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info( + f'Schema {RedshiftShareDataClient.double_quoted_name(schema)} does not exist. No need to drop it any more.' + ) + else: + log.error(f'Dropping {schema=} failed due to: {e}') + raise e + + def check_schema_exists(self, schema: str, database: str) -> bool: + """ + Check that schema exists. List schemas with SHOW SCHEMAS FROM DATABASE + """ + try: + log.info(f'Checking {schema=} exists...') + sql_statement = f'SHOW SCHEMAS FROM DATABASE {RedshiftShareDataClient.double_quoted_name(database)};' + records = self._execute_statement_return_records(sql=sql_statement) + schemas_in_database = [[d for d in record][1]['stringValue'] for record in records] # schema_name + log.info(f'Found {schemas_in_database=}') + return schema in schemas_in_database + except Exception as e: + log.error(f'Checking of {schema=} failed due to: {e}') + return False + + def grant_schema_usage_access_to_redshift_role(self, schema: str, rs_role: str, database: str = None): + """Grant usage on schema to a role. If already granted, it succeeds""" + try: + log.info(f'Grant usage on {database=} {schema=} to Redshift role {rs_role=}..') + sql_statement = f'GRANT USAGE ON SCHEMA {RedshiftShareDataClient.quoted_object_names(database, schema)} TO ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Granting usage to {schema=} to {rs_role=} failed due to: {e}') + raise e + + def revoke_schema_usage_access_to_redshift_role(self, schema: str, rs_role: str): + """Revoke usage on schema to a role. If already granted, it succeeds""" + try: + log.info(f'Revoke usage on {schema=} to Redshift role {rs_role=}..') + sql_statement = f'REVOKE USAGE ON SCHEMA {RedshiftShareDataClient.double_quoted_name(schema)} FROM ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Revoking usage to {schema=} to {rs_role=} failed due to: {e}') + raise e + + def check_role_permissions_in_schema(self, schema: str, rs_role: str): + """Check role permissions in schema. List permissions by querying SVV_SCHEMA_PRIVILEGES""" + try: + sql_statement = f"SELECT namespace_name, privilege_type, identity_name, identity_type from SVV_SCHEMA_PRIVILEGES where namespace_name={RedshiftShareDataClient.single_quoted_name(schema)} and identity_name={RedshiftShareDataClient.single_quoted_name(rs_role)} and identity_type='role' and privilege_type='USAGE';" + records = self._execute_statement_return_records(sql=sql_statement) + return len(records) > 0 + except Exception as e: + log.error(f'Checking of {rs_role=} usage permissions in {schema=} failed due to: {e}') + return False + + def grant_select_table_access_to_redshift_role(self, schema: str, table: str, rs_role: str, database: str = None): + """ + Grant select on table to a role. If already granted, it succeeds + GRANT SELECT ON local_db.schema.table; + GRANT SELECT ON external_schema.table; + """ + try: + log.info(f'Grant select on {table=} from {schema=} and {database=} to Redshift role {rs_role=}..') + sql_statement = f'GRANT SELECT ON {RedshiftShareDataClient.quoted_object_names(database, schema, table)} TO ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + log.error(f'Granting select to {table=} from {schema=} and {database=} to {rs_role=} failed due to: {e}') + raise e + + def revoke_select_table_access_to_redshift_role(self, schema: str, table: str, rs_role: str, database: str = None): + """ + Revoke select on table to a role. If table is deleted, it succeeds + REVOKE SELECT ON local_db.schema.table; + REVOKE SELECT ON external_schema.table; + """ + try: + log.info(f'Revoke select on {table=} from {schema=} and {database=} to Redshift role {rs_role=}..') + sql_statement = f'REVOKE SELECT ON {RedshiftShareDataClient.quoted_object_names(database, schema, table)} FROM ROLE {RedshiftShareDataClient.double_quoted_name(rs_role)};' + self._execute_statement(sql=sql_statement) + except Exception as e: + allowed_error_message = f'ERROR: Object {RedshiftShareDataClient.double_quoted_name(table)} does not exist' + error_message = e.args[0] + if error_message == allowed_error_message: + log.info(f'{table=} does not exists, no permissions can be revoked') + else: + log.error( + f'Revoking select to {table=} from {schema=} and {database=} to {rs_role=} failed due to: {e}' + ) + raise e + + +def redshift_share_data_client(account_id: str, region: str, connection: RedshiftConnection) -> RedshiftShareDataClient: + "Factory of Client" + return RedshiftShareDataClient(account_id=account_id, region=region, connection=connection) diff --git a/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py b/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py index 254d3f206..c60ce5412 100644 --- a/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py +++ b/backend/dataall/modules/redshift_datasets_shares/cdk/pivot_role_redshift_data_sharing_policy.py @@ -1,4 +1,9 @@ +import os +from dataall.base import db +from dataall.base.utils.iam_policy_utils import split_policy_with_resources_in_statements from dataall.core.environment.cdk.pivot_role_stack import PivotRoleStatementSet +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository + from aws_cdk import aws_iam as iam @@ -8,5 +13,37 @@ class RedshiftDataSharingPivotRole(PivotRoleStatementSet): """ def get_statements(self): - statements = [] - return statements + statements = [ + iam.PolicyStatement( + sid='RedshiftReadShareResources', + effect=iam.Effect.ALLOW, + actions=[ + 'redshift-data:GetStatementResult', # It can only be applied to * + 'redshift:AssociateDataShareConsumer', # From consumer we can accept any share + 'redshift:DescribeDataShares', # Read + ], + resources=[ + '*', + ], + ), + ] + additional_statements = [] + engine = db.get_engine(envname=os.environ.get('envname', 'local')) + with engine.scoped_session() as session: + connections = RedshiftConnectionRepository.list_environment_redshift_connections( + session, environment_uri=self.environmentUri + ) + if connections: + source_datashare_arns = [ + f'arn:aws:redshift:{self.region}:{self.account}:datashare:{conn.nameSpaceId}/*' + for conn in connections + ] + additional_statements.extend( + split_policy_with_resources_in_statements( + base_sid='RedshiftDataShare', + effect=iam.Effect.ALLOW, + actions=['redshift:AuthorizeDataShare'], + resources=source_datashare_arns, + ) + ) + return statements + additional_statements diff --git a/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py b/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py index 6131a1fa7..e5e7ff21a 100644 --- a/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py +++ b/backend/dataall/modules/redshift_datasets_shares/db/redshift_share_object_repositories.py @@ -3,6 +3,7 @@ from sqlalchemy import and_ from dataall.core.environment.services.environment_resource_manager import EnvironmentResource from dataall.modules.shares_base.services.shares_enums import ( + ShareItemStatus, ShareableType, PrincipalType, ) @@ -15,16 +16,16 @@ class RedshiftShareEnvironmentResource(EnvironmentResource): @staticmethod def count_resources(session, environment, group_uri) -> int: - return RedshiftShareObjectRepository.count_redshift_principal_shares( + return RedshiftShareRepository.count_redshift_principal_shares( session=session, environment_uri=environment.environmentUri, group_uri=group_uri ) @staticmethod def delete_env(session, environment): - RedshiftShareObjectRepository.delete_all_redshift_share_items(session, environment.environmentUri) + RedshiftShareRepository.delete_all_redshift_share_items(session, environment.environmentUri) -class RedshiftShareObjectRepository: +class RedshiftShareRepository: @staticmethod def count_redshift_principal_shares(session, environment_uri: str, group_uri: str): """ @@ -34,7 +35,7 @@ def count_redshift_principal_shares(session, environment_uri: str, group_uri: st share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() return ( session.query(ShareObject) - .join( + .outerjoin( ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri, ) @@ -76,3 +77,86 @@ def delete_all_redshift_share_items(session, env_uri): .delete() ) session.delete(share) + + @staticmethod + def _query_other_shared_items_redshift_table_with_connection( + session, share_uri: str, table_uri: str, connection_uri: str + ): + """Query all SHARED shares - Revoke_In_Progress for a table with a namespace as target besides the one passed""" + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + share_item_shared_states.remove(ShareItemStatus.Revoke_In_Progress.value) + query = ( + session.query(ShareObjectItem) + .outerjoin( + ShareObject, + ShareObjectItem.shareUri == ShareObject.shareUri, + ) + .filter( + and_( + ShareObject.shareUri != share_uri, + ShareObjectItem.status.in_(share_item_shared_states), + ShareObjectItem.itemUri == table_uri, + ShareObject.principalId == connection_uri, + ) + ) + ) + return query.order_by(ShareObject.created) + + @staticmethod + def count_other_shared_items_redshift_table_with_connection( + session, share_uri: str, table_uri: str, connection_uri: str + ) -> int: + return RedshiftShareRepository._query_other_shared_items_redshift_table_with_connection( + session, share_uri, table_uri, connection_uri + ).count() + + @staticmethod + def _query_dataset_shared_items_with_redshift_role(session, dataset_uri: str, rs_role: str, connection_uri: str): + """Query all SHARED items - Revoke_In_Progress of a dataset for a redshift role""" + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + share_item_shared_states.remove(ShareItemStatus.Revoke_In_Progress.value) + query = ( + session.query(ShareObjectItem) + .outerjoin(ShareObject, ShareObject.shareUri == ShareObjectItem.shareUri) + .filter( + and_( + ShareObjectItem.status.in_(share_item_shared_states), + ShareObject.datasetUri == dataset_uri, + ShareObject.principalRoleName == rs_role, + ShareObject.principalId == connection_uri, + ) + ) + ) + return query.order_by(ShareObject.created) + + @staticmethod + def count_dataset_shared_items_with_redshift_role( + session, dataset_uri: str, rs_role: str, connection_uri: str + ) -> int: + return RedshiftShareRepository._query_dataset_shared_items_with_redshift_role( + session, dataset_uri, rs_role, connection_uri + ).count() + + @staticmethod + def _query_dataset_shared_items_with_namespace(session, dataset_uri: str, connection_uri: str): + """Query all SHARED shares - Revoke_In_Progress of a dataset for a namespace""" + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + share_item_shared_states.remove(ShareItemStatus.Revoke_In_Progress.value) + query = ( + session.query(ShareObjectItem) + .outerjoin(ShareObject, ShareObject.shareUri == ShareObjectItem.shareUri) + .filter( + and_( + ShareObjectItem.status.in_(share_item_shared_states), + ShareObject.datasetUri == dataset_uri, + ShareObject.principalId == connection_uri, + ) + ) + ) + return query.order_by(ShareObject.created) + + @staticmethod + def count_dataset_shared_items_with_namespace(session, dataset_uri: str, connection_uri: str) -> int: + return RedshiftShareRepository._query_dataset_shared_items_with_namespace( + session, dataset_uri, connection_uri + ).count() diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_shares_enums.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_shares_enums.py new file mode 100644 index 000000000..7c8682d24 --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_shares_enums.py @@ -0,0 +1,15 @@ +from enum import Enum + + +class RedshiftDatashareStatus(Enum): + """Describes the Datashare status. + Includes possible output from https://boto3.amazonaws.com/v1/documentation/api/1.26.92/reference/services/redshift/client/describe_data_shares.html + + NotFound""" + + NotFound = 'NOT_FOUND' + PendingAuthorization = 'PENDING_AUTHORIZATION' + Active = 'ACTIVE' + Authorized = 'AUTHORIZED' + Deauthorized = 'DEAUTHORIZED' + Rejected = 'REJECTED' + Available = 'AVAILABLE' diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py index 2d4014e65..30750f095 100644 --- a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py @@ -1,13 +1,31 @@ import logging -import json +from datetime import datetime from typing import List +from dataall.base.utils.naming_convention import NamingConventionService, NamingConventionPattern from dataall.modules.shares_base.services.sharing_service import ShareData from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.modules.shares_base.services.shares_enums import ( + ShareItemHealthStatus, + ShareItemStatus, + ShareObjectActions, + ShareItemActions, +) +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftType +from dataall.modules.redshift_datasets_shares.aws.redshift_data import redshift_share_data_client +from dataall.modules.redshift_datasets_shares.aws.redshift import redshift_share_client +from dataall.modules.redshift_datasets_shares.db.redshift_share_object_repositories import RedshiftShareRepository +from dataall.modules.redshift_datasets_shares.services.redshift_shares_enums import RedshiftDatashareStatus log = logging.getLogger(__name__) +DATAALL_PREFIX = 'dataall' + class ProcessRedshiftShare(SharesProcessorInterface): def __init__(self, session, share_data, shareable_items, reapply=False): @@ -18,11 +36,570 @@ def __init__(self, session, share_data, shareable_items, reapply=False): self.tables: List[RedshiftTable] = shareable_items self.reapply: bool = reapply + dataset_connection = RedshiftConnectionRepository.get_redshift_connection( + self.session, self.dataset.connectionUri + ) + + self.source_connection = RedshiftConnectionRepository.get_namespace_admin_connection( + session, + environment_uri=self.share_data.source_environment.environmentUri, + namespace_id=dataset_connection.nameSpaceId, + ) + + self.target_connection = RedshiftConnectionRepository.get_redshift_connection( + session, share_data.share.principalId + ) + self.cross_account = ( + self.share_data.target_environment.AwsAccountId != self.share_data.source_environment.AwsAccountId + ) + self.redshift_role = share_data.share.principalRoleName + + # There is a unique datashare per dataset per target namespace + # To restrict pivot role permissions on the datashares both in source and target we prefix them with dataall prefix + self.datashare_name = NamingConventionService( + target_label=self.target_connection.nameSpaceId, + pattern=NamingConventionPattern.REDSHIFT_DATASHARE, + target_uri=self.dataset.datasetUri, + resource_prefix=DATAALL_PREFIX, + ).build_compliant_name() + self.datashare_arn = f'arn:aws:redshift:{self.share_data.source_environment.region}:{self.share_data.source_environment.AwsAccountId}:datashare:{self.source_connection.nameSpaceId}/{self.datashare_name}' + self.local_db = self._build_local_db_name() + self.external_schema = self._build_external_schema_name() + + def _build_local_db_name(self) -> str: + return f'{self.target_connection.name}_{self.source_connection.database}_{self.dataset.name}' + + def _build_external_schema_name(self) -> str: + return f'{self.source_connection.database}_{self.dataset.schema}_{self.dataset.name}' + + def _initialize_clients(self): + self.redshift_data_client_in_source = redshift_share_data_client( + account_id=self.share_data.source_environment.AwsAccountId, + region=self.share_data.source_environment.region, + connection=self.source_connection, + ) + self.redshift_data_client_in_target = redshift_share_data_client( + account_id=self.share_data.target_environment.AwsAccountId, + region=self.share_data.target_environment.region, + connection=self.target_connection, + ) + def process_approved_shares(self) -> bool: - return True + """ + 1) (in source namespace) Create datashare for this dataset for this target namespace. If it does not exist yet. One time operation. + 2) (in source namespace) Add schema to the datashare, if not already added. One time operation. + 3) Grant access to the consumer cluster to the datashare + 3.a) SAME ACCOUNT: (in source namespace) Grant access to the consumer cluster to the datashare, if not already granted. One time operation. + 3.b) CROSS ACCOUNT: + - (in source namespace) Grant access to the consumer ACCOUNT, if not already granted. One time operation. + - (in source account) Authorize datashare, if not already authorized. One time operation + - (in target account) Associate datashare with target namespace, if not already authorized. One time operation + 4) (in target namespace) Create local database WITH PERMISSIONS from datashare, if it does not exist yet. One time operation. + 5) (in target namespace) Grant usage access to the redshift role to the local database, if not already granted. One time operation. + 6) (in target namespace) Create external schema in local database, if it does not exist yet. One time operation. + 7) (in target namespace) Grant usage access to the redshift role to the schema. + For each table: + 8) (in source namespace) Add table to the datashare, if not already added. + 9) (in target namespace) Grant select access to the requested table to the redshift role in the local db. + 10) (in target namespace) Grant select access to the requested table to the redshift role in the external schema. + Returns + ------- + True if share is granted successfully + """ + + log.info('##### Starting Sharing Redshift tables #######') + success = True + if not self.tables: + log.info('No Redshift tables to share. Skipping...') + else: + if not self.reapply: + shared_item_SM = ShareItemSM(ShareItemStatus.Share_Approved.value) + new_state = shared_item_SM.run_transition(ShareObjectActions.Start.value) + shared_item_SM.update_state(self.session, self.share.shareUri, new_state) + try: + self._initialize_clients() + # 1) Create datashare for this dataset for this target namespace. If it does not exist yet + newly_created = self.redshift_data_client_in_source.create_datashare(datashare=self.datashare_name) + + # 2) Add schema to the datashare, if not already added + self.redshift_data_client_in_source.add_schema_to_datashare( + datashare=self.datashare_name, schema=self.dataset.schema + ) + # 3) Grant access to the consumer namespace to the datashare, if not already granted + if self.cross_account: + log.info('Processing cross-account datashare grants') + # (in source namespace) Grant access to the consumer ACCOUNT, if not already granted + self.redshift_data_client_in_source.grant_datashare_usage_to_account( + datashare=self.datashare_name, account=self.share_data.target_environment.AwsAccountId + ) + # (in source account) Authorize datashare, if not already authorized + redshift_client_in_source = redshift_share_client( + account_id=self.share_data.source_environment.AwsAccountId, + region=self.share_data.source_environment.region, + ) + redshift_client_in_source.authorize_datashare( + datashare_arn=self.datashare_arn, account=self.share_data.target_environment.AwsAccountId + ) + # (in target account) Associate datashare with target namespace, if not already authorized + redshift_client_in_target = redshift_share_client( + account_id=self.share_data.target_environment.AwsAccountId, + region=self.share_data.target_environment.region, + ) + consumer_arn = ( + f'arn:aws:redshift-serverless:{self.share_data.target_environment.region}:{self.share_data.target_environment.AwsAccountId}:namespace/{self.target_connection.nameSpaceId}' + if self.target_connection.redshiftType == RedshiftType.Serverless.value + else f'arn:aws:redshift:{self.share_data.target_environment.region}:{self.share_data.target_environment.AwsAccountId}:namespace:{self.target_connection.nameSpaceId}' + ) + redshift_client_in_target.associate_datashare( + datashare_arn=self.datashare_arn, + consumer_arn=consumer_arn, + ) + else: + log.info('Processing same-account datashare grants') + self.redshift_data_client_in_source.grant_datashare_usage_to_namespace( + datashare=self.datashare_name, namespace=self.target_connection.nameSpaceId + ) + + # 4) Create local database from datashare, if it does not exist yet + if newly_created: + # For reapply/unsuccessful share we need to ensure that the database created has been created for the newly_created database + self.redshift_data_client_in_target.drop_database(database=self.local_db) + self.redshift_data_client_in_target.create_database_from_datashare( + database=self.local_db, + datashare=self.datashare_name, + namespace=self.source_connection.nameSpaceId, + account=self.share_data.source_environment.AwsAccountId if self.cross_account else None, + ) + # 5) Grant usage access to the redshift role to the new local database + self.redshift_data_client_in_target.grant_database_usage_access_to_redshift_role( + database=self.local_db, rs_role=self.redshift_role + ) + + # 6) Create external schema in local database, if it does not exist yet + self.redshift_data_client_in_target.create_external_schema( + database=self.local_db, schema=self.dataset.schema, external_schema=self.external_schema + ) + # 7) Grant usage access to the redshift role to the external schema + self.redshift_data_client_in_target.grant_schema_usage_access_to_redshift_role( + schema=self.external_schema, rs_role=self.redshift_role + ) + # 7) Grant usage access to the redshift role to the schema of the self.local_db + self.redshift_data_client_in_target.grant_schema_usage_access_to_redshift_role( + database=self.local_db, schema=self.dataset.schema, rs_role=self.redshift_role + ) + + for table in self.tables: + try: + # 8) Add tables to the datashare, if not already added + self.redshift_data_client_in_source.add_table_to_datashare( + datashare=self.datashare_name, schema=self.dataset.schema, table_name=table.name + ) + # 9) Grant select access to the requested tables to the redshift role to the self.local_db + self.redshift_data_client_in_target.grant_select_table_access_to_redshift_role( + database=self.local_db, + schema=self.dataset.schema, + table=table.name, + rs_role=self.redshift_role, + ) + # 10) Grant select access to the requested tables to the redshift role to the external_schema + self.redshift_data_client_in_target.grant_select_table_access_to_redshift_role( + schema=self.external_schema, + table=table.name, + rs_role=self.redshift_role, + ) + + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + if not self.reapply: + table_SM = ShareItemSM(new_state) + final_state = table_SM.run_transition(ShareItemActions.Success.value) + table_SM.update_state_single_item(self.session, share_item, final_state) + + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() + ) + except Exception as e: + success = False + log.error( + f'Failed to process approved redshift dataset {self.dataset.name} ' + f'table {table.name} ' + f'from source {self.source_connection=}' + f'with target {self.target_connection=}' + f'due to: {e}' + ) + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + if not self.reapply: + table_SM = ShareItemSM(new_state) + new_state = table_SM.run_transition(ShareItemActions.Failure.value) + table_SM.update_state_single_item(self.session, share_item, new_state) + else: + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Unhealthy.value, str(e), datetime.now() + ) + + except Exception as e: + log.error( + f'Failed to process approved redshift dataset {self.dataset.name} ' + f'tables {[t.name for t in self.tables]} ' + f'from source {self.source_connection.name} in namespace {self.source_connection.nameSpaceId} ' + f'with target {self.target_connection.name} in namespace {self.target_connection.nameSpaceId} ' + f'due to: {e}' + ) + if not self.reapply: + new_state = shared_item_SM.run_transition(ShareItemActions.Failure.value) + shared_item_SM.update_state(self.session, self.share.shareUri, new_state) + else: + for table in self.tables: + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Unhealthy.value, str(e), datetime.now() + ) + return False + return success def process_revoked_shares(self) -> bool: - return True + """ + For each table: + Update table status with Start Action (Revoke_Approved ---> Revoke_In_Progress) + try: + 1) (in target namespace) Revoke access to the revoked tables to the redshift role in external schema (if schema exists) + 2) (in target namespace) Revoke access to the revoked tables to the redshift role in self.local_db (if database exists) + 3) (in source namespace) If that table is not shared in this namespace, remove table from datashare (if datashare exists) + except: + Update table status with Failure Action (Revoke_In_Progress ---> Revoke_Failed) + If the previous is successful, we proceed to clean-up shared resources across datashares: + try: + 4) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the external schema to the redshift role + 5) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the self.local_db to the redshift role + 6) (in target namespace) If no more tables are shared with any role in this namespace, drop external schema + 7) (in target namespace) If no more tables are shared with any role in this namespace, drop local database + 8) (in source namespace) If no more tables are shared with any role in this namespace, drop datashare + # Drop datashare deletes it from source and target, alongside its permissions (for both same and cross account) + Update NON-FAILED tables with Success Action (Revoke_In_Progress ---> Revoke_Succeeded) + except: + Update tables with Failure Action (Revoke_In_Progress ---> Revoke_Failed) + Returns + ------- + True if share is revoked successfully + """ + log.info('##### Starting Revoke Redshift tables #######') + success = True + if not self.tables: + log.info('No Redshift tables to revoke. Skipping...') + else: + self._initialize_clients() + + for table in self.tables: + log.info(f'Revoking access to table {table}...') + try: + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + + revoked_item_SM = ShareItemSM(ShareItemStatus.Revoke_Approved.value) + started_state = revoked_item_SM.run_transition(ShareObjectActions.Start.value) + revoked_item_SM.update_state_single_item(self.session, share_item, started_state) + + local_db_exists = self.redshift_data_client_in_target.check_database_exists(database=self.local_db) + # 1) (in target namespace) Revoke access to the revoked tables to the redshift role in external schema (if schema exists) + if local_db_exists and self.redshift_data_client_in_target.check_schema_exists( + schema=self.external_schema, database=self.target_connection.database + ): + self.redshift_data_client_in_target.revoke_select_table_access_to_redshift_role( + schema=self.external_schema, table=table.name, rs_role=self.redshift_role + ) + else: + log.info( + 'External schema does not exist or local database does not exist, permissions cannot be revoked' + ) + # 2) (in target namespace) Revoke access to the revoked tables to the redshift role in local_db (if database exists) + if local_db_exists: + self.redshift_data_client_in_target.revoke_select_table_access_to_redshift_role( + database=self.local_db, + schema=self.dataset.schema, + table=table.name, + rs_role=self.redshift_role, + ) + else: + log.info('Database does not exist, no permissions need to be revoked') + # 3) (in source namespace) If that table is not shared in this namespace, remove table from datashare (if datashare exists) + if ( + RedshiftShareRepository.count_other_shared_items_redshift_table_with_connection( + session=self.session, + share_uri=self.share.shareUri, + table_uri=table.rsTableUri, + connection_uri=self.share.principalId, + ) + == 0 + ): + log.info( + f'No other share items are sharing this table {table.name} with this namespace {self.target_connection.nameSpaceId}' + ) + if self.redshift_data_client_in_source.check_datashare_exists(self.datashare_name): + self.redshift_data_client_in_source.remove_table_from_datashare( + datashare=self.datashare_name, schema=self.dataset.schema, table_name=table.name + ) + + except Exception as e: + success = False + log.error( + f'Failed to process revoked redshift dataset {self.dataset.name} ' + f'table {table.name} ' + f'from source {self.source_connection.name} in namespace {self.source_connection.nameSpaceId} ' + f'with target {self.target_connection.name} in namespace {self.target_connection.nameSpaceId} ' + f'due to: {e}' + ) + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + failed_table_SM = ShareItemSM(started_state) + failed_state = failed_table_SM.run_transition(ShareItemActions.Failure.value) + failed_table_SM.update_state_single_item(self.session, share_item, failed_state) + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Unhealthy.value, str(e), datetime.now() + ) + self.session.commit() + try: + if success: + log.info('Cleaning up shared resources in redshift datashares...') + # 4) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the external schema to the redshift role + # 5) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the local_db to the redshift role + if ( + RedshiftShareRepository.count_dataset_shared_items_with_redshift_role( + session=self.session, + dataset_uri=self.dataset.datasetUri, + rs_role=self.redshift_role, + connection_uri=self.share.principalId, + ) + == 0 + ): # In this check, if a table is in Revoke_In_Progress it does not count as shared state + log.info( + f'No other tables of this dataset are shared with this redshift role {self.redshift_role}' + ) + self.redshift_data_client_in_target.revoke_schema_usage_access_to_redshift_role( + schema=self.external_schema, rs_role=self.redshift_role + ) + if local_db_exists: + self.redshift_data_client_in_target.revoke_database_usage_access_to_redshift_role( + database=self.local_db, rs_role=self.redshift_role + ) + else: + log.info('Database does not exist, no permissions need to be revoked') + # 6) (in target namespace) If no more tables are shared with any role in this namespace, drop external schema + # 7) (in target namespace) If no more tables are shared with any role in this namespace, drop local database + # 8) (in source namespace) If no more tables are shared with any role in this namespace, drop datashare + if ( + RedshiftShareRepository.count_dataset_shared_items_with_namespace( + session=self.session, + dataset_uri=self.dataset.datasetUri, + connection_uri=self.share.principalId, + ) + == 0 + ): + log.info( + f'No other tables of this dataset are shared with this namespace {self.target_connection.nameSpaceId}' + ) + self.redshift_data_client_in_target.drop_schema(schema=self.external_schema) + self.redshift_data_client_in_target.drop_database(database=self.local_db) + self.redshift_data_client_in_source.drop_datashare(datashare=self.datashare_name) + + # Update NON-FAILED tables with Success Action (Revoke_In_Progress ---> Revoke_Succeeded) + non_failed_item_SM = ShareItemSM(started_state) + final_state = non_failed_item_SM.run_transition(ShareItemActions.Success.value) + non_failed_item_SM.update_state(self.session, self.share.shareUri, final_state) + for table in self.tables: + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, None, None, share_item.lastVerificationTime + ) + + except Exception as e: + log.error( + f'Failed to clean up shared resources in redshift datashares for redshift dataset {self.dataset.name} ' + f'tables {[t.name for t in self.tables]} ' + f'from source {self.source_connection.name} in namespace {self.source_connection.nameSpaceId} ' + f'with target {self.target_connection.name} in namespace {self.target_connection.nameSpaceId} ' + f'due to: {e}' + ) + all_failed_state = revoked_item_SM.run_transition(ShareItemActions.Failure.value) + revoked_item_SM.update_state(self.session, self.share.shareUri, all_failed_state) + for table in self.tables: + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Unhealthy.value, str(e), datetime.now() + ) + return False + return success def verify_shares(self) -> bool: + """ + 1) (in source namespace) Check the datashare exists + 2) (in source namespace) Check that schema is added to datashare + 3) (in source namespace) Check the access is granted to the consumer namespace to the datashare + 3.a) SAME ACCOUNT: (in source namespace) Check describe datashare from namespace + 3.b) CROSS ACCOUNT: + - (in source account) Check status of datashare in source + - (in target account) Check status of datashare in target + 4) (in target namespace) Check that local db exists + 5) (in target namespace) Check that the redshift role has access to the local db + 6) (in target namespace) Check that external schema exists + 7) (in target namespace) Check that the redshift role has access to the extenal schema + For each table: + 8) (in source namespace) Check that table is added to datashare + 9) (in target namespace) Check that the redshift role has select access to the requested table in the local db. + 10) (in target namespace) Check that the redshift role has select access to the requested table in the external schema. + """ + + log.info('##### Verifying Redshift tables #######') + if not self.tables: + log.info('No tables to verify. Skipping...') + else: + tbl_level_errors = [] + ds_level_errors = [] + self._initialize_clients() + try: + # 1) (in source namespace) Check that datashare exists + if not self.redshift_data_client_in_source.check_datashare_exists(self.datashare_name): + ds_level_errors.append(ShareErrorFormatter.dne_error_msg('Redshift datashare', self.datashare_name)) + # 2) (in source namespace) Check that schema is added to datashare + if not self.redshift_data_client_in_source.check_schema_in_datashare( + datashare=self.datashare_name, schema=self.dataset.schema + ): + ds_level_errors.append( + ShareErrorFormatter.dne_error_msg( + 'Redshift schema added to datashare', + f'datashare_name={self.datashare_name}, schema={self.dataset.schema}', + ) + ) + # 3) (in target namespace) Check the access is granted to the consumer cluster to the datashare + if self.cross_account: + # 3.b) Check that datashare in source is authorized + redshift_client_in_source = redshift_share_client( + account_id=self.share_data.source_environment.AwsAccountId, + region=self.share_data.source_environment.region, + ) + if ( + status_in_source := redshift_client_in_source.get_datashare_status( + datashare_arn=self.datashare_arn, + consumer_id=self.share_data.target_environment.AwsAccountId, + ) + ) not in [RedshiftDatashareStatus.Active.value, RedshiftDatashareStatus.Authorized.value]: + ds_level_errors.append( + ShareErrorFormatter.wrong_status_error_msg( + resource_type='Redshift datashare in source account', + target_resource=self.datashare_name, + status=status_in_source, + ) + ) + + # 3.b) Check that datashare in target is available + redshift_client_in_target = redshift_share_client( + account_id=self.share_data.target_environment.AwsAccountId, + region=self.share_data.target_environment.region, + ) + consumer_arn = ( + f'arn:aws:redshift-serverless:{self.share_data.target_environment.region}:{self.share_data.target_environment.AwsAccountId}:namespace/{self.target_connection.nameSpaceId}' + if self.target_connection.redshiftType == RedshiftType.Serverless.value + else f'arn:aws:redshift:{self.share_data.target_environment.region}:{self.share_data.target_environment.AwsAccountId}:namespace:{self.target_connection.nameSpaceId}' + ) + if ( + status_in_target := redshift_client_in_target.get_datashare_status( + datashare_arn=self.datashare_arn, consumer_id=consumer_arn + ) + ) not in [RedshiftDatashareStatus.Active.value]: + ds_level_errors.append( + ShareErrorFormatter.wrong_status_error_msg( + resource_type='Redshift datashare in target account', + target_resource=self.datashare_name, + status=status_in_target, + ) + ) + # 3.a)b) (in target namespace) Check the access is granted to the consumer cluster to the datashare + if not self.redshift_data_client_in_target.check_consumer_permissions_to_datashare( + datashare=self.datashare_name + ): + ds_level_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.target_connection.nameSpaceId, + 'SHARE', + ['SHARE'], + 'Redshift datashare', + self.datashare_name, + ) + ) + # 4) (in target namespace) Check that local db exists + if not self.redshift_data_client_in_target.check_database_exists(self.local_db): + ds_level_errors.append( + ShareErrorFormatter.dne_error_msg('Redshift local database in consumer', self.local_db) + ) + # 5) (in target namespace) Check that the redshift role has access to the local db + if not self.redshift_data_client_in_target.check_role_permissions_in_database( + database=self.local_db, rs_role=self.redshift_role + ): + ds_level_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.redshift_role, 'USAGE', ['USAGE'], 'Redshift local database in consumer', self.local_db + ) + ) + # 6) (in target namespace) Check that external schema exists + if not self.redshift_data_client_in_target.check_schema_exists( + schema=self.external_schema, database=self.target_connection.database + ): + ds_level_errors.append( + ShareErrorFormatter.dne_error_msg('Redshift external schema', self.external_schema) + ) + # 7) (in target namespace) Check that the redshift role has access to the external schema + if not self.redshift_data_client_in_target.check_role_permissions_in_schema( + schema=self.external_schema, rs_role=self.redshift_role + ): + ds_level_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.redshift_role, 'USAGE', ['USAGE'], 'Redshift external schema', self.external_schema + ) + ) + except Exception as e: + ds_level_errors = [str(e)] + + for table in self.tables: + try: + # 8) (in source namespace) Check that table is added to datashare + if not self.redshift_data_client_in_source.check_table_in_datashare( + datashare=self.datashare_name, table_name=table.name + ): + tbl_level_errors.append( + ShareErrorFormatter.dne_error_msg( + 'Redshift table added to datashare', + f'datashare_name={self.datashare_name}, table={table.name}', + ) + ) + # 9) (in target namespace) Check that the redshift role has select access to the requested table in the local db. + # 10) (in target namespace) Check that the redshift role has select access to the requested table in the external schema. + # Not possible to check role permissions through system functions or tables. Not implemented at the moment + except Exception as e: + tbl_level_errors.append(str(e)) + + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + if len(ds_level_errors) or len(tbl_level_errors): + ShareStatusRepository.update_share_item_health_status( + self.session, + share_item, + ShareItemHealthStatus.Unhealthy.value, + ' | '.join(ds_level_errors) + ' | ' + ' | '.join(tbl_level_errors), + datetime.now(), + ) + else: + ShareStatusRepository.update_share_item_health_status( + self.session, share_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() + ) return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py index d8632d9ed..ad746a852 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py @@ -20,7 +20,7 @@ from dataall.modules.s3_datasets.db.dataset_models import DatasetTable from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObjectItemDataFilter -from dataall.modules.s3_datasets_shares.services.share_managers.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.shares_base.services.sharing_service import ShareData logger = logging.getLogger(__name__) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index ef06f8142..fd6e389d7 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -21,7 +21,7 @@ from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound -from dataall.modules.s3_datasets_shares.services.share_managers.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service import ( S3SharePolicyService, IAM_S3_ACCESS_POINTS_STATEMENT_SID, diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py index f37f8753a..ef051ad30 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py @@ -14,7 +14,7 @@ from dataall.modules.s3_datasets_shares.aws.s3_client import S3ControlClient, S3Client, DATAALL_READ_ONLY_SID from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound -from dataall.modules.s3_datasets_shares.services.share_managers.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService from dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service import ( S3SharePolicyService, diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index b85354a25..aa24f69ab 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -22,7 +22,7 @@ from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM -from dataall.modules.s3_datasets_shares.services.share_managers.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.shares_base.services.sharing_service import ShareData from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index 8ce765bfc..fd139e7f4 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -27,13 +27,14 @@ def save_and_commit(session, share): session.commit() @staticmethod - def find_share(session, dataset: DatasetBase, env, principal_id, group_uri) -> ShareObject: + def find_share(session, dataset: DatasetBase, env, principal_id, principal_role_name, group_uri) -> ShareObject: return ( session.query(ShareObject) .filter( and_( ShareObject.datasetUri == dataset.datasetUri, ShareObject.principalId == principal_id, + ShareObject.principalRoleName == principal_role_name, ShareObject.environmentUri == env.environmentUri, ShareObject.groupUri == group_uri, ) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/share_manager_utils.py b/backend/dataall/modules/shares_base/services/share_manager_utils.py similarity index 86% rename from backend/dataall/modules/s3_datasets_shares/services/share_managers/share_manager_utils.py rename to backend/dataall/modules/shares_base/services/share_manager_utils.py index cf02ee10d..82439797a 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/share_manager_utils.py +++ b/backend/dataall/modules/shares_base/services/share_manager_utils.py @@ -14,6 +14,10 @@ def _stringify(param): def dne_error_msg(resource_type, target_resource): return f'{resource_type} Target Resource does not exist: {target_resource}' + @staticmethod + def wrong_status_error_msg(resource_type, target_resource, status): + return f'{resource_type} Target Resource {target_resource} in wrong status: {status}' + @staticmethod def missing_permission_error_msg(requestor, permission_type, permissions, resource_type, target_resource): requestor = ShareErrorFormatter._stringify(requestor) diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index 0b13b8aa8..ef0c251da 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -139,7 +139,14 @@ def create_share_object( elif not attached: Policy.attach_policy() - share = ShareObjectRepository.find_share(session, dataset, environment, principal_id, group_uri) + share = ShareObjectRepository.find_share( + session=session, + dataset=dataset, + env=environment, + principal_id=principal_id, + principal_role_name=principal_role_name, + group_uri=group_uri, + ) already_existed = share is not None if not share: share = ShareObject( @@ -220,11 +227,13 @@ def submit_share_object(cls, uri: str): with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - if not ShareObjectService.verify_principal_role(session, share): - raise PrincipalRoleNotFound( - action='Submit Share Object', - message=f'The principal role {share.principalRoleName} is not found.', - ) + if share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + # TODO make it generic to non IAM role principals + if not ShareObjectService.verify_principal_role(session, share): + raise PrincipalRoleNotFound( + action='Submit Share Object', + message=f'The principal role {share.principalRoleName} is not found.', + ) valid_states = [ShareItemStatus.PendingApproval.value] valid_share_items_states = [x for x in valid_states if x in states] @@ -260,14 +269,14 @@ def approve_share_object(cls, uri: str): context = get_context() with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - - if not ShareObjectService.verify_principal_role( - session, share - ): # TODO make it generic to non IAM role principals - raise PrincipalRoleNotFound( - action='Approve Share Object', - message=f'The principal role {share.principalRoleName} is not found.', - ) + if share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + if not ShareObjectService.verify_principal_role( + session, share + ): # TODO make it generic to non IAM role principals + raise PrincipalRoleNotFound( + action='Approve Share Object', + message=f'The principal role {share.principalRoleName} is not found.', + ) cls._run_transitions(session, share, states, ShareObjectActions.Approve) diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index a4188305f..87bcf526b 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -83,11 +83,13 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: share_successful = True try: - if not ShareObjectService.verify_principal_role(session, share_data.share): - raise PrincipalRoleNotFound( - 'process approved shares', - f'Principal role {share_data.share.principalRoleName} is not found.', - ) + if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + # TODO make it generic to non IAM role principals + if not ShareObjectService.verify_principal_role(session, share_data.share): + raise PrincipalRoleNotFound( + 'process approved shares', + f'Principal role {share_data.share.principalRoleName} is not found.', + ) with ResourceLockRepository.acquire_lock_with_retry( resources=resources, @@ -186,11 +188,13 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: revoke_successful = True try: - if not ShareObjectService.verify_principal_role(session, share_data.share): - raise PrincipalRoleNotFound( - 'process revoked shares', - f'Principal role {share_data.share.principalRoleName} is not found.', - ) + if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + # TODO make it generic to non IAM role principals + if not ShareObjectService.verify_principal_role(session, share_data.share): + raise PrincipalRoleNotFound( + 'process revoked shares', + f'Principal role {share_data.share.principalRoleName} is not found.', + ) with ResourceLockRepository.acquire_lock_with_retry( resources=resources, @@ -267,20 +271,21 @@ def verify_share( """ with engine.scoped_session() as session: share_data, share_items = cls._get_share_data_and_items(session, share_uri, status, healthStatus) - - log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') - if not ShareObjectService.verify_principal_role(session, share_data.share): - log.error( - f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, updating health status...' - ) - ShareStatusRepository.update_share_item_health_status_batch( - session, - share_uri, - old_status=healthStatus, - new_status=ShareItemHealthStatus.Unhealthy.value, - message=f'Share principal Role {share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', - ) - return True + if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + # TODO make it generic to non IAM role principals + log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') + if not ShareObjectService.verify_principal_role(session, share_data.share): + log.error( + f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, updating health status...' + ) + ShareStatusRepository.update_share_item_health_status_batch( + session, + share_uri, + old_status=healthStatus, + new_status=ShareItemHealthStatus.Unhealthy.value, + message=f'Share principal Role {share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', + ) + return True for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): try: @@ -317,6 +322,7 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: True if re-apply of share item(s) succeeds, False if any re-apply of share item(s) failed """ + reapply_successful = True with engine.scoped_session() as session: share_data, share_items = cls._get_share_data_and_items( session, share_uri, None, ShareItemHealthStatus.PendingReApply.value @@ -332,37 +338,38 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: ) try: - log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') - reapply_successful = ShareObjectService.verify_principal_role(session, share_data.share) - if not reapply_successful: - log.error(f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, exiting...') - return False - else: - with ResourceLockRepository.acquire_lock_with_retry( - resources=resources, - session=session, - acquired_by_uri=share_data.share.shareUri, - acquired_by_type=share_data.share.__tablename__, - ): - for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): - try: - log.info(f'Reapplying permissions to {type.value}') - shareable_items = ShareObjectRepository.get_share_data_items_by_type( - session, - share_data.share, - processor.shareable_type, - processor.shareable_uri, - None, - ShareItemHealthStatus.PendingReApply.value, - ) - success = processor.Processor( - session, share_data, shareable_items, True - ).process_approved_shares() - log.info(f'Reapplying {type.value} succeeded = {success}') - if not success: - reapply_successful = False - except Exception as e: - log.error(f'Error occurred during share reapplying of {type.value}: {e}') + if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: + # TODO make it generic to non IAM role principals + log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') + reapply_successful = ShareObjectService.verify_principal_role(session, share_data.share) + if not reapply_successful: + log.error(f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, exiting...') + return False + with ResourceLockRepository.acquire_lock_with_retry( + resources=resources, + session=session, + acquired_by_uri=share_data.share.shareUri, + acquired_by_type=share_data.share.__tablename__, + ): + for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): + try: + log.info(f'Reapplying permissions to {type.value}') + shareable_items = ShareObjectRepository.get_share_data_items_by_type( + session, + share_data.share, + processor.shareable_type, + processor.shareable_uri, + None, + ShareItemHealthStatus.PendingReApply.value, + ) + success = processor.Processor( + session, share_data, shareable_items + ).process_approved_shares() + log.info(f'Reapplying {type.value} succeeded = {success}') + if not success: + reapply_successful = False + except Exception as e: + log.error(f'Error occurred during share reapplying of {type.value}: {e}') return reapply_successful diff --git a/tests/modules/redshift_datasets_shares/__init__.py b/tests/modules/redshift_datasets_shares/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/modules/redshift_datasets_shares/conftest.py b/tests/modules/redshift_datasets_shares/conftest.py new file mode 100644 index 000000000..8d12d3749 --- /dev/null +++ b/tests/modules/redshift_datasets_shares/conftest.py @@ -0,0 +1,378 @@ +import pytest +from dataall.base.context import set_context, dispose_context, RequestContext +from dataall.modules.shares_base.services.sharing_service import ShareData +from dataall.modules.shares_base.services.share_object_service import ShareObjectService +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.services.shares_enums import ShareItemStatus +from dataall.modules.shares_base.services.share_item_service import ShareItemService +from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService +from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService +from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable +from dataall.modules.redshift_datasets_shares.services.redshift_table_share_processor import ProcessRedshiftShare +from dataall.modules.redshift_datasets_shares.services.redshift_shares_enums import RedshiftDatashareStatus + + +@pytest.fixture(scope='function') +def mock_redshift_data_shares(mocker): + redshiftShareDataClient = mocker.patch( + 'dataall.modules.redshift_datasets_shares.aws.redshift_data.RedshiftShareDataClient', autospec=True + ) + redshiftShareDataClient.return_value.check_datashare_exists.return_value = True + redshiftShareDataClient.return_value.check_schema_in_datashare.return_value = True + redshiftShareDataClient.return_value.check_table_in_datashare.return_value = True + redshiftShareDataClient.return_value.check_consumer_permissions_to_datashare.return_value = True + redshiftShareDataClient.return_value.check_database_exists.return_value = True + redshiftShareDataClient.return_value.check_role_permissions_in_database.return_value = True + redshiftShareDataClient.return_value.check_schema_exists.return_value = True + redshiftShareDataClient.return_value.check_role_permissions_in_schema.return_value = True + + yield redshiftShareDataClient + + +@pytest.fixture(scope='function') +def mock_redshift_shares(mocker): + redshiftClient = mocker.patch( + 'dataall.modules.redshift_datasets_shares.aws.redshift.RedshiftShareClient', autospec=True + ) + redshiftClient.return_value.get_datashare_status.return_value = RedshiftDatashareStatus.Active.value + yield redshiftClient + + +@pytest.fixture(scope='function') +def mock_redshift_data(mocker): + redshiftDataClient = mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_data.RedshiftDataClient', autospec=True + ) + redshiftDataClient.return_value.get_redshift_connection_database.return_value = True + redshiftDataClient.return_value.list_redshift_schemas.return_value = ['public', 'dev'] + redshiftDataClient.return_value.list_redshift_tables.return_value = [ + {'name': 'table1', 'type': 'TABLE'}, + {'name': 'table2', 'type': 'TABLE'}, + {'name': 'table3', 'type': 'TABLE'}, + {'name': 'table4', 'type': 'TABLE'}, + ] + redshiftDataClient.return_value.list_redshift_table_columns.return_value = [ + {'name': 'column1', 'type': 'VARCHAR', 'nullable': True}, + {'name': 'column2', 'type': 'INTEGER', 'nullable': False}, + {'name': 'column3', 'type': 'DOUBLE', 'nullable': True}, + {'name': 'column4', 'type': 'BOOLEAN', 'nullable': False}, + ] + yield redshiftDataClient + + +@pytest.fixture(scope='function') +def mock_redshift_serverless(mocker): + redshiftServerlessClient = mocker.patch( + 'dataall.modules.redshift_datasets.aws.redshift_serverless.RedshiftServerlessClient', autospec=True + ) + redshiftServerlessClient.return_value.get_namespace_by_id.return_value = { + 'namespaceId': 'XXXXXXXXXXXXXX', + 'namespaceName': 'namespace_name_1', + 'KmsKeyId': 'AWS_OWNED_KMS_KEY', + } + redshiftServerlessClient.return_value.list_workgroups_in_namespace.return_value = [ + { + 'workgroupName': 'workgroup_name_1', + 'workgroupArn': 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1', + } + ] + redshiftServerlessClient.return_value.get_workgroup_arn.return_value = ( + 'arn:aws:redshift-serverless:eu-west-1:XXXXXXXXXXXXXX:workgroup/workgroup_name_1' + ) + yield redshiftServerlessClient + + +@pytest.fixture(scope='function') +def api_context_1(db, user, group): + yield set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dispose_context() + + +@pytest.fixture(scope='function') +def api_context_2(db, user2, group2): + yield set_context( + RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username) + ) + dispose_context() + + +@pytest.fixture(scope='module') +def env_fixture_2(env, environment_group, org_fixture, user2, group2, tenant, env_params): + env2 = env(org_fixture, 'dev', 'bob', 'testadmins', '2222222222', parameters=env_params) + environment_group(env2, group2.name) + yield env2 + + +@pytest.fixture(scope='module') +def env_fixture_same_1(env, environment_group, org_fixture, user2, group2, tenant, env_params): + env2 = env(org_fixture, 'dev', 'bob', 'testadmins', '111111111111', parameters=env_params) + environment_group(env2, group2.name) + yield env2 + + +@pytest.fixture(scope='function') +def source_connection(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data, api_context_1): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection1', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'XXXXXXXXXXXXXX', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', + 'connectionType': 'ADMIN', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def target_connection(db, user2, group2, env_fixture_2, mock_redshift_serverless, mock_redshift_data): + """Cross-account connection""" + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture_2.environmentUri, + admin_group=group2.name, + data={ + 'connectionName': 'connection2', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'YYYYYYYYYYYYYY', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:222222222222:secret:secret-2', + 'connectionType': 'ADMIN', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def target_connection_same_account(db, user2, group2, env_fixture_same_1, mock_redshift_serverless, mock_redshift_data): + """Same account connection""" + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture_same_1.environmentUri, + admin_group=group2.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'ZZZZZZZZZZZZ', + 'workgroup': 'workgroup_name_1', + 'database': 'database_2', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:11111111111:secret:secret-3', + 'connectionType': 'ADMIN', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def dataset_1(db, user, group, env_fixture, source_connection): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dataset = RedshiftDatasetService.import_redshift_dataset( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'label': 'dataset_1', + 'SamlAdminGroupName': group.name, + 'connectionUri': source_connection.connectionUri, + 'schema': 'public', + 'tables': [], + }, + ) + dispose_context() + yield dataset + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftDatasetService.delete_redshift_dataset(uri=dataset.datasetUri) + dispose_context() + + +@pytest.fixture(scope='function') +def table1(db, user, group, dataset_1): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftDatasetService.add_redshift_dataset_tables(uri=dataset_1.datasetUri, tables=['table1']) + paginated_tables = RedshiftDatasetService.list_redshift_dataset_tables(uri=dataset_1.datasetUri, filter={}) + dispose_context() + assert paginated_tables.get('count', 0) == 1 + yield paginated_tables.get('nodes')[0] + + +@pytest.fixture(scope='function') +def redshift_share_request_cross_account(db, user2, group2, env_fixture_2, target_connection, dataset_1): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + share = ShareObjectService.create_share_object( + uri=env_fixture_2.environmentUri, + dataset_uri=dataset_1.datasetUri, + item_type=None, + item_uri=None, + group_uri=group2.name, + principal_id=target_connection.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + requestPurpose=None, + attachMissingPolicies=False, + ) + dispose_context() + yield share + + +@pytest.fixture(scope='function') +def redshift_share_request_2_same_account( + db, user2, group2, env_fixture_same_1, target_connection_same_account, dataset_1 +): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + share = ShareObjectService.create_share_object( + uri=env_fixture_same_1.environmentUri, + dataset_uri=dataset_1.datasetUri, + item_type=None, + item_uri=None, + group_uri=group2.name, + principal_id=target_connection_same_account.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + requestPurpose=None, + attachMissingPolicies=False, + ) + dispose_context() + yield share + + +@pytest.fixture(scope='function') +def redshift_requested_table(db, user2, group2, redshift_share_request_cross_account, table1): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + item = ShareItemService.add_shared_item( + uri=redshift_share_request_cross_account.shareUri, + data={'itemType': 'RedshiftTable', 'itemUri': table1.rsTableUri}, + ) + dispose_context() + yield item + + +@pytest.fixture(scope='function') +def redshift_requested_table_2(db, user2, group2, redshift_share_request_2_same_account, table1): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + item = ShareItemService.add_shared_item( + uri=redshift_share_request_2_same_account.shareUri, + data={'itemType': 'RedshiftTable', 'itemUri': table1.rsTableUri}, + ) + dispose_context() + yield item + + +@pytest.fixture(scope='function') +def approved_share_data_cross_account( + db, + user, + user2, + group, + group2, + redshift_share_request_cross_account, + redshift_requested_table, + dataset_1, + env_fixture, + env_fixture_2, +): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + ShareObjectService.submit_share_object(uri=redshift_share_request_cross_account.shareUri) + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + ShareObjectService.approve_share_object(uri=redshift_share_request_cross_account.shareUri) + dispose_context() + yield ShareData( + share=redshift_share_request_cross_account, + dataset=dataset_1, + source_environment=env_fixture, + target_environment=env_fixture_2, + source_env_group=group, + env_group=group2, + ) + + +@pytest.fixture(scope='function') +def approved_share_data_same_account( + db, + user, + user2, + group, + group2, + redshift_share_request_2_same_account, + redshift_requested_table_2, + dataset_1, + env_fixture, + env_fixture_same_1, +): + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + ShareObjectService.submit_share_object(uri=redshift_share_request_2_same_account.shareUri) + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + ShareObjectService.approve_share_object(uri=redshift_share_request_2_same_account.shareUri) + dispose_context() + yield ShareData( + share=redshift_share_request_2_same_account, + dataset=dataset_1, + source_environment=env_fixture, + target_environment=env_fixture_same_1, + source_env_group=group, + env_group=group2, + ) + + +@pytest.fixture(scope='function') +def shareable_items_1(db, approved_share_data_cross_account): + with db.scoped_session() as session: + yield ShareObjectRepository.get_share_data_items_by_type( + session, + approved_share_data_cross_account.share, + RedshiftTable, + RedshiftTable.rsTableUri, + status=ShareItemStatus.Share_Approved.value, + ) + + +@pytest.fixture(scope='function') +def shareable_items_2(db, approved_share_data_same_account): + with db.scoped_session() as session: + yield ShareObjectRepository.get_share_data_items_by_type( + session, + approved_share_data_same_account.share, + RedshiftTable, + RedshiftTable.rsTableUri, + status=ShareItemStatus.Share_Approved.value, + ) + + +@pytest.fixture(scope='function') +def redshift_processor_cross_account(db, approved_share_data_cross_account, shareable_items_1): + with db.scoped_session() as session: + processor = ProcessRedshiftShare( + session=session, share_data=approved_share_data_cross_account, shareable_items=shareable_items_1 + ) + yield processor + + +@pytest.fixture(scope='function') +def redshift_processor_same_account(db, approved_share_data_same_account, shareable_items_2): + with db.scoped_session() as session: + processor = ProcessRedshiftShare( + session=session, share_data=approved_share_data_same_account, shareable_items=shareable_items_2 + ) + yield processor diff --git a/tests/modules/redshift_datasets_shares/test_redshift_share.py b/tests/modules/redshift_datasets_shares/test_redshift_share.py new file mode 100644 index 000000000..a1ee64e67 --- /dev/null +++ b/tests/modules/redshift_datasets_shares/test_redshift_share.py @@ -0,0 +1,11 @@ +import pytest +from assertpy import assert_that + + +def test_create_redshift_share(redshift_share_request_cross_account, target_connection, dataset_1): + # Given redshift_share_request_1 + # When + assert redshift_share_request_cross_account + assert redshift_share_request_cross_account.principalId == target_connection.connectionUri + assert redshift_share_request_cross_account.principalRoleName == 'rs_role_1' + assert redshift_share_request_cross_account.principalType == 'Redshift_Role' diff --git a/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py b/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py new file mode 100644 index 000000000..6f7ff15f8 --- /dev/null +++ b/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py @@ -0,0 +1,397 @@ +from unittest.mock import call +from assertpy import assert_that +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.services.shares_enums import ShareItemHealthStatus + + +def test_approve_redshift_cross_account_share_all_mocked( + dataset_1, + table1, + target_connection, + approved_share_data_cross_account, + redshift_processor_cross_account, + mock_redshift_data_shares, + mock_redshift_shares, +): + # When + response = redshift_processor_cross_account.process_approved_shares() + # Then + assert_that(response).is_true() + mock_redshift_data_shares.return_value.create_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name + ) + mock_redshift_data_shares.return_value.add_schema_to_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, schema=dataset_1.schema + ) + mock_redshift_data_shares.return_value.grant_datashare_usage_to_account.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, + account=approved_share_data_cross_account.target_environment.AwsAccountId, + ) + mock_redshift_data_shares.return_value.grant_datashare_usage_to_namespace.assert_not_called() + mock_redshift_shares.return_value.authorize_datashare.assert_called_with( + datashare_arn=redshift_processor_cross_account.datashare_arn, + account=approved_share_data_cross_account.target_environment.AwsAccountId, + ) + mock_redshift_shares.return_value.associate_datashare.assert_called_with( + datashare_arn=redshift_processor_cross_account.datashare_arn, + consumer_arn=f'arn:aws:redshift-serverless:{approved_share_data_cross_account.target_environment.region}:{approved_share_data_cross_account.target_environment.AwsAccountId}:namespace/{target_connection.nameSpaceId}', + ) + mock_redshift_data_shares.return_value.drop_database.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name() + ) + mock_redshift_data_shares.return_value.create_database_from_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, + database=redshift_processor_cross_account._build_local_db_name(), + namespace=redshift_processor_cross_account.source_connection.nameSpaceId, + account=approved_share_data_cross_account.source_environment.AwsAccountId, + ) + mock_redshift_data_shares.return_value.grant_database_usage_access_to_redshift_role.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ) + mock_redshift_data_shares.return_value.create_external_schema.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name(), + schema=dataset_1.schema, + external_schema=redshift_processor_cross_account._build_external_schema_name(), + ) + + mock_redshift_data_shares.return_value.grant_schema_usage_access_to_redshift_role.assert_has_calls( + [ + call( + schema=redshift_processor_cross_account._build_external_schema_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ), + call( + database=redshift_processor_cross_account._build_local_db_name(), + schema=dataset_1.schema, + rs_role=redshift_processor_cross_account.redshift_role, + ), + ] + ) + mock_redshift_data_shares.return_value.add_table_to_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, schema=dataset_1.schema, table_name=table1.name + ) + mock_redshift_data_shares.return_value.grant_select_table_access_to_redshift_role.assert_has_calls( + [ + call( + database=redshift_processor_cross_account._build_local_db_name(), + schema=dataset_1.schema, + table=table1.name, + rs_role=redshift_processor_cross_account.redshift_role, + ), + call( + schema=redshift_processor_cross_account._build_external_schema_name(), + table=table1.name, + rs_role=redshift_processor_cross_account.redshift_role, + ), + ] + ) + + +def test_approve_redshift_same_account_share_all_mocked( + dataset_1, + table1, + redshift_processor_same_account, + mock_redshift_data_shares, + mock_redshift_shares, +): + # When + response = redshift_processor_same_account.process_approved_shares() + # Then + assert_that(response).is_true() + mock_redshift_data_shares.return_value.create_datashare.assert_called_with( + datashare=redshift_processor_same_account.datashare_name + ) + mock_redshift_data_shares.return_value.add_schema_to_datashare.assert_called_with( + datashare=redshift_processor_same_account.datashare_name, schema=dataset_1.schema + ) + mock_redshift_data_shares.return_value.grant_datashare_usage_to_account.assert_not_called() + mock_redshift_data_shares.return_value.grant_datashare_usage_to_namespace.assert_called_with( + datashare=redshift_processor_same_account.datashare_name, + namespace=redshift_processor_same_account.target_connection.nameSpaceId, + ) + mock_redshift_shares.return_value.authorize_datashare.assert_not_called() + mock_redshift_shares.return_value.associate_datashare.assert_not_called() + mock_redshift_data_shares.return_value.drop_database.assert_called_with( + database=redshift_processor_same_account._build_local_db_name() + ) + mock_redshift_data_shares.return_value.create_database_from_datashare.assert_called_with( + datashare=redshift_processor_same_account.datashare_name, + database=redshift_processor_same_account._build_local_db_name(), + namespace=redshift_processor_same_account.source_connection.nameSpaceId, + account=None, + ) + mock_redshift_data_shares.return_value.grant_database_usage_access_to_redshift_role.assert_called_with( + database=redshift_processor_same_account._build_local_db_name(), + rs_role=redshift_processor_same_account.redshift_role, + ) + mock_redshift_data_shares.return_value.create_external_schema.assert_called_with( + database=redshift_processor_same_account._build_local_db_name(), + schema=dataset_1.schema, + external_schema=redshift_processor_same_account._build_external_schema_name(), + ) + + mock_redshift_data_shares.return_value.grant_schema_usage_access_to_redshift_role.assert_has_calls( + [ + call( + schema=redshift_processor_same_account._build_external_schema_name(), + rs_role=redshift_processor_same_account.redshift_role, + ), + call( + database=redshift_processor_same_account._build_local_db_name(), + schema=dataset_1.schema, + rs_role=redshift_processor_same_account.redshift_role, + ), + ] + ) + mock_redshift_data_shares.return_value.add_table_to_datashare.assert_called_with( + datashare=redshift_processor_same_account.datashare_name, schema=dataset_1.schema, table_name=table1.name + ) + mock_redshift_data_shares.return_value.grant_select_table_access_to_redshift_role.assert_has_calls( + [ + call( + database=redshift_processor_same_account._build_local_db_name(), + schema=dataset_1.schema, + table=table1.name, + rs_role=redshift_processor_same_account.redshift_role, + ), + call( + schema=redshift_processor_same_account._build_external_schema_name(), + table=table1.name, + rs_role=redshift_processor_same_account.redshift_role, + ), + ] + ) + + +def test_revoke_redshift_cross_account_share_all_mocked( + dataset_1, table1, redshift_processor_cross_account, mock_redshift_data_shares +): + # When + response = redshift_processor_cross_account.process_revoked_shares() + # Then + assert_that(response).is_true() + mock_redshift_data_shares.return_value.check_database_exists.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name() + ) + mock_redshift_data_shares.return_value.check_schema_exists.assert_called_with( + schema=redshift_processor_cross_account._build_external_schema_name(), + database=redshift_processor_cross_account.target_connection.database, + ) + + mock_redshift_data_shares.return_value.revoke_select_table_access_to_redshift_role.assert_has_calls( + [ + call( + schema=redshift_processor_cross_account._build_external_schema_name(), + table=table1.name, + rs_role=redshift_processor_cross_account.redshift_role, + ), + call( + database=redshift_processor_cross_account._build_local_db_name(), + schema=dataset_1.schema, + table=table1.name, + rs_role=redshift_processor_cross_account.redshift_role, + ), + ] + ) + mock_redshift_data_shares.return_value.check_datashare_exists.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name + ) + mock_redshift_data_shares.return_value.remove_table_from_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, schema=dataset_1.schema, table_name=table1.name + ) + mock_redshift_data_shares.return_value.revoke_schema_usage_access_to_redshift_role( + schema=redshift_processor_cross_account._build_external_schema_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ) + mock_redshift_data_shares.return_value.revoke_database_usage_access_to_redshift_role( + database=redshift_processor_cross_account._build_local_db_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ) + mock_redshift_data_shares.return_value.drop_schema.assert_called_with( + schema=redshift_processor_cross_account._build_external_schema_name() + ) + mock_redshift_data_shares.return_value.drop_database.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name() + ) + mock_redshift_data_shares.return_value.drop_datashare(redshift_processor_cross_account.datashare_name) + + +def test_verify_redshift_cross_account_share_all_successful( + dataset_1, + table1, + target_connection, + redshift_processor_cross_account, + mock_redshift_data_shares, + mock_redshift_shares, +): + # When + response = redshift_processor_cross_account.verify_shares() + # Then + assert_that(response).is_true() + mock_redshift_data_shares.return_value.check_datashare_exists.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name + ) + mock_redshift_data_shares.return_value.check_schema_in_datashare.assert_called_with( + schema=dataset_1.schema, datashare=redshift_processor_cross_account.datashare_name + ) + mock_redshift_shares.return_value.get_datashare_status.assert_has_calls( + [ + call( + datashare_arn=redshift_processor_cross_account.datashare_arn, + consumer_id=redshift_processor_cross_account.share_data.target_environment.AwsAccountId, + ), + call( + datashare_arn=redshift_processor_cross_account.datashare_arn, + consumer_id=f'arn:aws:redshift-serverless:{redshift_processor_cross_account.share_data.target_environment.region}:{redshift_processor_cross_account.share_data.target_environment.AwsAccountId}:namespace/{target_connection.nameSpaceId}', + ), + ] + ) + mock_redshift_data_shares.return_value.check_consumer_permissions_to_datashare( + datashare=redshift_processor_cross_account.datashare_name + ) + mock_redshift_data_shares.return_value.check_database_exists.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name() + ) + mock_redshift_data_shares.return_value.check_role_permissions_in_database.assert_called_with( + database=redshift_processor_cross_account._build_local_db_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ) + mock_redshift_data_shares.return_value.check_schema_exists.assert_called_with( + schema=redshift_processor_cross_account._build_external_schema_name(), + database=redshift_processor_cross_account.target_connection.database, + ) + mock_redshift_data_shares.return_value.check_role_permissions_in_schema.assert_called_with( + schema=redshift_processor_cross_account._build_external_schema_name(), + rs_role=redshift_processor_cross_account.redshift_role, + ) + mock_redshift_data_shares.return_value.check_table_in_datashare.assert_called_with( + datashare=redshift_processor_cross_account.datashare_name, table_name=table1.name + ) + + +def test_verify_redshift_share_datashare_does_not_exist( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_datashare_exists.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('Redshift datashare Target Resource does not exist') + + +def test_verify_redshift_schema_not_added_to_datashare( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_schema_in_datashare.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('Redshift schema added to datashare Target Resource does not exist') + + +def test_verify_consumer_permissions_to_datashare_wrong_status_cross_account( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_shares.return_value.get_datashare_status.return_value = 'UNAUTHORIZED' + # When + response = redshift_processor_cross_account.verify_shares() + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('in wrong status: UNAUTHORIZED') + + +def test_verify_consumer_permissions_to_datashare_same_account( + db, redshift_requested_table_2, redshift_processor_same_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_consumer_permissions_to_datashare.return_value = False + # When + response = redshift_processor_same_account.verify_shares() + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table_2.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('missing SHARE permissions: SHARE for Redshift datashare Target') + mock_redshift_shares.return_value.get_datashare_status.assert_not_called() + + +def test_verify_redshift_share_database_does_not_exist( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_database_exists.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('Redshift local database in consumer Target Resource does not exist') + + +def test_verify_role_permissions_to_database( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_role_permissions_in_database.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains( + 'missing USAGE permissions: USAGE for Redshift local database in consumer' + ) + + +def test_verify_external_schema_exists( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_schema_exists.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('Redshift external schema Target Resource does not exist') + + +def test_verify_role_permissions_to_schema( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_role_permissions_in_schema.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('missing USAGE permissions: USAGE for Redshift external schema') + + +def test_verify_table_not_added_to_datashare( + db, redshift_requested_table, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares +): + # Given + mock_redshift_data_shares.return_value.check_table_in_datashare.return_value = False + # When + response = redshift_processor_cross_account.verify_shares() + # Then + with db.scoped_session() as session: + item = ShareObjectRepository.get_share_item_by_uri(session, redshift_requested_table.shareItemUri) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Unhealthy.value) + assert_that(item.healthMessage).contains('Redshift table added to datashare Target Resource does not exist') From 20f79ba4893c498c1a0af1a2fe9e46d4659964f4 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:35:31 -0400 Subject: [PATCH 033/188] Upgrade axios version (#1483) ### Feature or Bugfix - Bugfix ### Detail - Upgrade `axios` package to latest release - Tested File Upload still works on Dataset Tab after upgrade ### Relates - N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 9 +- frontend/package.json | 2 +- frontend/yarn.lock | 2834 ++++++++++++++++++++++++++++++------ 3 files changed, 2428 insertions(+), 417 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1062faf1b..491ebd1be 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -29,7 +29,7 @@ "apexcharts": "^3.33.2", "apollo-boost": "^0.4.9", "aws-amplify": "^5.3.14", - "axios": "^1.6.5", + "axios": "^1.7.4", "braces": "3.0.3", "classnames": "^2.3.1", "date-fns": "^2.28.0", @@ -15786,9 +15786,10 @@ } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 1c73268fd..ebd51bfbf 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,7 +38,7 @@ "apexcharts": "^3.33.2", "apollo-boost": "^0.4.9", "aws-amplify": "^5.3.14", - "axios": "^1.6.5", + "axios": "^1.7.4", "classnames": "^2.3.1", "date-fns": "^2.28.0", "dayjs": "^1.11.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 8930f8131..60d4437ab 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@4.3.3", "@adobe/css-tools@^4.0.1": +"@adobe/css-tools@4.3.3": version "4.3.3" resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== @@ -289,15 +289,6 @@ fast-xml-parser "^4.2.5" tslib "^1.8.0" -"@aws-crypto/crc32@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" - integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== - dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - "@aws-crypto/crc32@^1.0.0": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" @@ -307,6 +298,15 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" +"@aws-crypto/crc32@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" + integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + "@aws-crypto/ie11-detection@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz" @@ -321,6 +321,19 @@ dependencies: tslib "^1.11.1" +"@aws-crypto/sha256-browser@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" + integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== + dependencies: + "@aws-crypto/ie11-detection" "^1.0.0" + "@aws-crypto/sha256-js" "^1.2.2" + "@aws-crypto/supports-web-crypto" "^1.0.0" + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + tslib "^1.11.1" + "@aws-crypto/sha256-browser@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" @@ -335,20 +348,7 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-browser@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" - integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== - dependencies: - "@aws-crypto/ie11-detection" "^1.0.0" - "@aws-crypto/sha256-js" "^1.2.2" - "@aws-crypto/supports-web-crypto" "^1.0.0" - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@1.2.2", "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2": +"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2", "@aws-crypto/sha256-js@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz" integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== @@ -357,7 +357,7 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@2.0.0", "@aws-crypto/sha256-js@^2.0.0": +"@aws-crypto/sha256-js@^2.0.0", "@aws-crypto/sha256-js@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== @@ -1641,12 +1641,7 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/types@3.186.0": - version "3.186.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" - integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== - -"@aws-sdk/types@3.6.1", "@aws-sdk/types@^3.1.0": +"@aws-sdk/types@^3.1.0", "@aws-sdk/types@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.6.1.tgz" integrity sha512-4Dx3eRTrUHLxhFdLJL8zdNGzVsJfAxtxPYYGmIddUkO2Gj3WA1TGjdfG4XN/ClI6e1XonCHafQX3UYO/mgnH3g== @@ -1659,6 +1654,11 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/types@3.186.0": + version "3.186.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" + integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== + "@aws-sdk/url-parser-native@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/url-parser-native/-/url-parser-native-3.6.1.tgz" @@ -1868,6 +1868,13 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" +"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.6.1": + version "3.6.1" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" + integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== + dependencies: + tslib "^1.8.0" + "@aws-sdk/util-utf8-browser@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz" @@ -1875,13 +1882,6 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-utf8-browser@3.6.1", "@aws-sdk/util-utf8-browser@^3.0.0": - version "3.6.1" - resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" - integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== - dependencies: - tslib "^1.8.0" - "@aws-sdk/util-utf8-node@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz" @@ -1915,12 +1915,12 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -1950,7 +1950,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": +"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz" integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== @@ -1975,7 +1975,7 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz" integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== @@ -2021,7 +2021,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== @@ -2082,7 +2082,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz" integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== -"@babel/helper-remap-async-to-generator@^7.24.7": +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz" integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== @@ -2166,7 +2166,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== @@ -2203,7 +2203,17 @@ "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-proposal-class-properties@^7.16.0": +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -2220,7 +2230,23 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-decorators" "^7.24.7" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz" + integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-default-from" "^7.24.7" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -2228,7 +2254,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.0": +"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -2236,7 +2262,26 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-optional-chaining@^7.16.0": +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -2293,13 +2338,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz" + integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" @@ -2307,7 +2359,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.7": +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz" integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== @@ -2356,7 +2408,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -2384,7 +2436,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -2420,7 +2472,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7": +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== @@ -2437,7 +2489,7 @@ "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.24.7": +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== @@ -2453,7 +2505,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.7": +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz" integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== @@ -2477,7 +2529,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.7": +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz" integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== @@ -2491,7 +2543,7 @@ "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7": +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== @@ -2499,7 +2551,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.7": +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz" integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== @@ -2545,7 +2597,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.16.0": +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz" integrity sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA== @@ -2561,7 +2613,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.7": +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz" integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== @@ -2578,7 +2630,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.7": +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz" integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== @@ -2608,7 +2660,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.7": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz" integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== @@ -2635,7 +2687,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== @@ -2701,14 +2753,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.7": +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.7": +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz" integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== @@ -2716,7 +2768,7 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.7": +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== @@ -2740,7 +2792,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz" integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== @@ -2754,7 +2806,21 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.24.7": +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz" + integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz" + integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz" integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== @@ -2788,7 +2854,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@^7.16.4": +"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== @@ -2800,14 +2866,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7": +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.7": +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== @@ -2815,7 +2881,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.7": +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== @@ -2836,7 +2902,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typescript@^7.24.7": +"@babel/plugin-transform-typescript@^7.24.7", "@babel/plugin-transform-typescript@^7.5.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz" integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== @@ -2861,7 +2927,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.7": +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== @@ -2877,7 +2943,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz" integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== @@ -2964,6 +3030,15 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-flow@^7.13.13": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz" + integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-flow-strip-types" "^7.24.7" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" @@ -2985,7 +3060,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.24.7" "@babel/plugin-transform-react-pure-annotations" "^7.24.7" -"@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz" integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== @@ -2996,19 +3071,30 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.7" "@babel/plugin-transform-typescript" "^7.24.7" +"@babel/register@^7.13.16": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz" + integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.3.3": +"@babel/template@^7.0.0", "@babel/template@^7.24.7", "@babel/template@^7.3.3": version "7.24.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== @@ -3017,7 +3103,7 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/traverse@7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.7.2": +"@babel/traverse@7.23.2": version "7.23.2" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -3033,7 +3119,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz" integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== @@ -3229,7 +3315,7 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/core@^10.0.28": +"@emotion/core@^10.0.27", "@emotion/core@^10.0.28": version "10.3.1" resolved "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== @@ -3250,22 +3336,15 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - "@emotion/hash@^0.9.1": version "0.9.1" resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== -"@emotion/is-prop-valid@0.8.8": - version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@emotion/is-prop-valid@^1.2.2": version "1.2.2" @@ -3274,17 +3353,24 @@ dependencies: "@emotion/memoize" "^0.8.1" -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/is-prop-valid@0.8.8": + version "0.8.8" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" "@emotion/memoize@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.8.2": +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.2", "@emotion/react@^11.9.0": version "11.11.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz" integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== @@ -3309,7 +3395,7 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4": +"@emotion/serialize@^1.1.2": version "1.1.4" resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== @@ -3320,16 +3406,38 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/serialize@^1.1.3": + version "1.1.4" + resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/serialize@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" "@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + "@emotion/styled-base@^10.3.0": version "10.3.0" resolved "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz" @@ -3348,7 +3456,7 @@ "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" -"@emotion/styled@^11.8.1": +"@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": version "11.11.5" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz" integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ== @@ -3365,41 +3473,41 @@ resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@0.7.5": - version "0.7.5" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - "@emotion/unitless@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== - "@emotion/utils@^1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== -"@emotion/weak-memoize@0.2.5": - version "0.2.5" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== "@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -3464,6 +3572,18 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" @@ -3495,6 +3615,11 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" @@ -3569,6 +3694,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" @@ -3579,6 +3711,16 @@ "@types/node" "*" jest-mock "^27.5.1" +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" @@ -3598,6 +3740,18 @@ jest-mock "^27.5.1" jest-util "^27.5.1" +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" @@ -3712,6 +3866,17 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" @@ -3811,7 +3976,7 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.20": +"@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.40": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -3849,7 +4014,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.5.2": +"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@^5.8.6", "@mui/material@>=5.15.0": version "5.15.19" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.19.tgz" integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== @@ -3909,7 +4074,7 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.15": +"@mui/system@^5.15.15", "@mui/system@^5.4.1", "@mui/system@^5.8.0": version "5.15.15" resolved "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz" integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== @@ -3995,7 +4160,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -4031,6 +4196,310 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@react-native-community/cli-clean@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz" + integrity sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + +"@react-native-community/cli-config@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.8.tgz" + integrity sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + fast-glob "^3.3.2" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.8.tgz" + integrity sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.8.tgz" + integrity sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA== + dependencies: + "@react-native-community/cli-config" "13.6.8" + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-platform-apple" "13.6.8" + "@react-native-community/cli-platform-ios" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.8.tgz" + integrity sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ== + dependencies: + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.8.tgz" + integrity sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + fast-xml-parser "^4.2.4" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-apple@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.8.tgz" + integrity sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + fast-xml-parser "^4.0.12" + ora "^5.4.1" + +"@react-native-community/cli-platform-ios@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.8.tgz" + integrity sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw== + dependencies: + "@react-native-community/cli-platform-apple" "13.6.8" + +"@react-native-community/cli-server-api@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.8.tgz" + integrity sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg== + dependencies: + "@react-native-community/cli-debugger-ui" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^6.2.2" + +"@react-native-community/cli-tools@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.8.tgz" + integrity sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + execa "^5.0.0" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.8.tgz" + integrity sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.8.tgz" + integrity sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ== + dependencies: + "@react-native-community/cli-clean" "13.6.8" + "@react-native-community/cli-config" "13.6.8" + "@react-native-community/cli-debugger-ui" "13.6.8" + "@react-native-community/cli-doctor" "13.6.8" + "@react-native-community/cli-hermes" "13.6.8" + "@react-native-community/cli-server-api" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + "@react-native-community/cli-types" "13.6.8" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native/assets-registry@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.84.tgz" + integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ== + +"@react-native/babel-plugin-codegen@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz" + integrity sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw== + dependencies: + "@react-native/codegen" "0.74.84" + +"@react-native/babel-preset@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.84.tgz" + integrity sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.74.84" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.84.tgz" + integrity sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ== + dependencies: + "@babel/parser" "^7.20.0" + glob "^7.1.1" + hermes-parser "0.19.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.84.tgz" + integrity sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ== + dependencies: + "@react-native-community/cli-server-api" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + "@react-native/dev-middleware" "0.74.84" + "@react-native/metro-babel-transformer" "0.74.84" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + querystring "^0.2.1" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz" + integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A== + +"@react-native/dev-middleware@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz" + integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.74.84" + "@rnx-kit/chromium-edge-launcher" "^1.0.0" + chrome-launcher "^0.15.2" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + open "^7.0.3" + selfsigned "^2.4.1" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz" + integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg== + +"@react-native/js-polyfills@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz" + integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ== + +"@react-native/metro-babel-transformer@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz" + integrity sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.74.84" + hermes-parser "0.19.1" + nullthrows "^1.1.1" + +"@react-native/normalize-colors@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz" + integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A== + +"@react-native/virtualized-lists@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz" + integrity sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + "@reduxjs/toolkit@^1.8.0": version "1.9.7" resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz" @@ -4041,9 +4510,21 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" +"@rnx-kit/chromium-edge-launcher@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== + dependencies: + "@types/node" "^18.0.0" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -4083,6 +4564,23 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz" integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" @@ -4100,6 +4598,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" @@ -4241,6 +4753,20 @@ lz-string "^1.5.0" pretty-format "^27.0.2" +"@testing-library/dom@>=7.21.4": + version "10.1.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz" + integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + "@testing-library/jest-dom@^5.16.2": version "5.17.0" resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz" @@ -4307,7 +4833,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -4522,6 +5048,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.0": + version "18.19.34" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz" + integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== + dependencies: + undici-types "~5.26.4" + "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" @@ -4576,7 +5109,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17": +"@types/react@*", "@types/react@^17", "@types/react@^17.0.0 || ^18.0.0": version "17.0.80" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz" integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== @@ -4585,6 +5118,14 @@ "@types/scheduler" "^0.16" csstype "^3.0.2" +"@types/react@^18.2.6": + version "18.3.3" + resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -4667,6 +5208,13 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^16.0.0": version "16.0.9" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" @@ -4686,7 +5234,7 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.7.tgz" integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA== -"@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -4709,7 +5257,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -4755,7 +5303,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -4782,7 +5330,7 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": +"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -4883,7 +5431,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": +"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -4973,7 +5521,14 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -5004,16 +5559,16 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -5053,7 +5608,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5063,7 +5618,27 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ajv@^8.6.0, ajv@>=8: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ajv@^8.8.2, ajv@^8.9.0: version "8.16.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== @@ -5089,6 +5664,11 @@ amazon-quicksight-embedding-sdk@^1.18.1: resolved "https://registry.npmjs.org/amazon-quicksight-embedding-sdk/-/amazon-quicksight-embedding-sdk-1.20.1.tgz" integrity sha512-JYBCeq1Rq1OOeZQB9ry85uASTTtqZzp5hFv0ihIX7XyD9anvcoW6GHo4ttzdkJMTMMAnzXhIBe9CRKm3tHMzeg== +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -5096,6 +5676,15 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -5106,7 +5695,12 @@ ansi-html@^0.0.9: resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz" integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== -ansi-regex@^5.0.1: +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -5116,7 +5710,7 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5153,7 +5747,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@^3.33.2: +apexcharts@^3.33.2, apexcharts@^3.41.0: version "3.49.1" resolved "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz" integrity sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw== @@ -5192,7 +5786,7 @@ apollo-cache-inmemory@^1.6.6: ts-invariant "^0.4.0" tslib "^1.10.0" -apollo-cache@1.3.5, apollo-cache@^1.3.5: +apollo-cache@^1.3.5, apollo-cache@1.3.5: version "1.3.5" resolved "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz" integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== @@ -5251,7 +5845,7 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: tslib "^1.9.3" zen-observable-ts "^0.8.21" -apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: +apollo-utilities@^1.3.0, apollo-utilities@^1.3.4, apollo-utilities@1.3.4: version "1.3.4" resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== @@ -5270,6 +5864,11 @@ appbase-js@^5.3.4: querystring "^0.2.0" url-parser-lite "^0.1.0" +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + arg@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" @@ -5287,6 +5886,13 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@^5.0.0, aria-query@^5.3.0, aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" @@ -5294,13 +5900,6 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0, aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -5433,6 +6032,23 @@ ast-types-flow@^0.0.8: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async@^3.2.3: version "3.2.5" resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" @@ -5496,10 +6112,10 @@ axe-core@=4.7.0: resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== -axios@^1.6.5: - version "1.7.2" - resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== +axios@^1.6.5, axios@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz" + integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -5512,6 +6128,11 @@ axobject-query@^3.2.1: dependencies: dequal "^2.0.3" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" @@ -5625,6 +6246,13 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" @@ -5688,7 +6316,7 @@ base-64@1.0.0: resolved "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -5719,6 +6347,15 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" @@ -5775,7 +6412,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@3.0.3, braces@^3.0.3, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2, braces@3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -5787,7 +6424,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: version "4.23.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz" integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== @@ -5809,16 +6446,15 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +buffer@^5.4.3: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" + base64-js "^1.3.1" + ieee754 "^1.1.13" -buffer@^5.4.3: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -5826,6 +6462,15 @@ buffer@^5.4.3: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" @@ -5852,6 +6497,25 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -5879,12 +6543,17 @@ camelcase-keys@6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0, camelcase@^6.2.1: +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^6.2.1: version "6.3.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -5931,7 +6600,31 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5969,11 +6662,26 @@ chokidar@^3.4.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.2.0: version "3.9.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" @@ -5996,6 +6704,27 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -6005,7 +6734,35 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clsx@^1.1.0, clsx@^1.2.1: +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +clsx@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -6048,21 +6805,26 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + colorette@^2.0.10: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" @@ -6075,7 +6837,17 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0, commander@^2.20.3: +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6095,6 +6867,11 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" @@ -6112,7 +6889,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: +compression@^1.7.1, compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -6140,6 +6917,16 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -6167,16 +6954,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - cookie@^0.4.0: version "0.4.2" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" @@ -6206,6 +6993,26 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@^5.0.5: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" @@ -6253,7 +7060,25 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6348,15 +7173,15 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.4" + mdn-data "2.0.14" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -6364,6 +7189,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" @@ -6480,7 +7313,12 @@ csstype@^2.5.7: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.0.2, csstype@^3.1.3: +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -6526,31 +7364,38 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.28.0: +date-fns@^2.0.0, date-fns@^2.25.0, date-fns@^2.28.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" -dayjs@^1.11.0, dayjs@^1.11.7: +dayjs@^1.10.7, dayjs@^1.11.0, dayjs@^1.11.7, dayjs@^1.8.15, dayjs@^1.8.17: version "1.11.11" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== -debug@2.6.9, debug@^2.6.0: +debug@^2.2.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== +debug@^2.6.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "2.1.2" + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" debug@^3.2.7: version "3.2.7" @@ -6559,6 +7404,25 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decimal.js@^10.2.1: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -6608,6 +7472,11 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -6615,6 +7484,13 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" @@ -6643,16 +7519,21 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -6749,14 +7630,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -6766,16 +7639,24 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" @@ -6853,7 +7734,7 @@ echarts-for-react@^3.0.2: fast-deep-equal "^3.1.3" size-sensor "^1.0.1" -echarts@^5.3.3: +"echarts@^3.0.0 || ^4.0.0 || ^5.0.0", echarts@^5.3.3: version "5.5.0" resolved "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz" integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== @@ -6866,7 +7747,7 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@3.1.10, ejs@^3.1.6: +ejs@3.1.10: version "3.1.10" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -6925,7 +7806,7 @@ enhanced-resolve@^5.16.0: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@2.2.0, entities@^2.0.0: +entities@^2.0.0, entities@2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== @@ -6938,6 +7819,11 @@ env-cmd@^10.1.0: commander "^4.0.0" cross-spawn "^7.0.0" +envinfo@^7.10.0: + version "7.13.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -6952,6 +7838,14 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" @@ -7195,7 +8089,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5, eslint-plugin-import@>=1.4.0: version "2.29.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -7290,7 +8184,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -7306,6 +8200,14 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -7327,7 +8229,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6", eslint@>=7.0.0, eslint@>=7.28.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -7380,16 +8282,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esprima@1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" @@ -7404,7 +8306,12 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -7429,6 +8336,11 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" @@ -7446,7 +8358,7 @@ exec-sh@^0.2.0: dependencies: merge "^1.2.0" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -7487,7 +8399,7 @@ expect@^29.0.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@4.19.2, express@^4.17.3: +express@4.19.2: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -7539,7 +8451,7 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -7560,7 +8472,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@4.2.5, fast-xml-parser@4.4.1, fast-xml-parser@^4.2.5: +fast-xml-parser@4.4.1: version "4.4.1" resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== @@ -7634,6 +8546,19 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" @@ -7647,6 +8572,15 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" @@ -7668,7 +8602,15 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -7698,7 +8640,17 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@1.15.6, follow-redirects@^1.0.0, follow-redirects@^1.15.6: +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@0.*: + version "0.237.2" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz" + integrity sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ== + +follow-redirects@1.15.6: version "1.15.6" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -7793,7 +8745,26 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -7843,7 +8814,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -7883,7 +8854,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7897,6 +8868,13 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -7980,7 +8958,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7997,7 +8975,7 @@ graphql-tag@^2.12.6, graphql-tag@^2.4.2: dependencies: tslib "^2.1.0" -graphql@15.8.0: +"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.0.0 || ^16.0.0", graphql@15.8.0: version "15.8.0" resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== @@ -8070,6 +9048,37 @@ he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hermes-estree@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz" + integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== + +hermes-estree@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" + integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== + +hermes-parser@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz" + integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== + dependencies: + hermes-estree "0.19.1" + +hermes-parser@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" + integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== + dependencies: + hermes-estree "0.20.1" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + history@^5.0.3: version "5.3.0" resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz" @@ -8160,6 +9169,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -8171,16 +9190,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -8233,13 +9242,6 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.5.tgz" integrity sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -8247,21 +9249,28 @@ iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" - integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== - idb@^7.0.1: version "7.1.1" resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== +idb@5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" + integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== + identity-obj-proxy@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" @@ -8279,16 +9288,31 @@ ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immer@9.0.6: - version "9.0.6" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" immer@^9.0.21, immer@^9.0.7: version "9.0.21" resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +immer@9.0.6: + version "9.0.6" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" + integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" @@ -8323,7 +9347,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8354,21 +9378,16 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" - integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -8445,6 +9464,11 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -8462,6 +9486,11 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -8491,6 +9520,11 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" @@ -8533,6 +9567,13 @@ is-plain-obj@^3.0.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" @@ -8599,6 +9640,11 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" @@ -8619,7 +9665,12 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^2.2.0: +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -8641,6 +9692,11 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isomorphic-unfetch@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" @@ -8866,6 +9922,18 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" @@ -9000,6 +10068,15 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" @@ -9024,7 +10101,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -9179,7 +10256,19 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-watch-typeahead@^1.0.0: +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watch-typeahead@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== @@ -9246,7 +10335,17 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -9260,6 +10359,17 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +joi@^17.2.1: + version "17.13.1" + resolved "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz" + integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" @@ -9285,6 +10395,41 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + jsdom@^16.6.0: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" @@ -9333,6 +10478,11 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -9370,6 +10520,13 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -9453,7 +10610,7 @@ jss-plugin-vendor-prefixer@^10.10.0: css-vendor "^2.0.8" jss "10.10.0" -jss@10.10.0, jss@^10.10.0: +jss@^10.10.0, jss@10.10.0: version "10.10.0" resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz" integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== @@ -9541,6 +10698,14 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + lilconfig@^2.0.3, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -9637,6 +10802,23 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -9675,6 +10857,14 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" @@ -9701,6 +10891,11 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" @@ -9723,6 +10918,11 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" @@ -9733,21 +10933,205 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@2.1.1, merge@^1.2.0: - version "2.1.1" - resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" - integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== - methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +metro-babel-transformer@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz" + integrity sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.20.1" + nullthrows "^1.1.1" + +metro-cache-key@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz" + integrity sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg== + +metro-cache@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz" + integrity sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w== + dependencies: + metro-core "0.80.9" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz" + integrity sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.9" + metro-cache "0.80.9" + metro-core "0.80.9" + metro-runtime "0.80.9" + +metro-core@^0.80.3, metro-core@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz" + integrity sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.9" + +metro-file-map@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz" + integrity sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz" + integrity sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz" + integrity sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w== + +metro-runtime@^0.80.3, metro-runtime@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz" + integrity sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz" + integrity sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.9" + nullthrows "^1.1.1" + ob1 "0.80.9" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz" + integrity sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.9" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz" + integrity sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz" + integrity sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.9" + metro-babel-transformer "0.80.9" + metro-cache "0.80.9" + metro-cache-key "0.80.9" + metro-minify-terser "0.80.9" + metro-source-map "0.80.9" + metro-transform-plugins "0.80.9" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz" + integrity sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.20.1" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.9" + metro-cache "0.80.9" + metro-cache-key "0.80.9" + metro-config "0.80.9" + metro-core "0.80.9" + metro-file-map "0.80.9" + metro-resolver "0.80.9" + metro-runtime "0.80.9" + metro-source-map "0.80.9" + metro-symbolicate "0.80.9" + metro-transform-plugins "0.80.9" + metro-transform-worker "0.80.9" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.7" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" @@ -9756,7 +11140,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -9768,6 +11152,11 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -9796,7 +11185,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -9827,23 +11216,33 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.1.2, ms@^2.1.1: +"monaco-editor@>= 0.21.0 < 1", "monaco-editor@>= 0.25.0 < 1": + version "0.49.0" + resolved "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz" + integrity sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ== + +ms@^2.1.1, ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -9891,7 +11290,7 @@ negotiator@0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9909,7 +11308,24 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@^2.6.1, node-fetch@^2.6.12: +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -9931,6 +11347,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -9966,18 +11387,28 @@ nprogress@^0.2.0: resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== -nth-check@^1.0.2, nth-check@^2.0.1: +nth-check@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + nwsapi@^2.2.0: version "2.2.10" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== +ob1@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz" + integrity sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA== + object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" @@ -10080,7 +11511,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -oidc-client-ts@^2.4.0: +oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.4.0.tgz" integrity sha512-WijhkTrlXK2VvgGoakWJiBdfIsVGz6CFzgjNNqZU1hPKV2kyeEaJgLs7RwuiSp2WhLfWBQuLvr2SxVlZnk3N1w== @@ -10088,6 +11519,13 @@ oidc-client-ts@^2.4.0: crypto-js "^4.2.0" jwt-decode "^3.1.2" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -10107,13 +11545,28 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -10164,7 +11617,29 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -p-limit@^2.0.0, p-limit@^2.2.0: +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -10232,6 +11707,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -10280,7 +11763,12 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -10328,11 +11816,23 @@ pify@^2.3.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pirates@^4.0.1, pirates@^4.0.4: +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -10892,7 +12392,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.31, postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: +postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -10918,7 +12418,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.8.7: +prettier@>=2.0.0, prettier@2.8.7: version "2.8.7" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -10936,6 +12436,26 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" +pretty-format@^26.5.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" @@ -10955,7 +12475,16 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0, pretty-format@^29.7.0: +pretty-format@^29.0.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -10969,7 +12498,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^8.1.0: +promise@^8.1.0, promise@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== @@ -10984,7 +12513,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@>=15: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -11016,16 +12545,16 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - punycode@^2.1.0, punycode@^2.1.1: version "2.3.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + q@^1.1.2: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" @@ -11038,16 +12567,16 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +querystring@^0.2.0, querystring@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystring@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" @@ -11058,6 +12587,13 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" @@ -11156,7 +12692,15 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.2: +react-devtools-core@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz" + integrity sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", react-dom@^17.0.2, "react-dom@^17.0.2 || ^18.0.0", react-dom@<18.0.0, react-dom@>=15, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: version "17.0.2" resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -11210,20 +12754,30 @@ react-if@^4.1.1: resolved "https://registry.npmjs.org/react-if/-/react-if-4.1.5.tgz" integrity sha512-Uk+Ub2gC83PAakuU4+7iLdTEP4LPi2ihNEPCtz/vr8SLGbzkMApbpYbkDZ5z9zYXurd0gg+EK/bpOLFFC1r1eQ== -react-is@^16.13.1, react-is@^16.7.0: +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: +react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-native-get-random-values@^1.4.0: version "1.11.0" @@ -11239,12 +12793,55 @@ react-native-url-polyfill@^1.3.0: dependencies: whatwg-url-without-unicode "8.0.0-3" +react-native@*, react-native@>=0.56: + version "0.74.2" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.74.2.tgz" + integrity sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "13.6.8" + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-platform-ios" "13.6.8" + "@react-native/assets-registry" "0.74.84" + "@react-native/codegen" "0.74.84" + "@react-native/community-cli-plugin" "0.74.84" + "@react-native/gradle-plugin" "0.74.84" + "@react-native/js-polyfills" "0.74.84" + "@react-native/normalize-colors" "0.74.84" + "@react-native/virtualized-lists" "0.74.84" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^5.0.0" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + react-oidc-context@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/react-oidc-context/-/react-oidc-context-2.3.1.tgz" integrity sha512-WdhmEU6odNzMk9pvOScxUkf6/1aduiI/nQryr7+iCl2VDnYLASDTIV/zy58KuK4VXG3fBaRKukc/mRpMjF9a3Q== -react-redux@^6.0.1, react-redux@^7.2.6: +"react-redux@^7.2.1 || ^8.0.2", react-redux@^7.2.6: version "7.2.9" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -11256,11 +12853,16 @@ react-redux@^6.0.1, react-redux@^7.2.6: prop-types "^15.7.2" react-is "^17.0.2" -react-refresh@^0.11.0: +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.0: + version "0.14.2" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + react-router-dom@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0.tgz" @@ -11330,6 +12932,14 @@ react-scripts@^5.0.1: optionalDependencies: fsevents "^2.3.2" +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" @@ -11340,7 +12950,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^17.0.2: +react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.0.0 || >=16.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.9.0 || ^17.0.0 || ^18", "react@^16.x || ^17.x || ^18.x", react@^17.0.0, "react@^17.0.0 || ^18.0.0", react@^17.0.2, "react@^17.0.2 || ^18.0.0", react@<18.0.0, "react@>= 16", "react@>= 16.8", react@>=0.13, react@>=0.13.x, react@>=0.14.x, react@>=15, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@~0.13.x || ~0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0", react@17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -11348,6 +12958,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" @@ -11368,7 +12985,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6: +readable-stream@^3.0.6, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -11377,6 +12994,19 @@ readable-stream@^3.0.6: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -11384,6 +13014,21 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" @@ -11404,7 +13049,7 @@ redux-thunk@^2.3.0, redux-thunk@^2.4.2: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.0.0, redux@^4.2.1: +redux@^4, redux@^4.0.0, redux@^4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -11436,6 +13081,11 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" @@ -11518,6 +13168,11 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" @@ -11535,6 +13190,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" @@ -11545,7 +13205,7 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@5.0.0, resolve-url-loader@^4.0.0: +resolve-url-loader@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== @@ -11584,6 +13244,14 @@ response-iterator@^0.2.6: resolved "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -11606,6 +13274,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" @@ -11616,7 +13291,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.43.1: +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -11640,16 +13315,21 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -11697,14 +13377,12 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + loose-envify "^1.1.0" schema-utils@^2.6.5: version "2.7.1" @@ -11715,7 +13393,25 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -11734,12 +13430,21 @@ schema-utils@^4.0.0, schema-utils@^4.2.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1: +selfsigned@^2.1.1, selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -11747,17 +13452,52 @@ selfsigned@^2.1.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^5.5.0: +semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.3.5: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.3.7: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.2: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.3: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.4: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -11781,6 +13521,11 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" @@ -11808,7 +13553,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: +serve-static@^1.13.1, serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -11818,6 +13563,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -11850,6 +13600,13 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" @@ -11879,7 +13636,7 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -11944,6 +13701,15 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -11972,7 +13738,7 @@ source-map-loader@^3.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -11980,15 +13746,20 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.4" @@ -12002,6 +13773,21 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -12052,6 +13838,13 @@ stackframe@^1.3.4: resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + state-local@^1.0.6: version "1.0.7" resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" @@ -12064,16 +13857,21 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -12081,6 +13879,20 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -12102,7 +13914,16 @@ string-natural-compare@^3.0.1: resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12166,20 +13987,6 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -12189,7 +13996,28 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -12271,6 +14099,11 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -12278,7 +14111,14 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -12331,7 +14171,7 @@ svg.filter.js@^2.0.2: dependencies: svg.js "^2.2.5" -svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: +svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5, svg.js@>=2.3.x: version "2.7.1" resolved "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz" integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== @@ -12455,6 +14295,13 @@ temp-dir@^2.0.0: resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + tempy@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" @@ -12484,7 +14331,7 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: +terser@^5.0.0, terser@^5.10.0, terser@^5.15.0, terser@^5.26.0: version "5.31.1" resolved "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz" integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== @@ -12522,11 +14369,24 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + throat@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + thunky@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" @@ -12632,21 +14492,31 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tslib@^1.10.0, tslib@^1.8.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.11.1, tslib@^1.8.0: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -12683,11 +14553,16 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: +type-fest@^0.21.3, "type-fest@>=0.17.0 <5.0.0": version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -12747,6 +14622,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + ulid@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz" @@ -12815,6 +14695,11 @@ universal-cookie@^4.0.4: "@types/cookie" "^0.3.3" cookie "^0.4.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" @@ -12825,7 +14710,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -12873,7 +14758,7 @@ url-search-params-polyfill@^7.0.0: resolved "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz" integrity sha512-bAw7L2E+jn9XHG5P9zrPnHdO0yJub4U+yXJOdpcpkr7OBd9T8oll4lUos0iSGRcDvfZoLUKfx9a6aNmIhJ4+mQ== -url@0.11.0, url@^0.11.0: +url@^0.11.0, url@0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== @@ -12906,7 +14791,7 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@3.4.0, uuid@^3.0.0, uuid@^3.2.1: +uuid@^3.0.0, uuid@^3.2.1, uuid@3.4.0: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -12930,6 +14815,11 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" @@ -12974,6 +14864,13 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + web-vitals@^2.1.4: version "2.1.4" resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz" @@ -12999,7 +14896,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: +webpack-dev-middleware@5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== @@ -13010,7 +14907,7 @@ webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0: +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": version "4.15.2" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -13075,7 +14972,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.64.4: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": version "5.91.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== @@ -13105,7 +15002,7 @@ webpack@^5.64.4: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -13126,7 +15023,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.6.2: +whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: version "3.6.20" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== @@ -13162,7 +15059,16 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -13210,6 +15116,11 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" @@ -13409,7 +15320,25 @@ workbox-window@6.6.0: "@types/trusted-types" "^2.0.2" workbox-core "6.6.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -13432,6 +15361,15 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" @@ -13442,10 +15380,24 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6, ws@^8.13.0, ws@^8.17.1: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +ws@^6.2.2: + version "6.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.2.3: + version "6.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.4.6, ws@^7.5.1: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== xml-name-validator@^3.0.0: version "3.0.0" @@ -13465,6 +15417,16 @@ xss@^1.0.11: commander "^2.20.3" cssfilter "0.0.10" +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -13480,16 +15442,51 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.1: + version "2.4.5" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" + integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== + yaml@^2.3.4: version "2.4.5" resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -13503,6 +15500,19 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" @@ -13521,14 +15531,6 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" -zen-observable-ts@0.8.19: - version "0.8.19" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" - integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" @@ -13544,16 +15546,24 @@ zen-observable-ts@^1.2.5: dependencies: zen-observable "0.8.15" -zen-observable@0.8.15, zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== +zen-observable-ts@0.8.19: + version "0.8.19" + resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" + integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" zen-observable@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz" integrity sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg== +zen-observable@^0.8.0, zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + zen-push@0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/zen-push/-/zen-push-0.2.1.tgz" From 3c4ce7c3847133b30ee62f61413e3746d2d86320 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:35:57 -0400 Subject: [PATCH 034/188] Run reapply automatically if Share Verifier Task detects Unhealthy Shared Items (#1476) ### Feature or Bugfix - Feature/Enhancement ### Detail - After the scheduled task verifies all share objects --> automatically re-apply the unhealthy share items found in data.all ### Relates - https://github.com/data-dot-all/dataall/issues/1285 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../shares_base/tasks/share_verifier_task.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/dataall/modules/shares_base/tasks/share_verifier_task.py b/backend/dataall/modules/shares_base/tasks/share_verifier_task.py index 046b56454..e96ca22f8 100644 --- a/backend/dataall/modules/shares_base/tasks/share_verifier_task.py +++ b/backend/dataall/modules/shares_base/tasks/share_verifier_task.py @@ -5,6 +5,8 @@ from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.shares_base.services.shares_enums import ShareItemStatus from dataall.modules.shares_base.services.sharing_service import SharingService +from dataall.core.stacks.aws.ecs import Ecs + from dataall.base.db import get_engine from dataall.base.loader import load_modules, ImportMode @@ -37,8 +39,18 @@ def verify_shares(engine): return processed_share_objects +def trigger_reapply_task(): + Ecs.run_ecs_task( + task_definition_param='ecs/task_def_arn/share_reapplier', + container_name_param='ecs/container/share_reapplier', + context=[], + ) + + if __name__ == '__main__': load_modules(modes={ImportMode.SHARES_TASK}) ENVNAME = os.environ.get('envname', 'local') ENGINE = get_engine(envname=ENVNAME) - verify_shares(engine=ENGINE) + processed_shares = verify_shares(engine=ENGINE) + log.info(f'Finished verifying {len(processed_shares)} shares, triggering reapply...') + trigger_reapply_task() From fa569ddd9646a7d840f36a67d19771184814f9f0 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Thu, 15 Aug 2024 09:09:14 -0400 Subject: [PATCH 035/188] Save data filter perms before backfilling (#1485) ### Feature or Bugfix - Bugfix ### Detail - Fix data filter migration to save permissions before associating with existing S3 dataset tables ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../versions/9efe5f7c69a1_add_data_filters_table.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py index 5b85e8a9f..a88a2ca5e 100644 --- a/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py +++ b/backend/migrations/versions/9efe5f7c69a1_add_data_filters_table.py @@ -12,6 +12,8 @@ from sqlalchemy.dialects import postgresql from dataall.base.db import Resource, utils from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.permission_service import PermissionService +from dataall.core.permissions.api.enums import PermissionType from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_TABLE_DATA_FILTERS, DATASET_TABLE_READ from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes from sqlalchemy.ext.declarative import declarative_base @@ -94,6 +96,13 @@ def upgrade(): bind = op.get_bind() session = orm.Session(bind=bind) print('Adding DATASET_TABLE_DATA_FILTERS permissions for all s3 dataset tables...') + for perm in DATASET_TABLE_DATA_FILTERS: + PermissionService.save_permission( + session, + name=perm, + description=perm, + permission_type=PermissionType.RESOURCE.name, + ) s3_datasets: [S3Dataset] = session.query(S3Dataset).all() for dataset in s3_datasets: dataset_tables = session.query(DatasetTable).filter(DatasetTable.datasetUri == dataset.datasetUri).all() From 050bc60e9ff476d01169a0547358beab5407ce79 Mon Sep 17 00:00:00 2001 From: mourya-33 <134511711+mourya-33@users.noreply.github.com> Date: Thu, 15 Aug 2024 12:13:10 -0400 Subject: [PATCH 036/188] Updated glue crawler security config (#1434) ### Feature or Bugfix - Bugfix ### Detail This PR is to add glue security configuration to glue crawlers and profiling jobs for passing checkov scans ### Relates [- ](https://github.com/data-dot-all/dataall/issues/1324) ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? N/A - What precautions are you taking before deserializing the data you consume? N/A - Is injection prevented by parametrizing queries? N/A - Have you ensured no `eval` or similar functions are used? N/A - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? N/A - Are you logging failed auth attempts? N/A - Are you using or adding any cryptographic features? Adding KMS key to encrypt crawler logs and Job bookmarks - Do you use a standard proven implementations? N/A - Are the used keys controlled by the customer? Where are they stored? N/A - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? Restricted the permissions to only the required resources By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Mourya Darivemula --- .../modules/s3_datasets/cdk/dataset_stack.py | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py b/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py index a94d66990..4c23772cc 100644 --- a/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py +++ b/backend/dataall/modules/s3_datasets/cdk/dataset_stack.py @@ -11,10 +11,12 @@ Duration, CfnResource, CustomResource, + RemovalPolicy, Tags, ) from aws_cdk.aws_glue import CfnCrawler +from dataall.base.utils.naming_convention import NamingConventionPattern, NamingConventionService from dataall.base import db from dataall.base.aws.quicksight import QuicksightClient from dataall.base.aws.sts import SessionHelper @@ -100,6 +102,16 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): env_group = self.get_env_group(dataset) self.pivot_role_name = SessionHelper.get_delegation_role_name(region=env.region) + dataset_basename = NamingConventionService( + target_uri=dataset.datasetUri, + target_label=dataset.label, + pattern=NamingConventionPattern.GLUE_ETL, + resource_prefix=env.resourcePrefix, + ).build_compliant_name() + + glue_sec_conf_enc_key_name = f'{dataset_basename}-log-enc-key' + glue_sec_conf_name = f'{dataset_basename}-security-config' + quicksight_default_group_arn = None if self.has_quicksight_enabled(env): quicksight_default_group_arn = f'arn:aws:quicksight:{dataset.region}:{dataset.AwsAccountId}:group/default/{QuicksightClient.DEFAULT_GROUP_NAME}' @@ -292,6 +304,14 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): f'arn:aws:glue:{dataset.region}:{dataset.AwsAccountId}:crawler/{dataset.GlueCrawlerName}', ], ), + iam.PolicyStatement( + sid='GlueSecurityConfiguration', + actions=[ + 'glue:GetSecurityConfiguration', + ], + effect=iam.Effect.ALLOW, + resources=['*'], + ), iam.PolicyStatement( sid='GlueAccessDefault', actions=[ @@ -307,6 +327,7 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): actions=[ 'logs:CreateLogGroup', 'logs:CreateLogStream', + 'logs:AssociateKmsKey', ], effect=iam.Effect.ALLOW, resources=[ @@ -322,6 +343,8 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): effect=iam.Effect.ALLOW, resources=[ f'arn:aws:logs:{dataset.region}:{dataset.AwsAccountId}:log-group:/aws-glue/crawlers:log-stream:{dataset.GlueCrawlerName}', + f'arn:aws:logs:{dataset.region}:{dataset.AwsAccountId}:log-group:/aws-glue/crawlers-role/{dataset.GlueCrawlerName}*:log-stream:{dataset.GlueCrawlerName}*', + f'arn:aws:logs:{dataset.region}:{dataset.AwsAccountId}:log-group:/aws-glue/crawlers-role/{env.resourcePrefix}*:log-stream:{env.resourcePrefix}*', f'arn:aws:logs:{dataset.region}:{dataset.AwsAccountId}:log-group:/aws-glue/jobs/*', ], ), @@ -455,6 +478,50 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): }, ) + glue_sec_conf_enc_key = kms.Key( + self, + glue_sec_conf_enc_key_name, + removal_policy=RemovalPolicy.DESTROY, + alias=glue_sec_conf_enc_key_name, + enable_key_rotation=True, + admins=[ + iam.ArnPrincipal(env.CDKRoleArn), + ], + ) + + glue_sec_conf_enc_key.add_to_resource_policy( + iam.PolicyStatement( + sid='EnableCrawlerIAMRoleKeyUsage', + resources=['*'], + effect=iam.Effect.ALLOW, + principals=[dataset_admin_role], + actions=['kms:Encrypt', 'kms:Decrypt', 'kms:ReEncrypt*', 'kms:GenerateDataKey*', 'kms:DescribeKey'], + ) + ) + + glue_sec_conf_enc_key.grant_encrypt_decrypt(iam.ServicePrincipal('logs.amazonaws.com')) + glue_sec_conf_enc_key.grant_encrypt_decrypt(iam.ServicePrincipal('glue.amazonaws.com')) + glue_sec_conf_enc_key.grant_encrypt_decrypt(iam.ServicePrincipal('s3.amazonaws.com')) + + glue_crawler_security_config = glue.CfnSecurityConfiguration( + self, + glue_sec_conf_name, + encryption_configuration=glue.CfnSecurityConfiguration.EncryptionConfigurationProperty( + cloud_watch_encryption=glue.CfnSecurityConfiguration.CloudWatchEncryptionProperty( + cloud_watch_encryption_mode='SSE-KMS', kms_key_arn=glue_sec_conf_enc_key.key_arn + ), + job_bookmarks_encryption=glue.CfnSecurityConfiguration.JobBookmarksEncryptionProperty( + job_bookmarks_encryption_mode='CSE-KMS', kms_key_arn=glue_sec_conf_enc_key.key_arn + ), + s3_encryptions=[ + glue.CfnSecurityConfiguration.S3EncryptionProperty( + s3_encryption_mode='SSE-KMS', kms_key_arn=glue_sec_conf_enc_key.key_arn + ) + ], + ), + name=glue_sec_conf_name, + ) + # Support resources: GlueCrawler for the dataset, Profiling Job and Trigger crawler = glue.CfnCrawler( self, @@ -462,6 +529,7 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): description=f'datall Glue Crawler for S3 Bucket {dataset.S3BucketName}', name=dataset.GlueCrawlerName, database_name=dataset.GlueDatabaseName, + crawler_security_configuration=glue_crawler_security_config.name, schedule={'scheduleExpression': f'{dataset.GlueCrawlerSchedule}'} if dataset.GlueCrawlerSchedule else None, role=dataset_admin_role.role_arn, targets=CfnCrawler.TargetsProperty( @@ -469,6 +537,9 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): ), ) crawler.node.add_dependency(dataset_bucket) + crawler.node.add_dependency(dataset_admin_policy) + crawler.node.add_dependency(dataset_admin_role) + crawler.node.add_dependency(glue_crawler_security_config) job_args = { '--additional-python-modules': 'urllib3<2,pydeequ', @@ -498,6 +569,7 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): role=dataset_admin_role.role_arn, allocated_capacity=10, execution_property=glue.CfnJob.ExecutionPropertyProperty(max_concurrent_runs=100), + security_configuration=glue_crawler_security_config.name, command=glue.CfnJob.JobCommandProperty( name='glueetl', python_version='3', From fe6c8953f9be25d602fc7c272b692fd17035d9a0 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Fri, 16 Aug 2024 10:23:57 +0100 Subject: [PATCH 037/188] Metadata forms 4: Access Control (#1474) ### Feature or Bugfix - Feature ### Detail - Restrict operations for non-Owners - Display user role in MF list - Hide edit buttons for non-Owners and non-Admins - Test For unauth operations ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/api/resolvers.py | 24 ++--- .../modules/metadata_forms/api/types.py | 2 + .../modules/metadata_forms/db/enums.py | 5 ++ .../db/metadata_form_repository.py | 42 ++++++++- .../services/metadata_form_permissions.py | 6 ++ .../services/metadata_form_service.py | 89 ++++++++++++++++--- .../components/MetadataFormFields.js | 37 ++++---- .../components/MetadataFormListItem.js | 26 +++++- .../components/createMetadataFormModal.js | 16 ++++ .../services/getMetadataForm.js | 1 + .../services/listMetadataForms.js | 1 + .../Metadata_Forms/views/MetadataFormEdit.js | 0 .../Metadata_Forms/views/MetadataFormView.js | 46 ++++++---- .../modules/metadata_forms/conftest.py | 42 +++++++++ .../metadata_forms/test_metadata_forms.py | 53 ++++++++++- 15 files changed, 330 insertions(+), 60 deletions(-) create mode 100644 backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py delete mode 100644 frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 2a0752f81..8d667d486 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -1,43 +1,47 @@ from dataall.base.api.context import Context from dataall.modules.catalog.services.glossaries_service import GlossariesService from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField -from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService +from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService, MetadataFormAccessService def create_metadata_form(context: Context, source, input): - return MetadataFormService.create_metadata_form(input) + return MetadataFormService.create_metadata_form(data=input) def delete_metadata_form(context: Context, source, formUri): - return MetadataFormService.delete_metadata_form_by_uri(formUri) + return MetadataFormService.delete_metadata_form_by_uri(uri=formUri) def list_metadata_forms(context: Context, source, filter=None): - return MetadataFormService.paginated_metadata_form_list(filter) + return MetadataFormService.paginated_metadata_form_list(filter=filter) def get_home_entity_name(context: Context, source: MetadataForm): - return MetadataFormService.get_home_entity_name(source) + return MetadataFormService.get_home_entity_name(metadata_form=source) def get_metadata_form(context: Context, source, uri): - return MetadataFormService.get_metadata_form_by_uri(uri) + return MetadataFormService.get_metadata_form_by_uri(uri=uri) def get_form_fields(context: Context, source: MetadataForm): - return MetadataFormService.get_metadata_form_fields(source.uri) + return MetadataFormService.get_metadata_form_fields(uri=source.uri) def create_metadata_form_fields(context: Context, source, formUri, input): - return MetadataFormService.create_metadata_form_fields(formUri, input) + return MetadataFormService.create_metadata_form_fields(uri=formUri, data_arr=input) def delete_metadata_form_field(context: Context, source, formUri, fieldUri): - return MetadataFormService.delete_metadata_form_field(formUri, fieldUri) + return MetadataFormService.delete_metadata_form_field(uri=formUri, fieldUri=fieldUri) def batch_metadata_form_field_update(context: Context, source, formUri, input): - return MetadataFormService.batch_metadata_form_field_update(formUri, input) + return MetadataFormService.batch_metadata_form_field_update(uri=formUri, data=input) + + +def get_user_role(context: Context, source: MetadataForm): + return MetadataFormAccessService.get_user_role(uri=source.uri) def get_fields_glossary_node_name(context: Context, source: MetadataFormField): diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index 646324a9a..22b6fd8fa 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -3,6 +3,7 @@ get_home_entity_name, get_form_fields, get_fields_glossary_node_name, + get_user_role, ) MetadataForm = gql.ObjectType( @@ -15,6 +16,7 @@ gql.Field(name='visibility', type=gql.String), gql.Field(name='homeEntity', type=gql.String), gql.Field(name='homeEntityName', type=gql.String, resolver=get_home_entity_name), + gql.Field(name='userRole', type=gql.String, resolver=get_user_role), gql.Field(name='fields', type=gql.ArrayType(gql.Ref('MetadataFormField')), resolver=get_form_fields), ], ) diff --git a/backend/dataall/modules/metadata_forms/db/enums.py b/backend/dataall/modules/metadata_forms/db/enums.py index 219514258..9e4c7c292 100644 --- a/backend/dataall/modules/metadata_forms/db/enums.py +++ b/backend/dataall/modules/metadata_forms/db/enums.py @@ -45,3 +45,8 @@ class MetadataFormEnforcementScope(GraphQLEnumMapper): Environment = 'Environmental Level' Organization = 'Organizational Level' Global = 'Global' + + +class MetadataFormUserRoles(GraphQLEnumMapper): + Owner = 'Owner' + User = 'User' diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index 521aeefb3..784ae49c1 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -1,5 +1,5 @@ -from sqlalchemy import or_ - +from sqlalchemy import or_, and_ +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField @@ -22,8 +22,40 @@ def get_metadata_form(session, uri): return session.query(MetadataForm).get(uri) @staticmethod - def list_metadata_forms(session, filter=None): + def query_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, filter): + """ + Returns a list of metadata forms based on the user's permissions and any provided filters. + DataAll admins can see allll forms, while non-admins can only see forms they have access to based on their group memberships. + :param session: + :param is_da_admin: is user dataall admin + :param groups: user's group memberships + :param env_uris: user's environment URIs + :param org_uris: user's organization URIs + :param filter: + """ + query = session.query(MetadataForm) + + if not is_da_admin: + query = query.filter( + or_( + MetadataForm.SamlGroupName.in_(groups), + MetadataForm.visibility == MetadataFormVisibility.Global.value, + and_( + MetadataForm.visibility == MetadataFormVisibility.Team.value, + MetadataForm.homeEntity.in_(groups), + ), + and_( + MetadataForm.visibility == MetadataFormVisibility.Organization.value, + MetadataForm.homeEntity.in_(org_uris), + ), + and_( + MetadataForm.visibility == MetadataFormVisibility.Environment.value, + MetadataForm.homeEntity.in_(env_uris), + ), + ) + ) + if filter and filter.get('search_input'): query = query.filter( or_( @@ -74,3 +106,7 @@ def update_metadata_form_field(session, fieldUri, data): mf.displayNumber = data.get('displayNumber', mf.displayNumber) session.commit() return mf + + @staticmethod + def get_metadata_form_owner(session, uri): + return session.query(MetadataForm).get(uri).SamlGroupName diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py b/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py new file mode 100644 index 000000000..f5801f6e3 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py @@ -0,0 +1,6 @@ +from dataall.core.permissions.services.tenant_permissions import TENANT_ALL, TENANT_ALL_WITH_DESC + + +MANAGE_METADATA_FORMS = 'MANAGE_METADATA_FORMS' +TENANT_ALL.append(MANAGE_METADATA_FORMS) +TENANT_ALL_WITH_DESC[MANAGE_METADATA_FORMS] = 'Manage metadata forms' diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index b2bf969fc..ef3a44890 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -1,11 +1,13 @@ +from functools import wraps + from dataall.base.context import get_context from dataall.base.db import exceptions, paginate from dataall.core.organizations.db.organization_repositories import OrganizationRepository from dataall.core.environment.db.environment_repositories import EnvironmentRepository - -from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility -from dataall.modules.metadata_forms.db.enums import MetadataFormFieldType +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService, TenantPolicyService +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility, MetadataFormUserRoles, MetadataFormFieldType from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository +from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS class MetadataFormParamValidationService: @@ -37,8 +39,45 @@ def validate_create_field_params(data): raise exceptions.RequiredParameter('glossaryNodeUri') +class MetadataFormAccessService: + @staticmethod + def is_owner(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + return MetadataFormRepository.get_metadata_form_owner(session, uri) in context.groups + + @staticmethod + def can_perform(action: str): + def decorator(f): + @wraps(f) + def check_permission(*args, **kwds): + uri = kwds.get('uri') + if not uri: + raise KeyError(f"{f.__name__} doesn't have parameter uri.") + + if MetadataFormAccessService.is_owner(uri): + return f(*args, **kwds) + else: + raise exceptions.UnauthorizedOperation( + action=action, + message=f'User {get_context().username} is not the owner of the metadata form {uri}', + ) + + return check_permission + + return decorator + + @staticmethod + def get_user_role(uri): + if MetadataFormAccessService.is_owner(uri): + return MetadataFormUserRoles.Owner.value + else: + return MetadataFormUserRoles.User.value + + class MetadataFormService: @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) def create_metadata_form(data): MetadataFormParamValidationService.validate_create_form_params(data) with get_context().db_engine.scoped_session() as session: @@ -51,23 +90,35 @@ def get_metadata_form_by_uri(uri): with get_context().db_engine.scoped_session() as session: return MetadataFormRepository.get_metadata_form(session, uri) - # toDo: add permission check # toDo: deletion logic @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('DELETE') def delete_metadata_form_by_uri(uri): mf = MetadataFormService.get_metadata_form_by_uri(uri) with get_context().db_engine.scoped_session() as session: return session.delete(mf) @staticmethod - def paginated_metadata_form_list(data=None) -> dict: + def paginated_metadata_form_list(filter=None) -> dict: context = get_context() - data = data if data is not None else {} + groups = context.groups + is_da_admin = TenantPolicyValidationService.is_tenant_admin(groups) + filter = filter if filter is not None else {} with context.db_engine.scoped_session() as session: + envs = None + orgs = None + # is user is no dataall admin, query_metadata_forms requires arrays of users envs and orgs uris + if not is_da_admin: + username = context.username + envs = EnvironmentRepository.query_user_environments(session, username, groups, {}) + envs = [e.environmentUri for e in envs] + orgs = OrganizationRepository.query_user_organizations(session, username, groups, {}) + orgs = [o.organizationUri for o in orgs] return paginate( - query=MetadataFormRepository.list_metadata_forms(session, data), - page=data.get('page', 1), - page_size=data.get('pageSize', 5), + query=MetadataFormRepository.query_metadata_forms(session, is_da_admin, groups, envs, orgs, filter), + page=filter.get('page', 1), + page_size=filter.get('pageSize', 5), ).to_dict() @staticmethod @@ -94,39 +145,49 @@ def get_metadata_form_field_by_uri(uri): return MetadataFormRepository.get_metadata_form_field_by_uri(session, uri) @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('ADD FIELD') def create_metadata_form_field(uri, data): MetadataFormParamValidationService.validate_create_field_params(data) with get_context().db_engine.scoped_session() as session: return MetadataFormRepository.create_metadata_form_field(session, uri, data) @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('ADD FIELDS') def create_metadata_form_fields(uri, data_arr): fields = [] for data in data_arr: - fields.append(MetadataFormService.create_metadata_form_field(uri, data)) + fields.append(MetadataFormService.create_metadata_form_field(uri=uri, data=data)) return fields @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('DELETE FIELD') def delete_metadata_form_field(uri, fieldUri): mf = MetadataFormService.get_metadata_form_field_by_uri(fieldUri) with get_context().db_engine.scoped_session() as session: return session.delete(mf) @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('UPDATE FIELDS') def batch_metadata_form_field_update(uri, data): for item in data: if item.get('metadataFormUri') != uri: raise Exception('property metadataFormUri does not match form uri') if 'uri' not in item: - MetadataFormService.create_metadata_form_field(uri, item) + MetadataFormService.create_metadata_form_field(uri=uri, data=item) elif item.get('uri') is not None: if item.get('deleted', False): - MetadataFormService.delete_metadata_form_field(uri, item['uri']) + MetadataFormService.delete_metadata_form_field(uri=uri, fieldUri=item['uri']) else: - MetadataFormService.update_metadata_form_field(uri, item['uri'], item) - return MetadataFormService.get_metadata_form_fields(uri) + MetadataFormService.update_metadata_form_field(uri=uri, fieldUri=item['uri'], data=item) + return MetadataFormService.get_metadata_form_fields(uri=uri) @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform('UPDATE FIELD') def update_metadata_form_field(uri, fieldUri, data): with get_context().db_engine.scoped_session() as session: return MetadataFormRepository.update_metadata_form_field(session, fieldUri, data) diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js index 4ed04cf1d..7d2f433f2 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js @@ -122,8 +122,8 @@ const EditTable = (props) => { { - updateField(index, 'required', event.target.value === 'on'); + onChange={(event, value) => { + updateField(index, 'required', value); }} /> @@ -248,7 +248,7 @@ EditTable.propTypes = { }; const DisplayTable = (props) => { - const { fields, startEdit } = props; + const { fields, startEdit, userRole, userRolesMF } = props; return (
@@ -261,16 +261,18 @@ const DisplayTable = (props) => { Possible Values or Glossary Term - + {userRole === userRolesMF.Owner && ( + + )} @@ -321,7 +323,7 @@ DisplayTable.propTypes = { export const MetadataFormFields = (props) => { const dispatch = useDispatch(); const client = useClient(); - const { metadataForm, fieldTypeOptions } = props; + const { metadataForm, fieldTypeOptions, userRolesMF } = props; const [loading, setLoading] = useState(false); const [editOn, setEditOn] = useState(false); const [fields, setFields] = useState(metadataForm.fields); @@ -494,7 +496,12 @@ export const MetadataFormFields = (props) => { glossaryNodes={glossaryNodes} /> ) : ( - + )} diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js index 192caff67..754c5f54a 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormListItem.js @@ -10,8 +10,9 @@ import { import PropTypes from 'prop-types'; import * as FaIcons from 'react-icons/fa'; import { useNavigate } from 'react-router'; -import { IconAvatar, useCardStyle } from 'design'; +import { IconAvatar, Label, useCardStyle } from 'design'; import { BallotOutlined } from '@mui/icons-material'; +import React from 'react'; export const MetadataFormListItem = (props) => { const { metadata_form, visibilityDict } = props; @@ -97,6 +98,29 @@ export const MetadataFormListItem = (props) => { + + + + + My Role + + + + {metadata_form.userRole === 'Owner' ? ( + + ) : ( + + {metadata_form.userRole || '-'} + + )} + + + { const { visibilityDict, onApply, onClose, open, stopLoader, ...other } = @@ -26,6 +27,7 @@ export const CreateMetadataFormModal = (props) => { const dispatch = useDispatch(); const client = useClient(); const groups = useGroups(); + const { enqueueSnackbar } = useSnackbar(); const [loading, setLoading] = useState(false); const [environmentOptions, setEnvironmentOptions] = useState([]); const [organizationOptions, setOrganizationOptions] = useState([]); @@ -124,6 +126,13 @@ export const CreateMetadataFormModal = (props) => { } else { setStatus({ success: false }); setErrors({ submit: response.errors[0].message }); + enqueueSnackbar(response.errors[0].message, { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'error' + }); setSubmitting(false); } } catch (err) { @@ -131,6 +140,13 @@ export const CreateMetadataFormModal = (props) => { setStatus({ success: false }); setErrors({ submit: err.message }); setSubmitting(false); + enqueueSnackbar(err.message, { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'error' + }); dispatch({ type: SET_ERROR, error: err.message }); } } diff --git a/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js index f59ca5df5..c518ad4bb 100644 --- a/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js +++ b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js @@ -14,6 +14,7 @@ export const getMetadataForm = (uri) => ({ visibility homeEntity homeEntityName + userRole fields { uri metadataFormUri diff --git a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js index 325e0ac85..021313e32 100644 --- a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js +++ b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js @@ -17,6 +17,7 @@ export const listMetadataForms = (filter) => ({ name description SamlGroupName + userRole visibility homeEntity homeEntityName diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormEdit.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js index 50c06bb44..7d9b47ce1 100644 --- a/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js +++ b/frontend/src/modules/Metadata_Forms/views/MetadataFormView.js @@ -46,6 +46,7 @@ const MetadataFormView = () => { const [loading, setLoading] = useState(true); const [visibilityDict, setVisibilityDict] = useState({}); const [fieldTypeOptions, setFieldTypeOptions] = useState([]); + const [userRolesMF, setUserRolesMFDict] = useState({}); const handleTabsChange = (event, value) => { setCurrentTab(value); @@ -80,7 +81,8 @@ const MetadataFormView = () => { try { const enums = await fetchEnums(client, [ 'MetadataFormVisibility', - 'MetadataFormFieldType' + 'MetadataFormFieldType', + 'MetadataFormUserRoles' ]); if (enums['MetadataFormVisibility'].length > 0) { let tmpVisibilityDict = {}; @@ -98,6 +100,16 @@ const MetadataFormView = () => { const error = 'Could not fetch field type options'; dispatch({ type: SET_ERROR, error }); } + if (enums['MetadataFormUserRoles'].length > 0) { + let tmpUserRolesMFDict = {}; + enums['MetadataFormUserRoles'].map((x) => { + tmpUserRolesMFDict[x.name] = x.value; + }); + setUserRolesMFDict(tmpUserRolesMFDict); + } else { + const error = 'Could not fetch user roles options'; + dispatch({ type: SET_ERROR, error }); + } } catch (e) { dispatch({ type: SET_ERROR, error: e.message }); } @@ -187,21 +199,22 @@ const MetadataFormView = () => { - - - - - - + {metadataForm.userRole === userRolesMF.Owner && ( + + + + + + )} { )} {currentTab === 'enforcement' && ( diff --git a/tests_new/integration_tests/modules/metadata_forms/conftest.py b/tests_new/integration_tests/modules/metadata_forms/conftest.py index 79d5d7c37..295e60d2b 100644 --- a/tests_new/integration_tests/modules/metadata_forms/conftest.py +++ b/tests_new/integration_tests/modules/metadata_forms/conftest.py @@ -28,6 +28,48 @@ def metadata_form_1(client1, group1): delete_metadata_form(client1, mf1.uri) +@pytest.fixture(scope='session') +def metadata_form_2(client1, group1): + """ + Session worksheet owned by group1 + """ + mf2 = None + try: + input = { + 'name': 'MF Test 2', + 'description': 'second session test metadata form', + 'visibility': 'Team Only', + 'SamlGroupName': group1, + 'homeEntity': group1, + } + mf2 = create_metadata_form(client1, input) + yield mf2 + finally: + if mf2: + delete_metadata_form(client1, mf2.uri) + + +@pytest.fixture(scope='session') +def metadata_form_3(client2, group2): + """ + Session worksheet owned by group1 + """ + mf3 = None + try: + input = { + 'name': 'MF Test 2', + 'description': 'second session test metadata form', + 'visibility': 'Team Only', + 'SamlGroupName': group2, + 'homeEntity': group2, + } + mf3 = create_metadata_form(client2, input) + yield mf3 + finally: + if mf3: + delete_metadata_form(client2, mf3.uri) + + @pytest.fixture(scope='session') def metadata_form_field_1(client1, group1, metadata_form_1): """ diff --git a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py index 2f06f2542..bb5c9a76a 100644 --- a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py +++ b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py @@ -1,7 +1,12 @@ from assertpy import assert_that from integration_tests.modules.metadata_forms.queries import list_metadata_forms, get_metadata_form_full_info -from integration_tests.modules.metadata_forms.mutations import update_metadata_form_fields + +from integration_tests.modules.metadata_forms.mutations import ( + update_metadata_form_fields, + delete_metadata_form, + delete_metadata_form_field, +) def test_metadata_form_create(metadata_form_1): @@ -9,6 +14,15 @@ def test_metadata_form_create(metadata_form_1): assert_that(metadata_form_1.uri).is_not_none() +def test_delete_unauth(client2, metadata_form_1): + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE operation:' + err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' + + assert_that(delete_metadata_form).raises(Exception).when_called_with(client2, metadata_form_1.uri).contains( + err_message_part1, err_message_part2 + ) + + def test_list_metadata_forms(client1, metadata_form_1): filter = {'page': 1, 'pageSize': 10, 'search_input': metadata_form_1.name} response = list_metadata_forms(client1, filter) @@ -18,6 +32,16 @@ def test_list_metadata_forms(client1, metadata_form_1): assert_that(all_uris).contains(metadata_form_1.uri) +def test_list_metadata_forms_access_control(client2, metadata_form_1, metadata_form_2, metadata_form_3): + filter = {'page': 1, 'pageSize': 10} + response = list_metadata_forms(client2, filter) + all_uris = [item.uri for item in response.nodes] + assert_that(all_uris).does_not_contain(metadata_form_2.uri) # visibility Team Only, team = group1 + assert_that(all_uris).contains(metadata_form_1.uri) # visibility: Global + assert_that(all_uris).contains(metadata_form_3.uri) # visibility: Team Only, team = group2 + # toDo: add tests for Env and Org visibility + + def test_metadataform_field_create(metadata_form_field_1): assert_that(metadata_form_field_1).is_not_none() assert_that(metadata_form_field_1.uri).is_not_none() @@ -32,6 +56,33 @@ def test_get_metadataform_full_info(client1, metadata_form_1, metadata_form_fiel assert_that(all_field_uris).contains(metadata_form_field_1.uri) +def test_delete_metadata_form_field_unauth(client2, metadata_form_1, metadata_form_field_1): + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE FIELD operation:' + err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' + + assert_that(delete_metadata_form_field).raises(Exception).when_called_with( + client2, metadata_form_1.uri, metadata_form_field_1.uri + ).contains(err_message_part1, err_message_part2) + + +def test_update_metadata_form_fields_unauth(client2, metadata_form_1, metadata_form_field_1): + field_data = { + 'name': 'field_1', + 'metadataFormUri': metadata_form_1.uri, + 'description': 'Field 1', + 'type': 'String', + 'required': True, + 'displayNumber': 1, + } + + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling UPDATE FIELDS operation:' + err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' + + assert_that(update_metadata_form_fields).raises(Exception).when_called_with( + client2, metadata_form_1.uri, [field_data] + ).contains(err_message_part1, err_message_part2) + + def test_metadata_form_fields_batch(client1, metadata_form_1, metadata_form_field_1): fullinfo_before = get_metadata_form_full_info(client1, metadata_form_1.uri) From e6fe0f350d12c6e47009cb2c3ba994f1057b859d Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 21 Aug 2024 08:26:32 -0400 Subject: [PATCH 038/188] fix table share revoke with no filters (#1493) ### Feature or Bugfix - Bugfix ### Detail - Fix check other shares with no filters when revoking table share ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../s3_datasets_shares/db/s3_share_object_repositories.py | 1 + .../services/share_processors/glue_table_share_processor.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py index cfeea83f6..20415e090 100644 --- a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py +++ b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py @@ -177,6 +177,7 @@ def check_other_approved_share_item_table_exists(session, environment_uri, item_ ShareObjectItem.itemType == ShareableType.Table.value, ShareObjectItem.shareItemUri != share_item_uri, ShareObjectItem.status.in_(share_item_shared_states), + ShareObjectItem.attachedDataFilterUri.is_(None), ) ) ) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index aa24f69ab..6e3be01cd 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -286,7 +286,6 @@ def process_revoked_shares(self) -> bool: self.share_data.target_environment.environmentUri, share_item.itemUri, share_item.shareItemUri, - share_item_filter.dataFilterUris if share_item_filter else None, ) else True ) From c4290db9f77540b99c3bc284549cfd5acd055b3c Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Wed, 21 Aug 2024 15:30:57 +0300 Subject: [PATCH 039/188] allow dbmigrations lambda to invoke any alembic command (#1488) ### Feature or Bugfix - Feature ### Detail Currently if things get mixed up (in the db) due to migrations it's very hard to revert the situation (because db isn't exposed to the internet). We have 3 options * Do it manually via SQL Editor * Create an EC2 instance to use as a jump proxy * Create a VPN With this change we can now run any alembic command directly from the lambda by providing args as event data. ### Example usages #### Manual downgrade Let's assume that you are working on a feature and have a new alembic revision locally, let's say `rev1`. Also you have already deployed that to your dev AWS account. The upstream migrations history looks like `rev0` The local migations history looks like this `rev0`->`rev1`. A PR gets merged with an alembic migration `rev2` and is now changing the head from `rev0` to `rev2`. Now the upstream migrations history looks like `rev0` -> `rev2`. In order to merge you must rebase `main` and as solve this conflict, so the migrations history should look like this `rev0`->`rev2`->`rev1`. Upon deployment you dev deployment thinks that is already on `rev1` and hence pipeline will not run any migrations and will skip the changes in `rev2`. With this tool you can pass (before deployment of backend) as dbmigrations event payload the following which will downgrade the DB to `rev0`. ``` { "command": "downgrade", "args": { "revision": -1 } } ``` Then when normal upgade runs it will succesfully apply first `rev2` and then `rev1`. #### Check history and current revision It allows you to quickly look at the alembic history and indicate the current revision of the db by passing the following as event contest... ``` { "command": "history", "args": { "indicate_current": true } } ``` ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/deployment_triggers/dbmigrations_handler.py | 5 ++++- .../versions/b833ad41db68_maintenance_window_schema.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/deployment_triggers/dbmigrations_handler.py b/backend/deployment_triggers/dbmigrations_handler.py index 00d7c5c98..a2099a045 100644 --- a/backend/deployment_triggers/dbmigrations_handler.py +++ b/backend/deployment_triggers/dbmigrations_handler.py @@ -15,4 +15,7 @@ def handler(event, context) -> None: alembic_cfg = Config('alembic.ini') alembic_cfg.set_main_option('script_location', './migrations') - command.upgrade(alembic_cfg, 'head') # logging breaks after this command + event_command = event.get('command', 'upgrade') + event_args = event.get('args', {'revision': 'head'}) + logger.info(f'calling alembic "{event_command}({event_args})"') + getattr(command, event_command)(config=alembic_cfg, **event_args) diff --git a/backend/migrations/versions/b833ad41db68_maintenance_window_schema.py b/backend/migrations/versions/b833ad41db68_maintenance_window_schema.py index 231834e57..dc7e488b8 100644 --- a/backend/migrations/versions/b833ad41db68_maintenance_window_schema.py +++ b/backend/migrations/versions/b833ad41db68_maintenance_window_schema.py @@ -11,8 +11,9 @@ from alembic import op import sqlalchemy as sa from sqlalchemy import Column, String, orm +from sqlalchemy.ext.declarative import declarative_base -from dataall.base.db import get_engine, has_table, Base +from dataall.base.db import get_engine, has_table # revision identifiers, used by Alembic. revision = 'b833ad41db68' @@ -20,6 +21,8 @@ branch_labels = None depends_on = None +Base = declarative_base() + class Maintenance(Base): __tablename__ = 'maintenance' From 24fca5fe2c91fb3b2a395e79cce544b6a390a038 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 21 Aug 2024 15:05:36 +0100 Subject: [PATCH 040/188] Metadata forms 5: UI improvement + possible values validation (#1480) ### Feature or Bugfix - Feature ### Detail - for Integer and Glossary Term fields 'possibleValues' are validated. E.g. for integer possible values can not contain "ok"; - tests for validation - UI: fields in the table are draggable -> reordering works - UI: if field's type is 'Boolean' input for possible values is disabled - UI: don't show + New MF button, if user has no tenant permissions to manage MFs ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../services/tenant_policy_service.py | 14 + .../modules/metadata_forms/api/resolvers.py | 10 + .../modules/metadata_forms/api/types.py | 2 + .../services/metadata_form_service.py | 90 ++++- frontend/package-lock.json | 95 ++++- frontend/package.json | 5 +- .../components/MetadataFormFields.js | 365 ++++++++++-------- .../services/listMetadataForms.js | 1 + .../Metadata_Forms/views/MetadataFormList.js | 43 ++- frontend/yarn.lock | 17 +- .../metadata_forms/test_metadata_forms.py | 28 ++ 11 files changed, 472 insertions(+), 198 deletions(-) diff --git a/backend/dataall/core/permissions/services/tenant_policy_service.py b/backend/dataall/core/permissions/services/tenant_policy_service.py index 190fcff35..cca2a4832 100644 --- a/backend/dataall/core/permissions/services/tenant_policy_service.py +++ b/backend/dataall/core/permissions/services/tenant_policy_service.py @@ -182,6 +182,20 @@ def list_tenant_groups(data): with context.db_engine.scoped_session() as session: return TenantPolicyRepository.list_tenant_groups(session, data) + @staticmethod + def has_user_tenant_permission(groups, permission_name, tenant_name): + if TenantPolicyValidationService.is_tenant_admin(groups): + return True + + with get_context().db_engine.scoped_session() as session: + tenant_policy = TenantPolicyRepository.has_user_tenant_permission( + session=session, + groups=groups, + permission_name=permission_name, + tenant_name=tenant_name, + ) + return tenant_policy is not None + @staticmethod def check_user_tenant_permission(session, username: str, groups: [str], tenant_name: str, permission_name: str): if TenantPolicyValidationService.is_tenant_admin(groups): diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 8d667d486..3601aff34 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -1,6 +1,8 @@ from dataall.base.api.context import Context +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.modules.catalog.services.glossaries_service import GlossariesService from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField +from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService, MetadataFormAccessService @@ -46,3 +48,11 @@ def get_user_role(context: Context, source: MetadataForm): def get_fields_glossary_node_name(context: Context, source: MetadataFormField): return GlossariesService.get_node(source.glossaryNodeUri).label if source.glossaryNodeUri else None + + +def has_tenant_permissions_for_metadata_forms(context: Context, source: MetadataForm): + return TenantPolicyService.has_user_tenant_permission( + groups=context.groups, + tenant_name=TenantPolicyService.TENANT_NAME, + permission_name=MANAGE_METADATA_FORMS, + ) diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index 22b6fd8fa..a6c1578be 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -4,6 +4,7 @@ get_form_fields, get_fields_glossary_node_name, get_user_role, + has_tenant_permissions_for_metadata_forms, ) MetadataForm = gql.ObjectType( @@ -49,5 +50,6 @@ gql.Field(name='previousPage', type=gql.Integer), gql.Field(name='hasNext', type=gql.Boolean), gql.Field(name='hasPrevious', type=gql.Boolean), + gql.Field(name='hasTenantPermissions', type=gql.Boolean, resolver=has_tenant_permissions_for_metadata_forms), ], ) diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index ef3a44890..326f65c22 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -6,6 +6,7 @@ from dataall.core.environment.db.environment_repositories import EnvironmentRepository from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService, TenantPolicyService from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility, MetadataFormUserRoles, MetadataFormFieldType +from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS @@ -35,8 +36,52 @@ def validate_create_field_params(data): if 'displayNumber' not in data: raise exceptions.RequiredParameter('displayNumber') - if data.get('type') == MetadataFormFieldType.GlossaryTerm.value and 'glossaryNodeUri' not in data: - raise exceptions.RequiredParameter('glossaryNodeUri') + if data.get('type') == MetadataFormFieldType.GlossaryTerm.value: + if 'glossaryNodeUri' not in data: + raise exceptions.RequiredParameter('glossaryNodeUri') + MetadataFormParamValidationService.validate_glossary_node_uri(data.get('glossaryNodeUri')) + else: + MetadataFormParamValidationService.validate_field_possible_values_params(data) + + @staticmethod + def validate_update_field_params(form_uri, data): + if data.get('metadataFormUri') != form_uri: + raise Exception('property metadataFormUri does not match form uri') + + if 'displayNumber' not in data: + raise exceptions.RequiredParameter('displayNumber') + + if data.get('type') == MetadataFormFieldType.GlossaryTerm.value: + if 'glossaryNodeUri' not in data: + raise exceptions.RequiredParameter('glossaryNodeUri') + MetadataFormParamValidationService.validate_glossary_node_uri(data.get('glossaryNodeUri')) + else: + MetadataFormParamValidationService.validate_field_possible_values_params(data) + + @staticmethod + def validate_glossary_node_uri(uri): + with get_context().db_engine.scoped_session() as session: + try: + GlossaryRepository.get_node(session, uri) + return True + except exceptions.ObjectNotFound: + raise exceptions.InvalidInput('glossaryNodeUri', uri, 'from glossary list') + + @staticmethod + def validate_field_possible_values_params(data): + def _raise(x): + raise x + + validator_func = { + MetadataFormFieldType.Integer.value: lambda x: x[1:].isdigit() if x[0] in ['+', '-'] else x.isdigit(), + MetadataFormFieldType.Boolean.value: lambda x: _raise( + Exception('possible values are not supported for boolean fields') + ), + } + if data.get('possibleValues'): + for value in data.get('possibleValues'): + if not validator_func.get(data.get('type'), lambda x: True)(value): + raise exceptions.InvalidInput('possibleValues', value, data.get('type')) class MetadataFormAccessService: @@ -95,9 +140,9 @@ def get_metadata_form_by_uri(uri): @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) @MetadataFormAccessService.can_perform('DELETE') def delete_metadata_form_by_uri(uri): - mf = MetadataFormService.get_metadata_form_by_uri(uri) - with get_context().db_engine.scoped_session() as session: - return session.delete(mf) + if mf := MetadataFormService.get_metadata_form_by_uri(uri): + with get_context().db_engine.scoped_session() as session: + return session.delete(mf) @staticmethod def paginated_metadata_form_list(filter=None) -> dict: @@ -173,21 +218,40 @@ def delete_metadata_form_field(uri, fieldUri): @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) @MetadataFormAccessService.can_perform('UPDATE FIELDS') def batch_metadata_form_field_update(uri, data): + to_delete = [] + to_update = [] + to_create = [] + + # validate all inputs first + # if even one input is invalid -- decline whole batch for item in data: if item.get('metadataFormUri') != uri: raise Exception('property metadataFormUri does not match form uri') - if 'uri' not in item: - MetadataFormService.create_metadata_form_field(uri=uri, data=item) - elif item.get('uri') is not None: - if item.get('deleted', False): - MetadataFormService.delete_metadata_form_field(uri=uri, fieldUri=item['uri']) - else: - MetadataFormService.update_metadata_form_field(uri=uri, fieldUri=item['uri'], data=item) - return MetadataFormService.get_metadata_form_fields(uri=uri) + if item.get('uri') is None: + MetadataFormParamValidationService.validate_create_field_params(item) + to_create.append(item) + elif not item.get('deleted', False): + MetadataFormParamValidationService.validate_update_field_params(uri, item) + to_update.append(item) + else: + to_delete.append(item['uri']) + + # process sorted items + for item in to_delete: + MetadataFormService.delete_metadata_form_field(uri=uri, fieldUri=item) + + with get_context().db_engine.scoped_session() as session: + for item in to_update: + MetadataFormRepository.update_metadata_form_field(session, item['uri'], item) + for item in to_create: + MetadataFormRepository.create_metadata_form_field(session, uri, item) + + return MetadataFormService.get_metadata_form_fields(uri) @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) @MetadataFormAccessService.can_perform('UPDATE FIELD') def update_metadata_form_field(uri, fieldUri, data): with get_context().db_engine.scoped_session() as session: + MetadataFormParamValidationService.validate_update_field_params(uri, data) return MetadataFormRepository.update_metadata_form_field(session, fieldUri, data) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 491ebd1be..9e196a188 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -59,6 +59,7 @@ "react-scripts": "^5.0.1", "simplebar": "^5.3.6", "simplebar-react": "^2.3.6", + "uuid": "^10.0.0", "web-vitals": "^2.1.4", "yup": "^0.32.11" }, @@ -245,6 +246,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-amplify/analytics/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/api": { "version": "5.4.12", "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-5.4.12.tgz", @@ -276,6 +286,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-amplify/api-graphql/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/api-graphql/node_modules/zen-observable-ts": { "version": "0.8.19", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz", @@ -796,6 +815,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-amplify/datastore/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/datastore/node_modules/zen-observable-ts": { "version": "0.8.19", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz", @@ -853,6 +881,15 @@ "uuid": "^3.2.1" } }, + "node_modules/@aws-amplify/notifications/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/predictions": { "version": "5.5.12", "resolved": "https://registry.npmjs.org/@aws-amplify/predictions/-/predictions-5.5.12.tgz", @@ -877,6 +914,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-amplify/predictions/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/pubsub": { "version": "5.5.12", "resolved": "https://registry.npmjs.org/@aws-amplify/pubsub/-/pubsub-5.5.12.tgz", @@ -898,6 +944,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-amplify/pubsub/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-amplify/pubsub/node_modules/zen-observable-ts": { "version": "0.8.19", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz", @@ -1148,6 +1203,15 @@ "node": ">=10.0.0" } }, + "node_modules/@aws-sdk/client-comprehend/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-sdk/client-firehose": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@aws-sdk/client-firehose/-/client-firehose-3.6.1.tgz", @@ -4675,6 +4739,15 @@ "node": ">=10.0.0" } }, + "node_modules/@aws-sdk/client-translate/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-sdk/config-resolver": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.6.1.tgz", @@ -5600,6 +5673,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/@aws-sdk/middleware-retry/node_modules/ws": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", @@ -32603,12 +32685,15 @@ } }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-to-istanbul": { diff --git a/frontend/package.json b/frontend/package.json index ebd51bfbf..e1978ae9d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,6 +38,7 @@ "apexcharts": "^3.33.2", "apollo-boost": "^0.4.9", "aws-amplify": "^5.3.14", + "braces": "3.0.3", "axios": "^1.7.4", "classnames": "^2.3.1", "date-fns": "^2.28.0", @@ -67,9 +68,9 @@ "react-scripts": "^5.0.1", "simplebar": "^5.3.6", "simplebar-react": "^2.3.6", + "uuid": "^10.0.0", "web-vitals": "^2.1.4", - "yup": "^0.32.11", - "braces": "3.0.3" + "yup": "^0.32.11" }, "overrides": { "aws-amplify": { diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js index 7d2f433f2..5c4d32eae 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js @@ -1,6 +1,6 @@ import { useDispatch } from 'react-redux'; - -import React, { useEffect, useState } from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import React, { useEffect, useRef, useState } from 'react'; import PropTypes from 'prop-types'; import { @@ -30,15 +30,12 @@ import { } from '../../../design'; import { SET_ERROR } from '../../../globalErrors'; import Checkbox from '@mui/material/Checkbox'; -import { - // createMetadataFormFields, - getMetadataForm - // deleteMetadataFormField -} from '../services'; +import { getMetadataForm } from '../services'; import { useClient } from '../../../services'; import { GridActionsCellItem } from '@mui/x-data-grid'; import DeleteIcon from '@mui/icons-material/DeleteOutlined'; import SettingsBackupRestoreOutlinedIcon from '@mui/icons-material/SettingsBackupRestoreOutlined'; +import DragIndicatorOutlinedIcon from '@mui/icons-material/DragIndicatorOutlined'; import { batchMetadataFormFieldUpdates } from '../services/batchMetadataFormFieldUpdates'; import CircularProgress from '@mui/material/CircularProgress'; import { listGlossaries } from '../../Glossaries/services'; @@ -47,6 +44,36 @@ const EditTable = (props) => { const { fields, fieldTypeOptions, saveChanges, formUri, glossaryNodes } = props; const [localFields, setLocalFields] = useState(fields); + const dragItem = useRef(); + const dragOverItem = useRef(); + + const swap = (i1, i2) => { + const copyListItems = [...localFields]; + const dragItemContent = copyListItems[i1]; + copyListItems.splice(i1, 1); + copyListItems.splice(i2, 0, dragItemContent); + setLocalFields(copyListItems); + }; + + const dragStart = (e) => { + dragItem.current = e.target.id; + }; + + const dragEnter = (e) => { + dragOverItem.current = e.currentTarget; + e.currentTarget.style.backgroundColor = 'aliceblue'; + }; + + const dragLeave = (e) => { + e.currentTarget.style.backgroundColor = 'white'; + }; + + const drop = (e) => { + swap(dragItem.current, dragOverItem.current.id); + dragOverItem.current.style.backgroundColor = 'white'; + dragItem.current = null; + dragOverItem.current = null; + }; const updateField = (index, propertyName, value) => { localFields[index][propertyName] = value; @@ -54,6 +81,7 @@ const EditTable = (props) => { }; const addField = () => { localFields.push({ + id: uuidv4(), name: 'New Field', required: false, metadataFormUri: formUri, @@ -65,177 +93,195 @@ const EditTable = (props) => { }; return ( -
- - - Required - Name - Type - Description - - Possible Values or Glossary Term - - - - - - - - - - - - - {localFields.length === 0 ? ( + <> + +
+ - - No fields found + Required + Name + Type + Description + + Possible Values or Glossary Term + + + - ) : ( - localFields.map((field, index) => ( - - - { - updateField(index, 'required', value); - }} - /> + + + {localFields.length === 0 ? ( + + + No fields found - - { - updateField(index, 'name', event.target.value); - }} - sx={{ width: '100%' }} - /> - - - option.value)} - defaultValue={field.type} - onChange={(event, value) => { - updateField( - index, - 'type', - value || fieldTypeOptions[0].value - ); - }} - renderInput={(params) => ( - - )} - /> - - - { - updateField(index, 'description', event.target.value); - }} - /> - - - {field.type !== - fieldTypeOptions.find((o) => o.name === 'GlossaryTerm') - .value ? ( - + ) : ( + localFields.map((field, index) => ( + e.preventDefault()} + draggable + sx={{ + backgroundColor: field.deleted ? 'whitesmoke' : 'white' + }} + > + + { + updateField(index, 'required', value); + }} + /> + + + { - updateField(index, 'possibleValues', [...chip]); + defaultValue={field.name} + onKeyUp={(event) => { + updateField(index, 'name', event.target.value); }} + sx={{ width: '100%' }} /> - ) : ( + + { - return { label: node.label, value: node.nodeUri }; - })} - defaultValue={glossaryNodes.find( - (node) => field.glossaryNodeUri === node.nodeUri - )} - onChange={(event, node) => { - if (node) { - updateField(index, 'glossaryNodeUri', node.value); - } + options={fieldTypeOptions.map((option) => option.value)} + defaultValue={field.type} + onChange={(event, value) => { + updateField( + index, + 'type', + value || fieldTypeOptions[0].value + ); }} renderInput={(params) => ( - + )} /> - )} - - - + + + { + updateField(index, 'description', event.target.value); + }} + /> + + + {field.type !== + fieldTypeOptions.find((o) => o.name === 'GlossaryTerm') + .value ? ( + o.name === 'Boolean') + .value + } + onChange={(chip) => { + updateField(index, 'possibleValues', [...chip]); + }} + /> + ) : ( + { + return { label: node.label, value: node.nodeUri }; + })} + defaultValue={glossaryNodes.find( + (node) => field.glossaryNodeUri === node.nodeUri + )} + onChange={(event, node) => { + if (node) { + updateField(index, 'glossaryNodeUri', node.value); + } + }} + renderInput={(params) => ( + + )} + /> + )} + + + + + ) : ( + + ) + } + label={field.deleted ? 'Restore' : 'Delete'} + sx={{ + color: 'primary.main' + }} + onClick={() => { + updateField(index, 'deleted', !field.deleted); + }} + /> + - ) : ( - - ) - } - label={field.deleted ? 'Restore' : 'Delete'} + icon={} + label="drag" sx={{ color: 'primary.main' }} - onClick={() => { - updateField(index, 'deleted', !field.deleted); - }} /> - - - - )) - )} - -
+ + + )) + )} + + + ); }; @@ -395,6 +441,7 @@ export const MetadataFormFields = (props) => { data.forEach((field, index) => { delete field.__typename; delete field.glossaryNodeName; + delete field.id; field.displayNumber = index; }); const response = await client.mutate( diff --git a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js index 021313e32..37ec67014 100644 --- a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js +++ b/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js @@ -7,6 +7,7 @@ export const listMetadataForms = (filter) => ({ query: gql` query listMetadataForms($filter: MetadataFormFilter) { listMetadataForms(filter: $filter) { + hasTenantPermissions count page pages diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js index f98aa0e57..c483e2924 100644 --- a/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js +++ b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js @@ -25,7 +25,7 @@ import { listMetadataForms } from '../services'; import { MetadataFormListItem, CreateMetadataFormModal } from '../components'; function MetadataFormsListPageHeader(props) { - const { onCreate, visibilityDict } = props; + const { onCreate, visibilityDict, hasManagePermissions } = props; const [showCreateModal, setShowCreateModal] = useState(false); const [isOpeningModal, setIsOpeningModal] = useState(false); @@ -80,23 +80,25 @@ function MetadataFormsListPageHeader(props) {
- - - + {hasManagePermissions && ( + + + + )} ); @@ -110,6 +112,7 @@ const MetadataFormsList = () => { const [inputValue, setInputValue] = useState(''); const [loading, setLoading] = useState(true); const [visibilityDict, setVisibilityDict] = useState({}); + const [hasManagePermissions, setHasManagePermissions] = useState(false); const client = useClient(); @@ -118,6 +121,9 @@ const MetadataFormsList = () => { const response = await client.query(listMetadataForms(filter)); if (!response.errors) { setItems(response.data.listMetadataForms); + setHasManagePermissions( + response.data.listMetadataForms.hasTenantPermissions + ); } else { dispatch({ type: SET_ERROR, error: response.errors[0].message }); } @@ -191,6 +197,7 @@ const MetadataFormsList = () => { Date: Mon, 26 Aug 2024 14:49:42 +0100 Subject: [PATCH 041/188] Import Datasets: Validate that bucket is unique (#1498) ### Feature or Bugfix - Feature From each bucket we can for now on import only one dataset ### Detail Import dataset1 with s3 bucket: s3bucketName Import dataset2 with s3 bucket: s3BucketName => result an error "Dataset with bucket s3BucketName already exists" ### Relates - #1278 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../s3_datasets/db/dataset_bucket_repositories.py | 4 ++++ .../modules/s3_datasets/services/dataset_service.py | 6 ++++++ tests/modules/s3_datasets/conftest.py | 7 +++++++ .../s3_datasets/test_import_dataset_check_unit.py | 12 ++++++------ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backend/dataall/modules/s3_datasets/db/dataset_bucket_repositories.py b/backend/dataall/modules/s3_datasets/db/dataset_bucket_repositories.py index d93abfbe5..681aec0f4 100644 --- a/backend/dataall/modules/s3_datasets/db/dataset_bucket_repositories.py +++ b/backend/dataall/modules/s3_datasets/db/dataset_bucket_repositories.py @@ -31,3 +31,7 @@ def delete_dataset_buckets(session, dataset_uri) -> bool: buckets = session.query(DatasetBucket).filter(DatasetBucket.datasetUri == dataset_uri).all() for bucket in buckets: session.delete(bucket) + + @staticmethod + def get_dataset_bucket_by_name(session, bucket_name) -> DatasetBucket: + return session.query(DatasetBucket).filter(DatasetBucket.S3BucketName == bucket_name).first() diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 2f82dc666..27febeb3a 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -106,6 +106,12 @@ def check_dataset_account(session, environment): @staticmethod def check_imported_resources(dataset: S3Dataset): + with get_context().db_engine.scoped_session() as session: + if DatasetBucketRepository.get_dataset_bucket_by_name(session, dataset.S3BucketName): + raise exceptions.ResourceAlreadyExists( + action=IMPORT_DATASET, + message=f'Dataset with bucket {dataset.S3BucketName} already exists', + ) if dataset.importedGlueDatabase: if len(dataset.GlueDatabaseName) > NamingConventionPattern.GLUE.value.get('max_length'): raise exceptions.InvalidInput( diff --git a/tests/modules/s3_datasets/conftest.py b/tests/modules/s3_datasets/conftest.py index 2ab1e6a06..402b3186d 100644 --- a/tests/modules/s3_datasets/conftest.py +++ b/tests/modules/s3_datasets/conftest.py @@ -3,6 +3,7 @@ import pytest +from dataall.base.context import set_context, RequestContext, dispose_context from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup from dataall.core.organizations.db.organization_models import Organization from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService @@ -437,3 +438,9 @@ def random_tag(): def random_tags(): return [random_tag() for i in range(1, random.choice([2, 3, 4, 5]))] + + +@pytest.fixture(scope='function') +def api_context_1(db, user, group): + yield set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + dispose_context() diff --git a/tests/modules/s3_datasets/test_import_dataset_check_unit.py b/tests/modules/s3_datasets/test_import_dataset_check_unit.py index e8021c528..1eaa466ac 100644 --- a/tests/modules/s3_datasets/test_import_dataset_check_unit.py +++ b/tests/modules/s3_datasets/test_import_dataset_check_unit.py @@ -8,7 +8,7 @@ from dataall.modules.s3_datasets.db.dataset_models import S3Dataset -def test_s3_managed_bucket_import(mock_aws_client): +def test_s3_managed_bucket_import(mock_aws_client, api_context_1): dataset = S3Dataset(KmsAlias=None) mock_encryption_bucket(mock_aws_client, 'AES256', None) @@ -16,7 +16,7 @@ def test_s3_managed_bucket_import(mock_aws_client): assert DatasetService.check_imported_resources(dataset) -def test_s3_managed_bucket_but_bucket_encrypted_with_kms(mock_aws_client): +def test_s3_managed_bucket_but_bucket_encrypted_with_kms(mock_aws_client, api_context_1): dataset = S3Dataset(KmsAlias=None) mock_encryption_bucket(mock_aws_client, 'aws:kms', 'any') @@ -24,7 +24,7 @@ def test_s3_managed_bucket_but_bucket_encrypted_with_kms(mock_aws_client): DatasetService.check_imported_resources(dataset) -def test_s3_managed_bucket_but_alias_provided(mock_aws_client): +def test_s3_managed_bucket_but_alias_provided(mock_aws_client, api_context_1): dataset = S3Dataset(KmsAlias='Key') mock_encryption_bucket(mock_aws_client, 'AES256', None) @@ -32,7 +32,7 @@ def test_s3_managed_bucket_but_alias_provided(mock_aws_client): DatasetService.check_imported_resources(dataset) -def test_kms_encrypted_bucket_but_key_not_exist(mock_aws_client): +def test_kms_encrypted_bucket_but_key_not_exist(mock_aws_client, api_context_1): alias = 'alias' dataset = S3Dataset(KmsAlias=alias) mock_encryption_bucket(mock_aws_client, 'aws:kms', 'any') @@ -42,7 +42,7 @@ def test_kms_encrypted_bucket_but_key_not_exist(mock_aws_client): DatasetService.check_imported_resources(dataset) -def test_kms_encrypted_bucket_but_key_is_wrong(mock_aws_client): +def test_kms_encrypted_bucket_but_key_is_wrong(mock_aws_client, api_context_1): alias = 'key_alias' kms_id = 'kms_id' dataset = S3Dataset(KmsAlias=alias) @@ -54,7 +54,7 @@ def test_kms_encrypted_bucket_but_key_is_wrong(mock_aws_client): DatasetService.check_imported_resources(dataset) -def test_kms_encrypted_bucket_imported(mock_aws_client): +def test_kms_encrypted_bucket_imported(mock_aws_client, api_context_1): alias = 'key_alias' kms_id = 'kms_id' dataset = S3Dataset(KmsAlias=alias) From 286efbf3f18683317fe33ac6ceaad49b87ed62f1 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Mon, 26 Aug 2024 15:19:10 +0100 Subject: [PATCH 042/188] check bucket encryption type: key|alias (#1499) ### Feature or Bugfix - Bugfix ### Detail - `get_bucket_encryption` returns also type: key|alias - if type `alias` we don't need to get `key_id` - if type `key` we check `key_id` ### Relates - #1410 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../modules/s3_datasets/aws/s3_dataset_client.py | 10 +++++++--- .../modules/s3_datasets/services/dataset_service.py | 13 ++++++++----- tests/modules/s3_datasets/test_dataset.py | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py b/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py index b6331c989..56bab7f7c 100644 --- a/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py +++ b/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py @@ -47,7 +47,7 @@ def get_file_upload_presigned_url(self, data): except ClientError as e: raise e - def get_bucket_encryption(self) -> (str, str): + def get_bucket_encryption(self) -> (str, str, str): dataset = self._dataset try: response = self._client.get_bucket_encryption( @@ -56,9 +56,13 @@ def get_bucket_encryption(self) -> (str, str): rule = response['ServerSideEncryptionConfiguration']['Rules'][0] encryption = rule['ApplyServerSideEncryptionByDefault'] s3_encryption = encryption['SSEAlgorithm'] - kms_id = encryption.get('KMSMasterKeyID').split('/')[-1] if encryption.get('KMSMasterKeyID') else None + # Format (using key id): arn:aws:kms:::key/ + # (using alias): arn:aws:kms:::alias/ + kms_key = encryption.get('KMSMasterKeyID') + kms_id = kms_key.split('/')[-1] if kms_key else None + kms_id_type = 'alias' if 'alias' in kms_key else 'key' - return s3_encryption, kms_id + return s3_encryption, kms_id_type, kms_id except ClientError as e: if e.response['Error']['Code'] == 'AccessDenied': diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 27febeb3a..51750d6fb 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -121,7 +121,7 @@ def check_imported_resources(dataset: S3Dataset): ) kms_alias = dataset.KmsAlias - s3_encryption, kms_id = S3DatasetClient(dataset).get_bucket_encryption() + s3_encryption, kms_id_type, kms_id = S3DatasetClient(dataset).get_bucket_encryption() if kms_alias not in [None, 'Undefined', '', 'SSE-S3']: # user-defined KMS encryption if s3_encryption == 'AES256': raise exceptions.InvalidInput( @@ -139,11 +139,14 @@ def check_imported_resources(dataset: S3Dataset): message=f'KMS key with alias={kms_alias} cannot be found - Please check if KMS Key Alias exists in account {dataset.AwsAccountId}', ) - key_id = KmsClient(account_id=dataset.AwsAccountId, region=dataset.region).get_key_id( - key_alias=f'alias/{kms_alias}' - ) + key_matches = kms_id == kms_alias + if kms_id_type == 'key': + key_id = KmsClient(account_id=dataset.AwsAccountId, region=dataset.region).get_key_id( + key_alias=f'alias/{kms_alias}' + ) + key_matches = key_id == kms_id - if key_id != kms_id: + if not key_matches: raise exceptions.InvalidInput( param_name='KmsAlias', param_value=dataset.KmsAlias, diff --git a/tests/modules/s3_datasets/test_dataset.py b/tests/modules/s3_datasets/test_dataset.py index ee6508a8e..c2e55fe6c 100644 --- a/tests/modules/s3_datasets/test_dataset.py +++ b/tests/modules/s3_datasets/test_dataset.py @@ -23,7 +23,7 @@ def mock_s3_client(module_mocker): s3_client = MagicMock() module_mocker.patch('dataall.modules.s3_datasets.services.dataset_service.S3DatasetClient', s3_client) - s3_client().get_bucket_encryption.return_value = ('aws:kms', mocked_key_id) + s3_client().get_bucket_encryption.return_value = ('aws:kms', 'key', mocked_key_id) yield s3_client From e76a713782091f786b2d10c662071cba368b0cd4 Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Tue, 27 Aug 2024 09:55:32 -0500 Subject: [PATCH 043/188] Modifying Regex for fixing redirection not working when visitin s3-datasets (#1494) ### Feature or Bugfix - Bugfix ### Detail After changes in the names of the URL link to /s3-datasets from /datasets, the redirection is not working when the user logs into data.all with an initial link pointing to the s3-dataset. ### Relates - https://github.com/data-dot-all/dataall/issues/1497 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: trajopadhye --- frontend/src/utils/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/utils/constants.js b/frontend/src/utils/constants.js index acc3b6737..3de130300 100644 --- a/frontend/src/utils/constants.js +++ b/frontend/src/utils/constants.js @@ -26,5 +26,5 @@ export const AwsRegions = [ { name: 'AWS GovCloud (US)', code: 'us-gov-west-1' } ]; -export const RegexToValidateWindowPathName = /^[a-zA-Z0-9/]*$/; +export const RegexToValidateWindowPathName = /^[a-zA-Z0-9/-]*$/; export const WindowPathLengthThreshold = 50; From 757984cee1c86613008ace843b2b50f05f4b4ac1 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Thu, 29 Aug 2024 18:36:36 +0100 Subject: [PATCH 044/188] Make log query period configurable (#1503) ### Feature or Bugfix - Feature ### Detail - log query period for shares and stacks are set in config.json - if not set, log query period is 1 day ### Relates - #1502 #1502 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- backend/dataall/core/stacks/api/resolvers.py | 5 ++++- .../modules/shares_base/services/share_logs_service.py | 9 ++++++--- config.json | 3 ++- frontend/src/modules/Shares/components/ShareLogs.js | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/backend/dataall/core/stacks/api/resolvers.py b/backend/dataall/core/stacks/api/resolvers.py index 1f3136df2..71d66f03f 100644 --- a/backend/dataall/core/stacks/api/resolvers.py +++ b/backend/dataall/core/stacks/api/resolvers.py @@ -2,6 +2,7 @@ import logging import os +from dataall.base.config import config from dataall.base.api.context import Context from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.stacks.services.keyvaluetag_service import KeyValueTagService @@ -67,10 +68,12 @@ def get_stack_logs(context: Context, source, targetUri: str = None, targetType: query = StackService.get_stack_logs(target_uri=targetUri, target_type=targetType) envname = os.getenv('envname', 'local') log_group_name = f"/{Parameter().get_parameter(env=envname, path='resourcePrefix')}/{envname}/ecs/cdkproxy" + log_query_period_days = config.get_property('core.log_query_period_days', 1) + results = CloudWatch.run_query( query=query, log_group_name=log_group_name, - days=1, + days=log_query_period_days, ) log.info(f'Running Logs query {query} for log_group_name={log_group_name}') return results diff --git a/backend/dataall/modules/shares_base/services/share_logs_service.py b/backend/dataall/modules/shares_base/services/share_logs_service.py index 6d29e5155..d79f165d8 100644 --- a/backend/dataall/modules/shares_base/services/share_logs_service.py +++ b/backend/dataall/modules/shares_base/services/share_logs_service.py @@ -5,6 +5,7 @@ from dataall.base.utils import Parameter from dataall.base.db import exceptions from dataall.core.stacks.aws.cloudwatch import CloudWatch +from dataall.base.config import config from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository @@ -50,15 +51,17 @@ def get_share_logs(shareUri): ) envname = os.getenv('envname', 'local') + log_query_period_days = config.get_property('core.log_query_period_days', 1) + log.info(f'log_query_period_days: {log_query_period_days}') log_group_name = f"/{Parameter().get_parameter(env=envname, path='resourcePrefix')}/{envname}/ecs/share-manager" query_for_name = ShareLogsService.get_share_logs_name_query(shareUri=shareUri) name_query_result = CloudWatch.run_query( query=query_for_name, log_group_name=log_group_name, - days=1, + days=log_query_period_days, ) - if len(name_query_result) == 0: + if not name_query_result: return [] name = name_query_result[0]['logStream'] @@ -67,7 +70,7 @@ def get_share_logs(shareUri): results = CloudWatch.run_query( query=query, log_group_name=log_group_name, - days=1, + days=log_query_period_days, ) log.info(f'Running Logs query {query} for log_group_name={log_group_name}') return results diff --git a/config.json b/config.json index d54252ac9..35281b04b 100644 --- a/config.json +++ b/config.json @@ -70,6 +70,7 @@ "env_aws_actions": true, "cdk_pivot_role_multiple_environments_same_account": false, "enable_quicksight_monitoring": false - } + }, + "log_query_period_days": 1 } } \ No newline at end of file diff --git a/frontend/src/modules/Shares/components/ShareLogs.js b/frontend/src/modules/Shares/components/ShareLogs.js index 2b4b01500..fbac0684e 100644 --- a/frontend/src/modules/Shares/components/ShareLogs.js +++ b/frontend/src/modules/Shares/components/ShareLogs.js @@ -82,7 +82,7 @@ export const ShareLogs = (props) => { value={ logs.length > 0 ? logs.join('\n') - : 'No logs available for the last 24 hours. Logs may take few minutes after the share is processed...' + : 'No logs available. Logs may take few minutes after the share is processed...' } options={{ minimap: { enabled: false } }} theme="vs-dark" From ae445d895b4d93582f5a979b016d417bfbb00bd8 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Thu, 29 Aug 2024 18:36:49 +0100 Subject: [PATCH 045/188] Validate imported resource names via NamingConventionService (#1501) ### Feature or Bugfix - Refactoring ### Detail - new properties in NamingConventionPattern: valid_external_regex, max_imported_length. If not defined, internal regex and max_length will be used - function validate_imported_name is used for resources that are created outside data.all: e.g. s3, kms-aliases and glue tables for imported datasets ### Relates - #1304 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../dataall/base/utils/naming_convention.py | 33 +++++++++++++++-- .../s3_datasets/services/dataset_service.py | 36 +++++++++++++------ 2 files changed, 55 insertions(+), 14 deletions(-) diff --git a/backend/dataall/base/utils/naming_convention.py b/backend/dataall/base/utils/naming_convention.py index a756c371c..b60cf05aa 100644 --- a/backend/dataall/base/utils/naming_convention.py +++ b/backend/dataall/base/utils/naming_convention.py @@ -4,10 +4,21 @@ class NamingConventionPattern(Enum): - S3 = {'regex': '[^a-zA-Z0-9-]', 'separator': '-', 'max_length': 63} + S3 = { + 'regex': '[^a-zA-Z0-9-]', + 'separator': '-', + 'max_length': 63, + 'valid_external_regex': '(?!(^xn--|.+-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$', + } + KMS = {'regex': '[^a-zA-Z0-9-]$', 'separator': '-', 'max_length': 63, 'valid_external_regex': '^[a-zA-Z0-9_-]+$'} IAM = {'regex': '[^a-zA-Z0-9-_]', 'separator': '-', 'max_length': 63} # Role names up to 64 chars IAM_POLICY = {'regex': '[^a-zA-Z0-9-_]', 'separator': '-', 'max_length': 128} # Policy names up to 128 chars - GLUE = {'regex': '[^a-zA-Z0-9_]', 'separator': '_', 'max_length': 240} # Limit 255 - 15 extra chars buffer + GLUE = { + 'regex': '[^a-zA-Z0-9_]', + 'separator': '_', + 'max_length': 240, + 'valid_external_regex': '^[a-zA-Z0-9_]+$', + } # Limit 255 - 15 extra chars buffer GLUE_ETL = {'regex': '[^a-zA-Z0-9-]', 'separator': '-', 'max_length': 52} NOTEBOOK = {'regex': '[^a-zA-Z0-9-]', 'separator': '-', 'max_length': 63} MLSTUDIO_DOMAIN = {'regex': '[^a-zA-Z0-9-]', 'separator': '-', 'max_length': 63} @@ -43,11 +54,13 @@ def build_compliant_name(self) -> str: separator = NamingConventionPattern[self.service].value['separator'] max_length = NamingConventionPattern[self.service].value['max_length'] suffix = f'-{self.target_uri}' if len(self.target_uri) else '' - return f"{slugify(self.resource_prefix + '-' + self.target_label[:(max_length- len(self.resource_prefix + self.target_uri))] + suffix, regex_pattern=fr'{regex}', separator=separator, lowercase=True)}" + return f"{slugify(self.resource_prefix + '-' + self.target_label[:(max_length - len(self.resource_prefix + self.target_uri))] + suffix, regex_pattern=fr'{regex}', separator=separator, lowercase=True)}" def validate_name(self): regex = NamingConventionPattern[self.service].value['regex'] max_length = NamingConventionPattern[self.service].value['max_length'] + if 'arn:aws:' in self.target_label: + raise Exception(f'An error occurred (InvalidInput): name expected, arn-like string received: {regex}') if not re.search(regex, self.target_label): raise Exception( f'An error occurred (InvalidInput): label value {self.target_label} must match the pattern {regex}' @@ -56,3 +69,17 @@ def validate_name(self): raise Exception( f'An error occurred (InvalidInput): label value {self.target_label} must be less than {max_length} characters' ) + + def validate_imported_name(self): + max_length = NamingConventionPattern[self.service].value['max_length'] + valid_external_regex = NamingConventionPattern[self.service].value.get('valid_external_regex', '.*') + if 'arn:aws:' in self.target_label: + raise Exception('An error occurred (InvalidInput): name expected, arn-like string received') + if not re.search(valid_external_regex, self.target_label): + raise Exception( + f'An error occurred (InvalidInput): label value {self.target_label} must match the pattern {valid_external_regex}' + ) + elif len(self.target_label) > max_length: + raise Exception( + f'An error occurred (InvalidInput): label value {self.target_label} must be less than {max_length} characters' + ) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 51750d6fb..7546ef5c8 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -5,7 +5,7 @@ from dataall.core.resource_lock.db.resource_lock_repositories import ResourceLockRepository from dataall.base.aws.quicksight import QuicksightClient from dataall.base.db import exceptions -from dataall.base.utils.naming_convention import NamingConventionPattern +from dataall.base.utils.naming_convention import NamingConventionPattern, NamingConventionService from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.core.stacks.services.stack_service import StackService @@ -105,20 +105,29 @@ def check_dataset_account(session, environment): return True @staticmethod - def check_imported_resources(dataset: S3Dataset): + def check_imported_resources(dataset: S3Dataset, data: dict = {}): + # check that resource names are valid + if dataset.S3BucketName: + NamingConventionService( + target_uri=dataset.datasetUri, + target_label=dataset.S3BucketName, + pattern=NamingConventionPattern.S3, + ).validate_imported_name() + + if dataset.importedGlueDatabase: + NamingConventionService( + target_uri=dataset.datasetUri, + target_label=data.get('glueDatabaseName', 'undefined'), + pattern=NamingConventionPattern.GLUE, + ).validate_imported_name() + with get_context().db_engine.scoped_session() as session: if DatasetBucketRepository.get_dataset_bucket_by_name(session, dataset.S3BucketName): raise exceptions.ResourceAlreadyExists( action=IMPORT_DATASET, message=f'Dataset with bucket {dataset.S3BucketName} already exists', ) - if dataset.importedGlueDatabase: - if len(dataset.GlueDatabaseName) > NamingConventionPattern.GLUE.value.get('max_length'): - raise exceptions.InvalidInput( - param_name='GlueDatabaseName', - param_value=dataset.GlueDatabaseName, - constraint=f"less than {NamingConventionPattern.GLUE.value.get('max_length')} characters", - ) + kms_alias = dataset.KmsAlias s3_encryption, kms_id_type, kms_id = S3DatasetClient(dataset).get_bucket_encryption() @@ -129,6 +138,11 @@ def check_imported_resources(dataset: S3Dataset): param_value=dataset.KmsAlias, constraint=f'empty, Bucket {dataset.S3BucketName} is encrypted with AWS managed key (SSE-S3). KmsAlias {kms_alias} should NOT be provided as input parameter.', ) + NamingConventionService( + target_uri=dataset.datasetUri, + target_label=kms_alias, + pattern=NamingConventionPattern.KMS, + ).validate_imported_name() key_exists = KmsClient(account_id=dataset.AwsAccountId, region=dataset.region).check_key_exists( key_alias=f'alias/{kms_alias}' @@ -171,7 +185,7 @@ def create_dataset(uri, admin_group, data: dict): dataset = DatasetRepository.build_dataset(username=context.username, env=environment, data=data) if dataset.imported: - DatasetService.check_imported_resources(dataset) + DatasetService.check_imported_resources(dataset, data) dataset = DatasetRepository.create_dataset(session=session, env=environment, dataset=dataset, data=data) DatasetBucketRepository.create_dataset_bucket(session, dataset, data) @@ -265,7 +279,7 @@ def update_dataset(uri: str, data: dict): dataset: S3Dataset = DatasetRepository.get_dataset_by_uri(session, uri) if data and isinstance(data, dict): if data.get('imported', False): - DatasetService.check_imported_resources(dataset) + DatasetService.check_imported_resources(dataset, data) for k in data.keys(): if k not in ['stewards', 'KmsAlias']: From 97717f6af9c1c27490c36fa8608a7fefd14e0baa Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Mon, 2 Sep 2024 17:12:35 +0300 Subject: [PATCH 046/188] S3Bucket WRITE/MODIFY permissions (#1472) ### Feature or Bugfix - Feature ### Detail Adding support for requesting WRITE/MODIFY permissions for an S3Bucket ### Testing Tested in local and dev delpoyment ### Relates #1332 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../services/environment_service.py | 2 +- .../s3_datasets_shares/aws/kms_client.py | 5 +- .../s3_datasets_shares/aws/s3_client.py | 17 +- .../share_managers/lf_share_manager.py | 116 ++++++--- .../s3_access_point_share_manager.py | 137 +++++------ .../share_managers/s3_bucket_share_manager.py | 226 ++++++++---------- .../services/share_managers/s3_utils.py | 102 ++++++++ .../modules/shares_base/api/input_types.py | 8 +- .../modules/shares_base/api/resolvers.py | 3 + .../dataall/modules/shares_base/api/types.py | 8 +- .../shares_base/db/share_object_models.py | 1 + .../services/share_object_service.py | 63 +++-- .../shares_base/services/shares_enums.py | 6 + ...15903b780c_add_share_object_permissions.py | 27 +++ .../Catalog/components/RequestAccessModal.js | 56 ++++- .../modules/Shares/services/getShareObject.js | 1 + .../src/modules/Shares/views/ShareView.js | 21 ++ tests/conftest.py | 2 +- .../redshift_datasets_shares/conftest.py | 4 +- .../tasks/test_dataset_subscriptions.py | 2 + tests/modules/s3_datasets_shares/conftest.py | 10 +- .../s3_datasets_shares/tasks/conftest.py | 2 + .../test_s3_access_point_share_manager.py | 24 +- .../modules/s3_datasets_shares/test_share.py | 38 ++- 24 files changed, 571 insertions(+), 310 deletions(-) create mode 100644 backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_utils.py create mode 100644 backend/migrations/versions/c215903b780c_add_share_object_permissions.py diff --git a/backend/dataall/core/environment/services/environment_service.py b/backend/dataall/core/environment/services/environment_service.py index d8a1f5f94..f49302ae4 100644 --- a/backend/dataall/core/environment/services/environment_service.py +++ b/backend/dataall/core/environment/services/environment_service.py @@ -811,7 +811,7 @@ def find_environment_group(session, group_uri, environment_uri): return None @staticmethod - def get_environment_group(session, group_uri, environment_uri): + def get_environment_group(session, group_uri, environment_uri) -> EnvironmentGroup: env_group = EnvironmentRepository.get_environment_group(session, group_uri, environment_uri) if not env_group: raise exceptions.ObjectNotFound('EnvironmentGroup', f'({group_uri},{environment_uri})') diff --git a/backend/dataall/modules/s3_datasets_shares/aws/kms_client.py b/backend/dataall/modules/s3_datasets_shares/aws/kms_client.py index d59f4c099..05152fde2 100644 --- a/backend/dataall/modules/s3_datasets_shares/aws/kms_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/kms_client.py @@ -4,17 +4,20 @@ from botocore.exceptions import ClientError from dataall.modules.s3_datasets_shares.aws.share_policy_verifier import SharePolicyVerifier - log = logging.getLogger(__name__) DATAALL_BUCKET_KMS_DECRYPT_SID = 'DataAll-Bucket-KMS-Decrypt' +DATAALL_BUCKET_KMS_ENCRYPT_SID = 'DataAll-Bucket-KMS-Encrypt' DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID = 'KMSPivotRolePermissions' DATAALL_ACCESS_POINT_KMS_DECRYPT_SID = 'DataAll-Access-Point-KMS-Decrypt' +DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID = 'DataAll-Access-Point-KMS-Encrypt' DATAALL_KMS_SIDS = [ DATAALL_BUCKET_KMS_DECRYPT_SID, + DATAALL_BUCKET_KMS_ENCRYPT_SID, DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, DATAALL_ACCESS_POINT_KMS_DECRYPT_SID, + DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID, ] diff --git a/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py b/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py index 191ed2646..da68b1759 100755 --- a/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py @@ -1,18 +1,26 @@ import logging +from typing import List from dataall.base.aws.sts import SessionHelper from botocore.exceptions import ClientError - from dataall.modules.s3_datasets_shares.aws.share_policy_verifier import SharePolicyVerifier log = logging.getLogger(__name__) DATAALL_READ_ONLY_SID = 'DataAll-Bucket-ReadOnly' +DATAALL_WRITE_ONLY_SID = 'DataAll-Bucket-WriteOnly' +DATAALL_MODIFY_ONLY_SID = 'DataAll-Bucket-ModifyOnly' DATAALL_ALLOW_OWNER_SID = 'AllowAllToAdmin' DATAALL_DELEGATE_TO_ACCESS_POINT = 'DelegateAccessToAccessPoint' -DATAALL_BUCKET_SIDS = [DATAALL_READ_ONLY_SID, DATAALL_ALLOW_OWNER_SID, DATAALL_DELEGATE_TO_ACCESS_POINT] +DATAALL_BUCKET_SIDS = [ + DATAALL_READ_ONLY_SID, + DATAALL_WRITE_ONLY_SID, + DATAALL_MODIFY_ONLY_SID, + DATAALL_ALLOW_OWNER_SID, + DATAALL_DELEGATE_TO_ACCESS_POINT, +] class S3ControlClient: @@ -80,6 +88,7 @@ def generate_access_point_policy_template( principal_id: str, access_point_arn: str, s3_prefix: str, + actions: List[str], ): policy = { 'Version': '2012-10-17', @@ -88,7 +97,7 @@ def generate_access_point_policy_template( 'Sid': f'{principal_id}0', 'Effect': 'Allow', 'Principal': {'AWS': '*'}, - 'Action': 's3:ListBucket', + 'Action': ['s3:ListBucket'], 'Resource': f'{access_point_arn}', 'Condition': {'StringLike': {'s3:prefix': [f'{s3_prefix}/*'], 'aws:userId': [f'{principal_id}:*']}}, }, @@ -96,7 +105,7 @@ def generate_access_point_policy_template( 'Sid': f'{principal_id}1', 'Effect': 'Allow', 'Principal': {'AWS': '*'}, - 'Action': 's3:GetObject', + 'Action': actions, 'Resource': [f'{access_point_arn}/object/{s3_prefix}/*'], 'Condition': {'StringLike': {'aws:userId': [f'{principal_id}:*']}}, }, diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py index ad746a852..e2951c3a3 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/lf_share_manager.py @@ -1,31 +1,71 @@ import logging import time from datetime import datetime -from dataall.core.environment.services.environment_service import EnvironmentService -from dataall.modules.s3_datasets_shares.aws.glue_client import GlueClient -from dataall.modules.s3_datasets_shares.aws.lakeformation_client import LakeFormationClient -from dataall.base.aws.quicksight import QuicksightClient +from enum import Enum, auto +from typing import List + from dataall.base.aws.iam import IAM +from dataall.base.aws.quicksight import QuicksightClient from dataall.base.aws.sts import SessionHelper from dataall.base.db import exceptions +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.modules.s3_datasets.db.dataset_models import DatasetTable +from dataall.modules.s3_datasets_shares.aws.glue_client import GlueClient +from dataall.modules.s3_datasets_shares.aws.lakeformation_client import LakeFormationClient +from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService +from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObjectItemDataFilter from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.shares_base.services.shares_enums import ( ShareItemStatus, ShareObjectActions, ShareItemActions, ShareItemHealthStatus, + ShareObjectDataPermission, ) -from dataall.modules.s3_datasets.db.dataset_models import DatasetTable -from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService -from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObjectItemDataFilter -from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter from dataall.modules.shares_base.services.sharing_service import ShareData logger = logging.getLogger(__name__) +class LfPermType(Enum): + Table = auto() + Database = auto() + ResourceLink = auto() + Filters = auto() + + +PERM_TO_LF_PERMS = { + ShareObjectDataPermission.Read.value: { + LfPermType.Table: ['DESCRIBE', 'SELECT'], + LfPermType.Database: ['DESCRIBE'], + LfPermType.ResourceLink: ['DESCRIBE'], + LfPermType.Filters: ['SELECT'], + }, + ShareObjectDataPermission.Write.value: { + LfPermType.Table: ['INSERT'], + LfPermType.Database: ['CREATE_TABLE'], + LfPermType.ResourceLink: ['DESCRIBE'], + LfPermType.Filters: ['SELECT'], + }, + ShareObjectDataPermission.Modify.value: { + LfPermType.Table: ['ALTER', 'DROP', 'DELETE'], + LfPermType.Database: ['ALTER', 'DROP'], + LfPermType.ResourceLink: ['DESCRIBE'], + LfPermType.Filters: ['SELECT'], + }, +} + + +def perms_to_lfperms(permissions: List[str], lf_perm_type: LfPermType) -> List[str]: + lfperms = list() + for p in permissions: + lfperms.extend(PERM_TO_LF_PERMS[p][lf_perm_type]) + return list(dict.fromkeys(lfperms)) + + class LFShareManager: def __init__( self, @@ -257,18 +297,22 @@ def check_pivot_role_permissions_to_shared_database(self) -> None: def check_principals_permissions_to_shared_database(self) -> None: """ - Checks 'DESCRIBE' Lake Formation permissions to data.all PivotRole to the shared database in target account + Checks Lake Formation permissions to data.all PivotRole to the shared database in target account and add to db level errors if check fails :return: None """ if not self.lf_client_in_target.check_permissions_to_database( principals=self.principals, database_name=self.shared_db_name, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Database), ): self.db_level_errors.append( ShareErrorFormatter.missing_permission_error_msg( - self.principals, 'LF', ['DESCRIBE'], 'Glue DB', self.shared_db_name + self.principals, + 'LF', + perms_to_lfperms(self.share.permissions, LfPermType.Database), + 'Glue DB', + self.shared_db_name, ) ) @@ -276,7 +320,7 @@ def check_target_principals_permissions_to_source_table( self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None ) -> None: """ - Checks 'DESCRIBE' 'SELECT' Lake Formation permissions to target principals to the original table in source account + Checks Lake Formation permissions to target principals to the original table in source account and add to tbl level errors if check fails :param table: DatasetTable :return: None @@ -287,14 +331,14 @@ def check_target_principals_permissions_to_source_table( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Filters), data_filters=share_item_filter.dataFilterNames, ): self.tbl_level_errors.append( ShareErrorFormatter.missing_permission_error_msg( self.principals, 'LF', - ['SELECT'], + perms_to_lfperms(self.share.permissions, LfPermType.Filters), 'Glue Table with Filters', f'{table.GlueDatabaseName}.{table.GlueTableName}, Filters:{share_item_filter.dataFilterNames}', ) @@ -305,13 +349,13 @@ def check_target_principals_permissions_to_source_table( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Table), ): self.tbl_level_errors.append( ShareErrorFormatter.missing_permission_error_msg( self.principals, 'LF', - ['DESCRIBE', 'SELECT'], + perms_to_lfperms(self.share.permissions, LfPermType.Table), 'Glue Table', f'{table.GlueDatabaseName}.{table.GlueTableName}', ) @@ -339,13 +383,13 @@ def grant_pivot_role_drop_permissions_to_resource_link_table(self, resource_link def grant_principals_database_permissions_to_shared_database(self) -> True: """ - Grants 'DESCRIBE' Lake Formation permissions to share principals to the shared database in target account + Grants Lake Formation permissions to share principals to the shared database in target account :return: True if it is successful """ self.lf_client_in_target.grant_permissions_to_database( principals=self.principals, database_name=self.shared_db_name, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Database), ) return True @@ -353,7 +397,7 @@ def grant_principals_permissions_to_source_table( self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None ) -> True: """ - Grants 'DESCRIBE' 'SELECT' Lake Formation permissions to target principals to the original table in source account + Grants Lake Formation permissions to target principals to the original table in source account :param table: DatasetTable :return: True if it is successful """ @@ -363,7 +407,7 @@ def grant_principals_permissions_to_source_table( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Filters), data_filters=share_item_filter.dataFilterNames, ) else: @@ -372,9 +416,9 @@ def grant_principals_permissions_to_source_table( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Table), ) - time.sleep(2) + time.sleep(2) return True def check_if_exists_and_create_resource_link_table_in_shared_database( @@ -397,7 +441,7 @@ def check_if_exists_and_create_resource_link_table_in_shared_database( def grant_principals_permissions_to_resource_link_table(self, resource_link_name: str) -> True: """ - Grants 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account + Grants Lake Formation permissions to share principals to the resource link table in target account :param table: DatasetTable :return: True if it is successful """ @@ -406,13 +450,13 @@ def grant_principals_permissions_to_resource_link_table(self, resource_link_name database_name=self.shared_db_name, table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.ResourceLink), ) return True def check_principals_permissions_to_resource_link_table(self, resource_link_name: str) -> None: """ - Checks 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account + Checks Lake Formation permissions to share principals to the resource link table in target account and add to tbl level errors if check fails :param table: DatasetTable :return: None @@ -423,17 +467,21 @@ def check_principals_permissions_to_resource_link_table(self, resource_link_name database_name=self.shared_db_name, table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.ResourceLink), ): self.tbl_level_errors.append( ShareErrorFormatter.missing_permission_error_msg( - self.principals, 'LF', ['DESCRIBE'], 'Glue Table', f'{self.shared_db_name}.{resource_link_name}' + self.principals, + 'LF', + perms_to_lfperms(self.share.permissions, LfPermType.ResourceLink), + 'Glue Table', + f'{self.shared_db_name}.{resource_link_name}', ) ) def revoke_principals_permissions_to_resource_link_table(self, resource_link_name) -> True: """ - Revokes 'DESCRIBE' Lake Formation permissions to share principals to the resource link table in target account + Revokes Lake Formation permissions to share principals to the resource link table in target account :param table: DatasetTable :return: True if it is successful """ @@ -443,7 +491,7 @@ def revoke_principals_permissions_to_resource_link_table(self, resource_link_nam database_name=self.shared_db_name, table_name=resource_link_name, catalog_id=self.target_environment.AwsAccountId, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.ResourceLink), ) return True @@ -503,13 +551,13 @@ def _clean_up_lf_permissions_account_delegation_pattern(self, table: DatasetTabl def revoke_principals_database_permissions_to_shared_database(self) -> True: """ - Revokes 'DESCRIBE' Lake Formation permissions to share principals to the shared database in target account + Revokes Lake Formation permissions to share principals to the shared database in target account :return: True if it is successful """ self.lf_client_in_target.revoke_permissions_to_database( principals=self.principals, database_name=self.shared_db_name, - permissions=['DESCRIBE'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Database), ) return True @@ -541,7 +589,7 @@ def revoke_principals_permissions_to_table_in_source( self, table: DatasetTable, share_item: ShareObjectItem, share_item_filter: ShareObjectItemDataFilter = None ) -> True: """ - Revokes 'SELECT' Lake Formation permissions to target principals to the original table in source account + Revokes Lake Formation permissions to target principals to the original table in source account If the table is not shared with any other team in the environment, it deletes resource_shares on RAM associated to revoked table :param table: DatasetTable @@ -554,7 +602,7 @@ def revoke_principals_permissions_to_table_in_source( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Filters), data_filters=share_item_filter.dataFilterNames, ) else: @@ -563,7 +611,7 @@ def revoke_principals_permissions_to_table_in_source( database_name=self.source_database_name, table_name=table.GlueTableName, catalog_id=self.source_account_id, - permissions=['DESCRIBE', 'SELECT'], + permissions=perms_to_lfperms(self.share.permissions, LfPermType.Table), ) return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index fd6e389d7..7bd275d6a 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -14,11 +14,18 @@ ) from dataall.modules.s3_datasets_shares.aws.kms_client import ( KmsClient, - DATAALL_ACCESS_POINT_KMS_DECRYPT_SID, DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, ) from dataall.base.aws.iam import IAM from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService +from dataall.modules.s3_datasets_shares.services.share_managers.s3_utils import ( + get_principal_list, + add_target_arn_to_statement_principal, + generate_policy_statement, + perms_to_sids, + SidType, + perms_to_actions, +) from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter @@ -478,6 +485,7 @@ def manage_access_point_and_policy(self): target_requester_id, access_point_arn, self.s3_prefix, + perms_to_actions(self.share.permissions, SidType.BucketPolicy), ) existing_policy['Statement'].extend(additional_policy['Statement']) access_point_policy = existing_policy @@ -488,6 +496,7 @@ def manage_access_point_and_policy(self): target_requester_id, access_point_arn, self.s3_prefix, + perms_to_actions(self.share.permissions, SidType.BucketPolicy), ) s3_client.attach_access_point_policy( access_point_name=self.access_point_name, policy=json.dumps(access_point_policy) @@ -515,22 +524,19 @@ def check_dataset_bucket_key_policy(self) -> None: counter = count() statements = {item.get('Sid', next(counter)): item for item in existing_policy.get('Statement', {})} - error = False - if DATAALL_ACCESS_POINT_KMS_DECRYPT_SID not in statements.keys(): - error = True - elif f'{target_requester_arn}' not in self.get_principal_list(statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID]): - error = True - - if error: - self.folder_errors.append( - ShareErrorFormatter.missing_permission_error_msg( - self.target_requester_IAMRoleName, - 'KMS Key Policy', - DATAALL_ACCESS_POINT_KMS_DECRYPT_SID, - 'KMS Key', - f'{kms_key_id}', + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsAccessPointPolicy): + if target_sid not in statements.keys() or target_requester_arn not in get_principal_list( + statements[target_sid] + ): + self.folder_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.target_requester_IAMRoleName, + 'KMS Key Policy', + target_sid, + 'KMS Key', + f'{kms_key_id}', + ) ) - ) def update_dataset_bucket_key_policy(self): logger.info('Updating dataset Bucket KMS key policy...') @@ -568,22 +574,17 @@ def update_dataset_bucket_key_policy(self): self.generate_enable_pivot_role_permissions_policy_statement(pivot_role_name, self.dataset_account_id) ) - if DATAALL_ACCESS_POINT_KMS_DECRYPT_SID in statements.keys(): - logger.info( - f'KMS key policy contains share statement {DATAALL_ACCESS_POINT_KMS_DECRYPT_SID}, ' - f'updating the current one' - ) - statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID] = self.add_target_arn_to_statement_principal( - statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID], target_requester_arn - ) - else: - logger.info( - f'KMS key does not contain share statement {DATAALL_ACCESS_POINT_KMS_DECRYPT_SID}, ' - f'generating a new one' - ) - statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID] = self.generate_default_kms_decrypt_policy_statement( - target_requester_arn - ) + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsAccessPointPolicy): + if target_sid in statements.keys(): + logger.info(f'KMS key policy contains share statement {target_sid}, ' f'updating the current one') + statements[target_sid] = add_target_arn_to_statement_principal( + statements[target_sid], target_requester_arn + ) + else: + logger.info(f'KMS key does not contain share statement {target_sid}, ' f'generating a new one') + statements[target_sid] = self.generate_default_kms_policy_statement( + target_requester_arn, target_sid + ) existing_policy['Statement'] = list(statements.values()) else: @@ -591,10 +592,13 @@ def update_dataset_bucket_key_policy(self): existing_policy = { 'Version': '2012-10-17', 'Statement': [ - self.generate_default_kms_decrypt_policy_statement(target_requester_arn), self.generate_enable_pivot_role_permissions_policy_statement( pivot_role_name, self.dataset_account_id ), + ] + + [ + self.generate_default_kms_policy_statement(target_requester_arn, target_sid) + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsAccessPointPolicy) ], } kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) @@ -722,16 +726,18 @@ def delete_dataset_bucket_key_policy( ) counter = count() statements = {item.get('Sid', next(counter)): item for item in existing_policy.get('Statement', {})} - if DATAALL_ACCESS_POINT_KMS_DECRYPT_SID in statements.keys(): - principal_list = self.get_principal_list(statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID]) - if f'{target_requester_arn}' in principal_list: - principal_list.remove(f'{target_requester_arn}') - if len(principal_list) == 0: - statements.pop(DATAALL_ACCESS_POINT_KMS_DECRYPT_SID) - else: - statements[DATAALL_ACCESS_POINT_KMS_DECRYPT_SID]['Principal']['AWS'] = principal_list - existing_policy['Statement'] = list(statements.values()) - kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) + + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsAccessPointPolicy): + if target_sid in statements.keys(): + principal_list = get_principal_list(statements[target_sid]) + if f'{target_requester_arn}' in principal_list: + principal_list.remove(f'{target_requester_arn}') + if len(principal_list) == 0: + statements.pop(target_sid) + else: + statements[target_sid]['Principal']['AWS'] = principal_list + existing_policy['Statement'] = list(statements.values()) + kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) def handle_share_failure(self, error: Exception) -> None: """ @@ -769,46 +775,11 @@ def handle_revoke_failure(self, error: Exception) -> bool: return True @staticmethod - def generate_default_kms_decrypt_policy_statement(target_requester_arn): - return { - 'Sid': f'{DATAALL_ACCESS_POINT_KMS_DECRYPT_SID}', - 'Effect': 'Allow', - 'Principal': {'AWS': [f'{target_requester_arn}']}, - 'Action': 'kms:Decrypt', - 'Resource': '*', - } + def generate_default_kms_policy_statement(target_requester_arn, target_sid): + return generate_policy_statement(target_sid, [target_requester_arn], ['*']) @staticmethod def generate_enable_pivot_role_permissions_policy_statement(pivot_role_name, dataset_account_id): - return { - 'Sid': f'{DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID}', - 'Effect': 'Allow', - 'Principal': {'AWS': [f'arn:aws:iam::{dataset_account_id}:role/{pivot_role_name}']}, - 'Action': [ - 'kms:Decrypt', - 'kms:Encrypt', - 'kms:GenerateDataKey*', - 'kms:PutKeyPolicy', - 'kms:GetKeyPolicy', - 'kms:ReEncrypt*', - 'kms:TagResource', - 'kms:UntagResource', - 'kms:DescribeKey', - 'kms:List*', - ], - 'Resource': '*', - } - - def add_target_arn_to_statement_principal(self, statement, target_requester_arn): - principal_list = self.get_principal_list(statement) - if f'{target_requester_arn}' not in principal_list: - principal_list.append(f'{target_requester_arn}') - statement['Principal']['AWS'] = principal_list - return statement - - @staticmethod - def get_principal_list(statement): - principal_list = statement['Principal']['AWS'] - if isinstance(principal_list, str): - principal_list = [principal_list] - return principal_list + return generate_policy_statement( + DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, [f'arn:aws:iam::{dataset_account_id}:role/{pivot_role_name}'], ['*'] + ) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py index ef051ad30..ca9de13d3 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_bucket_share_manager.py @@ -6,24 +6,30 @@ from dataall.base.aws.sts import SessionHelper from dataall.core.environment.db.environment_models import Environment from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.modules.s3_datasets.db.dataset_models import DatasetBucket from dataall.modules.s3_datasets_shares.aws.kms_client import ( KmsClient, - DATAALL_BUCKET_KMS_DECRYPT_SID, DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, ) -from dataall.modules.s3_datasets_shares.aws.s3_client import S3ControlClient, S3Client, DATAALL_READ_ONLY_SID -from dataall.modules.shares_base.db.share_object_models import ShareObject -from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound -from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter +from dataall.modules.s3_datasets_shares.aws.s3_client import S3ControlClient, S3Client from dataall.modules.s3_datasets_shares.services.s3_share_alarm_service import S3ShareAlarmService from dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service import ( S3SharePolicyService, IAM_S3_BUCKETS_STATEMENT_SID, EMPTY_STATEMENT_SID, ) -from dataall.modules.shares_base.services.shares_enums import PrincipalType -from dataall.modules.s3_datasets.db.dataset_models import DatasetBucket +from dataall.modules.s3_datasets_shares.services.share_managers.s3_utils import ( + generate_policy_statement, + perms_to_sids, + get_principal_list, + add_target_arn_to_statement_principal, + SidType, +) +from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.shares_enums import PrincipalType from dataall.modules.shares_base.services.sharing_service import ShareData logger = logging.getLogger(__name__) @@ -296,23 +302,25 @@ def check_role_bucket_policy(self) -> None: return s3_client = S3Client(self.source_account_id, self.source_environment.region) bucket_policy = s3_client.get_bucket_policy(self.bucket_name) - error = False if not bucket_policy: - error = True - else: - bucket_policy = json.loads(bucket_policy) - counter = count() - statements = {item.get('Sid', next(counter)): item for item in bucket_policy.get('Statement', {})} - if DATAALL_READ_ONLY_SID not in statements.keys(): - error = True - elif f'{target_requester_arn}' not in self.get_principal_list(statements[DATAALL_READ_ONLY_SID]): - error = True - if error: self.bucket_errors.append( ShareErrorFormatter.missing_permission_error_msg( - target_requester_arn, 'Bucket Policy', DATAALL_READ_ONLY_SID, 'S3 Bucket', f'{self.bucket_name}' + target_requester_arn, 'Bucket Policy is missing', '', 'S3 Bucket', self.bucket_name ) ) + else: + bucket_policy = json.loads(bucket_policy) + counter = count() + statements = {item.get('Sid', next(counter)): item for item in bucket_policy.get('Statement', {})} + for target_sid in perms_to_sids(self.share.permissions, SidType.BucketPolicy): + if target_sid not in statements.keys() or f'{target_requester_arn}' not in get_principal_list( + statements[target_sid] + ): + self.bucket_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + target_requester_arn, 'Bucket Policy', target_sid, 'S3 Bucket', self.bucket_name + ) + ) def grant_role_bucket_policy(self): """ @@ -333,18 +341,18 @@ def grant_role_bucket_policy(self): bucket_policy = self.get_bucket_policy_or_default() counter = count() statements = {item.get('Sid', next(counter)): item for item in bucket_policy.get('Statement', {})} - if DATAALL_READ_ONLY_SID in statements.keys(): - logger.info(f'Bucket policy contains share statement {DATAALL_READ_ONLY_SID}, updating the current one') - statements[DATAALL_READ_ONLY_SID] = self.add_target_arn_to_statement_principal( - statements[DATAALL_READ_ONLY_SID], target_requester_arn - ) - else: - logger.info( - f'Bucket policy does not contain share statement {DATAALL_READ_ONLY_SID}, generating a new one' - ) - statements[DATAALL_READ_ONLY_SID] = self.generate_default_bucket_read_policy_statement( - self.bucket_name, target_requester_arn - ) + + for target_sid in perms_to_sids(self.share.permissions, SidType.BucketPolicy): + if target_sid in statements: + logger.info(f'Bucket policy contains share statement {target_sid}, updating the current one') + statements[target_sid] = add_target_arn_to_statement_principal( + statements[target_sid], target_requester_arn + ) + else: + logger.info(f'Bucket policy does not contain share statement {target_sid}, generating a new one') + statements[target_sid] = self.generate_default_bucket_policy_statement( + self.bucket_name, target_requester_arn, target_sid + ) bucket_policy['Statement'] = list(statements.values()) s3_client = S3Client(self.source_account_id, self.source_environment.region) @@ -353,20 +361,6 @@ def grant_role_bucket_policy(self): logger.exception(f'Failed during bucket policy management {e}') raise e - def add_target_arn_to_statement_principal(self, statement, target_requester_arn): - principal_list = self.get_principal_list(statement) - if f'{target_requester_arn}' not in principal_list: - principal_list.append(f'{target_requester_arn}') - statement['Principal']['AWS'] = principal_list - return statement - - @staticmethod - def get_principal_list(statement): - principal_list = statement['Principal']['AWS'] - if isinstance(principal_list, str): - principal_list = [principal_list] - return principal_list - def check_dataset_bucket_key_policy(self) -> None: """ Checks if dataset kms key policy includes read permissions for requestors IAM Role @@ -393,21 +387,19 @@ def check_dataset_bucket_key_policy(self) -> None: counter = count() statements = {item.get('Sid', next(counter)): item for item in existing_policy.get('Statement', {})} - error = False - if DATAALL_BUCKET_KMS_DECRYPT_SID not in statements.keys(): - error = True - elif f'{target_requester_arn}' not in self.get_principal_list(statements[DATAALL_BUCKET_KMS_DECRYPT_SID]): - error = True - if error: - self.bucket_errors.append( - ShareErrorFormatter.missing_permission_error_msg( - self.target_requester_IAMRoleName, - 'KMS Key Policy', - DATAALL_BUCKET_KMS_DECRYPT_SID, - 'KMS Key', - f'{kms_key_id}', + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsBucketPolicy): + if target_sid not in statements.keys() or f'{target_requester_arn}' not in get_principal_list( + statements[target_sid] + ): + self.bucket_errors.append( + ShareErrorFormatter.missing_permission_error_msg( + self.target_requester_IAMRoleName, + 'KMS Key Policy', + target_sid, + 'KMS Key', + f'{kms_key_id}', + ) ) - ) return def grant_dataset_bucket_key_policy(self): @@ -447,21 +439,17 @@ def grant_dataset_bucket_key_policy(self): pivot_role_name, self.source_account_id ) ) - - if DATAALL_BUCKET_KMS_DECRYPT_SID in statements.keys(): - logger.info( - f'KMS key policy contains share statement {DATAALL_BUCKET_KMS_DECRYPT_SID}, updating the current one' - ) - statements[DATAALL_BUCKET_KMS_DECRYPT_SID] = self.add_target_arn_to_statement_principal( - statements[DATAALL_BUCKET_KMS_DECRYPT_SID], target_requester_arn - ) - else: - logger.info( - f'KMS key does not contain share statement {DATAALL_BUCKET_KMS_DECRYPT_SID}, generating a new one' - ) - statements[DATAALL_BUCKET_KMS_DECRYPT_SID] = self.generate_default_kms_decrypt_policy_statement( - target_requester_arn - ) + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsBucketPolicy): + if target_sid in statements.keys(): + logger.info(f'KMS key policy contains share statement {target_sid}, updating the current one') + statements[target_sid] = add_target_arn_to_statement_principal( + statements[target_sid], target_requester_arn + ) + else: + logger.info(f'KMS key does not contain share statement {target_sid}, generating a new one') + statements[target_sid] = self.generate_default_kms_policy_statement( + target_requester_arn, target_sid + ) existing_policy['Statement'] = list(statements.values()) else: @@ -469,10 +457,13 @@ def grant_dataset_bucket_key_policy(self): existing_policy = { 'Version': '2012-10-17', 'Statement': [ - self.generate_default_kms_decrypt_policy_statement(target_requester_arn), self.generate_enable_pivot_role_permissions_policy_statement( pivot_role_name, self.source_account_id ), + ] + + [ + self.generate_default_kms_policy_statement(target_requester_arn, target_sid) + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsBucketPolicy) ], } kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) @@ -490,16 +481,17 @@ def delete_target_role_bucket_policy(self): target_requester_arn = f'arn:aws:iam::{self.target_account_id}:role/{self.target_requester_IAMRoleName}' counter = count() statements = {item.get('Sid', next(counter)): item for item in bucket_policy.get('Statement', {})} - if DATAALL_READ_ONLY_SID in statements.keys(): - principal_list = self.get_principal_list(statements[DATAALL_READ_ONLY_SID]) - if f'{target_requester_arn}' in principal_list: - principal_list.remove(f'{target_requester_arn}') - if len(principal_list) == 0: - statements.pop(DATAALL_READ_ONLY_SID) - else: - statements[DATAALL_READ_ONLY_SID]['Principal']['AWS'] = principal_list - bucket_policy['Statement'] = list(statements.values()) - s3_client.create_bucket_policy(self.bucket_name, json.dumps(bucket_policy)) + for target_sid in perms_to_sids(self.share.permissions, SidType.BucketPolicy): + if target_sid in statements.keys(): + principal_list = get_principal_list(statements[target_sid]) + if f'{target_requester_arn}' in principal_list: + principal_list.remove(f'{target_requester_arn}') + if len(principal_list) == 0: + statements.pop(target_sid) + else: + statements[target_sid]['Principal']['AWS'] = principal_list + bucket_policy['Statement'] = list(statements.values()) + s3_client.create_bucket_policy(self.bucket_name, json.dumps(bucket_policy)) except Exception as e: logger.exception(f'Failed during bucket policy management {e}') raise e @@ -578,16 +570,17 @@ def delete_target_role_bucket_key_policy( target_requester_arn = f'arn:aws:iam::{self.target_account_id}:role/{self.target_requester_IAMRoleName}' counter = count() statements = {item.get('Sid', next(counter)): item for item in existing_policy.get('Statement', {})} - if DATAALL_BUCKET_KMS_DECRYPT_SID in statements.keys(): - principal_list = self.get_principal_list(statements[DATAALL_BUCKET_KMS_DECRYPT_SID]) - if f'{target_requester_arn}' in principal_list: - principal_list.remove(f'{target_requester_arn}') - if len(principal_list) == 0: - statements.pop(DATAALL_BUCKET_KMS_DECRYPT_SID) - else: - statements[DATAALL_BUCKET_KMS_DECRYPT_SID]['Principal']['AWS'] = principal_list - existing_policy['Statement'] = list(statements.values()) - kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) + for target_sid in perms_to_sids(self.share.permissions, SidType.KmsBucketPolicy): + if target_sid in statements.keys(): + principal_list = get_principal_list(statements[target_sid]) + if f'{target_requester_arn}' in principal_list: + principal_list.remove(f'{target_requester_arn}') + if len(principal_list) == 0: + statements.pop(target_sid) + else: + statements[target_sid]['Principal']['AWS'] = principal_list + existing_policy['Statement'] = list(statements.values()) + kms_client.put_key_policy(kms_key_id, json.dumps(existing_policy)) def handle_share_failure(self, error: Exception) -> bool: """ @@ -626,42 +619,17 @@ def handle_revoke_failure(self, error: Exception) -> bool: return True @staticmethod - def generate_default_bucket_read_policy_statement(s3_bucket_name, target_requester_arn): - return { - 'Sid': f'{DATAALL_READ_ONLY_SID}', - 'Effect': 'Allow', - 'Principal': {'AWS': [f'{target_requester_arn}']}, - 'Action': ['s3:List*', 's3:GetObject'], - 'Resource': [f'arn:aws:s3:::{s3_bucket_name}', f'arn:aws:s3:::{s3_bucket_name}/*'], - } + def generate_default_bucket_policy_statement(s3_bucket_name, target_requester_arn, target_sid): + return generate_policy_statement( + target_sid, [target_requester_arn], [f'arn:aws:s3:::{s3_bucket_name}', f'arn:aws:s3:::{s3_bucket_name}/*'] + ) @staticmethod - def generate_default_kms_decrypt_policy_statement(target_requester_arn): - return { - 'Sid': f'{DATAALL_BUCKET_KMS_DECRYPT_SID}', - 'Effect': 'Allow', - 'Principal': {'AWS': [f'{target_requester_arn}']}, - 'Action': 'kms:Decrypt', - 'Resource': '*', - } + def generate_default_kms_policy_statement(target_requester_arn, target_sid): + return generate_policy_statement(target_sid, [target_requester_arn], ['*']) @staticmethod def generate_enable_pivot_role_permissions_policy_statement(pivot_role_name, source_account_id): - return { - 'Sid': f'{DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID}', - 'Effect': 'Allow', - 'Principal': {'AWS': [f'arn:aws:iam::{source_account_id}:role/{pivot_role_name}']}, - 'Action': [ - 'kms:Decrypt', - 'kms:Encrypt', - 'kms:GenerateDataKey*', - 'kms:PutKeyPolicy', - 'kms:GetKeyPolicy', - 'kms:ReEncrypt*', - 'kms:TagResource', - 'kms:UntagResource', - 'kms:DescribeKey', - 'kms:List*', - ], - 'Resource': '*', - } + return generate_policy_statement( + DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, [f'arn:aws:iam::{source_account_id}:role/{pivot_role_name}'], ['*'] + ) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_utils.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_utils.py new file mode 100644 index 000000000..868b7b66c --- /dev/null +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_utils.py @@ -0,0 +1,102 @@ +from enum import Enum, auto +from typing import List + +from dataall.modules.s3_datasets_shares.aws.kms_client import ( + DATAALL_BUCKET_KMS_DECRYPT_SID, + DATAALL_BUCKET_KMS_ENCRYPT_SID, + DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID, + DATAALL_ACCESS_POINT_KMS_DECRYPT_SID, + DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID, +) +from dataall.modules.s3_datasets_shares.aws.s3_client import ( + DATAALL_READ_ONLY_SID, + DATAALL_WRITE_ONLY_SID, + DATAALL_MODIFY_ONLY_SID, +) +from dataall.modules.shares_base.services.shares_enums import ShareObjectDataPermission + +SID_TO_ACTIONS = { + DATAALL_READ_ONLY_SID: ['s3:List*', 's3:GetObject'], + DATAALL_WRITE_ONLY_SID: ['s3:PutObject'], + DATAALL_MODIFY_ONLY_SID: ['s3:DeleteObject'], + DATAALL_BUCKET_KMS_DECRYPT_SID: ['kms:Decrypt'], + DATAALL_BUCKET_KMS_ENCRYPT_SID: ['kms:Encrypt', 'kms:ReEncrypt*', 'kms:GenerateDataKey*'], + DATAALL_ACCESS_POINT_KMS_DECRYPT_SID: ['kms:Decrypt'], + DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID: ['kms:Encrypt', 'kms:ReEncrypt*', 'kms:GenerateDataKey*'], + DATAALL_KMS_PIVOT_ROLE_PERMISSIONS_SID: [ + 'kms:Decrypt', + 'kms:Encrypt', + 'kms:GenerateDataKey*', + 'kms:PutKeyPolicy', + 'kms:GetKeyPolicy', + 'kms:ReEncrypt*', + 'kms:TagResource', + 'kms:UntagResource', + 'kms:DescribeKey', + 'kms:List*', + ], +} + + +class SidType(Enum): + BucketPolicy = auto() + KmsBucketPolicy = auto() + KmsAccessPointPolicy = auto() + + +PERM_TO_SID = { + ShareObjectDataPermission.Read.value: { + SidType.BucketPolicy: DATAALL_READ_ONLY_SID, + SidType.KmsBucketPolicy: DATAALL_BUCKET_KMS_DECRYPT_SID, + SidType.KmsAccessPointPolicy: DATAALL_ACCESS_POINT_KMS_DECRYPT_SID, + }, + ShareObjectDataPermission.Write.value: { + SidType.BucketPolicy: DATAALL_WRITE_ONLY_SID, + SidType.KmsBucketPolicy: DATAALL_BUCKET_KMS_ENCRYPT_SID, + SidType.KmsAccessPointPolicy: DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID, + }, + ShareObjectDataPermission.Modify.value: { + SidType.BucketPolicy: DATAALL_MODIFY_ONLY_SID, + SidType.KmsBucketPolicy: DATAALL_BUCKET_KMS_ENCRYPT_SID, + SidType.KmsAccessPointPolicy: DATAALL_ACCESS_POINT_KMS_ENCRYPT_SID, + }, +} + + +def get_principal_list(statement): + principal_list = statement['Principal']['AWS'] + if isinstance(principal_list, str): + principal_list = [principal_list] + return principal_list + + +def add_target_arn_to_statement_principal(statement, target_requester_arn): + principal_list = get_principal_list(statement) + if f'{target_requester_arn}' not in principal_list: + principal_list.append(f'{target_requester_arn}') + statement['Principal']['AWS'] = principal_list + return statement + + +def generate_policy_statement(target_sid, target_requester_arns, target_resources): + return { + 'Sid': target_sid, + 'Effect': 'Allow', + 'Principal': {'AWS': target_requester_arns}, + 'Action': SID_TO_ACTIONS[target_sid], + 'Resource': target_resources, + } + + +def perms_to_sids(permissions: List[str], sid_type: SidType) -> List[str]: + """ + :return: unique SIDs + """ + return list(dict.fromkeys([PERM_TO_SID[perm][sid_type] for perm in permissions])) + + +def perms_to_actions(permissions: List[str], sid_type: SidType) -> List[str]: + actions = list() + for sid in perms_to_sids(permissions, sid_type): + actions.extend(SID_TO_ACTIONS[sid]) + return list(dict.fromkeys(actions)) diff --git a/backend/dataall/modules/shares_base/api/input_types.py b/backend/dataall/modules/shares_base/api/input_types.py index 86f22f8f2..25c5d08dc 100644 --- a/backend/dataall/modules/shares_base/api/input_types.py +++ b/backend/dataall/modules/shares_base/api/input_types.py @@ -1,6 +1,5 @@ from dataall.base.api.constants import SortDirection, gql -from dataall.modules.shares_base.services.shares_enums import ShareableType, ShareSortField - +from dataall.modules.shares_base.services.shares_enums import ShareableType, ShareSortField, ShareObjectDataPermission NewShareObjectInput = gql.InputType( name='NewShareObjectInput', @@ -12,10 +11,10 @@ gql.Argument(name='principalType', type=gql.NonNullableType(gql.String)), gql.Argument(name='requestPurpose', type=gql.String), gql.Argument(name='attachMissingPolicies', type=gql.Boolean), + gql.Argument(name='permissions', type=gql.ArrayType(ShareObjectDataPermission.toGraphQLEnum())), ], ) - AddSharedItemInput = gql.InputType( name='AddSharedItemInput', arguments=[ @@ -24,7 +23,6 @@ ], ) - ShareItemSelectorInput = gql.InputType( name='ShareItemSelectorInput', arguments=[ @@ -33,7 +31,6 @@ ], ) - ShareSortCriteria = gql.InputType( name='ShareSortCriteria', arguments=[ @@ -57,7 +54,6 @@ ], ) - ShareableObjectFilter = gql.InputType( name='ShareableObjectFilter', arguments=[ diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index 96e05d60b..9943cce2b 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -32,6 +32,8 @@ def validate_creation_request(data): raise RequiredParameter('principalType') if not data.get('groupUri'): raise RequiredParameter('groupUri') + if len(data.get('permissions', [])) == 0: + raise RequiredParameter('permissions') @staticmethod def validate_item_selector_input(data): @@ -88,6 +90,7 @@ def create_share_object( principal_type=input['principalType'], requestPurpose=input.get('requestPurpose'), attachMissingPolicies=input.get('attachMissingPolicies', False), + permissions=input.get('permissions'), ) diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 7ed7d4258..a06bbfe27 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -3,6 +3,7 @@ ShareableType, PrincipalType, ShareItemHealthStatus, + ShareObjectDataPermission, ) from dataall.modules.shares_base.api.resolvers import ( resolve_dataset, @@ -16,7 +17,6 @@ ) from dataall.core.environment.api.resolvers import resolve_environment - ShareItem = gql.ObjectType( name='ShareItem', fields=[ @@ -59,7 +59,6 @@ ], ) - NotSharedItemsSearchResult = gql.ObjectType( name='NotSharedItemsSearchResult', fields=[ @@ -75,7 +74,6 @@ ], ) - SharedItemSearchResult = gql.ObjectType( name='SharedItemSearchResult', fields=[ @@ -163,10 +161,10 @@ type=gql.Ref('ShareObjectPermission'), resolver=resolve_user_role, ), + gql.Field('permissions', gql.ArrayType(ShareObjectDataPermission.toGraphQLEnum())), ], ) - ShareSearchResult = gql.ObjectType( name='ShareSearchResult', fields=[ @@ -200,7 +198,6 @@ ], ) - EnvironmentPublishedItemSearchResults = gql.ObjectType( name='EnvironmentPublishedItemSearchResults', fields=[ @@ -225,7 +222,6 @@ ], ) - PrincipalSearchResult = gql.ObjectType( name='PrincipalSearchResult', fields=[ diff --git a/backend/dataall/modules/shares_base/db/share_object_models.py b/backend/dataall/modules/shares_base/db/share_object_models.py index 701fdc0fb..b1f07201a 100644 --- a/backend/dataall/modules/shares_base/db/share_object_models.py +++ b/backend/dataall/modules/shares_base/db/share_object_models.py @@ -39,6 +39,7 @@ class ShareObject(Base): rejectPurpose = Column(String, nullable=True) userRoleForShareObject = query_expression() existingSharedItems = query_expression() + permissions = Column(ARRAY(String), nullable=False) class ShareObjectItem(Base): diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index ef0c251da..a145cb21c 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -1,28 +1,24 @@ -import os +import logging +from typing import List -from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService -from dataall.core.tasks.service_handlers import Worker +from dataall.base.aws.iam import IAM from dataall.base.context import get_context +from dataall.base.db.exceptions import UnauthorizedOperation, InvalidInput from dataall.core.activity.db.activity_models import Activity -from dataall.core.environment.db.environment_models import EnvironmentGroup, ConsumptionRole from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.environment.services.managed_iam_policies import PolicyManager +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.tasks.db.task_models import Task -from dataall.base.db.exceptions import UnauthorizedOperation -from dataall.modules.shares_base.services.shares_enums import ( - ShareObjectActions, - ShareableType, - ShareItemStatus, - ShareObjectStatus, - PrincipalType, -) +from dataall.core.tasks.service_handlers import Worker +from dataall.modules.datasets_base.db.dataset_models import DatasetBase +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository -from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.db.share_object_state_machines import ( ShareObjectSM, ShareItemSM, ) +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.services.share_exceptions import ShareItemsFound, PrincipalRoleNotFound from dataall.modules.shares_base.services.share_notification_service import ShareNotificationService from dataall.modules.shares_base.services.share_permissions import ( @@ -36,11 +32,13 @@ GET_SHARE_OBJECT, ) from dataall.modules.shares_base.services.share_processor_manager import ShareProcessorManager -from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository -from dataall.modules.datasets_base.db.dataset_models import DatasetBase -from dataall.base.aws.iam import IAM - -import logging +from dataall.modules.shares_base.services.shares_enums import ( + ShareObjectActions, + ShareItemStatus, + ShareObjectStatus, + PrincipalType, + ShareObjectDataPermission, +) log = logging.getLogger(__name__) @@ -74,6 +72,7 @@ def create_share_object( principal_type, requestPurpose, attachMissingPolicies, + permissions: List[str], ): context = get_context() with context.db_engine.scoped_session() as session: @@ -100,19 +99,20 @@ def create_share_object( if principal_type in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: if principal_type == PrincipalType.ConsumptionRole.value: - consumption_role: ConsumptionRole = EnvironmentService.get_environment_consumption_role( + consumption_role = EnvironmentService.get_environment_consumption_role( session, principal_id, environment.environmentUri ) + principal_role_arn = consumption_role.IAMRoleArn principal_role_name = consumption_role.IAMRoleName managed = consumption_role.dataallManaged - else: - env_group: EnvironmentGroup = EnvironmentService.get_environment_group( - session, group_uri, environment.environmentUri - ) + env_group = EnvironmentService.get_environment_group(session, group_uri, environment.environmentUri) + principal_role_arn = env_group.environmentIAMRoleArn principal_role_name = env_group.environmentIAMRoleName managed = True + cls._validate_role_in_same_account(dataset.AwsAccountId, principal_role_arn, permissions) + share_policy_manager = PolicyManager( role_name=principal_role_name, environmentUri=environment.environmentUri, @@ -159,6 +159,7 @@ def create_share_object( principalRoleName=principal_role_name, status=ShareObjectStatus.Draft.value, requestPurpose=requestPurpose, + permissions=permissions, ) ShareObjectRepository.save_and_commit(session, share) @@ -454,3 +455,19 @@ def _validate_group_membership(session, share_object_group, environment_uri): action=CREATE_SHARE_OBJECT, message=f'Team: {share_object_group} is not a member of the environment {environment_uri}', ) + + @staticmethod + def _validate_role_in_same_account(aws_account_id, principal_role_arn, permissions): + """ + raise if aws_account_id and role_arn are not in the same account permissions are WRITE/MODIFY + + :param aws_account_id: + :param principal_role_arn: + :param permissions: + """ + if f':{aws_account_id}:' not in principal_role_arn and permissions != [ShareObjectDataPermission.Read.value]: + raise InvalidInput( + 'Principal Role', + principal_role_arn, + f'be in the same {aws_account_id=} when WRITE/MODIFY permissions are specified', + ) diff --git a/backend/dataall/modules/shares_base/services/shares_enums.py b/backend/dataall/modules/shares_base/services/shares_enums.py index 0c6739767..111e627b1 100644 --- a/backend/dataall/modules/shares_base/services/shares_enums.py +++ b/backend/dataall/modules/shares_base/services/shares_enums.py @@ -16,6 +16,12 @@ class ShareObjectPermission(GraphQLEnumMapper): NoPermission = '000' +class ShareObjectDataPermission(GraphQLEnumMapper): + Read = 'Read' + Write = 'Write' + Modify = 'Modify' + + class ShareObjectStatus(GraphQLEnumMapper): Deleted = 'Deleted' Approved = 'Approved' diff --git a/backend/migrations/versions/c215903b780c_add_share_object_permissions.py b/backend/migrations/versions/c215903b780c_add_share_object_permissions.py new file mode 100644 index 000000000..21bdbb8c8 --- /dev/null +++ b/backend/migrations/versions/c215903b780c_add_share_object_permissions.py @@ -0,0 +1,27 @@ +"""add_share_object_permissions + +Revision ID: c215903b780c +Revises: 9efe5f7c69a1 +Create Date: 2024-08-08 16:19:25.731721 + +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'c215903b780c' +down_revision = '9efe5f7c69a1' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + 'share_object', sa.Column('permissions', postgresql.ARRAY(sa.String()), nullable=False, server_default='{Read}') + ) + + +def downgrade(): + op.drop_column('share_object', 'permissions') diff --git a/frontend/src/modules/Catalog/components/RequestAccessModal.js b/frontend/src/modules/Catalog/components/RequestAccessModal.js index 658d018af..ec23d1cf4 100644 --- a/frontend/src/modules/Catalog/components/RequestAccessModal.js +++ b/frontend/src/modules/Catalog/components/RequestAccessModal.js @@ -1,7 +1,7 @@ import SendIcon from '@mui/icons-material/Send'; import { LoadingButton } from '@mui/lab'; -import Autocomplete from '@mui/lab/Autocomplete'; import { + Autocomplete, Box, Button, CardContent, @@ -27,6 +27,7 @@ import { listValidEnvironments, requestDashboardShare, getConsumptionRolePolicies, + fetchEnums, useClient } from 'services'; import { ShareEditForm } from '../../Shared/Shares/ShareEditForm'; @@ -51,6 +52,20 @@ export const RequestAccessModal = (props) => { const [share, setShare] = useState(false); const [loading, setLoading] = useState(false); const [alreadyExisted, setAlreadyExisted] = useState(false); + const [dataPermsEnum, setDataPermsEnum] = useState([]); + + const fetchDataPermsEnum = useCallback(async () => { + const backendEnumName = 'ShareObjectDataPermission'; + const backendEnumData = (await fetchEnums(client, [backendEnumName]))[ + backendEnumName + ]; + if (backendEnumData) setDataPermsEnum(backendEnumData.map((e) => e.value)); + else + dispatch({ + type: SET_ERROR, + error: `Could not fetch enum: ${backendEnumName}` + }); + }, [client, dispatch]); const fetchEnvironments = useCallback(async () => { setStep(0); @@ -78,7 +93,7 @@ export const RequestAccessModal = (props) => { setLoadingEnvs(false); stopLoader(); } - }, [client, dispatch]); + }, [client, dispatch, stopLoader]); const fetchShareObject = async (shareUri) => { const response = await client.query(getShareObject({ shareUri: shareUri })); @@ -177,8 +192,16 @@ export const RequestAccessModal = (props) => { fetchEnvironments().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); + fetchDataPermsEnum(); } - }, [client, open, fetchEnvironments, dispatch]); + }, [ + client, + open, + stopLoader, + fetchEnvironments, + fetchDataPermsEnum, + dispatch + ]); const formDatasetRequestObject = (inputObject) => { return { @@ -212,7 +235,8 @@ export const RequestAccessModal = (props) => { principalId: principal, principalType: type, requestPurpose: values.comment, - attachMissingPolicies: values.attachMissingPolicies + attachMissingPolicies: values.attachMissingPolicies, + permissions: values.permissions }; if (hit.resourceKind === 'dataset') { @@ -303,7 +327,8 @@ export const RequestAccessModal = (props) => { initialValues={{ environmentUri: '', comment: '', - attachMissingPolicies: false + attachMissingPolicies: false, + permissions: [dataPermsEnum[0]] }} validationSchema={Yup.object().shape({ environmentUri: Yup.string().required( @@ -482,6 +507,27 @@ export const RequestAccessModal = (props) => { )} + + option} + defaultValue={values.permissions} + onChange={(e, value) => + setFieldValue('permissions', value) + } + renderInput={(params) => ( + + )} + /> + {loadingRoles ? ( diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index 1942489e5..c2856d9d7 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -16,6 +16,7 @@ export const getShareObject = ({ shareUri, filter }) => ({ rejectPurpose userRoleForShareObject canViewLogs + permissions principal { principalName principalType diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 3ee8d8c66..d019d246a 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -15,6 +15,7 @@ import { Card, CardContent, CardHeader, + Chip, Container, Divider, Grid, @@ -1115,6 +1116,26 @@ const ShareView = () => { {share.principal.environmentName || '-'} + + + Permissions + + + {share.permissions.map((perm) => ( + + ))} + + ShareObject: with db.scoped_session() as session: share = ShareObject( @@ -408,6 +413,7 @@ def factory( principalType=PrincipalType.Group.value, principalRoleName=env_group.environmentIAMRoleName, status=status, + permissions=[permissions], ) session.add(share) session.commit() diff --git a/tests/modules/s3_datasets_shares/tasks/conftest.py b/tests/modules/s3_datasets_shares/tasks/conftest.py index 8971acfca..253663b1d 100644 --- a/tests/modules/s3_datasets_shares/tasks/conftest.py +++ b/tests/modules/s3_datasets_shares/tasks/conftest.py @@ -7,6 +7,7 @@ ShareItemStatus, ShareObjectStatus, PrincipalType, + ShareObjectDataPermission, ) from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject, ShareObjectItemDataFilter from dataall.modules.s3_datasets.db.dataset_models import ( @@ -138,6 +139,7 @@ def factory(dataset: S3Dataset, environment: Environment, env_group: Environment principalRoleName=env_group.environmentIAMRoleName, status=ShareObjectStatus.Approved.value, groupUri=env_group.groupUri, + permissions=[ShareObjectDataPermission.Read.value], ) session.add(share) session.commit() diff --git a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py index 9fd7c8e14..d93e2f6f2 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py @@ -1,3 +1,4 @@ +import itertools from unittest.mock import MagicMock import pytest @@ -5,6 +6,8 @@ from typing import Callable +from assertpy import assert_that + from dataall.core.groups.db.group_models import Group from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup, ConsumptionRole from dataall.core.organizations.db.organization_models import Organization @@ -643,17 +646,16 @@ def test_manage_access_point_and_policy_1(mocker, target_environment: Environmen # Asser that access point is in resource assert new_ap_policy['Statement'][0]['Resource'] == access_point_arn - # Assert that listbucket and getobject permissions were added for target environment admin - assert 's3:GetObject' in [ - statement['Action'] - for statement in new_ap_policy['Statement'] - if statement['Sid'].startswith(target_environment.SamlGroupName) - ] - assert 's3:ListBucket' in [ - statement['Action'] - for statement in new_ap_policy['Statement'] - if statement['Sid'].startswith(target_environment.SamlGroupName) - ] + actions = list( + itertools.chain.from_iterable( + [ + statement['Action'] + for statement in new_ap_policy['Statement'] + if statement['Sid'].startswith(target_environment.SamlGroupName) + ] + ) + ) + assert_that(actions).contains('s3:GetObject', 's3:ListBucket', 's3:List*') # Existing Access point and ap policy diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index c5eacf7f3..4d4516f74 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -4,10 +4,11 @@ import boto3 import pytest +from assertpy import assert_that -from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup +from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup, ConsumptionRole from dataall.core.organizations.db.organization_models import Organization -from dataall.modules.shares_base.services.shares_enums import ShareableType, PrincipalType +from dataall.modules.shares_base.services.shares_enums import ShareableType, PrincipalType, ShareObjectDataPermission from dataall.modules.shares_base.services.shares_enums import ( ShareObjectActions, ShareItemActions, @@ -407,6 +408,7 @@ def create_share_object( attachMissingPolicies=True, principalId=None, principalType=PrincipalType.Group.value, + permissions=[ShareObjectDataPermission.Read.value], ): q = """ mutation CreateShareObject( @@ -454,6 +456,7 @@ def create_share_object( 'principalType': principalType, 'requestPurpose': 'testShare', 'attachMissingPolicies': attachMissingPolicies, + 'permissions': permissions, }, ) @@ -972,6 +975,34 @@ def test_create_share_object_as_approver_and_requester(mocker, client, user, gro assert create_share_object_response.data.createShareObject.requestPurpose == 'testShare' +def test_create_share_object_invalid_xaccount(mocker, client, user, group2, env2group, env2, dataset1): + # Given + # Existing dataset, target environment and group + # SharePolicy exists and is attached + # When a user that belongs to environment and group creates request + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', + return_value=True, + ) + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_attached', + return_value=True, + ) + create_share_object_response = create_share_object( + mocker=mocker, + client=client, + username=user.username, + group=group2, + groupUri=env2group.groupUri, + environmentUri=env2.environmentUri, + datasetUri=dataset1.datasetUri, + permissions=[ShareObjectDataPermission.Write.value], + ) + assert_that(create_share_object_response.errors[0].message).contains( + 'InvalidInput', env2.EnvironmentDefaultIAMRoleArn, dataset1.AwsAccountId + ) + + def test_create_share_object_with_item_authorized( mocker, client, user2, group2, env2group, env2, dataset1, table1, mock_glue_client ): @@ -1106,8 +1137,9 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_dis 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_attached', return_value=False, ) - consumption_role = type('consumption_role', (object,), {})() + consumption_role = MagicMock(spec_set=ConsumptionRole) consumption_role.IAMRoleName = 'randomName' + consumption_role.IAMRoleArn = 'randomArn' consumption_role.dataallManaged = False mocker.patch( 'dataall.core.environment.services.environment_service.EnvironmentService.get_environment_consumption_role', From 0e1dc900185f097b78339e18c276fd5d678f6fd7 Mon Sep 17 00:00:00 2001 From: mourya-33 <134511711+mourya-33@users.noreply.github.com> Date: Tue, 3 Sep 2024 10:16:48 -0400 Subject: [PATCH 047/188] Allow origins conf changes (#1486) ### Feature or Bugfix - Feature ### Detail This PR is to remove wildcards from origins as reported in https://github.com/data-dot-all/dataall/issues/1000 by using a configuration parameter from cdk.json. This will allow the users to set a custom origin (default is *) ### Relates - https://github.com/data-dot-all/dataall/issues/1000 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes N/A fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? N/A - What precautions are you taking before deserializing the data you consume? N/A - Is injection prevented by parametrizing queries? N/A - Have you ensured no `eval` or similar functions are used? N/A - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? N/A - Are you logging failed auth attempts? N/A - Are you using or adding any cryptographic features? N/A - Do you use a standard proven implementations? N/A - Are the used keys controlled by the customer? Where are they stored? N/A - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? N/A By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Mourya Darivemula Co-authored-by: Mourya Darivemula --- backend/api_handler.py | 5 +++-- backend/dataall/base/utils/api_handler_utils.py | 3 ++- backend/search_handler.py | 5 +++-- deploy/stacks/backend_stack.py | 2 ++ deploy/stacks/backend_stage.py | 2 ++ deploy/stacks/lambda_api.py | 10 ++++++++-- deploy/stacks/pipeline.py | 1 + frontend/src/modules/Catalog/views/Catalog.js | 3 --- frontend/src/services/hooks/useClient.js | 3 --- template_cdk.json | 1 + 10 files changed, 22 insertions(+), 13 deletions(-) diff --git a/backend/api_handler.py b/backend/api_handler.py index 74559b1ac..47b8414ee 100644 --- a/backend/api_handler.py +++ b/backend/api_handler.py @@ -36,6 +36,7 @@ TYPE_DEFS = gql(SCHEMA.gql(with_directives=False)) ENVNAME = os.getenv('envname', 'local') ENGINE = get_engine(envname=ENVNAME) +ALLOWED_ORIGINS = os.getenv('ALLOWED_ORIGINS', '*') Worker.queue = SqsQueue.send @@ -92,7 +93,7 @@ def handler(event, context): 'statusCode': 200, 'headers': { 'content-type': 'application/json', - 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Origin': ALLOWED_ORIGINS, 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': '*', }, @@ -146,7 +147,7 @@ def handler(event, context): 'statusCode': 200 if success else 400, 'headers': { 'content-type': 'application/json', - 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Origin': ALLOWED_ORIGINS, 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': '*', }, diff --git a/backend/dataall/base/utils/api_handler_utils.py b/backend/dataall/base/utils/api_handler_utils.py index fe445db3d..44cf414b6 100644 --- a/backend/dataall/base/utils/api_handler_utils.py +++ b/backend/dataall/base/utils/api_handler_utils.py @@ -23,6 +23,7 @@ item.casefold() for item in ['getGroupsForUser', 'getMaintenanceWindowStatus'] ] ENGINE = get_engine(envname=ENVNAME) +ALLOWED_ORIGINS = os.getenv('ALLOWED_ORIGINS', '*') def get_cognito_groups(claims): @@ -64,7 +65,7 @@ def send_unauthorized_response(operation='', message='', extension=None): 'statusCode': 401, 'headers': { 'content-type': 'application/json', - 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Origin': ALLOWED_ORIGINS, 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': '*', }, diff --git a/backend/search_handler.py b/backend/search_handler.py index 7985be272..14c9deaa4 100644 --- a/backend/search_handler.py +++ b/backend/search_handler.py @@ -11,6 +11,7 @@ ENVNAME = os.getenv('envname', 'local') es = connect(envname=ENVNAME) ENGINE = get_engine(envname=ENVNAME) +ALLOWED_ORIGINS = os.getenv('ALLOWED_ORIGINS', '*') def handler(event, context): @@ -21,7 +22,7 @@ def handler(event, context): 'statusCode': 200, 'headers': { 'content-type': 'application/json', - 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Origin': ALLOWED_ORIGINS, 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': '*', }, @@ -65,7 +66,7 @@ def handler(event, context): 'statusCode': 200 if success else 400, 'headers': { 'content-type': 'application/json', - 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Origin': ALLOWED_ORIGINS, 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': '*', }, diff --git a/deploy/stacks/backend_stack.py b/deploy/stacks/backend_stack.py index dbfc94c9b..0dd9f4350 100644 --- a/deploy/stacks/backend_stack.py +++ b/deploy/stacks/backend_stack.py @@ -58,6 +58,7 @@ def __init__( custom_auth=None, custom_waf_rules=None, with_approval_tests=False, + allowed_origins='*', **kwargs, ): super().__init__(scope, id, **kwargs) @@ -198,6 +199,7 @@ def __init__( custom_domain=custom_domain, custom_auth=custom_auth, custom_waf_rules=custom_waf_rules, + allowed_origins=allowed_origins, **kwargs, ) diff --git a/deploy/stacks/backend_stage.py b/deploy/stacks/backend_stage.py index 361fd4d2b..dee8009bc 100644 --- a/deploy/stacks/backend_stage.py +++ b/deploy/stacks/backend_stage.py @@ -36,6 +36,7 @@ def __init__( custom_auth=None, custom_waf_rules=None, with_approval_tests=False, + allowed_origins='*', **kwargs, ): super().__init__(scope, id, **kwargs) @@ -69,6 +70,7 @@ def __init__( custom_auth=custom_auth, custom_waf_rules=custom_waf_rules, with_approval_tests=with_approval_tests, + allowed_origins=allowed_origins, **kwargs, ) diff --git a/deploy/stacks/lambda_api.py b/deploy/stacks/lambda_api.py index fb8789154..738e28126 100644 --- a/deploy/stacks/lambda_api.py +++ b/deploy/stacks/lambda_api.py @@ -57,6 +57,7 @@ def __init__( ses_configuration_set=None, custom_domain=None, custom_auth=None, + allowed_origins='*', **kwargs, ): super().__init__(scope, id, **kwargs) @@ -96,7 +97,7 @@ def __init__( self.esproxy_dlq = self.set_dlq(f'{resource_prefix}-{envname}-esproxy-dlq') esproxy_sg = self.create_lambda_sgs(envname, 'esproxy', resource_prefix, vpc) - esproxy_env = {'envname': envname, 'LOG_LEVEL': 'INFO'} + esproxy_env = {'envname': envname, 'LOG_LEVEL': 'INFO', 'ALLOWED_ORIGINS': allowed_origins} if custom_auth: esproxy_env['custom_auth'] = custom_auth.get('provider', None) self.elasticsearch_proxy_handler = _lambda.DockerImageFunction( @@ -125,7 +126,12 @@ def __init__( self.api_handler_dlq = self.set_dlq(f'{resource_prefix}-{envname}-graphql-dlq') api_handler_sg = self.create_lambda_sgs(envname, 'apihandler', resource_prefix, vpc) - api_handler_env = {'envname': envname, 'LOG_LEVEL': 'INFO', 'REAUTH_TTL': str(reauth_ttl)} + api_handler_env = { + 'envname': envname, + 'LOG_LEVEL': 'INFO', + 'REAUTH_TTL': str(reauth_ttl), + 'ALLOWED_ORIGINS': allowed_origins, + } # Check if custom domain exists and if it exists email notifications could be enabled. Create a env variable which stores the domain url. This is used for sending data.all share weblinks in the email notifications. if custom_domain and custom_domain.get('hosted_zone_name', None): api_handler_env['frontend_domain_url'] = f'https://{custom_domain.get("hosted_zone_name", None)}' diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 20cd59310..804792923 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -651,6 +651,7 @@ def set_backend_stage(self, target_env, repository_name): custom_auth=target_env.get('custom_auth', None), custom_waf_rules=target_env.get('custom_waf_rules', None), with_approval_tests=target_env.get('with_approval_tests', False), + allowed_origins=target_env.get('allowed_origins', '*'), ) ) return backend_stage diff --git a/frontend/src/modules/Catalog/views/Catalog.js b/frontend/src/modules/Catalog/views/Catalog.js index 800ce93b2..c351c5da7 100644 --- a/frontend/src/modules/Catalog/views/Catalog.js +++ b/frontend/src/modules/Catalog/views/Catalog.js @@ -234,9 +234,6 @@ const Catalog = () => { url: transformedRequest.url, credentials: { token }, headers: { - AccessControlAllowOrigin: '*', - AccessControlAllowHeaders: '*', - 'access-control-allow-origin': '*', Authorization: token, AccessKeyId: 'None', SecretKey: 'None' diff --git a/frontend/src/services/hooks/useClient.js b/frontend/src/services/hooks/useClient.js index 80967bb86..bb2762ad4 100644 --- a/frontend/src/services/hooks/useClient.js +++ b/frontend/src/services/hooks/useClient.js @@ -54,9 +54,6 @@ export const useClient = () => { const authLink = new ApolloLink((operation, forward) => { operation.setContext({ headers: { - AccessControlAllowOrigin: '*', - AccessControlAllowHeaders: '*', - 'access-control-allow-origin': '*', Authorization: t ? `${t}` : '', AccessKeyId: 'none', SecretKey: 'none' diff --git a/template_cdk.json b/template_cdk.json index 00ebea386..9ddf62e3d 100644 --- a/template_cdk.json +++ b/template_cdk.json @@ -39,6 +39,7 @@ "shared_dashboards_sessions": "string_TYPE_SESSION_SHARED_DASHBOARDS|(reader, anonymous) DEFAULT=anonymous", "enable_opensearch_serverless": "boolean_USE_OPENSEARCH_SERVERLESS|DEFAULT=false", "enable_pivot_role_auto_create": "boolean_ENABLE_PIVOT_ROLE_AUTO_CREATE_IN_ENVIRONMENT|DEFAULT=false", + "allowed_origins": "string_TYPE_DOMAIN_ORIGIN|DEFAULT=*", "enable_update_dataall_stacks_in_cicd_pipeline": "boolean_ENABLE_UPDATE_DATAALL_STACKS_IN_CICD_PIPELINE|DEFAULT=false", "reauth_config": { "reauth_apis": "list_of_strings_OPERATION_NAMES_TO_REQUIRE_REAUTH_ON|DEFAULT=None", From eb89983c291b04b9456c0e6eda510a1fe699a999 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Tue, 3 Sep 2024 17:34:25 +0300 Subject: [PATCH 048/188] fix importing sse encrypted buckets (#1514) ### Feature or Bugfix - Bugfix ### Detail Fix importing an SSE encrypted bucket which returns `argument of type 'NoneType' is not iterable` ### Relates fixing issue introduced in #1499 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../s3_datasets/aws/s3_dataset_client.py | 9 ++- .../s3_datasets/test_s3_dataset_client.py | 64 +++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 tests/modules/s3_datasets/test_s3_dataset_client.py diff --git a/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py b/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py index 56bab7f7c..94db4d056 100644 --- a/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py +++ b/backend/dataall/modules/s3_datasets/aws/s3_dataset_client.py @@ -58,9 +58,12 @@ def get_bucket_encryption(self) -> (str, str, str): s3_encryption = encryption['SSEAlgorithm'] # Format (using key id): arn:aws:kms:::key/ # (using alias): arn:aws:kms:::alias/ - kms_key = encryption.get('KMSMasterKeyID') - kms_id = kms_key.split('/')[-1] if kms_key else None - kms_id_type = 'alias' if 'alias' in kms_key else 'key' + kms_key = encryption.get('KMSMasterKeyID', '') + kms_id = None + kms_id_type = None + if kms_key: + kms_id = kms_key.split('/')[-1] + kms_id_type = 'alias' if 'alias' in kms_key else 'key' return s3_encryption, kms_id_type, kms_id diff --git a/tests/modules/s3_datasets/test_s3_dataset_client.py b/tests/modules/s3_datasets/test_s3_dataset_client.py new file mode 100644 index 000000000..3023ab8a0 --- /dev/null +++ b/tests/modules/s3_datasets/test_s3_dataset_client.py @@ -0,0 +1,64 @@ +from unittest.mock import MagicMock, patch + +import pytest +from assertpy import assert_that + +from dataall.modules.s3_datasets.aws.s3_dataset_client import S3DatasetClient +from dataall.modules.s3_datasets.db.dataset_models import S3Dataset + + +@patch('dataall.modules.s3_datasets.aws.s3_dataset_client.SessionHelper', autospec=True) +@pytest.mark.parametrize( + 'bucket_encryption,expected', + [ + ( + { + 'ServerSideEncryptionConfiguration': { + 'Rules': [ + { + 'ApplyServerSideEncryptionByDefault': { + 'SSEAlgorithm': 'aws:kms', + 'KMSMasterKeyID': 'arn:aws:kms:us-east-1:999999999999:alias/keyalias', + }, + 'BucketKeyEnabled': True, + } + ] + } + }, + ('aws:kms', 'alias', 'keyalias'), + ), + ( + { + 'ServerSideEncryptionConfiguration': { + 'Rules': [ + { + 'ApplyServerSideEncryptionByDefault': { + 'SSEAlgorithm': 'aws:kms', + 'KMSMasterKeyID': 'arn:aws:kms:us-east-1:999999999999:key/123', + }, + 'BucketKeyEnabled': True, + } + ] + } + }, + ('aws:kms', 'key', '123'), + ), + ( + { + 'ServerSideEncryptionConfiguration': { + 'Rules': [ + {'ApplyServerSideEncryptionByDefault': {'SSEAlgorithm': 'AES256'}, 'BucketKeyEnabled': True} + ] + } + }, + ('AES256', None, None), + ), + ], +) +def test_get_bucket_encryption(session_helper, bucket_encryption, expected): + session_helper.remote_session.return_value.client.return_value.get_bucket_encryption.return_value = ( + bucket_encryption + ) + dataset = MagicMock(spec=S3Dataset) + client = S3DatasetClient(dataset) + assert_that(client.get_bucket_encryption()).is_equal_to(expected) From 76a7a3e6a2b6ea8d1f6a9b1f316a982e980c64ee Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Tue, 3 Sep 2024 10:28:19 -0500 Subject: [PATCH 049/188] feat(GH-1083) share expiration (#1489) ### Feature or Bugfix - Feature - ### Detail - Details mentioned in the GH issue - https://github.com/data-dot-all/dataall/issues/1083 ### Relates - https://github.com/data-dot-all/dataall/issues/1083 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? No - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? No - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? No - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? Yes - Have you used the least-privilege principle? How? Yes By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: trajopadhye --- .checkov.baseline | 6 + backend/dataall/base/utils/expiration_util.py | 30 + .../datasets_base/db/dataset_models.py | 10 +- .../s3_datasets/api/dataset/input_types.py | 12 + .../s3_datasets/api/dataset/resolvers.py | 32 + .../modules/s3_datasets/api/dataset/types.py | 4 + .../s3_datasets/db/dataset_repositories.py | 6 + .../s3_datasets/services/dataset_service.py | 13 +- .../modules/shares_base/api/input_types.py | 2 + .../modules/shares_base/api/mutations.py | 52 + .../modules/shares_base/api/resolvers.py | 49 +- .../dataall/modules/shares_base/api/types.py | 9 + .../shares_base/db/share_object_models.py | 9 +- .../db/share_object_repositories.py | 30 + .../db/share_object_state_machines.py | 51 +- .../services/share_notification_service.py | 170 ++- .../services/share_object_service.py | 298 ++++- .../shares_base/services/shares_enums.py | 7 + .../tasks/share_expiration_task.py | 82 ++ ...t_and_share_expiration_schema_additions.py | 65 + config.json | 4 + deploy/stacks/container.py | 65 + frontend/src/design/components/ShareStatus.js | 10 +- .../Catalog/components/RequestAccessModal.js | 123 +- .../components/DatasetGovernance.js | 42 + .../services/getDatasetDetails.js | 20 + .../S3_Datasets/views/DatasetCreateForm.js | 150 ++- .../S3_Datasets/views/DatasetEditForm.js | 268 +++- .../S3_Datasets/views/DatasetImportForm.js | 150 ++- .../modules/Shared/Shares/ShareEditForm.js | 319 ++++- .../Shares/components/ShareRejectModal.js | 5 +- .../Shares/components/ShareUpdateExtension.js | 171 +++ .../Shares/services/approveShareExtension.js | 15 + .../Shares/services/cancelShareExtension.js | 12 + .../modules/Shares/services/getShareObject.js | 8 + frontend/src/modules/Shares/services/index.js | 6 +- .../Shares/services/submitExtension.js | 33 + ...submitApproval.js => submitShareObject.js} | 2 +- .../Shares/services/updateShareExpiration.js | 26 + .../services/updateShareExtensionReason.js | 19 + .../src/modules/Shares/views/ShareView.js | 247 +++- .../services/graphql/Datasets/getDataset.js | 4 + .../redshift_datasets_shares/conftest.py | 2 + tests/modules/s3_datasets/conftest.py | 4 + tests/modules/s3_datasets/test_dataset.py | 211 ++++ tests/modules/s3_datasets_shares/conftest.py | 21 +- .../modules/s3_datasets_shares/test_share.py | 1079 ++++++++++++++++- 47 files changed, 3823 insertions(+), 130 deletions(-) create mode 100644 backend/dataall/base/utils/expiration_util.py create mode 100644 backend/dataall/modules/shares_base/tasks/share_expiration_task.py create mode 100644 backend/migrations/versions/d274e756f0ae_dataset_and_share_expiration_schema_additions.py create mode 100644 frontend/src/modules/DatasetsBase/services/getDatasetDetails.js create mode 100644 frontend/src/modules/Shares/components/ShareUpdateExtension.js create mode 100644 frontend/src/modules/Shares/services/approveShareExtension.js create mode 100644 frontend/src/modules/Shares/services/cancelShareExtension.js create mode 100644 frontend/src/modules/Shares/services/submitExtension.js rename frontend/src/modules/Shares/services/{submitApproval.js => submitShareObject.js} (81%) create mode 100644 frontend/src/modules/Shares/services/updateShareExpiration.js create mode 100644 frontend/src/modules/Shares/services/updateShareExtensionReason.js diff --git a/.checkov.baseline b/.checkov.baseline index 9946ec12f..80db5f1d8 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -168,6 +168,12 @@ "check_ids": [ "CKV_AWS_158" ] + }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupshareexpirationtaskdev40CB15AF", + "check_ids": [ + "CKV_AWS_158" + ] } ] }, diff --git a/backend/dataall/base/utils/expiration_util.py b/backend/dataall/base/utils/expiration_util.py new file mode 100644 index 000000000..0f0d6ec29 --- /dev/null +++ b/backend/dataall/base/utils/expiration_util.py @@ -0,0 +1,30 @@ +import calendar +from datetime import date, datetime +from dateutil.relativedelta import relativedelta +from dataall.base.api import GraphQLEnumMapper + + +class ExpirationUtils: + @staticmethod + def calculate_expiry_date(expirationPeriod, expirySetting): + currentDate = date.today() + if expirySetting == Expiration.Quartely.value: + quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3 - 1) + day = calendar.monthrange(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month)[1] + shareExpiryDate = datetime(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month, day) + elif expirySetting == Expiration.Monthly.value: + monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod - 1) + monthEndDay = calendar.monthrange(monthlyCalculatedDate.year, monthlyCalculatedDate.month)[1] + shareExpiryDate = datetime(monthlyCalculatedDate.year, monthlyCalculatedDate.month, monthEndDay) + else: + shareExpiryDate = None + + return shareExpiryDate + + +# Enums used for dataset expiration. +# Could be repurposed for environment, worksheet, etc if need be +# This is defined here instead of the dataset_enums file because this is used in expiration_util.py +class Expiration(GraphQLEnumMapper): + Monthly = 'Monthly' + Quartely = 'Quarterly' diff --git a/backend/dataall/modules/datasets_base/db/dataset_models.py b/backend/dataall/modules/datasets_base/db/dataset_models.py index 0aeaf68a4..6bf0840b5 100644 --- a/backend/dataall/modules/datasets_base/db/dataset_models.py +++ b/backend/dataall/modules/datasets_base/db/dataset_models.py @@ -1,4 +1,4 @@ -from sqlalchemy import Boolean, Column, String, Enum, ForeignKey +from sqlalchemy import Boolean, Column, String, Enum, ForeignKey, Integer from sqlalchemy.dialects.postgresql import JSON, ARRAY from sqlalchemy.orm import query_expression from dataall.base.db import Base, Resource, utils @@ -21,17 +21,17 @@ class DatasetBase(Resource, Base): confidentiality = Column(String, nullable=False, default=ConfidentialityClassification.Unclassified.value) tags = Column(ARRAY(String)) inProject = query_expression() - businessOwnerEmail = Column(String, nullable=True) businessOwnerDelegationEmails = Column(ARRAY(String), nullable=True) stewards = Column(String, nullable=True) - SamlAdminGroupName = Column(String, nullable=True) autoApprovalEnabled = Column(Boolean, default=False) - datasetType = Column(Enum(DatasetTypes), nullable=False, default=DatasetTypes.S3) imported = Column(Boolean, default=False) - + enableExpiration = Column(Boolean, default=False, nullable=False) + expirySetting = Column(String, nullable=True) + expiryMinDuration = Column(Integer, nullable=True) + expiryMaxDuration = Column(Integer, nullable=True) __mapper_args__ = {'polymorphic_identity': 'dataset', 'polymorphic_on': datasetType} @classmethod diff --git a/backend/dataall/modules/s3_datasets/api/dataset/input_types.py b/backend/dataall/modules/s3_datasets/api/dataset/input_types.py index 93395154c..ced7ddf6a 100644 --- a/backend/dataall/modules/s3_datasets/api/dataset/input_types.py +++ b/backend/dataall/modules/s3_datasets/api/dataset/input_types.py @@ -18,6 +18,10 @@ gql.Argument('confidentiality', gql.String), gql.Argument(name='stewards', type=gql.String), gql.Argument(name='autoApprovalEnabled', type=gql.Boolean), + gql.Argument(name='enableExpiration', type=gql.Boolean), + gql.Argument(name='expirySetting', type=gql.String), + gql.Argument(name='expiryMinDuration', type=gql.Integer), + gql.Argument(name='expiryMaxDuration', type=gql.Integer), ], ) @@ -36,6 +40,10 @@ gql.Argument(name='stewards', type=gql.String), gql.Argument('KmsAlias', gql.NonNullableType(gql.String)), gql.Argument(name='autoApprovalEnabled', type=gql.Boolean), + gql.Argument(name='enableExpiration', type=gql.Boolean), + gql.Argument(name='expirySetting', type=gql.String), + gql.Argument(name='expiryMinDuration', type=gql.Integer), + gql.Argument(name='expiryMaxDuration', type=gql.Integer), ], ) @@ -71,6 +79,10 @@ gql.Argument('confidentiality', gql.String), gql.Argument(name='stewards', type=gql.String), gql.Argument(name='autoApprovalEnabled', type=gql.Boolean), + gql.Argument(name='enableExpiration', type=gql.Boolean), + gql.Argument(name='expirySetting', type=gql.String), + gql.Argument(name='expiryMinDuration', type=gql.Integer), + gql.Argument(name='expiryMaxDuration', type=gql.Integer), ], ) diff --git a/backend/dataall/modules/s3_datasets/api/dataset/resolvers.py b/backend/dataall/modules/s3_datasets/api/dataset/resolvers.py index 6f25a6293..90f6fd3d9 100644 --- a/backend/dataall/modules/s3_datasets/api/dataset/resolvers.py +++ b/backend/dataall/modules/s3_datasets/api/dataset/resolvers.py @@ -2,6 +2,7 @@ from dataall.base.api.context import Context from dataall.base.feature_toggle_checker import is_feature_enabled +from dataall.base.utils.expiration_util import Expiration from dataall.core.stacks.services.stack_service import StackService from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.core.environment.services.environment_service import EnvironmentService @@ -101,6 +102,8 @@ def get_dataset_stewards_group(context, source: S3Dataset, **kwargs): def update_dataset(context, source, datasetUri: str = None, input: dict = None): + if input.get('enableExpiration', False): + RequestValidator.validate_share_expiration_request(input) return DatasetService.update_dataset(uri=datasetUri, data=input) @@ -167,6 +170,35 @@ def validate_creation_request(data): ConfidentialityClassification.validate_confidentiality_level(data.get('confidentiality', '')) if len(data['label']) > 52: raise InvalidInput('Dataset name', data['label'], 'less than 52 characters') + if data.get('enableExpiration', False): + RequestValidator.validate_share_expiration_request(data) + + @staticmethod + def validate_share_expiration_request(data): + if not isinstance(data.get('expiryMinDuration'), int) or not isinstance(data.get('expiryMaxDuration'), int): + raise InvalidInput( + 'Expiration durations (Minimum and Maximum)', + '', + 'must be valid integers', + ) + if data.get('expiryMinDuration') < 0 or data.get('expiryMaxDuration') < 0: + raise InvalidInput( + 'expiration duration ', + '', + 'must be greater than zero', + ) + if data.get('expiryMinDuration') > data.get('expiryMaxDuration'): + raise InvalidInput( + 'Minimum expiration duration ', + data.get('expiryMinDuration'), + f'cannot be greater than max expiration {data.get("expiryMaxDuration")}', + ) + if data.get('expirySetting') not in [item.value for item in list(Expiration)]: + raise InvalidInput( + 'Expiration Setting', + data.get('expirySetting'), + 'is of invalid type', + ) @staticmethod def validate_import_request(data): diff --git a/backend/dataall/modules/s3_datasets/api/dataset/types.py b/backend/dataall/modules/s3_datasets/api/dataset/types.py index 842d66ffd..a8e11a14e 100644 --- a/backend/dataall/modules/s3_datasets/api/dataset/types.py +++ b/backend/dataall/modules/s3_datasets/api/dataset/types.py @@ -109,6 +109,10 @@ gql.Field(name='language', type=gql.Ref('Language')), gql.Field(name='stack', type=gql.Ref('Stack'), resolver=resolve_dataset_stack), gql.Field(name='autoApprovalEnabled', type=gql.Boolean), + gql.Field(name='enableExpiration', type=gql.Boolean), + gql.Field(name='expirySetting', type=gql.String), + gql.Field(name='expiryMinDuration', type=gql.Integer), + gql.Field(name='expiryMaxDuration', type=gql.Integer), ], ) diff --git a/backend/dataall/modules/s3_datasets/db/dataset_repositories.py b/backend/dataall/modules/s3_datasets/db/dataset_repositories.py index 4c1283cb2..075575a2a 100644 --- a/backend/dataall/modules/s3_datasets/db/dataset_repositories.py +++ b/backend/dataall/modules/s3_datasets/db/dataset_repositories.py @@ -14,6 +14,8 @@ NamingConventionService, NamingConventionPattern, ) +from dataall.modules.shares_base.db.share_object_models import ShareObject +from dataall.modules.shares_base.services.share_object_service import ShareObjectService logger = logging.getLogger(__name__) @@ -46,6 +48,10 @@ def build_dataset(cls, username: str, env: Environment, data: dict) -> S3Dataset businessOwnerDelegationEmails=data.get('businessOwnerDelegationEmails', []), stewards=data.get('stewards') if data.get('stewards') else data['SamlAdminGroupName'], autoApprovalEnabled=data.get('autoApprovalEnabled', False), + enableExpiration=data.get('enableExpiration', False), + expirySetting=data.get('expirySetting'), + expiryMinDuration=data.get('expiryMinDuration'), + expiryMaxDuration=data.get('expiryMaxDuration'), ) cls._set_import_data(dataset, data) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 7546ef5c8..6045c2900 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -2,10 +2,10 @@ import json import logging from typing import List -from dataall.core.resource_lock.db.resource_lock_repositories import ResourceLockRepository from dataall.base.aws.quicksight import QuicksightClient from dataall.base.db import exceptions from dataall.base.utils.naming_convention import NamingConventionPattern, NamingConventionService +from dataall.base.utils.expiration_util import ExpirationUtils from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.core.stacks.services.stack_service import StackService @@ -21,6 +21,8 @@ from dataall.core.tasks.db.task_models import Task from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.s3_datasets.db.dataset_bucket_repositories import DatasetBucketRepository +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.vote.db.vote_repositories import VoteRepository from dataall.modules.s3_datasets.aws.glue_dataset_client import DatasetCrawler from dataall.modules.s3_datasets.aws.s3_dataset_client import S3DatasetClient @@ -285,6 +287,15 @@ def update_dataset(uri: str, data: dict): if k not in ['stewards', 'KmsAlias']: setattr(dataset, k, data.get(k)) + ShareObjectRepository.update_dataset_shares_expiration( + session=session, + enabledExpiration=dataset.enableExpiration, + datasetUri=dataset.datasetUri, + expirationDate=ExpirationUtils.calculate_expiry_date( + expirationPeriod=dataset.expiryMinDuration, expirySetting=dataset.expirySetting + ), + ) + if data.get('KmsAlias') not in ['Undefined'] and data.get('KmsAlias') != dataset.KmsAlias: dataset.KmsAlias = 'SSE-S3' if data.get('KmsAlias') == '' else data.get('KmsAlias') dataset.importedKmsKey = False if data.get('KmsAlias') == '' else True diff --git a/backend/dataall/modules/shares_base/api/input_types.py b/backend/dataall/modules/shares_base/api/input_types.py index 25c5d08dc..c7b32db1d 100644 --- a/backend/dataall/modules/shares_base/api/input_types.py +++ b/backend/dataall/modules/shares_base/api/input_types.py @@ -12,6 +12,8 @@ gql.Argument(name='requestPurpose', type=gql.String), gql.Argument(name='attachMissingPolicies', type=gql.Boolean), gql.Argument(name='permissions', type=gql.ArrayType(ShareObjectDataPermission.toGraphQLEnum())), + gql.Argument(name='shareExpirationPeriod', type=gql.Integer), + gql.Argument(name='nonExpirable', type=gql.Boolean), ], ) diff --git a/backend/dataall/modules/shares_base/api/mutations.py b/backend/dataall/modules/shares_base/api/mutations.py index 8d2bb49d0..06ca78544 100644 --- a/backend/dataall/modules/shares_base/api/mutations.py +++ b/backend/dataall/modules/shares_base/api/mutations.py @@ -14,6 +14,11 @@ verify_items_share_object, update_filters_table_share_item, remove_filters_table_share_item, + update_share_extension_purpose, + update_share_expiration_period, + submit_share_extension, + approve_share_object_extension, + cancel_share_object_extension, ) createShareObject = gql.MutationField( @@ -35,6 +40,13 @@ type=gql.Boolean, ) +cancelShareExtension = gql.MutationField( + name='cancelShareExtension', + args=[gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String))], + resolver=cancel_share_object_extension, + type=gql.Boolean, +) + addSharedItem = gql.MutationField( name='addSharedItem', args=[ @@ -60,6 +72,18 @@ resolver=submit_share_object, ) +submitShareExtension = gql.MutationField( + name='submitShareExtension', + args=[ + gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='expiration', type=gql.Integer), + gql.Argument(name='extensionReason', type=gql.String), + gql.Argument(name='nonExpirable', type=gql.Boolean), + ], + type=gql.Ref('ShareObject'), + resolver=submit_share_extension, +) + approveShareObject = gql.MutationField( name='approveShareObject', args=[gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String))], @@ -67,6 +91,13 @@ resolver=approve_share_object, ) +approveShareExtension = gql.MutationField( + name='approveShareExtension', + args=[gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String))], + type=gql.Ref('ShareObject'), + resolver=approve_share_object_extension, +) + rejectShareObject = gql.MutationField( name='rejectShareObject', @@ -109,6 +140,27 @@ resolver=update_share_reject_purpose, ) +updateShareExpirationPeriod = gql.MutationField( + name='updateShareExpirationPeriod', + args=[ + gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='expiration', type=gql.Integer), + gql.Argument(name='nonExpirable', type=gql.Boolean), + ], + type=gql.Boolean, + resolver=update_share_expiration_period, +) + +updateShareExtensionReason = gql.MutationField( + name='updateShareExtensionReason', + args=[ + gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='extensionPurpose', type=gql.String), + ], + type=gql.Boolean, + resolver=update_share_extension_purpose, +) + updateShareRequestReason = gql.MutationField( name='updateShareRequestReason', args=[ diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index 9943cce2b..6a8558b72 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -91,6 +91,8 @@ def create_share_object( requestPurpose=input.get('requestPurpose'), attachMissingPolicies=input.get('attachMissingPolicies', False), permissions=input.get('permissions'), + shareExpirationPeriod=input.get('shareExpirationPeriod'), + nonExpirable=input.get('nonExpirable', False), ) @@ -98,10 +100,27 @@ def submit_share_object(context: Context, source, shareUri: str = None): return ShareObjectService.submit_share_object(uri=shareUri) +def submit_share_extension( + context: Context, + source, + shareUri: str = None, + expiration: int = 0, + extensionReason: str = None, + nonExpirable: bool = False, +): + return ShareObjectService.submit_share_extension( + uri=shareUri, expiration=expiration, extension_reason=extensionReason, nonExpirable=nonExpirable + ) + + def approve_share_object(context: Context, source, shareUri: str = None): return ShareObjectService.approve_share_object(uri=shareUri) +def approve_share_object_extension(context: Context, source, shareUri: str = None): + return ShareObjectService.approve_share_object_extension(uri=shareUri) + + def reject_share_object( context: Context, source, @@ -136,6 +155,10 @@ def delete_share_object(context: Context, source, shareUri: str = None): return ShareObjectService.delete_share_object(uri=shareUri) +def cancel_share_object_extension(context: Context, source, shareUri: str = None): + return ShareObjectService.cancel_share_object_extension(uri=shareUri) + + def add_shared_item(context, source, shareUri: str = None, input: dict = None): return ShareItemService.add_shared_item(uri=shareUri, data=input) @@ -211,6 +234,8 @@ def resolve_dataset(context: Context, source: ShareObject, **kwargs): 'exists': True if ds else False, 'description': ds.description, 'datasetType': ds.datasetType, + 'enableExpiration': ds.enableExpiration, + 'expirySetting': ds.expirySetting, } @@ -301,11 +326,17 @@ def update_share_request_purpose(context: Context, source, shareUri: str = None, def update_share_reject_purpose(context: Context, source, shareUri: str = None, rejectPurpose: str = None): - with context.engine.scoped_session() as session: - return ShareObjectService.update_share_reject_purpose( - uri=shareUri, - reject_purpose=rejectPurpose, - ) + return ShareObjectService.update_share_reject_purpose( + uri=shareUri, + reject_purpose=rejectPurpose, + ) + + +def update_share_extension_purpose(context: Context, source, shareUri: str = None, extensionPurpose: str = None): + return ShareObjectService.update_share_extension_purpose( + uri=shareUri, + extension_purpose=extensionPurpose, + ) def update_filters_table_share_item(context: Context, source, input): @@ -323,3 +354,11 @@ def get_share_item_data_filters(context: Context, source, attachedDataFilterUri: if not attachedDataFilterUri: RequiredParameter('attachedDataFilterUri') return ShareItemService.get_share_item_data_filters(uri=attachedDataFilterUri) + + +def update_share_expiration_period( + context: Context, source, shareUri: str = None, expiration: int = 0, nonExpirable: bool = False +): + return ShareObjectService.update_share_expiration_period( + uri=shareUri, expiration=expiration, nonExpirable=nonExpirable + ) diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index a06bbfe27..a6f92d00d 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -111,6 +111,8 @@ gql.Field(name='exists', type=gql.Boolean), gql.Field(name='description', type=gql.String), gql.Field(name='datasetType', type=gql.String), + gql.Field(name='enableExpiration', type=gql.Boolean), + gql.Field(name='expirySetting', type=gql.String), ], ) @@ -126,6 +128,13 @@ gql.Field(name='datasetUri', type=gql.String), gql.Field(name='requestPurpose', type=gql.String), gql.Field(name='rejectPurpose', type=gql.String), + gql.Field(name='expiryDate', type=gql.String), + gql.Field(name='requestedExpiryDate', type=gql.String), + gql.Field(name='submittedForExtension', type=gql.Boolean), + gql.Field(name='extensionReason', type=gql.String), + gql.Field(name='lastExtensionDate', type=gql.String), + gql.Field(name='nonExpirable', type=gql.Boolean), + gql.Field(name='shareExpirationPeriod', type=gql.Integer), gql.Field(name='dataset', type=DatasetLink, resolver=resolve_dataset), gql.Field(name='alreadyExisted', type=gql.Boolean), gql.Field(name='existingSharedItems', type=gql.Boolean, resolver=resolve_existing_shared_items), diff --git a/backend/dataall/modules/shares_base/db/share_object_models.py b/backend/dataall/modules/shares_base/db/share_object_models.py index b1f07201a..b6423026b 100644 --- a/backend/dataall/modules/shares_base/db/share_object_models.py +++ b/backend/dataall/modules/shares_base/db/share_object_models.py @@ -1,7 +1,7 @@ from datetime import datetime, timedelta from uuid import uuid4 -from sqlalchemy import Boolean, Column, String, DateTime, ForeignKey, Index +from sqlalchemy import Boolean, Column, String, DateTime, ForeignKey, Index, Integer from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import query_expression @@ -40,6 +40,13 @@ class ShareObject(Base): userRoleForShareObject = query_expression() existingSharedItems = query_expression() permissions = Column(ARRAY(String), nullable=False) + expiryDate = Column(DateTime, nullable=True) + requestedExpiryDate = Column(DateTime, nullable=True) + lastExtensionDate = Column(DateTime, nullable=True) + extensionReason = Column(String, nullable=True) + submittedForExtension = Column(Boolean, nullable=True) + nonExpirable = Column(Boolean, default=False, nullable=False) + shareExpirationPeriod = Column(Integer, nullable=True) class ShareObjectItem(Base): diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index fd139e7f4..e008af4ec 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -418,3 +418,33 @@ def fetch_submitted_shares_with_notifications(session): .all() ) return pending_shares + + @staticmethod + def get_all_active_shares_with_expiration(session): + return ( + session.query(ShareObject) + .filter(and_(ShareObject.expiryDate.isnot(None), ShareObject.deleted.is_(None))) + .all() + ) + + @staticmethod + def update_dataset_shares_expiration(session, enabledExpiration, datasetUri, expirationDate): + """ + When share expiration is enabled on the dataset while editing a dataset + update all the shares on that dataset and set minimum expiration on them + """ + if enabledExpiration: + shares = session.query(ShareObject).filter(ShareObject.datasetUri == datasetUri).all() + for share in shares: + if share.expiryDate is None: + share.expiryDate = expirationDate + else: + shares = ( + session.query(ShareObject) + .filter(and_(ShareObject.datasetUri == datasetUri, ShareObject.expiryDate.isnot(None))) + .all() + ) + for share in shares: + share.expiryDate = None + session.commit() + return True diff --git a/backend/dataall/modules/shares_base/db/share_object_state_machines.py b/backend/dataall/modules/shares_base/db/share_object_state_machines.py index 2ca44bee9..fcf37e5b8 100644 --- a/backend/dataall/modules/shares_base/db/share_object_state_machines.py +++ b/backend/dataall/modules/shares_base/db/share_object_state_machines.py @@ -27,7 +27,7 @@ def validate_transition(self, prev_state): raise exceptions.UnauthorizedOperation( action=self._name, message=f'This transition is not possible, {prev_state} cannot go to {self._all_target_states}. ' - f'If there is a sharing or revoking in progress wait until it is complete and try again.', + f'If there is a sharing or revoking in progress wait until it is complete and try again. For share extensions delete unused items and try again', ) else: return True @@ -50,7 +50,11 @@ def __init__(self, state): ShareObjectActions.Submit.value: Transition( name=ShareObjectActions.Submit.value, transitions={ - ShareObjectStatus.Submitted.value: [ShareObjectStatus.Draft.value, ShareObjectStatus.Rejected.value] + ShareObjectStatus.Submitted.value: [ + ShareObjectStatus.Draft.value, + ShareObjectStatus.Rejected.value, + ShareObjectStatus.Extension_Rejected.value, + ] }, ), ShareObjectActions.Approve.value: Transition( @@ -69,6 +73,7 @@ def __init__(self, state): ShareObjectStatus.Submitted.value, ShareObjectStatus.Rejected.value, ShareObjectStatus.Processed.value, + ShareObjectStatus.Extension_Rejected.value, ] }, ), @@ -104,6 +109,7 @@ def __init__(self, state): ShareObjectStatus.Draft.value, ShareObjectStatus.Submitted.value, ShareObjectStatus.Processed.value, + ShareObjectStatus.Extension_Rejected.value, ] }, ), @@ -114,9 +120,34 @@ def __init__(self, state): ShareObjectStatus.Submitted.value, ShareObjectStatus.Rejected.value, ShareObjectStatus.Processed.value, + ShareObjectStatus.Extension_Rejected.value, + ] + }, + ), + ShareObjectActions.Extension.value: Transition( + name=ShareObjectActions.Extension.value, + transitions={ + ShareObjectStatus.Submitted_For_Extension.value: [ + ShareObjectStatus.Processed.value, + ShareObjectStatus.Extension_Rejected.value, + ShareObjectStatus.Draft.value, ] }, ), + ShareObjectActions.ExtensionApprove.value: Transition( + name=ShareObjectActions.ExtensionApprove.value, + transitions={ShareObjectStatus.Processed.value: [ShareObjectStatus.Submitted_For_Extension.value]}, + ), + ShareObjectActions.ExtensionReject.value: Transition( + name=ShareObjectActions.ExtensionReject.value, + transitions={ + ShareObjectStatus.Extension_Rejected.value: [ShareObjectStatus.Submitted_For_Extension.value] + }, + ), + ShareObjectActions.CancelExtension.value: Transition( + name=ShareObjectActions.CancelExtension.value, + transitions={ShareObjectStatus.Processed.value: [ShareObjectStatus.Submitted_For_Extension.value]}, + ), } def run_transition(self, transition): @@ -238,6 +269,22 @@ def __init__(self, state): ] }, ), + ShareObjectActions.Extension.value: Transition( + name=ShareObjectActions.Extension.value, + transitions={ShareItemStatus.PendingExtension.value: [ShareItemStatus.Share_Succeeded.value]}, + ), + ShareObjectActions.ExtensionApprove.value: Transition( + name=ShareObjectActions.ExtensionApprove.value, + transitions={ShareItemStatus.Share_Succeeded.value: [ShareItemStatus.PendingExtension.value]}, + ), + ShareObjectActions.ExtensionReject.value: Transition( + name=ShareObjectActions.ExtensionReject.value, + transitions={ShareItemStatus.Share_Succeeded.value: [ShareItemStatus.PendingExtension.value]}, + ), + ShareObjectActions.CancelExtension.value: Transition( + name=ShareObjectActions.CancelExtension.value, + transitions={ShareItemStatus.Share_Succeeded.value: [ShareItemStatus.PendingExtension.value]}, + ), } def run_transition(self, transition): diff --git a/backend/dataall/modules/shares_base/services/share_notification_service.py b/backend/dataall/modules/shares_base/services/share_notification_service.py index e5b66d383..f8e664883 100644 --- a/backend/dataall/modules/shares_base/services/share_notification_service.py +++ b/backend/dataall/modules/shares_base/services/share_notification_service.py @@ -18,7 +18,10 @@ class DataSharingNotificationType(enum.Enum): SHARE_OBJECT_SUBMITTED = 'SHARE_OBJECT_SUBMITTED' SHARE_ITEM_REQUEST = 'SHARE_ITEM_REQUEST' + SHARE_OBJECT_EXTENSION_SUBMITTED = 'SHARE_OBJECT_EXTENSION_SUBMITTED' SHARE_OBJECT_APPROVED = 'SHARE_OBJECT_APPROVED' + SHARE_OBJECT_EXTENDED = 'SHARE_OBJECT_EXTENDED' + SHARE_OBJECT_EXTENSION_REJECTED = 'SHARE_OBJECT_EXTENSION_REJECTED' SHARE_OBJECT_REJECTED = 'SHARE_OBJECT_REJECTED' SHARE_OBJECT_PENDING_APPROVAL = 'SHARE_OBJECT_PENDING_APPROVAL' DATASET_VERSION = 'DATASET_VERSION' @@ -57,6 +60,21 @@ def notify_share_object_submission(self, email_id: str): self._create_notification_task(subject=subject, msg=email_notification_msg) return notifications + def notify_share_object_extension_submission(self, email_id: str): + share_link_text = '' + if os.environ.get('frontend_domain_url'): + share_link_text = f'

Please visit data.all share link to take action or view more details' + msg = f'User {email_id} SUBMITTED share extension request for dataset {self.dataset.label} for principal {self.share.principalId}' + subject = f'Data.all | Share Extension Request Submitted for {self.dataset.label}' + email_notification_msg = msg + share_link_text + + notifications = self.register_notifications( + notification_type=DataSharingNotificationType.SHARE_OBJECT_EXTENSION_SUBMITTED.value, msg=msg + ) + + self._create_notification_task(subject=subject, msg=email_notification_msg) + return notifications + def notify_persistent_email_reminder(self, email_id: str): share_link_text = '' if os.environ.get('frontend_domain_url'): @@ -71,19 +89,24 @@ def notify_persistent_email_reminder(self, email_id: str): on behalf of principal "{self.share.principalId}" is still pending and has not been addressed. """ - msg_end = """Your prompt attention to this matter is greatly appreciated. - Best regards, - The Data.all Team + msg_end = """Your prompt attention in this matter is greatly appreciated. +

Best regards, +
The Data.all Team """ subject = f'URGENT REMINDER: Data.all | Action Required on Pending Share Request for {self.dataset.label}' email_notification_msg = msg_intro + share_link_text + msg_end notifications = self.register_notifications( - notification_type=DataSharingNotificationType.SHARE_OBJECT_SUBMITTED.value, msg=msg_intro + notification_type=DataSharingNotificationType.SHARE_OBJECT_SUBMITTED.value, + msg=msg_intro.replace('
', '').replace('', '').replace('', ''), ) - self._create_persistent_reminder_notification_task(subject=subject, msg=email_notification_msg) + self._create_and_send_email_notifications( + subject=subject, + msg=email_notification_msg, + recipient_groups_list=[self.dataset.SamlAdminGroupName, self.dataset.stewards], + ) return notifications def notify_share_object_approval(self, email_id: str): @@ -108,6 +131,28 @@ def notify_share_object_approval(self, email_id: str): self._create_notification_task(subject=subject, msg=email_notification_msg) return notifications + def notify_share_object_extension_approval(self, email_id: str): + share_link_text = '' + if os.environ.get('frontend_domain_url'): + share_link_text = ( + f'

Please visit data.all share link ' + f'to take action or view more details' + ) + msg = ( + f'User {email_id} APPROVED share extension request for dataset {self.dataset.label} ' + f'for principal {self.share.principalId}' + ) + subject = f'Data.all | Share Extension Request Approved for {self.dataset.label}' + email_notification_msg = msg + share_link_text + + notifications = self.register_notifications( + notification_type=DataSharingNotificationType.SHARE_OBJECT_EXTENDED.value, msg=msg + ) + + self._create_notification_task(subject=subject, msg=email_notification_msg) + return notifications + def notify_share_object_rejection(self, email_id: str): share_link_text = '' if os.environ.get('frontend_domain_url'): @@ -130,6 +175,89 @@ def notify_share_object_rejection(self, email_id: str): self._create_notification_task(subject=subject, msg=email_notification_msg) return notifications + def notify_share_object_extension_rejection(self, email_id: str): + share_link_text = '' + if os.environ.get('frontend_domain_url'): + share_link_text = f'

Please visit data.all share link to take action or view more details' + msg = f'User {email_id} REJECTED share extension request for dataset {self.dataset.label} on principal {self.share.principalId}' + subject = f'Data.all | Share Extension Request Rejected for {self.dataset.label}' + email_notification_msg = msg + share_link_text + + notifications = self.register_notifications( + notification_type=DataSharingNotificationType.SHARE_OBJECT_EXTENSION_REJECTED.value, msg=msg + ) + + self._create_notification_task(subject=subject, msg=email_notification_msg) + return notifications + + def notify_share_expiration_to_owners(self): + share_link_text = '' + if os.environ.get('frontend_domain_url'): + share_link_text = ( + f'

Please visit data.all share link ' + f'to review and take actions on the share extension request' + ) + + msg_intro = f"""Dear User,
+ This is a reminder that there is a pending share extension request on dataset "{self.dataset.label}". +

Note: If you fail to take action on the share request and if it expires, the share item will be revoked which will result in loss of access for the requesters. + """ + + msg_end = """Your prompt attention in this matter is greatly appreciated. +

Best regards, +
The Data.all Team + """ + + subject = ( + f'URGENT REMINDER: Data.all | Action Required on Pending Share Extension Request for {self.dataset.label}' + ) + email_notification_msg = msg_intro + share_link_text + msg_end + + notifications = self.register_notifications( + notification_type=DataSharingNotificationType.SHARE_OBJECT_EXTENDED.value, + msg=msg_intro.replace('
', '').replace('', '').replace('', ''), + ) + + self._create_and_send_email_notifications( + subject=subject, + msg=email_notification_msg, + recipient_groups_list=[self.dataset.SamlAdminGroupName, self.dataset.stewards], + ) + return notifications + + def notify_share_expiration_to_requesters(self): + share_link_text = '' + if os.environ.get('frontend_domain_url'): + share_link_text = ( + f'

Please visit data.all share link ' + f'to review and create a share extension request' + ) + + msg_intro = f"""Dear User,
+ This is a reminder that your share request for the dataset "{self.dataset.label}" will get expired on {self.share.expiryDate.date().strftime("%B %d, %Y")}. Please request a share extension request before it to have continued access to the dataset. +

Note: If you fail request for an extension and if it expires, the share item will be revoked which will result in loss of access to the dataset. + """ + + msg_end = """Your prompt attention in this matter is greatly appreciated. +

Best regards, +
The Data.all Team + """ + + subject = 'ACTION REQUIRED: Data.all | Share Expiration Approaching Soon' + email_notification_msg = msg_intro + share_link_text + msg_end + + notifications = self.register_notifications( + notification_type=DataSharingNotificationType.SHARE_OBJECT_EXTENDED.value, + msg=msg_intro.replace('
', '').replace('', '').replace('', ''), + ) + + self._create_and_send_email_notifications( + subject=subject, msg=email_notification_msg, recipient_groups_list=[self.share.groupUri] + ) + return notifications + def _get_share_object_targeted_users(self): targeted_users = list() targeted_users.append(self.dataset.SamlAdminGroupName) @@ -205,13 +333,17 @@ def _create_notification_task(self, subject, msg): else: log.info('Notifications are not active') - def _create_persistent_reminder_notification_task(self, subject, msg): + def _create_and_send_email_notifications(self, subject, msg, recipient_groups_list=None, recipient_email_ids=None): """ - At the moment just for notification_config_type = email, but designed for additional notification types - Emails sent to: - - dataset.SamlAdminGroupName - - dataset.stewards + Method to directly send email notification instead of creating an SQS Task + This approach is used while sending email notifications in an ECS task ( e.g. persistent email reminder task, share expiration task, etc ) + Emails send to groups mentioned in recipient_groups_list and / or emails mentioned in recipient_email_ids """ + if recipient_groups_list is None: + recipient_groups_list = [] + if recipient_email_ids is None: + recipient_email_ids = [] + share_notification_config = config.get_property( 'modules.datasets_base.features.share_notifications', default=None ) @@ -219,25 +351,9 @@ def _create_persistent_reminder_notification_task(self, subject, msg): for share_notification_config_type in share_notification_config.keys(): n_config = share_notification_config[share_notification_config_type] if n_config.get('active', False) == True: - notification_recipient_groups_list = [self.dataset.SamlAdminGroupName, self.dataset.stewards] - if share_notification_config_type == 'email': - notification_task: Task = Task( - action='notification.service', - targetUri=self.share.shareUri, - payload={ - 'notificationType': share_notification_config_type, - 'subject': subject, - 'message': msg, - 'recipientGroupsList': notification_recipient_groups_list, - 'recipientEmailList': [], - }, - ) - self.session.add(notification_task) - self.session.commit() - SESEmailNotificationService.send_email_task( - subject, msg, notification_recipient_groups_list, [] + subject, msg, recipient_groups_list, recipient_email_ids ) else: log.info(f'Notification type : {share_notification_config_type} is not active') diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index a145cb21c..0f7a3f99b 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -1,15 +1,30 @@ +import calendar +import os +from datetime import date, datetime + +from dateutil.relativedelta import relativedelta + +from dataall.base.utils.expiration_util import ExpirationUtils import logging from typing import List +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.tasks.service_handlers import Worker from dataall.base.aws.iam import IAM from dataall.base.context import get_context from dataall.base.db.exceptions import UnauthorizedOperation, InvalidInput from dataall.core.activity.db.activity_models import Activity +from dataall.core.environment.db.environment_models import EnvironmentGroup, ConsumptionRole from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.environment.services.managed_iam_policies import PolicyManager -from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.tasks.db.task_models import Task -from dataall.core.tasks.service_handlers import Worker +from dataall.modules.shares_base.services.shares_enums import ( + ShareObjectActions, + ShareableType, + ShareItemStatus, + ShareObjectStatus, + PrincipalType, +) from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject @@ -33,10 +48,6 @@ ) from dataall.modules.shares_base.services.share_processor_manager import ShareProcessorManager from dataall.modules.shares_base.services.shares_enums import ( - ShareObjectActions, - ShareItemStatus, - ShareObjectStatus, - PrincipalType, ShareObjectDataPermission, ) @@ -73,6 +84,8 @@ def create_share_object( requestPurpose, attachMissingPolicies, permissions: List[str], + shareExpirationPeriod, + nonExpirable: bool = False, ): context = get_context() with context.db_engine.scoped_session() as session: @@ -148,6 +161,24 @@ def create_share_object( group_uri=group_uri, ) already_existed = share is not None + + if ( + dataset.enableExpiration + and not nonExpirable + and ( + shareExpirationPeriod > dataset.expiryMaxDuration + or shareExpirationPeriod < dataset.expiryMinDuration + ) + ): + raise Exception('Share expiration period is not within the maximum and the minimum expiration duration') + + shareExpiryDate = None + if nonExpirable: + shareExpiryDate = None + shareExpirationPeriod = None + elif dataset.enableExpiration: + shareExpiryDate = ExpirationUtils.calculate_expiry_date(shareExpirationPeriod, dataset.expirySetting) + if not share: share = ShareObject( datasetUri=dataset.datasetUri, @@ -160,6 +191,9 @@ def create_share_object( status=ShareObjectStatus.Draft.value, requestPurpose=requestPurpose, permissions=permissions, + requestedExpiryDate=shareExpiryDate, + nonExpirable=nonExpirable, + shareExpirationPeriod=shareExpirationPeriod, ) ShareObjectRepository.save_and_commit(session, share) @@ -264,6 +298,72 @@ def submit_share_object(cls, uri: str): return share + @classmethod + @ResourcePolicyService.has_resource_permission(SUBMIT_SHARE_OBJECT) + def submit_share_extension(cls, uri: str, expiration: int, extension_reason: str, nonExpirable: bool): + context = get_context() + with context.db_engine.scoped_session() as session: + share, dataset, states = cls._get_share_data(session, uri) + if dataset.enableExpiration: + if nonExpirable is False and expiration is None: + raise InvalidInput( + param_name='Share Expiration', + param_value='', + constraint='period not provided. Either make your share non-expiring or provide a expiration period', + ) + + if not nonExpirable and ( + expiration < dataset.expiryMinDuration or expiration > dataset.expiryMaxDuration + ): + raise InvalidInput( + param_name='Share Expiration', + param_value=expiration, + constraint=f'between {dataset.expiryMinDuration} and {dataset.expiryMaxDuration}', + ) + + cls._run_transitions(session, share, states, ShareObjectActions.Extension) + + if nonExpirable: + share.nonExpirable = True + share.requestedExpiryDate = None + share.shareExpirationPeriod = None + else: + expiration_date = ExpirationUtils.calculate_expiry_date(expiration, dataset.expirySetting) + share.requestedExpiryDate = expiration_date + share.shareExpirationPeriod = expiration + + share.extensionReason = extension_reason + share.submittedForExtension = True + + ShareNotificationService( + session=session, dataset=dataset, share=share + ).notify_share_object_extension_submission(email_id=context.username) + + if dataset.autoApprovalEnabled: + ResourcePolicyService.attach_resource_policy( + session=session, + group=share.groupUri, + permissions=SHARE_OBJECT_APPROVER, + resource_uri=share.shareUri, + resource_type=ShareObject.__name__, + ) + share = cls.approve_share_object_extension(uri=share.shareUri) + + activity = Activity( + action='SHARE_OBJECT:EXTENSION_REQUEST', + label='SHARE_OBJECT:EXTENSION_REQUEST', + owner=get_context().username, + summary=f'{get_context().username} submitted share extension request for {dataset.name} in environment with URI: {dataset.environmentUri} for the principal: {share.principalRoleName}', + targetUri=dataset.datasetUri, + targetType='dataset', + ) + + session.add(activity) + + return share + else: + raise Exception("Share expiration cannot be extended as the dataset doesn't have expiration enabled") + @classmethod @ResourcePolicyService.has_resource_permission(APPROVE_SHARE_OBJECT) def approve_share_object(cls, uri: str): @@ -278,11 +378,23 @@ def approve_share_object(cls, uri: str): action='Approve Share Object', message=f'The principal role {share.principalRoleName} is not found.', ) + if dataset.enableExpiration and share.requestedExpiryDate and share.requestedExpiryDate < datetime.today(): + raise Exception( + 'Cannot approve share since its it past the requested expiration date. Please reject this share and submit a new share request' + ) cls._run_transitions(session, share, states, ShareObjectActions.Approve) share.rejectPurpose = '' - session.commit() + # Use share.requestedExpiryDate when a share is newly created. + # After first approval, if new items are added are approved, use the shareExpiryDate which is already set + share.expiryDate = ( + share.requestedExpiryDate + if (share.submittedForExtension or share.expiryDate is None) + else share.expiryDate + ) + share.requestedExpiryDate = None + share.submittedForExtension = False ShareNotificationService(session=session, dataset=dataset, share=share).notify_share_object_approval( email_id=context.username @@ -298,6 +410,50 @@ def approve_share_object(cls, uri: str): Worker.queue(engine=context.db_engine, task_ids=[approve_share_task.taskUri]) return share + @classmethod + @ResourcePolicyService.has_resource_permission(APPROVE_SHARE_OBJECT) + def approve_share_object_extension(cls, uri: str): + context = get_context() + with context.db_engine.scoped_session() as session: + share, dataset, states = cls._get_share_data(session, uri) + + if not ShareObjectService.verify_principal_role(session, share): + raise PrincipalRoleNotFound( + action='Approve Share Object Extension', + message=f'The principal role {share.principalRoleName} is not found.', + ) + + if dataset.enableExpiration and share.requestedExpiryDate and share.requestedExpiryDate < datetime.today(): + raise Exception( + 'Cannot approve share extension since its it past the requested expiration date. Please reject this share and submit a new share request' + ) + + cls._run_transitions(session, share, states, ShareObjectActions.ExtensionApprove) + + share.rejectPurpose = '' + share.expiryDate = share.requestedExpiryDate + share.nonExpirable = False if share.requestedExpiryDate else share.nonExpirable + share.requestedExpiryDate = None + share.submittedForExtension = False + share.lastExtensionDate = datetime.today() + + activity = Activity( + action='SHARE_OBJECT:APPROVE_EXTENSION', + label='SHARE_OBJECT:APPROVE_EXTENSION', + owner=get_context().username, + summary=f'{get_context().username} approved share extension request for {dataset.name} in environment with URI: {dataset.environmentUri} for the principal: {share.principalRoleName}', + targetUri=dataset.datasetUri, + targetType='dataset', + ) + + session.add(activity) + + ShareNotificationService( + session=session, dataset=dataset, share=share + ).notify_share_object_extension_approval(email_id=context.username) + + return share + @staticmethod @ResourcePolicyService.has_resource_permission(SUBMIT_SHARE_OBJECT) def update_share_request_purpose(uri: str, request_purpose) -> bool: @@ -307,6 +463,71 @@ def update_share_request_purpose(uri: str, request_purpose) -> bool: session.commit() return True + @classmethod + @ResourcePolicyService.has_resource_permission(SUBMIT_SHARE_OBJECT) + def update_share_expiration_period(cls, uri: str, expiration, nonExpirable) -> bool: + with get_context().db_engine.scoped_session() as session: + share, dataset, states = cls._get_share_data(session, uri) + if share.status not in [ + ShareObjectStatus.Submitted.value, + ShareObjectStatus.Submitted_For_Extension.value, + ShareObjectStatus.Draft.value, + ]: + raise Exception( + f"Cannot update share object's expiration as it is not in {', '.join([ShareObjectStatus.Submitted.value, ShareObjectStatus.Submitted_For_Extension.value, ShareObjectStatus.Draft.value])}" + ) + + invalid_states = [ + ShareItemStatus.Share_Succeeded.value, + ShareItemStatus.Revoke_In_Progress.value, + ShareItemStatus.Share_In_Progress.value, + ShareItemStatus.Share_Approved.value, + ShareItemStatus.Revoke_Approved.value, + ] + share_item_invalid_state = [state for state in states if states in invalid_states] + + if share_item_invalid_state: + raise Exception( + f"Cannot update share object's expiration as it share items are in incorrect state { ', '.join(invalid_states)}" + ) + + if nonExpirable: + share.nonExpirable = nonExpirable + share.expiryDate = None + share.requestedExpiryDate = None + share.shareExpirationPeriod = None + session.commit() + return True + else: + share.nonExpirable = False + + if dataset.enableExpiration and ( + expiration < dataset.expiryMinDuration or expiration > dataset.expiryMaxDuration + ): + raise InvalidInput( + param_name='Share Expiration', + param_value=expiration, + constraint=f'between {dataset.expiryMinDuration} and {dataset.expiryMaxDuration}', + ) + + if dataset.enableExpiration: + expiration_date = ExpirationUtils.calculate_expiry_date(expiration, dataset.expirySetting) + else: + raise Exception("Couldn't update share expiration as dataset doesn't have share expiration enabled") + share.requestedExpiryDate = expiration_date + share.shareExpirationPeriod = expiration + activity = Activity( + action='SHARE_OBJECT:UPDATE_EXTENSION_PERIOD', + label='SHARE_OBJECT:UPDATE_EXTENSION_PERIOD', + owner=get_context().username, + summary=f'{get_context().username} updated share extension period request for {dataset.name} in environment with URI: {dataset.environmentUri} for the principal: {share.principalRoleName}', + targetUri=dataset.datasetUri, + targetType='dataset', + ) + + session.add(activity) + return True + @staticmethod @ResourcePolicyService.has_resource_permission(REJECT_SHARE_OBJECT) def update_share_reject_purpose(uri: str, reject_purpose) -> bool: @@ -316,24 +537,79 @@ def update_share_reject_purpose(uri: str, reject_purpose) -> bool: session.commit() return True + @staticmethod + @ResourcePolicyService.has_resource_permission(SUBMIT_SHARE_OBJECT) + def update_share_extension_purpose(uri: str, extension_purpose) -> bool: + with get_context().db_engine.scoped_session() as session: + share = ShareObjectRepository.get_share_by_uri(session, uri) + share.extensionReason = extension_purpose + return True + @classmethod @ResourcePolicyService.has_resource_permission(REJECT_SHARE_OBJECT) def reject_share_object(cls, uri: str, reject_purpose: str): context = get_context() with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - cls._run_transitions(session, share, states, ShareObjectActions.Reject) + if share.submittedForExtension: + cls._run_transitions(session, share, states, ShareObjectActions.ExtensionReject) + else: + cls._run_transitions(session, share, states, ShareObjectActions.Reject) + + if share.submittedForExtension: + ShareNotificationService( + session=session, dataset=dataset, share=share + ).notify_share_object_extension_rejection(email_id=context.username) + else: + ShareNotificationService(session=session, dataset=dataset, share=share).notify_share_object_rejection( + email_id=context.username + ) # Update Reject Purpose share.rejectPurpose = reject_purpose - session.commit() + share.submittedForExtension = False + share.requestedExpiryDate = None + share.nonExpirable = True if share.nonExpirable and share.expiryDate is None else False - ShareNotificationService(session=session, dataset=dataset, share=share).notify_share_object_rejection( - email_id=context.username + activity = Activity( + action='SHARE_OBJECT:REJECT', + label='SHARE_OBJECT:REJECT', + owner=get_context().username, + summary=f'{get_context().username} rejected share {"extension" if share.submittedForExtension else ""} request for {dataset.name} in environment with URI: {dataset.environmentUri} for the principal: {share.principalRoleName}', + targetUri=dataset.datasetUri, + targetType='dataset', ) + session.add(activity) + return share + @classmethod + @ResourcePolicyService.has_resource_permission(SUBMIT_SHARE_OBJECT) + def cancel_share_object_extension(cls, uri: str) -> bool: + with get_context().db_engine.scoped_session() as session: + share, dataset, states = cls._get_share_data(session, uri) + + cls._run_transitions(session, share, states, ShareObjectActions.CancelExtension) + + share.submittedForExtension = False + share.requestedExpiryDate = None + share.nonExpirable = True if share.nonExpirable and share.expiryDate is None else False + share.shareExpirationPeriod = None + + activity = Activity( + action='SHARE_OBJECT:CANCEL_EXTENSION', + label='SHARE_OBJECT:CANCEL_EXTENSION', + owner=get_context().username, + summary=f'{get_context().username} cancelled share extension request for {dataset.name} in environment with URI: {dataset.environmentUri} for the principal: {share.principalRoleName}', + targetUri=dataset.datasetUri, + targetType='dataset', + ) + + session.add(activity) + + return True + @classmethod @ResourcePolicyService.has_resource_permission(DELETE_SHARE_OBJECT) def delete_share_object(cls, uri: str): diff --git a/backend/dataall/modules/shares_base/services/shares_enums.py b/backend/dataall/modules/shares_base/services/shares_enums.py index 111e627b1..05e42b6fb 100644 --- a/backend/dataall/modules/shares_base/services/shares_enums.py +++ b/backend/dataall/modules/shares_base/services/shares_enums.py @@ -29,6 +29,8 @@ class ShareObjectStatus(GraphQLEnumMapper): Revoked = 'Revoked' Draft = 'Draft' Submitted = 'Submitted' + Submitted_For_Extension = 'Submitted_For_Extension' + Extension_Rejected = 'Extension_Rejected' Revoke_In_Progress = 'Revoke_In_Progress' Share_In_Progress = 'Share_In_Progress' Processed = 'Processed' @@ -37,6 +39,7 @@ class ShareObjectStatus(GraphQLEnumMapper): class ShareItemStatus(GraphQLEnumMapper): Deleted = 'Deleted' PendingApproval = 'PendingApproval' + PendingExtension = 'PendingExtension' Share_Approved = 'Share_Approved' Share_Rejected = 'Share_Rejected' Share_In_Progress = 'Share_In_Progress' @@ -64,6 +67,10 @@ class ShareObjectActions(GraphQLEnumMapper): Finish = 'Finish' FinishPending = 'FinishPending' Delete = 'Delete' + Extension = 'Extension' + ExtensionApprove = 'ExtensionApprove' + ExtensionReject = 'ExtensionReject' + CancelExtension = 'CancelExtension' class ShareItemActions(GraphQLEnumMapper): diff --git a/backend/dataall/modules/shares_base/tasks/share_expiration_task.py b/backend/dataall/modules/shares_base/tasks/share_expiration_task.py new file mode 100644 index 000000000..037d5fe17 --- /dev/null +++ b/backend/dataall/modules/shares_base/tasks/share_expiration_task.py @@ -0,0 +1,82 @@ +import logging +import os +import sys +from datetime import datetime +from dataall.base.loader import load_modules, ImportMode +from dataall.base.db import get_engine +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_object_state_machines import ShareObjectSM, ShareItemSM +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.modules.shares_base.services.share_notification_service import ShareNotificationService +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository +from dataall.modules.shares_base.services.shares_enums import ShareObjectActions +from dataall.modules.shares_base.services.sharing_service import SharingService + +root = logging.getLogger() +root.setLevel(logging.INFO) +if not root.hasHandlers(): + root.addHandler(logging.StreamHandler(sys.stdout)) +log = logging.getLogger(__name__) + + +def share_expiration_checker(engine): + """ + Checks all the share objects which have expiryDate on them and then revokes or notifies users based on if its expired or not + """ + with engine.scoped_session() as session: + log.info('Starting share expiration task') + shares = ShareObjectRepository.get_all_active_shares_with_expiration(session) + log.info(f'Fetched {len(shares)} active shares with expiration') + for share in shares: + try: + if share.expiryDate.date() < datetime.today().date(): + log.info(f'Revoking share with uri: {share.shareUri} as it is expired') + # Put all share items in revoke state and then revoke + share_items_to_revoke = ShareObjectRepository.get_all_share_items_in_share( + session, share.shareUri, ['Share_Succeeded'] + ) + item_uris = [share_item.shareItemUri for share_item in share_items_to_revoke] + revoked_items_states = ShareStatusRepository.get_share_items_states( + session, share.shareUri, item_uris + ) + + share_sm = ShareObjectSM(share.status) + new_share_state = share_sm.run_transition(ShareObjectActions.RevokeItems.value) + + for item_state in revoked_items_states: + item_sm = ShareItemSM(item_state) + new_state = item_sm.run_transition(ShareObjectActions.RevokeItems.value) + for item in share_items_to_revoke: + if item.status == item_state: + item_sm.update_state_single_item(session, item, new_state) + + share_sm.update_state(session, share, new_share_state) + SharingService.revoke_share(engine=engine, share_uri=share.shareUri) + else: + log.info(f'Share with share uri: {share.shareUri} has not yet expired') + dataset = DatasetBaseRepository.get_dataset_by_uri(session, share.datasetUri) + if share.submittedForExtension: + log.info( + f'Sending notifications to the owners: {dataset.SamlAdminGroupName}, {dataset.stewards} as share extension requested for share with uri: {share.shareUri}' + ) + ShareNotificationService( + session=session, dataset=dataset, share=share + ).notify_share_expiration_to_owners() + else: + log.info( + f'Sending notifications to the requesters with group: {share.groupUri} as share extension is not requested for share with uri: {share.shareUri}' + ) + ShareNotificationService( + session=session, dataset=dataset, share=share + ).notify_share_expiration_to_requesters() + except Exception as e: + log.error( + f'Error occured while processing share expiration processing for share with URI: {share.shareUri} due to: {e}' + ) + + +if __name__ == '__main__': + load_modules(modes={ImportMode.SHARES_TASK}) + ENVNAME = os.environ.get('envname', 'dkrcompose') + ENGINE = get_engine(envname=ENVNAME) + share_expiration_checker(engine=ENGINE) diff --git a/backend/migrations/versions/d274e756f0ae_dataset_and_share_expiration_schema_additions.py b/backend/migrations/versions/d274e756f0ae_dataset_and_share_expiration_schema_additions.py new file mode 100644 index 000000000..f7cf9395f --- /dev/null +++ b/backend/migrations/versions/d274e756f0ae_dataset_and_share_expiration_schema_additions.py @@ -0,0 +1,65 @@ +"""schema_for_share_expiration + +Revision ID: d274e756f0ae +Revises: 797dd1012be1 +Create Date: 2024-07-18 14:25:20.728900 + +""" + +import os +from alembic import op +import sqlalchemy as sa +from dataall.base.db import get_engine, has_column + +# revision identifiers, used by Alembic. +revision = 'd274e756f0ae' +down_revision = 'c215903b780c' +branch_labels = None +depends_on = None + +envname = os.getenv('envname', 'local') +print('ENVNAME', envname) +engine = get_engine(envname=envname).engine + + +def upgrade(): + print('Adding columns for share expiration') + # Add Columns to the dataset base table + op.add_column( + 'dataset', + sa.Column( + 'enableExpiration', sa.Boolean(), nullable=False, default=False, server_default=sa.sql.expression.false() + ), + ) + op.add_column('dataset', sa.Column('expirySetting', sa.String(), nullable=True)) + op.add_column('dataset', sa.Column('expiryMinDuration', sa.Integer(), nullable=True)) + op.add_column('dataset', sa.Column('expiryMaxDuration', sa.Integer(), nullable=True)) + op.add_column('share_object', sa.Column('expiryDate', sa.DateTime(), nullable=True)) + op.add_column('share_object', sa.Column('requestedExpiryDate', sa.DateTime(), nullable=True)) + op.add_column('share_object', sa.Column('lastExtensionDate', sa.DateTime(), nullable=True)) + op.add_column('share_object', sa.Column('extensionReason', sa.String(), nullable=True)) + op.add_column('share_object', sa.Column('submittedForExtension', sa.Boolean(), nullable=True)) + op.add_column('share_object', sa.Column('shareExpirationPeriod', sa.Integer(), nullable=True)) + op.add_column( + 'share_object', + sa.Column( + 'nonExpirable', sa.Boolean(), nullable=False, default=False, server_default=sa.sql.expression.false() + ), + ) + print('Successfully added columns for share expiration') + + +def downgrade(): + print('Removing columns for share expiration') + op.drop_column('dataset', 'enableExpiration') + op.drop_column('dataset', 'expiryMinDuration') + op.drop_column('dataset', 'expiryMaxDuration') + op.drop_column('dataset', 'expirySetting') + op.drop_column('share_object', 'expiryDate') + op.drop_column('share_object', 'requestedExpiryDate') + op.drop_column('share_object', 'lastExtensionDate') + op.drop_column('share_object', 'extensionReason') + op.drop_column('share_object', 'submittedForExtension') + op.drop_column('share_object', 'nonExpirable') + op.drop_column('share_object', 'shareExpirationPeriod') + print('Successfully removed columns related to share expiration') diff --git a/config.json b/config.json index 35281b04b..0ff775965 100644 --- a/config.json +++ b/config.json @@ -33,6 +33,10 @@ "Unclassified" : true, "Official" : true, "Secret" : true + }, + "share_expiration" : { + "active" : true, + "run_schedule" : [1, 3, 7, 14, 21, 28] } } }, diff --git a/deploy/stacks/container.py b/deploy/stacks/container.py index 31a713654..5150e08b1 100644 --- a/deploy/stacks/container.py +++ b/deploy/stacks/container.py @@ -1,3 +1,4 @@ +import logging from typing import Dict from aws_cdk import ( aws_ec2 as ec2, @@ -13,6 +14,7 @@ from .pyNestedStack import pyNestedClass from .run_if import run_if +from .deploy_config import deploy_config class ContainerStack(pyNestedClass): @@ -198,6 +200,7 @@ def __init__( self.add_share_reapplier_task() self.add_omics_fetch_workflows_task() self.add_persistent_email_reminders_task() + self.add_share_expiration_task() @run_if(['modules.s3_datasets.active', 'modules.dashboards.active']) def add_catalog_indexer_task(self): @@ -428,6 +431,68 @@ def add_omics_fetch_workflows_task(self): ) self.ecs_task_definitions_families.append(fetch_omics_workflows_task.task_definition.family) + @run_if(['modules.datasets_base.features.share_expiration.active']) + def add_share_expiration_task(self): + task = ecs.FargateTaskDefinition( + self, + f'{self._resource_prefix}-{self._envname}-share-expiration-task', + family=f'{self._resource_prefix}-{self._envname}-share-expiration-task', + cpu=1024, + memory_limit_mib=2048, + task_role=self.task_role, + execution_role=self.task_role, + ) + task.add_container( + 'container', + container_name='container', + image=ecs.ContainerImage.from_ecr_repository(repository=self._ecr_repository, tag=self._cdkproxy_image_tag), + environment=self.env_vars, + command=[ + 'python3.9', + '-m', + 'dataall.modules.shares_base.tasks.share_expiration_task', + ], + logging=ecs.LogDriver.aws_logs( + stream_prefix='task', + log_group=self.create_log_group( + self._envname, self._resource_prefix, log_group_name='share-expiration-task' + ), + ), + readonly_root_filesystem=True, + ) + try: + run_schedule = deploy_config.get_property('modules.datasets_base.features.share_expiration.run_schedule') + if 0 not in run_schedule: + run_schedule.append(0) + except Exception: + run_schedule = [0] + + for value in run_schedule: + scheduled_task = ecs_patterns.ScheduledFargateTask( + self, + f'{self._resource_prefix}-{self._envname}-share-expiration-schedule-{value}', + cluster=self.ecs_cluster, + schedule=Schedule.expression(f'cron(0 9 L-{value} * ? *)'), + scheduled_fargate_task_definition_options=ecs_patterns.ScheduledFargateTaskDefinitionOptions( + task_definition=task + ), + vpc=self._vpc, + subnet_selection=ec2.SubnetSelection( + subnets=self._vpc.select_subnets(subnet_type=ec2.SubnetType.PRIVATE_WITH_NAT).subnets + ), + rule_name=f'{self._resource_prefix}-{self._envname}-share-expiration-schedule-{value}', + security_groups=[self.scheduled_tasks_sg], + ) + + # Add the rule of the scheduled task to parameter store + ssm.StringParameter( + self, + f'ECSTaskRule-{self._resource_prefix}-{self._envname}-share-expiration-schedule-{value}', + parameter_name=f'/dataall/{self._envname}/ecs/ecs_scheduled_tasks/rule/{self._resource_prefix}-{self._envname}-share-expiration-schedule-{value}', + string_value=scheduled_task.event_rule.rule_name, + ) + self.ecs_task_definitions_families.append(scheduled_task.task_definition.family) + def create_ecs_security_groups(self, envname, resource_prefix, vpc, vpce_connection, s3_prefix_list, lambdas): scheduled_tasks_sg = ec2.SecurityGroup( self, diff --git a/frontend/src/design/components/ShareStatus.js b/frontend/src/design/components/ShareStatus.js index 1da34377f..53081e34a 100644 --- a/frontend/src/design/components/ShareStatus.js +++ b/frontend/src/design/components/ShareStatus.js @@ -24,7 +24,15 @@ export const ShareStatus = (props) => { ].includes(status) ) return 'error'; - if (['PendingApproval', 'Submitted'].includes(status)) return 'warning'; + if ( + [ + 'PendingApproval', + 'Submitted', + 'Submitted_For_Extension', + 'PendingExtension' + ].includes(status) + ) + return 'warning'; return 'info'; }; return ; diff --git a/frontend/src/modules/Catalog/components/RequestAccessModal.js b/frontend/src/modules/Catalog/components/RequestAccessModal.js index ec23d1cf4..1d3184a8a 100644 --- a/frontend/src/modules/Catalog/components/RequestAccessModal.js +++ b/frontend/src/modules/Catalog/components/RequestAccessModal.js @@ -8,6 +8,7 @@ import { CircularProgress, Dialog, FormControlLabel, + FormGroup, FormHelperText, Switch, TextField, @@ -32,6 +33,8 @@ import { } from 'services'; import { ShareEditForm } from '../../Shared/Shares/ShareEditForm'; import { getShareObject } from '../../Shares/services'; +import { getDatasetExpirationDetails } from '../../DatasetsBase/services/getDatasetDetails'; +import Checkbox from '@mui/material/Checkbox'; export const RequestAccessModal = (props) => { const { hit, onApply, onClose, open, stopLoader, ...other } = props; @@ -52,6 +55,10 @@ export const RequestAccessModal = (props) => { const [share, setShare] = useState(false); const [loading, setLoading] = useState(false); const [alreadyExisted, setAlreadyExisted] = useState(false); + const [datasetExpirationDetails, setDatasetExpirationDetails] = useState({ + enableExpiration: false + }); + const [requestNonExpirableShare, setNonExpirableShare] = useState(false); const [dataPermsEnum, setDataPermsEnum] = useState([]); const fetchDataPermsEnum = useCallback(async () => { @@ -187,12 +194,33 @@ export const RequestAccessModal = (props) => { } }; + const fetchDatasetExpirationDetails = async (datasetUri) => { + const response = await client.query( + getDatasetExpirationDetails({ + datasetUri + }) + ); + if (!response.errors) { + setDatasetExpirationDetails({ + enableExpiration: response.data.getDataset.enableExpiration, + expirySetting: response.data.getDataset.expirySetting, + expiryMinDuration: response.data.getDataset.expiryMinDuration, + expiryMaxDuration: response.data.getDataset.expiryMaxDuration + }); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + useEffect(() => { if (client && open) { fetchEnvironments().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); fetchDataPermsEnum(); + fetchDatasetExpirationDetails(hit._id).catch((e) => { + dispatch({ type: SET_ERROR, error: e.message }); + }); } }, [ client, @@ -236,7 +264,11 @@ export const RequestAccessModal = (props) => { principalType: type, requestPurpose: values.comment, attachMissingPolicies: values.attachMissingPolicies, - permissions: values.permissions + permissions: values.permissions, + shareExpirationPeriod: datasetExpirationDetails.enableExpiration + ? parseInt(values.shareExpirationPeriod) + : null, + nonExpirable: values.nonExpirable }; if (hit.resourceKind === 'dataset') { @@ -328,7 +360,9 @@ export const RequestAccessModal = (props) => { environmentUri: '', comment: '', attachMissingPolicies: false, - permissions: [dataPermsEnum[0]] + permissions: [dataPermsEnum[0]], + shareExpirationPeriod: 0, + nonExpirable: false }} validationSchema={Yup.object().shape({ environmentUri: Yup.string().required( @@ -336,7 +370,34 @@ export const RequestAccessModal = (props) => { ), groupUri: Yup.string().required('*Team is required'), consumptionRole: Yup.object(), - comment: Yup.string().max(5000) + comment: Yup.string().max(5000), + shareExpirationPeriod: + datasetExpirationDetails.enableExpiration && + !requestNonExpirableShare + ? Yup.number() + .min( + datasetExpirationDetails.expiryMinDuration, + `Minimum share expiration duration is ${ + datasetExpirationDetails.expiryMinDuration + } ${ + datasetExpirationDetails.expirySetting === 'Monthly' + ? 'month(s)' + : 'quarter(s)' + }` + ) + .max( + datasetExpirationDetails.expiryMaxDuration, + `Maximum share expiration duration is ${ + datasetExpirationDetails.expiryMaxDuration + } ${ + datasetExpirationDetails.expirySetting === 'Monthly' + ? 'month(s)' + : 'quarter(s)' + }` + ) + .required('Incorrect input provided') + : Yup.number().nullable(), + nonExpirable: Yup.boolean() })} onSubmit={async ( values, @@ -594,6 +655,62 @@ export const RequestAccessModal = (props) => { )}
+ + + {datasetExpirationDetails.enableExpiration && ( + <> + { + setFieldValue( + 'shareExpirationPeriod', + event.target.value + ); + }} + variant="outlined" + inputProps={{ type: 'number' }} + disabled={requestNonExpirableShare} + /> + + )} + {datasetExpirationDetails.enableExpiration && ( + + + { + setFieldValue('nonExpirable', value); + setNonExpirableShare(value); + }} + /> + } + /> + + + )} + + )} {!values.consumptionRole || diff --git a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js index e484636ef..c2ec5aff4 100644 --- a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js +++ b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js @@ -119,6 +119,48 @@ export const DatasetGovernance = (props) => { + + + Expiration Setting for Shares + + + + + + {dataset.enableExpiration === true && ( + <> + + + Expiration duration ( Minimum ) in{' '} + {/*Check how can this hard coding be changed*/} + {dataset.expirySetting === 'Quarterly' + ? 'Quarters' + : 'Months'} + + + + {dataset.expiryMinDuration} + + + + + + Expiration duration ( Maximum ) in{' '} + {/*Check how can this hard coding be changes*/} + {dataset.expirySetting === 'Quarterly' + ? 'Quarters' + : 'Months'} + + + + {dataset.expiryMaxDuration} + + + + + )} diff --git a/frontend/src/modules/DatasetsBase/services/getDatasetDetails.js b/frontend/src/modules/DatasetsBase/services/getDatasetDetails.js new file mode 100644 index 000000000..bbc170b89 --- /dev/null +++ b/frontend/src/modules/DatasetsBase/services/getDatasetDetails.js @@ -0,0 +1,20 @@ +import { gql } from 'apollo-boost'; + +export const getDatasetExpirationDetails = ({ datasetUri }) => ({ + variables: { + datasetUri + }, + query: gql` + query GetDataset($datasetUri: String!) { + getDataset(datasetUri: $datasetUri) { + datasetUri + label + description + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + ` +}); diff --git a/frontend/src/modules/S3_Datasets/views/DatasetCreateForm.js b/frontend/src/modules/S3_Datasets/views/DatasetCreateForm.js index 5af89fdcb..2743a8fd2 100644 --- a/frontend/src/modules/S3_Datasets/views/DatasetCreateForm.js +++ b/frontend/src/modules/S3_Datasets/views/DatasetCreateForm.js @@ -9,11 +9,13 @@ import { CardHeader, Chip, CircularProgress, + Collapse, Container, FormHelperText, Grid, Link, MenuItem, + Switch, TextField, Typography } from '@mui/material'; @@ -23,6 +25,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { Link as RouterLink, useNavigate } from 'react-router-dom'; import * as Yup from 'yup'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { ArrowLeftIcon, ChevronRightIcon, @@ -35,7 +38,8 @@ import { createDataset } from '../services'; import { useClient, listEnvironmentGroups, - listValidEnvironments + listValidEnvironments, + fetchEnums } from 'services'; import { Topics, ConfidentialityList } from '../../constants'; import config from '../../../generated/config.json'; @@ -58,7 +62,9 @@ const DatasetCreateForm = (props) => { ) : ConfidentialityList ); - + const [showAdvancedControls, setShowAdvancedControl] = useState(false); + const [expirationMenu, setExpirationMenu] = useState([]); + const [enableShareExpiration, setEnableShareExpiration] = useState(false); const topicsData = Topics.map((t) => ({ label: t, value: t })); const fetchEnvironments = useCallback(async () => { @@ -103,11 +109,33 @@ const DatasetCreateForm = (props) => { } }; + const fetchExpirationOptions = async () => { + try { + const enumExpirationsOptions = await fetchEnums(client, ['Expiration']); + if (enumExpirationsOptions['Expiration'].length > 0) { + let datasetExpirationOptions = []; + enumExpirationsOptions['Expiration'].map((x) => { + let expirationType = { key: x.name, value: x.value }; + datasetExpirationOptions.push(expirationType); + }); + setExpirationMenu(datasetExpirationOptions); + } else { + const error = 'Could not fetch expiration options'; + dispatch({ type: SET_ERROR, error }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + useEffect(() => { if (client) { fetchEnvironments().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); + fetchExpirationOptions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); } }, [client, fetchEnvironments, dispatch]); @@ -125,7 +153,13 @@ const DatasetCreateForm = (props) => { description: values.description, topics: values.topics ? values.topics.map((t) => t.value) : [], confidentiality: values.confidentiality, - autoApprovalEnabled: values.autoApprovalEnabled + autoApprovalEnabled: values.autoApprovalEnabled, + enableExpiration: enableShareExpiration, + expirySetting: enableShareExpiration + ? values.expirationSetting + : null, + expiryMinDuration: enableShareExpiration ? values.minValidity : null, + expiryMaxDuration: enableShareExpiration ? values.maxValidity : null }) ); if (!response.errors) { @@ -223,7 +257,10 @@ const DatasetCreateForm = (props) => { SamlAdminGroupName: '', tags: [], topics: [], - autoApprovalEnabled: false + autoApprovalEnabled: false, + expirationSetting: '', + minValidity: 0, + maxValidity: 0 }} validationSchema={Yup.object().shape({ label: Yup.string() @@ -249,7 +286,20 @@ const DatasetCreateForm = (props) => { : Yup.string(), autoApprovalEnabled: Yup.boolean().required( '*AutoApproval property is required' - ) + ), + expirationSetting: enableShareExpiration + ? Yup.string().required('Expiration Setting required') + : Yup.string().nullable(), + minValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Minimum allowed expiration is required') + : Yup.number().nullable(), + maxValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Maximum allowed expiration is required') + : Yup.number().nullable() })} onSubmit={async ( values, @@ -424,6 +474,96 @@ const DatasetCreateForm = (props) => { )} + + + + + + { + setShowAdvancedControl(!showAdvancedControls); + }} + /> + + + + + Enable Share Expiration + { + setEnableShareExpiration( + !enableShareExpiration + ); + }} + /> + + + + + + {expirationMenu.map((item) => ( + + {item.key} + + ))} + + + + + + + + + + + diff --git a/frontend/src/modules/S3_Datasets/views/DatasetEditForm.js b/frontend/src/modules/S3_Datasets/views/DatasetEditForm.js index b621ac504..6026b1823 100644 --- a/frontend/src/modules/S3_Datasets/views/DatasetEditForm.js +++ b/frontend/src/modules/S3_Datasets/views/DatasetEditForm.js @@ -9,11 +9,15 @@ import { CardHeader, Chip, CircularProgress, + Collapse, Container, + Dialog, + Divider, FormHelperText, Grid, Link, MenuItem, + Switch, TextField, Typography } from '@mui/material'; @@ -32,6 +36,7 @@ import { } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { + fetchEnums, getDataset, listEnvironmentGroups, searchGlossary, @@ -41,6 +46,8 @@ import { updateDataset } from '../services'; import { ConfidentialityList, Topics } from '../../constants'; import config from '../../../generated/config.json'; import { isFeatureEnabled } from 'utils'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +import { Article } from '@mui/icons-material'; const DatasetEditForm = (props) => { const dispatch = useDispatch(); @@ -62,8 +69,12 @@ const DatasetEditForm = (props) => { ) : ConfidentialityList ); - + const [showAdvancedControls, setShowAdvancedControl] = useState(false); + const [expirationMenu, setExpirationMenu] = useState([]); + const [enableShareExpiration, setEnableShareExpiration] = useState(false); const topicsData = Topics.map((t) => ({ label: t, value: t })); + const [datasetEditFormModalOpen, setDatasetEditFormModalOpenClose] = + useState(false); const fetchGroups = useCallback( async (environmentUri) => { @@ -96,6 +107,7 @@ const DatasetEditForm = (props) => { const response = await client.query(getDataset(params.uri)); if (!response.errors && response.data.getDataset !== null) { setDataset(response.data.getDataset); + setEnableShareExpiration(response.data.getDataset.enableExpiration); fetchGroups(response.data.getDataset.environment.environmentUri).catch( (e) => dispatch({ type: SET_ERROR, error: e.message }) ); @@ -139,13 +151,57 @@ const DatasetEditForm = (props) => { setLoading(false); }, [client, dispatch, params.uri, fetchGroups]); + const fetchExpirationOptions = async () => { + try { + const enumExpirationsOptions = await fetchEnums(client, ['Expiration']); + if (enumExpirationsOptions['Expiration'].length > 0) { + let datasetExpirationOptions = []; + enumExpirationsOptions['Expiration'].map((x) => { + let expirationType = { key: x.name, value: x.value }; + datasetExpirationOptions.push(expirationType); + }); + setExpirationMenu(datasetExpirationOptions); + } else { + const error = 'Could not fetch expiration options'; + dispatch({ type: SET_ERROR, error }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + useEffect(() => { if (client) { fetchItem().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + fetchExpirationOptions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); } }, [client, dispatch, fetchItem]); + const handleModalPopUpWithMessage = () => { + setDatasetEditFormModalOpenClose(true); + }; + async function submit(values, setStatus, setSubmitting, setErrors) { + if ( + enableShareExpiration !== dataset.enableExpiration || + values.expirationSetting !== dataset.expirationSetting || + values.minValidity !== dataset.expiryMinDuration || + values.maxValidity !== dataset.expiryMaxDuration + ) { + handleModalPopUpWithMessage(); + } else { + await submitUpdateDataset(values, setStatus, setSubmitting, setErrors); + } + } + + async function submitUpdateDataset( + values, + setStatus, + setSubmitting, + setErrors + ) { try { const response = await client.mutate( updateDataset({ @@ -161,7 +217,15 @@ const DatasetEditForm = (props) => { : values.terms.map((t) => t.nodeUri), confidentiality: values.confidentiality, KmsAlias: values.KmsAlias, - autoApprovalEnabled: values.autoApprovalEnabled + autoApprovalEnabled: values.autoApprovalEnabled, + enableExpiration: enableShareExpiration, + expirySetting: enableShareExpiration + ? values.expirationSetting + : null, + expiryMinDuration: enableShareExpiration + ? values.minValidity + : null, + expiryMaxDuration: enableShareExpiration ? values.maxValidity : null } }) ); @@ -270,7 +334,10 @@ const DatasetEditForm = (props) => { stewards: dataset.stewards, confidentiality: dataset.confidentiality, KmsAlias: dataset.KmsAlias, - autoApprovalEnabled: dataset.autoApprovalEnabled + autoApprovalEnabled: dataset.autoApprovalEnabled, + expirationSetting: dataset.expirySetting, + minValidity: dataset.expiryMinDuration, + maxValidity: dataset.expiryMaxDuration }} validationSchema={Yup.object().shape({ label: Yup.string() @@ -292,7 +359,18 @@ const DatasetEditForm = (props) => { : Yup.string(), autoApprovalEnabled: Yup.boolean().required( '*AutoApproval property is required' - ) + ), + expirationSetting: Yup.string().nullable(), + minValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Minimum allowed expiration is required') + : Yup.number().nullable(), + maxValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Maximum allowed expiration is required') + : Yup.number().nullable() })} onSubmit={async ( values, @@ -309,7 +387,10 @@ const DatasetEditForm = (props) => { isSubmitting, setFieldValue, touched, - values + values, + setSubmitting, + setStatus, + setErrors }) => (
@@ -510,6 +591,99 @@ const DatasetEditForm = (props) => { )} + + + + + + + { + setShowAdvancedControl(!showAdvancedControls); + }} + /> + + + + + Enable Share Expiration + { + setEnableShareExpiration( + !enableShareExpiration + ); + }} + /> + + + + + + {expirationMenu.map((item) => ( + + {item.key} + + ))} + + + + + + + + + + + @@ -624,6 +798,15 @@ const DatasetEditForm = (props) => { + )} @@ -634,4 +817,79 @@ const DatasetEditForm = (props) => { ); }; +export const DatasetEditFormModal = (props) => { + const { + values, + setSubmitting, + setStatus, + setErrors, + isModalOpenClose, + setModalOpenClose, + submitUpdateDataset + } = props; + + const handleModalOpenClose = (triggerUpdate) => { + setModalOpenClose(false); + if (triggerUpdate) { + submitUpdateDataset(values, setStatus, setSubmitting, setErrors); + } + }; + + return ( + + + + + There are changes to the dataset expiration settings. If there + are any shares on this dataset they might get updated:
+ + If you are enabling expiration for the first time, all the + shares will automatically updated to have minimum expiration + period{' '} + +
+ + If you are editing an existing dataset expiration setting, all + shares who don't have expiration will have minimum expiration + period. All your existing shares with expiration won't change + +
+
+ Are you sure you want to update the dataset ? +
+ } + /> + + + + + +
+ + + ); +}; + export default DatasetEditForm; diff --git a/frontend/src/modules/S3_Datasets/views/DatasetImportForm.js b/frontend/src/modules/S3_Datasets/views/DatasetImportForm.js index 21454003f..ee44c47db 100644 --- a/frontend/src/modules/S3_Datasets/views/DatasetImportForm.js +++ b/frontend/src/modules/S3_Datasets/views/DatasetImportForm.js @@ -9,11 +9,13 @@ import { CardHeader, Chip, CircularProgress, + Collapse, Container, FormHelperText, Grid, Link, MenuItem, + Switch, TextField, Typography } from '@mui/material'; @@ -23,6 +25,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { Helmet } from 'react-helmet-async'; import { Link as RouterLink, useNavigate } from 'react-router-dom'; import * as Yup from 'yup'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { ArrowLeftIcon, ChevronRightIcon, @@ -32,6 +35,7 @@ import { } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { + fetchEnums, listEnvironmentGroups, listValidEnvironments, useClient @@ -58,7 +62,9 @@ const DatasetImportForm = (props) => { ) : ConfidentialityList ); - + const [showAdvancedControls, setShowAdvancedControl] = useState(false); + const [expirationMenu, setExpirationMenu] = useState([]); + const [enableShareExpiration, setEnableShareExpiration] = useState(false); const topicsData = Topics.map((t) => ({ label: t, value: t })); const fetchEnvironments = useCallback(async () => { @@ -103,11 +109,34 @@ const DatasetImportForm = (props) => { dispatch({ type: SET_ERROR, error: e.message }); } }; + + const fetchExpirationOptions = async () => { + try { + const enumExpirationsOptions = await fetchEnums(client, ['Expiration']); + if (enumExpirationsOptions['Expiration'].length > 0) { + let datasetExpirationOptions = []; + enumExpirationsOptions['Expiration'].map((x) => { + let expirationType = { key: x.name, value: x.value }; + datasetExpirationOptions.push(expirationType); + }); + setExpirationMenu(datasetExpirationOptions); + } else { + const error = 'Could not fetch expiration options'; + dispatch({ type: SET_ERROR, error }); + } + } catch (e) { + dispatch({ type: SET_ERROR, error: e.message }); + } + }; + useEffect(() => { if (client) { fetchEnvironments().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); + fetchExpirationOptions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); } }, [client, dispatch, fetchEnvironments]); @@ -128,7 +157,13 @@ const DatasetImportForm = (props) => { glueDatabaseName: values.glueDatabaseName, stewards: values.stewards, confidentiality: values.confidentiality, - autoApprovalEnabled: values.autoApprovalEnabled + autoApprovalEnabled: values.autoApprovalEnabled, + enableExpiration: enableShareExpiration, + expirySetting: enableShareExpiration + ? values.expirationSetting + : null, + expiryMinDuration: enableShareExpiration ? values.minValidity : null, + expiryMaxDuration: enableShareExpiration ? values.maxValidity : null }) ); if (!response.errors) { @@ -231,7 +266,10 @@ const DatasetImportForm = (props) => { bucketName: '', KmsKeyAlias: '', confidentiality: '', - autoApprovalEnabled: false + autoApprovalEnabled: false, + expirationSetting: '', + minValidity: 0, + maxValidity: 0 }} validationSchema={Yup.object().shape({ label: Yup.string() @@ -261,7 +299,20 @@ const DatasetImportForm = (props) => { : Yup.string(), autoApprovalEnabled: Yup.boolean().required( '*AutoApproval property is required' - ) + ), + expirationSetting: enableShareExpiration + ? Yup.string().required('Expiration Setting required') + : Yup.string().nullable(), + minValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Minimum allowed expiration is required') + : Yup.number().nullable(), + maxValidity: enableShareExpiration + ? Yup.number() + .positive() + .required('*Maximum allowed expiration is required') + : Yup.number().nullable() })} onSubmit={async ( values, @@ -437,6 +488,97 @@ const DatasetImportForm = (props) => { )} + + + + + + + { + setShowAdvancedControl(!showAdvancedControls); + }} + /> + + + + + Enable Share Expiration + { + setEnableShareExpiration( + !enableShareExpiration + ); + }} + /> + + + + + + {expirationMenu.map((item) => ( + + {item.key} + + ))} + + + + + + + + + + +
diff --git a/frontend/src/modules/Shared/Shares/ShareEditForm.js b/frontend/src/modules/Shared/Shares/ShareEditForm.js index a7d7bd6da..80adf5f32 100644 --- a/frontend/src/modules/Shared/Shares/ShareEditForm.js +++ b/frontend/src/modules/Shared/Shares/ShareEditForm.js @@ -11,9 +11,19 @@ import { TableRow, Tooltip, TextField, - Typography + Typography, + Collapse, + FormControlLabel, + FormGroup } from '@mui/material'; -import { Defaults, Pager, ShareHealthStatus, ShareStatus } from 'design'; +import { + ArrowRightIcon, + Defaults, + Label, + Pager, + ShareHealthStatus, + ShareStatus +} from 'design'; import SendIcon from '@mui/icons-material/Send'; import React, { useCallback, useEffect, useState } from 'react'; import { @@ -21,13 +31,17 @@ import { getShareObject, removeSharedItem, revokeItemsShareObject, - submitApproval, - updateShareRequestReason + submitShareObject, + updateShareRequestReason, + updateShareExpirationPeriod, + submitExtension } from '../../Shares/services'; import { SET_ERROR } from '../../../globalErrors'; import { DeleteOutlined } from '@mui/icons-material'; import PropTypes from 'prop-types'; import { useNavigate, useLocation } from 'react-router-dom'; +import EditIcon from '@mui/icons-material/Edit'; +import Checkbox from '@mui/material/Checkbox'; const ItemRow = (props) => { const { @@ -154,7 +168,8 @@ const ItemRow = (props) => { shareStatus === 'Processed' || shareStatus === 'Rejected' || shareStatus === 'Revoked' || - shareStatus === 'Submitted') && ( + shareStatus === 'Submitted' || + shareStatus === 'Extension_Rejected') && ( {possibleAction === 'Delete' && ( + )} + {(share.status === 'Draft' || + share.status === 'Processed' || + share.status === 'Extension_Rejected' || + share.status === 'Rejected') && + sharedItems.nodes.filter( + (node) => node.status === 'PendingApproval' + ).length === 0 && + sharedItems.nodes.filter( + (node) => node.status === 'Share_Succeeded' + ).length > 0 && ( + + )} + + + + { + setShareExpiration(parseInt(event.target.value)); + }} + disabled={requestNonExpirableShare} + value={shareExpiration} + /> + + + + { + setNonExpirableShare(value); + }} + /> + } + /> + + + {(share.status === 'Draft' || + share.status === 'Processed' || + share.status === 'Extension_Rejected' || + share.status === 'Rejected') && + sharedItems.nodes.filter( + (node) => node.status === 'PendingApproval' + ).length === 0 && + sharedItems.nodes.filter( + (node) => node.status === 'Share_Succeeded' + ).length > 0 && ( + + { + setShareExtensionReason(event.target.value); + }} + /> + + + )} + + + )} {shareStatus.toUpperCase() === 'DRAFT' && (share.userRoleForShareObject === 'Requesters' || - share.userRoleForShareObject === 'ApproversAndRequesters') && ( + share.userRoleForShareObject === 'ApproversAndRequesters') && + !editShareExtension && ( { gutterBottom variant="h4" > - Reject Share + Reject Share {share.submittedForExtension ? 'Extension' : ''} @@ -94,7 +94,8 @@ export const ShareRejectModal = (props) => { type="submit" variant="contained" > - Reject Share + Reject Share{' '} + {share.submittedForExtension ? 'Extension' : ''} diff --git a/frontend/src/modules/Shares/components/ShareUpdateExtension.js b/frontend/src/modules/Shares/components/ShareUpdateExtension.js new file mode 100644 index 000000000..1cb72a2ef --- /dev/null +++ b/frontend/src/modules/Shares/components/ShareUpdateExtension.js @@ -0,0 +1,171 @@ +import PropTypes from 'prop-types'; +import * as Yup from 'yup'; +import { Formik } from 'formik'; +import { + Box, + CardContent, + Dialog, + TextField, + FormHelperText, + Typography +} from '@mui/material'; +import { LoadingButton } from '@mui/lab'; +import { SET_ERROR } from 'globalErrors'; +import SendIcon from '@mui/icons-material/Send'; +import React, { useState } from 'react'; +import { PencilAltIcon } from '../../../design'; +import { updateShareExtensionReason } from '../services/updateShareExtensionReason'; + +export const UpdateExtensionReason = (props) => { + const { share, client, dispatch, enqueueSnackbar, fetchItem, ...other } = + props; + const [isUpdateExtensionModalOpen, setIsUpdateExtensionModalOpen] = + useState(false); + const [updating, setUpdating] = useState(false); + + const handleUpdateExtensionModalOpen = () => { + setIsUpdateExtensionModalOpen(true); + }; + const handleUpdateExtensionModalClose = () => { + setIsUpdateExtensionModalOpen(false); + }; + const update = async (comment) => { + setUpdating(true); + const response = await client.mutate( + updateShareExtensionReason({ + shareUri: share.shareUri, + extensionPurpose: comment + }) + ); + if (!response.errors) { + handleUpdateExtensionModalClose(); + enqueueSnackbar('Share extension reason updated', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + await fetchItem(); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setUpdating(false); + }; + + return ( + <> + + + + + Update Share Extension Reason + + + + Update a reason to extend the share request: + + + + { + await update(values.comment); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +
+ + + + {touched.comment && errors.comment && ( + + + {errors.comment} + + + )} + + + + } + color="primary" + disabled={isSubmitting} + type="submit" + variant="contained" + > + Update Share Extension Reason + + +
+ )} +
+
+
+
+ + ); +}; + +UpdateExtensionReason.propTypes = { + share: PropTypes.any, + client: PropTypes.any, + dispatch: PropTypes.any, + enqueueSnackbar: PropTypes.any, + fetchItem: PropTypes.func +}; diff --git a/frontend/src/modules/Shares/services/approveShareExtension.js b/frontend/src/modules/Shares/services/approveShareExtension.js new file mode 100644 index 000000000..0fba9b063 --- /dev/null +++ b/frontend/src/modules/Shares/services/approveShareExtension.js @@ -0,0 +1,15 @@ +import { gql } from 'apollo-boost'; + +export const approveShareExtension = ({ shareUri }) => ({ + variables: { + shareUri + }, + mutation: gql` + mutation approveShareExtension($shareUri: String!) { + approveShareExtension(shareUri: $shareUri) { + shareUri + status + } + } + ` +}); diff --git a/frontend/src/modules/Shares/services/cancelShareExtension.js b/frontend/src/modules/Shares/services/cancelShareExtension.js new file mode 100644 index 000000000..050470165 --- /dev/null +++ b/frontend/src/modules/Shares/services/cancelShareExtension.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const cancelShareExtension = ({ shareUri }) => ({ + variables: { + shareUri + }, + mutation: gql` + mutation cancelShareExtension($shareUri: String!) { + cancelShareExtension(shareUri: $shareUri) + } + ` +}); diff --git a/frontend/src/modules/Shares/services/getShareObject.js b/frontend/src/modules/Shares/services/getShareObject.js index c2856d9d7..f634b68c5 100644 --- a/frontend/src/modules/Shares/services/getShareObject.js +++ b/frontend/src/modules/Shares/services/getShareObject.js @@ -17,6 +17,12 @@ export const getShareObject = ({ shareUri, filter }) => ({ userRoleForShareObject canViewLogs permissions + expiryDate + requestedExpiryDate + submittedForExtension + nonExpirable + extensionReason + shareExpirationPeriod principal { principalName principalType @@ -54,6 +60,8 @@ export const getShareObject = ({ shareUri, filter }) => ({ exists description datasetType + enableExpiration + expirySetting } } } diff --git a/frontend/src/modules/Shares/services/index.js b/frontend/src/modules/Shares/services/index.js index 60063c20c..64822d987 100644 --- a/frontend/src/modules/Shares/services/index.js +++ b/frontend/src/modules/Shares/services/index.js @@ -8,7 +8,7 @@ export * from './listOwnedDatasets'; export * from './rejectShareObject'; export * from './removeSharedItem'; export * from './revokeItemsShareObject'; -export * from './submitApproval'; +export * from './submitShareObject'; export * from './updateShareRejectReason'; export * from './updateShareRequestReason'; export * from './verifyItemsShareObject'; @@ -18,3 +18,7 @@ export * from './updateShareItemFilters'; export * from './getShareItemDataFilters'; export * from './removeShareItemFilter'; export * from './listTableDataFiltersByAttached'; +export * from './updateShareExpiration'; +export * from './submitExtension'; +export * from './approveShareExtension'; +export * from './cancelShareExtension'; diff --git a/frontend/src/modules/Shares/services/submitExtension.js b/frontend/src/modules/Shares/services/submitExtension.js new file mode 100644 index 000000000..1f601c13f --- /dev/null +++ b/frontend/src/modules/Shares/services/submitExtension.js @@ -0,0 +1,33 @@ +import { gql } from 'apollo-boost'; + +export const submitExtension = ({ + shareUri, + expiration, + extensionReason, + nonExpirable +}) => ({ + variables: { + shareUri, + expiration, + extensionReason, + nonExpirable + }, + mutation: gql` + mutation submitShareExtension( + $shareUri: String! + $expiration: Int + $extensionReason: String + $nonExpirable: Boolean + ) { + submitShareExtension( + shareUri: $shareUri + expiration: $expiration + extensionReason: $extensionReason + nonExpirable: $nonExpirable + ) { + shareUri + status + } + } + ` +}); diff --git a/frontend/src/modules/Shares/services/submitApproval.js b/frontend/src/modules/Shares/services/submitShareObject.js similarity index 81% rename from frontend/src/modules/Shares/services/submitApproval.js rename to frontend/src/modules/Shares/services/submitShareObject.js index bb0756d78..72c5f59bc 100644 --- a/frontend/src/modules/Shares/services/submitApproval.js +++ b/frontend/src/modules/Shares/services/submitShareObject.js @@ -1,6 +1,6 @@ import { gql } from 'apollo-boost'; -export const submitApproval = ({ shareUri }) => ({ +export const submitShareObject = ({ shareUri }) => ({ variables: { shareUri }, diff --git a/frontend/src/modules/Shares/services/updateShareExpiration.js b/frontend/src/modules/Shares/services/updateShareExpiration.js new file mode 100644 index 000000000..f60afcab5 --- /dev/null +++ b/frontend/src/modules/Shares/services/updateShareExpiration.js @@ -0,0 +1,26 @@ +import { gql } from 'apollo-boost'; + +export const updateShareExpirationPeriod = ({ + shareUri, + expiration, + nonExpirable +}) => ({ + variables: { + shareUri, + expiration, + nonExpirable + }, + mutation: gql` + mutation updateShareExpirationPeriod( + $shareUri: String! + $expiration: Int + $nonExpirable: Boolean + ) { + updateShareExpirationPeriod( + shareUri: $shareUri + expiration: $expiration + nonExpirable: $nonExpirable + ) + } + ` +}); diff --git a/frontend/src/modules/Shares/services/updateShareExtensionReason.js b/frontend/src/modules/Shares/services/updateShareExtensionReason.js new file mode 100644 index 000000000..c25374293 --- /dev/null +++ b/frontend/src/modules/Shares/services/updateShareExtensionReason.js @@ -0,0 +1,19 @@ +import { gql } from 'apollo-boost'; + +export const updateShareExtensionReason = ({ shareUri, extensionPurpose }) => ({ + variables: { + shareUri: shareUri, + extensionPurpose: extensionPurpose + }, + mutation: gql` + mutation updateShareExtensionReason( + $shareUri: String! + $extensionPurpose: String! + ) { + updateShareExtensionReason( + shareUri: $shareUri + extensionPurpose: $extensionPurpose + ) + } + ` +}); diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index d019d246a..460a089a4 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -47,7 +47,8 @@ import { ShareStatus, ShareHealthStatus, TextAvatar, - useSettings + useSettings, + Label } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { useClient } from 'services'; @@ -57,11 +58,13 @@ import { getShareObject, rejectShareObject, removeSharedItem, - submitApproval, + submitShareObject, revokeItemsShareObject, verifyItemsShareObject, reApplyItemsShareObject, - getShareItemDataFilters + getShareItemDataFilters, + approveShareExtension, + cancelShareExtension } from '../services'; import { AddShareItemModal, @@ -75,6 +78,8 @@ import { import { generateShareItemLabel } from 'utils'; import { ShareLogs } from '../components/ShareLogs'; import { ShareSubmitModal } from '../components/ShareSubmitModal'; +import { UpdateExtensionReason } from '../components/ShareUpdateExtension'; +import CancelIcon from '@mui/icons-material/Close'; function ShareViewHeader(props) { const { @@ -91,6 +96,7 @@ function ShareViewHeader(props) { const [accepting, setAccepting] = useState(false); const [rejecting, setRejecting] = useState(false); const [submitting, setSubmitting] = useState(false); + const [cancellingExtension, setCancellingExtension] = useState(false); const [isRejectShareModalOpen, setIsRejectShareModalOpen] = useState(false); const [openLogsModal, setOpenLogsModal] = useState(null); const anchorRef = useRef(null); @@ -107,7 +113,7 @@ function ShareViewHeader(props) { const submit = async () => { setSubmitting(true); const response = await client.mutate( - submitApproval({ + submitShareObject({ shareUri: share.shareUri }) ); @@ -178,7 +184,55 @@ function ShareViewHeader(props) { setIsSubmitShareModalOpen(false); }; - const accept = async () => { + const handleApproveExtensionShare = async () => { + setAccepting(true); + const response = await client.mutate( + approveShareExtension({ + shareUri: share.shareUri + }) + ); + + if (!response.errors) { + enqueueSnackbar('Share Extension request approved', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + await fetchItems(); + await fetchItem(); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setAccepting(false); + }; + + const handleCancelShareExtensionRequest = async () => { + setCancellingExtension(true); + const response = await client.mutate( + cancelShareExtension({ + shareUri: share.shareUri + }) + ); + + if (!response.errors) { + enqueueSnackbar('Share Extension request cancelled', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + await fetchItems(); + await fetchItem(); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setCancellingExtension(false); + }; + + const handleApproveShare = async () => { setAccepting(true); const response = await client.mutate( approveShareObject({ @@ -202,7 +256,7 @@ function ShareViewHeader(props) { setAccepting(false); }; - const reject = async (rejectPurpose) => { + const handleRejectShare = async (rejectPurpose) => { setRejecting(true); const response = await client.mutate( rejectShareObject({ @@ -305,7 +359,7 @@ function ShareViewHeader(props) { color="success" startIcon={} sx={{ m: 1 }} - onClick={accept} + onClick={handleApproveShare} ref={anchorRef} type="button" variant="outlined" @@ -325,6 +379,32 @@ function ShareViewHeader(props) { )} + {share.status === 'Submitted_For_Extension' && ( + <> + } + sx={{ m: 1 }} + onClick={handleApproveExtensionShare} + type="button" + variant="outlined" + > + Approve Extension + + } + onClick={handleRejectShareModalOpen} + type="button" + variant="outlined" + > + Reject Extension + + + )} )} Edit + {(share.userRoleForShareObject === 'Requesters' || + share.userRoleForShareObject === 'ApproversAndRequesters') && ( + <> + {share.status === 'Submitted_For_Extension' && ( + } + sx={{ m: 1 }} + onClick={handleCancelShareExtensionRequest} + type="button" + variant="outlined" + > + Cancel Extension + + )} + + )} {(share.userRoleForShareObject === 'Requesters' || share.userRoleForShareObject === 'ApproversAndRequesters') && ( <> @@ -387,7 +485,7 @@ function ShareViewHeader(props) { onApply={handleRejectShareModalClose} onClose={handleRejectShareModalClose} open={isRejectShareModalOpen} - rejectFunction={reject} + rejectFunction={handleRejectShare} /> )} {isSubmitShareModalOpen && ( @@ -917,6 +1015,89 @@ const ShareView = () => { + {share.dataset.enableExpiration && ( + + + + Share Expiration Date + + + + + {' '} + {share.nonExpirable && + [ + 'Processed', + 'Extension_Failed', + 'Extension_Rejected' + ].some((item) => + share.status.includes(item) + ) ? ( + + ) : share.expiryDate != null ? ( + + ) : ( + 'Share expiration date not set' + )} + + + + )} + {share.dataset.enableExpiration && + (share.status === 'Submitted_For_Extension' || + share.status === 'Draft' || + share.status === 'Submitted') && ( + + + + Requested Share Expiration Date + + + + + {share.requestedExpiryDate != null ? ( + + ) : !share.nonExpirable ? ( + 'Requested expiration date not available' + ) : ( + + )} + + + + )}
@@ -1002,6 +1183,56 @@ const ShareView = () => { {share.rejectPurpose || '-'} + + {share.dataset.enableExpiration && ( +
+ + + + + + Extension Purpose + + + + + {(share.userRoleForShareObject === + 'Requesters' || + share.userRoleForShareObject === + 'ApproversAndRequesters') && + (share.status === 'Submitted' || + share.status === + 'Submitted_For_Extension' || + share.status === 'Draft') && + share.submittedForExtension && ( + + )} + + + + + {share.extensionReason || '-'} + + +
+ )} diff --git a/frontend/src/services/graphql/Datasets/getDataset.js b/frontend/src/services/graphql/Datasets/getDataset.js index 1c43bd8ad..944bf050f 100644 --- a/frontend/src/services/graphql/Datasets/getDataset.js +++ b/frontend/src/services/graphql/Datasets/getDataset.js @@ -42,6 +42,10 @@ export const getDataset = (datasetUri) => ({ language confidentiality autoApprovalEnabled + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration organization { organizationUri label diff --git a/tests/modules/redshift_datasets_shares/conftest.py b/tests/modules/redshift_datasets_shares/conftest.py index e000e5ec9..463a008a2 100644 --- a/tests/modules/redshift_datasets_shares/conftest.py +++ b/tests/modules/redshift_datasets_shares/conftest.py @@ -233,6 +233,7 @@ def redshift_share_request_cross_account(db, user2, group2, env_fixture_2, targe requestPurpose=None, attachMissingPolicies=False, permissions=[ShareObjectDataPermission.Read.value], + shareExpirationPeriod=None, ) dispose_context() yield share @@ -255,6 +256,7 @@ def redshift_share_request_2_same_account( requestPurpose=None, attachMissingPolicies=False, permissions=[ShareObjectDataPermission.Read.value], + shareExpirationPeriod=None, ) dispose_context() yield share diff --git a/tests/modules/s3_datasets/conftest.py b/tests/modules/s3_datasets/conftest.py index 402b3186d..9c4d27b2e 100644 --- a/tests/modules/s3_datasets/conftest.py +++ b/tests/modules/s3_datasets/conftest.py @@ -85,6 +85,10 @@ def factory( businessOwnerDelegationEmails SamlAdminGroupName GlueCrawlerName + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration tables{ nodes{ tableUri diff --git a/tests/modules/s3_datasets/test_dataset.py b/tests/modules/s3_datasets/test_dataset.py index c2e55fe6c..69b1de0f6 100644 --- a/tests/modules/s3_datasets/test_dataset.py +++ b/tests/modules/s3_datasets/test_dataset.py @@ -45,6 +45,24 @@ def dataset1( yield d +@pytest.fixture(scope='module') +def dataset2( + module_mocker, + org_fixture: Organization, + env_fixture: Environment, + dataset: typing.Callable, + group, +) -> S3Dataset: + kms_client = MagicMock() + module_mocker.patch('dataall.modules.s3_datasets.services.dataset_service.KmsClient', kms_client) + + kms_client().get_key_id.return_value = mocked_key_id + + d = dataset(org=org_fixture, env=env_fixture, name='dataset1', owner=env_fixture.owner, group=group.name) + print(d) + yield d + + def test_get_dataset(client, dataset1, env_fixture, group): response = client.query( """ @@ -528,3 +546,196 @@ def test_dataset_stack(client, dataset_fixture, group): dataset = dataset_fixture response = update_stack_query(client, dataset.datasetUri, 'dataset', dataset.SamlAdminGroupName) assert response.data.updateStack.targetUri == dataset.datasetUri + + +def test_create_dataset_with_expiration_setting(client, env_fixture, org_fixture, db, group2, group, user, patch_es): + response = client.query( + """ + mutation CreateDataset($input:NewDatasetInput!){ + createDataset( + input:$input + ){ + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + """, + username=user.username, + groups=[group.name], + input={ + 'owner': user.username, + 'label': f'stewardsds', + 'description': 'test dataset {name}', + 'businessOwnerEmail': 'jeff@amazon.com', + 'tags': ['t1', 't2'], + 'environmentUri': env_fixture.environmentUri, + 'SamlAdminGroupName': group.name, + 'stewards': group2.name, + 'organizationUri': org_fixture.organizationUri, + 'enableExpiration': True, + 'expirySetting': 'Monthly', + 'expiryMinDuration': 1, + 'expiryMaxDuration': 3, + }, + ) + + assert response.data.createDataset.enableExpiration == True + assert response.data.createDataset.expirySetting == 'Monthly' + assert response.data.createDataset.expiryMinDuration == 1 + assert response.data.createDataset.expiryMaxDuration == 3 + + +def test_update_dataset_with_expiration_setting_changes(dataset2, client, user, group, group2): + assert dataset2.enableExpiration == False + assert dataset2.expirySetting == None + assert dataset2.expiryMinDuration == None + assert dataset2.expiryMaxDuration == None + + response = client.query( + """ + mutation UpdateDataset($datasetUri:String!,$input:ModifyDatasetInput){ + updateDataset(datasetUri:$datasetUri,input:$input){ + datasetUri + label + tags + stewards + confidentiality + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + """, + username=user.username, + datasetUri=dataset2.datasetUri, + input={ + 'label': 'dataset1updated', + 'stewards': group2.name, + 'confidentiality': ConfidentialityClassification.Secret.value, + 'KmsAlias': '', + 'enableExpiration': True, + 'expirySetting': 'Monthly', + 'expiryMinDuration': 1, + 'expiryMaxDuration': 3, + }, + groups=[group.name], + ) + + assert response.data.updateDataset.enableExpiration == True + assert response.data.updateDataset.expirySetting == 'Monthly' + assert response.data.updateDataset.expiryMinDuration == 1 + assert response.data.updateDataset.expiryMaxDuration == 3 + + +def test_update_dataset_with_expiration_with_incorrect_input(dataset2, client, group, group2): + assert dataset2.enableExpiration == False + assert dataset2.expirySetting == None + assert dataset2.expiryMinDuration == None + assert dataset2.expiryMaxDuration == None + + response = client.query( + """ + mutation UpdateDataset($datasetUri:String!,$input:ModifyDatasetInput){ + updateDataset(datasetUri:$datasetUri,input:$input){ + datasetUri + label + tags + stewards + confidentiality + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + """, + username=dataset2.owner, + datasetUri=dataset2.datasetUri, + input={ + 'label': 'dataset1updated', + 'stewards': group2.name, + 'confidentiality': ConfidentialityClassification.Secret.value, + 'KmsAlias': '', + 'enableExpiration': True, + 'expirySetting': 'SOMETHING', + 'expiryMinDuration': 1, + 'expiryMaxDuration': 3, + }, + groups=[group.name], + ) + + assert 'InvalidInput' in response.errors[0].message + assert 'Expiration Setting value SOMETHING must be is of invalid type' in response.errors[0].message + + response = client.query( + """ + mutation UpdateDataset($datasetUri:String!,$input:ModifyDatasetInput){ + updateDataset(datasetUri:$datasetUri,input:$input){ + datasetUri + label + tags + stewards + confidentiality + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + """, + username=dataset2.owner, + datasetUri=dataset2.datasetUri, + input={ + 'label': 'dataset1updated', + 'stewards': group2.name, + 'confidentiality': ConfidentialityClassification.Secret.value, + 'KmsAlias': '', + 'enableExpiration': True, + 'expirySetting': 'Monthly', + 'expiryMinDuration': -1, + 'expiryMaxDuration': 3, + }, + groups=[group.name], + ) + + assert 'InvalidInput' in response.errors[0].message + assert 'expiration duration value must be must be greater than zero' in response.errors[0].message + + +def test_import_dataset_with_expiration_setting(org_fixture, env_fixture, dataset1, client, group): + response = client.query( + """ + mutation importDataset($input:ImportDatasetInput){ + importDataset(input:$input){ + enableExpiration + expirySetting + expiryMinDuration + expiryMaxDuration + } + } + """, + username=dataset1.owner, + groups=[group.name], + input={ + 'organizationUri': org_fixture.organizationUri, + 'environmentUri': env_fixture.environmentUri, + 'label': 'datasetImportedin', + 'bucketName': 'dhimportedbucketin', + 'glueDatabaseName': 'dhimportedGlueDBin', + 'adminRoleName': 'dhimportedRolein', + 'KmsKeyAlias': '1234-YYEY-888', + 'owner': dataset1.owner, + 'SamlAdminGroupName': group.name, + 'enableExpiration': True, + 'expirySetting': 'Monthly', + 'expiryMinDuration': 1, + 'expiryMaxDuration': 3, + }, + ) + assert response.data.importDataset.enableExpiration == True + assert response.data.importDataset.expirySetting == 'Monthly' + assert response.data.importDataset.expiryMinDuration == 1 + assert response.data.importDataset.expiryMaxDuration == 3 diff --git a/tests/modules/s3_datasets_shares/conftest.py b/tests/modules/s3_datasets_shares/conftest.py index f52542051..63703a790 100644 --- a/tests/modules/s3_datasets_shares/conftest.py +++ b/tests/modules/s3_datasets_shares/conftest.py @@ -3,10 +3,13 @@ import pytest +from dataall.base.utils.expiration_util import ExpirationUtils from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup from dataall.core.organizations.db.organization_models import Organization from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.modules.shares_base.services.shares_enums import ShareableType, PrincipalType, ShareObjectDataPermission +from dataall.modules.shares_base.services.share_object_service import ShareObjectService +from dataall.modules.shares_base.services.shares_enums import ShareableType, PrincipalType from dataall.modules.shares_base.db.share_object_models import ShareObject, ShareObjectItem from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_REQUESTER, SHARE_OBJECT_APPROVER from dataall.modules.datasets_base.services.datasets_enums import ConfidentialityClassification @@ -307,7 +310,14 @@ def folder_fixture(db, dataset_fixture): @pytest.fixture(scope='module') def dataset_model(db): def factory( - organization: Organization, environment: Environment, label: str, autoApprovalEnabled: bool = False + organization: Organization, + environment: Environment, + label: str, + autoApprovalEnabled: bool = False, + enableExpiration: bool = False, + expirySetting: str = None, + expiryMinDuration: int = None, + expiryMaxDuration: int = None, ) -> S3Dataset: with db.scoped_session() as session: dataset = S3Dataset( @@ -327,6 +337,10 @@ def factory( IAMDatasetAdminUserArn=f'arn:aws:iam::{environment.AwsAccountId}:user/dataset', IAMDatasetAdminRoleArn=f'arn:aws:iam::{environment.AwsAccountId}:role/dataset', autoApprovalEnabled=autoApprovalEnabled, + expirySetting=expirySetting, + enableExpiration=enableExpiration, + expiryMinDuration=expiryMinDuration, + expiryMaxDuration=expiryMaxDuration, ) session.add(dataset) session.commit() @@ -402,7 +416,11 @@ def factory( owner: str, status: str, permissions=[ShareObjectDataPermission.Read.value], + shareExpirationPeriod: int = None, ) -> ShareObject: + expirationDate = None + if shareExpirationPeriod is not None: + expirationDate = ExpirationUtils.calculate_expiry_date(shareExpirationPeriod, dataset.expirySetting) with db.scoped_session() as session: share = ShareObject( datasetUri=dataset.datasetUri, @@ -413,6 +431,7 @@ def factory( principalType=PrincipalType.Group.value, principalRoleName=env_group.environmentIAMRoleName, status=status, + expiryDate=expirationDate, permissions=[permissions], ) session.add(share) diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 4d4516f74..703ea218a 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -1,13 +1,16 @@ import random import typing +from datetime import datetime from unittest.mock import MagicMock import boto3 import pytest from assertpy import assert_that +from dataall.base.utils.expiration_util import ExpirationUtils from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup, ConsumptionRole from dataall.core.organizations.db.organization_models import Organization +from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.shares_base.services.shares_enums import ShareableType, PrincipalType, ShareObjectDataPermission from dataall.modules.shares_base.services.shares_enums import ( ShareObjectActions, @@ -73,6 +76,61 @@ def dataset1(dataset_model: typing.Callable, org1: Organization, env1: Environme yield dataset_model(organization=org1, environment=env1, label='datasettoshare') +@pytest.fixture(scope='module') +def dataset_with_expiration(dataset_model: typing.Callable, org1: Organization, env1: Environment) -> S3Dataset: + yield dataset_model( + organization=org1, + environment=env1, + label='datasettoshare', + enableExpiration=True, + expirySetting='Monthly', + expiryMinDuration=1, + expiryMaxDuration=3, + ) + + +@pytest.fixture(scope='module') +def dataset_with_expiration_3(dataset_model: typing.Callable, org1: Organization, env1: Environment) -> S3Dataset: + yield dataset_model( + organization=org1, + environment=env1, + label='datasettoshare', + enableExpiration=True, + expirySetting='Monthly', + expiryMinDuration=1, + expiryMaxDuration=3, + ) + + +@pytest.fixture(scope='module') +def dataset_with_expiration_2(dataset_model: typing.Callable, org2: Organization, env2: Environment) -> S3Dataset: + yield dataset_model( + organization=org2, + environment=env2, + label='datasettoshare', + enableExpiration=True, + expirySetting='Monthly', + expiryMinDuration=1, + expiryMaxDuration=3, + ) + + +@pytest.fixture(scope='module') +def dataset_with_expiration_with_autoapproval( + dataset_model: typing.Callable, org2: Organization, env2: Environment +) -> S3Dataset: + yield dataset_model( + organization=org2, + environment=env2, + label='datasettoshare', + enableExpiration=True, + expirySetting='Monthly', + expiryMinDuration=1, + expiryMaxDuration=3, + autoApprovalEnabled=True, + ) + + @pytest.fixture(scope='module') def tables1(table: typing.Callable, dataset1: S3Dataset): for i in range(1, 100): @@ -89,6 +147,18 @@ def table1_1(table: typing.Callable, dataset1: S3Dataset) -> DatasetTable: yield table(dataset=dataset1, name='table5', username='alice') +@pytest.fixture(scope='module', autouse=True) +def table1_expiration_dataset(table: typing.Callable, dataset_with_expiration_2: S3Dataset) -> DatasetTable: + yield table(dataset=dataset_with_expiration_2, name='table5', username='alice') + + +@pytest.fixture(scope='module', autouse=True) +def table1_expiration_dataset_with_autoapproval( + table: typing.Callable, dataset_with_expiration_with_autoapproval: S3Dataset +) -> DatasetTable: + yield table(dataset=dataset_with_expiration_with_autoapproval, name='table5', username='alice') + + @pytest.fixture(scope='module') def org2(org: typing.Callable, group2, user2) -> Organization: yield org('org2', group2, user2) @@ -361,6 +431,162 @@ def share3_item_shared( yield share_item(share=share3_processed, table=table1, status=ShareItemStatus.Share_Succeeded.value) +@pytest.fixture(scope='function') +def share3_with_expiration_processed( + db, + client, + user2, + group2, + share: typing.Callable, + dataset_with_expiration_2: S3Dataset, + env2: Environment, + env2group: EnvironmentGroup, + shareExpirationPeriod=1, +) -> ShareObject: + share3_processed_with_expiration = share( + dataset=dataset_with_expiration_2, + environment=env2, + env_group=env2group, + owner=user2.username, + status=ShareObjectStatus.Processed.value, + shareExpirationPeriod=shareExpirationPeriod, + ) + yield share3_processed_with_expiration + # Cleanup share + # First try to direct delete + delete_share_object_response = delete_share_object( + client=client, user=user2, group=group2, shareUri=share3_processed_with_expiration.shareUri + ) + + if delete_share_object_response.data.deleteShareObject == True: + return + + # Revert healthStatus back to healthy + with db.scoped_session() as session: + ShareStatusRepository.update_share_item_health_status_batch( + session=session, + share_uri=share3_processed_with_expiration.shareUri, + old_status=ShareItemHealthStatus.PendingReApply.value, + new_status=ShareItemHealthStatus.Healthy.value, + ) + + # Given share item in shared states + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_processed_with_expiration.shareUri, + filter={'isShared': True}, + ) + revoked_items_uris = [ + node.shareItemUri for node in get_share_object_response.data.getShareObject.get('items').nodes + ] + + # Then delete via revoke items if still items present + revoke_items_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_processed_with_expiration.shareUri, + revoked_items_uris=revoked_items_uris, + ) + _successfull_processing_for_share_object(db, share3_processed_with_expiration) + + delete_share_object(client=client, user=user2, group=group2, shareUri=share3_processed_with_expiration.shareUri) + + +@pytest.fixture(scope='function') +def share3_item_expiration_share( + share_item: typing.Callable, share3_with_expiration_processed: ShareObject, table1_expiration_dataset: DatasetTable +) -> ShareObjectItem: + # Cleaned up with share3 + yield share_item( + share=share3_with_expiration_processed, + table=table1_expiration_dataset, + status=ShareItemStatus.Share_Succeeded.value, + ) + + +@pytest.fixture(scope='function') +def share3_with_expiration_processed_with_autoapproval( + db, + client, + user2, + group2, + share: typing.Callable, + dataset_with_expiration_with_autoapproval: S3Dataset, + env2: Environment, + env2group: EnvironmentGroup, + shareExpirationPeriod=1, +) -> ShareObject: + share3_processed_with_expiration_with_autoapproval = share( + dataset=dataset_with_expiration_with_autoapproval, + environment=env2, + env_group=env2group, + owner=user2.username, + status=ShareObjectStatus.Processed.value, + shareExpirationPeriod=shareExpirationPeriod, + ) + yield share3_processed_with_expiration_with_autoapproval + # Cleanup share + # First try to direct delete + delete_share_object_response = delete_share_object( + client=client, user=user2, group=group2, shareUri=share3_processed_with_expiration_with_autoapproval.shareUri + ) + + if delete_share_object_response.data.deleteShareObject == True: + return + + # Revert healthStatus back to healthy + with db.scoped_session() as session: + ShareStatusRepository.update_share_item_health_status_batch( + session=session, + share_uri=share3_processed_with_expiration_with_autoapproval.shareUri, + old_status=ShareItemHealthStatus.PendingReApply.value, + new_status=ShareItemHealthStatus.Healthy.value, + ) + + # Given share item in shared states + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_processed_with_expiration_with_autoapproval.shareUri, + filter={'isShared': True}, + ) + revoked_items_uris = [ + node.shareItemUri for node in get_share_object_response.data.getShareObject.get('items').nodes + ] + + # Then delete via revoke items if still items present + revoke_items_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_processed_with_expiration_with_autoapproval.shareUri, + revoked_items_uris=revoked_items_uris, + ) + _successfull_processing_for_share_object(db, share3_processed_with_expiration_with_autoapproval) + + delete_share_object( + client=client, user=user2, group=group2, shareUri=share3_processed_with_expiration_with_autoapproval.shareUri + ) + + +@pytest.fixture(scope='function') +def share3_item_expiration_share_with_autoapproval( + share_item: typing.Callable, + share3_with_expiration_processed_with_autoapproval: ShareObject, + table1_expiration_dataset_with_autoapproval: DatasetTable, +) -> ShareObjectItem: + # Cleaned up with share3 + yield share_item( + share=share3_with_expiration_processed_with_autoapproval, + table=table1_expiration_dataset_with_autoapproval, + status=ShareItemStatus.Share_Succeeded.value, + ) + + @pytest.fixture(scope='function') def share4_draft( user2, @@ -409,6 +635,8 @@ def create_share_object( principalId=None, principalType=PrincipalType.Group.value, permissions=[ShareObjectDataPermission.Read.value], + shareExpirationPeriod=None, + nonExpiring=False, ): q = """ mutation CreateShareObject( @@ -429,6 +657,12 @@ def create_share_object( userRoleForShareObject requestPurpose rejectPurpose + expiryDate + requestedExpiryDate + nonExpirable + lastExtensionDate + extensionReason + submittedForExtension dataset { datasetUri datasetName @@ -457,6 +691,8 @@ def create_share_object( 'requestPurpose': 'testShare', 'attachMissingPolicies': attachMissingPolicies, 'permissions': permissions, + 'shareExpirationPeriod': shareExpirationPeriod, + 'nonExpirable': nonExpiring, }, ) @@ -476,6 +712,11 @@ def get_share_object(client, user, group, shareUri, filter): requestPurpose rejectPurpose userRoleForShareObject + extensionReason + expiryDate + requestedExpiryDate + nonExpirable + shareExpirationPeriod principal { principalName principalType @@ -899,6 +1140,112 @@ def list_datasets_published_in_environment(client, user, group, environmentUri): return response +def submit_share_extension(client, user, group, shareUri, expiration, nonExpirable=False): + q = """ + mutation submitShareExtension( + $shareUri: String! + $expiration: Int + $extensionReason: String + $nonExpirable: Boolean + ) { + submitShareExtension( + shareUri: $shareUri + expiration: $expiration + extensionReason: $extensionReason + nonExpirable: $nonExpirable + ) { + shareUri + status + } + } + """ + + response = client.query( + q, + username=user.username, + groups=[group.name], + shareUri=shareUri, + expiration=expiration, + extensionReason='', + nonExpirable=nonExpirable, + ) + return response + + +def update_share_extension_period(client, user, group, shareUri, expiration, nonExpirable=False): + q = """ + mutation updateShareExpirationPeriod( + $shareUri: String! + $expiration: Int + $nonExpirable: Boolean + ) { + updateShareExpirationPeriod( + shareUri: $shareUri + expiration: $expiration + nonExpirable: $nonExpirable + ) + } + """ + + response = client.query( + q, + username=user.username, + groups=[group.name], + shareUri=shareUri, + expiration=expiration, + nonExpirable=nonExpirable, + ) + return response + + +def update_share_extension_reason(client, user, group, shareUri, expirationPurpose): + q = """ + mutation updateShareExtensionReason( + $shareUri: String! + $extensionPurpose: String! + ) { + updateShareExtensionReason( + shareUri: $shareUri + extensionPurpose: $extensionPurpose + ) + } + """ + + response = client.query( + q, + username=user.username, + groups=[group.name], + shareUri=shareUri, + extensionPurpose=expirationPurpose, + ) + return response + + +def cancel_share_extension(client, user, group, shareUri): + q = """ + mutation cancelShareExtension($shareUri: String!) { + cancelShareExtension(shareUri: $shareUri) + } + """ + + response = client.query(q, username=user.username, groups=[group.name], shareUri=shareUri) + return response + + +def approve_share_extension(client, user, group, shareUri): + q = """ + mutation approveShareExtension($shareUri: String!) { + approveShareExtension(shareUri: $shareUri) { + shareUri + status + } + } + """ + + response = client.query(q, username=user.username, groups=[group.name], shareUri=shareUri) + return response + + # Tests def test_create_share_object_unauthorized(mocker, client, group3, dataset1, env2, env2group): # Given @@ -1162,47 +1509,164 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_dis assert 'is not attached to role randomName' in create_share_object_response.errors[0].message -def test_get_share_object(client, share1_draft, user, group): - # Given - # Existing share object in status Draft (->fixture share1_draft) - # When a user from the approvers group gets the share object - get_share_object_response = get_share_object( - client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={} +def test_create_share_object_with_share_expiration_added( + mocker, client, user2, group2, env2group, env2, dataset_with_expiration +): + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', + return_value=True, ) - # Then we get the info about the share - assert get_share_object_response.data.getShareObject.shareUri == share1_draft.shareUri - assert get_share_object_response.data.getShareObject.get('principal').principalType == PrincipalType.Group.name - assert get_share_object_response.data.getShareObject.get('principal').principalRoleName - assert get_share_object_response.data.getShareObject.get('principal').SamlGroupName - - -def test_update_share_request_purpose(client, share1_draft, user2, group2): - # Given - # Existing share object in status Draft (->fixture share1_draft) - # When a user from the requesters group updates - update_share_request_purpose_response = update_share_request_purpose( - client=client, user=user2, group=group2, shareUri=share1_draft.shareUri, requestPurpose='NewRequestPurpose' + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_attached', + return_value=True, ) - - # Then the requestPurpose of the Share is Updated - get_share_object_response = get_share_object( - client=client, user=user2, group=group2, shareUri=share1_draft.shareUri, filter={} + create_share_object_response = create_share_object( + mocker=mocker, + client=client, + username=user2.username, + group=group2, + groupUri=env2group.groupUri, + environmentUri=env2.environmentUri, + datasetUri=dataset_with_expiration.datasetUri, + shareExpirationPeriod=2, ) - assert get_share_object_response.data.getShareObject.requestPurpose == 'NewRequestPurpose' - assert get_share_object_response.data.getShareObject.userRoleForShareObject == 'Requesters' - - -def test_update_share_request_purpose_unauthorized(client, share1_draft, user, group): - # Given - # Existing share object in status Draft (->fixture share1_draft) - # When a user from the approvers group attempts to update the request purpose - update_share_request_purpose_response = update_share_request_purpose( - client=client, user=user, group=group, shareUri=share1_draft.shareUri, requestPurpose='NewRequestPurpose' + # Then share object created with status Draft and user is 'Requester' + assert create_share_object_response.data.createShareObject.shareUri + assert create_share_object_response.data.createShareObject.status == ShareObjectStatus.Draft.value + assert create_share_object_response.data.createShareObject.nonExpirable == False + date_format = '%Y-%m-%d %H:%M:%S' + requested_share_expiration_date = datetime.strptime( + create_share_object_response.data.createShareObject.requestedExpiryDate, date_format + ) + assert ( + requested_share_expiration_date.date() + == ExpirationUtils.calculate_expiry_date(2, dataset_with_expiration.expirySetting).date() ) - - # Then we get an error of the type - assert 'UnauthorizedOperation' in update_share_request_purpose_response.errors[0].message + + +def test_create_share_object_with_non_expiring_share( + mocker, client, user2, group2, env2group, env2, dataset_with_expiration_3 +): + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', + return_value=True, + ) + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_attached', + return_value=True, + ) + create_share_object_response = create_share_object( + mocker=mocker, + client=client, + username=user2.username, + group=group2, + groupUri=env2group.groupUri, + environmentUri=env2.environmentUri, + datasetUri=dataset_with_expiration_3.datasetUri, + shareExpirationPeriod=None, + nonExpiring=True, + ) + + # Then share object created with status Draft and user is 'Requester' + assert create_share_object_response.data.createShareObject.shareUri + assert create_share_object_response.data.createShareObject.status == ShareObjectStatus.Draft.value + assert create_share_object_response.data.createShareObject.requestedExpiryDate == None + assert create_share_object_response.data.createShareObject.nonExpirable == True + + +def test_create_share_object_with_share_expiration_incorrect_share_expiration( + mocker, client, user2, group2, env2group, env2, dataset_with_expiration +): + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', + return_value=True, + ) + mocker.patch( + 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_attached', + return_value=True, + ) + create_share_object_response = create_share_object( + mocker=mocker, + client=client, + username=user2.username, + group=group2, + groupUri=env2group.groupUri, + environmentUri=env2.environmentUri, + datasetUri=dataset_with_expiration.datasetUri, + shareExpirationPeriod=5, + ) + + assert ( + 'Share expiration period is not within the maximum and the minimum expiration duration' + in create_share_object_response.errors[0].message + ) + + +def test_get_share_object(client, share1_draft, user, group): + # Given + # Existing share object in status Draft (->fixture share1_draft) + # When a user from the approvers group gets the share object + get_share_object_response = get_share_object( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={} + ) + # Then we get the info about the share + assert get_share_object_response.data.getShareObject.shareUri == share1_draft.shareUri + assert get_share_object_response.data.getShareObject.get('principal').principalType == PrincipalType.Group.name + assert get_share_object_response.data.getShareObject.get('principal').principalRoleName + assert get_share_object_response.data.getShareObject.get('principal').SamlGroupName + + +def test_update_share_request_purpose(client, share1_draft, user2, group2): + # Given + # Existing share object in status Draft (->fixture share1_draft) + # When a user from the requesters group updates + update_share_request_purpose_response = update_share_request_purpose( + client=client, user=user2, group=group2, shareUri=share1_draft.shareUri, requestPurpose='NewRequestPurpose' + ) + + # Then the requestPurpose of the Share is Updated + get_share_object_response = get_share_object( + client=client, user=user2, group=group2, shareUri=share1_draft.shareUri, filter={} + ) + + assert get_share_object_response.data.getShareObject.requestPurpose == 'NewRequestPurpose' + assert get_share_object_response.data.getShareObject.userRoleForShareObject == 'Requesters' + + +def test_update_share_request_purpose_unauthorized(client, share1_draft, user, group): + # Given + # Existing share object in status Draft (->fixture share1_draft) + # When a user from the approvers group attempts to update the request purpose + update_share_request_purpose_response = update_share_request_purpose( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, requestPurpose='NewRequestPurpose' + ) + + # Then we get an error of the type + assert 'UnauthorizedOperation' in update_share_request_purpose_response.errors[0].message + + +def test_update_share_extension_purpose(client, share1_draft, user2, group2): + update_share_extension_reason(client, user2, group2, share1_draft.shareUri, 'Extension Reason') + + get_share_object_response = get_share_object( + client=client, user=user2, group=group2, shareUri=share1_draft.shareUri, filter={} + ) + + assert get_share_object_response.data.getShareObject.extensionReason == 'Extension Reason' + assert get_share_object_response.data.getShareObject.userRoleForShareObject == 'Requesters' + + +def test_update_share_extension_purpose_unauthorized(client, share1_draft, user, group): + response_update_share_extension = update_share_extension_reason( + client, user, group, share1_draft.shareUri, 'Extension Reason' + ) + + get_share_object_response = get_share_object( + client=client, user=user, group=group, shareUri=share1_draft.shareUri, filter={} + ) + + assert 'UnauthorizedOperation' in response_update_share_extension.errors[0].message def test_list_shares_to_me_approver(client, user, group, share1_draft): @@ -1211,7 +1675,7 @@ def test_list_shares_to_me_approver(client, user, group, share1_draft): # When a user from the Approvers group lists the share objects sent to him get_share_requests_to_me_response = get_share_requests_to_me(client=client, user=user, group=group) # Then he sees the 2 shares - assert get_share_requests_to_me_response.data.getShareRequestsToMe.count == 2 + assert get_share_requests_to_me_response.data.getShareRequestsToMe.count == 4 def test_list_shares_to_me_requester(client, user2, group2, share1_draft): @@ -1238,7 +1702,7 @@ def test_list_shares_from_me_requester(client, user2, group2, share1_draft): # When a user from the Requesters group lists the share objects sent from him get_share_requests_from_me_response = get_share_requests_from_me(client=client, user=user2, group=group2) # Then he sees the 2 shares - assert get_share_requests_from_me_response.data.getShareRequestsFromMe.count == 2 + assert get_share_requests_from_me_response.data.getShareRequestsFromMe.count == 4 def test_add_share_item(client, user2, group2, share1_draft, mock_glue_client): @@ -1421,6 +1885,92 @@ def test_submit_share_request(client, user2, group2, share1_draft, share1_item_p assert status == ShareItemStatus.PendingApproval.name +def test_submit_share_extension_request( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, 1) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + date_format = '%Y-%m-%d %H:%M:%S' + share_expiration_date = datetime.strptime( + get_share_object_response.data.getShareObject.requestedExpiryDate, date_format + ) + assert ( + share_expiration_date.date() + == ExpirationUtils.calculate_expiry_date(1, dataset_with_expiration_2.expirySetting).date() + ) + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + +def test_submit_share_extension_request_non_expiring_share( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, None, True) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + assert get_share_object_response.data.getShareObject.requestedExpiryDate == None + assert get_share_object_response.data.getShareObject.nonExpirable == True + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + def test_submit_share_request_with_auto_approval( client, user2, group2, share_autoapprove_draft, share_autoapprove_item_pa, mocker ): @@ -1477,6 +2027,68 @@ def test_submit_share_request_with_auto_approval( assert status == ShareItemStatus.Share_Approved.name +def test_submit_share_extension_request_with_auto_approval( + client, + user2, + group2, + share3_item_expiration_share_with_autoapproval, + share3_with_expiration_processed_with_autoapproval, + mocker, + dataset_with_expiration_with_autoapproval, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed_with_autoapproval.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.remote_session', + return_value=boto3.Session(), + ) + + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_account', + return_value='1111', + ) + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', + return_value='arn', + ) + + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='fake_role_arn', + ) + # Submit a share extension request with a dataset which has auto approval on it + submit_share_extension(client, user2, group2, share3_with_expiration_processed_with_autoapproval.shareUri, 1) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed_with_autoapproval.shareUri, + filter={'isShared': True}, + ) + + # share should be auto approved for share extension as well + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + date_format = '%Y-%m-%d %H:%M:%S' + share_expiration_date = datetime.strptime(get_share_object_response.data.getShareObject.expiryDate, date_format) + assert ( + share_expiration_date.date() + == ExpirationUtils.calculate_expiry_date(1, dataset_with_expiration_with_autoapproval.expirySetting).date() + ) + + def test_update_share_reject_purpose(client, share2_submitted, user, group): # Given # Existing share object in status Submitted (-> fixture share2_submitted) @@ -1574,6 +2186,171 @@ def test_approve_share_request(db, client, user, group, share2_submitted, share2 assert shareItem.status == ShareItemStatus.Share_Succeeded.value +def test_approve_share_extension( + client, + user, + group, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.remote_session', + return_value=boto3.Session(), + ) + + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_account', + return_value='1111', + ) + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', + return_value='arn', + ) + + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='fake_role_arn', + ) + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, 1) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + date_format = '%Y-%m-%d %H:%M:%S' + share_expiration_date = datetime.strptime( + get_share_object_response.data.getShareObject.requestedExpiryDate, date_format + ) + assert ( + share_expiration_date.date() + == ExpirationUtils.calculate_expiry_date(1, dataset_with_expiration_2.expirySetting).date() + ) + requested_expiration_date_raw = get_share_object_response.data.getShareObject.requestedExpiryDate + + # Approve Share Extension + approve_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + share_item = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert share_item.shareItemUri == share3_item_expiration_share.shareItemUri + assert share_item.status == ShareItemStatus.Share_Succeeded.value + assert get_share_object_response.data.getShareObject.get('items').count == 1 + assert get_share_object_response.data.getShareObject.expiryDate == requested_expiration_date_raw + + +def test_approve_share_extension_non_expiring( + client, + user, + group, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.remote_session', + return_value=boto3.Session(), + ) + + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_account', + return_value='1111', + ) + # Mock glue and sts calls to create a LF processor + mocker.patch( + 'dataall.base.aws.sts.SessionHelper.get_delegation_role_arn', + return_value='arn', + ) + + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='fake_role_arn', + ) + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, None, True) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + assert get_share_object_response.data.getShareObject.requestedExpiryDate == None + assert get_share_object_response.data.getShareObject.nonExpirable == True + + # Approve Share Extension + approve_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + share_item = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert get_share_object_response.data.getShareObject.expiryDate == None + assert share_item.shareItemUri == share3_item_expiration_share.shareItemUri + assert share_item.status == ShareItemStatus.Share_Succeeded.value + assert get_share_object_response.data.getShareObject.get('items').count == 1 + + def test_reject_share_request(client, user, group, share2_submitted, share2_item_pa): # Given # Existing share object in status Submitted (-> fixture share2_submitted) @@ -1868,6 +2645,232 @@ def test_delete_share_object_remaining_items_error( assert 'UnauthorizedOperation' in delete_share_object_response.errors[0].message +def test_cancel_share_extension_request( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, 1) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + date_format = '%Y-%m-%d %H:%M:%S' + share_expiration_date = datetime.strptime( + get_share_object_response.data.getShareObject.requestedExpiryDate, date_format + ) + assert ( + share_expiration_date.date() + == ExpirationUtils.calculate_expiry_date(1, dataset_with_expiration_2.expirySetting).date() + ) + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + share_item = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert share_item.shareItemUri == share3_item_expiration_share.shareItemUri + assert share_item.status == ShareItemStatus.Share_Succeeded.value + assert get_share_object_response.data.getShareObject.get('items').count == 1 + + +def test_cancel_share_extension_request_with_non_expiring_share_extension_requested( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + current_expiration_date = get_share_object_response.data.getShareObject.expiryDate + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, None, True) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + assert get_share_object_response.data.getShareObject.requestedExpiryDate == None + assert get_share_object_response.data.getShareObject.nonExpirable == True + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + share_item = get_share_object_response.data.getShareObject.get('items').nodes[0] + assert share_item.shareItemUri == share3_item_expiration_share.shareItemUri + assert get_share_object_response.data.getShareObject.expiryDate == current_expiration_date + assert get_share_object_response.data.getShareObject.nonExpirable == False + assert share_item.status == ShareItemStatus.Share_Succeeded.value + assert get_share_object_response.data.getShareObject.get('items').count == 1 + + +def test_update_share_extension_period( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + current_expiration_date = get_share_object_response.data.getShareObject.expiryDate + shareExpirationPeriod = get_share_object_response.data.getShareObject.shareExpirationPerioud + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, 3) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.shareExpirationPeriod == 3 + + update_share_extension_period(client, user2, group2, share3_with_expiration_processed.shareUri, 2) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + assert get_share_object_response.data.getShareObject.nonExpirable == False + assert get_share_object_response.data.getShareObject.shareExpirationPeriod == 2 + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + +def test_update_share_extension_period_to_make_non_expiring( + client, + user2, + group2, + share3_item_expiration_share, + share3_with_expiration_processed, + mocker, + dataset_with_expiration_2, +): + # Given + # Existing share object in status Processed (-> fixture share3_item_expiration_share) + # with existing share item in status Share_Succeeded (-> fixture share3_with_expiration_processed) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Processed.value + + current_expiration_date = get_share_object_response.data.getShareObject.expiryDate + shareExpirationPeriod = get_share_object_response.data.getShareObject.shareExpirationPerioud + + # Submit a share extension request + submit_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri, 3) + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.shareExpirationPeriod == 3 + + update_share_extension_period(client, user2, group2, share3_with_expiration_processed.shareUri, None, True) + + get_share_object_response = get_share_object( + client=client, + user=user2, + group=group2, + shareUri=share3_with_expiration_processed.shareUri, + filter={'isShared': True}, + ) + + assert get_share_object_response.data.getShareObject.status == ShareObjectStatus.Submitted_For_Extension.value + assert get_share_object_response.data.getShareObject.nonExpirable == True + assert get_share_object_response.data.getShareObject.shareExpirationPeriod == None + + cancel_share_extension(client, user2, group2, share3_with_expiration_processed.shareUri) + + def _successfull_processing_for_share_object(db, share): with db.scoped_session() as session: print('Processing share with action ShareObjectActions.Start') From 19cb45f0472a66d85e2129b57f83c2bf6af4ba5c Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 3 Sep 2024 18:19:02 +0200 Subject: [PATCH 050/188] Redshift data sharing - Add interface for share validations and Redshift guardrails (#1484) ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is focused on adding validation checks when a share request is created - Remove IAM role checks from generic sharing_Service to specific share processors - Add interface to execute checks on approve, submit and revoke API calls - Moved S3 checks to new S3Validator - Implemented Redshift checks in RedshiftValidator - Added tests for Redshift validator ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../redshift_datasets_shares/__init__.py | 7 + .../aws/redshift_data.py | 14 ++ .../redshift_table_share_validator.py | 109 +++++++++ .../modules/s3_datasets_shares/__init__.py | 6 + .../services/s3_share_service.py | 10 + .../services/s3_share_validator.py | 151 ++++++++++++ .../glue_table_share_processor.py | 13 +- .../s3_access_point_share_processor.py | 13 +- .../s3_bucket_share_processor.py | 16 +- .../shares_base/services/share_exceptions.py | 5 + .../services/share_object_service.py | 229 +++++++++--------- .../shares_base/services/shares_enums.py | 1 + .../shares_base/services/sharing_service.py | 43 ---- .../redshift_datasets_shares/conftest.py | 41 +++- .../test_redshift_table_validator.py | 88 +++++++ .../modules/s3_datasets_shares/test_share.py | 44 +++- 16 files changed, 620 insertions(+), 170 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py create mode 100644 backend/dataall/modules/s3_datasets_shares/services/s3_share_validator.py create mode 100644 tests/modules/redshift_datasets_shares/test_redshift_table_validator.py diff --git a/backend/dataall/modules/redshift_datasets_shares/__init__.py b/backend/dataall/modules/redshift_datasets_shares/__init__.py index 905b18028..c86f2de48 100644 --- a/backend/dataall/modules/redshift_datasets_shares/__init__.py +++ b/backend/dataall/modules/redshift_datasets_shares/__init__.py @@ -22,6 +22,7 @@ def depends_on() -> List[Type['ModuleInterface']]: def __init__(self): from dataall.core.environment.services.environment_resource_manager import EnvironmentResourceManager + from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes from dataall.modules.redshift_datasets_shares import api from dataall.modules.redshift_datasets_shares.db.redshift_share_object_repositories import ( RedshiftShareEnvironmentResource, @@ -32,10 +33,14 @@ def __init__(self): ShareProcessorDefinition, ) from dataall.modules.shares_base.services.shares_enums import ShareableType + from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable from dataall.modules.redshift_datasets_shares.services.redshift_table_share_processor import ( ProcessRedshiftShare, ) + from dataall.modules.redshift_datasets_shares.services.redshift_table_share_validator import ( + RedshiftTableValidator, + ) EnvironmentResourceManager.register(RedshiftShareEnvironmentResource()) @@ -45,6 +50,8 @@ def __init__(self): ) ) + ShareObjectService.register_validator(dataset_type=DatasetTypes.Redshift, validator=RedshiftTableValidator) + log.info('API of redshift dataset sharing has been imported') diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py index 9be00b236..15fdcea7c 100644 --- a/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift_data.py @@ -1,5 +1,6 @@ import logging import time +from botocore.exceptions import ClientError from dataall.base.aws.sts import SessionHelper from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection @@ -75,6 +76,19 @@ def quoted_object_names(*names) -> str: quoted_names = [RedshiftShareDataClient.double_quoted_name(name) for name in names if name] return '.'.join(quoted_names) + def check_redshift_role_in_namespace(self, role) -> bool: + """Check that a redshift role exists in database""" + try: + log.info(f'Checking {role=} exists...') + sql_statement = 'SELECT role_name FROM SVV_ROLES;' + records = self._execute_statement_return_records(sql=sql_statement) + roles = [[d for d in record][0]['stringValue'] for record in records] + log.info(f'Found {roles=}') + return role in roles + except Exception as e: + log.error(f'Checking of {role=} failed due to: {e}') + return False + def create_datashare(self, datashare: str) -> bool: """Create datashare if not already created. Returns: bool: True if created, False if already exists diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py new file mode 100644 index 000000000..f46a919ae --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py @@ -0,0 +1,109 @@ +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.modules.shares_base.services.share_object_service import SharesValidatorInterface +from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound, InvalidConfiguration +from dataall.modules.shares_base.services.share_permissions import ( + CREATE_SHARE_OBJECT, + SUBMIT_SHARE_OBJECT, + APPROVE_SHARE_OBJECT, +) +from dataall.modules.redshift_datasets_shares.aws.redshift_data import redshift_share_data_client +from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository +from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository + +import logging + +log = logging.getLogger(__name__) + + +class RedshiftTableValidator(SharesValidatorInterface): + @staticmethod + def validate_share_object_create( + session, + dataset, + group_uri, + environment, + principal_type, + principal_id, + principal_role_name, + attachMissingPolicies, + permissions, + ) -> bool: + rs_dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri( + session=session, dataset_uri=dataset.datasetUri + ) + RedshiftTableValidator._validate_clusters( + session=session, source_connection_uri=rs_dataset.connectionUri, target_connection_uri=principal_id + ) + RedshiftTableValidator._validate_redshift_role( + session=session, + environment=environment, + principal_id=principal_id, + principal_role_name=principal_role_name, + action=CREATE_SHARE_OBJECT, + ) + RedshiftTableValidator._validate_source_connection( + session=session, dataset_connection_uri=rs_dataset.connectionUri + ) + return True + + @staticmethod + def validate_share_object_submit(session, dataset, share) -> bool: + environment = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + RedshiftTableValidator._validate_redshift_role( + session=session, + environment=environment, + principal_id=share.principalId, + principal_role_name=share.principalRoleName, + action=SUBMIT_SHARE_OBJECT, + ) + return True + + @staticmethod + def validate_share_object_approve(session, dataset, share) -> bool: + environment = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + RedshiftTableValidator._validate_redshift_role( + session=session, + environment=environment, + principal_id=share.principalId, + principal_role_name=share.principalRoleName, + action=APPROVE_SHARE_OBJECT, + ) + return True + + @staticmethod + def _validate_redshift_role(session, environment, action, principal_id: str, principal_role_name: str): + log.info( + f'Verifying share request provided Redshift role {principal_role_name} exists in connection {principal_id}...' + ) + connection = RedshiftConnectionRepository.get_redshift_connection(session, uri=principal_id) + client = redshift_share_data_client( + account_id=environment.AwsAccountId, region=environment.region, connection=connection + ) + if not client.check_redshift_role_in_namespace(role=principal_role_name): + raise PrincipalRoleNotFound( + action=action, + message=f'The principal Redshift role {principal_role_name} does not exist or is not accessible for the Redshift connection {connection.name}.', + ) + + @staticmethod + def _validate_clusters(session, source_connection_uri, target_connection_uri): + log.info('Verifying share request clusters are different...') + source_connection = RedshiftConnectionRepository.get_redshift_connection(session, uri=source_connection_uri) + target_connection = RedshiftConnectionRepository.get_redshift_connection(session, uri=target_connection_uri) + if source_connection.nameSpaceId == target_connection.nameSpaceId: + raise InvalidConfiguration( + action=CREATE_SHARE_OBJECT, + message='Redshift data.all datashares are only possible between different namespaces', + ) + + @staticmethod + def _validate_source_connection(session, dataset_connection_uri): + log.info('Verifying source namespace has an admin connection...') + dataset_connection = RedshiftConnectionRepository.get_redshift_connection(session, uri=dataset_connection_uri) + if not RedshiftConnectionRepository.get_namespace_admin_connection( + session, environment_uri=dataset_connection.environmentUri, namespace_id=dataset_connection.nameSpaceId + ): + raise InvalidConfiguration( + action=CREATE_SHARE_OBJECT, + message='Redshift data.all datashares require an ADMIN connection in both clusters', + ) diff --git a/backend/dataall/modules/s3_datasets_shares/__init__.py b/backend/dataall/modules/s3_datasets_shares/__init__.py index 750ed5d84..ef14202e5 100644 --- a/backend/dataall/modules/s3_datasets_shares/__init__.py +++ b/backend/dataall/modules/s3_datasets_shares/__init__.py @@ -25,6 +25,7 @@ def __init__(self): from dataall.modules.s3_datasets_shares import api from dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service import S3SharePolicyService from dataall.modules.s3_datasets.services.dataset_service import DatasetService + from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes from dataall.modules.datasets_base.services.dataset_list_service import DatasetListService from dataall.modules.s3_datasets_shares.services.s3_share_dataset_service import S3ShareDatasetService from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareEnvironmentResource @@ -33,7 +34,10 @@ def __init__(self): ShareProcessorDefinition, ) from dataall.modules.shares_base.services.shares_enums import ShareableType + from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.s3_datasets.db.dataset_models import DatasetTable, DatasetBucket, DatasetStorageLocation + from dataall.modules.s3_datasets_shares.services.s3_share_validator import S3ShareValidator + from dataall.modules.s3_datasets_shares.services.share_processors.glue_table_share_processor import ( ProcessLakeFormationShare, ) @@ -67,6 +71,8 @@ def __init__(self): ) ) + ShareObjectService.register_validator(dataset_type=DatasetTypes.S3, validator=S3ShareValidator) + log.info('API of dataset sharing has been imported') diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py index da1bdf0e8..7ae675690 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py @@ -3,12 +3,14 @@ from dataall.base.db import utils from dataall.base.context import get_context from dataall.base.aws.sts import SessionHelper +from dataall.base.aws.iam import IAM from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.tasks.db.task_models import Task from dataall.core.tasks.service_handlers import Worker from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository +from dataall.modules.shares_base.db.share_object_models import ShareObject from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository @@ -312,3 +314,11 @@ def resolve_shared_db_name(GlueDatabaseName: str, shareUri: str, targetEnvAwsAcc log.info(f'Error while calling the get_glue_database_from_catalog when resolving db name due to: {e}') datasetGlueDatabase = GlueDatabaseName return datasetGlueDatabase + '_shared' + + @staticmethod + def verify_principal_role(session, share: ShareObject) -> bool: + log.info('Verifying principal IAM role...') + role_name = share.principalRoleName + env = EnvironmentService.get_environment_by_uri(session, share.environmentUri) + principal_role = IAM.get_role_arn_by_name(account_id=env.AwsAccountId, region=env.region, role_name=role_name) + return principal_role is not None diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_validator.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_validator.py new file mode 100644 index 000000000..657afb4ec --- /dev/null +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_validator.py @@ -0,0 +1,151 @@ +from dataall.base.db.exceptions import UnauthorizedOperation, InvalidInput +from dataall.base.aws.iam import IAM +from dataall.core.environment.services.environment_service import EnvironmentService +from dataall.core.environment.db.environment_models import EnvironmentGroup, ConsumptionRole +from dataall.core.environment.services.managed_iam_policies import PolicyManager +from dataall.modules.shares_base.db.share_object_models import ShareObject +from dataall.modules.shares_base.services.share_object_service import SharesValidatorInterface +from dataall.modules.shares_base.services.shares_enums import ( + PrincipalType, + ShareObjectDataPermission, +) +from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound +from dataall.modules.shares_base.services.share_permissions import ( + APPROVE_SHARE_OBJECT, + SUBMIT_SHARE_OBJECT, + CREATE_SHARE_OBJECT, +) + +import logging + +log = logging.getLogger(__name__) + + +class S3ShareValidator(SharesValidatorInterface): + @staticmethod + def validate_share_object_create( + session, + dataset, + group_uri, + environment, + principal_type, + principal_id, + principal_role_name, + attachMissingPolicies, + permissions, + ) -> bool: + log.info('Verifying S3 share request input') + + if ( + (dataset.stewards == group_uri or dataset.SamlAdminGroupName == group_uri) + and environment.environmentUri == dataset.environmentUri + and principal_type == PrincipalType.Group.value + ): + raise UnauthorizedOperation( + action=CREATE_SHARE_OBJECT, + message=f'Team: {group_uri} is managing the dataset {dataset.name}', + ) + if environment.region != dataset.region: + raise UnauthorizedOperation( + action=CREATE_SHARE_OBJECT, + message=f'Requester Team {group_uri} works in region {environment.region} ' + f'and the requested dataset is stored in region {dataset.region}', + ) + S3ShareValidator._validate_iam_role_and_policy( + session, environment, principal_type, principal_id, group_uri, attachMissingPolicies + ) + S3ShareValidator._validate_write_request_in_same_account( + source_account=dataset.AwsAccountId, target_account=environment.AwsAccountId, permissions=permissions + ) + + return True + + @staticmethod + def validate_share_object_submit(session, dataset, share) -> bool: + if not S3ShareValidator._validate_iam_role(session, share): + raise PrincipalRoleNotFound( + action=SUBMIT_SHARE_OBJECT, + message=f'The principal role {share.principalRoleName} is not found.', + ) + return True + + @staticmethod + def validate_share_object_approve(session, dataset, share) -> bool: + if not S3ShareValidator._validate_iam_role(session, share): + raise PrincipalRoleNotFound( + action=APPROVE_SHARE_OBJECT, + message=f'The principal role {share.principalRoleName} is not found.', + ) + return True + + @staticmethod + def _validate_iam_role(session, share: ShareObject) -> bool: + log.info('Verifying principal IAM role...') + role_name = share.principalRoleName + env = EnvironmentService.get_environment_by_uri(session, share.environmentUri) + principal_role = IAM.get_role_arn_by_name(account_id=env.AwsAccountId, region=env.region, role_name=role_name) + return principal_role is not None + + @staticmethod + def _validate_write_request_in_same_account(source_account, target_account, permissions): + log.info('Verifying write request in same account...') + if source_account != target_account and permissions != [ShareObjectDataPermission.Read.value]: + raise InvalidInput( + 'Principal Role AWS account', + target_account, + f'be the same as the Dataset source account {source_account} when WRITE/MODIFY permissions are specified', + ) + + @staticmethod + def _validate_iam_role_and_policy( + session, environment, principal_type: str, principal_id: str, group_uri: str, attachMissingPolicies: bool + ): + if principal_type == PrincipalType.ConsumptionRole.value: + consumption_role: ConsumptionRole = EnvironmentService.get_environment_consumption_role( + session, principal_id, environment.environmentUri + ) + principal_role_name = consumption_role.IAMRoleName + managed = consumption_role.dataallManaged + + else: + env_group: EnvironmentGroup = EnvironmentService.get_environment_group( + session, group_uri, environment.environmentUri + ) + principal_role_name = env_group.environmentIAMRoleName + managed = True + + log.info(f'Verifying request IAM role {principal_role_name} exists...') + if not IAM.get_role_arn_by_name( + account_id=environment.AwsAccountId, region=environment.region, role_name=principal_role_name + ): + raise PrincipalRoleNotFound( + action=principal_type, + message=f'The principal role {principal_role_name} is not found.', + ) + + log.info('Verifying data.all managed share IAM policy is attached to IAM role...') + share_policy_manager = PolicyManager( + role_name=principal_role_name, + environmentUri=environment.environmentUri, + account=environment.AwsAccountId, + region=environment.region, + resource_prefix=environment.resourcePrefix, + ) + for Policy in [ + Policy for Policy in share_policy_manager.initializedPolicies if Policy.policy_type == 'SharePolicy' + ]: + # Backwards compatibility + # we check if a managed share policy exists. If False, the role was introduced to data.all before this update + # We create the policy from the inline statements + # In this case it could also happen that the role is the Admin of the environment + if not Policy.check_if_policy_exists(): + Policy.create_managed_policy_from_inline_and_delete_inline() + # End of backwards compatibility + + attached = Policy.check_if_policy_attached() + if not attached and not managed and not attachMissingPolicies: + raise Exception( + f'Required customer managed policy {Policy.generate_policy_name()} is not attached to role {principal_role_name}' + ) + elif not attached: + Policy.attach_policy() diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index 6e3be01cd..12383ef14 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -15,7 +15,6 @@ from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.s3_datasets_shares.services.share_managers import LFShareManager from dataall.modules.s3_datasets_shares.aws.ram_client import RamClient -from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.s3_datasets_shares.services.s3_share_service import S3ShareService from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository @@ -75,7 +74,7 @@ def process_approved_shares(self) -> bool: else: manager = self._initialize_share_manager(self.tables) try: - if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update LF policy', @@ -228,6 +227,11 @@ def process_revoked_shares(self) -> bool: log.info('No tables to revoke. Skipping...') else: try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process revoked shares', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update LF policy', + ) if None in [ manager.source_account_id, manager.source_account_region, @@ -354,6 +358,11 @@ def verify_shares(self) -> bool: else: manager = self._initialize_share_manager(self.tables) try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process verify shares', + f'Share principal Role {self.share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', + ) if None in [ manager.source_account_id, manager.source_account_region, diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py index 2a20ecdbf..5102a0fa8 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py @@ -4,7 +4,6 @@ from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.s3_datasets_shares.services.share_managers import S3AccessPointShareManager -from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.s3_datasets_shares.services.s3_share_service import S3ShareService from dataall.modules.shares_base.services.shares_enums import ( ShareItemHealthStatus, @@ -63,7 +62,7 @@ def process_approved_shares(self) -> bool: new_state = shared_item_SM.run_transition(ShareObjectActions.Start.value) shared_item_SM.update_state_single_item(self.session, sharing_item, new_state) try: - if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update bucket policy', @@ -129,6 +128,11 @@ def process_revoked_shares(self) -> bool: revoked_item_SM.update_state_single_item(self.session, removing_item, new_state) try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process approved shares', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update bucket policy', + ) access_point_policy = manager.revoke_access_in_access_point_policy() if len(access_point_policy['Statement']) > 0: @@ -180,6 +184,11 @@ def verify_shares(self) -> bool: ) try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process verify shares', + f'Share principal Role {self.share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', + ) manager.check_bucket_policy() manager.check_target_role_access_policy() manager.check_access_point_and_policy() diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py index cd83ef3a8..840353505 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py @@ -4,7 +4,7 @@ from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.s3_datasets_shares.services.share_managers import S3BucketShareManager -from dataall.modules.shares_base.services.share_object_service import ShareObjectService +from dataall.modules.s3_datasets_shares.services.s3_share_service import S3ShareService from dataall.modules.shares_base.services.shares_enums import ( ShareItemHealthStatus, ShareItemStatus, @@ -49,10 +49,10 @@ def process_approved_shares(self) -> bool: if not self.buckets: log.info('No Buckets to share. Skipping...') return success - if not ShareObjectService.verify_principal_role(self.session, self.share_data.share): + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): raise PrincipalRoleNotFound( 'process approved shares', - f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update KMS key policy', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update KMS key/bucket policy', ) for bucket in self.buckets: log.info(f'Sharing bucket {bucket.bucketUri}/{bucket.S3BucketName} ') @@ -123,6 +123,11 @@ def process_revoked_shares(self) -> bool: new_state = revoked_item_SM.run_transition(ShareObjectActions.Start.value) revoked_item_SM.update_state_single_item(self.session, removing_item, new_state) try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process revoked shares', + f'Principal role {self.share_data.share.principalRoleName} is not found. Failed to update KMS key/bucket policy', + ) manager.delete_target_role_bucket_policy() manager.delete_target_role_access_policy( share=self.share_data.share, @@ -163,6 +168,11 @@ def verify_shares(self) -> bool: bucket.bucketUri, ) try: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + raise PrincipalRoleNotFound( + 'process verify shares', + f'Share principal Role {self.share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', + ) manager.check_role_bucket_policy() manager.check_s3_iam_access() diff --git a/backend/dataall/modules/shares_base/services/share_exceptions.py b/backend/dataall/modules/shares_base/services/share_exceptions.py index ea9091f8a..615b77773 100644 --- a/backend/dataall/modules/shares_base/services/share_exceptions.py +++ b/backend/dataall/modules/shares_base/services/share_exceptions.py @@ -19,3 +19,8 @@ def __init__(self, action, message): class PrincipalRoleNotFound(BaseShareException): def __init__(self, action, message): super().__init__('PrincipalRoleNotFound', action, message) + + +class InvalidConfiguration(BaseShareException): + def __init__(self, action, message): + super().__init__('InvalidConfiguration', action, message) diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index 0f7a3f99b..0389a6cad 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -1,32 +1,21 @@ -import calendar -import os -from datetime import date, datetime - -from dateutil.relativedelta import relativedelta +from datetime import datetime from dataall.base.utils.expiration_util import ExpirationUtils import logging -from typing import List +from abc import ABC, abstractmethod +from typing import Dict, List -from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService -from dataall.core.tasks.service_handlers import Worker -from dataall.base.aws.iam import IAM from dataall.base.context import get_context from dataall.base.db.exceptions import UnauthorizedOperation, InvalidInput from dataall.core.activity.db.activity_models import Activity -from dataall.core.environment.db.environment_models import EnvironmentGroup, ConsumptionRole from dataall.core.environment.services.environment_service import EnvironmentService -from dataall.core.environment.services.managed_iam_policies import PolicyManager +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.environment.db.environment_models import EnvironmentGroup, ConsumptionRole from dataall.core.tasks.db.task_models import Task -from dataall.modules.shares_base.services.shares_enums import ( - ShareObjectActions, - ShareableType, - ShareItemStatus, - ShareObjectStatus, - PrincipalType, -) +from dataall.core.tasks.service_handlers import Worker from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository +from dataall.modules.datasets_base.services.datasets_enums import DatasetTypes from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_object_state_machines import ( @@ -34,7 +23,7 @@ ShareItemSM, ) from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository -from dataall.modules.shares_base.services.share_exceptions import ShareItemsFound, PrincipalRoleNotFound +from dataall.modules.shares_base.services.share_exceptions import ShareItemsFound from dataall.modules.shares_base.services.share_notification_service import ShareNotificationService from dataall.modules.shares_base.services.share_permissions import ( REJECT_SHARE_OBJECT, @@ -48,20 +37,67 @@ ) from dataall.modules.shares_base.services.share_processor_manager import ShareProcessorManager from dataall.modules.shares_base.services.shares_enums import ( - ShareObjectDataPermission, + ShareObjectActions, + ShareItemStatus, + ShareObjectStatus, + PrincipalType, ) log = logging.getLogger(__name__) -class ShareObjectService: +class SharesValidatorInterface(ABC): @staticmethod - def verify_principal_role(session, share: ShareObject) -> bool: - log.info('Verifying principal IAM role...') - role_name = share.principalRoleName - env = EnvironmentService.get_environment_by_uri(session, share.environmentUri) - principal_role = IAM.get_role_arn_by_name(account_id=env.AwsAccountId, region=env.region, role_name=role_name) - return principal_role is not None + @abstractmethod + def validate_share_object_create( + session, + dataset, + group_uri, + environment, + principal_type, + principal_id, + principal_role_name, + attachMissingPolicies, + permissions, + ) -> bool: + """Executes checks when a share request is created""" + ... + + @staticmethod + @abstractmethod + def validate_share_object_submit(session, dataset, share) -> bool: + """Executes checks when a share item is submitted""" + ... + + @staticmethod + @abstractmethod + def validate_share_object_approve(session, dataset, share) -> bool: + """Executes checks when a share item is approved""" + ... + + +class ShareObjectService: + SHARING_VALIDATORS: Dict[DatasetTypes, SharesValidatorInterface] = {} + + @classmethod + def register_validator(cls, dataset_type: DatasetTypes, validator) -> None: + cls.SHARING_VALIDATORS[dataset_type] = validator + + @classmethod + def validate_share_object( + cls, share_action: ShareObjectActions, dataset_type: DatasetTypes, session, dataset, *args, **kwargs + ): + log.info(f'Validating share object {share_action.value} for {dataset_type.value=}') + for ds_type, validator in cls.SHARING_VALIDATORS.items(): + if ds_type.value == dataset_type.value: + if share_action.value == ShareObjectActions.Create.value: + validator.validate_share_object_create(session, dataset, *args, **kwargs) + elif share_action.value == ShareObjectActions.Submit.value: + validator.validate_share_object_submit(session, dataset, *args, **kwargs) + elif share_action.value == ShareObjectActions.Approve.value: + validator.validate_share_object_approve(session, dataset, *args, **kwargs) + else: + raise ValueError(f'Invalid share action {share_action.value}') @staticmethod @ResourcePolicyService.has_resource_permission(GET_SHARE_OBJECT) @@ -92,65 +128,25 @@ def create_share_object( dataset: DatasetBase = DatasetBaseRepository.get_dataset_by_uri(session, dataset_uri) environment = EnvironmentService.get_environment_by_uri(session, uri) - if environment.region != dataset.region: - raise UnauthorizedOperation( - action=CREATE_SHARE_OBJECT, - message=f'Requester Team {group_uri} works in region {environment.region} ' - f'and the requested dataset is stored in region {dataset.region}', - ) - if ( - (dataset.stewards == group_uri or dataset.SamlAdminGroupName == group_uri) - and environment.environmentUri == dataset.environmentUri - and principal_type == PrincipalType.Group.value - ): - raise UnauthorizedOperation( - action=CREATE_SHARE_OBJECT, - message=f'Team: {group_uri} is managing the dataset {dataset.name}', - ) - cls._validate_group_membership(session, group_uri, environment.environmentUri) - if principal_type in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - if principal_type == PrincipalType.ConsumptionRole.value: - consumption_role = EnvironmentService.get_environment_consumption_role( - session, principal_id, environment.environmentUri - ) - principal_role_arn = consumption_role.IAMRoleArn - principal_role_name = consumption_role.IAMRoleName - managed = consumption_role.dataallManaged - else: - env_group = EnvironmentService.get_environment_group(session, group_uri, environment.environmentUri) - principal_role_arn = env_group.environmentIAMRoleArn - principal_role_name = env_group.environmentIAMRoleName - managed = True - - cls._validate_role_in_same_account(dataset.AwsAccountId, principal_role_arn, permissions) + principal_role_name = cls._resolve_principal_role_name( + session, group_uri, environment.environmentUri, principal_id, principal_role_name, principal_type + ) - share_policy_manager = PolicyManager( - role_name=principal_role_name, - environmentUri=environment.environmentUri, - account=environment.AwsAccountId, - region=environment.region, - resource_prefix=environment.resourcePrefix, - ) - for Policy in [ - Policy for Policy in share_policy_manager.initializedPolicies if Policy.policy_type == 'SharePolicy' - ]: - # Backwards compatibility - # we check if a managed share policy exists. If False, the role was introduced to data.all before this update - # We create the policy from the inline statements - # In this case it could also happen that the role is the Admin of the environment - if not Policy.check_if_policy_exists(): - Policy.create_managed_policy_from_inline_and_delete_inline() - # End of backwards compatibility - - attached = Policy.check_if_policy_attached() - if not attached and not managed and not attachMissingPolicies: - raise Exception( - f'Required customer managed policy {Policy.generate_policy_name()} is not attached to role {principal_role_name}' - ) - elif not attached: - Policy.attach_policy() + cls.validate_share_object( + share_action=ShareObjectActions.Create, + dataset_type=dataset.datasetType, + session=session, + dataset=dataset, + environment=environment, + group_uri=group_uri, + principal_id=principal_id, + principal_role_name=principal_role_name, + principal_type=principal_type, + attachMissingPolicies=attachMissingPolicies, + permissions=permissions, + ) share = ShareObjectRepository.find_share( session=session, @@ -262,13 +258,13 @@ def submit_share_object(cls, uri: str): with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - if share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - # TODO make it generic to non IAM role principals - if not ShareObjectService.verify_principal_role(session, share): - raise PrincipalRoleNotFound( - action='Submit Share Object', - message=f'The principal role {share.principalRoleName} is not found.', - ) + cls.validate_share_object( + share_action=ShareObjectActions.Submit, + dataset_type=dataset.datasetType, + session=session, + dataset=dataset, + share=share, + ) valid_states = [ShareItemStatus.PendingApproval.value] valid_share_items_states = [x for x in valid_states if x in states] @@ -370,14 +366,14 @@ def approve_share_object(cls, uri: str): context = get_context() with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - if share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - if not ShareObjectService.verify_principal_role( - session, share - ): # TODO make it generic to non IAM role principals - raise PrincipalRoleNotFound( - action='Approve Share Object', - message=f'The principal role {share.principalRoleName} is not found.', - ) + cls.validate_share_object( + share_action=ShareObjectActions.Approve, + dataset_type=dataset.datasetType, + session=session, + dataset=dataset, + share=share, + ) + if dataset.enableExpiration and share.requestedExpiryDate and share.requestedExpiryDate < datetime.today(): raise Exception( 'Cannot approve share since its it past the requested expiration date. Please reject this share and submit a new share request' @@ -417,11 +413,13 @@ def approve_share_object_extension(cls, uri: str): with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) - if not ShareObjectService.verify_principal_role(session, share): - raise PrincipalRoleNotFound( - action='Approve Share Object Extension', - message=f'The principal role {share.principalRoleName} is not found.', - ) + cls.validate_share_object( + share_action=ShareObjectActions.Approve, + dataset_type=dataset.datasetType, + session=session, + dataset=dataset, + share=share, + ) if dataset.enableExpiration and share.requestedExpiryDate and share.requestedExpiryDate < datetime.today(): raise Exception( @@ -733,17 +731,16 @@ def _validate_group_membership(session, share_object_group, environment_uri): ) @staticmethod - def _validate_role_in_same_account(aws_account_id, principal_role_arn, permissions): - """ - raise if aws_account_id and role_arn are not in the same account permissions are WRITE/MODIFY - - :param aws_account_id: - :param principal_role_arn: - :param permissions: - """ - if f':{aws_account_id}:' not in principal_role_arn and permissions != [ShareObjectDataPermission.Read.value]: - raise InvalidInput( - 'Principal Role', - principal_role_arn, - f'be in the same {aws_account_id=} when WRITE/MODIFY permissions are specified', + def _resolve_principal_role_name( + session, group_uri, environment_uri, principal_id, principal_role_name, principal_type + ): + if principal_type == PrincipalType.ConsumptionRole.value: + consumption_role: ConsumptionRole = EnvironmentService.get_environment_consumption_role( + session, principal_id, environment_uri ) + return consumption_role.IAMRoleName + elif principal_type == PrincipalType.Group.value: + env_group: EnvironmentGroup = EnvironmentService.get_environment_group(session, group_uri, environment_uri) + return env_group.environmentIAMRoleName + else: + return principal_role_name diff --git a/backend/dataall/modules/shares_base/services/shares_enums.py b/backend/dataall/modules/shares_base/services/shares_enums.py index 05e42b6fb..1aabb6c50 100644 --- a/backend/dataall/modules/shares_base/services/shares_enums.py +++ b/backend/dataall/modules/shares_base/services/shares_enums.py @@ -59,6 +59,7 @@ class ShareItemHealthStatus(GraphQLEnumMapper): class ShareObjectActions(GraphQLEnumMapper): + Create = 'Create' Submit = 'Submit' Approve = 'Approve' Reject = 'Reject' diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index 87bcf526b..9d017d7f0 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -20,10 +20,6 @@ from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.services.share_processor_manager import ShareProcessorManager -from dataall.modules.shares_base.services.share_object_service import ( - ShareObjectService, -) -from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.base.db.exceptions import ResourceLockTimeout log = logging.getLogger(__name__) @@ -83,14 +79,6 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: share_successful = True try: - if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - # TODO make it generic to non IAM role principals - if not ShareObjectService.verify_principal_role(session, share_data.share): - raise PrincipalRoleNotFound( - 'process approved shares', - f'Principal role {share_data.share.principalRoleName} is not found.', - ) - with ResourceLockRepository.acquire_lock_with_retry( resources=resources, session=session, @@ -188,14 +176,6 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: revoke_successful = True try: - if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - # TODO make it generic to non IAM role principals - if not ShareObjectService.verify_principal_role(session, share_data.share): - raise PrincipalRoleNotFound( - 'process revoked shares', - f'Principal role {share_data.share.principalRoleName} is not found.', - ) - with ResourceLockRepository.acquire_lock_with_retry( resources=resources, session=session, @@ -271,22 +251,6 @@ def verify_share( """ with engine.scoped_session() as session: share_data, share_items = cls._get_share_data_and_items(session, share_uri, status, healthStatus) - if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - # TODO make it generic to non IAM role principals - log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') - if not ShareObjectService.verify_principal_role(session, share_data.share): - log.error( - f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, updating health status...' - ) - ShareStatusRepository.update_share_item_health_status_batch( - session, - share_uri, - old_status=healthStatus, - new_status=ShareItemHealthStatus.Unhealthy.value, - message=f'Share principal Role {share_data.share.principalRoleName} not found. Check the team or consumption IAM role used.', - ) - return True - for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): try: shareable_items = ShareObjectRepository.get_share_data_items_by_type( @@ -338,13 +302,6 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: ) try: - if share_data.share.principalType in [PrincipalType.ConsumptionRole.value, PrincipalType.Group.value]: - # TODO make it generic to non IAM role principals - log.info(f'Verifying principal IAM Role {share_data.share.principalRoleName}') - reapply_successful = ShareObjectService.verify_principal_role(session, share_data.share) - if not reapply_successful: - log.error(f'Failed to get Principal IAM Role {share_data.share.principalRoleName}, exiting...') - return False with ResourceLockRepository.acquire_lock_with_retry( resources=resources, session=session, diff --git a/tests/modules/redshift_datasets_shares/conftest.py b/tests/modules/redshift_datasets_shares/conftest.py index 463a008a2..1fbac5a92 100644 --- a/tests/modules/redshift_datasets_shares/conftest.py +++ b/tests/modules/redshift_datasets_shares/conftest.py @@ -25,6 +25,7 @@ def mock_redshift_data_shares(mocker): redshiftShareDataClient.return_value.check_role_permissions_in_database.return_value = True redshiftShareDataClient.return_value.check_schema_exists.return_value = True redshiftShareDataClient.return_value.check_role_permissions_in_schema.return_value = True + redshiftShareDataClient.return_value.check_redshift_role_in_namespace.return_value = True yield redshiftShareDataClient @@ -125,6 +126,31 @@ def source_connection(db, user, group, env_fixture, mock_redshift_serverless, mo 'database': 'database_1', 'redshiftUser': None, 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', + 'connectionType': 'DATA_USER', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def source_connection_admin(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data, api_context_1): + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection1_admin', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'XXXXXXXXXXXXXX', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', 'connectionType': 'ADMIN', }, ) @@ -219,7 +245,9 @@ def table1(db, user, group, dataset_1): @pytest.fixture(scope='function') -def redshift_share_request_cross_account(db, user2, group2, env_fixture_2, target_connection, dataset_1): +def redshift_share_request_cross_account( + db, user2, group2, env_fixture_2, target_connection, dataset_1, mock_redshift_data_shares, source_connection_admin +): set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) share = ShareObjectService.create_share_object( uri=env_fixture_2.environmentUri, @@ -241,7 +269,14 @@ def redshift_share_request_cross_account(db, user2, group2, env_fixture_2, targe @pytest.fixture(scope='function') def redshift_share_request_2_same_account( - db, user2, group2, env_fixture_same_1, target_connection_same_account, dataset_1 + db, + user2, + group2, + env_fixture_same_1, + target_connection_same_account, + dataset_1, + mock_redshift_data_shares, + source_connection_admin, ): set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) share = ShareObjectService.create_share_object( @@ -296,6 +331,7 @@ def approved_share_data_cross_account( dataset_1, env_fixture, env_fixture_2, + mock_redshift_data_shares, ): set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) ShareObjectService.submit_share_object(uri=redshift_share_request_cross_account.shareUri) @@ -324,6 +360,7 @@ def approved_share_data_same_account( dataset_1, env_fixture, env_fixture_same_1, + mock_redshift_data_shares, ): set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) ShareObjectService.submit_share_object(uri=redshift_share_request_2_same_account.shareUri) diff --git a/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py b/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py new file mode 100644 index 000000000..63e45c379 --- /dev/null +++ b/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py @@ -0,0 +1,88 @@ +from assertpy import assert_that +from dataall.modules.redshift_datasets_shares.services.redshift_table_share_validator import RedshiftTableValidator + + +def test_redshift_validator_create( + db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares, source_connection_admin +): + # Given + validator = RedshiftTableValidator() + # When + with db.scoped_session() as session: + response = validator.validate_share_object_create( + session=session, + dataset=dataset_1, + environment=env_fixture_2, + group_uri=group2.name, + principal_id=target_connection.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ) + # Then + assert_that(response).is_true() + mock_redshift_data_shares.return_value.check_redshift_role_in_namespace.assert_called_with(role='rs_role_1') + + +def test_redshift_validator_create_same_clusters(db, dataset_1, group, env_fixture, source_connection): + # Given + validator = RedshiftTableValidator() + # When + with db.scoped_session() as session: + # Then + assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( + session=session, + dataset=dataset_1, + environment=env_fixture, + group_uri=group.name, + principal_id=source_connection.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'only possible between different namespaces') + + +def test_redshift_validator_role_does_not_exist( + db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares +): + # Given + validator = RedshiftTableValidator() + # When + mock_redshift_data_shares.return_value.check_redshift_role_in_namespace.return_value = False + with db.scoped_session() as session: + # Then + assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( + session=session, + dataset=dataset_1, + environment=env_fixture_2, + group_uri=group2.name, + principal_id=target_connection.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ).contains('PrincipalRoleNotFound', 'CREATE_SHARE_OBJECT', 'Redshift role rs_role_1 does not exist') + + +def test_redshift_validator_not_admin_connection( + db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares +): + # Given + validator = RedshiftTableValidator() + # Since fixture source_connection_admin is not used, an ADMIN connection does not exist for dataset_1 + # When + with db.scoped_session() as session: + # Then + assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( + session=session, + dataset=dataset_1, + environment=env_fixture_2, + group_uri=group2.name, + principal_id=target_connection.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'datashares require an ADMIN connection') diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 703ea218a..cf531c461 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -1268,6 +1268,10 @@ def test_create_share_object_as_requester(mocker, client, user2, group2, env2gro # Given # Existing dataset, target environment and group # SharePolicy exists and is attached + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) # When a user that belongs to environment and group creates request mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', @@ -1298,6 +1302,10 @@ def test_create_share_object_as_approver_and_requester(mocker, client, user, gro # Existing dataset, target environment and group # SharePolicy exists and is attached # When a user that belongs to environment and group creates request + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1322,11 +1330,15 @@ def test_create_share_object_as_approver_and_requester(mocker, client, user, gro assert create_share_object_response.data.createShareObject.requestPurpose == 'testShare' -def test_create_share_object_invalid_xaccount(mocker, client, user, group2, env2group, env2, dataset1): +def test_create_share_object_invalid_account(mocker, client, user, group2, env2group, env2, dataset1): # Given # Existing dataset, target environment and group # SharePolicy exists and is attached # When a user that belongs to environment and group creates request + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1346,7 +1358,7 @@ def test_create_share_object_invalid_xaccount(mocker, client, user, group2, env2 permissions=[ShareObjectDataPermission.Write.value], ) assert_that(create_share_object_response.errors[0].message).contains( - 'InvalidInput', env2.EnvironmentDefaultIAMRoleArn, dataset1.AwsAccountId + 'InvalidInput', env2.AwsAccountId, dataset1.AwsAccountId ) @@ -1357,6 +1369,10 @@ def test_create_share_object_with_item_authorized( # Existing dataset, table, target environment and group # SharePolicy exists and is attached # When a user that belongs to environment and group creates request with table in the request + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1402,6 +1418,10 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_ena # Existing dataset, target environment and group # SharePolicy exists and is NOT attached, attachMissingPolicies=True # When a correct user creates request, data.all attaches the policy and the share creates successfully + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1439,6 +1459,10 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_dis # Existing dataset, target environment and group # SharePolicy exists and is NOT attached, attachMissingPolicies=True but principal=Group so managed=Trye # When a correct user creates request, data.all attaches the policy and the share creates successfully + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1476,6 +1500,10 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_dis # Existing dataset, target environment and group # SharePolicy exists and is NOT attached, attachMissingPolicies=True # When a correct user creates request, data.all attaches the policy and the share creates successfully + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1512,6 +1540,10 @@ def test_create_share_object_share_policy_not_attached_attachMissingPolicies_dis def test_create_share_object_with_share_expiration_added( mocker, client, user2, group2, env2group, env2, dataset_with_expiration ): + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1548,6 +1580,10 @@ def test_create_share_object_with_share_expiration_added( def test_create_share_object_with_non_expiring_share( mocker, client, user2, group2, env2group, env2, dataset_with_expiration_3 ): + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, @@ -1578,6 +1614,10 @@ def test_create_share_object_with_non_expiring_share( def test_create_share_object_with_share_expiration_incorrect_share_expiration( mocker, client, user2, group2, env2group, env2, dataset_with_expiration ): + mocker.patch( + 'dataall.base.aws.iam.IAM.get_role_arn_by_name', + return_value='role_arn', + ) mocker.patch( 'dataall.modules.s3_datasets_shares.services.s3_share_managed_policy_service.S3SharePolicyService.check_if_policy_exists', return_value=True, From c7e73d8b694e21889420fa186ad3e2a4f7da3edd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:53:05 -0400 Subject: [PATCH 051/188] Bump flask-cors from 4.0.1 to 5.0.0 in /backend (#1515) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [flask-cors](https://github.com/corydolphin/flask-cors) from 4.0.1 to 5.0.0.
Release notes

Sourced from flask-cors's releases.

5.0.0

What's Changed

Full Changelog: https://github.com/corydolphin/flask-cors/compare/4.0.2...5.0.0

4.0.2

What's Changed

New Contributors

Full Changelog: https://github.com/corydolphin/flask-cors/compare/4.0.1...4.0.2

Changelog

Sourced from flask-cors's changelog.

Change Log

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=flask-cors&package-manager=pip&previous-version=4.0.1&new-version=5.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/data-dot-all/dataall/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index e0a34d519..94f7927ca 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,7 +4,7 @@ boto3==1.34.119 botocore==1.34.119 fastapi == 0.109.2 Flask==3.0.3 -flask-cors==4.0.1 +flask-cors==5.0.0 nanoid==2.0.0 opensearch-py==1.0.0 PyAthena==2.3.0 From d1cfd18b4a3de3daadd3e77a9404ce80b0870abc Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 4 Sep 2024 02:27:45 -0400 Subject: [PATCH 052/188] Bump webpack to 5.94.0 (#1517) ### Feature or Bugfix - Bugfix (dependabots finding) ### Detail - Bumps [webpack](https://github.com/webpack/webpack) from 5.91.0 to 5.94.0. ### Relates - https://github.com/data-dot-all/dataall/pull/1507 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 38 ++++++++++++++++--------------------- frontend/package.json | 3 ++- frontend/yarn.lock | 39 +++++++++++++++----------------------- 3 files changed, 33 insertions(+), 47 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9e196a188..6c3fc7e82 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -61,6 +61,7 @@ "simplebar-react": "^2.3.6", "uuid": "^10.0.0", "web-vitals": "^2.1.4", + "webpack": "^5.94.0", "yup": "^0.32.11" }, "devDependencies": { @@ -14131,15 +14132,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -14982,10 +14974,11 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -18290,9 +18283,10 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -32818,20 +32812,20 @@ } }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/frontend/package.json b/frontend/package.json index e1978ae9d..c39c4c0c0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -70,7 +70,8 @@ "simplebar-react": "^2.3.6", "uuid": "^10.0.0", "web-vitals": "^2.1.4", - "yup": "^0.32.11" + "yup": "^0.32.11", + "webpack": "^5.94.0" }, "overrides": { "aws-amplify": { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index b5bd26921..2af3a0726 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4901,15 +4901,7 @@ resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz" integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": +"@types/eslint@^7.29.0 || ^8.4.1": version "8.56.10" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== @@ -5544,10 +5536,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== acorn-jsx@^5.3.2: version "5.3.2" @@ -7798,10 +7790,10 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.16.0: - version "5.17.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz" - integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== +enhanced-resolve@^5.17.1: + version "5.17.1" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -14987,21 +14979,20 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": - version "5.91.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, webpack@^5.94.0, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": + version "5.94.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz" + integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== dependencies: - "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.12.1" "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" From c9af1eecd5210328183af4ea7ddd14b13893b032 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 14:18:55 +0300 Subject: [PATCH 053/188] Bump micromatch from 4.0.7 to 4.0.8 in /frontend (#1518) Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8.
Release notes

Sourced from micromatch's releases.

4.0.8

Ultimate release that fixes both CVE-2024-4067 and CVE-2024-4068. We consider the issues low-priority, so even if you see automated scanners saying otherwise, don't be scared.

Changelog

Sourced from micromatch's changelog.

[4.0.8] - 2024-08-22

  • backported CVE-2024-4067 fix (from v4.0.6) over to 4.x branch
Commits
  • 8bd704e 4.0.8
  • a0e6841 run verb to generate README documentation
  • 4ec2884 Merge branch 'v4' into hauserkristof-feature/v4.0.8
  • 03aa805 Merge pull request #266 from hauserkristof/feature/v4.0.8
  • 814f5f7 lint
  • 67fcce6 fix: CHANGELOG about braces & CVE-2024-4068, v4.0.5
  • 113f2e3 fix: CVE numbers in CHANGELOG
  • d9dbd9a feat: updated CHANGELOG
  • 2ab1315 fix: use actions/setup-node@v4
  • 1406ea3 feat: rework test to work on macos with node 10,12 and 14
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=micromatch&package-manager=npm_and_yarn&previous-version=4.0.7&new-version=4.0.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/data-dot-all/dataall/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 6 +- frontend/yarn.lock | 2821 ++++++------------------------------ 2 files changed, 416 insertions(+), 2411 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6c3fc7e82..521fccdd7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -26858,9 +26858,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 2af3a0726..0a8a1f79a 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@4.3.3": +"@adobe/css-tools@4.3.3", "@adobe/css-tools@^4.0.1": version "4.3.3" resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== @@ -289,15 +289,6 @@ fast-xml-parser "^4.2.5" tslib "^1.8.0" -"@aws-crypto/crc32@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" - integrity sha512-8K0b1672qbv05chSoKpwGZ3fhvVp28Fg3AVHVkEHFl2lTLChO7wD/hTyyo8ING7uc31uZRt7bNra/hA74Td7Tw== - dependencies: - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - "@aws-crypto/crc32@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" @@ -307,6 +298,15 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" +"@aws-crypto/crc32@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" + integrity sha512-8K0b1672qbv05chSoKpwGZ3fhvVp28Fg3AVHVkEHFl2lTLChO7wD/hTyyo8ING7uc31uZRt7bNra/hA74Td7Tw== + dependencies: + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + "@aws-crypto/ie11-detection@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz" @@ -321,19 +321,6 @@ dependencies: tslib "^1.11.1" -"@aws-crypto/sha256-browser@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" - integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== - dependencies: - "@aws-crypto/ie11-detection" "^1.0.0" - "@aws-crypto/sha256-js" "^1.2.2" - "@aws-crypto/supports-web-crypto" "^1.0.0" - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - tslib "^1.11.1" - "@aws-crypto/sha256-browser@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" @@ -348,7 +335,20 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2", "@aws-crypto/sha256-js@1.2.2": +"@aws-crypto/sha256-browser@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" + integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== + dependencies: + "@aws-crypto/ie11-detection" "^1.0.0" + "@aws-crypto/sha256-js" "^1.2.2" + "@aws-crypto/supports-web-crypto" "^1.0.0" + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@1.2.2", "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz" integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== @@ -357,7 +357,7 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@^2.0.0", "@aws-crypto/sha256-js@2.0.0": +"@aws-crypto/sha256-js@2.0.0", "@aws-crypto/sha256-js@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== @@ -1641,7 +1641,12 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/types@^3.1.0", "@aws-sdk/types@3.6.1": +"@aws-sdk/types@3.186.0": + version "3.186.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" + integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== + +"@aws-sdk/types@3.6.1", "@aws-sdk/types@^3.1.0": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.6.1.tgz" integrity sha512-4Dx3eRTrUHLxhFdLJL8zdNGzVsJfAxtxPYYGmIddUkO2Gj3WA1TGjdfG4XN/ClI6e1XonCHafQX3UYO/mgnH3g== @@ -1654,11 +1659,6 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/types@3.186.0": - version "3.186.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" - integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== - "@aws-sdk/url-parser-native@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/url-parser-native/-/url-parser-native-3.6.1.tgz" @@ -1868,13 +1868,6 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.6.1": - version "3.6.1" - resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" - integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== - dependencies: - tslib "^1.8.0" - "@aws-sdk/util-utf8-browser@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz" @@ -1882,6 +1875,13 @@ dependencies: tslib "^2.3.1" +"@aws-sdk/util-utf8-browser@3.6.1", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.6.1" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" + integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== + dependencies: + tslib "^1.8.0" + "@aws-sdk/util-utf8-node@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz" @@ -1915,12 +1915,12 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -1950,7 +1950,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": +"@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz" integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== @@ -1975,7 +1975,7 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz" integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== @@ -2021,7 +2021,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== @@ -2082,7 +2082,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz" integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.24.7": +"@babel/helper-remap-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz" integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== @@ -2166,7 +2166,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== @@ -2203,17 +2203,7 @@ "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-proposal-async-generator-functions@^7.0.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.0": +"@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -2230,23 +2220,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-decorators" "^7.24.7" -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz" - integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-default-from" "^7.24.7" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -2254,7 +2228,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.16.0": +"@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -2262,26 +2236,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.20.0": - version "7.20.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.0": +"@babel/plugin-proposal-optional-chaining@^7.16.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -2338,20 +2293,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz" - integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" @@ -2359,7 +2307,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.7": +"@babel/plugin-syntax-flow@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz" integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== @@ -2408,7 +2356,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -2436,7 +2384,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -2472,7 +2420,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.7": +"@babel/plugin-transform-arrow-functions@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== @@ -2489,7 +2437,7 @@ "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.7": +"@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== @@ -2505,7 +2453,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.7": +"@babel/plugin-transform-block-scoping@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz" integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== @@ -2529,7 +2477,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.7": +"@babel/plugin-transform-classes@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz" integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== @@ -2543,7 +2491,7 @@ "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.7": +"@babel/plugin-transform-computed-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== @@ -2551,7 +2499,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.7": +"@babel/plugin-transform-destructuring@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz" integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== @@ -2597,7 +2545,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.7": +"@babel/plugin-transform-flow-strip-types@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz" integrity sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA== @@ -2613,7 +2561,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.7": +"@babel/plugin-transform-function-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz" integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== @@ -2630,7 +2578,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.7": +"@babel/plugin-transform-literals@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz" integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== @@ -2660,7 +2608,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7": +"@babel/plugin-transform-modules-commonjs@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz" integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== @@ -2687,7 +2635,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== @@ -2753,14 +2701,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7": +"@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": +"@babel/plugin-transform-private-methods@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz" integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== @@ -2768,7 +2716,7 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.7": +"@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== @@ -2792,7 +2740,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz" integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== @@ -2806,21 +2754,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.24.7": +"@babel/plugin-transform-react-jsx@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz" integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== @@ -2854,7 +2788,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.16.4": +"@babel/plugin-transform-runtime@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== @@ -2866,14 +2800,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.7": +"@babel/plugin-transform-shorthand-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.7": +"@babel/plugin-transform-spread@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== @@ -2881,7 +2815,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.7": +"@babel/plugin-transform-sticky-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== @@ -2902,7 +2836,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typescript@^7.24.7", "@babel/plugin-transform-typescript@^7.5.0": +"@babel/plugin-transform-typescript@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz" integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== @@ -2927,7 +2861,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.7": +"@babel/plugin-transform-unicode-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== @@ -2943,7 +2877,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz" integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== @@ -3030,15 +2964,6 @@ core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-flow@^7.13.13": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz" - integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-flow-strip-types" "^7.24.7" - "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" @@ -3060,7 +2985,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.24.7" "@babel/plugin-transform-react-pure-annotations" "^7.24.7" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz" integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== @@ -3071,30 +2996,19 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.7" "@babel/plugin-transform-typescript" "^7.24.7" -"@babel/register@^7.13.16": - version "7.24.6" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz" - integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.6" - source-map-support "^0.5.16" - "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.0.0", "@babel/template@^7.24.7", "@babel/template@^7.3.3": +"@babel/template@^7.24.7", "@babel/template@^7.3.3": version "7.24.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== @@ -3103,7 +3017,7 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/traverse@7.23.2": +"@babel/traverse@7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.7.2": version "7.23.2" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -3119,7 +3033,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz" integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== @@ -3315,7 +3229,7 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/core@^10.0.27", "@emotion/core@^10.0.28": +"@emotion/core@^10.0.28": version "10.3.1" resolved "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== @@ -3336,22 +3250,15 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - "@emotion/hash@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/is-prop-valid@^1.2.2": - version "1.2.2" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" - integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== - dependencies: - "@emotion/memoize" "^0.8.1" +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== "@emotion/is-prop-valid@0.8.8": version "0.8.8" @@ -3360,17 +3267,24 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== +"@emotion/is-prop-valid@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.2", "@emotion/react@^11.9.0": +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.8.2": version "11.11.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz" integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== @@ -3395,18 +3309,7 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^1.1.2": - version "1.1.4" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - -"@emotion/serialize@^1.1.3": +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4": version "1.1.4" resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== @@ -3417,27 +3320,16 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/serialize@^1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== "@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== - "@emotion/styled-base@^10.3.0": version "10.3.0" resolved "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz" @@ -3456,7 +3348,7 @@ "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" -"@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": +"@emotion/styled@^11.8.1": version "11.11.5" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz" integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ== @@ -3473,41 +3365,41 @@ resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - "@emotion/unitless@0.7.5": version "0.7.5" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - "@emotion/utils@0.11.3": version "0.11.3" resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== "@emotion/weak-memoize@0.2.5": version "0.2.5" resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -3572,18 +3464,6 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" @@ -3615,11 +3495,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@isaacs/ttlcache@^1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" - integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" @@ -3694,13 +3569,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.6.3": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" - integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== - dependencies: - "@jest/types" "^29.6.3" - "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" @@ -3711,16 +3579,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" @@ -3740,18 +3598,6 @@ jest-mock "^27.5.1" jest-util "^27.5.1" -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" @@ -3866,17 +3712,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" @@ -3976,7 +3811,7 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.40": +"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.20": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -4014,7 +3849,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@^5.8.6", "@mui/material@>=5.15.0": +"@mui/material@^5.5.2": version "5.15.19" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.19.tgz" integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== @@ -4074,7 +3909,7 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.15", "@mui/system@^5.4.1", "@mui/system@^5.8.0": +"@mui/system@^5.15.15": version "5.15.15" resolved "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz" integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== @@ -4160,7 +3995,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -4196,310 +4031,6 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@react-native-community/cli-clean@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz" - integrity sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - -"@react-native-community/cli-config@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.8.tgz" - integrity sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - cosmiconfig "^5.1.0" - deepmerge "^4.3.0" - fast-glob "^3.3.2" - joi "^17.2.1" - -"@react-native-community/cli-debugger-ui@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.8.tgz" - integrity sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.8.tgz" - integrity sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA== - dependencies: - "@react-native-community/cli-config" "13.6.8" - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-platform-apple" "13.6.8" - "@react-native-community/cli-platform-ios" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - command-exists "^1.2.8" - deepmerge "^4.3.0" - envinfo "^7.10.0" - execa "^5.0.0" - hermes-profile-transformer "^0.0.6" - node-stream-zip "^1.9.1" - ora "^5.4.1" - semver "^7.5.2" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - yaml "^2.2.1" - -"@react-native-community/cli-hermes@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.8.tgz" - integrity sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ== - dependencies: - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - -"@react-native-community/cli-platform-android@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.8.tgz" - integrity sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - fast-xml-parser "^4.2.4" - logkitty "^0.7.1" - -"@react-native-community/cli-platform-apple@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.8.tgz" - integrity sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg== - dependencies: - "@react-native-community/cli-tools" "13.6.8" - chalk "^4.1.2" - execa "^5.0.0" - fast-glob "^3.3.2" - fast-xml-parser "^4.0.12" - ora "^5.4.1" - -"@react-native-community/cli-platform-ios@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.8.tgz" - integrity sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw== - dependencies: - "@react-native-community/cli-platform-apple" "13.6.8" - -"@react-native-community/cli-server-api@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.8.tgz" - integrity sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg== - dependencies: - "@react-native-community/cli-debugger-ui" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.1" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^6.2.2" - -"@react-native-community/cli-tools@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.8.tgz" - integrity sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - execa "^5.0.0" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - sudo-prompt "^9.0.0" - -"@react-native-community/cli-types@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.8.tgz" - integrity sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli@13.6.8": - version "13.6.8" - resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.8.tgz" - integrity sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ== - dependencies: - "@react-native-community/cli-clean" "13.6.8" - "@react-native-community/cli-config" "13.6.8" - "@react-native-community/cli-debugger-ui" "13.6.8" - "@react-native-community/cli-doctor" "13.6.8" - "@react-native-community/cli-hermes" "13.6.8" - "@react-native-community/cli-server-api" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - "@react-native-community/cli-types" "13.6.8" - chalk "^4.1.2" - commander "^9.4.1" - deepmerge "^4.3.0" - execa "^5.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.2" - semver "^7.5.2" - -"@react-native/assets-registry@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.84.tgz" - integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ== - -"@react-native/babel-plugin-codegen@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz" - integrity sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw== - dependencies: - "@react-native/codegen" "0.74.84" - -"@react-native/babel-preset@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.84.tgz" - integrity sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.74.84" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.14.0" - -"@react-native/codegen@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.84.tgz" - integrity sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ== - dependencies: - "@babel/parser" "^7.20.0" - glob "^7.1.1" - hermes-parser "0.19.1" - invariant "^2.2.4" - jscodeshift "^0.14.0" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - -"@react-native/community-cli-plugin@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.84.tgz" - integrity sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ== - dependencies: - "@react-native-community/cli-server-api" "13.6.8" - "@react-native-community/cli-tools" "13.6.8" - "@react-native/dev-middleware" "0.74.84" - "@react-native/metro-babel-transformer" "0.74.84" - chalk "^4.0.0" - execa "^5.1.1" - metro "^0.80.3" - metro-config "^0.80.3" - metro-core "^0.80.3" - node-fetch "^2.2.0" - querystring "^0.2.1" - readline "^1.3.0" - -"@react-native/debugger-frontend@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz" - integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A== - -"@react-native/dev-middleware@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz" - integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ== - dependencies: - "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.74.84" - "@rnx-kit/chromium-edge-launcher" "^1.0.0" - chrome-launcher "^0.15.2" - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - open "^7.0.3" - selfsigned "^2.4.1" - serve-static "^1.13.1" - temp-dir "^2.0.0" - ws "^6.2.2" - -"@react-native/gradle-plugin@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz" - integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg== - -"@react-native/js-polyfills@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz" - integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ== - -"@react-native/metro-babel-transformer@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz" - integrity sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw== - dependencies: - "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.74.84" - hermes-parser "0.19.1" - nullthrows "^1.1.1" - -"@react-native/normalize-colors@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz" - integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A== - -"@react-native/virtualized-lists@0.74.84": - version "0.74.84" - resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz" - integrity sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw== - dependencies: - invariant "^2.2.4" - nullthrows "^1.1.1" - "@reduxjs/toolkit@^1.8.0": version "1.9.7" resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz" @@ -4510,18 +4041,6 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@rnx-kit/chromium-edge-launcher@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" - integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== - dependencies: - "@types/node" "^18.0.0" - escape-string-regexp "^4.0.0" - is-wsl "^2.2.0" - lighthouse-logger "^1.0.0" - mkdirp "^1.0.4" - rimraf "^3.0.2" - "@rollup/plugin-babel@^5.2.0": version "5.3.1" resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" @@ -4564,23 +4083,6 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz" integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" @@ -4598,20 +4100,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" @@ -4753,20 +4241,6 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/dom@>=7.21.4": - version "10.1.0" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz" - integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.3.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - "@testing-library/jest-dom@^5.16.2": version "5.17.0" resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz" @@ -4833,7 +4307,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -5040,13 +4514,6 @@ dependencies: undici-types "~5.26.4" -"@types/node@^18.0.0": - version "18.19.34" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz" - integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== - dependencies: - undici-types "~5.26.4" - "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" @@ -5101,7 +4568,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17", "@types/react@^17.0.0 || ^18.0.0": +"@types/react@*", "@types/react@^17": version "17.0.80" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz" integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== @@ -5110,14 +4577,6 @@ "@types/scheduler" "^0.16" csstype "^3.0.2" -"@types/react@^18.2.6": - version "18.3.3" - resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -5200,13 +4659,6 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^15.0.0": - version "15.0.19" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" - integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^16.0.0": version "16.0.9" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" @@ -5226,7 +4678,7 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.7.tgz" integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA== -"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -5249,7 +4701,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -5295,7 +4747,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -5322,7 +4774,7 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -5423,7 +4875,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -5513,14 +4965,7 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -5551,16 +4996,16 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -5600,7 +5045,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5610,27 +5055,7 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0: - version "8.16.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^8.6.0, ajv@>=8: - version "8.16.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: version "8.16.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== @@ -5656,11 +5081,6 @@ amazon-quicksight-embedding-sdk@^1.18.1: resolved "https://registry.npmjs.org/amazon-quicksight-embedding-sdk/-/amazon-quicksight-embedding-sdk-1.20.1.tgz" integrity sha512-JYBCeq1Rq1OOeZQB9ry85uASTTtqZzp5hFv0ihIX7XyD9anvcoW6GHo4ttzdkJMTMMAnzXhIBe9CRKm3tHMzeg== -anser@^1.4.9: - version "1.4.10" - resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" - integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== - ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -5668,15 +5088,6 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" -ansi-fragments@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" - integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== - dependencies: - colorette "^1.0.7" - slice-ansi "^2.0.0" - strip-ansi "^5.0.0" - ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -5687,12 +5098,7 @@ ansi-html@^0.0.9: resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz" integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: +ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -5702,7 +5108,7 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5739,7 +5145,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@^3.33.2, apexcharts@^3.41.0: +apexcharts@^3.33.2: version "3.49.1" resolved "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz" integrity sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw== @@ -5778,7 +5184,7 @@ apollo-cache-inmemory@^1.6.6: ts-invariant "^0.4.0" tslib "^1.10.0" -apollo-cache@^1.3.5, apollo-cache@1.3.5: +apollo-cache@1.3.5, apollo-cache@^1.3.5: version "1.3.5" resolved "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz" integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== @@ -5837,7 +5243,7 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: tslib "^1.9.3" zen-observable-ts "^0.8.21" -apollo-utilities@^1.3.0, apollo-utilities@^1.3.4, apollo-utilities@1.3.4: +apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: version "1.3.4" resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== @@ -5856,11 +5262,6 @@ appbase-js@^5.3.4: querystring "^0.2.0" url-parser-lite "^0.1.0" -appdirsjs@^1.2.4: - version "1.2.7" - resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" - integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== - arg@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" @@ -5878,13 +5279,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0, aria-query@^5.3.0, aria-query@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" @@ -5892,6 +5286,13 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" +aria-query@^5.0.0, aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -6024,23 +5425,6 @@ ast-types-flow@^0.0.8: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - async@^3.2.3: version "3.2.5" resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" @@ -6120,11 +5504,6 @@ axobject-query@^3.2.1: dependencies: dequal "^2.0.3" -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" @@ -6238,13 +5617,6 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== -babel-plugin-transform-flow-enums@^0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" - integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== - dependencies: - "@babel/plugin-syntax-flow" "^7.12.1" - babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" @@ -6308,7 +5680,7 @@ base-64@1.0.0: resolved "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -6339,15 +5711,6 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" @@ -6404,7 +5767,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.3, braces@~3.0.2, braces@3.0.3: +braces@3.0.3, braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -6416,7 +5779,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz" integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== @@ -6438,22 +5801,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.4.3: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@4.9.2: version "4.9.2" resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" @@ -6463,6 +5810,14 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.4.3: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" @@ -6489,25 +5844,6 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -6535,17 +5871,12 @@ camelcase-keys@6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^6.2.1: +camelcase@^6.2.0, camelcase@^6.2.1: version "6.3.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -6592,31 +5923,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6654,26 +5961,11 @@ chokidar@^3.4.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chrome-launcher@^0.15.2: - version "0.15.2" - resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" - integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== - dependencies: - "@types/node" "*" - escape-string-regexp "^4.0.0" - is-wsl "^2.2.0" - lighthouse-logger "^1.0.0" - chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" @@ -6696,27 +5988,6 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -6726,35 +5997,7 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clsx@^1.1.0: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -clsx@^1.2.1: +clsx@^1.1.0, clsx@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -6797,26 +6040,21 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^1.0.7: - version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - colorette@^2.0.10: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" @@ -6829,17 +6067,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^2.20.3: +commander@^2.20.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6859,11 +6087,6 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.1: - version "9.5.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" @@ -6881,7 +6104,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.1, compression@^1.7.4: +compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -6909,16 +6132,6 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -connect@^3.6.5: - version "3.7.0" - resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -6946,16 +6159,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@^0.4.0: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookie@0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" @@ -6985,26 +6198,6 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^5.0.5: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" @@ -7052,25 +6245,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -7165,15 +6340,15 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: - mdn-data "2.0.14" + mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.3: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -7181,14 +6356,6 @@ css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" @@ -7305,12 +6472,7 @@ csstype@^2.5.7: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -csstype@^3.1.3: +csstype@^3.0.2, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -7356,38 +6518,31 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.0.0, date-fns@^2.25.0, date-fns@^2.28.0: +date-fns@^2.28.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" -dayjs@^1.10.7, dayjs@^1.11.0, dayjs@^1.11.7, dayjs@^1.8.15, dayjs@^1.8.17: +dayjs@^1.11.0, dayjs@^1.11.7: version "1.11.11" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^2.6.0: +debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: - ms "2.0.0" + ms "2.1.2" debug@^3.2.7: version "3.2.7" @@ -7396,25 +6551,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: - version "4.3.5" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - decimal.js@^10.2.1: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -7464,11 +6600,6 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -deepmerge@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -7476,13 +6607,6 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" @@ -7511,21 +6635,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -7622,6 +6741,14 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -7631,24 +6758,16 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" @@ -7726,7 +6845,7 @@ echarts-for-react@^3.0.2: fast-deep-equal "^3.1.3" size-sensor "^1.0.1" -"echarts@^3.0.0 || ^4.0.0 || ^5.0.0", echarts@^5.3.3: +echarts@^5.3.3: version "5.5.0" resolved "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz" integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== @@ -7739,7 +6858,7 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@3.1.10: +ejs@3.1.10, ejs@^3.1.6: version "3.1.10" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -7798,7 +6917,7 @@ enhanced-resolve@^5.17.1: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^2.0.0, entities@2.2.0: +entities@2.2.0, entities@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== @@ -7811,11 +6930,6 @@ env-cmd@^10.1.0: commander "^4.0.0" cross-spawn "^7.0.0" -envinfo@^7.10.0: - version "7.13.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -7830,14 +6944,6 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -errorhandler@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" - integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== - dependencies: - accepts "~1.3.7" - escape-html "~1.0.3" - es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" @@ -8081,7 +7187,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5, eslint-plugin-import@>=1.4.0: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: version "2.29.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -8176,7 +7282,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -8192,14 +7298,6 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -8221,7 +7319,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6", eslint@>=7.0.0, eslint@>=7.28.0: +eslint@^8.3.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -8274,16 +7372,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esprima@1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" @@ -8298,12 +7396,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -8328,11 +7421,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-target-shim@^5.0.0, event-target-shim@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" @@ -8350,7 +7438,7 @@ exec-sh@^0.2.0: dependencies: merge "^1.2.0" -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -8391,7 +7479,7 @@ expect@^29.0.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@4.19.2: +express@4.19.2, express@^4.17.3: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -8443,7 +7531,7 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -8464,7 +7552,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@4.4.1: +fast-xml-parser@4.2.5, fast-xml-parser@4.4.1, fast-xml-parser@^4.2.5: version "4.4.1" resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== @@ -8538,19 +7626,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" @@ -8564,15 +7639,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" @@ -8594,15 +7660,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -8632,17 +7690,7 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -flow-enums-runtime@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" - integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== - -flow-parser@0.*: - version "0.237.2" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz" - integrity sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ== - -follow-redirects@1.15.6: +follow-redirects@1.15.6, follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8737,26 +7785,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -8806,7 +7835,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -8846,7 +7875,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -8860,13 +7889,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -8950,7 +7972,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -8967,7 +7989,7 @@ graphql-tag@^2.12.6, graphql-tag@^2.4.2: dependencies: tslib "^2.1.0" -"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.0.0 || ^16.0.0", graphql@15.8.0: +graphql@15.8.0: version "15.8.0" resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== @@ -9040,37 +8062,6 @@ he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hermes-estree@0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz" - integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== - -hermes-estree@0.20.1: - version "0.20.1" - resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" - integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== - -hermes-parser@0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz" - integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== - dependencies: - hermes-estree "0.19.1" - -hermes-parser@0.20.1: - version "0.20.1" - resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" - integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== - dependencies: - hermes-estree "0.20.1" - -hermes-profile-transformer@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" - integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== - dependencies: - source-map "^0.7.3" - history@^5.0.3: version "5.3.0" resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz" @@ -9161,16 +8152,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -9182,6 +8163,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -9234,13 +8225,6 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.5.tgz" integrity sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw== -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -9248,21 +8232,28 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - idb@5.0.6: version "5.0.6" resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + identity-obj-proxy@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" @@ -9280,30 +8271,15 @@ ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.21, immer@^9.0.7: - version "9.0.21" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - immer@9.0.6: version "9.0.6" resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +immer@^9.0.21, immer@^9.0.7: + version "9.0.21" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -9339,7 +8315,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -9370,16 +8346,21 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ip@1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -9456,11 +8437,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -9478,11 +8454,6 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -9512,11 +8483,6 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" @@ -9559,13 +8525,6 @@ is-plain-obj@^3.0.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" @@ -9632,11 +8591,6 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" @@ -9657,12 +8611,7 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -9684,11 +8633,6 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - isomorphic-unfetch@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" @@ -9914,18 +8858,6 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" -jest-environment-node@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" @@ -10060,15 +8992,6 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" @@ -10093,7 +9016,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -10248,24 +9171,12 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-validate@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watch-typeahead@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== - dependencies: - ansi-escapes "^4.3.1" + ansi-escapes "^4.3.1" chalk "^4.0.0" jest-regex-util "^28.0.0" jest-watcher "^28.0.0" @@ -10327,17 +9238,7 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.6.3: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: +jest@^27.4.3: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -10351,17 +9252,6 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== -joi@^17.2.1: - version "17.13.1" - resolved "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz" - integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" @@ -10387,41 +9277,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsc-android@^250231.0.0: - version "250231.0.0" - resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" - integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== - -jsc-safe-url@^0.2.2: - version "0.2.4" - resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" - integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== - -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" - jsdom@^16.6.0: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" @@ -10470,11 +9325,6 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -10512,13 +9362,6 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -10602,7 +9445,7 @@ jss-plugin-vendor-prefixer@^10.10.0: css-vendor "^2.0.8" jss "10.10.0" -jss@^10.10.0, jss@10.10.0: +jss@10.10.0, jss@^10.10.0: version "10.10.0" resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz" integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== @@ -10690,14 +9533,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lighthouse-logger@^1.0.0: - version "1.4.2" - resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" - integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== - dependencies: - debug "^2.6.9" - marky "^1.2.2" - lilconfig@^2.0.3, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -10794,23 +9629,6 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -logkitty@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" - integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== - dependencies: - ansi-fragments "^0.2.1" - dayjs "^1.8.15" - yargs "^15.1.0" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -10849,14 +9667,6 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" @@ -10883,11 +9693,6 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -marky@^1.2.2: - version "1.2.5" - resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" - integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" @@ -10910,11 +9715,6 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" @@ -10925,214 +9725,30 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" - integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== - merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge@2.1.1, merge@^1.2.0: + version "2.1.1" + resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -metro-babel-transformer@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz" - integrity sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ== - dependencies: - "@babel/core" "^7.20.0" - hermes-parser "0.20.1" - nullthrows "^1.1.1" - -metro-cache-key@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz" - integrity sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg== - -metro-cache@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz" - integrity sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w== - dependencies: - metro-core "0.80.9" - rimraf "^3.0.2" - -metro-config@^0.80.3, metro-config@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz" - integrity sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg== - dependencies: - connect "^3.6.5" - cosmiconfig "^5.0.5" - jest-validate "^29.6.3" - metro "0.80.9" - metro-cache "0.80.9" - metro-core "0.80.9" - metro-runtime "0.80.9" - -metro-core@^0.80.3, metro-core@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz" - integrity sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.80.9" - -metro-file-map@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz" - integrity sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ== - dependencies: - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-worker "^29.6.3" - micromatch "^4.0.4" - node-abort-controller "^3.1.1" - nullthrows "^1.1.1" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -metro-minify-terser@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz" - integrity sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A== - dependencies: - terser "^5.15.0" - -metro-resolver@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz" - integrity sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w== - -metro-runtime@^0.80.3, metro-runtime@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz" - integrity sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg== - dependencies: - "@babel/runtime" "^7.0.0" - -metro-source-map@^0.80.3, metro-source-map@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz" - integrity sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw== - dependencies: - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - invariant "^2.2.4" - metro-symbolicate "0.80.9" - nullthrows "^1.1.1" - ob1 "0.80.9" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz" - integrity sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA== - dependencies: - invariant "^2.2.4" - metro-source-map "0.80.9" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz" - integrity sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz" - integrity sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - metro "0.80.9" - metro-babel-transformer "0.80.9" - metro-cache "0.80.9" - metro-cache-key "0.80.9" - metro-minify-terser "0.80.9" - metro-source-map "0.80.9" - metro-transform-plugins "0.80.9" - nullthrows "^1.1.1" - -metro@^0.80.3, metro@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz" - integrity sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - accepts "^1.3.7" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - graceful-fs "^4.2.4" - hermes-parser "0.20.1" - image-size "^1.0.2" - invariant "^2.2.4" - jest-worker "^29.6.3" - jsc-safe-url "^0.2.2" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.80.9" - metro-cache "0.80.9" - metro-cache-key "0.80.9" - metro-config "0.80.9" - metro-core "0.80.9" - metro-file-map "0.80.9" - metro-resolver "0.80.9" - metro-runtime "0.80.9" - metro-source-map "0.80.9" - metro-symbolicate "0.80.9" - metro-transform-plugins "0.80.9" - metro-transform-worker "0.80.9" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^3.0.2" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - throat "^5.0.0" - ws "^7.5.1" - yargs "^17.6.2" - micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.7" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -11144,11 +9760,6 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@^2.4.1: - version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -11177,7 +9788,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11208,33 +9819,23 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -"monaco-editor@>= 0.21.0 < 1", "monaco-editor@>= 0.25.0 < 1": - version "0.49.0" - resolved "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz" - integrity sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ== - -ms@^2.1.1, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -11282,7 +9883,7 @@ negotiator@0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -11300,24 +9901,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nocache@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" - integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== - -node-abort-controller@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12: +node-fetch@^2.6.1, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -11339,11 +9923,6 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-stream-zip@^1.9.1: - version "1.15.0" - resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -11379,28 +9958,18 @@ nprogress@^0.2.0: resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== -nth-check@^2.0.1: +nth-check@^1.0.2, nth-check@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - nwsapi@^2.2.0: version "2.2.10" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== -ob1@0.80.9: - version "0.80.9" - resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz" - integrity sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA== - object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" @@ -11503,7 +10072,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: +oidc-client-ts@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.4.0.tgz" integrity sha512-WijhkTrlXK2VvgGoakWJiBdfIsVGz6CFzgjNNqZU1hPKV2kyeEaJgLs7RwuiSp2WhLfWBQuLvr2SxVlZnk3N1w== @@ -11511,13 +10080,6 @@ oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: crypto-js "^4.2.0" jwt-decode "^3.1.2" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -11537,28 +10099,13 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^6.2.0: - version "6.4.0" - resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -open@^7.0.3: - version "7.4.2" - resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -11609,29 +10156,7 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -11699,14 +10224,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -11755,12 +10272,7 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -11808,23 +10320,11 @@ pify@^2.3.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: +pirates@^4.0.1, pirates@^4.0.4: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -12384,7 +10884,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.31: +postcss@8.4.31, postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -12410,7 +10910,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@>=2.0.0, prettier@2.8.7: +prettier@2.8.7: version "2.8.7" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -12428,26 +10928,6 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@^26.5.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" @@ -12467,16 +10947,7 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0: - version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-format@^29.7.0: +pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -12490,7 +10961,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^8.1.0, promise@^8.3.0: +promise@^8.1.0: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== @@ -12505,7 +10976,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@>=15: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -12537,16 +11008,16 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - punycode@1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + q@^1.1.2: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" @@ -12559,16 +11030,16 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -querystring@^0.2.0, querystring@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - querystring@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" @@ -12579,13 +11050,6 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" @@ -12684,15 +11148,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-devtools-core@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz" - integrity sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", react-dom@^17.0.2, "react-dom@^17.0.2 || ^18.0.0", react-dom@<18.0.0, react-dom@>=15, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: +react-dom@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -12746,30 +11202,20 @@ react-if@^4.1.1: resolved "https://registry.npmjs.org/react-if/-/react-if-4.1.5.tgz" integrity sha512-Uk+Ub2gC83PAakuU4+7iLdTEP4LPi2ihNEPCtz/vr8SLGbzkMApbpYbkDZ5z9zYXurd0gg+EK/bpOLFFC1r1eQ== -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: +react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^17.0.2: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0, react-is@^18.2.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-native-get-random-values@^1.4.0: version "1.11.0" @@ -12785,55 +11231,12 @@ react-native-url-polyfill@^1.3.0: dependencies: whatwg-url-without-unicode "8.0.0-3" -react-native@*, react-native@>=0.56: - version "0.74.2" - resolved "https://registry.npmjs.org/react-native/-/react-native-0.74.2.tgz" - integrity sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw== - dependencies: - "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "13.6.8" - "@react-native-community/cli-platform-android" "13.6.8" - "@react-native-community/cli-platform-ios" "13.6.8" - "@react-native/assets-registry" "0.74.84" - "@react-native/codegen" "0.74.84" - "@react-native/community-cli-plugin" "0.74.84" - "@react-native/gradle-plugin" "0.74.84" - "@react-native/js-polyfills" "0.74.84" - "@react-native/normalize-colors" "0.74.84" - "@react-native/virtualized-lists" "0.74.84" - abort-controller "^3.0.0" - anser "^1.4.9" - ansi-regex "^5.0.0" - base64-js "^1.5.1" - chalk "^4.0.0" - event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.6" - invariant "^2.2.4" - jest-environment-node "^29.6.3" - jsc-android "^250231.0.0" - memoize-one "^5.0.0" - metro-runtime "^0.80.3" - metro-source-map "^0.80.3" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.3.0" - react-devtools-core "^5.0.0" - react-refresh "^0.14.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "0.24.0-canary-efb381bbf-20230505" - stacktrace-parser "^0.1.10" - whatwg-fetch "^3.0.0" - ws "^6.2.2" - yargs "^17.6.2" - react-oidc-context@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/react-oidc-context/-/react-oidc-context-2.3.1.tgz" integrity sha512-WdhmEU6odNzMk9pvOScxUkf6/1aduiI/nQryr7+iCl2VDnYLASDTIV/zy58KuK4VXG3fBaRKukc/mRpMjF9a3Q== -"react-redux@^7.2.1 || ^8.0.2", react-redux@^7.2.6: +react-redux@^6.0.1, react-redux@^7.2.6: version "7.2.9" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -12845,16 +11248,11 @@ react-oidc-context@^2.3.1: prop-types "^15.7.2" react-is "^17.0.2" -react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": +react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -react-refresh@^0.14.0: - version "0.14.2" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" - integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== - react-router-dom@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0.tgz" @@ -12924,14 +11322,6 @@ react-scripts@^5.0.1: optionalDependencies: fsevents "^2.3.2" -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" @@ -12942,7 +11332,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.0.0 || >=16.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.9.0 || ^17.0.0 || ^18", "react@^16.x || ^17.x || ^18.x", react@^17.0.0, "react@^17.0.0 || ^18.0.0", react@^17.0.2, "react@^17.0.2 || ^18.0.0", react@<18.0.0, "react@>= 16", "react@>= 16.8", react@>=0.13, react@>=0.13.x, react@>=0.14.x, react@>=15, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@~0.13.x || ~0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0", react@17.0.2: +react@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -12950,13 +11340,6 @@ react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", loose-envify "^1.1.0" object-assign "^4.1.1" -react@18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" @@ -12977,7 +11360,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.4.0: +readable-stream@^3.0.6: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -12986,19 +11369,6 @@ readable-stream@^3.0.6, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -13006,21 +11376,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" @@ -13041,7 +11396,7 @@ redux-thunk@^2.3.0, redux-thunk@^2.4.2: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4, redux@^4.0.0, redux@^4.2.1: +redux@^4.0.0, redux@^4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -13073,11 +11428,6 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.2: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" @@ -13160,11 +11510,6 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" @@ -13182,11 +11527,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" @@ -13197,7 +11537,7 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@5.0.0: +resolve-url-loader@5.0.0, resolve-url-loader@^4.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== @@ -13236,14 +11576,6 @@ response-iterator@^0.2.6: resolved "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -13266,13 +11598,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" @@ -13283,7 +11608,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: +rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -13307,20 +11632,15 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.3: version "1.0.3" @@ -13369,12 +11689,14 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@0.24.0-canary-efb381bbf-20230505: - version "0.24.0-canary-efb381bbf-20230505" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" - integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - loose-envify "^1.1.0" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" schema-utils@^2.6.5: version "2.7.1" @@ -13385,25 +11707,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -13422,21 +11726,12 @@ schema-utils@^4.0.0, schema-utils@^4.2.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1, selfsigned@^2.4.1: +selfsigned@^2.1.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -13444,52 +11739,17 @@ selfsigned@^2.1.1, selfsigned@^2.4.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^5.5.0, semver@^5.6.0: +semver@^5.5.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.3.5: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.3.7: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.2: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.3: - version "7.6.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.4: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -13513,11 +11773,6 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-error@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" - integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" @@ -13545,7 +11800,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@^1.13.1, serve-static@1.15.0: +serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -13555,11 +11810,6 @@ serve-static@^1.13.1, serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -13592,13 +11842,6 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" @@ -13628,7 +11871,7 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -13693,15 +11936,6 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slice-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -13730,7 +11964,7 @@ source-map-loader@^3.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -13738,20 +11972,15 @@ source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.2 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.7.3: version "0.7.4" @@ -13765,21 +11994,6 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -13830,13 +12044,6 @@ stackframe@^1.3.4: resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - state-local@^1.0.6: version "1.0.7" resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" @@ -13849,21 +12056,16 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -13871,20 +12073,6 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -13915,7 +12103,7 @@ string-natural-compare@^3.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13979,6 +12167,20 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -13995,20 +12197,6 @@ stringify-object@^3.3.0: dependencies: ansi-regex "^5.0.1" -strip-ansi@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -14091,11 +12279,6 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -14103,14 +12286,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -14163,7 +12339,7 @@ svg.filter.js@^2.0.2: dependencies: svg.js "^2.2.5" -svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5, svg.js@>=2.3.x: +svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz" integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== @@ -14287,13 +12463,6 @@ temp-dir@^2.0.0: resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - tempy@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" @@ -14323,7 +12492,7 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.15.0, terser@^5.26.0: +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: version "5.31.1" resolved "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz" integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== @@ -14361,24 +12530,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - throat@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - thunky@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" @@ -14484,31 +12640,21 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.8.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^1.11.1, tslib@^1.8.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tslib@^1.8.1: +tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== -tslib@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -14545,16 +12691,11 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3, "type-fest@>=0.17.0 <5.0.0": +type-fest@^0.21.3: version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -14614,11 +12755,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - ulid@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz" @@ -14687,11 +12823,6 @@ universal-cookie@^4.0.4: "@types/cookie" "^0.3.3" cookie "^0.4.0" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" @@ -14702,7 +12833,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -14750,7 +12881,7 @@ url-search-params-polyfill@^7.0.0: resolved "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz" integrity sha512-bAw7L2E+jn9XHG5P9zrPnHdO0yJub4U+yXJOdpcpkr7OBd9T8oll4lUos0iSGRcDvfZoLUKfx9a6aNmIhJ4+mQ== -url@^0.11.0, url@0.11.0: +url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== @@ -14783,31 +12914,21 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^3.0.0: +uuid@3.4.0, uuid@^3.0.0, uuid@^3.2.1: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^3.2.1: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" @@ -14822,11 +12943,6 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" @@ -14871,13 +12987,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - web-vitals@^2.1.4: version "2.1.4" resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz" @@ -14903,7 +13012,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@5.3.4: +webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== @@ -14914,7 +13023,7 @@ webpack-dev-middleware@5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": +webpack-dev-server@^4.6.0: version "4.15.2" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -14979,7 +13088,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, webpack@^5.94.0, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": +webpack@^5.64.4, webpack@^5.94.0: version "5.94.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz" integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== @@ -15008,7 +13117,7 @@ webpack-sources@^3.2.3: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -15029,7 +13138,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: +whatwg-fetch@^3.6.2: version "3.6.20" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== @@ -15065,16 +13174,7 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0: - version "8.7.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -15122,11 +13222,6 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" @@ -15335,15 +13430,6 @@ workbox-window@6.6.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -15367,15 +13453,6 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" @@ -15386,24 +13463,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^6.2.2: - version "6.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" - integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.2.3: - version "6.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" - integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== - dependencies: - async-limiter "~1.0.0" - -ws@^7, ws@^7.4.6, ws@^7.5.1: - version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^7.4.6, ws@^8.13.0, ws@^8.17.1: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xml-name-validator@^3.0.0: version "3.0.0" @@ -15423,16 +13486,6 @@ xss@^1.0.11: commander "^2.20.3" cssfilter "0.0.10" -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -15448,51 +13501,16 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.1: - version "2.4.5" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" - integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== - yaml@^2.3.4: version "2.4.5" resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^15.1.0: - version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -15506,19 +13524,6 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.6.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" @@ -15537,6 +13542,14 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" +zen-observable-ts@0.8.19: + version "0.8.19" + resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" + integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" @@ -15552,24 +13565,16 @@ zen-observable-ts@^1.2.5: dependencies: zen-observable "0.8.15" -zen-observable-ts@0.8.19: - version "0.8.19" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" - integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" +zen-observable@0.8.15, zen-observable@^0.8.0: + version "0.8.15" + resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== zen-observable@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz" integrity sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg== -zen-observable@^0.8.0, zen-observable@0.8.15: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zen-push@0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/zen-push/-/zen-push-0.2.1.tgz" From ae16cc81eaff6da34bd19b2621d2d63a0df665bd Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 4 Sep 2024 08:44:58 -0400 Subject: [PATCH 054/188] Update baseline removing checkov exception for glue security config (#1516) ### Feature or Bugfix - Enhancement ### Detail - Update checkov baseline after #1434 PR to add security configs to glue resources ### Relates - #1324 and #1434 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/.checkov.baseline b/.checkov.baseline index 80db5f1d8..afbf8e8d4 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -133,6 +133,12 @@ "CKV_AWS_158" ] }, + { + "resource": "AWS::Logs::LogGroup.ECSLogGroupshareexpirationtaskdev40CB15AF", + "check_ids": [ + "CKV_AWS_158" + ] + }, { "resource": "AWS::Logs::LogGroup.ECSLogGroupsharemanagerdev49FFAB5E", "check_ids": [ @@ -168,12 +174,6 @@ "check_ids": [ "CKV_AWS_158" ] - }, - { - "resource": "AWS::Logs::LogGroup.ECSLogGroupshareexpirationtaskdev40CB15AF", - "check_ids": [ - "CKV_AWS_158" - ] } ] }, @@ -647,23 +647,6 @@ } ] }, - { - "file": "/checkov_s3_dataset_synth.json", - "findings": [ - { - "resource": "AWS::Glue::Crawler.dhCrawler", - "check_ids": [ - "CKV_AWS_195" - ] - }, - { - "resource": "AWS::Glue::Job.DatasetGlueProfilingJob", - "check_ids": [ - "CKV_AWS_195" - ] - } - ] - }, { "file": "/checkov_smstudio_extension_synth.json", "findings": [ From 9840995b45703acdd505de5a7c01d05f4f1cb8a8 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 4 Sep 2024 17:28:32 +0200 Subject: [PATCH 055/188] Redshift data sharing - Added methods from sharing back to redshift datasets (check_on_delete, list_shared_datasets...) (#1511) ### Feature or Bugfix - Feature ### Detail Complete design in https://github.com/data-dot-all/dataall/issues/955. This particular PR is focused on adding missing functionalities in redshift_datasets that need to be implemented inside redshift_datasets. For example, when we delete a redshift dataset we would want to first check if there are any share requests shared for that dataset. To avoid circular dependencies it is required to use an interface in the same way it was implemented for S3. In this PR: - Add `RedshiftShareDatasetService(DatasetServiceInterface)` class and implement required abstract methods (check_on_delete, resolve_user_shared_datasets..... - Use this class in redshift_Datasets module in resolvers, on dataset deletion... - Some of the code was very similar to the db queries implemented by S3 datasets; for this reason in this PR some of the queries are moved to the generic ShareObjectRepository to be reused by both types of dataset ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/datasets/resolvers.py | 11 ++- .../services/redshift_dataset_service.py | 50 +++++++++- .../redshift_datasets_shares/__init__.py | 7 ++ .../redshift_share_dataset_service.py | 97 +++++++++++++++++++ .../s3_datasets/services/dataset_service.py | 4 +- .../db/s3_share_object_repositories.py | 83 ---------------- .../services/s3_share_dataset_service.py | 25 ++--- .../services/s3_share_service.py | 2 +- .../glue_table_share_processor.py | 5 +- .../db/share_object_repositories.py | 79 ++++++++++++++- .../redshift_datasets_shares/conftest.py | 4 + 11 files changed, 263 insertions(+), 104 deletions(-) create mode 100644 backend/dataall/modules/redshift_datasets_shares/services/redshift_share_dataset_service.py diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py b/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py index 6579099b9..e95480351 100644 --- a/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py +++ b/backend/dataall/modules/redshift_datasets/api/datasets/resolvers.py @@ -107,7 +107,9 @@ def resolve_dataset_stewards_group( return source.stewards -def resolve_user_role(context: Context, source: RedshiftDataset, **kwargs): +def resolve_user_role( + context: Context, source: RedshiftDataset, **kwargs +): # TODO- duplicated with S3 datasets - follow-up PR if not source: return None if source.owner == context.username: @@ -116,6 +118,13 @@ def resolve_user_role(context: Context, source: RedshiftDataset, **kwargs): return DatasetRole.Admin.value elif source.stewards in context.groups: return DatasetRole.DataSteward.value + else: + with context.engine.scoped_session() as session: + other_modules_user_role = RedshiftDatasetService.get_other_modules_dataset_user_role( + session, source.datasetUri, context.username, context.groups + ) + if other_modules_user_role is not None: + return other_modules_user_role return DatasetRole.NoPermission.value diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py index 0dd5425ef..573c50bd1 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -1,5 +1,5 @@ import logging - +from typing import List from dataall.base.context import get_context from dataall.base.db.paginator import paginate_list from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService @@ -12,6 +12,7 @@ from dataall.modules.datasets_base.services.datasets_enums import DatasetRole from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository +from dataall.modules.datasets_base.services.dataset_service_interface import DatasetServiceInterface from dataall.modules.redshift_datasets.services.redshift_dataset_permissions import ( MANAGE_REDSHIFT_DATASETS, @@ -45,6 +46,46 @@ class RedshiftDatasetService: + _interfaces: List[DatasetServiceInterface] = [] + + @classmethod + def register(cls, interface: DatasetServiceInterface): + cls._interfaces.append(interface) + + @classmethod + def get_other_modules_dataset_user_role(cls, session, uri, username, groups) -> str: + """All other user role types that might come from other modules""" + for interface in cls._interfaces: + role = interface.resolve_additional_dataset_user_role(session, uri, username, groups) + if role is not None: + return role + return None + + @classmethod + def check_before_delete(cls, session, uri, **kwargs) -> bool: + """All actions from other modules that need to be executed before deletion""" + can_be_deleted = [interface.check_before_delete(session, uri, **kwargs) for interface in cls._interfaces] + return all(can_be_deleted) + + @classmethod + def execute_on_delete(cls, session, uri, **kwargs) -> bool: + """All actions from other modules that need to be executed during deletion""" + for interface in cls._interfaces: + interface.execute_on_delete(session, uri, **kwargs) + return True + + @classmethod + def _attach_additional_steward_permissions(cls, session, dataset, new_stewards): + """All permissions from other modules that need to be granted to stewards""" + for interface in cls._interfaces: + interface.extend_attach_steward_permissions(session, dataset, new_stewards) + + @classmethod + def _delete_additional_steward_permissions(cls, session, dataset): + """All permissions from other modules that need to be deleted to stewards""" + for interface in cls._interfaces: + interface.extend_delete_steward_permissions(session, dataset) + @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) @ResourcePolicyService.has_resource_permission(IMPORT_REDSHIFT_DATASET) @@ -120,7 +161,7 @@ def delete_redshift_dataset(uri): with context.db_engine.scoped_session() as session: dataset: RedshiftDataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) - # TODO: when adding sharing, add check_on_delete for shared items + RedshiftDatasetService.check_before_delete(session, uri, action=DELETE_REDSHIFT_DATASET) tables: [RedshiftTable] = RedshiftDatasetRepository.list_redshift_dataset_tables( session, dataset.datasetUri ) @@ -128,6 +169,8 @@ def delete_redshift_dataset(uri): DatasetTableIndexer.delete_doc(doc_id=table.rsTableUri) session.delete(table) + RedshiftDatasetService.execute_on_delete(session, uri, action=DELETE_REDSHIFT_DATASET) + ResourcePolicyService.delete_resource_policy( session=session, resource_uri=uri, group=dataset.SamlAdminGroupName ) @@ -350,7 +393,7 @@ def _transfer_stewardship_to_owners(session, dataset): group=dataset.stewards, resource_uri=dataset.datasetUri, ) - + RedshiftDatasetService._delete_additional_steward_permissions(session, dataset) return dataset @staticmethod @@ -368,4 +411,5 @@ def _transfer_stewardship_to_new_stewards(session, dataset, new_stewards): resource_uri=dataset.datasetUri, resource_type=RedshiftDataset.__name__, ) + RedshiftDatasetService._attach_additional_steward_permissions(session, dataset, new_stewards) return dataset diff --git a/backend/dataall/modules/redshift_datasets_shares/__init__.py b/backend/dataall/modules/redshift_datasets_shares/__init__.py index c86f2de48..441718570 100644 --- a/backend/dataall/modules/redshift_datasets_shares/__init__.py +++ b/backend/dataall/modules/redshift_datasets_shares/__init__.py @@ -35,12 +35,17 @@ def __init__(self): from dataall.modules.shares_base.services.shares_enums import ShareableType from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable + from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService from dataall.modules.redshift_datasets_shares.services.redshift_table_share_processor import ( ProcessRedshiftShare, ) from dataall.modules.redshift_datasets_shares.services.redshift_table_share_validator import ( RedshiftTableValidator, ) + from dataall.modules.datasets_base.services.dataset_list_service import DatasetListService + from dataall.modules.redshift_datasets_shares.services.redshift_share_dataset_service import ( + RedshiftShareDatasetService, + ) EnvironmentResourceManager.register(RedshiftShareEnvironmentResource()) @@ -49,6 +54,8 @@ def __init__(self): ShareableType.RedshiftTable, ProcessRedshiftShare, RedshiftTable, RedshiftTable.rsTableUri ) ) + RedshiftDatasetService.register(RedshiftShareDatasetService()) + DatasetListService.register(RedshiftShareDatasetService()) ShareObjectService.register_validator(dataset_type=DatasetTypes.Redshift, validator=RedshiftTableValidator) diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_share_dataset_service.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_share_dataset_service.py new file mode 100644 index 000000000..304d4736b --- /dev/null +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_share_dataset_service.py @@ -0,0 +1,97 @@ +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.base.db import exceptions +from dataall.modules.shares_base.db.share_object_models import ShareObject +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository +from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_APPROVER +from dataall.modules.redshift_datasets.services.redshift_dataset_permissions import DELETE_REDSHIFT_DATASET +from dataall.modules.datasets_base.services.datasets_enums import DatasetRole, DatasetTypes +from dataall.modules.datasets_base.services.dataset_service_interface import DatasetServiceInterface + + +import logging + +log = logging.getLogger(__name__) + + +class RedshiftShareDatasetService(DatasetServiceInterface): + @property + def dataset_type(self): + return DatasetTypes.Redshift + + @staticmethod + def resolve_additional_dataset_user_role(session, uri, username, groups): + """Implemented as part of the DatasetServiceInterface""" + share = ShareObjectRepository.find_share_by_dataset_attributes(session, uri, username, groups) + if share is not None: + return DatasetRole.Shared.value + return None + + @staticmethod + def check_before_delete(session, uri, **kwargs): + """Implemented as part of the DatasetServiceInterface""" + action = kwargs.get('action') + if action in [DELETE_REDSHIFT_DATASET]: + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + shares = ShareObjectRepository.list_dataset_shares_with_existing_shared_items( + session=session, dataset_uri=uri, share_item_shared_states=share_item_shared_states + ) + log.info(f'Found {len(shares)} shares for dataset {uri}') + for share in shares: + log.info(f'Share {share.shareUri} items, {share.status}') + if shares: + raise exceptions.ResourceShared( + action=DELETE_REDSHIFT_DATASET, + message='Revoke all dataset shares before deletion.', + ) + return True + + @staticmethod + def execute_on_delete(session, uri, **kwargs): + """Implemented as part of the DatasetServiceInterface""" + action = kwargs.get('action') + if action in [DELETE_REDSHIFT_DATASET]: + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + ShareObjectRepository.delete_dataset_shares_with_no_shared_items(session, uri, share_item_shared_states) + return True + + @staticmethod + def append_to_list_user_datasets(session, username, groups): + """Implemented as part of the DatasetServiceInterface""" + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + return ShareObjectRepository.list_user_shared_datasets( + session, username, groups, share_item_shared_states, DatasetTypes.Redshift + ) + + @staticmethod + def extend_attach_steward_permissions(session, dataset, new_stewards, **kwargs): + """Implemented as part of the DatasetServiceInterface""" + dataset_shares = ShareObjectRepository.find_dataset_shares(session, dataset.datasetUri) + if dataset_shares: + for share in dataset_shares: + ResourcePolicyService.attach_resource_policy( + session=session, + group=new_stewards, + permissions=SHARE_OBJECT_APPROVER, + resource_uri=share.shareUri, + resource_type=ShareObject.__name__, + ) + if dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=share.shareUri, + ) + + @staticmethod + def extend_delete_steward_permissions(session, dataset, **kwargs): + """Implemented as part of the DatasetServiceInterface""" + dataset_shares = ShareObjectRepository.find_dataset_shares(session, dataset.datasetUri) + if dataset_shares: + for share in dataset_shares: + if dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=share.shareUri, + ) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 6045c2900..14cfdc2fd 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -87,7 +87,7 @@ def _attach_additional_steward_permissions(cls, session, dataset, new_stewards): interface.extend_attach_steward_permissions(session, dataset, new_stewards) @classmethod - def _delete_additional_steward__permissions(cls, session, dataset): + def _delete_additional_steward_permissions(cls, session, dataset): """All permissions from other modules that need to be deleted to stewards""" for interface in cls._interfaces: interface.extend_delete_steward_permissions(session, dataset) @@ -511,7 +511,7 @@ def _transfer_stewardship_to_owners(session, dataset): resource_uri=tableUri, ) - DatasetService._delete_additional_steward__permissions(session, dataset) + DatasetService._delete_additional_steward_permissions(session, dataset) return dataset @staticmethod diff --git a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py index 20415e090..0e6a30c87 100644 --- a/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py +++ b/backend/dataall/modules/s3_datasets_shares/db/s3_share_object_repositories.py @@ -126,41 +126,6 @@ def find_all_other_share_items( query = query.filter(ShareObjectItem.status.in_(item_status)) return query.all() - @staticmethod - def list_user_s3_shared_datasets(session, username, groups) -> Query: - share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - query = ( - session.query(DatasetBase) - .outerjoin( - ShareObject, - ShareObject.datasetUri == DatasetBase.datasetUri, - ) - .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) - .filter( - and_( - or_( - ShareObject.principalId.in_(groups), - ShareObject.owner == username, - ), - ShareObjectItem.status.in_(share_item_shared_states), - ShareObjectItem.itemType.in_( - [ShareableType.Table.value, ShareableType.S3Bucket.value, ShareableType.StorageLocation.value] - ), - ) - ) - ) - return query.distinct(DatasetBase.datasetUri) - - @staticmethod - def get_share_by_dataset_attributes(session, dataset_uri, dataset_owner, groups=[]): - share: ShareObject = ( - session.query(ShareObject) - .filter(ShareObject.datasetUri == dataset_uri) - .filter(or_(ShareObject.owner == dataset_owner, ShareObject.principalId.in_(groups))) - .first() - ) - return share - @staticmethod def check_other_approved_share_item_table_exists(session, environment_uri, item_uri, share_item_uri): share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() @@ -315,54 +280,6 @@ def check_existing_s3_shared_items(session, item_uri: str) -> int: def delete_s3_share_item(session, item_uri: str): session.query(ShareObjectItem).filter(ShareObjectItem.itemUri == item_uri).delete() - @staticmethod - def delete_s3_shares_with_no_shared_items(session, dataset_uri): - share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - shares = ( - session.query(ShareObject) - .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) - .filter( - and_( - ShareObject.datasetUri == dataset_uri, - ShareObjectItem.status.notin_(share_item_shared_states), - ) - ) - .all() - ) - for share in shares: - share_items = session.query(ShareObjectItem).filter(ShareObjectItem.shareUri == share.shareUri).all() - for item in share_items: - session.delete(item) - - share_obj = session.query(ShareObject).filter(ShareObject.shareUri == share.shareUri).first() - session.delete(share_obj) - - @staticmethod - def find_s3_dataset_shares(session, dataset_uri): - return session.query(ShareObject).filter(ShareObject.datasetUri == dataset_uri).all() - - @staticmethod - def list_s3_dataset_shares_with_existing_shared_items( - session, dataset_uri, environment_uri=None, item_type=None - ) -> [ShareObject]: - share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() - query = ( - session.query(ShareObject) - .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) - .filter( - and_( - ShareObject.datasetUri == dataset_uri, - ShareObject.deleted.is_(None), - ShareObjectItem.status.in_(share_item_shared_states), - ) - ) - ) - if environment_uri: - query = query.filter(ShareObject.environmentUri == environment_uri) - if item_type: - query = query.filter(ShareObjectItem.itemType == item_type) - return query.all() - # the next 2 methods are used in subscription task @staticmethod def find_share_items_by_item_uri(session, item_uri): diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py index 5b62e255b..85d8fc0ee 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_dataset_service.py @@ -1,7 +1,9 @@ from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.base.db import exceptions from dataall.modules.shares_base.db.share_object_models import ShareObject +from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository +from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.shares_base.db.share_object_item_repositories import ShareObjectItemRepository from dataall.modules.shares_base.services.share_permissions import SHARE_OBJECT_APPROVER from dataall.modules.s3_datasets.services.dataset_permissions import ( @@ -27,7 +29,7 @@ def dataset_type(self): @staticmethod def resolve_additional_dataset_user_role(session, uri, username, groups): """Implemented as part of the DatasetServiceInterface""" - share = S3ShareObjectRepository.get_share_by_dataset_attributes(session, uri, username, groups) + share = ShareObjectRepository.find_share_by_dataset_attributes(session, uri, username, groups) if share is not None: return DatasetRole.Shared.value return None @@ -44,8 +46,9 @@ def check_before_delete(session, uri, **kwargs): message='Revoke all shares for this item before deletion', ) elif action in [DELETE_DATASET]: - shares = S3ShareObjectRepository.list_s3_dataset_shares_with_existing_shared_items( - session=session, dataset_uri=uri + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + shares = ShareObjectRepository.list_dataset_shares_with_existing_shared_items( + session=session, dataset_uri=uri, share_item_shared_states=share_item_shared_states ) if shares: raise exceptions.ResourceShared( @@ -61,8 +64,6 @@ def check_before_delete(session, uri, **kwargs): action=action, message='Remove all share items using this filter before deletion', ) - else: - raise exceptions.RequiredParameter('Delete action') return True @staticmethod @@ -73,22 +74,24 @@ def execute_on_delete(session, uri, **kwargs): S3ShareObjectRepository.delete_s3_share_item(session, uri) ShareObjectItemRepository.delete_all_share_item_filters(session, uri) elif action in [DELETE_DATASET]: - S3ShareObjectRepository.delete_s3_shares_with_no_shared_items(session, uri) + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + ShareObjectRepository.delete_dataset_shares_with_no_shared_items(session, uri, share_item_shared_states) elif action in [DELETE_TABLE_DATA_FILTER]: ShareObjectItemRepository.delete_share_item_filters_with_data_filter_uri(session, uri) - else: - raise exceptions.RequiredParameter('Delete action') return True @staticmethod def append_to_list_user_datasets(session, username, groups): """Implemented as part of the DatasetServiceInterface""" - return S3ShareObjectRepository.list_user_s3_shared_datasets(session, username, groups) + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + return ShareObjectRepository.list_user_shared_datasets( + session, username, groups, share_item_shared_states, DatasetTypes.S3 + ) @staticmethod def extend_attach_steward_permissions(session, dataset, new_stewards, **kwargs): """Implemented as part of the DatasetServiceInterface""" - dataset_shares = S3ShareObjectRepository.find_s3_dataset_shares(session, dataset.datasetUri) + dataset_shares = ShareObjectRepository.find_dataset_shares(session, dataset.datasetUri) if dataset_shares: for share in dataset_shares: ResourcePolicyService.attach_resource_policy( @@ -108,7 +111,7 @@ def extend_attach_steward_permissions(session, dataset, new_stewards, **kwargs): @staticmethod def extend_delete_steward_permissions(session, dataset, **kwargs): """Implemented as part of the DatasetServiceInterface""" - dataset_shares = S3ShareObjectRepository.find_s3_dataset_shares(session, dataset.datasetUri) + dataset_shares = ShareObjectRepository.find_dataset_shares(session, dataset.datasetUri) if dataset_shares: for share in dataset_shares: if dataset.stewards != dataset.SamlAdminGroupName: diff --git a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py index 7ae675690..f5220901e 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py +++ b/backend/dataall/modules/s3_datasets_shares/services/s3_share_service.py @@ -204,7 +204,7 @@ def get_dataset_shared_assume_role_url(uri): account_id = dataset.AwsAccountId region = dataset.region else: - share = S3ShareObjectRepository.get_share_by_dataset_attributes( + share = ShareObjectRepository.find_share_by_dataset_attributes( session=session, dataset_uri=uri, dataset_owner=context.username ) shared_environment = EnvironmentService.get_environment_by_uri( diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index 12383ef14..cd3c9e581 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -331,11 +331,12 @@ def process_revoked_shares(self) -> bool: if not existing_shared_tables_in_share: log.info('Revoking permissions to target shared database...') manager.revoke_principals_database_permissions_to_shared_database() - + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() existing_shares_with_shared_tables_in_environment = ( - S3ShareObjectRepository.list_s3_dataset_shares_with_existing_shared_items( + ShareObjectRepository.list_dataset_shares_with_existing_shared_items( session=self.session, dataset_uri=self.share_data.dataset.datasetUri, + share_item_shared_states=share_item_shared_states, environment_uri=self.share_data.target_environment.environmentUri, item_type=ShareableType.Table.value, ) diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index e008af4ec..5d1f0ff8e 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -11,7 +11,6 @@ from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.notifications.db.notification_models import Notification from dataall.modules.shares_base.db.share_object_models import ShareObjectItem, ShareObject - from dataall.modules.shares_base.services.shares_enums import ( ShareItemHealthStatus, PrincipalType, @@ -42,6 +41,41 @@ def find_share(session, dataset: DatasetBase, env, principal_id, principal_role_ .first() ) + @staticmethod + def find_dataset_shares(session, dataset_uri): + return session.query(ShareObject).filter(ShareObject.datasetUri == dataset_uri).all() + + @staticmethod + def find_share_by_dataset_attributes(session, dataset_uri, dataset_owner, groups=[]): + share: ShareObject = ( + session.query(ShareObject) + .filter(ShareObject.datasetUri == dataset_uri) + .filter(or_(ShareObject.owner == dataset_owner, ShareObject.groupUri.in_(groups))) + .first() + ) + return share + + @staticmethod + def list_dataset_shares_with_existing_shared_items( + session, dataset_uri, share_item_shared_states, environment_uri=None, item_type=None + ) -> [ShareObject]: + query = ( + session.query(ShareObject) + .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) + .filter( + and_( + ShareObject.datasetUri == dataset_uri, + ShareObject.deleted.is_(None), + ShareObjectItem.status.in_(share_item_shared_states), + ) + ) + ) + if environment_uri: + query = query.filter(ShareObject.environmentUri == environment_uri) + if item_type: + query = query.filter(ShareObjectItem.itemType == item_type) + return query.all() + @staticmethod def find_sharable_item(session, share_uri, item_uri) -> ShareObjectItem: return ( @@ -321,6 +355,28 @@ def paginate_shared_datasets(session, env_uri, data, share_item_shared_states): return paginate(query=q, page=data.get('page', 1), page_size=data.get('pageSize', 10)).to_dict() + @staticmethod + def list_user_shared_datasets(session, username, groups, share_item_shared_states, dataset_type) -> Query: + query = ( + session.query(DatasetBase) + .outerjoin( + ShareObject, + ShareObject.datasetUri == DatasetBase.datasetUri, + ) + .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) + .filter( + and_( + or_( + ShareObject.principalId.in_(groups), + ShareObject.owner == username, + ), + ShareObjectItem.status.in_(share_item_shared_states), + DatasetBase.datasetType == dataset_type, + ) + ) + ) + return query.distinct(DatasetBase.datasetUri) + @staticmethod def list_shareable_items_of_type(session, share, type, share_type_model, share_type_uri, status=None): """ @@ -448,3 +504,24 @@ def update_dataset_shares_expiration(session, enabledExpiration, datasetUri, exp share.expiryDate = None session.commit() return True + + @staticmethod + def delete_dataset_shares_with_no_shared_items(session, dataset_uri, share_item_shared_states): + shares = ( + session.query(ShareObject) + .outerjoin(ShareObjectItem, ShareObjectItem.shareUri == ShareObject.shareUri) + .filter( + and_( + ShareObject.datasetUri == dataset_uri, + ShareObjectItem.status.notin_(share_item_shared_states), + ) + ) + .all() + ) + for share in shares: + share_items = session.query(ShareObjectItem).filter(ShareObjectItem.shareUri == share.shareUri).all() + for item in share_items: + session.delete(item) + + share_obj = session.query(ShareObject).filter(ShareObject.shareUri == share.shareUri).first() + session.delete(share_obj) diff --git a/tests/modules/redshift_datasets_shares/conftest.py b/tests/modules/redshift_datasets_shares/conftest.py index 1fbac5a92..6c133fb1a 100644 --- a/tests/modules/redshift_datasets_shares/conftest.py +++ b/tests/modules/redshift_datasets_shares/conftest.py @@ -306,6 +306,8 @@ def redshift_requested_table(db, user2, group2, redshift_share_request_cross_acc ) dispose_context() yield item + with db.scoped_session() as session: + session.delete(item) @pytest.fixture(scope='function') @@ -317,6 +319,8 @@ def redshift_requested_table_2(db, user2, group2, redshift_share_request_2_same_ ) dispose_context() yield item + with db.scoped_session() as session: + session.delete(item) @pytest.fixture(scope='function') From adf395f13e11b8ae8a5e3d1146266cfb1e5368bd Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 4 Sep 2024 12:33:32 -0400 Subject: [PATCH 056/188] add docs on how to create table filters and assign to shares (#1506) ### Feature or Bugfix - Feature Documentation ### Detail - Add docs for working with table data filters and assigning to table shares ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- documentation/userguide/docs/datasets.md | 35 ++++++++++++++++++ .../datasets/dataset_table_filter.png | Bin 0 -> 142502 bytes .../datasets/dataset_table_filter_col.png | Bin 0 -> 184622 bytes .../datasets/dataset_table_filter_filled.png | Bin 0 -> 150776 bytes .../datasets/dataset_table_filter_row.png | Bin 0 -> 165293 bytes .../pictures/shares/share_table_filter.png | Bin 0 -> 62504 bytes .../shares/share_table_filter_attached.png | Bin 0 -> 65239 bytes .../shares/share_table_filter_edit.png | Bin 0 -> 98800 bytes .../shares/share_table_filter_view.png | Bin 0 -> 54090 bytes documentation/userguide/docs/shares.md | 23 ++++++++++++ 10 files changed, 58 insertions(+) create mode 100644 documentation/userguide/docs/pictures/datasets/dataset_table_filter.png create mode 100644 documentation/userguide/docs/pictures/datasets/dataset_table_filter_col.png create mode 100644 documentation/userguide/docs/pictures/datasets/dataset_table_filter_filled.png create mode 100644 documentation/userguide/docs/pictures/datasets/dataset_table_filter_row.png create mode 100644 documentation/userguide/docs/pictures/shares/share_table_filter.png create mode 100644 documentation/userguide/docs/pictures/shares/share_table_filter_attached.png create mode 100644 documentation/userguide/docs/pictures/shares/share_table_filter_edit.png create mode 100644 documentation/userguide/docs/pictures/shares/share_table_filter_view.png diff --git a/documentation/userguide/docs/datasets.md b/documentation/userguide/docs/datasets.md index b8e031678..01cc4fdca 100644 --- a/documentation/userguide/docs/datasets.md +++ b/documentation/userguide/docs/datasets.md @@ -257,6 +257,41 @@ Catalog and then click on Synchronize as we did in step 3. - Or directly, migrating from Hive Metastore. - there are more for sure :) +#### (Going Further) Creating Filters on Tables + +Additionally, dataset owners can create column-level or row-level filters on their dataset tables to more granularly restrict data access when sharing with other teams. + +To do so dataset owners can navigate to the **Filters** Tab for a given table and select **Add New Filter**: + +![dataset_table_filter](pictures/datasets/dataset_table_filter.png#zoom#shadow) + +When creating filters, you have the choice to create a column-level filter or a row-level filter. Column-level filters prompt the user to select a subset of columns to include for the table. Row-level filters use row expressions to specify the rows to include in for the table. + +An example of creating a column filter is below: + +![dataset_table_filter_col](pictures/datasets/dataset_table_filter_col.png#zoom#shadow) + +This filter restricts access on the table to only the 3 selected columns: `book_id`, `author`, and `publisher`. + +An example of creating a row filter is below: + +![dataset_table_filter_row](pictures/datasets/dataset_table_filter_row.png#zoom#shadow) + +This filter restricts access to only rows where `book_id` is not null, `title` is LIKE `%Harry Potter%` AND `num_pages` is greater than `100`. It is important to note that: +- The row filter acts as the intersection (logical 'AND') of the row expression(s) - if you need the union (logical 'OR') of multiple expressions you can create separate filters here and apply multiple to the table share item +- When creating a new row expression be sure to save the row expression by clicking the save icon (highlighted in red in the above) before creating the filter + +Once the filters are created, they will show in the Filters Table Tab: + +![dataset_table_filter_filled](pictures/datasets/dataset_table_filter_filled.png#zoom#shadow) + +Table filters are not editable. To update an existing filter you must: + +1. Revoke all associated share items using the filter (if applcable) +2. Delete the table filter +3. Create a new table filter with any updates as necessary + +These filters can be used when reviewing and approving share objects with table share items to more granularly limit data access. ### Folders diff --git a/documentation/userguide/docs/pictures/datasets/dataset_table_filter.png b/documentation/userguide/docs/pictures/datasets/dataset_table_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..c2765f59288d353b4989807006305d16466197b7 GIT binary patch literal 142502 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%0A7YTsky1j__T2nmfauZx%e(Lsg+k)LtCCZ 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 Dky^e; literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/datasets/dataset_table_filter_col.png b/documentation/userguide/docs/pictures/datasets/dataset_table_filter_col.png new file mode 100644 index 0000000000000000000000000000000000000000..96fd216ba85d8b7a4b79d37bd4f5918aa9f9bf74 GIT binary patch literal 184622 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 JNdA7v{{c>peEI+Y literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/datasets/dataset_table_filter_filled.png b/documentation/userguide/docs/pictures/datasets/dataset_table_filter_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..200b39a5a3f4e0a8a7994450cb3ebb285efacad9 GIT binary patch literal 150776 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/datasets/dataset_table_filter_row.png b/documentation/userguide/docs/pictures/datasets/dataset_table_filter_row.png new file mode 100644 index 0000000000000000000000000000000000000000..9145ef564b3c22273fb7c281f8aa675140d40bbb GIT binary patch literal 165293 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�zI( z7jIG?LYs-1CG{Znl>LkKTlT^d55%4T8Y4zUc&kP)r(g zc(f9xg_gXyWhVZ#k2iG|-sJTAD+KWs`}qlNQ*isOvHBjo^D*>?oox$Eb4JE=rO3oBHv@HE7BB=E zr9`3o>16rnCZx-`TKVXKpz0<-kjXFuh?n0p7>hlti&5F)7XRqh*VPscJe$R$CXJ@M ziX(lt-Gs6`u#8H+41)@7I?C#nCe<^zm6)#R`;@Ig4!pj0m%oeZ-rGXXE^i^T{Gao0 zA(!gNx1YQ1ZAG18*`4lpu9MnzSs7aQ)U-Z6zJ3G>|Ew!XZ0+j%=TI0!hsWsLN*%Ok zrCk;O_*wwdN=dogVz;Z}4hfZaSn!8~E^Et)stW!Sk4+pYBn;Ok2q{N0KHHVMmWML` z22GZ5~~RXpn2ND;L1KqpnzO>xQzVPFtoU*vCEYV zj~)6+Pg6Mp?^iE1)c0X;xT`!@Ee}1KJ~A#}dbBw5#czrukvrIg3IPv~nsZgl?Ogkg z)V#;1hHD*4aZ&qBS5D;F@4ocxg44eN=pT2G zfLPUwVCW+9kY}7ixMC49ySBXUOTRLH0caJ^lRL3EaY(d=W7foeI>8idfcNC`AP%xA z=39x%Ak#+b0f$4Jzmfs?u>MNUAG7#MC2C1f2@J3HnpYIp9$&xw2H)2*qE1k(XAB6u zYTUZV($YWl{&$VTR3z$t<80F2_P=Y;#*tBZV;2?d@G2ePP$ZqGmG{FA|&K2X^G(F^?k=)R+)F zq4Wi3Qv58BpA?YrJPVeDD$xMn#sjPLs|H>i2hn7}XV!rHh_6Vmonw(KJ`T5Rgfy<+1{h#9ev^hU1_5Uf(|0&M@8uI@a#PK^K1$sWt#^P=N1B21eS1$nL zaAd$hQUH{d6n_iKVKx3lr%5EA)Xi4?7Q$+BN6JYh_c_vkYw*BWMh;+USG-q#zqD+l zf(QUwHGd1OEX0~xT4sV^$tOv(KLi2)XPM*0H7TE8a)^t^Ffl{xHGiC+_uuc{t*BWV zbY|z~R!lMPh}Qb%KKtgsU-|K*@KYmno@oyUCckEC=fvDni4`$=!w8zu>b;Bi(tC8e z+>P@yzto+fR$K|*%+&yT1+ROqhXr{NuHdaJKKfr+_CGya&MT-%{Xr)AQ2A}NpoJpZ z%`SaWY!>UnkaZjh{$D62ZqXTsnIRwbW#_Sri1dv%opnv8@o9)+JoMOL&iC2FtosmJ z<1LOldY(5GN_jG;cr;>eZjP|%_IyMDvsh{A`Z`aZqP4ZPKh3}|e(5osafkYu)8$oR z%BH5K242Z}K}sGzr5s6q5!mj5lj;Dgbx>y1)mynY??3r}=bXi$ literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/shares/share_table_filter.png b/documentation/userguide/docs/pictures/shares/share_table_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..70841f22fe47f5ab0794d85e9cd63d60ef6b3a3a GIT binary patch literal 62504 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 bYl*gxW?oHqUqs><@K64s@`Jql#{T~gZi*Yj literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/shares/share_table_filter_attached.png b/documentation/userguide/docs/pictures/shares/share_table_filter_attached.png new file mode 100644 index 0000000000000000000000000000000000000000..88081a4a81cc2125f600b4f422e455ecea3aa546 GIT binary patch literal 65239 zcmdq}cQjn@+6Rm)K@x;Ci7pZ?45CISg6J*kVDvT^y)#OJL=e4~NOYqcy(FTyXv3({ z!x+6Yyp!)a&v~Bp`z^=c@4MI9v$uVhtM0p8`*ZoArXojro9Z?W4i2gOo7WmRI7F5> zIJjXq39(O7W&-kXa7ZLv4e{T5Ji z)^oISwlV;{6xz$=T^*SAA;Rgn)%-Rk+!psU3)|=R_klw4 z%fmMhA8Ti^2jjjH1qJeI)oKKeXn95rGe3zWcH+e`r^@8&y&<{Bv!wSvNGbmd62CnB zHERM+tFhEZVxpkbO(&|K?!RPjm%qwPzX(=Ynd2KF;yXF-!!1q;ulOAN^JLiIBJPrx z_OfAVx#!GpqE(?c=6yTc3dx>3yVa|Acq0s(3E$*oq>J%)h|1M$$X+P)$AmH!Zm63{ zi9cE)`6Io-xI`o)X-DD|_Dt}(Mt`1Fn6xK(+ruCgibvb`7z6@5n^`4Z8rfH>3p`Ol z6T^BxI|O~n<{e?-e)$g)y*Fu-&3s%f(B_E_ju%`C5l0Wrncfxb2J;gi z_Z-g~l=U*+Vkrm7#YsG`fO5W4S1YsK)XjSn^SBgo!T`AWNi(9oV0ij*wV1<`9#XAs z3i5{KM;%3-3-SbxQic0FBsNk?LC;khSySohzJ4SE;W6Sqx`9jaxh>@mbATO#1G;1@ z#G^2Syp@RO^R3sd^8Nc!Z?q5J{N|^75Ge8FUf_A4Q(%wLUDkK!zeDe(LT+!77^bWA^cQg++8v99d->804*pug42&mZ3M?)pb@$hI)O zNP7I5w+Ue;u+0pl>^ZYp4I%yF;2ZM_ZV)JZYBDTXE(|@VdiWwPjoU!#pXVI>Q z=DS2+m~lE%=dVQ)Ei|jqK3_boz3cd6CX4>gCYe}+bV5-iF!~`vbrPETolI5QUe4)D zR-9BE&c~U-r~I^hGemD6)Lp!gDAXMx+U=+PbApsO3f&+!q28%v5}==oN^e&&T`hmA zD`srcSx#6?AX3~`Q2uGtZb@AmU@d;HS;VRD~Gfzz7vN%lHBxw3ZSS6q)E z*N;kR$y%)otz1E2?Xfr0Ldy&c4Q6oEd_iwZO9jh&wg|K5cGFY$h;W)a&rVP8Kv#c6 z;g^lyces?E6A}?PceTcG-25!b$^O=j63#PF zJqviieMdHvV7!h*32&s;P7SZ8^;f;{|M-RP?IV6E`(IyJsh6|vTH^^*^uK1wmic4gdbgem z_R1sM?T`FEqc^R+94M>laVsCUUmuOjkBP^R!aFp|Nt8nRTNTQki*FaTQ_Z_Hf2=l} znUG5h<8`9gyrJXxI3tXB`@=Db?~`VVxybSP{$s84C$quOr@wA>+>i?r43v8;)AdY= zF^;_F7Vs9)t-N`ob%w^L_dcAy24=HNhqL{(TX?(hYC(9xVd0i3_0Eg(#Mg|JF*Nec z->mOtzLk9b1oi~|jF!dliQ8xK&-`7M<~q(dh2lA$Jc{k@7U}Bj(&-xP%4E}j0RAY* zl*0H;=?h1$-4{L$PIY0{%!0|cz(Owmz!c?lWkY3HPDbwR*XE&Lzsi1X4~LDBgZqYc zVdZj*X&urLQGB#1_z{ZK(y=2HL+~M$Uk)R)zt&u-y>Z0ijU+*@OLH@`C92_lK4xi4 zHWG;#7%|Fkl0Iv6&$}bvDa)cOm(QzXRXM==7s*9g$?x&C*DPhehd9@30O((V#%SyhlqZ?tIea zqmEFI$v?Fw?+-Vk^ONWhur%$P*EO|MvXj{usWovLSs3WxUF_`K3WFw+CzZXNcgQx( z7A%LkH}t*#`-ku8 znVFO)CG>nM%$<85gt8Imin8BkJGFlzhJXKi4>Ts)_v%UA@+<<(>$jfo_&EmQ!=q*f6?(53e+RiQ+gN>wnJ0}Y#Fyas{ z-OAsR4!MH7D2BIqr=BVM}@~6CSffNc4QMz=k|Odle5%kjEDSatF2No zW529jhCO2&S`ERRl05OE=B6h(U(jmDUvgzLJAy;g$si)8{@)hzXNTH5^E+4QP$EXI zjYseHUmtb%#YUxe2+oM{ua8!*OspVA?&b}q-x6|J=UCm?acN$SOgj>X{=qwYg^`I0 zcLQt!h@c*q7~>*2@C?(SB57h1ryxASTExBmvZuR9N@vhu(Xhc&Y~6b*;wN>DLu4J& zU(vH@&wUfE<8gb-w^;;5H*d7&2RmCP`$Yd1V{+NK=^l0Xl`NPJF8UGbdQ|>=v>@3F3YB*#A%!*#1SLFVHV9)mn#~8_5|e*6f4}gxUZdlH@+P|K>zrXZi@8M z!2z$#idfWN%CF-wj_DtqXP&sO$J>FEP;Jc&_J{9p4&qXKfkyU*zqhaz@~)COT~6b@ zFQh)M!#q+u^L34EXDP$(C_Y-~%3CTc<2=XS-^96rONB##y~D+x;<(iRxtGOd#lipQ zIUWv9s144If7emLUjH7SvFG15|GMJGgy0Zi|GI}gJ+tusr#6vg7XJU-j$gO*3Z;3kMf#h-;($Z654{TaIt^TyStGnEsx)@*2;!vHg$Ryw!EpRaO!M4x9wYP9JVequKb8r#%6l46ShA{U2?_(}ThJUKKg2fnhmDL!e zAGM485kHuoy{$UHD1g9yE*nRF-B`wS4UwkE)Ne6P7hvAh_e;f3n3vP zE^Zz!9v%R;2EfJ3!PUeQ;NbG~U!D9t9u{2%9|JPpsZv1}>|J_iO>#ykl zM-~6l^FL3qiWa{u%Jmy!{kwM;e>gs&BDZte5?B{KWpUV$Z)<>=}p*UzuOT z!I8v~e=YUa6L({V$oIk6Ve5`G!+UaXxfBM5?5yl;*5@BdeYQTDcJBHLj9Ot(l}EEO z>UUr7=&8TH8ZQ>A%?dpMq_V&*wwALKN%y?j6BXo)kjo$}Ha&Lr z76I-Ja!H*3`jhqJ#yWWtj2lSt2?y^cL%@IgImWwTDMWrs|6%BD8CGw%2`zW7;SXCmP%rXYqLNub1ULJ%xw*sT{=06lr8oPWN&dT1 z{+2%EkTiw|1?q`jr$Giu;{>y7iIV3VNy; z|INJr$Vr~G{Pucx=5J z>hyA9aj`u_>or?VYcYYDp`-vCoBF+~VK-EVJnhWqj|JW`j%7;Mxo|!J579U}5|Vpz zLJ;$HXP~%vLoxsnRJE*UdZ$l6e4@Bm30D3ln6UdEJ*ZR^)md>pmkRg0`uk(|_eshT zdGhiH7>erU^4%o7O6=en6CM2|f?6=<=eymA$BCUC3dE>I!u-AHqjJ30`Z-R`&;G8{bm}a^%wvrBdVK9%w4} zJV@&As~T<3;Ip0nd|_s`U}bq7OZh!`2r_hTL@Ix^6Kw&g#Xq@7f4#Lhhijm}Kbl#Y z>V6!6SA>`Gnm1F@?QYrcjSy05CUNmEeKrw_50m=GN83{c>|+uDDbdZf^)yVQ_pf^$ zO)1K%I=~v^Haevd-%4@?IPKZAj0FGyWvXZ6i9df%h|~b=WsVx#yj&_+K)3xgQHMVyTf|ALvXXFE3k#?TK zVn+lMCnx86fB19m)cE+EA*1LJHqvY(?)%qS1_zH{-PlFH-g?+XUP0lb_Z}mmCBDrk zYHO;+8^e#~0KM<7b2PQ51kTQU=}z8j!<2FllV-|Hf~)L?ir*?bfxmH6zrSu6sWxh@ z4>F9cS4rWsx#uQPsZL-y4g<2-PgceJX()jmoMD$#*Sv=LU+_}eb+tPPZf+3MmheZsC*xYd`sE~2N)_RQC)9>FMnHq z2}DvXQzt1aE5{#-U`Nm|og}H(%AWJ!_$>3`a5h08QlsL9(6v(nc@uVa`vXh5cP&$_ zvDlhC*&R2#2$rIvdh@z)#9~k?of67mV zxaF9|*2iSE6>7|3^GY_*g+U_M3~(&o2)3A`=WI}r zsFT6#sLZO`pVCl__9D5T1gqMFZ?g|ADZ$;&95<~X|# zfhz~7q&Jdq_YHS=1=USmNAPKdUAfDCE9ZxJgm(h?75~eZh4K&C7auco1C{R(7Jj&j zSNFj9$n)Y5X*$3J_HHIySrzZl=+&(6j0B-hZr_##FfOA?GMn#iPtx8BX^_&1! zb2B=VM7eU@^u>v0!}-Bh36j zP(C@tMVa+JHE+CBR^wkuEhcXD1zn*&1~nnP_iGB3OQYi5RKGv?rKeVkL7$M`NBwN( zPQdyk({1zB51*3LzpzEbe#3gwhY?wk81Snq4J92qyk$SECjp|Ge(+p5usnZlyi1Ra zi6Lk4*&wGM*&Vl~uiiS3dvf2u_b`z+Une`Q&Z>fsE6-S6Dc;QThHY7EG1Qp}kS9sF zk)+EB?B@Ss@L2B++l`*Rzm9O*lUe4frCh#fAdNEUe5FrGC=Y@J_FmM9gJx5bpUiP} zMdR6X06}Kb$?wbcumV(K8d$oJ_2(+eDDByha^@Sh(E-&jX$n?<*ZH9ogL3&Ja~ze! zWTL!!pQ~kbI#%E8<20&xn>(1q=Hh>5NG0g-%+DRgM6@xds-Z!3gG4S0lR5qJoD=C1 zHM4{nDkTchX@4X*3;f)!~AmRgX)?dBfqn*Rr(g7`DEeY$~qVlT_e}TrDOQw z?Pe`Hq-@ORxZG;_f+%wz|JULy^}Om{Z>h`j`$X9{dzQ+}nP$d~$bY*@nno6Asd^9jt8N>6I5q z3JbtknyFYBOqJe>uY3AcX!dJ?s(fd);o^pYaI?->?MgzG z*s>dm&RXlnF;`1;i|Mk&l(&~EzKQ`t{3Hj_bc!zqE?y{P-xWrhlV zI==+>+1e_o+v^cY>>cz}cQHM4f~zn0oh#<0{6oCO6>|kBX-~Cn8PjvhWr`*qG3kzr zB(|gUZA z3;mTHJHIZL`ymVE4UtWLVs%weg*t+1G;RP`4zjPax3m^v=I~)-o%&pG-;<2)Q9sH$ z62)r-V(Ip__t6^MDKzRqJuVpzL_!Tciaz=J6sLI{7VQ3MyL>dkB2-sbF^4PHT{u?2 zbDExrdE4?m5UF~36xny|lyIJZ={{XvIk#Tr^fjAa?eD6I*FT9#G4X;8EwaJjgC3I0 zLqFE-{2`;bR8zN?V?TvR5%zkNd_LovECKyu;5si96BoCnT4Uawxr>h5!fpqQ2x-bP zT}PMSC7hr8p6uiyclQQc6rwgoy1x^lO94KLbEfVeOQ1h=VwcudjShf);*N9Z;WCqt zG{TOO#_`F?dOU8YQ9K@-TNOT;Gv-@O?%1sW?9oNRh*eLaR*^-Gp^pNuy_?7ms=LB@ z`8lQMHV!h!$^$9{rz?WwMbcK4U~+6?vq6vhEOH}3b zdE;+~Tt2p$r|obR4hMct?z4T$h#bW|`&7CFD`Nx<^#i{;2S(U$;N`85;wvly451yC zjNH`oR7FOx_k&Q6#!r7#?+#6Kcx|Fw>khXc2o;m8rQ1_t*O4C8TI*q3Jm$yhY|h4s zu%lS}$z4tg>kK%noUAo@gV!#C!QBakOwwXlZEiMl-%4Zfpx4`{Yf0@S_yLzQ7DzL+ z!LK|aV9aZQ50Jr)gtG#xMt&bRj@9k1$C0c}=4Oa``_7A<0>zQfB)IzHhp5a|KJavH z1bN6Es>Br$eS2Af-W@;vL-Q5(ba2Su(u_?Dlkz)K4qPCic2){UXXFC%^T3kO8kL>h z))x_`$n)05LEl7XP+xa~f#F5D&oh~WENSBvR?yFTNfC#&B`Sf)UEz=-SL4HT;?g)( z@l=LRI=|Y+!`)aWy60Hu5_6wZHuAPGH$LSw6z&>dt26mb%)A6iVojARF?Lo@u1!H=7Y==grUT=0AQyFeaNV zBdTIX8U73Y1!hr_*7Al8Dv^(UQ_kx)Ac7xS8kwm!X!yMi3N$F`UCxpI?DMTb`!XJ+ zpZqV;EEiewbN*ab=^l0FR*VQG2oupARNq?W2iP zPho~Iw`Cxebw(acbIO{yzRg|b=C`e?0Mwa;RrhBXkBt)^*1-3?6wVKv#(1S{Aj>lh+$2qY15_b%MlURbs}MVv z9;5K@eZO0ag(5Biio-l&HpRVmUtt>bB44=4tubu=*^3v$qfLhV@%xlMqh#NL-4B|~ zFU?ORM`XG5lew_GuKq+a3s`XAzcb6E?m$z^?|F(Dw$qE(X6Ur}IG!po%Sx=hq^MG|TGPByW7bF?#$M1Ya9J74 zYcZ4STac+MM`gosez8c^Jsw_RaXxKVx7hVyZMt~-%lpn2o37s;4meY_cfzcADdVqxQigUn zP=5=iYdKq!CWQ=iJy6Y?DphPO`5Jhc6`J$9xu6zQZ5ndYjMo5Ab8YQ=60;8Y6-}HK6OmNrbjsPcTRCcRPS)&&0%}Lk!&m zr`|hnBQxLHFK;@?npiS;@G7EE2AAvMy@nL!(ulWao^KLTu!7WG%(XoONnaj`ZP(8IIGhA?#sWhxdrN0OHNj(i#O4^PPJ=kC$&i3N<`V%O^#FP_AGD=bF zvI_Y8y)&JSk}}!3S9$!+CFU^t!<^D#a6SMikoW=AxCIF&?qjwlo(m7nc-rKR=HO~R z&pj9QiG0Q~o`{Wk_44b07?bPMe72y|pxJHe(gaj#(<=(>S{p+qI$2ZB;Drr-F3r4H zT>2iGnLsPz5l1-}MRwzx^bzUSRlC26n{fxso)!cq(*mS^R>8%?t{q=PDBzX`h2JOH z`E;j%z^<86z!FER``91S?3&c&U+J;t&G4|aN)FW$gyc#zRTzyBuk>t20vp=_%G&Xn zioO5`N#SfU?3opqy_<|{ai)~KP@aS2f z(JP(W&d&{*RUb#KPZFLbKphEElIqcYB*o3ao*lkgqgqffzLtcwq)=Kqai4&# znw)plhs1~!70bN6a+rEZnfXAaDX=*?cRjU4%IRCNSO?!Yn~67--;U1x~` zN1AAT?@d=ynv8M}KfR{9)=d8ZLX-mnb5D^CbwblPP{H}NqU6@5CyBor186Xqw_2-; zV7T)S|Bs+=<0yP0sI{8^=gmPoG?#ZaVK3Q6GHV;z2fK{{rw0Eel>A}ePggI=!Ty<` zVL1KKxxV~p!Wd$5HYkQzXZfsiP=3-Bd768nJlILS?_0IVCy(D|sE>$8_Bvx0F#~4Q z-Lq7m$i!!<*Mcc>>JYD845s|6TkRqppp_v`!&;>hyay&BpEy)EzK49>PjbmHtUBi}3YprJ8pFBAqB{|8YLt)$%J_~qn`h6iwo~Skw?A=tvPJgt_%W9peXo45iTCaL3y1fNr-#4JYed@;gb>;T>f z>bQuRZ^^8xb*vNEUSmtenCxjkL$Z0RY0Xn%|WoKB1MY0_9ex%uA zF>GOfYDKXr2n>yH=z#2wS3lvMgVGN;OedU*pY|jC3IIu%6OFMK1}B~lxgPtKz^Lv$ z*^(opkiKf_KCp(G4xOPxnh` zcpanqFHWpSN(Na)kL)gfJ8!rYT)e1$S?wq>C1kt0|A7m3z*32^L5ZwJ90V?I)WpAU zn{Fl(o1GD&MOQPYEKaVQcV6hv++iQN;1JE6ss2?$py{TINN980?D=6f8EMA8slSw4 zV}kTPDYK|YmzjV79F2$xH`auIX4`ZM>1thD`EtZ>C$|k{M{~jb>YTcNg`}%UX|-04 zsP^NIW-s3`t7bgswZc%n8K1Jxwz;F3)@F?ME=7{%oaL&b!F7L=~l78c9MjcX{Pb^Dg)(|B? zE-`QPYD>oD)Tku1oU4)Vl|vIoyhUa+Nxd|Tj+MvwcX>=g!sgag+a0kthqG3yLc3*w z{yj^r3SNO%1Qz3BCG~(Tb=u+WT8kql{WX;QGC-0G9pD`!fwDlF8pXBKcNnl)vq51& zILr-!jWNWTY}v=PR6Q)H&QeC~mkRn<4MCoOF)H=D!SGkryMb^G8s3Jo_6_?^zBr7q zeL8b(yImt3?sqw^997kxhqV%4V>G;XCB3A;Vzsy{wpzaiQuXj_JSyr#bI(ScmIDKE6iBw3k5csvVBUiWH?d9P-kU_uGtBVs61@)B4I0Jr?o?x?I{ z+Ju}Ap8nY=oLU?f2Y+U>qpxHd6EvW&EQz<52UwQUG^i(7pIU=)XRJcKc_e{5n_plL z%@oZ!u-p!(M9+qBjEl@C3{ zYBdK75+*+$6nY4rw#`5jX{RM4hnfq~)8aBfUBMxW8AQ-bPfOJ@I3*WVji^naoA`(o zm;zmzUVR|^J92KkI%<{Q=EOf-4;<(>^Bo9W%P0WoqQ)X(1*_d^QZLfKD7Qx*4I6=r z>7paS;1}S6G`TcGT~)trN#N(wM6rfvU1C6uaxUGkfHnU6tk+MRe-F~iw|(IUjp9Z?1gIWV5%FA;4Yl*Av0@mWG{YH){CyiTU8N`6 zbk=;n8hKV-SHnU!>(OBFa;aGI`C`-QVf3JczaV#SXQn@!bcoTzn|-!m{kr{K6yMm^ z187PJspdENMOpvfLxk@LEu%yi$SF@wD+8A!s4#&BUj6+SXDYN)L?KheC`Cj_)A96I z9_aU1b*Ga+el2IRn2Rszr%p}`AQG=S26cdIznom>pQGp%amc^EBe ze3;P?(rb}OvXe)4r;js9L^;LgvQGOIex*Pk9x_VwB5m#w?4SY6^x}z>1Es$*!!H!s zlEf9C=dx&S^myMt*J;9qj-1KhQ-2@3_2`|K(i!r6SBDfYV^Y`K_V(Oxf+D}x4iy@I zM~E~`-+NZ93exFA_~>xQyBc8;jj(ad{2`eR@cEjHvP*j_7qT%T*vBs+un5ly}eD3IWTjC@&Pdl6R7Lw8YrLVBy$fRM67-pm|m7-<;a)ADZJK}Q6 zOceCw`$5EmB#gOHLZJ>|HD6LIsq46|D>!hPm!9XBr*AAE^;A0=j%qF)Hm^900^|Ont>&7hq$;iv_v^iv z)Fc&LhhMW_dbS_OcjD^a9jK>cb=IH~Ts7X@B9E|USob0=c6)o|7>Imx0AS-j%colv zfd~yqYf@TSgW&Yw$&G?~OgO(}YF-0V71{LfQ`xinznjk8e{DKz7k9#D?k$hbpn5%0 zyvOO(9_RbroGZ&An@`NM=sKI6+b@|EtU?3XQ}?}py(uLMu4j?gM3WsO+19?N0y=Hx zN)vjf04-fz0Eol*e)E~FH;A1g$^L7v|IR)v5P8Ou+g-C)vE1&Ga?Az?#P6tkD?4K} zr+nQ3-6MH;vy{VjsjbD-^yuo2Tr$r2Nbq=PvCrq%K>ObA)6b#U4V~K}vUDUThp^n| zk5>V}3d7)TZ7guC&!<_+RO44Gzi`0gpG24e)0Gqfw(0wTZQXskvWs(yJ3-s03e-uk zs<#~{CnvLyl{3MY0=B2~znm8eR?iCDAWdi^Xq=*j@6VyUhspb2Rhzf-rXa1x&|1a2 zzDqCid=wMTDU%Lcr6c$9MkwGH+=)HM8+%-2N@iUC$e7a_NQ;zANNDqk(~2F`OT=|^ z5edJMC>`|@Nv~s6@Ch(emh%)L4hq((><438);%&J{#5Dui!;8Q&<4LP6T0IDJ!Z=T zJ$}4mgf-G^+?JJRA{o0=d4ANdLy#>coVTklPOdP4R^vzVpxNTjh9nZ?KwQ|Hc9p=;c~Dej&z5z_MZNe*>%7HnaNfqgp6tSGW~2d zKl=W%VYGZcG9DVmuJmL>gEFzoQ2UYMxbKJ@utC9f4FVu7jQ=%S!Wr*Wmab?)V=$M; z{Alx1rrz(1#m9Ps(@k$KzV<@k_^$H%&M-xbjo~M9nxMp)|6`QD6=zj#XZ%M>~K%<+tM(rd=m!Z3u^G~P-1rWoDceq4>~ z_XPc;Ex>9+&P%w9iLaWsgCfv=9Dj8aF1TMR!pSjKjg~&MVum;Rv`kYeR=({x9HiyK z#@yT_=#G2~^Dx7w1qJpQiu)6lN7@@SHE~Phe!89)b#8T|GXlz0*f2^IHjLsMNCz!R z3LZltREcYrD~3>REwBUU8Utado>7tmGRNVL2cV*=AO49bNTY4)Fts!yJSXnpnApfF zUd6(9wA`wTOyYt=$3Xb?X8j^_fo5JADg5x{IX;<$x^}5b{M}MpDf{WJ{s% z_PiC(Mg{S?g?^m((1L{dWpLzO(kxlK7pZwsAsZ7-rRJ8F-9%Rbp9K9 zb(h~+mIE+n-L*%u$6s5L_tVpyJJjUE#v@Z!l@kd`Z)bXXZ+uu?o;{;KLh-Dm>r};V z|6t(|KmX&BEN+&|X$GP!W{XsnK$)Jbqq;Q`C@L3Q&Sm}6gcPw~@n%#H>>l!za*7=$ zU;$Mpw&%KQBMmx#EVr+M^srX8zOmPG$422}bWaJ3cWdDRm{-8o5cV$sOT&~Av!gdL zy=Q_q1r>jqAa-5;P*b0;73Uxtq*E1#6TE@8{i&VyF?Uir4oAge&4b}#zGk+$RU;Jk z-wOhRfquxKZ2K1tZ$_9wO-u&`Ihk&-!5><}RqY!b%6Gks5U^NyhG?@#3=Q(By6oUU z+<2aO*M-=X^==PIg`utBP-{bGD~mAF(gfKvLpe%t1_n3T#S zK%SzcKlV{e_cn0d$V+mbFG@ur_LfT(Q)TX(O{Dh}{`YEzPot)AsaNUuYQWYK%JIc) zrs%^{CVZ+eLUD|rxlKYi_yzUA0IlK>c9D?JW<5BhJ#Z_<_T=46ta&K2o6OnJz9xMQ zVsSAZz*YcCkAAX+`OJo?XX+|%iuo3m>lgWUj>GtFkt}y#^`&bf6>GdKMX$Bsqb4e{-7c8Pu=I(t?sXrF|~RMX^oDP2t?w1BrGOG z58VF3+aUdGry562A?W@O+NhH1+H}>LJGQI|B}cnMsa5PfctW6&^~v&+l}}1~MK(2a zFIztFDSRSUTspK0mv!3RrIa~pCxAdcldci$ZoWqdHA85q#ojJ;GLTo)2UaVZZq zai|`SEv_E6QGZlC0(Z`Erj&S(!*_U0{Ncq0iS%z)=~8+ooRnNzGQdKgJ|Gxr-` zm@xO*IttPoAvgz+mzQ^*9tuUxy*}9p|A76F0Z0|hlOgGwym*Y64dvNbpN~m107Z)W zX7P=?e$Vt5kRsXJ*NjTE%J6NSv*$Fng?PJe6$XwH?)H|p*nrAJ!VXe_ldZ)EkEV)_ za81{eMBFE&?nrDH*Imv|oqGdYYFf^Pb&8`5iB~ws_&PG9GFcB$EZxVdvS7(-pi-dT zc#VUBL0X#AstW#_I1NcX^vn_QE=HR#}EUJz^k-1W+|- zPiv-7?CTozSBLA?|I>_~6_h$fltR3N3Dm4JbDH+J5LKAp?_O8EqNz278ux=G0kIH$YkeR) z#W8dr#iv)x13Fy0$5mq;z@_15-&_OjiQ7qO#x5UQiZLPZF@L#B5tB+K!_Qwy`+t&+ z>b2S=5W+aP!DRP8jqeYYT0ftuQkr_T6MWc4loOUy!3oxbNwsZVb|u_*j{tB3$4YO_ zN6Lu|pwA8R&bE_zsT5Z&50(ZGPIj{h8!tyMH2H5Z!}u7W5rEPiS&|Owe=zb`r1igq9nO9{0DDhl z1uu1XUa&_{J@l__60P0o0urkqaP@L`oieb zBtUVX|8^rLqY=9|;j!BEm2k9!>4X|NCXlr3P_@VuDd#E2E^qqKCmeP7bFgcd#B}KE zfKNmgLo@k4pZgc!SHk=5KAnpXrSp=-0tV4Ua(TXc<)jItqt(uB+YLYQ@==IK;_=n1 zbWO{%4Up)jqsf^}X6!Tt#{r{#QYQhJJuavh#WbDg_Qmdmw1;9iML)*mJoKt)LSm~q z=~C635^8vkIUnlS02m-9^u#_@-cZf?JzS0YLW1<%p7nDoQC=4gDV~mNd4f4&&c@Ha zK-;MORJBnJ*r)e(7*C^@60pU;00x3Z z^&U=|jyxp3M0%&7yg6Q?de*D(D0xhqX!51z=R+UBv)mRoX-DdWJ7yzZ|KikLniBSx;S-5VZ88@G3dGQZp9iV~k>7 z4PO2_h+F>0jp{Rg9i>*qI|bip60gOVa1An@1*-WrWeoNo;D%}p)c4=(#iA2-1NCZ_ zDeTVuE*Nblzm>aA6(}+omQsTzTM|M%4pQFQ%oOH`qc!V^?Y8SV-j`Qb*^k5BKJ=DL z+7@X86w;VI>!OWT*UgOF4(>m%+N2=4&;<6vMvmLx9g0 zVZT*T^X;~gyG09}BE`(g;tbFeIV+|ff(A9?_U%q*xKaISuwEjx_iL!uGLr9wn%IW; z9)c4ZJ+<$*SUAa#@RZmR>w*Uds2peIN4z>UYMEc>J)%h>6_ms7f2R4qv=xq2Ggoac z?=&|?&f8*9Y-D^1SB0_|)ckHZ?}~b91{bdGD|2c}R5~bT4&iLDNI=jKxO8v*?s&?N zs`6EOELaIF0UxXOEwHg#h4mbqg^8NyRS=c2gU|8+z0oo$%?EvAv5IyWOMsLdCXJ0Y z^=J1*deMcuRszV)ASy=zzCXTddwceVeIT{sdFM@yLZ zEW}eW4Ob{)BSYqygcab_3H|MdHR2&p10=uv8-&NO!q+hn3l56?4Y9Ztw~9q3!YdA` zP*PVx@K~!`>q+d9{9KAE==;DTy&6+68%3#D6+fE=eYS%?HUuxZkB1m`?AsuroaU8J zv60AJR{Hw?E4bqjX00QLs4+5QBcyi==J=c&aqiykc0}A9} z>i-}|TbOlJCaO(O9amDw7w?!JhT%PQ!onRRx(04sfosFTn*wHW``N%Z#@USO;S4Vu znvRH2a#_y;+Y7vS4h9XBP11B7*gi>*ck(}Z`|fC&O-=nTVs>|0k%Rb(9jhcZSxDPq zAn_Kl^EZf({($yl9%5MrSzNHi%e^fF%26??NxsoL>Fi~W%K4Jh`i*}+{)H4H7VyKB zugbJ3Obw`xsT99VVd}JLiT^MOwQ!rlTMw7)f6z5>Ke?F$xIt5Wk%gv#efq)wg(nW& zDg68&6s|}l6Z|T`biO*?NaAwW4}P!VBIU-7Vc`rM`-sT~J0-V!WyXkUt-9T*9)mSR zMTR(cbeUn{AiqgN*?3sI_R3$MlBMCXyK#ll)y{4d=S)MW$o0#FLBjk+>>_-H?ERVx z-<(Wo0w*UuUY51TKQoppjzAJr2*4ySka1kllHSBk*t!CjpJaB0em6x;fx-Qcu_m5n zt^dHS3Ab(;J-rHT{Z=F}O;k0(zAN$JBoTUYA5XrQq8nlI;08G>H1Mal+cPHhZ(hMK zZHoN5-0d`U?z!q}JvX>tI6Ry0?S{G?M08k-V`Y70rr&k-hTm_;-O?8#cuYQAXRd@*jq-Xd*fGSEPf(Tl}xC8gl;4 zcpw!sHXSSkttLQpok)clSdj{ARR02}|2qSt+}Knve!I{Lp=&BKs2yNM(r)s56>+US zL;l*+L?o{N%2D)xL@H##inNZtZ~N{#d-5w`?MXWI#qQ2^BE1#Eilha}{C|OqX8pjc zbVH4mdIJ@&)hbRPn&ES1A{#)z>T_*vZ9c+?MTBLL-KHlf2v7c>Op+>q4Nu3FNf!U{ zgKF8VANqawl3@Iu92E6@-S?=q5vNG*DIhY z|Jy!L7n@Mo@x1H&I^PVCyn(g(-GIjt*NJoU=W{G^ZK;*3W{&@LZpNGBNf9_dt*;vu zBpI}^#LI8g%lk7Ev9PSO%hgjl8413q>=>OBM zd6T`&zfD%J+%$fpY9um-oSy#QxfEJb#(ih>-5;0Pm)F_3{suoOcUD-1?0$V8#(tmI z`rT{f$9 zrwZx^V{=$kwO*rn0iVO@8~qvw$}v$T?6^Ec{CaOnEX76il%IzQZ<$5S0>AQW=Y?uX z?QVx@&3>H~U5uuxFnnU?lO#i0fFGOfOmiZQ`=7wwfv!j4O1smSj_1`g!jBf zGRyjV-Y0lB;~H9PV)J_B^9;##9oj<9EL!}IV%RwwB=6n7kH5&+6n1caxrMLV z^)*VOrr%aYWcj7nVF8iF#F$`r(0j$D-ocJ8=cct`pTXee_g3@?v8tl7f1v?p{Ej}y zCipond3UBbf^o5qFKI(?pxR?W)@i$50E7@fxiKsR7(yw-K?+r0muV{2a zx95%LuUcoIEo&h~OCeA)_KJ_=vW);ik`~~~Kn5dBznYb&qzdv1TF`l%`#=8+pkeC# z%h8=zgFA0fj&6{l?7H*Qk!R&TDc{?vzPQd=fIgJ!3`RY<5w*yVmvfiZ-dMZBWw$Zr z!oqUd6N+h?4zISGsO=s}J-uiVoTFOghm5pQpByH&a#O2HWmVyMd3jxwn|F>Bm9}V^ zA6jKX$LJH&V>QiRLdYczZrUxz3q6XHws~tk#>cw)Z*ohYt0@P2dSU2Ik?i!oIW;m{>mh zoq&I^m9ZImFL&QyvNL$G5(v4`S$I3}yD1dWElntT8}$JCRmLYilA%!~^G=C{l$`hv zn9B-Q9wM>p?3F5hxh%OWL~BP=cC6j|0D2XW`fG{Ld}ry_nI{?<>#J5%*USf=fB~LwQgJD#+>luM52vBX+!hYhmyyeG>${mV@axd^D=j7Q1U5 z!;M-zX}m7TIP{5T+eh0=zMEcgH0;`oXVomwV*2Qq_(eX1_FKQ}O0Sn@F@-hvE5jin3zrvQSI8>En37tgphj>+;Mq($j*s3@G*jw zk{wnYT!AfmNatt)PRR3<0+o+zSIm|{gko!R9`6yIfTWzODAk_F zm`NuE@ZCAS)wSLXY&?#m8)u$*R6oeKd4xQ#r7K!^DwXSOq5WLS&?8PQ^$s8rGPRkfghH1t4?G+MQha;`IxV% ztS9#3?=tF+&&o|a8Rp8~cv{Sog000a7Fm}ay%u+l#&?iTE~_~pt@qZS07E8!5|KKv z#G92BY1C>&Q~9Yl^l*7eGMx6rPH}<$iu1TWOo@cLrV@r;=KwCK^m^!OSvYB4F^R?< z47mJ7zI=~Kb96NidjCLa554Img&B?2uVm5Z)@+qL_;nxikwJZ&cu1gtf(9Ss0FOMc z3MaRB*l^=^=U7u3W1TPrp3y3q@{hyMzZ{QXK6r8-FK3JNvX}8*&+@=wA&A}IsAHHb zuHywJNb|o%UwC&^dt!Fa*V!r!Cb9!4Gzr+PjFmo(G-~sOEU$nsKOMXRe{V!sqT_Qt zrsQFh&CGK!WDYf}H`6}@aKt$fKu+QX!h72nsX+dtE=bR@=vZ9nsvl@zAiC_fVsRg% z13cReM)f2fA`laiKay=jA1onFN^pJw+Nqs4BY$9K6?qdQy5`^vZNczG3JZwYcYS-2s6W?nV5Sd;#6Evl>$_PYtDP`VN97FUS<#Y2jafmuPh5eW?A<|C zx(38u-{oR9gr9$CFw+{`?UzE-O}9jvyQ}e`Pz$yuC5aUDiJS?M zaR=5(bRc@`E?CtPFCL1^8DTq3qIgz>!D-(6H^!+1Ew7+?e!J5NfB5&4{q`>9OB>vK zmx4Xn7EIcJev>40el}h6=i^@TU`h+Z%vr)`Ff(4qp0^La)-!D2m*$d|uu4nuX5Oi9 zZEx?Tk%H!*avkiLz=5A2URw{*6{*4%czS6OtQjGr^oJX9WD-H#7j%Px%G| z7G^_w>kMJ|ceC-F*KKh}O`8E;v(Dz=GY5f`BY{|>c)sVU1%(Uty~?Jne{kKR=HKoe zf?5qRnh(I$eKL7mYX^Ov!PoPSP&V<>pzD$0XitEgu5_j%$3y*tkRue|aDx`sToW#N z1OqRH*ZKKCT9&y{Ls?bC;9ta-^{?*50>}8{NuWN)Xn~v+ek^ww z*wbqsR#*+N6HoszGLi7ZWOsIJh9yqUy?g&tXXyGdO_Q7dY8LU`Nsqvyd%?q!J{SeN zH05D=YKit;1!ljI1rflm?VxlE+>IHGS{+xHo#z){#|GrOUX#m&;bZxo_{6TL4o>Tg z^L6wrh-y{Wgjr1!-F(m(hN4!GtyB^1-R`RV3|vskn#ZtK8bm3CxR@+&79P%+tlC&;tg_WCRw(*|+c))KXJfR7hH9%&MM|VfVSE1&Yb59wX?h%>tLJqodW!gCW}e{7_DVD;yBpoAsyhhx_Fy@p9}c;H=Y*1huu46s;u2NBFbHJ zRvUq7jaNaA;1L@_3H=C!$DuneqGoU?6%OruLfl<8Gw!*5CFb}MxRnnLM~98V^(H~! zT9T$Xb!v+YerIytn;G=03zQ*u`SwqtT>gsgXKsUaFek4!2$R^GM@+0!(&o%gQ z$4c|ifZ`ZdPxcfjOzOcg57_xMJag0L3g^yg)DO4Lh=U7&@TlouD@P2frHDQB?0tH( zXUIVMN651vQgT5zc!-d(qL7)2xSk6+3hced1A?i%^SU^#-^M~Xlb`D_M-^nNKg0XC zFOe;{Sg9n!5sK-v34(=6GnFMhmtLKB^RK~UfHao&C6Y?caI&=8n^Kulk?BKbZ@{+x z$~7*cG;IIzeLB!2fbW+Ip}k7LT;=gN(%g%%0JSPJ$kxVh1-=H#oHRfGNWu(Wy;{JZ z{$wo-YaY0xlb#ly8TNyX{vIu{h4qyrxwd^fi$MijGp}Z+ZOB$q3+!TEYJDUr3bvk= zezNunTxlU7ANIg;%!I~9vhC3|qb(Q%+Mx3UN#SX)ef0s2y}yvm{(id7P@4zA4;x@ zV9W4MMTWZ(F0j{XYbx0NXPJ!gn>IcKetoZ0H#Ftv<*P*37#>4XdehC#uMa;A_y8K7 zZ+Q&7v46g}(}>TxC!pNmLyvBKgKu8+wV&)AbmfQ|TQu;HsZiy$oAh<>336dIcu=!KX2F>)b{$jFEwZe$pS)L3%)h&H4P+JML*$!YUYSC>fXHdVDP_HclvFeG& z_B$WSu&yM*oQ|tU|9B6RFjE95D%y6_m>f$Y0knTZ3D#T{`%(nLhstT3r)SX7gHqT` z*+to|J}!N9XFiu|W15>VUGjxo7{uyQ5h}v%cHWi*>4{{rH<*JY7KD#@x^6@Beg_S> zB;?7p1wuz6saLg5`D{B66iPnF^?ft$>12i#0YpbBYKW_$kaj1mX36fxfJXsO#{9!; z+7BPgW!4Stm&EwODy>xN^g-+kVW6EX#3vp-O8x2>2wX#A3>s)WIIZAHz<%$88Mjd z@evQlrEzMDNsBPwx-&j`O$5ThYaTkbeprlrq)5ikxStq#aed`~JC_9SSQ8szfcIbv zsN}Vmlt!&Q>F^7lNqD+?+$Ohg@tcFmLwBSD!3%Yv%g%VBy^bk<$9}v;?Il)?`?DT| zC&Z$GCcaxrZ43OcR$A)c;8E8q4}DSkU;q|3N7e#oG?tMt7!k86n?a?5BbOfB5!%q1 z-qjm#qZ^bdL>r!AL0Ukz*OAA=*|0ElynRBQe-V8+I1{aomn5-h7Cu@FuonvGMB_4f>}Cy0B~+)<%)psR&k1ONSK+pv#A28 z5caWwaJJp-l!AV_b~|y;H#(SPI8c(2cruG3LJ-k|nT}hd-@wt0+c2W8=uB(KMjD%5 z0Ac7-&>Ic}52F>VxeG9}aB~4ctqnwbB9;y9C7@+YOofuNZBy}1#Pd=WL1Tk|ONS=* zEW)cX`y7&iL-vH#>ApRqNFPBlm8}hnCq!N?xUDbHF|CbGp#^$vXo+WY*Ae%^hYly1Eh6~GG>04y42hqz{6~ek0nj$tw z0seWgt>cVf7_Gwv=1L|f0`~n+xGt&dtzH9?Ywg&r8u@yvj`5Equ~-p3)A9?C_LlRO z>fNCVj{3kedn1>54>klL;f~WQ>D0f_uVfSQY@0&2W-y|If4g=DV{5_?L%UjP;^*#_ zGPv21_E2m*x%9)2_=lD06=i?|7p1eI?ZH-%pCO{6mO~SzS2Cwc_w6V?Y7Bol0so*A z0eGXYwWfg=Z8~S_*4)*udVngq)aLka+ zPHaAI?Ut_MYR8AN3~Z!c@qg?BrPP>k?k&h#nZ* zrDrabIsB;E9RU+LDEDZ#p6+p(F3v3~q0n%k z`6O*rr33o3T%M?;Jz?K$?VNr+2Bx+2PNkKe38`oN#I%Kpp@W#8qls9Fu7cQ1Zz;M< zX&^2xtpul2ZiGy4kV-!P-X=%XKJc7u!+po=^LVxKPZLObZKk0(Rn3a zDssuc?u7YRq#sTwN_qX+en!wQRMCmNY7~b0Cd2nYCn_*9Zwr-~|02P%{gX1_zqqgV<*6@)2(Ym)jDi zF4%yldhhkxHzToEt_R#6LIX17E&z<~v<8X!5*`OtD^Ilp$&%eq1|D(rEAn}ky?Q`xpwd9KHo!SR{PuM+e?}D??YHp$_bkyj*fJBZ^XAsp0Ah$>o=oKSR^3~&4-#4=6$kr8Q^33hWf28) zbMsji`vLrjm~wK8g1xYO0SF zch|iU#S^X9SqRXmdvztAdoW#Uz-;i?7hai=2ocF!{_z;({aT;bS)19z`Z)p_Kz#$pmfaPadtU8v<1Gd{ zzq@;65;exJD*HY(7xD(RJ?LehWs|7|4r>;+A8L#=v)%p-qMbb01izsp$950Jux3^I zO8PH_Mpa}KL6yML=s{!sp{T9{bQDf_p2 zo+|tA0k#86vibj3cFYp~UE){vi){KowH*I_t^YCT|2GW!w-h1q$-jH)BPQpdyXLoc zV>zJ+?3JnA6`m9FF@B>#Mndv8l)s68`F|Sl^}jbVB1KL*ZJyZfP%0EQtNL$#{6DgR ze*-Thl>dbxP|QgBpDMVZ`R9lu))OH>Ci_Q7@&^mZ zO2IB!j(y5QUXnN$IU^5+DCN5?$c}%vL$#aciZHc!2^$ZdJ>a+b)qk~D<=*{5?-c60 zH&L5^d9sdQ)^bkz0E>*TNSx%dMcF z1t~x;w(Pmn8V4)l3R%VwSQ!#k|5rw2MUEg6o+8_S2{8V-fh;Msl7vIXiTl{;dG6`p zk9lkCbk?||`W1c&b$Oz`D>QbZ24W>_|7FI04uX^bo|DA?*DD|hCM8N>=^UFyn-Lo( z#E#MLc(RCFTkl}{Y$9js{OEAY^*qQZUwR;{)(JLe`k(kZD~8|%^)VvA|E?M~1t0^N zVGteM&C^yI%cNn%P=k^8=fufi_fr3t7o0)|qsKLA?Bd#q|3$F(93horM-Er}`_TVe zg{Aqu9hmv>0_17`MsZF-sy?y0n!Gd)H~LWP4bYPBKi{pIil83T+btt?zc+9KQ*6C& z)n;iL8#;jOV^XDdb90)4p-3?cXOQp}QJ%7^TLf_2Xup>7$(24nQ@Kp_U(!wcmiJd6 zdr%g^@l4~if#!?$f{CPC(6zovD?;7+9~&Zz{x{Ld;~4mZgr0E_Su^j=fdX(1J-}CC)InD z%pqNt&+){04`oOFfop6pbK0S9i31PSUdza8hDIdfm-(|5rpV}M$N(ADLnF1H91to+ z5~V|PMiv%(ylGoD+e5xvJJrfa3f9^7u;Awq6nQ<l&V4;6NkwVUXulnb&&E+U4gRSMRIhlXGuvzr}avcrF z$X{rNKj-{FT>@N#`fNDBWadpo_2a+)yFD-q$<5*R1gE=CS()xI5kDp%6co6mVc@Ya zPpUSzs9XA$`Uk6O?2H7+(&gFz^{QCt+@z08`89AW8UOktdfxkY{baGRCaYYXLNIh= z-b%~A)_A>%!cSj=k~L*5G$z5A|>6x{%w&UXG7#f4Q*e$4uP`H zdeH3`Dhrw6IcFHdlVRh(>~^1z!WLB-QHh*Zq5vPrIN!bsckarSdwH`DwAUx;Py}xm zAJtDY@tzB1v?!CTMYYx9at`bKccY)uv7Bm!%!xy2C9do}f7se(l;&ld={zO|gunQ_ zZ)L!V(eXrdNb_wLjety*@j`o~^JGxrH2KprXS4 zp)evUYfH;j<4F(+r&Cmp3{D`nA{p>b0-Z?ZO4@fZo{)O$;;<~+2CXlzPd*-$h&wqt zjn2y(7smq6JD6ZI#K6Fx295K5{1y7QXPiD~e)Nuun%!tnt*&9sj}vxT+jcQkZ(Qqo zV-KyQGHQXMNRrcKIWB$rp;@-uo3h=~1G-~D4(E8C+h&je-RBhk!>GvF?K8RUH=|h1 z5unJ#&liD#CmQMSgJi)zOFJgLW(r~bTJ^;LaUoe8iA0U2@}f-Q{LM05$`mIk|9 zJVPhc2v&2P5FUMb@*!`+!kcbdcBY7KWkennStFnm>+8k(IWRoQ&ep!8!s7{%%4JTY z$@}tND_WuuOnUecj}HJ&&*jiWgN?bEaAEsRGsJj{F56Buu|7^zG-#8x?TPev+83&A zb(}SyL>K}B6_=IIa+)~u3Qj%Vblt^11u0T%wZ4#9xctc||9Lrh(l6XQF2%Yp%VR~Z z|7a>!v^8s2>VO4Dw4iX5#bIDzeEsB!kULo|=*?1`ppFvG2rxKmp# z#)Kj^5V9s-CUjLhSS)1x^Mx5KVxgj*Ehq**K`&#D6jr8IW)l8t<~h}0`@FqZ!*nIv zlv?nXJaGgt!Wf|<-x*qgrCD1|e|^2OsG;A+_ef>eI1x$+5?hYg=5{@u8(^|fr`9I3 z7OHD{W3#u>WR?A3J zu_R$;8!O1{ATg8qRHiMVidrC9t+eZ`p{@KU;!T>)oi7>b-_fey*o4uGo}t$$*-Mn~ zqXp-7VXex#c(b`ANB@k6BP%)Xesv}=ItY>%ltT3AXaqXS@57^_KFG-vm>^S8Grdp6l#2xJ*h+fD~bG!&u(|WtKx>^SqANgOWj7WEZ9&f#p@NXJI>Rmv03iE z-&wCg?InGD#m#r-a{r*L4-1#q0J^uA*RN_LCwz)zE3;2aZtv3r!xlHzqQyxDhwrnW zj!y(F#4JDAHRR0@i|FbTt39>oz3UhZ#I^p`RkyUew7aH8+PX3|q!f%&$odhe_5}BF z$RGX`MXE03QwjU={_@--yblNyxo}>E5qWxXbTWz^uFJ2^q&y>?%g>;5~ z9&OU%c}uMl{lXQqlASdfU$>1C`JjG%Z(?V6s+y;!rl#*DAm4qk>dfDIuq)1@K=peK z_U$F)b!J9}e@S=@ZLUR9K(dG*i?fBbK3S@O<#O!K=br;M)N#K3jy18|*|KfNwZQKk@eWlE#w$=vNP6)Q$e18skCNcbws1DH5E zVHa98wL4c$ZadM+82#v{rQ_lPq&>C+R2k5v{UOXq`r9rDh zufvFpTAyLNfYY+S^`Ek}#Ea1cT&5Gi~sU{u_?Nj>a7C~x?J;b;rp zHnnl0`QWJ^QITPw(~Qg<(?B$qO`6Oj7pA`nSdbwJ6Bb2ZyF>0g8CLQr{ld3f82Z{z z6SZqquHyLzpSSd{UL1B@*f>9KF2a1P*#FR0Eh0z+=%WNs!l|@aznQ+q^qVYXiFx&f zCV8k3G};YIZesZm<7}HJ7w2_ZIn_(Er9iQ!-w7(RAaCI+On={5~PF1Z7$>n_kzJQ&gRTAiH{X1$h(ux&i!zb$`*hA z;xY3+KO`+-A6i9ZHMup9>qO-qt0=24D3Ct#-sBWBfD#OuTK`Z6%{MO(WV`7NAXAH$b&(ne3&@ zS%bF_%6BWpY~~IPu)=o#cZZ{b`=+S2%vW;g)#I8cQT_ahrpK%31N>_@0|KK-yV7BjO9A+ZvxhI?1TpTGrZD+$Rm|tHEy+6o8s?Kda345Ty+Xj}~ntf_D zS~ANj@0}s?czEdv_o0r-Y|iuhB1?@?Z>t$UQ+bam4=y`OJ>&0jA90y|uPiVBbv>q? z7^{s^rf~fkH42!|MJr<=Qs?C?u{TcriI~LPc=y13IJ0^et7E@o|AnidvDfzDMUIj2gqP9@}#6!NE{ye?idLC%Qv2!K{?r2n{lkuP6Vyim&nbu^p7px*mjxs52z%I@S3&y@i)7|>vLres z34=qJg)-h~a~13TB*D0vd9r3p9$et^%F;>p9B^#96{0%3G6@dyPwG(G=2wboQBqzw zmKWwj)6Y*|!L}Og#4irkqq+EwM!%riu%R{=tk+^s{G^2!9m6B>X`EpZCG(kmcGUA) ze=HOeDf>+^{csH48t#X#p2Z)Zl-ia#<(~^U%dYbTXSv0C=P`P9SKXGFY8RLTcQtq4 za(T3i0M}J(_hg@~=;F=g^4Obdhh&v#&!wQ%7sOlC5er!pXIo4qb~1`c`VPxglH7B+ zWJs)i%N2ZO&5Vqf;`rh6oQ=TkIR`N_;VDf~ym(p%P0bLK|HWCxD96ml#X8Se<4cWb zsF-Qu7MRc7A|*oUpTk%xsQEYGTr;<`iE!3I5*DN?C&B28M(p1Av)R>zojpy@sDxAK zPv4RlH%IlBH6EGiEK}%punh>LYQQ!%DFc@L@FffA&Fu83Ygv*yX3O|Y^U5PRCZKCQ z>Ex&G#Zf;kDIsV}@8vWAY*fokoQ-a!oF9R42WUC!f34wM6M-(R-lUNi*)x^mOlY6? zrzK=As@{24bPb7&=~nq-?oZdq$wayef{t-83zx+ql24^k?;tQ*0*q3uS?%n_@4YJF z^!&%{qMI7Yx0=1I!DVtPMiK_~w`h96w(9SE0O;D>z)Ui473cc$3-k4ot#_qrq_L?_$`sd#~YqAGM1)Nd@DDt~LIU1|t*fTHU zWo4#fX)n=hRR6K1nb5Tyd!e(suKR7(0r*Uvr7nUeFf<{bc}hppa+0BSx&t)dQJI2I zaypau^(A60vOW{)HP!$&mrk#Ib{Osw;brH46 z%lrN%9!dr$^JZu-S?~Plg^12qQ*~CWF{@)TUxhyJ;OW+Ga({FEaHz=9S!_E~NLUt{ zo>P#Ib77wtQwJRBXrQC)PY)J*z6l)*X|=b$l*0yAhd62W;wh*fnwP4X4h zJlzW6aj(Hh8k{GZS~N6X4tj0@@lsnVd|VcmAu-3D-*F$Sq>!K~wkF_vsF|m+s{^U$ zwppf66QRS|Cen6rXvPP4z2h2KtlFODYd~#wa`d_8-7axF8l!=pgsq_jEe>bET`q1Z zNmwj@hMOL+YgK)473*$jY~ev_y_~5PbYtO?+j-{%msv{6mY7~F($gvJOJec!O_SQD zk}6InRzE(;8vS|Tt$~5WqrOb!-|{Plha$P9I{bvS-Qj%8Dz@SF5fVsh?L+xCwsq~$ zzT`|5W+)0RgaFOzz|55YOjmqYw?3Re$Tgq5pfl^t+A3NP?u&~ROPkkRF30q$>MvQvZ#|8n*M8vi)F`afvjuo^v zla*p(atxbd`aBLK%#u!|d=t}J(E>p5MEa5~^W`FL1T%c6+5~;l4 zBpGGlujUijd%fwgA45-F?sQNN30OKatwd$zS=O;v>grq(_cmS;lpuMi80489r4p-H*EW(#A)dt_R#!UQO;gWJ zAwu~2iMxe334_-W%n99vec8)tOyw^O*~Iw~tf&3Oh{@t%rA|sw1D65Ab1gk@oaAkC zC0_ahzbr@x^Lg@BDt{Wlj{?uA$(qrtZ`!l02R3NfK$iarU?IN(xzoLpAsv)mY?6EA z&Di66wTkrBDSz#;kkL1dsnbkYUlE8h*@|N>PP*xA9VkFw>3`%D^}K-7t>m_RQGvNl z{bhi+a|W(M#Ui2N|qj}B`T|gz0oq2rQ@v! zQjxw>t~tn%prF>8LmaN-SvQS1;g0&wdY@UwVC8@D0?`84lmUuHF1#m5mp)AZGPYK0*a5|MI2&bXh z6c0$C|CnB`5OgPKeZ^c*jL6mAH~#t? zvBKh-LNC3rM0F$sM9UZJZ>3jen%JoJ++&-__H*v5@~Z?>?GZCUI+2@m_4{FC-pH>Z z$RSCX^Da6iWlA>vFohd^Y_bdA5Nllysbtm>AV`gpafGJn^IGT-fw9`Wj+6 z_c(fvE%>AKKRN8p90|$xb`^AM0lJomUy90|ex@{duH~OT(QH20*yVgVfKY7JmpT~W z1P&i%VOWdq>u%18iEtgXvEoJYr^$We4mGo3_F}0Nnys5I;G+^r-pcVj)K~w)oU`nh9Imdbxh=Z)2o* zVpVud@=oU^fu9a~^`KtA>*9-1xFCl35z{MfTnn}_4X;X;TOKZhg?wS*TDzZ-<{Lz- zqHdJ8p1>iadW-MuvP=4q-Q8u?G4z9a4Ep^wi|Z&r-@rMlwVt${D^8hVo3z@qoQ_V0 zYQGD%yDAVV5CQH}?|K8#GG23qsu~Mk$cYge7zhUK^s1Q9M+{#Kh5}7jQ$oG9k)~v- z<<7ADO1jP_NThsD)Rx1xYONNgKFYfezi{R96JtXGL+QfXoUQ4|5`CIhSk{ua>_KqO z!BZaBOUqi~bZ#HK6#lYu?H2?eP*$o?GFvPXk+UjuC!Z36O<8qHdyV^RDX-hu`wx;7 z%%TU`j$Gb7@C(lBXrWevAv6#l$N%=s1GbM}HFa~AOVd1?x4HV5#p8|hTX7xyv{WS##6>n zRnMC8;Pi!QDHRn$gZhVT>ZBvhnws~K)ge_;qKl)6)V*vZt|Ej2R*kba!lc*rLe|wq z?Z~SulCewTWhMRcD!FjHV_~c8DAMUz-IUNXERk z8=s?N4tJ~}3NG4C))KUy`;ZdWgT}nI!ivZe|4L(Fz*1aG#O~}jDnbipeqEk1;mw6v zOutwz$q<|shrC$=k1RJBm?a|Wf0|0M`R0i>M48EAc{h_B@eE4d)J7j6!V}LDohy;! zSS8_&A%b5%Y}t=S2bdTgxzwH2?yY^5rFxriL!UXxG~unSMf*qxPhcobtGD145<=B& zx8djaXpQ)(PBNV@U12Y}&$+j0r&*5W%a-=;1YrmC@r0>e#eFYRL%4Eu{|O!Dm{cEe zooWQ>ooE$Q9*w+nfH>k7DCC86R=e_4$)B$~>PirlKo)8)9??6= zb$E?Ko7vh-wS|z5eyU!ZX8IJH8jax@qYATj94;0ble7%S3M?rSEW|%GqaG9sfDqv( zIj{LRIF_=WLP6omZK&2sgOpvl8db;yv?7r$n93b3J~U#qer8S8{tfu{B0(KzaLIy7 zZ;0)&ru9|%ufvyfUZF_UZ=;+|{Ul`@a(h(@)9oB}$TgXqi~iolCTz)~ZV-B3D9tAT ziE+Z#PfGym+o2`lGu0kEio!5%r-?E~{W{yI$HwOc(Yk(Q8Pl^36qwb6Gy~M2$2uy- zbK!I3q60$(SXON9Y#PS{OC+YATj%JzlajPlAB-%vDQE<&1z$0Tv%1*}0M+Tb!mR?d zeWB3c($9Qe>DyW(?GDuN(+iVbTu39UK@Zx&G}|w&8bai173@oEe7;wcKx#|0uiB;8 z=xwF<>F2v;8_KR2ALruT*bI4aSB6~Ys|*QA`#^qQT@Q=4m9+gK)f{P|YMw5RLF@n> zBL89cY8%Ji=x@LV8KBA?m;VzCg53loVl_wt^OF`~KousV+pFS|*q1`yp**eiz0Sddefi7Z7g^01h$f`%2K#{!t71!Xd3M=>=F4N8vS{*HPsvZ<94^P z(-b$X3t2wdq_BjB66|r!<|w7$H!r2--FfH)hu&PI_5V%-^42kt|5;KFx?_$dPNtaz z(+FufUO%}=bXqn02=nmLA?TO7u(!86_3K8*ww`OLK}^7So@Pm)O6EIT`o^)wPEALs z&72W2-u`@Y*r4fg7)kB$0eJWmM{>2TXs9el4qowKdr71Psr$j`+c{Z}ozb)EhKEyT zuim0W9vkOM`cN(hiGo)hY!f%Or!s??V!;Kh7EqMl8@7D^DsB5{JuNPP3+tyHNcx&6 z#q-Dkx@ZMO#e#SJ%xE^xP0dmR@n@AJn#tK%zHTX6C@)U|9vIt8_Ctwa2&1+Ol(x5_ zS3h7PAw4|wXR)>ZJ*44q3EiJW4uEkQE{KiBC@2{M1_POoNq(TR*LaIFeWg-o%9qDQ z{{(dL`sDW{Xw?as=-H!snDvXL4GzOQBG=8i`@W^p!NGf*>ZE1A3+1NR(RVcFdh`qo zYX=9B{yuKKRXTV4wFi@!9`-uD6&P&98Lo(vG@biJ5J+dfuPN@puQ~ zEc@`ItYD?!J_-z_&B|^llf{D(Wd_bO%I0Ab(q;Q^VKn%j307JEimD<#u;}Mp$@Q7Q z*iT*w$ox#qxK!ynXR_}hA@KxdYXBRGF^(MA-wph$&GaCP8ugBw)LdMNqBVx#MNxsM{(Ma<2q zU^Sf|l&)uV&7v}3i2f^^8s2$>_K8>T-Uc{M+=OTnm{iScIvAPKF47N zT>}G)RmSuc!O9y&fsM)&o~YX;MMOr?glBADP zT~%A}w4#N~L`cXv`%!?A(*4$L+tOu&obGL8Hy0PHNetBmk9LVZAtjgna>>(ABrHFI z)wsD>lK=wF8YioO9tx#RjO=Hp-IG)N>TcT2hG*(zt{D@3*{GRDz+oy-ez} zT4)5lSphBjx5R0$Jjlp6jIrr53z*o-;>R8UQT(MQf$fhMJiFRU*xtdSTduFG%PXxm zxHXGxZ)0Ne(5!JuS>9(d-iL|b8@~V8hc#JhgentBMr0D}U4*y;e9k-LPo9SzH@Hcv zU~LaUo58I4XQ&;n*aQS*ZHf#sk07x)EQ-XGx@Fq6Ik!d>F!*aWq7I;+pUCVd@ynh7 z5fV|bmwIo{rNytRKrZjuWC8vGac{a6sIP^n4q^)jVZ!Lo^PyljsaNr6xVl0+VHPc+ z*kaL`s_#)q5QZHuY7eF{wl$t2^{J8p*``onQYN#TydV$rC^bJnWiD3k+UU%EhG|{f z>DFZVI{!=KXr-|lZ=t4yK`Cu7r+CB^n4{}NCic300mm`5!ED{e!<02cj&QIa)qKIk zDYMep|9uOLyP58GZAEBFZM2(mhPJsqYX!Qok8ko?_BFlA^4shDK+#DK;)^6XE4@l~ z!b}X)ox+9d3YooG&kcT@-|LjO4%!XU(_5+&?R|IsQ|Ptq{_Cul_K!xk)5E)k313n? zMS^(N+0JKC=?j#W>e~#rmr#GKaXLUI#UsGQCC`kR%Lyp$w_V67yH*ul0#Lc2TW=v7 zc+#ltY(Tk@^teTG?chbWx&>9OY%1jkv(Hc_3F&TD!E2eF&*jMA{6`V5ptS~&$dN0l zDHag}172rMn$nclpdLycQ*BxS=Q&x!W>-c3-US?Xs;TxyTpcwolVb|h>Z+Vxv5`vK zDYC^zsP3g)9@hT06r$W0x9~jGzISMWu)=*v*;^b!nkgxq0|dWF23r!NRx5;y|AtSb zLSZhz3IPrt9?=R_6=)+>`g?SebA~HPNwu4-M(UI>WkW)oJ$pM~BYM$v3`O{i{a}al zZgO`lS^1}me>H~&+l+$Yf(46!&~$iMsN_9|yxY#9XvhH|}uu3fQX)eYqoh zVuRe5!Q6t=*Hf_A0Eu}-*JB_DLwfZ@5bvqk(#Fq zdoN$|4^7@s9kcQ1T#H?3WG?(#bu`D@WYPtm>3LtOHHKX!`_d8-z2LUleXWfvqLKQT ziCgnKB14{<@JpfL3*wUR(Q%rI5nuc0ZWGTOYmVaj^&MQ+QLT?pyhx`Ug|l2ykYk*F zU~EgjXp;np$Ev`C(vh+8H~=b;kP>ky{*ZW&` zc2(D7I8)ngIF6~DBQ3AA23KQ^V6`EyC~T_~CkI_C&FJQ9Kc2CAD9; zLA*0h@SeX|CbdSa)oOzHl}3;z5nwS*@i-2-}- zxZlFgdDq8o$X`aozbS4ZZo;vEi};#qXR(}WI?86Cr!%PW&mZZcI-V0F4c=(-wX$rn z8MCnDf1f249voRd3?v9$B9h~=$@p)QQip&aB8{US{D%ZdyiUpd1&lZN16-}p8`|>5 zeEo6EcHjn)L=5%(fn$euOg)>a^^~vVNJH$nCFr*v0N>Mo4e>Ct>;sPiDm*rRUE=1D zSa;NAh7NBb&+yV{Bg=*QFG&INAyR;)r%$46^bO7Y`&_%($KE1W!B6REG>RQ)I$b?W)k&i*-2gcww&ERL37)xe$1 z0J9pU*;eCtad2&#?o5IUv9Fa?F1Sfn0Kww8oTC4APybMw z)e^YANZ`T36>o72vc7sL{KMiE=cHxdw|(rcTk0+0Y0&9*ppMobE|GoQ(VbHSw2z7r^>R(!4!cw_yuHJE(-=;gZP+JZkg{bR(G@A}VfCu-q z(Y>h{)r8uJ#KLx2c=%Mh>=AY@Xq|3-mW=la*9Tka4~75d?)Lu{>^W}L+y5paz$Sh{ zeJ?-j>BOu9u0II4;XJjzV0rU*{!%|~RQB{qpBe)=t*ZBHUxjBoAi`NzSeiv*sOkIS8ggRzsFz?Q{!^~LCv;G4gKptTL`OB<} z8VF$9IO~D`?t%aAUw%u(>UWj_jl}wQ@A|*^I*~#kHj1Kep8YTX|96#JN7B}2K_D{! zPrMg-ggoFzqbU0}{u9Rt+w}qP{&-&&CH{NR`ky97RPZ|@DMa-CM{5k=_w<@$^Q=qw zYn1$-KKn=hB@2ZWFIh+wp7)>Z4w640KC4$&pZ^+c{(VdSF_>5O@03QKk3i}_S|b7= zzKvJw27lA?e+v?S4kn5Y>`Z|-*FVzy|7`|;j{5}<5MR&huHpYp2!C7pFG^r%WTBk6 z{-ZUr0pT$8O+eCrwCNuefSt*PJ$L+%*7$#l{m-MsKQ{7zP;8<*NN;`;%Z)X-MYnU< z@KmTaIwJV?44roYJON+meM|>s;+U$pi<}?ZBrAvJUwNBFJV&EE` zd0p|-1?u7R^Haivi)zPJ)C6g9_`eLNjSEnn#NNo9zf9%hm(~8@FUj@ykOZu*(p*{? zb=&qrrPSa0634yxK#**?-5UBt8*@e4T+RfZ3(Is?SI;)lbidxj1n&rp42AuO{JE3- z7SeH4!jUX*`}f#uz}Ujs+XrMhG|Ghk(mGEkz%-f5$i)BRI0N{#SLR$!oA!c@&1v)H z7k#~E*_!Iu?O)%m)jv%2vN>%r44{vM387!~y1%NG1%ia*D3g?bPAo9aBo{DFPIfFX z&S=t=%)d-4UJE!>T_jZs{6#HMA*_FnO>fk$5)1VVtYS}&CVp8j6oBhP9M*5!sK63k zXb}1kmMU5O5mAB$qREg{N~)>k_gb9pKj( z(H-<@f+jELt&4Qo@nqYKFO~1=v^>0h2oT3BG?6z)BN^uQb=uKHzP(=l93{tEco^NJ zRL&dK$}8947v1D8d%yTsiG4Z$?Qxn~s8jyAgV|26*~N_RmWzxO*?Gn44a6@9AVu80 z{yg;Tj@PjXkC5`Rn$TChI!Q2i8=6xWT?dSyxAzKeB^qTW+!wXt?k{eG6fk#YuMUMj z{z=>2DvCM(dP7=qzC8~da zW;XR}ab|RZgKk>L5^>mbTI%zp^3i z6+$Y$R6ibs^@tQZp<2;?={9+ozBCaZ#KN~lMH}ov_RxCiHWWZnTsfPg)o)<0cNX?W zqf43VOVgrx5T}LzG9)7~WNyf3li%m%2vVr87Sw#ZIXOSh7boXM7h(>f8i@(BYbLkv zdOjescL+45QIEdOpgw9S)}w=TzXz;UsCqK_#kr-bmO4_p~-`{ucSh ziN&4^Y44TZ9;qqszpUWP&~N8$+DY?=$Ri-VA_hMr*}I9Oh^=PCl4`46a?i$L8T}YG zaEX%9e&}E5+cff5)j$8JM?;+mQ2~e7e2V1mmGQeObd6sh17V@!c{5bI@Orxi7;?qj zBiHt5yTx6$;pwkdPqYPWvn0F8v;eSnqG1@zY}3TOeb#T$B!(+QqE%FzyOBWs>UA(%VQ=hg5xsgg>-BGjpR*Xo$CoZ3tr1}PY(z2EA>3nW!7mM!Fddkftq;Gmg6-A zh4#n+_~2U3l*fKD|L$al+FQ0%C3O1Cx5AVCp)FY-yY^R^Y|*O+u9|E3g+FU9Kw2W3 z287;%GO1bO-&Tr2L$nk9o`Y*PbJQzTD)GxbN2}GyTsCqGs_F}$#7>rY zQKDV2r2yA8liUyL9u%lzje!qtQ~j~CwxGEX2u9y5aYbQy%EZrnInR~nXwT|mh1rJ-4i>)tTU9b=IT3i#Xj0|R!Z$w8z3+|pxN?inH?=N~k z^`70RhC|x%wVKD!SE`+RFo?Q44IGTf!8^8c;o+Nx96!A?wxs67ZAr`CHt7aa#2?%< zD6q@`-k*Zba^i_N^`ZIeg`dUA#rAFLRTU;3G68`X-dyDuS1sXIM_wn`GI3U!S_7!r z1#FMh(iIA*)Stfo8*PzQ%RPB!{dUN|aHfU$akX(IODRHb6luKA~tZd_s`ejkc> zEtST@ztMAbI{34qFJ(}0&;9egFeDVz#!Ue)nd-vBxL$M-_=`u=H&;&Ply=U!{75aG zQ>CZNg)H8Jh4S}r-Ot`N*c#)yML9P+9niYIWU+;BScDzZJH1jO4Q{L2p_6WsfA5%l zhv{^&DHh8yWW}9Wq;nq5=w#;3d@5&qFtM!OO=!Xxa~0TDS52iURw+p1 zly28f4IDHn>!(19)wRi2hg^2Jgdp;i_)aHys9zdH6*m%{e)v2uZKwJnqo_&e&D{ZZ zb=FhDTIS!*^h03HY1au<1s1i`uMRexe~mqqh2Juc?0b}Dx~?7erg z@88w7J&E&8a7JV-{s?k@A(#=nDqDLHy)^mssSK*qzW1gc2s*dZy-(z)v~Z@&PB05M z1f7JfA<}t!gh;=yB{L=ZGl_5GDFnZ{jSrZex~~J({Ht$~_nAu8z!l=AeZOC(ukLf^ zMnP5F>1b}V;}&5)f9UQ`<*}(JG#*MTnkRN-DY_pub<)CuJ!zYn4EdUo}Mdg^ANYGNxSYW*9d@DID+NjeAlq5 zL>z`QMQXOv_r>DplBQRAl1zbm=ukT9QH#%5(FM};X|#QSk&?lz5)KJO#wTzC%!>(( z)r;ui0o6dQw_a2X%o$$zsqoHaFB|ywbtD}v$>q6q4Q)ydO|q&vUsqKX499(_JMW#q zwfJqb8BAlx+MwYh!E0U{5SQjHTF^eT#sK;|FkJ#;EMIghsZc@dY;`4?1u}} znSMzmBX>lJ65R@q>);EC=3p#Ja>q=tmdl-t4lZajEg`?-!kkQw+Vt_0wTIjZ zpWjxOqJ>Y;T?AEdluW{SSxj^j2K)m4$_@~i*VPDbvf3J{k+|tyUe-__9~Zt}o-DlH z5+gG$L=(5e;kb4H7pr2V%rh}M!8#Cf_5A!1EIjU$^@7J0#RnM-;xPYQ9JC6c0PRwL3=?l3>I?Vna@j$&#Z|BsW2eziM!V zN^|9zC2u1UE-F=RCJ@JbDj0Bj?vTQ7HC*9i-Ur=4Ym7A-VrFqjKp9|CtA@31)A-_P zsDW(XJu+J1iN%uVhDCYJh4bzQPUem3EQB>%QfUf=q(7mRs4^)oWQE6vO5uj!bYU7G zk3m%7PE&UPwrr^xvRJH;1>1tpjP_|!^F^oD{t1Ixy&58}OkMcOIEH@n;5lFZ%&wdq zbTr;dPVdpqXgUYNh1(fLTKVSk`BT+6i%WsXgCpG4!BkgW1qt}1 zeK^TstV+rQZ?X0r2*d*O9(4t5zKEdLil6)9-LYG-@nHdcQq^*6GXg=a+=Mck$|L+< zhfVO2XLBHC^3+y>$7AgVWl*WO-7xLaD^wCJlB!2GlCIIaT<37Gh+8lqiO~^Lph&d4 z`wDrs5n1m+KB8jaBjn+MpDhbQISrVAdK5h3Nh$>=f>YeWQJdE;F zQM9Vs(*qPmFcKqzyH|HGtf|%TJYnR<`B02zKtiw5vQ{n+*83?Q5v+GGHv@F!&C=I+)?Fw*)-F z0|*~>+?CA44C4sCNzM?Tp5_Hy2IFYxMb#$eJ3vm%83?qoAV-I}a#OM~c&Qu|3r4g| z6FR@)5p{uJY)g#4)7*d^8c07Bj z(NSn}BA)crTPOTzs$_n<*$qsuTl;01KL z^{>2@1q+A^mdEQP%(dB%<;^N~O0#pyI$NcKj(5Z`D&4zV5KhSz&%HMaPSzifEMAhk zv1Q`aS8^h8@0qA_Ks0l1qBT27np5(s>qV?-x;xe1c3I4+2zV}iYRG3k84AH8U*Les zjZ77)GEJZwAMy$}r%H;8*kry|7k%7W|ziz45)5vXp+VqsI@8 zEa~Eh`1yP&k-?Y|-%#G9k^4{KNiENK(}CjyUb<)}d1iy{8cl{jNDTC~r%#tH_PKW( zmzhHf!=;-2^l>z)_Kr$W?P$6#-HBHYTAvLJ9^Q7#9Ek(a zUEq}yrP8H#KYZvjk!x0Er#_tv(TdSsGX-UD0WtKH%r$vh6ocjo~VJOZcH z->sCMN-K|`!&5rnoRE>n^Ty3;Lgg&N@`oX$GMZqg-tq`LL%T%sO(4JFJqj^Z2@!@p z;kABS)Xo0P)xcY6;Qr*aQIq7*y-F&)l@4V9eRJR^$%#+^!lZ~sbZY?l={dVh#i}_F z=pIc!Iqn`&@zf5bd$$kc$jdEko-O!l0G-vqJSv~r_1c8-k&&=Mt`?qsXSURc;Zl8I zA!>~-?^91ME}>XVIRlDVkBOy9O#%200co(!dVq@C&BZ&QY|#S+-48j<*4v>E1Q3-1^u-plv9wod@seKv+*rM*Kf-bN*HS12&$Ev1!P#0He8%sV z-iHT>_wHVVy`e~6FV@Or-ql4jrX8s%CR6J9R%WbC1T)18)UsADL7@j2!40roP6V~) zOM+9X!_pV-M&uuMEPq0D*gkgo&msnk+vyVfejerZ>sFg zHFRS7-?x)#d5HE6u(O(4&j{|uOx-)1!qxt?n?5J5yO##*QSB#{t>i*fy*;WNIrh7p z$_lu8*w`ZVK9gfBRSl<$gpdd`raf4=hUW;)>`?apN z(Ou2-DRYHlKFanwjQF;ZXI`~MLL4ISNn4fxQ;u@u6b3o^NuLZMrOwBGSWMga<(^Vd zNm_($MBR;go6Sz>H8OR`Xr|k2lHib!TE%zT+n`nNycv={a5CApz*5%cZg~=M{#cG6 z1tg@uPLxQ}p&}C}NYc2hkeqhn%Y1NTmi2w``6uC2>pzSFX=3886bwv5b;%Fv6@dv zk1ejc$@|QNE!ul$2u;X9atTP)4`s1pJfJ83j*hdPo{L$#Qw~_n5x@N$Ydz(efxd`k z+G&>nQBTKGra!{W+~TO9J&e%&UcT=m>jB347x{D) z{f984X>SYVdw@3|98XxU2*C9%R`>U}U=!uswHjG^B|iZTIELo5p#^uorW5s^ycDW7 zm8P8$?Imlc$fubRB6W=?cPUd;QFILW>RY9AL~xpX@TrW7rXwzrSuhyID0R`}8&c`@Jd zDXnnQl8lBviPz#A!;?5R`XRUV#2W>wSd{iT#r0s;b^w|0k!iH%s_XJYz12>u=BjF0 zmtJ0l)u>%7E?K3!9*y72m0d7tiQaA57f?L#<_!Lp+p3vYoMSG>aNUe!+F%Jx&U zyq3A8WqGNsZ$m?9l0&{7F-+lu)nnQH(Ru&Fk;|TY%C&G4$Yf@tl>23WKt4Y&YR1eJ zlfhV_MoP1H9%bf=cw1{4omNv269c0ZLFH=ntwv|=QBCKR9a$M~z3s_Wg84)=_PtsA zhYuWQpCD6ie|f3ijOS_XJ;y)QI`gc>txR1}L3Hn5WeH2!I>AOyK|w+7bs6bt1m865 zcg4YjSyaNV8`Bj(uKJ6plnyH8HywA0-az7YYseLOimVm6)YPklyg-C|BcsFh#oKgyGjpGh_6)-ulU zFuE-F@K|wnwZhfe^*pf&T-Rzygxy1+o_(yC`A%H8{sB#-+>^aj>h59EK^MI8l#4@D z+wX?b$VAvOy?K@tzAS&xOUIcJ6nj$`L`XXg^;UR^YKvQZnX~ndYTvzR$%7Ry?EWRY z?)s+gOdy8Wcv;77a-+e2*FmBS)#lQdeIP;-(@P@ddimqSw}+XHUNer!{tw88n05iK z9uot<-1Kfwyez;j68vZG(oKV0OGm=)`$Ti$#5Bzu#}$rg(ZOrYS}iPB1RrNif)&eL zPxddD44zs?^Nz>u87M#B*Zhh%`H*{qdY7tHI!gTHa`paf*=}s3<+-MX@13h|X^WJ0 z&0-3~Npf2*KD6DFztlw9Ofz)2-IJf>gp+z*uGY;$GJ32Tu#{8b%y}&VQoW}W8C{AqvFrzBfqw@TG5JNErq zfQM2rbN(VIK&g|`+P*XB*E`_sk<|RPb>L#1S>fg?Nv3zu3^k8#`h_w2uXpUF)<vdtU6x(gLUcl?q%&V~O4q8@dEi?LI58}o!7N*J z&iYn@hm1B&*h%*LesQAGGbCd`+1Ru~vD0jCGkBJG&YCH|tgH-21#7|G$}DOx=%PNh z7bHm~T_XloXSUuvIBdlz;6GV*A)2VR?{-*0U=`EHn+cff9#qupE3eRHT0aO}*dqUm zyy;tZqwiLg86F>lTdLmd<>Ma~6!{ME^fnN2x^$&bmUK`i)Vj;Gj35O}E?k0yyxI|# z@=*TcNj3|)>deeX5rJ@+EIl;-Nhu^XmL#DjCl5ppAVM(&_DLqh)jZwI zFZsNPj> zmDzvQXf7r0KAe5I;v|{G9qhL3GQD2>B;BNp%w&4%Y@W-m%XHV3*4j-*c-7JIiOOoV zO~x*@WaY$56t!nPYqX`~-UEa0*}T7ci1B^3#Mxq{Br7v)ox&igE|a-UOpBUAyeHv# z(uZMHyPj3Pw2jGdUXixQMdlh;9jC(zgEE&UbIL}6{A_)hO2h=f0&O3yWiH;c@ zpV%4YFz>~(XF?kY54v27=aXx!!37d;@T|=-@Qg!zz72KboDE%svKwr1mHUwxn4Qmf zX{-?d)sI(EBnC%=VQ5*B4_`+Djj4n--=-0~>Gd1DvKh)P`wX>q;}GDabrW#ehrO!& zV!=G1kn^}S^{tu}MiINRv!b1`@6OV0?SrLpwK{L6LTbEeqeN%%$U-~Rv^8YuL#?rV zAxp1m_6rR|+_4+OKFC|7(e+JxZ?}k6q@VI<{_J=?iI7-yDr8#&G-84@B?Ei&6rC+~ z`1ZV>qM3O_e=&X{?+Tdax{t=K6NEvXf{EwBaBEkw9fUGXnZ~yMZjdfwR<{8*b6h<2g2B)Y z#$up~lM8ksX|!?fL$31ea_1y-kUrQ#H2eN7?Rty8bo9Vt**{Re5B;9nFA3|c=GdPF zi(6}Y%Xb6LnJ4 z!f{o13ZqHI>)nj?WNhrtD`zug|KwhT^I@TnXlsura$BA@PSJySTklGq#PJ1Z5=F9m zSG_Yw{X~#h&o67-wZe}idHr*5v3*N@_wLFs-z*_)qpKJ0Qgp_k@fyH{Y=t}RKVCZN zmi7Of?tG$%zDD;lN>At)$vWPakQ*Nly}l08}Z*30>XvFT>e zO`;k4NAG}eiKa`W-G?%fj4~Sb?)*h`J=KD^KT1Vr-46=7rM~gYQtqnG5EnDaawOg+ z3Vr@PF#@pikr=8iaisbThAU(__*}6Nv9#K3x{9g61?&b7h%bUExp+^7G{WDUGtEO` zcgHIda2OsIPtb)BLhhSHadkKV79qn|rhT`skQ54v-Ck+7(?MgrIAQTIB;s3mwXePS z$ki(IMMTx5a~SN)SqZue@u`J}ri)b(01jTd;$1U*8!PX~*EI7IaQ;GuUS5{{)%osN zLyJ8OM#-X|+6{s3;;9t4p>8{V3IQJB9r_EerR4X_dYWgCy~+U$ib=XSIt>Zl-eR4G zjjIKO)d-OcuB+a%OS6jxYgB+gRS54SER`ZWOsTIBWN6lPc(MU~kVmlKp`0zfT&HwI zvQq=#sJahyH%*C1L!Z7r^7aT8FH{mvy1ToDNDMwMW!K{|6jd)j5fY?o-a7XgWuZRV zUrIBXE6*6=Ye^H)zXGzQvsF@{<#bJfdN0CfiuS$_ad7`th4Suxo^{$;u(D*i@c zXok|e+qhBB9NBisXZ3T`lnHt~4fuV#VJoUlt>1_9Zb|g97~GmR)4mwqbQe45NIssi zX4iZ~OWa%!ko6ETM4LF0<0YI-555AZM%;;k^-vn}=%8pmQ!(hm&h$1;WSC28XvT%u zxRtt;IOS}VxcN*T`RB0@02au!N9V=I9RaXiJXzP!E{~q4F2Z1*imTw32qUTZ0X7^F z9M^)v3@T6P{X#hP*LPT zm%2EeOpdzdCMLx%C5ww+jo45I!NK4jzl$DYuQ{o%#qul{q2b|d1Qgzu#5+0=ejP&i zC%19aU7YWjgaQ_~du}x@kMu3qy@O*C+0Q9F<*&sY9&q)=>vwko zVjgT?tQv3IwrIKHJU+_0%qKodFUo6!hV$RoS)MUC*U(S}%M4D&wfAiwdah{{t)3id zQqnh`K1}Cp@uY!*otcES?VCg_xE!ujA{l8~YG24&Ei;DS{Ia@M&UJ<0kNZ`1hm zb|OeUb44p?XVANhQ}L%xd5K_+x7D!)B^D;&k{>;6e93b8hsH6t$vexBRB?>!X+gGA ze!X4S>TnS~Oufa6nqrU!TlQv})+(B5ft*&Sw?_a6Rj*KKI&!SdRDI^F#0lAXW4873 z^?U!aBB!M%E#G`PHM57DH+Y9AgvrbfE8?iMXd=N7zp0*>9nc~1@GhKcOa)pBQfO$@ z?s0GeIWI8~5P;cwjyRA*mKHs*h8V4_s! zd0nz!0P0WA!IA-JyNvp$Gg)~B_O(AWg;%ciP3+g#r_^qpDmdt2h~dtsTw%>s3yrZxaN>k7=! zNIX3n3yaK65B@`#-o~|$(NcA6i}4=qPG^Zy70P!@*TK@xcpmov80TQRxZth1;5e+O z3)8m-SGp(Hr~ol}w(%u>Ty(lv1|13x>%}8y9O3sx1Ze~yxS$-y*v@!;G3A6`3gU5; zGyPjS5iEz68d;6EPWew@k(FB z^{Kbrr!c7>TEvEP8x%}f3hm4|ucwFOnU#Pa>`gg%9_PJl?KWv_B6#p%SBK|EoMJYc zQz6?XWuc@3Vb0rq@-Dt#TDNIdZ?aV&Yw1g0s4!{$7GgU^NR`%yHm^#lm+~|#gV2dK@0)Or78B){ridTuTPN8PKk(87b2W~^S0qcl zX>LzFC%Ud-J3IwSM5iJz%9Betxm(OJ&x$!i&Gaf{lXu21nr2~Q;l(+O(_yGtLg-z% z1tEmTGQDpPkBBGEzs>9k1nDMdDidIGo0Z27C{umb)?(!@eeoy=QApefkk(l3*OAc= zKpW5rN5si_2z9hm%O-gK=5g#Ld>?pQ)N1Tc&FM_3SHdG_#<)nDCd>*4bm_-@25V@= zy@cJ^AwS>PeqfCYz8sPH5zAjn0~Uk~sup|6;S8g!suz2WzvdxaZ*+Bga{N(uaE;Qp z3iK`a7s3U5Zds>oYgclmYK@vYocaXli>};V|HgOcZmOG9sbj1wJo^tn< zdjl2Qcmno64(aXShsq|Fv?dsES`v)F0ndY7I7e+3<}ViJIN;sxvG7rfh*(HnF@0*G zpZnOP!^*{K<*vccHLk>R7Xzako5XV1gKpJ=xyvyWj%7=AMJ2L(e(xtg9IytE`4xn0 z?exu~=~|}&gmPQ0kmO=iK8a5L%TayG4Ldb0sdoS;+OzOsb}#>jL>FFhL&C-L_z7KF zNE&F2yrfb>ze#t=Jj)GU>u}aVA|-2$o*PUE8pbG zaxRpz^7g;-cY;msursiRi%_#1rc7v{D%R?Q@2sZk17ynY8TA{Ckbx#5PXwAWKawn# z-Bb2&FYCqkv2q!wqt5=kn=_--!zRLftqdfWD3Ul+=p<)CL=L6N5&UageN)s4p9|31 zt$90m(4DT89a^L z5GeE`V#bjzLE;5Y;7`>n+6-QgaF5&$9334%{VJ*Um{CmsadnME;>E1V_$1ZMpD0|V zjAV@s5MDmF-U=6=oPOP4ZDo6QCxzdRr>)D{bfAJVd!Wg;n`o{*NR&Un9CWQSt8i?mmM>IB@DIlmJ_&E> z>Zu8qkqHR`!u->G)d^8g2u|h%{a|Ft)Il{sd0%SSbyCi8#OAi=>RPN-204Q6HP9}Y zHcou0EVsJ|+?p%6k+pQ&t~DOY&9AkP~XEb^o1}eF?gMygXu*jp_$o4kq#I9xe zcJsU7HV>CTrWPJb$=|N+h{$~wEg#z7I_rwWV9PnFiCJ6ASwtRI4_El-Ln;zQOx_nv z6e6L~?O+`4#>On3D+`Xuo|%d>l%I~03VT74p_^0t!ONs(&DU5<61j5r#?|nA#ORf= zBg(n5pfY-#Y3$&DPTK&OI+}S_076FiqdQ-?5rtboY-^d=&W4qNFmwpP%FrN2+e_!1r5dO{CaW))*J%C1uIgHkljczJ)1smExySYL30?~~ zZ1&e4@|G@}E(;Se-jRQ)uqXie_$cJqA6X7J?GymkZV(8MN1uG1sk_qc_(>>t;NfR% zkMeX$XuKqytQ^Q>(@z5Xuv{RU1L57f-dqZN=}K+I7){5CM?K@{AHDa26{6V$Jg(;m zZ?6i2+EXa|bx#KiCvR=Kv6)KLAe)n71X3!UKJa`O8ns{z-h;PZ)r&N!7WY}-cWnq? z4$1VbTnoNNC-Sb0uiX5oeqku{gR15_-lWU)fg!0Y-_T-87=Ir_j)Fevy^4>vl{?V; zCRY|yO2rCC%JtF8)?6x}{&|Q)S23(96@b2Bl_>GCpFu;(CVkO8N$}f=1Z>cyMeFVQ z#Sitmt>8f=LEzT>-10acV{8I?P=5DZb4oV5&rGS2{F~;rB849BKict_GwCWWdu+^W zxvIQDf1vjE5%G9%@`v4>%Kj*z{=Q;~zw&!IYj)s`jm;9((0H0(=(kejDwQhsj2u2O z7ZpRYvuD{1k#7O7NS;v=-irmujGY9!*{3woOnkp5l30||6Vo@{=k7b@TE{7%x(PMw zGX2K^+xWe5ASRtR{aWySAJqhZc#4O7i04Ijf?#vx9gP;RpMmQ)uWCvpw=PqW{99`K zMfhlPRiu(G5y_dy`VZT`eBKPJN3PWWcwEipN9<~-M5|6{FhyXZD^=w~eC?QzIqs&)gOFd7>i6L`JD5lEf#me?% zOd>?H1ZgKgg@(pz#k@pDI{w*Z6CMGdm+aXiD@2A;4{)4}c9k&1ohq)=%V*7g>5LS%n5)dAS;PdWoD#0%NYVpDiHI0)=wGeA!r;USzWA}xS+@I!?tgTz3NDW>8u z{(#kd?c#N({1?TR*Zpk=4=2pM*=KqY+%7Cr4t`$r^IB~(%+*g0Lc(Kh>#6;c<;fP@;f;nSkEx?RHAN3{K%OuoH* z_|k2e)n=2P=j$PmK5!&IeZ4o2QSCyv`xS zz8X_kAAuBX5WxGDTb_yaf#J?^aGqM*bqS^n<_)?)-1k>?8tN{(-^oFy>bc$-_g^Kr z7|`Qm8oPHAQ|=$q;+dRCo461HomMpSWEkLw1}aIvrG|BjD+Sl5r+u&?HFV{4hH<_* zBxWrTe15(}ow>fNg6@j@pbq9pux2xvrdDn^MZ8jN=v&F)CoVr&T}{7EVlacCRANNP z7mP7_l;afMsF5klmI*bEku+Q9fI|*&bm}G-EcIpLOdXaW+twPU_AcXF*8<~dopI53 z+lw0>5PA3RUHRt(KRsej3bIsCMOH5Fgc~kuAP&DBWBm|}5zm~g$5Ofx zMG{j1|8wBWQQ;9LGOaAfH1Zw`{-J64&S|Isw854W{L=-|^ik7KSbZDZ9DguGhTg+e z``1XuyW^#u2%DGpCn^e1vdnMp`0n}0Er)zYs-?p3_)SI60IQi;iB8-ZM zkJTCI4BZ!Iz$RX%fiQcy2m6qZeQ6N$(VHO8}b9>2`n8yVlDx|9SoM-JN}A zCCUwdsW;_vLzs_1--~_qJ0FMw$v^Py7a|31#fpaC;zIJ}88JD6Y!4(Uu}1}ICI?HG z?Xca6Pd`m!fzScA!ecRlX}67>R!E?khe}$XrYCwMUFSmv;d9C)K9okXUbDZEnZ#~Z z{W1FXu2d(8Oi6pX9O39Ly9~GR2LDb!)9drK-b#fU40`+7O;?=XcWt|w_5%h0@(Psm zwg!3u5Sl*ryJigCMBUZJP%ye+9 zz7qgi9$hSecCZlA*z#J)*{wp7D@7i;sV0sIc-CGs5G&*`o6n~wid5h-GbgaWsnY#O z(FLQ74v&!~+?@`g1};;;Hd6yL-))W80bQYv{^(9bvXeIaYYtmdP;A@JPSb;Qd(RF( z$({hkruF{M?nK}?#jT2Y;!(Gf_)%syHu;jusv5xyp{emgQLth1pRK#Pq6d`!)ut#~ z+ZQ9$cy-aYh&-OoAp~fvG_IGnqg-tacf9CQyj@Kb&x?6)YZkglE0b0dJYK0xDf`(a zSiXM*8-Kh;19eEF5$%+_&T%5$ zVwlCjO$NDP=cqO^--GnsXX`+?u@q&!8)PF`rHszzWZT_F^K~ub4ZCzhPR)Jnx>bSN zCa$HEyGLW1{y%>PL~>=^v)c|^g{jWDR;zoZ1K3oNZ&HKYuR&b>zqxb~Eym!-22t7& zDCOcddxpxMPemk@=)(!=Hn;j)6p!^2_#4nu!q0fv8+M04R}?Jfr&sq5ML&_3)>(B~ zG@*i1zILnU5nmA}<7*i@2AovnUgMrV@R+W6ypQr{`kLq5ec5Q_r9y*r-@*HF8kv*F zov$yFV!JhP%c#=!yw%7fYyfe-q$EU%#|``E<@yPdF!YAS+5xU%4_WR$A`F5Y;k4l} zd5iiliQtDTGRH@1B$}vGFBeAU&~Di;?>=6q{^%onQ?)g?*+I`BRb8MTge7xgwT5hN zcDo4P{;sm~MEz>6yIJh*_l>Hq8V~Cget_0RFYJNi9LUr->$dBs`sp+ABXf1&+V*!h zTAu>zpSE9@Npt}ohavy49nCFt|4q6jL$CADNx_*}?SFANA{3#ByD;yo>&2OU;>sWd zL0y-k_aWj`R3KrX_fj&QqJcrkvxB{9Z#PJCMB@N$&~PbtWTu>J{3FnP3H4?l2E9pg zXvY<3UR84&!gZgo-svpCjri^zsusjlARlh-ix!3S_fiSEx3=+v1M;|aVF2sX^AoJH zg!VLw)tmt=7OZ1xYd{7`%V%}{OD?(G5ap_Ki!8g?Yhs$@temU<1tW{D;9z2!u+uT@ZIN3fx@>|(ioA-M~XZX+CWZWW5uhdn9~;DoLJK4$IJ}2^|IIG zIz_Bcl0I5YCff-SVkZ1@T&!pmajP6 zE{(sMwUst~n4GV<%=llkORZGb9P54?6?>Ozs5lbneERsNb6wYsb|cB!oSz-h%vgiV z;$AyaM2FhP$1O3=yIF+7w63r1C<7oR)w?sG^0JIhT|3C5FU=dftEn|m;x;pL_vQS3>xx4YTECr5BG`@SJIS_DbF zfyK2zc#nBR7F4}75i{Ir>fN<78T&E%;b`ql8ij_9wK^|_8^Yg6j(=m3O2Yo5R~5j| z9c6NQKDifFYmD~Ms6b@TJ8WDY7iDX8Gd$sQ*PbhEFhLPp%Rm!J_DrstZ6Co2rQDWM zf6WyHK|u|y5Z32KNyB;xSfNE8z=EFM1jv>5Tz_Lh4*(r8k{CydeE}W$l86Z;7Eo); z4@h^HT*PmhyvB%jZ5x zwCyTRqh0eurtRq-)lvPX-JeD*uX}QbU9B7-Oj9g4^}Cg6d*qq|L|U_cx2NpOyKF;7HIh9P8D!tbK6*u=XklCi$)2rdEZN4A zr8iqqH1al0nNe3E;i{KYW4$L z-MzvXU3IUGH;18LdqK|UT^+wbcQp?(exViGRqpmSf5F7`7Bii^|Jc1|6|a0_h6PVs zsYhFl^$|4S#Kf;bcW!}}XVmmOO0y^S)@t86AFOZPaDQ*DFKm%yw#6{NYNsupiRqUl_JbJ%Lp;sHOkb4F>}Q33mo+OOz)doRiBQc`^3tm;%09`uQ^=kpi^7d&Yg&JiWAM-$?~=}@&NkJ zW7yPg@i3`CVil^XW=8CdW!-XgNJ!RfO1vA8#tf5ob5)wVtuRE|uRmVo0s*SF+Xeji z<2O@8zyj;NAQ;-nPYr&*6j<4C7z`4Lmg@g*@UK<)cG%AbO@Ms(i(QfWV2}u}!(-SW zv|p^f7m8jTT5wZ9Yt59qpXGp%M8$mMzQqASP>ha%4{QXLU|6+?!1Mt~o zyjef->}TM==LECElx`eZ&0;_M9`+O&y*ed8;|Uw=>94l63V@MuXns?cf8lc^h8K+C zh>5$(_ph9eRbQQ@A&2Msk)(diPgsZeQ82H9Pk>Dp>gnN?iGe;>3-vu)Kc!ZWm-z0n zGKi4E#0%wUikg`{QxP=F4X@eE{P*8y8h3`UR)zYJhwKHPowf)#DRxc*p>N;GAw+Bl zm?=y+W?qWFk8PWjAD?{Zc>vXeYHv+k&>kcv?xJU4;y@rnH_<^pT<7FyiHY&BA0i!}356 z&KT%9Ko!h>`Y_Ud7Y3s;PYab>s ziWZ7ImJMTB#M7Lt>!mR8!Kc#Q!(+#oWkq~^{6#ccUNh6+PD`eVaKhreosF&kUoa(R z5D08?gsIdP=y^vTB3Uk&Pmt})`UHdxMedpuPOPD|(Rff~nw_>>!J zJ$IJH3g&R@UdB#MlA=1TUWHWm_^e#Og=)KZluZpnFezMz5LmHj0~ILv2uTOb6GioK zXRAOXtFF=}KA!Fl5ua2z$)W`TR8cyDFiqrKzd>cRXkl4dVRr3fZ*O^3ixyn1qk#TV zM?2J@Zo?#UYnbz9zrv5AGtUtmX!%iaVO+p3VyE=^;9BZq{L^<$%q`@{@7b1NkgHnY z_=-~d1a9BkogA(2XU-xUnHxRf3B5WVkRvjD%vO&U*Zwqs=Pei zn?(KU+0mp~Zedcn`v5d0V8(bjT6I_W$M!>Al4Xeq#}`#ik3TN2GR+e8P96vt769Q@w0BL7*d& z1&SB;JVhji=NZ0DmUrp+qat*J?u#O8<2fTg~@@0mPIvFt4+`f5xLzKh`A>5uV zSvV--o*+*r-@Ycb4H_+h-1N8EFLhx%7w}^^l78XP*SYO4>}AM(rijJlDI(X9-}~H0 zVI(i2lLD&rgO;3man2kxlq8pcf5uV;jvs`8T5HIHW4}~0{Xu~GvWKV;7d$z!@2#V( zo@A0`Rdq??_!8<|@C2=;aCD7i}&ZPeQP>~nF(6m%6LRvlzn@D5Wb9vqQ> zMGzuMNh%A7hk zG`Mi^PSBfj6I0=#rN|)|8LV|d4fRxbboDfZ444^i4N+7G?c>zQSawQeRG)cxH8CiV zpXP5vnVV)Hd}o49&En+sviUi(L{asw4&`~L{5#=z-^I_#P>g4efB+dKNy|V1X~iIm zdd5?aDNddNrvaMAwI_OW!c*tZN=$77B0U#>1TxthQ zQ~|QAF9syNQ3WChYkiTs?X+Y|HTXtQ`;&*trT>I&yo*dHMH}S>iQAZcFAWxh?*w7K ze#i?v)QCl;!{XF}DPuL$Q4SUrYswVFueIv{!27hLBRmft5{W&vn$bVd{CA=|Iy((4 zOo~YLeg`Uc3qmPyk(J4gCtx`y1&Z)7q32^>BRPYIm2f&~6#s(V?>x}&wY}g4Fv|*r z^pa;r1k3=p1f-cfsA8;r-Ez)W7I}rH!T|{cD_DTslLNOI_jogSg7f6Imr8o!SmIgj z?On3tRY{43bIzJO!&N}J2xeg@4L4zOxi#`o-|DqGtG(!5&3q%H{9DN%Nw4H#*xv*< zhv4^}8c;qwd`@3&DRF}^gHlX(35gRU@wgJIuX3}Dc%77y-jZ=@ZM$xW zdiLT4Q^yiT(-J~a@wt~1eP!h7cUt<-O0Rjq;~JW0R;{y+W2`W}>Q8QJd+bNO=w9cf z&^0vbj6`Ly6J81=pQf^rG>O3AGz=Ro&eqFb`7*Cgl4;tmT5cgO zj@8K@aFLyxpTjqmIin~;yVhC?qa3SfZ0S*AP=G{fX<53V$UxbX=LOMcwHy@5YUwXl z%KhI>2gy#J+*tS4+qK|50{6`d=0Yat14&ZLi|lq?4@lKcuPAeKMlT;+p0Pz8S+6zp z39rZ*S1CfPmvW1?vZny8PV)CjK zqIPUoj!sV2($6&nm)YW~S)x%Z`@PNwr1bRkU}OO8*%i{s(knYsp$e=&7psS%yzP1H zvqTO?R1%3NI!XA=adDtpb~~}4wzIPzxP(uT2+@^OjGcvEwASm?&zx~)t|?|kb&fMB zDQW49&mFPotq1`|LaqS|ppdRI?zsF|)7`E6iVLX7F8JkYZMb_1#Fk1Bm#NL9(#Fi- z!{*`%gz!AFv#64XWD-{wnsCKArt2fA!>W2miJ7-cDBIuA1hv*)Oe1$r4N zj~pdrWMnRSdwWwRqV%@=Q>FD5KaK^;-%ck9?1xAY)iV%9#ua75nuWg~V&+{`MDTsSI zqa9i2iYI(3l|xUGhE0Fx>@66simcS);bMc_S>t9vTtgAsR5t#8;i)jv%fw=Tne)Pt zd-5|TGN;BmgieE*O25e_yBXr~;SaUOI#%d=Gbv4oXq};`Di&5dJzqzT&a8m!n$+MX z-;HS%*iE0k`E}P&)MSrp80o%Z?(vP+x8gyvjz{Ui?-ek%g9yMfgG;Km_HErA>qGv> s6Ui1(QB6~h2f?bwTK8KYVpwKf%&wn(qjvD@Ch+&yXTA9oq-1T6Yd+e9Qr^=5k7r?R@EjY z|0z{q%p^5=G_nILgfT%jU~(KWR2nwM#V{| zG*V<1CJMyp#to3e!#~3!yPd}uXDyoUF{8R}mN9vJO#IO=M%E-nh{nqeSF`*~wpz-U#FPw92VIrEiAh?pN z>Mj(`PZ^8tYygmN`+V;QW`I=GEw1sqpzjxf?8tY6cN;oYLllTK)%p?%f^;>$j3SB( zRhB0jMW5o{RL-~n@{WP zBsl(p<8Y`fVrW20MhBdPbDz z_1Lc#{teo1QDg99HdJznLTnwyVaB${04@7)o^97yd@pbrHA2;F4vxs%DwT> zE*MA0E(rce`SstLCt6Uq#orc{!e(%^~bhVucv#RUDc& zMf~g#;g&5zI&d_gc)3W`*CD-xAQ0d-$Ox$XaG20OX2Z@kqsTx_byzDv4R&BvVU@uW zc9>QXA3;3|@pD1R1+cDDG@(=kw%A`g`{C!nw?b!Q!jO|Y2Zg_(Fb!kh3~QpW{)vwG zk>V>C6|AHv3nn6kL?O9TEQ|5m8oY%d6-v*qqWzLve3K!|A4w>5`>nRHBfhbz;Ij+c zjDLGixSfM(4#k5vB1V%dzNh1i`GcTb#4XolPx6YwgV;twKd0?Y2OE?3Fp*Q&{2Tnp zUZrXjnUIkVscOeEq|zRO4X5^q`p+x#5*cBv4tOUp>h^E4!jR9x?@+wR+ws<-=Qc*} zRG-LK1AQsS5qn`I0yzC8-iY^8$xtL<3?gbH!Xp-K=pB%?QeuTah-v52EJxD*wBA(N z6xrn2wB1BBB0OiVP8Oqh8%HGBo^Otots+E6UQT{YMNFeh?h-2y%ieEltnP@wo%n$q zKYnO{x4*Any??Afn^p_QDuVM}8b!X$w-1HZ-`JEG6?xuge_vG5E&;Inr^#l@>dKZE zWEHOFwNH$XSB;-dhRtAD4Nq#6S4;fL=oO8MVIxk1j*=!6ji17sXqb>2x1CxY-*+bT zfZ$Km6Vex}EX>Xo%<&yJw&bz8U<*!TWv6F5WUDl9H&%Evi-Pu)(U?NI{qg6h82 zF9Oem57}_3D4Qr)s9H?LuH%Wqr>Jm*FmJ+8q)=T6bvW;g`&m#phM9FNHSBa-bWGFZ0~&pDecH_M0W&8DI%{&e9g7|NtF@ukS93+{ z>ZQ&0cQbJ|sfNv6H3Kz$gTt2jGi;>-$4|%9i>eE{wKR*h$4*Cc3;M1?#LL7rM07-q+_}*t(MEkP(Kez8qOBpH zLR3(j_r;txxo~-AxcHrC-J+ctT`SytxTh`655@~b$Iza4Hc#RXYkIa%m@*AFx+6l_ z(L9e2*6Hla?b|pq1o({ahBr{V^_#hWgfGvwtT>weh;h!|UEO+_>7EkZQ9PX3w%AVH z(cE{BFCU6F1Q=&uQUGB+My_}^uP2teTRJ?mZ}kP_1h@rwy?7+%qcNi9SvIRHg8^%9 z@pdhwLx2&xJpC3>v)~$N@Kw>z#E;3qs)IF}pC-LF{*q<5P9aoj22y0s$Eb zl@8Ssbrw+$MUU`_>?Z{kYd&>8%{0HWQ52PsC3Ru$c`u$Z87n0v zE47lg$jbw~8k`{hyxf=YrI~rw^=PYlx9@G#5V4yx-)BDGrx!L6Eyu;^I>3{;4=#u^ zGg&Wnm2w?P4N(sPI*2|R!U?5CF65&}qJ6NT6HsNUw@ACMTbLq| z+m%^kgHHV_kY`c2J>1O7YZ^SdD3H#>Yj$(m!`L$vu{J81HN`b&d{WjN+@Sou?z!vsUE=Q0${=T1Zbe+Br9N@<55uULw0BnR zWg}XiZ4^~TZUqk80fV=PL5CG(=ot(y2ZQa1WO@g|QdQhayuP- z*gZOTYTu2{xE1i-gL)Ks7LSQ^VK`xc_jP-HHYk;_T6s4njhfuX$k`BO&gsCHoAGiM;cgq>3VXk?uK;g)y{iJvZ1%{UH-U@{)JTK+3>aR z#5Lw74?U2ifiJ?>`L=rfJd);KzTJ7)Tgq4KW%x+brO0acYej6u(3phaDUjUzyt!pd z{#cM+f3c14Oua*&fj`fKM{hvyx=rt{_iUu0(bg{AyYQ|z4tzRH~NxbjbPSu z!qfi3uB84aeKp_u*Tp-A&84>X)^-6}{a*DKB!jBlw{Ia@SK%P|VIipbvK1vtM|}qa zibu<&U|z7*GBFc-p#8M&UP+cvUu|uns?3o2e1yGw-#{4cK~Mo9o$t>47k$-~v*>Yy z5yl`1-Swv~Cp$s3C9J#X4zJ5l!6k%u&CmD>k6zBvJv3Ediz32AL()`M7J?3(M}UBV zB!GYg=ODqC03_kR@*g4JLqPwz4+Q}cY5@WBk2-ST^!G0oeEn|oR|*{$0s#*$VSz7T z4%9zu!?fl=|1%Gz1AYb}tSl-i2~L$iJDQl-I+@!!H}%tiM}R=I|D@>z0fG1K_XR1b zM0E!4f6hWh!&yUChUc@L4Wps4oskJ6(8m6EKM;IC9&pyi#MzJxXk%^b!~^7~_)~)i zod10rKtcAWinA3zg@&vGnW&wk2^j|?6C)Fa01_D)8K0xEDUXua$A2^jm-s2not^D@ z001{PH%2#BMmt9{05dl?H-L!+z{0`+uEF5sZtH9aWUzIj{Hv3H_9JHE^x4tE-r2&= zmh5-GhDLTS&ioVS*nTtPqxK}d=Ts{kR7bYWA}#PJ0Z5Q@nt7#LPo-n~Z(2ugsW$c36* znGE<8N=ExB`O_-}F}S!wQOtJtyqjrqGU|5gQw`g4#64E~xRR2}d)pR&n&CvPHI~J% ziv#&{I|5@N4C2!#JQzq}A&jsLgs0~*5DurUP6QrLnyD?$v8a#gj2XLWfb5? zMuva@^^ar~GYsih3j^=XxyGdc?r3%<(@CrQAt{f~0pD|9pGm~_uj+EQFI$Yk_jiJ2 zOi?#%2mtcht^+4YoA>W6`MuxF1#n}-{23nOcS3gbyIWoiJ&h`c3_uI)dNZ=R z`DrJ%N|}P3)Y+i))!7CmkJk~K?(-#e8wNe~JL$MEmVDXoU2E-5F|J1fVyP_oxvaa4 z6Xm`q<4Xm|lm6XBd!5~(3GWTPczR(7s62O^>0VyCY4%4~9zT{hq7C zViol2r$j9;W1(D>qrv>Sn8|mwNjx+r`hGU+b zu>30vrO7~e^!@n(rvzqiI;m`G*yqbrVl9vfXHPV7WE_=8;$}~z=zhwF#pYY4XZK%r zQg;XR5%WCWCoC&1zS*0tZ_-ykWd)rueRDY&78g(O=YuA%e;t?fD6%GxcuN@~h5Zvh zj15B;J|?5EEOk;LjWdop)in;WMiAHk<5sSyguHUV9YA?CBUNSICEZQ&WjU30;1F@2 zAl_&xH5OVjISjF3NXCa;Klsv2*+Gs~65jD-1_q#bK~*`m_PShnnOvbX`^AD*w#3*u zd(G|ofjEI>;V>cKl~MOOKD=#6rN-RWgIiB$Hvs!f>4s!baKsr_0R0<%#Q>z=Bzu-Y z`3JRonuNK(6I=)CZ`5kB^~k(#NciL$PnQcW3XmrlI2@K+y+ITpAv)n`B0=e0M!j#2 z?~pZu@ITSVDr>QAs8*;z76`*_S}awFO64IFsKj1tyD9U{rVJ+2*Ai~vX0nf}JvFF) zwJfC8yxN<J6{(u){aR1dx|Ro-6)y~dL8c@!hOkNr%&as5d8xIgjhmFtyTRU^f+ z!b}7u&8peSm`WCiOB2721*@qeBU!cvX+%{Ij)$F#aSRzTk~_XM1_$eKj}Yn-GH6 z6b+9~QXOu{HXA#Lm6Pg{#GW%heTqu`y-u)_e(psnO`fba=NuNb63V?s!D#ku5~}O) zqzxW#0%px1z2P{I;)otaOCKXvabiBB+90dUHVB`s)qvVPQIaJ^tUZazpTz=Z0ET-Y z&2ap{V|%;libs%Db8{|%n&4ysu~OBlae|OGP9cd?`By_6|6|O=2x4+&rNz8<}GHvcOSw4AVdI7oV5NF zXyd*nuHi3MCG_*-9}sTvW0w*C$+^JPfYE>;7JR-kOZ2OK{or#h-(8gE zaX;?WAEXszYelPW-r|)3`tJpH7+(-z>lH+9tL~l|x@LKM>+YI$60uNQ`F0MxN;~{2 zel$Fn$JTk6lbPC2b6=aPmhT#pGu_a6<@b3?S^t3Q%aiePeI?Y)_!nyjbCWb=^q%Q`9t6H#LJ!eZd3WPRM&Z~Dbfv6 z`)hS0wf24Hzz)(RXDiA14tptdOhvNa@c}DH-G5nAwT2A6u~w3D7{A_v>JxJ;w>uXj zLILH`8&WD|l-Vq(F(|Ve3_h#JlfWY}fx?IwPqM+Qsz)*_&rVK!wwm=iA9~)+vBYCp z@s3Vk{EV?((;AtfhD`W)!-u?a@HO8J1H@jgXwQLv`X_+iBA9d z)qV@{Vaz7`4XBX}?)VCQkX$v8(tkZxZ^GkhZ^LmAldVO_wLm5{j)2_~XFY75Hb>|0 z{P^Fe+yx0~ZNToZDaPab(yBg*9K%uHMuZ43_v+NgCz{~2nw9CVu)i~i%m3e``M*nc zFhU+tB>Y<3O?}i6)YT?2<)^UZtwOGyW^>Pvx8Ge3XN`KzCFDl`8|YbdP)v42JkIaI z0&{7xb3z$T$OGJo!5{+sH7>mx4*YdiZ2aN>8{fZFCwW{*t{VLx&fgu4PY1G-M`H;$ zOww2ytmfoGzv};2NY_&-nSf^ouQG(PMb}y_r5~dRRC0v;&0etL{tKD>)~hJ1ydPcD zIPJ3J833H9fV-1`B=xm+?=~KYDfIuZK`qE3R!g)SZ6g{ZFeyX&`m}=ZDfqnZVjXve zCBejS{zlmLU;5zxbKYY}{;8~HldEl>v}$DrGQU4wl-Uh5wFL+-m9?q82ibvqc8E&Wj@0I?)N@p^EXc3i| zCqd8aT>Qd#wip4B!rEo{4CZQyuN7Pln|xDWhPwaT!oxt)z;x($#^B$T?oH(Jrm=rK zTy1MX{>r`)d`!&$J&>DUtm5y|Jwa1zbhU7D(fBf>$sU{Wh~C=pOIclKch3en80oiCT2RCj$L@Q>A-lV{}%KG((3y!f$#}b1BX|Z0e6@m zLgR@4%#DHrib1;}zscd3mOyKrDZbxE2IbU(a1k{o^sx%+;)wv&{x!~Vt@mM5;#*VFR#}Kl8bJ_)H0XRM{ za!GyV`|k3>N2=56ochE0P~s7tsF2lc3|ogt$W-PrYn4%5i`e(_7=eJ#_zRC*1{db> z;^@ykWI*vHJUXe;Jresg^9xw2rK>Tdf6g2d{wZRxjIM0aTL!CE*#6WCIrCk0geT?* z{(awwmUEpRC44-4UWhNaraxG&x^9o^hrHbH>f<)~W;0&hn_YWLBw+YZo^gKWbGVRa z^WDJW@!D$AZWRmH%NxX9D+CC>22B=7AG^xS{bBMLFaZ=0T|+0`Ls3_g1YlrbVdX3S z$dz?u|JRqt7{?uY*<^se3$j*)wPf1$6tK|>^LlIgd#y^&-jdpl0kkjh)l}-v66$dA z(o3Ogp4a(e>+K#Z-RHX!ikx@noJvO!-!>M9hs0`~KPJj1{{x<)ibCOc%XG zmXh=S1+I6bPX=GwYUx=L56Jgbpx{&d(2v{ANWkR1a!a|BHw3B(!<(R=U-nNlRMtF6 zd?!Bg`8;J`TY`NBjcVlOk@EXFZlF#!qiL8!3;ve+yqyt&+EL2K&W7Wby|zJ@vbpyv zWB>+TzHXjm=rshHM+?S!+qo5_6n4dtB^8&x>lc6rA0UaOC_@! zV24@fO_s`Pk`rZ>EOuobs`-+Iw^47r@VXcOairWU`GaB#-f*f>rr>d)noY~()!WMz zl5{o;qw8nhIvY7y!qB3mYVo8$K2M}0P1jGsmN^L+0t3!oUzM0)7Q zkC)ua@a3~U(6U=Aq$A-CON{R=p7$}HgcePP#}}0|aruQ1vmJ~5i|EI5#gT_XlhbJ_ zwQ+=UT~3x4Ml9Me^n`^I=>Lc+E^-L7T1`j1Mz2ic!IZ3MB7Q^Ikz`Jqavi#tFCT;` z_JmcaT61QSS#0EneqMkrw280K+8@?*UVP}tTfHdX1tr^k>7on5&@&9q&&QrcxH`CG zh$3R0kmC52zHf0-7B2iGuJ?Kgr&>PYhej-58eFbiN*6`M(E+B>zu2pPW66;Y`RVQOj+fF{_`Fm!v3MN)oR6PC;6`FC=_m4P?#N zZYr-YhF17V{b?laGnaXtKFB9fFZ{Je-VsoCAg_U;SB&lO>*sk(8FxFM{#9Q-rreOe z7juKW7au?L+{W1x^CKhj@om@qRc};!f}dN(Wf6av4A|eZOZcPBNhy&ushilVf&=6LEJBY5hb2YGIt z{lf2J1V_F_5jIZx2TCMLLRS>XCxhhX|X@A zS!4%TC4I59x_4WpwK{G!+ksyC_Br_@gFWBNYK z*l2+gW!+S}fH41Tx~YNt>F_*+_HSfEZz?w^`!p@oJWg%4*$4|=0zri0rE}I)7?LT= zn=5N3yL-orY{=(Zo_(aA^OCo~#j1Tbc0`FEZzqdX3q7;FAF8{i^t+Iw=V)Z_!(Zl` zL(ln*yeadODLqXGvjLpxMboGvOg<}~7&iCb@c#C!nZH0!7t#smBhE;XoJxf`h`&O# zn)U*%=3eqisb!0x;n8643sYbccQbMPzk;B$ou1p@O1(bs=IXZGYED!g8oBzwGX%n4 ztHpoFXtbV6B>n(zNhmZ0v51Ia7liLhMku%;Q6SzBI+Ra4?laBe^l(Q;NR@N+`mp4Y z_LDc&X01A1s6s^OX1hNr_+YM7Qk4#LsKJ;qIIk{Ci0PV6BxsmM2M>F(TeuAxp43zT zk(UeFhQFav6?_VEvuzVK8`CB8l3-x^ES2;jM?l4^k+1%)q`KYYIbc1F+e%<0wJ~LA z;cYOhtr2B-0PLkwTa0Cmg@t6LSa@QJ16U6i@jjlq{FW30*I`W`(HF zu7v0j#vzv8*(v{Zbpw43`B*-4ai;hIK5_aMnPBM|Nyf}KgCkuCL%-EIIQ+HmfIptf zCv%lnKMmx~FqleN>X}aiwiWf>E3be^434EDZjUF*`EeOC)|gjf^@y0vxyp4L2O?Gr zKGP3&x}Q!La6Z>K<9?I1nAvnXm~D>2g@Zpkhna+S*&|9O4GOf2%a_Db?ztVDD6-c2 z;yRbm4jnQMXPaEFQht%OxG$f*F@7J~vs@NlBpMN)NWp4}QNfqY>}uYMu)i!oAqAMDAbb(? zNo0^zH!> zt--=1_HG9@f2PbGUhDdh=h89u7fV6J1iDNFmxU}5pK}6}fA!-_70u*k>DcrZQalX< zSqjseIjE=tCmOdy|Q4 z-4FHOF|p-w-Obp|leiG6hn>vi>WB(>gB^bC(1Y9^cXPxq3zbqEOMhT0%C)d{eG{y^ zXL@@@-4ltMD=CQLMrkkbl22Q%vF}|2HEDg=3(qpjVwOyV)4TYwW_Ck$BBq{wdI%N z)1>s6OTvp^?in`wT!(m`g9g$&13ff%x$bO^KR)D2YKzDISgFcPU{p=$jUnDto3$1W z$l$@$Tc|Ztw1KyGi!+vtA8%cVN1$Gkb3C}x6nFd_cOpBP?-N)kL$p7GKhZydU3}{I zEn@2;NzI9xsl~+tJAe356i6)S5V7hBLR+~zEWAeW#iuSq@FB?|N+$pbdI=`@=(Z)9 zjy*3(eKWc2oo*{zW1oH72xg=5hbPmCPVtw3I9n%Hm$xfz+=e^hUx76N^V^ES?E7fePSwd<8 zD{%6xyVZsAoS8v=`ga5iH7=oRLHKnlITM9$VOI(E<>;m3dzjGtD`<}1vl+oxszal~ z6-$6=Q`96IURU>bt+9k;N(|9TOPJx&LI3)jjliOw}`q=VZ9~p_!-kPOC4? zrZ6c{5*Xa@vbVeFD=GpM{#*yyNUHVNlU4Xkq!kM)*IG~B!P#6ytOO9w6}clP-F;Xx zk7=;h*a=~sH7V>oNiPMbES0B@Z))ZwgE|eD<&Uro81(EX4ABO1LGfXED2-@I`nxU|ajDlgRPX>Qlf-Yza9&K0X_MTx(r0qoaK^LS_`9M_3eg zP3=#MCvLf_W=t2zeIjoaiI?ZAQ`f&SWB16tema%#m1Zw#v&;OIBU+@#W^o|XXtn0O zMBg7BJgz~^!xxK^CSZc1YG7mf2{>cZC==W*neMux`OC8+(Q#>3w%93DXvE<#2k- z^cGH``1l)(5omMStj?pe_0_2SkpwSHz44&;I%NUrA7R)~avb2|dG6k7H(N$c_WSpu zt7!})ri1;7nP%o6Re>!ikG#^N67ycRSM!oEwTuj8XB_3)MyZqghjO5C9D0>2;zr5V z(No^1FB(Tq*4$RGPd7_&;&4#tDY6#TRzPn~YZTNsTq0{~@z-$HO6s{l%pYArn>E|7 zdHbw8%@)Q&&;@3<5H`q1e(u+cF0*J$+Z@c@723Ky^-BA_pY^SJBJk?66w7yL>U>0V z+_9+bX9SA-sU_SI_MdBvgVT2qC`K~`Ms485>6w2)V88G`qE(sBLKn>B+5I+qhgR&p zOS1AL^J6W6ncSXPoDN(S!{GvEQSTVulTH;yPZX(?7%L93Rljy@uo=&59Fn*)9?rLO zC(`Qb+`DKuIv}I|8YtgKF7lX(V6z=|QzPQtC;$OmNyNDWsSztW^Kr2jA3pQXyZU+D z?oCjdWHkmHhT>t2l6swG@yMo9G_%}yBlhoOnXJ0e-;&WApoL{J8?H7w&e*Y8jZ!o| zz&dSi=&U_sf_trobU;vUHWEj6xL@ou@u(;4{q#5m=VCt2$zR@=6YZz7(vg-bNPMETA}k zPdxO0Zc)w)A=TV{fFRHzYp5Ikyt`k}%pZD3(b`3keK>1pTH7ms{Yz8%_%p%yoVRen zr|{e9(JD1Ef#Tk4IIXC{4rh&Y$J|Uo*E6?(UIMDtgNFO3DuIxf}))b$+%KT!PTRa!@d(LWefXSlHEI-i`lSA5)_ZIftQJ0pDa2NT9bWSZ{ znpZB?Pj5K79nQBFkOHBprFCd0w;YiVgQB$aX=voeQkX0}VspTL9#?67U-_HbZ9ER& zuNP`fY<4?N8;?r`R<}NCZ}PjTd2h%VZx(*x6&{451_X7&&ZarEW${JgHXJR@=p1#^ zeA3_(-F*vM@wh_A>Yaj}g>#4;LObGzbxHKS6>Y4tUNsLkshK_|X;0NnVRAu^=Mq=* z#Bi~#pzh-JTO~1YP0d_PIQyn#meryRA)i!STjYa5%oh@^SjC71=wWGzi0uX%DVZ0f@ z-D=5`ZSj7L#*Id7BeST!&vMZxwO+nzL0((_P|9is7;l^bSm`#e0G`!w@duM=?|hCP z2N;Obw^N06Kz2*}uGzBqGv2LZ@azOlE2WBu%5&gIhn3CHYsp^#?G}FQH&vuUeSPyF z!HZp$)8n~(sdvixQrt)4YE!hi5)h}cbsJLNJGPLnx-1e$D z9s0WrQTlbTTEwLSwI((m%>cT;o(bgzw;QeCYS!tO(_ z9UXzD*4=v~^u=Iuu? zB5pXnW0!rISaEM|uBDbas=I-p=(KQdC`&E7dw^KP?~zuYERym(>4$W)!SQvo2r3*C za8;^=T_kiBRBbZjlrGWPC*Bs6>ASqKS}VXz<2I8&a{Pj&1ePFgyr$by3t|OS7gg0q zNvlS$A+gh@%fxe>tZ81=cs^jKOnOc72sd2i z^G`?E>+eTq8wI)41VGCalTonZ02EVqC9|e?N zZXM56Y+S3QVns*KeT8FU@+MvMUfSQyDKj2W9G)}?h8ripTicAHSzi{=uGmaUdQ-O- zUF+oRM5Ad==wr!>$g?0}0;zmR{}q;m#@q_3PP+$wRI? zlIB;5KaL5E?-+g|$y1C`KaO#_=#{+X2Fk!Tlo$+*khS0Xcui6xa;SS6ZCR(#h&F5* z^K4nCPwmGar$oVLuGvy4em)P9#3g#y-r|;>V%^E}-kBXZ<@?E~``*+->nJP9V3x~b zLceKh8oUA{xK4bL0VB6!7;PBA8Q)70d@%ut^kE6q?z87v%Tp&aMHQ%!1glI-KTh|_ zSg8YByOWd7KZBHa{2rE{U@a8BN3;yYNCHz0`H8!)u9okSRdV{5)G$&u{rg#a^t*<> z{Mvs5vm=AcO zt*`^Zn5H!XmsUs+kg|if#)oM0%sl1Da}#=2!;2}wV^4v$rYXk)+HtKo8&nl>%I)_faj z`HBDgh-h8&_feooyO0NM7jmh%1~U$7rP*`y*8Oh|HG%1et#iaw0E<0&oUVSLe2A~b zu*0Y^AM$k8K4MFMjDP}SQ7xItYkP!d_i(1LKg*y|=b#%Fu&(OibES92I*JZqvt51Q z?LQ8xq*hqeJBz;(-o7Pr6n^B?EFrQL2pq~3i6Ehqh?f@QGw(##~YaEWTx}r_wppJ35@FfI`d$2cPttOCt}xj!J$a# zR-C!)M?b;-YBP#T(7+dbvef0)!4VXPyyonlb@QVJrgyn(gd20 zsM_0}c89eW7pY)gj;cg+X;%>{tA=U3z9(`#ObY0`>2vO=vz#omt45s~rKkQ?*=yhyZ(EwUl zNz8$_B*<=UpIuYNvc=i5oQP-%I)EvVc5Qn|{kXBr$rG#CEZi4&Xf^uEcEZWoJSC%avcI@m9=zvQofSZoU-2isY3`ZuW}$&C8dSvEAS zLX0j4lj()eY-32j4$10*@Gqv$YVjiWF0Ma#3)W!kr97pf^;~=2Uq)U$Jr?596=$AZ zsP#H8e)}%SgDMYl4d`8-Q0>#~ZDF0Yo0rL^!{(P=*Tj#4ZlRq!tOR`|gYyc{JUbXa zp+6YEp^urMmQ58V=7G0VwUp(tM)@kB4A}^5UxZDm54fAm<$Ty1G#&qi!ny~RFa``Y zvpgEH`ZuKg`Ram)KO`6LMS^cDU?3KxS`p2Jce{~9~_ySdQ>7`B$rvAo9i{2&M(=|h>Xeo z=Ona)7wV{+zMnCQ`h2@^1AIc@#%Zl6q~Z!|)vZXl=-Z%0b6rdC zF}0LVem*#VtILe#vQnFUzT&d&b%l^!!69b>YEZ6BtRpO6sh@x*!zs~IKH>!+iy>EOWT;z8-VN1M zw{cdtr|ycx)cMwt_~llY$n%&=TTs&bZ`&<2R6+Pyh!)T134-1$q+M21J2oX5`&_ij zRCz1BP;Rc%bJvxb34Z%52L*s?Y`u0@;1RC@0xBW%s+8K}egND%UTn9ie73`8+>HUq z#b6bkF&SB@<2=jt^{-dQZvKT$^#WzNi(H-r4;h&aQ(*n;nl`n470f0uCYHr#q}~&u zJ-ut4uLezCFxUF&GV_OP-eAJ_-=b`BhCu7*oP6J8d)OZSbEX|KS()^F=_|*d~?3 zlKSIY%0}Qqz489Y0_9i6Q)QN?^^Jp(m&9n>?J-)n?k*X(&bp`4lBEKgS}r4uN%M-D ztR$L*cR=g2?|9h)GI#lkZKrHG0@$-oaXzXMRK8a)^I*u;S@u)XAON0bw=e~JV?7p= zeB!Lj={Swbm6XGD^@zHp$qY-+b&ApT> zvo^)MEq$0{3-Y`n$!T2uZmS!KNeQQGB&%qiDVHgbzSwYTv2vM6b7!l452{zYi#|?Q ze&m2$bdU?0^J~|gapG}BWDD&b1PntM9uQ}30>A-E4HWNIYil-#Vp4I(yZv>c6_T58 z>E_4{VEor4@3QM6IlJh~F2iB7Dz)G+wEFw}R|xmg?LxH|>uP-nB3g$4H$Xd>zp4B8&YlUqrXkSjxb(bY7HjP6?!qH5u)sQ{xcwG{VgPT zIgG>)=d1G^b#mP-aN<9X84UgoMF?9&NO=+QgK?!lymVQwaFp9K;H-~KhJvpz?A8t9 z^kx>1!CRRahAUm150|Pmrd+*YC`D*VF+6)Yo1oND!lLv*;UuMg_~9)fXpVfm(yX>} zBMzMTtX#Tn?O4#04i}nhSwS(rW&ru=o?Fny7ma_&8qLh%&(es8+PX@<- zJ<5GeG53Da^lm)k(rompogAFx6cGh>-amhz@~38$OQ%@pKJ$cmmC&N#-C#GGMxSn3 zb9->$^TtUj%?Tf$8=Lo{XT^|t*8MTqyJ zQ5AXG##}zBR6!K}-5n!eom*aB60-fEdR0a`+|kwd&kU?~G+l=e1>JNuDPIDpX5+x& z9(A_YV=%rJ8}GmeEWpa)g-ERy`2Yl%jeQGz$uA3}Z+(!2+pR89pBW23;$%#IZWKH^ z31dOuUnnP@s~&T9Pgp;t-WjUTV23tpze%|l(N2yZ&}wrC zoJE`3U%$1Owz+hFAtB{=4X8Q~SarcVKNG+P?tXT{>{+{_%J_5op-2pgp{EC4{4V+u zd`x#=@amtzLmoxI`%?PWo)R$3?+-0wO6ha@9>16(ZH<*b^^u`aqc1omRyD--ZJAy^ zm<+0P%Ru)PV(VvAZY16lwTjryWpvc*Ykr0%z$r`-P_SR2G6s7HSxrZZ@XA}#2EKBi z&v4Gxyfqp55mk$u+#!zA51NyVR!Jhv?;8+8%))y?P7(j^1*a_ za0KCBRFi0k4$t5I64Lu6-Du_7_~ZN!T~6s*Sbs$UA*8l0UZ1oY=lja(b!9h@_V{Fg zX~J*WfDprBJ@G^u7<*jU{I=`c2NGinDQq#Pg{v~jS_m7!GQ4}kQF5yAh5xBmgO_Rm zUVhRlKku1bP4+-lIA#L<-2f3*9^Aj{AvTxiTCwA3a z_x9H21Vq6T?wRjJijC(->j-S8CFf}Ah0Pu#2Z@?iK)+uis`isfRe#R-#Z+N}<?m z^;WgPvZ4#eUq7irN$#gh?s(XI-%{_A`pmWWGx9Ox-7`yltxUGkjqbQXJG0M`n{B*K z3QlL;CuC|a33O}4G>j%NZ!kFPd)`Rh`$m1*dwJ% zA){0O6YP#HsnYz+eItzr{t!v4{(w`f3D}&sR#hYm?9_BJ1b;!z?zg_zbZ&ONm)ST( zr;}8vBa2Nf>*jo62bL@4l;$(wuo;n5@T5~bx{AijxK9d&<-p%0T<5qL4vrxgDppg# z4oj;u zGTRL~s999uUEcCOGClR@&q`YR_j)fY1hy|*2BQzEQy)vfO2Z*u`I8Ik^}%!b^+}k1 zzJkDm$%MSA5=l%Z0sw|lx8(gyg=S&|K12S~%=56z+n^*`S4RY&W+Al{fiR`EuK_%6 zmIcG(LL%iRBYk!t!tI8)kYO@MR}sXv_4Ap(e(`u|baLWm07avF+Dr3rWz75$kfy zdy}sUg5&zuSMNbOlk+VQdI-NlcpRzVRZP)4q%B-H-k@x{C%`r6px`0kD=_Koch)pkDWbNr>I+FK`+pu@To++ z+q`yJ8P+u}QKR}z#w#4)?@mbd5fJ_lb8i{dX18{Y7K#=x1&ULkP$*j5rNxRBcPqu+ zofIo=@#0V%f&@r$3vR`opuvhua0vuXx}UwjF~0M@Xa7Eba*vU$jJ57-tz7pdbIy2_ z2s`>0xs9XBS%)f3{jRoLVf{B;7nj zBr9e0sVS=VifGCX&I)|UBkYRQoMDGIr6+g3BLkLshosZPj1tihl8X3gn?-8Lnr5d6 z2Uf@jYh7gX?1)0H7CHl1u+l{K6$t2fLyMu=%3zpf+x_u0M@e+wmm#`pv4G7NoZ%&@ zmFbiQb&GZ(av$O1i85~TjLo#pKpDs`@SlE7*L%VYI}oaMJYD=NWtG^}*Sp>2OLh8b zBg6coiQtF($3kbm82(IF?uJ#L>J=D!oM9EDbmG5QgEZS?CB1GhTjK)s;(MY zaqX@{kJXM%8Jblo-vn}8JXkmSDUp~(UOH9t6OCk|GS(5B8__TGl|g5uW^Ti`FqNMp zuKxglrM2I7pjP#mK&Aed@&*c`T|gy&+V(FO<}3FI$a4&Sto4L5YD-nekOHx^2;Zq9 zEoF7Evi0M8D{2J?MCBv3aZTn{W z=knYRe#?|kXsDPmq9PBBzMjUDRHr17EV6mwl4Ebm(1MfoqLqfP3`@b};n42LxDvaw zOJ}w5nDVl>@tQmj&MxDD&D*-f%OaQ{>AGtkfa}@^P*1P7BQM9x#&C*-=V_Li3ys;Qk1N1_ zHLUF0huK}iB$7J{zx=+lq#wE=UqHIvD8>ERM=$Iih240o}Go$BA$VY=p%#~9)K!YN|}N#T0j-tr;vOW z~O#N4$RY9gB08P`Q=| z1{A>joClX)(q0^e6#PAD*x6HMx=d8clnLwkPMJ7q^@Lyb{GD&eS84(4(2Vhn`&E@L zitVM`-4fyBWudqckcywSKUnJ92tz8yi?-an3zaga6sfH&i%36w1)TVC5>Vm zF#2U+;0@zWEFY4V}CRyK`upi<7YN0b+@cN72FQ2l@z3=x8|`w6j~ewH=`=p#XXH|aSJK)LRI7rF_D|1^Rsbz)v2L!b zka_cFhBvMuxU*Zmm zd7p`_79Tc~g=xpOt1tb>YIfm&41H(luW7})|BPb_=EZcvf3jI(fw#V1U)p3t0LCn_ zn#}6*rE`H3q^2+Y^!Nw^-_dSWW3>nF&P5XfTRKV7c*?FeJdY3K&C>Ei&!1FEZ;)AS zF4XNO#Ur!wVueKvh@6`f*u=@7k7i4Z0i*Sj#v0Cdr+lY}{Zrs%2B)~uT_9&E<-5)K zf1*XJztQ5LnHkLFUpD2De$+zbeKgtszSMRils`oEr+NOT)JxiS;DFR4{j9~A7 zu&`fua5yYgN0lKHinf?yU9t{Z%%_YzZq)#4nQQ-UL;7Iibxd+IyP=?eK&fbqFCc}_ z{?)l)zzKhXmbOO5W!gEi#HM~kqrHjrd8Ke!Zr>n~#@{(j!omeqNf-XX-l_+KF!%qn zPDP9Zpx29$KRYBV#9s*$en&~?e@gFWK5OwQukwy3NW^$a^6!a+Fz#3&x&FbaBbYsQ zt<=Hp|Lzrc;7FgXov}D2hXnx8Zt~rN_Mk0M?VT_GNxsIOp`lz7+a1Z?8VclJGWH_< zAMgefiudj2i1z7vOCrN|3y_}p>aSMiV%_sy zRJzZZA zpkTlZYz_Zrj66f97IfasVj!BDC}7>0J4wV~y)~$@{&?2M0m=NNJJ>6>-FmJmE~EUf z?Nf|+{rbk4Bw$4A4}x_r(A50g96UL zOb&;Ci&Y!-%lfi${K@$TiT8iW2K;La{>F67G99R9!>qswnJNxg@$}`(%>R7!zm0!_ zGHD^hzxVuqy@>0f>RK1ZL27=K|2F9VdO;OO#z_+8*_i&@Yzcp-W1QLkG5p_1E!U{1 zl-mqv;6KOmf158vF+%zm4*0K(0ty4hID_}z`v051LyVD6j;@+1h|&Pq(2Rc0I~}DE zMLvRTcpFK`W$br%&5OHM^eX}I-&RiY{O`(-`xDCl8zBvY9yKa7F1_d9?3n-c^0fnH zP_huI*iZjPq5V&48fxcJ{uDJTaG3eaf7@&fc~pQlwCO$pctEnM?K2%mCjIvXGUVcd zQGpz(x2@+=kp>Po8`pok>jccdcRiH)M)`pi{tZot|0VunQ2^YOpgd_yS>8d)48_uKS9$*N@lxm=tH@ z`4wEMkN~A9aLKXDX15;hxwFHD*q?3Ju9c28m)bR0r#cvZAFdeDffAaq8@deAMk3!l zdu=`JI&j;q5NEp#G)a1?W%xdUU!zfc!%t-z_CO?vB1lUj18%uqswH(iD3UM~N^Mjy^^c9$Nx5jA$TsaJn`%rv^#Iz_Vtje;N(TK$5tgg363KdCB2oLMzg z-iiwQoUqeM`Kcvn@LKj9lP#UxUz$YPPDY!(vZ=?{&UfV+Jhe7NAQo|x!~*2YOiTHZ zZD)^E)0>joc45)$?N8&n*3)AtaeL(g=vn}L*(*!}GZpu0uQUk^rcG{R$FJ!DKv-5= zF4Qav&X*7r89UV)KvXK7%^}(Sh4~Q{jtL^RNPWKzoXs0_^hDHqkLF@;TzGCkLfJSh zYyK7a3&vUHKy<*+Ro}|h@w-otz3i4ho5nm;kAb&cnyqF3>Q8t}C}_53kfrhbwu8Bg z_hGo+R)(pN+Z={CVZ-;o z^$Oxvitm~raZz`aE+eMruMb6BqY*w%vfJDy1r{q~`Tq2}xyJJ==P5DUM|9+pi7)+B zIqf$#v*pAPt7~r!tL;fEOxwdK=Cm|H-1cJY_?mgpRowH{PNuy zG5H1UnKMADKfL=SztwSmQPkxyLBdi0)0AEGA5NmqpskJmhZExyZ2!ACxmGbjU>Ywn zGc3PVW~sXO?1q-L(GL%F%wW`TUzKAT%tlByK%dJ@Jb6V365sW#G;LQxeo+Ay8W-bj zj>uan|CwsIL)1Y5W>&|3t55FGx7aYg{|MJ>5F{Y01>Ac@{Z#{LcYFJxT9K~oLPn&0 z?sP@)PR4@*49p8MoQUFXBhDWSSNn6`q&!^{#MFQ7{f3Prd-po`gK_OPF9-F-s`XF~ zT3Y(nl@`S$!Tr67VbDiY!kUd$L309Z1vA}fr z`5T9uw~g1OxVlQSm;J(IPr03GxF;uAzV;&5?%B53ThXH{o(q zKxzfgdH^$|a-~sj89TaQOtMnt#@&kW)avJ{GoYOzA^Q|Fz-YTdqB@cws$4WC0kZjm zdF&3QzoT7?dNkb9w(2zGl?4N!EiZdx&JHTfAyzag*em!C37X7+tmZnxG%!=3B5ZNd zL)P7e&*+^>X3bBmi#v9Gr}E&GR>B+hu(8K_xhqJ62YHb$hnqc4e(Mj|LQ8H=C*KLC zEA33)=Li;2N#6}`w_MTZwUoPOqZB~uCKFIXLZ&b0755tsSW1v>**iLey;O!Xuai%x z`VTDv-z4cZkGe--S!TtnK3WL^ebtPj5l67j3J&FJN2z*}<9edXdI1o|U7lh|4 z>)roJ&J-$HU+m?m$(xVToofF%c5bINURJkQ;#mc;zaUYO;upKWzcmx!0T~q05Y?JC z*l177F z`Za_Jpba+$>OT^bw7h2zj@+M4X-C7@JLaRfi!%%|$b5RdS8S52)@*+W4<8jb+VV^i zd262`8jxPJ=9ReObTkIKncw!clEktaNlUTU<1E%yS5Qk+W>w44yDm8Ew|^z-(&#jk%yljHIFIE+v#QDkY<;RZwQV3(t zV+EB0NYk5%WCtPJtG0r3odT*P79Dr6750hB$u?!j@lk7las6dkwPwDnb5ZM8&kwpO zHQrX;&B?Z-W9^dyrY{GE7e4EgKr`fEr{6?<)+Tk{Bjq)9zEoSk?}wjJSiI3dA}0s& zpN}>9z|m4G?6gtRJ?wpn-#Xs-#{OUpGO2LhC9}?AC0>5DfxFS3kA;A>VP@y`Y8idL zElE}Ln{^v8Q@@xtf|0CfNnC2TWgWMU7Q%ldXO?(?um(M;ygYUv1SgIjE9}lzES95X zM%(Lfs^gMEWV0s)RxtZ{EDdTMB`lt%itjpT7s)CiQWgcZx*g6gTiG9kobN_h+QDwL z9P-z|TcWJobUc90Cw>;s5?M_IA&Fq>#nG1kM-ueiN?D^55E1L&kntN z6=g_i$=r17%0GS%KJ=1-@6Lj6Vo(}Jd04jTjZU(ZQ508l;tLx-T0${^W`divI>y}I zkmQX&j!zA<1r)1o)WEf?DfcdXb=MFeLh|c(xo5UmQ1A^`k#b^}BIoKjGypS2Xz%?QCX68=yLE||&cTy&B#6-S-UWFKbrgZqed?2-> zLegcaIdTNaUFsim6=Berc)gc%e1}yBD-wwU6c{bBJ{!o%QUZm}eqPC`{@zx1wfb$k zN>1Yanf#kfq*YJ zVrcfS!WW98O_40Gj?xR#Ax~%kK_3dYa%O6)A?pnlwNbaRu_OB$wYC%bTETpWOFn7+ z3PedPiUM?xTc3-WpQvByW%IX6%mg8S(Y6q=`8;B1OLV*OZ4Y!C>9_m$}sXL!mlXrNhvGi>oaxdM zuCPz~bz44tV4!=ZJN*7J!n!9;`(jyBoipco6;uCg&gLk)UBcPZ~ewE%Y7ERH(E0f+&4!&OB;Va ztJ(^a8a1u#dqxk@`yoADz(u$>A8n3kHy;oc?Qj~RJyQO0c6SoyqpXSGXVcLYu+E;8 z%dHT*oFcy$>p$yxxAb5MF)g#D6BzCET|?wFXlF(QC{oXUxV(}#i>}&AAhpqdeUdjQ zwJ^YJoWmgcAOK3zIV9~k4d2=O~6=6lbmF#_@3pm_( zWrCGe4(R&+dVHl@E9a2kx^q3M!L1yb#ngSnN)4DmwW53h46QZ6w z9bP>}qEY|JPrCy|wn$iFP_<~PNVOn&tr2z?4NBcBajM}I1#&|RHoF&q$C0(mvDifYOZ9 z!p&YaZVXfvNTb@|P2BRZ+|RdGY0G`{5tH`uH_5E_)sXjr2&+x`ndg^qL{a)nuV}QM z&lXy{0)*J;M|Tk*`}Oa*F@kn9{PxWm(_QdK)0Pt!c{05{q@cuC*blI_{>Q)b#d%dq z@80`HkusA8b{bu;^4tG5+itUb7NQfc%HdP>fDxazycqO;Ady+~-Fnc`stj?FACrjF zLR%!)8FRVKZQtNkB)A${xs9V!rB$SokCn-@0U7+0+E8r?Fau~$b=%udHd{~8^GC93G6SZZASw9bx8~cjd z^^uKK2p>gxeqNA)Q8H`!&NyJRzBF)G)?PEj9Vh2;kQktngD}<1eYSM*B5mXT5|=sBvt(w!>haL|*lI5!MpamP%Y0od9(zhZT6)pzXq`-lo;M`& zrU~p#kwGBlO%D{E83YLuCVs6|@#U}7ldF^9Y4t`pU(OgVf9Y6avqWfrcbp&8H?hiZ zU}`vVOS?Xrbir@1+nkXmffK9;NL;Bu_PdyHc82e_2G-4sN@W~VA&@EpY}aKIk-oK0 zYlx;U@chR5!*9{(>R_LOblTrqz8U;G&fmc3Q zZBJ|{*fU~j*0{A2O?M2GW{2H6tUhYt zsSV9>ycmd>DlPJo6HJzATd`l)GwA|VytAjXk}q;#upvFE#qAcQC7Yg)p>5%(d7>^S zRET)i_eJTDlb0FC_MN1s^xGU-K{R{9Jd6US zYm;o*xq@5s^v@0Y z)ooZKSBGN>j{1^JaOlt0fl9_<_tLXCvuQC7=Z_X-PB`R+sLU{%z2LaDA&!FK((T3` z8ck8}H@pqXnLUgYk?as&Frwr;3yX+5Y$2LFhyeKo(v8Pi(0E+k2g&({)V?0xGPEs* zx@8iC7MZ1fKB;WD$BTk=+OcW`pNAhUPE1KWHN759%QQcsKVUeY+UlOTZDE8;vd$AJ5Z`^&-MD$!FRt z-oI@!!mN?4CZ*(3P=b3n%i3&qXKY_PU@>Frr-)Db$Nt!&!53R@2KsiLfi4oUVx1oD zwWJKmRr(>#E7>Fcd9U)$h|np5$jFfzrqa=Gqb9gM$ezr$=LiR>aqe`Vw+M1$bkpaV zM)OXc{_B|+;3qJJ`??Ypws=$3+{Gn-5|6PQ5tj#Ano*fzbb*3yFDp?JV$B)+cIcIh@Adg`5ZGHS1w!_^rP2Y`V^U~d(= zq(~Z%Qx)jp7n^gc*g4g1M$5GjYDDS`Uz(TRw%Qnts58)^hsdLxKR$;%E3$FcWxl8~ zCbM~brh15&LWo)SxoNt0l|3km)o+gqY}@E7(AOK2OeRmyAYt8OB5tRX+F0dz65c1^ zum;{+%I``~fD@)7Q4M)E(@7i0a zb&6{i47}r@a3I!q8wryef|g!Q&#ltI$X0Mx2yWiBjo3Vf!&X#lf2_&WfmX%`W}Bqk z$~yvAUyG~L=>#`g=uPNj&dyk_`tsrKUw5pLvLBpiZBGjn#<-lq55@Lq8mqshlF_Xl zS1#?8IkXMZfqu65<`$fmlb+~!dkQ1>$M}wen`zvN*Y_?C-%zYfh;#MGl;=*-Y4nMt?@AtQ)xTgI$ zUm3j`6F=5YbtT%irfM6^QNwF*+uNETwb4eD^IFMm;AY}E^;mjGcaj!;uHVn;sE?vh zHogwKE)#nNhUD89#dv?m1$Z6pw-_W`OEpAf-H&CO?f8KN*Obi%g@5)>G=uQ;LRTxoimqMH5 zV7$>;`(#6VY?@#r$0LiVU2^IGF!xY02rorFooRUUhF6@EL=}w2AyYnFrW1PGP?sg` zwJSPt;2!o-RbMI@#UU#!XMo0Qga%tb1hw3<+gDoF0derrHZ>Dex#CYv(CLLKY{7e$ z@Pp-B)8{qS(eQx`rP-#2uxMTbx#0xzykJ!41}@rzx%2`uH{kdDk8C@( zOl!ZePF#~4!3D8!uDB@f-tx}35T}>0Mf|v0*HJDNZO>`Dn)3O6@@6DYKX%(-npWF_ zCw<=rVrG_eIW`0O;V52cn#c^P=enr0-x>HBUbrZA)+{-@g6n01hme!FpZ0?WJ?ffU z8H4`y(?||v)Cu=-N6SaYNS7h1&@y}m{KSJwE@Yctr&qSu{F_BljDLCP?Cy*)cFw!E z^f96l_fIy^%nq~2P6k4zo)18u!=Pzh_xR@pzZ>YT)}I4xHy9j*4z;(p?tZ<53Wdv< zgylZ;1fVOJ5b^rFdu~G1PR;i=%M$>pI;u1D#XviBmTn$(2MZFJ7?nS-!{&blo zjURV?w^24V=q{5N5UdI{$6V{#je5^XouOqOeEX&*#so*==J14E;idguciF&GOTVJ3p1wbVoCnB9jUAAt;;r+ z!q#f|ZOUTUtlXDI*!@Rip81!D?2o5w?|w;Uew#b9tt>Q`!!o4fc|4Ktl!JYF{ar8F z1*B7Edf-U{a%QD;5Wf7=89g~`@kYgNT&8B2OCMDsuG=s-&BI*TDfWBKNx*HJVvY$P zzIk2l9-vn-Y5CIWkC2njGgh$xGq>}ab1eX zC-24M5NmYOOzi@911ngh18k6PF5vpfgcbE#P%>?JRTS7p+GEIgW_zIg4W2yZEXcoE zoXM%=j?bWIUD~6ME$0<>uWu@=M=v!{yLi;35WEPmwu|s|yywjnW3iNCE=V4r&;{qp z^&}D&aptdJUOditHcm6`M+IxIds8a?+-ya*xB!r~R|FQ{Z$walmM{JHUc=k=svrh*ESMrfwou_S=Si3`LTn4`@_c4dyCutaNguxK z^kTunL8=n$&B?ZOH7m7?h^a2|5&e==7*_7LkSg%_juRwqutxUaSWaMUe1SX*HaOI6 zt6QNyJXkEvegOsw&-j^LM*_$A^%5*H&=X0{H~b^Pt=Ms|V?5HTEh6Y{TEji9q)eMfgJqkk@M8CeQ>T}o<(mF9S3{D-6wHnRl{^>x#?Q|*XH2OrqIaH?u6@3`0 z?N89>IYoYX!}0iFvhLxkJSa)lE@LmCjUVD%18f#lm~k5qzTNM}GlcNG=+?(yc%kC` zOR7pIrM?x_nVVgXWQ+M#2FJ7qs%BJ$SD=sjO`}LPb~dxxGm{?UL}e;6HP&<22KK|t z^-7~(7qOB9&QJ5Ae? zt0H!Dj41S$bBJsR6YrxFv7mFIJHu`5Wbua~!11+-qUtby2(i4wx&V@2nvWhTZs)s8 zkaGavb~soMf1Pdl{_{+~VkjGJpBED#tzdzoku!vxgyY?3fniy%?7GX``Pmn$E{7yt zvP}1j;7p@9s263XO3!-mtX_bPT%h|Zzr5_fL)U{b9)YY}wBn681d!H2M4t74aV~O% z#=^T;b@MQ%g1tX>nI1P?#aGE}7o{#&BG+V*z`ERbRiuA7@qx zcRs&guX(&Y)WFAc^y>KDsa#UAIL1s}5;A;ct*K^**7c6k*^XhM>#-$Q+Unk2!>0zK z^c9tYF7wflrbrPA4WVoLzOy!jkAyYdY-&GQdB_$sY!6HawNv#A@T)7PFsyu(DSFM` zt!7E?vY{V9$28Q$O#pr+|2QV9hqGSf#|Re&v8%g#n#FLMtWl>b_aR=+dl6Sn{?vPJ@-r&uTYiyaa%%4J}rWu z=4z2>&r}Fdcsl)k>BIBeoQze#aw1QU+y z6YapJCjb=S&+Hx)9z5Z+64K!vg}i8>m3+&{Z%kBnB{d&Ek_nAQotwbPpRflMV|W>x zx$*a1Uyw;Q#!v-5aawkhp6{U-30AvFvs*l1DthAp|0UCQ`n^)l_l7;dcKCahT}t-5 zYc20#pWZ5|G3iLX{jf)TggqgKXXLtGSX=(_e2sc|MTXJ0X|L*z1c%?e^d4jtl}~b6 z&U-=kbtKH#yAB~W>~!jmjqUNI2*V7_vFiL?!c)PgHd~!~ z%RTSD)&?~(dh(b@O5xNTPVU|s`S9$7r4tQbn_Ck;eB℘(P0i5V@Xl!tu83 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

m>WE!VpZdE3k%~vD}${1Cto*UEjHx<>v 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

  • Cjtk>&WqQBqllO*ZATA^C27s~nooKz% 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

    |TVcwN-OuZX&H9w*P%~ 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 Date: Mon, 9 Sep 2024 16:24:52 +0100 Subject: [PATCH 057/188] Metadata forms 6: attach MF to Orgs, Envs and Datasets (#1495) ### Feature or Bugfix - Feature ### Detail - MF now can be attached to Orgs, Envs and Datasets id user has edit permissions - Everyone, who has read access both to parent MF and entity, can view attached MFs - Attached MF ca be deleted - NO edit yet - cascade delete MF => MF field => Attached MF => Attached MF Fields ### Relates - #1065 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/api/input_types.py | 33 ++ .../modules/metadata_forms/api/mutations.py | 24 ++ .../modules/metadata_forms/api/queries.py | 39 ++- .../modules/metadata_forms/api/resolvers.py | 44 ++- .../modules/metadata_forms/api/types.py | 41 +++ .../metadata_forms/db/metadata_form_models.py | 75 +++-- .../db/metadata_form_repository.py | 159 ++++++++- .../attached_metadata_form_service.py | 80 +++++ .../services/metadata_form_access_service.py | 98 ++++++ .../services/metadata_form_service.py | 118 +++---- .../f87aecc36d39_attached_field_type_enum.py | 182 ++++++++++ frontend/package-lock.json | 1 - .../Environments/views/EnvironmentView.js | 59 ++-- .../components/AttachedFormCard.js | 51 +++ .../components/MetadataFormEnforcement.js | 18 +- .../components/MetadataFormPreview.js | 65 +++- .../Metadata_Forms/components/fields.js | 127 +++++++ .../Metadata_Forms/components/index.js | 4 + .../components/metadataAttachment.js | 317 ++++++++++++++++++ .../components/renderedMetadataForm.js | 224 +++++++++++++ .../services/attachMetadataForm.js | 44 +++ .../services/deleteAttachedMetadataForm.js | 12 + .../services/getAttachedMetadataForm.js | 41 +++ .../modules/Metadata_Forms/services/index.js | 7 +- .../services/listAttachedMetadataForms.js | 33 ++ .../services/listEntityMetadataForms.js | 29 ++ ...adataForms.js => listUserMetadataForms.js} | 6 +- .../Metadata_Forms/views/MetadataFormList.js | 8 +- .../Organizations/views/OrganizationView.js | 69 ++-- .../modules/S3_Datasets/views/DatasetView.js | 20 +- .../modules/metadata_forms/queries.py | 10 +- .../metadata_forms/test_metadata_forms.py | 60 ++-- 32 files changed, 1896 insertions(+), 202 deletions(-) create mode 100644 backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py create mode 100644 backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py create mode 100644 backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py create mode 100644 frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js create mode 100644 frontend/src/modules/Metadata_Forms/components/fields.js create mode 100644 frontend/src/modules/Metadata_Forms/components/metadataAttachment.js create mode 100644 frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/attachMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/deleteAttachedMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/getAttachedMetadataForm.js create mode 100644 frontend/src/modules/Metadata_Forms/services/listAttachedMetadataForms.js create mode 100644 frontend/src/modules/Metadata_Forms/services/listEntityMetadataForms.js rename frontend/src/modules/Metadata_Forms/services/{listMetadataForms.js => listUserMetadataForms.js} (71%) diff --git a/backend/dataall/modules/metadata_forms/api/input_types.py b/backend/dataall/modules/metadata_forms/api/input_types.py index f49ae7d9b..2f73dd3c5 100644 --- a/backend/dataall/modules/metadata_forms/api/input_types.py +++ b/backend/dataall/modules/metadata_forms/api/input_types.py @@ -47,5 +47,38 @@ gql.Argument('page', gql.Integer), gql.Argument('search_input', gql.String), gql.Argument('pageSize', gql.Integer), + gql.Argument('entityType', gql.String), + gql.Argument('entityUri', gql.String), + gql.Argument('hideAttached', gql.Boolean), + ], +) + +AttachedMetadataFormFilter = gql.InputType( + name='AttachedMetadataFormFilter', + arguments=[ + gql.Argument('page', gql.Integer), + gql.Argument('search_input', gql.String), + gql.Argument('pageSize', gql.Integer), + gql.Argument('entityType', gql.String), + gql.Argument('entityUri', gql.String), + gql.Argument('metadataFormUri', gql.String), + ], +) + + +NewAttachedMetadataFormInput = gql.InputType( + name='NewAttachedMetadataFormInput', + arguments=[ + gql.Field(name='entityType', type=gql.NonNullableType(gql.String)), + gql.Field(name='entityUri', type=gql.NonNullableType(gql.String)), + gql.Field(name='fields', type=gql.ArrayType(gql.Ref('NewAttachedMetadataFormFieldInput'))), + ], +) + +NewAttachedMetadataFormFieldInput = gql.InputType( + name='NewAttachedMetadataFormFieldInput', + arguments=[ + gql.Field(name='fieldUri', type=gql.NonNullableType(gql.String)), + gql.Field(name='value', type=gql.String), ], ) diff --git a/backend/dataall/modules/metadata_forms/api/mutations.py b/backend/dataall/modules/metadata_forms/api/mutations.py index 130e0f020..69e7066ff 100644 --- a/backend/dataall/modules/metadata_forms/api/mutations.py +++ b/backend/dataall/modules/metadata_forms/api/mutations.py @@ -5,6 +5,8 @@ create_metadata_form_fields, delete_metadata_form_field, batch_metadata_form_field_update, + create_attached_metadata_form, + delete_attached_metadata_form, ) createMetadataForm = gql.MutationField( @@ -15,6 +17,17 @@ test_scope='MetadataForm', ) +createAttachedMetadataForm = gql.MutationField( + name='createAttachedMetadataForm', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='input', type=gql.NonNullableType(gql.Ref('NewAttachedMetadataFormInput'))), + ], + type=gql.Ref('AttachedMetadataForm'), + resolver=create_attached_metadata_form, + test_scope='MetadataForm', +) + deleteMetadataForm = gql.MutationField( name='deleteMetadataForm', args=[ @@ -25,6 +38,17 @@ test_scope='MetadataForm', ) +deleteAttachedMetadataForm = gql.MutationField( + name='deleteAttachedMetadataForm', + args=[ + gql.Argument(name='attachedFormUri', type=gql.NonNullableType(gql.String)), + ], + type=gql.Boolean, + resolver=delete_attached_metadata_form, + test_scope='MetadataForm', +) + + createMetadataFormFields = gql.MutationField( name='createMetadataFormFields', args=[ diff --git a/backend/dataall/modules/metadata_forms/api/queries.py b/backend/dataall/modules/metadata_forms/api/queries.py index 9801272a3..4458e3860 100644 --- a/backend/dataall/modules/metadata_forms/api/queries.py +++ b/backend/dataall/modules/metadata_forms/api/queries.py @@ -1,11 +1,25 @@ from dataall.base.api import gql -from dataall.modules.metadata_forms.api.resolvers import list_metadata_forms, get_metadata_form +from dataall.modules.metadata_forms.api.resolvers import ( + list_user_metadata_forms, + list_entity_metadata_forms, + get_metadata_form, + get_attached_metadata_form, + list_attached_forms, +) -listMetadataForms = gql.QueryField( - name='listMetadataForms', +listUserMetadataForms = gql.QueryField( + name='listUserMetadataForms', args=[gql.Argument('filter', gql.Ref('MetadataFormFilter'))], type=gql.Ref('MetadataFormSearchResult'), - resolver=list_metadata_forms, + resolver=list_user_metadata_forms, + test_scope='MetadataForm', +) + +listEntityMetadataForms = gql.QueryField( + name='listEntityMetadataForms', + args=[gql.Argument('filter', gql.Ref('MetadataFormFilter'))], + type=gql.Ref('MetadataFormSearchResult'), + resolver=list_entity_metadata_forms, test_scope='MetadataForm', ) @@ -16,3 +30,20 @@ resolver=get_metadata_form, test_scope='MetadataForm', ) + +listAttachedMetadataForms = gql.QueryField( + name='listAttachedMetadataForms', + args=[gql.Argument('filter', gql.Ref('AttachedMetadataFormFilter'))], + type=gql.Ref('AttachedMetadataFormSearchResult'), + resolver=list_attached_forms, + test_scope='MetadataForm', +) + + +getAttachedMetadataForm = gql.QueryField( + name='getAttachedMetadataForm', + args=[gql.Argument('uri', gql.NonNullableType(gql.String))], + type=gql.Ref('AttachedMetadataForm'), + resolver=get_attached_metadata_form, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 3601aff34..390a0938f 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -1,7 +1,13 @@ from dataall.base.api.context import Context from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.modules.catalog.services.glossaries_service import GlossariesService -from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField +from dataall.modules.metadata_forms.db.metadata_form_models import ( + MetadataForm, + MetadataFormField, + AttachedMetadataForm, + AttachedMetadataFormField, +) +from dataall.modules.metadata_forms.services.attached_metadata_form_service import AttachedMetadataFormService from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS from dataall.modules.metadata_forms.services.metadata_form_service import MetadataFormService, MetadataFormAccessService @@ -10,12 +16,24 @@ def create_metadata_form(context: Context, source, input): return MetadataFormService.create_metadata_form(data=input) +def create_attached_metadata_form(context: Context, source, formUri, input): + return AttachedMetadataFormService.create_attached_metadata_form(uri=formUri, data=input) + + def delete_metadata_form(context: Context, source, formUri): return MetadataFormService.delete_metadata_form_by_uri(uri=formUri) -def list_metadata_forms(context: Context, source, filter=None): - return MetadataFormService.paginated_metadata_form_list(filter=filter) +def delete_attached_metadata_form(context: Context, source, attachedFormUri): + return AttachedMetadataFormService.delete_attached_metadata_form(uri=attachedFormUri) + + +def list_user_metadata_forms(context: Context, source, filter=None): + return MetadataFormService.paginated_user_metadata_form_list(filter=filter) + + +def list_entity_metadata_forms(context: Context, source, filter=None): + return MetadataFormService.paginated_entity_metadata_form_list(filter=filter) def get_home_entity_name(context: Context, source: MetadataForm): @@ -26,6 +44,10 @@ def get_metadata_form(context: Context, source, uri): return MetadataFormService.get_metadata_form_by_uri(uri=uri) +def resolve_metadata_form(context: Context, source: AttachedMetadataForm): + return MetadataFormService.get_metadata_form_by_uri(source.metadataFormUri) + + def get_form_fields(context: Context, source: MetadataForm): return MetadataFormService.get_metadata_form_fields(uri=source.uri) @@ -50,9 +72,25 @@ def get_fields_glossary_node_name(context: Context, source: MetadataFormField): return GlossariesService.get_node(source.glossaryNodeUri).label if source.glossaryNodeUri else None +def list_attached_forms(context: Context, source, filter=None): + return AttachedMetadataFormService.list_attached_forms(filter=filter) + + +def get_attached_form_fields(context: Context, source: AttachedMetadataForm): + return AttachedMetadataFormService.get_attached_metadata_form_fields(uri=source.uri) + + +def get_attached_metadata_form(context: Context, source, uri): + return AttachedMetadataFormService.get_attached_metadata_form(uri=uri) + + def has_tenant_permissions_for_metadata_forms(context: Context, source: MetadataForm): return TenantPolicyService.has_user_tenant_permission( groups=context.groups, tenant_name=TenantPolicyService.TENANT_NAME, permission_name=MANAGE_METADATA_FORMS, ) + + +def resolve_metadata_form_field(context: Context, source: AttachedMetadataFormField): + return MetadataFormService.get_metadata_form_field_by_uri(uri=source.fieldUri) diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index a6c1578be..34f025eae 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -4,7 +4,10 @@ get_form_fields, get_fields_glossary_node_name, get_user_role, + get_attached_form_fields, has_tenant_permissions_for_metadata_forms, + resolve_metadata_form, + resolve_metadata_form_field, ) MetadataForm = gql.ObjectType( @@ -53,3 +56,41 @@ gql.Field(name='hasTenantPermissions', type=gql.Boolean, resolver=has_tenant_permissions_for_metadata_forms), ], ) + +AttachedMetadataFormSearchResult = gql.ObjectType( + name='AttachedMetadataFormSearchResult', + fields=[ + gql.Field(name='count', type=gql.Integer), + gql.Field(name='nodes', type=gql.ArrayType(gql.Ref('AttachedMetadataForm'))), + gql.Field(name='pageSize', type=gql.Integer), + gql.Field(name='nextPage', type=gql.Integer), + gql.Field(name='pages', type=gql.Integer), + gql.Field(name='page', type=gql.Integer), + gql.Field(name='previousPage', type=gql.Integer), + gql.Field(name='hasNext', type=gql.Boolean), + gql.Field(name='hasPrevious', type=gql.Boolean), + ], +) + +AttachedMetadataForm = gql.ObjectType( + name='AttachedMetadataForm', + fields=[ + gql.Field(name='uri', type=gql.ID), + gql.Field(name='metadataForm', type=gql.Ref('MetadataForm'), resolver=resolve_metadata_form), + gql.Field(name='entityUri', type=gql.String), + gql.Field(name='entityType', type=gql.String), + gql.Field( + name='fields', type=gql.ArrayType(gql.Ref('AttachedMetadataFormField')), resolver=get_attached_form_fields + ), + ], +) + +AttachedMetadataFormField = gql.ObjectType( + name='AttachedMetadataFormField', + fields=[ + gql.Field(name='uri', type=gql.ID), + gql.Field(name='field', type=gql.Ref('MetadataFormField'), resolver=resolve_metadata_form_field), + gql.Field(name='value', type=gql.String), + gql.Field(name='hasTenantPermissions', type=gql.Boolean, resolver=has_tenant_permissions_for_metadata_forms), + ], +) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py index 079b56247..79bfde6f4 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py @@ -1,12 +1,4 @@ -from sqlalchemy import ( - Column, - String, - Integer, - ForeignKey, - Boolean, - ForeignKeyConstraint, - PrimaryKeyConstraint, -) +from sqlalchemy import Column, String, Integer, ForeignKey, Boolean, ForeignKeyConstraint, PrimaryKeyConstraint, Enum from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import relationship, validates @@ -33,10 +25,16 @@ class MetadataFormEnforcementRule(Base): entityTypes = Column(ARRAY(String), nullable=False) # enum MetadataFormEntityTypes severity = Column(String, nullable=False) # enum MetadataFormEnforcementSeverity + __table_args__ = ( + ForeignKeyConstraint( + ('metadataFormUri',), ('metadata_form.uri',), name='f_key_enforcement_metadata', ondelete='CASCADE' + ), + ) + class MetadataFormField(Base): __tablename__ = 'metadata_form_field' - metadataFormUri = Column(String, ForeignKey('metadata_form.uri')) + metadataFormUri = Column(String) uri = Column(String, primary_key=True, default=utils.uuid('field')) displayNumber = Column(Integer, nullable=False) description = Column(String, nullable=True) @@ -46,46 +44,65 @@ class MetadataFormField(Base): glossaryNodeUri = Column(String, ForeignKey('glossary_node.nodeUri'), nullable=True) possibleValues = Column(ARRAY(String), nullable=True) + __table_args__ = ( + ForeignKeyConstraint( + ('metadataFormUri',), ('metadata_form.uri',), name='fk_mf_filed_form_uri', ondelete='CASCADE' + ), + ) + class AttachedMetadataForm(Base): __tablename__ = 'attached_metadata_form' - metadataFormUri = Column(String, ForeignKey('metadata_form.uri'), nullable=False) + metadataFormUri = Column(String, nullable=False) uri = Column(String, primary_key=True, default=utils.uuid('attached_form')) entityUri = Column(String, nullable=False) entityType = Column(String, nullable=False) + __table_args__ = ( + ForeignKeyConstraint( + ('metadataFormUri',), ('metadata_form.uri',), name='fk_attached_mf_uri', ondelete='CASCADE' + ), + ) + class AttachedMetadataFormField(Base): __tablename__ = 'attached_metadata_form_field' - attachedFormUri = Column(String, ForeignKey('attached_metadata_form.uri'), primary_key=True) - fieldUri = Column(String, ForeignKey('metadata_form_field.uri'), primary_key=True) - type = Column(String, nullable=False) - field = relationship('MetadataFormField', backref='attached_fields') + attachedFormUri = Column(String, primary_key=True) + fieldUri = Column(String, primary_key=True) + type = Column(Enum(MetadataFormFieldType), nullable=False, default=MetadataFormFieldType.String) - __table_args__ = (PrimaryKeyConstraint('attachedFormUri', 'fieldUri'),) - __mapper_args__ = {'polymorphic_identity': 'attached_metadata_form_field', 'polymorphic_on': type} + __table_args__ = ( + PrimaryKeyConstraint('attachedFormUri', 'fieldUri'), + ForeignKeyConstraint( + ('attachedFormUri',), + ('attached_metadata_form.uri',), + name='fk_attached_field_mf_uri', + ondelete='CASCADE', + ), + ForeignKeyConstraint( + ('fieldUri',), ('metadata_form_field.uri',), name='fk_attached_field_uri', ondelete='CASCADE' + ), + ) + __mapper_args__ = {'polymorphic_identity': 'attached_metadata_form_field', 'polymorphic_on': 'type'} @property def value(self): raise NotImplementedError('Basic AttachedMetadataFormField has no implemented property value') - @validates('type') - def update_type(self, key, new_type): - if new_type != self.field.type: - raise ValueError("Value type doesn't match field type") - class StringAttachedMetadataFormField(AttachedMetadataFormField): __tablename__ = 'string_attached_metadata_form_field' attachedFormUri = Column(String, primary_key=True) fieldUri = Column(String, primary_key=True) - value = Column(String, nullable=False) + value = Column(String, nullable=True) __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.String} __table_args__ = ( ForeignKeyConstraint( ['attachedFormUri', 'fieldUri'], ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_s_field', + ondelete='CASCADE', ), ) @@ -94,13 +111,15 @@ class BooleanAttachedMetadataFormField(AttachedMetadataFormField): __tablename__ = 'boolean_attached_metadata_form_field' attachedFormUri = Column(String, primary_key=True) fieldUri = Column(String, primary_key=True) - value = Column(Boolean, nullable=False) + value = Column(Boolean, nullable=True) __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.Boolean} __table_args__ = ( ForeignKeyConstraint( ['attachedFormUri', 'fieldUri'], ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_b_field', + ondelete='CASCADE', ), ) @@ -109,13 +128,15 @@ class IntegerAttachedMetadataFormField(AttachedMetadataFormField): __tablename__ = 'integer_attached_metadata_form_field' attachedFormUri = Column(String, primary_key=True) fieldUri = Column(String, primary_key=True) - value = Column(Integer, nullable=False) + value = Column(Integer, nullable=True) __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.Integer} __table_args__ = ( ForeignKeyConstraint( ['attachedFormUri', 'fieldUri'], ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_i_field', + ondelete='CASCADE', ), ) @@ -124,12 +145,14 @@ class GlossaryTermAttachedMetadataFormField(AttachedMetadataFormField): __tablename__ = 'glossary_term_attached_metadata_form_field' attachedFormUri = Column(String, primary_key=True) fieldUri = Column(String, primary_key=True) - value = Column(String, nullable=False) + value = Column(String, nullable=True) __mapper_args__ = {'polymorphic_identity': MetadataFormFieldType.GlossaryTerm} __table_args__ = ( ForeignKeyConstraint( ['attachedFormUri', 'fieldUri'], ['attached_metadata_form_field.attachedFormUri', 'attached_metadata_form_field.fieldUri'], + name='fk_gt_field', + ondelete='CASCADE', ), ) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index 784ae49c1..cd404e396 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -1,6 +1,29 @@ from sqlalchemy import or_, and_ -from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility -from dataall.modules.metadata_forms.db.metadata_form_models import MetadataForm, MetadataFormField +from sqlalchemy.orm import with_polymorphic + +from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility, MetadataFormFieldType +from dataall.modules.metadata_forms.db.metadata_form_models import ( + MetadataForm, + MetadataFormField, + AttachedMetadataForm, + AttachedMetadataFormField, + StringAttachedMetadataFormField, + BooleanAttachedMetadataFormField, + IntegerAttachedMetadataFormField, + GlossaryTermAttachedMetadataFormField, +) + +import json + +all_fields = with_polymorphic( + AttachedMetadataFormField, + [ + StringAttachedMetadataFormField, + BooleanAttachedMetadataFormField, + IntegerAttachedMetadataFormField, + GlossaryTermAttachedMetadataFormField, + ], +) class MetadataFormRepository: @@ -17,12 +40,25 @@ def create_metadata_form(session, data=None): session.commit() return mf + @staticmethod + def create_attached_metadata_form(session, uri, data=None): + amf: AttachedMetadataForm = AttachedMetadataForm( + metadataFormUri=uri, entityUri=data.get('entityUri'), entityType=data.get('entityType') + ) + session.add(amf) + session.commit() + return amf + @staticmethod def get_metadata_form(session, uri): return session.query(MetadataForm).get(uri) @staticmethod - def query_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, filter): + def get_attached_metadata_form(session, uri): + return session.query(AttachedMetadataForm).get(uri) + + @staticmethod + def query_user_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, filter): """ Returns a list of metadata forms based on the user's permissions and any provided filters. DataAll admins can see allll forms, while non-admins can only see forms they have access to based on their group memberships. @@ -39,23 +75,43 @@ def query_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, filte if not is_da_admin: query = query.filter( or_( - MetadataForm.SamlGroupName.in_(groups), - MetadataForm.visibility == MetadataFormVisibility.Global.value, - and_( - MetadataForm.visibility == MetadataFormVisibility.Team.value, - MetadataForm.homeEntity.in_(groups), - ), - and_( + MetadataForm.SamlGroupName.in_(groups), # user is in owner-group + MetadataForm.visibility == MetadataFormVisibility.Global.value, # MF is visible for everyone + and_( # MF is visible for Organization, that user is in MetadataForm.visibility == MetadataFormVisibility.Organization.value, MetadataForm.homeEntity.in_(org_uris), ), - and_( + and_( # MF is visible for Environment, that user is in MetadataForm.visibility == MetadataFormVisibility.Environment.value, MetadataForm.homeEntity.in_(env_uris), ), + and_( # MF is visible for Team, that user is in + MetadataForm.visibility == MetadataFormVisibility.Team.value, + MetadataForm.homeEntity.in_(groups), + ), + ) + ) + + query = MetadataFormRepository.filter_query(query, filter) + return query.order_by(MetadataForm.name) + + @staticmethod + def exclude_attached(session, query, filter): + if filter and filter.get('hideAttached') and filter.get('entityType') and filter.get('entityUri'): + query = query.filter( + ~MetadataForm.uri.in_( + session.query(AttachedMetadataForm.metadataFormUri) + .filter( + AttachedMetadataForm.entityUri == filter.get('entityUri'), + AttachedMetadataForm.entityType == filter.get('entityType'), + ) + .subquery() ) ) + return query + @staticmethod + def filter_query(query, filter): if filter and filter.get('search_input'): query = query.filter( or_( @@ -63,6 +119,40 @@ def query_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, filte MetadataForm.description.ilike('%' + filter.get('search_input') + '%'), ) ) + return query + + @staticmethod + def query_entity_metadata_forms( + session, is_da_admin, groups, user_org_uris, user_env_uris, entity_orgs_uris, entity_envs_uris, filter + ): + """ + Returns a list of metadata forms that user can attach to entity based on the user's permissions and any provided filters. + DataAll admins can see allll forms, while non-admins can only see forms they have access to based on their group memberships. + :param session: + :param is_da_admin: is user dataall admin + :param groups: user's group memberships + :param user_env_uris: user's environment URIs + :param user_org_uris: user's organization URIs + :param entity_orgs_uris: organizations, related to entity + :param entity_envs_uris: environments, related to entity + :param filter: + """ + + entity_orgs_uris = entity_orgs_uris or [] + entity_envs_uris = entity_envs_uris or [] + + orgs = list(set(user_org_uris).intersection(set(entity_orgs_uris))) + envs = list(set(user_env_uris).intersection(set(entity_envs_uris))) + + query = MetadataFormRepository.query_user_metadata_forms(session, is_da_admin, groups, envs, orgs, filter) + + if not orgs: + query = query.filter(MetadataForm.visibility != MetadataFormVisibility.Organization.value) + + if not envs: + query = query.filter(MetadataForm.visibility != MetadataFormVisibility.Environment.value) + + query = MetadataFormRepository.exclude_attached(session, query, filter) return query.order_by(MetadataForm.name) @staticmethod @@ -110,3 +200,50 @@ def update_metadata_form_field(session, fieldUri, data): @staticmethod def get_metadata_form_owner(session, uri): return session.query(MetadataForm).get(uri).SamlGroupName + + @staticmethod + def create_attached_metadata_form_field(session, attachedFormUri, field: MetadataFormField, value): + amff = None + value = json.loads(value) + if field.type == MetadataFormFieldType.String.value: + amff = StringAttachedMetadataFormField(attachedFormUri=attachedFormUri, fieldUri=field.uri, value=value) + elif field.type == MetadataFormFieldType.Boolean.value: + amff = BooleanAttachedMetadataFormField(attachedFormUri=attachedFormUri, fieldUri=field.uri, value=value) + + elif field.type == MetadataFormFieldType.Integer.value: + value = int(value) if value else None + amff = IntegerAttachedMetadataFormField(attachedFormUri=attachedFormUri, fieldUri=field.uri, value=value) + elif field.type == MetadataFormFieldType.GlossaryTerm.value: + amff = GlossaryTermAttachedMetadataFormField( + attachedFormUri=attachedFormUri, fieldUri=field.uri, value=value + ) + else: + raise Exception('Unsupported field type') + + if amff is not None: + session.add(amff) + session.commit() + + @staticmethod + def get_attached_metadata_form_field(session, field_uri): + return session.query(all_fields).get(field_uri) + + @staticmethod + def get_all_attached_metadata_form_fields(session, uri): + return session.query(all_fields).filter(AttachedMetadataFormField.attachedFormUri == uri).all() + + @staticmethod + def query_attached_metadata_forms(session, is_da_admin, groups, user_envs_uris, user_orgs_uris, filter): + all_mfs = MetadataFormRepository.query_user_metadata_forms( + session, is_da_admin, groups, user_envs_uris, user_orgs_uris, filter + ).subquery() + # The c confuses a lot of people, SQLAlchemy uses this unfortunately odd name + # as a container for columns in table objects. + query = session.query(AttachedMetadataForm).join(all_mfs, AttachedMetadataForm.metadataFormUri == all_mfs.c.uri) + if filter and filter.get('entityType'): + query = query.filter(AttachedMetadataForm.entityType == filter.get('entityType')) + if filter and filter.get('entityUri'): + query = query.filter(AttachedMetadataForm.entityUri == filter.get('entityUri')) + if filter and filter.get('metadataFormUri'): + query = query.filter(AttachedMetadataForm.metadataFormUri == filter.get('metadataFormUri')) + return query diff --git a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py new file mode 100644 index 000000000..41f6067b4 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py @@ -0,0 +1,80 @@ +from dataall.base.context import get_context +from dataall.base.db import exceptions, paginate +from dataall.core.environment.db.environment_repositories import EnvironmentRepository +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService +from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository +from dataall.modules.metadata_forms.services.metadata_form_access_service import MetadataFormAccessService + + +class AttachedMetadataFormValidationService: + @staticmethod + def validate_filled_form_params(uri, data): + if not data.get('entityUri'): + raise exceptions.RequiredParameter('entityUri') + if not data.get('entityType'): + raise exceptions.RequiredParameter('entityType') + + @staticmethod + def validate_enrich_fields_params(mf_fields, data): + fields = data.get('fields') + if not fields: + raise exceptions.RequiredParameter('fields') + for f in fields: + if not f.get('fieldUri'): + raise exceptions.RequiredParameter('fieldUri') + mf_field = next((field for field in mf_fields if field.uri == f.get('fieldUri')), None) + if not mf_field: + raise exceptions.ObjectNotFound('MetadataFormField', f.get('fieldUri')) + if not f.get('value') and mf_field.required: + raise exceptions.RequiredParameter('value') + f['field'] = mf_field + + +class AttachedMetadataFormService: + @staticmethod + def create_attached_metadata_form(uri, data): + AttachedMetadataFormValidationService.validate_filled_form_params(uri, data) + with get_context().db_engine.scoped_session() as session: + mf = MetadataFormRepository.get_metadata_form(session, uri) + if not mf: + raise exceptions.ObjectNotFound('MetadataForm', uri) + mf_fields = MetadataFormRepository.get_metadata_form_fields(session, uri) + AttachedMetadataFormValidationService.validate_enrich_fields_params(mf_fields, data) + + amf = MetadataFormRepository.create_attached_metadata_form(session, uri, data) + for f in data.get('fields'): + MetadataFormRepository.create_attached_metadata_form_field( + session, amf.uri, f.get('field'), f.get('value') + ) + return amf + + @staticmethod + def get_attached_metadata_form(uri): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.get_attached_metadata_form(session, uri) + + @staticmethod + def get_attached_metadata_form_fields(uri): + with get_context().db_engine.scoped_session() as session: + return MetadataFormRepository.get_all_attached_metadata_form_fields(session, uri) + + @staticmethod + def list_attached_forms(filter=None): + context = get_context() + filter = filter if filter is not None else {} + is_da_admin, user_orgs, user_envs = MetadataFormAccessService.get_user_admin_status_orgs_and_envs_() + with context.db_engine.scoped_session() as session: + return paginate( + query=MetadataFormRepository.query_attached_metadata_forms( + session, is_da_admin, context.groups, user_envs, user_orgs, filter + ), + page=filter.get('page', 1), + page_size=filter.get('pageSize', 10), + ).to_dict() + + @staticmethod + def delete_attached_metadata_form(uri): + mf = AttachedMetadataFormService.get_attached_metadata_form(uri) + with get_context().db_engine.scoped_session() as session: + return session.delete(mf) diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py new file mode 100644 index 000000000..53d2944b6 --- /dev/null +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py @@ -0,0 +1,98 @@ +from dataall.base.context import get_context +from dataall.core.environment.db.environment_repositories import EnvironmentRepository +from dataall.core.organizations.db.organization_repositories import OrganizationRepository +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository +from dataall.modules.metadata_forms.db.enums import MetadataFormUserRoles, MetadataFormEntityTypes +from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository +from functools import wraps +from dataall.base.db import exceptions + + +class MetadataFormAccessService: + @staticmethod + def is_owner(uri): + context = get_context() + with context.db_engine.scoped_session() as session: + return MetadataFormRepository.get_metadata_form_owner(session, uri) in context.groups + + @staticmethod + def can_perform(action: str): + def decorator(f): + @wraps(f) + def check_permission(*args, **kwds): + uri = kwds.get('uri') + if not uri: + raise KeyError(f"{f.__name__} doesn't have parameter uri.") + + if MetadataFormAccessService.is_owner(uri): + return f(*args, **kwds) + else: + raise exceptions.UnauthorizedOperation( + action=action, + message=f'User {get_context().username} is not the owner of the metadata form {uri}', + ) + + return check_permission + + return decorator + + @staticmethod + def get_user_role(uri): + if MetadataFormAccessService.is_owner(uri): + return MetadataFormUserRoles.Owner.value + else: + return MetadataFormUserRoles.User.value + + @staticmethod + def get_user_admin_status_orgs_and_envs_(): + context = get_context() + groups = context.groups + username = context.username + is_da_admin = TenantPolicyValidationService.is_tenant_admin(context.groups) + if is_da_admin: + return True, None, None + with context.db_engine.scoped_session() as session: + user_envs = EnvironmentRepository.query_user_environments(session, username, groups, {}) + user_envs = [e.environmentUri for e in user_envs] + user_orgs = OrganizationRepository.query_user_organizations(session, username, groups, {}) + user_orgs = [o.organizationUri for o in user_orgs] + return is_da_admin, user_orgs, user_envs + + @staticmethod + def _target_org_uri_getter(entityType, entityUri): + if not entityType or not entityUri: + return None + if entityType == MetadataFormEntityTypes.Organizations.value: + return [entityUri] + elif entityType == MetadataFormEntityTypes.Environments.value: + with get_context().db_engine.scoped_session() as session: + return [EnvironmentRepository.get_environment_by_uri(session, entityUri).organizationUri] + elif entityType == MetadataFormEntityTypes.Datasets.value: + with get_context().db_engine.scoped_session() as session: + return [DatasetBaseRepository.get_dataset_by_uri(session, entityUri).organizationUri] + else: + # toDo add other entities + return None + + @staticmethod + def _target_env_uri_getter(entityType, entityUri): + if not entityType or not entityUri: + return None + if entityType == MetadataFormEntityTypes.Organizations.value: + return None + elif entityType == MetadataFormEntityTypes.Environments.value: + return [entityUri] + elif entityType == MetadataFormEntityTypes.Datasets.value: + with get_context().db_engine.scoped_session() as session: + return [DatasetBaseRepository.get_dataset_by_uri(session, entityUri).environmentUri] + else: + # toDo add other entities + return None + + @staticmethod + def get_target_orgs_and_envs(username, groups, is_da_admin=False, filter={}): + orgs = MetadataFormAccessService._target_org_uri_getter(filter.get('entityType'), filter.get('entityUri')) + envs = MetadataFormAccessService._target_env_uri_getter(filter.get('entityType'), filter.get('entityUri')) + + return orgs, envs diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index 326f65c22..ac4ddbb91 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -1,13 +1,15 @@ -from functools import wraps - from dataall.base.context import get_context from dataall.base.db import exceptions, paginate from dataall.core.organizations.db.organization_repositories import OrganizationRepository from dataall.core.environment.db.environment_repositories import EnvironmentRepository from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService, TenantPolicyService -from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility, MetadataFormUserRoles, MetadataFormFieldType +from dataall.modules.metadata_forms.db.enums import ( + MetadataFormVisibility, + MetadataFormFieldType, +) from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository +from dataall.modules.metadata_forms.services.metadata_form_access_service import MetadataFormAccessService from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS @@ -84,42 +86,6 @@ def _raise(x): raise exceptions.InvalidInput('possibleValues', value, data.get('type')) -class MetadataFormAccessService: - @staticmethod - def is_owner(uri): - context = get_context() - with context.db_engine.scoped_session() as session: - return MetadataFormRepository.get_metadata_form_owner(session, uri) in context.groups - - @staticmethod - def can_perform(action: str): - def decorator(f): - @wraps(f) - def check_permission(*args, **kwds): - uri = kwds.get('uri') - if not uri: - raise KeyError(f"{f.__name__} doesn't have parameter uri.") - - if MetadataFormAccessService.is_owner(uri): - return f(*args, **kwds) - else: - raise exceptions.UnauthorizedOperation( - action=action, - message=f'User {get_context().username} is not the owner of the metadata form {uri}', - ) - - return check_permission - - return decorator - - @staticmethod - def get_user_role(uri): - if MetadataFormAccessService.is_owner(uri): - return MetadataFormUserRoles.Owner.value - else: - return MetadataFormUserRoles.User.value - - class MetadataFormService: @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) @@ -145,39 +111,63 @@ def delete_metadata_form_by_uri(uri): return session.delete(mf) @staticmethod - def paginated_metadata_form_list(filter=None) -> dict: + def paginated_entity_metadata_form_list(filter=None) -> dict: context = get_context() - groups = context.groups - is_da_admin = TenantPolicyValidationService.is_tenant_admin(groups) - filter = filter if filter is not None else {} + filter = filter or {} + is_da_admin, user_orgs, user_envs = MetadataFormAccessService.get_user_admin_status_orgs_and_envs_() + entity_orgs, entity_envs = MetadataFormAccessService.get_target_orgs_and_envs( + context.username, context.groups, is_da_admin, filter + ) with context.db_engine.scoped_session() as session: - envs = None - orgs = None - # is user is no dataall admin, query_metadata_forms requires arrays of users envs and orgs uris - if not is_da_admin: - username = context.username - envs = EnvironmentRepository.query_user_environments(session, username, groups, {}) - envs = [e.environmentUri for e in envs] - orgs = OrganizationRepository.query_user_organizations(session, username, groups, {}) - orgs = [o.organizationUri for o in orgs] return paginate( - query=MetadataFormRepository.query_metadata_forms(session, is_da_admin, groups, envs, orgs, filter), + query=MetadataFormRepository.query_entity_metadata_forms( + session, + is_da_admin=is_da_admin, + groups=context.groups, + user_org_uris=user_orgs, + user_env_uris=user_envs, + entity_orgs_uris=entity_orgs, + entity_envs_uris=entity_envs, + filter=filter, + ), + page=filter.get('page', 1), + page_size=filter.get('pageSize', 5), + ).to_dict() + + @staticmethod + def paginated_user_metadata_form_list(filter=None) -> dict: + context = get_context() + filter = filter or {} + is_da_admin, user_orgs, user_envs = MetadataFormAccessService.get_user_admin_status_orgs_and_envs_() + with get_context().db_engine.scoped_session() as session: + return paginate( + query=MetadataFormRepository.query_user_metadata_forms( + session, + is_da_admin=is_da_admin, + groups=context.groups, + env_uris=user_envs, + org_uris=user_orgs, + filter=filter, + ), page=filter.get('page', 1), page_size=filter.get('pageSize', 5), ).to_dict() @staticmethod def get_home_entity_name(metadata_form): - if metadata_form.visibility == MetadataFormVisibility.Team.value: - return metadata_form.homeEntity - elif metadata_form.visibility == MetadataFormVisibility.Organization.value: - with get_context().db_engine.scoped_session() as session: - return OrganizationRepository.get_organization_by_uri(session, metadata_form.homeEntity).name - elif metadata_form.visibility == MetadataFormVisibility.Environment.value: - with get_context().db_engine.scoped_session() as session: - return EnvironmentRepository.get_environment_by_uri(session, metadata_form.homeEntity).name - else: - return '' + try: + if metadata_form.visibility == MetadataFormVisibility.Team.value: + return metadata_form.homeEntity + elif metadata_form.visibility == MetadataFormVisibility.Organization.value: + with get_context().db_engine.scoped_session() as session: + return OrganizationRepository.get_organization_by_uri(session, metadata_form.homeEntity).name + elif metadata_form.visibility == MetadataFormVisibility.Environment.value: + with get_context().db_engine.scoped_session() as session: + return EnvironmentRepository.get_environment_by_uri(session, metadata_form.homeEntity).name + else: + return '' + except exceptions.ObjectNotFound as e: + return 'Not Found' @staticmethod def get_metadata_form_fields(uri): @@ -225,8 +215,6 @@ def batch_metadata_form_field_update(uri, data): # validate all inputs first # if even one input is invalid -- decline whole batch for item in data: - if item.get('metadataFormUri') != uri: - raise Exception('property metadataFormUri does not match form uri') if item.get('uri') is None: MetadataFormParamValidationService.validate_create_field_params(item) to_create.append(item) diff --git a/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py b/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py new file mode 100644 index 000000000..391b52f21 --- /dev/null +++ b/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py @@ -0,0 +1,182 @@ +"""attached_field_type_enum + +Revision ID: f87aecc36d39 +Revises: 9efe5f7c69a1 +Create Date: 2024-08-17 13:31:54.386554 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'f87aecc36d39' +down_revision = 'd274e756f0ae' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### create ENUM type and set field_type as enum ### + op.execute("CREATE TYPE metadataformfieldtype AS ENUM('String', 'Integer', 'Boolean', 'GlossaryTerm')") + op.execute( + 'alter table attached_metadata_form_field alter column type TYPE metadataformfieldtype USING (type::metadataformfieldtype)' + ) + # ### end create ENUM ### + + # ### foreign keys naming + cascade deletion ### + op.drop_constraint('fk_attached_mf_uri', 'attached_metadata_form', type_='foreignkey') + op.create_foreign_key( + 'fk_attached_mf_uri', + 'attached_metadata_form', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_attached_field_mf_uri', 'attached_metadata_form_field', type_='foreignkey') + op.drop_constraint('fk_attached_field_uri', 'attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_attached_field_mf_uri', + 'attached_metadata_form_field', + 'attached_metadata_form', + ['attachedFormUri'], + ['uri'], + ondelete='CASCADE', + ) + op.create_foreign_key( + 'fk_attached_field_uri', + 'attached_metadata_form_field', + 'metadata_form_field', + ['fieldUri'], + ['uri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_b_field', 'boolean_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_b_field', + 'boolean_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_gt_field', 'glossary_term_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_gt_field', + 'glossary_term_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_i_field', 'integer_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_i_field', + 'integer_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ondelete='CASCADE', + ) + op.create_foreign_key( + 'f_key_enforcement_metadata', + 'metadata_form_enforcement_rule', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_mf_filed_form_uri', 'metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_mf_filed_form_uri', + 'metadata_form_field', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + op.drop_constraint('fk_s_field', 'string_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_s_field', + 'string_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ondelete='CASCADE', + ) + # ### end foreign keys naming ### + + # ### MF field values can be nullable ### + op.alter_column('boolean_attached_metadata_form_field', 'value', existing_type=sa.BOOLEAN(), nullable=True) + op.alter_column('glossary_term_attached_metadata_form_field', 'value', existing_type=sa.VARCHAR(), nullable=True) + op.alter_column('integer_attached_metadata_form_field', 'value', existing_type=sa.INTEGER(), nullable=True) + op.alter_column('string_attached_metadata_form_field', 'value', existing_type=sa.VARCHAR(), nullable=True) + # ### end ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.execute('DROP TYPE metadataformfieldtype') + op.alter_column('attached_metadata_form_field', 'type', type_=sa.VARCHAR(), existing_nullable=True) + # ### end Alembic commands ### + + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('fk_s_field', 'string_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_s_field', + 'string_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ) + op.drop_constraint('fk_mf_filed_form_uri', 'metadata_form_field', type_='foreignkey') + op.create_foreign_key('fk_mf_filed_form_uri', 'metadata_form_field', 'metadata_form', ['metadataFormUri'], ['uri']) + op.drop_constraint('f_key_enforcement_metadata', 'metadata_form_enforcement_rule', type_='foreignkey') + op.drop_constraint('fk_i_field', 'integer_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_i_field', + 'integer_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ) + op.drop_constraint('fk_gt_field', 'glossary_term_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_gt_field', + 'glossary_term_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ) + op.drop_constraint('fk_b_field', 'boolean_attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_b_field', + 'boolean_attached_metadata_form_field', + 'attached_metadata_form_field', + ['attachedFormUri', 'fieldUri'], + ['attachedFormUri', 'fieldUri'], + ) + op.drop_constraint('fk_attached_field_uri', 'attached_metadata_form_field', type_='foreignkey') + op.drop_constraint('fk_attached_field_mf_uri', 'attached_metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_attached_field_uri', 'attached_metadata_form_field', 'metadata_form_field', ['fieldUri'], ['uri'] + ) + op.create_foreign_key( + 'fk_attached_field_mf_uri', + 'attached_metadata_form_field', + 'attached_metadata_form', + ['attachedFormUri'], + ['uri'], + ) + op.drop_constraint('fk_attached_mf_uri', 'attached_metadata_form', type_='foreignkey') + op.create_foreign_key('fk_attached_mf_uri', 'attached_metadata_form', 'metadata_form', ['metadataFormUri'], ['uri']) + # ### end Alembic commands ### + + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('string_attached_metadata_form_field', 'value', existing_type=sa.VARCHAR(), nullable=False) + op.alter_column('integer_attached_metadata_form_field', 'value', existing_type=sa.INTEGER(), nullable=False) + op.alter_column('glossary_term_attached_metadata_form_field', 'value', existing_type=sa.VARCHAR(), nullable=False) + op.alter_column('boolean_attached_metadata_form_field', 'value', existing_type=sa.BOOLEAN(), nullable=False) + # ### end Alembic commands ### diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 521fccdd7..ad3742070 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15864,7 +15864,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/frontend/src/modules/Environments/views/EnvironmentView.js b/frontend/src/modules/Environments/views/EnvironmentView.js index 42d726c3b..790d97f57 100644 --- a/frontend/src/modules/Environments/views/EnvironmentView.js +++ b/frontend/src/modules/Environments/views/EnvironmentView.js @@ -47,6 +47,7 @@ import { EnvironmentNetworks } from '../components'; import { ModuleNames, isModuleEnabled } from 'utils'; +import { MetadataAttachment } from '../../Metadata_Forms/components'; const tabs = [ { label: 'Overview', value: 'overview', icon: }, @@ -55,6 +56,11 @@ const tabs = [ value: 'teams', icon: }, + { + label: 'Metadata', + value: 'metadata', + active: isModuleEnabled(ModuleNames.METADATA_FORMS) + }, { label: 'Datasets', value: 'datasets', @@ -214,28 +220,30 @@ const EnvironmentView = () => { - - - - + {isAdmin && ( + + + + + )} @@ -263,6 +271,13 @@ const EnvironmentView = () => { {currentTab === 'overview' && ( )} + {currentTab === 'metadata' && ( + + )} {currentTab === 'teams' && } {currentTab === 'datasets' && ( diff --git a/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js b/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js new file mode 100644 index 000000000..1aec93728 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js @@ -0,0 +1,51 @@ +import { + Card, + CardContent, + CardHeader, + List, + ListItem, + Typography +} from '@mui/material'; + +export const AttachedFormCard = (props) => { + const { fields, attachedForm } = props; + + return ( + + + + + {fields.map((field) => ( + + + {field.field.name} + + + {field.value} + + + ))} + + + + ); +}; diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js index d02c2f46f..783806503 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormEnforcement.js @@ -1,7 +1,23 @@ import PropTypes from 'prop-types'; +import EngineeringOutlinedIcon from '@mui/icons-material/EngineeringOutlined'; +import { Box, Typography } from '@mui/material'; export const MetadataFormEnforcement = (props) => { - return MetadataFormEnforcement; + return ( + + + + This tab is under construction. + + + ); }; MetadataFormEnforcement.propTypes = { diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js index dc1ec5b1b..c3fb4e6bc 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormPreview.js @@ -1,7 +1,70 @@ +import { useDispatch } from 'react-redux'; + import PropTypes from 'prop-types'; +import { Box } from '@mui/material'; +import React, { useEffect, useState } from 'react'; +import { SET_ERROR } from '../../../globalErrors'; +import { useClient } from '../../../services'; +import { getMetadataForm } from '../services'; +import CircularProgress from '@mui/material/CircularProgress'; + +import { RenderedMetadataForm } from './renderedMetadataForm'; export const MetadataFormPreview = (props) => { - return MetadataFormPreview; + const client = useClient(); + const dispatch = useDispatch(); + const { metadataForm } = props; + const [fields, setFields] = useState(metadataForm.fields); + const [loading, setLoading] = useState(false); + + const fetchItems = async () => { + setLoading(true); + const response = await client.query(getMetadataForm(metadataForm.uri)); + if ( + !response.errors && + response.data && + response.data.getMetadataForm !== null + ) { + setFields(response.data.getMetadataForm.fields); + } else { + const error = response.errors + ? response.errors[0].message + : 'Metadata Forms not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch]); + + if (loading) { + return ( + + + + ); + } + + return ( + + ); }; MetadataFormPreview.propTypes = { diff --git a/frontend/src/modules/Metadata_Forms/components/fields.js b/frontend/src/modules/Metadata_Forms/components/fields.js new file mode 100644 index 000000000..90dea7012 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/fields.js @@ -0,0 +1,127 @@ +import { + Autocomplete, + Checkbox, + FormControlLabel, + TextField +} from '@mui/material'; +import PropTypes from 'prop-types'; +import React, { useEffect, useState } from 'react'; +import { getGlossaryTree } from '../../Glossaries/services'; +import { SET_ERROR } from '../../../globalErrors'; +import { Defaults } from '../../../design'; + +export const FreeInputField = (props) => { + const { field, onChange, errors } = props; + return ( + { + onChange(event.target.value); + }} + > + ); +}; +FreeInputField.propTypes = { + field: PropTypes.any.isRequired +}; + +export const BooleanField = (props) => { + const { field, onChange } = props; + return ( + onChange(checked)} + /> + } + label={field.name} + /> + ); +}; + +BooleanField.propTypes = { + field: PropTypes.any.isRequired +}; + +export const GlossaryTermField = (props) => { + const { field, client, dispatch, onChange, errors } = props; + + const [glossaryOptions, setGlossaryOptions] = useState([]); + + const fetchGlossaryTerms = async () => { + const response = await client.query( + getGlossaryTree({ + nodeUri: field.glossaryNodeUri, + filter: { ...Defaults.selectListFilter, nodeType: 'T' } + }) + ); + if (!response.errors && response.data.getGlossary !== null) { + setGlossaryOptions(response.data.getGlossary.tree.nodes); + } else { + const error = response.errors + ? response.errors[0].message + : 'Glossary not found'; + dispatch({ type: SET_ERROR, error }); + } + }; + + useEffect(() => { + if (client) { + fetchGlossaryTerms().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch]); + + return ( + onChange(value.nodeUri)} + renderInput={(params) => ( + + )} + /> + ); +}; + +GlossaryTermField.propTypes = { + field: PropTypes.any.isRequired, + client: PropTypes.any.isRequired, + dispatch: PropTypes.any.isRequired +}; + +export const DropDownField = (props) => { + const { field, onChange, errors } = props; + return ( + onChange(value)} + renderInput={(params) => ( + + )} + /> + ); +}; + +DropDownField.propTypes = { + field: PropTypes.any.isRequired +}; diff --git a/frontend/src/modules/Metadata_Forms/components/index.js b/frontend/src/modules/Metadata_Forms/components/index.js index 9ee903a57..1e1eb7e94 100644 --- a/frontend/src/modules/Metadata_Forms/components/index.js +++ b/frontend/src/modules/Metadata_Forms/components/index.js @@ -4,3 +4,7 @@ export * from './MetadataFormInfo'; export * from './MetadataFormPreview'; export * from './MetadataFormEnforcement'; export * from './MetadataFormFields'; +export * from './fields'; +export * from './renderedMetadataForm'; +export * from './metadataAttachment'; +export * from './AttachedFormCard'; diff --git a/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js b/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js new file mode 100644 index 000000000..e29f78675 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js @@ -0,0 +1,317 @@ +import React, { useEffect, useState } from 'react'; + +import { useDispatch } from 'react-redux'; + +import { + Autocomplete, + Box, + Button, + Card, + CardContent, + Divider, + Grid, + TextField, + Typography +} from '@mui/material'; +import { + deleteAttachedMetadataForm, + getAttachedMetadataForm, + getMetadataForm, + listAttachedMetadataForms, + listEntityMetadataForms +} from '../services'; +import { Defaults, PlusIcon } from '../../../design'; +import CircularProgress from '@mui/material/CircularProgress'; +import { useClient } from '../../../services'; +import { RenderedMetadataForm } from './renderedMetadataForm'; +import { SET_ERROR } from '../../../globalErrors'; +import { AttachedFormCard } from './AttachedFormCard'; +import DoNotDisturbAltOutlinedIcon from '@mui/icons-material/DoNotDisturbAltOutlined'; +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; + +export const MetadataAttachment = (props) => { + const { entityType, entityUri, canEdit } = props; + const client = useClient(); + const dispatch = useDispatch(); + const [selectedForm, setSelectedForm] = useState(null); + const [loading, setLoading] = useState(false); + const [loadingFields, setLoadingFields] = useState(false); + const [formsList, setFormsList] = useState([]); + const [fields, setFields] = useState([]); + const [filter] = useState({ + ...Defaults.filter, + entityType: entityType, + entityUri: entityUri + }); + const [addNewForm, setAddNewForm] = useState(false); + const [availableForms, setAvailableForms] = useState([]); + + const fetchAvailableForms = async () => { + const response = await client.query( + listEntityMetadataForms({ + ...Defaults.filter, + entityType: entityType, + entityUri: entityUri, + hideAttached: true + }) + ); + if (!response.errors) { + setAvailableForms( + response.data.listEntityMetadataForms.nodes.map((form) => ({ + label: form.name, + value: form.uri, + form: form + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + }; + + const fetchList = async () => { + setLoading(true); + const response = await client.query(listAttachedMetadataForms(filter)); + if (!response.errors) { + setFormsList(response.data.listAttachedMetadataForms.nodes); + if ( + response.data.listAttachedMetadataForms.nodes.length > 0 && + !selectedForm + ) { + setSelectedForm(response.data.listAttachedMetadataForms.nodes[0]); + await fetchAttachedFields( + response.data.listAttachedMetadataForms.nodes[0].uri + ); + } + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }; + + const fetchFields = async (uri) => { + setLoadingFields(true); + const response = await client.query(getMetadataForm(uri)); + if ( + !response.errors && + response.data && + response.data.getMetadataForm !== null + ) { + setFields(response.data.getMetadataForm.fields); + } else { + const error = response.errors + ? response.errors[0].message + : 'Metadata Forms not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoadingFields(false); + }; + const fetchAttachedFields = async (uri) => { + setLoadingFields(true); + const response = await client.query(getAttachedMetadataForm(uri)); + if ( + !response.errors && + response.data && + response.data.getAttachedMetadataForm !== null + ) { + setFields(response.data.getAttachedMetadataForm.fields); + } else { + const error = response.errors + ? response.errors[0].message + : 'Attached Metadata Form not found'; + dispatch({ type: SET_ERROR, error }); + } + setLoadingFields(false); + }; + + const deleteAttachedForm = async (uri) => { + const response = await client.mutate(deleteAttachedMetadataForm(uri)); + if (!response.errors) { + fetchList().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + fetchAvailableForms().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + setSelectedForm(null); + } else { + const error = response.errors + ? response.errors[0].message + : 'Fail to delete attached form'; + dispatch({ type: SET_ERROR, error }); + } + }; + + useEffect(() => { + if (client) { + fetchList().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + fetchAvailableForms().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch, filter]); + + if (loading) { + return ( + + + + ); + } + + return ( + + + + {canEdit && ( + <> + + + + + + )} + {addNewForm && ( + + { + if (value) { + setSelectedForm(value.form); + await fetchFields(value.value); + } else setSelectedForm(null); + }} + renderInput={(params) => ( + + )} + /> + + )} + {formsList.length > 0 ? ( + formsList.map((attachedForm) => ( + + + { + setSelectedForm(attachedForm); + await fetchAttachedFields(attachedForm.uri); + }} + > + + {attachedForm.metadataForm.name} + + + + {canEdit && ( + { + e.currentTarget.style.opacity = 1; + }} + onMouseOut={(e) => { + e.currentTarget.style.opacity = 0.5; + }} + onClick={() => deleteAttachedForm(attachedForm.uri)} + /> + )} + + + + )) + ) : ( + + + + No Metadata Forms Attached + + + )} + + + + {loadingFields && ( + + + + )} + {addNewForm && selectedForm && !loadingFields && ( + { + setAddNewForm(false); + setSelectedForm(null); + setFields([]); + }} + entityUri={entityUri} + entityType={entityType} + onSubmit={async (attachedForm) => { + setSelectedForm(attachedForm); + setFields(attachedForm.fields); + fetchList().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchAvailableForms().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + setAddNewForm(false); + }} + /> + )} + {!addNewForm && !loadingFields && selectedForm && ( + + )} + + + ); +}; diff --git a/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js new file mode 100644 index 000000000..60f12fed3 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js @@ -0,0 +1,224 @@ +import React, { useState } from 'react'; + +import { + Box, + Button, + Card, + CardContent, + CardHeader, + Grid, + Typography +} from '@mui/material'; +import { + BooleanField, + DropDownField, + FreeInputField, + GlossaryTermField +} from './fields'; +import { useClient } from '../../../services'; +import { useDispatch } from 'react-redux'; +import { Formik } from 'formik'; +import { LoadingButton } from '@mui/lab'; +import SendIcon from '@mui/icons-material/Send'; +import { createAttachedMetadataForm } from '../services'; +import { SET_ERROR } from '../../../globalErrors'; + +export const RenderedMetadataForm = (props) => { + const client = useClient(); + const dispatch = useDispatch(); + const { + fields, + onSubmit, + onCancel, + entityUri, + entityType, + metadataForm, + preview + } = props; + + const [localFields, setLocalFields] = useState([...fields]); + localFields.forEach((field, index) => { + if (field.type === 'Boolean' && field.value === undefined) { + field.value = false; + } + }); + + const updateFields = (index, value) => { + const updatedFields = [...localFields]; + updatedFields[index] = { + ...updatedFields[index], + value: value + }; + setLocalFields(updatedFields); + }; + + const getFieldElement = (field, index, errors) => { + if (field.type === 'Boolean') { + return ( + updateFields(index, value)} + /> + ); + } + + if (field.type === 'Glossary Term') { + return ( + updateFields(index, value)} + /> + ); + } + + if ( + ['Integer', 'String'].includes(field.type) && + (!field.possibleValues || field.possibleValues.length === 0) + ) { + return ( + updateFields(index, value)} + /> + ); + } + + if ( + ['Integer', 'String'].includes(field.type) && + field.possibleValues && + field.possibleValues.length > 0 + ) { + return ( + updateFields(index, value)} + /> + ); + } + }; + + const submit = async (values, setStatus, setSubmitting, setErrors) => { + const errors = {}; + localFields.forEach((field) => { + if (field.required && !field.value) { + errors[field.name] = true; + } + }); + if (Object.keys(errors).length > 0) { + setErrors(errors); + setSubmitting(false); + return; + } + const input = { + entityUri: entityUri, + entityType: entityType, + fields: localFields.map((field) => ({ + fieldUri: field.uri, + value: JSON.stringify(field.value) || 'null' + })) + }; + const response = await client.mutate( + createAttachedMetadataForm(metadataForm.uri, input) + ); + if (!response.errors && response.data.createAttachedMetadataForm !== null) { + onSubmit(response.data.createAttachedMetadataForm); + } else { + const error = response.errors + ? response.errors[0].message + : 'Fail to attach Metadata Form'; + dispatch({ type: SET_ERROR, error }); + } + setSubmitting(false); + }; + + return ( + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleBlur, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( +

    + + + + + + + + } + color="primary" + disabled={isSubmitting || preview} + type="submit" + variant="contained" + > + Attach + + + + + + + + + {localFields.map((field, index) => ( + + + + {getFieldElement(field, index, errors)} + + + + {field.required && ( + {'Required. '} + )} + {field.description} + + + + + ))} + + )} + + + ); +}; diff --git a/frontend/src/modules/Metadata_Forms/services/attachMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/attachMetadataForm.js new file mode 100644 index 000000000..d5240daf0 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/attachMetadataForm.js @@ -0,0 +1,44 @@ +import { gql } from 'apollo-boost'; + +export const createAttachedMetadataForm = (formUri, input) => ({ + variables: { + formUri, + input + }, + mutation: gql` + mutation createAttachedMetadataForm( + $formUri: String! + $input: NewAttachedMetadataFormInput! + ) { + createAttachedMetadataForm(formUri: $formUri, input: $input) { + uri + metadataForm { + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + userRole + } + entityType + entityUri + fields { + uri + field { + uri + name + description + required + type + glossaryNodeUri + glossaryNodeName + possibleValues + } + value + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/deleteAttachedMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/deleteAttachedMetadataForm.js new file mode 100644 index 000000000..79d33c4ab --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/deleteAttachedMetadataForm.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const deleteAttachedMetadataForm = (attachedFormUri) => ({ + variables: { + attachedFormUri: attachedFormUri + }, + mutation: gql` + mutation deleteAttachedMetadataForm($attachedFormUri: String!) { + deleteAttachedMetadataForm(attachedFormUri: $attachedFormUri) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/getAttachedMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/getAttachedMetadataForm.js new file mode 100644 index 000000000..26c09cfe9 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/getAttachedMetadataForm.js @@ -0,0 +1,41 @@ +import { gql } from 'apollo-boost'; + +export const getAttachedMetadataForm = (uri) => ({ + variables: { + uri + }, + query: gql` + query getAttachedMetadataForm($uri: String!) { + getAttachedMetadataForm(uri: $uri) { + uri + metadataForm { + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + userRole + } + entityType + entityUri + fields { + uri + field { + uri + name + description + required + type + glossaryNodeUri + glossaryNodeName + possibleValues + displayNumber + } + value + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/index.js b/frontend/src/modules/Metadata_Forms/services/index.js index c10246552..99e3b2312 100644 --- a/frontend/src/modules/Metadata_Forms/services/index.js +++ b/frontend/src/modules/Metadata_Forms/services/index.js @@ -1,5 +1,10 @@ -export * from './listMetadataForms'; +export * from './listUserMetadataForms'; +export * from './listEntityMetadataForms'; export * from './createMetadataForm'; export * from './getMetadataForm'; export * from './createMetadataFormField'; export * from './deleteMetadataFormField'; +export * from './attachMetadataForm'; +export * from './getAttachedMetadataForm'; +export * from './listAttachedMetadataForms'; +export * from './deleteAttachedMetadataForm'; diff --git a/frontend/src/modules/Metadata_Forms/services/listAttachedMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listAttachedMetadataForms.js new file mode 100644 index 000000000..656094389 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/listAttachedMetadataForms.js @@ -0,0 +1,33 @@ +import { gql } from 'apollo-boost'; + +export const listAttachedMetadataForms = (filter) => ({ + variables: { + filter + }, + query: gql` + query listAttachedMetadataForms($filter: AttachedMetadataFormFilter) { + listAttachedMetadataForms(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + uri + metadataForm { + uri + name + description + SamlGroupName + visibility + homeEntity + homeEntityName + userRole + } + entityType + entityUri + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/listEntityMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listEntityMetadataForms.js new file mode 100644 index 000000000..05b4af11d --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/listEntityMetadataForms.js @@ -0,0 +1,29 @@ +import { gql } from 'apollo-boost'; + +export const listEntityMetadataForms = (filter) => ({ + variables: { + filter + }, + query: gql` + query listEntityMetadataForms($filter: MetadataFormFilter) { + listEntityMetadataForms(filter: $filter) { + hasTenantPermissions + count + page + pages + hasNext + hasPrevious + nodes { + uri + name + description + SamlGroupName + userRole + visibility + homeEntity + homeEntityName + } + } + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js b/frontend/src/modules/Metadata_Forms/services/listUserMetadataForms.js similarity index 71% rename from frontend/src/modules/Metadata_Forms/services/listMetadataForms.js rename to frontend/src/modules/Metadata_Forms/services/listUserMetadataForms.js index 37ec67014..ddc5453b1 100644 --- a/frontend/src/modules/Metadata_Forms/services/listMetadataForms.js +++ b/frontend/src/modules/Metadata_Forms/services/listUserMetadataForms.js @@ -1,12 +1,12 @@ import { gql } from 'apollo-boost'; -export const listMetadataForms = (filter) => ({ +export const listUserMetadataForms = (filter) => ({ variables: { filter }, query: gql` - query listMetadataForms($filter: MetadataFormFilter) { - listMetadataForms(filter: $filter) { + query listUserMetadataForms($filter: MetadataFormFilter) { + listUserMetadataForms(filter: $filter) { hasTenantPermissions count page diff --git a/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js index c483e2924..82302075f 100644 --- a/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js +++ b/frontend/src/modules/Metadata_Forms/views/MetadataFormList.js @@ -21,7 +21,7 @@ import { } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { fetchEnums, useClient } from 'services'; -import { listMetadataForms } from '../services'; +import { listUserMetadataForms } from '../services'; import { MetadataFormListItem, CreateMetadataFormModal } from '../components'; function MetadataFormsListPageHeader(props) { @@ -118,11 +118,11 @@ const MetadataFormsList = () => { const fetchItems = useCallback(async () => { setLoading(true); - const response = await client.query(listMetadataForms(filter)); + const response = await client.query(listUserMetadataForms(filter)); if (!response.errors) { - setItems(response.data.listMetadataForms); + setItems(response.data.listUserMetadataForms); setHasManagePermissions( - response.data.listMetadataForms.hasTenantPermissions + response.data.listUserMetadataForms.hasTenantPermissions ); } else { dispatch({ type: SET_ERROR, error: response.errors[0].message }); diff --git a/frontend/src/modules/Organizations/views/OrganizationView.js b/frontend/src/modules/Organizations/views/OrganizationView.js index 5a8095e5b..ccc868a39 100644 --- a/frontend/src/modules/Organizations/views/OrganizationView.js +++ b/frontend/src/modules/Organizations/views/OrganizationView.js @@ -38,10 +38,18 @@ import { OrganizationOverview, OrganizationTeams } from '../components'; +import { MetadataAttachment } from '../../Metadata_Forms/components'; +import { isModuleEnabled, ModuleNames } from '../../../utils'; const tabs = [ { label: 'Overview', value: 'overview', icon: }, { label: 'Environments', value: 'environments', icon: }, + { + label: 'Metadata', + value: 'metadata', + icon: , + active: isModuleEnabled(ModuleNames.METADATA_FORMS) + }, { label: 'Teams', value: 'teams', @@ -49,6 +57,8 @@ const tabs = [ } ]; +const activeTabs = tabs.filter((tab) => tab.active !== false); + const OrganizationView = () => { const { settings } = useSettings(); const { enqueueSnackbar } = useSnackbar(); @@ -57,6 +67,7 @@ const OrganizationView = () => { const dispatch = useDispatch(); const params = useParams(); const client = useClient(); + const [isAdmin, setIsAdmin] = useState(false); const [currentTab, setCurrentTab] = useState('overview'); const [loading, setLoading] = useState(true); const [isArchiveObjectModalOpen, setIsArchiveObjectModalOpen] = @@ -96,6 +107,11 @@ const OrganizationView = () => { const response = await client.query(getOrganization(params.uri)); if (!response.errors) { setOrg(response.data.getOrganization); + setIsAdmin( + ['Admin', 'Owner'].indexOf( + response.data.getOrganization.userRoleInOrganization + ) !== -1 + ); setLoading(false); } setLoading(false); @@ -161,27 +177,29 @@ const OrganizationView = () => { - - - - + {isAdmin && ( + + + + + )} @@ -193,7 +211,7 @@ const OrganizationView = () => { value={currentTab} variant="fullWidth" > - {tabs.map((tab) => ( + {activeTabs.map((tab) => ( { {currentTab === 'environments' && ( )} + {currentTab === 'metadata' && ( + + )} diff --git a/frontend/src/modules/S3_Datasets/views/DatasetView.js b/frontend/src/modules/S3_Datasets/views/DatasetView.js index 5dc77d1d1..6f1800a64 100644 --- a/frontend/src/modules/S3_Datasets/views/DatasetView.js +++ b/frontend/src/modules/S3_Datasets/views/DatasetView.js @@ -44,8 +44,9 @@ import { DatasetOverview, DatasetUpload } from '../components'; -import { isFeatureEnabled } from 'utils'; +import { isFeatureEnabled, isModuleEnabled, ModuleNames } from 'utils'; import { RequestAccessModal } from 'modules/Catalog/components'; +import { MetadataAttachment } from '../../Metadata_Forms/components'; const DatasetView = () => { const dispatch = useDispatch(); @@ -69,7 +70,13 @@ const DatasetView = () => { value: 'data', icon: }, - { label: 'Overview', value: 'overview', icon: } + { label: 'Overview', value: 'overview', icon: }, + { + label: 'Metadata', + value: 'metadata', + icon: , + active: isModuleEnabled(ModuleNames.METADATA_FORMS) + } ]; if (isAdmin) { tabs.push({ @@ -97,7 +104,7 @@ const DatasetView = () => { }); } } - return tabs; + return tabs.filter((tab) => tab.active !== false); }; const handleDeleteObjectModalOpen = () => { @@ -354,6 +361,13 @@ const DatasetView = () => { {currentTab === 'data' && ( )} + {currentTab === 'metadata' && ( + + )} {currentTab === 'overview' && ( )} diff --git a/tests_new/integration_tests/modules/metadata_forms/queries.py b/tests_new/integration_tests/modules/metadata_forms/queries.py index e8bd1e711..362a38df3 100644 --- a/tests_new/integration_tests/modules/metadata_forms/queries.py +++ b/tests_new/integration_tests/modules/metadata_forms/queries.py @@ -1,13 +1,13 @@ # TODO: This file will be replaced by using the SDK directly -def list_metadata_forms(client, filter): +def list_user_metadata_forms(client, filter): query = { - 'operationName': 'listMetadataForms', + 'operationName': 'listUserMetadataForms', 'variables': {'filter': filter}, 'query': f""" - query listMetadataForms($filter: MetadataFormFilter) {{ - listMetadataForms(filter: $filter) {{ + query listUserMetadataForms($filter: MetadataFormFilter) {{ + listUserMetadataForms(filter: $filter) {{ count page pages @@ -27,7 +27,7 @@ def list_metadata_forms(client, filter): """, } response = client.query(query=query) - return response.data.listMetadataForms + return response.data.listUserMetadataForms def get_metadata_form_full_info(client, uri): diff --git a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py index 3124ae1b0..47bb2c8b6 100644 --- a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py +++ b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py @@ -1,6 +1,6 @@ from assertpy import assert_that -from integration_tests.modules.metadata_forms.queries import list_metadata_forms, get_metadata_form_full_info +from integration_tests.modules.metadata_forms.queries import list_user_metadata_forms, get_metadata_form_full_info from integration_tests.modules.metadata_forms.mutations import ( update_metadata_form_fields, @@ -25,7 +25,7 @@ def test_delete_unauth(client2, metadata_form_1): def test_list_metadata_forms(client1, metadata_form_1): filter = {'page': 1, 'pageSize': 10, 'search_input': metadata_form_1.name} - response = list_metadata_forms(client1, filter) + response = list_user_metadata_forms(client1, filter) assert_that(response.count).is_greater_than(0) all_uris = [item.uri for item in response.nodes] @@ -34,7 +34,7 @@ def test_list_metadata_forms(client1, metadata_form_1): def test_list_metadata_forms_access_control(client2, metadata_form_1, metadata_form_2, metadata_form_3): filter = {'page': 1, 'pageSize': 10} - response = list_metadata_forms(client2, filter) + response = list_user_metadata_forms(client2, filter) all_uris = [item.uri for item in response.nodes] assert_that(all_uris).does_not_contain(metadata_form_2.uri) # visibility Team Only, team = group1 assert_that(all_uris).contains(metadata_form_1.uri) # visibility: Global @@ -56,33 +56,6 @@ def test_get_metadataform_full_info(client1, metadata_form_1, metadata_form_fiel assert_that(all_field_uris).contains(metadata_form_field_1.uri) -def test_delete_metadata_form_field_unauth(client2, metadata_form_1, metadata_form_field_1): - err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE FIELD operation:' - err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' - - assert_that(delete_metadata_form_field).raises(Exception).when_called_with( - client2, metadata_form_1.uri, metadata_form_field_1.uri - ).contains(err_message_part1, err_message_part2) - - -def test_update_metadata_form_fields_unauth(client2, metadata_form_1, metadata_form_field_1): - field_data = { - 'name': 'field_1', - 'metadataFormUri': metadata_form_1.uri, - 'description': 'Field 1', - 'type': 'String', - 'required': True, - 'displayNumber': 1, - } - - err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling UPDATE FIELDS operation:' - err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' - - assert_that(update_metadata_form_fields).raises(Exception).when_called_with( - client2, metadata_form_1.uri, [field_data] - ).contains(err_message_part1, err_message_part2) - - def test_create_update_field_invalid_value(client1, metadata_form_1, metadata_form_field_1): new_field_data = { 'name': 'field_1', @@ -111,6 +84,33 @@ def test_create_update_field_invalid_value(client1, metadata_form_1, metadata_fo ).contains('InvalidInput', 'from glossary list') +def test_delete_metadata_form_field_unauth(client2, metadata_form_1, metadata_form_field_1): + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE FIELD operation:' + err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' + + assert_that(delete_metadata_form_field).raises(Exception).when_called_with( + client2, metadata_form_1.uri, metadata_form_field_1.uri + ).contains(err_message_part1, err_message_part2) + + +def test_update_metadata_form_fields_unauth(client2, metadata_form_1, metadata_form_field_1): + field_data = { + 'name': 'field_1', + 'metadataFormUri': metadata_form_1.uri, + 'description': 'Field 1', + 'type': 'String', + 'required': True, + 'displayNumber': 1, + } + + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling UPDATE FIELDS operation:' + err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' + + assert_that(update_metadata_form_fields).raises(Exception).when_called_with( + client2, metadata_form_1.uri, [field_data] + ).contains(err_message_part1, err_message_part2) + + def test_metadata_form_fields_batch(client1, metadata_form_1, metadata_form_field_1): fullinfo_before = get_metadata_form_full_info(client1, metadata_form_1.uri) From fd3dc9d05d4b7dddc5b34b774a9058607bb44399 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 10 Sep 2024 08:26:06 +0200 Subject: [PATCH 058/188] Redshift data sharing - Documentation 1 - Redshift Connections and Datasets (#1512) ### Feature or Bugfix Documentation ### Detail Added userguide documentation for #955 - Redshift Connections - Redshift Dataset import and table management - Changes in S3 Datasets to clearly differentiate both types ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../pictures/datasets/s3_dataset_creation.png | Bin 0 -> 191753 bytes .../redshift_connection_1.png | Bin 0 -> 88356 bytes .../redshift_connection_menu.png | Bin 0 -> 139807 bytes .../redshift_dataset_add_tables.png | Bin 0 -> 65978 bytes .../redshift_dataset_creation.png | Bin 0 -> 196983 bytes .../redshift_dataset_creation_form.png | Bin 0 -> 142378 bytes .../redshift_dataset_data.png | Bin 0 -> 95895 bytes .../redshift_dataset_overview.png | Bin 0 -> 138725 bytes .../redshift_datasets/redshift_schema.png | Bin 0 -> 52527 bytes .../redshift_datasets/redshift_secret.png | Bin 0 -> 25052 bytes .../redshift_secret_tags.png | Bin 0 -> 41526 bytes .../redshift_datasets/redshift_table.png | Bin 0 -> 81486 bytes .../userguide/docs/redshift_datasets.md | 160 ++++++++++++++++++ .../docs/{datasets.md => s3_datasets.md} | 28 +-- documentation/userguide/docs/tables.md | 4 +- documentation/userguide/mkdocs.yml | 5 +- 16 files changed, 179 insertions(+), 18 deletions(-) create mode 100644 documentation/userguide/docs/pictures/datasets/s3_dataset_creation.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_1.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_menu.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_add_tables.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_creation.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_creation_form.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_data.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_overview.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_schema.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_secret.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_secret_tags.png create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_table.png create mode 100644 documentation/userguide/docs/redshift_datasets.md rename documentation/userguide/docs/{datasets.md => s3_datasets.md} (94%) diff --git a/documentation/userguide/docs/pictures/datasets/s3_dataset_creation.png b/documentation/userguide/docs/pictures/datasets/s3_dataset_creation.png new file mode 100644 index 0000000000000000000000000000000000000000..025c9ca3e8364febf32c6b5bf34fb4c95a701a57 GIT binary patch literal 191753 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
    x#3Qc^O{jQ|pzSEE%#jZYQ+HliNh32!fMQ#N}| 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%0A}}z^UZm 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

      XwMIkbEhtQwf&q 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 b|Jh|LWyBQ5SI>=0z&{09Rhbeg(-;2(FyC=0 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_1.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d48c7785c6c288fb24b03f090202d12c3b66188d GIT binary patch literal 88356 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%0DCcUf+bKkTxNkad2bre9R?B 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_menu.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..51a2bed0b3df4b0e019fd1ba44994a8371c3d896 GIT binary patch literal 139807 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≊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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_secret.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_secret.png new file mode 100644 index 0000000000000000000000000000000000000000..fd51760ed00a0a09d922507a3092cf0cbf4fc10c GIT binary patch literal 25052 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

      %OE!C+SchFpsW1{flSQ(N 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_secret_tags.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_secret_tags.png new file mode 100644 index 0000000000000000000000000000000000000000..53fba2151214467bde2f2bcd36b6c3030dd148af GIT binary patch literal 41526 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 RoqWUq1fH&bF6*2UngG0b%nJYj literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_table.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_table.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1920cae0800e3a7a4fe900e21f27376bf6e2e8 GIT binary patch literal 81486 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�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 U)#>ox6n{q@T>nvU`1~*b1(IOCga7~l literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/redshift_datasets.md b/documentation/userguide/docs/redshift_datasets.md new file mode 100644 index 000000000..de9914327 --- /dev/null +++ b/documentation/userguide/docs/redshift_datasets.md @@ -0,0 +1,160 @@ +# **Redshift Datasets** + +Data producers can import their Redshift tables into data.all and make them discoverable and shareable in an easy +and secure manner. + +In data.all we will work with 2 main constructs: +- **Redshift Connections**, which store the necessary metadata to connect to a Redshift namespace +- **Redshift Datasets**, group of tables imported into data.all Catalog using a data.all Redshift Connection. + + +## **Redshift Connections** + +Data.all Redshift Connections are metadata used by data.all and by data.all users to connect to Redshift namespaces. +1) Both Redshift Serverless and Provisioned clusters are supported +2) Connections use AWS Secrets Manager secrets or Redshift users to connect to the namespace. Check the [documentation](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html#query-editor-v2-connecting) to understand each mechanism. Additional connection mechanisms might be considered in the future. +3) There are 2 types of Redshift Connections, `ADMIN` and `DATA_USER` + - `ADMIN` - the user whose credentials are provided has permissions to all namespace tables that can be managed in data.all and can create and manage Redshift datashares and redshift role permissions. In data.all it will be used to process share requests. + - `DATA_USER` - the user whose credentials are provided has permissions to read the tables that the data user wants to import. In data.all it will be used to import datasets. + + +**Pre-requisites** +data.all requires Redshift clusters and users to be managed by a dedicated team and infrastructure created outside of data.all. +For this reason, data.all will work "importing" existing infrastructure and users, requiring the following information on import: +- Redshift Serverless namespace/workgroup or Provisioned cluster: the user creating the connection must know the `namespace ID` and the `workgroup` for Redshift Serverless or the `cluster ID` for the case of Redshift Provisioned clusters. +- Redshift user: Redshift administrators manage Redshift users outside of data.all. Our recommendation is to create a dedicated `ADMIN` user for data.all in each onboarded cluster. Data users can be reused. +- Connection details: + - Redshift user (only valid for Provisioned clusters): data.all will generate a temporary password to connect to the database. In this case no password or secret needs to be provided to data.all. + - AWS Secrets Manager Secret (recommended): the username and password for the Redshift user can be stored in a Secret that **MUST** be tagged with 2 tags. Check the pictures below to see how it should look in the AWS Console. + - tagKey: dataall, tagValue: True - Needed for data.all to be able to access the Secret + - tagKey: Redshift, tagValue: Any - Needed by Redshift to use as connection + +![](pictures/redshift_datasets/redshift_secret.png#zoom#shadow) + +![](pictures/redshift_datasets/redshift_secret_tags.png#zoom#shadow) + + +Redshift Connections are created inside the Environment view. Select an Environment and navigate to the **Connections** tab. +Here you can click on the **Add Connection** button to create a new Redshift Connection. + +![](pictures/redshift_datasets/redshift_connection_menu.png#zoom#shadow) + +Then, fill in the following form: + +![](pictures/redshift_datasets/redshift_connection_1.png#zoom#shadow) + +| Field | Description | Required | Editable |Example +|-----------------|----------------------------------------------------------------------------------------------------------------|----------|----------|------------- +| Connection name | Name of the Redshift connection | Yes | No | main-cluster-admin +| Connection type | Level of access of the connection. It can either be `ADMIN` or `DATA_USER`. See definitions above. | Yes | No | `ADMIN` +| Team | Team that owns the connection. This team is the only team that can use this connection to import datasets. | Yes | No | DataScienceTeam +| Redshift type | Type of Redshift Namespace. It can either be `serverless` or `cluster`. | Yes | No | `serverless` +| Cluster Id | If the Redshift type is `cluster`, we need to introduce the cluster Id. | Yes | No | redshift-cluster-1 +| Namespace Id | If the Redshift type is `serverless`, we need to introduce the namespace Id. | Yes | No | 0000000-0000-0000-0000-000000000000 +| Workgroup | If the Redshift type is `serverless`, we need to introduce the workgroup. | Yes | No | workgroup1 +| Database | Database that we will connect to inside the cluster. | Yes | No | dev +| Redshift User | Only available for `cluster` Redshift type. This is the user | Yes | No | user1 +| Secret Arn | Secrets Manager secret arn storing username and password for the connection. See pre-requisites section above. | Yes | Yes | arn:aws:secretsmanager:eu-west-1:000000000000:secret:redshift!redshift-cluster-1-awsuser + + +Data.all will verify the connection upon creation. If the database does not exist or if the connection details are not accessible or do not +correspond to cluster it will notify the user in the error banner. + +**Delete a Connection** +To delete a connection, click on the trash icon next to the item in the Actions column. If the Connection has been used +to import datasets it cannot be removed until all associated datasets are deleted. + +## :material-new-box: **Import a Redshift Dataset** +To create a new dataset, navigate to the Datasets view and click on **New Dataset**. A window like the one in the picture +will allow you to select the type of Dataset you want to create or import. In this case you need to select the Import +Redshift Dataset option. + +![](pictures/redshift_datasets/redshift_dataset_creation.png#zoom#shadow) + +Next, fill in the creation form with the Dataset details. Data.all will list the Redshift connections owned by the selected team in the environment +and fetch the schemas and tables from Redshift. It is possible to select all tables or a subset of tables as appears in the picture. + +![](pictures/redshift_datasets/redshift_dataset_creation_form.png#zoom#shadow) + + +**Generic dataset fields** + +| Field | Description | Required | Editable |Example +|----------------------------|-----------------------------------------------------------|-----------------|----------|------------- +| Dataset name | Name of the dataset | Yes | Yes | AnyDataset +| Short description | Short description about the dataset | No | Yes | For AnyProject predictive model +| Environment | Environment (mapped to an AWS account) | Yes | No | DataScience +| Organization (auto-filled) | Organization of the environment | Yes | No | AnyCompany EMEA +| Team | Team that owns the dataset | Yes | No | DataScienceTeam +| Stewards | Team that can manage share requests on behalf of owners | No | Yes | FinanceBITeam, FinanceMgmtTeam +| Confidentiality | Level of confidentiality: Unclassified, Oficial or Secret | Yes | Yes | Secret +| Topics | Topics that can later be used in the Catalog | Yes, at least 1 | Yes | Finance +| Tags | Tags that can later be used in the Catalog | Yes, at least 1 | Yes | deleteme, ds +| Auto Approval | Whether shares for this dataset need approval from dataset owners/stewards | Yes (default `Disabled`) | Yes | Disabled, Enabled + +**Redshift Dataset fields** + +| Field | Description | Required | Editable |Example +|----------------------------|-------------------------------------------------------------------|----------|----------|------------- +| Redshift Connection | Name of the Redshift connection used to read the Redshift tables | Yes | No | main-cluster-userA +| Redshift database schema | Name of the Redshift schema where the tables are stored | Yes | No | public +| Redshift tables | List of tables to be imported. They can be added at a later stage | No | Yes | customer, orders + +Once a Redshift dataset has been imported, the dataset and its imported tables can be searched by any user in the Catalog. + +## :material-card-search-outline: **Navigate Redshift dataset tabs** +**Overview** + +This tab includes meaningful metadata about the dataset and the Redshift connection used. + +![](pictures/redshift_datasets/redshift_dataset_overview.png#zoom#shadow) + +**Data** + +This tab shows the Redshift database, schema and tables imported. From here we can add, edit, delete and see the details of a table. + +![](pictures/redshift_datasets/redshift_dataset_data.png#zoom#shadow) + +**Shares** +Show a list of the share requests for this Dataset. It is possible to verify the health and reapply shares for the +entire Dataset + +### **Manage Redshift Tables** + +**Add tables** + +![](pictures/redshift_datasets/redshift_dataset_add_tables.png#zoom#shadow) + +**View and edit tables** + +We can view the schema of a table directly from the Data tab, by clicking on the **Open table schema** button. + +![](pictures/redshift_datasets/redshift_schema.png#zoom#shadow) + +We can also see a full view of the table by selecting the arrow in the Actions column. A new window for the table +will open. In this view we can edit the metadata of the table in data.all (Tags, glossary, description) and we can +see the schema in full-width in the Columns tab. + +![](pictures/redshift_datasets/redshift_table.png#zoom#shadow) + +**Delete a table** + +We can delete Redshift tables by clicking on the trash icon next to the table we want to "un-import". Un-import is a better +word to describe what will happen: the metadata of the table will be deleted from data.all Catalog, but the original +Redshift table still exists in Redshift. + +Dataset owners need to revoke access to the table before deleting. Data.all prevents deletion of a table if there are +share requests currently sharing the table. + +## :material-pencil-outline: **Edit and update a dataset** +Data owners can edit the dataset by clicking on the **edit** button, editing the editable fields and saving the changes. + +## :material-trash-can-outline: **Delete a dataset** +To delete a dataset, in the selected dataset window click on the **delete** button in the top-right corner. data.all Redshift +Datasets don't deploy any CloudFormation stack, no additional resources need to be cleaned up. The original Redshift tables +will still exist in Redshift. + + +In the same way as it happens with single tables, Dataset owners need to revoke access to all tables before deleting. +Data.all prevents deletion of a dataset if there are +share requests currently sharing any dataset table. \ No newline at end of file diff --git a/documentation/userguide/docs/datasets.md b/documentation/userguide/docs/s3_datasets.md similarity index 94% rename from documentation/userguide/docs/datasets.md rename to documentation/userguide/docs/s3_datasets.md index 01cc4fdca..49ccf9e48 100644 --- a/documentation/userguide/docs/datasets.md +++ b/documentation/userguide/docs/s3_datasets.md @@ -1,9 +1,8 @@ -# **Datasets** -## **Datasets** -In *data.all*, a Dataset is a representation of multiple AWS resources that helps -users store data and establish the basis to make this data discoverable and shareable with other teams. +# **S3 Datasets** +In *data.all*, a S3/Glue Dataset is a representation of multiple AWS resources that helps +users store data in a data lake and establish the basis to make this data discoverable and shareable with other teams. -When data owners create a dataset the following resources are +When data owners create a S3/Glue dataset the following resources are deployed on the selected environment and its linked AWS account: 1. Amazon S3 Bucket to store the data on AWS. @@ -35,15 +34,12 @@ protected using AWS Lake Formation. With Lake Formation, the Dataset IAM role ge access to the Dataset Glue database only. -### Tables and Folders +### Glue Tables and S3 Folders -Inside a dataset we can store structured data in tables and unstructured data in folders. +Inside a S3/Glue dataset we can store structured data in Glue tables and unstructured data in S3 folders. - Tables are the representation of **AWS Glue Catalog** tables that are created on the dataset's Glue database on AWS. -- Folders are the representation of an **Amazon S3 prefix** where -data owners can organize their data. For example, when data is loaded, it -can go to a folder named “raw” then after it's processed the data moves -to a folder called “silver” and so on. +- Folders are the representation of an **Amazon S3 prefix** where any type of file can be stored. Such as images, unstructured text formats... ### Dataset ownership @@ -75,7 +71,11 @@ dataset content? users belonging to... ## :material-new-box: **Create a dataset** -On left pane choose **Datasets**, then click on the **Create** button. Fill the dataset form. +To create a new dataset, navigate to the Datasets view and click on **New Dataset**. A window like the one in the picture +will allow you to select the type of Dataset you want to create or import. In this case you need to select the Create +S3/Glue Dataset option. + +![](pictures/datasets/s3_dataset_creation.png#zoom#shadow) ![create_dataset](pictures/datasets/dat_create_form.png#zoom#shadow) @@ -148,7 +148,7 @@ In the KMS key policy we need to grant explicit permission to the pivot role. At ### (Going Further) Support for Datasets with Externally-Managed Glue Catalog -If the dataset you are trying to import relates to Glue Database that is managed in a separate account, data.all's import dataset feature can also handle importing and sharing these type of datasets in data.all. Assuming the following pre-requisites are copmlete: +If the dataset you are trying to import relates to Glue Database that is managed in a separate account, data.all's import dataset feature can also handle importing and sharing these type of datasets in data.all. Assuming the following pre-requisites are complete: - There exists an AWS Account (i.e. the Catalog Account) which is: - Onboarded as a data.all environment (e.g. Env A) @@ -287,7 +287,7 @@ Once the filters are created, they will show in the Filters Table Tab: Table filters are not editable. To update an existing filter you must: -1. Revoke all associated share items using the filter (if applcable) +1. Revoke all associated share items using the filter (if applicable) 2. Delete the table filter 3. Create a new table filter with any updates as necessary diff --git a/documentation/userguide/docs/tables.md b/documentation/userguide/docs/tables.md index cb8396a28..454e3d7c5 100644 --- a/documentation/userguide/docs/tables.md +++ b/documentation/userguide/docs/tables.md @@ -1,4 +1,4 @@ -## **Tables** +## **Glue Tables** In this section we will go through the different tabs in the Table window. We can reach this view: 1. by selecting a table from the data Catalog @@ -94,7 +94,7 @@ Click on the **Delete** button in the top right corner and confirm the deletion. revoked before deleting the table. Check the Shares section to learn how to grant and revoke access. -## **Folders** +## **S3 Folders** To open the Folder window you can either find your chosen folder in the Catalog or navigate to the dataset and then in the **Folders** tab click on the arrow in the *Actions* column of your folder: ![](pictures/tables/folder_1.png#zoom#shadow) diff --git a/documentation/userguide/mkdocs.yml b/documentation/userguide/mkdocs.yml index b4f66db6d..097ae71fa 100644 --- a/documentation/userguide/mkdocs.yml +++ b/documentation/userguide/mkdocs.yml @@ -7,8 +7,9 @@ nav: - Environments and teams: environments.md - Maintenance Window: maintenance.md - Discover: - - Datasets: datasets.md - - Tables and Folders: tables.md + - S3 Datasets: s3_datasets.md + - Glue Tables and S3 Folders: tables.md + - Redshift Datasets: redshift_datasets.md - Catalog and Glossaries: catalog.md - Shares: shares.md - Play: From 02ccb28cdcfff709a02a71cdb4afc66df2e9fb88 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 10 Sep 2024 08:27:45 +0200 Subject: [PATCH 059/188] Redshift data sharing - Documentation 2 - Redshift Sharing (#1519) ### Feature or Bugfix - Documentation ### Detail Added userguide documentation for https://github.com/data-dot-all/dataall/issues/955 - list down all shareable items with small definition - Add technical details for each type of shareable item (including Redshift) - Add data consumption section for Redshift ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- documentation/userguide/docs/shares.md | 144 ++++++++++++++++--------- 1 file changed, 93 insertions(+), 51 deletions(-) diff --git a/documentation/userguide/docs/shares.md b/documentation/userguide/docs/shares.md index 6ebe01d29..946e7b6da 100644 --- a/documentation/userguide/docs/shares.md +++ b/documentation/userguide/docs/shares.md @@ -2,21 +2,23 @@ Teams can browse data.all catalog and request access for data assets. data.all shares data between teams securely within and environment and across environments without any data movement. +**Concepts** -Datasets can contain tables and folders. Tables are Glue Tables registered in Glue Catalog. -data.all uses (and automates) -Lake Formation sharing feature -to create access permissions to tables, meaning that no data is copied between AWS accounts. - -Under-the-hood, folders are prefixes inside the dataset S3 bucket. To create sharing of folders in data.all, -we create an S3 access point per requester group to handle its access to specific prefixes in the dataset. +- Share request or Share Object: one for each dataset and requester team. +- Share Item refers to the individual Redshift table, Glue table, folder or S3 Bucket that is added to the Share request. -data.all also supports the sharing of the entire S3 Bucket to requestors using IAM permissions and S3/KMS policies if desired. +**Shareable items** -**Concepts** +In data.all there are 2 types of datasets: S3 Datasets and Redshift Datasets. Here is an overview of the items that can +be shared using data.all by type of dataset. A detailed explanation of the technical details for each type can be found +in the AWS data sharing technical details section. -- Share request or Share Object: one for each dataset and requester team. -- Share Item refers to the individual tables and folders or S3 Bucket that are added to the Share request. +- From S3 Datasets we can share: + - S3 Bucket of the Dataset - using IAM permissions and S3/KMS policies + - one or multiple Glue Tables (Tables) - using [Lake Formation](Lake Formation sharing feature) to create access permissions to tables, meaning that no data is copied between AWS accounts. + - one or multiple S3 Prefixes (Folders) - using S3 access points to manage granular S3 policies. +- From Redshift Datasets we can share: + - one or multiple Redshift Tables - using Redshift datashares **Sharing workflow** @@ -45,7 +47,7 @@ However, the request cannot contain any shared items. Users must revoke all shar ![wf](pictures/shares/share_sm.png#zoom#shadow) -### **Create a share request (requester)** +## **Create a share request (requester)** On left pane choose **Catalog** then **Search** for the table you want to access. Click on the lock icon of the selected data asset. @@ -100,7 +102,7 @@ Approvers can see the request in their received share requests, alongside the cu ![submit_share_2](pictures/shares/shares_outbox.png#zoom#shadow) -## (Optional Pre-Approval Work) Adding Filters to Table Share Items (approver) +## (Optional Pre-Approval Work) Adding Filters to Glue Table Share Items (approver) As an approver, you will also see the option to **Edit Filters** for Glue Table share items: @@ -139,7 +141,8 @@ are in `SHARE_IN_PROGRESS` state. ![accept_share](pictures/shares/shares_in_progress.png#zoom#shadow) -When the task is completed, the items go to `SHARE_SUCCEEDED` or `SHARE_FAILED` and the request is `PROCESSED`. +When the task is completed, the items go to `SHARE_SUCCEEDED` or `SHARE_FAILED` and the request is `PROCESSED`. To understand +what happens under-the-hood when each share item is processed, check out the AWS data sharing technical details section. ![accept_share](pictures/shares/shares_completed.png#zoom#shadow) @@ -197,27 +200,93 @@ we receive an error. Once we have revoked access to all items we can delete the ![share](pictures/shares/shares_delete_unauth.png#zoom#shadow) +## **AWS data sharing technical details** +Here is a brief explanation of how each type of sharing mechanism is implemented in data.all. It is important to +understand what really happens in AWS when dealing with downstream integrations that will consume shared data. + +### S3 Bucket sharing +In this type of share the permissions are granted to the IAM role specified in the request as principal. It +can be either a data.all team IAM role or an external role defined as consumption role. + +When processing a sharing task for an S3 Bucket, data.all will: +1. Update the S3 Bucket policy to add permissions to the principal IAM role +2. Create/Update the IAM policy "Share policy" that grants IAM permissions to the requested S3 bucket and KMS key. Attach this policy to the principal IAM role. +3. (If the Bucket is encrypted using a KMS key) Update the KMS Key policy to add permissions to the principal IAM role + +### Glue Table sharing +In this type of share the permissions are granted to the IAM role specified in the request as principal. It +can be either a data.all team IAM role or an external role defined as consumption role. + +When processing a sharing task for a Glue Table, data.all will: +1. Create a Glue database in the target account with name of the original database plus the suffix `_shared`. This database will be re-used if other share requests for the same source databaser are processed for other principals in the same environment. +2. (If the share is cross-account) Revoke IAMAllowedPrincipal permissions from the table to ensure Lake Formation is used in the management of the table access and update LakeFormation to use Version 3 if not already >=3 +3. Grant Lake Formation permissions on the original database and table to the IAM principals in the target. If the share is cross account this step will create a RAM invitation that data.all will identify and accept. +4. Create a resource link table from the original database table to the `_shared` database in the target account +5. Grant Lake Formation permissions to the resource link table for the IAM principals. + +### S3 Prefix sharing (Folders) +In this type of share the permissions are granted to the IAM role specified in the request as principal. It +can be either a data.all team IAM role or an external role defined as consumption role. + +When processing a sharing task for a Folder, data.all will: +1. Update the Dataset Bucket policy to allow access point sharing. This is a one-time operation +2. Create/Update an S3 Access Point and its policy granting permissions to the requested S3 prefix (folder) in the bucket for the principal IAM role. +3. Create/Update the IAM policy "Share policy" that grants IAM permissions to the S3 Access Point and KMS key. Attach this policy to the principal IAM role. +4. (If the Bucket is encrypted using a KMS key) Update the KMS Key policy to add permissions to the principal IAM role + +### Redshift Table sharing +In this type of share the permissions are granted to the Redshift role in the Redshift namespace specified in the request. + +When processing a sharing task for a Redshift table, data.all will: +1. In the source namespace, create a Redshift datashare. Add requested schema and tables to the datashare. +2. Grant access to the datashare for the consumer namespace (same account) or for the consumer AWS account (cross account) +3. (If cross-account share) Authorize and associate datashare with the target namespace +4. In the target namespace, create local database for the datashare and grant permissions to the principal Redshift role. +5. In the target namespace, create external schema in local database and grant usage permissions to the principal Redshift role. +6. For the local database and for the external schema, grant select access to the requested table to the principal Redshift role. ## **Consume shared data** -Data.all tables are Glue tables shared using AWS Lake Formation, therefore any service that reads Glue tables and integrates -with Lake Formation is able to consume the data. Permissions are granted to the team role or the consumption role that -has been specified in the request. +Knowing what we know form the previous section we can now define some ways of consuming the shared data for each type of shareable item. + +### S3 Bucket sharing +For S3 bucket sharing, IAM policies, S3 bucket policies, and KMS Key policies (if applicable) are updated to enable sharing of the S3 Bucket resource. +Therefore, we can use S3 API calls to access the data referring the Bucket directly. We need to assume or use the credentials +of the principal IAM role used in the share request (team IAM role or consumption IAM role). -For the case of folders, the underlying sharing mechanism used is S3 Access Points. You can read data inside a prefix using -the IAM role of the requester (same as with tables) and executing get calls to the S3 access point. +Here is an example using the AWS CLI: -For example: ```json - aws s3 ls arn:aws:s3:::accesspoint/-/folder2/ + aws s3 ls s3:// ``` -For S3 bucket sharing, IAM policies, S3 bucket policies, and KMS Key policies (if applicable) are updated to enable sharing of the S3 Bucket resource. +### Glue Table sharing + +Glue tables are shared using AWS Lake Formation, therefore any service that reads Glue tables and integrates +with Lake Formation is able to consume the data. + +We need to assume or use the credentials +of the principal IAM role used in the share request (team IAM role or consumption IAM role). + +### S3 Prefix sharing (Folders) +For the case of folders, the underlying sharing mechanism used is S3 Access Points. You can read data inside a prefix +executing API calls to the S3 access point. -For example, access to the bucket would be similar to: +We need to assume or use the credentials +of the principal IAM role used in the share request (team IAM role or consumption IAM role). + +For example, we could use the AWS CLI with the following access point: ```json - aws s3 ls s3:// + aws s3 ls arn:aws:s3:::accesspoint/-// ``` + +### Redshift Table sharing + +Redshift tables are shared through Redshift datashares and the principal of the share request is a Redshift role. Thus, +we can consume data accessing the Redshift Query editor or other applications that consume from Redshift with a user +that has access to the Redshift role. + + ## **Email Notification on share requests** In data.all, you can enable email notification to send emails to requesters and approvers of a share request. Email notifications @@ -237,30 +306,3 @@ needed for during the deployment phase. Please review steps for setting up email in the `Deploy to AWS` section -[//]: # (### **Use data subscriptions**) - -[//]: # (data.all helps data owners publish notification updates to all their data consumers.) - -[//]: # (It also helps data consumers react to new data shared by the owners.) - -[//]: # () -[//]: # (#### Step 1: Enable subscriptions on the environment) - -[//]: # () -[//]: # (Check the environment documentation for the steps to enable subscriptions.) - -[//]: # () -[//]: # (!!!abstract "AWS SNS Topics") - -[//]: # ( When subscriptions are enabled, **as a data producer you can publish a message** to the producers SNS topic.) - -[//]: # ( You can also **subscribe to data consumers SNS topic** to be aware of the latest data updates from the producers.) - -[//]: # () -[//]: # (#### Step 2: Publish notification update) - -[//]: # (**IMPORTANT**) - -[//]: # () -[//]: # (This feature is disabled at the moment) - From 1804aab5cc4fdb208f1e3ce28560372d8c8ed842 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:06:47 +0200 Subject: [PATCH 060/188] Upgrade `path-to-regexp` to 0.1.10 (#1525) ### Feature or Bugfix - Upgrade dependency ### Detail Upgrade `path-to-regexp` to avoid vulnerability. Well explained in https://github.com/pillarjs/path-to-regexp/security/advisories/GHSA-9wv6-86v2-598j ### Relates - https://github.com/pillarjs/path-to-regexp/security/advisories/GHSA-9wv6-86v2-598j ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 7 ++++--- frontend/package.json | 6 ++++-- frontend/yarn.lock | 8 ++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ad3742070..b4018311c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -27792,9 +27792,10 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index c39c4c0c0..27887513c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -96,7 +96,8 @@ "webpack-dev-middleware": "5.3.4", "express": "4.19.2", "ejs": "3.1.10", - "fast-xml-parser": "4.4.1" + "fast-xml-parser": "4.4.1", + "path-to-regexp": "0.1.10" }, "resolutions": { "react-redux": "^7.2.6", @@ -112,7 +113,8 @@ "express": "4.19.2", "ejs": "3.1.10", "ws": "^8.17.1", - "fast-xml-parser": "4.4.1" + "fast-xml-parser": "4.4.1", + "path-to-regexp": "0.1.10" }, "devDependencies": { "env-cmd": "^10.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 0a8a1f79a..27eaa6f11 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -10290,10 +10290,10 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10, path-to-regexp@0.1.7: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-type@^4.0.0: version "4.0.0" From cf3b45758368ee069639cbde8fefe2be23578a91 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:21:47 -0400 Subject: [PATCH 061/188] Add External Id Conditions to Deployment Roles (#1521) ### Feature or Bugfix - Enhancement ### Detail - Add external ID condition to roles created in deployment account and used by tooling account (frontend config role, stacks updater role, and S3 Deployment role) ### Relates N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- Makefile | 2 +- deploy/stacks/backend_stack.py | 2 ++ deploy/stacks/cloudfront.py | 2 ++ deploy/stacks/cognito.py | 2 ++ deploy/stacks/container.py | 14 ++++++++++---- deploy/stacks/iam_utils.py | 5 +++++ deploy/stacks/pipeline.py | 7 ++++++- 7 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 deploy/stacks/iam_utils.py diff --git a/Makefile b/Makefile index 6605b8b96..1bdaf935d 100644 --- a/Makefile +++ b/Makefile @@ -82,7 +82,7 @@ deploy-image: docker push ${account}.dkr.ecr.${region}.amazonaws.com/${repo}:${image-tag} assume-role: - aws sts assume-role --role-arn "arn:aws:iam::${REMOTE_ACCOUNT_ID}:role/${REMOTE_ROLE}" --role-session-name "session1" >.assume_role_json + aws sts assume-role --role-arn "arn:aws:iam::${REMOTE_ACCOUNT_ID}:role/${REMOTE_ROLE}" --external-id ${EXTERNAL_ID} --role-session-name "session1" >.assume_role_json echo "export AWS_ACCESS_KEY_ID=$$(cat .assume_role_json | jq '.Credentials.AccessKeyId' -r)" >.env.assumed_role echo "export AWS_SECRET_ACCESS_KEY=$$(cat .assume_role_json | jq '.Credentials.SecretAccessKey' -r)" >>.env.assumed_role echo "export AWS_SESSION_TOKEN=$$(cat .assume_role_json | jq '.Credentials.SessionToken' -r)" >>.env.assumed_role diff --git a/deploy/stacks/backend_stack.py b/deploy/stacks/backend_stack.py index 0dd9f4350..66f0e6d64 100644 --- a/deploy/stacks/backend_stack.py +++ b/deploy/stacks/backend_stack.py @@ -25,6 +25,7 @@ from .sqs import SqsStack from .trigger_function_stack import TriggerFunctionStack from .vpc import VpcStack +from .iam_utils import get_tooling_account_external_id class BackendStack(Stack): @@ -138,6 +139,7 @@ def __init__( f'{resource_prefix}-{envname}-frontend-config-role', role_name=f'{resource_prefix}-{envname}-frontend-config-role', assumed_by=iam.AccountPrincipal(tooling_account_id), + external_ids=[get_tooling_account_external_id(self.account)], ) cross_account_frontend_config_role.add_to_policy( iam.PolicyStatement( diff --git a/deploy/stacks/cloudfront.py b/deploy/stacks/cloudfront.py index 6b07ba8e1..72798a85c 100644 --- a/deploy/stacks/cloudfront.py +++ b/deploy/stacks/cloudfront.py @@ -23,6 +23,7 @@ from .pyNestedStack import pyNestedClass from .solution_bundling import SolutionBundling from .waf_rules import get_waf_rules +from .iam_utils import get_tooling_account_external_id class CloudfrontDistro(pyNestedClass): @@ -227,6 +228,7 @@ def __init__( f'S3DeploymentRole{envname}', role_name=f'{resource_prefix}-{envname}-S3DeploymentRole', assumed_by=iam.AccountPrincipal(tooling_account_id), + external_ids=[get_tooling_account_external_id(self.account)], ) resources_for_cross_account = [] resources_for_cross_account.append(f'{cloudfront_bucket.bucket_arn}/*') diff --git a/deploy/stacks/cognito.py b/deploy/stacks/cognito.py index 661dc87a0..e0123a9f6 100644 --- a/deploy/stacks/cognito.py +++ b/deploy/stacks/cognito.py @@ -21,6 +21,7 @@ from .pyNestedStack import pyNestedClass from .solution_bundling import SolutionBundling from .waf_rules import get_waf_rules +from .iam_utils import get_tooling_account_external_id class IdpStack(pyNestedClass): @@ -198,6 +199,7 @@ def __init__( f'{resource_prefix}-{envname}-cognito-config-role', role_name=f'{resource_prefix}-{envname}-cognito-config-role', assumed_by=iam.AccountPrincipal(tooling_account_id), + external_ids=[get_tooling_account_external_id(self.account)], ) cross_account_frontend_config_role.add_to_policy( iam.PolicyStatement( diff --git a/deploy/stacks/container.py b/deploy/stacks/container.py index 5150e08b1..745e4c01d 100644 --- a/deploy/stacks/container.py +++ b/deploy/stacks/container.py @@ -15,6 +15,7 @@ from .pyNestedStack import pyNestedClass from .run_if import run_if from .deploy_config import deploy_config +from .iam_utils import get_tooling_account_external_id class ContainerStack(pyNestedClass): @@ -562,10 +563,15 @@ def create_cicd_stacks_updater_role(self, envname, resource_prefix, tooling_acco self, id=f'StackUpdaterCBRole{envname}', role_name=f'{resource_prefix}-{envname}-cb-stackupdater-role', - assumed_by=iam.CompositePrincipal( - iam.ServicePrincipal('codebuild.amazonaws.com'), - iam.AccountPrincipal(tooling_account_id), - ), + assumed_by=iam.AccountPrincipal(tooling_account_id), + external_ids=[get_tooling_account_external_id(self.account)], + ) + cicd_stacks_updater_role.assume_role_policy.add_statements( + iam.PolicyStatement( + effect=iam.Effect.ALLOW, + principals=[iam.ServicePrincipal('codebuild.amazonaws.com')], + actions=['sts:AssumeRole'], + ) ) cicd_stacks_updater_role.add_to_policy( iam.PolicyStatement( diff --git a/deploy/stacks/iam_utils.py b/deploy/stacks/iam_utils.py new file mode 100644 index 000000000..8c63179d2 --- /dev/null +++ b/deploy/stacks/iam_utils.py @@ -0,0 +1,5 @@ +import hashlib + + +def get_tooling_account_external_id(account: str): + return hashlib.sha256(str(account).encode('UTF-8')).hexdigest()[:12] diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 804792923..5411e337e 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -20,6 +20,7 @@ from .codeartifact import CodeArtifactStack from .ecr_stage import ECRStage from .vpc import VpcStack +from .iam_utils import get_tooling_account_external_id class PipelineStack(Stack): @@ -683,6 +684,7 @@ def set_approval_tests_stage( 'echo "[profile buildprofile]" > ~/.aws/config', f'echo "role_arn = {frontend_deployment_role_arn}" >> ~/.aws/config', 'echo "credential_source = EcsContainer" >> ~/.aws/config', + f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', f'export COGNITO_CLIENT=$(aws ssm get-parameter --name /dataall/{target_env["envname"]}/cognito/appclient --profile buildprofile --output text --query "Parameter.Value")', f'export API_ENDPOINT=$(aws ssm get-parameter --name /dataall/{target_env["envname"]}/apiGateway/backendUrl --profile buildprofile --output text --query "Parameter.Value")', @@ -728,6 +730,7 @@ def set_stacks_updater_stage( 'echo "[profile buildprofile]" > ~/.aws/config', f'echo "role_arn = arn:aws:iam::{target_env["account"]}:role/{self.resource_prefix}-{target_env["envname"]}-cb-stackupdater-role" >> ~/.aws/config', 'echo "credential_source = EcsContainer" >> ~/.aws/config', + f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', f"export cluster_name=$(aws ssm get-parameter --name /dataall/{target_env['envname']}/ecs/cluster/name --profile buildprofile --output text --query 'Parameter.Value')", f"export private_subnets=$(aws ssm get-parameter --name /dataall/{target_env['envname']}/ecs/private_subnets --profile buildprofile --output text --query 'Parameter.Value')", @@ -788,6 +791,7 @@ def set_cloudfront_stage(self, target_env): 'echo "[profile buildprofile]" > ~/.aws/config', f'echo "role_arn = arn:aws:iam::{target_env["account"]}:role/{self.resource_prefix}-{target_env["envname"]}-S3DeploymentRole" >> ~/.aws/config', 'echo "credential_source = EcsContainer" >> ~/.aws/config', + f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', 'export AWS_PROFILE=buildprofile', 'pip install boto3==1.34.35', @@ -826,7 +830,7 @@ def set_cloudfront_stage(self, target_env): ), commands=[ f'aws codeartifact login --tool pip --repository {self.codeartifact.codeartifact_pip_repo_name} --domain {self.codeartifact.codeartifact_domain_name} --domain-owner {self.codeartifact.domain.attr_owner}', - f"make assume-role REMOTE_ACCOUNT_ID={target_env['account']} REMOTE_ROLE={self.resource_prefix}-{target_env['envname']}-S3DeploymentRole", + f"make assume-role REMOTE_ACCOUNT_ID={target_env['account']} REMOTE_ROLE={self.resource_prefix}-{target_env['envname']}-S3DeploymentRole EXTERNAL_ID={get_tooling_account_external_id(target_env['account'])}", '. ./.env.assumed_role', 'aws sts get-caller-identity', 'export AWS_DEFAULT_REGION=us-east-1', @@ -927,6 +931,7 @@ def set_albfront_stage(self, target_env, repository_name): 'echo "[profile buildprofile]" > ~/.aws/config', f'echo "role_arn = {frontend_deployment_role_arn}" >> ~/.aws/config', 'echo "credential_source = EcsContainer" >> ~/.aws/config', + f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', 'export AWS_PROFILE=buildprofile', 'pip install boto3==1.34.35', From 9b8197cb74927132d59a91915245935492c68b08 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:22:15 -0400 Subject: [PATCH 062/188] Add bucket versioning (#1522) ### Feature or Bugfix - Enhancement ### Detail - Add bucket versioning to any bucket that does not have - Pipeline Artifacts Bucket - CloudFront FE Bucket - Cloudfront User Guide Bucket ### Relates N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 28 ++++--------------- .../cdk/datapipelines_pipeline.py | 28 +++++++++++++++++++ deploy/stacks/cloudfront.py | 2 ++ deploy/stacks/pipeline.py | 24 ++++++++++++++-- 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/.checkov.baseline b/.checkov.baseline index afbf8e8d4..9be5e7958 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -365,8 +365,7 @@ { "resource": "AWS::S3::Bucket.dataalldevfrontend64065639", "check_ids": [ - "CKV_AWS_18", - "CKV_AWS_21" + "CKV_AWS_18" ] }, { @@ -378,8 +377,7 @@ { "resource": "AWS::S3::Bucket.dataalldevuserguide5964DC13", "check_ids": [ - "CKV_AWS_18", - "CKV_AWS_21" + "CKV_AWS_18" ] } ] @@ -444,12 +442,6 @@ "CKV_AWS_111" ] }, - { - "resource": "AWS::IAM::Policy.dataallmaincdkpipelinePipelineRoleDefaultPolicy98FFDB2A", - "check_ids": [ - "CKV_AWS_111" - ] - }, { "resource": "AWS::Lambda::Function.CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", "check_ids": [ @@ -459,10 +451,9 @@ ] }, { - "resource": "AWS::S3::Bucket.dataallmaincdkpipelinePipelineArtifactsBucketF1C6C602", + "resource": "AWS::S3::Bucket.pipelineartifactsbucketE44F7DE9", "check_ids": [ - "CKV_AWS_18", - "CKV_AWS_21" + "CKV_AWS_18" ] }, { @@ -633,16 +624,9 @@ ] }, { - "resource": "AWS::KMS::Key.thistableArtifactsBucketEncryptionKey127159D3", - "check_ids": [ - "CKV_AWS_7" - ] - }, - { - "resource": "AWS::S3::Bucket.thistableArtifactsBucket145BFFDF", + "resource": "AWS::S3::Bucket.thistableartifactsbucketDB1C8C64", "check_ids": [ - "CKV_AWS_18", - "CKV_AWS_21" + "CKV_AWS_18" ] } ] diff --git a/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py b/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py index d02c55dfc..9343fe558 100644 --- a/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py +++ b/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py @@ -10,6 +10,7 @@ from aws_cdk import aws_codepipeline_actions as codepipeline_actions from aws_cdk import aws_iam as iam from aws_cdk import aws_kms as kms +from aws_cdk import aws_s3 as s3 from aws_cdk.aws_s3_assets import Asset from botocore.exceptions import ClientError @@ -71,6 +72,27 @@ def get_env_team(self, pipeline: DataPipeline) -> EnvironmentGroup: env = EnvironmentService.get_environment_group(session, pipeline.SamlGroupName, pipeline.environmentUri) return env + def create_pipeline_artifacts_bucket(self, artifact_bucket_base_name: str): + artifact_bucket_key = kms.Key( + self, + f'{artifact_bucket_base_name}-key', + removal_policy=RemovalPolicy.DESTROY, + alias=f'{artifact_bucket_base_name}-key', + enable_key_rotation=True, + ) + artifact_bucket = s3.Bucket( + self, + f'{artifact_bucket_base_name}-bucket', + bucket_name=f'{artifact_bucket_base_name}-bucket', + block_public_access=s3.BlockPublicAccess.BLOCK_ALL, + removal_policy=RemovalPolicy.DESTROY, + versioned=True, + encryption_key=artifact_bucket_key, + enforce_ssl=True, + ) + + return artifact_bucket + def __init__(self, scope, id, target_uri: str = None, **kwargs): kwargs.setdefault('tags', {}).update({'utility': 'dataall-data-pipeline'}) super().__init__( @@ -232,6 +254,9 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): id=pipeline.name, pipeline_name=pipeline.name, restart_execution_on_update=True, + artifact_bucket=self.create_pipeline_artifacts_bucket( + artifact_bucket_base_name=f'{pipeline.name}-artifacts' + ), ) self.codepipeline_pipeline = codepipeline_pipeline self.source_artifact = codepipeline.Artifact() @@ -301,6 +326,9 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): id=f'{pipeline.name}-{env.stage}', pipeline_name=f'{pipeline.name}-{env.stage}', restart_execution_on_update=True, + artifact_bucket=self.create_pipeline_artifacts_bucket( + artifact_bucket_base_name=f'{pipeline.name}-artifacts-{env.stage}' + ), ) self.codepipeline_pipeline = codepipeline_pipeline self.source_artifact = codepipeline.Artifact() diff --git a/deploy/stacks/cloudfront.py b/deploy/stacks/cloudfront.py index 72798a85c..ac86817df 100644 --- a/deploy/stacks/cloudfront.py +++ b/deploy/stacks/cloudfront.py @@ -97,6 +97,7 @@ def __init__( removal_policy=RemovalPolicy.DESTROY, block_public_access=s3.BlockPublicAccess.BLOCK_ALL, enforce_ssl=True, + versioned=True, object_ownership=s3.ObjectOwnership.OBJECT_WRITER, ) @@ -387,6 +388,7 @@ def build_static_site( removal_policy=RemovalPolicy.DESTROY, block_public_access=s3.BlockPublicAccess.BLOCK_ALL, enforce_ssl=True, + versioned=True, object_ownership=s3.ObjectOwnership.OBJECT_WRITER, ) diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 5411e337e..7c4360a24 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -8,6 +8,7 @@ from aws_cdk import aws_codecommit as codecommit from aws_cdk import aws_ec2 as ec2 from aws_cdk import aws_iam as iam +from aws_cdk import aws_kms as kms from aws_cdk import aws_s3 as s3 from aws_cdk import pipelines from aws_cdk.aws_codebuild import BuildEnvironmentVariable, BuildEnvironmentVariableType @@ -118,6 +119,26 @@ def __init__( ) self.pipeline_bucket.grant_read_write(iam.AccountPrincipal(self.account)) + self.artifact_bucket_name = f'{self.resource_prefix}-{self.git_branch}-artifacts-{self.account}-{self.region}' + self.artifact_bucket_key = kms.Key( + self, + f'{self.artifact_bucket_name}-key', + removal_policy=RemovalPolicy.DESTROY, + alias=f'{self.artifact_bucket_name}-key', + enable_key_rotation=True, + ) + self.artifact_bucket = s3.Bucket( + self, + 'pipeline-artifacts-bucket', + bucket_name=f'{self.resource_prefix}-{self.git_branch}-artifacts-{self.account}-{self.region}', + block_public_access=s3.BlockPublicAccess.BLOCK_ALL, + removal_policy=RemovalPolicy.DESTROY, + versioned=True, + encryption_key=self.artifact_bucket_key, + enforce_ssl=True, + auto_delete_objects=True, + ) + if self.source == 'codestar_connection': source = CodePipelineSource.connection( repo_string=repo_string, branch=self.git_branch, connection_arn=repo_connection_arn @@ -134,6 +155,7 @@ def __init__( f'{self.resource_prefix}-{self.git_branch}-cdkpipeline', pipeline_name=f'{self.resource_prefix}-pipeline-{self.git_branch}', publish_assets_in_parallel=False, + artifact_bucket=self.artifact_bucket, synth=pipelines.CodeBuildStep( 'Synth', input=source, @@ -151,8 +173,6 @@ def __init__( role=self.baseline_codebuild_role.without_policy_updates(), vpc=self.vpc, ), - cross_account_keys=True, - enable_key_rotation=True, code_build_defaults=pipelines.CodeBuildOptions( build_environment=codebuild.BuildEnvironment( environment_variables={ From 7af8b11b7f4756e7b297afaae84a418847641afb Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 11 Sep 2024 05:17:09 -0400 Subject: [PATCH 063/188] Upgrade body parser dependency (#1530) ### Feature or Bugfix - Bugfix ### Detail - Upgrade `body-parser` dep to avoid vulnerability. Well explained in [GHSA-qwcr-r2fm-qrc7](https://github.com/advisories/GHSA-qwcr-r2fm-qrc7) ### Relates - [GHSA-qwcr-r2fm-qrc7](https://github.com/advisories/GHSA-qwcr-r2fm-qrc7) ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 24 +- frontend/package.json | 3 +- frontend/yarn.lock | 2838 ++++++++++++++++++++++++++++++------ 3 files changed, 2442 insertions(+), 423 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b4018311c..d0cc3049b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -16386,9 +16386,10 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -16398,7 +16399,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -16440,6 +16441,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 27887513c..b97e798a5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -97,7 +97,8 @@ "express": "4.19.2", "ejs": "3.1.10", "fast-xml-parser": "4.4.1", - "path-to-regexp": "0.1.10" + "path-to-regexp": "0.1.10", + "body-parser": "^1.20.3" }, "resolutions": { "react-redux": "^7.2.6", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 27eaa6f11..3fe9bd655 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@4.3.3", "@adobe/css-tools@^4.0.1": +"@adobe/css-tools@4.3.3": version "4.3.3" resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz" integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== @@ -289,15 +289,6 @@ fast-xml-parser "^4.2.5" tslib "^1.8.0" -"@aws-crypto/crc32@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" - integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== - dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - "@aws-crypto/crc32@^1.0.0": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-1.2.2.tgz" @@ -307,6 +298,15 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" +"@aws-crypto/crc32@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz" + integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + "@aws-crypto/ie11-detection@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz" @@ -321,6 +321,19 @@ dependencies: tslib "^1.11.1" +"@aws-crypto/sha256-browser@^1.0.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" + integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== + dependencies: + "@aws-crypto/ie11-detection" "^1.0.0" + "@aws-crypto/sha256-js" "^1.2.2" + "@aws-crypto/supports-web-crypto" "^1.0.0" + "@aws-crypto/util" "^1.2.2" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + tslib "^1.11.1" + "@aws-crypto/sha256-browser@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz" @@ -335,20 +348,7 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-crypto/sha256-browser@^1.0.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz" - integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== - dependencies: - "@aws-crypto/ie11-detection" "^1.0.0" - "@aws-crypto/sha256-js" "^1.2.2" - "@aws-crypto/supports-web-crypto" "^1.0.0" - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@1.2.2", "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2": +"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2", "@aws-crypto/sha256-js@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz" integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== @@ -357,7 +357,7 @@ "@aws-sdk/types" "^3.1.0" tslib "^1.11.1" -"@aws-crypto/sha256-js@2.0.0", "@aws-crypto/sha256-js@^2.0.0": +"@aws-crypto/sha256-js@^2.0.0", "@aws-crypto/sha256-js@2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz" integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== @@ -1641,12 +1641,7 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" -"@aws-sdk/types@3.186.0": - version "3.186.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" - integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== - -"@aws-sdk/types@3.6.1", "@aws-sdk/types@^3.1.0": +"@aws-sdk/types@^3.1.0", "@aws-sdk/types@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.6.1.tgz" integrity sha512-4Dx3eRTrUHLxhFdLJL8zdNGzVsJfAxtxPYYGmIddUkO2Gj3WA1TGjdfG4XN/ClI6e1XonCHafQX3UYO/mgnH3g== @@ -1659,6 +1654,11 @@ "@smithy/types" "^3.0.0" tslib "^2.6.2" +"@aws-sdk/types@3.186.0": + version "3.186.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.186.0.tgz" + integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== + "@aws-sdk/url-parser-native@3.6.1": version "3.6.1" resolved "https://registry.npmjs.org/@aws-sdk/url-parser-native/-/url-parser-native-3.6.1.tgz" @@ -1868,6 +1868,13 @@ "@aws-sdk/types" "3.6.1" tslib "^1.8.0" +"@aws-sdk/util-utf8-browser@^3.0.0", "@aws-sdk/util-utf8-browser@3.6.1": + version "3.6.1" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" + integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== + dependencies: + tslib "^1.8.0" + "@aws-sdk/util-utf8-browser@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz" @@ -1875,13 +1882,6 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-utf8-browser@3.6.1", "@aws-sdk/util-utf8-browser@^3.0.0": - version "3.6.1" - resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz" - integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== - dependencies: - tslib "^1.8.0" - "@aws-sdk/util-utf8-node@3.186.0": version "3.186.0" resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz" @@ -1915,12 +1915,12 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -1950,7 +1950,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": +"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.24.7", "@babel/generator@^7.7.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz" integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== @@ -1975,7 +1975,7 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz" integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== @@ -2021,7 +2021,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== @@ -2082,7 +2082,7 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz" integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== -"@babel/helper-remap-async-to-generator@^7.24.7": +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz" integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== @@ -2166,7 +2166,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== @@ -2203,7 +2203,17 @@ "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-proposal-class-properties@^7.16.0": +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -2220,7 +2230,23 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-decorators" "^7.24.7" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz" + integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-default-from" "^7.24.7" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -2228,7 +2254,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.0": +"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -2236,7 +2262,26 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-optional-chaining@^7.16.0": +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.0": version "7.21.0" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -2293,13 +2338,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz" + integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" @@ -2307,7 +2359,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.7": +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz" integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== @@ -2356,7 +2408,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -2384,7 +2436,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -2420,7 +2472,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7": +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== @@ -2437,7 +2489,7 @@ "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.24.7": +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== @@ -2453,7 +2505,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.7": +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz" integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== @@ -2477,7 +2529,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.7": +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz" integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== @@ -2491,7 +2543,7 @@ "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7": +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== @@ -2499,7 +2551,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.7": +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz" integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== @@ -2545,7 +2597,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.16.0": +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz" integrity sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA== @@ -2561,7 +2613,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.7": +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz" integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== @@ -2578,7 +2630,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.7": +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz" integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== @@ -2608,7 +2660,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.7": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz" integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== @@ -2635,7 +2687,7 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== @@ -2701,14 +2753,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.7": +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.7": +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz" integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== @@ -2716,7 +2768,7 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.7": +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== @@ -2740,7 +2792,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz" integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== @@ -2754,7 +2806,21 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.24.7": +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz" + integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz" + integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz" integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== @@ -2788,7 +2854,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@^7.16.4": +"@babel/plugin-transform-runtime@^7.0.0", "@babel/plugin-transform-runtime@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== @@ -2800,14 +2866,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7": +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.7": +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== @@ -2815,7 +2881,7 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.7": +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== @@ -2836,7 +2902,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typescript@^7.24.7": +"@babel/plugin-transform-typescript@^7.24.7", "@babel/plugin-transform-typescript@^7.5.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz" integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== @@ -2861,7 +2927,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.7": +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.7": version "7.24.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== @@ -2877,7 +2943,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz" integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== @@ -2964,6 +3030,15 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-flow@^7.13.13": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz" + integrity sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-flow-strip-types" "^7.24.7" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" @@ -2985,7 +3060,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.24.7" "@babel/plugin-transform-react-pure-annotations" "^7.24.7" -"@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": version "7.24.7" resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz" integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== @@ -2996,19 +3071,30 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.7" "@babel/plugin-transform-typescript" "^7.24.7" +"@babel/register@^7.13.16": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz" + integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.3.3": +"@babel/template@^7.0.0", "@babel/template@^7.24.7", "@babel/template@^7.3.3": version "7.24.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== @@ -3017,7 +3103,7 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/traverse@7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.7.2": +"@babel/traverse@7.23.2": version "7.23.2" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -3033,7 +3119,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.7" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz" integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== @@ -3229,7 +3315,7 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" -"@emotion/core@^10.0.28": +"@emotion/core@^10.0.27", "@emotion/core@^10.0.28": version "10.3.1" resolved "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== @@ -3250,22 +3336,15 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - "@emotion/hash@^0.9.1": version "0.9.1" resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== -"@emotion/is-prop-valid@0.8.8": - version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@emotion/is-prop-valid@^1.2.2": version "1.2.2" @@ -3274,17 +3353,24 @@ dependencies: "@emotion/memoize" "^0.8.1" -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/is-prop-valid@0.8.8": + version "0.8.8" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" "@emotion/memoize@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.8.2": +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.2", "@emotion/react@^11.9.0": version "11.11.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz" integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== @@ -3309,7 +3395,7 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" -"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4": +"@emotion/serialize@^1.1.2": version "1.1.4" resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== @@ -3320,16 +3406,38 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/serialize@^1.1.3": + version "1.1.4" + resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/serialize@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz" + integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" "@emotion/sheet@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + "@emotion/styled-base@^10.3.0": version "10.3.0" resolved "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz" @@ -3348,7 +3456,7 @@ "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" -"@emotion/styled@^11.8.1": +"@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": version "11.11.5" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz" integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ== @@ -3365,41 +3473,41 @@ resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@0.7.5": - version "0.7.5" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - "@emotion/unitless@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== - "@emotion/utils@^1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz" integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== -"@emotion/weak-memoize@0.2.5": - version "0.2.5" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== "@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -3464,6 +3572,18 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" @@ -3495,6 +3615,11 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" @@ -3569,6 +3694,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" @@ -3579,6 +3711,16 @@ "@types/node" "*" jest-mock "^27.5.1" +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" @@ -3598,6 +3740,18 @@ jest-mock "^27.5.1" jest-util "^27.5.1" +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" @@ -3712,6 +3866,17 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" @@ -3811,7 +3976,7 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.20": +"@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.40": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -3849,7 +4014,7 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.5.2": +"@mui/material@^5.0.0", "@mui/material@^5.4.1", "@mui/material@^5.5.2", "@mui/material@^5.8.6", "@mui/material@>=5.15.0": version "5.15.19" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.19.tgz" integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== @@ -3909,7 +4074,7 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.15": +"@mui/system@^5.15.15", "@mui/system@^5.4.1", "@mui/system@^5.8.0": version "5.15.15" resolved "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz" integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== @@ -3995,7 +4160,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -4031,6 +4196,310 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@react-native-community/cli-clean@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz" + integrity sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + +"@react-native-community/cli-config@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.8.tgz" + integrity sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + fast-glob "^3.3.2" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.8.tgz" + integrity sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.8.tgz" + integrity sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA== + dependencies: + "@react-native-community/cli-config" "13.6.8" + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-platform-apple" "13.6.8" + "@react-native-community/cli-platform-ios" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.8.tgz" + integrity sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ== + dependencies: + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.8.tgz" + integrity sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + fast-xml-parser "^4.2.4" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-apple@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.8.tgz" + integrity sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg== + dependencies: + "@react-native-community/cli-tools" "13.6.8" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + fast-xml-parser "^4.0.12" + ora "^5.4.1" + +"@react-native-community/cli-platform-ios@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.8.tgz" + integrity sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw== + dependencies: + "@react-native-community/cli-platform-apple" "13.6.8" + +"@react-native-community/cli-server-api@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.8.tgz" + integrity sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg== + dependencies: + "@react-native-community/cli-debugger-ui" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^6.2.2" + +"@react-native-community/cli-tools@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.8.tgz" + integrity sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + execa "^5.0.0" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.8.tgz" + integrity sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@13.6.8": + version "13.6.8" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.8.tgz" + integrity sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ== + dependencies: + "@react-native-community/cli-clean" "13.6.8" + "@react-native-community/cli-config" "13.6.8" + "@react-native-community/cli-debugger-ui" "13.6.8" + "@react-native-community/cli-doctor" "13.6.8" + "@react-native-community/cli-hermes" "13.6.8" + "@react-native-community/cli-server-api" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + "@react-native-community/cli-types" "13.6.8" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native/assets-registry@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.84.tgz" + integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ== + +"@react-native/babel-plugin-codegen@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz" + integrity sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw== + dependencies: + "@react-native/codegen" "0.74.84" + +"@react-native/babel-preset@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.84.tgz" + integrity sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.74.84" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.84.tgz" + integrity sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ== + dependencies: + "@babel/parser" "^7.20.0" + glob "^7.1.1" + hermes-parser "0.19.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.84.tgz" + integrity sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ== + dependencies: + "@react-native-community/cli-server-api" "13.6.8" + "@react-native-community/cli-tools" "13.6.8" + "@react-native/dev-middleware" "0.74.84" + "@react-native/metro-babel-transformer" "0.74.84" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + querystring "^0.2.1" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz" + integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A== + +"@react-native/dev-middleware@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz" + integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.74.84" + "@rnx-kit/chromium-edge-launcher" "^1.0.0" + chrome-launcher "^0.15.2" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + open "^7.0.3" + selfsigned "^2.4.1" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz" + integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg== + +"@react-native/js-polyfills@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz" + integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ== + +"@react-native/metro-babel-transformer@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz" + integrity sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.74.84" + hermes-parser "0.19.1" + nullthrows "^1.1.1" + +"@react-native/normalize-colors@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz" + integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A== + +"@react-native/virtualized-lists@0.74.84": + version "0.74.84" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz" + integrity sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + "@reduxjs/toolkit@^1.8.0": version "1.9.7" resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz" @@ -4041,9 +4510,21 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" +"@rnx-kit/chromium-edge-launcher@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== + dependencies: + "@types/node" "^18.0.0" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -4083,6 +4564,23 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz" integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" @@ -4100,6 +4598,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" @@ -4241,6 +4753,20 @@ lz-string "^1.5.0" pretty-format "^27.0.2" +"@testing-library/dom@>=7.21.4": + version "10.1.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz" + integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + "@testing-library/jest-dom@^5.16.2": version "5.17.0" resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz" @@ -4307,7 +4833,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -4514,6 +5040,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.0": + version "18.19.34" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.34.tgz" + integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== + dependencies: + undici-types "~5.26.4" + "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" @@ -4568,7 +5101,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17": +"@types/react@*", "@types/react@^17", "@types/react@^17.0.0 || ^18.0.0": version "17.0.80" resolved "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz" integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== @@ -4577,6 +5110,14 @@ "@types/scheduler" "^0.16" csstype "^3.0.2" +"@types/react@^18.2.6": + version "18.3.3" + resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -4659,6 +5200,13 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^16.0.0": version "16.0.9" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" @@ -4678,7 +5226,7 @@ resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.7.tgz" integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA== -"@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -4701,7 +5249,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -4747,7 +5295,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -4774,7 +5322,7 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": +"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -4875,7 +5423,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": +"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -4965,7 +5513,14 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -4996,16 +5551,16 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -5045,7 +5600,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5055,7 +5610,27 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ajv@^8.6.0, ajv@>=8: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ajv@^8.8.2, ajv@^8.9.0: version "8.16.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== @@ -5081,6 +5656,11 @@ amazon-quicksight-embedding-sdk@^1.18.1: resolved "https://registry.npmjs.org/amazon-quicksight-embedding-sdk/-/amazon-quicksight-embedding-sdk-1.20.1.tgz" integrity sha512-JYBCeq1Rq1OOeZQB9ry85uASTTtqZzp5hFv0ihIX7XyD9anvcoW6GHo4ttzdkJMTMMAnzXhIBe9CRKm3tHMzeg== +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -5088,6 +5668,15 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -5098,7 +5687,12 @@ ansi-html@^0.0.9: resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz" integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== -ansi-regex@^5.0.1: +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -5108,7 +5702,7 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -5145,7 +5739,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@^3.33.2: +apexcharts@^3.33.2, apexcharts@^3.41.0: version "3.49.1" resolved "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz" integrity sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw== @@ -5184,7 +5778,7 @@ apollo-cache-inmemory@^1.6.6: ts-invariant "^0.4.0" tslib "^1.10.0" -apollo-cache@1.3.5, apollo-cache@^1.3.5: +apollo-cache@^1.3.5, apollo-cache@1.3.5: version "1.3.5" resolved "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz" integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== @@ -5243,7 +5837,7 @@ apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.14: tslib "^1.9.3" zen-observable-ts "^0.8.21" -apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4: +apollo-utilities@^1.3.0, apollo-utilities@^1.3.4, apollo-utilities@1.3.4: version "1.3.4" resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== @@ -5262,6 +5856,11 @@ appbase-js@^5.3.4: querystring "^0.2.0" url-parser-lite "^0.1.0" +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + arg@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" @@ -5279,6 +5878,13 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@^5.0.0, aria-query@^5.3.0, aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" @@ -5286,13 +5892,6 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0, aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -5425,6 +6024,23 @@ ast-types-flow@^0.0.8: resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz" integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async@^3.2.3: version "3.2.5" resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" @@ -5504,6 +6120,11 @@ axobject-query@^3.2.1: dependencies: dequal "^2.0.3" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" @@ -5617,6 +6238,13 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" @@ -5680,7 +6308,7 @@ base-64@1.0.0: resolved "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -5711,15 +6339,24 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@^1.20.3: + version "1.20.3" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -5729,7 +6366,7 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -5767,7 +6404,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@3.0.3, braces@^3.0.3, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2, braces@3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -5779,7 +6416,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: version "4.23.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz" integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== @@ -5801,16 +6438,15 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +buffer@^5.4.3: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" + base64-js "^1.3.1" + ieee754 "^1.1.13" -buffer@^5.4.3: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -5818,6 +6454,15 @@ buffer@^5.4.3: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" @@ -5844,6 +6489,25 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -5871,12 +6535,17 @@ camelcase-keys@6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0, camelcase@^6.2.1: +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^6.2.1: version "6.3.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -5923,7 +6592,31 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5961,11 +6654,26 @@ chokidar@^3.4.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.2.0: version "3.9.0" resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" @@ -5988,6 +6696,27 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -5997,7 +6726,35 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clsx@^1.1.0, clsx@^1.2.1: +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +clsx@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -6040,21 +6797,26 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + colorette@^2.0.10: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" @@ -6067,7 +6829,17 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0, commander@^2.20.3: +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6087,6 +6859,11 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" @@ -6104,7 +6881,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: +compression@^1.7.1, compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -6132,6 +6909,16 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" @@ -6159,16 +6946,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - cookie@^0.4.0: version "0.4.2" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" @@ -6198,6 +6985,26 @@ core-util-is@~1.0.0: resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@^5.0.5: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" @@ -6245,7 +7052,25 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6340,15 +7165,15 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.4" + mdn-data "2.0.14" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -6356,6 +7181,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" @@ -6472,7 +7305,12 @@ csstype@^2.5.7: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.0.2, csstype@^3.1.3: +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== @@ -6518,31 +7356,38 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-fns@^2.28.0: +date-fns@^2.0.0, date-fns@^2.25.0, date-fns@^2.28.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== dependencies: "@babel/runtime" "^7.21.0" -dayjs@^1.11.0, dayjs@^1.11.7: +dayjs@^1.10.7, dayjs@^1.11.0, dayjs@^1.11.7, dayjs@^1.8.15, dayjs@^1.8.17: version "1.11.11" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== -debug@2.6.9, debug@^2.6.0: +debug@^2.2.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== +debug@^2.6.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "2.1.2" + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" debug@^3.2.7: version "3.2.7" @@ -6551,6 +7396,25 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + decimal.js@^10.2.1: version "10.4.3" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" @@ -6600,6 +7464,11 @@ deepmerge@^4.2.2: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -6607,6 +7476,13 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" @@ -6635,16 +7511,21 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -6741,14 +7622,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -6758,16 +7631,24 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" @@ -6845,7 +7726,7 @@ echarts-for-react@^3.0.2: fast-deep-equal "^3.1.3" size-sensor "^1.0.1" -echarts@^5.3.3: +"echarts@^3.0.0 || ^4.0.0 || ^5.0.0", echarts@^5.3.3: version "5.5.0" resolved "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz" integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== @@ -6858,7 +7739,7 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@3.1.10, ejs@^3.1.6: +ejs@3.1.10: version "3.1.10" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -6917,7 +7798,7 @@ enhanced-resolve@^5.17.1: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@2.2.0, entities@^2.0.0: +entities@^2.0.0, entities@2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== @@ -6930,6 +7811,11 @@ env-cmd@^10.1.0: commander "^4.0.0" cross-spawn "^7.0.0" +envinfo@^7.10.0: + version "7.13.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -6944,6 +7830,14 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" @@ -7187,7 +8081,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5, eslint-plugin-import@>=1.4.0: version "2.29.1" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -7282,7 +8176,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -7298,6 +8192,14 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -7319,7 +8221,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6", eslint@>=7.0.0, eslint@>=7.28.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -7372,16 +8274,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esprima@1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" @@ -7396,7 +8298,12 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -7421,6 +8328,11 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" @@ -7438,7 +8350,7 @@ exec-sh@^0.2.0: dependencies: merge "^1.2.0" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -7479,7 +8391,7 @@ expect@^29.0.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@4.19.2, express@^4.17.3: +express@4.19.2: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -7531,7 +8443,7 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -7552,7 +8464,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@4.2.5, fast-xml-parser@4.4.1, fast-xml-parser@^4.2.5: +fast-xml-parser@4.4.1: version "4.4.1" resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== @@ -7626,6 +8538,19 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" @@ -7639,6 +8564,15 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" @@ -7660,7 +8594,15 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -7690,7 +8632,17 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@1.15.6, follow-redirects@^1.0.0, follow-redirects@^1.15.6: +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@0.*: + version "0.237.2" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz" + integrity sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ== + +follow-redirects@1.15.6: version "1.15.6" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -7785,7 +8737,26 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -7835,7 +8806,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -7875,7 +8846,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7889,6 +8860,13 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -7972,7 +8950,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7989,7 +8967,7 @@ graphql-tag@^2.12.6, graphql-tag@^2.4.2: dependencies: tslib "^2.1.0" -graphql@15.8.0: +"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0", "graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.0.0 || ^16.0.0", graphql@15.8.0: version "15.8.0" resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== @@ -8062,6 +9040,37 @@ he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hermes-estree@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz" + integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== + +hermes-estree@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" + integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== + +hermes-parser@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz" + integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== + dependencies: + hermes-estree "0.19.1" + +hermes-parser@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" + integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== + dependencies: + hermes-estree "0.20.1" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + history@^5.0.3: version "5.3.0" resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz" @@ -8152,6 +9161,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -8163,16 +9182,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -8225,13 +9234,6 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.5.tgz" integrity sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -8239,21 +9241,28 @@ iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" - integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== - idb@^7.0.1: version "7.1.1" resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== +idb@5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/idb/-/idb-5.0.6.tgz" + integrity sha512-/PFvOWPzRcEPmlDt5jEvzVZVs0wyd/EvGvkDIcbBpGuMMLQKrTPG0TxvE2UJtgZtCQCmOtM2QD7yQJBVEjKGOw== + identity-obj-proxy@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" @@ -8271,16 +9280,31 @@ ignore@^5.2.0: resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immer@9.0.6: - version "9.0.6" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" immer@^9.0.21, immer@^9.0.7: version "9.0.21" resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +immer@9.0.6: + version "9.0.6" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz" + integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" @@ -8315,7 +9339,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8346,21 +9370,16 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" - integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -8437,6 +9456,11 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -8454,6 +9478,11 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -8483,6 +9512,11 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" @@ -8525,6 +9559,13 @@ is-plain-obj@^3.0.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" @@ -8591,6 +9632,11 @@ is-typedarray@^1.0.0: resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" @@ -8611,7 +9657,12 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^2.2.0: +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -8633,6 +9684,11 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + isomorphic-unfetch@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" @@ -8858,6 +9914,18 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" @@ -8992,6 +10060,15 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" @@ -9016,7 +10093,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -9171,7 +10248,19 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-watch-typeahead@^1.0.0: +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watch-typeahead@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== @@ -9238,7 +10327,17 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -9252,6 +10351,17 @@ jiti@^1.21.0: resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +joi@^17.2.1: + version "17.13.1" + resolved "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz" + integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz" @@ -9277,6 +10387,41 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + jsdom@^16.6.0: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" @@ -9325,6 +10470,11 @@ json-buffer@3.0.1: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" @@ -9362,6 +10512,13 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -9445,7 +10602,7 @@ jss-plugin-vendor-prefixer@^10.10.0: css-vendor "^2.0.8" jss "10.10.0" -jss@10.10.0, jss@^10.10.0: +jss@^10.10.0, jss@10.10.0: version "10.10.0" resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz" integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== @@ -9533,6 +10690,14 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + lilconfig@^2.0.3, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" @@ -9629,6 +10794,23 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -9667,6 +10849,14 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" @@ -9693,6 +10883,11 @@ map-obj@^4.0.0: resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" @@ -9715,6 +10910,11 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" @@ -9725,30 +10925,214 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@2.1.1, merge@^1.2.0: - version "2.1.1" - resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" - integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== - methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +metro-babel-transformer@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz" + integrity sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.20.1" + nullthrows "^1.1.1" + +metro-cache-key@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz" + integrity sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg== + +metro-cache@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz" + integrity sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w== + dependencies: + metro-core "0.80.9" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz" + integrity sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.9" + metro-cache "0.80.9" + metro-core "0.80.9" + metro-runtime "0.80.9" + +metro-core@^0.80.3, metro-core@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz" + integrity sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.9" + +metro-file-map@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz" + integrity sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz" + integrity sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz" + integrity sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w== + +metro-runtime@^0.80.3, metro-runtime@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz" + integrity sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz" + integrity sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.9" + nullthrows "^1.1.1" + ob1 "0.80.9" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz" + integrity sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.9" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz" + integrity sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz" + integrity sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.9" + metro-babel-transformer "0.80.9" + metro-cache "0.80.9" + metro-cache-key "0.80.9" + metro-minify-terser "0.80.9" + metro-source-map "0.80.9" + metro-transform-plugins "0.80.9" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz" + integrity sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.20.1" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.9" + metro-cache "0.80.9" + metro-cache-key "0.80.9" + metro-config "0.80.9" + metro-core "0.80.9" + metro-file-map "0.80.9" + metro-resolver "0.80.9" + metro-runtime "0.80.9" + metro-source-map "0.80.9" + metro-symbolicate "0.80.9" + metro-transform-plugins "0.80.9" + metro-transform-worker "0.80.9" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -9760,6 +11144,11 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -9788,7 +11177,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -9819,23 +11208,33 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.1.2, ms@^2.1.1: +"monaco-editor@>= 0.21.0 < 1", "monaco-editor@>= 0.25.0 < 1": + version "0.49.0" + resolved "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz" + integrity sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ== + +ms@^2.1.1, ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -9883,7 +11282,7 @@ negotiator@0.6.3: resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9901,7 +11300,24 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@^2.6.1, node-fetch@^2.6.12: +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -9923,6 +11339,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -9958,18 +11379,28 @@ nprogress@^0.2.0: resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== -nth-check@^1.0.2, nth-check@^2.0.1: +nth-check@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + nwsapi@^2.2.0: version "2.2.10" resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== +ob1@0.80.9: + version "0.80.9" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz" + integrity sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA== + object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" @@ -10072,7 +11503,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -oidc-client-ts@^2.4.0: +oidc-client-ts@^2.2.1, oidc-client-ts@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.4.0.tgz" integrity sha512-WijhkTrlXK2VvgGoakWJiBdfIsVGz6CFzgjNNqZU1hPKV2kyeEaJgLs7RwuiSp2WhLfWBQuLvr2SxVlZnk3N1w== @@ -10080,6 +11511,13 @@ oidc-client-ts@^2.4.0: crypto-js "^4.2.0" jwt-decode "^3.1.2" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -10099,13 +11537,28 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -10156,7 +11609,29 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -p-limit@^2.0.0, p-limit@^2.2.0: +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -10224,6 +11699,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" @@ -10272,7 +11755,12 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -10290,9 +11778,9 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.10, path-to-regexp@0.1.7: +path-to-regexp@0.1.10: version "0.1.10" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz" integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-type@^4.0.0: @@ -10320,11 +11808,23 @@ pify@^2.3.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pirates@^4.0.1, pirates@^4.0.4: +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" @@ -10884,7 +12384,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.31, postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: +postcss@8.4.31: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -10910,7 +12410,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.8.7: +prettier@>=2.0.0, prettier@2.8.7: version "2.8.7" resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -10928,6 +12428,26 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" +pretty-format@^26.5.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" @@ -10947,7 +12467,16 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0, pretty-format@^29.7.0: +pretty-format@^29.0.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -10961,7 +12490,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^8.1.0: +promise@^8.1.0, promise@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== @@ -10976,7 +12505,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@>=15: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -11008,16 +12537,16 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - punycode@^2.1.0, punycode@^2.1.1: version "2.3.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + q@^1.1.2: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" @@ -11030,16 +12559,23 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== +qs@6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" -querystring@^0.2.0: +querystring@^0.2.0, querystring@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" @@ -11050,6 +12586,13 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" @@ -11148,7 +12691,15 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.2: +react-devtools-core@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz" + integrity sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", react-dom@^17.0.2, "react-dom@^17.0.2 || ^18.0.0", react-dom@<18.0.0, react-dom@>=15, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: version "17.0.2" resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -11202,20 +12753,30 @@ react-if@^4.1.1: resolved "https://registry.npmjs.org/react-if/-/react-if-4.1.5.tgz" integrity sha512-Uk+Ub2gC83PAakuU4+7iLdTEP4LPi2ihNEPCtz/vr8SLGbzkMApbpYbkDZ5z9zYXurd0gg+EK/bpOLFFC1r1eQ== -react-is@^16.13.1, react-is@^16.7.0: +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: +react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-native-get-random-values@^1.4.0: version "1.11.0" @@ -11231,12 +12792,55 @@ react-native-url-polyfill@^1.3.0: dependencies: whatwg-url-without-unicode "8.0.0-3" +react-native@*, react-native@>=0.56: + version "0.74.2" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.74.2.tgz" + integrity sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "13.6.8" + "@react-native-community/cli-platform-android" "13.6.8" + "@react-native-community/cli-platform-ios" "13.6.8" + "@react-native/assets-registry" "0.74.84" + "@react-native/codegen" "0.74.84" + "@react-native/community-cli-plugin" "0.74.84" + "@react-native/gradle-plugin" "0.74.84" + "@react-native/js-polyfills" "0.74.84" + "@react-native/normalize-colors" "0.74.84" + "@react-native/virtualized-lists" "0.74.84" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^5.0.0" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + react-oidc-context@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/react-oidc-context/-/react-oidc-context-2.3.1.tgz" integrity sha512-WdhmEU6odNzMk9pvOScxUkf6/1aduiI/nQryr7+iCl2VDnYLASDTIV/zy58KuK4VXG3fBaRKukc/mRpMjF9a3Q== -react-redux@^6.0.1, react-redux@^7.2.6: +"react-redux@^7.2.1 || ^8.0.2", react-redux@^7.2.6: version "7.2.9" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -11248,11 +12852,16 @@ react-redux@^6.0.1, react-redux@^7.2.6: prop-types "^15.7.2" react-is "^17.0.2" -react-refresh@^0.11.0: +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.0: + version "0.14.2" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + react-router-dom@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0.tgz" @@ -11322,6 +12931,14 @@ react-scripts@^5.0.1: optionalDependencies: fsevents "^2.3.2" +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" @@ -11332,7 +12949,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^17.0.2: +react@*, "react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.0.0 || >=16.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.9.0 || ^17.0.0 || ^18", "react@^16.x || ^17.x || ^18.x", react@^17.0.0, "react@^17.0.0 || ^18.0.0", react@^17.0.2, "react@^17.0.2 || ^18.0.0", react@<18.0.0, "react@>= 16", "react@>= 16.8", react@>=0.13, react@>=0.13.x, react@>=0.14.x, react@>=15, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@~0.13.x || ~0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0", react@17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -11340,6 +12957,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" @@ -11360,7 +12984,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6: +readable-stream@^3.0.6, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -11369,6 +12993,19 @@ readable-stream@^3.0.6: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -11376,6 +13013,21 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" @@ -11396,7 +13048,7 @@ redux-thunk@^2.3.0, redux-thunk@^2.4.2: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.0.0, redux@^4.2.1: +redux@^4, redux@^4.0.0, redux@^4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -11428,6 +13080,11 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" @@ -11510,6 +13167,11 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" @@ -11527,6 +13189,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" @@ -11537,7 +13204,7 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@5.0.0, resolve-url-loader@^4.0.0: +resolve-url-loader@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== @@ -11576,6 +13243,14 @@ response-iterator@^0.2.6: resolved "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -11598,6 +13273,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rollup-plugin-terser@^7.0.0: version "7.0.2" resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" @@ -11608,7 +13290,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.43.1: +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -11632,16 +13314,21 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -11689,14 +13376,12 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + loose-envify "^1.1.0" schema-utils@^2.6.5: version "2.7.1" @@ -11707,7 +13392,25 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -11726,12 +13429,21 @@ schema-utils@^4.0.0, schema-utils@^4.2.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1: +selfsigned@^2.1.1, selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -11739,17 +13451,52 @@ selfsigned@^2.1.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^5.5.0: +semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.3.5: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.3.7: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.2: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.3: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.4: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -11773,6 +13520,11 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" @@ -11800,7 +13552,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: +serve-static@^1.13.1, serve-static@1.15.0: version "1.15.0" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -11810,6 +13562,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" @@ -11842,6 +13599,13 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" @@ -11871,7 +13635,7 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -11936,6 +13700,15 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -11964,7 +13737,7 @@ source-map-loader@^3.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -11972,15 +13745,20 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.4" @@ -11994,6 +13772,21 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -12044,6 +13837,13 @@ stackframe@^1.3.4: resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + state-local@^1.0.6: version "1.0.7" resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" @@ -12056,16 +13856,21 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -12073,6 +13878,20 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -12103,7 +13922,7 @@ string-natural-compare@^3.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12167,20 +13986,6 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -12197,6 +14002,20 @@ stringify-object@^3.3.0: dependencies: ansi-regex "^5.0.1" +strip-ansi@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -12279,6 +14098,11 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -12286,7 +14110,14 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -12339,7 +14170,7 @@ svg.filter.js@^2.0.2: dependencies: svg.js "^2.2.5" -svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: +svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5, svg.js@>=2.3.x: version "2.7.1" resolved "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz" integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== @@ -12463,6 +14294,13 @@ temp-dir@^2.0.0: resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + tempy@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" @@ -12492,7 +14330,7 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: +terser@^5.0.0, terser@^5.10.0, terser@^5.15.0, terser@^5.26.0: version "5.31.1" resolved "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz" integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== @@ -12530,11 +14368,24 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + throat@^6.0.1: version "6.0.2" resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + thunky@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" @@ -12640,21 +14491,31 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tslib@^1.10.0, tslib@^1.8.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^1.11.1, tslib@^1.8.0: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -12691,11 +14552,16 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: +type-fest@^0.21.3, "type-fest@>=0.17.0 <5.0.0": version "0.21.3" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -12755,6 +14621,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + ulid@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz" @@ -12823,6 +14694,11 @@ universal-cookie@^4.0.4: "@types/cookie" "^0.3.3" cookie "^0.4.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" @@ -12833,7 +14709,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -12881,7 +14757,7 @@ url-search-params-polyfill@^7.0.0: resolved "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz" integrity sha512-bAw7L2E+jn9XHG5P9zrPnHdO0yJub4U+yXJOdpcpkr7OBd9T8oll4lUos0iSGRcDvfZoLUKfx9a6aNmIhJ4+mQ== -url@0.11.0, url@^0.11.0: +url@^0.11.0, url@0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== @@ -12914,21 +14790,31 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@3.4.0, uuid@^3.0.0, uuid@^3.2.1: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^10.0.0: version "10.0.0" resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz" integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== +uuid@^3.0.0: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^3.2.1: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" @@ -12943,6 +14829,11 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" @@ -12987,6 +14878,13 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + web-vitals@^2.1.4: version "2.1.4" resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz" @@ -13012,7 +14910,7 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: +webpack-dev-middleware@5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== @@ -13023,7 +14921,7 @@ webpack-dev-middleware@5.3.4, webpack-dev-middleware@^5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0: +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": version "4.15.2" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -13088,7 +14986,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.64.4, webpack@^5.94.0: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, webpack@^5.94.0, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": version "5.94.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz" integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== @@ -13117,7 +15015,7 @@ webpack@^5.64.4, webpack@^5.94.0: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -13138,7 +15036,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.6.2: +whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: version "3.6.20" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== @@ -13174,7 +15072,16 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -13222,6 +15129,11 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" @@ -13430,6 +15342,15 @@ workbox-window@6.6.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" @@ -13453,6 +15374,15 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" @@ -13463,10 +15393,24 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6, ws@^8.13.0, ws@^8.17.1: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +ws@^6.2.2: + version "6.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.2.3: + version "6.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.4.6, ws@^7.5.1: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== xml-name-validator@^3.0.0: version "3.0.0" @@ -13486,6 +15430,16 @@ xss@^1.0.11: commander "^2.20.3" cssfilter "0.0.10" +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -13501,16 +15455,51 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.1: + version "2.4.5" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" + integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== + yaml@^2.3.4: version "2.4.5" resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -13524,6 +15513,19 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" @@ -13542,14 +15544,6 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" -zen-observable-ts@0.8.19: - version "0.8.19" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" - integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" @@ -13565,16 +15559,24 @@ zen-observable-ts@^1.2.5: dependencies: zen-observable "0.8.15" -zen-observable@0.8.15, zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== +zen-observable-ts@0.8.19: + version "0.8.19" + resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz" + integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" zen-observable@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz" integrity sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg== +zen-observable@^0.8.0, zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + zen-push@0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/zen-push/-/zen-push-0.2.1.tgz" From 73c6b7bef7ba53364bba7a092807684aa8771486 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 11 Sep 2024 13:49:40 +0200 Subject: [PATCH 064/188] Increase CodeBuild timeout for integration tests (#1532) ### Feature or Bugfix - Feature ### Detail We are adding more and more integration tests to be executed in a CodeBuild stage of the CICD pipeline. There are cases in which the test execution might take longer than the CodeBuild default time of 1h. This PR increases the timeout period to 36hours ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/stacks/pipeline.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 7c4360a24..57499ff88 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -1,9 +1,8 @@ -import os import re import uuid from typing import List -from aws_cdk import Stack, Tags, RemovalPolicy +from aws_cdk import Stack, Tags, RemovalPolicy, Duration from aws_cdk import aws_codebuild as codebuild from aws_cdk import aws_codecommit as codecommit from aws_cdk import aws_ec2 as ec2 @@ -11,7 +10,6 @@ from aws_cdk import aws_kms as kms from aws_cdk import aws_s3 as s3 from aws_cdk import pipelines -from aws_cdk.aws_codebuild import BuildEnvironmentVariable, BuildEnvironmentVariableType from aws_cdk.pipelines import CodePipelineSource from .albfront_stage import AlbFrontStage @@ -538,6 +536,7 @@ def set_quality_gate_stage(self): role=self.baseline_codebuild_role.without_policy_updates(), vpc=self.vpc, security_groups=[self.codebuild_sg], + timeout=Duration.hours(36), ), pipelines.CodeBuildStep( id='UploadCodeToS3', From 565c9cee1bcb44a2018ccfb44a0381567f170894 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Wed, 11 Sep 2024 08:51:00 -0400 Subject: [PATCH 065/188] Add bucket versioning pt 2 (#1529) ### Feature or Bugfix - Bugfix ### Detail - After adding explicitly created artifacts bucket for CodePipeline - began seeing errors when running `cdk synth` (ONLY FOR SPECIFIC DEPLOYMENTS) - Error Message `Error: Artifact Bucket must have a KMS Key to add cross-account action 'Prepare' (pipeline account: 'XXXXX', action account: 'YYYYY'). Create Pipeline with 'crossAccountKeys-true'` - This error only showed on some deployments and seemed to be throwing a validation error even though docs say providing a manually created bucket which is encrypted should suffice - potentially could be a version mismatch for why it is working only on some deployments (??) - After adding 'crossAccountKeys=true'` parameter `cdk synth` works appropriately for all ### Relates - N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 8 +++++++- .../modules/datapipelines/cdk/datapipelines_pipeline.py | 2 ++ deploy/stacks/pipeline.py | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.checkov.baseline b/.checkov.baseline index 9be5e7958..9f940e563 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -422,7 +422,7 @@ ] }, { - "file": "/cdk.out/cross-region-stack-111111111111:eu-west-1.template.json", + "file": "/cdk.out/cross-region-stack-111111111111:us-east-1.template.json", "findings": [ { "resource": "AWS::S3::Bucket.CrossRegionCodePipelineReplicationBucketFC3227F2", @@ -442,6 +442,12 @@ "CKV_AWS_111" ] }, + { + "resource": "AWS::IAM::Policy.dataallmaincdkpipelinePipelineRoleDefaultPolicy98FFDB2A", + "check_ids": [ + "CKV_AWS_111" + ] + }, { "resource": "AWS::Lambda::Function.CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", "check_ids": [ diff --git a/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py b/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py index 9343fe558..c9d74dd11 100644 --- a/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py +++ b/backend/dataall/modules/datapipelines/cdk/datapipelines_pipeline.py @@ -257,6 +257,7 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): artifact_bucket=self.create_pipeline_artifacts_bucket( artifact_bucket_base_name=f'{pipeline.name}-artifacts' ), + cross_account_keys=True, ) self.codepipeline_pipeline = codepipeline_pipeline self.source_artifact = codepipeline.Artifact() @@ -329,6 +330,7 @@ def __init__(self, scope, id, target_uri: str = None, **kwargs): artifact_bucket=self.create_pipeline_artifacts_bucket( artifact_bucket_base_name=f'{pipeline.name}-artifacts-{env.stage}' ), + cross_account_keys=True, ) self.codepipeline_pipeline = codepipeline_pipeline self.source_artifact = codepipeline.Artifact() diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 57499ff88..f37e47933 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -154,6 +154,8 @@ def __init__( pipeline_name=f'{self.resource_prefix}-pipeline-{self.git_branch}', publish_assets_in_parallel=False, artifact_bucket=self.artifact_bucket, + cross_account_keys=True, + enable_key_rotation=True, synth=pipelines.CodeBuildStep( 'Synth', input=source, From 5f7db6c7bbc4b360443b468fbb42bca3053d2248 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:40:43 +0200 Subject: [PATCH 066/188] Upgrade send to 0.19.0 and express to 4.20.0 (#1542) ### Feature or Bugfix - Upgrade dependency ### Detail - Upgrade express due to vulnerability found in npm: https://github.com/advisories/GHSA-qw6h-vgh9-j6wx - Upgrade send due to vulnerability found in npm: https://github.com/advisories/GHSA-m6fv-jmcg-4jfg ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 52 +++++++++++++++++++++++++------------- frontend/package.json | 11 +++++--- frontend/yarn.lock | 49 +++++++++++++++++++---------------- 3 files changed, 68 insertions(+), 44 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d0cc3049b..220b6410c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19494,36 +19494,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -19550,6 +19551,15 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -26139,9 +26149,13 @@ "dev": true }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -30731,9 +30745,10 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -30859,9 +30874,10 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", diff --git a/frontend/package.json b/frontend/package.json index b97e798a5..89a4e6e08 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -94,11 +94,12 @@ "ip": "1.1.9", "follow-redirects": "1.15.6", "webpack-dev-middleware": "5.3.4", - "express": "4.19.2", + "express": "4.20.0", "ejs": "3.1.10", "fast-xml-parser": "4.4.1", "path-to-regexp": "0.1.10", - "body-parser": "^1.20.3" + "body-parser": "^1.20.3", + "send": "0.19.0" }, "resolutions": { "react-redux": "^7.2.6", @@ -111,11 +112,13 @@ "ip": "1.1.9", "follow-redirects": "1.15.6", "webpack-dev-middleware": "5.3.4", - "express": "4.19.2", + "express": "4.20.0", "ejs": "3.1.10", "ws": "^8.17.1", "fast-xml-parser": "4.4.1", - "path-to-regexp": "0.1.10" + "path-to-regexp": "0.1.10", + "body-parser": "^1.20.3", + "send": "0.19.0" }, "devDependencies": { "env-cmd": "^10.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 3fe9bd655..33674f343 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -7790,6 +7790,11 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + enhanced-resolve@^5.17.1: version "5.17.1" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz" @@ -8391,37 +8396,37 @@ expect@^29.0.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@4.19.2: - version "4.19.2" - resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +express@4.20.0: + version "4.20.0" + resolved "https://registry.npmjs.org/express/-/express-4.20.0.tgz" + integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" finalhandler "1.2.0" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.0" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -10915,10 +10920,10 @@ memoize-one@^5.0.0: resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -13501,10 +13506,10 @@ semver@^7.5.4: resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -13552,10 +13557,10 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@^1.13.1, serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@^1.13.1, serve-static@1.16.0: + version "1.16.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz" + integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" From 5b9f689ee4607acdfe04f2bde14b47d8512a8615 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Thu, 12 Sep 2024 13:55:41 -0400 Subject: [PATCH 067/188] Config log retention (#1527) ### Feature or Bugfix - Feature ### Detail - Configurable Log Retention via `cdk.json` ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../mlstudio/cdk/mlstudio_extension.py | 3 ++- deploy/stacks/albfront_stack.py | 5 ++++- deploy/stacks/albfront_stage.py | 2 ++ deploy/stacks/backend_stack.py | 5 +++++ deploy/stacks/backend_stage.py | 2 ++ deploy/stacks/container.py | 7 ++++++- deploy/stacks/lambda_api.py | 20 ++++++++++++++++--- deploy/stacks/opensearch.py | 2 ++ deploy/stacks/pipeline.py | 7 +++++++ deploy/stacks/vpc.py | 3 +++ template_cdk.json | 1 + 11 files changed, 51 insertions(+), 6 deletions(-) diff --git a/backend/dataall/modules/mlstudio/cdk/mlstudio_extension.py b/backend/dataall/modules/mlstudio/cdk/mlstudio_extension.py index 617ed4454..5d2bf330c 100644 --- a/backend/dataall/modules/mlstudio/cdk/mlstudio_extension.py +++ b/backend/dataall/modules/mlstudio/cdk/mlstudio_extension.py @@ -2,6 +2,7 @@ Extends an environment stack for SageMaker Studio Domain """ +import os import logging from aws_cdk import ( @@ -63,7 +64,7 @@ def extent(setup: EnvironmentSetup): setup, f'SageMakerStudio{_environment.name}', log_group_name=f'/{_environment.resourcePrefix}/{_environment.name}/vpc/sagemakerstudio', - retention=logs.RetentionDays.ONE_MONTH, + retention=getattr(logs.RetentionDays, os.environ.get('LOG_RETENTION', 'TWO_YEARS')), removal_policy=RemovalPolicy.DESTROY, ) vpc_flow_role = iam.Role( diff --git a/deploy/stacks/albfront_stack.py b/deploy/stacks/albfront_stack.py index 2caef4a13..46632e2da 100644 --- a/deploy/stacks/albfront_stack.py +++ b/deploy/stacks/albfront_stack.py @@ -32,10 +32,13 @@ def __init__( ip_ranges=None, custom_auth=None, backend_region=None, + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) + self.log_retention_duration = log_retention_duration + if self.node.try_get_context('image_tag'): image_tag = self.node.try_get_context('image_tag') @@ -321,8 +324,8 @@ def create_log_group(self, envname, resource_prefix, log_group_name): self, f'ECSLogGroup{log_group_name}{envname}', log_group_name=f'/{resource_prefix}/{envname}/ecs/{log_group_name}', - retention=logs.RetentionDays.ONE_MONTH, removal_policy=RemovalPolicy.DESTROY, + retention=getattr(logs.RetentionDays, self.log_retention_duration), ) return log_group diff --git a/deploy/stacks/albfront_stage.py b/deploy/stacks/albfront_stage.py index 53ecb8ee3..fd690e700 100644 --- a/deploy/stacks/albfront_stage.py +++ b/deploy/stacks/albfront_stage.py @@ -18,6 +18,7 @@ def __init__( ip_ranges=None, custom_auth=None, backend_region=None, + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) @@ -33,6 +34,7 @@ def __init__( ip_ranges=ip_ranges, custom_auth=custom_auth, backend_region=backend_region, + log_retention_duration=log_retention_duration, ) Tags.of(albfront_stack).add('Application', f'{resource_prefix}-{envname}') diff --git a/deploy/stacks/backend_stack.py b/deploy/stacks/backend_stack.py index 66f0e6d64..583069473 100644 --- a/deploy/stacks/backend_stack.py +++ b/deploy/stacks/backend_stack.py @@ -60,6 +60,7 @@ def __init__( custom_waf_rules=None, with_approval_tests=False, allowed_origins='*', + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) @@ -76,6 +77,7 @@ def __init__( vpc_endpoints_sg=vpc_endpoints_sg, vpc_id=vpc_id, restricted_nacl=vpc_restricted_nacls, + log_retention_duration=log_retention_duration, **kwargs, ) vpc = self.vpc_stack.vpc @@ -202,6 +204,7 @@ def __init__( custom_auth=custom_auth, custom_waf_rules=custom_waf_rules, allowed_origins=allowed_origins, + log_retention_duration=log_retention_duration, **kwargs, ) @@ -226,6 +229,7 @@ def __init__( email_custom_domain=ses_stack.ses_identity.email_identity_name if ses_stack is not None else None, ses_configuration_set=ses_stack.configuration_set.configuration_set_name if ses_stack is not None else None, custom_domain=custom_domain, + log_retention_duration=log_retention_duration, **kwargs, ) @@ -372,6 +376,7 @@ def __init__( 'ecs_security_groups': self.ecs_stack.ecs_security_groups, 'ecs_task_role': self.ecs_stack.ecs_task_role, 'prod_sizing': prod_sizing, + 'log_retention_duration': log_retention_duration, **kwargs, } if enable_opensearch_serverless: diff --git a/deploy/stacks/backend_stage.py b/deploy/stacks/backend_stage.py index dee8009bc..4185c5623 100644 --- a/deploy/stacks/backend_stage.py +++ b/deploy/stacks/backend_stage.py @@ -37,6 +37,7 @@ def __init__( custom_waf_rules=None, with_approval_tests=False, allowed_origins='*', + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) @@ -71,6 +72,7 @@ def __init__( custom_waf_rules=custom_waf_rules, with_approval_tests=with_approval_tests, allowed_origins=allowed_origins, + log_retention_duration=log_retention_duration, **kwargs, ) diff --git a/deploy/stacks/container.py b/deploy/stacks/container.py index 745e4c01d..0f875cabf 100644 --- a/deploy/stacks/container.py +++ b/deploy/stacks/container.py @@ -37,11 +37,13 @@ def __init__( email_custom_domain=None, ses_configuration_set=None, custom_domain=None, + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) self._envname = envname self._resource_prefix = resource_prefix + self.log_retention_duration = log_retention_duration if self.node.try_get_context('image_tag'): image_tag = self.node.try_get_context('image_tag') @@ -102,6 +104,9 @@ def __init__( ecs.CfnTaskDefinition.KeyValuePairProperty(name='envname', value=envname), ecs.CfnTaskDefinition.KeyValuePairProperty(name='LOGLEVEL', value='DEBUG'), ecs.CfnTaskDefinition.KeyValuePairProperty(name='config_location', value='/config.json'), + ecs.CfnTaskDefinition.KeyValuePairProperty( + name='LOG_RETENTION', value=self.log_retention_duration + ), ], essential=True, log_configuration=ecs.CfnTaskDefinition.LogConfigurationProperty( @@ -719,8 +724,8 @@ def create_log_group(self, envname, resource_prefix, log_group_name): self, f'ECSLogGroup{log_group_name}{envname}', log_group_name=f'/{resource_prefix}/{envname}/ecs/{log_group_name}', - retention=logs.RetentionDays.ONE_MONTH, removal_policy=RemovalPolicy.DESTROY, + retention=getattr(logs.RetentionDays, self.log_retention_duration), ) return log_group diff --git a/deploy/stacks/lambda_api.py b/deploy/stacks/lambda_api.py index 738e28126..7a32dc62f 100644 --- a/deploy/stacks/lambda_api.py +++ b/deploy/stacks/lambda_api.py @@ -58,10 +58,13 @@ def __init__( custom_domain=None, custom_auth=None, allowed_origins='*', + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) + self.log_retention_duration = log_retention_duration + if self.node.try_get_context('image_tag'): image_tag = self.node.try_get_context('image_tag') @@ -105,7 +108,10 @@ def __init__( 'ElasticSearchProxyHandler', function_name=f'{resource_prefix}-{envname}-esproxy', log_group=logs.LogGroup( - self, 'esproxyloggroup', log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-esproxy' + self, + 'esproxyloggroup', + log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-esproxy', + retention=getattr(logs.RetentionDays, self.log_retention_duration), ), description='dataall es search function', role=self.create_function_role(envname, resource_prefix, 'esproxy', pivot_role_name, vpc), @@ -142,7 +148,10 @@ def __init__( 'LambdaGraphQL', function_name=f'{resource_prefix}-{envname}-graphql', log_group=logs.LogGroup( - self, 'graphqlloggroup', log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-graphql' + self, + 'graphqlloggroup', + log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-graphql', + retention=getattr(logs.RetentionDays, self.log_retention_duration), ), description='dataall graphql function', role=self.create_function_role(envname, resource_prefix, 'graphql', pivot_role_name, vpc), @@ -173,7 +182,10 @@ def __init__( 'AWSWorker', function_name=f'{resource_prefix}-{envname}-awsworker', log_group=logs.LogGroup( - self, 'awsworkerloggroup', log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-awsworker' + self, + 'awsworkerloggroup', + log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-backend-awsworker', + retention=getattr(logs.RetentionDays, self.log_retention_duration), ), description='dataall aws worker for aws asynchronous tasks function', role=self.create_function_role(envname, resource_prefix, 'awsworker', pivot_role_name, vpc), @@ -245,6 +257,7 @@ def __init__( self, 'customauthorizerloggroup', log_group_name=f'/aws/lambda/{resource_prefix}-{envname}-custom-authorizer', + retention=getattr(logs.RetentionDays, self.log_retention_duration), ), handler='custom_authorizer_lambda.lambda_handler', code=_lambda.Code.from_asset( @@ -762,6 +775,7 @@ def set_up_graphql_api_gateway( f'{resource_prefix}/{envname}/apigateway', log_group_name=f'{resource_prefix}/{envname}/apigateway', removal_policy=RemovalPolicy.DESTROY, + retention=getattr(logs.RetentionDays, self.log_retention_duration), ) iam_policy = iam.PolicyDocument( diff --git a/deploy/stacks/opensearch.py b/deploy/stacks/opensearch.py index 09f1e3e33..a1b9cdb55 100644 --- a/deploy/stacks/opensearch.py +++ b/deploy/stacks/opensearch.py @@ -38,6 +38,7 @@ def __init__( lambdas=None, ecs_security_groups: [ec2.SecurityGroup] = None, prod_sizing=False, + log_retention_duration=None, **kwargs, ): super().__init__(scope, id) @@ -67,6 +68,7 @@ def __init__( id='EsAppLogGroup', log_group_name=f'/{resource_prefix}/{envname}/opensearch', removal_policy=RemovalPolicy.DESTROY, + retention=getattr(logs.RetentionDays, log_retention_duration), ) self.domain = opensearch.Domain( diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index f37e47933..39e7bad38 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -7,6 +7,7 @@ from aws_cdk import aws_codecommit as codecommit from aws_cdk import aws_ec2 as ec2 from aws_cdk import aws_iam as iam +from aws_cdk import aws_logs as logs from aws_cdk import aws_kms as kms from aws_cdk import aws_s3 as s3 from aws_cdk import pipelines @@ -43,6 +44,9 @@ def __init__( self.target_envs = target_envs self.repo_string = repo_string self.repo_connection_arn = repo_connection_arn + self.log_retention_duration = ( + self.node.try_get_context('log_retention_duration') or logs.RetentionDays.TWO_YEARS.value + ) self.vpc_stack = VpcStack( self, @@ -52,6 +56,7 @@ def __init__( resource_prefix=resource_prefix, vpc_id=self.node.try_get_context('tooling_vpc_id'), restricted_nacl=self.node.try_get_context('tooling_vpc_restricted_nacl'), + log_retention_duration=self.log_retention_duration, **kwargs, ) self.vpc = self.vpc_stack.vpc @@ -674,6 +679,7 @@ def set_backend_stage(self, target_env, repository_name): custom_waf_rules=target_env.get('custom_waf_rules', None), with_approval_tests=target_env.get('with_approval_tests', False), allowed_origins=target_env.get('allowed_origins', '*'), + log_retention_duration=self.log_retention_duration, ) ) return backend_stage @@ -915,6 +921,7 @@ def set_albfront_stage(self, target_env, repository_name): resource_prefix=self.resource_prefix, custom_auth=target_env.get('custom_auth', None), backend_region=target_env.get('region', self.region), + log_retention_duration=self.log_retention_duration, ), pre=[ pipelines.CodeBuildStep( diff --git a/deploy/stacks/vpc.py b/deploy/stacks/vpc.py index 497736dcb..a29105324 100644 --- a/deploy/stacks/vpc.py +++ b/deploy/stacks/vpc.py @@ -23,9 +23,11 @@ def __init__( cidr=None, resource_prefix=None, restricted_nacl=False, + log_retention_duration=None, **kwargs, ): super().__init__(scope, id, **kwargs) + self.log_retention_duration = log_retention_duration if vpc_id: self.vpc = ec2.Vpc.from_lookup(self, 'vpc', vpc_id=vpc_id) @@ -179,6 +181,7 @@ def create_new_vpc(self, cidr, envname, resource_prefix, restricted_nacl): f'{resource_prefix}/{envname}/flowlogs', log_group_name=f'{resource_prefix}/{envname}/flowlogs', removal_policy=RemovalPolicy.DESTROY, + retention=getattr(logs.RetentionDays, self.log_retention_duration), ) iam_policy = iam.PolicyDocument( assign_sids=True, diff --git a/template_cdk.json b/template_cdk.json index 9ddf62e3d..7b2ebe0d5 100644 --- a/template_cdk.json +++ b/template_cdk.json @@ -14,6 +14,7 @@ "repository_source": "string_VERSION_CONTROL_SERVICE|(codecommit, codestar_connection) DEFAULT=codecommit", "repo_string": "string_REPOSITORY_IN_GITHUB_OWNER/REPOSITORY|DEFAULT=awslabs/aws-dataall, REQUIRED if repository_source=codestar_connection", "repo_connection_arn": "string_CODESTAR_SOURCE_CONNECTION_ARN_FOR_GITHUB_arn:aws:codestar-connections:region:account-id:connection/connection-id|DEFAULT=None, REQUIRED if repository_source=codestar_connection", + "log_retention_duration": "string_LOG_RETENTION_DURATION|DEFAULT=TWO_YEARS", "DeploymentEnvironments": [ { "envname": "string_ENVIRONMENT_NAME|REQUIRED", From f91aebcdcacadc5333e755732449af32c22a913b Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 13 Sep 2024 10:22:12 +0200 Subject: [PATCH 068/188] Add check to skip processor initialization if there are not shareable items in revoke, verify and reapply (#1538) ### Feature or Bugfix - Bugfix ### Detail In the sharing tasks, for approval of shares we verify if there are items to share of a particular type before initializing the processor. This PR adds this check for revokes, verifies and reapply tasks. This PR fixes some buggy logs. The share revoke/verify/reapply succeed but the logs show some Redsihft error messages when processing an S3 share request task. `AttributeError: 'S3Dataset' object has no attribute 'connectionUri'` ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../shares_base/services/sharing_service.py | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index 9d017d7f0..ab4f209c8 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -103,7 +103,7 @@ def approve_share(cls, engine: Engine, share_uri: str) -> bool: if not success: share_successful = False else: - log.info(f'There are no items to share of type{type.value}') + log.info(f'There are no items to share of type {type.value}') except Exception as e: log.exception(f'Error occurred during sharing of {type.value}') ShareStatusRepository.update_share_item_status_batch( @@ -184,6 +184,7 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: ): for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): try: + log.info(f'Revoking permissions with {type.value}') shareable_items = ShareObjectRepository.get_share_data_items_by_type( session, share_data.share, @@ -191,11 +192,15 @@ def revoke_share(cls, engine: Engine, share_uri: str) -> bool: processor.shareable_uri, status=ShareItemStatus.Revoke_Approved.value, ) - log.info(f'Revoking permissions with {type.value}') - success = processor.Processor(session, share_data, shareable_items).process_revoked_shares() - log.info(f'Revoking {type.value} succeeded = {success}') - if not success: - revoke_successful = False + if shareable_items: + success = processor.Processor( + session, share_data, shareable_items + ).process_revoked_shares() + log.info(f'Revoking {type.value} succeeded = {success}') + if not success: + revoke_successful = False + else: + log.info(f'There are no items to revoke of type {type.value}') except Exception as e: log.error(f'Error occurred during share revoking of {type.value}: {e}') ShareStatusRepository.update_share_item_status_batch( @@ -253,6 +258,7 @@ def verify_share( share_data, share_items = cls._get_share_data_and_items(session, share_uri, status, healthStatus) for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): try: + log.info(f'Verifying permissions with {type.value}') shareable_items = ShareObjectRepository.get_share_data_items_by_type( session, share_data.share, @@ -261,8 +267,10 @@ def verify_share( status=status, healthStatus=healthStatus, ) - log.info(f'Verifying permissions with {type.value}') - processor.Processor(session, share_data, shareable_items).verify_shares() + if shareable_items: + processor.Processor(session, share_data, shareable_items).verify_shares() + else: + log.info(f'There are no items to verify of type {type.value}') except Exception as e: log.error(f'Error occurred during share verifying of {type.value}: {e}') @@ -319,12 +327,15 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: None, ShareItemHealthStatus.PendingReApply.value, ) - success = processor.Processor( - session, share_data, shareable_items - ).process_approved_shares() - log.info(f'Reapplying {type.value} succeeded = {success}') - if not success: - reapply_successful = False + if shareable_items: + success = processor.Processor( + session, share_data, shareable_items + ).process_approved_shares() + log.info(f'Reapplying {type.value} succeeded = {success}') + if not success: + reapply_successful = False + else: + log.info(f'There are no items to reapply of type {type.value}') except Exception as e: log.error(f'Error occurred during share reapplying of {type.value}: {e}') From 97d1827f8d2abb83c18f67caa7f84f8a0cf3de74 Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Fri, 13 Sep 2024 03:35:30 -0500 Subject: [PATCH 069/188] Updating logic to check if expiration is changed on the UI (#1545) ### Feature or Bugfix - Bugfix ### Detail 1. While revoking a share an error message pop-ups as shown below image This is not intended. This doesn't change the expiration period but is calling the updateShareExpiration function. ### Relates https://github.com/data-dot-all/dataall/issues/1083 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? N/A - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/Shared/Shares/ShareEditForm.js | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/frontend/src/modules/Shared/Shares/ShareEditForm.js b/frontend/src/modules/Shared/Shares/ShareEditForm.js index 80adf5f32..ea4ae8e45 100644 --- a/frontend/src/modules/Shared/Shares/ShareEditForm.js +++ b/frontend/src/modules/Shared/Shares/ShareEditForm.js @@ -267,10 +267,13 @@ export const ShareEditForm = (props) => { await updateRequestPurpose(); } - if ( - (shareExpiration && shareExpiration !== 0) || - share.nonExpirable !== requestNonExpirableShare - ) { + const isExpirationUpdated = + (shareExpiration && + shareExpiration !== 0 && + share.shareExpirationPeriod !== shareExpiration) || + share.nonExpirable !== requestNonExpirableShare; + + if (isExpirationUpdated) { await updateShareExpiration(); } if ( @@ -289,10 +292,13 @@ export const ShareEditForm = (props) => { await updateRequestPurpose(); } - if ( - (shareExpiration && shareExpiration !== 0) || - share.nonExpirable !== requestNonExpirableShare - ) { + const isExpirationUpdated = + (shareExpiration && + shareExpiration !== 0 && + share.shareExpirationPeriod !== shareExpiration) || + share.nonExpirable !== requestNonExpirableShare; + + if (isExpirationUpdated) { await updateShareExpiration(); } @@ -358,10 +364,14 @@ export const ShareEditForm = (props) => { if (requestPurpose !== share.requestPurpose) { await updateRequestPurpose(); } - if ( - (shareExpiration && shareExpiration !== 0) || - share.nonExpirable !== requestNonExpirableShare - ) { + + const isExpirationUpdated = + (shareExpiration && + shareExpiration !== 0 && + share.shareExpirationPeriod !== shareExpiration) || + share.nonExpirable !== requestNonExpirableShare; + + if (isExpirationUpdated) { await updateShareExpiration(); } if (onApply) { From 405019d6dbde6682b1931ffdc35456434c789f1f Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Fri, 13 Sep 2024 09:42:27 -0400 Subject: [PATCH 070/188] Add Dataset integration tests - Tables, Folders (#1391) ### Feature or Bugfix - Feature: Testing ### Detail In this PR we add new fixtures for S3 datasets that are used for the tests in S3/tables/folders but also for the tests developed in #https://github.com/data-dot-all/dataall/pull/1389: - Fix imported KMS dataset - there was an error in the KMS keys and in the registration of the Glue database - Folders as separate fixture using create_folder data.all API - Tables as separate fixture using boto3 calls to create the table, upload data and then use sync_tables data.all API - the data can be queried! This PR moves dataset_base testing scenarios to datasets_base/test_dataset.py. Testing scenarios have been defined for the S3 datasets and the remaining test scenarios for the datasets_base APIs are defined with their signature and a TODO comment. It also splits the S3 dataset tests into their corresponding API subcategories (in `backend/.../s3_datasets/api`) - test_s3_datasets - test_s3_tables - test_s3_tables_profiling - test_s3_tables_columns - test_s3_folders Implement testing scenarios for `test_s3_folders` covering all APIs and dataset types (parametrized tests). Note that to avoid duplication of tests, unauthorized test cases are tested with only one of the dataset types as the code executed is the same for all cases. Implement testing scenarios for `test_s3_tables` covering all APIs and dataset types (parametrized tests). Same as folders, unauthorized tests are performed on a single dataset type. New tests include: sync_tables with real tables, preview tables with real tables, preview unauthorized depending on the confidentiality level, get_dataset_level, list_dataset_tables For `test_s3_datasets` only test_create_dataset_unauthorized is added, but for other existing tests we add test for all dataset types (parametrized tests). #### Next steps In follow-up PRs we should implement the missing commented TODO tests for: - datasets_base ---> list owned tests - s3_datasets ---> list owned tests - s3_tables ---> data filters tests - s3_tables_profiling ---> some tests - s3_tables_columns ---> all tests - Review backwards compatibility tests and add table and folder test cases ### Relates - https://github.com/data-dot-all/dataall/pull/1379 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: dlpzx --- .../core/environment/cdk/environment_stack.py | 6 +- .../datasets_base/db/dataset_repositories.py | 11 +- tests_new/integration_tests/README.md | 13 +- tests_new/integration_tests/client.py | 10 +- .../modules/datasets_base/queries.py | 52 + .../modules/datasets_base/test_dataset.py | 44 + .../modules/s3_datasets/aws_clients.py | 85 +- .../modules/s3_datasets/conftest.py | 44 + .../modules/s3_datasets/global_conftest.py | 283 +- .../modules/s3_datasets/queries.py | 430 +- .../sample_data/csv_table/books.csv | 11128 ---------------- .../sample_data/csv_table/csv_sample.csv | 3 + .../sample_data/parquet_table/sample1.parquet | Bin 1308 -> 0 bytes .../modules/s3_datasets/test_s3_dataset.py | 246 +- .../modules/s3_datasets/test_s3_folders.py | 100 + .../modules/s3_datasets/test_s3_tables.py | 170 + .../s3_datasets/test_s3_tables_columns.py | 41 + .../s3_datasets/test_s3_tables_profiling.py | 56 + 18 files changed, 1385 insertions(+), 11337 deletions(-) create mode 100644 tests_new/integration_tests/modules/datasets_base/test_dataset.py create mode 100644 tests_new/integration_tests/modules/s3_datasets/conftest.py delete mode 100644 tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/books.csv create mode 100644 tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/csv_sample.csv delete mode 100644 tests_new/integration_tests/modules/s3_datasets/sample_data/parquet_table/sample1.parquet create mode 100644 tests_new/integration_tests/modules/s3_datasets/test_s3_folders.py create mode 100644 tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py create mode 100644 tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py create mode 100644 tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index 269ccae6a..58e30a221 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -581,12 +581,11 @@ def create_integration_tests_role(self): 's3:CreateBucket', 's3:DeleteBucket', 's3:PutEncryptionConfiguration', - 's3:List*', 's3:GetObject*', 's3:DeleteObject', ], effect=iam.Effect.ALLOW, - resources=['arn:aws:s3:::dataalltesting*'], + resources=['arn:aws:s3:::dataalltesting*', 'arn:aws:s3:::dataalltesting*/*'], ) ) self.test_role.add_to_policy( @@ -607,6 +606,7 @@ def create_integration_tests_role(self): 'lakeformation:GrantPermissions', 'lakeformation:PutDataLakeSettings', 'lakeformation:GetDataLakeSettings', + 'glue:GetDatabase', 'kms:CreateKey', 'kms:CreateAlias', 'kms:DeleteAlias', @@ -615,7 +615,9 @@ def create_integration_tests_role(self): 'kms:PutKeyPolicy', 'kms:ScheduleKeyDeletion', 'kms:TagResource', + 'kms:DescribeKey', 's3:GetBucketVersioning', + 's3:List*', ], effect=iam.Effect.ALLOW, resources=['*'], diff --git a/backend/dataall/modules/datasets_base/db/dataset_repositories.py b/backend/dataall/modules/datasets_base/db/dataset_repositories.py index 05dab4c93..28281052e 100644 --- a/backend/dataall/modules/datasets_base/db/dataset_repositories.py +++ b/backend/dataall/modules/datasets_base/db/dataset_repositories.py @@ -65,8 +65,8 @@ def _query_all_user_datasets(session, username, groups, all_subqueries: List[Que term = filter['term'] query = query.filter( or_( - DatasetBase.description.ilike(term + '%%'), - DatasetBase.label.ilike(term + '%%'), + DatasetBase.label.ilike('%' + term + '%'), + DatasetBase.description.ilike('%' + term + '%'), DatasetBase.tags.contains(f'{{{term}}}'), ) ) @@ -90,10 +90,12 @@ def _query_user_datasets(session, username, groups, filter) -> Query: ) ) if filter and filter.get('term'): + term = filter['term'] query = query.filter( or_( - DatasetBase.description.ilike(filter.get('term') + '%%'), - DatasetBase.label.ilike(filter.get('term') + '%%'), + DatasetBase.label.ilike('%' + term + '%'), + DatasetBase.description.ilike('%' + term + '%'), + DatasetBase.tags.contains(f'{{{term}}}'), ) ) return query.order_by(DatasetBase.label).distinct(DatasetBase.datasetUri, DatasetBase.label) @@ -125,7 +127,6 @@ def _query_environment_datasets(session, uri, filter) -> Query: DatasetBase.label.ilike('%' + term + '%'), DatasetBase.description.ilike('%' + term + '%'), DatasetBase.tags.contains(f'{{{term}}}'), - DatasetBase.region.ilike('%' + term + '%'), ) ) return query.order_by(DatasetBase.label) diff --git a/tests_new/integration_tests/README.md b/tests_new/integration_tests/README.md index 9bb9f5575..fe76e45e8 100644 --- a/tests_new/integration_tests/README.md +++ b/tests_new/integration_tests/README.md @@ -10,8 +10,10 @@ Currently **we support only Cognito based deployments** but support for any IdP ## Pre-requisites -- A real deployment of data.all in AWS -- An SSM parameter (`/{resource_prefix/{env_name}/testdata`) with the following contents +- A real deployment of data.all in AWS. + - For this deployment the `cdk.json` flag `enable_pivot_role_auto_create` must be set to `true`. + - For this deployment the `config.json` flag `cdk_pivot_role_multiple_environments_same_account` must be set to `true` if an AWS account is going to be reused for multiple environments, +- An SSM parameter (`/dataall/{env_name}/testdata`) in the DEPLOYMENT ACCOUNT with the following contents ``` { "users": { @@ -85,4 +87,9 @@ You can also run the tests locally by... ## Coverage -At the moment integration tests only cover Organizations module as an example. \ No newline at end of file +At the moment integration tests cover: +- Organizations +- Environments +- S3 Datasets +- Notebooks +- Worksheets \ No newline at end of file diff --git a/tests_new/integration_tests/client.py b/tests_new/integration_tests/client.py index f92f6dbd5..b288cff52 100644 --- a/tests_new/integration_tests/client.py +++ b/tests_new/integration_tests/client.py @@ -8,17 +8,17 @@ ENVNAME = os.getenv('ENVNAME', 'dev') +def _retry_if_connection_error(exception): + """Return True if we should retry, False otherwise""" + return isinstance(exception, requests.exceptions.ConnectionError) or isinstance(exception, requests.ReadTimeout) + + class Client: def __init__(self, username, password): self.username = username self.password = password self.token = self._get_jwt_token() - @staticmethod - def _retry_if_connection_error(exception): - """Return True if we should retry, False otherwise""" - return isinstance(exception, requests.exceptions.ConnectionError) or isinstance(exception, requests.ReadTimeout) - @retry( retry_on_exception=_retry_if_connection_error, stop_max_attempt_number=3, diff --git a/tests_new/integration_tests/modules/datasets_base/queries.py b/tests_new/integration_tests/modules/datasets_base/queries.py index c3fd8893e..1ac42f899 100644 --- a/tests_new/integration_tests/modules/datasets_base/queries.py +++ b/tests_new/integration_tests/modules/datasets_base/queries.py @@ -59,3 +59,55 @@ def list_datasets(client, term=''): } response = client.query(query=query) return response.data.listDatasets + + +def list_owned_datasets(client, term=''): + query = { + 'operationName': 'listOwnedDatasets', + 'variables': {'filter': {'term': term}}, + 'query': f""" + query listOwnedDatasets($filter: DatasetFilter) {{ + listOwnedDatasets(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + {DATASET_BASE_TYPE} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listOwnedDatasets + + +def list_datasets_created_in_environment(client, environment_uri, term=''): + query = { + 'operationName': 'ListDatasets', + 'variables': {'environmentUri': environment_uri, 'filter': {'term': term}}, + 'query': f""" + query ListDatasetsCreatedInEnvironment( + $filter: DatasetFilter + $environmentUri: String! + ) {{ + listDatasetsCreatedInEnvironment( + environmentUri: $environmentUri + filter: $filter + ) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + {DATASET_BASE_TYPE} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listDatasetsCreatedInEnvironment diff --git a/tests_new/integration_tests/modules/datasets_base/test_dataset.py b/tests_new/integration_tests/modules/datasets_base/test_dataset.py new file mode 100644 index 000000000..dcc3203d5 --- /dev/null +++ b/tests_new/integration_tests/modules/datasets_base/test_dataset.py @@ -0,0 +1,44 @@ +import logging +from assertpy import assert_that + +from integration_tests.modules.datasets_base.queries import ( + list_datasets, + list_owned_datasets, + list_datasets_created_in_environment, +) + +log = logging.getLogger(__name__) + + +def test_list_datasets( + client1, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id +): + assert_that(list_datasets(client1, term=session_id).nodes).is_length(3) + + +def test_list_datasets_unauthorized( + client2, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id +): + assert_that(list_datasets(client2, term=session_id).nodes).is_length(0) + + +def test_list_owned_datasets( # TODO + client1, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id +): + assert_that(list_owned_datasets(client1, term=session_id).nodes).is_length(3) + + +def test_list_owned_datasets_unauthorized( # TODO + client2, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id +): + assert_that(list_owned_datasets(client2, term=session_id).nodes).is_length(0) + + +def test_list_datasets_created_in_environment(): + # TODO + pass + + +def test_list_datasets_created_in_environment_unauthorized(): + # TODO + pass diff --git a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py index fc623f364..25d8a54c6 100644 --- a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py +++ b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py @@ -1,6 +1,7 @@ import logging import json import re +import os from botocore.exceptions import ClientError log = logging.getLogger(__name__) @@ -12,18 +13,33 @@ def __init__(self, session, region): self._resource = session.resource('s3', region_name=region) self._region = region - def create_bucket(self, bucket_name, kms_key_id=None): + def bucket_exists(self, bucket_name): + """ + Check if an S3 bucket exists. + :param bucket_name: Name of the S3 bucket to check + :return: True if the bucket exists, False otherwise + """ + try: + self._client.head_bucket(Bucket=bucket_name) + return True + except ClientError as e: + if e.response['Error']['Code'] in ['400', '403', '404']: + return False + else: + raise Exception(f'Error checking if bucket {bucket_name} exists: {e}') + + def create_bucket(self, bucket_name, kms_key_arn=None): """ Create an S3 bucket. :param bucket_name: Name of the S3 bucket to be created - :param kms_key_id: KMS key ID to use for encryption if encryption_type is 'aws:kms' + :param kms_key_arn: KMS key Arn to use for encryption if encryption_type is 'aws:kms' :return: None """ bucket_name = re.sub('[^a-zA-Z0-9-]', '', bucket_name).lower() - encryption_type = 'aws:kms' if kms_key_id else 'AES256' + encryption_type = 'aws:kms' if kms_key_arn else 'AES256' encryption_config = ( - {'SSEAlgorithm': encryption_type, 'KMSMasterKeyID': kms_key_id} + {'SSEAlgorithm': encryption_type, 'KMSMasterKeyID': kms_key_arn} if encryption_type == 'aws:kms' else {'SSEAlgorithm': encryption_type} ) @@ -41,7 +57,7 @@ def create_bucket(self, bucket_name, kms_key_id=None): Bucket=bucket_name, ServerSideEncryptionConfiguration={ 'Rules': [ - {'ApplyServerSideEncryptionByDefault': encryption_config, 'BucketKeyEnabled': False}, + {'ApplyServerSideEncryptionByDefault': encryption_config, 'BucketKeyEnabled': True}, ] }, ) @@ -67,12 +83,45 @@ def delete_bucket(self, bucket_name): except ClientError as e: log.exception(f'Error deleting S3 bucket: {e}') + def upload_file_to_prefix(self, local_file_path, s3_path): + """ + Upload a file from a local path to an S3 bucket with a specified prefix. + + :param local_file_path: Path to the local file to be uploaded + :param s3_path: S3 path where the file should be uploaded, including the bucket name and prefix + :return: None + """ + try: + bucket_name, prefix = s3_path.split('/', 1) + object_key = f'{prefix}/{os.path.basename(local_file_path)}' + self._client.upload_file(local_file_path, bucket_name, object_key) + except ClientError as e: + logging.error(f'Error uploading file to S3: {e}') + raise + class KMSClient: def __init__(self, session, account_id, region): self._client = session.client('kms', region_name=region) self._account_id = account_id + def get_key_alias(self, alias_name): + """ + Get the key alias name for a given alias. + :param alias_name: The alias name to look up + :return: alias name if the alias exists, False otherwise + """ + try: + alias_name = alias_name.lower() + response = self._client.describe_key(KeyId=f'alias/{alias_name}') + key_id = response['KeyMetadata']['KeyId'] + return alias_name + except ClientError as e: + if e.response['Error']['Code'] == 'NotFoundException': + return False + else: + raise Exception(f'Error getting key alias for {alias_name}: {e}') + def create_key_with_alias(self, alias_name): try: response = self._client.create_key() @@ -155,6 +204,19 @@ class GlueClient: def __init__(self, session, region): self._client = session.client('glue', region_name=region) + def get_database(self, database_name): + """ + Check if a Glue database exists. + :param database_name: Name of the Glue database to check + :return: True if the database exists, False otherwise + """ + try: + database = self._client.get_database(Name=database_name) + return database + except ClientError as e: + log.exception(f'Database not found, exception: {e}') + return False + def create_database(self, database_name, bucket): try: database_name = re.sub('[^a-zA-Z0-9_]', '', database_name).lower() @@ -172,16 +234,23 @@ def create_table(self, database_name, bucket, table_name): 'Description': 'integration tests', 'StorageDescriptor': { 'Columns': [ - {'Name': 'column1', 'Type': 'string'}, + {'Name': 'column1', 'Type': 'int'}, {'Name': 'column2', 'Type': 'string'}, {'Name': 'column3', 'Type': 'string'}, ], - 'Location': f's3://{bucket}/', + 'Location': f's3://{bucket}/{table_name}/', + 'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat', + 'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat', + 'Compressed': False, + 'SerdeInfo': { + 'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe', + 'Parameters': {'field.delim': ','}, + }, }, }, ) except ClientError as e: - log.exception(f'Error creating Glue database: {e}') + log.exception(f'Error creating Glue table: {e}') def delete_database(self, database_name): """ diff --git a/tests_new/integration_tests/modules/s3_datasets/conftest.py b/tests_new/integration_tests/modules/s3_datasets/conftest.py new file mode 100644 index 000000000..5e6bd503c --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/conftest.py @@ -0,0 +1,44 @@ +TABLES_FIXTURES_PARAMS = ( + 'tables_fixture_name', + [ + 'session_s3_dataset1_tables', + 'session_imported_sse_s3_dataset1_tables', + 'session_imported_kms_s3_dataset1_tables', + ], +) + +DATASETS_FIXTURES_PARAMS = ( + 'dataset_fixture_name', + [ + 'session_s3_dataset1', + 'session_imported_sse_s3_dataset1', + 'session_imported_kms_s3_dataset1', + ], +) + +DATASETS_TABLES_FIXTURES_PARAMS = ( + 'dataset_fixture_name,tables_fixture_name', + [ + ('session_s3_dataset1', 'session_s3_dataset1_tables'), + ('session_imported_sse_s3_dataset1', 'session_imported_sse_s3_dataset1_tables'), + ('session_imported_kms_s3_dataset1', 'session_imported_kms_s3_dataset1_tables'), + ], +) + +TABLES_CONFIDENTIALITY_FIXTURES_PARAMS = ( + 'tables_fixture_name, confidentiality', + [ + ('session_s3_dataset1_tables', 'Unclassified'), + ('session_imported_sse_s3_dataset1_tables', 'Official'), + ('session_imported_kms_s3_dataset1_tables', 'Secret'), + ], +) + +FOLDERS_FIXTURES_PARAMS = ( + 'folders_fixture_name', + [ + 'session_s3_dataset1_folders', + 'session_imported_sse_s3_dataset1_folders', + 'session_imported_kms_s3_dataset1_folders', + ], +) diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index 09c4b2e7f..869274bbb 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -1,6 +1,8 @@ import logging import pytest import boto3 +import json +import os from integration_tests.client import GqlError from integration_tests.core.stack.utils import check_stack_ready @@ -11,6 +13,7 @@ delete_dataset, get_dataset, sync_tables, + create_folder, ) from tests_new.integration_tests.modules.datasets_base.queries import list_datasets @@ -19,10 +22,12 @@ log = logging.getLogger(__name__) -def create_s3_dataset(client, owner, group, org_uri, env_uri, tags=[], autoApprovalEnabled=False, confidentiality=None): +def create_s3_dataset( + client, name, owner, group, org_uri, env_uri, tags=[], autoApprovalEnabled=False, confidentiality=None +): dataset = create_dataset( client, - name='TestDatasetCreated', + name=name, owner=owner, group=group, organizationUri=org_uri, @@ -41,8 +46,64 @@ def create_s3_dataset(client, owner, group, org_uri, env_uri, tags=[], autoAppro return get_dataset(client, dataset.datasetUri) +def create_aws_imported_resources( + aws_client, env, bucket_name, kms_alias_name=None, glue_database_name=None, integration_role_arn=None +): + bucket = None + kms_alias = None + database = None + existing_lf_admins = None + try: + if bucket_name: + if kms_alias_name: + kms_id, kms_alias = KMSClient( + session=aws_client, + account_id=env['AwsAccountId'], + region=env['region'], + ).create_key_with_alias(kms_alias_name) + bucket = S3Client(session=aws_client, region=env['region']).create_bucket( + bucket_name=bucket_name, + kms_key_arn=f"arn:aws:kms:{env['region']}:{env['AwsAccountId']}:key/{kms_id}", + ) + else: + bucket = S3Client(session=aws_client, region=env['region']).create_bucket( + bucket_name=bucket_name, + ) + if glue_database_name: + lf_client = LakeFormationClient(session=aws_client, region=env['region']) + existing_lf_admins = lf_client.add_role_to_datalake_admin(role_arn=integration_role_arn) + if lf_client.grant_create_database(role_arn=integration_role_arn): + database = GlueClient(session=aws_client, region=env['region']).create_database( + database_name=glue_database_name, bucket=bucket + ) + except Exception as e: + log.exception(f'Error creating imported dataset AWS resources due to: {e}') + return bucket, kms_alias, database, existing_lf_admins + + +def delete_aws_imported_resources(aws_client, env, bucket=None, kms_alias=None, database=None, existing_lf_admins=None): + try: + if bucket: + S3Client(session=aws_client, region=env['region']).delete_bucket(bucket) + if kms_alias: + KMSClient( + session=aws_client, + account_id=env['AwsAccountId'], + region=env['region'], + ).delete_key_by_alias(kms_alias) + if existing_lf_admins: + LakeFormationClient(session=aws_client, region=env['region']).remove_role_from_datalake_admin( + existing_lf_admins + ) + if database: + GlueClient(session=aws_client, region=env['region']).delete_database(database) + except Exception: + log.exception('Error deleting imported dataset AWS resources') + + def import_s3_dataset( client, + name, owner, group, org_uri, @@ -56,7 +117,7 @@ def import_s3_dataset( ): dataset = import_dataset( client, - name='TestDatasetImported', + name=name, owner=owner, group=group, organizationUri=org_uri, @@ -93,8 +154,42 @@ def delete_s3_dataset(client, env_uri, dataset): return False +def create_tables(client, dataset): + creds = json.loads(generate_dataset_access_token(client, dataset.datasetUri)) + dataset_session = boto3.Session( + aws_access_key_id=creds['AccessKey'], + aws_secret_access_key=creds['SessionKey'], + aws_session_token=creds['sessionToken'], + ) + file_path = os.path.join(os.path.dirname(__file__), 'sample_data/csv_table/csv_sample.csv') + s3_client = S3Client(dataset_session, dataset.region) + glue_client = GlueClient(dataset_session, dataset.region) + s3_client.upload_file_to_prefix(local_file_path=file_path, s3_path=f'{dataset.S3BucketName}/integrationtest1') + glue_client.create_table( + database_name=dataset.GlueDatabaseName, table_name='integrationtest1', bucket=dataset.S3BucketName + ) + + s3_client.upload_file_to_prefix(local_file_path=file_path, s3_path=f'{dataset.S3BucketName}/integrationtest2') + glue_client.create_table( + database_name=dataset.GlueDatabaseName, table_name='integrationtest2', bucket=dataset.S3BucketName + ) + response = sync_tables(client, datasetUri=dataset.datasetUri) + return [table for table in response.get('nodes', []) if table.GlueTableName.startswith('integrationtest')] + + +def create_folders(client, dataset): + folderA = create_folder( + client, datasetUri=dataset.datasetUri, input={'prefix': 'sessionFolderA', 'label': 'labelSessionFolderA'} + ) + folderB = create_folder( + client, datasetUri=dataset.datasetUri, input={'prefix': 'sessionFolderB', 'label': 'labelSessionFolderB'} + ) + + return [folderA, folderB] + + """ -Session envs persist accross the duration of the whole integ test suite and are meant to make the test suite run faster (env creation takes ~2 mins). +Session envs persist across the duration of the whole integ test suite and are meant to make the test suite run faster (env creation takes ~2 mins). For this reason they must stay immutable as changes to them will affect the rest of the tests. """ @@ -105,11 +200,13 @@ def session_s3_dataset1(client1, group1, org1, session_env1, session_id, testdat try: ds = create_s3_dataset( client1, + name='session_s3_dataset1', owner='someone', group=group1, org_uri=org1['organizationUri'], env_uri=session_env1['environmentUri'], tags=[session_id], + confidentiality='Unclassified', ) yield ds finally: @@ -117,35 +214,55 @@ def session_s3_dataset1(client1, group1, org1, session_env1, session_id, testdat delete_s3_dataset(client1, session_env1['environmentUri'], ds) +@pytest.fixture(scope='session') +def session_s3_dataset1_tables(client1, session_s3_dataset1): + yield create_tables(client1, session_s3_dataset1) + + +@pytest.fixture(scope='session') +def session_s3_dataset1_folders(client1, session_s3_dataset1): + yield create_folders(client1, session_s3_dataset1) + + @pytest.fixture(scope='session') def session_imported_sse_s3_dataset1( client1, group1, org1, session_env1, session_id, testdata, session_env1_aws_client, resources_prefix ): + bucket, kms_alias, database, existing_lf_admins = create_aws_imported_resources( + aws_client=session_env1_aws_client, + env=session_env1, + bucket_name=f'{resources_prefix}importedsses3', + ) + if not bucket: + raise Exception('Error creating import dataset AWS resources') ds = None - bucket = None - bucket_name = f'{resources_prefix}importedsses3' try: - bucket = S3Client(session=session_env1_aws_client, region=session_env1['region']).create_bucket( - bucket_name=bucket_name, kms_key_id=None - ) - ds = import_s3_dataset( client1, + name='session_imported_sse_s3_dataset1', owner='someone', group=group1, org_uri=org1['organizationUri'], env_uri=session_env1['environmentUri'], tags=[session_id], bucket=bucket, + confidentiality='Official', ) - if not bucket: - raise Exception('Error creating import dataset AWS resources') yield ds finally: if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) - if bucket: - S3Client(session=session_env1_aws_client, region=session_env1['region']).delete_bucket(bucket) + delete_aws_imported_resources(aws_client=session_env1_aws_client, env=session_env1, bucket=bucket) + + +@pytest.fixture(scope='session') +def session_imported_sse_s3_dataset1_tables(client1, session_imported_sse_s3_dataset1): + yield create_tables(client1, session_imported_sse_s3_dataset1) + + +@pytest.fixture(scope='session') +def session_imported_sse_s3_dataset1_folders(client1, session_imported_sse_s3_dataset1): + yield create_folders(client1, session_imported_sse_s3_dataset1) @pytest.fixture(scope='session') @@ -160,31 +277,22 @@ def session_imported_kms_s3_dataset1( session_env1_integration_role_arn, resources_prefix, ): - ds = None - bucket = None - database = None - existing_lf_admins = [] - kms_alias = None resource_name = f'{resources_prefix}importedkms' + bucket, kms_alias, database, existing_lf_admins = create_aws_imported_resources( + aws_client=session_env1_aws_client, + integration_role_arn=session_env1_integration_role_arn, + env=session_env1, + bucket_name=resource_name, + kms_alias_name=resource_name, + glue_database_name=resource_name, + ) + if None in [bucket, database, kms_alias]: + raise Exception('Error creating import dataset AWS resources') + ds = None try: - kms_key_id, kms_alias = KMSClient( - session=session_env1_aws_client, - account_id=session_env1['AwsAccountId'], - region=session_env1['region'], - ).create_key_with_alias(resource_name) - bucket = S3Client(session=session_env1_aws_client, region=session_env1['region']).create_bucket( - bucket_name=resource_name, kms_key_id=kms_key_id - ) - lf_client = LakeFormationClient(session=session_env1_aws_client, region=session_env1['region']) - existing_lf_admins = lf_client.add_role_to_datalake_admin(role_arn=session_env1_integration_role_arn) - if lf_client.grant_create_database(role_arn=session_env1_integration_role_arn): - database = GlueClient(session=session_env1_aws_client, region=session_env1['region']).create_database( - database_name=resource_name, bucket=resource_name - ) - if None in [bucket, database, kms_alias]: - raise Exception('Error creating import dataset AWS resources') ds = import_s3_dataset( client1, + name='session_imported_kms_s3_dataset1', owner='someone', group=group1, org_uri=org1['organizationUri'], @@ -193,25 +301,30 @@ def session_imported_kms_s3_dataset1( bucket=bucket, kms_alias=kms_alias, glue_db_name=database, + confidentiality='Secret', ) yield ds finally: if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) - if bucket: - S3Client(session=session_env1_aws_client, region=session_env1['region']).delete_bucket(bucket) - if kms_alias: - KMSClient( - session=session_env1_aws_client, - account_id=session_env1['AwsAccountId'], - region=session_env1['region'], - ).delete_key_by_alias(kms_alias) - if existing_lf_admins: - LakeFormationClient( - session=session_env1_aws_client, region=session_env1['region'] - ).remove_role_from_datalake_admin(existing_lf_admins) - if database: - GlueClient(session=session_env1_aws_client, region=session_env1['region']).delete_database(database) + delete_aws_imported_resources( + aws_client=session_env1_aws_client, + env=session_env1, + bucket=bucket, + kms_alias=kms_alias, + database=database, + existing_lf_admins=existing_lf_admins, + ) + + +@pytest.fixture(scope='session') +def session_imported_kms_s3_dataset1_tables(client1, session_imported_kms_s3_dataset1): + yield create_tables(client1, session_imported_kms_s3_dataset1) + + +@pytest.fixture(scope='session') +def session_imported_kms_s3_dataset1_folders(client1, session_imported_kms_s3_dataset1): + yield create_folders(client1, session_imported_kms_s3_dataset1) """ @@ -226,6 +339,7 @@ def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): try: ds = create_s3_dataset( client1, + name='temp_s3_dataset1', owner='someone', group=group1, org_uri=org1['organizationUri'], @@ -244,10 +358,7 @@ def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): """ -def get_or_create_persistent_s3_dataset( - dataset_name, client, group, env, bucket=None, kms_alias=None, glue_database=None -): - dataset_name = 'persistent_s3_dataset1' +def get_or_create_persistent_s3_dataset(dataset_name, client, group, env, bucket=None, kms_alias='', glue_database=''): s3_datasets = list_datasets(client, term=dataset_name).nodes if s3_datasets: return s3_datasets[0] @@ -255,6 +366,7 @@ def get_or_create_persistent_s3_dataset( if bucket: s3_dataset = import_s3_dataset( client, + name=dataset_name, owner='someone', group=group, org_uri=env['organization']['organizationUri'], @@ -268,6 +380,7 @@ def get_or_create_persistent_s3_dataset( else: s3_dataset = create_s3_dataset( client, + name=dataset_name, owner='someone', group=group, org_uri=env['organization']['organizationUri'], @@ -288,20 +401,72 @@ def persistent_s3_dataset1(client1, group1, persistent_env1, testdata): @pytest.fixture(scope='session') -def persistent_imported_sse_s3_dataset1(client1, group1, persistent_env1, testdata): +def persistent_imported_sse_s3_dataset1(client1, group1, persistent_env1, persistent_env1_aws_client, testdata): + bucket_name = f"dataalltesting{persistent_env1.environmentUri}perssses3{persistent_env1['AwsAccountId']}" + bucket = None + try: + s3_client = S3Client(session=persistent_env1_aws_client, region=persistent_env1['region']) + bucket = s3_client.bucket_exists(bucket_name) + if not bucket: + bucket, kms_alias, database, existing_lf_admins = create_aws_imported_resources( + aws_client=persistent_env1_aws_client, + env=persistent_env1, + bucket_name=bucket_name, + ) + if not bucket: + raise Exception('Error creating import dataset AWS resources') + except Exception as e: + raise Exception(f'Error creating {bucket_name=} due to: {e}') return get_or_create_persistent_s3_dataset( - 'persistent_imported_sse_s3_dataset1', client1, group1, persistent_env1, 'persistentimportedsses3' + 'persistent_imported_sse_s3_dataset1', client1, group1, persistent_env1, bucket_name ) @pytest.fixture(scope='session') -def persistent_imported_kms_s3_dataset1(client1, group1, persistent_env1, testdata): +def persistent_imported_kms_s3_dataset1( + client1, group1, persistent_env1, persistent_env1_aws_client, persistent_env1_integration_role_arn, testdata +): + resource_name = f"dataalltesting{persistent_env1.environmentUri}perskms{persistent_env1['AwsAccountId']}" + existing_bucket = S3Client(session=persistent_env1_aws_client, region=persistent_env1['region']).bucket_exists( + resource_name + ) + existing_kms_alias = KMSClient( + session=persistent_env1_aws_client, + account_id=persistent_env1['AwsAccountId'], + region=persistent_env1['region'], + ).get_key_alias(resource_name) + existing_database = GlueClient(session=persistent_env1_aws_client, region=persistent_env1['region']).get_database( + resource_name + ) + bucket, kms_alias, database, existing_lf_admins = create_aws_imported_resources( + aws_client=persistent_env1_aws_client, + integration_role_arn=persistent_env1_integration_role_arn, + env=persistent_env1, + bucket_name=resource_name if not existing_bucket else None, + kms_alias_name=resource_name if not existing_kms_alias else None, + glue_database_name=resource_name if not existing_database else None, + ) + if ( + (not bucket and not existing_bucket) + or (not kms_alias and not existing_kms_alias) + or (not database and not existing_database) + ): + delete_aws_imported_resources( + aws_client=persistent_env1_aws_client, + env=persistent_env1, + bucket=bucket, + kms_alias=kms_alias, + database=database, + existing_lf_admins=existing_lf_admins, + ) + raise Exception('Error creating import dataset AWS resources for persistent_imported_kms_s3_dataset1') + return get_or_create_persistent_s3_dataset( 'persistent_imported_kms_s3_dataset1', client1, group1, persistent_env1, - 'persistentimportedkms', - 'persistentimportedkms', - 'persistentimportedkms', + resource_name, + resource_name, + resource_name, ) diff --git a/tests_new/integration_tests/modules/s3_datasets/queries.py b/tests_new/integration_tests/modules/s3_datasets/queries.py index e7aa06376..1acada033 100644 --- a/tests_new/integration_tests/modules/s3_datasets/queries.py +++ b/tests_new/integration_tests/modules/s3_datasets/queries.py @@ -77,6 +77,7 @@ """ +## Dataset Queries/Mutations def create_dataset( client, name, @@ -270,6 +271,155 @@ def start_glue_crawler(client, datasetUri, input): return response.data.startGlueCrawler +def list_s3_datasets_owned_by_env_group(client, environment_uri, group_uri, term): + query = { + 'operationName': 'listS3DatasetsOwnedByEnvGroup', + 'variables': {'environmentUri': environment_uri, 'group_uri': group_uri, 'filter': {'term': term}}, + 'query': f""" + query listS3DatasetsOwnedByEnvGroup( + $filter: DatasetFilter + $environmentUri: String! + $groupUri: String! + ) {{ + listS3DatasetsOwnedByEnvGroup( + environmentUri: $environmentUri + groupUri: $groupUri + filter: $filter + ) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + datasetUri + label + AwsAccountId + region + GlueDatabaseName + SamlAdminGroupName + name + S3BucketName + created + owner + stack {{ + status + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listDatasetsCreatedInEnvironment + + +## Folders Queries/Mutations +def create_folder(client, datasetUri, input): + query = { + 'operationName': 'CreateDatasetStorageLocation', + 'variables': {'datasetUri': datasetUri, 'input': input}, + 'query': f""" + mutation CreateDatasetStorageLocation($datasetUri: String!, $input: NewDatasetStorageLocationInput) {{ + createDatasetStorageLocation(datasetUri: $datasetUri, input: $input) {{ + locationUri + S3Prefix + label + }} + }} + """, + } + response = client.query(query=query) + return response.data.createDatasetStorageLocation + + +def delete_folder(client, locationUri): + query = { + 'operationName': 'DeleteDatasetStorageLocation', + 'variables': {'locationUri': locationUri}, + 'query': f""" + mutation DeleteDatasetStorageLocation($locationUri: String!) {{ + deleteDatasetStorageLocation(locationUri: $locationUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteDatasetStorageLocation + + +def update_folder(client, locationUri, input): + query = { + 'operationName': 'updateDatasetStorageLocation', + 'variables': {'locationUri': locationUri, 'input': input}, + 'query': f""" + mutation updateDatasetStorageLocation($locationUri: String!, $input: ModifyDatasetStorageLocationInput!) {{ + updateDatasetStorageLocation(locationUri: $locationUri, input: $input) {{ + locationUri + S3Prefix + label + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateDatasetStorageLocation + + +def get_folder(client, locationUri): + query = { + 'operationName': 'getDatasetStorageLocation', + 'variables': {'locationUri': locationUri}, + 'query': f""" + query getDatasetStorageLocation($locationUri: String!) {{ + getDatasetStorageLocation(locationUri: $locationUri) {{ + locationUri + label + S3Prefix + }} + }} + """, + } + response = client.query(query=query) + return response.data.getDatasetStorageLocation + + +## Tables Queries/Mutations + + +def update_dataset_table(client, tableUri, input): + query = { + 'operationName': 'UpdateDatasetTable', + 'variables': {'tableUri': tableUri, 'input': input}, + 'query': f""" + mutation UpdateDatasetTable( + $tableUri: String! + $input: ModifyDatasetTableInput! + ) {{ + updateDatasetTable(tableUri: $tableUri, input: $input) {{ + tableUri + label + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateDatasetTable + + +def delete_table(client, tableUri): + query = { + 'operationName': 'deleteDatasetTable', + 'variables': {'tableUri': tableUri}, + 'query': f""" + mutation deleteDatasetTable($tableUri: String!) {{ + deleteDatasetTable(tableUri: $tableUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteDatasetTable + + def sync_tables(client, datasetUri): query = { 'operationName': 'SyncTables', @@ -302,6 +452,89 @@ def sync_tables(client, datasetUri): return response.data.syncTables +def create_table_data_filter(client, tableUri, input): + query = { + 'operationName': 'createTableDataFilter', + 'variables': {'tableUri': tableUri, 'input': input}, + 'query': f""" + mutation createTableDataFilter( + $tableUri: String! + $input: NewTableDataFilterInput! + ) {{ + createTableDataFilter(tableUri: $tableUri, input: $input) {{ + filterUri + }} + }} + """, + } + response = client.query(query=query) + return response.data.createTableDataFilter + + +def delete_table_data_filter(client, filterUri): + query = { + 'operationName': 'deleteTableDataFilter', + 'variables': {'filterUri': filterUri}, + 'query': f""" + mutation deleteTableDataFilter($filterUri: String!) {{ + deleteTableDataFilter(filterUri: $filterUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteTableDataFilter + + +def get_dataset_table(client, tableUri): + query = { + 'operationName': 'GetDatasetTable', + 'variables': {'tableUri': tableUri}, + 'query': f""" + query GetDatasetTable($tableUri: String!) {{ + getDatasetTable(tableUri: $tableUri) {{ + datasetUri + owner + description + created + tags + tableUri + AwsAccountId + GlueTableName + GlueDatabaseName + LastGlueTableStatus + label + name + S3Prefix + }} + }} + """, + } + response = client.query(query=query) + return response.data.getDatasetTable + + +def list_dataset_tables(client, datasetUri): + query = { + 'operationName': 'GetDataset', + 'variables': {'datasetUri': datasetUri, 'filter': {}}, + 'query': f""" + query GetDataset($datasetUri: String!) {{ + getDataset(datasetUri: $datasetUri) {{ + {S3_DATASET_TYPE} + tables {{ + count + nodes {{ + GlueTableName + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.getDataset + + def preview_table(client, tableUri): query = { 'operationName': 'PreviewTable', @@ -319,62 +552,199 @@ def preview_table(client, tableUri): return response.data.previewTable -def start_dataset_profiling_run(client, input): +def list_table_data_filters(client, tableUri, term): query = { - 'operationName': 'startDatasetProfilingRun', - 'variables': {'input': input}, + 'operationName': 'listTableDataFilters', + 'variables': {'tableUri': tableUri, 'filter': {'term': term}}, 'query': f""" - mutation startDatasetProfilingRun($input: StartDatasetProfilingRunInput!) {{ - startDatasetProfilingRun(input: $input) {{ - profilingRunUri - }} + query listTableDataFilters( + $tableUri: String! + $filter: DatasetTableFilter + ) {{ + listTableDataFilters(tableUri: $tableUri, filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + filterUri + label + description + filterType + includedCols + rowExpression }} - """, + }} + }} + """, } response = client.query(query=query) - return response.data.startDatasetProfilingRun + return response.data.deleteTableDataFilter -def delete_table(client, tableUri): +## Table Column Queries/Mutations +def sync_dataset_table_columns(client, tableUri): query = { - 'operationName': 'deleteDatasetTable', + 'operationName': 'SyncDatasetTableColumns', 'variables': {'tableUri': tableUri}, 'query': f""" - mutation deleteDatasetTable($tableUri: String!) {{ - deleteDatasetTable(tableUri: $tableUri) - }} + mutation SyncDatasetTableColumns($tableUri: String!) {{ + syncDatasetTableColumns(tableUri: $tableUri) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + columnUri + name + description + typeName + }} + }} + }} """, } response = client.query(query=query) - return response.data.deleteDatasetTable + return response.data.syncDatasetTableColumns -def create_folder(client, datasetUri, input): +def update_dataset_table_column(client, columnUri, input): query = { - 'operationName': 'CreateDatasetStorageLocation', - 'variables': {'datasetUri': datasetUri, 'input': input}, + 'operationName': 'updateDatasetTableColumn', + 'variables': {'columnUri': columnUri, 'input': input}, 'query': f""" - mutation CreateDatasetStorageLocation($datasetUri: String!, $input: NewDatasetStorageLocationInput) {{ - createDatasetStorageLocation(datasetUri: $datasetUri, input: $input) {{ - locationUri - S3Prefix + mutation updateDatasetTableColumn( + $columnUri: String! + $input: DatasetTableColumnInput + ) {{ + updateDatasetTableColumn(columnUri: $columnUri, input: $input) {{ + columnUri + description + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateDatasetTableColumn + + +def list_dataset_table_columns(client, tableUri, term): + query = { + 'operationName': 'ListDatasetTableColumns', + 'variables': {'tableUri': tableUri, 'filter': {'term': term}}, + 'query': f""" + query ListDatasetTableColumns( + $tableUri: String! + $filter: DatasetTableColumnFilter + ) {{ + listDatasetTableColumns(tableUri: $tableUri, filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + columnUri + name + label + description + typeName + columnType + terms {{ + count + page + pages + nodes {{ + linkUri + term {{ + label + created + path + nodeUri + }} + }} + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listDatasetTableColumns + + +## Profiling Queries/Mutations +def start_dataset_profiling_run(client, input): + query = { + 'operationName': 'startDatasetProfilingRun', + 'variables': {'input': input}, + 'query': f""" + mutation startDatasetProfilingRun($input: StartDatasetProfilingRunInput!) {{ + startDatasetProfilingRun(input: $input) {{ + profilingRunUri + datasetUri + status + GlueTableName }} }} """, } response = client.query(query=query) - return response.data.createDatasetStorageLocation + return response.data.startDatasetProfilingRun -def delete_folder(client, locationUri): +def list_table_profiling_runs(client, tableUri): query = { - 'operationName': 'DeleteDatasetStorageLocation', - 'variables': {'locationUri': locationUri}, + 'operationName': 'listDatasetTableProfilingRuns', + 'variables': {'tableUri': tableUri}, 'query': f""" - mutation DeleteDatasetStorageLocation($locationUri: String!) {{ - deleteDatasetStorageLocation(locationUri: $locationUri) - }} + query listDatasetTableProfilingRuns($tableUri: String!) {{ + listDatasetTableProfilingRuns(tableUri: $tableUri) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + profilingRunUri + GlueJobRunId + GlueTableName + results + created + status + }} + }} + }} """, } response = client.query(query=query) - return response.data.deleteDatasetStorageLocation + return response.data.listDatasetTableProfilingRuns + + +def get_table_profiling_run(client, tableUri): + query = { + 'operationName': 'getDatasetTableProfilingRun', + 'variables': {'tableUri': tableUri}, + 'query': f""" + query getDatasetTableProfilingRun($tableUri: String!) {{ + getDatasetTableProfilingRun(tableUri: $tableUri) {{ + profilingRunUri + status + GlueTableName + datasetUri + GlueJobName + GlueJobRunId + GlueTriggerSchedule + GlueTriggerName + GlueTableName + AwsAccountId + results + status + }} + }} + """, + } + response = client.query(query=query) + return response.data.getDatasetTableProfilingRun diff --git a/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/books.csv b/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/books.csv deleted file mode 100644 index d64842a89..000000000 --- a/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/books.csv +++ /dev/null @@ -1,11128 +0,0 @@ -bookID,title,authors,average_rating,isbn,isbn13,language_code, num_pages,ratings_count,text_reviews_count,publication_date,publisher -1,Harry Potter and the Half-Blood Prince (Harry Potter #6),J.K. Rowling/Mary GrandPré,4.57,0439785960,9780439785969,eng,652,2095690,27591,9/16/2006,Scholastic Inc. -2,Harry Potter and the Order of the Phoenix (Harry Potter #5),J.K. Rowling/Mary GrandPré,4.49,0439358078,9780439358071,eng,870,2153167,29221,9/1/2004,Scholastic Inc. -4,Harry Potter and the Chamber of Secrets (Harry Potter #2),J.K. Rowling,4.42,0439554896,9780439554893,eng,352,6333,244,11/1/2003,Scholastic -5,Harry Potter and the Prisoner of Azkaban (Harry Potter #3),J.K. Rowling/Mary GrandPré,4.56,043965548X,9780439655484,eng,435,2339585,36325,5/1/2004,Scholastic Inc. -8,Harry Potter Boxed Set Books 1-5 (Harry Potter #1-5),J.K. Rowling/Mary GrandPré,4.78,0439682584,9780439682589,eng,2690,41428,164,9/13/2004,Scholastic -9,Unauthorized Harry Potter Book Seven News: "Half-Blood Prince" Analysis and Speculation,W. Frederick Zimmerman,3.74,0976540606,9780976540601,en-US,152,19,1,4/26/2005,Nimble Books -10,Harry Potter Collection (Harry Potter #1-6),J.K. Rowling,4.73,0439827604,9780439827607,eng,3342,28242,808,9/12/2005,Scholastic -12,The Ultimate Hitchhiker's Guide: Five Complete Novels and One Story (Hitchhiker's Guide to the Galaxy #1-5),Douglas Adams,4.38,0517226952,9780517226957,eng,815,3628,254,11/1/2005,Gramercy Books -13,The Ultimate Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1-5),Douglas Adams,4.38,0345453743,9780345453747,eng,815,249558,4080,4/30/2002,Del Rey Books -14,The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1),Douglas Adams,4.22,1400052920,9781400052929,eng,215,4930,460,8/3/2004,Crown -16,The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1),Douglas Adams/Stephen Fry,4.22,0739322206,9780739322208,eng,6,1266,253,3/23/2005,Random House Audio -18,The Ultimate Hitchhiker's Guide (Hitchhiker's Guide to the Galaxy #1-5),Douglas Adams,4.38,0517149257,9780517149256,eng,815,2877,195,1/17/1996,Wings Books -21,A Short History of Nearly Everything,Bill Bryson,4.21,076790818X,9780767908184,eng,544,248558,9396,9/14/2004,Broadway Books -22,Bill Bryson's African Diary,Bill Bryson,3.44,0767915062,9780767915069,eng,55,7270,499,12/3/2002,Broadway Books -23,Bryson's Dictionary of Troublesome Words: A Writer's Guide to Getting It Right,Bill Bryson,3.87,0767910435,9780767910439,eng,256,2088,131,9/14/2004,Broadway Books -24,In a Sunburned Country,Bill Bryson,4.07,0767903862,9780767903868,eng,335,72451,4245,5/15/2001,Broadway Books -25,I'm a Stranger Here Myself: Notes on Returning to America After Twenty Years Away,Bill Bryson,3.90,076790382X,9780767903820,eng,304,49240,2211,6/28/2000,Broadway Books -26,The Lost Continent: Travels in Small Town America,Bill Bryson,3.83,0060920084,9780060920081,eng,299,45712,2257,8/28/1990,William Morrow Paperbacks -27,Neither Here nor There: Travels in Europe,Bill Bryson,3.86,0380713802,9780380713806,eng,254,48701,2238,3/28/1993,William Morrow Paperbacks -28,Notes from a Small Island,Bill Bryson,3.91,0380727501,9780380727506,eng,324,80609,3301,5/28/1997,William Morrow Paperbacks -29,The Mother Tongue: English and How It Got That Way,Bill Bryson,3.93,0380715430,9780380715435,eng,270,28489,2085,9/28/1991,William Morrow Paperbacks -30,J.R.R. Tolkien 4-Book Boxed Set: The Hobbit and The Lord of the Rings,J.R.R. Tolkien,4.59,0345538374,9780345538376,eng,1728,101233,1550,9/25/2012,Ballantine Books -31,The Lord of the Rings (The Lord of the Rings #1-3),J.R.R. Tolkien,4.50,0618517650,9780618517657,eng,1184,1710,91,10/21/2004,Houghton Mifflin Harcourt -34,The Fellowship of the Ring (The Lord of the Rings #1),J.R.R. Tolkien,4.36,0618346252,9780618346257,eng,398,2128944,13670,9/5/2003,Houghton Mifflin Harcourt -35,The Lord of the Rings (The Lord of the Rings #1-3),J.R.R. Tolkien/Alan Lee,4.50,0618260587,9780618260584,en-US,1216,1618,140,10/1/2002,Houghton Mifflin Harcourt -36,The Lord of the Rings: Weapons and Warfare,Chris Smith/Christopher Lee/Richard Taylor,4.53,0618391002,9780618391004,eng,218,19822,46,11/5/2003,Houghton Mifflin Harcourt -37,The Lord of the Rings: Complete Visual Companion,Jude Fisher,4.50,0618510826,9780618510825,eng,224,359,6,11/15/2004,Houghton Mifflin Harcourt -45,Agile Web Development with Rails: A Pragmatic Guide,Dave Thomas/David Heinemeier Hansson/Leon Breedt/Mike Clark/Thomas Fuchs/Andreas Schwarz,3.84,097669400X,9780976694007,eng,558,1430,59,7/28/2005,Pragmatic Bookshelf -50,Hatchet (Brian's Saga #1),Gary Paulsen,3.72,0689840926,9780689840920,eng,208,270244,12017,4/1/2000,Atheneum Books for Young Readers: Richard Jackson Books -51,Hatchet: A Guide for Using "Hatchet" in the Classroom,Donna Ickes/Edward Sciranko/Keith Vasconcelles,4.00,1557344493,9781557344496,eng,48,36,2,8/28/1994,Teacher Created Resources -53,Guts: The True Stories behind Hatchet and the Brian Books,Gary Paulsen,3.88,0385326505,9780385326506,eng,144,2067,334,1/23/2001,Delacorte Press -54,Molly Hatchet - 5 of the Best,Molly Hatchet,4.33,1575606240,9781575606248,eng,56,6,0,6/10/2003,Cherry Lane Music Company -55,Hatchet Jobs: Writings on Contemporary Fiction,Dale Peck,3.45,1595580271,9781595580276,en-US,228,99,16,11/1/2005,The New Press -57,A Changeling for All Seasons (Changeling Seasons #1),Angela Knight/Sahara Kelly/Judy Mays/Marteeka Karland/Kate Douglas/Shelby Morgen/Lacey Savage/Kate Hill/Willa Okati,3.76,1595962808,9781595962805,eng,304,167,4,11/1/2005,Changeling Press -58,Changeling (Changeling #1),Delia Sherman,3.60,0670059676,9780670059676,eng,256,978,111,8/17/2006,Viking Juvenile -59,The Changeling Sea,Patricia A. McKillip,4.06,0141312629,9780141312620,eng,137,4454,302,4/14/2003,Firebird -61,The Changeling,Zilpha Keatley Snyder,4.17,0595321801,9780595321803,eng,228,1176,96,6/8/2004,iUniverse -63,The Changeling,Kate Horsley,3.55,1590301943,9781590301944,eng,339,301,43,4/12/2005,Shambhala -66,The Changeling (Daughters of England #15),Philippa Carr,3.98,0449146979,9780449146972,eng,369,345,12,8/28/1990,Ivy Books -67,The Known World,Edward P. Jones,3.83,0061159174,9780061159176,eng,388,29686,2626,8/29/2006,Amistad -68,The Known World,Edward P. Jones/Kevin R. Free,3.83,006076273X,9780060762735,en-US,14,55,12,6/15/2004,HarperAudio -69,The Known World,Edward P. Jones,3.83,0060749911,9780060749910,eng,576,22,3,6/15/2004,Harper -71,Traders Guns & Money: Knowns and Unknowns in the Dazzling World of Derivatives,Satyajit Das,3.83,0273704745,9780273704744,eng,334,1456,82,5/15/2006,FT Press -72,Artesia: Adventures in the Known World,Mark Smylie,4.13,1932386106,9781932386103,eng,352,52,4,12/14/2005,Archaia -74,The John McPhee Reader (John McPhee Reader #1),John McPhee/William Howarth,4.42,0374517193,9780374517199,eng,416,562,37,6/1/1982,Farrar Straus and Giroux -75,Uncommon Carriers,John McPhee,3.95,0374280398,9780374280390,en-US,248,1630,203,5/16/2006,Farrar Straus Giroux -76,Heirs of General Practice,John McPhee,4.17,0374519749,9780374519742,eng,128,268,22,4/1/1986,Farrar Straus and Giroux -77,The Control of Nature,John McPhee,4.24,0374522596,9780374522599,en-US,288,3498,305,9/1/1990,Farrar Straus and Giroux -78,Annals of the Former World,John McPhee,4.34,0374518734,9780374518738,eng,720,3115,228,1/6/1999,Farrar Straus and Giroux -79,Coming Into the Country,John McPhee,4.22,0374522871,9780374522872,eng,448,5704,261,4/1/1991,Farrar Straus and Giroux -80,La Place de la Concorde Suisse,John McPhee,3.92,0374519323,9780374519322,fre,160,698,52,4/1/1994,Farrar Straus and Giroux -81,Giving Good Weight,John McPhee,4.23,0374516006,9780374516000,eng,288,542,36,4/1/1994,Farrar Straus and Giroux -83,Rising from the Plains,John McPhee,4.23,0374520658,9780374520656,eng,208,1341,98,11/1/1987,Farrar Straus and Giroux -85,The Heidi Chronicles,Wendy Wasserstein,3.75,0822205106,9780822205104,eng,81,1423,70,3/1/2002,Dramatists Play Service -86,The Heidi Chronicles: Uncommon Women and Others & Isn't It Romantic,Wendy Wasserstein,3.84,0679734996,9780679734994,eng,249,2766,64,7/2/1991,Vintage -89,Active Literacy Across the Curriculum: Strategies for Reading Writing Speaking and Listening,Heidi Hayes Jacobs,3.94,1596670231,9781596670235,eng,138,31,1,3/29/2006,Routledge -90,Simply Beautiful Beaded Jewelry,Heidi Boyd,3.77,1581807740,9781581807745,en-US,128,62,4,3/14/2006,North Light Books -91,Always Enough: God's Miraculous Provision Among the Poorest Children on Earth,Heidi Baker/Rolland Baker,4.46,0800793617,9780800793616,eng,192,860,53,9/1/2003,Chosen Books -92,Mapping the Big Picture: Integrating Curriculum & Assessment K-12,Heidi Hayes Jacobs,3.68,0871202867,9780871202864,en-US,108,77,2,1/28/1997,Association for Supervision & Curriculum Development -93,Heidi (Heidi #1-2),Johanna Spyri/Beverly Cleary/Angelo Rinaldi,3.99,0753454947,9780753454947,eng,352,153317,2257,11/15/2002,Kingfisher -94,Getting Results with Curriculum Mapping,Heidi Hayes Jacobs,3.25,0871209993,9780871209993,eng,192,55,5,11/15/2004,ASCD -96,There's Always Enough: The Miraculous Move of God in Mozambique,Rolland Baker/Heidi Baker,4.46,1852402873,9781852402877,eng,192,34,6,4/28/2003,Sovereign World -98,What to Expect the First Year (What to Expect),Heidi Murkoff/Sharon Mazel/Arlene Eisenberg/Sandee Hathaway/Mark D. Widome,3.89,0761129588,9780761129585,eng,832,11797,659,10/16/2003,Workman Publishing Company -99,The Player's Handbook: The Ultimate Guide on Dating and Relationships,Heidi Fleiss/Libby Keatinge,3.82,0972016414,9780972016414,eng,123,34,8,5/10/2004,One Hour Entertainment -100,Simply Beautiful Beading: 53 Quick and Easy Projects,Heidi Boyd,3.78,1581805632,9781581805635,en-US,128,78,4,8/19/2004,North Light Books -103,God Emperor of Dune (Dune Chronicles #4),Frank Herbert,3.84,0441294677,9780441294671,eng,423,2785,166,6/15/1987,Ace Books -105,Chapterhouse: Dune (Dune Chronicles #6),Frank Herbert,3.91,0441102670,9780441102679,eng,436,38778,568,7/1/1987,Ace Books -106,Dune Messiah (Dune Chronicles #2),Frank Herbert,3.88,0441172695,9780441172696,eng,331,97494,2359,7/15/1987,Ace Books -107,Dreamer of Dune: The Biography of Frank Herbert,Brian Herbert,4.01,0765306476,9780765306470,en-US,592,784,21,7/1/2004,Tor Books -109,Heretics of Dune (Dune Chronicles #5),Frank Herbert,3.86,0399128980,9780399128981,eng,480,272,20,4/16/1984,Putnam -110,The Road to Dune,Frank Herbert/Brian Herbert/Kevin J. Anderson,3.88,0765353709,9780765353702,eng,426,4789,83,8/29/2006,Tor Science Fiction -117,Heretics of Dune (Dune Chronicles #5),Frank Herbert,3.86,0441328008,9780441328000,eng,471,45388,644,8/15/1987,Ace Books -119,The Lord of the Rings: The Art of the Fellowship of the Ring,Gary Russell,4.59,0618212906,9780618212903,eng,192,26153,102,6/12/2002,Houghton Mifflin Harcourt -122,The Power of One (The Power of One #1),Bryce Courtenay,4.35,034541005X,9780345410054,eng,544,69167,4551,9/29/1996,Ballantine Books -123,The Power of One (The Power of One #1),Bryce Courtenay,4.35,0385732546,9780385732543,eng,291,45,13,9/13/2005,Delacorte Books for Young Readers -129,The Power of One: One Person One Rule One Month,John C. Maxwell/Stephen R. Graves/Thomas G. Addington,4.28,0785260056,9780785260059,en-US,256,16,1,11/1/2004,Thomas Nelson -130,Power of an Hour: Business and Life Mastery in One Hour a Week,Dave Lakhani,3.34,0471780936,9780471780939,eng,205,174,16,5/19/2006,Wiley -131,The Power of One: The Solo Play for Playwrights Actors and Directors,Louis E. Catron,3.67,0325001537,9780325001531,eng,240,10,0,2/7/2000,Heinemann Drama -132,How to Buy Sell & Profit on eBay: Kick-Start Your Home-Based Business in Just Thirty Days,Adam Ginsberg,3.48,006076287X,9780060762872,eng,336,76,9,5/3/2005,William Morrow Paperbacks -133,eBay for Dummies,Marsha Collier,3.50,0470045299,9780470045299,eng,386,111,9,10/30/2006,Wiley -135,What to Sell on ebay and Where to Get It: The Definitive Guide to Product Sourcing for eBay and Beyond,Chris Malta/Lisa Suttora,3.62,0072262788,9780072262780,eng,260,24,0,1/24/2006,McGraw-Hill -137,Starting an eBay Business for Dummies,Marsha Collier,3.55,0764569244,9780764569241,eng,384,55,4,9/17/2004,Wiley -138,eBay: Top 100 Simplified Tips & Tricks,Julia Wilkinson,4.27,0471933821,9780471933823,eng,260,9,0,6/6/2006,Wiley -139,ebay Timesaving Techniques for Dummies,Marsha Collier,3.39,0764559915,9780764559914,en-US,391,22,1,5/31/2004,Wiley -140,eBay Business All-in-One Desk Reference for Dummies,Marsha Collier,3.89,0764584383,9780764584381,en-US,864,17,3,4/25/2005,Wiley -141,Ruby Cookbook,Lucas Carlson/Leonard Richardson,3.84,0596523696,9780596523695,eng,873,166,4,7/29/2006,O'Reilly Media -142,Ruby Ann's Down Home Trailer Park Cookbook,Ruby Ann Boxcar,4.12,0806523492,9780806523491,eng,240,50,5,5/3/2005,Citadel -144,Ruby Ann's Down Home Trailer Park BBQin' Cookbook,Ruby Ann Boxcar,4.08,0806525363,9780806525365,eng,206,13,2,5/3/2005,Citadel -147,Rails Cookbook: Recipes for Rapid Web Development with Ruby,Rob Orsini,3.48,0596527314,9780596527310,eng,514,64,1,1/1/2007,O'Reilly Media -151,Anna Karenina,Leo Tolstoy/Richard Pevear/Larissa Volokhonsky,4.05,0143035002,9780143035008,eng,838,16643,1851,5/31/2004,Penguin Classics -152,Anna Karenina,Leo Tolstoy/David Magarshack/Priscilla Meyer,4.05,0451528611,9780451528612,eng,960,109420,5696,11/5/2002,Signet -153,Anna Karenina,Leo Tolstoy/Richard Pevear/Larissa Volokhonsky/John Bayley,4.05,0140449175,9780140449174,eng,837,2904,309,1/30/2003,Penguin Books -154,CliffsNotes on Tolstoy's Anna Karenina,Marianne Sturman/Leo Tolstoy,3.85,0822001837,9780822001836,eng,80,16,3,11/26/1965,Cliffs Notes -155,Anna Karenina,Leo Tolstoy/Amy Mandelker/Constance Garnett,4.05,1593080271,9781593080273,eng,803,9564,726,7/1/2003,Barnes & Noble Classics -156,Anna Karenina,Leo Tolstoy/Louise Maude/Aylmer Maude,4.05,0486437965,9780486437965,eng,752,474,72,11/23/2004,Dover Publications -157,Anna Karenina,Leo Tolstoy/Constance Garnett/Amy Mandelker,4.05,1593081774,9781593081775,eng,803,303,48,8/26/2004,Barnes & Noble -159,Dinner with Anna Karenina,Gloria Goldreich,2.99,0778322270,9780778322276,eng,360,411,65,1/28/2006,Mira Books -160,Tolstoy: Anna Karenina,Anthony Thorlby,4.19,0521313252,9780521313254,eng,128,1204,33,11/26/1987,Cambridge University Press -162,Untouchable,Mulk Raj Anand/E.M. Forster,3.71,0140183957,9780140183955,eng,160,3429,279,7/3/1990,Penguin Books -163,The Untouchable,John Banville,3.95,0679767479,9780679767473,eng,367,2163,216,6/30/1998,Vintage -164,The Untouchables,Eliot Ness/Oscar Fraley,3.89,1568491980,9781568491981,eng,256,613,31,2/1/1996,Buccaneer Books -165,Untouchables: My Family's Triumphant Journey Out of the Caste System in Modern India,Narendra Jadhav,3.82,0743270797,9780743270793,en-US,320,308,40,9/27/2005,Scribner -166,Dalit: The Black Untaouchables of India,V.T. Rajshekar/Y.N. Kly,4.20,0932863051,9780932863058,eng,100,10,0,1/28/1995,Clarity Press -168,Growing Up Untouchable in India: A Dalit Autobiography,Vasant Moon/Gail Omvedt/Eleanor Zelliot,3.65,0742508803,9780742508804,eng,224,16,4,12/20/2000,Rowman & Littlefield Publishers -171,The Evidence-Based Social Work Skills Book,Barry R. Cournoyer,3.40,0205358624,9780205358625,eng,216,10,0,9/22/2003,Pearson -177,A Wrinkle in Time: A Guide for Using "A Wrinkle in Time" in the Classroom,John Carratello/Patty Carratello/Theresa Wright,4.00,1557344035,9781557344038,eng,48,17,0,9/28/1991,Teacher Created Resources -180,Wrinkles in Time,George Smoot/Keay Davidson,4.01,0380720442,9780380720446,eng,360,1035,23,10/1/1994,Harper Perennial -181,A Wrinkle in Time: With Related Readings (A Wrinkle in Time Quintet #1),Madeleine L'Engle,4.00,0821925326,9780821925324,eng,250,36,6,5/1/2002,EMC/Paradigm Publishing -182,Literature Circle Guide: A Wrinkle in Time,Tara MacCarthy,3.60,043927169X,9780439271691,eng,32,15,0,1/1/2002,Teaching Resources -201,Una arruga en el tiempo – A Wrinkle in Time,Madeleine L'Engle,4.00,0606105263,9780606105262,spa,205,6,1,6/1/1984,Turtleback Books -204,The Long Shadow (The Morland Dynasty #6),Cynthia Harrod-Eagles,4.12,0751506435,9780751506433,eng,367,376,17,6/1/1994,Little Brown Book Group -205,A Long Shadow (Inspector Ian Rutledge #8),Charles Todd,4.11,006078671X,9780060786717,eng,352,3086,237,1/3/2006,William Morrow -207,Long Way Round: Chasing Shadows Across the World,Ewan McGregor/Charley Boorman/Robert Uhlig,3.94,0743499344,9780743499347,en-US,320,352,44,11/1/2005,Atria Books -208,A Shadow in Summer (Long Price Quartet #1),Daniel Abraham,3.60,0765313405,9780765313409,eng,331,9852,633,3/7/2006,Tor Books -213,New Hope for the Dead (Hoke Mosely #2),Charles Willeford/James Lee Burke,3.90,1400032490,9781400032495,eng,244,821,78,8/10/2004,Vintage Crime/Black Lizard -214,Sideswipe: A Hoke Moseley Novel,Charles Willeford/Lawrence Block,4.05,1400032482,9781400032488,eng,215,731,72,3/8/2005,Vintage Crime/Black Lizard -216,Miami Blues (Hoke Moseley #1),Charles Willeford/Elmore Leonard,3.94,1400032466,9781400032464,eng,191,2897,178,8/10/2004,Vintage Crime/Black Lizard -230,The Burnt Orange Heresy (Vintage Crime/Black Lizard),Charles Willeford,3.89,0679732527,9780679732525,eng,144,98,11,10/3/1990,Vintage -231,I am Charlotte Simmons,Tom Wolfe,3.42,0312424442,9780312424442,eng,738,20888,1688,8/30/2005,Picador USA -237,Poetry for Young People: Edward Lear,Edward Lear/Laura Huliska-Beith/Edward Mendelson,3.91,0806930772,9780806930770,eng,48,66,19,10/1/2001,Sterling -244,The Puffin Book of Nonsense Verse,Quentin Blake,4.02,0140366601,9780140366600,eng,287,81,6,10/3/1996,Puffin -245,Henry Miller on Writing,Henry Miller/Thomas H. Moore,4.22,0811201120,9780811201124,eng,217,981,52,2/1/1964,New Directions Publishing -247,Quiet Days in Clichy,Henry Miller,3.69,080213016X,9780802130167,eng,154,3381,141,1/13/1994,Grove Press -249,Tropic of Cancer,Henry Miller/Jiří Níl,3.68,0802131786,9780802131782,eng,318,53206,2376,1/6/1994,Grove Press -250,Tropic of Capricorn,Henry Miller,3.78,0802151825,9780802151827,eng,348,14872,459,1/13/1994,Grove Press -251,Nexus (The Rosy Crucifixion #3),Henry Miller,4.10,0802151787,9780802151780,eng,316,3261,58,1/13/1994,Grove Press -252,Sexus (The Rosy Crucifixion #1),Henry Miller,3.98,0802151809,9780802151803,eng,506,7805,251,1/12/1994,Grove Press -253,The Air-Conditioned Nightmare,Henry Miller,3.83,0811201066,9780811201063,eng,292,2699,142,1/17/1970,New Directions -264,The Portrait of a Lady,Henry James/Patricia Crick,3.78,0141439637,9780141439631,eng,797,61640,1951,9/30/2003,Penguin Classics -269,The Portrait of a Lady,Henry James/Gabriel Brownstein/Mary Cregan,3.78,1593080964,9781593080969,eng,635,392,41,1/16/2004,Barnes Noble Classics -277,Writing,Marguerite Duras,3.75,1571290532,9781571290533,eng,91,778,44,5/6/1999,Brookline Books -278,The War,Marguerite Duras/Barbara Bray,3.85,1565842219,9781565842212,eng,192,963,65,8/1/1994,The New Press -280,The Ravishing of Lol Stein,Marguerite Duras/Richard Seever,3.66,0394743040,9780394743042,en-US,181,2057,128,3/12/1986,Pantheon -285,Love Letters,Kahlil Gibran/Suheil Bushrui/Salma H. Al-Kuzbari,3.68,1851681825,9781851681822,eng,178,203,8,7/1/1999,One World (UK) -288,Kahlil Gibran: His Life and World,Jean Gibran/جبران خليل جبران/Kahlil Gibran,4.21,156656249X,9781566562492,eng,464,35,2,4/1/1998,Interlink Publishing Group -289,The Beloved: Reflections on the Path of the Heart,Kahlil Gibran/John Walbridge/Robin Waterfield,4.19,014019553X,9780140195538,eng,102,328,16,1/1/1998,Penguin Books -290,Jesus the Son of Man,Kahlil Gibran/جبران خليل جبران,3.98,0394431243,9780394431246,eng,216,1308,82,2/21/1995,Knopf -291,The Broken Wings,Kahlil Gibran/جبران خليل جبران/Anthony Rizcallah Ferris,3.92,0806501901,9780806501901,eng,132,6432,517,3/3/2003,Citadel -292,Sand and Foam,Kahlil Gibran/جبران خليل جبران,4.08,067943920X,9780679439202,eng,100,3015,217,6/14/2011,Knopf -295,Treasure Island,Robert Louis Stevenson,3.83,0753453800,9780753453803,eng,311,318753,6734,9/15/2001,Kingfisher -296,Treasure Island,Robert Louis Stevenson/Scott McKowen,3.83,1402714572,9781402714573,en-US,213,420,42,10/1/2004,Sterling Children's Books -297,Treasure Island,Robert Louis Stevenson,3.83,1416500294,9781416500292,eng,245,5967,276,6/1/2005,Simon & Schuster -298,Treasure Island,Robert Louis Stevenson/N.C. Wyeth/Timothy Meis,3.83,0689854684,9780689854682,eng,64,104,14,7/1/2003,Atheneum Books for Young Readers -299,Treasure Island,Robert Louis Stevenson/Milo Winter,3.83,0517221144,9780517221143,en-US,272,56,4,9/3/2002,Gramercy Books -302,Treasure Island (Great Illustrated Classics),Deidre S. Laiken/A.J. McAllister/Robert Louis Stevenson,4.05,1577658051,9781577658054,eng,232,91,16,1/31/2006,Abdo Publishing Company -313,100 Years of Lynchings,Ralph Ginzburg,4.61,0933121180,9780933121188,eng,270,88,4,11/22/1996,Black Classic Press -324,Cien años de soledad,Gabriel García Márquez,4.07,0785950109,9780785950103,spa,448,63,7,1/1/1990,French & European -330,On Beyond Zebra!,Dr. Seuss,4.04,0394800842,9780394800844,eng,64,2815,164,9/12/1955,Random House Books for Young Readers -332,The Wedding Clause,Debbie Raleigh,3.60,0821778250,9780821778258,eng,256,95,13,6/7/2005,Zebra -333,The Zebra Wall,Kevin Henkes,3.44,0060733039,9780060733032,eng,147,217,24,2/15/2005,Greenwillow Books -337,El perfume: Historia de un asesino,Patrick Süskind,4.02,8432216062,9788432216060,spa,239,4136,255,6/1/2002,Booket -348,The Door Into Summer,Robert A. Heinlein,4.01,0345413997,9780345413994,eng,304,17232,649,6/17/1997,Del Rey -350,Stranger in a Strange Land,Robert A. Heinlein,3.92,0441788386,9780441788385,eng,528,251872,6241,10/1/1991,Ace -354,To Sail Beyond the Sunset,Robert A. Heinlein,3.87,0441748600,9780441748600,en-US,434,10293,193,6/1/1988,Ace Books -355,Job: A Comedy of Justice,Robert A. Heinlein,3.78,0345316509,9780345316509,en-US,439,15970,438,10/12/1985,Del Rey -356,Time for the Stars (Heinlein's Juveniles #10),Robert A. Heinlein,3.97,0765314932,9780765314932,eng,256,6898,200,8/8/2006,Tor Books -357,The Long Dark Tea-Time of the Soul (Dirk Gently #2),Douglas Adams,4.06,0671742515,9780671742515,en-US,307,67803,1401,2/15/1991,Pocket Books -359,The Salmon of Doubt (Dirk Gently #3),Douglas Adams,3.93,0345455290,9780345455291,eng,298,22091,746,4/26/2005,Del Rey -362,Wish You Were Here: The Official Biography of Douglas Adams,Nick Webb,4.14,0345476514,9780345476517,eng,368,2623,49,12/27/2005,Del Rey -367,Douglas Adams's Starship Titanic,Terry Jones,3.60,0345368436,9780345368430,eng,256,885,84,10/27/1998,Ballantine Books -377,Salmon of Doubt: Hitchhiking the Galaxy One Last Time,Douglas Adams/Christopher Cerf,3.93,1417622857,9781417622856,eng,336,5,0,7/1/2003,Turtleback Books -382,The Phantom Tollbooth: A Children's Play in Two Acts,Susan Nanus/Norton Juster,4.13,0573650969,9780573650963,eng,72,100,13,1/12/2011,Samuel French Inc. -385,On Bullshit,Harry G. Frankfurt,3.57,0691122946,9780691122946,eng,67,9358,995,1/30/2005,Princeton University Press -386,Another Bullshit Night in Suck City,Nick Flynn,3.78,0393329402,9780393329407,eng,347,9318,907,9/12/2005,W. W. Norton & Company -394,Lincoln at Gettysburg: The Words That Remade America,Garry Wills,4.14,0671867423,9780671867423,en-US,317,120,15,6/12/1993,Simon & Schuster -397,The Gettysburg Address,Abraham Lincoln/Michael McCurdy,4.53,0395883970,9780395883976,eng,32,5239,76,2/2/1998,HMH Books for Young Readers -399,Underworld,Don DeLillo,3.92,0684848155,9780684848150,eng,827,1505,175,7/9/1998,Scribner -400,Libra,Don DeLillo,3.99,0140156046,9780140156041,eng,480,11857,564,5/1/1991,Penguin -403,Americana,Don DeLillo,3.43,0140119485,9780140119480,eng,377,393,55,7/6/1989,Penguin Books -404,Running Dog,Don DeLillo,3.43,0679722947,9780679722946,eng,256,1356,72,7/17/1989,Vintage Contemporaries -406,Cosmopolis,Don DeLillo,3.22,0743244257,9780743244251,eng,224,460,41,4/6/2004,Scribner -407,Great Jones Street,Don DeLillo,3.48,0140179178,9780140179170,eng,272,2492,145,1/1/1994,Penguin Books -408,The Names,Don DeLillo,3.64,0679722955,9780679722953,eng,339,3100,212,7/17/1989,Vintage -409,Against the Day,Thomas Pynchon,4.13,159420120X,9781594201202,eng,1085,5296,587,11/21/2006,Penguin Press -410,V.,Thomas Pynchon,3.96,0060930217,9780060930219,eng,547,1415,177,7/5/2005,Harper Perennial Modern Classics -411,The Crying of Lot 49,Thomas Pynchon,3.69,0060931671,9780060931674,eng,152,2161,230,4/1/1999,Harper Perennial -412,Gravity's Rainbow,Thomas Pynchon,4.01,0140283382,9780140283389,eng,784,762,213,1/1/2000,Penguin Books -413,Mason & Dixon,Thomas Pynchon/Christophe Claro/Brice Matthieussent,4.07,0312423209,9780312423209,eng,773,8086,602,1/3/2004,Picador USA -414,Vineland,Thomas Pynchon,3.69,0141180633,9780141180632,en-US,385,702,69,9/1/1997,Penguin Classics -415,Gravity's Rainbow,Thomas Pynchon,4.01,0143039946,9780143039945,eng,776,29764,2164,10/31/2006,Penguin Books -416,Slow Learner: Early Stories,Thomas Pynchon,3.50,0316724432,9780316724432,eng,193,334,34,4/30/1985,Back Bay Books -418,Been Down So Long It Looks Like Up To Me,Richard Fariña/Thomas Pynchon,3.80,0140189300,9780140189308,eng,352,2473,220,8/29/1996,Penguin Classics -420,The Year of Magical Thinking,Joan Didion,3.89,140004314X,9781400043149,en-US,227,2656,336,10/4/2005,Knopf Publishing Group -421,The White Album,Joan Didion,4.17,0374522219,9780374522216,eng,222,11889,738,10/1/1990,Farrar Straus Giroux -422,A Book of Common Prayer,Joan Didion,3.80,0679754865,9780679754862,eng,272,2962,255,4/11/1995,Vintage International -423,Where I Was From,Joan Didion,3.86,0679752862,9780679752868,eng,240,2842,292,9/14/2004,Vintage -424,Slouching Towards Bethlehem,Joan Didion,4.21,0374521727,9780374521721,eng,238,26934,1825,10/1/1990,Farrar Straus Giroux -425,Democracy,Joan Didion,3.81,0679754857,9780679754855,en-US,234,2070,169,4/25/1995,Vintage International -426,We Tell Ourselves Stories in Order to Live: Collected Nonfiction,Joan Didion/John Leonard,4.50,0307264874,9780307264879,eng,1122,1564,108,10/17/2006,Everyman's Library -428,Play It As It Lays,Joan Didion/David Thomson,3.87,0374529949,9780374529949,eng,231,23656,1706,11/15/2005,Farrar Straus and Giroux -431,The New York Trilogy,Paul Auster/Art Spiegelman/Luc Sante,3.89,0143039830,9780143039839,eng,308,43200,1873,3/28/2006,Penguin Classics -432,City of Glass (The New York Trilogy #1),Paul Auster,3.79,0140097317,9780140097313,eng,203,12410,734,4/7/1987,Penguin Books -434,Ghosts (The New York Trilogy #2),Paul Auster,3.64,014009735X,9780140097351,eng,96,3672,195,7/7/1987,Penguin Books -435,The Locked Room (The New York Trilogy #3),Paul Auster,3.89,0940650762,9780940650763,eng,179,2998,164,11/1/1986,Sun and Moon Press -444,Pyramids of Montauk: Explorations in Consciousness,Peter Moon/Preston B. Nichols/Nina Helms,3.89,0963188925,9780963188922,eng,256,74,2,1/1/1995,Sky Books (NY) -446,The Brooklyn Follies,Paul Auster,3.84,0312426232,9780312426231,eng,306,17977,1157,10/17/2006,Picador -447,Moon Palace,Paul Auster,3.94,0140115854,9780140115857,eng,320,16099,503,4/1/1990,Penguin Books -453,The Music of Chance,Paul Auster,3.90,0140154078,9780140154078,en-US,217,361,36,12/1/1991,Penguin Books -454,Travels in the Scriptorium,Paul Auster,3.23,0805081453,9780805081459,eng,145,6688,562,1/23/2007,Henry Holt & Company -456,Leviathan,Paul Auster,3.96,0140178139,9780140178135,eng,275,11744,443,9/1/1993,Penguin Books -463,The Red Notebook: True Stories,Paul Auster,3.77,0811214982,9780811214988,eng,104,2390,120,6/17/2002,New Directions -466,Timbuktu / Leviathan / Moon Palace,Paul Auster,4.38,2742741461,9782742741465,fre,1075,21,1,11/7/2002,Actes Sud -475,Collapse: How Societies Choose to Fail or Succeed,Jared Diamond,3.93,0143036556,9780143036555,eng,608,52522,2780,12/27/2005,Penguin Books Ltd. (London) -476,The Coming Economic Collapse: How You Can Thrive When Oil Costs $200 a Barrel,Stephen Leeb/Glen C. Strathy,3.40,0446579785,9780446579780,en-US,211,213,26,2/1/2006,Business Plus -477,Collapse of Complex Societies,Joseph A. Tainter,4.15,052138673X,9780521386739,eng,262,719,86,3/29/1990,Cambridge University Press -478,Bowling Alone: The Collapse and Revival of American Community,Robert D. Putnam,3.80,0743203046,9780743203043,eng,544,4762,512,8/7/2001,Simon Schuster -481,The Collapse of the Common Good: How America's Lawsuit Culture Undermines Our Freedom,Philip K. Howard,3.91,034543871X,9780345438713,eng,272,62,4,1/29/2002,Ballantine Books -484,Reinventing the Enemy's Language: Contemporary Native Women's Writings of North America,Joy Harjo/Gloria Bird/Beth Cuthand/Valerie Martinez/Patricia Blanco,4.39,0393318281,9780393318289,eng,576,278,20,9/17/1998,W. W. Norton Company -493,My Inventions,Nikola Tesla,4.01,1599869942,9781599869940,eng,88,2862,262,5/17/2006,Filiquarian Publishing LLC. -494,Wizard: The Life and Times of Nikola Tesla: Biography of a Genius,Marc J. Seifer/William H. Terbo,3.78,0806519606,9780806519609,eng,542,2829,334,2/1/2001,Citadel -497,Nikola Tesla: A Spark of Genius,Carol Dommermuth-Costa,3.93,0822549204,9780822549208,eng,144,105,5,10/1/1994,Lerner Publications -498,Tesla Papers,Nikola Tesla/David Hatcher Childress,4.13,0932813860,9780932813862,eng,100,102,2,12/1/2000,Adventures Unlimited Press -511,Boys of Summer,Julie Elizabeth Leto/Leslie Kelly/Kimberly Raye,3.77,0373792689,9780373792689,eng,249,478,12,6/27/2006,Harlequin Blaze -515,Programming Ruby: The Pragmatic Programmers' Guide,Dave Thomas/Chad Fowler/Andy Hunt,4.03,0974514055,9780974514055,en-US,828,1577,49,10/11/2004,Pragmatic Bookshelf -523,Golding's Lord of the Flies (Cliffs Notes),Maureen Kelly/CliffsNotes/William Golding,3.95,0764585975,9780764585975,eng,112,73,8,6/13/2000,Cliffs Notes -524,Lord of the Flies,William Golding,3.68,0307281701,9780307281708,eng,6,408,96,10/11/2005,Listening Library (Audio) -531,A War Like No Other: How the Athenians & Spartans Fought the Peloponnesian War,Victor Davis Hanson,4.11,0812969707,9780812969702,eng,397,1693,100,9/12/2006,Random House -534,We Were Not Like Other People,Ephraim Sevela/Antonina W. Bouis,4.14,0060255080,9780060255084,eng,216,1,0,1/1/1989,HarperCollins Publishers -537,The Lovely Bones,Alice Sebold,3.81,0330485385,9780330485388,en-GB,328,6485,966,6/1/2003,Picador -538,The Lovely Bones,Alice Sebold,3.81,159413023X,9781594130236,en-US,532,367,73,4/1/2004,Large Print Press -539,Lovely in Her Bones (Elizabeth MacPherson #2),Sharyn McCrumb,3.80,0345360354,9780345360359,eng,224,1371,43,5/13/1990,Ballantine Books -565,The Zen of CSS Design: Visual Enlightenment for the Web,Dave Shea/Molly E. Holzschlag,3.98,0321303474,0785342303476,en-US,296,793,28,2/17/2005,Peachpit Press -570,HTML XHTML and CSS (Visual Quickstart Guide),Elizabeth Castro,3.80,0321430840,9780321430847,en-US,456,549,42,8/1/2006,Peachpit Press -576,1000 Record Covers,Michael Ochs/Patrick Javault/Ulrike Wasel,3.85,3822840858,9783822840856,mul,575,288,31,5/15/2005,Taschen -597,Killing Yourself to Live: 85% of a True Story,Chuck Klosterman,3.81,0743264460,9780743264464,eng,245,26381,1109,6/13/2006,Scribner -599,Sex Drugs and Cocoa Puffs: A Low Culture Manifesto,Chuck Klosterman,3.73,0743236017,9780743236010,eng,272,62089,3324,7/2/2004,Scribner -619,Vice (V #8),Jane Feather,3.51,0553572490,9780553572490,eng,419,474,19,5/2/1996,Bantam -629,Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values (Phaedrus #1),Robert M. Pirsig,3.77,0060589469,9780060589462,eng,540,166046,6446,4/25/2006,HarperTorch -639,Once Upon a Cool Motorcycle Dude,Kevin O'Malley/Carol Heyer/Scott Goto,4.08,0802789471,9780802789471,eng,32,1773,274,4/1/2005,Walker & Company -642,Guidebook to Zen and the Art of Motorcycle Maintenance,Ronald L. DiSanto/Thomas J. Steele,3.72,0688060692,9780688060695,en-GB,408,286,10,11/19/1990,William Morrow Paperbacks -643,Motorcycle Basics Techbook,John Harold Haynes,3.85,185960515X,9781859605158,eng,222,40,2,7/5/2002,Haynes Manuals N. America Inc. -650,LOGO Lounge: 2 000 International Identities by Leading Designers,Catharine M. Fishel/Bill Gardner,3.93,1592530877,9781592530878,eng,191,27,0,9/1/2004,Rockport Publishers -655,The Death of Ivan Ilych And Other Stories,Leo Tolstoy/Hugh McLean,4.11,0451528808,9780451528803,eng,304,7300,266,4/1/2003,Signet Classics -656,War and Peace,Leo Tolstoy/Henry Gifford/Aylmer Maude/Louise Maude,4.11,0192833987,9780192833983,eng,1392,211671,6245,6/25/1998,Oxford University Press -658,The Kingdom of God Is Within You,Leo Tolstoy/Constance Garnett,4.13,0486451380,9780486451381,eng,352,2403,210,9/8/2006,Dover Publications -662,Atlas Shrugged,Ayn Rand/Leonard Peikoff,3.69,0452011876,9780452011878,eng,1168,322483,14702,8/1/1999,Plume -663,For the New Intellectual: The Philosophy of Ayn Rand,Ayn Rand,3.68,0451163087,9780451163080,eng,224,2750,108,12/1/1963,Signet Book -664,The Fountainhead,Ayn Rand,3.87,0452286751,9780452286757,en-US,752,1886,229,4/26/2005,Dutton -665,The Virtue of Selfishness: A New Concept of Egoism,Ayn Rand/Nathaniel Branden,3.51,0451163931,9780451163936,eng,176,11462,467,11/1/1964,Signet -667,Anthem,Ayn Rand,3.63,0452281253,9780452281257,eng,105,110952,7277,12/1/1999,NAL -668,We the Living,Ayn Rand/Leonard Peikoff,3.91,0451187849,9780451187840,eng,464,23199,1086,1/1/1996,Signet -669,Capitalism: The Unknown Ideal,Ayn Rand/Nathaniel Branden/Alan Greenspan/Robert Hessen,3.88,0451147952,9780451147950,eng,340,3501,153,7/15/1986,Signet -670,Letters of Ayn Rand,Ayn Rand/Michael S. Berliner/Leonard Peikoff,3.96,0452274044,9780452274044,eng,681,18,2,2/1/1997,NAL -672,Sailing for Dummies,J.J. Isler/Peter Isler,3.95,0471791431,9780471791430,eng,416,150,7,6/1/2006,For Dummies -675,Sailing from Byzantium: How a Lost Empire Shaped the World,Colin Wells,3.88,0553803816,9780553803815,eng,368,646,83,7/25/2006,Delacorte Press -676,Sailing Alone Around the Room: New and Selected Poems,Billy Collins,4.23,0375755195,9780375755194,eng,192,12180,630,9/17/2002,Random House Trade Paperbacks -678,The Greatest Sailing Stories Ever Told: Twenty-Seven Unforgettable Stories,Christopher Caswell,3.62,1592283195,9781592283194,eng,286,51,5,4/1/2004,Lyons Press -681,Natural Cures "They" Don't Want You to Know about,Kevin Trudeau,3.09,0975599518,9780975599518,en-US,571,1601,284,1/1/2004,Alliance Publishing -685,The Natural,Bernard Malamud/Kevin Baker,3.63,0374502005,9780374502003,eng,231,8854,672,7/7/2003,Farrar Straus Giroux -698,Digging to America,Anne Tyler,3.55,0307263940,9780307263940,eng,277,17155,1841,5/2/2006,Alfred A. Knopf -700,Rereading America: Cultural Contexts for Critical Thinking and Writing,Gary Colombo/Bonnie Lisle,3.77,0312405545,9780312405540,eng,826,44,3,1/21/2004,Bedford Books -702,Modern Latin America,Thomas E. Skidmore/Peter H. Smith,3.59,019517013X,9780195170139,en-US,528,234,11,10/7/2004,Oxford University Press USA -703,The Plot Against America,Philip Roth,3.77,1400079497,9781400079490,eng,391,33321,2925,9/27/2005,Vintage International -707,Naked Pictures of Famous People,Jon Stewart,3.59,0688171621,9780688171629,en-GB,164,8703,417,9/22/1999,Dey Street Books -759,Collected Stories,Gabriel García Márquez/Gregory Rabassa/J.S. Bernstein,4.19,0060932686,9780060932688,eng,352,6375,179,5/13/2008,Harper Perennial Modern Classics -762,Crónica de una muerte anunciada,Gabriel García Márquez,3.97,1400034957,9781400034956,spa,118,7888,411,10/14/2003,Vintage Espanol -763,Cien años de soledad,Gabriel García Márquez,4.07,0307350428,9780307350428,spa,496,130,5,2/7/2006,Plaza y Janes -764,Del amor y otros demonios,Gabriel García Márquez,3.98,0307350444,9780307350442,spa,176,4508,278,2/7/2006,Plaza y Janes -765,Living to Tell the Tale,Gabriel García Márquez/Edith Grossman,3.99,140003454X,9781400034543,eng,533,397,47,10/12/2004,Vintage -766,Memoria de mis putas tristes,Gabriel García Márquez,3.60,1400095808,9781400095803,spa,112,5856,377,10/19/2004,Vintage Espanol -771,The Elegant Universe: Superstrings Hidden Dimensions and the Quest for the Ultimate Theory,Brian Greene,4.07,0375708111,9780375708114,eng,425,32569,1058,9/2/2004,Vintage Books USA -775,Pure and Simple: The Extraordinary Teachings of a Thai Buddhist Laywoman,Upasika Kee Nanayon/Thanissaro Bhikkhu,4.29,086171492X,9780861714926,eng,288,37,6,5/15/2005,Wisdom Publications -787,The Mini Rough Guide to London,Rob Humphreys/Beth Chaplin/Rebecca Morrill,3.75,184353584X,9781843535843,eng,363,1,0,4/1/2006,Rough Guides -793,Best of London (Lonely Planet Best Of),Lonely Planet/Sarah Johnstone/Steve Fallon,3.83,1740594770,9781740594776,eng,128,11,0,9/1/2004,Lonely Planet -797,Lonely Planet Londres,Lonely Planet/Sarah Johnstone/Tom Masters,4.03,8408064762,9788408064763,spa,480,0,0,5/1/2006,Geoplaneta -799,Out to Eat London 2002 (Lonely Planet Out to Eat),Lonely Planet/Mark Honan,0.00,1740592050,9781740592055,eng,295,0,0,9/1/2001,Lonely Planet -815,Three Nights in August: Strategy Heartbreak and Joy Inside the Mind of a Manager,H.G. Bissinger,3.88,0618710531,9780618710539,eng,287,6870,237,4/4/2006,Mariner Books -816,Cryptonomicon,Neal Stephenson,4.25,0060512806,9780060512804,eng,1139,83184,4249,11/1/2002,Avon -821,Le Réseau Kinakuta (Cryptonomicon #2),Neal Stephenson,4.10,2228894168,9782228894166,fre,418,5,0,3/31/2001,Payot -822,The Confusion (The Baroque Cycle #2),Neal Stephenson,4.26,0060733357,9780060733353,en-US,815,19320,565,6/14/2005,William Morrow Paperbacks -823,Quicksilver (The Baroque Cycle #1),Neal Stephenson,3.93,0060593083,9780060593087,eng,927,30872,1735,9/21/2004,HarperCollins Perennial -824,The Cobweb,Neal Stephenson/J. Frederick George,3.61,0553383442,9780553383447,eng,448,2465,137,5/31/2005,Spectra Books -826,The Big U,Neal Stephenson,3.25,0380816032,9780380816033,en-US,308,4657,223,2/6/2001,William Morrow Paperbacks -827,The Diamond Age: Or A Young Lady's Illustrated Primer,Neal Stephenson/Pedro Jorge Romero,4.19,0553380966,9780553380965,eng,499,71042,2767,5/2/2000,Spectra -828,Interface,Neal Stephenson/George F. Jewsbury/Stephen Bury,3.68,0553383434,9780553383430,eng,640,4731,270,5/31/2005,Spectra -829,Odalisque (The Baroque Cycle Vol. 1 Book 3),Neal Stephenson,4.20,0060833181,9780060833183,en-US,464,1567,65,3/28/2006,HarperTorch -830,Snow Crash,Neal Stephenson/Guy Abadia,4.03,0553380958,9780553380958,eng,438,188100,6612,8/2/2000,Bantam Books -834,Harrington on Hold 'em: Expert Strategy for No-Limit Tournaments Volume II: The Endgame,Dan Harrington/Bill Robertie,4.16,1880685353,9781880685358,eng,450,1474,30,6/1/2005,Two Plus Two Publishing LLC -835,Harrington on Hold 'em: Expert Strategy for No-Limit Tournaments Volume I: Strategic Play,Dan Harrington/Bill Robertie,4.24,1880685337,9781880685334,eng,381,1929,72,12/1/2004,Two Plus Two Publishing LLC -840,The Design of Everyday Things,Donald A. Norman,4.17,0465067107,9780465067107,eng,240,18602,1379,9/19/2002,Basic Books -841,Emotional Design: Why We Love (or Hate) Everyday Things,Donald A. Norman,3.95,0465051367,9780465051366,eng,272,3702,149,5/11/2005,Basic Books -842,The Psychology of Everyday Things,Donald A. Norman,4.17,0465067093,9780465067091,eng,257,265,31,6/13/1988,Basic Books -848,No Price Too High: A Pentecostal Preacher Becomes Catholic - The Inspirational Story of Alex Jones as Told to Diane Hanson,Alex C. Jones/Diane M. Hanson/Stephen K. Ray,4.27,0898709199,9780898709193,en-GB,259,51,7,4/30/2006,Ignatius Press -864,The Alchemist,Paulo Coelho/Alan R. Clarke/James Noel Smith,3.86,0060887966,9780060887964,eng,192,920,76,5/2/2006,HarperOne -865,The Alchemist,Paulo Coelho/Alan R. Clarke/Özdemir İnce,3.86,0061122416,9780061122415,eng,197,1631221,55843,5/1/1993,HarperCollins -866,Fullmetal Alchemist Vol. 9 (Fullmetal Alchemist #9),Hiromu Arakawa/Akira Watanabe,4.57,142150460X,9781421504605,eng,192,9013,153,9/19/2006,VIZ Media LLC -868,Fullmetal Alchemist Vol. 3 (Fullmetal Alchemist #3),Hiromu Arakawa/Akira Watanabe,4.56,1591169259,9781591169253,eng,192,16666,299,9/13/2005,VIZ Media LLC -869,Fullmetal Alchemist Vol. 8 (Fullmetal Alchemist #8),Hiromu Arakawa/Akira Watanabe,4.57,1421504596,9781421504599,eng,192,11451,161,7/18/2006,VIZ Media LLC -870,Fullmetal Alchemist Vol. 1 (Fullmetal Alchemist #1),Hiromu Arakawa/Akira Watanabe,4.50,1591169208,9781591169208,eng,192,111091,1427,5/3/2005,VIZ Media LLC -871,Fullmetal Alchemist Vol. 4 (Fullmetal Alchemist #4),Hiromu Arakawa/Akira Watanabe,4.55,1591169291,9781591169291,eng,200,10752,294,11/8/2005,VIZ Media LLC -872,The Illustrated Alchemist: A Fable about Following Your Dream,Paulo Coelho/Alan R. Clarke/Mœbius,3.86,006019250X,9780060192501,en-US,198,251,32,11/1/1998,HarperCollins Publishers -873,Fullmetal Alchemist Vol. 2 (Fullmetal Alchemist #2),Hiromu Arakawa/Akira Watanabe,4.52,1591169232,9781591169239,eng,192,14923,419,7/5/2005,VIZ Media LLC -880,Pompeii,Robert Harris,3.82,0812974611,9780812974614,eng,274,26922,1726,11/8/2005,Random House Trade Paperbacks -888,The Last Days of Pompeii,Edward Bulwer-Lytton/John Gregory Betancourt,3.60,158715739X,9781587157394,eng,360,1156,68,12/3/2002,Borgo Press -890,Of Mice and Men,John Steinbeck,3.87,0142000671,9780142000670,eng,103,1755253,25554,1/8/2002,Penguin Books -900,The Game: Penetrating the Secret Society of Pickup Artists,Neil Strauss,3.74,0060554738,9780060554736,en-US,464,20529,1592,9/6/2005,It Books -902,The Westing Game,Ellen Raskin,4.02,014240120X,9780142401200,eng,182,142121,8782,4/12/2004,Puffin -903,The Egypt Game,Zilpha Keatley Snyder,3.83,0808553038,9780808553038,eng,215,30231,1130,7/7/2009,Turtleback Books -929,Memoirs of a Geisha,Arthur Golden,4.11,1400096898,9781400096893,eng,503,280309,3703,11/22/2005,Vintage Books USA -930,Memoirs of a Geisha,Arthur Golden,4.11,0739326228,9780739326220,eng,434,1301083,19296,11/15/2005,Random House Large Print Publishing -931,Memoirs of a Geisha,Arthur Golden,4.11,0099498189,9780099498186,en-US,497,2122,256,12/1/2005,Vintage -932,Memoirs of a Geisha: A Portrait of the Film,David James/Peggy Mulloy/Rob Marshall/Arthur Golden,4.08,1557046832,9781557046833,eng,144,145,8,10/20/2005,Newmarket Press -933,Memoirs of a Geisha,Arthur Golden,4.11,0099771519,9780099771517,eng,497,4189,462,6/4/1998,Vintage -935,Geisha of Gion,Mineko Iwasaki/Rande Brown,3.93,074343059X,9780743430593,eng,334,1556,158,5/6/2003,Pocket Books -941,Love As A Foreign Language #5,J. Torres/Eric Kim,3.44,1932664394,9781932664393,eng,58,9,2,2/1/2006,Oni Press -944,Jungle Love,Margaret Johnson/Philip Prowse,3.41,0521750849,9780521750844,eng,95,59,7,8/1/2002,Cambridge University Press -955,The 5 Love Languages / The 5 Love Languages Journal,Gary Chapman,4.70,0802415318,9780802415318,eng,0,22,4,1/1/2005,Moody Publishers -960,Angels & Demons (Robert Langdon #1),Dan Brown,3.89,1416524797,9781416524793,eng,736,2418736,21303,4/1/2006,Pocket Books -965,Ángeles y demonios (Robert Langdon #1),Dan Brown,3.89,849561877X,9788495618771,spa,508,196,20,12/1/2005,Umbriel -966,Angeles & Demonios,Dan Brown/Raúl Amundaray,3.89,0972859896,9780972859899,spa,18,65,7,12/1/2005,FonoLibro -968,The Da Vinci Code (Robert Langdon #2),Dan Brown,3.84,0307277674,9780307277671,eng,489,1679706,35877,3/28/2006,Anchor -969,The Da Vinci Code,Dan Brown,3.84,076792603X,9780767926034,eng,467,1120,105,3/28/2006,Broadway Books -972,Da Vinci Code (Robert Langdon #2),Dan Brown/Daniel Roche,3.84,2266144340,9782266144346,fre,744,377,16,5/3/2005,Pocket -975,Deception Point,Dan Brown,3.71,1416524800,9781416524809,eng,736,4919,410,4/1/2006,Pocket Books -977,Deception Point,Dan Brown,3.71,0552151769,9780552151764,eng,585,3353,183,5/1/2004,Corgi Books -980,Deception Point,Dan Brown,3.71,0593055071,9780593055076,eng,448,61,4,8/1/2005,Bantam Press -987,A Killing Rain (Louis Kincaid #6),P.J. Parrish,4.04,078601606X,9780786016068,eng,383,456,41,2/1/2005,Pinnacle -998,The Millionaire Next Door: The Surprising Secrets of America's Wealthy,Thomas J. Stanley/William D. Danko,4.03,0671015206,9780671015206,eng,258,61760,2600,10/1/1998,Gallery Books -1005,Think and Grow Rich: The Landmark Bestseller Now Revised and Updated for the 21st Century,Napoleon Hill,4.18,1585424331,9781585424337,eng,320,88897,2334,9/1/2005,Tarcherperigee -1007,Think and Grow Rich,Napoleon Hill,4.18,1932429239,9781932429237,eng,368,48,9,8/7/2004,High Roads Media -1014,Pragmatic Version Control: Using Subversion (The Pragmatic Starter Kit Series),Mike Mason,3.58,0977616657,9780977616657,eng,256,173,14,6/7/2006,Pragmatic Bookshelf -1022,Read My Lips: Sexual Subversion and the End of Gender,Riki Anne Wilchins,3.95,1563410907,9781563410901,en-US,288,253,17,6/1/2005,Firebrand Books -1032,Trump: The Art of the Deal,Donald J. Trump/Tony Schwartz,3.66,0345479173,9780345479174,en-US,384,12748,948,12/28/2004,Ballantine Books -1052,The Richest Man in Babylon,George S. Clason,4.26,0451205367,9780451205360,eng,194,76451,3400,2/1/2008,Berkley Books -1053,The Richest Man in Babylon,George S. Clason,4.26,1419349996,9781419349997,eng,4,86,15,6/17/2005,Recorded Books Inc. -1059,Shibumi,Trevanian/Gisela Stege,4.21,1400098033,9781400098033,eng,480,9498,637,5/10/2005,Broadway Books -1067,1776,David McCullough,4.07,0743226720,9780743226721,eng,386,166916,6243,7/4/2006,Simon Schuster -1068,1776,Peter Stone/Sherman Edwards,4.22,0140481397,9780140481396,eng,192,1299,30,11/18/1976,Penguin Books -1073,The Crescent Obscured: The United States and the Muslim World 1776-1815,Robert J. Allison,3.62,0226014908,9780226014906,eng,284,31,5,7/15/2000,University of Chicago Press -1078,The Good Earth (House of Earth #1),Pearl S. Buck,3.98,1416500189,9781416500186,eng,418,200744,7656,3/4/2009,Howard Publishing Co -1090,Purpose Driven Life - For Commuters: What on Earth Am I Here For?,Rick Warren,3.93,0310258979,9780310258971,eng,5,26,2,3/15/2005,Zondervan -1097,Fast Food Nation: The Dark Side of the All-American Meal,Eric Schlosser,3.74,0060838582,9780060838584,eng,399,190039,4922,7/5/2005,Harper Perennial -1099,Fast Food Nation: What The All-American Meal is Doing to the World,Eric Schlosser,3.74,0141006870,9780141006871,eng,384,811,77,4/4/2002,Penguin Books -1103,Snow Flower and the Secret Fan,Lisa See,4.07,0812968069,9780812968064,eng,269,297533,14935,2/21/2006,Random House -1110,The Broker,John Grisham,3.78,0385340540,9780385340540,eng,422,72361,2334,9/26/2006,Delta -1111,The Power Broker: Robert Moses and the Fall of New York,Robert A. Caro,4.51,0394720245,9780394720241,eng,1344,11208,1237,7/12/1975,Vintage -1117,The Power Broker: A Novel (Christian Gillette #3),Stephen W. Frey,3.75,0345480600,9780345480606,eng,320,28,1,7/25/2006,Ballantine Books -1120,Body For Life: 12 Weeks to Mental and Physical Strength,Bill Phillips/Michael D'Orso,3.74,0060193395,9780060193393,en-US,201,3877,275,6/10/1999,HarperCollins Publishers Inc. -1121,Body for Life for Women: A Woman's Plan for Physical and Mental Transformation,Pamela Peeke/Cindy Crawford,3.65,1579546013,9781579546014,en-US,288,401,63,4/1/2005,Rodale Books -1123,Eating for Life: Your Guide to Great Health Fat Loss and Increased Energy!,Bill Phillips,3.95,0972018417,9780972018418,eng,405,814,51,11/26/2003,High Point Media -1130,The Warren Buffett Way,Robert G. Hagstrom/Bill Miller/Kenneth L. Fisher,4.13,0471743674,9780471743675,en-US,245,228,16,10/1/2005,John Wiley & Sons -1138,The Warren Buffett CEO: Secrets from the Berkshire Hathaway Managers,Robert P. Miles/Tom Osborne,4.07,0471430455,9780471430452,eng,432,39,1,4/18/2003,Wiley -1164,Monkey Business: True Story of the Scopes Trial,Marvin N. Olasky/John R. Perry,3.15,0805431578,9780805431575,eng,368,26,8,5/15/2005,B Books -1167,Junie B. Jones and a Little Monkey Business (Junie B. Jones #2),Barbara Park/Denise Brunkus,3.99,0679838864,9780679838869,en-US,68,11178,623,2/16/1993,Random House Books for Young Readers -1169,Monkey Business,Sarah Mlynowski,3.67,0373250711,9780373250714,eng,392,3379,67,9/24/2004,Red Dress Ink -1171,Liar's Poker,Michael Lewis,4.15,0140143459,9780140143454,eng,256,22843,936,10/1/1990,Penguin Books -1177,Liar's Poker: A Harry Garnish Mystery,Frank McConnell,3.31,0802732291,9780802732293,eng,214,13,1,6/1/1993,Walker & Company -1188,Risotto: 30 Simply Delicious Vegetarian Recipes from an Italian Kitchen,Ursula Ferrigno/Jason Lowe/Maxine Clark,4.08,1841721476,0694055000612,eng,64,8,2,3/1/2001,Ryland Peters & Small -1191,Giada's Family Dinners,Giada De Laurentiis/Victoria Pearson,3.96,030723827X,9780307238276,eng,256,14103,74,4/4/2006,Clarkson Potter -1192,Everyday Italian: 125 Simple and Delicious Recipes,Giada De Laurentiis,3.95,1400052580,9781400052585,eng,256,40125,217,2/22/2005,Clarkson Potter -1193,Everyday Pasta,Giada De Laurentiis/Victoria Pearson,4.09,0307346587,9780307346582,eng,240,8822,55,4/3/2007,Clarkson Potter -1196,Tyler's Ultimate: Brilliant Simple Food to Make Any Time,Tyler Florence/Petrina Tinslay,4.09,1400052386,9781400052387,eng,256,3697,34,9/26/2006,Clarkson Potter -1197,Tyler Florence's Real Kitchen: An Indespensible Guide for Anybody Who Likes to Cook,Tyler Florence/JoAnn Cianciulli/Bill Bettencourt/Bobby Flay,4.06,0609609971,9780609609972,eng,304,1426,16,3/25/2003,Clarkson Potter Publishers -1198,Eat This Book: Cooking with Global Fresh Flavors,Tyler Florence/Petrina Tinslay,3.92,1400052378,9781400052370,eng,287,275,15,10/1/2004,Clarkson Potter Publishers -1202,Freakonomics: A Rogue Economist Explores the Hidden Side of Everything,Steven D. Levitt/Stephen J. Dubner,3.97,0061234001,9780061234002,eng,320,628745,13034,10/17/2006,William Morrow -1204,Freakonomics: Un economista políticamente incorrecto explora el lado oculto de lo que nos afecta,Steven D. Levitt/Stephen J. Dubner,3.97,8466625127,9788466625128,spa,250,193,23,8/1/2006,Ediciones B -1206,Freakonomics: A Rogue Economist Explores the Hidden Side of Everything,Steven D. Levitt/Stephen J. Dubner,3.97,0061245135,9780061245138,en-US,496,98,5,12/8/2006,Harper -1218,The Last Assassin (John Rain #5),Barry Eisler,4.27,0399153594,9780399153594,eng,338,189,25,6/1/2006,Putnam Publishing Group -1226,Life of Pi,Yann Martel,3.91,0156030209,9780156030205,en-US,401,4318,668,5/3/2004,Mariner Books / Harvest Books -1230,L'Histoire de Pi,Yann Martel/Nicole Martel/Emile Martel,3.91,0828808392,9780828808392,fre,448,177,26,11/24/2005,Gallimard -1234,Shadows and Wind: A View of Modern Vietnam,Robert Templer,3.49,0140285970,9780140285970,eng,400,102,8,9/1/1999,Penguin Books -1241,A Million Little Pieces,James Frey,3.65,0307276902,9780307276902,eng,515,206011,10821,9/22/2005,Anchor Books -1242,A Million Little Pieces of Feces,Python Bonkers,3.56,1411677315,9781411677319,en-US,256,43,6,2/10/2006,Lulu.com -1243,A Million Little Lies,James Pinocchio/Pablo Fenjves,3.41,0061171468,9780061171468,en-US,191,201,24,3/28/2006,William Morrow Paperbacks -1246,The Leadership Challenge,James M. Kouzes/Barry Z. Posner,4.05,0787968331,9780787968335,en-US,458,873,40,8/7/2003,Jossey-Bass -1252,Lincoln on Leadership: Executive Strategies for Tough Times,Donald T. Phillips,4.14,0446394599,9780446394598,eng,193,5354,281,2/1/1993,Business Plus -1255,Leadership in Organizations,Gary Yukl,3.68,0131494848,9780131494848,en-GB,542,55,4,7/7/2005,Prentice Hall -1265,Leadership,Rudolph W. Giuliani,3.72,0316861014,9780316861014,eng,397,1820,147,10/1/2002,Little Brown -1274,Men Are from Mars Women Are from Venus,John Gray,3.55,0060574216,9780060574215,eng,368,132062,3303,4/3/2012,Harper Paperbacks -1276,Mars and Venus Book of Days: 365 Inspriations to Enrich Your Relationships,John Gray,3.62,0060192771,9780060192778,en-US,368,18,1,10/21/1998,Harper -1281,Men Are from Mars Women Are from Venus,John Gray,3.55,006123205X,9780061232053,eng,2,43,3,4/3/2007,HarperAudio -1290,How to Succeed with Women,Ron Louis/David Copeland,3.76,0735200300,9780735200302,en-US,320,82,13,10/29/1998,Prentice Hall Press -1295,The Clan of the Cave Bear (Earth's Children #1),Jean M. Auel,4.05,0553381679,9780553381672,eng,512,184418,4432,6/25/2002,Bantam -1296,The Clan of the Cave Bear (Earth's Children #1),Jean M. Auel,4.05,0517542021,9780517542026,eng,468,495,67,5/4/1980,Crown Publishing Group -1301,Moneyball: The Art of Winning an Unfair Game,Michael Lewis,4.26,0393324818,9780393324815,eng,317,85094,4155,3/17/2004,W. W. Norton Company -1302,Juiced Official Strategy Guide,Doug Walsh,0.00,0744005612,9780744005615,eng,112,0,0,6/1/2005,BradyGames -1303,The 48 Laws of Power,Robert Greene/Joost Elffers,4.18,0140280197,9780140280197,eng,452,60946,3167,9/1/2000,Penguin (Business) -1305,Gates of Fire,Steven Pressfield,4.42,055338368X,9780553383683,eng,392,21934,1629,9/27/2005,Bantam -1307,Fire Sea (The Death Gate Cycle #3),Margaret Weis/Tracy Hickman,4.07,0553295411,9780553295412,eng,414,16312,175,3/1/1992,Spectra Books -1312,The Gate of Fire (Oath Of Empire Book Two),Thomas Harlan,3.58,0812590104,9780812590104,en-US,721,146,4,6/18/2001,Tor Classics -1315,The Afghan Campaign,Steven Pressfield,3.96,038551641X,9780385516419,eng,354,3002,198,7/1/2006,Doubleday Books -1317,Tides of War,Steven Pressfield,3.90,0553381393,9780553381399,eng,448,3422,157,8/28/2001,Bantam -1318,Last of the Amazons,Steven Pressfield,3.76,0553382047,9780553382044,eng,400,2138,125,7/1/2003,Bantam -1319,The War of Art: Break Through the Blocks & Win Your Inner Creative Battles,Steven Pressfield/Robert McKee,4.00,0446691437,9780446691437,eng,168,53653,4702,4/1/2003,Warner Books -1320,Gita on the Green,Stephen J. Rosen/Steven Pressfield,3.78,0826413013,9780826413017,en-US,176,14,2,5/30/2002,Continuum -1322,Blood Stripes: The Grunt's View of the War in Iraq,David J. Danelo/Steven Pressfield,3.91,0811701646,9780811701648,eng,340,85,6,4/24/2006,Stackpole Books -1326,Phaedrus and Letters VII and VIII,Plato/Walter Hamilton,4.10,0140442758,9780140442755,en-US,160,226,20,1/30/1973,Penguin Classics -1327,Phaedrus,Plato/Robin Waterfield,3.92,0192802771,9780192802774,eng,128,29,6,1/16/2003,Oxford University Press USA -1328,Phaedrus,Plato/C.J. Rowe,3.92,0140449744,9780140449747,eng,176,236,22,8/25/2005,Penguin Classics -1334,Lysis/Phaedrus/Symposium: Plato on Homosexuality,Plato/Benjamin Jowett,4.47,0879756322,9780879756321,eng,157,14,0,12/1/1991,Prometheus Books -1337,Enthusiasm and Divine Madness,Josef Pieper/Richard Winston/Clara Winston,4.50,189031823X,9781890318239,eng,125,26,4,2/11/2019,St. Augustines Press -1338,On Love: Lysis/Symposium/Phaedrus/Alcibiades/Selections from Republic & Laws,Plato/C.D.C. Reeve,4.06,0872207889,9780872207882,eng,272,154,4,6/15/2006,Hackett Publishing Company Inc. -1342,Gorgias/Phaedrus (Agora),Plato/James H. Nichols Jr.,4.35,0801435307,9780801435300,eng,233,18,1,9/1/1998,Cornell University Press -1351,Statesman,Plato/C.J. Rowe,3.85,0872204626,9780872204621,eng,128,28,7,3/15/1999,Hackett Publishing Company Inc. -1354,Gorgias,Plato/Walter Hamilton/Chris Emlyn-Jones,3.95,0140449043,9780140449044,en-GB,208,8186,198,1/29/2004,Penguin Classics -1362,The Histories,Herodotus/Aubrey de Sélincourt/John M. Marincola,3.99,0140449086,9780140449082,eng,716,34727,597,1/30/2003,Penguin Books -1363,The Histories,Herodotus/Aubrey de Sélincourt/John M. Marincola,3.99,0140446389,9780140446388,eng,622,227,18,9/1/1954,Penguin Classics -1364,The History (Great Minds),Herodotus/Henry Francis Cary,3.99,0879757779,9780879757779,en-US,613,2,0,11/1/1992,Prometheus Books -1365,The Histories,Herodotus/Carolyn Dewald/Robin Waterfield,3.99,0192824252,9780192824257,eng,772,271,41,11/19/1998,Oxford University Press -1366,The Histories,Herodotus/Aubrey de Sélincourt/Andrew Robert Burn,3.99,0140440348,9780140440348,en-US,653,143,17,8/30/1970,Penguin Classics -1367,The Histories,Herodotus/Jennifer Tolbert Roberts/Walter Blanco,3.99,0393959465,9780393959468,en-US,464,40,5,1/17/1992,W.W. Norton & Company -1368,The Histories,Herodotus/Edward Henry Blakeney/George Rawlinson/Rosalind Thomas,3.99,0375400613,9780375400612,en-US,816,132,10,3/25/1997,Everyman's Library 234 -1369,The History,Herodotus/Peter Grene,3.99,0226327701,9780226327709,en-US,710,36,6,3/14/1987,University of Chicago Press -1371,The Iliad,Homer/Robert Fagles/Bernard Knox,3.86,0140275363,9780140275360,eng,683,288792,3423,4/29/1999,Penguin Classics -1373,Iliad,Homer/Stanley Lombardo/Sheila Murnaghan,3.86,0872203522,9780872203525,en-US,574,1058,137,3/12/1997,Hackett Publishing Company Inc. -1374,The Iliad,Homer/Robert Fitzgerald/Andrew Ford,3.86,0374529051,9780374529055,en-US,588,692,81,4/3/2004,Farrar Straus and Giroux -1375,The Iliad/The Odyssey,Homer/Robert Fagles/Bernard Knox,4.04,0147712556,9780147712554,eng,1556,54939,380,11/1/1999,Penguin Classics -1376,The Iliad,Homer/E.V. Rieu/Peter Jones/D.C.H. Rieu,3.86,0140447946,9780140447941,eng,462,1919,118,1/30/2003,Penguin Classics -1377,The Iliad,Homer/W.H.D. Rouse,3.86,0451527372,9780451527370,en-US,312,158,15,8/1/1999,Signet Classics -1378,The Essential Iliad,Homer/Sheila Murnaghan/Stanley Lombardo,3.86,0872205428,9780872205420,en-US,216,212,18,9/15/2000,Hackett Publishing Company Inc. -1381,The Odyssey,Homer/Robert Fagles/Bernard Knox,3.76,0143039954,9780143039952,eng,541,760871,6557,11/30/2006,Penguin Classics -1382,The Odyssey,Homer/Robert Fitzgerald/D.S. Carne-Ross,3.76,0374525749,9780374525743,eng,515,1713,179,11/5/1998,Farrar Straus and Giroux -1383,The Odyssey,Homer/Richmond Lattimore,3.76,0060931957,9780060931957,eng,374,1131,78,6/1/1999,Harper Perennial -1384,The Odyssey,Homer/E.V. Rieu/Peter Jones/D.C.H. Rieu,3.76,0140449116,9780140449112,eng,324,2543,167,1/30/2003,Penguin Classics -1387,The Odyssey,Homer/W.H.D. Rouse,3.76,0451527364,9780451527363,eng,304,262,24,8/1/1999,Signet Classics -1391,Aeneid: Selections from Books 1 2 4 6 10 12,Virgil/Barbara Weiden Boyd,4.35,086516584X,9780865165847,eng,161,69,6,1/1/2001,Bolchazy-Carducci Publishers -1402,Eclogues. Georgics. Aeneid: Books 1-6,Virgil/Henry Rushton Fairclough/G.P. Goold,4.22,067499583X,9780674995833,mul,607,414,10,10/1/1999,Harvard University Press -1403,City Eclogue,Ed Roberson,4.13,1891190237,9781891190230,eng,136,67,7,1/30/2006,Atelos Press -1405,The Eclogues and The Georgics,Virgil/Cecil Day-Lewis,3.80,0192837680,9780192837684,eng,180,259,15,9/2/1999,Oxford University Press -1408,Paul Kirk's Championship Barbecue Sauces: 175 Make-Your-Own Sauces Marinades Dry Rubs Wet Rubs Mops and Salsas,Paul Kirk,3.94,155832125X,9781558321250,eng,272,55,0,12/3/1997,Harvard Common Press -1417,The Complete Pelican Shakespeare,William Shakespeare/Stephen Orgel/A.R. Braunmuller,4.50,0141000589,9780141000589,eng,1808,578,25,11/7/2002,Viking -1419,The Complete Works,William Shakespeare,4.50,0517092948,9780517092941,eng,1248,62,6,10/13/1991,Gramercy -1420,Hamlet,William Shakespeare/Harold Bloom/Rex Gibson,4.02,0521618746,9780521618748,eng,289,609271,7139,8/1/2005,Cambridge University Press -1423,The Compleat Works of Wllm Shkspr (abridged),Reduced Shakespeare Company/Adam Long/Daniel Singer/Jess Winfield,4.44,1557831572,9781557831576,eng,137,8159,118,2/1/1994,Applause Books -1424,The Pilgrimage: A Contemporary Quest for Ancient Wisdom,Paulo Coelho/Alan R. Clarke,3.64,006251279X,9780062512796,en-US,272,888,92,5/1/1995,HarperOne -1425,The Valkyries,Paulo Coelho/Alan R. Clarke,3.31,0062513346,9780062513342,en-US,212,1204,79,9/28/1996,HarperOne -1426,Warrior of the Light,Paulo Coelho,3.70,0060527986,9780060527983,en-US,142,22662,945,3/30/2004,HarperOne -1427,The Zahir,Paulo Coelho/Margaret Jull Costa,3.57,0060832819,9780060832810,eng,336,58917,2575,7/3/2006,HarperOne -1428,By the River Piedra I Sat Down and Wept,Paulo Coelho/Alan R. Clarke,3.57,0061122092,9780061122095,eng,208,70760,2702,5/23/2006,HarperOne -1429,The Fifth Mountain,Paulo Coelho/Clifford E. Landers,3.62,0060930136,9780060930134,en-US,256,1415,68,4/26/2000,HarperOne -1431,Veronika Decides to Die,Paulo Coelho/Margaret Jull Costa/Kâmuran Şipal,3.70,0061124265,9780061124266,eng,210,132064,5452,6/1/2006,Harper Perennial -1433,Hamlet,William Shakespeare/Stephen Orgel/A.R. Braunmuller,4.02,0140714545,9780140714548,eng,148,1658,125,12/1/2001,Penguin Books -1437,Cliffs Notes on Shakespeare's Hamlet,Carla Lynn Stockton,3.69,0764586033,9780764586033,en-US,129,65,6,5/30/2000,Cliffs Notes -1438,Shakespeare's Hamlet,William Shakespeare/Terri Mategrano,4.02,0764585681,9780764585685,eng,240,102,16,5/29/2000,Cliffs Notes -1439,Hamlet's Mill: An Essay Investigating the Origins of Human Knowledge and Its Transmission Through Myth,Giorgio De Santillana/Hertha Von Dechend,4.29,0879232153,9780879232153,eng,450,489,57,3/24/2015,Nonpareil Books -1440,History of the Peloponnesian War: Bk. 1-2,Thucydides/C.F. Smith,4.32,0674991206,9780674991200,mul,496,208,7,1/1/1919,Harvard University Press -1441,On Justice Power and Human Nature: Selections from The History of the Peloponnesian War,Thucydides/Paul Woodruff,3.72,0872201686,9780872201682,eng,172,610,15,10/1/1993,Hackett Publishing Company Inc. -1444,History of the Peloponnesian War: Bk. 5-6,Thucydides/C.F. Smith,4.35,0674991222,9780674991224,mul,400,38,0,1/1/1921,Harvard University Press -1445,The Peloponnesian War,Thucydides/Steven Lattimore,3.90,0872203948,9780872203945,eng,530,154,21,6/1/1998,Hackett Publishing Company Inc. -1449,The Peloponnesian War: A New Translation Backgrounds Interpretations,Thucydides/Jennifer Tolbert Roberts/Walter Blanco,3.90,0393971678,9780393971675,eng,554,24,4,7/17/1998,W. W. Norton & Company -1459,History of the Peloponnesian War Bk. 7-8,Thucydides/C.F. Smith,4.29,0674991877,9780674991873,eng,480,35,0,1/1/1923,Harvard University Press -1461,Thucydides Book 6 Commentary,Cynthia W. Shelmerdine,4.50,0929524357,9780929524351,eng,34,2,0,1/30/1989,Bryn Mawr Commentaries -1462,Euripides I: Alcestis / The Medea / The Heracleidae / Hippolytus,Euripides/Richmond Lattimore/David Grene/Rex Warner/Ralph Gladstone,4.03,0226307808,9780226307800,eng,221,4483,56,2/15/1955,University of Chicago Press -1463,Euripides V: Electra / The Phoenician Women / The Bacchae,Euripides/David Grene/Richmond Lattimore/Emily Townsend Vermeule/Elizabeth Wyckoff/William Arrowsmith,4.21,0226307840,9780226307848,eng,228,3334,46,1/15/1969,University of Chicago Press -1465,Euripides IV: Rhesus / The Suppliant Women / Orestes / Iphigenia in Aulis,Euripides/David Grene/Richmond Lattimore/William Arrowsmith/Frank William Jones/Charles R. Walker,4.21,0226307832,9780226307831,eng,307,560,8,11/15/1968,University of Chicago Press -1466,Grief Lessons: Four Plays by Euripides,Anne Carson/Euripides,4.40,1590171802,9781590171806,eng,312,679,85,8/1/2006,New York Review of Books -1467,Ten Plays,Euripides/Moses Hadas/John Maclean,4.17,0553213636,9780553213638,en-US,432,1464,21,8/1/1990,Bantam Classics -1468,Euripides III: Hecuba / Andromache / The Trojan Women / Ion (Complete Greek Tragedies #7),Euripides/David Grene/Richmond Lattimore/William Arrowsmith/John Frederick Nims/Ronald Frederick Willetts,4.00,0226307824,9780226307824,eng,255,541,15,1/15/1992,University of Chicago Press -1470,Euripides II: The Cyclops / Heracles / Iphigenia in Tauris / Helen,Euripides/David Grene/Richmond Lattimore/Witter Bynner/William Arrowsmith,4.31,0226307816,9780226307817,eng,264,790,12,4/15/2002,University of Chicago Press -1473,Medea and Other Plays,Euripides/John Davie/Richard Rutherford,4.03,0140449299,9780140449297,eng,206,9197,120,3/27/2003,Penguin Books -1474,Cyclops / Alcestis / Medea,Euripides/David Kovacs,4.23,0674995600,9780674995604,mul,432,61,4,1/1/1994,Loeb Classical Library -1475,Medea,Euripides/Donald J. Mastronarde,3.87,0521643864,9780521643863,grc,431,201,9,9/16/2002,Cambridge University Press -1476,The Bacchae and Other Plays,Euripides/John Davie/Richard Rutherford,4.14,0140447261,9780140447262,eng,360,164,8,1/26/2006,Penguin Classics -1479,Bakkhai,Euripides/Reginald Gibbons/Peter H. Burian,3.88,0195125983,9780195125986,eng,160,154,13,2/22/2001,Oxford University Press USA -1480,Plays 1: Medea/The Phoenician Women/Bacchae,Euripides/David Thompson/J. Michael Walton,3.78,0413752801,9780413752802,eng,192,9,0,11/9/2000,Bloomsbury Methuen Drama -1486,The Trojan Women and Hippolytus,Euripides,3.63,0486424626,9780486424620,eng,64,34,4,7/17/2002,Dover Publications -1488,The Bacchae of Euripides: A Communion Rite,Wole Soyinka,3.86,0393325830,9780393325836,eng,128,116,6,7/17/2004,W. W. Norton Company -1489,Orestes and Other Plays,Euripides/James Morwood/Robin Waterfield,4.10,0192832603,9780192832603,eng,282,158,2,12/20/2001,Oxford University Press -1491,Children of Heracles / Hippolytus / Andromache / Hecuba,Euripides/David Kovacs,4.26,0674995333,9780674995338,mul,528,27,5,2/15/1995,Loeb Classical Library -1494,Alcestis,Euripides/William Arrowsmith,3.83,0195061667,9780195061666,eng,142,1950,95,2/1/1990,Oxford University Press USA -1495,Suppliant Women / Electra / Heracles,Euripides/David Kovacs,4.47,067499566X,9780674995666,mul,464,30,4,9/1/1998,Loeb Classical Library -1499,Medea,Euripides/Georgia Ann Machemer/Michael Collier,3.87,0195145666,9780195145663,eng,116,367,35,8/10/2006,Oxford University Press USA -1504,Euripides: Medea,William Allan,4.04,071563187X,9780715631874,eng,160,23,1,10/31/2002,Bristol Classical Press -1506,CliffsNotes on Euripides' Medea and Electra,Robert J. Milch,4.20,0822004240,9780822004240,eng,69,5,0,9/13/1965,Cliffs Notes -1509,Trojan Women / Iphigenia Among the Taurians / Ion,Euripides/David Kovacs,4.03,0674995740,9780674995741,mul,528,29,2,12/1/1999,Loeb Classical Library -1510,Helen / Phoenician Women / Orestes,Euripides/David Kovacs,4.07,0674996003,9780674996007,mul,605,25,3,6/15/2002,Loeb Classical Library -1511,Euripides: Iphigenia at Aulis (Companions to Greek & Roman Tragedy),Euripides/Pantelis Michelakis,4.03,0715629948,9780715629949,eng,144,12,1,3/9/2006,Bristol Classical Press -1515,The Complete Greek Tragedies Volume 3: Euripides,Euripides/David Grene/Richmond Lattimore,4.43,0226307662,9780226307664,eng,672,46,7,8/1/1992,University of Chicago Press -1516,Aeschylus I: Oresteia (Agamemnon The Libation Bearers The Eumenides),Aeschylus/David Grene/Richmond Lattimore,4.02,0226307786,9780226307787,en-US,171,712,53,5/15/1969,University of Chicago Press -1517,Aeschylus II: The Suppliant Maidens The Persians Seven against Thebes and Prometheus Bound (The Complete Greek Tragedies),Aeschylus/David Grene/Richmond Lattimore/Seth Benardete,4.10,0226307948,9780226307947,eng,188,389,26,2/1/1992,University of Chicago Press -1518,The Oresteia,Aeschylus/Alan Shapiro/Peter H. Burian,4.02,019513592X,9780195135923,eng,304,77,7,10/7/2004,Oxford University Press USA -1519,The Oresteia: Agamemnon The Libation Bearers The Eumenides,Aeschylus/Robert Fagles/William Bedell Stanford,4.02,0140443339,9780140443332,eng,335,28726,591,2/7/1984,Penguin Classics -1521,Oresteia,Aeschylus/Peter Meineck/Helene P. Foley,4.02,0872203905,9780872203907,eng,224,303,21,9/15/1998,Hackett Publishing Company Inc. -1523,Prometheus Bound and Other Plays,Aeschylus/Philip Vellacott,4.10,0140441123,9780140441123,eng,160,4303,62,8/30/1961,Penguin Books -1525,The Oresteia,Aeschylus/Ted Hughes,4.02,0374527059,9780374527051,en-US,208,215,25,9/4/2004,Farrar Straus and Giroux -1526,Aeschylus 1: The Oresteia: Agamemnon/The Libation Bearers/The Eumenides,Aeschylus/David R. Slavitt/Smith Palmer Bovie,4.02,081221627X,9780812216271,eng,178,12,3,11/1/1997,University of Pennsylvania Press -1527,The Complete Greek Tragedies Volume 1: Aeschylus,Aeschylus/Richmond Lattimore/David Grene,4.10,0226307646,9780226307640,eng,358,74,7,8/1/1992,University of Chicago Press -1529,Aeschylus: The Oresteia (A Student Guide: Landmarks of World Literature),Simon Goldhill,4.03,0521539811,9780521539814,eng,95,31,3,1/22/2004,Cambridge University Press -1530,The Oresteia: Agamemnon Choephoroe & Eumenides (Everyman's Library No. 260),Aeschylus/George Thomson/Richard Seaford,4.02,1400041929,9781400041923,eng,127,63,8,1/20/2004,Everyman's Library -1531,Aeschylus 2: The Persians/Seven Against Thebes/The Suppliants/Prometheus Bound,Aeschylus/David R. Slavitt/Smith Palmer Bovie,4.10,0812216717,9780812216714,en-GB,232,12,2,1/1/1998,University of Pennsylvania Press -1532,The Oresteia Trilogy: Agamemnon/The Libation-Bearers/The Furies,Aeschylus/E.D.A. Morshead,4.02,0486292428,9780486292427,eng,151,89,8,9/24/1996,Dover Publications -1533,The Suppliant Maidens/The Persians/Seven against Thebes/Prometheus Bound,Aeschylus/E.D.A. Morshead,4.10,1419150014,9781419150012,eng,208,1,0,6/17/2004,Kessinger Publishing -1536,Sophocles II: Ajax/Women of Trachis/Electra/Philoctetes (Complete Greek Tragedies 4),Sophocles/David Grene/Richmond Lattimore/John Moore/Michael Jameson,4.14,0226307867,9780226307862,eng,254,5032,36,5/15/1969,University of Chicago Press -1537,The Oedipus Plays of Sophocles: Oedipus the King; Oedipus at Colonus; Antigone,Sophocles/Paul Roche,3.97,0452011671,9780452011670,eng,288,553,46,5/1/1996,Plume -1538,The Complete Plays,Sophocles/Paul Roche,4.27,0451527844,9780451527844,eng,420,2883,40,3/1/2001,New American Library -1540,The Oedipus Cycle: Oedipus Rex Oedipus at Colonus Antigone,Sophocles/Robert Fitzgerald/Dudley Fitts,3.97,015602764X,9780156027649,eng,259,45589,726,11/1/2002,Mariner Books -1542,The Three Theban Plays: Antigone Oedipus the King Oedipus at Colonus,Sophocles/Robert Fagles/Bernard Knox,3.97,0140444254,9780140444254,eng,430,2979,288,1/3/2000,Penguin Books -1546,Theban Plays,Sophocles/Peter Meineck/Paul Woodruff,3.97,0872205851,9780872205857,en-US,304,109,7,3/15/2003,Hackett Publishing Company Inc. -1547,The Theban Plays (Everyman's Library #93),Sophocles/David Grene/Charles Segal,3.97,0679431322,9780679431329,en-US,223,52,3,10/18/1994,Alfred A. Knopf -1548,Electra and Other Plays,Sophocles/E.F. Watling,4.14,0140440283,9780140440287,eng,218,135,9,4/30/1953,Penguin -1549,Antigone; Oedipus the Kingn; Electra,Sophocles/Edith Hall/H.D.F. Kitto,3.94,0192835882,9780192835888,eng,178,13358,199,9/17/1998,Oxford University Press -1554,Oedipus Rex (The Theban Plays #1),Sophocles/J.E. Thomas,3.70,1580495931,9781580495936,eng,75,141555,1776,6/22/2006,Prestwick House - (Literary Touchstone Classic) -1555,The Oedipus Plays of Sophocles,Sophocles/Paul Roche,3.97,0451621603,9780451621603,eng,390,8,1,9/1/1958,Signet Books (NY) -1558,Oedipus Rex (Greek and Latin Classics),Sophocles/Roger D. Dawe,3.70,0521617359,9780521617352,grc,214,218,1,8/1/2006,Cambridge University Press -1559,Oedipus the King,Sophocles/Bernard Knox/Cynthia Brantley Johnson,3.70,1416500332,9781416500339,eng,144,740,57,7/1/2005,Simon Schuster -1560,Four Plays: The Clouds/The Birds/Lysistrata/The Frogs,Aristophanes/William Arrowsmith/Richmond Lattimore/Douglass Parker,4.06,0452007178,9780452007178,eng,624,6086,79,11/1/1984,Plume -1561,Three Plays by Aristophanes: Lysistrata/Women at the Thesmophoria/Assemblywomen,Aristophanes/Jeffrey Henderson,3.94,0415907446,9780415907446,eng,256,96,8,8/27/1996,Routledge -1562,The Complete Plays,Aristophanes/Moses Hadas,4.21,0553213431,9780553213430,eng,577,1998,33,3/1/1984,Bantam Classics -1563,Aristophanes 1: The Acharnians/Peace/Celebrating Ladies/Wealth,Aristophanes/David R. Slavitt,3.83,0812234561,9780812234565,eng,336,4,0,1/29/1998,University of Pennsylvania Press -1566,Clouds/Wasps/Birds (Aristophanes 1),Aristophanes/Peter Meineck,3.77,0872203611,9780872203617,eng,480,1,0,9/15/1998,Hackett Publishing Company Inc. -1567,Lysistrata and Other Plays,Aristophanes/Alan H. Sommerstein,3.95,0140448144,9780140448146,en-US,241,3833,120,1/30/2003,Penguin Classics -1568,Acharnians,Aristophanes/Jeffrey Henderson,3.42,1585100870,9781585100873,eng,96,23,1,5/1/2003,Focus Publishing/R. Pullins Company -1571,Clouds,Aristophanes/Kenneth James Dover,3.75,0199120099,9780199120093,eng,254,13,2,12/15/1969,Oxford University Press USA -1572,Clouds/Wasps/Peace,Aristophanes/Jeffrey Henderson,4.07,0674995376,9780674995376,grc,624,69,10,12/15/1998,Loeb Classical Library/Harvard University Press -1576,Three Plays: The Wasps / The Poet and the Women / The Frogs,Aristophanes/David B. Barrett,3.94,0140441522,9780140441529,eng,224,391,27,2/28/1964,Penguin Books -1577,Four Comedies: Lysistrata / The Frogs / The Birds / Ladies' Day,Aristophanes/Dudley Fitts,4.03,0156027658,9780156027656,eng,400,14,2,1/6/2003,Harcourt -1579,Frogs/Assemblywomen/Wealth (Loeb Classical Library 180),Aristophanes/Jeffrey Henderson,4.21,0674995961,9780674995963,grc,608,58,4,5/1/2002,Harvard University Press -1584,Cliffs Notes on Aristophanes' Lysistrata The Birds The Clouds The Frogs,W. John Campbell,2.80,0822007762,0049086007763,eng,80,5,0,12/29/1983,Cliffs Notes -1585,Aristophanes and Athens: An Introduction to the Plays,Douglas M. MacDowell,4.07,0198721595,9780198721598,eng,376,14,3,10/1/1995,Oxford University Press -1586,Lysistrata,Aristophanes/Douglass Parker,3.85,0451616227,9780451616227,eng,98,19,2,2/1/1970,Signet -1590,Peace,Aristophanes/S. Douglas Olson,3.60,0198140819,9780198140818,eng,408,262,13,2/25/1999,Oxford University Press USA -1591,Lysistrata,Aristophanes/Sarah Ruden,3.85,0872206033,9780872206038,eng,132,30604,552,3/1/2003,Hackett Publishing Company Inc. -1592,The Knights / Peace / The Birds / The Assembly Women / Wealth,Aristophanes/Alan H. Sommerstein/David B. Barrett/David Brett,3.69,0140443320,9780140443325,en-US,335,42,1,7/27/1978,Penguin Classics -1595,Genres in Dialogue: Plato and the Construct of Philosophy,Andrea Wilson Nightingale,4.33,0521774330,9780521774338,en-GB,238,5,2,4/13/2000,Cambridge University Press -1618,The Curious Incident of the Dog in the Night-Time,Mark Haddon,3.88,1400032717,9781400032716,eng,226,1054308,35537,5/18/2004,Vintage -1620,The Night Gardener,George Pelecanos,3.64,0316156507,9780316156509,eng,372,4067,357,8/8/2006,Little Brown and Company -1625,Twelfth Night,William Shakespeare,3.98,0743482778,9780743482776,eng,272,138101,2513,7/1/2004,Simon Schuster -1627,Brokeback Mountain,Annie Proulx,3.94,0743271327,9780743271325,eng,55,24985,1751,12/2/2005,Scribner -1633,Getting Things Done: The Art of Stress-Free Productivity,David Allen,3.99,0142000280,9780142000281,en-GB,267,105507,3838,12/31/2002,Penguin Books -1634,Getting Things Done When You Are Not in Charge,Geoffrey M. Bellman,3.46,1576751724,9781576751725,eng,176,75,12,8/27/2001,Berrett-Koehler Publishers -1642,Formas breves,Ricardo Piglia,4.17,843392463X,9788433924636,spa,144,240,30,6/1/2001,Anagrama -1643,El último lector,Ricardo Piglia,4.14,8433968777,9788433968777,spa,209,331,24,7/15/2009,Anagrama -1645,Money to Burn,Ricardo Piglia/Amanda Hopkinson,3.76,1862076650,9781862076655,eng,209,69,12,8/1/2004,Granta UK -1646,Respiración artificial,Ricardo Piglia,3.96,8433924710,9788433924711,spa,218,1279,77,3/1/2008,Anagrama -1654,Plata quemada,Ricardo Piglia,3.76,8433924621,9788433924629,spa,227,1098,65,7/1/2005,Anagrama -1658,American Government: Continuity and Change Alternate Edition,Karen O'Connor/Larry J. Sabato,2.83,0321317106,9780321317100,eng,664,0,0,3/11/2005,Longman Publishing Group -1664,Essentials of American and Texas Government: Continuity and Change,Karen O'Connor/Larry J. Sabato,3.50,0321365208,9780321365200,eng,854,0,0,7/29/2005,Longman Publishing Group -1667,El túnel,Ernesto Sabato,4.05,8432216429,9788432216428,spa,159,453,60,7/1/2003,Seix Barral -1681,The Confessions (Works of Saint Augustine 1),Augustine of Hippo/John E. Rotelle/Maria Boulding,3.92,1565480848,9781565480841,eng,416,142,24,12/1/2002,New City Press -1684,The City of God,Augustine of Hippo/Thomas Merton/Marcus Dods,3.92,0679783199,9780679783190,eng,905,104,16,9/12/2000,Random House -1685,The Enchiridion on Faith Hope and Love (Augustine Series 1),Augustine of Hippo/Bruce Harbert/John E. Rotelle,4.04,1565481240,9781565481244,eng,144,271,21,10/1/1999,New City Press -1686,Augustine of Hippo: A Biography,Peter R.L. Brown,4.27,0520227573,9780520227576,en-US,576,1643,97,11/24/2000,University of California Press -1693,On Christian Doctrine,Augustine of Hippo/D.W. Robertson Jr.,4.03,0024021504,9780024021502,eng,191,2335,67,1/11/1958,Library of Liberal Arts/Bobb-Merrill (Indianapolis IN) -1698,Confessions Books 1-13,Augustine of Hippo/Peter R.L. Brown/Frank Sheed,3.92,0872201864,9780872201866,eng,296,84,8,1/1/1993,Hackett Publ. Co Inc -1702,Saint Augustine,Garry Wills,3.55,0143035983,9780143035985,eng,176,259,30,8/30/2005,Penguin Books -1703,Augustine: A Very Short Introduction,Henry Chadwick,3.71,0192854526,9780192854520,eng,144,236,33,6/7/2001,Oxford University Press USA -1707,On Genesis/A Refutation of the Manichees/The Unfinished Literal Meaning of Genesis (Works of St Augustine 1),Augustine of Hippo/Boniface Ramsey/Edmund Hill,3.94,1565482018,9781565482012,eng,540,29,3,5/1/2004,New City Press -1709,Kitchen Confidential: Adventures in the Culinary Underbelly,Anthony Bourdain,4.07,0060934913,9780060934910,eng,302,2488,266,5/1/2001,Ecco Press -1710,Confesiones de un chef,Anthony Bourdain,4.07,8466308954,9788466308953,spa,478,11,0,2/1/2003,Santillana USA Publishing Company -1713,The Metamorphoses of Ovid,Ovid/Allen Mandelbaum,4.05,0156001268,9780156001267,eng,559,710,64,4/15/1995,Harcourt Brace -1715,Metamorphoses,Ovid/David Raeburn/Denis Feeney,4.05,014044789X,9780140447897,eng,723,48223,764,8/3/2004,Penguin -1718,Metamorphoses,Ovid/Bernard Knox/Charles Martin,4.05,0393058107,9780393058109,eng,624,30,8,11/17/2003,W. W. Norton Company -1720,Ovid's Metamorphoses: Books 1-5,Ovid/William Scovil Anderson,4.27,0806128941,9780806128948,eng,584,229,16,1/15/1998,University of Oklahoma Press -1721,Ovid’s Metamorphoses: Books 6-10,Ovid/William Scovil Anderson,4.32,0806114568,9780806114569,eng,560,32,3,1/15/1978,University of Oklahoma Press -1722,Latin Via Ovid: A First Course,Norma Goldman/Jacob E. Nyenhuis,4.36,0814317324,9780814317327,en-US,524,78,8,9/1/1982,Wayne State University Press -1725,The Art of Love and Other Poems,Ovid/J.H. Mozley/G.P. Goold,4.02,0674992555,9780674992559,eng,400,98,5,1/1/1929,Harvard University Press -1728,The Poems of Exile: Tristia and the Black Sea Letters,Ovid/Peter Green,4.12,0520242602,9780520242609,eng,451,432,14,1/18/2005,University of California Press -1729,Metamorphoses: Volume 2 Books IX-XV,Ovid/Frank Justus Miller,4.52,0674990471,9780674990470,eng,499,61,4,1/1/1985,Harvard University Press -1730,Metamorphoses: Volume I Books I-VIII,Ovid/Frank Justus Miller,4.42,0674990463,9780674990463,eng,496,813,14,1/1/1977,Harvard University Press -1731,Practice! Practice!: A Latin Via Ovid Workbook,Norma Goldman/Michael Rossi,4.08,0814326110,9780814326114,eng,152,12,0,7/1/1995,Wayne State University Press -1744,Tibullus: A Commentary,Michael C.J. Putnam,3.71,0806115602,9780806115603,eng,222,7,1,11/15/1979,University of Oklahoma Press -1750,Dionysiac Poetics and Euripides' Bacchae,Charles Segal,4.62,069101597X,9780691015972,eng,440,12,0,11/16/1997,Princeton University Press -1752,Antigone,Sophocles/Reginald Gibbons/Charles Segal,3.64,0195143108,9780195143102,eng,197,36,5,9/1/2007,Oxford University Press -1761,Antigone,Sophocles/Reginald Gibbons/Charles Segal,3.64,0195143736,9780195143737,eng,208,264,14,6/5/2003,Oxford University Press USA -1771,Object-Oriented Programming in C++,Richard Johnsonbaugh/Martin Kalin,4.07,0130158852,9780130158857,eng,640,14,0,8/13/1999,Prentice Hall -1796,The Iliad,Homer/Robert Fitzgerald,3.86,1857150600,9781857150605,eng,594,30,2,3/19/1992,Everyman -1800,Love Sex & Tragedy: How the Ancient World Shapes Our Lives,Simon Goldhill,3.79,0226301192,9780226301198,eng,345,122,16,11/1/2005,University of Chicago Press -1801,Reading Greek Tragedy,Simon Goldhill,4.12,0521315794,9780521315791,eng,302,32,3,8/5/1986,Cambridge University Press -1804,Who Needs Greek? Contests in the Cultural History of Hellenism,Simon Goldhill,3.40,0521011760,9780521011761,eng,334,10,1,4/4/2002,Cambridge University Press -1805,Foucault's Virginity: Ancient Erotic Fiction & the History of Sexuality (Stanford Memorial Lecture),Simon Goldhill,3.73,0521479347,9780521479349,eng,212,10,0,1/26/1995,Cambridge University Press -1814,2012: The Return of Quetzalcoatl,Daniel Pinchbeck,3.42,1585424838,9781585424832,en-US,408,1416,217,5/4/2006,Tarcher -1815,Breaking Open the Head: A Psychedelic Journey Into the Heart of Contemporary Shamanism,Daniel Pinchbeck/Lee Fukui,4.06,0767907434,9780767907439,en-US,336,2799,166,8/12/2003,Three Rivers Press (CA) -1823,Them: Adventures with Extremists,Jon Ronson,3.95,0743233212,9780743233217,eng,336,11990,831,1/7/2003,Simon Schuster -1824,The Men Who Stare at Goats,Jon Ronson,3.61,0743270606,9780743270601,eng,259,10679,899,4/10/2006,Simon Schuster -1839,Guns Germs and Steel: The Fates of Human Societies,Jared Diamond,4.03,0393061310,9780393061314,eng,518,4356,404,7/11/2005,W.W. Norton -1843,Caught Inside: A Surfer's Year on the California Coast,Daniel Duane,3.87,0865475091,9780865475090,eng,256,633,60,4/10/1997,North Point Press -1845,Into the Wild,Jon Krakauer,3.98,0385486804,9780385486804,eng,207,800349,18198,1/20/1997,Anchor Books -1846,Wild at Heart: Discovering the Secret of a Man's Soul,John Eldredge,3.92,0785268839,9780785268833,eng,256,55106,1503,4/1/2001,Thomas Nelson -1848,Wild Swans: Three Daughters of China,Jung Chang,4.26,0743246985,9780743246989,eng,562,73572,4280,8/12/2003,Simon Schuster -1849,Wild Fire (John Corey #4),Nelson DeMille,4.01,044657967X,9780446579674,eng,519,20909,944,11/6/2006,Warner Books (NY) -1850,Born to Be Wild,Catherine Coulter,3.78,0515142395,9780515142396,eng,354,2456,115,7/25/2006,Jove -1852,The Call of the Wild,Jack London/Avi,3.86,0439227143,9780439227148,eng,172,274649,7203,1/1/2001,Scholastic -1853,Wild About Books,Judy Sierra/Marc Brown,4.17,037582538X,9780375825385,eng,40,4541,378,8/10/2004,Alfred A. Knopf Books for Young Readers -1856,In Web Design for Libraries,Charles P. Rubenstein,2.67,1591583667,9781591583660,eng,196,9,2,12/1/2006,Libraries Unlimited -1869,Nickel and Dimed: On (Not) Getting by in America,Barbara Ehrenreich,3.63,0805063897,9780805063899,eng,240,168362,5762,5/1/2002,Owl Books (Henry Holt) -1877,The History of Sexuality 1: An Introduction,Michel Foucault/Robert Hurley,4.04,0394417755,9780394417752,eng,168,15,3,10/1/1978,Pantheon Books (NY) -1879,The History of Sexuality Volume 1: The Will to Knowledge,Michel Foucault/Robert Hurley,4.04,0140268685,9780140268683,eng,168,313,27,10/29/1998,Penguin -1883,The History of Sexuality Volume 2: The Use of Pleasure,Michel Foucault/Robert Hurley,4.08,0140137343,9780140137347,eng,304,51,2,7/30/1998,Penguin -1887,The Making of Pride and Prejudice,Sue Birtwistle/Sue Conklin/Susie Conklin,4.45,014025157X,9780140251579,eng,128,4244,99,9/7/1995,Penguin Books Ltd -1888,Pride and Prejudice,Jane Austen,4.26,0192802380,9780192802385,eng,333,2399,253,2/11/2004,Oxford University Press -1889,Pride & Prejudice,Jane Austen/Vivien Jones,4.26,0143036238,9780143036234,eng,392,1821,210,9/1/2005,Penguin Books -1891,Pride and Prejudice,Jane Austen/George Saintsbury/Hugh Thomson,4.26,0486440915,9780486440910,eng,476,1146,166,5/5/2005,Dover Publications -1893,Pride and Prejudice,Jane Austen/Carol Howard,4.26,1593083246,9781593083243,eng,392,1628,171,9/20/2004,Barnes Noble Classics -1894,Under the Banner of Heaven: A Story of Violent Faith,Jon Krakauer,4.00,1400032806,9781400032808,eng,399,7481,1022,7/10/2003,Anchor Books -1896,Iceland: Land of the Sagas,David Roberts/Jon Krakauer,3.71,0375752676,9780375752674,eng,160,330,40,10/6/1998,Villard -1898,Into Thin Air: A Personal Account of the Mount Everest Disaster,Jon Krakauer,4.17,0385494785,9780385494786,eng,368,351406,11701,10/19/1999,Anchor Books -1902,In the Land of White Death: An Epic Story of Survival in the Siberian Arctic,Valerian Albanov/Jon Krakauer/David Roberts/Alison Anderson/Валериан Альбанов,4.01,067978361X,9780679783619,eng,288,1910,136,9/4/2001,Modern Library -1911,The World Is Flat: A Brief History of the Twenty-first Century,Thomas L. Friedman,3.68,0374292795,9780374292799,eng,616,87570,2800,4/18/2006,Farrar Straus and Giroux (NY) -1914,La Tierra es plana: Breve historia del mundo globalizado del siglo XXI,Thomas L. Friedman,3.68,8427032226,9788427032224,spa,495,38,0,1/1/2006,Planeta Publishing -1925,The Avalanche Handbook,David McClung/Peter Schaerer,4.07,0898868092,9780898868098,eng,342,43,1,10/12/2006,Mountaineers Books -1931,Avalanche,Arthur J. Roth,3.65,0590422677,9780590422673,eng,144,273,36,1/1/1989,Scholastic -1934,Little Women,Louisa May Alcott,4.07,0451529308,9780451529305,eng,449,1479727,18458,4/6/2004,Signet Classics -1935,Little Women (Little Women #1),Louisa May Alcott/Scott McKowen,4.07,1402714580,9781402714580,eng,536,1395,131,10/1/2004,Sterling -1936,Little Women,Louisa May Alcott/Paula Danziger,4.07,0439101360,9780439101363,eng,562,462,45,1/1/2000,Scholastic Paperbacks -1937,Little Women,Louisa May Alcott/Jessie Willcox Smith/Frank T. Merrill,4.07,0517221160,9780517221167,eng,389,166,9,9/3/2002,Gramercy Books -1946,Little Women Little Men Jo's Boys,Louisa May Alcott/Elaine Showalter,4.33,1931082731,9781931082730,eng,1064,3124,87,2/17/2005,Library of America -1947,Little Women,Louisa May Alcott,4.07,1904633277,9781904633273,eng,327,83,9,2/1/2004,Collector's Library -1955,A Tale of Two Cities,Charles Dickens/Keith Cox/Cynthia Brantley Johnson,3.84,0743487605,9780743487603,eng,496,131,28,5/1/2004,Simon Schuster -1957,A Tale of Two Cities,Charles Dickens/Gillen D'Arcy Wood,3.84,1593081383,9781593081386,eng,409,1343,183,7/25/2004,Barnes & Noble Classics -1958,A Tale of Two Cities: Charles Dickens,SparkNotes,4.00,158663352X,9781586633523,eng,96,10,1,1/10/2002,Spark Publishing -1959,A Tale of Two Cities,Charles Dickens/Gillen D'Arcy Wood,3.84,1593080557,9781593080556,en-US,429,730,88,12/1/2003,Barnes Noble Classics -1960,A Tale of Two Cities,Charles Dickens/Simon Schama,3.84,1857151437,9781857151435,eng,432,39,9,3/18/1993,Everyman's Library -1972,Den of Thieves,James B. Stewart,4.16,067179227X,9780671792275,en-US,592,9718,216,9/1/1992,Simon Schuster -1976,Den of Thieves (Cat Royal #3),Julia Golding,4.21,1405228180,9781405228183,eng,416,1432,61,1/31/2007,Egmont Books Ltd -1982,Charles Dickens: Four Novels: Great Expectations Hard Times A Christmas Carol and A Tale of Two Cities,Charles Dickens,4.30,0517093391,9780517093399,en-US,848,32,2,10/2/1993,Gramercy -1984,Bleak House,Charles Dickens/Mary Gaitskill/Hablot Knight Browne,4.01,0375760059,9780375760051,eng,887,1235,146,7/9/2002,Modern Library -1985,David Copperfield,Charles Dickens/Gish Jen,3.99,0451530047,9780451530042,eng,928,355,17,2/7/2006,Signet -1987,What Jane Austen Ate and Charles Dickens Knew: From Fox Hunting to Whist—the Facts of Daily Life in 19th-Century England,Daniel Pool,3.85,0671882368,9780671882365,en-US,416,4873,501,4/21/1994,Touchstone -1988,Charles Dickens,Jane Smiley,3.82,0670030775,9780670030774,eng,224,552,81,5/13/2002,Viking -1990,Martin Chuzzlewit,Charles Dickens/Patricia Ingham/Hablot Knight Browne,3.83,0140436146,9780140436143,eng,830,13212,394,11/25/1999,Penguin Classics -1991,Why Is Sex Fun? The Evolution of Human Sexuality (Science Masters),Jared Diamond,3.71,0465031269,9780465031269,eng,176,4532,278,9/25/1998,Basic Books -1993,The Third Chimpanzee: The Evolution & Future of the Human Animal,Jared Diamond,4.06,0060183071,9780060183073,eng,407,59,1,1/1/1992,HarperCollins Publishers -1999,J.K.Rowling,Colleen Sexton,3.84,0822533898,9780822533894,eng,112,127,10,9/1/2005,Lerner Publications -2002,Harry Potter Schoolbooks Box Set: Two Classic Books from the Library of Hogwarts School of Witchcraft and Wizardry,J.K. Rowling,4.40,043932162X,9780439321624,eng,240,11515,139,11/1/2001,Arthur A. Levine -2004,J.K. Rowling's Harry Potter Novels: A Reader's Guide,Philip Nel,3.58,0826452329,9780826452320,eng,96,78,9,9/26/2001,Bloomsbury Academic -2005,Harry Potter and the Half-Blood Prince (Harry Potter #6),J.K. Rowling,4.57,0747584664,9780747584667,eng,768,1213,78,6/23/2006,Bloomsbury Publishing -2010,The Santaroga Barrier,Frank Herbert,3.66,0765342510,9780765342515,eng,256,1625,85,9/16/2002,Tor Books -2011,The Dosadi Experiment (ConSentiency Universe #2),Frank Herbert,3.81,0765342537,9780765342539,eng,320,6146,150,9/16/2002,Tor Books -2015,The Eyes of Heisenberg,Frank Herbert,3.43,0765342529,9780765342522,eng,192,1485,76,9/16/2002,Tor Books -2019,The Birds (Methuen Drama),Sean O'Brien,2.67,0413772780,9780413772787,en-GB,96,3,1,7/22/2002,Bloomsbury Methuen Drama -2022,The Frogs,Aristophanes/B.B. Rogers,3.80,1420926713,9781420926712,en-US,88,3,1,1/1/2005,Digireads.com -2025,Lysistrata,Aristophanes/Jeffrey Henderson,3.85,0198144962,9780198144960,eng,320,76,6,6/21/1990,OUP Oxford -2026,Myths of the Underworld Journey: Plato Aristophanes and the "Orphic" Gold Tablets,Radcliffe G. Edmonds III,3.75,0521834341,9780521834346,eng,276,3,0,11/18/2004,Cambridge University Press -2028,Assembly of Women (Literary Classics),Aristophanes/Robert Mayhew,3.77,1573921335,9781573921336,en-GB,124,56,4,4/1/1997,Prometheus Books -2034,Comoediae 1: Acharenses/Equites/Nubes/Vespae/Pax/Aves,Aristophanes/F.W. Hall/W.M. Geldart,5.00,0198145047,9780198145042,grc,364,0,0,2/22/1922,Oxford University Press USA -2043,Aristophanes and His Theatre of the Absurd,Paul Anthony Cartledge,3.86,1853991147,9781853991141,eng,127,7,1,6/1/1991,Bristol Classical Press -2045,Later Novels and Other Writings: The Lady in the Lake / The Little Sister / The Long Goodbye / Playback / Double Indemnity (screenplay) / Selected Essays and Letters,Raymond Chandler/Frank MacShane,4.47,1883011086,9781883011086,eng,1076,1107,48,10/1/1995,Library of America -2046,Stories and Early Novels: Pulp Stories / The Big Sleep / Farewell My Lovely / The High Window,Raymond Chandler/Frank MacShane,4.50,1883011078,9781883011079,eng,1199,1324,66,10/1/1995,Library of America -2048,The Lady in the Lake The Little Sister The Long Goodbye Playback (Everyman's Library),Raymond Chandler/Tom Hiney,4.45,0375415025,9780375415029,eng,1016,241,11,10/15/2002,Everyman's Library -2049,The High Window (Philip Marlowe #3),Raymond Chandler,4.08,0394758269,9780394758268,eng,265,13233,570,8/12/1992,Vintage Crime/Black Lizard -2051,The Simple Art of Murder,Raymond Chandler,4.16,0394757653,9780394757650,eng,384,4952,162,9/12/1988,Vintage Crime/Black Lizard -2052,The Big Sleep (Philip Marlowe #1),Raymond Chandler,4.01,0394758285,9780394758282,eng,231,103400,4076,7/12/1988,Vintage Crime -2054,The Long Goodbye (Philip Marlowe #6),Raymond Chandler,4.22,0394757688,9780394757681,eng,379,26389,1619,8/12/1988,Vintage Crime/Black Lizard -2056,An Evening of Long Goodbyes,Paul Murray,3.60,0812970403,9780812970401,eng,448,983,130,9/13/2005,Random House Trade Paperbacks -2057,The Long Goodbye: Memories of My Father,Patti Davis,3.82,0452286875,9780452286870,eng,205,214,31,10/1/2005,Plume Books -2058,Ghost In the Shell 2: Innocence: After the Long Goodbye,Masaki Yamada/Yuji Oniki/Carl Gustav Horn,3.97,1421501562,9781421501567,eng,196,250,12,10/11/2005,VIZ Media LLC -2059,The Long Goodbye (Philip Marlowe #6),Raymond Chandler,4.22,056352474X,9780563524748,eng,2,10,2,9/20/2004,BBC Worldwide -2067,Breaking the Spell: Religion as a Natural Phenomenon,Daniel C. Dennett,3.89,067003472X,9780670034727,eng,448,10135,330,2/24/2006,Viking Books -2068,Darwin's Dangerous Idea: Evolution and the Meanings of Life,Daniel C. Dennett,4.04,068482471X,9780684824710,eng,588,13563,235,6/12/1996,Simon Schuster -2071,Freedom Evolves,Daniel C. Dennett,3.83,0142003840,9780142003848,eng,368,2324,88,1/27/2004,Penguin -2072,Brainstorms: Philosophical Essays on Mind and Psychology,Daniel C. Dennett,3.95,0262540371,9780262540377,eng,424,573,11,7/13/1981,MIT Press -2074,Kinds of Minds: Towards an Understanding of Consciousness,Daniel C. Dennett,3.82,0465073514,9780465073511,eng,192,1555,63,6/12/1997,Basic Books -2077,Leaps of Faith: Science Miracles & the Search for Supernatural Consolation,Nicholas Humphrey/Daniel C. Dennett,3.61,0387987207,9780387987200,en-US,244,21,3,6/4/1999,Copernicus Books -2078,Elbow Room: The Varieties of Free Will Worth Wanting,Daniel C. Dennett,3.92,0262540428,9780262540421,eng,212,515,37,11/21/1984,MIT Press -2081,The Mind’s I: Fantasies and Reflections on Self and Soul,Douglas R. Hofstadter/Daniel C. Dennett,4.14,0553345842,9780553345841,eng,512,4786,92,4/1/1985,Bantam Books -2093,The Illustrated A Brief History of Time,Stephen Hawking,4.17,0553103741,9780553103748,eng,256,817,63,11/1/1996,Bantam Books -2094,A Briefer History of Time,Stephen Hawking/Leonard Mlodinow,4.22,0553804367,9780553804362,eng,176,24035,828,9/27/2005,Bantam -2095,The Universe in a Nutshell,Stephen Hawking,4.15,055380202X,9780553802023,eng,216,29607,645,11/6/2001,Bantam -2096,God Created the Integers: The Mathematical Breakthroughs That Changed History,Stephen Hawking,4.07,0762419229,9780762419227,eng,1160,1682,51,10/4/2005,Running Press Book Publishers -2099,Stephen Hawking's Universe: The Cosmos Explained,David Filkin/Stephen Hawking,4.29,0465081983,9780465081981,eng,304,1469,22,10/9/1998,Basic Books -2100,The Future of Spacetime,Stephen Hawking/Kip S. Thorne/Igor Novikov/Timothy Ferris/Alan Lightman/Richard Price,3.94,039332446X,9780393324464,eng,224,257,10,6/17/2003,W. W. Norton Company -2102,Stephen Hawking's Universe,John Boslough,4.02,0380707632,9780380707638,eng,160,674,30,6/1/1989,Avon -2103,The Nature of Space and Time,Stephen Hawking/Roger Penrose,4.09,0691050848,9780691050843,eng,152,989,40,10/8/2000,Princeton University Press -2104,The Physics of Star Trek,Lawrence M. Krauss/Stephen Hawking,3.83,0060977108,9780060977108,eng,188,4774,178,8/16/1996,ReganBooks -2107,Falconry & Hawking,Phillip Glasier,4.31,0713484071,9780713484076,eng,352,51,5,2/1/2006,Batsford -2109,The World Treasury of Physics Astronomy & Mathematics from Albert Einstein to Stephen W. Hawking & from Annie Dillard to John Updike,Timothy Ferris,4.13,0316281336,9780316281331,eng,859,371,12,6/30/1993,Back Bay Books -2112,The Art of Nonfiction: A Guide for Writers and Readers,Ayn Rand/Robert Mayhew/Peter Schwartz,3.96,0452282314,9780452282315,en-US,192,429,39,2/1/2001,New American Library -2113,The Journals of Ayn Rand,Ayn Rand/Leonard Peikoff/David Harriman,3.94,0452278872,9780452278875,eng,752,317,14,8/1/1999,NAL -2122,The Fountainhead,Ayn Rand/Leonard Peikoff,3.87,0451191153,9780451191151,eng,704,271754,10063,9/1/1996,Signet Book -2123,The 36-Hour Day: A Family Guide to Caring for Persons with Alzheimer Disease Related Dementing Illnesses and Memory Loss in Later Life,Nancy L. Mace/Peter V. Rabins,4.24,0446618764,9780446618762,eng,624,69,6,11/1/2006,Grand Central Life & Style -2126,The 3-Hour Diet: On the Go,Jorge Cruise,3.10,0060793198,9780060793197,en-US,192,31,2,10/18/2005,William Morrow Paperbacks -2127,The Last Hours of Ancient Sunlight: The Fate of the World and What We Can Do Before It's Too Late,Thom Hartmann/Joseph Chilton Pearce/Neale Donald Walsch,4.23,1400051576,9781400051571,en-US,400,1392,136,4/27/2004,Broadway Books -2136,Specimen Days,Michael Cunningham,3.58,0312425023,9780312425029,eng,336,4462,446,4/18/2006,Picador USA -2137,A Home at the End of the World,Michael Cunningham,3.91,0312424086,9780312424084,eng,342,14769,658,7/1/2004,Picador -2140,Blink: The Power of Thinking Without Thinking,Malcolm Gladwell,3.93,0316172324,9780316172325,en-US,277,4254,355,1/11/2005,Little Brown and Company -2142,Blink,Ted Dekker,4.17,0849945119,9780849945113,eng,400,13334,502,10/11/2004,Thomas Nelson -2144,Blink-182: Tales from Beneath Your Mom,Mark Hoppus/Anne Hoppus/Alex Gaskarth,4.39,0743422074,9780743422079,eng,112,169,22,10/2/2001,MTV Books -2151,The Complete Novels,Jane Austen/Hugh Thomson,4.55,0517147688,9780517147689,eng,1103,300,31,9/3/1995,Gramercy Books -2152,The Jane Austen Book Club,Karen Joy Fowler,3.08,0452286530,9780452286535,eng,288,57720,3535,4/26/2005,G.P. Putnam's Sons -2153,Jane Austen: The Complete Novels,Jane Austen,4.55,0517118297,9780517118290,eng,1103,267,24,6/1/1994,Gramercy Books -2155,Jane Austen's Letters,Jane Austen/Deirdre Le Faye,4.16,0192832972,9780192832979,eng,672,2278,69,4/3/1997,Oxford University Press USA -2156,Persuasion,Jane Austen/James Kinsley/Anna Massey/Richard S. Hartmetz/Maurgaux Motin/Deidre Shauna Lynch,4.14,0192802631,9780192802637,eng,249,441462,11308,3/18/2004,Oxford University Press -2157,Tea with Jane Austen,Kim Wilson/Tom Carpenter,3.79,097212179X,9780972121798,eng,128,1442,108,9/3/2004,Jones Books -2166,The Old Man and the Sea,Ernest Hemingway/Donald Sutherland,3.77,0743564367,9780743564366,eng,3,393,77,5/1/2006,Simon Schuster Audio -2167,Cliffs Notes on Hemingway's The Old Man and the Sea,Jeanne Sallade Criswell/Gary Carey,2.83,0764586602,9780764586606,en-US,80,4,0,12/5/2000,Cliffs Notes -2176,Flaubert's Parrot,Julian Barnes,3.66,0679731369,9780679731368,eng,190,9373,606,11/27/1990,Vintage -2178,Flaubert in Egypt: A Sensibility on Tour,Gustave Flaubert/Francis Steegmuller,3.62,0140435824,9780140435825,eng,230,378,31,3/30/1996,Penguin Books (Penguin Classics) -2179,A Sentimental Education,Gustave Flaubert/Douglas Parmée,3.83,0192836226,9780192836229,eng,464,105,7,5/18/2000,Oxford University Press -2182,Three Tales,Gustave Flaubert/Roger Whitehouse/Geoffrey Wall,3.69,0140448004,9780140448009,eng,110,3190,150,1/27/2005,Penguin Classics -2183,Sentimental Education,Gustave Flaubert/Robert Baldick/Geoffrey Wall,3.83,0140447970,9780140447972,eng,460,13499,388,2/5/2004,Penguin Classics -2186,The Family Idiot 5: Gustave Flaubert 1821-1857,Jean-Paul Sartre/Carol Cosman,3.80,0226735192,9780226735191,en-US,632,5,1,1/26/1994,University of Chicago Press -2187,Middlesex,Jeffrey Eugenides,4.00,0312422156,9780312422158,eng,529,540349,19548,9/16/2003,Picador USA -2199,Team of Rivals: The Political Genius of Abraham Lincoln,Doris Kearns Goodwin,4.28,0743270754,9780743270755,eng,916,133840,6118,9/26/2006,Simon & Schuster -2203,John Adams,David McCullough,4.06,0743223136,9780743223133,eng,751,282649,5325,5/22/2001,Simon & Schuster Paperbacks -2204,The John Adams Reader: Eseential Writings on an American Composer,Thomas May/John Adams,3.50,1574671324,9781574671322,eng,455,20,5,6/1/2006,Amadeus -2205,The Letters of John and Abigail Adams,Abigail Adams/Frank Shuffelton,4.14,0142437115,9780142437117,eng,512,275,28,12/30/2003,Penguin Classics -2209,Passionate Sage: The Character and Legacy of John Adams,Joseph J. Ellis,4.05,0393311333,9780393311334,eng,288,2622,78,2/17/2001,W. W. Norton Company -2211,The Portable John Adams,John Adams/John Patrick Diggins,4.17,0142437786,9780142437780,eng,533,57,0,6/29/2004,Penguin Books -2218,Sex For Dummies,Ruth Westheimer,3.65,076455302X,9780764553028,eng,432,10,0,12/28/2000,For Dummies -2219,Baby Signing For Dummies,Jennifer Watson,3.64,0471773867,9780471773863,eng,257,37,9,10/1/2006,John Wiley & Sons -2222,The Feeling Good Handbook,David D. Burns,4.00,0452281326,9780452281325,eng,729,4797,124,10/28/1999,Penguin -2226,On Death and Dying,Elisabeth Kübler-Ross,4.16,0684842238,9780684842233,eng,288,144,10,7/2/1997,Scribner -2227,Questions and Answers on Death and Dying: A Companion Volume to On Death and Dying,Elisabeth Kübler-Ross,4.07,0684839377,9780684839370,eng,192,197,7,6/9/1997,Scribner -2228,The Last Dance: Encountering Death and Dying,Lynne Ann DeSpelder/Albert Lee Strickland,3.77,0072920963,9780072920963,eng,664,123,13,2/6/2004,McGraw-Hill Humanities/Social Sciences/Languages -2236,Mahatma Gandhi and His Myths: Civil Disobedience Nonviolence and Satyagraha in the Real World (Plus Why It's Gandhi Not Ghandi),Mark Shepard,3.62,0938497197,9780938497196,eng,46,55,7,1/1/2002,Simple Productions -2249,The Seven Habits of Highly Effective People,Stephen R. Covey,4.10,0671708635,9780671708634,eng,368,2505,233,9/15/1990,Free Press -2250,The 7 Habits of Highly Effective People Personal Workbook,Stephen R. Covey,4.24,0743250974,9780743250979,eng,192,1874,114,1/6/2004,Simon Schuster -2253,Daily Reflections For Highly Effective People: Living the 7 Habits of Highly Successful People Every Day,Stephen R. Covey,3.90,0671887173,9780671887179,eng,384,336,26,3/21/1994,Simon Schuster -2255,Way of the Peaceful Warrior: A Book That Changes Lives,Dan Millman,4.14,1932073205,9781932073201,en-US,240,39947,1622,4/13/2006,HJ Kramer -2257,Secret of the Peaceful Warrior,Dan Millman/Robert D. San Souci/T. Taylor Bruce,4.15,0915811235,9780915811236,en-US,32,156,13,12/28/1992,HJ Kramer -2265,It's Not about the Bike: My Journey Back to Life,Lance Armstrong/Sally Jenkins,3.72,0425179613,9780425179611,eng,294,35050,1833,9/1/2001,Berkley Publishing Group -2267,23 Days in July: Inside the Tour de France and Lance Armstrong's Record-Breaking Victory,John Wilcockson/Graham Watson,3.67,0306814552,9780306814556,eng,344,360,26,6/15/2005,Da Capo Press -2279,Truman,David McCullough,4.12,0671869205,9780671869205,eng,1120,71764,1937,6/14/1993,Simon Schuster -2281,The Complete Stories of Truman Capote,Truman Capote/Reynolds Price,4.20,140009691X,9781400096916,eng,320,3993,217,9/13/2005,Vintage -2282,Breakfast at Tiffany's: A Short Novel and Three Stories,Truman Capote,3.89,067960085X,9780679600855,eng,162,5658,699,1/13/1994,Modern Library -2283,Murder at The Washington Tribune (Capital Crimes #21),Margaret Truman,3.58,0345478207,9780345478207,eng,384,585,78,10/31/2006,Ballantine Books -2285,Murder at Ford's Theatre (Capital Crimes #19),Margaret Truman,3.74,0449007383,9780449007389,en-US,376,623,68,9/30/2003,Fawcett -2287,Other Voices Other Rooms,Truman Capote,3.80,0679745645,9780679745648,eng,232,10635,656,2/1/1994,Vintage -2289,In Cold Blood,Truman Capote/Scott Brick,4.07,073933364X,9780739333648,eng,15,563,133,1/3/2006,Random House Audio -2296,Emergence: The Connected Lives of Ants Brains Cities and Software,Steven Johnson,3.96,0684868768,9780684868769,en-US,288,2769,200,9/10/2002,Scribner -2299,Emergence: Labeled Autistic,Temple Grandin/Margaret M. Scariano,4.07,0446671827,9780446671828,en-GB,200,1827,154,9/1/1996,Grand Central Publishing -2304,The Emergence of Life on Earth: A Historical and Scientific Overview,Iris Fry,4.02,0813527406,9780813527406,eng,344,48,5,2/1/2000,Rutgers University Press -2305,The Ghost Stories of Edith Wharton,Edith Wharton/Laszlo Kubinyi,3.89,0684842572,9780684842578,eng,303,2842,182,10/10/1997,Scribner -2306,The House of Mirth / The Reef / The Custom of the Country / The Age of Innocence,Edith Wharton/R.W.B. Lewis,4.30,0940450313,9780940450318,eng,1328,446,29,5/12/1986,Library of America -2307,Collected Stories 1911-1937,Edith Wharton/Maureen Howard,4.25,1883011949,9781883011949,eng,848,55,9,1/29/2001,Library of America -2309,Novellas and Other Writings: Madame de Treymes / Ethan Frome / Summer / Old New York / The Mother’s Recompense / A Backward Glance,Edith Wharton/Cynthia Griffin Wolff,4.22,0940450534,9780940450530,eng,1137,67,9,4/1/1990,Library of America -2314,The House of Mirth,Edith Wharton,3.95,0486420493,9780486420493,eng,272,749,62,8/6/2002,Dover Publications -2315,Below the Root,Zilpha Keatley Snyder/Alton Raible,4.08,0689304579,9780689304576,eng,231,41,9,1/1/1975,Atheneum Books -2319,The Witches of Worm,Zilpha Keatley Snyder,3.69,0440802504,9780440802501,eng,183,40,12,5/1/1991,Dell Yearling -2322,The Deeper Meaning of Liff,Douglas Adams/John Lloyd,3.93,0307236013,9780307236012,eng,192,3986,85,4/19/2005,Three Rivers Press -2326,Dirk Gently's Holistic Detective Agency (Dirk Gently #1),Douglas Adams,3.98,1597770078,9781597770071,eng,6,58,15,9/30/2005,Phoenix Audio -2327,The Letters of J.R.R. Tolkien,J.R.R. Tolkien/Humphrey Carpenter/Christopher Tolkien,4.15,0618056998,9780618056996,eng,502,4689,171,6/6/2000,Mariner Books -2329,The History of the Lord of the Rings (The History of Middle-earth #6-9),J.R.R. Tolkien/Christopher Tolkien,4.38,0618083553,9780618083558,en-US,1680,237,3,9/1/2000,Mariner Books -2330,The Languages of Tolkien's Middle-Earth,Ruth S. Noel/J.R.R. Tolkien,3.98,0395291305,9780395291306,eng,207,4685,74,5/28/1980,Houghton Mifflin Company -2331,The Lord of the Rings- 3 volumes set (The Lord of the Rings #1-3),J.R.R. Tolkien,4.50,0618574999,9780618574995,en-US,1438,232,9,6/1/2005,Mariner Books -2333,Farmer Giles of Ham,J.R.R. Tolkien/Christina Scull/Wayne G. Hammond,3.85,0618009361,9780618009367,eng,127,5526,225,11/15/1999,Houghton Mifflin Harcourt -2336,Tandia,Bryce Courtenay,4.05,0140272925,9780140272925,eng,905,8461,369,8/31/1998,Penguin Books Australia Ltd. -2338,Matthew Flinders' Cat,Bryce Courtenay,3.80,0670910619,9780670910618,eng,611,2737,161,12/31/2002,Viking -2343,Solomon's Song (The Potato Factory #3),Bryce Courtenay,4.01,0140271570,9780140271577,eng,671,3920,132,8/31/2001,Penguin Books Australia Ltd. -2348,An Introduction to Old Norse,E.V. Gordon/A.R. Taylor,4.10,0198111843,9780198111849,eng,412,104,7,7/23/1981,Oxford University Press -2353,Cold Counsel: Women in Old Norse Literature and Myth,Sarah M. Anderson/Karen Swenson,3.68,0815319665,9780815319665,eng,320,19,2,12/21/2002,Routledge -2367,Brave Companions: Portraits in History,David McCullough,3.98,0671792768,9780671792763,eng,240,3460,482,11/1/1992,Simon Schuster -2368,Mornings on Horseback: The Story of an Extraordinary Family a Vanished Way of Life and the Unique Child Who Became Theodore Roosevelt,David McCullough,4.12,0671447548,9780671447540,eng,445,23064,1191,5/12/1982,Simon Schuster -2370,John Adams,David McCullough,4.06,0684813637,9780684813639,en-US,752,1852,285,5/1/2001,Simon & Schuster -2371,The Johnstown Flood,David McCullough,4.11,0844662925,9780844662923,eng,302,14739,1199,1/1/1990,Peter Smith Publisher -2372,The Path Between the Seas: The Creation of the Panama Canal 1870-1914,David McCullough,4.20,0743262131,9780743262132,eng,697,12178,1042,6/1/2004,Simon Schuster -2373,The Bone Collector (Lincoln Rhyme #1),Jeffery Deaver,4.19,0451188454,9780451188458,eng,528,140014,1753,4/1/1998,Signet Book -2375,The Bone Collector's Son,Paul Yee,3.27,0761452427,9780761452423,eng,137,117,19,1/1/2004,Two Lions -2378,El Coleccionista De Huesos (Lincoln Rhyme #1),Jeffery Deaver,4.19,8466305130,9788466305136,spa,640,26,2,6/1/2003,Punto de Lectura -2386,Moby Dick,Herman Melville/William Hootkins,3.50,9626343583,9789626343586,eng,25,67,17,9/1/2005,Naxos Audiobooks -2388,Moby-Dick,Jan Needle/Patrick Benson/Herman Melville,3.71,0763630187,9780763630188,eng,192,161,16,9/12/2006,Candlewick Press -2389,Moby Dick,Herman Melville/William Hootkins,3.50,0143058096,9780143058090,eng,6,8858,885,6/16/2005,Penguin Audio -2390,Moby-Dick,Herman Melville/Carl F. Hovde,3.50,1593080182,9781593080181,eng,707,1260,207,4/1/2003,Barnes Noble Classics -2400,Herman Melville's Moby-Dick: A Routledge Study Guide and Sourcebook,Michael J. Davey/Duncan Wu,3.61,0415247713,9780415247719,eng,208,50,7,9/18/2003,Routledge -2404,Moby Dick: or The White Whale (Oxford Illustrated Classics),Geraldine McCaughrean/Victor G. Ambrus/Herman Melville,3.82,0192781537,9780192781536,eng,104,39,5,4/16/1998,Oxford University Press USA -2407,Melville's Moby Dick: An American Nekyia (Studies in Jungian Psychology by Jungian Analysts),Edward F. Edinger,3.93,0919123708,9780919123700,eng,156,23,4,4/30/2004,Inner City Books -2409,Moby Dick: Or the White Whale (Oxford Illustrated Classics Series),Geraldine McCaughrean/Victor G. Ambrus/Herman Melville,3.82,019274156X,9780192741561,eng,102,6,0,4/3/1997,Oxford University Press USA -2411,Melville and the politics of identity: From *King Lear* to *Moby-Dick*,Julian Markels,3.33,0252063023,9780252063022,eng,164,0,0,7/1/1993,University of Illinois Press -2412,Unpainted to the Last: "Moby Dick" and Twentieth-century American Art,Elizabeth A. Schultz,4.28,0700607420,9780700607426,eng,400,16,1,10/20/1995,University Press of Kansas -2423,Double Tap (Paul Madriani #8),Steve Martini,3.92,0515139734,9780515139730,en-US,401,2790,159,12/27/2005,Jove Books -2430,The List,Steve Martini,3.96,0515121495,9780515121490,eng,451,12534,141,12/1/1997,Jove -2442,Witches Abroad (Discworld #12; Witches #3),Terry Pratchett,4.22,0061020613,9780061020612,eng,374,58408,1272,7/30/2002,HarperTorch -2443,The Innocents Abroad,Mark Twain/Grover Gardner,3.86,0812967054,9780812967050,eng,560,8879,693,2/11/2003,Modern Library -2445,Teaching English Abroad,Susan Griffith,3.57,1854583522,9781854583529,eng,576,38,6,1/1/2007,Vacation Work Publications -2452,Theocritus: Select Poems: Select Poems,Theocritus/Kenneth James Dover,3.00,0862921473,9780862921477,grc,395,1,1,6/1/1991,Bristol Classical Press -2473,The Shield. Catalogue of Women. Other Fragments. (Hesiod II),Hesiod/Glenn W. Most,4.03,0674996232,9780674996236,eng,434,33,1,3/1/2007,Harvard University Press -2486,Death and the King's Horseman,Wole Soyinka/Simon Gikandi,3.76,0393977617,9780393977615,en-US,254,259,30,11/5/2002,W. W. Norton & Company -2494,The Time Machine,H.G. Wells/Patrick Parrinder/Steven McLean/Marina Warner,3.89,0141439971,9780141439976,eng,104,3094,301,3/31/2005,Penguin Books Ltd -2495,The Time Machine,H.G. Wells/Cynthia Brantley Johnson/Benjamin Beard,3.89,0743487737,9780743487733,eng,150,372,36,7/1/2004,Simon Schuster -2499,The Ultimate Time Machine: A Remote Viewer's Perception of Time & Predictions for the New Millennium,Joseph McMoneagle,3.59,157174102X,9781571741028,en-GB,275,68,6,10/1/1998,Hampton Roads Publishing Company -2501,The Time Machine,H.G. Wells/Melvin Burgess,3.89,0439436540,9780439436540,eng,123,284,35,3/1/2004,Scholastic Paperbacks -2504,The Complete Short Stories,H.G. Wells/John R. Hammond,4.14,1842124021,9781842124024,eng,864,875,33,5/1/2001,Orion Publishing -2506,Selected Stories,H.G. Wells/Ursula K. Le Guin,3.93,0812970756,9780812970753,en-US,432,80,11,7/13/2004,Modern Library -2508,Tono-Bungay,H.G. Wells/Edward Mendelson/Patrick Parrinder,3.42,0141441119,9780141441115,eng,414,856,111,6/28/2005,Penguin Classics -2519,The Name of the Rose (Everyman's Library (Cloth)),Umberto Eco,4.12,0307264890,9780307264893,en-US,560,1338,113,9/26/2006,Everyman's Library -2520,In the Name of Jesus: Reflections on Christian Leadership,Henri J.M. Nouwen,4.34,0824512596,9780824512590,en-US,120,8228,410,10/1/1992,Crossroad -2521,Blood Done Sign My Name: A True Story,Timothy B. Tyson,4.15,1400083117,9781400083114,eng,368,2594,403,5/3/2005,Broadway Books -2526,Blindness,José Saramago/Giovanni Pontiero,4.11,0156007754,9780156007757,eng,326,107455,7778,10/4/1999,Mariner Books -2527,The Gospel According to Jesus Christ,José Saramago/Giovanni Pontiero,4.29,0156001411,9780156001410,eng,377,799,107,9/28/1994,Harcourt -2528,All the Names,José Saramago/Margaret Jull Costa,3.89,0156010593,9780156010597,eng,245,11016,734,10/5/2001,Mariner Books -2529,The Tale of the Unknown Island,José Saramago/Peter Sís/Margaret Jull Costa,3.89,0156013037,9780156013031,eng,64,3331,242,10/5/2000,Mariner Books -2530,Baltasar and Blimunda,José Saramago/Giovanni Pontiero,3.92,0156005204,9780156005203,eng,346,6184,284,10/16/1998,Mariner Books -2531,The Cave,José Saramago/Margaret Jull Costa,3.84,0156028794,9780156028790,eng,307,7649,548,10/15/2003,Mariner Books -2535,The Stone Raft,José Saramago/Giovanni Pontiero,3.80,0156004011,9780156004015,en-US,292,308,30,6/14/1996,Mariner Books -2536,The Year of the Death of Ricardo Reis,José Saramago/Giovanni Pontiero,4.02,1860465021,9781860465024,eng,384,3826,191,9/17/1998,Vintage Classics -2538,El hombre duplicado,José Saramago/Pilar del Río,3.89,8466312803,9788466312806,spa,380,1295,106,9/1/2004,Punto de Lectura -2539,Ensayo sobre la lucidez,José Saramago/Pilar del Río,3.80,8466314741,9788466314749,spa,461,1744,124,1/1/2005,Punto de Lectura -2541,La caverna,José Saramago/Pilar del Río,3.84,846630679X,9788466306799,spa,441,842,69,2/1/2003,Punto de Lectura -2542,The History of the Siege of Lisbon,José Saramago/Giovanni Pontiero,3.81,0156006243,9780156006248,eng,314,331,62,9/1/1998,Mariner Books -2543,Las intermitencias de la muerte,José Saramago/Pilar del Río,4.00,9587043642,9789587043648,spa,274,2862,306,12/1/2005,Alfaguara -2545,The Treasured Writings of Kahlil Gibran,Kahlil Gibran,4.42,089009389X,9780890093894,eng,902,1432,45,10/6/2009,Castle Books -2547,The Prophet,Kahlil Gibran/جبران خليل جبران/Jihad El,4.23,000100039X,9780001000391,eng,127,184293,5418,1/1/2010,Rupa & Co -2549,A Tear and a Smile,Kahlil Gibran/جبران خليل جبران/H.M. Nahmad/Robert Hillyer,4.03,0394448049,9780394448046,eng,228,2094,104,6/27/1950,Alfred A.Knopf -2551,On the Road,Jack Kerouac,3.63,0143036386,9780143036388,eng,320,488,39,9/6/2005,Penguin Books -2552,On the Road,Jack Kerouac/Ann Charters,3.63,0141182679,9780141182674,eng,281,5575,502,2/24/2000,Penguin Books -2557,De Kooning: An American Master,Mark Stevens/Annalyn Swan,4.11,0375711163,9780375711169,eng,732,2732,105,4/4/2006,Knopf Publishing Group -2560,Willem de Kooning: Late Paintings,Julie Sylvester/David Sylvester,5.00,382960226X,9783829602266,eng,83,1,0,9/1/2006,Schirmer Mosel -2567,Aké: The Years of Childhood,Wole Soyinka,3.93,0679725407,9780679725404,eng,230,1284,90,10/23/1989,Vintage -2581,Ready for Anything: 52 Productivity Principles for Getting Things Done,David Allen,3.85,0143034545,9780143034544,eng,165,3832,178,12/28/2004,Penguin Books -2584,The Facilitator's Book of Questions: Tools for Looking Together at Student and Teacher Work,David Allen/Tina Blythe/Gene Thompson-Grove,4.00,0807744689,9780807744680,eng,142,54,4,4/29/2004,Teachers College Press -2586,Sun Tzu and the Art of Business: Six Strategic Principles for Managers,Sun Tzu/Mark McNeilly,3.89,0195137892,9780195137897,eng,272,125,13,4/1/2000,Oxford University Press USA -2595,Marketing Warfare,Al Ries/Jack Trout,4.11,0071460829,9780071460828,eng,216,942,59,12/13/2005,McGraw-Hill Education -2612,The Tipping Point: How Little Things Can Make a Big Difference,Malcolm Gladwell,3.97,0316346624,9780316346627,eng,301,633037,11898,1/7/2002,Back Bay Books -2613,Unleashing the Ideavirus: Stop Marketing AT People! Turn Your Ideas into Epidemics by Helping Your Customers Do the Marketing thing for You.,Seth Godin/Malcolm Gladwell,3.98,0786887176,9780786887170,en-US,234,4600,88,10/10/2001,Hachette Books -2615,The Innovator's Dilemma: The Revolutionary Book that Will Change the Way You Do Business,Clayton M. Christensen/L.J. Ganser,3.99,0060521996,9780060521998,eng,286,32079,752,1/7/2003,Harper Paperbacks -2619,Great Expectations,Charles Dickens/David Trotter/Charlotte Mitchell,3.77,0141439564,9780141439563,eng,512,14228,668,12/31/2002,Penguin Books -2626,Great Expectations: Authoritative Text Backgrounds Contexts Criticism,Charles Dickens/Edgar Rosenberg,3.77,0393960692,9780393960693,eng,776,573,38,1/19/1999,W.W. Norton & Company -2646,Luther and Erasmus: Free Will and Salvation (Library of Christian Classics),Erasmus/Martin Luther/Philip S. Watson/E. Gordon Rupp,3.80,0664241581,9780664241582,eng,364,108,13,1/1/1969,Westminster John Knox Press -2654,To Kill a Mockingbird,Harper Lee,4.27,0060935464,9780060935467,eng,323,10524,898,7/5/2005,Harper Perennial Modern Classics -2655,To Kill a Mockingbird,Harper Lee/Sissy Spacek,4.27,0060888695,9780060888695,eng,11,697,180,8/22/2006,Caedmon -2661,To Kill a Mockingbird,Harper Lee,4.27,0061205699,9780061205699,en-US,323,271,34,10/17/2006,Harper -2673,The Wealthy Barber: Everyone's Common-Sense Guide to Becoming Financially Independent,David H. Chilton,4.02,0761501665,9780761501664,eng,199,66,4,9/20/1995,Prima Lifestyles -2677,A Modest Proposal and Other Satirical Works,Jonathan Swift,4.05,0486287599,9780486287591,eng,64,13562,141,2/2/1996,Dover Publications -2678,Gulliver's Travels / A Modest Proposal,Jonathan Swift/Jesse Gale,3.79,1416500391,9781416500391,eng,416,2161,50,8/1/2005,Simon Schuster -2680,Empire 2.0: A Modest Proposal for a United States of the West (Terra Nova),Xavier de C./Xavier de C./Joseph Rowe,4.67,1556434952,9781556434952,eng,144,3,0,5/4/2004,North Atlantic Books -2686,The Bostonians,Henry James/R.D. Gooder,3.59,0192834428,9780192834423,eng,504,85,12,7/23/1998,Oxford University Press -2687,Novels 1896–1899: The Other House / The Spoils of Poynton / What Maisie Knew / The Awkward Age,Henry James/Myra Jehlen,4.28,1931082308,9781931082303,eng,1035,25,4,3/10/2003,Library of America -2688,Novels 1901–1902: The Sacred Fount / The Wings of the Dove,Henry James/Leo Bersani,4.63,193108288X,9781931082884,eng,713,27,3,2/2/2006,Library of America -2692,Complete Stories 1892–1898,Henry James/John Hollander/David Bromwich,4.22,1883011094,9781883011093,eng,958,198,7,1/1/1996,Library of America -2696,The Canterbury Tales,Geoffrey Chaucer/Nevill Coghill,3.49,0140424385,9780140424386,eng,504,168559,2365,1/30/2003,Penguin Classics -2698,The Canterbury Tales,Geoffrey Chaucer/David Wright,3.49,019283360X,9780192833600,eng,465,257,22,7/9/1998,Oxford University Press -2701,The Canterbury Tales (original-spelling edition),Geoffrey Chaucer/Jill Mann,3.49,014042234X,9780140422344,enm,1254,792,59,4/7/2005,Penguin Classics -2702,Chaucer's Canterbury Tales (Selected): An Interlinear Translation,Geoffrey Chaucer/Vincent Foster Hopper,3.80,0812000390,9780812000399,eng,530,73,5,12/31/1977,Barrons Educational Series -2705,Oxford Guides to Chaucer: The Canterbury Tales,Helen Cooper,4.02,0198711557,9780198711551,eng,456,84,4,5/23/1996,Oxford University Press USA -2706,Love Visions,Geoffrey Chaucer/Brian Stone,3.61,0140444084,9780140444087,eng,272,70,6,5/26/1983,Penguin Classics -2710,Chaucer's Canterbury Tales,Geoffrey Chaucer,3.49,0671475029,9780671475024,eng,383,36,5,1/28/1964,Washington Square Press -2711,The Riverside Chaucer,Geoffrey Chaucer/Larry Dean Benson/F.N. Robinson,4.18,0395290317,9780395290316,enm,1327,7760,152,12/12/1987,Houghton Mifflin -2713,The Portable Chaucer,Geoffrey Chaucer/Theodore Morrison,3.86,0140150811,9780140150810,eng,611,70,8,5/26/1977,Penguin Books -2715,Salt: A World History,Mark Kurlansky,3.74,0142001619,9780142001615,eng,484,50335,3012,1/28/2003,Penguin Books -2718,Salt in His Shoes: Michael Jordan in Pursuit of a Dream,Deloris Jordan/Kadir Nelson/Roslyn M. Jordan,4.20,0689834195,9780689834196,eng,32,1178,173,11/1/2003,Simon Schuster Books for Young Readers -2719,The Book of Salt,Monique Truong,3.52,0618446885,9780618446889,eng,261,4411,629,6/15/2004,Mariner Books -2722,Cities of Salt (مدن الملح #1),Abdul Rahman Munif/Peter Theroux,4.13,039475526X,9780394755267,eng,627,856,105,7/17/1989,Vintage -2723,The Years of Rice and Salt,Kim Stanley Robinson,3.73,0553580078,9780553580075,eng,763,9344,995,6/3/2003,Bantam Books -2725,Illuminations: Essays and Reflections,Walter Benjamin/Hannah Arendt/Harry Zohn/Leon Wieseltier,4.29,0805202412,9780805202410,eng,288,9254,194,1/13/1969,Schocken -2727,Saul Steinberg: Illuminations,Saul Steinberg/Joel Smith/Charles Simic,4.51,0300115865,9780300115864,eng,288,39,5,11/1/2006,Yale University Press -2731,Advanced Global Illumination,Philip Dutre,4.50,1568813074,9781568813073,eng,366,17,2,8/30/2006,A K PETERS -2735,Snow Falling On Cedars,David Guterson,3.83,074754655X,9780747546559,eng,404,588,46,10/21/1999,Bloomsbury Publishing PLC -2743,The Lost Boy (Dave Pelzer #2),Dave Pelzer,4.10,1558745157,9781558745155,eng,331,52028,2513,8/1/1997,Health Communications Inc -2745,Real Boys: Rescuing Our Sons from the Myths of Boyhood,William S. Pollack/Mary Pipher,3.83,0805061835,9780805061833,en-US,480,1397,128,5/10/1999,Owl Publishing Company -2749,Microserfs,Douglas Coupland,3.88,0007179812,9780007179817,eng,371,442,38,1/1/2008,Harper Perennial -2756,New Media Language,Jean Aitchison/Diana M. Lewis,3.00,0415283043,9780415283045,eng,209,2,0,5/22/2003,Routledge -2761,The Denial of Death,Ernest Becker/Sam Keen/Daniel Goleman,4.16,0684832402,9780684832401,eng,336,6599,635,5/8/1997,Free Press -2767,A People's History of the United States,Howard Zinn,4.08,0060838655,9780060838652,eng,729,167321,4711,8/2/2005,Harper Perennial -2768,A People's History of the United States,Howard Zinn/Kathy Emery/Ellen Gordon Reeves,4.08,1565848268,9781565848269,eng,619,39,3,7/1/2003,The New Press -2770,A People's History of the United States: The Civil War to the Present,Howard Zinn/Kathy Emery/Ellen Gordon Reeves,4.00,1565847253,9781565847255,eng,496,22,0,8/1/2003,The New Press -2778,Graphic Design: A Concise History (World of Art),Richard Hollis,4.00,0500203474,9780500203477,en-US,232,675,12,5/17/2002,Thames Hudson -2781,Immigrant Acts: On Asian American Cultural Politics,Lisa Lowe,4.00,0822318644,9780822318644,eng,272,206,9,10/21/1996,Duke University Press Books -2785,The Old Way of Seeing: How Architecture Lost Its Magic - And How to Get It Back,Jonathan Hale,3.92,039574010X,9780395740101,eng,256,81,12,9/1/1995,Mariner Books -2794,The Crying of Lot 49,Thomas Pynchon,3.69,006091307X,9780060913076,eng,152,57011,3332,10/17/2006,Harper Perennial -2802,E=mc²: A Biography of the World's Most Famous Equation,David Bodanis,4.09,0425181642,9780425181645,eng,337,6368,321,10/1/2000,Berkley Trade -2804,Passionate Minds,David Bodanis,4.10,0307237206,9780307237200,en-US,373,717,112,10/10/2006,Crown Publishing Group (NY) -2810,Christian Mythmakers: C.S. Lewis Madeleine L'Engle J.R.R. Tolkien George MacDonald G.K. Chesterton Charles Williams Dante Alighieri John Bunyan Walter Wangerin Robert Siegel and Hannah Hurnard,Rolland Hein/Clyde S. Kilby,3.93,094089548X,9780940895485,eng,303,448,18,12/1/2002,Cornerstone Press Chicago -2811,A House Like a Lotus (O'Keefe Family #3),Madeleine L'Engle,3.76,0440936853,9780440936855,eng,307,3976,163,11/1/1985,Dell -2814,The Rock That Is Higher: Story as Truth,Madeleine L'Engle,4.12,0877887268,9780877887263,eng,320,496,48,3/19/2002,Shaw Books -2815,The Glorious Impossible,Madeleine L'Engle/Giotto di Bondone,4.25,0671686909,9780671686901,eng,64,367,38,9/30/1990,Simon & Schuster Children's Publishing -2817,A Full House: An Austin Family Christmas (Austin Family #5.6),Madeleine L'Engle/Mary Chambers,3.98,0877880204,9780877880202,eng,48,235,4,3/7/2000,Shaw -2819,A Circle of Quiet (Crosswicks Journals #1),Madeleine L'Engle,4.21,0062545035,9780062545039,en-CA,246,5236,506,1/1/1984,HarperOne -2820,The Birth of Tragedy and Other Writings,Friedrich Nietzsche/Raymond Geuss/Ronald Speirs,4.04,0521639875,9780521639873,eng,204,388,23,4/22/1999,Cambridge University Press -2821,The Birth of Tragedy/The Genealogy of Morals,Friedrich Nietzsche/Francis Golffing,4.01,0385092105,9780385092104,en-US,320,843,42,5/7/1990,Anchor -2822,The Birth of Tragedy,Friedrich Nietzsche,3.98,1419154079,9781419154072,eng,84,32,0,6/17/2004,Kessinger Publishing -2823,The Birth of Tragedy,Friedrich Nietzsche/Michael Tanner/Shaun Whiteside,3.98,0140433392,9780140433395,en-US,160,10147,301,11/27/2003,Penguin Classics -2826,Birth Of A Tragedy: Kashmir 1947,Alastair Lamb,4.00,0907129072,9780907129073,eng,179,9,2,3/14/2008,Roxford Books -2834,The Tragedy of Pudd'nhead Wilson/Those Extraordinary Twins,Mark Twain/David Lionel Smith/Sherley Anne Williams,3.79,0195114159,9780195114157,eng,512,3664,58,3/6/1997,Oxford University Press USA -2835,The Tragedy of Pudd'nhead Wilson,Mark Twain/Michael Prichard,3.79,140015068X,9781400150687,eng,0,3,0,1/1/2003,Tantor Media -2836,Bridge to Terabithia,Katherine Paterson/Donna Diamond,4.00,0060734019,9780060734015,en-US,191,1811,152,7/1/2008,HarperTeen -2843,Literature Circle Guide: Bridge to Terabithia: Everything You Need For Successful Literature Circles That Get Kids Thinking Talking Writing—and Loving Literature,Tara MacCarthy,5.00,0439271711,9780439271714,eng,32,4,1,1/1/2002,Teaching Resources -2847,Bread and Roses Too,Katherine Paterson,3.76,0618654798,9780618654796,eng,275,2018,294,9/4/2006,Clarion Books -2851,The Invisible Child,Katherine Paterson,4.27,0525464824,9780525464822,eng,266,99,27,12/31/2001,Dutton Juvenile -2855,A Short History of Decay,Emil M. Cioran/Richard Howard,4.25,1559704640,9781559704649,eng,186,1771,99,9/15/1998,Arcade Publishing -2860,Scholar of Decay (Ravenloft #14),Tanya Huff,3.46,078690206X,9780786902064,eng,313,38,1,5/1/2000,TSR -2864,Girl with a Pearl Earring,Tracy Chevalier,3.88,0452284937,9780452284937,eng,233,1162,127,9/30/2003,Plume Books -2868,The Golden Tulip,Rosalind Laker,3.94,0385415605,9780385415606,eng,585,29,4,9/1/1991,Doubleday -2871,Burning Bright,Tracy Chevalier,3.36,052594978X,9780525949787,eng,320,10919,1113,3/20/2007,Dutton -2872,Falling Angels,Tracy Chevalier,3.58,0452283205,9780452283206,eng,336,20321,1214,9/24/2002,Penguin Books -2873,The Virgin Blue,Tracy Chevalier,3.66,0452284449,9780452284449,eng,304,26029,1588,6/24/2003,Penguin Books -2875,Wenn Engel fallen,Tracy Chevalier,3.58,3471772537,9783471772539,ger,384,6,1,2/1/2002,List -2877,Tom Hunter: Living in Hell and Other Stories,Tom Hunter/Tracy Chevalier/Colin Wiggins,3.64,1857093313,9781857093315,en-GB,80,42,0,3/8/2006,National Gallery London -2879,Bleach Volume 15,Tite Kubo,4.42,1421506130,9781421506135,eng,208,19945,76,10/3/2006,VIZ Media LLC -2880,Bleach Volume 01,Tite Kubo,4.22,1591164419,9781591164418,eng,200,140403,1063,5/19/2004,VIZ Media LLC -2881,Bleach Volume 14,Tite Kubo,4.38,1421506122,9781421506128,eng,208,10356,79,8/1/2006,VIZ Media LLC -2882,Bleach Volume 11,Tite Kubo,4.36,1421502712,9781421502717,eng,208,8773,84,2/7/2006,VIZ Media LLC -2883,Bleach Volume 12,Tite Kubo,4.36,1421504030,9781421504032,eng,208,8948,86,4/4/2006,VIZ Media LLC -2885,DEATH NOTE デスノート 1,Tsugumi Ohba/Takeshi Obata/大場 つぐみ/小畑 健,4.43,4088736214,9784088736211,jpn,195,227,38,4/2/2004,集英社 -2886,Death Note Vol. 4: 恋心 (Death Note #4),Tsugumi Ohba/Takeshi Obata,4.39,4088736710,9784088736716,jpn,204,452,13,11/11/2004,Shueisha -2887,Death Note Vol. 3: 激走 (Death Note #3),Tsugumi Ohba/Takeshi Obata,4.43,4088736524,9784088736525,jpn,194,400,11,9/3/2004,Shueisha -2893,Love Artist (Harlequin Romance #2860),Valerie Parv,3.25,0373028601,9780373028603,eng,187,3,1,7/24/1987,Harlequin Romance -2895,Perfume: The Story of a Murderer,Patrick Süskind/John E. Woods,4.02,0307277763,9780307277763,eng,255,1124,191,2/13/2001,Vintage International -2896,Das Parfum. Die Geschichte eines Mörders,Patrick Süskind,4.02,3257228007,9783257228007,ger,321,9674,343,6/1/1994,Diogenes -2898,Three Stories and a Reflection,Patrick Süskind,3.57,0747534934,9780747534938,eng,128,24,3,11/13/1997,Bloomsbury Publishing PLC -2899,The Pigeon,Patrick Süskind,3.68,0140105832,9780140105834,eng,77,6254,423,6/29/1989,Penguin -2900,The Story of Mr Sommer,Patrick Süskind/Jean-Jacques Sempé,3.84,0747566755,9780747566755,eng,128,2061,104,11/3/2003,Not Avail -2906,Bleach―ブリーチ― 1 [Burīchi 1] (Bleach #1),Tite Kubo,4.22,4088732138,9784088732138,jpn,189,41,3,1/5/2002,Shueisha -2907,Bleach Tome 1: The Death and the Strawberry,Tite Kubo,4.22,2723442276,9782723442275,fre,192,54,4,7/2/2003,Glénat -2912,Escape from Fire Mountain (World of Adventure #3),Gary Paulsen/Steve Chorney,3.67,0440410258,9780440410256,eng,80,114,17,1/1/1995,Yearling -2917,How Angel Peterson Got His Name,Gary Paulsen,3.93,0440229359,9780440229353,eng,111,1177,218,8/10/2004,Yearling -2920,Tucket's Travels: Francis Tucket's Adventures In The West 1847-1849 (The Tucket Adventures #1-5),Gary Paulsen,4.44,0440419670,9780440419679,en-US,560,557,46,9/9/2003,Yearling -2921,Chicago Blues: The City and the Music,Mike Rowe/Ronald Radano,3.92,0306801450,9780306801457,eng,226,25,2,8/22/1981,Da Capo Press -2923,Winterdance: The Fine Madness of Running the Iditarod,Gary Paulsen,4.26,0156001454,9780156001458,eng,272,5437,830,2/17/1995,Mariner Books -2928,Brian's Winter,Gary Paulsen,4.01,0385321988,9780385321983,en-US,133,76,12,1/1/1996,Delacorte Books for Young Readers -2932,Robinson Crusoe (Robinson Crusoe #1),Daniel Defoe/Virginia Woolf,3.67,0375757325,9780375757327,eng,320,209122,4131,6/12/2001,Modern Library -2933,Robinson Crusoe,Daniel Defoe/John J. Richetti,3.67,0141439823,9780141439822,eng,286,1507,142,3/27/2003,Penguin Classics -2934,Robinson Crusoe,Daniel Defoe/Michael Shinagel,3.67,0393964523,9780393964523,en-US,436,585,63,12/19/1994,W.W. Norton & Company -2937,Robinson Crusoe,Daniel Defoe/Avi,3.67,0689844085,9780689844089,eng,482,204,32,7/1/2001,Aladdin -2940,Robinson Crusoe,Daniel Defoe,3.67,1587263882,9781587263880,eng,288,311,18,7/14/2006,Ann Arbor Media -2942,A General History of the Pyrates,Daniel Defoe/Manuel Schonhorn/Charles Johnson,3.72,0486404889,9780486404882,eng,733,577,36,1/26/1999,Dover Publications -2949,Huck Finn & Tom Sawyer among the Indians & Other Unfinished Stories (Mark Twain Library),Mark Twain/Paul Baender/Dahlia Armon/Walter Blair,3.85,0520238958,9780520238954,eng,389,5,0,3/15/2003,University of California Press -2952,Huck Finn and Tom Sawyer Among the Indians,Mark Twain/Lee Nelson,3.57,1555176801,9781555176808,eng,277,242,29,4/22/2003,Council Press -2953,Huck Finn/Pudd'nhead Wilson/No 44 Mysterious Stranger other Writings,Mark Twain/Guy Cardwell/Louis J. Budd,4.06,1883011884,9781883011888,en-US,808,33,3,8/1/2000,Library of America -2956,The Adventures of Huckleberry Finn (Adventures of Tom and Huck #2),Mark Twain/Guy Cardwell/John Seelye/Walter Trier,3.82,0142437174,9780142437179,eng,327,1049912,11391,12/31/2002,Penguin Classics -2958,Adventures of Huckleberry Finn,Mark Twain/E.W. Kemble,3.82,0486443221,9780486443225,eng,368,144,17,5/6/2005,Dover Publications -2960,Adventures of Huckleberry Finn,Mark Twain/George Saunders,3.82,0375757376,9780375757372,eng,244,687,37,8/14/2001,The Modern Library -2962,The Annotated Huckleberry Finn,Mark Twain/Michael Patrick Hearn/E.W. Kemble,3.82,0393020398,9780393020397,eng,656,185,18,10/17/2001,W. W. Norton Company -2965,The Wit and Wisdom of Mark Twain,Mark Twain,4.20,0486406644,9780486406640,eng,64,970,53,12/23/1998,Dover Publications -2967,Mark Twain's Helpful Hints for Good Living: A Handbook for the Damned Human Race,Mark Twain/Lin Salamo/Victor Fischer/Michael B. Frank,3.86,0520242459,9780520242456,eng,221,513,71,10/18/2004,University of California Press -2968,The Complete Short Stories of Mark Twain,Mark Twain/Charles Neider,4.28,0553211951,9780553211955,eng,848,5710,142,3/1/1984,Bantam Classics -2971,The Autobiography of Mark Twain,Mark Twain/Charles Neider,4.05,0060955422,9780060955427,eng,508,2871,209,11/28/2000,Harper Perennial -2973,Collected Tales Sketches Speeches & Essays 1891–1910,Mark Twain/Louis J. Budd,4.39,0940450739,9780940450738,eng,1050,207,10,10/15/1992,Library of America -2978,Lost Horizon,James Hilton,3.92,0060594527,9780060594527,eng,241,11892,955,6/15/2004,Harper Perennial -2988,Louisa May Alcott's Christmas Treasury,Louisa May Alcott/C. Michael Dudash/Stephen W. Hines,3.96,1589199502,9781589199507,eng,282,715,44,6/1/2002,David C Cook -2997,My Secret Garden: Women's Sexual Fantasies,Nancy Friday,3.68,0671019872,9780671019877,eng,361,1817,123,10/28/2003,Pocket Books -2998,The Secret Garden,Frances Hodgson Burnett,4.13,0517189607,9780517189603,eng,331,764134,11796,9/1/1998,Children's Classics -3003,The Secret Garden,Frances Hodgson Burnett/Sandra M. Gilbert,4.13,0451528832,9780451528834,eng,281,1739,116,7/1/2003,Signet -3004,The Secret Garden,Martha Hailey DuBose/Frances Hodgson Burnett/Lucy Corvino/Arthur Pober,4.33,1402713193,9781402713194,eng,160,1653,76,3/1/2005,Sterling -3006,The Secret Garden,Frances Hodgson Burnett/Alison Lurie,4.13,0142437050,9780142437056,en-GB,288,517,13,1/30/2003,Penguin Classics -3008,A Little Princess,Frances Hodgson Burnett/Nancy Bond,4.20,0142437018,9780142437018,eng,242,238192,4392,2/26/2002,Penguin Books -3011,Waiting for the Party: The Life of Frances Hodgson Burnett 1849-1924,Ann Thwaite,3.80,0879237902,9780879237905,eng,274,23,7,9/1/1994,David R. Godine Publisher -3014,The Secret Garden Cookbook: Recipes Inspired by Frances Hodgson Burnett's The Secret Garden,Amy Cotler/Frances Hodgson Burnett/Prudence See,4.30,0060277408,9780060277406,eng,128,150,23,3/19/1999,Festival -3023,Basic Economics: A Citizen's Guide to the Economy,Thomas Sowell,4.32,0465081452,9780465081455,eng,448,5899,475,12/24/2003,Basic Books -3025,Basic Economics: A Common Sense Guide to the Economy,Thomas Sowell,4.32,0465002609,9780465002603,eng,627,328,43,4/3/2007,Basic Books (AZ) -3040,Black Rednecks and White Liberals,Thomas Sowell,4.38,1594030863,9781594030864,eng,372,2579,301,6/1/2005,Encounter Books -3041,Applied Economics: Thinking Beyond Stage One,Thomas Sowell,4.14,0465081436,9780465081431,eng,256,1546,122,11/13/2003,Basic Books -3042,Knowledge And Decisions,Thomas Sowell,4.39,0465037380,9780465037384,eng,422,766,47,10/4/1996,Basic Books -3047,A Conflict of Visions: Ideological Origins of Political Struggles,Thomas Sowell,4.31,0465081428,9780465081424,eng,304,1797,166,1/3/2002,Basic Books -3051,Sir Gawain and the Green Knight,Selina Shirley Hastings/Juan Wijngaard,3.91,0744520053,9780744520057,eng,29,65,9,6/27/1991,Walker Books Ltd -3053,Alcoholics Anonymous,Alcoholics Anonymous,4.45,0916856593,9780916856595,eng,250,22,0,8/1/1993,Alcoholics Anonymous World Services Inc -3055,Alcoholics Anonymous,Alcoholics Anonymous,4.45,1893007162,9781893007161,en-US,576,495,30,2/10/2002,AA World Services -3056,The Twelve Steps & Twelve Traditions of Overeaters Anonymous,Overeaters Anonymous,4.36,0960989862,9780960989867,en-US,221,213,10,1/1/1993,Overeaters Anonymous Incorporated -3061,The Natural Way to Draw,Kimon Nicolaides/Mamie Harmon,3.90,0395530075,9780395530078,en-US,240,39369,80,2/1/1990,Mariner Books -3065,Natural Health Natural Medicine,Andrew Weil,4.11,0618479031,9780618479030,en-US,448,580,41,12/9/2004,Mariner Books -3066,The Fixer,Bernard Malamud/Jonathan Safran Foer,3.96,0374529388,9780374529383,eng,335,8624,409,5/5/2004,Farrar Straus and Giroux -3067,The Complete Stories,Bernard Malamud/Robert Giroux,4.22,0374525757,9780374525750,en-US,656,712,51,10/12/1998,Farrar Straus and Giroux -3068,The Assistant,Bernard Malamud/Jonathan Rosen,3.89,0374504849,9780374504847,en-US,246,8073,319,7/7/2003,Farrar Straus and Giroux -3070,Conversations with Bernard Malamud (Literary Conversations),Lawrence M. Lasher,4.00,0878054901,9780878054909,eng,184,4,0,3/1/1991,University Press of Mississippi -3072,The Tenants,Bernard Malamud/Aleksandar Hemon,3.65,0374521026,9780374521028,eng,248,662,50,9/18/2003,Farrar Straus and Giroux -3075,Enchanted April: Acting Edition,Matthew Barber/Elizabeth von Arnim,3.61,0822219751,9780822219750,eng,73,67,6,4/7/2004,Dramatists Play Service -3084,April May und June,Elizabeth von Arnim,3.88,345833422X,9783458334224,ger,88,0,0,4/1/1995,Insel Frankfurt -3087,A Room with a View,E.M. Forster,3.91,1420925431,9781420925432,eng,119,128596,3422,1/1/2005,Digireads.com -3088,A Room with a View / Howards End,E.M. Forster/Benjamin DeMott,4.10,0451521412,9780451521415,eng,449,2450,113,2/4/1986,Signet -3100,E.M. Forster: Critical Guidebook,Lionel Trilling/E.M. Forster,3.51,0811202100,9780811202107,eng,208,6,0,1/17/1971,New Directions -3101,The Longest Journey,E.M. Forster/Gilbert Adair/Elizabeth Heine,3.48,0141441488,9780141441481,eng,396,1665,125,7/27/2006,Penguin Classics -3102,Howards End,E.M. Forster,3.96,0486424545,9780486424545,eng,246,54765,1437,10/29/2002,Dover Publications -3103,Maurice,E.M. Forster,4.03,0393310329,9780393310320,eng,256,21997,1005,12/17/2005,W. W. Norton Company -3104,E. M. Forster: A Life,P.N. Furbank,4.14,0156286513,9780156286510,eng,648,141,11,5/2/1994,Mariner Books -3105,Howards End,E.M. Forster,3.96,0141183357,9780141183350,eng,352,368,26,9/28/2000,Penguin Books -3107,The Sixteen Pleasures,Robert Hellenga,3.59,0385314698,9780385314695,eng,384,2699,336,5/1/1995,Delta -3113,Revolutionary Characters: What Made the Founders Different,Gordon S. Wood,3.97,1594200939,9781594200939,eng,336,3259,187,5/18/2006,Penguin Press HC The -3117,The Rescue (Kidnapped #3),Gordon Korman,4.11,0439847796,9780439847797,eng,140,1864,117,9/1/2006,Scholastic Books -3119,Hunting the Hunter (On the Run #6),Gordon Korman,4.21,0439651417,9780439651417,eng,151,1928,85,2/1/2006,Scholastic -3120,Public Enemies (On The Run #5),Gordon Korman,4.19,0439651409,9780439651400,eng,150,2050,76,12/1/2005,Scholastic -3130,Runaway Bride,Deborah Gordon,4.25,0380777584,9780380777587,eng,390,8,0,9/28/1994,Avon -3142,The Bridge over the Drina,Ivo Andrić/William H. McNeill,4.33,1860460585,9781860460586,eng,314,254,35,4/5/1995,The Harvill Press -3144,Drina Dances in Paris,Jean Estoril,4.16,0750000333,9780750000338,eng,194,14,4,4/1/1991,Simon and Schuster -3145,Drina Ballerina,Jean Estoril,4.16,0750005947,9780750005944,eng,188,8,1,1/17/1991,Hodder -3147,Le Pont sur la Drina,Ivo Andrić/Pascale Delpech,4.33,225393321X,9782253933212,fre,384,69,10,7/5/1999,Livre de Poche -3152,Drina Dances in Italy,Jean Estoril,4.08,0750012633,9780750012638,eng,191,21,0,8/31/1992,Hodder -3155,Drina Goes on Tour,Jean Estoril/Mabel Esther Allan,4.26,0750002468,9780750002462,eng,188,112,7,10/20/1991,Simon and Schuster -3156,Drina Dances in Madeira,Jean Estoril/Mabel Esther Allan,4.09,0750002425,9780750002424,eng,164,139,6,2/6/1991,Simon and Schuster -3167,Phaedrus/Apology/Crito/Symposium,Plato/Benjamin Jowett,3.00,1420926845,9781420926842,en-US,144,19,0,1/1/2006,Digireads.com -3207,The Dialogues of Plato Volume 1: Euthyphro Apology Crito Meno Gorgias Menexenus,Plato/Reginald E. Allen,4.17,0300044887,9780300044881,eng,352,114,11,9/10/1989,Yale University Press -3231,Gorgias/Timaeus,Plato/Benjamin Jowett,3.74,0486427595,9780486427591,eng,256,34,5,7/15/2003,Dover Publications -3232,Minor Works: On Colours/On Things Heard/Physiognomics/On Plants/On Marvellous Things Heard/Mechanical Problems/On Indivisible Lines/The...Gorgias,Aristotle/W.S. Hett,4.57,0674993381,9780674993389,grc,528,14,0,6/28/1963,Loeb Classical Library 307 -3248,Aristophanes I: Clouds/Wasps/Birds,Aristophanes/Peter Meineck/Ian C. Storey,3.77,0872203603,9780872203600,eng,480,100,9,9/1/1998,Hackett Publishing Company Inc. (USA) -3254,The Trojan Women,Euripides/Gilbert Murray,3.89,1420927329,9781420927320,eng,80,4577,126,1/1/2006,Digireads.com -3258,Greek Tragedies Volume 2,David Grene/Richmond Lattimore/Aeschylus/Sophocles/Euripides,4.29,0226307751,9780226307756,eng,304,327,12,2/15/1960,University Of Chicago Press -3273,Moloka'i (Moloka'i #1),Alan Brennert,4.17,0312304358,9780312304355,eng,405,91395,8192,10/4/2004,St. Martin's Griffin -3280,Teaching with the Brain in Mind,Eric Jensen,4.11,1416600302,9781416600305,eng,186,592,49,6/15/2005,Association for Supervision & Curriculum Development -3283,Introducing Mind and Brain (Introducing...),Angus Gellatly/Oscar Zárate/Richard Appignanesi,3.54,1840466383,9781840466386,en-GB,176,26,1,5/10/2001,Totem Books -3290,Eva Luna,Isabel Allende/Margaret Sayers Peden,3.97,0553383825,9780553383829,eng,320,430,23,8/30/2005,Dial Press -3291,The Stories of Eva Luna,Isabel Allende,3.97,0743217187,9780743217187,eng,352,12839,375,11/13/2001,Scribner -3293,Diez Cuentos de Eva Luna Con Guia de Comprension y Repaso de Gramatica,Isabel Allende/Richard D. Woods/Kenneth M. Taggart,3.97,007001356X,9780070013568,eng,256,10,1,12/1/1994,McGraw-Hill Humanities/Social Sciences/Languages -3298,El bosque de los pigmeos,Isabel Allende,3.77,0060816198,9780060816193,spa,304,1099,46,9/6/2005,HarperCollins Espanol -3300,Inés of My Soul,Isabel Allende/Margaret Sayers Peden,3.93,0061161535,9780061161537,eng,321,15345,1075,11/7/2006,Harper -3301,La casa de los espíritus,Isabel Allende,4.23,0060951303,9780060951306,spa,454,608,38,9/18/2001,HarperCollins Espanol -3302,El plan infinito,Isabel Allende,3.72,0060951273,9780060951276,spa,336,514,33,5/14/2002,Harper Perennial -3303,El reino del dragón de oro,Isabel Allende,3.84,0060591714,9780060591717,spa,432,1189,51,9/7/2004,HarperCollins Espanol -3304,City of the Beasts (Eagle and Jaguar #1),Isabel Allende/Margaret Sayers Peden,3.71,0060535032,9780060535032,eng,408,17962,778,4/27/2004,Rayo -3311,Self,Yann Martel,3.43,0571219764,9780571219766,eng,331,2359,146,4/7/2003,Faber Faber -3316,Die Brücke über die Drina,Ivo Andrić/Ernst E. Jonas,4.33,3518399608,9783518399606,ger,407,9,0,3/1/2003,Suhrkamp -3325,Drina Dances in Switzerland,Jean Estoril/Jenny Sanders,4.02,0750002441,9780750002448,eng,188,13,1,8/23/1993,Hodder Children's Books -3340,The Story of Salt,Mark Kurlansky/S.D. Schindler,4.08,0399239987,9780399239984,eng,48,382,85,9/7/2006,G.P. Putnam's Sons Books for Young Readers -3341,Nonviolence: Twenty-Five Lessons from the History of a Dangerous Idea,Mark Kurlansky/Dalai Lama XIV,4.00,0679643354,9780679643357,eng,203,768,96,9/12/2006,Modern Library -3343,Boogaloo on 2nd Avenue,Mark Kurlansky,3.17,0345448197,9780345448194,eng,319,191,26,2/28/2006,Random House Trade -3344,Cod: A Biography of the Fish That Changed the World,Mark Kurlansky,3.91,0140275010,9780140275018,eng,294,970,104,7/1/1998,Penguin Books -3345,1968: The Year That Rocked the World,Mark Kurlansky,3.78,0345455827,9780345455826,eng,480,2046,248,1/11/2005,Random House Trade Paperbacks -3346,A Chosen Few: The Resurrection of European Jewry (Reader's Circle),Mark Kurlansky,3.87,0345448146,9780345448149,eng,456,51,2,3/26/2002,Ballantine Books -3347,The Basque History of the World: The Story of a Nation,Mark Kurlansky,3.85,0140298517,9780140298512,eng,400,3457,329,2/1/2001,Penguin Books -3348,The Cod's Tale,Mark Kurlansky/S.D. Schindler,3.91,0399234764,9780399234767,eng,48,127,25,9/10/2001,G.P. Putnam's Sons Books for Young Readers -3351,Open City 6: The Only Woman He Ever Left,Open City Magazine/James Purdy/Daniel Pinchbeck/Michael Cunningham/Deborah Garrison/Rem Koolhaas/Rick Moody/Strawberry Saroyan/Debra Garrison,0.00,189044717X,9781890447175,eng,200,0,0,10/13/2000,Grove Press Open City Books -3357,Harry Potter Y La Piedra Filosofal (Harry Potter #1),J.K. Rowling,4.47,0613359607,9780613359603,spa,254,142,12,3/6/2001,Turtleback Books -3359,Angle of Repose,Wallace Stegner/Jackson J. Benson,4.27,0141185473,9780141185477,eng,557,856,146,12/1/2000,Penguin Classics -3368,Don't Make Me Think: A Common Sense Approach to Web Usability,Steve Krug,4.25,0321344758,9780321344755,en-US,201,7736,641,8/28/2005,New Riders Publishing -3384,Girlfriend in a Coma,Douglas Coupland,3.62,0060987324,9780060987329,eng,288,15798,612,3/1/1999,ReganBooks -3388,Corelli's Mandolin,Louis de Bernières,3.98,067976397X,9780679763970,eng,437,62954,1791,8/29/1995,Vintage -3402,Kiffe Kiffe Tomorrow,Faïza Guène/Sarah Adams,3.40,0156030489,9780156030489,eng,179,1084,131,7/3/2006,Mariner Books -3403,Our Kind of People: Inside America's Black Upper Class,Lawrence Otis Graham,3.72,0060984384,9780060984380,en-US,406,1170,117,12/22/1999,Harper Perennial -3404,The Senator and the Socialite: The True Story of America's First Black Dynasty,Lawrence Otis Graham,3.95,0060184124,9780060184124,eng,480,138,29,6/27/2006,Harper -3409,Temptations,Otis Williams/Patricia Romanowski,4.19,0815412185,9780815412182,eng,304,99,16,6/25/2002,Cooper Square Press -3413,The Thorn Birds,Colleen McCullough,4.23,0060837551,9780060837556,eng,673,533,66,9/6/2005,Avon Books -3416,Caesar (Masters of Rome #5),Colleen McCullough,4.37,0060510854,9780060510855,eng,928,5991,120,1/28/2003,Avon -3417,Caesar's Women (Masters of Rome #4),Colleen McCullough,4.25,0380710846,9780380710843,eng,943,5423,157,2/1/1997,Avon -3418,On Off (Carmine Delmonico #1),Colleen McCullough,3.52,0743286421,9780743286428,eng,372,1182,175,5/23/2006,Simon & Schuster -3419,Three Complete Novels: Tim/An Indecent Obsession/The Ladies of Missalonghi,Colleen McCullough,3.67,0517201666,9780517201664,en-US,768,39,7,2/14/1999,Wings -3420,Morgan's Run,Colleen McCullough,3.95,0671024183,9780671024185,eng,848,3478,191,1/1/2002,Pocket Books -3421,The October Horse: A Novel of Caesar and Cleopatra (Masters of Rome #6),Colleen McCullough,4.29,0671024205,9780671024208,eng,1110,4291,119,10/28/2003,Pocket Books -3422,The First Man in Rome (Masters of Rome #1),Colleen McCullough,4.11,068809368X,9780688093686,eng,896,311,49,9/28/1990,William Morrow & Company (NYC) -3424,The Grass Crown (Masters of Rome #2),Colleen McCullough,4.30,038071082X,9780380710829,eng,1104,9623,199,7/1/1992,Avon -3425,Tim,Colleen McCullough,3.81,0380711966,9780380711963,eng,288,153,17,11/1/1990,Avon -3426,O'Brien's the Things They Carried,Jill Colella/CliffsNotes,3.69,0764586688,9780764586682,eng,128,24,2,12/14/2000,Cliffs Notes -3431,The Five People You Meet in Heaven,Mitch Albom,3.93,1401308589,9781401308582,eng,196,520051,16562,9/23/2003,Hyperion -3437,The Curious Incident of the Dog in the Night-Time,Mark Haddon,3.88,0099450259,9780099450252,eng,272,16588,1606,4/15/2004,Vintage -3438,The Curious Incident of the Dog In the Night-time,Mark Haddon,3.88,0099456761,9780099456766,eng,268,6124,754,4/1/2004,Red Fox -3439,The Curious Incident of the Dog in the Night-time,Mark Haddon,3.88,0385662238,9780385662239,eng,240,34,6,3/28/2006,Doubleday Canada -3444,Northern Lights,Tim O'Brien,3.29,0767904419,9780767904414,eng,372,981,69,9/1/1999,Broadway Books -3445,If I Die in a Combat Zone Box Me Up and Ship Me Home,Tim O'Brien,3.95,0767904435,9780767904438,eng,225,7763,362,9/1/1999,Broadway Books -3446,Going After Cacciato,Tim O'Brien,3.91,0767904427,9780767904421,eng,351,10384,637,9/1/1999,Broadway/Crown Publishing Group -3447,In the Lake of the Woods,Tim O'Brien,3.78,061870986X,9780618709861,eng,303,14655,1211,9/1/2006,Mariner Books -3449,The Nuclear Age,Tim O'Brien,3.45,0140259104,9780140259100,eng,320,945,61,12/1/1996,Penguin Books -3462,The Rescue,Nicholas Sparks,4.11,0446696129,9780446696128,eng,352,154933,3141,4/1/2005,Grand Central Publishing -3463,A Bend in the Road,Nicholas Sparks,4.03,0446696137,9780446696135,eng,341,125693,3229,4/1/2005,Grand Central Publishing -3464,True Believer (Jeremy Marsh & Lexie Darnell #1),Nicholas Sparks,3.80,044669651X,9780446696517,eng,465,68228,2425,4/11/2006,Grand Central Publishing -3465,Three Weeks With My Brother,Nicholas Sparks/Micah Sparks,4.03,0446694851,9780446694858,eng,368,36784,2658,1/3/2006,Grand Central Publishing -3466,The Wedding (The Notebook #2),Nicholas Sparks,3.99,0446615862,9780446615860,eng,276,126629,5295,8/1/2005,Vision -3468,El Guardián,Nicholas Sparks/Ramón González Férriz,4.15,8496284530,9788496284531,spa,444,31,3,4/1/2005,Roca Editorial -3469,Nights in Rodanthe,Nicholas Sparks,3.84,0446691798,9780446691796,en-US,212,1596,157,8/1/2004,Warner Books -3471,Message in a Bottle,Nicholas Sparks,3.96,0446606812,9780446606813,en-GB,370,2755,218,2/1/1999,Grand Central Publishing -3473,A Walk to Remember,Nicholas Sparks,4.17,0446693804,9780446693806,eng,240,555995,10173,9/1/2004,Grand Central Publishing -3476,Icy Sparks,Gwyn Hyman Rubio,3.70,0142000205,9780142000205,eng,320,37936,1192,3/8/2001,Penguin Books -3478,Message in a Bottle,Nicholas Sparks,3.96,0446676071,9780446676076,eng,342,201488,3496,12/1/1999,Warner Books -3479,Sugarplums and Scandal (Love at Stake #2.5; Bed-and-Breakfast Mysteries #22.5),Lori Avocato/Dana Cameron/Mary Dahiem/Suzanne Macpherson/Cait London/Kerrelyn Sparks/Mary Daheim,3.98,0061136956,9780061136955,eng,327,1967,66,10/31/2006,Avon -3483,Special Topics in Calamity Physics,Marisha Pessl,3.71,067003777X,9780670037773,eng,514,32370,4212,8/3/2006,Penguin Books Ltd -3491,The Dictionary of Corporate Bullshit: An A to Z Lexicon of Empty Enraging and Just Plain Stupid Office Talk,Lois Beckwith,4.03,0767920740,9780767920742,eng,192,82,9,2/14/2006,Three Rivers Press -3493,On Truth,Harry G. Frankfurt/Baruch Spinoza,3.52,030726422X,9780307264220,en-US,112,790,99,10/31/2006,Knopf -3507,Twelve Sharp (Stephanie Plum #12),Janet Evanovich,4.15,0312349486,9780312349486,eng,310,81381,1925,6/20/2006,St. Martin's Press -3509,Sharp Edges,Jayne Ann Krentz,3.86,0671524097,9780671524098,eng,368,2792,73,7/27/2004,Pocket Star Books -3510,Mrs. Sharp's Traditions: Reviving Victorian Family Celebrations of Comfort & Joy,Sarah Ban Breathnach,4.08,074321076X,9780743210768,en-US,256,317,33,12/31/2001,Scribner Book Company -3513,The Sly Spy (Olivia Sharp Agent for Secrets #3),Marjorie Weinman Sharmat/Mitchell Sharmat/Denise Brunkus,3.85,0440420628,9780440420620,eng,74,51,7,6/14/2005,Yearling Books -3516,The Green Toenails Gang (Olivia Sharp Agent for Secrets #4),Marjorie Weinman Sharmat/Mitchell Sharmat/Denise Brunkus,3.77,0440420636,9780440420637,eng,72,41,7,7/12/2005,Yearling Books -3519,The Pizza Monster (Olivia Sharp Agent for Secrets #1),Marjorie Weinman Sharmat/Mitchell Sharmat/Denise Brunkus,3.54,0440420598,9780440420590,eng,80,56,7,5/10/2005,Yearling -3520,The Spy Who Barked (Adam Sharp #1),George E. Stanley,3.43,0307264122,9780307264121,eng,48,26,5,4/9/2002,Random House Books for Young Readers -3525,Kare First Love Vol. 9 (Kare First Love #9),Kaho Miyasaka,4.06,1421505479,9781421505473,eng,208,612,8,9/12/2006,VIZ Media LLC -3529,The World's First Love: Mary Mother of God,Fulton J. Sheen,4.59,0898705975,0008987059752,en-US,276,641,63,9/1/1996,Ignatius Press -3530,Kare First Love Vol. 10 (Kare First Love #10),Kaho Miyasaka,4.09,1421505487,9781421505480,eng,208,715,18,12/12/2006,VIZ Media LLC -3531,The Tutor's First Love,George MacDonald/Michael R. Phillips,4.08,087123596X,9780871235961,eng,238,364,21,7/1/2000,Bethany House Publishers -3532,First Love,Ivan Turgenev/Constance Garnett,3.78,0974607894,9780974607894,eng,124,5856,310,9/1/2004,Melville House Publishing -3536,Love @ First Site,Jane Moore,3.41,0767916913,9780767916912,en-US,368,910,74,5/9/2006,Broadway Books -3545,First Love Second Chance,Amanda Clark,3.73,0373706405,9780373706402,eng,304,13,2,2/22/1995,Harlequin Superromance -3554,The Modern Prince: Charles J. Haughey and the Quest for Power,Justin O'Brien,3.50,1903582415,9781903582411,eng,212,4,0,4/28/2003,Merlin Publishing -3557,The Modern Prince and Other Writings,Antonio Gramsci,3.89,0717801330,9780717801336,eng,192,118,9,10/1/1959,International Publishers -3562,Emily of New Moon (Emily #1),L.M. Montgomery,4.10,055323370X,9780553233704,eng,339,38411,1366,4/1/1983,Dell Laurel-Leaf -3564,The Selected Journals Of L.M. Montgomery Vol. 5: 1935-1942,L.M. Montgomery/Mary Henley Rubio/Elizabeth Hillman Waterston,4.24,0195421167,9780195421163,eng,410,184,22,11/4/2004,Oxford University Press USA -3566,Against the Odds: Tales of Achievement,L.M. Montgomery/Rea Wilmshurst,3.83,0553565923,9780553565928,en-US,246,928,27,11/1/1994,Bantam Starfire -3574,Anne of Avonlea,L.M. Montgomery/Susan O'Malley,4.23,0786180307,9780786180301,eng,8,63,8,12/1/1998,Blackstone Audiobooks -3577,A Tangled Web,L.M. Montgomery,3.88,0770422454,9780770422455,eng,288,3760,248,8/1/1989,Seal Books -3579,The Complete Anne of Green Gables Boxed Set (Anne of Green Gables #1-8),L.M. Montgomery,4.43,0553609416,0076783609419,eng,2088,98611,1447,10/6/1998,Starfire -3580,Pat of Silver Bush (Pat #1),L.M. Montgomery,3.90,0770422470,9780770422479,eng,288,6082,188,6/1/1988,Seal Books -3581,Sherlock Holmes: The Complete Novels and Stories Volume I,Arthur Conan Doyle,4.47,0553212419,9780553212419,eng,1059,24087,554,8/26/1986,Bantam Classics -3582,The New Annotated Sherlock Holmes: The Complete Short Stories,Arthur Conan Doyle/Leslie S. Klinger,4.64,0393059162,9780393059168,eng,1878,1411,54,11/30/2004,W. W. Norton & Company -3583,The New Annotated Sherlock Holmes: The Novels,Arthur Conan Doyle/Leslie S. Klinger,4.53,039305800X,9780393058000,eng,907,2203,32,11/7/2005,W. W. Norton & Company -3584,The Science of Sherlock Holmes: From Baskerville Hall to the Valley of Fear the Real Forensics Behind the Great Detective's Greatest Cases,E.J. Wagner,4.22,0471648795,9780471648796,eng,244,2037,71,3/1/2006,Wiley -3585,Sherlock Holmes: A Baker Street Dozen,Arthur Conan Doyle/John Gielgud/Ralph Richardson/Orson Welles,3.96,1598870297,9781598870299,eng,6,18,4,4/20/2006,HighBridge Company -3587,Sherlock Holmes: The Unauthorized Biography,Nick Rennison,4.26,0871139472,9780871139474,eng,304,29,6,10/11/2006,Atlantic Monthly Press -3593,Murder by Moonlight & Other Mysteries (New Adventures of Sherlock Holmes 19-24),NOT A BOOK,4.00,0743564677,9780743564670,eng,0,7,2,10/3/2006,Simon Schuster Audio -3595,The Mysteries of Sherlock Holmes,Arthur Conan Doyle/Paul Bachem,4.18,0448409577,9780448409573,eng,218,119,8,10/15/1996,Grosset & Dunlap -3597,The Complete Adventures and Memoirs of Sherlock Holmes,Arthur Conan Doyle,4.33,0517174960,9780517174968,eng,334,2184,87,7/1/2001,Gramercy Books -3599,The Unfortunate Tobacconist & Other Mysteries (Sherlock Holmes 1-6),NOT A BOOK,3.50,074353395X,9780743533959,eng,0,12,1,10/1/2003,Simon & Schuster Audio -3603,Personal Finance For Dummies,Eric Tyson,3.77,0470038322,9780470038321,en-GB,458,114,15,10/1/2006,For Dummies -3604,Personal Finance for Dummies,Eric Tyson/Rich Tennant,3.77,0764525905,9780764525902,eng,454,925,92,8/1/2003,John Wiley & Sons -3631,Catching Alice,Clare Naylor,3.38,0449005577,9780449005576,en-US,328,948,27,10/31/2000,Ballantine Books -3635,The Dream Giver,Bruce H. Wilkinson/David Kopp/Heather Harpham Kopp,4.26,159052201X,9781590522011,eng,157,5044,316,9/3/2003,Multnomah Books -3636,The Giver (The Giver #1),Lois Lowry,4.13,0385732554,9780385732550,eng,208,1585589,56604,1/24/2006,Ember -3638,The Wish Giver: Three Tales of Coven Tree,Bill Brittain/Andrew Glass,3.83,0064401685,9780064401685,eng,192,2201,218,4/2/2019,HarperCollins -3640,Indian Givers: How the Indians of the Americas Transformed the World,Jack Weatherford,4.11,0449904962,9780449904961,eng,288,1760,135,11/29/1989,Ballantine Books -3649,The Last Life,Claire Messud,3.56,0156011654,9780156011655,eng,400,1426,201,9/28/2000,Mariner Books -3650,The Hunters,Claire Messud,3.42,0330488155,9780330488150,eng,200,406,64,5/18/2003,Picador -3651,When the World Was Steady,Claire Messud,3.17,0964561107,9780964561106,eng,270,481,58,9/1/1995,Granta -3656,The Sea,John Banville,3.51,1400097029,9781400097029,eng,195,19308,1803,8/15/2006,Vintage -3657,The Sea,John Banville,3.51,0307263118,9780307263117,eng,195,586,103,12/7/2005,Alfred A. Knopf -3659,The Book of Evidence (The Freddie Montgomery Trilogy #1),John Banville,3.71,0375725237,9780375725234,eng,220,3202,278,6/12/2001,Vintage -3660,Athena (The Freddie Montgomery Trilogy #3),John Banville,3.66,0679736859,9780679736851,eng,240,387,29,5/28/1996,Vintage -3661,Doctor Copernicus (The Revolutions Trilogy #1),John Banville,3.65,0679737995,9780679737995,eng,242,583,60,10/12/1993,Vintage -3664,Shroud (The Cleave Trilogy #2),John Banville,3.66,037572530X,9780375725302,eng,257,974,81,6/8/2004,Vintage -3665,Ghosts,John Banville,3.61,0330371851,9780330371858,eng,244,33,3,12/17/1998,Picador -3679,On Beauty,Zadie Smith,3.73,0143037749,9780143037743,eng,445,53736,3657,8/29/2006,Penguin Books -3682,A Great and Terrible Beauty (Gemma Doyle #1),Libba Bray,3.79,0689875347,9780689875342,eng,403,189652,8207,12/9/2003,Simon and Schuster -3684,The Black Book of Hollywood Beauty Secrets,Kym Douglas/Cindy Pearlman,3.37,0452287650,9780452287655,en-US,224,130,16,12/1/2006,Plume Books -3685,Black Beauty,Anna Sewell,3.96,0439228905,9780439228909,eng,245,208684,3358,3/1/2003,Scholastic Paperbacks -3686,Truth and Beauty,Ann Patchett,3.94,0060572159,9780060572150,eng,257,31134,2662,4/5/2005,Harper Perennial -3687,The Life of Graham Greene Vol. 1: 1904-1939,Norman Sherry,4.11,0142004200,9780142004203,en-US,816,170,21,9/7/2004,Penguin Books -3688,Complete Short Stories,Graham Greene/Pico Iyer,4.17,0143039105,9780143039105,eng,594,1122,69,2/1/2005,Penguin Classics -3690,The Power and the Glory,Graham Greene/John Updike,4.00,0142437301,9780142437308,eng,222,25490,1585,2/25/2003,Penguin Books -3692,The Heart of the Matter,Graham Greene,3.99,0099478420,9780099478423,eng,272,21842,891,10/7/2004,Vintage Classics -3693,Orient Express,Graham Greene/Christopher Hitchens,3.46,0142437913,9780142437919,eng,197,2064,220,8/31/2004,Penguin Classics -3695,Journey Without Maps,Graham Greene/Paul Theroux,3.60,0143039725,9780143039723,eng,272,1139,70,6/27/2006,Penguin Classics -3698,The Quiet American,Graham Greene/Robert Stone,3.97,0143039024,9780143039020,eng,180,37620,2298,8/31/2004,Penguin Classics Deluxe Editions -3701,Collected Short Stories,Graham Greene,3.98,0140186123,9780140186123,eng,368,295,22,4/1/1993,Penguin Books -3705,The Third Man & The Fallen Idol,Graham Greene,3.77,014018533X,9780140185331,eng,157,1322,109,7/1/1992,Penguin Books Ltd -3707,The Tenth Man,Graham Greene,3.73,0671019090,9780671019099,eng,160,2910,220,2/1/1998,Washington Square Press -3710,The Autograph Man,Zadie Smith,3.16,037570387X,9780375703874,eng,347,9541,576,6/17/2003,Vintage -3711,White Teeth,Zadie Smith,3.77,0375703861,9780375703867,eng,448,102370,5677,6/12/2001,Vintage -3717,Stranger than Fiction,Chuck Palahniuk,3.57,0385722222,9780385722223,eng,233,18210,629,5/10/2005,Anchor -3731,Great Short Works of Herman Melville,Herman Melville/Warner Berthoff,4.04,0060586540,9780060586546,eng,512,424,13,3/2/2004,Harper Perennial Modern Classics -3732,Selected Poems of Herman Melville,Herman Melville/Robert Penn Warren,3.77,1567922694,9781567922691,eng,512,12,3,9/10/2004,David R. Godine Publisher -3733,Redburn / White-Jacket / Moby-Dick,Herman Melville/G. Thomas Tanselle,4.20,0940450097,9780940450097,eng,1436,1031,72,4/15/1983,Library of America -3734,Pierre / Israel Potter / The Piazza Tales / The Confidence-Man / Uncollected Prose / Billy Budd,Herman Melville/Harrison Hayford,4.18,0940450240,9780940450240,eng,1478,348,16,4/1/1985,Library of America -3736,Redburn,Herman Melville/Harold Beaver,3.62,0140431055,9780140431056,eng,448,545,53,8/26/1976,Penguin Classics -3738,Typee / Omoo / Mardi,Herman Melville/G. Thomas Tanselle,3.55,0940450003,9780940450004,eng,1333,644,26,5/6/1982,Library of America -3743,Harriet Spies Again (Harriet the Spy Adventures #1),Helen Ericson,3.84,0440416884,9780440416883,eng,256,1360,52,8/26/2003,Yearling -3744,Harriet the Spy Double Agent (Harriet the Spy Adventures),Maya Gold,3.80,0385327870,9780385327879,eng,160,1,0,9/13/2005,Delacorte Books for Young Readers -3750,Moonraker (James Bond #3),Ian Fleming,3.74,0142002062,9780142002063,eng,247,15204,780,12/31/2002,Penguin Books -3751,Moonraker's Bride,Madeleine Brent,4.31,0449235947,9780449235942,eng,319,55,13,6/12/1978,Fawcett -3754,Dr No / Moonraker / Thunderball / From Russia with Love / On Her Majesty's Secret Service / Goldfinger,Ian Fleming,3.98,0862731585,9780862731588,eng,862,0,0,1/1/1984,Heinemann-Octopus -3758,Casino Royale (James Bond #1),Ian Fleming,3.73,014200202X,9780142002025,eng,181,48961,2823,8/27/2002,Penguin -3759,Goldfinger (James Bond #7),Ian Fleming,3.80,0142002046,9780142002049,eng,264,16055,639,8/27/2002,Penguin Books -3762,On Her Majesty's Secret Service (James Bond #11),Ian Fleming,3.96,0142003255,9780142003251,eng,326,14108,428,9/2/2003,Penguin Books -3765,Octopussy & the Living Daylights (James Bond #14),Ian Fleming,3.55,0142003298,9780142003299,eng,120,5074,211,4/6/2004,Penguin Books -3768,Book of Sketches,Jack Kerouac/George Condo,3.80,0142002151,9780142002155,eng,432,572,43,4/4/2006,Penguin Books -3769,The Dharma Bums,Jack Kerouac,3.92,0141184884,9780141184883,en-GB,204,1361,77,8/3/2000,Penguin Books Ltd -3770,Book of Haikus,Jack Kerouac,3.91,1904634001,9781904634003,eng,200,25,5,3/2/2004,Enitharmon Press -3774,The Subterraneans,Jack Kerouac,3.68,0141184892,9780141184890,eng,192,426,42,9/6/2007,Penguin Books Ltd -3776,Ballet Shoes,Noel Streatfeild,4.07,1842552473,9781842552476,eng,184,210,26,12/23/2004,Orion Children's Books -3782,Theater Shoes (Shoes #4),Noel Streatfeild/Diane Goode,4.02,0679854347,9780679854340,eng,272,4461,158,11/15/1994,Yearling -3784,Movie Shoes (Shoes #6),Noel Streatfeild,4.00,0440458153,9780440458159,eng,239,1351,32,5/1/1984,Yearling Books -3787,Party Shoes (Shoes #5),Noel Streatfeild,3.64,0192752537,9780192752536,en-US,243,430,33,9/1/2002,Oxford University Press USA -3788,Thursday's Child (Margaret Thursday #1),Noel Streatfeild,3.98,0440486874,9780440486879,eng,256,1059,38,12/1/1985,Yearling -3797,Miss Happiness and Miss Flower,Rumer Godden/Gary Blythe,4.27,1405088567,9781405088565,eng,104,913,66,9/1/2006,MacMillan UK -3798,The River,Rumer Godden,3.95,0330489992,9780330489997,eng,128,377,54,4/16/2004,Pan -3799,The Dolls' House,Rumer Godden/Christian Birmingham,4.01,0330442554,9780330442558,eng,153,1410,73,11/3/2006,Macmillan -3801,China Court: The Hours of a Country House,Rumer Godden,3.97,0688117228,9780688117221,eng,358,516,77,12/31/1993,William Morrow & Company -3803,Rumer Godden,Anne Chisholm,3.82,0330367471,9780330367479,eng,335,9,5,6/11/1999,Pan -3805,The Corrections,Jonathan Franzen,3.79,1841156736,9781841156736,eng,653,133237,7468,9/2/2002,Fourth Estate Paperbacks -3806,Creative Correction: Extraordinary Ideas For Everyday Discipline,Lisa Whelchel/Stormie Omartian,3.93,1589971280,9781589971288,en-US,367,1094,87,3/31/2010,Thomas Nelson -3815,Original Sin (Adam Dalgliesh #9),P.D. James,3.91,0446679224,9780446679220,eng,511,6736,297,12/2/2005,Grand Central Publishing -3818,Original Sin: Illuminating the Riddle,Henri Blocher,3.68,083082605X,9780830826056,eng,158,64,16,10/2/2000,IVP Academic -3820,An Original Sin,Nina Bangs,3.75,0505523248,9780505523242,eng,394,369,16,7/1/1999,Love Spell -3822,Aliens: Original Sin,Michael Jan Friedman,3.71,1595820159,0761568107371,eng,256,247,18,10/26/2005,Dark Horse Books -3825,Death in Holy Orders (Adam Dalgliesh #11),P.D. James/Christa Seibicke,3.92,0345446666,9780345446664,eng,429,9847,516,3/26/2002,Fawcett Books -3826,The Lighthouse (Adam Dalgliesh #13),P.D. James,3.81,0307275736,9780307275738,eng,383,10651,711,10/10/2006,Vintage -3827,Unnatural Causes (Adam Dalgliesh #3),P.D. James,3.94,0571204104,9780571204106,eng,218,9258,330,5/20/2002,Penguin Books in association with Faber & Faber -3828,Death of an Expert Witness (Adam Dalgliesh #6),P.D. James,3.99,0571204201,9780571204205,eng,306,8045,265,5/20/2002,Gardners Books -3829,A Mind To Murder (Adam Dalgliesh #2),P.D. James,3.82,0571204155,9780571204151,eng,225,39,4,5/20/2002,Gardners Books -3830,A Taste for Death (Adam Dalgliesh #7),P.D. James,4.02,1400096472,9781400096473,eng,459,10304,374,11/8/2005,Vintage -3831,Time To Be In Earnest: A Fragment Of Autobiography,P.D. James,3.93,0345442121,9780345442123,eng,306,495,76,2/27/2001,Ballantine Books -3832,Cover Her Face (Adam Dalgliesh #1),P.D. James,3.93,0743219570,9780743219570,eng,250,26375,953,5/8/2001,Scribner -3833,The Black Tower (Adam Dalgliesh #5),P.D. James,4.00,0743219619,9780743219617,eng,352,13801,335,10/2/2001,Scribner -3834,Innocent Blood,P.D. James,3.68,0743219635,9780743219631,eng,400,3793,286,8/2/2001,Scribner -3835,Don Quixote,Miguel de Cervantes Saavedra/Edith Grossman/Harold Bloom,3.87,0060934344,9780060934347,eng,940,4956,705,4/26/2005,Ecco -3836,Don Quixote,Miguel de Cervantes Saavedra/John Rutherford/Roberto González Echevarría,3.87,0142437239,9780142437230,eng,1023,160911,4087,2/25/2003,Penguin Books -3837,Don Quixote,Miguel de Cervantes Saavedra/Walter Starkie,3.87,0451528905,9780451528902,en-US,544,71,5,6/3/2003,Signet Classics -3840,Don Quixote,Miguel de Cervantes Saavedra/Tobias Smollett/Carlos Fuentes,3.87,037575699X,9780375756993,eng,1168,393,40,4/10/2001,Modern Library -3841,Lectures on Don Quixote,Vladimir Nabokov/Fredson Bowers/Guy Davenport/Miguel de Cervantes Saavedra/Samuel Putnam,3.87,0156495406,9780156495400,eng,240,275,14,4/18/1984,Harcourt Brace Jovanovich -3842,Cliffs Notes on Cervantes' Don Quixote,Marianne Sturman,3.61,0822004151,9780822004158,eng,96,21,2,7/8/1964,Cliffs Notes -3848,Desert Heat (Joanna Brady #1),J.A. Jance,4.00,0727861158,9780727861153,eng,256,41,11,9/1/2004,Severn House Publishers -3849,Kentucky Heat,Fern Michaels,4.19,0821773682,9780821773680,eng,383,1869,46,9/1/2002,Zebra -3850,Heat Wave: A Social Autopsy of Disaster in Chicago,Eric Klinenberg,3.86,0226443221,9780226443225,eng,320,732,71,7/15/2003,University Of Chicago Press -3851,Texas Heat (Texas #2),Fern Michaels,4.18,0345449606,9780345449603,eng,496,2025,41,11/27/2001,Ballantine Books -3852,Primal Heat (Includes: Breeds #8.5; Devlin Dynasty #1; Moon Lust #1),Lora Leigh/Sherri L. King/Lorie O'Clare/Jaci Burton,4.13,1843607409,9781843607403,eng,196,3567,62,5/15/2004,Ellora's Cave -3853,Heat and Dust,Ruth Prawer Jhabvala,3.55,1582430152,9781582430157,eng,190,6214,270,4/16/1999,Counterpoint -3858,Holy Cow: An Indian Adventure,Sarah Macdonald,3.53,0767915747,9780767915748,eng,304,15315,1101,4/13/2004,Broadway Books -3859,Holy Cows and Hog Heaven: The Food Buyer's Guide to Farm Friendly Food,Joel Salatin/Michael Pollan,4.01,0963810944,9780963810946,eng,134,292,35,2/19/2005,Polyface -3867,The History of Love,Nicole Krauss,3.92,0393328627,9780393328622,eng,255,110082,9777,5/17/2006,Norton -3869,A Brief History of Time,Stephen Hawking,4.17,0553380168,9780553380163,eng,212,239652,5860,9/1/1998,Bantam Books -3870,A Short History of Nearly Everything,Bill Bryson,4.21,0767923227,9780767923224,eng,624,352,37,11/1/2005,Broadway Books -3871,The Politically Incorrect Guide to American History,Thomas E. Woods Jr.,4.03,0895260476,9780895260475,en-US,270,1604,153,11/1/2004,Regnery Publishing -3872,A History of the World in 6 Glasses,Tom Standage,3.76,0802715524,9780802715524,eng,336,14820,1686,5/16/2006,Bloomsbury -3873,A History of God: The 4 000-Year Quest of Judaism Christianity and Islam,Karen Armstrong,3.87,0517223120,9780517223123,eng,460,38915,1087,3/2/2004,Gramercy Books -3875,The Sun Also Rises,Ernest Hemingway/William Hurt,3.82,0743564413,9780743564410,eng,8,302,69,10/17/2006,Simon Schuster Audio -3886,The Bon Appetit Cookbook,Barbara Fairchild,4.07,0764596861,9780764596865,eng,816,1816,22,8/15/2006,Houghton Mifflin Harcourt -3895,The Barefoot Contessa Cookbook,Ina Garten/Melanie Acevedo,4.15,0609602195,9780609602195,eng,256,28789,177,4/6/1999,Clarkson Potter -3900,Into a Paris Quartier: Reine Margot's Chapel and Other Haunts of St. Germain,Diane Johnson,3.51,0792272668,9780792272663,eng,204,240,46,5/1/2005,National Geographic Society -3914,Sylvia,Leonard Michaels/Diane Johnson,3.86,0374271070,9780374271077,eng,129,807,95,5/29/2007,Farrar Straus and Giroux -3916,The Life Of Dashiell Hammett,Diane Johnson,3.73,070112766X,9780701127664,eng,344,4,0,1/23/1984,Vintage/Ebury (A Division of Random House Group) -3918,Divorcio a la Francesa: Le Divorce,Diane Johnson/Carlos Milla Soler/Roberto Fernandez Sastre,2.88,8420466557,9788420466552,spa,388,6,0,6/1/2003,Santillana USA Publishing Company -3921,London is the Best City in America,Laura Dave,3.45,0670037567,9780670037568,eng,256,2168,233,5/18/2006,Viking Adult -3938,Hyperion (Los Cantos de Hyperion #1),Dan Simmons/Carlos Alberto Gardini,4.24,8466617353,9788466617352,spa,618,174,14,6/1/2005,Ediciones B -3939,The Fall of Hyperion (Hyperion Cantos #2),Dan Simmons,4.20,0747236046,9780747236047,eng,632,237,15,2/20/1992,Headline Book Pub Ltd -3940,Supreme Power: Hyperion,J. Michael Straczynski/Dan Jurgens,3.45,0785118950,9780785118954,eng,120,232,9,7/19/2006,Marvel -3966,Die Hyperion-Gesänge,Dan Simmons/Joachim Körber,4.42,3453215281,9783453215283,ger,1456,141,11,8/1/2002,Heyne -3967,La Chute d'Hypérion II,Dan Simmons/Guy Abadia,4.20,2266111574,9782266111577,fre,347,21,1,12/26/2000,Pocket -3968,Endymion,Dan Simmons/Guy Abadia,4.17,2221089561,9782221089569,fre,572,29,1,12/14/1998,Robert Laffont -3972,Olympos (Ilium #2),Dan Simmons,3.94,0380817934,9780380817931,eng,891,13300,484,7/25/2006,Harper Voyager -3973,Ilium (Ilium #1),Dan Simmons,4.03,0380817926,9780380817924,eng,752,21973,905,6/28/2005,HarperTorch -3974,The Terror,Dan Simmons,4.07,0316017442,9780316017442,eng,769,31711,3317,1/8/2007,Little Brown and Company -3975,Worlds Enough & Time: Five Tales of Speculative Fiction,Dan Simmons,3.75,0060506040,9780060506049,eng,272,953,61,11/26/2002,Harper Voyager -3976,Hard Freeze (Joe Kurtz #2),Dan Simmons,3.84,0312989482,9780312989484,eng,320,734,44,9/15/2003,Minotaur Books -3977,Endymion (Hyperion Cantos #3),Dan Simmons,4.17,0553572946,9780553572940,eng,563,38357,1111,12/1/1996,Bantam Spectra -3978,A Winter Haunting (Seasons of Horror #2),Dan Simmons,3.60,0380817160,9780380817160,eng,371,6253,488,12/31/2002,HarperTorch -3985,The Amazing Adventures of Kavalier & Clay,Michael Chabon,4.18,0312282990,9780312282998,eng,639,165862,9143,8/25/2001,Picador USA -3986,The Amazing Adventures of the Escapist: Volume 1,Michael Chabon/Glen David Gold/Bill Sienkiewicz/Howard Chaykin/Gene Colan/Steve Lieber/Eric Wight/Kevin McCarthy,3.46,159307171X,9781593071714,eng,159,1097,105,5/18/2004,Dark Horse -3997,The Great House of God,Max Lucado,4.25,0849942985,9780849942983,eng,240,1101,58,10/31/2001,Thomas Nelson -4006,The Valkyries,Paulo Coelho/Alan R. Clarke,3.31,0722533942,9780722533949,eng,243,16483,685,9/6/1999,HarperTorch (an imprint of HarperCollins Publishers) -4008,The Devil and Miss Prym (On the Seventh Day #3),Paulo Coelho/Amanda Hopkinson/Nick Caistor,3.61,0060527994,9780060527990,eng,205,47673,2046,7/3/2006,HarperOne -4009,Nine Stories,J.D. Salinger,4.19,0316767727,9780316767729,eng,198,112779,2897,1/30/2001,Little Brown and Company -4014,The Sun Rises: and Other Questions About Time and Seasons,Brenda Walpole,3.94,0753459647,9780753459645,eng,32,50,6,9/15/2006,Kingfisher -4023,American Psycho,Bret Easton Ellis,3.82,033048477X,9780330484770,eng,399,844,76,4/21/2010,Picador -4031,Lunar Park,Bret Easton Ellis,3.70,0375727272,9780375727276,eng,404,24618,738,8/29/2006,Vintage -4035,The Burden of Proof (Kindle County Legal Thriller #2),Scott Turow,4.06,0446677124,9780446677127,eng,608,32337,272,12/1/2000,Grand Central Publishing -4043,Godless,Pete Hautman,3.60,1416908161,9781416908166,eng,208,4213,735,11/1/2005,Simon Schuster Books for Young Readers -4050,That Godless Court?: Supreme Court Decisions on Church-State Relationships,Ronald B. Flowers,3.59,0664228917,9780664228910,en-US,228,12,1,9/2/2005,Westminster John Knox Press -4055,Soul Mates: Honouring the Mysteries of Love and Relationship,Thomas Moore,3.99,0060925752,9780060925758,eng,288,4372,81,12/13/2013,Harper Perennial -4060,Soul Mates & Twin Flames: The Spiritual Dimension of Love & Relationships (Pocket Guide to Practical Spirituality),Elizabeth Clare Prophet,3.79,0922729484,9780922729487,en-US,155,141,5,8/17/2017,Summit University Press -4066,Hot Chocolate for the Mystical Lover: 101 True Stories of Soul Mates Brought Together by Divine Intervention,Arielle Ford/Deepak Chopra,4.08,0452282179,9780452282179,en-US,412,38,4,1/1/2001,Plume -4069,Man's Search for Meaning,Viktor E. Frankl/Harold S. Kushner/William J. Winslade/Isle Lasch,4.36,080701429X,9780807014295,eng,165,282127,13449,6/1/2006,Beacon Press -4070,Man's Search for Meaning,Viktor E. Frankl/Gordon W. Allport/Ilse Lasch,4.36,0807014265,9780807014264,eng,165,391,44,3/30/2000,Beacon Press (Boston) -4075,In Search of Memory: The Emergence of a New Science of Mind,Eric R. Kandel,4.10,0393058638,9780393058635,eng,430,3958,172,2/1/2006,W. W. Norton & Company -4077,Search Engine Optimization for Dummies,Peter Kent,3.79,0471979988,9780471979982,en-US,382,143,20,5/1/2006,For Dummies -4099,The Pragmatic Programmer: From Journeyman to Master,Andy Hunt/Dave Thomas,4.31,020161622X,9780201616224,eng,321,12563,699,10/30/1999,Addison-Wesley Professional -4100,Behind Closed Doors: Secrets of Great Management,Johanna Rothman/Esther Derby,3.96,0976694026,9780976694021,en-US,176,840,63,9/26/2005,Pragmatic Bookshelf -4104,Blink: The Power of Thinking Without Thinking,Malcolm Gladwell,3.93,0713997273,9780713997279,eng,278,832,118,1/11/2005,Penguin -4106,Blink 182,Anne Hoppus,4.42,0859653234,9780859653237,eng,112,62,4,12/1/2001,Plexus Publishing Ltd -4108,I Blink: And Other Questions About My Body,Brigid Avison,3.92,0753456109,9780753456101,eng,32,36,1,4/25/2003,Kingfisher -4117,The Great Good Thing (The Sylvie Cycle #1),Roderick Townley,3.90,0689837143,9780689837142,en-US,224,1782,197,9/1/2003,Simon & Schuster Childrens Books -4119,The Great Good Place: Cafes Coffee Shops Bookstores Bars Hair Salons and Other Hangouts at the Heart of a Community,Ray Oldenburg,3.83,1569246815,9781569246818,eng,384,608,78,8/18/1999,Da Capo Press -4122,Built to Last: Successful Habits of Visionary Companies,James C. Collins/Jerry I. Porras,3.99,0060566108,9780060566104,eng,368,53749,509,11/2/2004,Harper Business -4135,I Like You: Hospitality Under the Influence,Amy Sedaris,3.88,0446578843,9780446578844,eng,304,37258,1401,10/16/2006,Warner Books (NY) -4140,Children Playing Before a Statue of Hercules,David Sedaris/Richard Yates/Dorothy Parker/Joyce Carol Oates/Lorrie Moore/Flannery O'Connor/Amy Hempel/Akhil Sharma/Tim Johnston/Tobias Wolff/Sarah Vowell/Charles Baxter/Jhumpa Lahiri/Katherine Mansfield/Alice Munro/Jean Thompson/Frank Gannon/Patricia Highsmith/Jincy Willett,3.68,0743276124,9780743276122,eng,344,6490,463,8/1/2005,Simon & Schuster -4144,Bringing Down The House,Ben Mezrich,3.89,0099468239,9780099468233,en-GB,320,518,61,5/6/2004,Arrow -4162,Read for Your Life: 11 Ways to Better Yourself Through Books,Pat Williams/Peggy Matthews Rose,3.70,0757305458,9780757305450,eng,311,82,17,6/1/2007,Hci -4165,The Hip-Hop Church: Connecting with the Movement Shaping Our Culture,Efrem Smith/Phil Jackson,3.91,0830833293,9780830833290,eng,227,21,4,12/15/2005,IVP Books -4167,The Final Season: Fathers Sons and One Last Season in a Classic American Ballpark,Tom Stanton,4.16,0312291566,9780312291563,eng,256,216,25,5/8/2002,St. Martin's Griffin -4191,The Cold Six Thousand (Underworld USA #2),James Ellroy,4.01,037572740X,9780375727405,eng,688,5642,265,6/11/2002,Vintage -4200,White Teeth,Zadie Smith,3.77,0140276335,9780140276336,eng,542,4202,406,1/25/2001,Penguin Books -4204,White Teeth,Zadie Smith,3.77,1417626283,9781417626281,eng,448,81,11,6/1/2001,Turtleback Books -4207,White Teeth,Zadie Smith,3.77,0140297782,9780140297782,en-GB,542,1265,142,11/30/2000,Penguin -4216,Schiffbruch mit Zuschauer. Paradigma einer Daseinsmetapher,Hans Blumenberg,3.93,3518222635,9783518222638,ger,106,6,0,5/27/1997,Suhrkamp -4221,The Guide to Dan Brown's the Solomon Key,Greg Taylor,2.98,0875168167,9780875168166,en-US,183,34,2,9/30/2005,DeVorss & Company -4223,The Da Vinci Code (Robert Langdon #2),Dan Brown,3.84,0739326740,9780739326749,en-US,756,3645,407,3/28/2006,Random House Large Print -4227,Angels & Demons (Robert Langdon #1),Dan Brown,3.89,0743275063,9780743275064,en-US,528,1192,143,5/3/2005,Atria Books -4232,The Illuminati,Larry Burkett,3.71,1595540016,0020049130001,eng,352,60,8,10/4/2004,Thomas Nelson -4241,The Illuminati Papers,Robert Anton Wilson,3.83,1579510027,9781579510022,en-US,168,710,22,12/11/1997,Ronin Publishing (CA) -4248,The Da Vinci Code,Dan Brown,3.84,1400079179,9781400079179,eng,489,13934,1459,3/28/2006,Anchor -4249,The Da Vinci Code (Robert Langdon #2),Dan Brown/Paul Michael,3.84,0739339788,9780739339787,eng,0,91,16,3/28/2006,Random House Audio -4250,El código Da Vinci (Robert Langdon #2),Dan Brown/Juanjo Estrella,3.84,8495618605,9788495618603,spa,557,3276,190,10/17/2003,Umbriel -4251,Truth and Fiction in The Da Vinci Code: A Historian Reveals What We Really Know about Jesus Mary Magdalene & Constantine,Bart D. Ehrman,3.64,0195307135,9780195307139,en-US,207,533,50,5/18/2006,Oxford University Press USA -4256,Harry Potter and the Prisoner of Azkaban (Harry Potter #3),J.K. Rowling,4.56,074757362X,9780747573623,eng,480,3141,140,7/1/2008,Bloomsbury UK -4259,Housekeeping vs. the Dirt,Nick Hornby/Sarah Vowell/Jess Walter/Jennie Erdal/Joshua Ferris,3.88,1932416595,9781932416596,eng,153,2636,302,9/13/2006,McSweeney's -4260,The Polysyllabic Spree,Nick Hornby,3.73,1932416242,9781932416244,eng,143,6828,621,11/30/2004,McSweeney's -4261,Songbook,Nick Hornby,3.56,1573223565,9781573223560,eng,207,10066,341,10/7/2003,Riverhead Books -4263,My Favorite Year: A Collection of Football Writing,Nick Hornby/D.J. Taylor/Huw Richards/Chris Pierson/Roddy Doyle/Harry Ritchie/Harry Pearson/Olly Wicken/Graham Brack/Matt Nation/Ed Horton/Don Watson,3.68,0753814412,9780753814413,eng,288,393,4,8/1/2001,Orion Publishing -4264,Fever Pitch,Nick Hornby,3.74,1573226882,9781573226882,eng,247,28830,1069,3/1/1998,Riverhead Books -4267,High Fidelity,Nick Hornby,3.94,1573228214,9781573228213,en-US,323,827,101,3/1/2000,Riverhead Books -4273,About a Boy,Nick Hornby,3.80,0141007338,9780141007335,eng,278,825,73,4/4/2002,Penguin -4277,The Complete Polysyllabic Spree,Nick Hornby,3.59,0670916668,9780670916665,eng,278,450,63,9/7/2006,Viking -4278,Medicus (Gaius Petreius Ruso #1),Ruth Downie,3.73,1596912316,9781596912311,eng,386,5723,695,3/6/2007,Bloomsbury Publishing PLC -4287,Middlesex Borough (Images of America: New Jersey),Middlesex Borough Heritage Committee,5.00,0738511676,9780738511672,eng,128,2,0,3/17/2003,Arcadia Publishing -4295,David Foster Wallace's Infinite Jest: A Reader's Guide,Stephen J. Burn,3.82,082641477X,9780826414779,en-GB,96,900,48,5/20/2003,Bloomsbury Academic -4300,Scar Tissue,Anthony Kiedis,4.11,1401301010,9781401301019,en-US,465,327,46,10/6/2004,Hachette Books -4314,Monsieur Ibrahim et les fleurs du Coran,Éric-Emmanuel Schmitt,3.82,2226126260,9782226126269,fre,85,975,62,6/13/2001,Albin Michel -4315,Zaat,Sonallah Ibrahim/صنع الله إبراهيم/Anthony Calderbank,3.55,9774248449,9789774248443,ara,349,122,12,3/15/2004,American University in Cairo Press -4325,Dreamland,Sarah Dessen,3.91,0142401757,9780142401750,eng,250,70043,3881,5/11/2004,Speak -4326,End Game (Dreamland #8),Dale Brown/Jim DeFelice,4.02,0060094427,9780060094423,eng,432,327,7,10/31/2006,HarperTorch -4329,H. P. Lovecraft's Dreamlands (Call of Cthulhu RPG),Chris Williams/Sandy Petersen,3.97,1568821573,9781568821573,eng,260,98,2,2/2/2008,Chaosium -4331,Dreamland (Dreamland #1),Dale Brown/Jim DeFelice,3.90,0007109660,9780007109661,eng,375,1313,28,7/2/2001,HarperCollins Publishers Ltd -4332,Satan's Tail (Dreamland #7),Dale Brown/Jim DeFelice,4.00,0060094419,9780060094416,eng,405,339,9,7/26/2005,HarperTorch -4337,The Zanzibar Chest,Aidan Hartley,4.01,1594480117,9781594480119,en-US,496,2218,172,8/3/2004,Riverhead Books -4338,Dispatches from the Edge: A Memoir of War Disasters and Survival,Anderson Cooper,3.96,0061132381,9780061132384,eng,212,7205,825,5/23/2006,Harper -4339,Dispatches,Michael Herr,4.23,0679735259,9780679735250,eng,260,13108,795,8/6/1991,Vintage -4341,Dispatch,Bentley Little,3.62,0451216776,9780451216779,en-US,386,1291,100,10/4/2005,Signet -4346,Dispatches from the Tenth Circle: The Best of the Onion,Robert D. Siegel/Todd Hanson/Carol Kolb/The Onion,4.21,0609808346,9780609808344,eng,174,3472,30,9/4/2001,Three Rivers Press -4352,Hello! Is That Grandma?,Ian Whybrow/Deborah Allwright,3.53,0439944392,9780439944397,en-GB,32,57,14,5/7/2007,Alison Green Books -4359,How Much is That Guinea Pig in the Window?,Joanne Rocklin/Meredith Johnson,4.00,0590227165,9780590227162,en-US,48,27,7,10/1/1995,Scholastic Inc. -4360,My War Gone By I Miss It So,Anthony Loyd,4.29,0140298541,9780140298543,eng,336,1505,119,2/1/2001,Penguin Books (NY) -4362,Night Draws Near: Iraq's People in the Shadow of America's War,Anthony Shadid,4.12,0312426038,9780312426033,eng,507,643,61,9/5/2000,St. Martin's Press -4364,Maximum City: Bombay Lost and Found,Suketu Mehta,3.93,0375703403,9780375703409,eng,542,9024,637,9/27/2005,Vintage -4370,Catfish and Mandala: A Two-Wheeled Voyage Through the Landscape and Memory of Vietnam,Andrew X. Pham,3.96,0312267177,9780312267179,en-US,344,4820,524,9/2/2000,Picador USA -4372,When Broken Glass Floats: Growing Up Under the Khmer Rouge,Chanrithy Him,4.14,0393322106,9780393322101,eng,336,3534,320,4/17/2001,W. W. Norton Company -4373,First They Killed My Father: A Daughter of Cambodia Remembers,Loung Ung,4.35,0060856262,9780060856267,eng,238,26524,2609,4/4/2006,Harper Perennial -4382,Fahrenheit 451,Ray Bradbury/Christopher Hurt,3.99,078617627X,9780786176274,eng,5,483,146,11/1/2005,Blackstone Audiobooks -4390,Los funerales de la Mamá Grande,Gabriel García Márquez,3.78,0307350320,9780307350329,spa,160,4694,133,2/7/2006,Plaza y Janes -4394,Collected Novellas,Gabriel García Márquez/Gregory Rabassa/J.S. Bernstein,4.00,006093266X,9780060932664,eng,288,838,51,1/8/2008,Harper Perennial Modern Classics -4397,The Grapes of Wrath,John Steinbeck/Robert DeMott/Mick Wiggins,3.96,0143039431,9780143039433,eng,464,7044,639,3/28/2006,Penguin Classics -4398,CliffsNotes on Steinbeck's The Grapes of Wrath,Kelly McGrath Vlcek/CliffsNotes/John Steinbeck,3.81,0764585967,9780764585968,eng,112,30,5,6/5/2000,Cliffs Notes -4399,The Grapes of Wrath,John Steinbeck,3.96,0582461537,9780582461536,eng,597,37,8,3/1/2001,Longman Schools Division (a Pearson Education Company) -4404,American Gods,Neil Gaiman,4.11,0060010606,9780060010607,eng,635,1211,169,6/1/2001,PerfectBound (HarperCollins) -4405,American Gospel: God the Founding Fathers and the Making of a Nation,Jon Meacham,3.80,1400065550,9781400065554,eng,399,1876,244,4/4/2006,Random House (NY) -4407,American Gods (American Gods #1),Neil Gaiman,4.11,0747263744,9780747263746,eng,635,383045,15962,3/4/2005,Headline Review -4408,East of Eden,John Steinbeck,4.37,0142004235,9780142004234,eng,601,3942,396,6/18/2002,Penguin Books -4411,Eden in the East: The Drowned Continent of Southeast Asia,Stephen Oppenheimer,3.98,0753806797,9780753806791,eng,575,99,15,7/1/1999,Orion Publishing -4415,East Of Eden,John Steinbeck,4.37,0553116088,9780553116083,eng,691,83,18,1/1/1977,Bantam Books -4417,Who Was John F. Kennedy?,Yona Zeldis McDonough/Nancy Harrison/Jill Weber,4.18,0448437430,9780448437439,eng,112,679,116,12/29/2004,Grosset & Dunlap -4418,The Radical Right & the Murder of John F. Kennedy: Stunning Evidence in the Assassination of the President,Harrison Edward Livingstone,3.22,1412040558,9781412040556,en-US,615,9,0,10/6/2004,Trafford Publishing -4424,An Unfinished Life: John F. Kennedy 1917-1963,Robert Dallek,4.07,0316907928,9780316907927,en-US,849,7981,307,5/4/2004,Back Bay Books -4434,Sellevision,Augusten Burroughs,3.56,1843543648,9781843543640,eng,229,175,9,1/1/2006,Atlantic -4435,Dry,Augusten Burroughs,4.03,1843541858,9781843541851,eng,295,1158,91,3/1/2005,Atlantic -4436,Running with Scissors,Augusten Burroughs,3.72,1843544857,9781843544852,en-GB,320,667,70,11/4/2006,Atlantic Books -4451,People of the Lie: The Hope for Healing Human Evil,M. Scott Peck,3.98,0684848597,9780684848594,en-CA,272,6256,459,1/2/1998,Touchstone -4454,The Road Less Traveled: A New Psychology of Love Traditional Values and Spiritual Growth,M. Scott Peck,4.05,0743243153,9780743243155,en-US,318,1314,98,2/4/2003,Touchstone -4465,The Adventures of Sherlock Holmes,Arthur Conan Doyle,4.36,1842055062,9781842055069,eng,189,5906,140,1/1/2004,Geddes & Grosset -4472,A Prayer for Owen Meany,John Irving,4.23,0679642595,9780679642596,eng,641,1073,97,6/4/2002,Modern Library -4477,Complications: A Surgeon's Notes on an Imperfect Science,Atul Gawande/Susanne Kuhlmann-Krieg,4.26,0312421702,9780312421700,eng,270,33828,2237,4/1/2003,Picador USA -4479,Sad Underwear and Other Complications: More Poems for Children and Their Parents,Judith Viorst/Richard Hull,3.91,0689833768,9780689833762,en-US,80,109,13,4/1/2000,Atheneum Books for Young Readers -4487,Bridget Jones: The Edge Of Reason (Bridget Jones #2),Helen Fielding,3.57,033036734X,9780330367349,eng,422,965,49,11/18/1999,Picador Macmillan Publishers Ltd -4488,Bridget Jones's Guide to Life,Helen Fielding,3.49,0142000213,9780142000212,en-US,64,1104,34,4/1/2001,Penguin Books -4515,Las luces de septiembre (Niebla #3),Carlos Ruiz Zafón,3.77,8423671267,9788423671267,spa,279,5119,217,10/1/2005,Edebé -4519,A Framework for Understanding Poverty,Ruby K. Payne,3.90,1929229488,9781929229482,eng,199,3690,518,2/9/2006,AHA! Process -4520,El príncipe de la niebla (Trilogía de la Niebla #1),Carlos Ruiz Zafón,3.70,0061284386,9780061284380,spa,230,3602,325,11/21/2006,Rayo -4524,The Shadow of the Wind,Carlos Ruiz Zafón/Lucia Graves,4.26,0753819317,9780753819319,eng,403,1278,175,10/28/2004,Phoenix -4525,Ruby for Rails: Ruby Techniques for Rails Developers,David A. Black/David Heinemeier Hansson,3.77,1932394699,9781932394696,eng,493,180,10,5/11/2006,Manning Publications -4540,About the B'nai Bagels,E.L. Konigsburg,3.57,0440400341,9780440400349,eng,172,308,30,3/1/1985,Dell -4579,The Far Side of Evil,Sylvia Engdahl,3.98,0142402931,9780142402931,eng,324,60,9,1/13/2005,Firebird -4580,Enchantress from the Stars,Sylvia Engdahl/Lois Lowry,3.95,0142500372,9780142500378,eng,304,2045,230,2/24/2003,Firebird -4583,Everything Is Illuminated,Jonathan Safran Foer,3.90,0060792175,9780060792176,eng,276,1764,191,8/23/2005,Harper Perennial -4584,Everything Is Illuminated,Jonathan Safran Foer,3.90,0141008253,9780141008257,eng,276,5210,522,6/5/2003,Penguin Group -4588,Extremely Loud and Incredibly Close,Jonathan Safran Foer,3.98,0618711651,9780618711659,eng,326,335477,19241,4/4/2006,Mariner Books -4591,Genome: the Autobiography of a Species in 23 Chapters,Matt Ridley,4.04,0060894083,9780060894085,eng,344,20695,714,5/30/2006,Harper Perennial -4593,Bioinformatics: Sequence and Genome Analysis,David W. Mount,3.86,0879697121,9780879697129,en-US,692,63,3,8/16/2004,Cold Spring Harbor Laboratory Press -4595,The Genome War: How Craig Venter Tried to Capture the Code of Life and Save the World,James Shreeve,3.83,0345433742,9780345433749,eng,392,272,23,6/28/2005,Ballantine Books -4599,Carter Beats the Devil,Glen David Gold,4.09,0786886323,9780786886326,eng,483,11095,880,9/18/2002,Hyperion -4600,Moo Baa La La La!,Sandra Boynton,4.20,0689861133,9780689861130,eng,14,28925,527,9/6/2004,Simon & Schuster Childrens Books -4601,Click Clack Moo: Cows That Type,Doreen Cronin/Betsy Lewin,4.24,0743461517,9780743461511,eng,30,348,33,6/1/2003,Pocket Books -4602,Dooby Dooby Moo,Doreen Cronin/Betsy Lewin,4.10,0689845073,9780689845079,eng,40,7823,250,8/8/2006,Atheneum Books for Young Readers -4605,Moo,Jane Smiley,3.46,2743604913,9782743604912,fre,482,6441,492,6/1/1999,Rivages -4606,Sailor Moo: Cow at Sea,Lisa Wheeler/Ponder Goembel,4.07,0689842198,9780689842191,eng,32,161,41,7/1/2002,Atheneum/Richard Jackson Books -4608,CliffsNotes on Heller's Catch-22,Charles A. Peek/CliffsNotes/Joseph Heller,3.55,0822002965,9780822002963,eng,48,37,1,12/31/1975,Cliffs Notes -4610,Catch-22,Joseph Heller,3.98,0099477319,9780099477310,eng,519,5517,452,10/6/1994,Vintage -4620,Geisha,Liza Dalby,4.00,0520204956,9780520204959,eng,367,3730,142,10/1/1998,University of California Press -4623,Does Anything Eat Wasps?: And 101 Other Unsettling Witty Answers to Questions You Never Thought You Wanted to Ask,New Scientist/Mick O'Hare,3.52,0743297261,9780743297264,en-US,224,606,45,4/5/2006,Atria Books -4624,Chronik eines angekündigten Todes,Gabriel García Márquez/Curt Meyer-Clason,3.97,3462031953,9783462031959,ger,119,11,1,8/1/2002,Kiepenheuer & Witsch -4625,The Complete Short Stories of Ernest Hemingway,Ernest Hemingway/John Hemingway/Patrick Hemingway/Gregory H. Hemingway/Charles Scribner Jr.,4.29,0684843323,9780684843322,eng,650,30081,649,8/3/1998,Scribner -4626,Hemingway & Bailey's Bartending Guide to Great American Writers,Mark Bailey/Edward Hemingway,3.90,1565124820,9781565124820,eng,97,132,24,10/13/2006,Algonquin Books -4627,For Whom The Bell Tolls,Ernest Hemingway,3.97,0099481561,9780099481560,en-GB,490,162,7,5/5/2005,Vintage Classics -4631,A Moveable Feast,Ernest Hemingway,4.04,0099285045,9780099285045,eng,192,82993,4808,9/6/2012,Vintage -4633,Islands in the Stream,Ernest Hemingway,3.88,0743253426,9780743253420,eng,448,11265,471,7/22/2003,Scribner -4637,Berlin Blues,Sven Regener/John Brownjohn,3.87,0099449234,9780099449232,eng,247,186,24,11/4/2004,Vintage -4641,The Short Stories,Ernest Hemingway,4.26,0684837862,9780684837864,en-US,464,219,21,7/25/2002,Scribner Classics -4642,Hemingway's Cats: An Illustrated Biography,Carlene Fredericka Brennen/Hilary Hemingway,3.82,1561643424,9781561643424,eng,185,45,9,1/1/2005,Pineapple Press -4651,The Ernest Hemingway Audio Collection,Ernest Hemingway/Charlton Heston,4.30,0694524980,9780694524983,en-US,4,43,6,5/8/2001,Caedmon -4653,Until I Find You,John Irving,3.63,0552773123,9780552773126,eng,928,198,33,8/1/2006,Black Swan -4654,The Imaginary Girlfriend,John Irving,3.42,0345458265,9780345458261,eng,208,1841,112,12/3/2002,Ballantine Books -4656,The Fourth Hand,John Irving,3.31,0345463153,9780345463159,eng,368,25257,977,4/29/2003,Fawcett Books -4657,The Water-Method Man,John Irving,3.35,034541800X,9780345418005,eng,272,10479,251,6/23/1997,Ballantine Books -4658,Setting Free the Bears,John Irving,3.30,0345417984,9780345417985,eng,304,8896,217,6/23/1997,Ballantine Books -4660,The 158-Pound Marriage,John Irving,3.24,0345417968,9780345417961,en-US,176,11346,280,6/23/1997,Ballantine Books -4662,The Short Stories,F. Scott Fitzgerald/Matthew J. Bruccoli,4.23,0684842505,9780684842509,eng,800,12039,164,4/15/1998,Scribner -4664,A Life in Letters,F. Scott Fitzgerald/Matthew J. Bruccoli,4.22,0684801531,9780684801537,eng,528,186,13,5/3/1995,Scribner -4666,On Authorship,F. Scott Fitzgerald/Matthew J. Bruccoli/Judith S. Baughman,3.75,1570031460,9781570031465,eng,203,8,1,9/1/1996,University of South Carolina Press -4669,The St. Paul Stories of F. Scott Fitzgerald,F. Scott Fitzgerald/Dave Page/Patricia Hampl,4.00,0873515129,9780873515122,en-US,328,100,11,9/24/2004,Minnesota Historical Society Press -4670,Tender is the Night,F. Scott Fitzgerald/Arnold Goldman/Richard Godden,3.82,0141183594,9780141183596,en-GB,400,1354,140,6/28/2001,Penguin Classics -4673,The Great Gatsby,Kathleen Parkinson/F. Scott Fitzgerald,3.88,0140771972,9780140771978,eng,144,557,28,11/25/2003,Penguin Global -4674,The Great Gatsby,F. Scott Fitzgerald/Tim Robbins,3.91,0060098910,9780060098919,eng,6,258,58,10/1/2002,Caedmon -4675,The Great Gatsby,F. Scott Fitzgerald/Alexander Scourby,3.91,1572702567,9781572702561,eng,4,63,13,3/13/2002,Audio Partners -4676,Cliffs Notes on Fitzgerald's the Great Gatsby,Kate Maurer/F. Scott Fitzgerald/CliffsNotes,3.70,0764586017,9780764586019,eng,96,78,13,6/5/2000,Cliffs Notes -4677,The Great Gatsby,F. Scott Fitzgerald,3.91,0140620184,9780140620184,eng,188,2729,245,1/13/1994,Penguin Books -4680,Limitations (Kindle County Legal Thriller #7),Scott Turow,3.33,0312426453,9780312426453,eng,208,1750,228,11/14/2006,Picador -4681,Reversible Errors (Kindle County Legal Thriller #6),Scott Turow,3.83,0446612626,9780446612623,eng,553,5073,222,11/1/2003,Warner Vision -4682,The Laws Of Our Fathers (Kindle County Legal Thriller #4),Scott Turow,3.75,0446604402,9780446604406,eng,817,3655,162,9/1/1997,Grand Central Publishing -4683,Personal Injuries (Kindle County Legal Thriller #5),Scott Turow,3.86,0446608602,9780446608602,eng,528,5163,179,12/1/2000,Warner Books (NY) -4685,One L: The Turbulent True Story of a First Year at Harvard Law School,Scott Turow,3.67,0446673781,9780446673785,eng,288,6093,447,9/1/1997,Warner Books (NY) -4686,Ultimate Punishment,Scott Turow,3.81,031242373X,9780312423735,eng,176,506,50,8/1/2004,St. Martins Press-3PL -4692,The Physician (Cole Family Trilogy #1),Noah Gordon,4.37,0751503894,9780751503890,eng,720,23114,1175,7/1/2001,Little Brown Book Group -4693,Matters of Choice (Cole Family Trilogy #3),Noah Gordon/Mirjana Cvekić/Ljiljana Cvekić,3.39,0451187261,9780451187260,eng,448,2680,142,5/1/1997,Signet -4695,The Rabbi,Noah Gordon,3.69,0449214540,9780449214541,eng,448,921,44,8/12/1987,Fawcett -4696,The Last Jew,Noah Gordon/Mirjana Cvekić/Ljiljana Cvekić,4.10,0312300530,9780312300531,eng,352,4360,189,8/15/2000,St. Martin's Griffin -4698,The Frequencies,Noah Eli Gordon,4.32,0974016713,9780974016719,eng,81,69,8,1/1/2003,Tougher Disguises -4700,Chamán (Familia Cole #2),Noah Gordon/Elsa Mateo,4.12,849654642X,9788496546424,spa,768,493,24,6/30/2006,Zeta Bolsillo -4703,The Talking Horse and the Sad Girl and the Village Under the Sea: Poems,Mark Haddon,3.31,0307275698,9780307275691,eng,60,418,37,4/11/2006,Vintage -4704,Ocean Star Express,Mark Haddon/Peter Sutton,3.57,000664600X,9780006646006,eng,32,1,0,7/1/2002,HarperCollins UK -4714,The Damned and the Beautiful: American Youth in the 1920's,Paula S. Fass,3.76,0195024923,9780195024920,spa,520,83,14,2/19/1978,Oxford University Press USA -4717,This Side of Paradise (Paradise #1),Steven L. Layne,3.73,1589802543,9781589802544,eng,224,549,80,3/31/2005,Pelican Publishing -4723,Trimalchio,F. Scott Fitzgerald/James L.W. West III,4.42,0521890470,9780521890472,eng,214,41,4,4/25/2002,Cambridge University Press -4738,Souvenir of Canada 2,Douglas Coupland,3.83,1553650433,9781553650430,eng,144,332,9,5/10/2004,Douglas McIntyre -4739,Souvenir of Canada,Douglas Coupland,3.85,1550549170,9781550549171,en-US,144,893,34,7/1/2002,Douglas McIntyre -4742,The Illustrated Art of War,Sun Tzu/Samuel B. Griffith,3.97,019518999X,9780195189995,eng,272,91,11,10/15/2005,Oxford University Press USA -4745,World War 3 Illustrated: Confrontational Comics,Scott Cunningham/Peter Kuper/Seth Tobocman/Sabrina Jones,3.85,1568580398,9781568580395,eng,256,20,2,10/17/1995,Running Press -4746,Master Index: An Illustrated Guide,Time-Life Books,3.56,0809447967,9780809447961,eng,175,16,1,9/1/1993,Time-Life Books Inc. -4752,A New Hope: The Illustrated Screenplay (Star Wars Episode IV),George Lucas,4.23,0345420691,9780345420695,eng,166,11,0,3/24/1998,Del Rey -4764,Soul of the Sword: An Illustrated History of Weaponry and Warfare from Prehistory to the Present,Robert L. O'Connell/John Batchelor,3.75,0684844079,9780684844077,en-US,400,55,5,8/27/2002,Free Press -4767,Star Wars Episode 1: The Phantom Menace Illustrated Screenplay,George Lucas,3.92,0345431103,9780345431103,eng,150,259,9,4/21/1999,Del Rey Books -4777,Warfare in the Classical World: An Illustrated Encyclopedia of Weapons Warriors and Warfare in the Ancient Civilizations of Greece and Rome,John Warry/Phillip de ste. Croix,4.14,0806127945,9780806127941,eng,224,383,19,10/15/1995,University of Oklahoma Press -4796,The Winter of Our Discontent,John Steinbeck/Susan Shillinglaw,3.99,0143039482,9780143039488,eng,336,32091,1517,8/26/2008,Penguin Classics -4799,Cannery Row,John Steinbeck,4.04,014200068X,9780142000687,eng,181,96408,3909,2/5/2002,Penguin Books -4801,The Grapes of Wrath and Other Writings 1936–1941: The Long Valley / The Grapes of Wrath / The Log from the Sea of Cortez / The Harvest Gypsies,John Steinbeck/Elaine Steinbeck/Robert DeMott,4.41,1883011159,9781883011154,eng,1088,884,25,9/1/1996,Library of America -4802,Tortilla Flat,John Steinbeck,3.83,0141185112,9780141185118,en-GB,154,438,38,9/7/2000,Penguin Classics -4803,The Log from the Sea of Cortez,John Steinbeck/Richard Astro,3.84,0141186070,9780141186078,eng,288,3427,276,1/18/2001,Penguin Books Ltd -4805,The Illustrated Longitude: The True Story of a Lone Genius Who Solved the Greatest Scientific Problem of His Time,Dava Sobel/William J.H. Andrewes/William J. H. Andrewes,3.97,0802775934,9780802775931,eng,224,179,20,10/1/2003,Walker Books -4806,Longitude: The True Story of a Lone Genius Who Solved the Greatest Scientific Problem of His Time,Dava Sobel/Neil Armstrong,3.97,0802714625,9780802714626,eng,192,47453,1865,10/1/2005,Walker Books -4808,Latitude and Longitude (Rookie Read-About Geography),Rebecca Aberg/Jeanne Clidas,3.53,0516277650,9780516277653,eng,32,1,0,9/1/2003,Children's Press(CT) -4812,The Quest for Longitude: The Proceedings of the Longitude Symposium Harvard University Cambridge Massachusetts November 4-6 1993,William Andrewes,4.50,0964432900,9780964432901,eng,437,10,2,10/1/1996,Collection of Historical Scientific Instruments -4813,1421: The Year China Discovered America,Gavin Menzies,3.60,006054094X,9780060540944,eng,650,11751,893,1/1/2004,Harper Perennial (NYC) -4817,Dr. Desirable,Kristi Gold,3.27,0373764219,9780373764211,eng,192,20,1,1/25/2002,Silhouette Desire -4820,Mayflower: A Story of Courage Community and War,Nathaniel Philbrick,3.87,0670037605,9780670037605,eng,461,31384,2255,5/9/2006,Viking -4824,Before the Mayflower: A History of Black America,Lerone Bennett Jr.,4.44,0874850916,9780874850918,eng,796,6,2,10/23/2003,Johnson Publishing Company (IL) -4829,Before The Mayflower A History of Black America,Lerone Bennett Jr.,4.44,0140072144,9780140072143,en-US,70,26,1,5/1/1984,Penguin Books -4830,Shalimar the Clown,Salman Rushdie,3.88,0679783482,9780679783480,eng,398,11418,743,10/10/2006,Random House Trade -4832,Midnight's Children,Salman Rushdie,3.98,0330267140,9780330267144,eng,463,364,46,4/8/1982,Picador -4835,Haroun and the Sea of Stories (Khalifa Brothers #1),Salman Rushdie/Paul Birkbeck,4.01,0670886580,9780670886586,eng,224,22378,1613,8/27/1999,Viking Children's Books -4836,Fury,Salman Rushdie,3.29,0099421860,9780099421863,eng,272,6711,354,9/5/2002,Vintage -4845,Code Complete,Steve McConnell,4.29,0735619670,9780735619678,en-US,914,7059,326,6/19/2004,Microsoft Press -4864,Dale Carnegie's Lifetime Plan for Success: How to Win Friends and Influence People & How to Stop Worrying and Start Living,Dale Carnegie,4.17,1578660394,9781578660391,eng,538,111,6,6/15/1998,Galahad Books -4866,How to Stop Worrying and Start Living,Dale Carnegie,4.12,0671035975,9780671035976,eng,358,61639,1607,10/5/2004,Gallery Books -4870,How To Enjoy Your Life And Your Job,Dale Carnegie/Dorothy Carnegie,3.96,0671708260,9780671708269,eng,224,1907,121,1/2/1990,Pocket Books -4873,The Leader In You: How to Win Friends Influence People and Succeed in a Changing World,Dale Carnegie/Stuart R. Levine/Michael A. Crom,4.08,0671519980,9780671519988,eng,256,3713,103,5/1/1995,Pocket Books -4887,The Drama of the Gifted Child: The Search for the True Self,Alice Miller/Ruth Ward,4.09,0465016901,9780465016907,eng,144,12436,619,7/22/2008,Basic Books -4888,The Drama of the Gifted Child: The Search for the True Self,Alice Miller,4.09,046501691X,9780465016914,en-US,118,97,10,6/1/1983,Basic Books -4894,Who Moved My Cheese?,Spencer Johnson/Kenneth H. Blanchard,3.80,0091883768,9780091883768,eng,96,311436,8421,2/7/2002,Vermilion -4898,Blue Ocean Strategy: How to Create Uncontested Market Space and Make the Competition Irrelevant,W. Chan Kim/Renée Mauborgne,3.91,1591396190,9781591396192,eng,240,46064,871,2/1/2005,Harvard Business Review Press -4900,Heart of Darkness,Joseph Conrad,3.42,1892295490,9781892295491,eng,188,321078,8423,10/1/2003,Green Integer -4906,Heart of Darkness and Other Tales,Joseph Conrad/Cedric Watts,3.58,0192801724,9780192801722,eng,225,3761,177,9/25/2003,Oxford University Press -4907,Heart of Darkness,Joseph Conrad,3.42,159224646X,9781592246465,eng,132,92,11,5/1/2003,Wildside Press -4909,Teacher Man (Frank McCourt #3),Frank McCourt,3.75,0743243781,9780743243780,eng,272,26508,2019,9/19/2006,Scribner -4916,Angela's Ashes,Frank McCourt,4.11,0007718721,9780007718726,eng,224,711,64,12/17/1998,Simon & Schuster -4921,Three Men in a Boat (Three Men #1),Jerome K. Jerome,3.89,0140621334,9780140621334,eng,185,38313,2811,10/1/1994,Penguin Books -4922,Three Men in a Boat: To Say Nothing of the Dog,Jerome K. Jerome,3.89,0486451100,9780486451107,eng,144,213,32,6/16/2006,Dover Publications -4924,Three Men in a Boat: To Say Nothing of the Dog,Jerome K. Jerome,3.89,1904919529,9781904919520,eng,272,52,8,3/1/2005,Collectors Library -4925,Three Men in a Boat,Jerome K. Jerome,3.89,0141441216,9780141441214,eng,178,786,125,3/25/2004,Penguin Classics -4926,Three Men in a Boat and Three Men on the Bummel,Jerome K. Jerome/Jeremy Lewis,4.08,0140437509,9780140437508,en-US,400,2318,182,11/25/1999,Penguin Classics -4929,Kafka on the Shore,Haruki Murakami/Philip Gabriel,4.14,1400079276,9781400079278,eng,467,225397,12452,1/3/2006,Vintage International -4933,The Brothers Karamazov,Fyodor Dostoyevsky/Constance Garnett/Manuel Komroff/John Bayley,4.32,0451527348,9780451527349,eng,736,983,91,6/1/1999,Signet Classics -4934,The Brothers Karamazov,Fyodor Dostoyevsky/Fyodor Dostoevsky/Richard Pevear/Larissa Volokhonsky,4.32,0374528373,9780374528379,eng,796,191531,6795,6/14/2002,Farrar Straus and Giroux -4935,The Brothers Karamazov,Fyodor Dostoyevsky/David McDuff,4.32,0140449248,9780140449242,eng,1013,1673,184,2/27/2003,Penguin Books Ltd -4936,The Brothers Karamazov,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.32,0679729259,9780679729259,eng,796,617,80,9/3/1991,Vintage Books USA -4938,The Brothers Karamazov,Fyodor Dostoyevsky/Simon Vance/Thomas R. Beyer Jr.,4.32,1596440791,9781596440791,eng,16,20,2,5/1/2005,Hovel Audio -4940,The Brothers Karamazov,Fyodor Dostoyevsky/Constance Garnett/Maire Jaanus,4.32,159308045X,9781593080457,eng,720,1089,202,7/25/2004,Barnes Noble Classics -4942,CliffsNotes on Dostoevsky's The Brothers Karamazov,James Lamar Roberts/Gary Carey,3.50,0764538136,9780764538131,en-GB,96,4,0,1/10/2003,Cliffs Notes -4943,Hungry Planet,Peter Menzel/Faith D'Aluisio,4.44,1580086810,9781580086813,eng,288,1455,193,10/1/2005,Material World -4944,The Very Hungry Caterpillar,Eric Carle,4.29,0399226907,9780399226908,eng,13,3945,262,3/23/1994,Philomel Books -4945,The Little Mouse the Red Ripe Strawberry and the Big Hungry Bear,Don Wood,4.32,0859533301,9780859533300,en-US,32,65,10,9/1/1996,Child's Play International -4947,One Hundred Hungry Ants,Elinor J. Pinczes/Bonnie Mackain,4.05,0395971233,9780395971239,en-US,32,2114,166,9/27/1999,HMH Books for Young Readers -4950,The Hungry Tide,Amitav Ghosh,3.95,061871166X,9780618711666,eng,333,11838,815,6/7/2006,Mariner Books -4951,Feeding the Hungry Heart: The Experience of Compulsive Eating,Geneen Roth,3.96,0452270839,9780452270831,eng,224,749,46,9/1/1993,Plume -4952,What Is the What,Dave Eggers,4.16,1932416641,9781932416640,eng,475,65767,6203,10/18/2006,McSweeney's -4953,A Heartbreaking Work of Staggering Genius,Dave Eggers,3.68,0375725784,9780375725784,eng,485,157572,8463,2/13/2001,Vintage -4954,You Shall Know Our Velocity!,Dave Eggers,3.63,1400033543,9781400033546,eng,401,25811,1463,7/1/2003,Vintage -4955,How We Are Hungry,Dave Eggers,3.75,1400095565,9781400095568,eng,224,12007,659,10/11/2005,Vintage -4956,How We Are Hungry: Stories,Dave Eggers,3.75,1932416137,9781932416138,eng,218,488,38,10/13/2004,McSweeney's -4963,Merry Christmas Stinky Face,Lisa McCourt/Cyd Moore,3.97,0439635772,9780439635776,eng,32,20,3,10/1/2004,Scholastic -4964,Love You Until--,Lisa McCourt/Cyd Moore,4.50,0809166585,9780809166589,eng,32,4,0,12/3/2005,Paulist Press -4965,Year of Wonders,Geraldine Brooks,4.01,0142001430,9780142001431,eng,358,120736,8549,4/30/2002,Penguin Books -4966,The Wonder Years: Helping Your Baby and Young Child Successfully Negotiate the Major Developmental Milestones,Tanya Remer Altmann/American Academy of Pediatrics,3.51,0553804766,9780553804768,en-US,224,55,9,9/26/2006,Bantam Books -4978,Wolves of the Calla (The Dark Tower #5),Stephen King/Bernie Wrightson,4.18,141651693X,9781416516934,eng,931,127168,2801,2/1/2006,Pocket Books -4979,A Man Without a Country,Kurt Vonnegut Jr./Daniel Simon,4.07,081297736X,9780812977363,eng,160,34339,2061,1/16/2007,Random House Trade Paperbacks -4981,Slaughterhouse-Five,Kurt Vonnegut Jr.,4.07,0385333846,9780385333849,eng,275,1001671,19056,1/12/1999,Dial Press -4983,Kurt Vonnegut's Cat's Cradle (Modern Critical Interpretations),Harold Bloom/Terry Southern/David H. Goldsmith/James Lundquist/Lawrence R. Broer/Peter J. Reed/Loree Rackstraw/William S. Doxey/Jerome Klinkowitz/Richard Giannone/John L. Simons/Leonard Mustazza/Zoltan Ab di-Nagy/Peter Freese/Wendy B. Faris,4.35,0791071685,9780791071687,eng,258,28254,196,12/19/2002,Chelsea House Publications -4986,God Bless You Dr. Kevorkian,Kurt Vonnegut Jr.,3.84,0743422007,9780743422000,eng,80,12754,558,5/22/2001,Washington Square Press -4987,Jailbird,Kurt Vonnegut Jr.,3.82,0385333900,9780385333900,eng,310,17881,593,1/12/1999,Dial Press Trade Paperback -4988,Fates Worse Than Death,Kurt Vonnegut Jr.,3.87,0425134067,9780425134061,en-US,240,3183,115,9/1/1992,Berkley -4989,The Red Tent,Anita Diamant,4.17,0312353766,9780312353766,eng,336,470858,15859,11/1/2005,St. Martin's Press -4990,Inside the Red Tent,Sandra Hack Polaski,3.96,0827230281,9780827230286,eng,100,181,16,7/1/2006,Chalice Press -4991,Anita Diamant's The Red Tent: A Reader's Guide,Ann Finding,4.13,0826415741,9780826415745,eng,88,440,55,9/7/2004,Bloomsbury Academic -4997,La Jeune fille à la perle,Tracy Chevalier/Marie-Odile Fortier-Masek,3.88,2070417948,9782070417940,fre,313,618,38,3/16/2002,Gallimard -4999,Iron Kingdom: The Rise and Downfall of Prussia 1600–1947,Christopher Clark,4.14,0674023854,9780674023857,eng,776,2583,183,9/29/2006,Belknap Press of Harvard University Press -5004,Downfall (Dragonlance: Dhamon Saga #1),Jean Rabe,3.68,0786918144,9780786918140,eng,397,878,9,3/1/2001,Wizards of the Coast -5005,Berlin: The Downfall 1945,Antony Beevor,4.29,0670886955,9780670886951,eng,489,244,17,1/1/2002,Viking Books -5008,El azul de la virgen,Tracy Chevalier,3.66,8466313591,9788466313599,spa,411,50,5,10/1/2004,Punto de Lectura -5015,Saturday,Ian McEwan,3.63,1400076196,9781400076192,eng,289,52576,3332,4/11/2006,Anchor -5027,I Love Saturdays y domingos,Alma Flor Ada/Elivia Savadier,4.05,068987409X,9780689874093,en-US,32,34,10,9/1/2004,Atheneum Books for Young Readers -5051,A Dangerous Fortune,Ken Follett,4.05,0330332651,9780330332651,eng,596,154,12,2/19/1999,MacMillan General Books -5053,The Man From St. Petersburg,Ken Follett,3.88,0451208706,9780451208705,eng,320,16057,663,6/3/2003,NAL -5055,Night Over Water,Ken Follett,3.82,0451211472,9780451211477,eng,448,14545,652,4/6/2004,NAL -5057,The Truth about the Drug Companies: How They Deceive Us and What to Do about It,Marcia Angell,3.95,0375760946,9780375760945,en-GB,319,666,72,8/9/2005,Random House Trade -5061,La verdad acerca de las Industrias Farmacéuticas: cómo nos engaña y qué hacer al respecto,Marcia Angell,3.95,9580493510,9789580493518,spa,324,3,0,12/1/2006,Norma -5062,Jackdaws,Ken Follett,3.97,0451219597,9780451219596,eng,416,20892,953,12/5/2006,NAL -5065,Whiteout,Ken Follett/David Tennant,3.58,1405052716,9781405052719,eng,4,13,1,9/1/2006,MacMillan Audio -5066,Jackdaws,Ken Follett,3.97,0451207521,9780451207524,eng,496,367,32,11/26/2002,Signet -5069,Battle Angel Alita - Last Order : Angel's Vision Vol. 08,Yukito Kishiro,4.10,1421508656,9781421508658,eng,208,336,5,12/12/2006,VIZ Media LLC -5071,Battle Angel Alita - Last Order : Guilty Angel Vol. 07,Yukito Kishiro,4.12,1421504332,9781421504339,eng,208,340,4,6/13/2006,VIZ Media LLC -5073,Gunnm Last Order Tome 01,Yukito Kishiro,4.06,2723439801,9782723439800,fre,200,48,2,11/27/2002,Glénat -5077,Your Inner Physician and You: CranioSacral Therapy and SomatoEmotional Release,John E. Upledger,4.11,1556432461,9781556432460,eng,240,248,27,9/4/1997,North Atlantic Books -5084,My Life in France,Julia Child/Alex Prud'Homme,4.17,1400043468,9781400043460,eng,336,69153,6152,4/4/2006,Knopf Publishing Group -5089,A Short History of Nearly Everything (Illustrated Edition),Bill Bryson,4.21,0385663552,9780385663557,eng,624,28,7,10/5/2010,Anchor Canada -5094,The Drawing of the Three (The Dark Tower #2),Stephen King,4.23,0451210859,9780451210852,eng,463,173022,5139,8/5/2003,Signet -5102,The Handmaid's Tale,Margaret Atwood/Valerie Martin,4.11,0307264602,9780307264602,eng,350,2102,282,10/17/2006,Everyman's Library -5104,The Handmaid's Tale,Margaret Atwood,4.11,0435124099,9780435124090,en-GB,308,529,59,9/1/2009,Heinemann Library -5107,The Catcher in the Rye,J.D. Salinger,3.80,0316769177,9780316769174,eng,277,2457092,43499,1/30/2001,Back Bay Books -5111,The Catcher in the Rye - Barron's Book Notes,Barron's,3.72,0812034074,9780812034073,eng,120,775,24,10/1/1984,Barron's Educational Series -5113,Franny and Zooey,J.D. Salinger,3.98,0316769029,9780316769020,eng,201,167157,4994,1/30/2001,Back Bay Books -5114,Raise High the Roof Beam Carpenters & Seymour: An Introduction,J.D. Salinger,4.11,0316766941,9780316766944,eng,256,40629,1189,1/30/2001,Back Bay Books -5128,The Doors of Perception & Heaven and Hell,Aldous Huxley,3.92,0060595183,9780060595180,eng,187,30012,797,5/4/2004,Harper Perennial Modern Classics -5129,Brave New World,Aldous Huxley,3.99,0060929871,9780060929879,eng,288,1247221,20014,9/1/1998,HarperPerennial / Perennial Classics -5130,Island,Aldous Huxley,3.83,0060085495,9780060085490,eng,354,19668,1031,7/30/2002,Harper Perennial Classics -5131,The Perennial Philosophy,Aldous Huxley,4.19,006057058X,9780060570583,eng,336,3266,163,4/13/2004,Harper Perennial Modern Classics -5132,Huxley and God: Essays on Religious Experience,Aldous Huxley/Huston Smith/Jacqueline Hazard Bridgeman,4.30,0824522524,9780824522520,eng,320,98,4,3/1/2003,The Crossroad Publishing Company -5134,Moksha: Writings on Psychedelics & the Visionary Experience,Aldous Huxley/Michael Horowitz/Cynthia Palmer,4.19,0892817585,9780892817580,eng,304,404,15,4/1/1999,Park Street Press -5135,Point Counter Point,Aldous Huxley,3.86,1564781313,9781564781314,eng,432,9522,210,10/1/1996,Dalkey Archive Press -5136,After Many a Summer Dies the Swan,Aldous Huxley,3.75,1566630185,9781566630184,en-US,368,2056,149,1/1/1993,Ivan R. Dee Publisher -5137,The Flame Trees of Thika: Memories of an African Childhood,Elspeth Huxley,4.12,0141183780,9780141183787,en-GB,281,4773,217,2/1/2000,Penguin Classics -5139,The Devil Wears Prada (The Devil Wears Prada #1),Lauren Weisberger,3.74,0307275558,9780307275554,eng,432,744569,7247,5/30/2006,Anchor Books -5144,Arundhati Roy's The God of Small Things: A Reader's Guide,Julie Mullaney,4.01,0826453279,9780826453273,en-GB,96,309,19,3/30/2002,Bloomsbury Academic -5148,A Separate Peace,John Knowles/David Levithan,3.57,0743253973,9780743253970,eng,208,175779,6261,9/30/2003,Scribner -5157,Black and Blue,Anna Quindlen,3.88,0385333137,9780385333139,eng,288,75494,1386,8/25/2010,Delta Publishing -5158,A Virtuous Woman,Kaye Gibbons,3.69,0375703063,9780375703065,eng,165,23170,587,11/5/1997,Vintage -5159,Here on Earth,Alice Hoffman,3.69,0425169693,9780425169698,eng,336,43028,1472,7/1/1999,Berkley -5160,The Heart of a Woman,Maya Angelou,4.20,0375500723,9780375500725,eng,288,17966,437,5/17/1997,Random House -5161,The Deep End of the Ocean (Cappadora Family #1),Jacquelyn Mitchard,3.87,0140286276,9780140286274,eng,464,112856,1028,10/1/1999,Penguin Books -5167,Cane River,Lalita Tademy,4.06,0446678457,9780446678452,eng,522,42695,1845,4/1/2002,Grand Central Publishing -5168,Where the Heart Is,Billie Letts,4.02,0446672211,9780446672214,eng,376,227716,3407,6/1/1998,Grand Central Publishing -5169,Oprah Winfrey,Katherine E. Krohn,3.79,0822550008,9780822550006,eng,128,38,5,1/1/2002,Lerner Publications -5171,Drowning Ruth,Christina Schwarz,3.74,0345439104,9780345439109,eng,368,74161,2159,7/31/2001,Ballantine Books -5174,Fall on Your Knees,Ann-Marie MacDonald,3.96,0743466527,9780743466523,eng,672,55988,2434,10/29/2002,Pocket Books -5175,What Looks Like Crazy on an Ordinary Day (Idlewild #1),Pearl Cleage,3.73,038079487X,9780380794874,eng,244,19366,645,11/1/1998,Harper Perennial -5176,While I Was Gone,Sue Miller,3.69,0345443284,9780345443281,eng,304,56320,1185,5/12/2000,Ballantine Books -5179,Mother of Pearl,Melinda Haynes,3.69,0671774670,9780671774677,eng,465,19073,427,6/1/2000,Washington Square Press -5186,Breath Eyes Memory,Edwidge Danticat,3.88,037570504X,9780375705045,eng,234,25200,1229,5/18/1998,Vintage -5187,The Book of Ruth,Jane Hamilton,3.85,0385265700,9780385265706,en-US,328,63595,1222,12/1/1989,Anchor Books -5190,Open House,Elizabeth Berg,3.70,0345435168,9780345435163,eng,272,54119,1629,5/1/2001,Ballantine Books -5191,The Pilot's Wife,Anita Shreve,3.52,0316601950,9780316601955,eng,304,78714,3860,3/30/1999,Back Bay Books -5196,Tara Road,Maeve Binchy,3.90,0440235596,9780440235590,eng,648,66629,1712,7/18/2000,Dell -5197,A Lesson Before Dying,Ernest J. Gaines,3.95,0375702709,9780375702709,eng,256,47143,2998,9/28/1997,Vintage -5198,Paradise,Toni Morrison,3.80,0452280397,9780452280397,eng,318,19927,812,4/1/1999,Plume (Penguin Books Ltd) -5202,The Treasure Hunt: A Little Bill Book,Bill Cosby/Varnette P. Honeywood,3.34,0590956183,9780590956185,eng,40,364,18,9/1/1997,Cartwheel -5203,She's Come Undone,Wally Lamb,3.88,0671021001,9780671021009,eng,465,294348,9096,6/28/1998,Pocket -5204,We Were the Mulvaneys,Joyce Carol Oates,3.73,0452282829,9780452282827,eng,454,87367,2553,9/1/1997,Plume -5205,A Map of the World,Jane Hamilton/Frank Muller/C.J. Critt,3.81,0385720106,9780385720106,en-GB,400,68554,1476,12/3/1999,Anchor Books -5207,Daughter of Fortune,Isabel Allende/Margaret Sayers Peden,3.91,006019491X,9780060194918,eng,399,1005,95,10/6/1999,Harper -5209,The Meanest Thing To Say,Bill Cosby/Varnette P. Honeywood/Varnette Hon Eywood,3.54,0590956167,9780590956161,eng,40,990,55,9/1/1997,Cartwheel -5210,The Good Earth (House of Earth #1),Pearl S. Buck,3.98,0743272935,9780743272933,eng,357,4080,501,9/15/2004,Washington Square Press -5211,A Fine Balance,Rohinton Mistry,4.36,140003065X,9781400030651,eng,603,112196,7546,11/30/2001,Vintage -5212,The Best Way to Play: A Little Bill Book,Bill Cosby/Varnette P. Honeywood/Varnette Honeywood,3.49,0590956175,9780590956178,eng,40,405,17,9/1/1997,Cartwheel -5213,White Oleander,Janet Fitch,3.96,0316284955,9780316284950,eng,480,3112,210,5/1/2000,Back Bay Books -5214,Cry the Beloved Country,Alan Paton,3.90,0743262174,9780743262170,eng,316,3140,383,11/1/2003,Scribner -5215,One Hundred Years of Solitude,Gabriel García Márquez/Gregory Rabassa,4.07,0060740450,9780060740450,eng,458,3437,316,1/20/2004,Harper Perennial -5216,Song of Solomon,Toni Morrison,4.06,0452260116,9780452260115,en-US,337,1730,143,9/1/1987,Plume -5217,One Hundred Years of Solitude,Gabriel García Márquez/Gregory Rabassa,4.07,1417735988,9781417735983,eng,417,90,5,2/1/2006,Turtleback Books -5219,The Bluest Eye,Toni Morrison,4.03,0452282195,9780452282193,eng,216,3420,280,4/27/2000,Plume Books -5220,The Poisonwood Bible,Barbara Kingsolver,4.06,0060930535,9780060930530,eng,546,5773,828,10/1/1999,Harper Perennial -5230,Vergeef me,Wally Lamb/Inge de Heer,4.18,9022530078,9789022530078,nl,744,67,9,7/1/2001,De Boekerij -5237,The Crusader: Ronald Reagan and the Fall of Communism,Paul Kengor,4.23,0061136905,9780061136900,eng,432,179,14,10/17/2006,Harper -5240,Ronald Reagan: How an Ordinary Man Became an Extraordinary Leader,Dinesh D'Souza,4.13,0684848236,9780684848235,eng,304,1059,35,2/23/1999,Free Press -5249,Ethan Frome and Summer,Edith Wharton/Elizabeth Strout,3.86,0375757287,9780375757280,eng,274,483,54,5/8/2001,Modern Library -5255,Collected Stories 1891-1910,Edith Wharton/Maureen Howard,4.26,1883011930,9781883011932,eng,928,56,8,1/29/2001,Library of America -5261,A Backward Glance,Edith Wharton/Louis Auchincloss,3.76,0684847558,9780684847559,eng,385,521,77,7/15/1998,Scribner -5272,The Best Short Stories of Edith Wharton,Edith Wharton,3.77,1417911832,9781417911837,eng,300,41,4,4/16/2004,Kessinger Publishing -5289,Complete Works of Oscar Wilde,Oscar Wilde/Merlin Holland,4.45,0007144350,9780007144358,eng,1270,11903,183,8/4/2003,HarperCollins Publishers -5294,Oscar Wilde,Richard Ellmann,4.24,0394759842,9780394759845,eng,736,2695,119,11/5/1988,Vintage -5296,An Ideal Husband,Oscar Wilde,4.04,048641423X,9780486414232,eng,78,32946,895,2/5/2001,Dover Publications -5297,The Picture of Dorian Gray,Oscar Wilde/Jeffrey Eugenides,4.08,0375751513,9780375751516,eng,272,760717,17179,6/1/2004,Random House: Modern Library -5304,De Profundis and Other Writings,Oscar Wilde/Hesketh Pearson,4.21,014043089X,9780140430899,eng,252,2298,91,8/26/1976,Penguin Books -5305,Sense and Sensuality: Jesus Talks to Oscar Wilde on the Pursuit of Pleasure (Great Conversations),Ravi Zacharias,3.95,1590528603,9781590528600,en-US,94,545,52,6/1/2006,Multnomah Books -5306,Travels with Charley: In Search of America,John Steinbeck,4.08,0142000701,9780142000700,eng,214,56349,3738,2/5/2002,Penguin -5307,Novels and Stories 1932–1937: The Pastures of Heaven / To a God Unknown / Tortilla Flat / In Dubious Battle / Of Mice and Men,John Steinbeck/Elaine Steinbeck/Robert DeMott,4.35,1883011019,9781883011017,eng,909,371,25,9/1/1994,Library of America -5308,The Pearl,John Steinbeck,3.46,0142000698,9780142000694,eng,96,160706,6198,1/8/2002,Penguin Books -5309,The Life and Times of Scrooge McDuck,Don Rosa,4.67,0911903968,9780911903966,eng,266,2467,149,6/1/2005,Gemstone Publishing -5310,The Life and Times of Scrooge McDuck Companion,Don Rosa,4.48,1888472405,9781888472400,eng,208,959,22,9/19/2006,Gemstone Publishing -5314,The Last Christmas of Ebenezer Scrooge,Marvin Kaye,4.13,1592241336,9781592241330,eng,168,14,3,9/1/2004,Wildside Press -5316,Uncle Scrooge #359,Don Rosa/Carl Barks/Lars Jensen/Pat McGreal/Carol McGreal/Frank Jonker/Romano Scarpa/Mau Heymans/José Massaroli,3.88,1888472421,9781888472424,eng,64,8,1,11/7/2006,Gemstone Publishing -5319,A Christmas Story,Jean Shepherd,4.08,0767916220,9780767916226,eng,144,3187,381,10/28/2003,Broadway Books -5321,My First Story of Christmas,Tim Dowley/Roger Langton,4.07,0802417582,9780802417589,eng,24,10,1,9/1/2004,Moody Publishers -5322,The Christmas Story,Jane Werner Watson/Eloise Wilkin,4.43,0307989135,9780307989130,en-US,24,1304,32,8/1/2000,Golden Books -5327,A Christmas Carol,Charles Dickens/P.J. Lynch,4.05,0763631205,9780763631208,en-CA,160,4359,353,9/12/2006,Candlewick Press -5328,A Christmas Carol,Charles Dickens,4.05,1580495796,9781580495790,eng,112,6671,490,1/1/2012,Penguin Books -5330,The Annotated Christmas Carol,Charles Dickens/Michael Patrick Hearn/John Leech,4.05,0393051587,9780393051582,eng,266,276,46,11/17/2004,W. W. Norton Company -5332,Charles Dickens' A Christmas Carol,Jane Parker Resnick/Christian Birmingham,4.10,0762408480,9780762408481,eng,56,58,6,10/11/2000,Running Press Kids -5337,Little Dorrit,Charles Dickens/Hablot Knight Browne/David Gates,3.99,037575914X,9780375759147,eng,1347,291,33,3/12/2002,Modern Library -5338,A Christmas Carol and Other Christmas Writings,Charles Dickens/Michael Slater,4.14,0140439056,9780140439052,eng,288,30393,449,10/30/2003,Penguin Classics -5342,The Life of Our Lord: Written for His Children During the Years 1846 to 1849,Charles Dickens,4.01,0684865378,9780684865379,eng,128,1729,364,11/9/1999,Simon Schuster -5344,Hard Times,Charles Dickens,3.52,0321107217,9780321107213,eng,353,41041,1706,10/19/2003,Pearson Longman -5345,The Innocent Man: Murder and Injustice in a Small Town,John Grisham,3.82,0385517238,9780385517232,eng,360,52005,4136,10/10/2006,Doubleday Books -5346,The Last Juror,John Grisham,3.87,0385339682,9780385339681,eng,278,72294,1755,4/25/2006,Delta -5348,The Testament,John Grisham/Jorma-Veikko Sappinen,3.86,0440234743,9780440234746,eng,535,89014,2361,12/28/1999,Island -5349,The Rainmaker,John Grisham,3.94,0385339607,9780385339605,eng,419,151818,1489,9/27/2005,Delta -5350,The Partner,John Grisham,3.92,0385339100,9780385339100,eng,416,97474,1928,4/26/2005,Delta -5351,The Street Lawyer,John Grisham,3.83,0385339097,9780385339094,eng,384,89947,1813,4/26/2005,Bantam -5352,The Summons,John Grisham,3.69,0385339593,9780385339599,eng,384,58901,1642,9/27/2005,Delta -5354,The Brethren,John Grisham,3.73,0385339674,9780385339674,eng,384,76085,1505,12/27/2005,Delta -5356,The King of Torts,John Grisham,3.68,0385339658,9780385339650,eng,276,68098,1705,12/27/2005,Delta -5357,Skipping Christmas,John Grisham,3.49,0099481685,9780099481683,eng,198,46334,3399,11/6/2004,Arrow -5358,The Firm,Robin Waterfield/John Grisham,4.01,0582418275,9780582418271,eng,76,540910,3378,2/15/2000,Addison Wesley Publishing Company -5359,The Client,John Grisham,4.00,0385339089,9780385339087,eng,483,367399,1978,3/16/2010,Delta -5360,A Painted House,John Grisham,3.70,0385337930,9780385337939,eng,384,67857,3375,2/3/2004,Bantam -5362,The Summons / The Brethren,John Grisham/Michael Beck/Frank Muller,3.99,0739342770,9780739342770,eng,0,241,9,10/10/2006,Random House Audio -5364,Dragonfly in Amber (Outlander #2),Diana Gabaldon,4.32,0385335970,9780385335973,eng,743,222140,11121,8/7/2001,Bantam -5368,Forever Amber,Kathleen Winsor,3.99,0141009829,9780141009827,eng,972,14409,849,7/25/2002,Penguin -5370,Amber Brown Is Green With Envy,Paula Danziger/Tony Ross,3.95,0439071712,9780439071710,en-GB,160,834,42,8/1/2004,Scholastic -5371,Amber Brown Is Not a Crayon,Paula Danziger/Tony Ross,3.84,0142406198,9780142406199,eng,96,4787,189,9/7/2006,Puffin Books -5372,Amber and Ashes (Dragonlance: The Dark Disciple #1),Margaret Weis,3.87,0786937424,9780786937424,eng,336,2637,64,7/1/2005,Wizards of the Coast -5373,The Waste Lands (The Dark Tower #3),Stephen King/Ned Dameron,4.24,0747411875,9780747411871,eng,509,76,5,11/12/1992,Time Warner Paperbacks -5374,The Dragon's Eye (Dragonology Chronicles #1),Dugald A. Steer/Douglas Carrel,3.82,0763628107,9780763628109,eng,221,2221,113,11/14/2006,Candlewick Press -5375,The Dragon's Eye (Erec Rex #1),Kaza Kingsley/Melvyn Grant,4.00,0978655567,9780978655563,eng,341,59,8,10/1/2006,Firelight Press -5376,Dragon's Eye (Stonefort #1),James A. Hetley,3.43,0441013724,9780441013722,en-US,368,133,16,10/31/2006,Ace -5396,Dragon's Eye,Christopher Stasheff/William R. Forstchen/Nick DiChario/S.N. Lewitt/Bill Fawcett/Mike Resnick/Mickey Zucker Reichert/S.M. Stirling/Diane Duane/Jody Lynn Nye/Roland J. Green/Teresa Patterson/Judith R. Conly,3.51,0671876090,9780671876098,en-GB,279,41,7,7/1/1994,Baen Books -5402,"Stand Back " Said the Elephant "I'm Going to Sneeze!",Patricia Thomas/Wallace Tripp,4.39,0688093388,9780688093389,eng,32,1004,130,4/23/1990,William Morrow & Company Inc. -5404,Here I Stand: A Life of Martin Luther,Roland H. Bainton,4.08,0452011469,9780452011465,eng,336,2841,224,4/1/1995,Plume Books -5412,The Stand: Das letzte Gefecht,Stephen King/Joachim Körber,4.34,3404134117,9783404134113,ger,1227,256,16,9/1/2003,Bastei Lübbe -5413,'Salem's Lot,Stephen King/Jerry N. Uelsmann,4.25,0385516487,9780385516488,eng,594,84123,571,11/1/2005,Doubleday -5414,'Salem's Lot,Stephen King/Ron McLarty,4.02,0743536967,9780743536967,eng,17,227,54,1/19/2004,Simon & Schuster Audio -5415,'Salem's Lot,Stephen King,4.02,0965772411,9780965772419,eng,405,1039,130,10/17/1975,Doubleday -5417,Carrie / 'Salem's Lot / The Shining,Stephen King,4.54,0517219026,9780517219027,eng,1096,13137,61,7/2/2002,Wings -5419,'Salem's Lot,Stephen King,4.02,0451092317,9780451092311,en-US,427,178,35,11/13/1979,Signet -5420,'Salem's Lot,Stephen King,4.02,0340770538,9780340770535,eng,586,25,6,10/6/2010,Hodder & Stoughton Ltd -5427,Orientalism,Edward W. Said,4.08,0141187425,9780141187426,eng,396,873,77,8/28/2003,Penguin Classics -5439,Interpreter of Maladies,Jhumpa Lahiri,4.15,0618101365,9780618101368,eng,198,131876,8009,5/22/2000,Houghton Mifflin Harcourt -5442,The Faiths of the Founding Fathers,David L. Holmes,3.89,0195300920,9780195300925,en-US,225,461,66,3/1/2006,Oxford University Press USA -5452,Girls in Pants: The Third Summer of the Sisterhood (Sisterhood #3),Ann Brashares,3.83,0553375938,9780553375930,eng,338,61435,1290,6/13/2006,Ember -5453,Forever in Blue: The Fourth Summer of the Sisterhood (Sisterhood #4),Ann Brashares,3.81,0385729367,9780385729369,eng,384,62199,1613,1/9/2007,Delacorte Books -5458,Junie B. First Grader: Cheater Pants (Junie B. Jones #21),Barbara Park/Denise Brunkus,4.04,0375823026,9780375823022,en-US,86,111,8,4/27/2004,Random House Books for Young Readers -5471,Nineteen Eighty-Four,George Orwell/Thomas Pynchon,4.18,0452284236,9780452284234,eng,339,9910,748,5/6/2003,Plume -5472,Animal Farm / 1984,George Orwell/Christopher Hitchens,4.28,0151010269,9780151010264,eng,400,146659,1625,6/1/2003,Houghton Mifflin Harcourt -5477,1984,George Orwell/Erich Fromm,4.18,0451516753,9780451516756,eng,268,1322,121,7/1/1981,Signet Classics -5478,Nineteen Eighty-Four,George Orwell,4.18,1421808323,9781421808321,eng,387,215,17,7/1/2005,1st World Library -5479,Brave New World / Brave New World Revisited,Aldous Huxley/Christopher Hitchens,4.16,0060776099,9780060776091,eng,340,129179,1047,7/5/2005,Harper Perennial Modern Classics -5480,Brave New World and Brave New World Revisited,Aldous Huxley/Christopher Hitchens,4.16,0060535261,9780060535261,eng,340,421,53,6/1/2004,HarperCollins -5481,Brave New World Revisited,Aldous Huxley,3.95,0060898526,9780060898526,eng,123,12989,740,9/5/2006,Harper Perennial Modern Classics -5485,Brave New World,Aldous Huxley,3.99,0060850523,9780060850524,eng,259,13353,1286,10/17/2006,HarperCollins -5486,Andrew Carnegie,David Nasaw,3.99,1594201048,9781594201042,eng,896,2580,205,10/24/2006,Penguin Press HC The -5488,The Cairo Trilogy: Palace Walk / Palace of Desire / Sugar Street (The Cairo Trilogy #1-3),Naguib Mahfouz,4.46,0375413316,9780375413315,eng,1313,3347,245,10/16/2001,Everyman's Library -5490,Children of the Alley,Naguib Mahfouz/Peter Theroux,4.10,0385264739,9780385264730,eng,464,1192,131,10/18/1996,Anchor -5497,Akhenaten: Dweller in Truth,Naguib Mahfouz/Tagreid Abu-Hassabo,3.81,0385499094,9780385499095,eng,168,1282,139,4/4/2000,Anchor -5498,Adrift on the Nile,Naguib Mahfouz/Frances Liardet,3.82,0385423330,9780385423335,eng,167,411,38,1/1/1994,Anchor Books -5499,Midaq Alley,Naguib Mahfouz/Trevor Le Gassick,3.85,0385264763,9780385264761,eng,286,4815,446,12/1/1991,Anchor Books -5502,The Harafish,Naguib Mahfouz/Catherine Cobham/Naguib Mahfouz,4.36,0385423357,9780385423359,eng,416,590,61,9/17/1997,Anchor Books -5503,The Day the Leader Was Killed,Naguib Mahfouz/Surgana/Naguib Mahfouz,3.63,0385499221,9780385499224,eng,112,809,93,6/6/2000,Anchor -5508,Anne Frank Beyond the Diary: A Photographic Remembrance,Ruud van der Rol/Rian Verhoeven/Anna Quindlen/Anne Frank/Tony Langham/Plym Peters,4.27,0140369260,9780140369267,eng,113,24181,242,5/1/1995,Puffin Books -5509,Anne Frank Remembered: The Story of the Woman Who Helped to Hide the Frank Family,Miep Gies/Alison Leslie Gold,4.29,0671662341,9780671662349,eng,252,55487,669,4/15/1988,Touchstone Books -5513,The Diary of Anne Frank,Frances Goodrich/Albert Hackett/Wendy Kesselman,4.06,082221718X,9780822217183,eng,70,1320,61,10/1/1998,Dramatists Play Service -5514,Anne Frank: Life in Hiding,Johanna Hurwitz/Vera Rosenberry,3.99,0380732548,9780380732548,eng,64,152,23,12/8/1999,HarperCollins -5518,Cliffs Notes on Hansberry's A Raisin in the Sun,Rosetta James,3.90,0822011085,9780822011088,en-GB,80,10,2,8/15/1992,Cliffs Notes -5526,Dear John,Nicholas Sparks,4.03,0446528056,9780446528054,eng,276,502726,9645,10/30/2006,Warner Books (NY) -5527,All the King's Men,Robert Penn Warren,4.09,0156004801,9780156004800,eng,439,47324,1720,9/1/1996,Harcourt Brace -5528,Cliffs notes on Warren's All the King's Men,L. David Allen,3.45,0822001462,9780822001461,eng,80,3,1,1/13/1964,Cliffs Notes -5530,All the King's Men: Three Stage Versions,Robert Penn Warren/James A. Perkins/James A. Grimshaw,4.00,0820320978,9780820320977,eng,264,3,0,7/4/2000,University of Georgia Press -5534,Men's Health: Book of Muscle - The World's Most Complete Guide to Building Your Body,Ian King/Lou Schuler/Frederick Deluvier,3.98,1579547699,9781579547691,en-US,364,256,13,10/17/2003,Rodale Books -5544,Surely You're Joking Mr. Feynman!: Adventures of a Curious Character,Richard P. Feynman,4.28,0393316041,9780393316049,eng,391,106526,3685,4/12/1997,W. W. Norton & Company -5545,The Feynman Lectures on Physics 3 Vols,Richard P. Feynman/Robert B. Leighton/Matthew L. Sands,4.60,0201500647,9780201500646,en-US,3,78,7,1/1/1989,Addison Wesley Publishing Company -5548,What Do You Care What Other People Think?,Richard P. Feynman,4.27,0393320928,9780393320923,eng,256,15700,556,1/11/2001,W.W. Norton & Company -5550,Perfectly Reasonable Deviations from the Beaten Track: Letters of Richard P. Feynman,Richard P. Feynman/Michelle Feynman,4.25,0738206369,9780738206363,en-US,512,1874,93,4/5/2005,Basic Books -5552,QED: The Strange Theory of Light and Matter,Richard P. Feynman,4.24,0691024170,9780691024172,eng,158,13463,320,10/21/1988,Princeton University Press -5554,Kiffe Kiffe Demain (French Edition),Faïza Guène,3.40,0785990232,9780785990239,fre,182,19,1,10/1/2005,French & European Publications -5558,iWoz,Steve Wozniak/Gina Smith,3.87,0393061434,9780393061437,en-GB,313,3536,375,9/17/2006,W. W. Norton Company -5571,Cradle to Cradle: Remaking the Way We Make Things,William McDonough/Michael Braungart,4.11,0865475873,9780865475878,eng,193,9017,820,4/22/2002,North Point Press -5575,Cradle and All,James Patterson,3.86,0446609404,9780446609401,eng,384,27869,869,2/1/2001,Vision -5585,The Creation of the American Republic 1776-1787,Gordon S. Wood,4.12,0807847232,9780807847237,eng,675,1792,43,4/6/1998,Omohundro Institute and University of North Carolina Press -5587,Power Faith and Fantasy: America in the Middle East 1776 to the Present,Michael B. Oren,3.98,0393058263,9780393058260,eng,832,1510,216,1/16/2007,W. W. Norton Company -5595,Problems of the Self: Philosophical Papers 1956 1972,Bernard Williams,3.97,0521290600,9780521290609,en-US,276,57,2,3/25/1976,Cambridge University Press -5598,Moral Luck: Philosophical Papers 1973-1980,Bernard Williams,4.09,0521286913,9780521286916,eng,188,114,5,3/12/1981,Cambridge University Press -5599,Ethics and the Limits of Philosophy,Bernard Williams,4.06,067426858X,9780674268586,en-US,230,556,20,3/15/1986,Harvard University Press -5606,On Rhetoric and Language: Four Key Dialogues,Jean Nienkamp,4.20,1880393336,9781880393338,eng,232,10,1,7/1/1999,Routledge -5635,The Norton Anthology of Modern and Contemporary Poetry,Jahan Ramazani/Richard Ellmann/Robert O'Clair,4.23,039332429X,9780393324297,eng,1136,286,21,4/17/2003,W. W. Norton Company -5653,The Elephant War,Gillian Avery,3.67,1903252040,9781903252048,eng,256,19,3,10/1/2000,Jane Nissen Books -5659,The Wind in the Willows,Kenneth Grahame/Gillian Avery,3.99,0143039091,9780143039099,eng,197,147748,3490,10/27/2005,Penguin Books -5660,The Everyman Anthology of Poetry for Children,Gillian Avery/Everyman's Library/Thomas Benwick,4.14,0679436340,9780679436348,eng,379,22,4,9/27/1994,Everyman's Library -5661,Holiday Romance and Other Writings for Children,Charles Dickens,3.32,0460876015,9780460876018,eng,368,8,3,5/1/1995,Everyman Paperback Classics -5665,Ideas Have Consequences,Richard M. Weaver,4.16,0226876802,9780226876801,eng,198,970,105,9/28/1984,University Of Chicago Press -5671,The Ethics of Rhetoric,Richard M. Weaver,4.14,0961180021,9780961180027,eng,240,65,9,11/3/1995,Routledge -5678,Manliness,Harvey Mansfield,3.39,0300106645,9780300106640,eng,304,177,31,3/11/2006,Yale University Press -5685,Anna Karenina,Leo Tolstoy/Richard Pevear/Larissa Volokhonsky,4.05,0142000272,9780142000274,en-US,838,2415,397,12/1/2001,Penguin Books -5691,The Brothers Karamazov,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.32,0099922800,9780099922803,eng,796,443,55,1/16/1992,Vintage Classics -5693,Selected Stories of Anton Chekhov,Anton Chekhov/Richard Pevear/Larissa Volokhonsky,4.35,0553381008,9780553381009,eng,467,27027,466,10/31/2000,Modern Library -5694,Mother Maria Skobtsova: Essential Writings,Maria Skobtsova/Richard Pevear,4.31,1570754365,9781570754364,eng,192,62,9,10/1/2002,Orbis Books -5696,What is Art?,Leo Tolstoy/Richard Pevear/Larissa Volokhonsky,3.72,0140446427,9780140446425,eng,230,127,24,8/31/1995,Penguin Classics -5697,The Complete Short Novels,Anton Chekhov/Richard Pevear/Larissa Volokhonsky,4.47,140003292X,9781400032921,eng,548,10580,118,8/18/2005,Vintage Classics -5698,The Double and The Gambler,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.16,0375719016,9780375719011,eng,344,2486,99,1/16/2007,Vintage Classics -5700,The Adolescent,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,3.94,0375719008,9780375719004,eng,647,3568,159,12/7/2004,Vintage -5712,If I Die in a Combat Zone,Tim O'Brien,3.95,0007162995,9780007162994,eng,208,11,0,4/7/2003,Flamingo -5713,If I Die In A Combat Zone,Tim O'Brien,3.95,0586087990,9780586087992,eng,208,53,4,4/24/1995,Flamingo -5720,Rainbow Six (John Clark #2; Jack Ryan Universe #10),Tom Clancy/David Dukes,4.09,0425170349,9780425170342,eng,912,40815,908,9/1/1999,Berkley Books -5728,Child of War Woman of Peace,Le Ly Hayslip/James Hayslip/Jenny Wurts,3.80,0385471475,9780385471473,eng,388,186,22,12/1/1993,Anchor -5729,When Heaven and Earth Changed Places: A Vietnamese Woman's Journey from War to Peace,Le Ly Hayslip/Jay Wurts,4.12,0452271681,9780452271685,eng,400,2593,252,11/1/1993,Plume -5735,Philip Vera Cruz: A Personal History of Filipino Immigrants and the Farmworkers Movement,Craig Scharlin/Lilia V. Villanueva,4.22,0295979844,9780295979847,en-US,208,86,4,6/1/2000,University of Washington Press -5736,Coming of Age in Mississippi: The Classic Autobiography of a Young Black Girl in the Rural South,Anne Moody,4.13,0385337817,9780385337816,eng,424,7072,453,2/3/2004,Delta -5738,I'm Too Young To Be Seventy,Judith Viorst/Laura Gibson,3.93,0743267745,9780743267748,en-US,64,237,45,10/12/2005,Simon Schuster -5743,Seventy-Seven Clocks (Bryant & May #3),Christopher Fowler,3.89,0553587153,9780553587159,eng,496,2095,188,11/29/2005,Bantam Books -5752,The Blank Slate: The Modern Denial of Human Nature,Steven Pinker,4.08,0142003344,9780142003343,eng,528,18793,721,8/26/2003,Penguin Books -5755,The Language Instinct: How the Mind Creates Language,Steven Pinker,4.03,0060958332,9780060958336,eng,448,15441,693,11/7/2000,Harper Perennial Modern Classics -5756,Learnability and Cognition: The Acquisition of Argument Structure,Steven Pinker/Jacques A. Mehler,3.75,0262660733,9780262660730,eng,432,50,1,8/28/1991,Bradford Book -5759,Fight Club,Chuck Palahniuk,4.19,0393327345,9780393327342,eng,218,388782,9654,10/17/2005,W.W. Norton & Company (NYC) -5766,BSD Hacks,Lavigne,3.80,0596006799,9780596006792,en-US,450,42,5,5/31/2004,O'Reilly Media -5770,The Design and Implementation of the 4.3BSD UNIX Operating System,Samuel J. Leffler/Marshall Kirk McKusick/Michael J. Karels,4.26,0201061961,9780201061963,eng,471,27,2,6/1/1989,Addison Wesley Publishing Company -5776,Choke,Stuart Woods,3.84,0061094226,9780061094224,eng,352,2288,96,9/12/1996,HarperTorch -5777,Choke Point: A Brinker Mystery (Brinker P.I.),James C. Mitchell,3.22,0312315325,9780312315320,eng,272,3,0,10/5/2004,St. Martin's Minotaur -5787,The Aleph and Other Stories,Jorge Luis Borges/Andrew Hurley,4.38,0142437883,9780142437889,eng,210,20259,460,7/27/2004,Penguin Classics -5794,El Aleph,Jorge Luis Borges,4.38,9500425998,9789500425995,spa,253,146,9,9/1/2007,Planeta Publishing -5797,Vanity Fair,William Makepeace Thackeray/John Carey,3.79,0141439831,9780141439839,eng,867,102877,2286,1/30/2003,Penguin Books -5799,Vanity Fair,William Makepeace Thackeray/Nicholas Dames,3.79,1593080719,9781593080716,eng,696,553,97,11/1/2003,Barnes Noble Classics -5800,Vanity Fair,William Makepeace Thackeray,3.79,0140620850,9780140620856,eng,672,296,34,10/3/1998,Penguin Books -5805,V for Vendetta,Alan Moore/David Lloyd,4.25,1401207928,9781401207922,eng,296,234954,4058,11/1/2005,Vertigo -5809,V.,Thomas Pynchon/Carlos Martín Ramírez,3.96,2020418770,9782020418775,fre,640,15174,561,1/2/2001,Contemporary French Fiction -5810,Girl in the Shadows (Shadows #2),V.C. Andrews,3.81,1416500529,9781416500520,en-US,400,5,1,3/7/2006,Pocket Books -5812,V for Vendetta,Steve Moore/Lilly Wachowski/Lana Wachowski/Alan Moore,4.15,1416516999,9781416516996,eng,358,2980,118,3/1/2006,Pocket Star Books -5813,Heaven (Casteel #1),V.C. Andrews,4.03,0671010050,9780671010058,eng,464,13,0,4/1/1997,Pocket Books -5814,Slow Learner: Early Stories,Thomas Pynchon,3.50,0099532514,9780099532514,eng,208,3169,161,2/16/1995,Vintage Classics -5816,A Gravity's Rainbow Companion: Sources and Contexts for Pynchon's Novel,Steven Weisenburger,4.01,0820328073,9780820328072,eng,424,152,26,11/1/2006,University of Georgia Press -5821,Casino Royale,Ian Fleming,3.73,0141187581,9780141187587,eng,181,371,43,6/3/2004,Penguin Books Limited (UK) -5824,Casino Royale,Anthony Hern/Ian Fleming/Henry Gammidge/John McLusky,3.70,1840238437,9781840238433,eng,96,110,10,6/1/2005,Titan Books -5826,Bel Canto,Ann Patchett,3.93,0060838728,9780060838720,eng,352,218195,13012,8/2/2005,Harper Perennial -5835,Guerilla Film Makers Movie Blueprint,Chris Jones/Jonathan Newman/Cara Williams,4.20,0826414532,9780826414533,eng,608,50,1,6/20/2003,Bloomsbury Academic -5838,Mini-Manual of the Urban Guerrilla,Carlos Marighella,3.31,1894925025,9781894925020,en-US,66,127,13,9/9/2002,Abraham Guillen Press -5843,The Career Programmer: Guerilla Tactics for an Imperfect World (Expert's Voice),Christopher Duncan,3.13,1590596242,9781590596241,en-US,264,37,7,2/1/2006,Apress -5845,A Bend in the River,V.S. Naipaul,3.77,0330487140,9780330487146,eng,326,13147,690,5/10/2002,Picador USA -5848,The Middle Passage,V.S. Naipaul,3.61,0375708340,9780375708343,en-US,256,461,35,1/8/2002,Vintage -5851,Magic Seeds,V.S. Naipaul,3.13,0375707271,9780375707278,eng,280,715,104,11/8/2005,Vintage -5853,Half a Life,V.S. Naipaul,3.25,037570728X,9780375707285,eng,224,3078,301,4/23/2009,Vintage International -5855,North of South: An African Journey,Shiva Naipaul,3.89,0140188266,9780140188264,eng,352,279,33,9/26/1996,Penguin Classics -5863,V.S. Naipaul,Bruce Alvin King,2.00,1403904561,9781403904560,eng,240,0,0,10/10/2003,Palgrave Macmillan -5874,Regeneration Through Violence: The Mythology of the American Frontier 1600–1860,Richard Slotkin,4.30,0806132299,9780806132297,eng,670,163,16,4/15/2000,University of Oklahoma Press -5875,Regeneration (Species Imperative #3),Julie E. Czerneda,4.13,0756403456,9780756403454,en-US,543,54,2,5/2/2006,DAW Hardcover -5877,The Regeneration Trilogy (Regeneration #1-3),Pat Barker,4.38,0670869295,9780670869299,eng,592,1588,95,1/1/1996,Viking Books -5880,The Sparrow (The Sparrow #1),Mary Doria Russell,4.16,0552997773,9780552997775,eng,506,664,103,11/1/1997,Black Swan -5881,The Age of Bronze (Pirates of the Caribbean: Jack Sparrow #5),Rob Kidd/Walt Disney Company,4.05,1423101685,9781423101680,eng,144,548,14,12/1/2006,Disney Press -5882,The Sword of Cortés (Pirates of the Caribbean: Jack Sparrow #4),Rob Kidd/Jean-Paul Orpinas/Walt Disney Company,3.98,1423100611,9781423100614,en-US,122,644,14,10/1/2006,Disney Press -5883,The Pirate Chase (Pirates of the Caribbean: Jack Sparrow #3),Rob Kidd/Walt Disney Company,3.89,1423100204,9781423100201,eng,119,730,20,8/1/2006,Disney Press -5885,The Siren Song (Pirates of the Caribbean: Jack Sparrow #2),Rob Kidd/Jean-Paul Orpinas,3.86,1423100190,9781423100195,eng,123,859,27,6/1/2006,Disney Press -5886,The Coming Storm (Pirates of the Caribbean: Jack Sparrow #1),Rob Kidd/Jean-Paul Orpinas,3.83,1423100182,9781423100188,en-US,135,1414,82,6/1/2006,Disney Press -5890,The Woman in White,Wilkie Collins/Matthew Sweet,4.00,0141439610,9780141439617,eng,672,108060,5168,2/27/2003,Penguin Classics -5891,The Woman in White,Wilkie Collins,4.00,0486440966,9780486440965,eng,504,136,28,4/15/2005,Dover Publications -5893,The Woman in White,Wilkie Collins/Maria K. Bachman/Don Richard Cox,4.00,1551116448,9781551116440,eng,696,122,15,4/20/2006,Broadview Press Inc -5896,The Woman in White,Wilkie Collins/Camille Cauti,4.00,1593082800,9781593082802,eng,635,624,136,4/25/2005,Barnes Noble Classics -5898,The Lord of the Rings (The Lord of the Rings #1-3),J.R.R. Tolkien,4.50,0007136587,9780007136582,eng,1200,682,43,9/16/2002,Not Avail -5901,The 9/11 Commission Report: Final Report of the National Commission on Terrorist Attacks Upon the United States,National Commission on Terrorist Attacks Upon The United States,3.60,0393060411,9780393060416,eng,624,146,16,10/17/2004,W. W. Norton Company -5907,The Hobbit or There and Back Again,J.R.R. Tolkien,4.27,0618260307,9780618260300,eng,366,2530894,32871,8/15/2002,Houghton Mifflin -5910,The Annotated Hobbit,J.R.R. Tolkien/Douglas A. Anderson,4.27,0007137273,9780007137275,eng,411,121,16,4/7/2003,HarperCollins -5911,Poems From The Hobbit,J.R.R. Tolkien,4.30,0618009345,9780618009343,eng,57,169,5,12/13/1999,Houghton Mifflin Harcourt -5912,The Hobbit: Or There and Back Again,J.R.R. Tolkien,4.27,1594130051,9781594130052,eng,481,276,43,9/1/2003,Large Print Press -5915,The Hobbit,J.R.R. Tolkien,4.27,0261103288,9780261103283,eng,277,3213,329,9/17/2007,HarperCollins -5918,Ruthless Rhymes for Heartless Homes and More Ruthless Rhymes,Harry Graham/Frank J. Moore/D. Streamer,3.86,0486402185,9780486402185,eng,64,44,10,6/19/2013,Dover Publications -5931,The Essential Neruda: Selected Poems,Pablo Neruda/Mark Eisner/Lawrence Ferlinghetti/Robert Hass/Stephen Mitchell/Alastair Reid/Forrest Gander/Jack Hirschman/Stephen Kessler/John Felstiner,4.46,0872864286,9780872864283,eng,200,5149,210,4/1/2004,City Lights Publishers -5932,Twenty Love Poems and a Song of Despair,Pablo Neruda/W.S. Merwin/Cristina García,4.30,0143039962,9780143039969,eng,70,37942,1105,12/26/2006,Penguin Classics -5934,Veinte poemas de amor y una canción desesperada; Cien sonetos de amor,Pablo Neruda,4.30,1400001447,9781400001446,eng,160,1120,54,1/22/2002,Plaza y Janes -5937,Love,Pablo Neruda,4.46,0786881488,9780786881482,eng,43,1333,68,6/16/1995,Miramax Books -5942,Anil's Ghost,Michael Ondaatje,3.57,0375724370,9780375724374,eng,311,13022,1013,4/24/2001,Vintage -5952,Waiting for My Cats to Die: A Memoir,Stacy Horn,3.67,0312287445,9780312287443,eng,320,177,28,1/17/2002,St. Martin's Griffin -5957,Narcissus and Goldmund,Hermann Hesse/Leila Vennewitz,4.20,0720608724,9780720608724,eng,288,175,9,6/1/1993,Peter Owen Ltd -5966,Edward Lear's Book of Nonsense: With Lear's Original Illustrations,Edward Lear/Simcha Shtull,3.65,1888297018,9781888297010,eng,46,71,8,11/1/1995,Maxima New Media -5969,A Sparrow Falls (Courtney #3),Wilbur Smith,4.19,0312940688,9780312940683,eng,640,5019,91,1/2/2007,St. Martin's Paperbacks -5970,Providence of a Sparrow: Lessons from a Life Gone to the Birds,Chris Chester,4.33,1400033853,9781400033850,eng,304,228,44,4/13/2004,Anchor -5974,Sparrow Hawk Red,Ben Mikaelsen,3.79,0786811056,9780786811052,eng,185,1,0,4/1/1995,Little Brown Books for Young Readers -5975,The Fall of a Sparrow,Robert Hellenga,3.69,0684850273,9780684850276,eng,464,824,89,7/6/1999,Scribner -5976,The Bluebird and the Sparrow (Women of the West #10),Janette Oke,3.83,0764202537,9780764202537,en-US,251,78,9,8/1/2006,Bethany House Publishers -5981,Journey of the Sparrows,Fran Leeper Buss/Daisy Cubias,3.69,0142302090,9780142302095,eng,160,205,25,12/30/2002,Puffin Books -5984,Aleutian Sparrow,Karen Hesse/Evon Zerbetz/Kim McGillivray,3.78,1416903275,9781416903277,eng,160,710,146,6/1/2005,Margaret K. McElderry Books -5985,An Episode of Sparrows,Rumer Godden,4.21,1590171241,9781590171240,en-GB,247,900,126,10/31/2004,The New York Review Children's Collection -5989,Li Po and Tu Fu: Poems,Li Bai/Du Fu/Arthur Cooper/Shui Chien-Tung,4.14,0140442723,9780140442724,eng,256,389,28,4/26/1973,Penguin Classics -5991,混血王子的背叛 (哈利波特 #6),J.K. Rowling/J.K.羅琳/皇冠編譯組/張定綺/彭倩文/趙丕慧/林靜華,4.57,9573321742,9789573321743,zho,735,75,0,10/1/2005,皇冠文化出版有限公司 -6003,火盃的考驗 (哈利波特 #4),J.K. Rowling/J.K.羅琳/彭倩文,4.56,9573318318,9789573318316,zho,768,91,2,12/8/2001,皇冠文化出版有限公司 -6008,Five T'ang Poets,Wang Wei/Li Bai/Li Ho/Li Shang-yin/David Young,4.30,093244055X,9780932440556,eng,184,169,21,10/8/1990,Oberlin College Press -6038,The End of Obscenity: The Trials of Lady Chatterley Tropic of Cancer and Fanny Hill,Charles Rembar,3.88,0060970618,9780060970611,eng,528,11,0,12/1/1986,HarperCollins Publishers -6048,Juniper,Monica Furlong,4.16,0394832205,9780394832203,eng,198,112,7,2/24/2004,Random House Children's Books -6057,The Long Road Back: A Survivor's Guide to Anorexia,Judy Tam Sargent/Sonia Nordenson,3.20,1880823195,9781880823194,en-GB,194,30,3,10/1/1998,North Star Publications (MA) -6058,The Road Back,Erich Maria Remarque,4.32,1931541744,9781931541749,eng,352,3146,99,12/1/2001,Simon Publications -6066,Robinson Crusoe,Daniel Defoe/L.J. Swingle,3.67,1593080115,9781593080112,eng,312,350,49,4/1/2003,Barnes & Noble Classics -6069,Achilles in Vietnam: Combat Trauma and the Undoing of Character,Jonathan Shay,4.25,0684813211,9780684813219,en-US,272,1130,110,10/1/1995,Scribner -6076,The Work of Mourning,Jacques Derrida/Pascale-Anne Brault/Michael Naas,4.20,0226142817,9780226142814,eng,272,167,7,9/15/2003,University of Chicago Press -6089,Transform Your Life: A step-by-step programme for change,Diana Cooper,4.00,0749919442,9780749919443,eng,176,6,0,10/29/1998,Little Brown Book Group -6106,A Short History of Byzantium,John Julius Norwich,4.09,0679772693,9780679772699,eng,496,1772,142,12/29/1998,Vintage -6107,The Middle Sea: A History of the Mediterranean,John Julius Norwich,3.85,0701176083,9780701176082,eng,588,662,53,10/31/2006,Chatto & Windus -6109,A History of Venice,John Julius Norwich,4.20,0679721975,9780679721970,eng,673,1422,93,6/18/1989,Vintage -6110,The Normans in Sicily: The Normans in the South 1016-1130 and the Kingdom in the Sun 1130-1194,John Julius Norwich,4.34,0140152121,9780140152128,eng,816,268,16,9/1/2004,Penguin Global -6112,Siddhartha,Hermann Hesse/Susan Bernofsky/Tom Robbins,4.02,0679643362,9780679643364,eng,129,888,60,7/18/2006,Modern Library -6115,Siddhartha,Hermann Hesse/Joachim Neugroschel/Ralph Freedman,4.02,0142437182,9780142437186,eng,132,1104,114,12/31/2002,Penguin Books -6129,Siddhartha,Hermann Hesse,4.02,2253008486,9782253008484,fre,160,590,29,10/31/1975,Le Livre de Poche -6138,The Moonstone,Wilkie Collins/Carolyn G. Heilbrun,3.91,0375757856,9780375757853,eng,528,59709,2819,9/11/2001,Modern Library -6140,The Moonstone,Wilkie Collins,3.91,0140620133,9780140620139,en-GB,464,349,44,10/24/1998,Penguin Books -6144,The Moonstone,Wilkie Collins/P.D. James,3.91,0192100289,9780192100283,eng,576,74,6,6/10/1999,Oxford University Press USA -6148,Ride of the Second Horseman: The Birth and Death of War,Robert L. O'Connell,4.29,0195119207,9780195119206,eng,320,13,0,10/19/1997,Oxford University Press USA -6149,Beloved,Toni Morrison,3.83,1400033411,9781400033416,eng,324,282045,9004,6/8/2004,Vintage -6150,Cry the Beloved Country,Alan Paton,3.90,074326195X,9780743261951,eng,316,54558,2937,11/25/2003,Scribner -6151,Life of the Beloved: Spiritual Living in a Secular World,Henri J.M. Nouwen,4.28,0824519868,9780824519865,eng,160,7551,498,10/1/2002,Crossroad -6152,Come Away My Beloved,Frances J. Roberts,4.58,1593109156,9781593109158,eng,192,8,0,10/1/2005,Barbour Books -6155,Israel My Beloved,Kay Arthur,4.16,0736903704,9780736903707,eng,448,681,83,3/15/2001,Harvest House Publishers -6156,Beloved Bride: The Letters of Stonewall Jackson to His Wife,Bill Potter/Stephen Lang,4.10,1929241631,9781929241637,eng,156,137,18,4/10/2003,Vision Forum -6157,The Search for the Beloved: Journeys in Mythology and Sacred Psychology (Inner Workbook),Jean Houston,3.95,0874778719,9780874778717,en-US,272,18,2,6/30/1997,TarcherPerigee -6159,Reservation Blues,Sherman Alexie,3.98,0802141900,9780802141903,eng,306,11163,772,2/7/2005,Grove Press -6163,The Border Trilogy: All the Pretty Horses The Crossing Cities of the Plain,Cormac McCarthy,4.44,0375407936,9780375407932,eng,1040,4589,252,9/28/1999,Everyman's Library -6167,Music & Silence,Rose Tremain,3.95,0743418263,9780743418263,eng,485,2923,214,5/1/2001,Washington Square Press -6173,The Periodic Table,Primo Levi,4.21,0140296611,9780140296617,en-GB,194,101,10,1/1/2009,Penguin Group(CA) -6174,Survival in Auschwitz,Primo Levi/Stuart J. Woolf/Philip Roth,4.32,0684826801,9780684826806,eng,187,29099,900,9/1/1995,Simon Schuster -6175,The Reawakening,Primo Levi/Stuart J. Woolf,4.29,0684826356,9780684826356,eng,230,1269,67,12/1/1995,Touchstone -6176,The Drowned and the Saved,Primo Levi,4.40,0349100470,9780349100470,eng,170,3542,169,2/1/1989,Abacus -6180,The Monkey's Wrench,Primo Levi/William Weaver/Ruth Feldman/Ruth Tenzer Feldman,3.92,0140188924,9780140188929,eng,192,601,34,7/1/1995,Penguin -6182,Primo Levi: A Life,Ian Thomson,4.11,0312423675,9780312423674,eng,640,104,5,12/1/2004,Picador -6184,Wuthering Heights,Emily Brontë,3.85,0140620125,9780140620122,eng,279,2155,182,1/13/2007,Penguin Books -6192,Disgrace,J.M. Coetzee,3.84,0143036378,9780143036371,eng,220,61545,3916,8/30/2005,Penguin Books -6194,Waiting for the Barbarians,J.M. Coetzee,3.94,0140283358,9780140283358,eng,152,18097,1029,10/1/1999,Penguin Books -6197,The Lives of Animals,J.M. Coetzee/Amy Gutmann/Peter Singer/Wendy Doniger/Barbara Smuts/Marjorie Garber,3.69,069107089X,9780691070896,eng,136,1930,139,5/6/2001,Princeton University Press -6198,Boyhood: Scenes from Provincial Life,J.M. Coetzee,3.79,014026566X,9780140265668,eng,166,3162,183,9/1/1998,Penguin Books -6200,Youth,J.M. Coetzee,3.79,0142002003,9780142002001,eng,176,4931,261,10/7/2003,Penguin Books -6207,Age of Iron,J.M. Coetzee,3.84,0140275657,9780140275650,eng,198,2976,207,9/1/1998,Penguin Books -6216,The Wife (Kristin Lavransdatter #2),Sigrid Undset/Tiina Nunnally/Sherrill Harbison,4.15,0141181281,9780141181288,eng,402,2116,164,11/1/1999,Penguin Classics -6217,Kristin Lavransdatter (Kristin Lavransdatter #1-3),Sigrid Undset/Tiina Nunnally/Brad Leithauser,4.28,0143039164,9780143039167,eng,1144,7210,926,9/27/2005,Penguin Books -6218,The Axe (The Master of Hestviken #1),Sigrid Undset/Arthur G. Chater,4.21,0679752730,9780679752738,eng,304,496,51,11/29/1994,Vintage -6219,The Cross (Kristin Lavransdatter #3),Sigrid Undset/Tiina Nunnally/Sherrill Harbison,4.29,0141182350,9780141182353,eng,366,1803,146,4/1/2000,Penguin Classics -6220,The Wreath (Kristin Lavransdatter #1),Sigrid Undset/Tiina Nunnally,4.02,0141180412,9780141180410,eng,305,3831,473,12/1/1997,Penguin Classics -6221,The Mistress of Husaby (Kristin Lavransdatter #2),Sigrid Undset,4.15,0394752937,9780394752938,en-US,384,167,30,5/12/1987,Vintage -6222,Jenny,Sigrid Undset/Tiina Nunnally,3.79,158642050X,9781586420505,eng,330,549,42,6/1/1998,Steerforth -6224,The Unknown Sigrid Undset: Jenny and Other Works,Sigrid Undset/Tim Page/Tiina Nunnally/Naomi Walford,4.19,1586420216,9781586420215,eng,406,48,9,12/31/2001,Steerforth Press -6226,Gunnar's Daughter,Sigrid Undset/Sherrill Harbison/Arthur G. Chater,4.18,014118020X,9780141180205,eng,161,848,79,4/1/1998,Penguin Classics -6227,The Snake Pit (The Master of Hestviken #2),Sigrid Undset/Arthur G. Chater,4.23,0679755543,9780679755548,eng,240,349,18,11/29/1994,Vintage -6230,The Son Avenger (The Master of Hestviken #4),Sigrid Undset,4.40,0679755527,9780679755524,en-US,288,275,19,6/24/1995,Vintage -6240,An Imaginary Life,David Malouf,3.88,0099273845,9780099273844,eng,156,1552,144,2/5/1999,Vintage -6245,The Great World,David Malouf,3.88,0099273861,9780099273868,eng,336,539,33,5/20/1999,Vintage -6253,A Very Long Engagement,Sébastien Japrisot,3.91,0099474549,9780099474548,eng,320,79,16,1/6/2005,Vintage -6259,Birdsong,Sebastian Faulks,4.09,0679776818,9780679776819,eng,483,57513,2306,6/2/1997,Vintage International -6273,The Collected Poems of Wilfred Owen,Wilfred Owen/Cecil Day-Lewis,4.34,0811201325,9780811201322,eng,192,3151,106,1/17/1965,New Directions -6286,Murder in Foggy Bottom (Capital Crimes #17),Margaret Truman,3.71,0449001962,9780449001967,en-US,368,688,46,1/29/2002,Fawcett -6288,The Road,Cormac McCarthy,3.97,0307265439,9780307265432,eng,241,606433,34301,9/26/2006,Alfred A. Knopf -6290,The Road to Serfdom,Friedrich A. Hayek,4.18,0415253896,9780415253895,eng,272,258,23,3/9/2006,Routledge -6291,Road of the Patriarch (Forgotten Realms: The Sellswords #3),R.A. Salvatore,4.19,0786940751,9780786940752,eng,346,6274,78,12/20/2006,Wizards of the Coast -6293,Road Trip USA: Cross-Country Adventures on America's Two-Lane Highways,Jamie Jensen,3.96,1566917662,9781566917667,en-US,964,448,21,3/31/2006,Rick Steves -6294,Howl's Moving Castle (Howl's Moving Castle #1),Diana Wynne Jones,4.29,006441034X,9780064410342,eng,329,161582,9026,8/1/2001,Harper Trophy -6295,Howl and Other Poems,Allen Ginsberg/William Carlos Williams,4.13,0872863107,9780872863101,eng,56,85143,1284,1/1/2001,City Lights -6296,When Rabbit Howls,Truddi Chase/Robert A. Phillips,4.04,0425183319,9780425183311,eng,400,262,32,2/5/2002,Berkley -6297,The Art of Howl's Moving Castle,Hayao Miyazaki/Yuji Oniki/Joe Hisaishi,4.51,1421500493,9781421500492,eng,256,2874,76,7/1/2005,VIZ Media LLC -6298,Howl: Original Draft Facsimile Transcript & Variant Versions Fully Annotated by Author with Contemporaneous Correspondence,Allen Ginsberg/Barry Miles,4.22,0061137456,9780061137457,eng,208,180,28,10/10/2006,Harper Perennial Modern Classics -6302,The Best of America's Test Kitchen 2007: The Year's Best Recipes Equipment Reviews and Tastings,America's Test Kitchen,4.35,1933615095,9781933615097,eng,312,193,7,9/1/2006,America's Test Kitchen -6310,Charlie and the Chocolate Factory (Charlie Bucket #1),Roald Dahl/Quentin Blake,4.13,0142403881,9780142403884,eng,176,558799,7239,6/2/2005,Puffin Books -6311,Charlie and the Chocolate Factory: A Play,Richard R. George/Roald Dahl,4.33,0140311254,9780140311259,eng,89,2760,47,9/27/1979,Puffin Books -6316,Charlie and the Chocolate Factory (Abridged),Roald Dahl,3.86,0142404209,9780142404201,en-US,40,12,2,6/2/2005,Puffin -6326,Collected Stories,Roald Dahl/Jeremy Treglown,4.39,0307264904,9780307264909,eng,850,346,43,10/17/2006,Alfred A. Knopf -6329,Roald Dahl Treasury,Roald Dahl,4.43,067003665X,9780670036653,eng,448,2143,65,9/15/2003,Viking Juvenile -6332,Dirty Beasts,Roald Dahl/Quentin Blake,4.01,0142302279,9780142302279,eng,32,4075,121,10/14/2002,Puffin Books -6334,Never Let Me Go,Kazuo Ishiguro,3.82,1400078776,9781400078776,eng,288,380646,22957,8/31/2010,Vintage Books -6335,Never Let Me Go,Kazuo Ishiguro,3.82,0676977111,9780676977110,eng,288,1177,163,1/31/2006,Vintage Books -6339,Never Let Me Go,Kazuo Ishiguro/Rosalyn Landor,3.82,1415916292,9781415916292,eng,10,323,120,4/12/2005,Books on Tape -6340,Homeric Moments: Clues to Delight in Reading the Odyssey and the Iliad,Eva Brann,4.30,0967967570,9780967967578,eng,326,118,13,9/1/2002,Paul Dry Books -6341,Paradoxes of Education in a Republic,Eva Brann,4.28,0226071367,9780226071367,eng,178,29,3,8/15/1989,University of Chicago Press -6342,The Music of the Republic: Essays on Socrates' Conversations and Plato's Writings,Eva Brann,4.58,1589880080,9781589880085,eng,378,20,2,3/1/2004,Paul Dry Books -6343,Open Secrets / Inward Prospects: Reflections on World and Soul,Eva Brann,4.42,1589880196,9781589880191,eng,435,10,1,10/1/2004,Paul Dry Books -6346,Phaedo,Plato/Eva Brann/Peter Kalkavage/Eric Salem,4.04,0941051692,9780941051699,eng,118,94,12,9/1/1998,Focus -6360,Rocky Stories: Tales of Love Hope and Happiness at America's Most Famous Steps,Michael Vitez/Tom Gralish/Sylvester Stallone,4.16,1589880293,9781589880290,eng,144,31,4,11/1/2006,Paul Dry Books -6366,My Heart May Be Broken but My Hair Still Looks Great (Domestic Equalizers #2),Dixie Cash,3.88,0061134236,9780061134234,eng,336,1226,120,8/29/2006,William Morrow Paperbacks -6367,Since You're Leaving Anyway Take Out the Trash (Domestic Equalizers #1),Dixie Cash,3.81,0060595361,9780060595364,eng,384,1614,167,8/31/2004,Avon -6388,The Da Vinci Code (Robert Langdon #2),Dan Brown,3.84,0385504217,9780385504218,eng,522,2780,334,3/18/2003,Doubleday Publishing (NY) -6407,Blessings from the Other Side: Wisdom and Comfort from the Afterlife for This Life,Sylvia Browne/Lindsay Harrison,3.98,0451206703,9780451206701,en-US,208,37,2,10/1/2002,NAL -6414,Mother God: The Feminine Principle to Our Creator,Sylvia Browne,4.05,1401903096,9781401903091,en-US,128,469,30,2/1/2004,Hay House -6418,Thanksgiving,Janet Evanovich,3.60,0060598808,9780060598808,eng,228,10637,474,10/31/2006,HarperTorch -6419,Plum Lovin' (Stephanie Plum #12.5),Janet Evanovich,3.72,0312306342,9780312306342,eng,164,47315,1446,1/9/2007,St. Martin's Press -6422,Four to Score (Stephanie Plum #4),Janet Evanovich,4.17,0312966970,9780312966973,eng,313,117541,2502,6/15/1999,St. Martin's Press -6424,Seven Up (Stephanie Plum #7),Janet Evanovich,4.16,0312980140,9780312980146,en-US,337,103618,1820,6/17/2002,St. Martin's Press -6425,Hard Eight (Stephanie Plum #8),Janet Evanovich/Lorelei King,4.17,0312983867,9780312983864,eng,326,101730,1878,6/16/2003,St. Martin's Press -6426,Motor Mouth (Alex Barnaby #2),Janet Evanovich,3.68,0060584033,9780060584030,eng,312,22251,671,10/3/2006,HarperCollins -6438,A Supposedly Fun Thing I'll Never Do Again: Essays and Arguments,David Foster Wallace,4.25,0316919896,9780316919890,eng,353,722,110,2/1/1997,Little Brown -6440,Ivanhoe,Walter Scott/Graham Tulloch,3.75,0140436588,9780140436587,eng,541,73757,1571,3/30/2000,Penguin Books /Penguin Classics -6441,Ivanhoe,Marianna Mayer/Walter Scott/John Rush,3.96,1587172488,9781587172489,en-US,56,178,22,10/7/2004,Chronicle Books -6459,Me and Jezebel: When Bette Davis Came for Dinner -- And Stayed ... And Stayed ... And Stayed ... And ...,Elizabeth L. Fuller,3.73,0425132641,9780425132647,eng,244,30,5,5/1/1992,Berkley -6460,George Washington and Benedict Arnold: A Tale of Two Patriots,Dave R. Palmer,4.27,1596980206,9781596980204,eng,424,242,37,8/1/2006,Regnery History -6462,His Excellency: George Washington,Joseph J. Ellis,3.92,1400032539,9781400032532,eng,320,32978,1112,11/8/2005,Vintage -6466,George Washington's Rules of Civility & Decent Behavior in Company and Conversation (Little Books of Wisdom),George Washington,4.08,155709103X,9781557091031,eng,30,835,113,8/1/1989,Applewood Books -6475,George Washington's Sacred Fire,Peter A. Lillback/Jerry Newcombe,4.18,0978605268,9780978605261,eng,1200,694,63,5/31/2011,Providence Forum Press -6480,Waverley,Walter Scott/Claire Lamont,3.43,0192836013,9780192836014,eng,463,69,8,8/20/1998,Oxford University Press -6482,The Antiquary,Walter Scott/Nicola J. Watson,3.83,0192831879,9780192831873,eng,528,354,37,5/23/2002,Oxford University Press -6483,Rob Roy,Walter Scott/Lockhart Bogle,3.70,0375760601,9780375760600,eng,576,26,1,7/9/2002,Modern Library -6505,Prozac Nation,Elizabeth Wurtzel,3.59,1573229628,9781573229623,eng,384,895,78,4/2/2002,Riverhead Books -6511,Girl Interrupted: Screenplay based on the book,James Mangold/Anna Hamilton Phelan/Lisa Loomer/Susanna Kaysen,4.02,057120211X,9780571202119,eng,167,253,15,2/21/2000,Faber & Faber -6524,How to Write a Damn Good Novel: A Step-by-Step No Nonsense Guide to Dramatic Storytelling,James N. Frey,3.86,0312010443,9780312010447,eng,192,2152,155,12/15/1987,St. Martin's Press -6526,Book of the Dead (Kay Scarpetta #15),Patricia Cornwell,3.65,0399153934,9780399153938,eng,511,23107,1295,11/1/2007,Putnam Adult -6527,At Risk (Winston Garano #1),Patricia Cornwell,3.41,0399153624,9780399153624,eng,212,422,47,5/23/2006,G. P. Putnam's Sons -6528,Predator (Kay Scarpetta #14),Patricia Cornwell,3.68,0425210278,9780425210277,eng,453,23630,842,10/1/2006,Berkley Publishing Group -6530,Trace (Kay Scarpetta #13),Patricia Cornwell,3.78,0425204200,9780425204207,eng,401,25822,729,6/28/2005,Berkley -6534,Postmortem (Kay Scarpetta #1),Patricia Daniels Cornwell/Patricia Cornwell,4.02,0743477154,9780743477154,eng,342,193117,2123,12/30/2003,Pocket Books -6536,Three Complete Novels: Postmortem / Body Of Evidence / All That Remains (Kay Scarpetta #1 #2 #3),Patricia Cornwell,4.29,0765191121,9780765191120,en-US,822,476,16,10/1/1997,Smithmark Publishers -6537,From Potter's Field (Kay Scarpetta #6),Patricia Cornwell,4.04,0425204693,9780425204696,eng,383,46084,614,8/30/2005,Berkley Books -6539,The Body Farm (Kay Scarpetta #5),Patricia Cornwell,4.05,0425201449,9780425201442,eng,351,57415,920,12/28/2004,Berkley -6540,Trace (Kay Scarpetta #13),Patricia Cornwell/Carolyn McCormick,3.78,0143058320,9780143058328,en-US,11,46,8,8/4/2005,Penguin Audio -6541,Cause of Death (Kay Scarpetta #7),Patricia Cornwell/C.J. Critt,3.93,0425213382,9780425213384,eng,356,38823,625,1/2/2007,Berkley Books -6542,The Patricia Cornwell CD Audio Treasury: All That Remains / Cruel & Unusual (Kay Scarpetta #3 #4),Patricia Cornwell/Kate Burton,4.16,0060791217,9780060791216,eng,0,202,1,7/26/2005,HarperAudio -6543,At Risk (Winston Garano #1),Patricia Cornwell,3.41,0425214761,9780425214763,en-US,289,10084,598,4/3/2007,Berkley Books -6544,The Scarpetta Collection: All That Remains / Cruel & Unusual (Kay Scarpetta #3 #4),Patricia Cornwell,4.16,074325581X,9780743255813,eng,672,30,2,11/11/2003,Scribner -6545,In the Dark of the Night,John Saul,3.88,034548701X,9780345487018,eng,324,4278,178,7/18/2006,Ballantine Books -6546,Perfect Nightmare,John Saul,3.89,0345467329,9780345467324,eng,384,3721,236,4/25/2006,Ballantine Books -6549, said the shotgun to the head.,Saul Williams,4.22,0743470796,9780743470797,en-US,192,2762,214,9/1/2003,MTV Books -6550,Early Color,Saul Leiter/Martin Harrison,4.73,3865211399,9783865211392,eng,156,144,8,1/15/2006,Steidl -6551,Herzog,Saul Bellow/Philip Roth,3.78,0142437298,9780142437292,eng,371,16550,813,2/25/2003,Penguin Classics -6552,Midnight Voices,John Saul/Joe Blades,3.75,0449006530,9780449006535,eng,384,2756,142,3/4/2003,Ballantine Books -6553,The Manhattan Hunt Club,John Saul,3.98,0345490649,9780345490643,eng,384,4889,221,3/28/2006,Ballantine Books -6556,Shadows,John Saul,3.93,0553560271,9780553560275,eng,393,10824,185,5/1/1993,Bantam -6557,The Presence,John Saul,3.76,0449002411,9780449002414,eng,432,2699,90,4/29/1998,Ballantine Books -6562,Creature,John Saul,3.84,0553284118,9780553284119,eng,416,10047,152,1/1/1997,Bantam -6568,Asylum (Blackstone Chronicles #6),John Saul,4.10,0449227944,9780449227947,eng,97,932,24,6/3/1997,Fawcett -6572,Suffer the Children,John Saul,3.91,044018293X,9780440182931,en-US,378,28001,301,7/1/1989,Dell -6588,The Big Bad Wolf (Alex Cross #9),James Patterson/مریم کاظمی‌تبار,3.99,0446610224,9780446610223,eng,400,42096,945,10/1/2004,Grand Central Publishing -6595,Big Bad Wolf,Linda Jones,3.80,0505521792,9780505521798,eng,359,123,6,2/27/1997,Love Spell -6611,Why Do Men Fall Asleep After Sex? More Questions You'd Only Ask a Doctor After Your Third Whiskey Sour,Mark Leyner/Billy Goldberg,3.55,0307345971,9780307345974,eng,263,1166,112,8/1/2006,Three Rivers Press -6613,Four Blondes,Candace Bushnell,2.82,080213825X,9780802138255,eng,256,23409,877,6/8/2001,Grove Press -6614,Lipstick Jungle,Candace Bushnell,3.41,0786887079,9780786887071,eng,496,37514,780,8/8/2006,Hachette Books -6615,Lipstick Jungle,Candace Bushnell,3.41,0786893966,9780786893966,eng,532,422,48,4/1/2007,Hachette Books -6618,The Easy Way to Stop Smoking: Join the Millions Who Have Become Nonsmokers Using the Easyway Method,Allen Carr,4.30,1402718616,9781402718618,eng,224,3510,510,9/23/2004,Sterling -6619,Teach Your Child to Read in 100 Easy Lessons,Siegfried Engelmann/Phyllis Haddox/Elaine Bruner,4.17,0671631985,9780671631987,en-US,395,2207,271,6/15/1986,Touchstone -6624,It's Not Easy Being Green: And Other Things to Consider,Jim Henson/Cheryl Henson,4.20,1401302424,9781401302429,eng,197,1409,168,9/14/2005,Hyperion -6625,Playing Easy to Get (B.A.D. Agency #1.5; Vikings Underground #3; Immortals After Dark #1),Sherrilyn Kenyon/Jaid Black/Kresley Cole,4.13,1416510877,9781416510871,eng,352,12509,340,2/7/2006,Gallery Books -6628,The Big Over Easy (Nursery Crime #1),Jasper Fforde,3.94,0143037234,9780143037231,eng,383,27137,1885,7/25/2006,Penguin -6635,The Enneagram Made Easy: Discover the 9 Types of People,Renee Baron/Elizabeth Wagele,3.82,0062510266,9780062510266,eng,161,1844,171,3/11/1994,HarperSanFrancisco -6640,It's Easy Being Green: A Handbook for Earth-Friendly Living,Crissy Trask/Mike Clelland,3.55,158685772X,9781586857721,eng,168,330,48,1/23/2006,Gibbs Smith -6644,Le Divorce,Diane Johnson,2.88,0452284481,9780452284487,eng,320,3602,295,7/1/2003,Plume -6654,Divine Conspiracy: Rediscovering Our Hidden Life in God,Dallas Willard,4.22,0006281141,9780006281146,en-US,384,52,2,10/5/1998,Fount -6655,The Divine Comedy,Dante Alighieri/John Ciardi,4.07,0451208633,9780451208637,eng,895,3127,205,5/27/2003,NAL -6656,The Divine Comedy,Dante Alighieri/Allen Mandelbaum/Eugenio Montale,4.07,0679433139,9780679433132,eng,798,86527,2004,8/1/1995,Everyman's Library -6657,Divine,Karen Kingsbury,4.28,141430935X,9781414309354,eng,355,9043,424,5/17/2007,Tyndale House Publishers -6658,When the Emperor Was Divine,Julie Otsuka,3.73,0141009055,9780141009056,en-US,160,180,27,1/12/2004,Penguin -6659,Complete Divine (Dungeons & Dragons Edition 3.5),David Noonan,3.64,0786932724,9780786932726,eng,191,803,8,5/1/2004,Wizards of the Coast -6660,A Divine Revelation of Hell,Mary K. Baxter/T.L. Lowery,4.18,0883682796,9780883682791,eng,208,1164,154,1/1/1993,Whitaker House -6667,Boy: Tales of Childhood (Roald Dahl's Autobiography #1),Roald Dahl/Quentin Blake,4.10,0141311401,9780141311401,eng,176,45253,1934,4/5/2001,Puffin Books -6668,The Enormous Crocodile,Roald Dahl/Quentin Blake,3.78,0142302457,9780142302453,eng,32,13986,525,3/24/2003,Puffin -6670,The Magic Finger,Roald Dahl/Quentin Blake,3.68,0141311290,9780141311296,eng,67,23558,1092,4/5/2001,Puffin Books -6671,The Wonderful Story of Henry Sugar and Six More,Roald Dahl,4.14,037581423X,9780375814235,eng,240,15116,663,9/11/2001,Knopf Books for Young Readers -6677,The Gremlins,Roald Dahl/Artists and Writers Guild/Walt Disney Company/Leonard Maltin,3.44,1593074964,9781593074968,eng,56,511,65,9/26/2006,Dark Horse Books -6678,Going Solo (Roald Dahl's Autobiography #2),Roald Dahl/Quentin Blake,4.08,0141311428,9780141311425,eng,209,17327,992,4/5/2001,Puffin -6680,Gumbo Ya-Ya: A Collection of Louisiana Folk Tales,Lyle Saxon/Edward Dreyer/Robert Tallant,4.04,0882896458,9780882896458,eng,640,307,23,5/31/1987,Pelican Publishing -6689,James and the Giant Peach,Roald Dahl/Quentin Blake,4.01,0375814248,9780375814242,eng,146,328542,4733,9/10/2002,Alfred A. Knopf -6690,Danny the Champion of the World,Roald Dahl/Quentin Blake,4.09,0375814256,9780375814259,eng,224,46753,1672,2/12/2002,Knopf Books for Young Readers -6691,My Uncle Oswald,Roald Dahl,3.89,0140055770,9780140055771,eng,208,8170,620,5/1/1986,Penguin (Non-Classics) -6693,Fantastic Mr. Fox,Roald Dahl/Quentin Blake,4.05,0375822070,9780375822070,eng,96,83723,2503,6/11/2002,Knopf Books for Young Readers -6694,The Giraffe and the Pelly and Me,Roald Dahl/Quentin Blake,3.82,0140568190,9780140568196,eng,32,17232,713,11/29/2001,Puffin -6708,The Power of Now: A Guide to Spiritual Enlightenment,Eckhart Tolle,4.13,1577314808,9781577314806,eng,229,159883,7012,8/19/2004,New World Library -6721,Wild Things: Four Tales,Douglas Clegg,3.58,1587671565,9781587671562,eng,97,67,8,10/1/2006,Cemetery Dance Publications -6745,Wild Things (Prowlers Book 1),Christopher Golden,4.03,074344017X,9780743440172,eng,311,7,0,4/7/2003,Pocket Books -6748,A Supposedly Fun Thing I'll Never Do Again: Essays and Arguments,David Foster Wallace,4.25,0316925284,9780316925280,eng,353,27674,2030,2/2/1998,Back Bay Books -6749,Oblivion,David Foster Wallace,4.07,0316010766,9780316010764,eng,329,10633,701,8/30/2005,Back Bay Books -6751,Consider the Lobster and Other Essays,David Foster Wallace,4.23,0316156116,9780316156110,eng,343,32876,2406,12/13/2005,Little Brown and Company -6753,Brief Interviews with Hideous Men,David Foster Wallace,3.86,034911188X,9780349111889,eng,273,18335,1155,4/1/2000,Abacus -6763,Diabetes Meal Planning Made Easy,Hope S. Warshaw/Warshaw Hope,3.42,1580402518,9781580402514,eng,301,33,4,10/15/2006,American Diabetes Association -6764,Easy French Reader,R. de Roussy de Sales,3.85,0071428488,9780071428484,eng,228,297,33,9/17/2003,McGraw-Hill Education -6781,Algebra the Easy Way,Douglas Downing,4.06,0764119729,9780764119729,eng,392,23,2,1/1/2003,Barrons Educational Series -6793,Easy Riders Raging Bulls,Peter Biskind,4.12,0684857081,9780684857084,eng,512,5305,341,4/4/1999,Simon Schuster -6794,Cloud Atlas,David Mitchell,4.02,0340822783,9780340822784,eng,529,6985,957,2/21/2005,Sceptre -6795,The Cloud Atlas,Liam Callanan,3.38,0385336950,9780385336956,en-GB,368,1748,260,8/1/2004,Dial Press -6800,Easy Labor: Every Woman's Guide to Choosing Less Pain and More Joy During Childbirth,William Camann/Kathryn Alexander,3.45,0345476638,9780345476630,eng,311,234,77,1/31/2006,Ballantine Books -6810,The McDougall Quick and Easy Cookbook,John A. McDougall/Mary McDougall,4.01,0452276969,9780452276963,eng,336,308,20,4/1/1999,Plume -6815,American Sign Language The Easy Way,David A. Stewart/Jessalyn Little/Elizabeth Stewart,3.75,0764134280,9780764134289,eng,480,34,6,11/1/2006,Barrons Educational Series -6819,Ghostwritten,David Mitchell,4.05,0375724508,9780375724503,eng,426,20880,1728,10/9/2001,Vintage -6823,Romeo & Juliet,William Shakespeare/Alan Durband,3.74,0748702555,9780748702558,eng,288,179,4,1/1/1993,Nelson Thornes Ltd -6838,Easy Prey (Lucas Davenport #11),John Sandford,4.08,0743484185,9780743484183,eng,480,11676,341,6/1/2004,Simon & Schuster -6851,Mayada Daughter of Iraq: One Woman's Survival Under Saddam Hussein,Jean Sasson,4.00,0451212924,9780451212924,eng,368,4208,298,9/7/2004,Berkley Books -6854,Three to Get Deadly (Stephanie Plum #3),Janet Evanovich,4.15,0312966091,9780312966096,eng,321,125114,2883,7/15/1998,St. Martin's Press -6855,Smitten (Elsie Hawkins #2),Janet Evanovich,3.67,0060598875,9780060598877,eng,234,11968,387,7/25/2006,HarperTorch -6856,Manhunt,Janet Evanovich,3.70,0060598824,9780060598822,eng,219,12152,449,11/29/2005,HarperTorch -6857,Three Plums In One (Stephanie Plum #1-3),Janet Evanovich,4.31,0743216393,9780743216395,eng,1016,2983,168,4/26/2001,Scribner -6858,Hot Six (Stephanie Plum #6),Janet Evanovich,4.19,0312976275,9780312976279,eng,336,108961,2082,6/15/2001,St. Martin's Paperbacks -6862,Amsterdam,Ian McEwan,3.43,0385494246,9780385494243,eng,208,35998,2445,11/2/1999,Anchor Books/Knopf Doubleday Publishing Group -6866,Fodor's Amsterdam (Fodor's Gold Guides),Fodor's Travel Publications Inc./Sarah Gold,3.43,1400016088,9781400016082,eng,288,6,0,4/6/2004,Fodor's -6869,The Child in Time,Ian McEwan,3.58,0385497520,9780385497527,eng,263,8285,543,11/2/1999,Anchor -6870,Enduring Love,Ian McEwan,3.63,0099481243,9780099481249,eng,245,30776,1515,10/28/2004,Vintage -6871,Black Dogs,Ian McEwan,3.44,0385494327,9780385494328,eng,149,7938,490,12/29/1998,Anchor -6872,The Comfort of Strangers,Ian McEwan,3.41,0679749845,9780679749844,eng,128,11116,836,11/1/1994,Anchor -6876,And the Envelope Please...: Ever After / An Affair To Remember / It Happened One Night,Barbara Bretton/Emilie Rose/Isabel Sharpe,3.57,0373836937,9780373836932,eng,279,7,1,2/7/2006,Harlequin Anthologies -6896,Las rubias de 5th Avenue,Plum Sykes,3.28,8497935888,9788497935883,spa,304,5,0,2/28/2005,Debolsillo -6899,Tuesdays with Morrie,Mitch Albom,4.10,0307275639,9780307275639,en-US,192,5541,498,6/29/2007,Anchor Books -6902,La Dernière Leçon,Mitch Albom,4.10,0785930736,9780785930730,fre,209,3,1,1/1/2001,French & European Pubns -6903,My Sister's Keeper,Mavis Applewater,3.86,097441218X,9780974412184,eng,252,89,2,3/9/2004,Limitless Corporation -6904,My Sister's Keeper (Gillian Adams #2),Nora Kelly,3.70,1890208280,9781890208288,eng,228,22,2,2/1/2000,Poisoned Pen Press -6905,Their Sisters' Keepers: Women's Prison Reform in America 1830-1930,Estelle B. Freedman,4.27,0472080520,9780472080526,eng,272,22,2,4/4/1984,University of Michigan Press -6919,Baby's Alphabet,Jean Marzollo/Nancy Sheehan,3.75,0761316434,9780761316435,eng,32,4,0,8/1/2002,Roaring Brook Press -6925,Welcome to the Monkey House,Kurt Vonnegut Jr./David Strathairn/Maria Tucci/Bill Irwin/Tony Roberts/Dylan Baker,4.15,0060898712,9780060898717,en-US,9,61,11,5/23/2006,Caedmon -6932,What Color Is Your Parachute? A Practical Manual for Job-Hunters and Career-Changers,Richard Nelson Bolles,3.70,1580087949,9781580087940,eng,382,4171,161,9/1/2006,Ten Speed Press -6937,You Can Have What You Want: Proven Strategies for Inner and Outer Success,Michael Neill,4.14,1401911838,9781401911836,en-US,240,21,1,10/15/2006,Hay House -6952,Like Water for Chocolate,Laura Esquivel/Thomas Christensen/Carol Christensen,3.95,0552995878,9780552995870,eng,222,283199,4997,9/16/1993,Black Swan -6953,Like Water for Chocolate,Laura Esquivel/Yareli Arizmendi,3.95,0739334190,9780739334195,eng,0,121,33,5/2/2006,Random House Audio -6954,Como agua para chocolate,Laura Esquivel,3.95,0785731237,9780785731238,spa,248,11,2,6/1/1994,Turtleback Books -6956,The Radicalism of the American Revolution,Gordon S. Wood,4.06,0679736883,9780679736882,eng,447,4246,195,3/2/1993,Vintage -6969,Emma,Jane Austen/Fiona Stafford,4.00,0141439580,9780141439587,eng,474,549271,11117,5/6/2003,Penguin Books -6970,Prince of Ice (Tale of the Demon World #3),Emma Holly,3.99,0425212599,9780425212592,en-US,294,1335,59,11/7/2006,Berkley Sensation -6971,Emma Lazarus,Esther Schor,3.88,0805242163,9780805242164,eng,368,30,7,9/5/2006,Schocken -6974,Strange Attractions,Emma Holly,3.68,0425205037,9780425205037,en-US,312,1221,66,11/1/2005,Berkley Books -6976,The Mermaid Chair,Sue Monk Kidd,3.13,0143036696,9780143036692,eng,368,68363,5816,3/7/2006,Penguin Books -6980,The Dance of the Dissident Daughter: A Woman's Journey from Christian Tradition to the Sacred Feminine,Sue Monk Kidd,3.95,0061144908,9780061144905,en-US,253,572,70,12/26/1996,HarperOne -6981,When the Heart Waits: Spiritual Direction for Life's Sacred Questions,Sue Monk Kidd,4.13,0061144894,9780061144899,eng,240,2366,231,10/11/2016,HarperOne -6984,With Open Hands,Henri J.M. Nouwen/Sue Monk Kidd,4.30,1594710643,9781594710643,en-US,125,782,76,4/1/2006,Ave Maria Press -6987,Saxons Vikings and Celts: The Genetic Roots of Britain and Ireland,Bryan Sykes,3.86,0393062686,9780393062687,eng,320,1033,171,12/17/2006,W. W. Norton Company -6988,Yeah I Said It,Wanda Sykes,3.71,0743482719,9780743482714,en-US,247,458,66,9/13/2005,Atria Books -6992,The Seven Daughters Of Eve,Bryan Sykes,3.98,0552152188,9780552152181,eng,368,153,14,7/1/2002,Corgi -6994,Dumbing Down Our Kids: Why American Children Feel Good About Themselves But Can't Read Write or Add,Charles J. Sykes,3.71,0312148232,9780312148232,eng,352,169,29,9/15/1996,St. Martin's Griffin -7003,If I Don't Write It Nobody Else Will: An Autobiography,Eric Sykes,3.88,0007177844,9780007177844,eng,512,25,2,5/1/2006,Fourth Estate -7006,Hamlet,William Shakespeare,4.02,1411400429,9781411400429,eng,352,9,2,7/3/2003,SparkNotes -7007,William Shakespeare's A Midsummer Night's Dream (Cliffs Complete),CliffsNotes/Michael McMahon,3.89,0764587250,9780764587252,eng,192,38,3,4/29/2001,Cliffs Notes -7009,A Midsummer Night's Dream,William Shakespeare,3.94,0451526961,9780451526960,eng,162,2167,101,5/1/1998,Signet Book -7010,A Midsummer Night's Dream,William Shakespeare/Amanda Root/Arkangel Cast/Roy Hudd/David Harewood,3.94,1932219242,9781932219241,eng,3,62,6,5/3/2005,AudioGO -7011,A Midsummer Night's Dream,William Shakespeare/Roma Gill/B. Litt,3.94,0198321503,9780198321507,eng,102,126,7,7/28/2005,Oxford University Press USA -7015,A Midsummer Night's Dream,William Shakespeare/Roma Gill,3.94,0198320213,9780198320210,eng,99,14,3,8/15/2002,Oxford University Press USA -7023,The Burning (Guardians of Ga'Hoole #6),Kathryn Lasky/Richard Cowdrey,4.08,0439405629,9780439405621,eng,224,9175,157,11/1/2004,Scholastic Paperbacks -7027,The Siege (Guardians of Ga'Hoole #4),Kathryn Lasky,4.10,0439405602,9780439405607,eng,203,9256,196,5/1/2004,Scholastic Inc. -7034,In the Company of Cheerful Ladies (No. 1 Ladies' Detective Agency #6),Alexander McCall Smith,4.08,140007570X,9781400075706,eng,256,1070,73,3/14/2006,Anchor -7035,Morality for Beautiful Girls (No. 1 Ladies' Detective Agency #3),Alexander McCall Smith,3.98,1400031362,9781400031368,eng,227,33028,1493,11/12/2002,Random House Anchor -7037,In the Company of Cheerful Ladies (No. 1 Ladies' Detective Agency #6),Alexander McCall Smith/Lisette Lecat,4.08,1419311743,9781419311741,eng,10,133,23,3/2/2005,Recorded Books Inc. -7041,The Full Cupboard of Life (No. 1 Ladies' Detective Agency #5),Alexander McCall Smith,4.02,0375422188,9780375422188,eng,198,480,28,4/20/2004,Pantheon Books -7045,The Tale of Genji,Murasaki Shikibu/Edward G. Seidensticker,3.72,0394735307,9780394735306,en-US,1090,317,55,7/12/1978,Alfred A. Knopf -7048,The Tale of Genji,Yoshitaka Amano/Murasaki Shikibu/Rachel Nacth/Anri Itō/Junichi Imura,4.05,1595820639,9781595820631,eng,81,475,37,8/8/2006,Dark Horse Books -7050,The Tale of Genji: Scenes from the World's First Novel (Illustrated Japanese Classics),Murasaki Shikibu/Masayuki Miyata/Jakuchō Seitouchi/Donald Keene/H. Mack Horton/Ayako Watanabe/Michiko Hiraoka,3.74,4770027729,9784770027726,eng,238,46,5,10/26/2001,Kodansha America -7052,Blue Shoes and Happiness (No. 1 Ladies' Detective Agency #7),Alexander McCall Smith,4.06,0375422722,9780375422720,eng,227,386,37,4/18/2006,Pantheon -7053,In the Company of Cheerful Ladies (No. 1 Ladies' Detective Agency #6),Alexander McCall Smith,4.08,0375422714,9780375422713,eng,233,22026,912,4/19/2005,Pantheon -7054,Ein Gentleman für Mma Ramotswe (No. 1 Ladies' Detective Agency #2),Alexander McCall Smith,3.96,3485009024,9783485009027,ger,238,11,3,2/1/2002,Nymphenburger -7055,Ein Koch für Mma Ramotswe (No. 1 Ladies' Detective Agency #3),Alexander McCall Smith,3.98,3485009601,9783485009607,ger,240,2,2,2/1/2003,Nymphenburger -7058,The Good Husband of Zebra Drive (No. 1 Ladies' Detective Agency #8),Alexander McCall Smith,4.07,0375422730,9780375422737,eng,213,20290,974,4/17/2007,Pantheon Books -7061,The No. 1 Ladies' Detective Agency (No. 1 Ladies' Detective Agency #1),Alexander McCall Smith,3.78,1400034779,9781400034772,eng,235,208669,9489,2/6/2003,Anchor Books -7062,Paris to the Moon,Adam Gopnik,3.76,0375758232,9780375758232,eng,368,12356,941,9/11/2001,Random House Trade Paperbacks -7064,The Belly of Paris (Les Rougon-Macquart #3),Émile Zola/Ernest Alfred Vizetelly/Henry Vizetelly,3.91,1557130663,9781557130662,eng,397,8,1,12/1/1995,Sun and Moon Press -7071,My Movie Business: A Memoir,John Irving,3.34,0345441303,9780345441300,eng,222,1113,60,10/10/2000,Ballantine Books -7076,Setting Free the Bears / The Water-Method Man / The 158-Pound Marriage,John Irving,3.83,0517146541,9780517146545,eng,718,304,8,5/21/1995,Wings -7078,The Headmaster's Papers,Richard A. Hawley/John Irving,3.99,0839731949,9780839731948,eng,240,11,4,9/1/2002,Paul S. Eriksson -7086,Blade Runner,Philip K. Dick,4.08,0345323882,9780345323880,eng,216,49,5,7/12/1987,Del Rey -7089,The Android (Animorphs #10),K.A. Applegate/Katherine Applegate,3.77,0590997300,9780590997300,eng,170,3856,119,9/1/1997,Scholastic Inc. -7090,The Soul of a New Machine,Tracy Kidder,4.11,0316491977,9780316491976,eng,293,5480,438,6/1/2000,Back Bay Books -7092,No Better Place to Die: The Battle Of Stones River,Peter Cozzens,4.17,0252062299,9780252062292,eng,282,273,21,7/1/1991,University of Illinois Press -7093,Never Call Retreat,Bruce Catton/E.B. Long,4.33,1842122916,9781842122914,eng,558,1552,33,12/31/2001,Phoenix Press (UK) -7101,The 42nd Parallel (U.S.A. #1),John Dos Passos,3.82,0618056815,9780618056811,eng,326,5290,321,5/25/2000,Mariner Books -7102,U.S.A.: 42e Parallèle/L'An premier du siècle/La Grosse galette,John Dos Passos,4.10,2070766039,9782070766031,eng,1344,9,1,9/4/2002,Gallimard -7103,The Big Money (U.S.A. #3),John Dos Passos/E.L. Doctorow,4.03,0618056831,9780618056835,en-US,464,2090,123,5/25/2000,Mariner Books -7104,1919 (U.S.A. #2),John Dos Passos/E.L. Doctorow,4.00,0618056823,9780618056828,en-US,400,2185,137,5/25/2000,Mariner Books -7113,The King in the Window,Adam Gopnik/Omar Rayyan,3.60,0786838949,9780786838943,en-US,410,805,108,10/15/2006,Miramax Books -7118,The Karamazov Brothers,Fyodor Dostoyevsky/Ignat Avsey,4.32,0192835092,9780192835093,eng,1054,235,26,8/20/1998,Oxford University Press -7119,The Grand Inquisitor: with related chapters from The Brothers Karamazov,Fyodor Dostoyevsky/Constance Garnett/Charles Guignon,4.36,0872201937,9780872201934,eng,128,210,14,10/1/1993,Hackett Publishing Company Inc. -7126,The Count of Monte Cristo,Alexandre Dumas/Robin Buss,4.25,0140449264,9780140449266,eng,1276,647271,14249,5/27/2003,Penguin Classics -7127,The Count of Monte Cristo,Alexandre Dumas/Brantley Johnson/Margaret Brantley,4.25,0743487559,9780743487559,eng,620,193,26,5/1/2004,Simon Schuster -7131,The Count of Monte Cristo,Alexandre Dumas/Lorenzo Carcaterra,4.25,037576030X,9780375760303,eng,1462,9921,586,6/11/2002,Modern Library -7135,The Brothers Karamazov,Fyodor Dostoyevsky/Andrew R. MacAndrew/Konstantin Mochulsky,4.32,0553212168,9780553212167,eng,1072,1022,154,4/1/1984,Bantam Classics -7138,Crime and Punishment,Fyodor Dostoyevsky/Leonard Stanton/James D. Hardy Jr./Sidney Monas/Robin Feuer Miller,4.21,0451530063,9780451530066,en-US,560,2041,183,3/7/2006,Signet -7139,Crime and Punishment in American History,Lawrence M. Friedman,3.86,0465014879,9780465014873,eng,590,112,4,9/9/1994,Basic Books -7140,Crime and Punishment in America,Elliott Currie,3.83,0805060162,9780805060164,eng,240,69,11,10/15/1998,Picador -7141,Cliffsnotes on Dostoevsky's Crime and Punishment,James Lamar Roberts/Fyodor Dostoyevsky/CliffsNotes,3.72,0764586556,9780764586552,eng,128,30,0,11/7/2000,Cliffs Notes -7142,On Crimes and Punishments,Cesare Beccaria/David Young,3.92,0915144999,9780915144990,eng,129,1,0,11/1/1986,Hackett Publishing Company Inc. -7144,Crime and Punishment,Fyodor Dostoyevsky/David McDuff,4.21,0143058142,9780143058144,eng,671,483122,10265,12/31/2002,Penguin -7150,Crime and Punishment (Norton Critical Editions),Fyodor Dostoyevsky/George Gibian/Jessie Coulson,4.21,0393096335,9780393096330,eng,690,34,5,4/1/1964,Norton and Co. -7154,The Politics of Injustice: Crime and Punishment in America,Katherine Beckett/Theodore Sasson,3.87,0761929940,9780761929949,eng,272,37,2,10/16/2003,Sage Publications Inc -7160,The Beginning and the End,Naguib Mahfouz,4.08,0385264585,9780385264587,eng,412,363,41,9/20/1989,Anchor Books -7182,The Black Tulip,Alexandre Dumas/Robin Buss,3.80,0140448926,9780140448924,eng,246,10208,598,4/24/2003,Penguin Classics -7186,La Dame aux Camélias,Alexandre Dumas fils/David Coward,3.99,0192836382,9780192836380,eng,256,15211,411,3/30/2000,Oxford University Press -7188,The Women's War,Alexandre Dumas/Robin Buss,3.93,0140449779,9780140449778,eng,546,292,23,4/27/2006,Penguin Classics -7197,The Knight of Maison-Rouge,Alexandre Dumas/Julie Rose/Lorenzo Carcaterra,3.89,0812969634,9780812969634,eng,448,1172,70,9/14/2004,Modern Library -7199,The Way the Crow Flies,Ann-Marie MacDonald,4.09,0060586370,9780060586379,en-US,848,11330,1011,8/31/2004,Harper Perennial -7201,As the Crow Flies,Jeffrey Archer,4.10,0312997116,9780312997113,eng,800,16264,621,5/16/2004,St. Martin's Paperbacks -7208,Under The Tuscan Sun - At Home In Italy,Frances Mayes,3.75,0767902807,9780767902809,en-US,291,1036,171,8/10/1998,Broadway Books -7214,Blue Like Jazz: Nonreligious Thoughts on Christian Spirituality,Donald Miller,3.90,0785263705,9780785263708,eng,243,96614,3718,7/15/2003,Thomas Nelson -7220,The Secret Life of Bees,Sue Monk Kidd,4.05,0143036408,9780143036401,eng,302,1284,169,10/4/2005,Penguin Books -7230,The Wounded Healer: Ministry in Contemporary Society,Henri J.M. Nouwen,4.26,0232521026,9780232521023,eng,100,8024,317,11/1/1994,Darton Longman & Todd -7231,The Dance of Life: Weaving Sorrows and Blessings Into One Joyful Step,Henri J.M. Nouwen/Michael Ford,4.20,1594710872,9781594710872,eng,219,122,11,4/1/2006,Ave Maria Press -7240,The Prodigal Son (Roger the Chapman #15),Kate Sedley,4.07,0727891626,9780727891624,en-GB,252,102,10,2/1/2007,Severn House Publishers -7244,The Poisonwood Bible,Barbara Kingsolver,4.06,0060786507,9780060786502,eng,546,613758,19846,7/5/2005,Harper Perennial Modern Classics -7246,The Poisonwood Bible,Barbara Kingsolver,4.06,057120175X,9780571201754,eng,616,1390,187,1/10/2000,Faber and Faber -7252,How to Make Love Like a Porn Star: A Cautionary Tale,Jenna Jameson/Neil Strauss,3.76,0060539097,9780060539092,eng,592,10537,806,8/17/2004,It Books -7260,Dominion: The Power of Man the Suffering of Animals and the Call to Mercy,Matthew Scully,4.16,0312319738,9780312319731,eng,448,1171,135,10/8/2003,St. Martin's Griffin -7263,No Dominion (Joe Pitt #2),Charlie Huston,3.99,0345478258,9780345478252,eng,251,4698,202,12/26/2006,Del Rey -7264,Dominion (Ollie Chandler #2),Randy Alcorn,4.22,1590525930,9781590525937,eng,603,4180,104,5/1/2006,Multnomah Books -7266,O Is for Old Dominion: A Virginia Alphabet,Pamela Duncan Edwards/Troy Howell,3.76,1585361615,9781585361618,eng,40,20,5,9/30/2005,Sleeping Bear Press -7268,Dominion,Masamune Shirow,3.75,1569714886,9781569714881,eng,225,298,8,5/2/2000,Dark Horse Manga -7269,Essentials of Conservation Biology,Richard B. Primack,3.92,087893720X,9780878937202,eng,585,37,1,6/21/2007,Sinauer Associates -7271,Marine Conservation Biology: The Science of Maintaining the Sea's Biodiversity,Elliott A. Norse/Larry B. Crowder/Michael E. Soulé,4.59,1559636629,9781559636629,eng,496,16,2,5/9/2005,Island Press -7277,Key Topics in Conservation Biology,David W. Macdonald/Alonzo C. Addison/Sandra Baker/Mark S. Boyce/David Brown/Stephen Cobb/N. Mark Collins/C. Patrick Doncaster/John E. Fa/Joshua Ginsberg/Susanna B. Hecht/Katrina Service/Steve Albon/Les Firbank/Eli Geffen/Lise Albrechtsen/Elizabeth J. Asteraki/Christian Bonacic/Marcel Cardillo/Chris R. Dickman/Stephen A. Ellwood/H. Resit Akcakaya/Ruth E. Feber,3.33,1405122498,9781405122498,en-GB,307,3,0,1/1/2006,Wiley-Blackwell -7286,The Sawtooth Wolves,Jim Dutcher/Eric Baker/Greg Simpson/Richard Ballantine,4.58,0964991500,9780964991507,eng,191,38,2,1/1/1996,Rufus Publications -7304,Rainforest Home Remedies: The Maya Way To Heal Your Body and Replenish Your Soul,Rosita Arvigo/Nadine Epstein,4.13,006251637X,9780062516374,eng,221,66,7,1/9/2001,HarperOne -7315,Zolar's Encyclopedia and Dictionary of Dreams: Fully Revised and Updated for the 21st Century,Zolar,3.68,0743222636,9780743222631,en-US,480,72,4,6/8/2004,Atria Books -7321,The Complete Dream Dictionary,Pamela Ball,3.68,0785812148,9780785812142,eng,390,36,0,4/1/2000,Booksales -7331,Letters from Father Christmas,J.R.R. Tolkien/Baillie Tolkien,4.25,0618512659,9780618512652,eng,111,7043,767,11/15/2004,Mariner Books -7332,The Silmarillion,J.R.R. Tolkien/Christopher Tolkien/Ted Nasmith,3.92,0618391118,9780618391110,eng,386,166136,4750,11/15/2004,Houghton Mifflin Company -7336,J.R.R. Tolkien: A Biography,Humphrey Carpenter,4.08,0618057021,9780618057023,eng,288,9057,312,6/6/2000,Mariner Books -7337,The Tolkien Reader,J.R.R. Tolkien/Peter S. Beagle,3.99,0345345061,9780345345066,eng,251,4200,145,11/12/1986,Del Rey -7338,Tolkien on Film: Essays on Peter Jackson's The Lord of the Rings,Janet Brennan Croft/Mark P. Shea/Amy H. Sturgis,3.79,1887726098,9781887726092,eng,323,39,2,5/9/2005,Mythopoeic Press -7339,The Monsters and the Critics and Other Essays,J.R.R. Tolkien/Christopher Tolkien,3.93,026110263X,9780261102637,eng,240,3441,78,5/2/2006,HarperCollins -7340,The Maps of Tolkien's Middle-earth,Brian Sibley/John Howe/J.R.R. Tolkien,4.14,061839110X,9780618391103,eng,80,7649,31,10/2/2003,Houghton Mifflin Harcourt -7341,The Gospel According to Tolkien: Visions of the Kingdom in Middle-Earth,Ralph C. Wood,4.09,0664226108,9780664226107,eng,169,577,67,10/31/2003,Westminster John Knox Press -7342,The Treason of Isengard: The History of The Lord of the Rings Part Two (The History of Middle-earth #7),J.R.R. Tolkien/Christopher Tolkien,4.17,0261102206,9780261102200,eng,465,102,5,2/4/2002,HarperCollins -7343,Tolkien and the Great War: The Threshold of Middle-earth,John Garth,3.71,0618574816,9780618574810,en-US,398,6230,109,6/1/2005,Mariner Books -7344,Tolkien and C.S. Lewis: The Gift of a Friendship,Colin Duriez,4.01,1587680262,9781587680267,eng,244,1354,53,10/8/2003,Paulist Press -7347,The Book of Lost Tales Part One (The History of Middle-Earth #1),J.R.R. Tolkien/Christopher Tolkien,3.83,0345375211,9780345375216,eng,367,10727,203,6/1/1992,Del Rey/Ballantine Books -7348,Tree and Leaf: Includes Mythopoeia and The Homecoming of Beorhtnoth,J.R.R. Tolkien,4.05,0007105045,9780007105045,eng,150,2357,97,2/5/2001,HarperCollins Publishers Ltd -7351,The Lord of the Rings: The Making of the Movie Trilogy,Brian Sibley/Ian McKellen,4.47,0618260226,9780618260225,eng,192,8051,34,11/6/2002,Mariner Books -7352,Tolkien: A Look Behind The Lord of the Rings,Lin Carter,3.76,0345215508,9780345215505,eng,211,13,0,8/12/1972,Ballantine Books (NY) -7353,The Lord of the Rings (The Lord of the Rings #1-3),J.R.R. Tolkien/Rob Inglis,4.50,1402516274,9781402516276,eng,56,151,16,2/22/2002,Recorded Books Inc. -7360,Midnight in the Garden of Good and Evil,John Berendt,3.92,0679643419,9780679643418,eng,388,983,79,9/27/2005,Modern Library -7361,Tom's Midnight Garden,Philippa Pearce,4.07,0140364544,9780140364545,eng,238,155,10,10/28/1993,Puffin Books -7366,Animals in Translation: Using the Mysteries of Autism to Decode Animal Behavior,Temple Grandin/Catherine Johnson,4.14,0156031442,9780156031448,eng,358,7633,975,1/2/2006,Harcourt -7370,God's Covenant with Animals: A Biblical Basis for the Humane Treatment of All Creatures,J.R. Hyland,4.00,1930051158,9781930051157,eng,128,15,4,6/1/2000,Lantern Books -7375,Lafayette,Harlow Giles Unger,4.37,0471468851,9780471468851,eng,452,660,92,11/1/2003,Wiley (TP) -7388,My Pride and Joy: An Autobiography,George Adamson,4.23,0671624970,9780671624972,en-US,304,134,12,12/31/1987,Simon & Schuster -7389,Runaways Vol. 1: Pride and Joy,Brian K. Vaughan/Adrian Alphona,3.97,0785113797,9780785113799,eng,144,24754,859,12/6/2006,Marvel -7393,Sky's Pride and Joy (Bachelor Gulch #8),Sandra Steffen,3.33,0373194862,9780373194865,eng,192,3,0,11/24/2000,Silhouette Romance -7400,The Baby Emergency (Tennengarrah Clinic #1),Carol Marinelli,3.60,0263181499,9780263181494,eng,285,0,0,6/1/2004,Mills & Boon -7415,The Shaping of America: A Geographical Perspective on 500 Years of History: Volume 2: Continental America 1800-1867,D.W. Meinig,4.19,0300062907,9780300062908,eng,636,26,2,2/22/1995,Yale University Press -7420,The Basic Bakunin,Mikhail Bakunin/Robert M. Cutler,3.77,0879757450,9780879757458,eng,248,100,3,5/1/1992,Prometheus Books -7422,Berlioz: Servitude and Greatness 1832-1869 (Volume 2),David Cairns,4.27,0520240588,9780520240582,en-US,907,3,0,10/1/2003,University of California Press -7430,The Nubian Prince,Juan Bonilla/Esther Allen,3.54,0805077812,9780805077810,en-US,258,61,10,6/27/2006,Metropolitan Books -7432,Pardonable Lies (Maisie Dobbs #3),Jacqueline Winspear,4.09,0312426216,9780312426217,eng,359,23318,1704,6/27/2006,Picador USA -7437,Naked Lunch,William S. Burroughs/James Grauerholz/Barry Miles,3.46,0802140181,9780802140180,eng,289,65998,2497,1/26/2004,Grove Press -7439,Naked Lunch: The Restored Text,William S. Burroughs,3.46,0007204442,9780007204441,eng,289,509,65,5/3/2005,HarperCollins Publishers -7444,The Electric Kool-aid Acid Test/The Kandy Kolored Tangerine Flake Streamline Baby/Radical Chic & Mau Mauing the Flak Catchers,Tom Wolfe,3.97,0965079929,9780965079921,eng,943,299,14,12/1/1990,Quality Paperback Book Club -7445,The Glass Castle,Jeannette Walls,4.27,074324754X,9780743247542,eng,288,808656,46176,1/17/2006,Scribner -7453,Same Sex in the City,Lauren Levin/Lauren Blitzer,3.62,1416916326,9781416916321,eng,250,389,37,6/1/2006,Gallery Books -7454,Sex and the City: Kiss and Tell,Amy Sohn/Sarah Jessica Parker,4.01,0743456815,9780743456814,en-US,160,86,6,10/15/2002,Pocket Books -7477,Human Traces,Sebastian Faulks,3.63,0375502262,9780375502262,en-US,563,39,12,9/30/2006,Random House (NY) -7480,The Girl at the Lion d'Or,Sebastian Faulks,3.58,0375704531,9780375704536,eng,246,4630,272,12/7/1999,Vintage -7482,Human Traces,Sebastian Faulks,3.63,0099458268,9780099458265,eng,793,3541,274,7/6/2006,Vintage -7493,Founding Brothers: The Revolutionary Generation,Joseph J. Ellis,3.93,0375705244,9780375705243,eng,290,37996,1631,2/5/2002,BALLANTINE BOOKS -7494,Suzanne's Diary for Nicholas,James Patterson,4.17,0446611085,9780446611084,eng,289,131662,4267,8/1/2003,Vision -7501,Hitler's Willing Executioners: Ordinary Germans and the Holocaust,Daniel Jonah Goldhagen,3.68,0349107866,9780349107868,en-GB,634,87,7,3/3/1997,Abacus -7503,Hitler's Willinge Vollstrecker: Ganz gewöhlnliche Deutsche und der Holocaust,Daniel Jonah Goldhagen,3.68,344275500X,9783442755004,ger,728,6,1,7/1/1999,Wilhelm Goldmann Verlag GmbH -7505,Beach Girls,Luanne Rice,4.06,0553587242,9780553587241,eng,448,8113,234,8/3/2004,Bantam -7510,The Beach House,James Patterson/Peter de Jonge,3.84,0446612545,9780446612548,eng,356,74386,1674,5/1/2003,Grand Central Publishing -7512,The Beach House (Beach House #1),Mary Alice Monroe,4.20,0778322947,9780778322948,eng,491,10716,1029,4/25/2006,Mira Books -7515,The Beach House,James Patterson/Peter de Jonge,3.84,0316969680,9780316969680,eng,358,717,57,6/10/2002,Little Brown and Company -7520,Path of the Assassin (Scot Harvath #2),Brad Thor,4.17,141651631X,9781416516316,eng,367,15270,485,7/1/2005,Pocket Books -7524,Presidential Assassins (History Makers),Patricia D. Netzley,3.60,1560066237,9781560066231,eng,112,5,1,9/1/1999,Lucent Books -7526,The Blind Side: Evolution of a Game,Michael Lewis,4.18,039306123X,9780393061239,eng,304,24677,1924,9/17/2006,W. W. Norton Company -7527,The Blind Watchmaker,Richard Dawkins,4.08,0393315703,9780393315707,eng,468,1093,77,9/17/1996,W. W. Norton Company -7529,I Love Everybody (and Other Atrocious Lies),Laurie Notaro,3.97,0812969006,9780812969009,en-US,228,9648,587,6/8/2004,Villard Books -7530,Autobiography of a Fat Bride: True Tales of a Pretend Adulthood,Laurie Notaro,3.98,037576092X,9780375760921,en-US,257,8009,455,7/8/2003,Villard -7531,The Idiot Girls' Action-Adventure Club: True Tales from a Magnificent and Clumsy Life,Laurie Notaro,3.88,0375760911,9780375760914,en-GB,225,16133,1099,7/2/2002,Villard -7533,We Thought You Would Be Prettier: True Tales of the Dorkiest Girl Alive,Laurie Notaro,3.92,0812969014,9780812969016,eng,223,10040,439,4/19/2005,Villard -7534,There's a (Slight) Chance I Might Be Going to Hell: A Novel of Sewer Pipes Pageant Queens and Big Trouble,Laurie Notaro,3.55,1400065011,9781400065011,eng,320,36,8,5/29/2007,Villard -7536,Anleitung zum Zickigsein,Laurie Notaro,3.88,3404149475,9783404149476,ger,254,2,1,8/1/2003,Lübbe -7543,The Psychology of Winning,Denis Waitley,4.21,0425099997,9780425099995,eng,176,1332,64,10/15/1986,Berkley -7549,Jimmy Corrigan: El Chico más Listo del Mundo,Chris Ware,4.09,1594972079,9781594972072,spa,380,12,1,7/25/2006,Public Square Books -7551,The Acme Novelty Library #17,Chris Ware,4.35,1897299028,9781897299029,eng,64,772,21,11/28/2006,Drawn and Quarterly -7552,The Acme Novelty Library,Chris Ware,4.31,0375422951,9780375422959,en-US,108,2786,77,9/20/2005,Pantheon Books -7554,The Acme Novelty Datebook Vol. 1 1986-1995,Chris Ware,4.17,1896597661,9781896597669,eng,208,504,23,11/26/2013,Drawn and Quarterly -7556,Quimby The Mouse,Chris Ware,4.09,022407265X,9780224072656,en-US,69,1411,32,11/20/2003,Jonathan Cape -7559,Candide: or Optimism,Voltaire/Chris Ware/Theo Cuffe/Michael Wood,3.77,0143039423,9780143039426,eng,155,1929,193,10/25/2005,Penguin Group -7572,Even Cowgirls Get the Blues,Tom Robbins,3.76,1842430246,9781842430248,eng,366,44664,1483,10/11/2001,No Exit Press -7577,Even Cowgirls Get the Blues & My Own Private Idaho,Gus Van Sant/Tom Robbins,3.76,0571169201,9780571169207,eng,199,97,2,2/21/1994,Faber Faber -7579,Awakening the Buddha Within: Eight Steps to Enlightenment,Surya Das,4.19,0767901576,9780767901574,en-US,432,12034,285,6/15/1998,Harmony -7580,Iran Awakening: A Memoir of Revolution and Hope,Shirin Ebadi,4.14,1400064708,9781400064700,eng,232,3187,267,5/2/2006,Random House (NY) -7581,The Book of Awakening: Having the Life You Want by Being Present to the Life You Have,Mark Nepo,4.31,1573241172,0645241001173,eng,438,5495,295,5/31/2000,Conari Press -7582,Awakening Intuition: Using Your Mind-Body Network for Insight and Healing,Mona Lisa Schulz/Christiane Northrup,3.93,0609804243,9780609804247,eng,397,317,32,4/20/1999,Three Rivers Press -7584,The Grace Awakening: Believing in Grace Is One Thing. Living it Is Another,Charles R. Swindoll,4.33,0849911885,9780849911880,eng,306,2068,63,11/19/2006,Thomas Nelson -7585,Spring's Awakening,Frank Wedekind/Eric Bentley,3.80,1557832455,9781557832450,eng,126,3378,137,4/1/2000,Applause Books -7586,Awakening at Midlife: A Guide to Reviving Your Spirit Recreating Your Life and Returning to Your Truest Self,Kathleen A. Brehony,3.99,1573226327,9781573226325,en-US,384,64,8,9/1/1997,Riverhead Books -7588,A Portrait of the Artist as a Young Man,James Joyce/Seamus Deane,3.61,0142437344,9780142437346,eng,329,108179,3536,3/25/2003,Penguin Classics -7590,A Portrait of the Artist As a Young Man,James Joyce/Walter Hettche/Hans Walter Gabler/John Paul Riquelme/John Mitchel/Michael Davitt/Canon Doyle/Pádraic Pearse/Ignatius of Loyola/Giovanni Pietro Pinamont/Walter Pater/Oscar Wilde/Douglas Hyde/Kenneth Burke/Umberto Eco/Hugh Kenner/Hélène Cixous/Karen Lawrence/Maud Ellmann/Bonnie Kime Scott/Joseph Valente/Marian Eide/Pericles Lewis/Jonathan Mulrooney/J.M. Synge,3.61,0393926796,9780393926798,eng,490,359,35,5/1/2007,W. W. Norton & Company -7591,A Portrait of the Artist as a Young Man,James Joyce/Jim Norton,3.61,9626343664,9789626343661,eng,368,27,8,8/1/2005,Naxos Audiobooks -7592,A Portrait of the Artist as a Young Man,James Joyce/Langdon Hammer,3.61,0451530152,9780451530158,eng,256,419,46,6/6/2006,Signet Classics -7596,Vincent Van Gogh: Portrait of an Artist,Jan Greenberg/Sandra Jordan,3.94,0440419174,9780440419174,eng,144,220,38,1/14/2003,Yearling -7598,A Study Guide to Gabriel Garcia Marquez' One Hundred Years of Solitude,Gabriel García Márquez/Brenda K. Marshall/F. Murray Abraham,4.11,1570421129,9781570421129,eng,0,75,2,4/1/2006,Warner Adult -7599,One Hundred Years of Solitude,Gabriel García Márquez/Gregory Rabassa,4.07,006112009X,9780061120091,eng,448,1608,212,5/30/2006,Harper Perennial Modern Classics -7600,One Hundred Years Of Solitude,Gabriel García Márquez,4.07,1857152239,9781857152234,eng,416,376,53,9/21/1995,Everyman -7603,Reading Lolita in Tehran: A Memoir in Books,Azar Nafisi,3.61,081297106X,9780812971064,eng,356,106493,6561,12/30/2003,Random House Trade Paperbacks -7606,The Annotated Lolita,Vladimir Nabokov/Alfred Appel,4.28,0679727299,9780679727293,eng,457,2965,358,4/23/1991,Vintage Books -7608,Lolita,Vladimir Nabokov/Jeremy Irons,3.89,0739322060,9780739322062,eng,12,787,239,4/26/2005,Random House Audio -7609,Nacho and Lolita,Pam Muñoz Ryan/Claudia Rueda,3.97,0439269687,9780439269681,eng,40,34,5,10/1/2005,Scholastic Press -7610,Reading Lolita in Tehran,Azar Nafisi,3.61,0007178484,9780007178483,eng,343,325,56,1/2/2004,Fourth Estate -7611,sex.lies.murder.fame.,Lolita Files,3.79,0060786809,9780060786809,eng,368,205,27,1/10/2006,Amistad -7613,Animal Farm,George Orwell/Boris Grabnar/Peter Škerl,3.93,0452284244,9780452284241,eng,122,2111750,29677,5/6/2003,NAL -7615,Farm Animals (A Chunky Book),Phoebe Dunn,3.86,0394862546,9780394862545,eng,28,35,4,2/12/1984,Random House Books for Young Readers -7624,Lord of the Flies,William Golding,3.68,0140283331,9780140283334,eng,182,2036679,26199,10/1/1999,Penguin Books -7633,Good Soldier Svejk And His Fortunes In The World,Jaroslav Hašek,4.11,0141184280,9780141184289,eng,752,91,10,10/3/2000,Penguin Classic -7637,The Good Soldier,Ford Madox Ford/Frank Kermode,3.72,1593082681,9781593082680,eng,256,264,35,3/28/2005,Barnes Noble Classics -7656,Fahrenheit 451,Ray Bradbury,3.99,8445074873,9788445074879,eng,186,5733,606,4/1/2004,Del Rey -7661,Next,Michael Crichton,3.50,0060872985,9780060872984,eng,431,59354,2540,11/28/2006,Harper -7662,Three Complete Novels: The Andromeda Strain / The Terminal Man / The Great Train Robbery,Michael Crichton,4.06,0517084791,9780517084793,eng,688,1004,31,3/1/1993,Wings -7663,A Case of Need,Jeffery Hudson/Michael Crichton,3.72,0451210638,9780451210630,eng,416,17135,654,8/5/2003,Signet -7664,A New Collection of Three Complete Novels: Congo / Sphere / Eaters of the Dead,Michael Crichton,3.99,0517101351,9780517101353,eng,720,960,27,3/6/1994,Wings Books -7665,Travels,Michael Crichton,3.95,0060509058,9780060509057,eng,400,7084,514,11/5/2002,Harpperen -7668,Rising Sun,Michael Crichton,3.63,0606298231,9780606298230,eng,399,42645,717,8/30/2004,Turtleback Books -7670,The Andromeda Strain (Andromeda #1),Michael Crichton,3.89,0060541814,9780060541811,eng,327,202043,2850,10/28/2003,Avon Books -7672,Congo,Michael Crichton,3.59,0060541830,9780060541835,eng,442,144636,1546,10/28/2003,Avon Books -7673,Eaters of the Dead,Michael Crichton,3.67,0060891564,9780060891565,eng,304,28367,1096,8/29/2006,Avon -7674,The Michael Crichton Collection: Airframe / The Lost World / Timeline,Michael Crichton/Stephen Lang/Anthony Heald/Blair Brown,4.16,0739340336,9780739340332,en-GB,0,267,7,8/29/2006,Random House Audio -7677,Jurassic Park (Jurassic Park #1),Michael Crichton,4.02,030734813X,9780307348135,spa,480,451443,3647,4/4/2006,Plaza y Janes -7679,The Terminal Man,Michael Crichton,3.36,0060092572,9780060092573,eng,266,21457,576,11/5/2002,Avon -7681,Five Patients,Michael Crichton,3.48,0345354648,9780345354648,eng,204,4828,97,1/13/1989,Ballantine Books -7684,Twister,Michael Crichton/Anne-Marie Martin,3.63,0345409701,9780345409706,eng,182,18,1,4/7/1999,Ballantine Books -7687,Peter Pan and Other Plays,J.M. Barrie/Peter Hollindale,3.97,0192839195,9780192839190,eng,384,366,21,7/15/1999,Oxford University Press -7694,Management Information Systems: Managing the Digital Firm,Kenneth C. Laudon/Jane P. Laudon,3.50,0131538411,9780131538412,en-US,736,231,16,3/1/2005,Prentice Hall -7695,Holy the Firm,Annie Dillard,4.22,0060915439,9780060915438,eng,76,3722,339,12/30/1998,Harper Perennial -7697,Persian Mirrors: The Elusive Face of Iran,Elaine Sciolino,3.82,0743284798,9780743284790,eng,432,546,53,10/3/2005,Free Press -7700,Plays: Mrs Warren's Profession/Man and Superman/Major Barbara/Pygmalion,George Bernard Shaw/Sandie Byrne,3.94,0393977536,9780393977530,eng,551,125,6,5/16/2002,W.W. Norton & Company -7707,Pygmalion & My Fair Lady,George Bernard Shaw/Alan Jay Lerner,4.26,0451530098,9780451530097,eng,240,14962,61,3/7/2006,Signet -7708,Saint Joan/Major Barbara/Androcles and the Lion,George Bernard Shaw,3.67,0394604806,9780394604800,eng,479,11,5,11/12/1979,Modern Library/Random House (NY) -7714,Pygmalion,George Bernard Shaw,3.90,0486282228,9780486282220,eng,82,76944,1636,10/20/1994,Dover Publications -7716,Plays Pleasant,George Bernard Shaw/Dan H. Laurence/W.J. McCormack,3.90,0140437940,9780140437942,eng,336,265,10,3/27/2003,Penguin Classics -7717,The Metamorphosis,Peter Kuper/Franz Kafka/Kerstin Hasenpusch,3.79,1400047951,9781400047956,eng,78,181,26,8/5/2003,Crown -7718,The Metamorphosis (Graphic Novel Adaptation),Peter Kuper/Franz Kafka/Kerstin Hasenpusch,3.79,1400052998,9781400052998,eng,80,3192,307,7/20/2004,Broadway Books -7721,The Metamorphosis,Franz Kafka/Stanley Corngold,3.81,0393967972,9780393967975,eng,232,663,48,2/17/1996,W. W. Norton & Company -7723,The Metamorphosis and Other Stories,Franz Kafka/Jason Baker/Donna Freed,4.03,1593080298,9781593080297,eng,224,38114,793,7/1/2003,Barnes Noble Classics -7724,The Metamorphosis and Other Stories,Franz Kafka/Stanley Appelbaum,4.03,0486290301,9780486290300,eng,88,2474,126,4/12/1996,Dover Publications -7731,Antigone's Claim: Kinship Between Life and Death,Judith Butler,3.76,0231118953,9780231118958,en-US,118,433,20,5/23/2002,Columbia University Press -7733,Gulliver's Travels,Jonathan Swift/Robert DeMaria Jr.,3.57,0141439491,9780141439495,eng,306,194738,3485,1/30/2003,Penguin -7734,Gulliver's Travels,Jonathan Swift/Claude Julien Rawson/Ian Higgins,3.57,0192805347,9780192805348,eng,422,258,21,3/10/2005,Oxford University Press -7737,Gulliver's Travels,Jonathan Swift/David Case,3.57,1400102723,9781400102723,eng,0,4,1,10/1/2006,Tantor Media -7739,Gulliver's Travels,Gill Harvey/Jonathan Swift,3.35,0794503292,9780794503291,eng,64,13,3,1/29/2008,Usborne Books -7740,Gulliver's Travels,Martin Woodside/Jamel Akib/Arthur Pober/Jonathan Swift,3.97,1402726627,9781402726620,eng,160,933,26,3/28/2006,Sterling -7741,Gulliver's Travels,Jonathan Swift/Robert Hardy,3.57,1844560341,9781844560349,eng,3,8,0,1/1/2001,Hodder Audio -7742,Ahab's Wife or The Star-Gazer,Sena Jeter Naslund,4.03,0060838744,9780060838744,eng,704,40049,2391,8/2/2005,William Morrow Paperbacks -7747,Fear and Loathing in Las Vegas,Hunter S. Thompson/Ralph Steadman,4.08,0007204493,9780007204496,eng,230,3472,251,4/4/2005,Harper Perennial -7748,Fear and Loathing on the Campaign Trail '72,Hunter S. Thompson,4.12,0446698229,9780446698221,eng,481,17227,662,10/1/2006,Warner Books (NY) -7749,Fear and Loathing in Las Vegas,Hunter S. Thompson/Ralph Steadman,4.08,0446313939,9780446313933,eng,208,274,28,12/1/1982,Warner Books -7752,Fear and Loathing in America: The Brutal Odyssey of an Outlaw Journalist 1968-1976,Hunter S. Thompson,4.08,0684873168,9780684873169,eng,784,3787,84,12/4/2001,Simon Schuster -7757,Cliffsnotes on Beckett's Waiting for Godot and Other Plays,James Lamar Roberts/Jeffrey Fisher,3.67,0822013541,9780822013549,eng,72,3,0,7/28/1980,Cliffs Notes -7763,The Joy Luck Club,Amy Tan,3.92,0143038095,9780143038092,eng,288,565524,7255,9/21/2006,Penguin Books -7769,Dr. Seuss's ABC,Dr. Seuss,4.08,0679882812,9780679882817,eng,21,27139,731,11/26/1996,Random House -7772,Dr. Seuss's Sleep Book,Dr. Seuss,4.17,0394800915,9780394800912,eng,58,8967,351,7/24/2012,New York: Random House -7775,Happy Birthday to You!,Dr. Seuss,4.13,0394800761,9780394800769,eng,64,4344,262,8/12/1959,Random House Books for Young Readers -7777,McElligot's Pool,Dr. Seuss,4.06,0394800834,9780394800837,eng,64,4560,253,9/12/1947,Random House Books for Young Readers -7778,The Cat in the Hat,Dr. Seuss,4.17,0679891110,9780679891116,eng,61,289,4,11/11/1997,Random House Books for Young Readers -7779,Horton Hears a Who!,Dr. Seuss,4.18,0679800034,9780679800033,eng,64,89920,1207,10/10/1990,Random House Books for Young Readers -7781,The 500 Hats of Bartholomew Cubbins,Dr. Seuss,4.04,039484484X,9780394844848,eng,56,13097,324,12/9/1989,Random House Books for Young Readers -7783,Oh Say Can You Say?,Dr. Seuss,4.01,0007175221,9780007175222,eng,36,5868,162,11/1/2005,London : Collins 2004. -7784,The Lorax,Dr. Seuss,4.35,0679889108,9780679889106,eng,72,260054,3532,2/24/1998,Random House Books for Young Readers -7785,I Can Read With My Eyes Shut!,Dr. Seuss,4.20,0007158513,9780007158515,eng,48,16917,444,5/6/2003,HarperCollinsChildren’sBooks -7786,¡Horton escucha a quién!,Dr. Seuss/Yanitzia Canetti,4.18,1930332351,9781930332355,spa,64,29,4,3/1/2003,Lectorum Publications -7788,The Cat in the Hat and Other Dr. Seuss Favorites,Dr. Seuss/Various,4.42,0807218731,9780807218730,eng,61,50844,160,10/14/2003,Listening Library (Audio) -7789,Daisy-Head Mayzie,Dr. Seuss,3.87,0679867120,9780679867128,eng,56,3196,137,1/11/1995,Random House Books for Young Readers -7791,Dr. Seuss Goes to War: The World War II Editorial Cartoons of Theodor Seuss Geisel,Richard H. Minear/Art Spiegelman/Dr. Seuss,4.16,1565847040,9781565847040,eng,272,1282,102,9/1/2001,The New Press -7793,Dr. Seuss's ABC (Book & CD),Dr. Seuss,4.08,0375834966,9780375834967,eng,64,8,0,1/5/2005,Random House Books for Young Readers -7796,Cattus Petasatus: The Cat in the Hat in Latin,Dr. Seuss/Jennifer Morrish Tunberg/Terence Tunberg/Terence O. Tunberg/Guenevera Tunberg/Terentio Tunberg,4.17,0865164711,9780865164710,lat,75,63,9,5/6/2005,Bolchazy-Carducci Publishers -7797,Ten Apples Up On Top!,Theo LeSieg/Dr. Seuss/Roy McKie,4.12,0007169973,9780007169979,eng,62,31251,494,8/4/2003,HarperCollinsChildren’sBooks -7803,The Legacy of Luna: The Story of a Tree a Woman and the Struggle to Save the Redwoods,Julia Butterfly Hill,3.95,0062516590,9780062516596,eng,262,1844,220,4/3/2001,HarperOne -7805,Pale Fire,Vladimir Nabokov,4.15,0141185260,9780141185262,eng,246,32544,1610,8/31/2000,Penguin Books Ltd -7806,Nabokov's Pale Fire: The Magic of Artistic Discovery,Brian Boyd,4.22,0691089574,9780691089577,eng,320,172,22,11/4/2001,Princeton University Press -7807,Novels 1955–1962: Lolita / Pnin / Pale Fire / Lolita: A Screenplay,Vladimir Nabokov/Brian Boyd,4.41,1883011191,9781883011192,eng,916,547,39,10/1/1996,Library of America -7811,A Friend of the Earth,T. Coraghessan Boyle,3.67,0747553467,9780747553465,eng,275,30,3,10/8/2001,Bloomsbury Paperbacks -7815,The Year of Magical Thinking,Joan Didion,3.89,1400078431,9781400078431,eng,227,120758,8711,2/13/2007,Vintage -7821,Seduction and Betrayal: Women and Literature,Elizabeth Hardwick/Joan Didion,4.01,0940322781,9780940322783,eng,224,269,26,8/31/2001,NYRB Classics -7830,After Henry,Joan Didion,3.83,0679745394,9780679745396,eng,320,1205,100,4/27/1993,Vintage -7838,O Ano do Pensamento Mágico,Joan Didion,3.89,8520918867,9788520918869,por,224,82,9,5/24/2006,Nova Fronteira -7841,Another Day in Paradise: The Fourth Sherman's Lagoon Collection,Jim Toomey,4.35,0740720120,9780740720123,eng,130,68,1,9/6/2001,Andrews McMeel Publishing -7842,Another Day in Cubicle Paradise,Scott Adams,4.01,0740721941,9780740721946,eng,128,416,11,3/1/2002,Andrews McMeel Publishing -7845,Moby Dick,Herman Melville,3.50,0140620621,9780140620627,eng,536,701,78,1/1/1994,Penguin Books/Penguin Popular Classics -7847,Moby-Dick,Herman Melville/Nathaniel Philbrick,3.50,0142000086,9780142000083,en-US,625,1022,165,9/1/2001,Penguin Books -7848,Moby-Dick; or The Whale,Herman Melville/Rockwell Kent/Elizabeth Hardwick,3.50,067978327X,9780679783275,eng,896,557,87,10/10/2000,Modern Library -7849,Moby Dick or The Whale,Herman Melville/Harrison Hayford/Hershel Parker,3.50,0810119110,9780810119116,en-US,573,106,19,9/19/2001,Northwestern University Press -7850,The Girl in the Flammable Skirt,Aimee Bender,3.88,0385492162,9780385492164,eng,192,6591,661,8/17/1999,Anchor -7855,Planet of Slums,Mike Davis,3.92,1844670228,9781844670222,eng,228,1727,173,3/1/2006,Verso -7859,Late Victorian Holocausts: El Niño Famines and the Making of the Third World,Mike Davis,4.11,1859843824,9781859843826,eng,474,1021,101,6/17/2002,Verso -7861,No One Is Illegal: Fighting Racism and State Violence on the U.S.-Mexico Border,Justin Akers Chacón/Mike Davis,4.08,1931859353,9781931859356,eng,240,237,22,4/1/2006,Haymarket Books -7865,Days Between Stations,Steve Erickson,4.00,0743265696,9780743265690,eng,256,709,49,2/9/2005,Simon & Schuster -7869,The Bourne Identity (Jason Bourne #1),Robert Ludlum,4.02,0752864327,9780752864327,eng,566,368195,3556,3/24/2005,Orion -7881,Little Plum,Rumer Godden/Jean Primrose,4.22,0140307370,9780140307375,eng,144,11,1,8/1/1987,Puffin Books -7890,Betsy's Wedding (Betsy-Tacy #10),Maud Hart Lovelace/Vera Neville,4.31,0064405443,9780064405447,en-US,260,4169,155,3/31/1996,HarperTrophy -7891,Betsy and the Great World (Betsy-Tacy #9),Maud Hart Lovelace/Vera Neville,4.14,0064405451,9780064405454,eng,321,4747,148,3/31/1996,HarperTrophy -7894,Betsy and Tacy Go Over the Big Hill (Betsy-Tacy #3),Maud Hart Lovelace/Lois Lenski,4.18,0064400999,9780064400992,en-US,192,7809,186,4/5/2000,HarperCollins -7895,Maud Hart Lovelace's Deep Valley: A Guidebook of Mankato Places in the Betsy-Tacy Series,Julie A. Schrader,4.29,0971316821,9780971316829,eng,325,58,8,12/31/2002,Minnesota Heritage Publishing -7896,Early Candlelight,Maud Hart Lovelace/Rhoda R. Gilman,3.69,0873512693,9780873512695,eng,342,184,30,8/15/1992,Minnesota Historical Society Press -7898,Betsy and Joe (Betsy-Tacy #8),Maud Hart Lovelace/Vera Neville,4.31,006440546X,9780064405461,eng,336,4586,119,3/31/1995,HarperTrophy -7901,Betsy Was a Junior (Betsy-Tacy #7),Maud Hart Lovelace/Vera Neville,4.17,0064405478,9780064405478,en-US,320,4839,126,3/31/1995,HarperTrophy -7905,Betsy and Tacy Go Downtown (Betsy-Tacy #4),Maud Hart Lovelace/Lois Lenski,4.21,0690134495,9780690134490,eng,180,70,7,1/1/1943,Thomas Y. Crowell Company -7906,Emily of Deep Valley (Deep Valley #2),Maud Hart Lovelace/Vera Neville,4.23,0064408582,9780064408585,eng,304,2722,151,12/31/2000,HarperTrophy -7909,Betsy-Tacy (Betsy-Tacy #1),Maud Hart Lovelace/Lois Lenski,4.07,0064400964,9780064400961,en-US,144,20976,935,8/14/2007,HarperCollins -7911,Five Little Peppers and How They Grew (Five Little Peppers #1),Margaret Sidney,4.03,1416916172,9781416916178,eng,352,22023,395,6/1/2006,Aladdin -7914,Five Little Peppers at School,Margaret Sidney/Barbara Cooney,3.92,044040035X,9780440400356,eng,320,243,7,1/1/1988,Yearling -7924,All-of-a-Kind Family Uptown (All-of-a-Kind-Family #4),Sydney Taylor,4.28,0929093097,9780929093093,eng,160,5702,65,4/1/2001,Taylor Productions Ltd -7926,All-of-a-Kind Family (All-of-a-Kind-Family #1),Sydney Taylor,4.22,0385732953,9780385732956,eng,188,21620,836,8/23/2005,Delacorte Press -7938,Winter Cottage,Carol Ryrie Brink,4.15,0020419708,9780020419709,eng,178,182,37,6/1/1974,Atheneum -7946,Eddie's Valuable Property,Carolyn Haywood,4.09,0688320147,9780688320140,eng,192,43,3,3/1/1975,William Morrow & Company -7955,Empire (Empire #1),Orson Scott Card,3.43,0765316110,9780765316110,en-US,352,8577,756,11/28/2006,Tor Books -7956,Treason,Orson Scott Card,3.90,0765309041,9780765309044,eng,288,6234,337,1/24/2006,Orb Books -7957,First Meetings in Ender's Universe (Ender's Saga #0.5),Orson Scott Card,3.84,0765347989,9780765347985,eng,212,10475,496,9/1/2004,Tor -7958,Sarah (Women of Genesis #1),Orson Scott Card,3.88,0765341174,9780765341174,eng,341,9828,1004,9/17/2001,Forge -7959,Rachel & Leah (Women of Genesis #3),Orson Scott Card,3.85,0765341298,9780765341297,en-GB,368,5618,514,11/29/2005,Forge Books -7960,How to Write Science Fiction and Fantasy,Orson Scott Card,3.90,0898794161,9780898794168,eng,140,475,66,7/15/1990,F & W Publications Inc. -7961,Saints,Orson Scott Card,3.54,0312876068,9780312876067,eng,608,2436,268,3/14/2001,Forge Books -7965,Homebody,Orson Scott Card,3.39,0061093998,9780061093999,eng,430,2707,167,1/25/1999,HarperTorch -7966,Rebekah (Women of Genesis #2),Orson Scott Card,3.84,076534128X,9780765341280,eng,416,7487,617,3/27/2012,Forge -7967,Speaker for the Dead (Ender's Saga #2),Orson Scott Card,4.07,0812550757,9780812550757,eng,382,190379,6637,8/15/1994,Tor Books -7968,Red Prophet (Tales of Alvin Maker #2),Orson Scott Card,3.79,0812524268,9780812524260,en-US,311,18228,427,7/15/1992,Tor Fantasy -7971,The Call of Earth (Homecoming #2),Orson Scott Card,3.58,0812532619,9780812532616,eng,352,10268,164,1/15/1994,Tor Books -7972,Shadow of the Hegemon (Shadow #2),Orson Scott Card/David Birney/Scott Brick/Gabrielle de Cuir/Scott Sowers,3.95,1593974809,9781593974800,eng,13,109,19,9/5/2006,Macmillan Audio -7973,Enchantment,Orson Scott Card,3.90,0345482409,9780345482402,eng,422,23534,2199,5/31/2005,Del Rey -7974,Voyage of Slaves (Flying Dutchman #3),Brian Jacques/David Elliot,4.13,0399245499,9780399245497,en-US,356,2288,69,9/14/2006,Philomel Books -7975,High Rhulain (Redwall #18),Brian Jacques/David Elliot,4.12,0399242082,9780399242083,eng,341,134,11,9/22/2005,Philomel Books -7983,Salamandastron (Redwall #5),Brian Jacques/Gary Chalk,4.07,0142501522,9780142501528,en-US,400,26237,240,9/15/2003,Firebird -7987,The Legend of Luke (Redwall #12),Brian Jacques,4.00,0142501093,9780142501092,eng,374,14205,144,6/2/2005,Firebird -7996,Redwall (Redwall #1),Brian Jacques,4.12,1862301387,9781862301382,eng,352,88167,2604,9/4/2006,Red Fox -7997,Castaways of the Flying Dutchman (Flying Dutchman #1),Brian Jacques/Ian Schoenherr,3.98,0142501182,9780142501184,eng,356,8025,261,3/31/2003,Firebird -7998,Outcast of Redwall (Redwall #8),Brian Jacques,3.92,0142401420,9780142401422,en-US,368,17597,188,5/24/2004,Firebird -8001,Triss (Redwall #15),Brian Jacques/Allan Curless,3.99,0142402486,9780142402481,eng,389,10830,119,9/9/2004,Firebird -8004,A Redwall Winter's Tale,Brian Jacques/Christopher Denise,4.13,0142401986,9780142401989,en-US,72,2353,43,10/21/2004,Puffin -8012,Mr. Impossible,Roger Hargreaves,3.95,084317420X,9780843174205,eng,32,614,29,8/24/1998,Price Stern Sloan -8013,Mr. Christmas,Roger Hargreaves/Adam Hargreaves,3.65,0843121106,9780843121100,eng,40,202,17,9/14/2006,Price Stern Sloan -8014,Mr. Bump,Roger Hargreaves,4.03,0843178388,9780843178388,eng,32,1701,74,3/23/1998,Price Stern Sloan -8019,Little Miss Birthday,Roger Hargreaves/Adam Hargreaves,4.02,0843121319,9780843121315,eng,32,207,11,1/11/2007,Price Stern Sloan -8021,Little Miss Lucky,Roger Hargreaves,3.82,0843175044,9780843175042,eng,32,291,21,11/22/1999,Price Stern Sloan -8023,Mr. Happy,Roger Hargreaves,3.98,1405211997,9781405211994,eng,36,1,0,4/30/2004,Egmont Children's Books -8032,Mr. Jelly and the Pirates,Roger Hargreaves/Adam Hargreaves,3.82,084312492X,9780843124927,eng,32,87,12,5/10/2007,Price Stern Sloan -8044,Grandma Baa (Easy Peasy People),Roger Hargreaves/Gray Jolliffe,4.12,0679801243,9780679801245,eng,32,6,0,10/14/1989,Random House for Young Readers -8048,Bill Buzz,Roger Hargreaves/Gray Jolliffe,4.67,0679801154,9780679801153,eng,32,2,0,10/14/1989,Random House for Young Readers -8051,Gary Grizzle,Roger Hargreaves/Gray Jolliffe,4.33,0679801251,9780679801252,eng,32,3,0,10/14/1989,Random House for Young Readers -8053,Charlie Oink,Roger Hargreaves/Gray Jolliffe,4.33,067980126X,9780679801269,eng,32,3,0,10/14/1989,Random House for Young Readers -8060,Madame Je-Sais-Tout,Roger Hargreaves,3.77,2010189140,9782010189142,fre,36,1,0,5/31/1997,Hachette -8062,The Poppy Seed Cakes,Margery Clark/Maud Petersham/Miska Petersham,4.37,0385074573,9780385074575,eng,158,57,9,10/1/1964,Doubleday Books -8073,Cloudy With a Chance of Meatballs (Cloudy with a Chance of Meatballs #1),Judi Barrett/Ron Barrett,4.16,0689707495,9780689707490,eng,32,124141,2038,4/1/1982,Atheneum Books for Young Readers -8074,The Wind Thief,Judi Barrett/Diane Dawson Hearn,3.80,0689305648,9780689305641,eng,32,4,1,1/1/1977,Atheneum Books -8077,Animales No Se Visten Los (Animals Should Definitely Not Wear Clothing) with CD,Judi Barrett/Ron Barrett,4.11,1595191356,9781595191359,eng,32,0,0,10/30/1991,Live Oak Media -8084,Beauty,Robin McKinley,4.05,0060753102,9780060753108,eng,325,3258,478,7/26/2005,HarperCollins -8086,A Robin McKinley Collection: Spindle's End The Hero and the Crown and The Blue Sword (Folktales #1-3),Robin McKinley,4.39,0142302333,9780142302330,eng,1008,527,12,9/16/2002,Puffin -8087,Deerskin,Robin McKinley,3.89,0441012396,9780441012398,en-US,384,17485,1021,5/1/2005,Ace Books -8088,Sunshine,Robin McKinley,3.85,0515138819,9780515138818,eng,405,31047,3519,11/30/2004,Jove -8089,Rose Daughter,Robin McKinley,3.77,0441005837,9780441005833,eng,304,17168,997,12/1/1998,Ace -8091,The Door in the Hedge,Robin McKinley,3.68,0698119606,9780698119604,eng,224,7941,419,10/13/2003,Firebird -8093,The Stone Fey,Robin McKinley/John Clapp,3.36,0152000178,9780152000172,eng,64,1036,78,9/1/1998,HMH Books for Young Readers -8127,Anne of Green Gables (Anne of Green Gables #1),L.M. Montgomery,4.25,0451528824,9780451528827,eng,320,625759,13883,5/6/2003,Signet Book -8134,Anne of Green Gables,L.M. Montgomery/Barbara Caruso,4.25,1419326961,9781419326967,en-US,9,69,17,1/1/2005,Recorded Books Inc. -8137,The Road to Yesterday (Anne of Green Gables #9),L.M. Montgomery,3.84,0553560689,9780553560688,eng,403,3106,115,2/1/1993,Bantam Books -8141,Anne of Avonlea,L.M. Montgomery/Clare Sieffert,4.23,0448400634,9780448400631,eng,315,85,12,11/1/1990,Grosset & Dunlap -8146,The Stories of Vladimir Nabokov,Vladimir Nabokov,4.30,0679729976,9780679729976,eng,685,5889,183,12/9/1996,Vintage -8147,The Gift,Vladimir Nabokov/Michael Scammell/Dmitri Nabokov,4.00,0141185872,9780141185873,eng,406,2334,109,4/5/2001,Penguin Books -8148,Lectures on Literature,Vladimir Nabokov/Fredson Bowers/John Updike,4.34,0156027755,9780156027755,eng,385,1606,83,12/16/2002,Mariner Books -8149,Novels & Memoirs 1941–1951: The Real Life of Sebastian Knight / Bend Sinister / Speak Memory,Vladimir Nabokov/Brian Boyd,4.36,1883011183,9781883011185,eng,734,119,10,10/1/1996,Library of America -8150,The American Years,Brian Boyd,4.33,0691024715,9780691024714,eng,800,256,22,1/31/1993,Princeton University Press -8151,Laughter in the Dark,Vladimir Nabokov,3.97,0811216748,9780811216746,eng,292,8717,477,9/17/2006,New Directions -8153,The Luzhin Defense,Vladimir Nabokov/Michael Scammell,3.95,0679727221,9780679727224,eng,256,7305,277,8/11/1990,Vintage -8155,A Woman of Substance (Emma Harte Saga #1),Barbara Taylor Bradford,4.18,031235326X,9780312353261,eng,928,34366,573,12/1/2005,Griffin -8162,The Ravenscar Dynasty (Ravenscar #1),Barbara Taylor Bradford,3.63,0312354606,9780312354602,en-US,484,1287,104,12/26/2006,St. Martin's Press -8174,Dark Birthright,Jeanne Treat/Jane Starr Weils,3.63,097216748X,9780972167482,eng,429,132,27,10/1/2006,Treat Enterprises -8178,Birthright (Diablo: The Sin War #1),Richard A. Knaak,3.74,0743471229,9780743471220,eng,326,1246,69,10/1/2006,Pocket Star -8196,Laura's Album: A Remembrance Scrapbook of Laura Ingalls Wilder,William Anderson/Laura Ingalls Wilder,4.30,0060278420,9780060278427,eng,80,746,48,10/13/1998,HarperCollins -8197,Writings to Young Women from Laura Ingalls Wilder: On Wisdom and Virtues (Writings to Young Women on Laura Ingalls Wilder #1),Laura Ingalls Wilder/Stephen W. Hines,3.99,1400307848,9781400307845,eng,113,108,11,5/10/2006,Tommy Nelson -8199,Writings to Young Women from Laura Ingalls Wilder: On Life as a Pioneer Woman (Writings to Young Women from Laura Ingalls Wilder #2),Laura Ingalls Wilder/Stephen W. Hines,3.92,1400307856,9781400307852,eng,116,94,10,5/10/2006,Tommy Nelson -8200,A Little House Traveler: Writings from Laura Ingalls Wilder's Journeys Across America,Laura Ingalls Wilder,4.13,0060724919,9780060724917,eng,352,686,52,2/7/2006,HarperCollins -8202,Laura Ingalls Wilder: A Biography,William Anderson,4.20,0060885521,9780060885526,eng,256,4144,98,1/2/2007,HarperCollins -8203,West from Home: Letters of Laura Ingalls Wilder San Francisco 1915 (Little House #11),Laura Ingalls Wilder/Roger Lea MacBride/Margot Patterson Doss,3.84,0064400816,9780064400817,eng,124,3926,119,10/20/1976,Harper & Row -8204,The Laura Ingalls Wilder Country Cookbook,Laura Ingalls Wilder/William Anderson,4.09,0064461963,9780064461962,eng,160,234,18,10/1/1997,HarperCollins Publishers -8205,Writings to Young Women on Laura Ingalls Wilder: As Told By Her Family Friends and Neighbors (Writings to Young Women on Laura Ingalls Wilder #3),Laura Ingalls Wilder/Stephen W. Hines,3.98,1400307864,9781400307869,eng,128,41,2,5/8/2006,Thomas Nelson -8206,The Laughing Jesus: Religious Lies and Gnostic Wisdom,Tim Freke/Peter Gandy,3.96,140008279X,9781400082797,en-US,276,346,31,6/27/2006,Harmony -8213,The Erotic Phenomenon,Jean-Luc Marion/Stephen E. Lewis,4.03,0226505367,9780226505367,eng,248,75,12,11/15/2006,University of Chicago Press -8214,The Phenomenon of Life: Toward a Philosophical Biology,Hans Jonas/Lawrence Vogel/Eleonore Jonas,4.24,0810117495,9780810117495,eng,304,92,9,2/28/2001,Northwestern University Press -8218,Down to the Bonny Glen (Little House: The Martha Years #3),Melissa Wiley/Renée Graef,4.15,0064407144,9780064407144,eng,321,1480,39,5/8/2001,HarperTrophy -8221,Laura: The Life of Laura Ingalls Wilder,Donald Zochert,4.12,0380016362,9780380016365,en-GB,241,5628,125,5/1/1977,Avon -8227,Winter Days in the Big Woods,Laura Ingalls Wilder/Renée Graef,4.28,0064433730,9780064433730,eng,32,1538,59,9/15/1995,HarperCollins -8228,The First Four Years (Little House #9),Laura Ingalls Wilder/Cherry Jones,3.89,0060565098,9780060565091,eng,3,91,13,6/13/2006,HarperFestival -8230,Winter on the Farm,Laura Ingalls Wilder/Renée Graef/Jody Wheeler,4.15,006440692X,9780064406925,eng,32,424,25,9/6/1997,Winter on the Farm (My First Little House) -8233,Summertime in the Big Woods,Laura Ingalls Wilder/Renée Graef,4.18,0064434974,9780064434973,eng,40,867,31,2/2/2000,HarperCollins -8244,Old Town in the Green Groves: Laura Ingalls Wilder's Lost Little House Years,Cynthia Rylant/Jim LaMarche,4.05,0064409902,9780064409902,eng,176,4799,88,6/1/2004,Harper Trophy -8246,Laura Ingalls Wilder's Fairy Poems,Laura Ingalls Wilder/Richard Hull,3.99,0385325339,9780385325332,eng,39,143,18,10/13/1998,Doubleday Books for Young Readers -8247,Constructing the Little House: Gender Culture and Laura Ingalls Wilder,Ann Romines,3.70,1558491228,9781558491229,eng,304,35,5,11/21/1997,University of Massachusetts Press -8249,These Happy Golden Years (Little House #8),Laura Ingalls Wilder/Cherry Jones/Paul Woodiel,4.19,006056508X,9780060565084,eng,7,105,12,3/28/2006,HarperFestival -8252,Farmer Boy (Little House #2),Laura Ingalls Wilder/Garth Williams,4.07,0060885386,9780060885380,eng,357,45778,1286,1/1/2007,HarperTrophy -8253,Little Town on the Prairie (Little House #7),Laura Ingalls Wilder/Garth Williams,4.19,0060885432,9780060885434,eng,374,71853,646,1/1/2007,HarperTrophy -8254,Christmas Stories (Little House Chapter Books: Laura #10),Laura Ingalls Wilder/Renée Graef/Heather Henson,4.21,0064420817,9780064420815,eng,80,66,7,10/6/1999,HarperCollins -8255,My Little House Crafts Book: 18 Projects from Laura Ingalls Wilder's,Carolyn Strom Collins/Christina Wyss Eriksson/Mary Collier,4.03,0064462048,9780064462044,eng,64,59,6,3/21/1998,HarperCollins -8256,Christmas in the Big Woods,Laura Ingalls Wilder/Renée Graef,4.20,0064434877,9780064434874,eng,32,2142,72,9/20/1997,HarperCollins -8282,The Long Winter (Little House #6),Laura Ingalls Wilder/Garth Williams,4.14,0060885424,9780060885427,eng,422,67427,1048,1/1/2007,HarperTrophy -8285,A Little House Birthday,Laura Ingalls Wilder/Doris Ettlinger,4.14,006443494X,9780064434942,eng,40,453,17,9/5/1998,HarperCollins -8290,The Deer in the Wood,Laura Ingalls Wilder/Renée Graef,4.17,0064434982,9780064434980,eng,32,324,23,1/16/1999,HarperCollins -8296,The First Four Years (Little House #9),Laura Ingalls Wilder/Garth Williams,3.89,0060885459,9780060885458,eng,126,28259,533,1/2/2007,HarperTrophy -8298,The Little House Cookbook: Frontier Foods from Laura Ingalls Wilder's Classic Stories,Barbara M. Walker/Garth Williams,4.15,0064460908,9780064460903,eng,256,3375,91,9/7/1989,HarperCollins -8322,Little House on the Prairie (Little House #3),Laura Ingalls Wilder/Garth Williams,4.19,0060885394,9780060885397,eng,309,635,30,1/1/2007,HarperTrophy -8335,Let the Hurricane Roar,Rose Wilder Lane,3.96,0064401588,9780064401586,en-US,118,192,32,10/1/1985,HarperTrophy -8337,Little House in the Big Woods (Little House #1),Laura Ingalls Wilder/Garth Williams,4.18,0060885378,9780060885373,eng,198,201840,3463,1/1/2007,HarperTrophy -8359,Flowers (Eyewitness Explorers),David Burnie,3.85,0789422131,9780789422132,eng,64,8,2,9/15/1997,Dorling Kindersley Children -8362,Animal: The Definitive Visual Guide to the World's Wildlife,David Burnie/Don E. Wilson,4.51,0756616344,9780756616342,eng,624,570,17,9/19/2005,DK -8370,The Making Of Disney's Animal Kingdom Theme Park,Melody Malmberg/Walt Disney Company,4.32,0786864028,9780786864027,eng,192,34,2,5/1/1998,Disney Enterprises -8373,El Reino Animal,Sergio Ramírez,3.69,9707705736,9789707705739,spa,256,16,4,7/1/2006,Alfaguara -8417,Tree (Eyewitness Books),David Burnie/Peter K. Chadwick,4.02,0789458209,9780789458209,eng,64,5,0,6/14/2000,DK Children -8428,Insects & Spiders,David Burnie,4.50,0783548818,9780783548814,eng,64,4,0,5/24/1999,Time Life Medical -8486,The Prophet of Yonwood,Jeanne DuPrau,3.27,0375875263,9780375875267,eng,289,621,82,4/1/2006,Random House Books for Young Readers -8489,Muhammad: A Prophet for Our Time,Karen Armstrong,4.08,0060598972,9780060598976,eng,256,1896,202,10/17/2006,Eminent Lives -8492,Prophet,Frank E. Peretti,3.94,1581345267,9781581345261,en-US,416,12789,221,3/11/2004,Crossway Books -8494,Access the Power of Your Higher Self: Your Source of Inner Guidance and Spiritual Transformation (Pocket Guides to Practical Spirituality),Elizabeth Clare Prophet,4.21,0922729360,9780922729364,en-GB,100,55,6,9/21/2017,Summit University Press -8495,Hailstones and Halibut Bones,Mary O'Neill/John Wallner,4.31,0385410786,9780385410786,en-US,64,125,22,4/1/1990,Doubleday Books for Young Readers -8499,The Second Sex,Simone de Beauvoir/H.M. Parshley/Margaret Crosland,4.12,1857151372,9781857151374,eng,848,47,6,3/18/1993,Everyman's Library -8500,The Second Sex,Simone de Beauvoir/H.M. Parshley,4.12,009974421X,9780099744214,eng,880,333,27,8/7/1997,Vintage Classics -8501,The Church and the Second Sex,Mary Daly,3.84,0807011010,9780807011010,eng,231,129,7,1/3/1986,Beacon Press -8506,Thomas Jefferson (Oxford Portraits),R.B. Bernstein,4.01,0195181301,9780195181302,eng,253,4245,133,9/15/2005,Oxford University Press USA -8508,The Jefferson Bible: The Life and Morals of Jesus of Nazareth,Thomas Jefferson,3.82,1557091846,9781557091840,eng,103,1038,100,8/1/2006,Applewood Books -8510,Who Was Thomas Jefferson?,Dennis Brindell Fradin/Nancy Harrison/John O'Brien,4.07,0448431459,9780448431451,eng,103,692,80,7/28/2003,Penguin Workshop -8515,The Man Who Listens to Horses,Monty Roberts/Lucy Grealy/Lawrence Scanlan,4.12,034542705X,9780345427052,en-US,352,9963,206,11/28/1998,Ballantine Books -8520,Under Orders (Sid Halley #4),Dick Francis,3.87,0399154000,9780399154003,eng,308,4119,252,10/1/2006,Putnam Publishing Group -8522,For Kicks,Dick Francis,4.00,0425194981,9780425194980,eng,292,3062,94,2/3/2004,G.P. Putnam's Sons -8523,Forfeit,Dick Francis,3.94,0425201910,9780425201916,eng,256,2538,63,4/5/2005,G.P. Putnam's Sons -8525,Dead Cert,Dick Francis,3.97,0425194973,9780425194973,eng,277,4964,124,1/6/2004,G.P. Putnam's Sons -8528,Rat Race,Dick Francis,3.98,0425210766,9780425210765,eng,304,2400,93,7/5/2006,G.P. Putnam's Sons -8529,Reflex,Dick Francis,4.07,0425206955,9780425206959,eng,304,4675,129,10/4/2005,G.P. Putnam's Sons -8532,Decider,Dick Francis,3.99,042519938X,9780425199381,eng,341,3461,133,12/7/2004,G.P. Putnam's Sons -8533,Slay Ride,Dick Francis,3.82,0425196739,9780425196731,en-US,288,2215,60,4/6/2004,G.P. Putnam's Sons -8536,Bonecrack,Dick Francis,4.00,0425208850,9780425208854,eng,304,2910,84,6/6/2006,G.P. Putnam's Sons -8537,Nerve,Dick Francis,4.04,0515123463,9780515123463,eng,320,3581,113,9/1/1998,Jove -8538,Break In (Kit Fielding #1),Dick Francis,4.05,0425199932,9780425199930,eng,320,3758,128,1/4/2005,G.P. Putnam's Sons -8540,Blood Sport,Dick Francis,3.89,0425199169,9780425199169,eng,288,4600,113,11/2/2004,G.P. Putnam's Sons -8541,Straight,Dick Francis,4.05,042520846X,9780425208465,eng,320,3513,143,2/7/2006,G.P. Putnam's Sons -8542,10 lb Penalty,Dick Francis,3.90,042519745X,9780425197455,eng,320,3490,177,8/3/2004,G.P. Putnam's Sons -8544,Trial Run,Dick Francis,3.83,0425199835,9780425199831,eng,272,2004,54,9/7/2004,G.P. Putnam's Sons -8545,Wild Horses,Dick Francis,3.91,0425196747,9780425196748,eng,352,2935,154,5/4/2004,G.P. Putnam's Sons -8546,Field of Thirteen,Dick Francis,3.73,042519499X,9780425194997,eng,304,2053,85,3/2/2004,G.P. Putnam's Sons -8548,Driving Force,Dick Francis,3.96,0449221393,9780449221396,eng,384,2635,107,12/29/1993,Fawcett Books -8551,Flying Finish,Dick Francis,3.97,0515125601,9780515125603,eng,276,2587,89,8/1/1999,Jove -8552,Bolt (Kit Fielding #2),Dick Francis,4.04,0425202887,9780425202883,eng,288,5043,121,5/3/2005,G.P. Putnam's Sons -8557,Come to Grief (Sid Halley #3),Dick Francis,4.01,0425207188,9780425207185,eng,384,3786,134,12/6/2005,G.P. Putnam's Sons -8559,Enquiry,Dick Francis,3.96,0425197050,9780425197059,en-US,272,96,4,7/6/2004,G.P. Putnam's Sons -8568,Odds Against (Sid Halley #1),Dick Francis,4.06,0425198006,9780425198001,eng,288,3749,130,2/1/2005,G.P. Putnam's Sons -8572,Banker,Dick Francis,4.06,0718132386,9780718132385,eng,288,3092,132,10/3/2000,Michael Joseph -8574,Whip Hand (Sid Halley #2),Dick Francis,4.10,0425203549,9780425203545,eng,304,5108,143,6/7/2005,G.P. Putnam's Sons -8581,A Jockey's Life: The Biography of Lester Piggott,Dick Francis,3.59,0449213307,9780449213308,eng,468,82,2,7/12/1987,Fawcett -8582,The Dick Francis Treasury of Great Racing Stories,Dick Francis/John Welcome,3.79,0449220494,9780449220498,eng,221,64,3,3/22/1992,Fawcett -8583,Come to Grief / Decider / Wild Horses,Dick Francis,4.09,0399143068,9780399143069,eng,707,32,0,11/10/1997,Putnam Adult -8586,Odds Against,Dick Francis,4.06,0515125512,9780515125511,eng,277,56,4,4/1/2000,Jove -8598,Eats Shoots & Leaves: Why Commas Really Do Make a Difference!,Lynne Truss/Bonnie Timmons,4.15,0399244913,9780399244919,eng,32,1371,205,7/25/2006,G.P. Putnam's Sons Books for Young Readers -8601,Talk to the Hand: The Utter Bloody Rudeness of Everyday Life,Lynne Truss,3.33,1861979339,9781861979339,eng,214,204,30,10/24/2005,Profile Books -8614,The Spice and Herb Bible,Ian Hemphill/Kate Hemphill,4.25,0778801462,9780778801467,eng,606,155,16,9/14/2006,Robert Rose -8627,Master and Commander (Aubrey/Maturin #1),Patrick O'Brian,4.10,0393325172,9780393325171,en-US,459,541,95,10/17/2003,W. W. Norton Company -8628,The Making of Master and Commander: The Far Side of the World,Tom McGregor,3.97,0393325539,9780393325539,eng,168,96,13,10/17/2003,W. W. Norton Company -8630,The Ionian Mission (Aubrey/Maturin #8),Patrick O'Brian/Simon Vance,4.32,0786177837,9780786177837,eng,10,3659,80,10/1/2005,Blackstone Audiobooks -8632,Her Master and Commander (Just Ask Reeves #1),Karen Hawkins,3.80,0060584084,9780060584085,eng,372,799,31,2/28/2006,Avon -8643,Strange Sounds: Music Technology & Culture,Timothy D. Taylor,3.77,0415936845,9780415936842,eng,278,26,0,10/14/2001,Routledge -8645,Stanley Park,Timothy Taylor,3.57,1582432902,9781582432908,eng,436,1818,89,9/25/2003,Counterpoint LLC -8646,Crow Lake,Mary Lawson,3.88,0385337639,9780385337632,eng,324,14109,1591,1/13/2003,Dial Press Trade Paperback -8648,Xenocide (Ender's Saga #3),Orson Scott Card/Piotr W. Cholewa,3.79,0312861877,9780312861872,eng,592,119937,3139,7/15/1996,Tor Books -8656,The Life of Sir Arthur Conan Doyle,John Dickson Carr/Daniel Stashower,4.01,0786712341,9780786712342,eng,320,148,6,11/11/2003,Da Capo Press -8660,The Lost World (TV Tie-in),Arthur Conan Doyle/Philip Gooden,3.92,0142002720,9780142002728,eng,224,18,4,9/3/2002,Penguin Books -8661,Las aventuras de Sherlock Holmes,Arthur Conan Doyle/Javier Gomez Rea,4.33,8497643658,9788497643658,eng,192,116,11,4/1/2005,Edimat Libros -8675,Wild Ducks Flying Backward,Tom Robbins,3.55,0553383531,9780553383539,eng,272,5768,262,8/29/2006,Bantam -8676,Unlimited Power: The New Science Of Personal Achievement,Anthony Robbins/Kenneth H. Blanchard/Jason Winters,4.23,0684845776,9780684845777,eng,448,25135,420,12/22/1997,Free Press -8677,Robbins and Cotran Review of Pathology,Edward C. Klatt/Vinay Kumar,4.33,0721601944,9780721601946,en-US,432,55,6,11/12/2004,Saunders -8680,Fierce Invalids Home from Hot Climates,Tom Robbins,4.03,055337933X,9780553379334,en-US,445,24792,1139,5/29/2001,Bantam -8682,Jitterbug Perfume,Tom Robbins,4.25,1842430351,9781842430354,eng,342,54516,2721,4/9/2001,No Exit Press -8694,Life the Universe and Everything (Hitchhiker's Guide to the Galaxy #3),Douglas Adams,4.20,0345418905,9780345418906,eng,224,166574,2192,4/26/2005,Del Rey -8698,So Long and Thanks for All the Fish (Hitchhiker's Guide to the Galaxy #4),Douglas Adams,4.09,0330491237,9780330491235,eng,167,93997,1394,3/8/2002,Picador USA -8703,The Restaurant at the End of the Universe (The Hitchhiker's Guide to the Galaxy #2),Douglas Adams/Martin Freeman,4.22,0739332074,9780739332078,eng,6,493,95,6/1/2006,Random House Audio Publishing Group -8704,Starship Titanic,Terry Jones/Marie-Catherine Caillava,3.60,2290053651,9782290053652,fre,189,8790,152,11/30/2001,J'ai Lu -8706,The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1),Douglas Adams,4.22,0330491199,9780330491198,eng,180,3115,306,3/8/2002,Picador USA -8710,The Illustrated Hitchhiker's Guide To The Galaxy,Douglas Adams,4.35,0517599244,9780517599242,eng,96,294,19,10/11/1994,Harmony -8712,Margaret Atwood: The Handmaid's Tale,Hélène Greven-Borde,4.27,2864603497,9782864603498,fre,108,2122,86,11/1/1998,Klincksieck -8713,Point to Point Navigation,Gore Vidal,3.70,0385517211,9780385517218,eng,277,621,90,11/7/2006,Doubleday Books -8714,An Inconvenient Truth: The Planetary Emergency of Global Warming and What We Can Do About It,Al Gore,3.77,1594865671,9781594865671,eng,328,5783,433,5/24/2006,Rodale Books -8715,Palimpsest,Gore Vidal,3.99,0140260897,9780140260892,en-US,448,1485,94,9/1/1996,Penguin Books -8716,Lincoln,Gore Vidal,4.21,0375708766,9780375708763,eng,672,7326,430,2/15/2000,Vintage -8722,Burr,Gore Vidal,4.07,0375708731,9780375708732,eng,430,7265,526,2/15/2000,Vintage -8725,Comfort Me with Apples: More Adventures at the Table,Ruth Reichl,4.04,0375758739,9780375758737,eng,302,17939,947,4/9/2002,Random House Trade -8726,Comfort Me With Apples,Ruth Reichl,4.04,0965193772,9780965193771,eng,299,15,3,1/1/2001,Random house -8737,The Last Temptation of Christ,Nikos Kazantzakis/Peter A. Bien,4.16,068485256X,9780684852560,eng,506,8966,454,3/1/1998,Simon Schuster -8738,Her Last Temptation,Leslie Kelly,3.59,0373692285,9780373692286,eng,207,112,5,5/31/2005,Harlequin Temptation -8741,The Last Temptation (Tony Hill & Carol Jordan #3),Val McDermid,4.01,0312936915,9780312936914,eng,496,4991,271,3/1/2005,St. Martin's Paperbacks -8742,The Last Temptation,Nikos Kazantzakis/Peter A. Bien,4.16,0571178561,9780571178568,eng,589,114,14,11/10/1995,Faber Faber -8744,Desert Dawn,Waris Dirie/Jeanne D'Haem,3.83,1844080080,9781844080083,en-GB,240,2011,84,6/1/2004,Virago UK -8745,Desert Flower,Waris Dirie/Cathleen Miller,4.15,0688172377,9780688172374,eng,240,11981,735,3/15/2011,William Morrow Paperbacks -8746,Desert Children,Waris Dirie/Corinna Milborn/Sheelagh Alabaster,3.71,1844082520,9781844082520,en-US,240,509,25,11/1/2005,Virago UK -8750,L'Aube du désert,Waris Dirie/Jeanne d' Haem,3.83,2226135510,9782226135513,fre,288,1,0,11/1/2002,Albin Michel -8758,The Beach,Joanna Strange,3.84,0582435676,9780582435674,eng,112,68,9,2/19/2001,Longman -8761,The Weekenders: Travels in the Heart of Africa,W.F. Deedes/Sue Ryan/Alex Garland/Tony Hawks/Andrew O'Hagan/Irvine Welsh/Giles Foden/Victoria Glendinning,3.16,0091881803,9780091881801,eng,340,123,12,11/8/2001,Ebury Press -8765,I Feel Bad About My Neck: And Other Thoughts on Being a Woman,Nora Ephron,3.69,0307264556,9780307264558,eng,137,38506,4719,8/1/2006,Knopf Publishing Group -8766,Feel the Fear . . . and Do It Anyway,Susan Jeffers,4.03,0345487427,9780345487421,eng,217,506,53,12/26/2006,Ballantine Books -8767,Touch & Feel: Animals Boxed Set,Jennifer Quasha/Deni Brown/Dawn Sirett,4.04,0789488779,9780789488770,eng,36,24,3,2/15/2003,DK Publishing -8768,Today I Feel Silly Other Moods That Make My Day,Jamie Lee Curtis/Laura Cornell,4.16,0060245603,9780060245603,en-US,40,4171,518,7/31/2007,HarperCollins -8770,My First Word Touch and Feel,Anne Millard,3.79,0789479311,9780789479310,eng,12,24,6,9/19/2001,DK Children -8771,When I Feel Angry,Nancy Cote/Cornelia Maude Spelman,3.98,0807588970,9780807588970,eng,24,113,4,1/1/2000,Albert Whitman Company -8773,Violet's House: A Giant Touch-and-Feel Book (Baby Einstein),Julie Aigner-Clark/Nadeem Zaidi,4.00,0786818727,9780786818723,eng,10,39,7,11/1/2003,Disney Press -8787,The White Masai,Corinne Hofmann/Peter Millar,3.45,0061131520,9780061131523,eng,320,4504,491,10/10/2006,Amistad -8797,The Story of a Seagull and the Cat Who Taught Her to Fly,Luis Sepúlveda/Chris Sheban/Margaret Sayers Peden,4.14,0439401879,9780439401876,eng,128,5097,219,8/1/2006,Scholastic Paperbacks -8799,Ahora sabréis lo que es correr,Dave Eggers/María Victoria Alonso Blanco,3.63,8439710097,9788439710097,spa,400,3,1,3/31/2004,Mondadori -8801,The Burgess Bird Book for Children,Thornton W. Burgess/Louis Agassiz Fuertes,4.31,0486428400,9780486428406,eng,260,1253,54,4/23/2003,Dover Publications -8804,The Burgess Animal Book for Children,Thornton W. Burgess/Louis Agassiz Fuertes,4.26,0486437450,9780486437453,eng,275,478,30,9/10/2004,Dover Publications -8808,The Adventures of Jimmy Skunk,Thornton W. Burgess/Thea Kliros/Harrison Cady,4.14,0486280233,9780486280233,eng,96,275,19,5/20/1994,Dover Publications -8809,The Wanting Seed,Anthony Burgess,3.71,0393315088,9780393315080,en-US,288,5423,293,12/17/1996,W. W. Norton Company -8810,A Clockwork Orange,Anthony Burgess/Blake Morrison,3.99,0141182601,9780141182605,eng,159,5366,524,2/24/2000,Penguin Classics -8811,A Clockwork Orange,Anthony Burgess,3.99,014027409X,9780140274097,eng,149,1422,124,9/3/1998,Penguin Books -8813,Clockwork Orange,Anthony Burgess,3.99,345316413X,9783453164130,ger,235,65,7,3/1/2000,Heyne -8814,A Clockwork Orange (Stage Play),Anthony Burgess,3.84,0413735907,9780413735904,eng,51,28,2,3/10/2017,Methuen Drama -8818,One Hand Clapping,Anthony Burgess,3.82,0786706317,9780786706310,eng,224,1008,51,7/15/1999,Da Capo Press -8820,The Doctor is Sick,Anthony Burgess,3.62,0393316025,9780393316025,eng,260,966,39,8/17/1997,W.W. Norton Company -8822,Earthly Powers,Anthony Burgess,4.16,0099468646,9780099468646,eng,649,2116,157,5/6/2004,Vintage Classics -8829,Past Mortem,Ben Elton,3.75,0552771236,9780552771238,eng,460,4422,211,5/2/2005,Black Swan -8834,This Other Eden,Ben Elton,3.72,055277183X,9780552771832,eng,400,2292,69,7/1/2003,Black Swan -8840,Saint-Exupéry,Stacy Schiff/Antoine de Saint-Exupéry,4.02,0805079130,9780805079135,eng,560,208,27,2/7/2006,Holt Paperbacks -8848,Le Petit Prince,Antoine de Saint-Exupéry,4.31,2070513289,9782070513284,fre,123,366,19,2/1/2004,Gallimard Jeunesse -8852,Macbeth,William Shakespeare,3.90,0743477103,9780743477109,eng,249,592315,7791,7/1/2013,Simon Schuster -8853,Macbeth,William Shakespeare/Alan Durband,3.90,0812035712,9780812035711,eng,224,296,20,4/1/1985,Barrons Educational Series -8856,Death of a Scriptwriter (Hamish Macbeth #14),M.C. Beaton,3.79,0446606987,9780446606981,eng,198,3280,188,6/1/1999,Warner Books -8858,Death of a Poison Pen (Hamish Macbeth #19),M.C. Beaton,3.83,0446614890,9780446614894,en-US,227,3318,204,1/1/2005,Warner Books -8859,Death of an Outsider (Hamish Macbeth #3),M.C. Beaton,3.83,0446614726,9780446614726,eng,194,5757,321,7/1/2005,Warner Books -8860,Cliffs Notes on Shakespeare's Macbeth,Alex Went,3.59,0764586025,9780764586026,en-US,112,25,2,5/30/2000,Cliffs Notes -8861,Death of an Addict (Hamish Macbeth #15),M.C. Beaton,3.80,0446608289,9780446608282,eng,214,3015,167,3/1/2001,Warner Books -8862,A Year in the Life of William Shakespeare: 1599,James Shapiro,4.09,0060088745,9780060088743,eng,333,2330,252,6/13/2006,Harper Perennial -8865,Who Was William Shakespeare?,Celeste Davidson Mannis/John O'Brien,4.05,0448439042,9780448439044,eng,105,755,94,12/28/2006,Grosset & Dunlap -8875,Planet of the Apes,Pierre Boulle/Xan Fielding,3.95,0517209489,9780517209486,en-US,192,88,14,6/6/2000,Wings -8879,Planet of the Apes: Colony,William T. Quick,3.62,0060086211,9780060086213,eng,288,24,1,3/25/2003,HarperEntertainment -8880,Planet of the Apes Volume 1: Old Gods,Ian Edginton,2.62,1569716684,9781569716687,eng,80,8,2,3/5/2002,Dark Horse Comics -8881,Planet of the Apes: The Fall,William T. Quick,2.92,0060086203,9780060086206,eng,288,53,2,6/4/2002,HarperEntertainment -8889,Return to the Planet of the Apes #2: Escape from Terror Lagoon,William Arrow,3.00,0345251679,9780345251671,eng,0,10,2,4/12/1976,Ballantine Books -8891,Return to the Planet of the Apes: Visions from Nowhere,William Arrow,3.33,0345251229,9780345251220,eng,183,12,1,6/1/1976,Ballantine Books -8895,Planet of the Apes: The Human War,Ian Edginton,3.28,184023380X,9781840233803,eng,72,1,1,7/27/2001,Titan Books Ltd -8901,Battle for the Planet of the Apes,David Gerrold/John William Corrington/Joyce Hooper Corrington,3.66,0891901639,9780891901631,eng,158,461,10,6/1/1973,Award Books -8908,World War Z: An Oral History of the Zombie War,Max Brooks,4.01,0307346609,9780307346605,eng,342,370331,20582,9/12/2006,Crown -8909,The War of the Worlds,H.G. Wells/Arthur C. Clarke,3.82,0375759239,9780375759239,eng,192,196425,4549,3/12/2002,Modern Library -8910,The Second World War: A Complete History,Martin Gilbert,4.20,0805076239,9780805076233,eng,928,919,44,6/1/2004,Holt McDougal -8915,A Short History of World War II,James L. Stokesbury,3.95,0688085873,9780688085872,eng,416,472,41,1/1/1980,William Morrow Paperbacks -8916,The Complete Science Fiction Treasury of H.G. Wells,H.G. Wells,4.14,0517052253,9780517052259,eng,0,45,1,6/24/1987,Random House Value Publishing -8917,Best Science Fiction Stories of H. G. Wells,H.G. Wells,3.84,0486215318,9780486215310,eng,320,60,4,11/24/2011,Dover Publications -8919,The Invisible Man,H.G. Wells,3.64,0439574277,9780439574273,eng,208,333,23,9/1/2004,Scholastic Paperbacks -8921,The Hound of the Baskervilles,Arthur Conan Doyle/Anne Perry/Sidney Paget,4.11,0451528018,9780451528018,eng,256,191128,4802,7/1/2001,Signet -8922,The Hound of the Baskervilles (Sherlock Holmes #5),Arthur Conan Doyle/David Timson,4.11,9626343346,9789626343340,eng,5,135,20,3/30/2005,Naxos Audiobooks -8924,The Hound of the Baskervilles,Arthur Conan Doyle/Pam Smy,4.11,0763630640,9780763630645,eng,272,66,7,8/22/2006,Candlewick Press -8927,Sherlock Holmes and the Case of the Hound of the Baskervilles (Great Illustrated Classics),Malvina G. Vogel/Arthur Conan Doyle,4.51,1596792507,9781596792500,en-US,237,33,1,1/1/2005,Abdo Publishing Company -8930,Jamie's Italy,Jamie Oliver/David Loftus/Chris Terry,4.01,1401301959,9781401301958,eng,320,7653,90,11/14/2006,Hachette Books -8931,Jamie's Dinners: The Essential Family Cookbook,Jamie Oliver/Marion Deuchars/David Loftus/Chris Terry,4.07,1401301940,9781401301941,eng,336,4296,51,11/3/2004,Hachette Books -8951,The Lake of Souls (Cirque du Freak #10),Darren Shan,4.18,0316016659,9780316016650,eng,272,18536,350,9/6/2006,Little Brown Books for Young Readers -8953,Freak the Mighty (Freak The Mighty #1),Rodman Philbrick,4.01,0439286069,9780439286060,eng,169,41589,4153,6/1/2001,Scholastic Paperbacks -8954,Word Freak: Heartbreak Triumph Genius and Obsession in the World of Competitive Scrabble Players,Stefan Fatsis,3.82,0142002267,9780142002261,eng,372,4748,597,7/30/2002,Penguin Books -8960,Vampire Mountain (Cirque Du Freak #4),Darren Shan,4.16,0316905747,9780316905749,eng,208,26461,587,9/1/2003,Little Brown Young Readers -8964,Jesus Freaks: Stories of Those Who Stood for Jesus the Ultimate Jesus Freaks (Jesus Freaks #1),D.C. Talk/The Voice of the Martyrs,4.21,1577780728,9781577780724,eng,383,19217,271,1/15/1999,Albury Publishing -8967,Trials of Death (Cirque Du Freak #5),Darren Shan,4.25,0316000957,9780316000956,eng,202,24590,525,1/18/2008,Little Brown Books for Young Readers -8969,Sister Freaks: Stories of Women Who Gave Up Everything for God,Rebecca St. James/Mary E. DeMuth/Tracey Lawrence/Elizabeth Jusino,4.12,0446695602,9780446695602,en-US,320,492,32,10/5/2005,FaithWords -8971,Freaks of the Storm: From Flying Cows to Stealing Thunder: The World's Strangest True Weather Stories,Randy Cerveny,3.17,1560258012,9781560258018,eng,371,139,25,12/29/2006,Thunder's Mouth Press Books -8974,Freak Show: Presenting Human Oddities for Amusement and Profit,Robert Bogdan,3.88,0226063127,9780226063126,eng,336,210,18,5/15/1990,University of Chicago Press -8976,Live Like a Jesus Freak: Spend Today as If It Were Your Last,D.C. Talk,4.06,1577782089,9781577782087,eng,184,591,29,11/1/2001,Bethany House Publishers -8978,Freaks!: How to Draw Fantastic Fantasy Creatures,Steve Miller,4.06,0823016625,9780823016624,eng,144,31,1,6/1/2004,Watson-Guptill Publications -8988,Jesus Freaks,Andre Duza,3.69,0976249871,9780976249870,eng,390,55,7,4/20/2006,Deadite Press (Eraserhead Press) -8991,Category: Freaks Vol. 1 (Category: Freaks #1),Sakurako Gokurakuin/Lindsey Johnston,3.55,1588993000,9781588993007,eng,184,112,9,7/1/2005,Dr. Master Productions Inc. -9005,Hello Cruel World: 101 Alternatives to Suicide for Teens Freaks and Other Outlaws,Kate Bornstein/Sara Quin,4.03,1583227202,9781583227206,eng,234,1458,175,5/2/2006,Seven Stories Press -9006,Don't Get Too Comfortable: The Indignities of Coach Class The Torments of Low Thread Count The Never-Ending Quest for Artisanal Olive Oil and Other First World Problems,David Rakoff,3.72,0767916034,9780767916035,eng,222,8410,751,9/12/2006,Anchor Books -9010,I Hope They Serve Beer in Hell (Tucker Max #1),Tucker Max,3.51,0806527285,9780806527284,eng,288,49042,4140,1/1/2006,Citadel -9012,Holidays on Ice,David Sedaris,3.92,0316779237,9780316779234,eng,134,3590,251,11/1/1998,Back Bay -9013,The Long Walk: The True Story of a Trek to Freedom,Sławomir Rawicz,4.21,1592289444,9781592289448,eng,256,11841,1766,4/1/2006,Lyons Press -9014,The Long Walk,Richard Bachman/Stephen King,4.11,0451196716,9780451196712,eng,370,94303,4453,4/1/1999,Signet -9018,Long Walk to Freedom: Autobiography of Nelson Mandela,Nelson Mandela/Kofi Annan/Danny Glover,4.33,1586216880,9781586216887,eng,6,79,16,12/1/2004,Little Brown & Company -9019,Navajo Long Walk,Nancy M. Armstrong/Paulette Livers-Lambert,3.45,1879373564,9781879373563,eng,128,56,11,7/1/1994,Roberts Rinehart Publishers -9030,The Devil in the White City: Murder Magic and Madness at the Fair that Changed America,Erik Larson,3.99,0553813536,9780553813531,eng,496,1278,207,4/1/2004,Bantam Press -9031,The Devil in the White City Murder Magic and Madness at the Fair That Changed America,Erik Larson,3.99,0385602731,9780385602730,eng,447,283,37,3/3/2003,Doubleday -9051,The Historian's Craft: Reflections on the Nature and Uses of History and the Techniques and Methods of Those Who Write It.,Marc Bloch/Peter Putnam/Joseph Reese Strayer,4.05,0394705122,9780394705125,eng,224,977,71,3/12/1964,Vintage -9058,Charles Dickens as a Legal Historian,William Holdsworth,4.00,1886363064,9781886363069,eng,166,4,2,2/1/2010,Lawbook Exchange Ltd. -9060,The Progressive Historians: Turner Beard Parrington (Phoenix Book),Richard Hofstadter,3.89,0226348180,9780226348186,eng,498,37,5,11/19/1979,University of Chicago Press -9066,What Did the Constitution Mean to Early Americans? (Historians at Work),Edward Countryman,3.29,0312182627,9780312182625,eng,169,24,2,1/1/1999,Bedford Books -9072,The Historian,Elizabeth Kostova/Paul Michael/Justine Eyre,3.78,1415929017,9781415929018,eng,26,354,135,12/13/2005,Books on Tape -9073,See No Evil: The True Story of a Ground Soldier in the CIA's War on Terrorism,Robert B. Baer,3.93,140004684X,9781400046843,eng,320,4040,259,1/7/2003,Broadway Books -9082,In a Dry Season (Inspector Banks #10),Peter Robinson,4.13,0380794772,9780380794775,eng,480,6193,355,7/3/2000,Avon -9083,Plants and Landscapes for Summer-Dry Climates of the San Francisco Bay Region,East Bay M. U. D. Staff/Nora Harlow/Jill M. Singleton/Barrie D. Coate/Kristine Sandoe,4.30,0975323113,9780975323113,en-US,336,47,8,5/1/2004,East Bay Municipal Utility District -9099,In Focus: National Geographic Greatest Portraits,Leah Bendavid-Val/National Geographic Society,4.24,079227363X,9780792273639,eng,504,819,31,10/1/2004,National Geographic Society -9100,Portrait Photographer's Handbook,Bill Hurter,3.62,1584281405,9781584281405,eng,128,16,1,9/28/2004,Amherst Media Inc. -9106,Portrait in Death (In Death #16),J.D. Robb,4.39,0749934425,9780749934422,en-US,354,142,9,12/1/2005,Piatkus Books -9107,Posing for Portrait Photography: A Head-To-Toe Guide,Jeff Smith,3.38,1584281340,9781584281344,eng,124,51,0,7/1/2004,Amherst Media -9118,Le Portrait de Dorian Gray,Oscar Wilde/Michel Etienne/Daniel Mortier,4.08,2266082655,9782266082655,fre,345,47,3,6/4/1998,Pocket -9121,The Portrait of Dorian Gray,Oscar Wilde/Elizabeth Gray,4.08,1842161903,9781842161906,eng,51,85,2,10/10/1999,Express Publishing -9122,The Picture of Dorian Gray,Oscar Wilde/Donald L. Lawler,4.08,0393955680,9780393955682,eng,462,171,13,1/1/1988,W. W. Norton & Company -9124,The Picture of Dorian Gray,Oscar Wilde/Michael Gillespie,4.08,0393927547,9780393927542,en-US,517,663,52,8/1/2006,W. W. Norton & Company -9125,The Picture of Dorian Gray,Oscar Wilde/Joseph Bristow,4.08,0192807293,9780192807298,eng,229,1089,78,11/1/2006,Oxford University Press USA -9132,An Arab-Syrian Gentleman and Warrior in the Period of the Crusades: Memoirs of Usamah Ibn-Munqidh,Usamah ibn Munqidh/Philip Khuri Hitti/Richard W. Bulliet,3.95,0231121253,9780231121255,eng,265,68,6,6/22/2000,Columbia University Press -9140,Technical Manual and Dictionary of Classical Ballet,Gail Grant,4.38,0486218430,9780486218434,eng,176,393,27,6/1/1982,Dover Publications -9141,The Ballet Companion: A Dancer's Guide to the Technique Traditions and Joys of Ballet,Eliza Gaynor Minden,4.35,074326407X,9780743264075,eng,333,524,40,10/11/2005,Touchstone -9143,Ballet Class,John Green/Caroline Denzler,3.77,0486296385,9780486296388,en-US,48,13,0,7/2/1997,Dover Publications -9144,NYC Ballet Workout,Peter Martins/Paul Kolnik/Richard Corman/Howard Kaplan,4.01,0688152023,9780688152024,eng,208,238,10,1/13/1997,William Morrow Paperbacks -9148,The Illustrated Book of Ballet Stories (with CD),Barbara Newman/Gill Tomblin/Darcey Bussell,4.18,0789460971,9780789460974,eng,64,64,5,6/14/2000,DK Children -9149,Lara's Leap of Faith (The Royal Ballet School Diaries #2),Alexandra Moss/Veronica Bennett,4.07,0448435365,9780448435367,eng,144,155,14,1/13/2005,Grosset & Dunlap -9151,Isabelle's Perfect Performance (The Royal Ballet School Diaries #3),Alexandra Moss,4.06,0448437694,9780448437699,eng,144,130,4,5/5/2005,Grosset & Dunlap -9153,The Barefoot Book Of Ballet Stories,Jane Yolen,4.21,1841482641,9781841482644,eng,96,1,0,9/1/2004,Barefoot Books -9155,Boys or Ballet? (Royal Ballet School Diaries #8),Alexandra Moss,3.92,0448442515,9780448442518,eng,144,93,8,8/3/2006,Grosset & Dunlap -9156,101 Stories of the Great Ballets: The Scene-by-Scene Stories of the Most Popular Ballets Old and New,George Balanchine/Francis Mason,4.00,0385033982,9780385033985,en-US,560,203,12,5/20/1975,Anchor -9164,Ballet for Dummies,Scott Speck/Evelyn Cisneros,4.01,0764525689,9780764525681,eng,348,78,6,10/3/2003,For Dummies -9171,Time for Ballet,Adèle Geras/Shelagh McNicholas/Adèle Geras,3.72,0803729782,9780803729780,eng,32,69,13,3/30/2004,Dial -9184,Ballet in Western Culture: A History of Its Origins and Evolution,Carol Lee,3.53,0415942578,9780415942577,eng,368,17,0,8/11/2002,Routledge -9186,Angelina's Ballet Class,Katharine Holabird/Helen Craig,3.88,044844013X,9780448440132,eng,24,73,1,1/19/2006,Grosset & Dunlap -9203,San Francisco Ballet at Seventy-Five,Janice Ross/Allan Ulrich/Brigitte Lefevre,4.33,0811856984,9780811856980,en-US,188,6,1,11/12/2007,Chronicle Books -9216,Ballet and Modern Dance,Susan Au,3.74,0500203520,9780500203521,eng,224,53,6,6/17/2002,Thames Hudson -9223,Teaching Classical Ballet,John White,4.47,081301395X,9780813013954,eng,200,15,1,4/20/1996,University Press of Florida -9236,Drat! We're Rats! (Scrambled Legs #1),Jahnna N. Malcolm,3.69,0970016409,9780970016409,eng,160,41,2,9/1/2000,Starcatcher Press -9245,Battle of the Bunheads (Scrambled Legs #2),Jahnna N. Malcolm,3.50,0970016417,9780970016416,eng,160,44,3,9/1/2000,Starcatcher Press -9253,Blubberina (Scrambled Legs #5),Jahnna N. Malcolm,3.29,0590428888,9780590428880,eng,135,13,0,10/1/1989,Scholastic -9262,The Books in My Life,Henry Miller,3.81,0811201082,9780811201087,eng,327,709,29,1/17/1969,New Directions -9282,The Smoke Jumper,Nicholas Evans,4.06,0440235162,9780440235163,eng,576,28769,694,7/30/2002,Dell -9288,La casa de los espíritus,Isabel Allende,4.23,9500717638,9789500717632,spa,456,198,18,9/1/2000,Sudamericana -9298,Last Chance Saloon,Marian Keyes,3.81,0060086246,9780060086244,en-US,528,35784,686,5/27/2003,HarperCollins Publishers -9299,Anybody Out There? (Walsh Family #4),Marian Keyes,3.92,0060731303,9780060731304,eng,456,348,45,5/9/2006,William Morrow -9300,Watermelon (Walsh Family #1),Marian Keyes,3.78,0099489988,9780099489986,eng,520,65441,1233,7/7/2005,Arrow -9301,Rachel's Holiday (Walsh Family #2),Marian Keyes,3.95,0060090383,9780060090388,eng,578,55525,1223,1/23/2007,William Morrow Paperbacks -9303,Lucy Sullivan Is Getting Married,Marian Keyes,3.77,0060090375,9780060090371,en-US,640,43077,690,1/23/2007,William Morrow Paperbacks -9304,Essays and Stories by Marian Keyes: Bags Trips Make-up Tips Charity Glory and the Darker Side of the Story,Marian Keyes,3.82,0060787031,9780060787035,eng,368,1625,42,9/6/2005,William Morrow Paperbacks -9305,No Dress Rehearsal,Marian Keyes,3.29,1902602323,9781902602325,eng,79,780,52,12/1/2000,New Island Books -9325,Fullmetal Alchemist Vol. 10,Hiromu Arakawa/Akira Watanabe,4.60,1421504618,9781421504612,eng,200,8989,151,11/21/2006,VIZ Media LLC -9326,Fullmetal Alchemist Vol. 5 (Fullmetal Alchemist #5),Hiromu Arakawa/Akira Watanabe,4.56,1421501759,9781421501758,eng,200,12885,208,1/10/2006,VIZ Media LLC -9327,The House of the Spirits,Isabel Allende/Magda Botin,4.23,0552995886,9780552995887,eng,491,1021,112,8/8/1986,Black Swan -9330,The House of the Spirits,Isabel Allende/Madga Bogin/Christopher Hitchens,4.23,1400043182,9781400043187,eng,488,270,49,4/19/2005,Everyman's Library -9337,How To Meditate: An Anthology Of Talks On Meditation And "Meditation: The Bridge Is Flowing But The River Is Not",Frederick P. Lenz,0.00,1932206108,9781932206104,eng,228,0,0,1/1/2004,Frederick P. Lenz Foundation for American Buddhism -9338,Insights: Talks On The Nature Of Existence,Frederick P. Lenz,0.00,1932206086,9781932206081,eng,304,0,0,1/1/2003,Frederick P. Lenz Foundation for American Buddhism -9345,Palestine: Peace Not Apartheid,Jimmy Carter,3.82,0743285026,9780743285025,eng,288,2864,349,11/30/2006,Simon & Schuster -9346,Our Endangered Values: America's Moral Crisis,Jimmy Carter,3.88,0743285018,9780743285018,eng,224,3193,236,9/26/2006,Simon Schuster -9347,An Hour Before Daylight: Memories of a Rural Boyhood,Jimmy Carter,3.91,0743211995,9780743211994,eng,288,1935,229,10/16/2001,Simon Schuster -9349,The Real Jimmy Carter: How Our Worst Ex-President Undermines American Foreign Policy Coddles Dictators and Created the Party of Clinton and Kerry,Steven F. Hayward,3.32,0895260905,9780895260901,eng,272,33,4,3/19/2004,Regnery Publishing -9350,The Virtues of Aging,Jimmy Carter,3.55,0345425928,9780345425928,eng,160,221,36,10/13/1998,Ballantine Books -9351,Living Faith,Jimmy Carter,3.80,0812930347,9780812930344,eng,288,481,33,9/14/1998,Three Rivers Press (CA) -9352,Sharing Good Times,Jimmy Carter,3.47,0743270681,9780743270687,eng,192,238,35,11/7/2005,Simon Schuster -9355,Until I Find You,John Irving,3.63,0345479726,9780345479723,eng,820,22547,1371,5/30/2006,Ballantine Books -9361,Atlas Shrugged,Ayn Rand,3.69,0525948929,9780525948926,eng,1176,941,136,4/21/2005,Dutton -9362,Atlas Shrugged,Ayn Rand/Leonard Peikoff,3.69,0452286360,9780452286368,eng,1192,340,51,12/28/2004,NAL -9363,Atlas Shrugged,Ayn Rand,3.69,0451171926,9780451171924,eng,1074,912,128,3/3/1992,Signet -9365,Atlas Shrugged,Ayn Rand,3.69,0394415760,9780394415765,en-US,1168,86,12,10/12/1957,Random House -9370,Skinny Legs and All,Tom Robbins,4.04,1842430343,9781842430347,eng,422,35517,1014,3/10/2002,No Exit Press -9376,Fannie Flagg's Original Whistle Stop Cafe Cookbook,Fannie Flagg,4.19,0449910288,9780449910283,eng,224,911,42,9/11/1995,Ballantine Books -9386,Free Play: Improvisation in Life and Art,Stephen Nachmanovitch,4.14,0874776317,9780874776317,eng,224,1675,124,5/1/1991,Tarcherperigee -9409,The Sari Shop,Rupa Bajwa,3.44,039332690X,9780393326901,eng,224,1858,153,6/17/2005,W. W. Norton Company -9416,Confessions of a Shopaholic (Shopaholic #1),Sophie Kinsella,3.64,0440241413,9780440241416,eng,368,603675,10079,11/4/2003,Dell Publishing Company -9417,Shopaholic and Sister (Shopaholic #4),Sophie Kinsella,3.66,044024191X,9780440241911,eng,388,76205,1867,11/28/2006,Dell Publishing Company -9418,Shopaholic Takes Manhattan (Shopaholic #2),Sophie Kinsella,3.76,0440241812,9780440241812,eng,387,100796,2382,12/27/2004,Dell Publishing Company -9419,Shopaholic Ties the Knot (Shopaholic #3),Sophie Kinsella,3.78,0440241898,9780440241898,eng,407,94917,2089,8/31/2004,Dell Publishing Company -9420,Shopaholic & Baby (Shopaholic #5),Sophie Kinsella,3.79,0385338708,9780385338707,eng,359,110706,2070,2/27/2007,Dial Press -9423,The Secret Dreamworld of a Shopaholic (Shopaholic #1),Sophie Kinsella,3.64,0552998877,9780552998871,eng,320,2214,249,9/14/2000,Transworld Publishers -9427,The Story of Chicago May,Nuala O'Faolain,3.24,1573223204,9781573223201,en-US,307,344,59,10/1/2005,Riverhead Books -9431,Chicago Stories,James T. Farrell/Charles Fanning,3.89,0252019814,9780252019814,en-US,296,38,5,6/1/1998,University of Illinois Press -9435,Chicago Stories: Tales of the City,John Miller/Stuart Dybek,3.60,0811839745,9780811839747,eng,224,49,9,2/1/2003,Chronicle Books -9438,The Basic Works of Aristotle,Aristotle/Richard Peter McKeon/C.D.C. Reeve,4.24,0375757996,9780375757990,eng,1487,2174,51,8/19/2009,Modern Library/Random House (NY) -9439,Fear and Trembling and The Sickness Unto Death,Søren Kierkegaard/Walter Lowrie,4.10,0691019622,9780691019628,eng,420,519,36,11/21/1968,Princeton University Press -9442,Selections from Don Quixote - Selecciones de Don Quijote de la Mancha,Miguel de Cervantes Saavedra/Stanley Appelbaum,3.34,0486406660,9780486406664,mul,288,26,0,12/23/1998,Dover Publications -9444,The Complete Collected Poems,Maya Angelou,4.42,067942895X,9780679428954,eng,273,7983,245,9/13/1994,Random House -9454,Hegel's Phenomenology of Spirit,Georg Wilhelm Friedrich Hegel/A.V. Miller/John Niemeyer Findlay,3.93,0198245971,9780198245971,eng,640,13920,248,11/30/1976,Oxford University Press -9456,Preface to the Phenomenology of Spirit,Georg Wilhelm Friedrich Hegel/Yirmiyahu Yovel,4.06,0691120528,9780691120522,eng,223,110,16,1/17/2005,Princeton University Press -9457,Hegel's Phenomenology of Spirit,Martin Heidegger/Kenneth Maly/Parvis Emad,4.18,0253209102,9780253209108,eng,176,117,3,8/1/1988,Indiana University Press -9462,Plato: Complete Works,Plato/John M. Cooper/Benjamin Jowett/Dorothea Frede/Alexander Nehamas/Paul Woodruff/Anthony Kenny/Rosamond Kent Sprague/Nicholas D. Smith/Karen Bell/D.S. Hutchinson/Donald J. Zeyl/Francisco J. González/Diskin Clay/Malcolm Schofield/Glenn R. Morrow/Jonathan Barnes/G.M.A. Grube/Brad Inwood/Mark Joyal/Jackson P. Hershbell/J.M. Edmonds/C.D.C. Reeve/Myles Burnyeat/Nicholas P. White/Mary Louise Gill/C.J. Rowe/Stanley Lombardo/David Gallop/Jeffrey Mitscherling/Richard D. McKiharan Jr./Andrew S. Becker/Mark Reuter/M.J. Levett/Paul Ryan,4.35,0872203492,9780872203495,eng,1838,9284,133,5/1/1997,Hackett Publishing Company Inc. -9464,A Guided Tour of 5 Works by Plato: Euthyphro/Apology/Crito/Phaedo/Cave,Christopher Biffle/Plato,4.33,1559343567,9781559343565,eng,125,9,1,12/28/1995,Mayfield Publishing Company (NY) -9475,Midnight for Charlie Bone (The Children of the Red King #1),Jenny Nimmo,3.82,0439474299,9780439474290,eng,401,36853,1725,3/1/2003,Orchard Books -9479,The Midnight Mystery (The Boxcar Children #95),Gertrude Chandler Warner,3.90,080755538X,9780807555385,eng,128,312,9,1/1/2003,Albert Whitman Company -9484,Within a Budding Grove (In Search of Lost Time #2),Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin/D.J. Enright,4.40,0375752196,9780375752193,eng,749,1032,162,11/3/1998,Modern Library -9486,Exclusion & Embrace: A Theological Exploration of Identity Otherness and Reconciliation,Miroslav Volf,4.27,0687002826,9780687002825,eng,306,1967,131,12/1/1996,Abingdon Press -9487,A Time to Embrace (Timeless Love #2),Karen Kingsbury,4.35,1595542329,9781595542328,eng,400,3728,141,10/29/2006,Thomas Nelson -9489,Devil's Embrace (Devil #1),Catherine Coulter,3.80,0451200268,9780451200266,eng,397,3381,116,5/1/2000,Signet -9490,The Book of Embraces,Eduardo Galeano/Cedric Belfrage/Mark Schafer,4.30,0393308553,9780393308556,eng,288,2221,165,4/17/1992,W.W. Norton & Company -9491,Experiencing Father's Embrace,Jack Frost,4.33,0768423481,9780768423488,eng,256,545,44,4/1/2006,Destiny Image Incorporated -9493,A Time to Embrace: Same-Gender Relationships in Religion Law and Politics,William Stacy Johnson,4.21,080282966X,9780802829665,en-US,330,44,10,11/1/2006,William B. Eerdmans Publishing Company -9497,Memory's Embrace (Corbins #3),Linda Lael Miller,4.19,0671737694,9780671737696,eng,320,407,18,6/1/1991,Pocket Books -9498,Beauty: The Invisible Embrace,John O'Donohue,4.47,0060957263,9780060957261,en-US,261,678,78,3/1/2005,Harper Perennial -9501,Embrace,Mark Behr,3.80,0349113009,9780349113005,eng,726,72,5,2/1/2001,Little Brown Book Group -9503,Saving Fish from Drowning,Amy Tan,3.43,034546401X,9780345464019,eng,472,26762,2524,9/26/2006,Ballantine Books -9506,Un Lugar Llamado Nada,Amy Tan/Claudia Conde,3.43,840806701X,9788408067016,spa,475,98,6,8/30/2006,Planeta Publishing -9507,Virginia Woolf: An Inner Life,Julia Briggs,4.15,0156032295,9780156032292,eng,544,635,21,11/6/2006,Mariner Books -9512,Measure for Measure,William Shakespeare,3.68,014101380X,9780141013800,eng,224,58,5,10/27/2005,Penguin Group(CA) -9515,Henry Adams and the Making of America,Garry Wills,3.79,0618134301,9780618134304,en-US,480,95,20,9/14/2005,Houghton Mifflin Harcourt -9516,Persepolis: The Story of a Childhood (Persepolis #1),Marjane Satrapi/Mattias Ripa,4.25,037571457X,9780375714573,eng,153,144121,8131,6/1/2004,Pantheon -9517,Persepolis 2: The Story of a Return (Persepolis #2),Marjane Satrapi/Anjali Singh,4.24,0375714669,9780375714665,eng,187,57309,2308,8/2/2005,Pantheon Books -9525,Chicken with Plums,Marjane Satrapi,3.86,0375424156,9780375424151,en-US,84,8539,667,10/3/2006,Pantheon Books -9526,Embroideries,Marjane Satrapi/Anjali Singh,3.86,0375714677,9780375714672,eng,144,14654,1121,4/18/2006,Pantheon -9529,The Shadow of the Wind (The Cemetery of Forgotten Books #1),Carlos Ruiz Zafón/Lucia Graves,4.26,0753820250,9780753820254,eng,520,6726,1018,10/5/2005,Phoenix Press -9531,Peter and the Shadow Thieves (Peter and the Starcatchers #2),Dave Barry/Ridley Pearson/Greg Call,4.16,078683787X,9780786837878,eng,557,32307,1224,7/15/2006,Hyperion Books -9532,Ender's Shadow (The Shadow Series #1),Orson Scott Card,4.31,0765342405,9780765342409,eng,469,133114,4243,5/19/2002,Starscape -9534,Shadow of the Hegemon (The Shadow Series #2),Orson Scott Card,3.95,0812565959,9780812565959,eng,451,65344,1419,12/9/2001,Tor Books -9538,Shadow Dance (Buchanan-Renard #6),Julie Garwood,4.00,0345453867,9780345453860,eng,336,11205,431,12/26/2006,Ballantine Books -9539,The Shadow Rising (The Wheel of Time #4),Robert Jordan,4.24,0812513738,9780812513738,eng,1007,148074,2471,10/15/1993,Tom Doherty Tor Fantasy -9540,The Shadow Party: How George Soros Hillary Clinton and Sixties Radicals Seized Control of the Democratic Party,David Horowitz/Richard Poe,4.20,1595550445,9781595550446,en-US,304,227,32,8/6/2006,Thomas Nelson -9542,Cast in Shadow (Chronicles of Elantra #1),Michelle Sagara/Michelle Sagara West,3.79,0373802544,9780373802548,eng,507,14477,868,7/1/2005,Luna -9544,Owning Your Own Shadow: Understanding the Dark Side of the Psyche,Robert A. Johnson,4.04,0062507540,9780062507549,eng,118,2685,182,6/9/2009,HarperOne -9550,In Praise of Shadows,Jun'ichirō Tanizaki/Thomas J. Harper/Edward G. Seidensticker,4.09,0099283573,9780099283577,eng,73,467,32,5/3/2001,Vintage Classics -9551,Shadow of the Almighty: The Life and Testament of Jim Elliot,Elisabeth Elliot,4.40,006062213X,9780060622138,eng,272,6946,182,9/29/2009,HarperOne -9553,Shadow Game (GhostWalkers #1),Christine Feehan,4.12,0515135968,9780515135961,eng,323,15827,616,8/26/2003,Berkley Books -9556,The Elephant Vanishes,Haruki Murakami/Alfred Birnbaum/Jay Rubin,3.86,0099448750,9780099448754,eng,327,1299,128,12/1/2003,Vintage Books -9557,Sputnik Sweetheart,Haruki Murakami/Philip Gabriel,3.83,0099448475,9780099448471,eng,229,78434,3464,10/3/2002,Vintage -9558,Back to Wando Passo,David Payne,3.25,0060851899,9780060851897,en-US,448,202,26,5/23/2006,William Morrow -9566,Still Life with Woodpecker,Tom Robbins,4.05,184243022X,9781842430224,eng,288,63155,2286,4/9/2001,No Exit Press -9567,Half Asleep in Frog Pajamas,Tom Robbins,3.74,184243036X,9781842430361,eng,389,18417,542,1/5/2002,No Exit Press -9571,Fierce Invalids Home from Hot Climates,Tom Robbins,4.03,0553107755,9780553107753,en-US,415,335,38,5/2/2000,Bantam Books -9577,PanAroma: Jitterbug Perfume,Tom Robbins/Nikolaus Hansen,4.25,3499156717,9783499156717,ger,556,59,4,12/5/1985,Rowohlt Verlag -9582,Ein Platz für Hot Dogs: Another Roadside Attraction,Tom Robbins/Pociao/Roberto de Hollanda,3.98,3499154293,9783499154294,ger,376,3,0,6/1/1997,Rowohlt Verlag -9585,Halbschlaf im Froschpyjama,Tom Robbins/Pociao/Walter Hartmann,3.74,3499224429,9783499224423,ger,459,22,2,11/2/1998,Rowohlt Verlag -9590,God Bless You Mr. Rosewater,Kurt Vonnegut Jr.,3.96,0385333471,9780385333474,eng,288,40599,1127,9/8/1998,Dial Press -9591,Wampeters Foma and Granfalloons,Kurt Vonnegut Jr.,3.79,0385333811,9780385333818,en-US,318,7213,139,1/12/1999,Dial Press Trade Paperback -9592,Mother Night,Kurt Vonnegut Jr.,4.22,0385334141,9780385334143,eng,282,64096,2316,5/11/1999,Dial Press -9593,Galápagos,Kurt Vonnegut Jr.,3.88,0385333870,9780385333870,eng,324,55850,1990,1/12/1999,Dial Press -9594,Timequake,Kurt Vonnegut Jr.,3.72,0099267543,9780099267546,eng,219,23527,822,8/6/1998,Vintage Classics -9595,Slapstick or Lonesome No More!,Kurt Vonnegut Jr.,3.87,0385334230,9780385334235,eng,288,31084,1062,5/11/1999,Dial Press -9599,Like Shaking Hands with God: A Conversation About Writing,Kurt Vonnegut Jr./Lee Stringer,3.72,0743410580,9780743410588,en-US,80,866,52,12/1/2000,Washington Square Press -9602,Palm Sunday: An Autobiographical Collage,Kurt Vonnegut Jr.,3.77,0385334265,9780385334266,eng,300,5135,192,5/11/1999,Dial Press -9603,Sun Moon Star,Kurt Vonnegut Jr./Ivan Chermayeff,3.78,0060263199,9780060263195,eng,62,420,40,1/1/1980,HarperCollins Publishers -9605,Cat's Cradle/God Bless You Mr. Rosewater/Breakfast of Champions,Kurt Vonnegut Jr.,4.36,051712436X,9780517124369,eng,527,914,8,5/28/1995,Wings Books -9619,Bradbury Stories: 100 of His Most Celebrated Tales,Ray Bradbury,4.41,0060544880,9780060544881,eng,912,5161,184,4/5/2005,William Morrow Paperbacks -9620,Farewell Summer (Green Town #3),Ray Bradbury,3.72,0061131547,9780061131547,eng,211,3405,338,10/17/2006,William Morrow -9622,Classic Stories 1: The Golden Apples of the Sun/R is for Rocket,Ray Bradbury,4.21,0553286374,9780553286373,eng,348,847,60,4/7/1990,Bantam Books -9623,Dandelion Wine,Ray Bradbury,4.09,0380977265,9780380977260,en-US,267,676,119,2/1/1999,William Morrow -9626,The Homecoming,Ray Bradbury/Dave McKean,4.08,0060859628,9780060859626,en-US,56,806,98,8/30/2006,Collins Design -9629,Zen in the Art of Writing: Essays on Creativity,Ray Bradbury,4.10,1877741094,9781877741098,en-US,176,909,135,8/1/1993,Joshua Odell Editions -9632,Switch on the Night,Ray Bradbury/Leo Dillon/Diane Dillon,4.13,0553112449,9780553112443,en-US,40,198,12,9/14/2004,Dragonfly Books -9633,The Best of Ray Bradbury,Ray Bradbury/Dave Gibbons/Richard Corben/Mike Mignola,4.07,0743474767,9780743474764,eng,162,308,28,6/21/2012,iBooks -9635,The Bradbury Chronicles: The Life of Ray Bradbury,Sam Weller,4.24,0060545844,9780060545840,en-US,384,372,45,2/21/2006,Harper Perennial -9638,The Cat's Pajamas,Ray Bradbury,3.73,0060777338,9780060777333,eng,234,1370,122,7/26/2005,William Morrow Paperbacks -9639,Essays,George Orwell/John Carey,4.33,0375415033,9780375415036,eng,1369,607,48,10/15/2002,Everyman's Library Classics -9644,Why I Write,George Orwell,4.03,0143036351,9780143036357,eng,120,6389,541,9/6/2005,Penguin Books -9646,Homage to Catalonia,George Orwell/Lionel Trilling,4.14,0156421178,9780156421171,eng,232,30358,1629,10/22/1980,Harcourt Inc.(Harvest Book) -9648,Keep the Aspidistra Flying,George Orwell,3.88,0141183721,9780141183725,eng,277,11970,688,10/26/2000,Penguin Books Ltd -9652,The Orwell Reader: Fiction Essays and Reportage,George Orwell/Richard H. Rovere,4.38,0156701766,9780156701761,eng,480,274,22,3/8/1961,Mariner Books -9653,If on a Winter's Night a Traveler,Italo Calvino/William Weaver/Peter Washington,4.05,0679420258,9780679420255,eng,254,1444,180,6/1/1993,Everyman's Library -9657,Parachutes & Kisses,Erica Jong,3.46,1585425001,9781585425006,eng,405,577,26,8/3/2006,Tarcherperigee -9659,Fear of Fifty: A Midlife Memoir,Erica Jong,3.55,1585425249,9781585425242,eng,329,455,31,9/7/2006,Tarcherperigee -9660,How to Save Your Own Life: An Isadora Wing Novel,Erica Jong/Anthony Burgess,3.60,1585424994,9781585424993,eng,313,1316,80,7/6/2006,Tarcherperigee -9666,Any Woman's Blues,Erica Jong,3.51,1585425494,9781585425495,eng,362,425,28,1/1/2007,Tarcherperigee -9669,What Do Women Want?: Essays by Erica Jong,Erica Jong,3.69,1585425540,9781585425549,eng,309,164,9,5/10/2007,Tarcherperigee -9677,Fanny: Being the True History of the Adventures of Fanny Hackabout-Jones,Erica Jong,3.79,0393324354,9780393324358,eng,512,971,71,5/17/2003,W. W. Norton Company -9681,Serenissima aka Shylock's Daughter,Erica Jong,3.29,0440201047,9780440201045,eng,384,282,17,3/1/1988,Dell -9696,Dogeaters,Jessica Hagedorn,3.59,1559362154,9781559362153,eng,96,90,8,12/1/2002,Theatre Communications Group -9704,Crescent and Star: Turkey Between Two Worlds,Stephen Kinzer,3.84,0374528667,9780374528669,eng,272,797,116,9/4/2002,Farrar Straus and Giroux -9712,Love in the Time of Cholera,Gabriel García Márquez/Edith Grossman,3.91,140003468X,9781400034680,eng,348,324487,13070,10/5/2003,Vintage International -9713,El amor en los tiempos del cólera,Gabriel García Márquez,3.91,9500703203,9789500703208,spa,451,663,46,1/1/1992,Sudamericana -9714,Gabriel Garcia Marquez's Love in the Time of Cholera: A Reader's Guide,Thomas Fahy,4.24,0826414753,9780826414755,eng,188,1953,84,4/10/2003,Bloomsbury Academic -9717,The Unbearable Lightness of Being,Milan Kundera/Michael Henry Heim,4.10,0571224385,9780571224388,eng,320,248686,8251,10/27/2009,Harper Perennial -9723,Obasan,Joy Kogawa,3.64,0385468865,9780385468862,eng,320,5407,368,12/27/1993,Anchor Books -9735,Ender's Game Boxed Set: Ender's Game Ender's Shadow Shadow of the Hegemon,Orson Scott Card,4.49,0765344955,9780765344953,en-US,1296,1795,60,9/16/2002,Tor Books -9739,Speaker for the Dead (Ender's Saga #2),Orson Scott Card,4.07,0812532570,9780812532579,eng,432,317,31,2/15/1987,Tor Books -9742,The Audacity of Hope: Thoughts on Reclaiming the American Dream,Barack Obama,3.75,0307237699,9780307237699,eng,375,127324,4496,10/17/2006,Crown -9746,Mao: The Unknown Story,Jung Chang/Jon Halliday,3.83,0679746323,9780679746324,eng,801,8035,640,11/14/2006,Anchor Books -9754,The Art of War,Mao Zedong,4.20,097607267X,9780976072676,eng,328,62,0,4/1/2005,El Paso Norte Press -9755,Oracle Bones: A Journey Between China's Past and Present,Peter Hessler,4.18,0060826584,9780060826581,eng,512,5247,491,4/25/2006,Harper -9763,Wild Swans: Three Daughters of China,Jung Chang,4.26,0007176155,9780007176151,eng,666,1832,214,4/5/2004,Harper Perennial -9767,The Wild Swans,Peg Kerr,3.67,0446608475,9780446608473,eng,464,352,37,11/1/2001,Aspect -9784,Women in Love,D.H. Lawrence,3.67,0486424588,9780486424583,eng,416,25059,702,1/15/2003,Dover Publications -9786,Women Who Love Too Much,Robin Norwood,4.02,0099474123,9780099474128,eng,314,267,32,9/2/2004,Arrow -9787,Men Who Hate Women and the Women Who Love Them: When Loving Hurts and You Don't Know Why,Susan Forward/Joan Torres,4.09,0553381415,9780553381412,eng,304,1570,64,1/2/2002,Bantam -9789,A Walk in the Woods: Rediscovering America on the Appalachian Trail,Bill Bryson,4.06,0767902521,9780767902526,eng,284,4315,532,5/4/1999,Broadway Books -9791,A Walk in the Woods: Rediscovering America on the Appalachian Trail,Bill Bryson,4.06,0307279464,9780307279460,eng,397,308840,14993,12/26/2006,Anchor Books -9796,A Walk in the Woods (Stickerific),Walt Disney Company,3.50,0736411038,9780736411035,eng,16,8,0,1/23/2001,Golden/Disney -9799,The Fortress of Solitude,Jonathan Lethem,3.88,0571219357,9780571219353,eng,528,16714,1010,1/6/2005,Faber and Faber -9802,Fortress of Solitude / The Devil Genghis,Kenneth Robeson/Lester Dent,3.99,1932806490,9781932806496,eng,128,95,11,12/1/2006,Nostalgia Ventures -9806,Our Ancestors: The Cloven Viscount The Baron in the Trees The Non-Existent Knight,Italo Calvino,4.27,0330261568,9780330261562,eng,393,958,57,12/31/1980,Picador -9811,Difficult Loves,Italo Calvino,3.94,0156260557,9780156260558,en-US,300,4084,205,9/23/1985,Mariner Books -9813,The Nonexistent Knight & The Cloven Viscount,Italo Calvino,4.03,0156659751,9780156659758,en-US,272,4701,181,3/28/1977,Mariner Books -9815,The View from Castle Rock,Alice Munro,3.68,1400042828,9781400042821,eng,349,3459,423,11/7/2006,Alfred A. Knopf -9816,The View From Castle Rock,Alice Munro,3.68,0771065264,9780771065262,eng,368,53,12,11/19/2008,McClelland and Stewart -9820,Crossing to Safety,Wallace Stegner/Terry Tempest Williams/T.H. Watkins,4.16,037575931X,9780375759314,eng,368,31394,4262,4/9/2002,Modern Library -9826,Oh Rats! The Story of Rats and People,Albert Marrin/C.B. Mordan,3.77,0525477624,9780525477624,eng,48,432,90,8/17/2006,Dutton Books for Young Readers -9827,King Rat (Asian Saga #4),James Clavell,4.14,0385333765,9780385333764,eng,368,28103,643,5/19/2009,Delta -9828,Rat Bastards: The Life and Times of South Boston's Most Honorable Irish Mobster,John "Red" Shea/Mark Wahlberg,3.51,0060837160,9780060837167,eng,304,34,3,3/14/2006,William Morrow -9831,Julius Knipl Real Estate Photographer: The Beauty Supply District,Ben Katchor,4.35,0375700986,9780375700989,eng,120,174,16,8/12/2003,Pantheon -9832,Blind Willow Sleeping Woman: 24 Stories,Haruki Murakami/Ellen Archer/Patrick Lawlor,3.84,1400102952,9781400102952,eng,0,28,3,10/15/2006,Tantor Media -9833,Blind Willow Sleeping Woman,Haruki Murakami/Philip Gabriel/Jay Rubin,3.84,1400044618,9781400044610,eng,333,22847,1280,8/29/2006,Alfred A. Knopf -9838,The Bookseller of Kabul,Åsne Seierstad/Ingrid Christopherson,3.77,0316159417,9780316159418,en-US,288,34941,2473,10/26/2004,Little Brown and Company -9840,Jasmine and Stars: Reading More Than Lolita in Tehran,Fatemeh Keshavarz,3.63,0807831093,9780807831090,en-US,174,258,46,3/5/2007,University of North Carolina Press -9841,Making Globalization Work,Joseph E. Stiglitz,3.85,0393061221,9780393061222,eng,384,1718,88,9/17/2006,W. W. Norton Company -9844,Prep : A Novel,Curtis Sittenfeld,3.38,081297235X,9780812972351,eng,420,55304,4450,11/22/2005,Random House Trade Paperbacks -9862,Tan fuerte tan cerca,Jonathan Safran Foer,3.98,8426415164,9788426415165,eng,457,47,1,9/30/2005,Lumen -9863,The Wizard of Oz,Salman Rushdie/Richard Maltby/Melvyn Bragg,4.00,0851703003,9780851703008,eng,69,749,54,5/27/1992,British Film Institute -9864,The Ground Beneath Her Feet,Salman Rushdie,3.79,0312254997,9780312254995,eng,576,9445,476,3/16/2000,Picador -9865,The Moor's Last Sigh,Salman Rushdie,3.93,009959241X,9780099592419,eng,434,10414,445,7/4/1996,Vintage -9866,Los Versos Satánicos,Salman Rushdie,3.71,8497598369,9788497598361,spa,679,1,0,8/30/2003,Debolsillo -9873,Dangling Man,Saul Bellow/Salman Rushdie,3.54,0140189351,9780140189353,eng,191,1718,103,10/1/1996,Penguin Classics -9875,Grimus,Salman Rushdie,3.41,0812969995,9780812969993,eng,320,2560,150,9/30/2003,Random House Trade -9888,Breakfast at Tiffany's,Truman Capote,3.89,0140274111,9780140274110,eng,157,2107,238,9/3/1998,Penguin Books -9897,Jesus' Son,Denis Johnson,4.09,041377242X,9780413772428,eng,192,321,30,1/23/2007,Methuen Publishing -9903,Angels,Denis Johnson,3.72,0099440830,9780099440833,eng,209,4263,227,3/6/2003,Vintage -9904,The Throne of the Third Heaven of the Nations Millennium General Assembly: Poems Collected and New,Denis Johnson,4.15,0060926961,9780060926960,eng,225,562,33,1/1/1996,Harper Perennial -9908,The Stars at Noon,Denis Johnson,3.58,0060976101,9780060976101,eng,192,597,40,5/30/2000,Harper Perennial -9912,The Rules of Attraction,Bret Easton Ellis,3.68,067978148X,9780679781486,eng,283,35311,974,6/30/1998,Vintage Contemporaries -9913,Glamorama,Bret Easton Ellis,3.46,0375703845,9780375703843,eng,546,18181,669,3/21/2000,Vintage -9915,Less Than Zero,Bret Easton Ellis,3.58,0679781498,9780679781493,eng,208,55900,2543,6/9/2010,Vintage Books -9919,A Christmas Memory,Truman Capote,4.24,0375837892,9780375837890,eng,48,9982,849,10/10/2006,Knopf Books for Young Readers -9920,In Cold Blood,Truman Capote/Bob Colacello,4.07,0375507906,9780375507908,eng,343,3266,332,3/5/2002,Modern Library -9921,The Southern Haunting of Truman Capote,James C. Simmons/Marie Rudisill,3.90,1581821360,9781581821369,eng,135,29,3,10/1/2000,Cumberland House Publishing -9922,Summer Crossing,Truman Capote,3.44,0812975936,9780812975932,eng,142,5274,428,9/28/2006,Modern Library -9923,Answered Prayers,Truman Capote,3.49,0141185937,9780141185934,eng,192,102,17,10/25/2001,Penguin Classics -9924,The Grass Harp Including A Tree of Night and Other Stories,Truman Capote,4.01,0679745572,9780679745570,eng,272,4533,188,9/28/1993,Vintage -9929,From Babylon to Timbuktu: A History of the Ancient Black Races Including the Black Hebrews,Rudolph R. Windsor/El Hagahn,4.31,0962088110,9780962088117,eng,151,406,30,8/25/2006,Windsor Golden Series -9931,Cruelest Journey: Six Hundred Miles To Timbuktu,Kira Salak,3.93,0792274571,9780792274575,eng,320,542,65,11/1/2004,National Geographic Society -9936,Between Time and Timbuktu or Prometheus-5,Kurt Vonnegut Jr.,3.46,0385280793,9780385280792,eng,304,727,23,7/15/1972,Delta -9950,Murder in Amsterdam: The Death of Theo van Gogh and the Limits of Tolerance,Ian Buruma,3.72,1594201080,9781594201080,eng,288,996,98,9/7/2006,Penguin Press HC The -9957,The Cement Garden,Ian McEwan,3.54,0099468387,9780099468387,eng,144,18376,1022,8/5/2004,Vintage -9961,Atonement,Ian McEwan,3.90,0099429799,9780099429791,eng,372,4844,506,5/2/2002,Vintage -9974,Gertrud The Great Of Helfta: Spiritual Exercises,Gertrude the Great/Gertrud Jaron Lewis,3.43,0879074493,9780879074494,eng,165,7,1,11/1/1989,Cistercian Publications -9975,Gertrud,Hermann Hesse,3.85,3518373900,9783518373903,ger,180,134,5,1/1/1983,Suhrkamp -9981,Der Prozess,Franz Kafka,3.98,0805232117,9780805232110,ger,0,2,0,5/5/1988,Schocken -9987,Naokos Lächeln,Haruki Murakami/Ursula Gräfe,4.03,3442730503,9783442730506,ger,416,1254,63,2/1/2003,btb -9997,The Ruined Map,Kōbō Abe/E. Dale Saunders,3.55,0375726527,9780375726521,eng,304,1398,105,12/4/2001,Vintage -10000,The Face of Another,Kōbō Abe/E. Dale Saunders,3.78,0375726535,9780375726538,eng,238,2584,153,2/4/2003,Vintage -10002,Three Plays: Involuntary Homicide / The Green Stockings / The Ghost is Here,Kōbō Abe/Donald Keene,3.91,0231082819,9780231082815,eng,233,83,4,3/1/1997,Columbia University Press -10004,Secret Rendezvous,Kōbō Abe/Juliet Winters Carpenter,3.61,0375726543,9780375726545,eng,192,989,82,7/9/2002,Vintage -10006,Oracle Night,Paul Auster,3.78,0965913228,9780965913225,eng,245,9941,462,12/2/2003,Henry Holt -10008,Eleanor Rigby,Douglas Coupland,3.65,1582346437,9781582346434,eng,272,8517,372,5/30/2006,Bloomsbury USA -10009,Homo Faber,Max Frisch,3.74,0156421356,9780156421355,eng,228,12491,267,5/1/1994,Mariner Books -10013,Erläuterungen Zu Max Frisch Homo Faber,Bernd Matzkowski,3.60,3804417833,9783804417830,ger,104,4,0,5/11/2002,C. Bange -10023,Homo faber: Ein Bericht.,Max Frisch,3.74,3458340440,9783458340447,ger,298,37,5,1/1/1995,Insel -10029,The Philosophy of Jean-Paul Sartre,Jean-Paul Sartre,3.89,1400076323,9781400076321,eng,512,190,8,5/27/2003,Vintage -10033,Being and Nothingness,Jean-Paul Sartre/Hazel E. Barnes/Mary Warnock/Richard Eyre,3.96,0415278481,9780415278485,eng,688,23344,267,8/28/2003,Routledge -10034,The Age of Reason,Jean-Paul Sartre,3.98,0679738959,9780679738954,eng,408,9477,313,7/7/1992,Vintage International -10040,Die Entdeckung der Langsamkeit,Sten Nadolny,3.95,3492207006,9783492207003,ger,358,1806,27,3/28/1999,Piper Verlag -10050,Youth in Revolt: The Journals of Nick Twisp,C.D. Payne,4.02,0385481969,9780385481960,eng,512,8257,793,1/1/2001,Broadway Books -10055,And I Don't Want to Live This Life: A Mother's Story of Her Daughter's Murder,Deborah Spungen,4.10,0449911411,9780449911419,eng,408,4746,298,9/29/1996,Ballantine Books -10057,Sid and Nancy: Love Kills,Alex Cox/Abbe Wool,3.48,0571145450,9780571145454,eng,143,140,5,12/31/1986,Faber & Faber -10058,Flags of Our Fathers,James D. Bradley/Ron Powers,4.19,0553384155,9780553384154,eng,382,45954,1297,8/29/2006,Bantam -10061,Flags of Our Fathers: A Young People's Edition,Michael R. French/Ron Powers/James D. Bradley,4.17,0440229200,9780440229209,eng,224,255,28,8/1/2006,Laurel Leaf Library -10073,A Long Way Down,Nick Hornby,3.42,1594481938,9781594481932,eng,368,65202,3943,5/2/2006,Riverhead Books -10075,Clockwork (Cover to Cover),Philip Pullman,3.87,185549695X,9781855496958,eng,0,24,1,7/29/2002,BBC Audiobooks -10079,Mary Queen of Scots,Antonia Fraser,4.05,038531129X,9780385311298,eng,568,12235,306,9/1/1993,Delta -10080,Mary Queen of Scots and the Murder of Lord Darnley,Alison Weir,4.04,0712664564,9780712664561,eng,640,4947,119,2/5/2004,Pimlico -10083,On the Trail of Mary Queen of Scots,J. Keith Cheetham,3.25,0946487502,9780946487509,eng,192,12,1,6/1/1999,Luath Press Ltd -10084,River of Blue Fire (Otherland #2),Tad Williams,4.02,0886778441,9780886778446,eng,675,13383,235,9/1/1999,Daw Books -10089,Mary Queen of Scots: Queen Without a Country,Kathryn Lasky,3.83,0439194040,9780439194044,eng,202,4825,148,5/1/2002,Scholastic -10090,Mountain of Black Glass (Otherland #3),Tad Williams,4.05,0886779065,9780886779061,eng,749,13265,163,9/12/2000,Daw Books -10096,Mary Queen of Scots: Pride Passion and a Kingdom Lost,Jenny Wormald,3.72,1860645887,9781860645884,eng,224,39,6,5/4/2001,Tauris Parke Paperbacks -10097,Queen of Scots: The True Life of Mary Stuart,John Guy,3.93,0618254110,9780618254118,eng,581,1882,155,4/7/2004,Houghton Mifflin -10105,The Last Wife of Henry VIII,Carolly Erickson,3.89,0312352182,9780312352189,en-US,326,10702,366,10/3/2006,St. Martin's Press -10106,The Children of Henry VIII,Alison Weir,4.05,0345407865,9780345407863,eng,385,11134,418,7/8/1997,Ballantine Books -10107,The Last Days of Henry VIII,Robert Hutchinson,4.14,0060837330,9780060837334,eng,368,1523,23,9/20/2005,William Morrow -10108,The Autobiography of Henry VIII: With Notes by His Fool Will Somers,Margaret George,4.26,0312194390,9780312194390,eng,939,24108,822,9/15/1998,Griffin -10112,Henry VIII (Shakespeare Pelican),William Shakespeare/Stephen Orgel,3.54,0140714758,9780140714753,eng,126,93,14,8/1/2001,Penguin Classics -10115,The Memoirs of Cleopatra,Margaret George,4.18,0330353829,9780330353823,eng,1139,15616,913,1/10/1998,MacMillan General Books -10118,Saint George and the Dragon,Margaret Hodges/Trina Schart Hyman,4.18,0316367958,9780316367950,eng,32,6935,389,9/4/1990,Little Brown Books for Young Readers -10126,Kiss Me Like a Stranger: My Search for Love and Art,Gene Wilder,3.90,0312337078,9780312337070,eng,261,3668,419,3/7/2006,St. Martin's Griffin -10134,Wie ich eines schönen Morgens im April das 100%ige Mädchen sah,Haruki Murakami/Nora Bierich,3.80,3499222507,9783499222504,ger,218,44,2,8/1/1998,Rowohlt Tb -10147,The Complete Sherlock Holmes Volume I,Arthur Conan Doyle/Kyle Freeman,4.49,1593080344,9781593080341,eng,709,26794,278,9/1/2003,Barnes Noble Classics -10148,The Complete Sherlock Holmes Volume II,Arthur Conan Doyle/Kyle Freeman,4.47,1593080409,9781593080402,eng,709,874,57,10/1/2003,Barnes Noble Classics -10156,The Last of Her Kind,Sigrid Nunez,3.72,0312425945,9780312425944,eng,391,1459,242,12/12/2006,Picador USA -10165,Anatomy of Love: A Natural History of Mating Marriage and Why We Stray,Helen Fisher,3.94,0449908976,9780449908976,en-US,432,501,36,1/3/1994,Ballantine Books -10170,The Devil's in the Details (A Camilla MacPhee Mystery #4),Mary Jane Maffini,4.00,189491712X,9781894917124,eng,320,63,11,10/1/2004,Napoleon and Co -10172,Wigfield: The Can-Do Town That Just May Not,Amy Sedaris/Stephen Colbert/Paul Dinello,3.58,1565117727,9781565117723,eng,5,81,19,5/19/2004,Highbridge Audio -10173,The SantaLand Diaries and Season's Greetings,David Sedaris/Joe Mantello,4.18,0822216310,9780822216315,eng,54,584,34,12/1/1998,Dramatists Play Service -10174,Jenny and the Jaws of Life: Short Stories,Jincy Willett/David Sedaris,3.74,0312306180,9780312306182,en-US,272,1307,178,9/14/2002,St. Martin's Griffin -10200,Venac sonetnih venaca; Puževa srma,Dobrica Erić,0.00,8644101277,9788644101277,srp,222,0,0,1/1/1996,Izdavačka agencija "Draganić" -10203,View With a Grain of Sand: Selected Poems,Wisława Szymborska/Stanisław Barańczak/Clare Cavanagh,4.33,0156002167,9780156002165,eng,214,3479,211,5/26/1995,Mariner Books -10204,View with a Grain of Sand: Selected Poems,Wisława Szymborska,4.33,0571191630,9780571191635,eng,214,33,7,10/23/1996,Faber Faber -10205,Poems New and Collected,Wisława Szymborska/Clare Cavanagh,4.43,0156011468,9780156011464,eng,296,2561,120,11/16/2000,Mariner Books -10206,Sounds Feelings Thoughts: Seventy Poems by Wislawa Szymborska,Wisława Szymborska/Magnus J. Kruyski,4.36,0691013802,9780691013800,eng,232,229,22,8/21/1981,Princeton University Press -10208,Miracle Fair: Selected Poems,Wisława Szymborska/Joanna Trzeciak/Czesław Miłosz,4.42,0393323854,9780393323856,eng,159,482,47,11/17/2002,W. W. Norton Company -10210,Jane Eyre,Charlotte Brontë/Michael Mason,4.12,0142437204,9780142437209,eng,532,1409369,27884,2/4/2003,Penguin -10215,The Far Pavilions,M.M. Kaye,4.21,0517333414,9780517333419,eng,0,19,4,12/12/1988,Random House Value Publishing -10217,Death in Kashmir,M.M. Kaye,3.95,0312263104,9780312263102,eng,256,1511,104,12/1/2000,St. Martins Press-3PL -10219,The Sun in the Morning: My Early Years in India and England,M.M. Kaye,4.22,0312049994,9780312049997,en-US,454,249,39,9/1/1990,St. Martin's Press -10220,Death in the Andamans,M.M. Kaye,3.93,0312252811,9780312252816,eng,272,845,57,2/11/2000,Minotaur Books -10221,Death in Berlin,M.M. Kaye,3.89,0312263082,9780312263089,eng,272,889,62,6/8/2000,Minotaur Books -10222,The Far Pavilions,M.M. Kaye,4.21,031215125X,9780312151256,en-US,958,37064,1028,1/15/1997,St. Martin's Griffin -10224,Enchanted Evening,M.M. Kaye,4.38,0312265816,9780312265816,eng,368,99,11,12/5/2000,St. Martin's Press -10232,Pathologies of Power: Health Human Rights and the New War on the Poor,Paul Farmer/Amartya Sen,4.25,0520243269,9780520243262,eng,438,3994,212,11/22/2004,University of California Press -10233,Infections and Inequalities: The Modern Plagues,Paul Farmer,4.09,0520229134,9780520229136,eng,424,2534,80,2/23/2001,University of California Press -10235,Mountains Beyond Mountains: The Quest of Dr. Paul Farmer a Man Who Would Cure the World,Tracy Kidder,4.21,0812973011,9780812973013,eng,333,63813,4347,8/31/2004,Random House Trade -10238,The Tao of Physics: An Exploration of the Parallels between Modern Physics and Eastern Mysticism,Fritjof Capra,3.97,1570625190,9781570625190,eng,366,14183,398,1/4/2000,Shambhala -10255,Dr. Mary's Monkey: How the Unsolved Murder of a Doctor a Secret Laboratory in New Orleans and Cancer-Causing Monkey Viruses are Linked to Lee Harvey Oswald the JFK Assassination and Emerging Global Epidemics,Edward T. Haslam/Jim Marrs,3.92,0977795306,9780977795306,eng,374,1023,164,4/1/2007,Trine Day -10261,The Art of Richard P. Feynman,Michelle Feynman,4.31,2884490477,9782884490474,en-US,174,13,2,7/1/1995,Routledge -10263,The Early History of God: Yahweh and the Other Deities in Ancient Israel,Mark S. Smith/Patrick D. Miller,4.03,080283972X,9780802839725,eng,243,238,29,8/28/2002,Eerdmans -10269,Haiti History and the Gods,Joan Dayan/Colin Dayan,3.95,0520213688,9780520213685,eng,362,37,1,3/10/1998,University of California Press -10270,Acts of God: The Unnatural History of Natural Disaster in America,Ted Steinberg,3.72,0195309685,9780195309683,eng,309,104,8,6/1/2006,Oxford University Press USA -10285,The World's Religions,Huston Smith,4.07,0062508113,9780062508119,eng,416,8741,306,9/13/1991,HarperOne -10289,Introduction to World Religions,Christopher Partridge,3.78,0800637143,9780800637149,eng,495,44,4,3/24/2005,Augsburg Fortress Publishing -10303,FDR's Folly: How Roosevelt and His New Deal Prolonged the Great Depression,Jim Powell,4.00,140005477X,9781400054770,eng,352,481,45,9/28/2004,Crown Forum -10308,Folly and Glory (The Berrybender Narratives #4),Larry McMurtry,3.87,0743262727,9780743262729,en-US,358,1341,88,8/8/2005,Simon Schuster -10310,The Argumentative Indian: Writings on Indian History Culture and Identity,Amartya Sen,3.80,031242602X,9780312426026,eng,432,6550,337,9/5/2006,Picador -10311,Argumentative Indian: Writings On Indian History Culture And Identity,Amartya Sen,3.80,0713996870,9780713996876,eng,391,29,7,6/28/2005,Allen Lane -10324,Things to Bring S#!t to Do: And Other Inventories of Anxiety: My Life in Lists,Karen Rizzo,3.67,1584795425,9781584795421,eng,160,48,12,10/1/2006,Stewart Tabori and Chang -10329,Dumpy's Valentine,Julie Andrews Edwards/Emma Walton Hamilton/Tony Walton/Ruby Randig,3.31,0060885734,9780060885731,eng,24,22,4,12/12/2006,Julie Andrews Collection -10332,Mandy,Julie Andrews Edwards/Johanna Westerman,4.24,0061131628,9780061131622,eng,320,9944,846,8/15/2006,HarperCollins -10340,Giraffes Can't Dance,Giles Andreae/Guy Parker-Rees/Hugh Laurie,4.30,1846162661,9781846162664,eng,32,15,3,6/1/2006,Orchard Books -10346,The Medici Giraffe and Other Tales of Exotic Animals and Power,Marina Belozerskaya,3.53,0316525650,9780316525657,eng,414,224,37,8/21/2006,Little Brown and Company -10347,The Giraffe Who Was Afraid of Heights (Physical & Behavioral Adaptation),David A. Ufer/Kirsten Carlson,3.87,0976882302,9780976882305,eng,32,37,9,6/1/2006,Arbordale Publishing -10370,Where the Red Fern Grows with Connections,Wilson Rawls/Rafe Martin/Borden Deal/Kemp P. Battle/Robert Bethke/Harold Courlander/Maya Angelou/Nicholasa Mohr/Dick Perry/John R. Erickson,4.37,0030547741,9780030547744,eng,288,121,5,9/1/1998,Holt McDougal -10372,Summer of the Monkeys,Wilson Rawls,4.03,0440415802,9780440415800,eng,288,11150,794,12/29/1998,Yearling -10382,Dreams from My Father: A Story of Race and Inheritance,Barack Obama,3.88,0307383415,9780307383419,en-US,442,1225,181,1/9/2007,Crown -10403,Doctor Who: Cat's Cradle-Time's Crucible,Marc Platt,3.22,0426203658,9780426203650,eng,275,589,40,2/20/1992,Virgin Publishing -10404,Doctor Who: Cat's Cradle-Witch Mark,Andrew Hunt,3.22,0426203682,9780426203681,eng,256,399,25,6/18/1992,Virgin Publishing -10405,Doctor Who: Cat's Cradle-Warhead,Andrew Cartmel,3.51,0426203674,9780426203674,eng,262,410,34,4/16/1992,Virgin Publishing -10412,He's Just Not That Into You: The No-Excuses Truth to Understanding Guys,Greg Behrendt/Liz Tuccillo,3.66,141694740X,9781416947400,eng,208,52688,2463,12/26/2006,Gallery Books -10414,Do Not Open This Book,Michaela Muntean/Pascal Lemaître,3.90,0439698391,9780439698399,eng,40,547,185,3/1/2006,Scholastic Press -10416,Not Your Mother's Slow Cooker Cookbook,Beth Hensperger/Julie Kaufmann,3.78,1558322450,9781558322455,en-US,520,5695,87,12/21/2004,Harvard Common Press -10417,Hands Are Not for Hitting (Ages 4-7),Martine Agassi/Marieka Heinlen,4.04,1575420775,9781575420776,eng,35,309,45,2/1/2001,Free Spirit Publishing -10420,Not So Big House,Sarah Susanka/Kira Obolensky,4.07,1561583766,9781561583768,eng,208,1327,149,4/20/2001,Taunton Press -10421,Rodinsky's Room,Rachel Lichtenstein/Iain Sinclair,3.85,1862073295,9781862073296,eng,362,199,19,2/1/2000,Granta UK -10427,The Rough Guide to Cuba 3,Fiona McAuslan/Matthew Norman,3.82,1843534096,9781843534099,eng,640,7,1,6/20/2005,Rough Guides -10429,Cuba: A New History,Richard Gott,4.06,0300111142,9780300111149,en-GB,384,311,39,11/11/2005,Yale University Press -10431,Cuba 15,Nancy Osa,3.45,0385732333,9780385732338,eng,304,1054,145,3/8/2005,Ember -10433,Cuba (Jake Grafton #7),Stephen Coonts,3.82,0312971397,9780312971397,eng,461,1452,63,5/15/2000,St. Martin's Paperbacks -10441,The Memory Keeper's Daughter,Kim Edwards,3.67,0143037145,9780143037149,eng,401,535636,17550,5/30/2006,Penguin Books -10445,Too Far to Go: The Maples Stories,John Updike,4.02,0449200167,9780449200162,eng,256,361,35,6/12/1982,Fawcett Books -10456,Far to Go (Margaret Thursday #2),Noel Streatfeild,3.81,0440424941,9780440424949,eng,161,167,9,2/1/1986,Yearling -10460,The Children on the Top Floor,Noel Streatfeild,3.79,0440412242,9780440412243,en-GB,180,148,17,7/1/1985,Yearling -10461,Desolation Angels,Jack Kerouac/Joyce Johnson,3.93,1573225053,9781573225052,eng,432,9646,273,9/1/1995,Riverhead Books -10464,Healing With Whole Foods: Asian Traditions and Modern Nutrition,Paul Pitchford,4.41,1556434308,9781556434303,en-US,784,2948,144,11/5/2002,North Atlantic Books -10471,The New Whole Foods Encyclopedia: A Comprehensive Resource for Healthy Eating,Rebecca Wood/Paul Pitchford,4.20,0140250328,9780140250329,eng,464,212,18,7/1/1999,Penguin Books -10474,The Discomfort Zone: A Personal Journey,Jonathan Franzen,3.40,1598870548,9781598870541,en-US,6,43,15,8/28/2006,HighBridge Company -10476,The Parrot's Lament and Other True Tales of Animal Intrigue Intelligence and Ingenuity,Eugene Linden,3.93,0452280680,9780452280687,eng,224,363,50,8/1/2000,Plume -10490,Postscript to the Name of the Rose,Umberto Eco,4.05,015173156X,9780151731565,eng,84,661,34,1/1/1984,Houghton Mifflin Harcourt P -10495,El nombre de la rosa,Umberto Eco,4.12,8497592581,9788497592581,spa,782,158,11,2/28/2006,DeBolsillo -10500,Baby Names for Dummies,Margaret Rose/Heather Rose Jones,3.32,0764543407,9780764543401,eng,364,13,7,5/1/2005,For Dummies -10503,The Mysterious Flame of Queen Loana,Umberto Eco/Geoffrey Brock,3.35,0156030438,9780156030434,eng,480,8263,624,6/5/2006,Mariner Books -10505,History of Beauty,Umberto Eco/Girolamo De Michele/Alastair McEwen/Agnolo di Cosimo Bronzino,3.78,0847826465,9780847826469,eng,432,47625,186,11/13/2004,Rizzoli -10507,Baudolino,Umberto Eco/William Weaver/R.C.S. Libri,3.74,0156029065,9780156029063,eng,527,16116,698,10/6/2003,Harcourt -10514,Travels in Hyperreality,Umberto Eco/John Radziewicz/William Weaver,3.89,0156913216,9780156913218,eng,324,2021,78,5/27/1990,Mariner Books -10517,How to Travel with a Salmon and Other Essays,Umberto Eco/William Weaver,3.85,015600125X,9780156001250,eng,256,218,26,9/15/1995,Mariner Books -10518,A Theory of Semiotics,Umberto Eco,4.01,0253202175,9780253202178,eng,368,1035,34,2/1/1978,Indiana University Press -10519,Art and Beauty in the Middle Ages,Umberto Eco/Hugh Bredin,3.99,0300093047,9780300093049,en-US,144,994,35,2/8/2002,Yale University Press -10525,Mouse or Rat?: Translation as Negotiation,Umberto Eco,3.80,0753817985,9780753817988,eng,208,311,27,9/28/2004,Orion Publishing Co. -10528,The Role of the Reader: Explorations in the Semiotics of Texts,Umberto Eco,4.06,025320318X,9780253203182,eng,288,224,5,7/22/1979,Indiana University Press -10529,Libraries,Candida Höfer/Umberto Eco,4.28,3829601867,9783829601863,eng,271,303,44,8/20/2014,Schirmer/Mosel -10534,The Art of War,Sun Tzu/Thomas Cleary/Pulat Otkan/Giray Fidan,3.97,1590302257,9781590302255,eng,273,235924,5869,1/11/2005,Shambhala -10536,Sun Tzu: The Art of War for Managers; 50 Strategic Rules,Sun Tzu/Gerald A. Michaelson,3.80,1580624596,9781580624596,eng,224,316,12,1/1/2001,Adams Media -10537,The Art of War,Sun Tzu/Ralph D. Sawyer,3.97,1402561016,9781402561016,eng,5,72,22,6/1/2003,Recorded Books Inc. -10539,The Lost Continent: Travels in Small-town America,Bill Bryson,3.83,0552998087,9780552998086,eng,379,729,78,1/2/1999,Black Swan -10541,Made in America: An Informal History of the English Language in the United States,Bill Bryson,3.91,0380713810,9780380713813,eng,364,10836,613,10/23/2001,Avon Books -10545,Ulysses,James Joyce/Declan Kiberd,3.73,0141182806,9780141182803,en-US,933,1517,235,3/30/2000,Penguin Books Ltd -10546,The Long-Lost Map (Ulysses Moore #2),Pierdomenico Baccalario/Iacopo Bruno/Leah D. Janeczko,4.00,043977439X,9780439774390,eng,272,1693,76,7/1/2006,Scholastic Inc. -10552,The Wicked Wit of Charles Dickens,Shelley Klein/Charles Dickens,3.55,1854790471,9781854790477,eng,162,30,6,9/1/2002,Michael O'Mara -10559,The Three Musketeers,Alexandre Dumas/Barbara T. Cooper,4.07,1593081480,9781593081485,eng,761,1149,147,11/25/2004,Barnes Noble Classics -10561,The Three Musketeers,Alexandre Dumas/Michael Page,4.07,1596009705,9781596009707,eng,24,54,11,7/25/2005,Brilliance Audio -10562,The Three Musketeers (Great Illustrated Classics),Malvina G. Vogel/Alexandre Dumas,4.08,1577658035,9781577658030,eng,236,1379,56,12/3/2005,Baronet Books -10563,The Three Musketeers (The d'Artagnan Romances. #1),Alexandre Dumas/Keith Wren,4.07,1853260401,9781853260407,eng,592,820,92,5/5/2001,Wordsworth Editions -10566,Lisey's Story,Stephen King,3.68,0743289412,9780743289412,eng,513,59097,2709,10/24/2006,Scribner -10568,King Arthur Flour Whole Grain Baking: Delicious Recipes Using Nutritious Whole Grains,King Arthur Flour,4.13,0881507199,9780881507195,eng,544,4866,78,10/9/2006,Countryman Press -10570,King Dork (King Dork #1),Frank Portman,3.56,0385732910,9780385732918,eng,344,6352,861,4/11/2006,Delacorte Press -10572,A Clash of Kings (A Song of Ice and Fire #2),George R.R. Martin,4.41,0553381695,9780553381696,eng,969,638766,16535,5/28/2002,Bantam -10574,The Colorado Kid,Stephen King,3.32,0843955848,9780843955842,eng,178,24611,1970,2/20/2006,Hard Crime Case -10575,Stationary Bike,Stephen King/Ron McLarty,3.54,0743555619,9780743555616,eng,44,3035,167,7/1/2006,Simon & Schuster Audio -10579,Everything's Eventual: 14 Dark Tales,Stephen King,3.97,1416524355,9781416524359,eng,605,73145,1519,11/1/2005,Pocket Books -10581,The Mist,Stephen King/ZBS Foundation,3.95,0671874756,9780671874759,eng,2,168,10,9/1/1993,Simon & Schuster Audio -10583,Pet Sematary,Stephen King,3.98,1416524347,9781416524342,eng,576,257466,3768,11/1/2005,Pocket Books -10585,Insomnia,Stephen King/Bettina Blanch Tyroller,3.82,8497597729,9788497597722,spa,890,117901,2028,2/28/2005,Debolsillo -10586,The Stephen King Collection: Stories from Night Shift,Stephen King/John Glover,4.00,0739317369,9780739317365,eng,11,56,9,2/8/2005,Random House Audio -10587,The Man in the Black Suit: 4 Dark Tales,Stephen King/Ana Juan/John Cullum/Becky Ann Baker/Íñigo Jáuregui/Peter Gerety/Arliss Howard,3.78,074352585X,9780743525855,eng,128,1369,101,11/1/2002,Simon Schuster Audio -10593,The Shining,Stephen King/Campbell Scott,4.22,0743537009,9780743537001,eng,16,357,107,8/2/2005,Simon & Schuster Audio -10594,Stephen King: America's Best-Loved Boogeyman,George Beahm,3.78,0836254279,9780836254273,en-US,304,50,2,5/1/1998,Andrews McMeel Publishing -10597,The Illustrated Stephen King Trivia Book,Brian James Freeman/Bev Vincent/Glenn Chadbourne,4.23,1587671166,9781587671166,eng,404,22,5,5/1/2005,Cemetery Dance Publications -10599,Gray Matter and Other Stories from Night Shift,Stephen King/John Glover,3.93,055347183X,9780553471830,eng,0,156,9,8/1/1993,Random House Audio -10603,Cujo,Stephen King,3.71,0307348245,9780307348241,spa,432,197993,2816,6/6/2006,Plaza y Janés -10605,Thinner,Richard Bachman/Stephen King,3.71,0451190750,9780451190758,eng,320,155020,1513,9/1/1996,Signet -10606,Stephen King from A to Z: An Encyclopedia of His Life and Work,George Beahm,3.83,0836269144,9780836269147,eng,251,53,2,3/31/1999,Andrews McMeel Publishing -10607,Black House (The Talisman #2),Stephen King/Peter Straub,4.01,034547063X,9780345470638,eng,688,46428,1220,9/30/2003,Ballantine Books -10612,The Stephen King Universe: A Guide to the Worlds of the King of Horror,Stanley Wiater/Christopher Golden/Hank Wagner,4.15,1580631606,9781580631600,en-US,478,6471,44,5/21/2001,Renaissance Books -10613,Night Shift,Stephen King,4.00,0451170113,9780451170118,en-US,326,1290,84,2/1/1979,Signet -10614,Misery,Stephen King,4.16,0450417395,9780450417399,eng,370,429510,7051,11/1/1988,New English Library -10617,The Bachman Books,Richard Bachman/Stephen King,4.11,0452277752,9780452277755,eng,704,62529,494,10/1/1996,Plume -10620,Misery,Stephen King/María Mir,4.16,074323359X,9780743233590,spa,368,129,13,3/26/2002,Simon & Schuster Libros en Español -10622,Carrie,Stephen King,3.96,0671039725,9780671039721,eng,253,2707,192,10/1/1999,Pocket Books -10624,Four Past Midnight: Featuring "The Langoliers",Stephen King,3.93,0451185978,9780451185976,eng,761,308,20,5/1/1995,Signet -10629,Christine,Stephen King/Marie Milpois,3.77,2253147699,9782253147695,fre,411,178403,2088,6/13/2001,LGF -10631,Sam Walton: Made In America,Sam Walton/John Huey,4.15,0553562835,9780553562835,eng,346,14157,610,6/1/1993,Bantam -10638,The Road to Reality: A Complete Guide to the Laws of the Universe,Roger Penrose,4.11,0679776311,9780679776314,eng,1099,6164,142,1/9/2007,Vintage -10639,The Paradox of Choice: Why More Is Less,Barry Schwartz,3.85,0060005696,9780060005696,eng,265,25312,1223,1/18/2005,Harper Perennial -10654,Coach: Lessons on the Game of Life,Michael Lewis,3.82,0393060918,9780393060911,en-US,96,1502,167,4/17/2005,W. W. Norton Company -10655,Losers: The Road to Everyplace But the White House,Michael Lewis,3.87,0679768092,9780679768098,en-US,320,235,19,7/28/1998,Vintage -10656,Next: The Future Just Happened,Michael Lewis,3.67,0393323528,9780393323528,en-US,240,1317,106,5/17/2002,W. W. Norton Company -10662,The Ends of the Earth: A Journey to the Frontiers of Anarchy,Robert D. Kaplan,4.12,0679751238,9780679751236,eng,496,1278,74,1/28/1997,Vintage -10663,Salvation to the Ends of the Earth: A Biblical Theology of Mission (New Studies in Biblical Theology (InterVarsity Press) #11),Andreas J. Köstenberger/Peter T. O'Brien,3.93,0851115195,9780851115191,eng,351,93,8,1/1/2001,Inter Varsity Press -10666,The Ends Of The Earth: A Journey At The Dawn Of The 21st Century,Robert D. Kaplan,4.12,0679431489,9780679431480,eng,476,10,3,2/27/1996,Random House Inc. -10669,When Genius Failed: The Rise and Fall of Long-Term Capital Management,Roger Lowenstein,4.19,0375758259,9780375758256,eng,264,20145,530,10/9/2001,Random House Trade Paperbacks -10670,When Genius Failed: The Rise And Fall Of Long Term Capital Management,Roger Lowenstein,4.19,1841155047,9781841155043,eng,275,247,13,6/1/2009,Fourth Estate -10682,The Secret of Fantasy Forest (Sweet Valley Kids #67),Francine Pascal/Molly Mia Stewart/Ying-Hwa Hu,3.94,0553483323,9780553483321,eng,96,54,2,9/1/1996,Sweet Valley -10686,Pearl and Wagner: Three Secrets,Kate McMullan/Janet Allison Brown/R.W. Alley,3.84,0803725744,9780803725744,eng,48,60,7,5/24/2004,Dial -10687,A History of Britain: The Fate Of Empire 1776-2000 (A History of Britain #3),Simon Schama,4.06,0786868996,9780786868995,en-US,576,675,41,12/18/2002,Miramax Books -10689,The Devil in the White City Murder Magic and Madness at the Fair that Changed America,Erik Larson,3.99,0385602057,9780385602051,eng,464,22,6,3/3/2003,Doubleday -10691,O Historiador,Elizabeth Kostova,3.78,857302710X,9788573027105,por,544,43,3,8/19/2005,Suma de Letras Brasileiras -10698,Kim,Rudyard Kipling/Jeffrey Meyers,3.72,1593081928,9781593081928,eng,286,398,63,12/15/2003,Barnes Noble Classics -10701,Birds Without Wings,Louis de Bernières,4.16,0436205491,9780436205491,eng,640,48,8,7/1/2004,Secker -10711,God Knows,Joseph Heller,3.80,0684841258,9780684841250,eng,368,2992,163,11/12/1997,Simon Schuster -10712,Picture This,Joseph Heller,3.68,0684868199,9780684868196,en-US,352,1219,67,3/24/2000,Simon Schuster -10713,Closing Time,Joseph Heller,3.02,0743239806,9780743239806,eng,464,106,9,7/1/2003,Simon & Schuster (Trade Division) -10714,Good as Gold,Joseph Heller,3.36,0684839741,9780684839745,eng,445,2631,100,11/12/1997,Simon Schuster -10718,Something Happened,Joseph Heller,3.52,0684841215,9780684841212,eng,576,6166,399,11/12/1997,Simon Schuster -10732,Archie Americana Series: Best of the Eighties Vol. 1,George Gladir/John L. Goldwater/Steve Geppi/Michael I. Silberkleit,3.91,1879794063,9781879794061,eng,96,61,1,6/26/2001,Archie Comics -10739,The Moviegoer,Walker Percy,3.68,0375701966,9780375701962,eng,242,21634,1660,4/14/1998,Vintage Books USA -10750,Wicked: The Life and Times of the Wicked Witch of the West,Gregory Maguire/Douglas Smith,3.53,0060745908,9780060745905,en-US,409,2828,459,3/2/2004,William Morrow Paperbacks -10751,Wicked: Memorias de una bruja mala (Los años malvados #1),Gregory Maguire/Claudia Conde,3.53,0061351393,9780061351396,spa,508,47,10,5/1/2007,Rayo -10756,The Sword and the Shield: The Mitrokhin Archive & the Secret History of the KGB,Christopher M. Andrew/Vasili Mitrokhin,3.93,0465003125,9780465003129,en-US,736,1170,82,8/29/2000,Basic Books -10757,Lay Down My Sword And Shield (Hackberry Holland #1),James Lee Burke,3.89,0752842692,9780752842691,eng,320,1680,117,9/4/2003,Orion -10760,Sword and Shield,John Terra,4.00,1560764988,9781560764984,eng,16,5,1,9/1/1992,TSR Inc. -10765,A Year in the Merde,Stephen Clarke,3.54,1582346178,9781582346175,en-US,276,11429,979,5/2/2006,Bloomsbury Publishing PLC -10767,Merde!: The Real French You Were Never Taught at School,Geneviève/Michael Heath,3.96,0684854279,9780684854274,eng,112,155,13,12/9/1998,Gallery Books -10770,Merde Encore!: More of the Real French You Were Never Taught at School,Geneviève/Michael Heath,3.96,0684854287,9780684854281,eng,104,46,1,12/9/1998,Gallery Books -10772,Can't Wait to Get to Heaven,Fannie Flagg/Cassandra Campbell,3.91,1415930686,9781415930687,eng,384,326,66,7/18/2006,Books on Tape -10776,Green Hills of Africa,Ernest Hemingway/Edward Shenton,3.56,0099460955,9780099460954,eng,200,7290,387,3/4/2004,Vintage Classics -10778,Across the River and into the Trees,Ernest Hemingway,3.33,0684844648,9780684844640,eng,272,5546,342,4/15/1998,Scribner -10780,Hemingway: The Paris Years,Michael S. Reynolds,4.17,0393318796,9780393318791,eng,402,490,35,5/17/1999,W. W. Norton Company -10783,Adios Hemingway,Leonardo Padura/John King,3.72,184195795X,9781841957951,eng,229,659,85,3/10/2006,Canongate U.S. -10785,By-Line: Selected Articles and Dispatches of Four Decades,Ernest Hemingway/William M. White,3.96,0684839059,9780684839059,en-US,512,421,33,5/12/1998,Scribner -10787,The Hemingway Women: Those Who Love Him - The Wives And Others,Bernice Kert,4.17,0393318354,9780393318357,eng,556,279,32,12/17/1998,W. W. Norton Company -10789,Hemingway: A Biography,Jeffrey Meyers,4.00,0306808900,9780306808906,eng,644,197,15,5/7/1999,Da Capo Press -10792,The Sword of Straw (The Sangreal Trilogy #2),Amanda Hemingway,3.81,0345460804,9780345460806,eng,336,138,8,3/28/2006,Del Rey -10796,A Farewell to Arms,Ernest Hemingway/John Slattery,3.80,0743564375,9780743564373,eng,8,290,65,5/1/2006,Simon Schuster Audio -10797,A Farewell to Arms,Ernest Hemingway,3.80,0684174693,9780684174693,eng,336,174,30,2/1/1982,MacMillan Publishing Company -10801,The Big Rock Candy Mountain,Wallace Stegner,4.15,0140139397,9780140139396,eng,563,6187,669,3/1/1991,Penguin -10802,Beyond the Hundredth Meridian: John Wesley Powell and the Second Opening of the West,Wallace Stegner/Bernard DeVoto,4.07,0140159940,9780140159943,eng,438,3010,244,3/1/1992,Penguin Books -10804,Collected Stories,Wallace Stegner/Lynn Stegner,4.22,0143039792,9780143039792,eng,576,608,59,7/25/2006,Penguin Classics -10805,All the Little Live Things,Wallace Stegner,4.09,0140154418,9780140154412,eng,345,2595,350,12/1/1991,Penguin Books -10806,Where the Bluebird Sings to the Lemonade Springs,Wallace Stegner/T.H. Watkins,4.10,0375759328,9780375759321,eng,234,1553,113,4/9/2002,Modern Library -10808,Wallace Stegner: His Life and Work,Jackson J. Benson,4.19,0140247963,9780140247961,eng,496,88,8,11/1/1997,Penguin Books -10810,Letters of E.B. White,E.B. White/Dorothy Lobrano Guth/Martha White/John Updike,4.13,0060757086,9780060757083,eng,736,694,39,11/28/2006,Harper -10814,Here Is New York,E.B. White/Roger Angell/Barbara Cohen/Judith Stonehill,4.30,1892145022,9781892145024,eng,58,5379,544,1/1/2000,Little Bookroom -10826,Charlotte's Web,E.B. White/Garth Williams,4.17,0061228745,9780061228742,eng,179,7,1,11/1/2006,HarperEntertainment -10832,Charlotte's Web,E.B. White/Garth Williams,4.17,0140364498,9780140364491,eng,256,223,22,10/28/1993,Penguin Books Limited (UK) -10836,Che Guevara: A Revolutionary Life,Jon Lee Anderson/José Hernández/Leena Nivala,4.12,0802135587,9780802135582,eng,814,15468,548,3/9/1998,Grove Press (NYC) -10846,Gatsby's Girl,Caroline Preston,3.54,0618537252,9780618537259,en-US,312,863,121,5/1/2006,Houghton Mifflin Harcourt -10853,In Search of Captain Zero: A Surfer's Road Trip Beyond the End of the Road,Allan C. Weisbecker,3.89,1585421774,9781585421770,eng,352,2246,166,9/16/2002,TarcherPerigee -10863,Pipe Dream (Strivers Row),Solomon Jones,3.97,0375756604,9780375756603,eng,341,139,17,7/31/2001,Villard -10867,The Pleasure of My Company,Steve Martin,3.78,0786888016,9780786888016,eng,176,13257,1240,10/6/2004,Hachette Books -10873,Shopgirl,Steve Martin,3.43,0786891076,9780786891078,eng,130,30067,2166,1/1/2000,Hachette Books -10876,The Mutineer: Rants Ravings and Missives from the Mountaintop 1977-2005,Hunter S. Thompson,4.08,0684873176,9780684873176,eng,752,84,4,3/1/2013,Simon & Schuster -10877,Generation of Swine: Tales of Shame and Degradation in the '80's,Hunter S. Thompson,3.78,0743250443,9780743250443,eng,336,5980,171,11/6/2003,Simon Schuster -10879,The Gonzo Way: A Celebration of Dr. Hunter S. Thompson,Anita Thompson,3.96,1555916228,9781555916220,en-US,112,1052,36,7/1/2007,Fulcrum Publishing -10880,The Proud Highway: Saga of a Desperate Southern Gentleman 1955-1967,Hunter S. Thompson/Douglas Brinkley,4.14,0345377966,9780345377968,eng,720,2961,116,4/7/1998,Ballantine Books -10884,Einstein: His Life and Universe,Walter Isaacson,4.11,0743264738,9780743264730,eng,675,113315,2833,4/10/2007,Simon Schuster -10885,The Wise Men: Six Friends and the World They Made,Walter Isaacson/Evan Thomas,4.07,0684837714,9780684837710,eng,864,2664,78,6/4/1997,Simon & Schuster -10887,Kissinger,Walter Isaacson,3.94,0743286979,9780743286978,eng,896,2507,140,9/27/2005,Simon Schuster -10890,Traveling Mercies: Some Thoughts on Faith,Anne Lamott,4.16,0385496095,9780385496094,eng,275,39822,2297,2/15/2000,Anchor -10894,Where Rainbows End,Cecelia Ahern,3.94,0007189958,9780007189953,eng,454,652,109,11/8/2004,HarperCollins -10895,Irish Girls Are Back in Town,Cecelia Ahern/Patricia Scanlan/Gemma O'Connor/Sarah Webb/Maeve Binchy/Marian Keyes/Morag Prunty/Cathy Kelly/Colette Caddle/Marita Conlon-McKenna/Martina Devlin/Clare Dowling/Catherine Foley/Aine Greaney/Suzanne Higgins/Rosaleen Linehan/Joan O'Neill/Julie Parsons/Deirdre Purcell/Martina Reilly/Mary Ryan/Annie Sparrow/Una Brankin,3.74,0743499263,9780743499262,eng,384,805,36,3/1/2005,Gallery Books -10897,There's No Place Like Here,Cecelia Ahern,3.67,1401301886,9781401301880,eng,340,1926,314,9/4/2007,Hachette Books -10906,Final Rain (The Survivalist #19),Jerry Ahern,3.69,0821726846,9780821726846,eng,220,95,4,6/1/1989,Zebra -10907,The Pursuit of Happyness,Chris Gardner,4.19,0060744871,9780060744878,eng,320,21292,756,10/24/2006,Amistad -10908,Harvesting the Heart,Jodi Picoult,3.60,0140230270,9780140230277,eng,453,39611,2473,4/1/1995,Penguin Books -10909,The Tenth Circle,Jodi Picoult,3.50,074349671X,9780743496711,eng,416,108646,5039,10/24/2006,Allen & Ulwin -10910,Mercy,Jodi Picoult,3.58,0743422449,9780743422444,eng,400,42046,2564,4/1/2001,Washington Square Press -10912,Picture Perfect,Jodi Picoult,3.54,0425185508,9780425185506,eng,369,46383,2502,7/2/2002,Berkley -10914,Songs of the Humpback Whale,Jodi Picoult,3.20,0743431014,9780743431019,eng,346,27590,1838,10/1/2001,Washington Square Press -10915,Salem Falls,Jodi Picoult,3.82,0743418719,9780743418713,eng,434,67431,3066,8/1/2002,Washington Square Press -10916,The Pact,Jodi Picoult,4.01,0061150142,9780061150142,eng,512,244774,8841,8/29/2006,Avon -10917,My Sister's Keeper,Jodi Picoult,4.07,0743454537,9780743454537,eng,423,986711,29652,2/1/2005,Washington Square Press -10920,Cold Mountain,Charles Frazier,3.86,0802142842,9780802142849,eng,356,208001,4972,9/1/2006,Grove Press -10921,The Collected Songs of Cold Mountain,Hanshan/Red Pine/John Blofeld,4.41,1556591403,9781556591402,eng,320,685,36,6/1/2000,Copper Canyon Press -10929,For One More Day,Mitch Albom,4.10,1401303277,9781401303273,eng,197,113593,6830,9/26/2006,Hachette Books -10932,Just One More Day: A Memoir,Susan Lewis,3.98,0099486830,9780099486831,eng,340,180,25,1/5/2006,Arrow Books -10939,Ya Sé Que Te Quiero,Billy Crystal/Elizabeth Sayles,4.19,0060845988,9780060845988,spa,40,0,0,4/11/2006,Rayo -10943,Absolutely Mahvelous,Billy Crystal/Dick Schaap,3.79,0399512462,9780399512469,eng,128,24,2,7/18/1986,Perigee Trade -10951,The Last Innocent Man,Phillip Margolin,3.91,0060739681,9780060739683,eng,352,1667,57,1/25/2005,HarperTorch -10964,Outlander (Outlander #1),Diana Gabaldon,4.23,0440242940,9780440242949,eng,850,673350,34690,7/26/2005,Dell Publishing Company -10965,A Breath of Snow and Ashes (Outlander #6),Diana Gabaldon,4.44,0385340397,9780385340397,eng,980,105950,3992,8/29/2006,Delta -10966,Outlander - The Exile of Sharad Hett (Star Wars: Ongoing Volume 2),Timothy Truman/Rick Leonardi/Tom Raney/Al Rio,3.43,1569715149,9781569715147,eng,144,126,17,4/18/2001,Dark Horse -10967,The Fiery Cross (Outlander #5),Diana Gabaldon/Janos Farkas,4.27,0440221668,9780440221661,eng,1443,128901,5294,8/30/2005,Dell -10968,Refuge (Outlanders #36),James Axler,3.93,0373638493,9780373638499,eng,346,5,0,2/14/2006,Gold Eagle -10969,Dragonfly in Amber (Outlander #2),Diana Gabaldon,4.32,0385302312,9780385302319,eng,743,1088,118,7/1/1992,Delacorte Press -10970,Outlander,Matt Keefe,3.85,184416411X,9781844164110,eng,254,54,5,12/26/2006,Games Workshop(uk) -10971,Hydra's Ring (Outlanders #39),James Axler,3.88,0373638523,9780373638529,eng,348,25,2,11/1/2006,Gold Eagle -10972,Omega Path (Outlanders #4),James Axler,3.87,0373638175,9780373638178,en-US,352,80,2,1/23/1998,Gold Eagle -10973,Savage Sun (Outlanders #3),James Axler,3.84,0373638167,9780373638161,en-US,352,95,3,10/24/1997,Gold Eagle -10974,As I Lay Dying,William Faulkner/E.L. Doctorow,3.71,0375504524,9780375504525,eng,231,1003,101,1/25/2001,Modern Library -10976,Novels 1926-1929,William Faulkner/Noel Polk/Joseph Blotner,4.42,1931082898,9781931082891,eng,1180,199,13,4/6/2006,Library of America -10979,Light in August,William Faulkner,3.94,0679732268,9780679732266,eng,507,47794,1920,1/30/1991,Vintage -10980,Novels 1942–1954: Go Down Moses / Intruder in the Dust / Requiem for a Nun / A Fable,William Faulkner/Noel Polk/Joseph Blotner,4.44,0940450852,9780940450851,eng,1110,90,7,10/1/1994,Library of America -10982,Selected Short Stories,William Faulkner,4.09,0679424784,9780679424789,eng,320,1017,64,5/18/1993,Modern Library -10984,Three Famous Short Novels: Spotted Horses Old Man the Bear,William Faulkner,3.86,0394701496,9780394701493,eng,320,1457,117,2/12/1958,Vintage Books -10985,The Town,William Faulkner,4.10,0394701844,9780394701844,eng,371,1253,68,2/12/1961,Vintage Books -10987,Voyager (Outlander #3),Diana Gabaldon,4.39,0385335997,9780385335997,eng,870,198818,8130,8/7/2001,Delta -10988,Drums of Autumn (Outlander #4),Diana Gabaldon,4.35,0385335989,9780385335980,eng,880,141771,5455,8/7/2001,Delta -10989,The Outlandish Companion: Companion to Outlander Dragonfly in Amber Voyager and Drums of Autumn,Diana Gabaldon,4.08,0385324138,9780385324137,eng,577,11433,478,6/29/1999,Delacorte Press -10990,Lord John and the Private Matter (Lord John Grey #1),Diana Gabaldon,3.70,0770429459,9780770429454,eng,368,32446,1345,10/4/2005,Seal -10992,Cross Stitch (Outlander #1),Diana Gabaldon,4.23,0099911701,9780099911708,eng,864,2384,323,3/3/1994,Arrow Books -10993,The Eight,Katherine Neville,3.91,0345419081,9780345419088,eng,624,536,60,6/23/1997,Ballantine Books -10996,Your Eight Year Old: Lively and Outgoing,Louise Bates Ames/Frances L. Ilg/Carol C. Haber/Betty David,3.86,0440506816,9780440506812,eng,160,183,26,3/1/1990,Dell -11000,Eight Mindful Steps to Happiness: Walking the Buddha's Path,Henepola Gunaratana,4.30,0861711769,9780861711765,eng,288,1103,50,6/15/2001,Wisdom Publications -11002,Eight Men Out: The Black Sox and the 1919 World Series,Eliot Asinof/Stephen Jay Gould,4.03,0805065377,9780805065374,en-US,336,8614,242,5/1/2000,Holt Paperbacks -11003,Eleven on Top (Stephanie Plum #11),Janet Evanovich,4.16,0312985347,9780312985349,eng,321,91695,1731,6/20/2006,St. Martin's Press -11005,El Clan Del Oso Cavernario,Jean M. Auel/Leonor Tejada Conde-Pelayo,4.05,9684581149,9789684581142,spa,548,176,12,9/1/1981,Lasser Press -11006,The Portable James Joyce,James Joyce/Harry Levin,4.17,0517618877,9780517618875,eng,762,20,3,8/20/1986,Random House Value Publishing/TheViking Press -11012,Dubliners,James Joyce/Jeri Johnson/Thiên Lương,3.85,0192839993,9780192839992,eng,207,91755,3246,3/15/2001,Oxford University Press -11013,Finnegans Wake,James Joyce,3.67,0571217354,9780571217359,eng,628,9780,591,11/4/2002,Faber & Faber -11016,Jane Eyre,Charlotte Brontë/Stevie Davies,4.12,0141441143,9780141441146,eng,590,8333,874,6/29/2006,Penguin Classics -11019,Jane Eyre,Charlotte Brontë/Richard J. Dunn,4.12,0393975428,9780393975420,eng,534,1475,156,12/13/2000,W. W. Norton & Company -11021,Jane Eyre,Jane E. Gerver/Bill Dodge/Charlotte Brontë,4.06,0679886184,9780679886181,eng,112,140,8,6/17/1997,Random House Books for Young Readers -11022,Purity of Blood (Adventures of Captain Alatriste #2),Arturo Pérez-Reverte/Margaret Sayers Peden,3.75,0452287987,9780452287983,eng,268,3240,130,11/28/2006,Plume -11026,Barnaby Rudge,Charles Dickens/John Bowen/Hablot Knight Browne,3.81,0140437282,9780140437287,eng,744,8156,366,2/27/2003,Penguin Books -11027,No me cogeréis vivo: artículos 2001-2005,Arturo Pérez-Reverte,4.16,8420469432,9788420469430,spa,537,199,5,11/10/2005,Alfaguara -11031,The Flanders Panel,Arturo Pérez-Reverte/Margaret Jull Costa,3.79,0156029588,9780156029582,eng,295,12998,589,6/7/2004,Mariner Books -11033,The Seville Communion,Arturo Pérez-Reverte/Sonia Soto,3.68,0156029812,9780156029810,eng,400,3912,209,6/7/2004,Mariner Books -11036,Little Birds,Anaïs Nin,3.72,0156029049,9780156029049,eng,148,7888,366,2/2/2004,Mariner Books -11037,The Diary of Anaïs Nin Vol. 2: 1934-1939,Anaïs Nin/Gunther Stuhlmann,4.18,0156260263,9780156260268,eng,372,1775,47,3/25/1970,Mariner Books -11038,Henry and June: From "A Journal of Love": The Unexpurgated Diary of Anaïs Nin 1931-1932,Anaïs Nin,3.90,015640057X,9780156400572,eng,304,8311,449,10/29/1990,Mariner Books -11043,House of Incest,Anaïs Nin/Val Telberg,3.80,0804001480,9780804001489,eng,72,1843,143,2/1/1991,Swallow Press -11044,The Diary of Anaïs Nin Vol. 3: 1939-1944,Anaïs Nin/Gunther Stuhlmann,4.18,0156260271,9780156260275,eng,348,1392,40,3/24/1971,Mariner Books -11045,The Spectator Bird,Wallace Stegner,3.99,0140139400,9780140139402,eng,214,4808,550,11/1/1990,Penguin -11047,The Big Book of Boy Stuff,Bart King/Chris Sabatino,4.23,1586853333,9781586853334,eng,292,147,25,7/1/2004,Gibbs Smith Publishers -11048,The Boys of Everest: Chris Bonington and the Tragedy of Climbing's Greatest Generation,Clint Willis,3.86,0786715790,9780786715794,eng,535,452,36,9/14/2006,Carroll & Graf Publishers -11062,Roald Dahl: The Storyteller (Famous Lives),Jason Hook,4.06,0750244917,9780750244916,eng,48,0,0,8/12/2004,Hodder Wayland -11069,Les Nouvelles Recettes irrésistibles de Roald Dahl,Roald Dahl/Quentin Blake,4.14,2070536289,9782070536283,fre,64,0,0,9/18/2002,Gallimard Jeunesse -11071,Relatos de lo inesperado,Roald Dahl/Carmelina Payá/Antonio Samons,4.18,8433920863,9788433920867,spa,320,387,30,6/30/2016,Anagrama -11075,Konfetti Ungemütliches + Ungezogenes,Roald Dahl,3.59,3499158477,9783499158476,ger,123,27,1,1/2/1987,Rowohlt Taschenbuch Verlag GmbH -11077,The Sex Lives of Cannibals: Adrift in the Equatorial Pacific,J. Maarten Troost,3.87,0767915305,9780767915304,eng,272,19422,2077,6/8/2004,Broadway Books -11089,The Read-Aloud Handbook,Jim Trelease,4.41,0143037390,9780143037392,eng,432,4357,707,7/25/2006,Penguin Books -11095,The Working Poor: Invisible in America,David K. Shipler,4.03,0375708219,9780375708213,eng,352,4929,369,1/4/2005,Vintage -11101,First Comes Love (Hot Water California #1),Christie Ridgway,3.81,0380818957,9780380818952,en-US,384,1051,47,1/1/2002,Avon Books -11106,Eat Right 4 Your Type,Peter J. D'Adamo/Catherine Whitney,3.57,071267716X,9780712677165,en-US,375,186,16,4/2/1998,Century -11119,The Annotated Gulliver's Travels,Jonathan Swift/Isaac Asimov,3.57,0517539497,9780517539491,eng,298,57,9,10/29/1980,Random House Value Publishing -11121,Gulliver's Travels,Jonathan Swift/Robert A. Greenberg,3.57,0393099415,9780393099416,eng,432,174,9,3/1/1980,W. W. Norton & Company -11130,The Chronicles of Narnia CD Box Set,C.S. Lewis/Kenneth Branagh,4.26,0694524751,9780694524754,eng,31,202,24,10/26/2004,HarperFestival -11136,The Chronicles of Narnia (The Chronicles of Narnia #1-7),C.S. Lewis/Pauline Baynes,4.26,0060765453,9780060765453,eng,766,1131,53,10/15/2005,HarperEntertainment -11137,Mere Christianity,C.S. Lewis/Kathleen Norris,4.32,0060652926,9780060652920,eng,227,7665,664,4/21/2015,HarperOne -11138,Mere Christianity,C.S. Lewis,4.32,0684823780,9780684823782,eng,191,240060,5828,6/1/1996,Touchstone Books -11149,The Screwtape Letters,C.S. Lewis,4.22,0060652896,9780060652890,eng,224,116834,4746,3/6/2001,HarperCollins -11154,The Screwtape Letters/Book & Study Guide,C.S. Lewis,4.22,0800783360,9780800783365,en-US,172,96,12,1/1/1976,Fleming H Revell Co -11157,Four Mothers,Shifra Horn/Dalya Bilu,3.69,0312263236,9780312263232,eng,276,204,28,6/10/2000,Picador -11159,Four Mothers at Chautuaqua,Pansy/Isabella MacDonald Alden,4.04,0842331913,9780842331913,eng,265,28,1,4/30/1997,Living Books -11161,The Trial of God: (as it was held on February 25 1649 in Shamgorod),Elie Wiesel/Robert McAfee Brown/Matthew Fox,4.14,0805210539,9780805210538,eng,208,957,72,11/14/1995,Schocken -11162,Summer for the Gods: The Scopes Trial and America's Continuing Debate Over Science and Religion,Edward J. Larson/Brian Troxell,3.90,0674854292,9780674854291,eng,318,1458,108,11/15/1998,Harvard University Press -11166,Dawn (The Night Trilogy #2),Elie Wiesel/Frances Frenaye,3.87,0809037726,9780809037728,eng,81,12576,975,3/21/2006,Hill & Wang -11167,The Forgotten,Elie Wiesel/Stephen Becker,3.94,0805210199,9780805210194,eng,320,503,36,1/31/1995,Schocken Books Inc -11168,Day (The Night Trilogy #3),Elie Wiesel/Anne Borchardt,3.84,0809023091,9780809023097,eng,109,7332,465,3/21/2006,Hill and Wang -11174,All Rivers Run to the Sea,Elie Wiesel,4.15,0805210288,9780805210286,eng,464,954,63,10/22/1996,Schocken -11176,Father Hunger: Fathers Daughters and the Pursuit of Thinness,Margo Maine/Craig Johnson,3.57,0936077492,9780936077499,eng,288,15,1,9/30/2004,Gürze Books -11178,Father Hunger: Fathers Daughters & Food,Margo Maine/Craig L. Johnson,3.57,0936077093,9780936077093,eng,254,56,5,9/1/2003,Gurze Books -11184,Bold Land Bold Love (Australian Trilogy #1),Connie Mason,3.83,0505522748,9780505522740,eng,469,225,16,8/1/1998,Love Spell -11197,Leading with a Limp: Turning Your Struggles Into Strengths,Dan B. Allender,4.04,1578569508,9781578569502,eng,206,506,52,5/16/2006,Waterbrook Press -11204,Something to Declare,Julia Alvarez,3.99,0452280672,9780452280670,en-US,300,726,50,9/1/1999,Plume Books -11208,How the García Girls Lost Their Accents,Julia Alvarez,3.63,0452287073,9780452287075,eng,304,18032,1144,10/4/2005,Plume -11222,Kesey's One Flew Over the Cuckoo's Nest (Cliffs Notes),Bruce Edward Walker/Ken Kesey/CliffsNotes,4.17,0764586629,9780764586620,eng,112,22,3,12/11/2000,Cliffs Notes -11225,One Flew Over the Cuckoo's Nest,Ken Kesey,4.20,0451137094,9780451137098,eng,272,1120,104,2/1/1963,Signet -11226,One Flew over the Cuckoo's Nest,Ken Kesey,4.20,0451143426,9780451143426,eng,272,67,5,2/1/1963,Signet -11229,The Sea The Sea,Iris Murdoch/Mary Kinzie,3.92,014118616X,9780141186160,eng,528,13010,771,3/1/2001,Penguin Books Ltd -11231,Existentialists and Mystics: Writings on Philosophy and Literature,Iris Murdoch/George Steiner/Peter J. Conradi,4.10,0140264922,9780140264920,eng,576,184,18,7/1/1999,Penguin -11234,A Fairly Honourable Defeat,Iris Murdoch/Peter Reed,3.93,0141186178,9780141186177,eng,432,1417,115,3/1/2001,Penguin Classics -11235,The Unicorn,Iris Murdoch,3.63,014002476X,9780140024760,eng,270,1846,159,1/6/1987,Penguin Books -11240,Bruno's Dream,Iris Murdoch,3.76,0140031766,9780140031768,eng,320,604,48,11/18/1976,Penguin Books -11244,Mystical Paths (Starbridge #5),Susan Howatch,4.23,0006496873,9780006496878,eng,576,1045,38,7/1/1996,HarperCollins Publishers -11245,Glittering Images (Starbridge #1),Susan Howatch,4.07,000649689X,9780006496892,eng,512,2043,209,7/22/1996,Fontana -11247,Scandalous Risks,Susan Howatch,4.20,0006496903,9780006496908,eng,480,1114,43,7/22/2009,Harper -11251,Glamorous Powers (Starbridge #2),Susan Howatch,4.19,000649692X,9780006496922,en-GB,512,1493,69,7/22/1996,HarperCollins -11253,A Severed Head,Iris Murdoch,3.73,0140020039,9780140020038,eng,204,3682,319,11/18/1976,Penguin Books -11262,Absolute Truths (Starbridge #6),Susan Howatch,4.34,0517170779,9780517170779,eng,672,1066,52,8/14/1996,Random House Value Publishing -11263,The Shrouded Walls,Susan Howatch,3.40,0751533939,9780751533934,eng,224,305,31,12/31/2010,Sphere -11269,Waiting Sands,Susan Howatch,3.43,0751533114,9780751533118,eng,192,314,14,3/1/2003,Little Brown Book Group -11277,The Hollow Man,Dan Simmons,3.46,0553563505,9780553563504,en-US,342,2532,149,9/1/1993,Bantam Spectra -11278,Hardcase (Joe Kurtz #1),Dan Simmons,3.68,0312980167,9780312980160,en-US,291,1067,61,8/19/2002,Minotaur Books -11279,Summer of Night (Seasons of Horror #1),Dan Simmons,4.02,0446362662,9780446362665,eng,600,16116,894,3/1/1992,Warner Books -11285,Vengeance (Joe Kurtz #1),Dan Simmons,3.68,2268041042,9782268041049,fre,243,1,0,10/31/2001,Editions du Rocher -11286,Carrion Comfort,Dan Simmons,3.90,0446359203,9780446359207,eng,884,15742,714,10/1/1990,Warner Books -11289,The Rise of Endymion (Hyperion Cantos #4),Dan Simmons,4.18,0553572989,9780553572988,eng,709,36728,1229,7/1/1998,Spectra -11290,Children of the Night,Dan Simmons,3.71,0446364754,9780446364751,eng,464,5855,264,6/1/1993,Warner Books -11295,The Group,Mary McCarthy,3.66,0451025016,9780451025012,eng,397,61,17,9/1/1964,Signet -11296,Haruki Murakami and the Music of Words,Jay Rubin,3.83,0099455447,9780099455448,eng,462,1444,68,1/6/2005,Vintage -11297,Norwegian Wood,Haruki Murakami/Jay Rubin,4.03,0375704027,9780375704024,eng,296,248676,12203,9/12/2000,Vintage Books -11298,A Wild Sheep Chase (The Rat #3),Haruki Murakami/Alfred Birnbaum,3.95,037571894X,9780375718946,eng,353,68918,3022,4/9/2002,Vintage -11301,Horton Hatches the Egg,Dr. Seuss,4.16,0007175191,9780007175192,eng,64,37851,597,10/2/2004,Harpercollins Children's Books -11308,Seaward,Susan Cooper,3.97,0020421907,9780020421900,eng,167,1756,72,4/30/1987,Aladdin Paperbacks -11311,The Boggart,Susan Cooper/Omar Rayyan,3.75,1416905278,9781416905271,eng,196,4085,181,5/31/2005,Aladdin Paperbacks -11313,Silver on the Tree (The Dark is Rising #5),Susan Cooper,4.15,0689840330,9780689840333,eng,274,27802,507,12/1/2000,Margaret K. McElderry Books -11317,The Long Goodbye (Philip Marlowe #6),Raymond Chandler,4.22,0394239105,9780394239101,eng,379,34,4,8/1/1992,Black Lizard Books -11318,Trouble Is My Business,Raymond Chandler,4.06,0394757645,9780394757643,eng,224,9606,258,8/12/1988,Vintage Crime/Black Lizard -11320,The Captain's Verses,Pablo Neruda/Donald Devenish Walsh,4.25,0811215806,9780811215800,mul,151,4494,160,7/19/2004,New Directions Publishing Corporation -11323,Herbert the Timid Dragon,Mercer Mayer,4.62,0307114635,9780307114631,eng,48,23,4,7/1/1991,Western Publishing Company Golden Books -11324,Under the Net,Iris Murdoch,3.77,0140014454,9780140014457,eng,252,11174,465,10/27/1982,Penguin Books Ltd -11326,Love,Toni Morrison,3.75,1400078474,9781400078479,eng,224,7580,452,1/4/2005,Vintage -11333,Beloved,Toni Morrison/A.S. Byatt,3.83,0307264882,9780307264886,eng,360,660,58,10/17/2006,Everyman's Library -11334,Song of Solomon,Toni Morrison,4.06,140003342X,9781400033423,eng,337,73894,2763,6/8/2004,Vintage -11337,The Bluest Eye,Toni Morrison,4.03,0452287065,9780452287068,eng,216,132233,5507,9/6/2005,Plume -11339,100 Love Sonnets,Pablo Neruda/Stephen Tapscott,4.39,0292760280,9780292760288,eng,232,12613,392,1/1/1986,University of Texas Press -11340,Jazz,Toni Morrison,3.81,0679411674,9780679411673,eng,229,428,54,4/7/1992,Alfred A. Knopf -11341,Jazz,Toni Morrison,3.81,1400076218,9781400076215,eng,229,1338,128,6/8/2004,Vintage -11346,Sula,Toni Morrison,3.93,0452283868,9780452283862,eng,174,47998,2479,4/5/2002,Plume Books -11347,Sula,Toni Morrison,3.93,1400033438,9781400033430,eng,174,3552,361,6/8/2004,Vintage International -11349,Sula,Toni Morrison,3.93,0452263492,9780452263499,eng,174,457,49,9/1/1987,Plume -11352,Sula,Toni Morrison,3.93,0099760010,9780099760016,eng,189,709,94,5/7/2005,Vintage Books -11355,Tar baby,Toni Morrison,3.93,2264026219,9782264026217,fre,431,11,0,2/20/1997,Editions 10/18 -11359,Tar Baby,Toni Morrison,3.93,1400033446,9781400033447,eng,320,15795,447,6/8/2004,Vintage -11364,Pacific Northwest Hiking: The Complete Guide to More Than 1 000 of the Best Hikes in Washington and Oregon (Foghorn Outdoors),Scott Leonard/Megan McMorris,4.24,1566915902,9781566915908,eng,912,12,1,4/29/2005,Rick Steves -11366,The Guns of August,Barbara W. Tuchman/Robert K. Massie,4.17,0345476093,9780345476098,eng,606,40927,1671,8/3/2004,Ballantine Books -11371,It Can't Happen Here,Sinclair Lewis/Michael R. Meyer,3.77,045121658X,9780451216588,eng,400,9031,1555,10/4/2005,NAL Trade -11372,Babbitt,Sinclair Lewis,3.66,0486431673,9780486431673,en-US,320,249,29,9/22/2003,Dover Publications -11373,Main Street,Sinclair Lewis/Brooke Allen,3.77,1593080360,9781593080365,en-US,560,286,37,8/1/2003,Barnes Noble Classics -11376,Main Street,Sinclair Lewis,3.77,0375753141,9780375753145,eng,454,21451,778,11/1/2000,Modern Library -11377,Arrowsmith / Elmer Gantry / Dodsworth,Sinclair Lewis/Richard R. Lingeman,3.90,1931082081,9781931082082,en-US,1346,58,11,8/26/2002,Library of America -11378,Elmer Gantry,Sinclair Lewis,3.99,2859405461,9782859405465,fre,352,3840,318,10/1/1998,Phébus -11380,Die Geisha,Arthur Golden,4.11,3442726328,9783442726325,ger,573,314,14,2/1/2000,Wilhelm Goldmann Verlag GmbH -11383,Arthur Edward Waite's Quest of the Golden Stairs,Arthur Edward Waite,3.90,0766144739,9780766144736,eng,184,9,0,4/7/2003,Kessinger Publishing -11389,Arrowsmith,Sinclair Lewis/E.L. Doctorow,3.82,0451526910,9780451526915,eng,428,5889,300,6/1/1953,Harcourt Brace Jovanovich -11390,Something Wicked This Way Comes,Ray Bradbury,3.94,0965020452,9780965020459,eng,293,834,54,1/1/2001,Bookspan -11399,Living on the Ragged Edge: Finding Joy in a World Gone Mad: Workbook,Charles R. Swindoll,4.20,1418503460,9781418503468,en-US,268,3,0,4/6/2005,Nelson Reference & Electronic Publishing -11406,A Door of Hope,Jan Frank,3.97,0898401879,9780898401875,eng,197,28,3,4/1/1987,Here's Life Publishers -11413,Captivating: Unveiling the Mystery of a Woman's Soul,John Eldredge/Stasi Eldredge,3.91,0785264698,9780785264699,en-US,243,42509,738,4/5/2005,Nelson Books -11426,Family (Firstborn #4),Karen Kingsbury,4.42,0842387463,9780842387460,eng,345,8370,143,10/1/2006,Tyndale House Publishers -11427,Found (Firstborn #3),Karen Kingsbury,4.44,0842387455,9780842387453,eng,342,8874,174,8/1/2006,Tyndale House Publishers -11428,Forever (Firstborn #5),Karen Kingsbury,4.43,1414307640,9781414307640,eng,346,8158,146,2/22/2007,Tyndale House Publishers -11429,Ever After (Lost Love #2),Karen Kingsbury,4.32,031024756X,9780310247562,eng,337,10722,354,1/1/2007,Zondervan -11430,Return (Redemption #3),Karen Kingsbury/Gary Smalley,4.45,0842382895,9780842382892,eng,384,13180,288,9/1/2003,Tyndale House Publishers -11431,The Red Gloves Collection (Red Gloves #1-4),Karen Kingsbury,4.49,0446579629,9780446579629,eng,640,718,36,10/10/2006,FaithWords -11432,Reunion (Redemption #5),Karen Kingsbury/Gary Smalley,4.50,0842386882,9780842386883,en-US,400,12509,271,7/1/2004,Tyndale House Publishers -11433,Redemption (Redemption #1),Karen Kingsbury/Gary Smalley,4.38,0842356223,9780842356220,eng,384,25248,859,7/22/2002,Tyndale House Publishers -11434,Forgiven (Firstborn #2),Karen Kingsbury,4.41,0842387447,9780842387446,eng,358,9804,172,9/23/2005,Tyndale House Publishers -11436,Rejoice (Redemption #4),Karen Kingsbury/Gary Smalley,4.46,084386874,9780842386876,eng,344,12550,201,3/22/2004,Tyndale House Publishers -11437,Where I'm Calling From: New and Selected Stories,Raymond Carver,4.42,0679722319,9780679722311,eng,544,18280,772,9/12/2000,Vintage Contemporaries -11439,All of Us: The Collected Poems,Raymond Carver,4.30,0375703802,9780375703805,eng,416,1651,107,4/4/2000,Vintage -11441,Short Cuts: Selected Stories,Raymond Carver/Robert Altman,4.11,0679748644,9780679748649,eng,157,4455,232,9/14/1993,Vintage -11449,Cathedral,Raymond Carver,4.28,0679723692,9780679723691,eng,230,21895,894,6/18/1989,Vintage Contemporaries -11463,In Pharaoh's Army: Memories of the Lost War,Tobias Wolff/Luann Walther,4.08,0679760237,9780679760238,eng,240,2398,175,9/26/1995,Vintage -11464,Old School,Tobias Wolff,3.82,0747574650,9780747574651,eng,196,7772,826,2/7/2005,Bloomsbury -11466,This Boy's Life,Tobias Wolff,3.98,0802136680,9780802136688,eng,304,22828,1304,1/20/2000,Grove Press -11468,The Vintage Book of Contemporary American Short Stories,Tobias Wolff,4.11,0679745130,9780679745136,eng,576,1227,79,9/6/1994,Vintage -11472,We Wish to Inform You That Tomorrow We Will Be Killed with Our Families,Philip Gourevitch,4.24,0312243359,9780312243357,eng,356,24862,1443,9/4/1999,Picador USA -11473,The Paris Review Interviews I: 16 Celebrated Interviews,The Paris Review/Philip Gourevitch/Rebecca West/Elizabeth Bishop/Robert Stone/Robert Gottlieb/Richard Price/Billy Wilder/Jack Gilbert/Joan Didion/Dorothy Parker/Truman Capote/Ernest Hemingway/T.S. Eliot/Saul Bellow/Jorge Luis Borges/Kurt Vonnegut Jr./James M. Cain,4.37,0312361750,9780312361754,eng,510,866,103,10/17/2006,Picador USA -11478,The Living and the Dead: Robert McNamara and Five Lives of a Lost War,Paul Hendrickson,4.01,067978117X,9780679781172,eng,448,135,11,10/28/1997,Vintage -11481,Sons of Mississippi: A Story of Race and Its Legacy,Paul Hendrickson,3.81,0375704256,9780375704253,eng,368,170,31,1/6/2004,Vintage -11482,Looking for the Light: The Hidden Life and Art of Marion Post Wolcott,Paul Hendrickson/Marion Post Wolcott,4.07,0394577299,9780394577296,eng,297,14,3,4/21/1992,Alfred A. Knopf -11486,The Color Purple,Alice Walker,4.20,0671727796,9780671727796,eng,295,445206,9643,4/1/2004,Pocket -11492,Bright Purple: Color Me Confused (TrueColors #10),Melody Carlson,3.49,1576839508,9781576839508,eng,213,806,61,9/5/2006,Th1nk Books -11494,Humboldt's Gift,Saul Bellow,3.86,0140189440,9780140189445,eng,487,6995,378,6/1/1996,Penguin Classics -11499,The Promise,Chaim Potok,4.15,1400095417,9781400095414,eng,368,11255,499,11/8/2005,Anchor Books -11502,The Gift of Asher Lev,Chaim Potok,4.16,0449001156,9780449001158,eng,384,6224,339,9/10/1997,Ballantine Books -11503,In the Beginning,Chaim Potok,4.08,044900113X,9780449001134,eng,416,2222,120,9/10/1997,Ballantine Books -11507,My Name Is Asher Lev,Chaim Potok,4.21,1400031044,9781400031047,eng,369,32785,2398,3/11/2003,Anchor -11511,L'Échiquier du mal,Dan Simmons,3.90,2207254410,9782207254417,fre,999,63,7,6/8/2003,Denoël -11514,L'Éveil d'Endymion II,Dan Simmons,4.25,2266106341,9782266106344,fre,410,19,0,7/6/2000,Pocket -11516,Les Larmes d'Icare,Dan Simmons/Jean-Daniel Brèque,3.81,220724038X,9782207240380,fre,357,0,0,3/15/1994,Denoël -11518,L'Épée de Darwin,Dan Simmons/Guy Abadia,3.33,2268043185,9782268043180,fre,436,3,0,11/20/2002,Éditions du Rocher -11519,Les Fils des ténèbres,Dan Simmons,3.71,2226074740,9782226074744,fre,464,6,0,10/1/1994,Albin Michel -11520,Endymion: Pforten der Zeit,Dan Simmons,4.17,3442353920,9783442353927,ger,672,3,0,2/1/2001,Blanvalet Taschenbuch -11525,1 000 Places to See Before You Die,Patricia Schultz,3.85,0761104844,9780761104841,eng,992,36303,439,5/22/2003,Workman Publishing Company -11535,The Crook Factory,Dan Simmons,3.80,0380789175,9780380789177,eng,580,1108,89,8/1/2000,HarperTorch -11541,Swan Song,Robert R. McCammon,4.28,067162413X,9780671624132,eng,956,147,23,6/1/1987,Pocket Books -11548,Mine,Robert R. McCammon,3.90,0671739441,9780671739447,en-GB,496,9111,231,5/1/1991,Pocket Books -11549,Gone South,Robert R. McCammon,3.93,0671743074,9780671743079,eng,400,4849,228,8/1/1993,Pocket Books -11550,Usher's Passing,Robert R. McCammon,3.92,0671769928,9780671769925,eng,416,3226,143,10/1/1992,Pocket Books -11551,The Wolf's Hour,Robert R. McCammon,4.06,0671731424,9780671731427,eng,603,8741,326,8/15/1990,Pocket Books -11552,Mystery Walk,Robert R. McCammon,3.89,067176991X,9780671769918,eng,432,2242,96,10/1/1992,Pocket Books -11553,Boy's Life,Robert R. McCammon,4.35,0671743058,9780671743055,eng,580,17540,1740,5/1/1992,Pocket Books -11556,Stinger,Robert R. McCammon,3.87,0671737767,9780671737764,en-US,538,5725,147,4/1/1988,Pocket Books -11557,Swan Song,Robert R. McCammon,4.28,0671741039,9780671741037,eng,956,46244,2540,6/1/1987,Pocket Books -11563,Danse Macabre,Stephen King,3.64,042518160X,9780425181607,eng,400,21063,460,9/1/2001,Berkley -11565,The Secretary of Dreams Volume One,Stephen King/Glenn Chadbourne,4.47,1587671409,9781587671401,eng,281,291,7,10/30/2006,Cemetery Dance Publications -11566,The Green Mile,Stephen King,4.44,0451933028,9780451933027,eng,592,207869,4570,9/1/1996,Penguin Signet -11570,Dreamcatcher,Stephen King/William Olivier Desmond/Maria Teresa Marenco,3.63,2226131906,9782226131904,fre,688,136312,1617,3/1/2002,Albin Michel -11571,Storm of the Century: An Original Screenplay,Stephen King,3.92,0965796930,9780965796934,en-US,376,252,14,1/1/1999,Book of the Month Club -11574,The Body,Stephen King/Robin Waterfield,4.25,0582418178,9780582418172,eng,80,29670,974,12/20/1999,Penguin Books -11580,Creepshow,Stephen King/Bernie Wrightson/Michele Wrightson,4.07,0452253802,9780452253803,eng,66,34392,275,8/1/1982,Plume -11584,On Writing: A Memoir,Stephen King,4.33,0340820462,9780340820469,eng,384,1118,142,9/1/2001,New English Library -11588,The Shining,Stephen King,4.22,0450040186,9780450040184,eng,659,978535,15105,7/1/1980,New English Library (Hodder & Stoughton) -11594,La Torre Oscura VII - Tomo 2 of 2 (La Torre Oscura #7),Stephen King/Verónica Canales,4.24,9506440824,9789506440824,spa,496,192,9,4/28/2006,Plaza y Janés -11597,The Dark Half,Stephen King,3.77,045052468X,9780450524684,eng,469,110131,1282,10/7/1990,New English Library -11601,The Science of Stephen King: From 'Carrie' to 'Cell ' The Terrifying Truth Behind the Horror Master's Fiction,Lois H. Gresh/Robert E. Weinberg,3.42,0471782475,9780471782476,eng,272,62,9,8/1/2007,Wiley -11604,The Girl Who Loved Tom Gordon,Stephen King,3.59,0671042858,9780671042851,eng,264,1997,184,2/1/2000,Pocket Books -11605,Riding the Bullet,Stephen King/Josh Hamilton,3.63,0743525876,9780743525879,eng,66,11649,270,5/1/2002,Simon Schuster Audio -11606,The Bachman Books: Four Early Novels by Stephen King,Stephen King/Richard Bachman,4.11,0453005071,9780453005074,eng,692,1098,84,10/4/1985,NAL Books -11608,El umbral de la noche,Stephen King/Gregorio Vlastelica/Eduardo Goligorsky,4.00,060981088X,9780609810880,spa,424,737,119,9/4/2001,Plaza y Janés -11611,Stand by Me,Raynold Gideon,4.32,9998691567,9789998691568,eng,96,1436,24,6/1/1986,Columbia Pictures Pubns -11613,La danza de la muerte,Stephen King/Eduardo Goligorsky,4.34,8401321689,9788401321689,spa,613,64,3,7/10/1986,Plaza & Janes Editores Sa -11616,The Gardens of Emily Dickinson,Judith Farr/Louise Carter,3.84,067401829X,9780674018297,eng,350,54,13,10/1/2005,Harvard University Press -11617,The Life of Emily Dickinson,Richard B. Sewall,4.29,0674530802,9780674530805,eng,821,315,20,7/15/1998,Harvard University Press -11619,The Poems of Emily Dickinson,Emily Dickinson/R.W. Franklin,4.25,0674018249,9780674018242,eng,690,475,39,10/1/2005,Belknap Press -11621,Selected Poetry of Emily Dickinson,Emily Dickinson,4.17,0385487185,9780385487184,eng,299,77,3,4/14/1997,Doubleday Books -11623,The Unabridged Journals of Sylvia Plath,Sylvia Plath/Karen V. Kukil,4.31,0385720254,9780385720250,eng,732,14009,483,10/17/2000,Anchor -11625,Ariel: The Restored Edition,Sylvia Plath/Frieda Hughes,4.27,0060732601,9780060732608,eng,256,3737,283,3/6/2018,Harper Perennial Modern Classics -11627,The Colossus and Other Poems,Sylvia Plath,4.19,0375704469,9780375704468,eng,84,9140,224,5/19/1998,Vintage -11630,Rough Magic: A Biography of Sylvia Plath,Paul Alexander,3.92,0306812991,9780306812996,eng,402,1516,60,9/18/2003,Da Capo Press -11632,The Journals of Sylvia Plath,Sylvia Plath/Ted Hughes/Frances McCullough,4.17,0385493916,9780385493918,eng,384,1163,64,5/11/1998,Anchor -11635,The Death and Life of Sylvia Plath,Ronald Hayman,3.67,0750934220,9780750934220,eng,224,453,24,7/24/2003,Sutton -11643,Te Kaihau: The Windeater,Keri Hulme,3.72,0807611689,9780807611685,eng,239,165,16,2/1/1987,George Braziller -11648,Everyman,Philip Roth,3.58,061873516X,9780618735167,en-US,182,821,131,5/9/2006,Houghton Mifflin -11650,American Pastoral (The American Trilogy #1),Philip Roth,3.92,0099771810,9780099771814,eng,432,47156,3007,3/5/1998,Vintage -11653,I Married a Communist (The American Trilogy #2),Philip Roth,3.81,0375707212,9780375707216,eng,323,4996,325,11/2/1999,Vintage -11654,Sabbath's Theater,Philip Roth,3.85,0679772596,9780679772590,eng,451,6993,482,8/6/1996,Vintage -11655,The Counterlife,Philip Roth,3.91,0679749047,9780679749042,eng,336,3192,195,8/6/1996,Vintage -11656,Rabbit Angstrom: The Four Novels,John Updike,4.26,0679444599,9780679444596,eng,1520,1512,148,10/17/1995,Everyman's Library -11657,Terrorist,John Updike,3.17,0307264653,9780307264657,eng,320,3490,410,6/6/2006,Knopf -11663,Rabbit Novels: Rabbit Run and Rabbit Redux,John Updike,3.98,0345464567,9780345464569,eng,640,811,55,11/4/2003,Ballantine Books -11664,Brazil,John Updike,3.45,0449911632,9780449911631,eng,272,2001,150,8/27/1996,Random House Trade Paperbacks -11665,Conversations with John Updike,James Plath,3.57,0878057005,9780878057009,eng,302,14,2,10/21/2011,University Press of Mississippi -11666,Rabbit at Rest (Rabbit Angstrom #4),John Updike,3.97,0449911942,9780449911945,eng,608,13361,395,8/27/1996,Random House Trade -11668,Rest Rabbit Rest (Sweet Pickles #18),Jacquelyn Reinach/Richard Hefter,4.02,0030420563,9780030420566,eng,32,92,5,3/1/1978,Holt Rinehart and Winston Inc. -11669,The Mambo Kings Play Songs of Love,Oscar Hijuelos,3.68,0060845309,9780060845308,en-US,448,132,19,7/5/2005,Harper Perennial -11670,Mr. Ives' Christmas,Oscar Hijuelos,3.76,0060927542,9780060927547,eng,256,949,128,12/23/2003,Harper Perennial -11671,A Simple Habana Melody,Oscar Hijuelos,3.45,0060928697,9780060928698,eng,368,330,36,6/17/2003,Harper Perennial -11672,The Fourteen Sisters of Emilio Montez O'Brien,Oscar Hijuelos,3.69,0060975946,9780060975944,eng,496,467,31,12/23/2003,Harper Perennial -11684,The Known World,Edward P. Jones,3.83,0007195303,9780007195305,eng,388,449,83,10/1/2004,Harper Perennial -11686,The Stories of John Cheever,John Cheever/Pelle Fritz-Crone,4.27,0375724427,9780375724428,eng,693,12270,529,5/16/2000,Vintage International -11690,Istanbul: Memories and the City,Orhan Pamuk,3.79,1400033888,9781400033881,eng,356,11930,973,7/11/2006,Vintage International -11692,The Black Book,Orhan Pamuk/Maureen Freely/عین له غریب,3.91,1400078652,9781400078653,eng,466,6352,425,7/11/2006,Vintage -11693,The White Castle,Orhan Pamuk/Victoria Rowe Holbrook,3.46,0571164668,9780571164660,eng,161,6994,431,7/26/2000,Faber and Faber -11695,La Vida Nueva,Orhan Pamuk/Rafael Carpintero,3.56,9707707763,9789707707764,spa,282,7,0,10/1/2006,Alfaguara -11697,Granta 85: Hidden Histories,Ian Jack,3.83,1929001150,9781929001156,eng,254,34,4,5/7/2004,Grove Press Granta -11698,Me llamo rojo,Orhan Pamuk/Rafael Carpintero,3.85,8466368876,9788466368872,spa,687,413,45,1/1/2007,Punto de Lectura -11701,The Collected Poems 1957-1987,Octavio Paz/Eliot Weinberger/Elizabeth Bishop,4.30,0811211738,9780811211734,eng,669,2896,46,4/17/1991,New Directions Publishing Corporation -11702,The Labyrinth of Solitude and Other Writings,Octavio Paz/Lysander Kemp/Yara Milos,4.14,080215042X,9780802150424,eng,398,5170,154,1/12/1994,Grove Press -11704,Sor Juana: Or the Traps of Faith,Octavio Paz/Margaret Sayers Peden,4.22,0674821068,9780674821064,eng,547,44,6,1/2/1990,Belknap Press -11705,Selected Poems,Octavio Paz/Eliot Weinberger/Charles Tomlinson/William Carlos Williams/Monique Fong Wust/G. Aroul/Elizabeth Bishop/Paul Blackburn/Lysander Kemp/Denise Levertov/Muriel Rukeyser/Mark Strand,4.21,0811208990,9780811208994,eng,160,373,18,9/17/1984,New Directions -11707,The Double Flame: Love and Eroticism,Octavio Paz/Helen Lane,4.21,0156003651,9780156003650,eng,276,602,30,6/1/1996,Harcourt -11715,The English Patient: A Screenplay (Screen and Cinema),Anthony Minghella/Michael Ondaatje,3.86,0413715000,9780413715005,eng,224,25,1,2/24/1997,Bloomsbury Methuen Drama -11723,Angels & Insects,A.S. Byatt,3.65,0676503187,9780676503180,eng,292,7,0,3/29/1994,Vintage Books -11728,The Blue Flower,Penelope Fitzgerald,3.47,0395859972,9780395859971,eng,226,3334,514,4/15/1997,Mariner Books -11729,The Bookshop The Gate of Angels The Blue Flower,Penelope Fitzgerald/Frank Kermode,4.07,1400041260,9781400041268,en-US,472,32,7,9/23/2003,Everyman's Library -11734,The Human Stain (The American Trilogy #3),Philip Roth,3.88,0099282194,9780099282198,eng,384,25422,1410,4/5/2001,Vintage -11741,Housekeeping,Marilynne Robinson,3.82,0312424094,9780312424091,eng,219,34723,4489,11/1/2004,Picador USA -11751,All Aunt Hagar's Children: Stories,Edward P. Jones,3.78,0060557567,9780060557560,en-US,399,1614,212,8/29/2006,Amistad -11752,Lost in the City,Edward P. Jones,4.03,006079528X,9780060795283,eng,268,2228,241,11/30/2004,Amistad Press -11762,White Noise,Don DeLillo,3.87,0140283307,9780140283303,eng,320,55821,2523,6/1/1999,Penguin Books -11765,Americana,Don DeLillo,3.43,2868698220,9782868698223,eng,454,3683,238,8/10/1993,Actes Sud -11766,Love-Lies-Bleeding,Don DeLillo,3.41,0743273060,9780743273060,eng,112,300,24,1/10/2006,Scribner -11767,The Body Artist,Don DeLillo,3.24,0743203968,9780743203968,eng,128,7201,500,2/5/2002,Scribner -11768,The Hotel New Hampshire,John Irving,3.90,0552992097,9780552992091,eng,520,51267,1195,10/22/1982,Black Swan -11769,The Hotel New Hampshire,John Irving,3.90,0552120405,9780552120401,eng,428,217,26,12/31/1982,Corgi Books -11771,Das Hotel New Hampshire,John Irving/Hans Hermann,3.90,3257211945,9783257211948,ger,597,301,19,1/1/1984,Diogenes Verlag -11772,El Hotel New Hampshire,John Irving/Iris Menéndez,3.90,8472238660,9788472238664,spa,457,18,3,9/1/1995,TusQuets -11777,Black Girl/White Girl,Joyce Carol Oates,3.23,0061125644,9780061125645,eng,288,2662,290,10/17/2006,Ecco -11779,Them (Wonderland Quartet #3),Joyce Carol Oates/Elaine Showalter,3.71,0345484401,9780345484406,eng,576,2686,230,9/12/2006,Modern Library -11780,You Must Remember This,Joyce Carol Oates,3.76,0452280192,9780452280199,eng,436,2115,116,11/1/1998,Plume -11781,Wonderland (Wonderland Quartet #4),Joyce Carol Oates/Elaine Showalter,3.80,081297655X,9780812976557,eng,528,912,97,9/12/2006,Modern Library -11782,Missing Mom,Joyce Carol Oates,3.55,0060816228,9780060816223,eng,464,3510,357,8/22/2006,Ecco -11784,After the Wreck I Picked Myself Up Spread My Wings and Flew Away,Joyce Carol Oates,3.46,0060735252,9780060735258,eng,292,1168,129,9/1/2006,HarperCollins Publishers -11785,Zombie,Joyce Carol Oates,3.34,0452275008,9780452275003,eng,181,6028,821,9/1/1996,Plume -11796,Sabbath's Theater,Philip Roth,3.85,0099582015,9780099582014,eng,451,128,9,9/5/1996,Vintage -11801,The Stone Diaries,Carol Shields,3.87,0143036394,9780143036395,en-US,384,397,40,8/30/2005,Penguin Essential Editions -11809,Insurgent Collective Action and Civil War in El Salvador,Elisabeth Jean Wood,3.83,0521010500,9780521010504,eng,332,54,4,10/16/2003,Cambridge University Press -11824,The Whipping Boy,Sid Fleischman/Peter Sís,3.57,0060521228,9780060521226,eng,90,21191,1162,4/15/2003,Greenwillow Books -11831,Dicey's Song (Tillerman Cycle #2),Cynthia Voigt,3.96,0689863624,9780689863622,eng,359,16021,594,7/1/2003,Aladdin Paperbacks -11854,Puzzle Pack: The Witch of Blackbird Pond,Mary B. Collins,1.00,1583377824,9781583377826,eng,134,2,0,8/15/2005,Teacher's Pet Publications Inc. -11861,City on the Seine: Paris in the Time of Richelieu and Louis XIV 1614-1715,Andrew P. Trout,4.17,0333666380,9780333666388,eng,288,0,0,6/5/1996,Palgrave Macmillan -11862,Teach Them Diligently: How to Use the Scriptures in Child Training,Lou Priolo,4.25,1889032204,9781889032207,eng,162,317,40,9/1/2000,Timeless Texts -11873,The Confessions of Nat Turner,William Styron,3.97,0099285568,9780099285564,eng,480,86,5,7/1/2004,Vintage Classics -11876,Set This House On Fire,William Styron,3.69,009928555X,9780099285557,eng,567,566,33,4/5/2001,Vintage Classics -11878,Darkness Visible: A Memoir of Madness,William Styron,4.04,0679643524,9780679643524,eng,96,398,51,1/23/2007,Modern Library -11880,A Book of Blue Flowers,Robert L. Geneve,3.83,0881927694,9780881927696,eng,327,0,0,2/1/2006,Timber Press (OR) -11886,Falconer,John Cheever,3.66,0224014013,9780224014014,eng,224,7,0,7/7/1977,Random House UK Ltd (A Division of Random House Group) -11890,The Wapshot Chronicle,John Cheever/Rick Moody,3.76,0060528877,9780060528874,eng,352,6152,257,6/3/2003,Harper Perennial Modern Classics -11900,72 Hour Hold,Bebe Moore Campbell,3.81,1400033616,9781400033614,eng,336,1746,184,7/11/2006,Anchor -11901,The Witching Hour (Lives of the Mayfair Witches #1),Anne Rice,4.11,0099471426,9780099471424,eng,1207,87816,2577,11/4/2004,Arrow -11907,The Victim,Saul Bellow,3.53,0140189386,9780140189384,en-US,272,1481,118,3/1/1996,Penguin Classics -11908,The Adventures of Augie March,Saul Bellow/Christopher Hitchens,3.84,0143039571,9780143039570,eng,586,14789,756,10/3/2006,Penguin Classics -11910,Mr. Sammler's Planet,Saul Bellow/Stanley Crouch,3.76,0142437832,9780142437834,eng,288,2721,135,1/6/2004,Penguin Classics -11912,Novels 1956–1964: Seize the Day / Henderson the Rain King / Herzog,Saul Bellow/James Wood,4.19,159853002X,9781598530025,eng,793,96,10,1/11/2007,Library of America -11915,Broken (Women of the Otherworld #6),Kelley Armstrong,4.19,0553588184,9780553588187,eng,444,25866,637,4/25/2006,Bantam -11917,Exit Strategy (Nadia Stafford #1),Kelley Armstrong,3.89,0553588192,9780553588194,eng,480,6236,369,6/26/2007,Bantam -11918,Bitten (Otherworld #1),Kelley Armstrong,4.05,0452286034,9780452286030,eng,436,79710,3479,9/7/2004,Plume Books -11919,Haunted (Women of the Otherworld #5),Kelley Armstrong,4.09,0553587080,9780553587081,eng,495,21556,653,5/31/2005,Bantam Spectra -11920,Dime Store Magic (Women of the Otherworld #3),Kelley Armstrong,4.08,0553587064,9780553587067,eng,414,767,44,5/27/2004,Bantam Spectra -11921,Industrial Magic (Women of the Otherworld #4),Kelley Armstrong,4.13,0553587072,9780553587074,eng,528,777,48,10/26/2004,Bantam Spectra -11922,Stolen (Women of the Otherworld #2),Kelley Armstrong,4.15,0452285933,9780452285934,eng,468,37400,1136,9/28/2004,Plume -11926,Moderato cantabile,Marguerite Duras,3.51,3518376780,9783518376782,fre,122,2525,112,1/1/1985,Suhrkamp -11932,The Line Between,Peter S. Beagle,4.12,1892391368,9781892391360,eng,231,707,97,8/15/2006,Tachyon Publications -11933,Tamsin,Peter S. Beagle,4.02,0451457633,9780451457639,eng,288,3033,241,10/1/1999,Firebird -11934,The Fantasy Worlds of Peter Beagle,Peter S. Beagle,4.21,0345289676,9780345289674,eng,430,530,35,9/12/1979,Del Rey -11938,The Innkeeper's Song,Peter S. Beagle,3.89,0451452887,9780451452887,eng,346,2015,136,11/1/1993,Roc -11949,Uncle Setnakt's Essential Guide to the Left Hand Path,Don Webb,4.37,1885972105,9781885972101,eng,128,112,9,3/3/2011,Lodestar Books -11963,Les petits chevaux de Tarquinia,Marguerite Duras,3.75,207036187X,9782070361878,fre,220,267,14,5/1/1973,Gallimard Education -11970,The Humanoids (Humanoids #1),Jack Williamson,3.75,0312852533,9780312852535,eng,299,898,48,1/15/1996,Orb Books -11978,Terraforming Earth,Jack Williamson,3.46,0765344971,9780765344977,eng,352,17,3,2/17/2003,Tor Science Fiction -11980,Les jeux sont faits,Jean-Paul Sartre,3.96,2070394824,9782070394821,fre,165,1951,77,2/1/1996,Gallimard Education -11988,The Plague The Fall Exile and the Kingdom and Selected Essays,Albert Camus/Stuart Gilbert/Justin O'Brien/David Bellos,4.34,1400042550,9781400042555,eng,656,843,30,8/17/2004,Everyman's Library -11990,The Rebel,Albert Camus/Anthony Bower/Herbert Read,4.15,0679733841,9780679733843,eng,320,9227,256,1/1/1992,Vintage -11991,The Fall,Albert Camus/Justin O'Brien,4.04,0679720227,9780679720225,eng,147,53697,1772,5/7/1991,Vintage -11993,Camus at Combat: Writing 1944-1947,Albert Camus/Jacqueline Levi-Valensi/Arthur Goldhammer/David Carroll,4.19,0691120048,9780691120041,fre,334,134,5,1/16/2006,Princeton University Press -11995,Resistance Rebellion and Death: Essays,Albert Camus/Justin O'Brien,4.20,0679764011,9780679764014,en-US,288,2448,104,8/29/1995,Vintage -11996,I Who Have Never Known Men,Jacqueline Harpman/Ros Schwartz,4.09,0380731819,9780380731817,eng,206,516,71,7/1/1998,Harper Voyager -12000,Crime Novels: American Noir of the 1950s,Robert Polito/Jim Thompson/Patricia Highsmith/Charles Willeford/David Goodis/Chester Himes,4.37,1883011493,9781883011499,eng,892,420,34,9/1/1997,Library of America -12001,Raise High the Roof Beam Carpenters and Seymour: an Introduction,J.D. Salinger,4.11,0140237518,9780140237511,eng,134,251,19,10/3/1998,Hamish Hamilton -12009,The Algebraist,Iain M. Banks,4.02,1597800449,9781597800440,eng,434,15363,560,6/1/2006,Night Shade Books -12013,Excession (Culture #5),Iain M. Banks,4.21,0553575376,9780553575378,eng,499,20051,759,2/2/1998,Bantam Spectra (NY) -12016,Look to Windward (Culture #7),Iain M. Banks,4.20,0743421922,9780743421928,eng,496,17025,436,11/1/2002,Pocket Books/Simon & Schuster (NY) -12017,Inversions (Culture #6),Iain M. Banks,3.92,074341196X,9780743411967,eng,343,10878,342,5/1/2001,Pocket Books -12018,Exzession (Culture #5),Iain M. Banks/Irene Bonhorst,4.21,3453196791,9783453196797,ger,655,24,2,3/1/2002,Heyne -12019,Iain Banks' 'The Wasp Factory' 'The Crow Road' and 'Whit',Alan MacGillivray,3.92,0948877480,9780948877483,eng,80,59,3,4/19/2001,Association for Scottish Literary Studies -12022,A Song Of Stone,Iain Banks,3.17,0316640166,9780316640169,eng,280,78,10,1/1/2009,Little Brown -12034,Selected Poems,Herman Melville/Robert Faggen,3.77,0143039032,9780143039037,eng,384,31,2,6/27/2006,Penguin Classics -12035,Herman Melville: A Biography,Hershel Parker,4.22,0801881854,9780801881855,eng,928,3,0,8/15/2005,Johns Hopkins University Press -12036,The Confidence-Man,Herman Melville/Tony Tanner/John Dugdale,3.65,0192837621,9780192837622,eng,361,1876,161,11/11/1999,Oxford University Press -12043,The Italian Girl (Ackroyd and Thackeray #5),Patricia Hall,3.48,0312264895,9780312264895,eng,208,34,2,5/12/2000,St. Martin's Press -12045,An Unofficial Rose,Iris Murdoch,3.76,014002154X,9780140021547,en-US,288,14,0,1/6/1973,Penguin Books Ltd -12047,Days: A Tangier Diary,Paul Bowles,3.31,0061137367,9780061137365,eng,128,123,16,6/13/2006,Ecco -12048,The Sheltering Sky / Let It Come Down / The Spider's House,Paul Bowles/Daniel Halpern,4.19,1931082197,9781931082198,eng,940,264,21,8/26/2002,Library of America -12049,The Spider's House,Paul Bowles/Francine Prose,4.02,0061137030,9780061137037,eng,432,1123,99,10/31/2006,Ecco -12050,A Hundred Camels in the Courtyard,Paul Bowles,3.98,0872860027,9780872860025,eng,90,313,23,1/1/2001,City Lights Publishers -12052,Collected Stories and Later Writings,Paul Bowles/Daniel Halpern,4.41,1931082200,9781931082204,en-US,1050,128,11,8/26/2002,Library of America -12053,The Sheltering Sky,Paul Bowles,3.91,006083482X,9780060834821,eng,313,906,132,9/20/2005,Ecco Press -12055,Points in Time,Paul Bowles,3.67,0061139637,9780061139635,eng,96,181,26,10/31/2006,Ecco -12059,The Accidental Bodyguard (Accidental #2),Ann Major,3.25,0373760035,9780373760039,eng,192,18,0,4/24/1996,Silhouette Desire -12066,The Nice and the Good,Iris Murdoch,3.84,0140030344,9780140030341,eng,362,1539,90,12/14/1978,Penguin Books -12069,No More Christian Nice Guy: When Being Nice--Instead of Good--Hurts Men Women and Children,Paul Coughlin/Laura Schlessinger,3.77,0764200925,9780764200922,eng,224,284,33,12/31/2005,Bethany House Publishers -12070,Good Omens: The Nice and Accurate Prophecies of Agnes Nutter Witch,Terry Pratchett/Neil Gaiman,4.25,0060853972,9780060853976,eng,384,5036,582,8/7/2007,William Morrow / Harper -12071,Buenos Presagios: las buenas y ajustadas profecías de Agnes La Chalada,Terry Pratchett/Neil Gaiman,4.25,159497098X,9781594970986,spa,318,104,14,4/25/2005,Norma Editorial -12073,Philosophical Investigations,Ludwig Wittgenstein/G.E.M. Anscombe,4.23,0631231277,9780631231271,eng,464,11067,187,1/15/2001,Blackwell Publishing Inc. -12074,Wittgenstein's Poker: The Story of a Ten-Minute Argument Between Two Great Philosophers,David Edmonds/John Eidinow,3.76,0060936649,9780060936648,eng,368,2284,169,9/17/2002,Ecco -12075,Tractatus Logico-Philosophicus,Ludwig Wittgenstein/David Pears/Brian McGuinness/Bertrand Russell,4.07,0415254086,9780415254083,eng,142,13578,404,9/1/2001,Routledge Classics -12076,Philosophical Investigations,Ludwig Wittgenstein/G.E.M. Anscombe,4.23,0024288101,9780024288103,eng,256,224,35,3/11/1973,Pearson -12077,On Certainty,Ludwig Wittgenstein/G.E.M. Anscombe/George Henrik von Wright,4.16,0631169407,9780631169406,en-US,114,75,4,1/16/1991,Wiley-Blackwell -12078,Wittgenstein on Rules and Private Language: An Elementary Exposition,Saul A. Kripke,4.01,0674954017,9780674954014,eng,160,877,27,7/15/1984,Harvard University Press -12079,Ludwig Wittgenstein: The Duty of Genius,Ray Monk,4.36,0140159959,9780140159950,eng,704,3679,148,11/1/1991,Penguin Books -12080,Wittgenstein's Vienna,Allan Janik/Stephen Toulmin,4.06,1566631327,9781566631327,eng,315,285,26,9/1/1996,Ivan R. Dee Publisher -12081,The Blue and Brown Books,Ludwig Wittgenstein/Rush Rhees,4.14,0061312118,9780061312113,en-US,208,2027,38,1/1/1965,Harper & Row (NYC et al.) -12083,Long Day's Journey into Night,Eugene O'Neill/Harold Bloom,4.07,0300093055,9780300093056,eng,179,32178,734,2/8/2002,Yale University Press -12086,Long Day's Journey: The Steamboat & Stagecoach Era in the Northern West,Carlos A. Schwantes,4.00,0295976918,9780295976914,eng,408,4,0,9/1/1999,University of Washington Press -12090,En attendant Godot,Samuel Beckett,3.83,2707301485,9782707301482,fre,124,1751,74,7/3/1995,Éditions de Minuit -12091,The Coming of Godot: A Short History of a Masterpiece,Jonathan Croall/Peter Hall,4.00,1840025956,9781840025958,en-GB,128,3,0,4/1/2006,Oberon Books -12095,The Bald Soprano and Other Plays,Eugène Ionesco/Donald M. Allen,4.04,0802130798,9780802130792,eng,160,5524,106,1/12/1994,Grove Press -12099,Three Plays: Exit the King / The Killer / Macbett,Eugène Ionesco/Charles Marowitz/Donald Watson,4.11,0802151108,9780802151100,eng,105,175,9,1/13/1994,Grove Press -12108,The Discovery of New Worlds (Story of the World #2),Margaret Bertha Synge,3.50,159915014X,9781599150147,eng,252,17,3,1/8/2006,Yesterday's Classics -12113,Six Characters in Search of an Author and Other Plays,Luigi Pirandello/Mark Musa,3.95,014018922X,9780140189223,eng,224,2935,63,6/29/1995,Penguin Classics -12114,The Oil Jar and Other Stories,Luigi Pirandello/Stanley Appelbaum,3.85,048628459X,9780486284590,eng,96,214,18,4/3/1995,Dover Publications -12116,The Late Mattia Pascal,Luigi Pirandello/William Weaver/Charles Simic,4.03,1590171152,9781590171158,eng,272,6185,108,11/30/2004,NYRB Classics -12117,One No One and One Hundred Thousand,Luigi Pirandello/William Weaver/Samuel Putnam,4.10,0941419746,9780941419741,eng,176,3852,106,9/1/1992,Marsilio Publishers -12118,Henry IV,Luigi Pirandello/Tom Stoppard,3.91,0802141943,9780802141941,eng,80,650,21,7/11/2005,Grove/Atlantic Inc. -12120,Three Plays,Luigi Pirandello/Robert Rietty/Julian Mitchell/John Linstrum,3.74,0413575608,9780413575609,eng,200,7,0,6/1/1985,Methuen Publishing -12123,Sierra's Homecoming (McKettricks #5),Linda Lael Miller,4.09,0373247958,9780373247950,eng,248,1979,94,11/21/2006,Silhouette Desire -12125,Homecoming (Tillerman Cycle #1),Cynthia Voigt,3.94,0689851324,9780689851322,eng,416,18737,1081,8/1/2002,Simon Pulse -12137,Buried Child,Sam Shepard,3.91,0307274977,9780307274977,eng,120,6746,178,2/14/2006,Vintage -12142,Seven Plays,Sam Shepard/Richard Gilman,4.18,0553346113,9780553346114,eng,336,4967,105,5/1/1984,Dial Press Trade Paperback -12143,You Come Too: Favorite Poems for Readers of All Ages,Robert Frost/Noel Perrin,4.15,0805069852,9780805069853,en-US,92,79,6,4/1/2002,Owlet Paperbacks -12147,Watership Down,Richard Adams,4.06,0743277708,9780743277709,en-US,476,6115,752,11/1/2005,Charles Scribner's Sons -12148,Watership Down,Richard Adams,4.06,0060935456,9780060935450,eng,479,522,80,5/15/2001,HarperPerennial -12149,Tales from Watership Down,Richard Adams,3.79,0517289369,9780517289365,eng,267,33,3,12/15/1998,Random House -12155,The Bake Shop Ghost,Jacqueline K. Ogburn/Marjorie A. Priceman,4.27,0618445579,9780618445578,en-US,32,252,53,7/25/2005,HMH Books for Young Readers -12157,The Journey That Saved Curious George: The True Wartime Escape of Margret and H.A. Rey,Louise Borden/Allan Drummond,4.11,0618339248,9780618339242,eng,80,1136,224,9/26/2005,HMH Books for Young Readers -12169,All the Sad Young Men (Works of F. Scott Fitzgerald),F. Scott Fitzgerald/James L.W. West III,3.96,0521402409,9780521402408,eng,504,369,22,1/29/2007,Cambridge University Press -12172,Memoirs of Hadrian,Marguerite Yourcenar/Grace Frick,4.25,0374529264,9780374529260,eng,347,10455,660,5/18/2005,Farrar Straus and Giroux -12180,Every Book Its Reader: The Power of the Printed Word to Stir the World,Nicholas A. Basbanes,3.96,0060593245,9780060593247,eng,400,312,26,12/12/2006,Harper Perennial -12186,Invitation to a Beheading,Vladimir Nabokov,3.90,0141185600,9780141185606,eng,192,342,23,8/3/2015,Penguin Books Ltd -12187,Ada or Ardor: A Family Chronicle,Vladimir Nabokov/Fatih Özgüven,4.15,0679725229,9780679725220,eng,604,7927,543,2/19/1990,Vintage -12188,Strong Opinions,Vladimir Nabokov,4.00,0679726098,9780679726098,eng,368,767,59,3/17/1990,Vintage -12193,The Portable Conrad,Joseph Conrad/Morton Dauwen Zabel/Frederick R. Karl,4.28,0140150331,9780140150339,eng,762,97,7,12/9/1976,Penguin Books -12194,Lord Jim,Joseph Conrad,3.62,1551111721,9781551111728,eng,455,21925,838,11/7/2000,Broadview Press Inc -12195,Typhoon and Other Tales,Joseph Conrad/Cedric Watts,3.90,0192801732,9780192801739,eng,304,589,20,1/16/2003,Oxford University Press -12201,Stopping by Woods on a Snowy Evening,Robert Frost/Susan Jeffers,4.40,0525467343,9780525467342,eng,32,9205,322,9/24/2001,Dutton Children's Books -12202,The Poetry of Robert Frost: The Collected Poems Complete and Unabridged,Robert Frost/Edward Connery Lathem,4.25,0805069860,9780805069860,eng,607,1392,67,4/1/2002,Owl Books -12203,Frost,Thomas Bernhard/Michael Hofmann,3.88,1400040663,9781400040667,eng,342,731,69,10/17/2006,Alfred A. Knopf -12204,The Road Not Taken and Other Poems,Robert Frost,4.28,0486275507,9780486275505,eng,49,33928,251,4/19/1993,Dover Publications -12210,Collected Poems Prose and Plays,Robert Frost/Richard Poirier/Mark Richardson,4.32,188301106X,9781883011062,eng,1036,6188,51,10/1/1995,Library of America -12212,Robert Frost: A Life,Jay Parini,4.11,0805063412,9780805063417,eng,514,259,31,3/15/2000,Owl Books (NY) -12216,Three Plays: Desire Under the Elms / Strange Interlude / Mourning Becomes Electra,Eugene O'Neill/Luann Walther,4.08,0679763961,9780679763963,eng,424,1596,36,10/31/1995,Vintage -12220,A Streetcar Named Desire,Tennessee Williams,3.98,0822210894,9780822210894,eng,107,235224,2409,12/1/1952,Dramatists Play Service -12222,A Streetcar Named Desire,Tennessee Williams/Arthur Miller,3.98,0811216020,9780811216029,en-US,192,3458,337,9/17/2004,New Directions -12224,Streetcar Suburbs: The Process of Growth in Boston 1870-1900,Sam Bass Warner, Jr./Sam B. Warner,3.58,0674842111,9780674842113,en-US,236,61,6,4/20/2004,Harvard University Press -12225,A Streetcar Named Desire (SparkNotes Literature Guide),SparkNotes,3.29,1586634496,9781586634490,eng,96,0,0,7/15/2002,SparkNotes -12226,CliffNotes on Williams' Glass Menagerie & Streetcar Named Desire (Cliffs Notes),James Lamar Roberts/Tennessee Williams/CliffsNotes,3.70,0822005336,9780822005339,en-GB,88,10,0,1/5/1965,Cliffs Notes -12230,Pygmalion,George Bernard Shaw/Dan H. Laurence/Nicholas Grene,3.90,0141439505,9780141439501,eng,122,2085,179,1/30/2003,Penguin Books -12240,The Play Soldier,Chet Green,4.50,159113644X,9781591136446,eng,328,2,2,5/22/2011,Booklocker.com Inc. -12248,Return to Ithaca (Tales from the Odyssey #5),Mary Pope Osborne/Troy Howell,4.14,0786809930,9780786809936,eng,112,280,19,10/1/2004,Little Brown Books for Young Readers -12249,The New Testament,Richmond Lattimore,4.32,0865475245,9780865475243,eng,608,109,23,10/30/1997,North Point Press -12250,Greek Lyrics,Richmond Lattimore,3.98,0226469441,9780226469447,eng,82,234,21,9/15/1960,University of Chicago Press -12254,The Iliad,Homer/Robert Fagles/Derek Jacobi,3.86,0143059289,9780143059288,eng,8,42,7,6/15/2006,Penguin-HighBridge -12256,The Iliad Books 8-9 (Classical Texts Series),Homer/Charles H. Wilson,4.50,0856686271,9780856686276,grc,224,4,1,12/1/1996,Aris and Phillips -12263,The Gray-Eyed Goddess (Tales from the Odyssey #4),Mary Pope Osborne/Troy Howell/Homer,4.09,0786809310,9780786809318,en-US,128,316,22,9/30/2003,Little Brown Books for Young Readers -12268,Collected Stories,Tennessee Williams/Gore Vidal,4.31,0811212696,9780811212694,eng,608,642,46,4/17/1994,New Directions -12274,Saint Joan,George Bernard Shaw/Dan H. Laurence/Imogen Stubbs,3.80,0140437916,9780140437911,eng,160,5966,211,1/25/2001,Penguin Classics -12275,The Intelligent Woman's Guide to Socialism Capitalism Sovietism and Fascism,George Bernard Shaw/Susan Moller Okin,3.87,0887380050,9780887380051,eng,565,100,8,1/1/1984,Transaction Publishers -12279,Molloy Malone Dies The Unnamable (The Trilogy #1-3),Samuel Beckett,4.28,0375400702,9780375400704,eng,512,6775,217,9/16/1997,Everyman's Library -12288,The Adventures of Race Williams,Carroll John Daly,3.45,0892969598,9780892969593,eng,342,11,3,1/1/1989,Mysterious Press -12290,The Hidden Hand,Carroll John Daly/Drew Bishop,3.43,0060974362,9780060974367,eng,272,5,0,5/1/1992,Harper Perennial -12292,Murder from the East,Carroll John Daly,3.63,0930330013,9780930330019,eng,312,15,4,1/1/1935,International Polygonics -12293,Education as My Agenda: Gertrude Williams Race & the Baltimore Public Schools,Jo Ann Ooiman Robinson,4.25,031229543X,9780312295431,eng,336,4,1,10/14/2005,Palgrave Macmillan -12296,The Scarlet Letter,Nathaniel Hawthorne/Thomas E. Connolly/Nina Baym,3.40,0142437263,9780142437261,eng,279,609586,10402,2/27/2003,Penguin Books -12297,The Scarlet Letter,Nathaniel Hawthorne/Kathryn Harrison,3.40,0679783385,9780679783381,en-US,241,5503,220,9/19/2000,Modern Library -12299,The Scarlet Letter,Nathaniel Hawthorne,3.40,0743487567,9780743487566,eng,400,1373,68,5/1/2004,Simon & Schuster -12300,The Scarlet Letter,Nathaniel Hawthorne,3.40,1587263831,9781587263835,eng,224,109,8,7/14/2006,Ann Arbor Media -12301,The Scarlet Letter,Nathaniel Hawthorne,3.40,074326469X,9780743264693,eng,538,534,11,8/2/2005,Kaplan -12302,Nathaniel Hawthorne's The Scarlet Letter,Nathaniel Hawthorne/Karin Jacobson,3.40,0764587242,9780764587245,eng,240,10,0,4/29/2001,Cliffs Notes -12315,The Birth of Tragedy,Friedrich Nietzsche/Clifton Fadiman,3.98,0486285154,9780486285153,eng,92,210,20,6/1/1995,Dover Publications Inc. -12317,Human All Too Human (Complete Works 3),Friedrich Nietzsche/Gary Handwerk,4.21,0804741719,9780804741712,en-US,396,64,4,12/1/2000,Stanford University Press (Stanford CA) -12319,Basic Writings of Nietzsche,Friedrich Nietzsche/Walter Kaufmann/Peter Gay,4.11,0679783393,9780679783398,eng,862,3227,76,1/25/2001,Random House Inc. -12321,Beyond Good and Evil,Friedrich Nietzsche/R.J. Hollingdale/Michael Tanner,4.01,014044923X,9780140449235,eng,240,48651,1115,2/27/2003,Penguin Classics -12322,Daybreak: Thoughts on the Prejudices of Morality,Friedrich Nietzsche/R.J. Hollingdale,4.18,0521599636,9780521599634,eng,292,818,26,11/13/1997,Cambridge University Press -12328,How To Draw The Legend Of Zelda (troll),Michael Teitelbaum/Ron Zalme,4.21,0439635810,9780439635813,en-US,32,61,7,2/1/2004,Scholastic -12335,Savage Beauty: The Life of Edna St. Vincent Millay,Nancy Milford,4.01,0375760814,9780375760815,eng,608,6799,483,9/10/2002,Random House Trade -12346,Premières Histoires,João Guimarães Rosa,4.33,2864240157,9782864240150,fre,205,0,0,3/31/1995,Métailié -12349,My Year of Meats,Ruth Ozeki,3.96,0140280464,9780140280463,eng,366,12431,1330,3/1/1999,Penguin Books -12350,Beef,Ruth Ozeki,3.96,3492230024,9783492230025,ger,383,2,0,4/1/2000,Piper -12352,Mon épouse américaine,Ruth Ozeki/Florence Mortimer,3.96,2266104462,9782266104463,fre,445,3,0,4/19/2001,Pocket -12358,The Partly Cloudy Patriot,Sarah Vowell/Katherine Streeter,3.88,0743243803,9780743243803,eng,197,25608,1318,10/1/2003,Simon Schuster -12365,The Risk Pool,Richard Russo,4.04,0099276496,9780099276494,eng,479,5013,332,6/4/1998,Vintage -12366,The Whore's Child and Other Stories,Richard Russo,3.75,009943752X,9780099437529,eng,240,2738,252,11/1/2003,Vintage Books USA -12370,Supermob: How Sidney Korshak and His Criminal Associates Became America's Hidden Power Brokers,Gus Russo,3.88,1582343896,9781582343891,en-US,640,89,15,9/5/2006,Bloomsbury (NYC) -12372,The Lay of the Land,Richard Ford,3.90,0679454683,9780679454687,eng,485,3255,353,10/24/2006,Alfred A. Knopf -12375,Tom Ford,Graydon Carter/Tom Ford/Anna Wintour/Bridget Foley,4.47,0847826694,9780847826698,eng,416,182,11,11/4/2008,Rizzoli -12378,The People's Tycoon: Henry Ford and the American Century,Steven Watts,4.02,0375707255,9780375707254,eng,656,309,39,10/10/2006,Vintage -12381,Wilderness: The Lost Writings Vol. 1,Jim Morrison,3.96,0679726225,9780679726227,eng,214,2940,124,12/17/1989,Random House Vintage Books -12383,When Somebody Loves You Back (Soulmates Dissipate #6),Mary B. Morrison,4.38,0758207301,9780758207302,en-US,285,1763,20,8/1/2006,Dafina Books -12395,Journey to the End of the Night,Louis-Ferdinand Céline/Ralph Manheim/William T. Vollmann,4.23,0811216543,9780811216548,eng,453,21561,876,5/17/2006,New Directions -12398,Europe Central,William T. Vollmann,3.92,0143036599,9780143036593,en-US,811,2121,247,12/1/2005,Penguin -12401,Historical Atlas of Central Europe (History of East Central Europe Vol. 1),Paul Robert Magocsi,4.43,0295981466,9780295981468,en-US,288,24,4,8/1/2002,University of Washington Press -12408,Passing,Nella Larsen/Carla Kaplan,3.85,0393979164,9780393979169,eng,546,335,26,8/1/2007,W. W. Norton & Company -12412,The Complete Fiction of Nella Larsen: Passing Quicksand and the Stories,Nella Larsen/Charles Larson/Marita Golden,4.14,0385721005,9780385721004,eng,278,824,59,11/6/2001,Anchor Books -12417,The Poet of Tolstoy Park,Sonny Brewer,3.93,0345476328,9780345476326,eng,304,565,118,3/28/2006,Ballantine Books -12419,A Calendar of Wisdom: Daily Thoughts to Nourish the Soul,Leo Tolstoy/Peter Sekirin,4.07,0684837935,9780684837932,eng,384,502,43,10/14/1997,Scribner -12424,Safe Conduct: An Autobiography and Other Writings,Boris Pasternak/B. Deutsch,3.82,081120135X,9780811201353,eng,256,83,8,4/14/2009,New Directions -12427,Letters: Summer 1926,Boris Pasternak/Marina Tsvetaeva/Rainer Maria Rilke,4.26,0940322714,9780940322714,eng,380,179,16,10/31/2001,NYRB Classics -12441,Traveller,Richard Adams,3.92,0440204933,9780440204930,eng,355,884,74,11/5/1989,Dell Publishing -12442,The Plague Dogs,Richard Adams,3.85,0345494024,9780345494023,eng,390,5875,401,11/28/2006,Ballantine Books -12444,Maia (Beklan Empire #2),Richard Adams,4.01,0670800333,9780670800339,eng,1056,1719,133,9/27/1984,Viking Press -12445,The Girl in a Swing,Richard Adams,3.52,0517391732,9780517391730,eng,339,24,3,10/1/1982,Random House -12447,You Can't Go Home Again,Thomas Wolfe,4.04,0060930055,9780060930059,eng,711,4025,265,8/5/1998,Harper Perennial -12448,Look Homeward Angel,Thomas Wolfe,3.93,0743297318,9780743297318,eng,644,11131,751,10/10/2006,Scribner -12451,Of Time and the River: A Legend of Man's Hunger in His Youth,Thomas Wolfe/Pat Conroy,4.20,0684867850,9780684867854,eng,896,777,45,9/8/1999,Scribner -12457,Boys' Life & Search and Destroy,Howard Korder,3.76,0413712001,9780413712004,en-GB,160,17,0,12/1/2006,Methuen Publishing -12458,Complete Plays 1920–1931,Eugene O'Neill/Travis Bogard,4.18,0940450496,9780940450493,eng,1092,90,9,10/1/1988,Library of America -12461,Complete Plays 1913–1920,Eugene O'Neill/Travis Bogard,4.10,0940450488,9780940450486,eng,1107,87,5,10/1/1988,Library of America -12466,The Castle in the Forest,Norman Mailer,3.14,0394536495,9780394536491,en-US,477,2307,351,1/23/2007,Random House (NY) -12467,The Naked and the Dead,Norman Mailer,3.94,0312265050,9780312265052,eng,721,21004,620,8/28/2000,Picador -12468,The Executioner's Song,Norman Mailer,4.06,0375700811,9780375700811,eng,1056,15682,952,4/28/1998,Vintage Books USA -12473,The Big Empty: Dialogues on Politics Sex God Boxing Morality Myth Poker & Bad Conscience in America,Norman Mailer/John Buffalo Mailer,3.30,1560258241,9781560258247,en-US,218,67,10,1/24/2006,Nation Books -12474,The Armies of the Night: History as a Novel the Novel as History,Norman Mailer,3.66,0452272793,9780452272798,eng,304,2500,188,1/1/1995,Plume Books -12477,In Cold Blood,Truman Capote,4.07,0141182571,9780141182575,eng,316,3500,313,2/3/2000,Penguin Classics -12478,Cold Blood (Lorraine Page #2),Lynda La Plante,3.92,0515124796,9780515124798,eng,462,12,3,4/1/1999,Jove -12482,Amazing Disgrace (Gerald Samper #2),James Hamilton-Paterson,3.80,1933372192,9781933372198,eng,320,221,34,11/1/2006,Europa Editions -12488,Cry the Beloved Country,Alan Paton,3.90,0099766817,9780099766810,eng,240,767,85,8/1/2002,Vintage Classics -12495,You Don't Know Jack (NY Girlfriends #2),Erin McCarthy,3.72,075821409X,9780758214096,en-US,255,2757,119,10/1/2006,Brava -12496,The Sunset Limited,Cormac McCarthy,3.96,0307278360,9780307278364,eng,160,6494,562,10/24/2006,Vintage -12497,No Country for Old Men,Cormac McCarthy,4.14,0375706674,9780375706677,eng,309,120421,6140,7/11/2006,Vintage -12502,McCarthy's Bar: A Journey of Discovery in Ireland,Pete McCarthy,3.80,0312311338,9780312311339,eng,338,8819,394,3/3/2003,St. Martin's Griffin -12505,The Idiot,Fyodor Dostoyevsky/Anna Brailovsky/Joseph Frank/Constance Garnett/Alan Myers,4.18,0679642420,9780679642428,eng,667,94133,2760,4/8/2003,Modern Library -12511,The Complete Idiot's Guide to Calculus,W. Michael Kelley,4.11,1592574718,9781592574711,en-US,352,64,9,6/27/2006,Alpha -12513,True and False: Heresy and Common Sense for the Actor,David Mamet,3.95,0679772642,9780679772644,eng,144,1876,147,2/22/1999,Vintage -12517,On Directing Film,David Mamet,3.86,0140127224,9780140127225,eng,107,2448,146,1/1/1992,Penguin Books -12522,Book of Dreams,Jack Kerouac/Robert Creeley,3.44,0872863808,9780872863804,eng,250,924,25,5/1/2001,City Lights Publishers -12526,Three by Annie Dillard: Pilgrim at Tinker Creek An American Childhood The Writing Life,Annie Dillard,4.34,0060920645,9780060920647,en-US,617,562,42,11/21/1990,Harper Perennial -12527,Pilgrim at Tinker Creek,Annie Dillard,4.11,0072434171,9780072434170,eng,288,17681,1596,6/1/2000,Harper Perennial -12528,An American Childhood,Annie Dillard,3.91,0060915188,9780060915186,eng,255,7102,604,10/15/2013,Harper Perennial -12532,For the Time Being,Annie Dillard,4.16,0375703470,9780375703478,en-US,205,3172,380,2/8/2000,Vintage -12533,The Maytrees,Annie Dillard,3.57,0061239534,9780061239533,eng,216,4870,975,6/12/2007,Harper -12535,Plan B: Further Thoughts on Faith,Anne Lamott,4.05,1594481571,9781594481574,eng,352,18922,865,3/28/2006,Riverhead Books -12537,All New People,Anne Lamott,3.63,1582430543,9781582430546,eng,166,1562,111,12/17/1999,Counterpoint LLC -12540,Operating Instructions: A Journal of My Son's First Year,Anne Lamott,4.19,1400079098,9781400079094,eng,251,21507,1664,3/8/2005,Anchor -12545,Stiff: The Curious Lives of Human Cadavers,Mary Roach,4.06,0141007451,9780141007458,eng,304,1029,188,7/1/2004,Penguin -12546,A Working Stiff's Manifesto: A Memoir of Thirty Jobs I Quit Nine That Fired Me and Three I Can't Remember,Iain Levison,3.83,0812967941,9780812967944,eng,164,509,81,4/8/2003,Random House Trade -12550,Stiff Upper Lip Jeeves (Jeeves #13),P.G. Wodehouse,4.29,184159105X,9781841591056,eng,211,6970,310,12/17/2002,Everyman's Library -12555,The Bonesetter's Daughter,Amy Tan,3.99,0345457374,9780345457370,eng,387,108440,2689,2/4/2003,Ballantine Books -12557,The Kitchen God's Wife,Amy Tan,4.01,0143038109,9780143038108,en-US,416,66503,1661,9/21/2006,Penguin Books -12558,The Moon Lady,Amy Tan/Gretchen Schields,3.97,0689806167,9780689806162,eng,32,1388,64,11/1/1995,Aladdin -12560,The Short History of a Prince,Jane Hamilton,3.65,055299801X,9780552998017,eng,432,1799,121,4/1/1999,Black Swan -12561,The Guardian,Jane Hamilton,3.72,0785282092,9780785282099,eng,239,83,20,12/31/1994,Thomas Nelson Publishers -12564,Sometimes a Great Notion,Ken Kesey/Charles Bowden,4.17,0143039865,9780143039860,eng,715,577,80,8/29/2006,Penguin Classics -12568,Trout Fishing in America / The Pill vs. the Springhill Mine Disaster / In Watermelon Sugar,Richard Brautigan,4.15,0395500761,9780395500767,eng,400,8721,380,3/1/1989,Houghton Mifflin/Seymour Lawrence -12569,Revenge of the Lawn / The Abortion / So the Wind Won't Blow it All Away,Richard Brautigan,4.29,0395706742,9780395706749,eng,544,2076,95,2/21/1995,Mariner Books -12570,A Confederate General from Big Sur / Dreaming of Babylon / The Hawkline Monster,Richard Brautigan,4.25,0395547032,9780395547038,en-US,608,1724,103,2/4/1991,Mariner Books -12571,An Unfortunate Woman,Richard Brautigan/Taylan Taftaf,3.78,0312277105,9780312277109,eng,132,1349,77,7/10/2001,St. Martin's Griffin -12577,The Collected Stories,Eudora Welty,4.23,0156189216,9780156189217,eng,622,7084,202,2/1/1982,Mariner Books -12578,Complete Novels: The Robber Bridegroom Delta Wedding The Ponder Heart Losing Battles The Optimist's Daughter,Eudora Welty/Richard Ford/Michael Kreyling,4.17,188301154X,9781883011543,eng,1012,274,27,8/1/1998,Library of America -12579,Eudora Welty: Photographs,Eudora Welty/Reynolds Price,4.43,0878055290,9780878055296,eng,226,305,15,10/21/1993,University Press of Mississippi -12581,On Writing,Eudora Welty/Richard Bausch,4.04,0679642706,9780679642701,eng,106,484,56,9/24/2002,Modern Library -12582,Essential Welty: Why I Live at the P.O. A Memory Powerhouse and Petrified Man,Eudora Welty,3.94,0061124192,9780061124198,eng,1,92,28,6/27/2006,Caedmon -12583,Losing Battles,Eudora Welty,3.60,0679728821,9780679728825,eng,436,433,59,8/11/1990,Vintage -12586,The Eye of the Story: Selected Essays and Reviews,Eudora Welty,4.06,0679730044,9780679730040,eng,368,102,11,8/29/1990,Vintage -12589,The Golden Apples,Eudora Welty,3.88,015636090X,9780156360906,eng,288,830,76,9/14/1956,Mariner Books -12590,One Writer's Beginnings,Eudora Welty,4.06,0674639278,9780674639270,eng,104,2717,232,7/21/1998,Harvard University Press -12609,The Spirit Catches You and You Fall Down: A Hmong Child Her American Doctors and the Collision of Two Cultures,Anne Fadiman,4.17,0374525641,9780374525644,eng,341,60656,4194,9/30/1998,Noonday Press -12612,Hegemony or Survival: America's Quest for Global Dominance,Noam Chomsky,3.97,0805076883,9780805076882,eng,301,11173,345,9/1/2004,Holt McDougal -12614,The Chomsky-Foucault Debate: On Human Nature,Noam Chomsky/Michel Foucault/John Rajchman,3.94,1595581340,9781595581341,eng,213,1953,116,9/1/2006,The New Press -12615,Media Control: The Spectacular Achievements of Propaganda,Noam Chomsky,4.02,1583225366,9781583225363,eng,103,4332,320,9/3/2002,Seven Stories Press -12616,11 de Septiembre,Noam Chomsky,3.73,158322565X,9781583225653,spa,144,14,2,9/3/2002,Siete Cuentos -12618,On Anarchism,Noam Chomsky/Barry Pateman,3.93,1904859208,9781904859208,eng,256,4145,192,5/1/2005,AK Press -12620,The Chomsky Reader,Noam Chomsky,3.98,1852421177,9781852421175,eng,492,1643,38,6/1/1988,Serpent's Tail -12622,Language and Mind,Noam Chomsky,3.86,052167493X,9780521674935,eng,190,819,31,12/1/2006,Cambridge University Press -12623,Perilous Power: The Middle East & US Foreign Policy,Noam Chomsky/Gilbert Achcar/Stephan R. Shalom,4.05,1594513120,9781594513121,en-GB,242,270,16,9/15/2006,Routledge -12627,What Uncle Sam Really Wants,Noam Chomsky/Arthur Naiman/David Barsamian/Sandy Niemann,3.99,1878825011,9781878825018,eng,111,1679,133,1/1/1992,Odonian Press -12630,Imperial Ambitions: Conversations on the Post-9/11 World,Noam Chomsky/David Barsamian,3.97,080507967X,9780805079678,eng,226,1776,90,10/5/2005,Metropolitan Books/Henry Holt & Co. (NY) -12631,On MisEducation (Critical Perspectives),Noam Chomsky/Donaldo Macedo,3.76,0742529789,9780742529786,eng,199,282,20,2/23/2004,Rowman & Littlefield Publishers -12645,Aspects of the Theory of Syntax,Noam Chomsky,3.96,0262530074,9780262530071,eng,261,296,10,3/15/1969,MIT Press (Cambridge MA) -12646,On Democracy & Education (Social Theory Education & Cultural Change),Noam Chomsky/C.P. Otero,3.96,0415926327,9780415926324,en-US,480,84,5,11/22/2002,Routledge Falmer -12648,Cat Breaking Free (Joe Grey #11),Shirley Rousseau Murphy,4.22,0060578122,9780060578121,eng,375,225,20,10/1/2006,Avon -12649,Confessions,Jean-Jacques Rousseau/Patrick Coleman/Angela Scholar,3.62,0192822756,9780192822758,eng,676,4919,160,5/18/2000,Oxford University Press -12650,Cat Cross Their Graves (Joe Grey #10),Shirley Rousseau Murphy,4.32,0060578114,9780060578114,eng,385,504,28,9/27/2005,Avon -12651,The Social Contract,Jean-Jacques Rousseau/Maurice Cranston,3.77,0143037498,9780143037491,eng,168,29090,451,5/30/2006,Penguin -12652,Cat in the Dark (Joe Grey #4),Shirley Rousseau Murphy,4.25,0061059471,9780061059476,en-US,320,723,36,11/3/1999,Avon -12657,The Source,James A. Michener,4.30,0375760385,9780375760389,eng,1080,34972,1149,7/9/2002,Random House Trade Paperbacks -12658,Hawaii,James A. Michener,4.20,0375760377,9780375760372,eng,1136,66298,1383,7/9/2002,Dial Press Trade Paperback -12661,Chesapeake,James A. Michener,4.18,0812970438,9780812970432,eng,1024,19174,664,9/9/2003,Dial Press -12662,Caravans,James A. Michener,4.05,0812969820,9780812969825,eng,320,4753,400,9/9/2003,Dial Press Trade Paperback -12664,Iberia,James A. Michener/Robert Vavra,3.71,0449207331,9780449207338,eng,960,2153,152,10/12/1984,Fawcett Crest Books -12665,Centennial,James A. Michener,4.24,0449452697,9780449452691,eng,1086,95,13,7/1/1989,Fawcett Books -12676,Carrie (Biblioteca de Stephen King. 102 8),Stephen King/Gregorio Vlastelica,3.96,0609810901,9780609810903,spa,288,67,3,9/4/2001,Plaza y Janes -12678,Carrie,Stephen King,3.96,9685957002,9789685957007,spa,254,28,9,4/30/2005,Debolsillo -12682,The Shining,Stephen King,4.22,0743437497,9780743437493,eng,505,1316,134,10/1/2002,Gallery Books -12683,The Shining,Stephen King/Campbell Scott,4.22,0743536991,9780743536998,eng,0,13,0,8/2/2005,Simon & Schuster Audio -12684,The Shining,Stephen King,4.22,1417618256,9781417618255,eng,505,8,2,10/1/2002,Turtleback Books -12686,Marley & Me: Life and Love with the World's Worst Dog,John Grogan,4.13,0061238228,9780061238222,en-US,306,697,158,10/31/2006,William Morrow -12691,Marley and Me: Life and Love With the World's Worst Dog,John Grogan,4.13,0739461192,9780739461198,eng,291,414947,12116,10/18/2005,William Morrow; 1ST edition -12703,Wuthering Heights,Emily Brontë/Alice Hoffman,3.85,0451529251,9780451529251,eng,322,1898,201,3/2/2004,Signet Classics -12712,Brodie's notes on Aldous Huxley's brave new world,Graham Handley,0.00,0333581296,9780333581292,eng,71,0,0,8/20/1992,Macmillan -12722,The Moon Is Down,John Steinbeck,3.90,0141185538,9780141185538,eng,144,15806,996,11/30/2000,Penguin Classics -12723,Ride the Moon Down,Terry C. Johnston,4.15,0553572822,9780553572827,en-US,576,103,4,7/6/1999,Bantam -12724,Drawing Down the Moon: Witches Druids Goddess-Worshippers and Other Pagans in America,Margot Adler,4.02,0143038192,9780143038191,eng,672,6509,209,10/3/2006,Penguin Books -12725,Sing Down the Moon,Scott O'Dell,3.74,0440979757,9780440979753,eng,124,6548,356,3/26/1997,Laurel Leaf Library -12733,Light in August,William Faulkner,3.94,067964248X,9780679642480,eng,460,329,35,4/2/2002,Modern Library -12738,The Transit of Venus,Shirley Hazzard,3.89,1860491812,9781860491818,eng,352,1681,276,10/5/1995,Virago -12746,Kingsblood Royal,Sinclair Lewis/Charles R. Johnson,3.97,0375756868,9780375756863,en-US,352,77,11,4/10/2001,Modern Library -12749,Swann's Way (In Search of Lost Time #1),Marcel Proust/Lydia Davis,4.14,0142437964,9780142437964,eng,492,30493,1767,11/30/2004,Penguin Classics -12753,Swann's Way (Remembrance of Things Past #1),Marcel Proust/C.K. Scott Moncrieff/Elizabeth Dalton,4.14,1593083777,9781593083779,en-US,466,17,9,10/1/2005,Barnes & Noble Books -12754,Swann's Way (Remembrance of Things Past #1),Marcel Proust/C.K. Scott Moncrieff,4.14,1414243677,9781414243672,eng,380,1,0,1/1/2005,IndyPublish.com -12769,Lady of the Lake,Elizabeth Mayne,3.27,0373289804,9780373289806,eng,304,70,6,7/25/1997,Harlequin Historical -12770,A Kiss Before Dying,Ira Levin/Otto Penzler,3.94,0786711647,9780786711642,eng,242,6548,556,4/7/2003,Carroll & Graf Publishers -12771,A Kiss Before Dying (Sweet Valley High #122),Francine Pascal/Kate William,3.67,0553566407,9780553566406,eng,197,267,7,2/1/1996,Bantam -12783,The Satanic Verses,Salman Rushdie,3.71,014011890X,9780140118902,eng,560,11,0,9/26/1988,Penguin Books Ltd -12786,The City of Falling Angels,John Berendt,3.54,0143036939,9780143036937,eng,414,12741,1494,9/26/2006,Penguin Books -12787,Falling Angel,William Hjortsberg/Ridley Scott/James Crumley,3.92,1933618086,9781933618081,eng,302,2243,220,11/1/2006,Millipede Press -12789,Falling Angels (Luc Actar #1),Melissa M. Garcia,4.67,0595377106,9780595377107,eng,216,1,0,2/14/2006,iUniverse -12793,The Collaborator: The Trial and Execution of Robert Brasillach,Alice Kaplan,3.90,0226424154,9780226424156,eng,308,77,14,11/1/2001,University of Chicago Press -12803,Ulysses,James Joyce/Craig Raine,3.73,0679455132,9780679455134,eng,1084,250,38,10/28/1997,Everyman's Library -12807,The Crazed,Ha Jin,3.50,0434010537,9780434010530,eng,336,15,1,10/3/2002,Arrow (A Division of Random House Group) -12812,Chickenhawk: Back in the World Again: Life After Vietnam,Robert Mason,4.09,0140158766,9780140158762,eng,400,175,17,5/1/1994,Penguin Books -12817,Nuns and Soldiers,Iris Murdoch/Karen Armstrong,3.93,0142180092,9780142180099,eng,512,503,34,7/30/2002,Penguin Classics -12820,Sir Gawain And The Green Knight,Michael Morpurgo/Michael Foreman,3.94,0744586461,9780744586466,eng,120,21,5,11/1/2004,Walker -12822,Cliffs Notes on Wiesel's Night,Maryam Riess,3.40,0822008939,9780822008934,eng,80,5,1,8/22/1996,Cliffs Notes -12823,The Night Trilogy: Night Dawn the Accident,Elie Wiesel/Marion Wiesel,4.29,0374521409,9780374521400,eng,318,2439,255,9/1/1987,Hill and Wang -12827,Strong Motion,Jonathan Franzen,3.52,184115749X,9781841157498,eng,528,3996,278,6/1/2007,Fourth Estate (GB) -12828,How to Be Alone,Jonathan Franzen,3.59,0007153589,9780007153589,eng,306,336,33,7/2/2007,Harper Perennial -12829,The Twenty-Seventh City,Jonathan Franzen,3.12,0312420145,9780312420147,eng,528,3621,330,9/8/2001,Picador USA -12840,Second Ring of Power,Carlos Castañeda,4.03,0671732471,9780671732479,en-US,328,2779,33,4/1/1991,Washington Square Press -12841,The Active Side of Infinity,Carlos Castañeda,4.16,006092960X,9780060929602,eng,288,1952,70,12/22/1999,Harper Perennial -12842,Journey to Ixtlan,Carlos Castañeda,4.12,0671732463,9780671732462,eng,272,8541,257,2/1/1991,Washington Square Press -12843,The Wheel of Time: The Shamans of Mexico Their Thoughts About Life Death & the Universe,Carlos Castañeda,4.03,074341280X,9780743412803,eng,304,956,37,1/1/2001,Washington Square Press -12844,Power of Silence,Carlos Castañeda,4.22,067173248X,9780671732486,eng,288,2253,53,6/1/1991,Washington Square Press -12845,Tales of Power,Carlos Castañeda,4.13,0671732528,9780671732523,en-US,304,4657,89,1/1/1991,Washington Square Press -12846,Fire from Within,Carlos Castañeda,4.14,0671732501,9780671732509,en-US,304,2554,67,1/1/1991,Washington Square Press -12847,The Art of Dreaming,Carlos Castañeda,4.10,1855384272,9781855384279,eng,260,3618,97,2/16/2004,Element -12851,The Best Stories of Fyodor Dostoevsky,Fyodor Dostoyevsky/David Magarshack,4.26,0345481267,9780345481269,eng,352,110,6,7/26/2005,Modern Library -12852,The Best Short Stories,Fyodor Dostoyevsky/David Magarshack,4.26,0375756884,9780375756887,eng,320,2711,89,2/13/2001,Modern Library -12853,Demons,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.27,0375411224,9780375411229,eng,733,214,27,10/24/2000,Everyman's Library -12854,The Idiot,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.18,0375702245,9780375702242,eng,633,2710,294,7/8/2003,Vintage Classics -12855,Great Short Works of Fyodor Dostoevsky,Fyodor Dostoyevsky/Ronald Hingley,4.42,0060726466,9780060726461,eng,768,1330,29,7/6/2004,Harper Perennial Modern Classics -12856,The Idiot,Fyodor Dostoyevsky/Constance Garnett/Joseph Frank,4.18,1593080581,9781593080587,eng,578,442,52,1/16/2004,Barnes Noble Classics -12859,Celtic Tree Mysteries: Practical Druid Magic & Divination,Steve Blamires/Sandy Leuthner,3.92,1567180701,9781567180701,en-US,278,192,5,10/8/2002,Llewellyn Publications -12873,Rebecca,Daphne du Maurier/Sally Beauman,4.23,1844080382,9781844080380,en-US,441,179639,8119,12/1/2007,Virago Press (UK) -12876,Betraying Spinoza: The Renegade Jew Who Gave Us Modernity,Rebecca Goldstein,3.92,0805242090,9780805242096,en-US,304,536,79,5/30/2006,Schocken -12879,Shadow of the Moon (Moon #5),Rebecca York,3.79,042520961X,9780425209615,eng,336,534,25,6/6/2006,Berkley Sensation -12880,Black Lamb and Grey Falcon,Rebecca West/Christopher Hitchens,4.23,014310490X,9780143104902,eng,1181,1623,228,1/30/2007,Penguin Classics -12881,Operation Shylock: A Confession,Philip Roth,3.77,009930791X,9780099307914,eng,400,3115,188,6/16/1994,Vintage -12882,Operation Shylock. Ein Bekenntnis,Philip Roth,3.77,3446176934,9783446176935,ger,464,1,0,1/1/1994,Carl Hanser -12885,Lost in the Funhouse,John Barth,3.70,0385240872,9780385240871,eng,205,5052,305,3/1/1988,Anchor Books -12901,CliffsNotes on Faulkner's As I Lay Dying (Cliffs Notes),James Lamar Roberts/William Faulkner/CliffsNotes,3.73,0822002108,9780822002109,eng,72,10,3,3/13/1964,Cliffs Notes -12905,The Sound and the Fury As I Lay Dying Sanctuary Intruder in the Dust,William Faulkner,4.05,0706432088,9780706432084,eng,760,8,1,3/12/1988,Octopus Books -12906,CliffsNotes on Faulkner's Absalom Absalom!,James Lamar Roberts/CliffsNotes,3.12,0822001101,9780822001102,eng,64,8,1,2/28/1964,Cliffs Notes -12912,The Aeneid,Virgil/Robert Fagles/Bernard Knox,3.84,0670038032,9780670038039,eng,486,892,117,11/2/2006,Viking -12914,The Aeneid,Virgil/Robert Fitzgerald,3.84,0679729526,9780679729525,eng,442,87406,1182,6/16/1990,Vintage -12916,The Aeneid,Virgil/David West,3.84,0140449329,9780140449327,eng,290,996,96,3/27/2003,Penguin Books Ltd -12918,Aeneid,Virgil/Stanley Lombardo/W. R. Johnson,3.84,0872207315,9780872207318,eng,340,319,27,3/15/2005,Hackett Publishing Company Inc. -12919,Virgil Vol 2: Aeneid Books 7-12 Appendix Vergiliana,Virgil/G.P. Goold,4.40,0674995864,9780674995864,mul,590,583,5,1/1/2001,Harvard University Press -12922,The Castle of Otranto,Horace Walpole/E.F. Bleiler/Walter Scott,3.18,0486434125,9780486434124,eng,106,237,39,3/19/2004,Dover Publications -12923,The Castle of Otranto,Horace Walpole,3.18,0192834401,9780192834409,eng,125,16370,1211,7/16/1998,Oxford University Press -12930,Messenger (The Giver #3),Lois Lowry,3.91,0385732538,9780385732536,eng,169,93589,6654,8/22/2006,Ember -12931,Gossamer,Lois Lowry,3.90,0618685502,9780618685509,eng,144,13788,1554,4/24/2006,HMH Books for Young Readers -12932,Anastasia on Her Own (Anastasia Krupnik #5),Lois Lowry,3.90,0440402913,9780440402916,eng,160,1521,44,6/1/1986,Yearling Books -12933,Stay!: Keeper's Story,Lois Lowry/True Kelley,3.93,0440415241,9780440415244,eng,128,194,32,3/9/1999,Yearling -12936,Gathering Blue (The Giver #2),Lois Lowry,3.82,0385732562,9780385732567,eng,240,132584,9341,9/25/2000,Delacorte Press -12937,See You Around Sam! (Sam Krupnik #3),Lois Lowry/Diane deGroat,3.71,0440414008,9780440414001,eng,128,244,15,3/9/1998,Yearling -12938,King Lear,William Shakespeare,3.91,074348276X,9780743482769,eng,338,154195,2806,1/1/2004,Simon Schuster -12939,King Lear,William Shakespeare/Roma Gill,3.91,019832054X,9780198320548,eng,192,269,24,12/12/2002,Oxford University Press -12941,King Lear,William Shakespeare/R.A. Foakes,3.91,1903436591,9781903436592,eng,455,1796,98,5/9/1997,Bloomsbury Arden Shakespeare -12944,King Lear,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.91,0743484959,9780743484954,eng,384,215,11,8/1/2005,Simon Schuster -12947,The Turn of the Screw (Norton Critical Edition),Henry James/Deborah Esch/Jonathan Warren,3.43,039395904X,9780393959048,eng,271,790,93,7/17/1999,W. W. Norton & Co. -12950,The Turn of the Screw and The Aspern Papers,Henry James/Anthony Curtis,3.79,0141439904,9780141439907,eng,272,6769,270,6/26/2003,Penguin Books -12951,The Turn of the Screw and Other Short Fiction,Henry James/R.W.B. Lewis,3.80,0553210599,9780553210590,eng,527,3083,134,11/1/2008,Bantam Classic -12954,The Turn of the Screw,Henry James/Peter G. Beidler,3.43,0312406916,9780312406912,eng,386,616,77,11/6/2003,Bedford Books -12958,Much Ado about Nothing,William Shakespeare/Mary Berry/Michael Clamp,4.07,052161872X,9780521618724,eng,196,128,12,9/1/2005,Cambridge University Press -12960,Much Ado About Nothing,William Shakespeare/David L. Stevenson,4.07,0451526813,9780451526816,eng,166,1230,62,7/1/1998,Signet Classic -12961,Much Ado about Nothing (Oxford School Shakespeare),William Shakespeare/Roma Gill,4.07,0198320566,9780198320562,eng,160,13,2,12/12/2002,Oxford University Press USA -12964,Much Ado about Nothing,William Shakespeare/Samuel West/Amanda Root/Arkangel Cast,4.07,1932219250,9781932219258,eng,18,38,7,11/30/2005,BBC Audiobooks America -12965,Much Ado about Nothing,William Shakespeare/F.H. Mares,4.07,0521532507,9780521532501,eng,188,73,12,4/21/2003,Cambridge University Press -12967,Winter's Tale,Mark Helprin,3.50,0156031191,9780156031196,eng,748,21851,3510,6/1/2005,Mariner Books -12969,Winter's Tales,Isak Dinesen/Karen Blixen,3.90,0679743340,9780679743347,eng,320,1464,100,6/1/1993,Vintage -12975,Twelfth Night,William Shakespeare/Alan Durband,3.98,0812036042,9780812036046,eng,256,157,18,8/1/1996,Barrons Educational Series -12980,Twelfth Night,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.98,0743484967,9780743484961,eng,222,188,14,8/1/2005,Simon Schuster -12982,Twelfth Night,William Shakespeare,3.98,0141014709,9780141014708,en-GB,240,199,21,4/7/2005,Penguin Classics -12984,Tempest (Star Wars: Legacy of the Force #3),Troy Denning,3.82,0345477529,9780345477521,eng,400,5704,94,11/28/2006,Del Rey -12990,Red: Passion and Patience in the Desert,Terry Tempest Williams,4.02,0375725180,9780375725180,eng,288,1309,107,10/8/2002,Vintage -12993,Hamlet The Texts of 1603 and 1623,William Shakespeare/Neil Taylor,4.27,1904271553,9781904271550,eng,384,15,0,3/22/2006,Bloomsbury Arden Shakespeare -12994,Hamlet's Dresser: A Memoir,Bob Smith,3.74,0684852705,9780684852706,eng,288,375,63,2/1/2003,Scribner -12995,The Hamlet,William Faulkner,3.87,0679736530,9780679736530,eng,409,4208,216,10/29/1991,Vintage International -12996,Othello,William Shakespeare,3.89,0743477553,9780743477550,eng,314,273070,4265,1/1/2004,Simon Schuster -12999,Othello,William Shakespeare/David Threlfall/Don Warrington/Anne-Marie Duff/Arkangel Cast,3.89,1932219269,9781932219265,eng,3,48,3,9/15/2005,Audio Partners -13002,Othello,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.89,0743482824,9780743482820,eng,368,493,25,8/1/2004,Simon Schuster -13006,Julius Caesar,William Shakespeare/Roma Gill,3.68,0198320272,9780198320272,eng,128,138685,2595,10/17/2002,Oxford University Press USA -13008,Julius Caesar,William Shakespeare/John Bowe/Michael Feast/Adrian Lester,3.68,1932219161,9781932219166,eng,3,53,3,6/1/2005,Audio Partners -13011,Julius Caesar,William Shakespeare/Marvin Spevack/Marga Munkelt,3.68,0521535131,9780521535137,eng,226,51,2,5/24/2004,Cambridge University Press -13012,Julius Caesar,William Shakespeare/SparkNotes,3.68,1586638475,9781586638474,eng,256,769,78,7/3/2003,SparkNotes -13018,Cliffsnotes on Shakespeare's Henry IV Part 1,James K. Lowers/William Shakespeare/CliffsNotes,3.88,0822000237,9780822000235,eng,80,17,0,6/15/1960,Cliffs Notes -13020,King Henry IV Part 1,William Shakespeare/David Scott Kastan,3.83,1904271359,9781904271352,eng,398,17782,493,11/7/2002,Bloomsbury Arden Shakespeare -13023,Alice in Wonderland,Lewis Carroll/Jane Carruth/Rene Cloke,4.03,0517223627,9780517223628,eng,92,364782,5234,9/7/2004,Gramercy Books -13028,Alice In Wonderland,Lewis Carroll/John Tenniel,4.02,0439291496,9780439291491,eng,160,143,18,9/1/2001,Scholastic Paperbacks -13033,The Alexandria Quartet (The Alexandria Quartet #1-4),Lawrence Durrell,4.17,0140153179,9780140153170,eng,884,10050,294,12/1/1991,Penguin Books -13037,Justine (The Alexandria Quartet #1),Lawrence Durrell,3.89,0140153195,9780140153194,eng,253,5428,542,7/12/1991,Penguin Books -13039,Clea (The Alexandria Quartet #4),Lawrence Durrell,4.18,0140153225,9780140153224,en-US,288,1896,124,7/12/1991,Penguin Books -13040,Siddhartha,Hermann Hesse,4.02,0613572742,9780613572743,eng,132,514,40,2/2/1993,Turtleback Books -13042,Kate Vaiden,Reynolds Price,3.91,0684846942,9780684846941,eng,306,1345,114,5/29/1998,Scribner -13050,The Social Contract and The First and Second Discourses,Jean-Jacques Rousseau/Susan Dunn/Gita May/Robert N. Bellah/David Bromwich/Conor Cruise O'Brien,3.83,0300091419,9780300091410,eng,328,63,2,2/8/2002,Yale University Press -13060,Nature Girl,Carl Hiaasen,3.63,0307262995,9780307262998,eng,306,19245,1533,11/14/2006,Alfred A. Knopf -13061,Stormy Weather,Carl Hiaasen,3.95,0446677167,9780446677165,en-US,388,12609,696,3/1/2001,Grand Central Publishing -13062,Skin Tight (Mick Stranahan #1),Carl Hiaasen,3.96,0446695696,9780446695695,en-US,420,14475,571,4/12/2005,Warner Books (NY) -13063,Basket Case,Carl Hiaasen,3.82,0446695645,9780446695640,eng,400,13125,743,2/1/2005,Grand Central Publishing -13064,Tourist Season,Carl Hiaasen,3.94,0446695718,9780446695718,eng,404,15459,669,5/9/2005,Warner Books (NY) -13066,Sick Puppy,Carl Hiaasen,3.89,0446695688,9780446695688,eng,464,20070,1047,4/12/2005,Grand Central Publishing -13067,Flush,Carl Hiaasen,3.88,0375821821,9780375821820,eng,263,23811,2348,9/13/2005,Alfred A. Knopf Books for Young Readers -13068,Double Whammy (Skink #1),Carl Hiaasen,3.93,0446695661,9780446695664,eng,404,11050,624,3/1/2005,Grand Central Publishing -13069,Naked Came the Manatee,Carl Hiaasen/Elmore Leonard/Dave Barry/James W. Hall/Edna Buchanan/Les Standiford/Paul Levine/Brian Antoni/Tananarive Due/John Dufresne/Vicki Hendricks/Carolina Hospital/Evelyn Mayerson,3.48,0449001245,9780449001240,eng,208,2303,161,1/20/1998,Ballantine Books -13074,Strip Tease,Carl Hiaasen,3.84,044669567X,9780446695671,eng,464,12371,536,3/1/2005,Grand Central Publishing -13075,Basket Case,Carl Hiaasen,3.82,044661193X,9780446611930,eng,413,333,29,1/1/2003,Grand Central Publishing -13076,A Carl Hiaasen Collection: Stormy Weather Tourist Season and Strip Tease,Carl Hiaasen/Edward Asner,4.45,0375410465,9780375410468,eng,9,44,1,1/4/2000,Random House Audio -13079,Skinny Dip (Mick Stranahan #2),Carl Hiaasen,3.81,0446615129,9780446615129,eng,496,33459,2602,5/1/2006,Grand Central Publishing -13083,Hoot,Carl Hiaasen,3.82,0440421705,9780440421702,eng,292,85404,3692,3/14/2006,Yearling Books -13086,Suburban Nation: The Rise of Sprawl and the Decline of the American Dream,Andrés Duany/Elizabeth Plater-Zyberk/Jeff Speck,4.08,0865476063,9780865476066,eng,320,1980,154,4/16/2001,North Point Press -13100,The Bible Cure For Diabetes,Don Colbert,3.84,0884196488,9780884196488,eng,96,21,1,8/19/1999,Siloam -13104,The Celestine Prophecy: A Pocket Guide to the Nine Insights,James Redfield,3.87,0446912069,9780446912068,eng,68,1256,100,12/2/2005,Warner Books (NY) -13105,The Tenth Insight: Holding the Vision (Celestine Prophecy #2),James Redfield,3.64,0446674575,9780446674577,eng,256,9889,337,12/1/1998,Grand Central Publishing -13106,The Celestine Prophecy,James Redfield/Lou Diamond Phillips,3.64,1594831955,9781594831959,en-US,0,64,10,2/16/2006,Grand Central Publishing -13107,The Celestine Prophecy: An Experiential Guide,James Redfield,3.84,0553503707,9780553503708,eng,304,120,11,7/6/1995,Bantam -13113,Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values,Robert M. Pirsig,3.77,0688052304,9780688052300,eng,412,424,47,6/1/1979,Quill -13119,The Dark Side Of Genius: The Life Of Alfred Hitchcock,Donald Spoto,3.83,030680932X,9780306809323,en-US,608,990,97,8/30/1999,Da Capo Press -13121,Enchantment: The Life of Audrey Hepburn,Donald Spoto,3.87,0307237583,9780739474792,eng,352,2703,267,4/2/2007,Harmony -13122,Marilyn Monroe: The Biography,Donald Spoto,4.03,0815411839,9780815411833,eng,752,1396,99,7/17/2001,Cooper Square Publishers -13128,Cross (Alex Cross #12),James Patterson,4.00,0316159794,9780316159791,eng,393,48095,1633,11/13/2006,Little Brown and Company -13130,Judge & Jury,James Patterson/Andrew Gross,4.00,0316013935,9780316013932,eng,419,41805,831,7/31/2006,Little Brown and Company -13131,The 6th Target (Women's Murder Club #6),James Patterson/Maxine Paetro,4.04,0316014796,9780316014793,eng,390,47196,1464,5/8/2007,Little Brown and Company -13133,The Quickie,James Patterson/Michael Ledwidge,3.83,0316117366,9780316117364,eng,357,32963,2132,7/2/2007,Little Brown and Company -13134,You've Been Warned,James Patterson/Howard Roughan,3.53,0316014508,9780316014502,eng,374,18058,1519,9/10/2007,Little Brown and Company -13136,2nd Chance (Women's Murder Club #2),James Patterson/Andrew Gross,4.04,0446696633,9780446696630,eng,400,78780,2118,5/20/2005,Grand Central Publishing -13137,1st to Die (Women's Murder Club #1),James Patterson,4.08,0446696617,9780446696616,eng,424,269826,5220,5/20/2005,Grand Central Publishing -13138,Season of the Machete,James Patterson,3.25,0446600474,9780446600477,eng,341,5512,227,4/1/1995,Vision -13139,School's Out—Forever (Maximum Ride #2),James Patterson,4.15,0316155594,9780316155595,eng,409,103221,2689,5/23/2006,Little Brown and Company -13140,Jack & Jill (Alex Cross #3),James Patterson,3.96,0446692654,9780446692656,eng,466,58414,1191,8/1/2003,Grand Central Publishing -13141,The Midnight Club,James Patterson,3.82,0446606383,9780446606387,eng,368,10970,322,6/1/1999,Vision -13142,Cat & Mouse (Alex Cross #4),James Patterson,3.98,0446692646,9780446692649,eng,432,242,15,8/1/2003,Grand Central Publishing -13143,Pop Goes the Weasel (Alex Cross #5),James Patterson,4.00,0446608815,9780446608817,eng,461,52093,985,10/1/2000,TIme Warner Books -13144,Roses Are Red (Alex Cross #6),James Patterson,4.04,0747266999,9780747266990,eng,421,220,19,6/25/2001,Headline -13145,Along Came a Spider (Alex Cross #1),James Patterson,4.11,0446692638,9780446692632,eng,449,369267,4011,8/1/2003,Grand Central Publishing -13146,Black Friday,James Patterson,3.68,0446609323,9780446609326,eng,480,9714,220,4/1/2000,Vision -13147,Honeymoon (Honeymoon #1),James Patterson/Howard Roughan,3.83,0446613371,9780446613378,eng,406,34087,1809,1/1/2007,Grand Central Publishing -13148,Kiss the Girls (Alex Cross #2),James Patterson,3.96,0446677388,9780446677387,eng,481,297211,2943,7/1/2000,Grand Central Publishing -13149,The Thomas Berryman Number,James Patterson,2.86,0446600458,9780446600453,eng,272,4320,307,4/1/1996,Grand Central Publishing -13151,London Bridges (Alex Cross #10),James Patterson,3.94,0446613355,9780446613354,eng,403,36334,905,10/1/2005,Vision -13152,The Angel Experiment (Maximum Ride #1),James Patterson,4.08,0446617792,9780446617796,eng,445,187892,7624,5/5/2006,Grand Central Publishing -13155,3rd Degree (Women's Murder Club #3),James Patterson/Andrew Gross,4.02,0446696641,9780446696647,eng,352,268,13,5/20/2005,Grand Central Publishing -13157,The Jester,James Patterson/Andrew Gross,3.80,0755300203,9780755300204,eng,548,16563,849,3/1/2004,Headline -13158,See How They Run,James Patterson,3.84,1568654235,9781568654232,eng,320,48,1,7/8/1997,Doubleday Books -13161,Miracle on the 17th Green (Travis McKinley #1),James Patterson/Peter de Jonge,3.68,0316693359,9780316693356,eng,160,3733,320,5/5/1999,Little Brown and Company -13162,When the Wind Blows (When the Wind Blows #1),James Patterson,3.93,0446676438,9780446676434,eng,416,42701,1337,4/1/2000,Grand Central Publishing -13164,SantaKid,James Patterson/Michael Garland,3.88,0316000612,9780316000611,eng,48,862,53,11/1/2004,Jimmy Patterson -13173,A Little Prairie House,Laura Ingalls Wilder/Renée Graef,4.19,0064435261,9780064435260,eng,32,1561,45,3/21/1999,HarperCollins -13177,Private Parts,Howard Stern,3.77,0671009443,9780671009441,eng,660,3878,151,3/1/1997,Pocket Books -13180,The Private Parts of Women,Lesley Glaister,3.80,0747526036,9780747526032,eng,288,22,3,9/1/2002,Bloomsbury Publishing PLC -13194,Green Arrow Vol. 1: Quiver,Kevin Smith/Phil Hester/Ande Parks,4.07,1563899655,9781563899652,en-US,232,5299,131,12/16/2008,DC Comics -13196,Quiver,Stephanie Spinner,3.51,0440238196,9780440238195,en-US,177,837,95,4/12/2005,Laurel-Leaf Books -13199,A Quiver Full of Arrows,Jeffrey Archer,3.78,0312937695,9780312937690,eng,288,9214,179,8/30/2005,St. Martin's Paperbacks -13203,Celebrations: Rituals of Peace and Prayer,Maya Angelou,4.13,1400066107,9781400066100,eng,128,748,105,10/24/2006,Random House -13206,The Collected Autobiographies of Maya Angelou,Maya Angelou,4.63,0679643257,9780679643258,eng,1184,991,55,9/21/2004,Modern Library -13210,Wouldn't Take Nothing for My Journey Now,Maya Angelou,4.27,0553380176,9780553380170,eng,127,7423,319,5/12/1997,Bantam -13211,And Still I Rise,Maya Angelou/Linda Sunshine/Diego Rivera,4.42,0375505962,9780375505966,eng,54,3720,240,8/7/2001,Random House -13215,Life Doesn't Frighten Me,Maya Angelou/Jean-Michel Basquiat/Sara Jane Boyers,4.41,1556702884,9781556702884,eng,32,1246,164,2/6/1996,Harry N. Abrams -13228,Cumbres borrascosas,Emily Brontë,3.85,8497644743,9788497644747,spa,384,156,28,5/28/2006,Edimat Libros -13237,Dreaming in Pictures: The Photography,Lewis Carroll/Douglas R. Nickel,4.01,0300091699,9780300091694,eng,172,104,6,8/11/2002,Yale University Press -13238,Lewis Carroll's Jabberwocky: A Book of Brillig Dioramas,Lewis Carroll/Graeme Base,4.14,0810935201,9780810935204,eng,14,31,2,3/30/1996,Harry N. Abrams -13241,The Collected Short Stories of Maxim Gorky,Maxim Gorky/Avrahm Yarmolinsky/Moura Budberg,3.96,0806510757,9780806510750,eng,404,883,16,8/18/1988,Citadel Press -13254,Name Dropping,Jane Heller,3.52,0312978332,9780312978334,eng,323,701,53,3/15/2001,St. Martin's Press -13257,Many Luscious Lollipops: A Book About Adjectives,Ruth Heller,4.06,0698116410,9780698116412,en-US,48,322,41,2/23/1998,Puffin Books -13258,What Was She Thinking? [Notes on a Scandal],Zoë Heller,3.71,0312421990,9780312421991,eng,258,13674,1166,6/1/2004,Picador -13260,Night of Long Shadows (Eberron: Inquisitives #2),Paul Crilley,3.65,0786942703,9780786942701,en-US,306,152,14,5/8/2007,Wizards of the Coast -13270,Poetics,Aristotle/Malcolm Heath,3.82,0140446362,9780140446364,eng,144,12610,486,9/26/1996,Penguin Classics -13275,Poetics of Music in the Form of Six Lessons,Igor Stravinsky/George Seferis/Arthur Knodel/Ingolf Dahl,4.11,0674678567,9780674678569,eng,160,988,31,2/26/1970,Harvard University Press -13276,An Introduction to the Old Testament Poetic Books,C. Hassell Bullock,3.68,0802441416,9780802441416,eng,392,39,5,8/8/1988,Moody Publishers (Chicago) -13285,Mondrian,John Milner/Piet Mondrian,3.73,0714831670,9780714831671,eng,235,26,1,4/1/1995,Phaidon Press -13310,Writings on Art,Mark Rothko/Miguel López-Remiro,3.84,0300114400,9780300114409,eng,192,102,8,4/28/2006,Yale University Press -13314,The Legacy of Mark Rothko,Lee Seldes,3.87,0306807254,9780306807251,eng,403,36,5,8/22/1996,Da Capo Press -13320,Mark Rothko,Diane Waldman/Bernard Malamud,4.04,0810915871,9780810915879,eng,296,45,2,9/1/1978,Harry N. Abrams -13323,Mark Rothko 1903 1970,Diane Waldman,4.04,0500282757,9780500282755,eng,296,3,0,5/14/2001,Thames & Hudson Ltd -13329,A World of Art,Henry M. Sayre,3.73,0132221861,9780132221863,eng,592,56,1,12/22/2006,Prentice Hall -13336,Olympian Odes. Pythian Odes,Pindar/William H. Race,4.09,0674995643,9780674995642,mul,416,59,5,4/15/1997,Harvard University Press -13337,The Odes,Pindar/Cecil Maurice Bowra/Daniel C. Snell/Dawson William Turner/Maehler/Abraham Moore,3.89,014044209X,9780140442090,eng,256,1052,23,9/30/1982,Penguin Books -13342,The Odes and Selected Fragments,Pindar/G.S. Conway/Richard Stoneman,3.89,0460876740,9780460876742,eng,352,7,1,3/1/1998,Everyman's Library -13344,Nemean Odes. Isthmian Odes. Fragments,Pindar/William H. Race,4.19,0674995341,9780674995345,mul,480,35,1,4/15/1997,Harvard University Press -13345,Sabriel (Abhorsen #1),Garth Nix,4.17,0060575816,9780060575816,en-US,311,1312,162,8/17/2004,Eos -13347,Euripides 3: Alcestis/Daughters of Troy/The Phoenician Women/Iphigenia at Aulis/Rhesus,Euripides/David R. Slavitt/Smith Palmer Bovie/Fred Chappell/Mark Rudman/Elaine Terranova/Richard Elman/Katharine Washburn/George D. Economou,3.88,0812216504,9780812216509,eng,392,7,1,6/1/1998,University of Pennsylvania Press -13357,Eragon: Prima Official Game Guide,Prima Publishing,3.98,0761555528,9780761555520,eng,176,120,1,11/14/2006,Prima Games -13360,Battlefield of the Mind: Winning the Battle in Your Mind,Joyce Meyer,4.34,0446691097,9780446691093,en-US,288,27204,698,10/1/2002,FaithWords -13365,A Lady At Last (deWarenne Dynasty #7),Brenda Joyce,4.06,0373771371,9780373771370,eng,379,1549,87,11/21/2006,Hqn -13368,James Joyce's Ulysses,Stuart Gilbert,4.17,0394700139,9780394700137,eng,405,1991,92,1/12/1955,Vintage -13374,A Complicated Kindness,Miriam Toews,3.65,1582433224,9781582433226,eng,253,17963,1023,8/17/2005,Counterpoint LLC -13375,A Complicated Kindness (Bookclub-In-A-Box),Marilyn Herbert/Miriam Toews,4.00,1897082274,9781897082270,eng,80,39,1,8/30/2006,Bookclub-In-A-Box -13379,Race of Scorpions (The House of Niccolo #3),Dorothy Dunnett,4.42,039457107X,9780394571072,eng,534,21,1,5/5/1990,Knopf -13382,Vinyl Cafe Odd Jobs,Stuart McLean,4.56,096830317X,9780968303177,eng,3,61,1,6/15/2005,Canadian Broadcasting Corporation (CBC Audio) -13383,Vinyl Cafe Coast to Coast Story Service,Stuart McLean,4.45,0968303188,9780968303184,eng,3,51,1,7/15/2005,Canadian Broadcasting Corporation (CBC Audio) -13388,Vinyl Cafe Diaries (Vinyl Cafe #4),Stuart McLean,4.19,0670044369,9780670044368,eng,302,924,59,11/28/2003,Penguin Books Canada -13397,Checkmate (Tom Clancy's Splinter Cell #3),David Michaels/Tom Clancy,3.94,0425212785,9780425212783,eng,402,3896,65,11/7/2006,Berkley -13398,Operation Barracuda (Tom Clancy's Splinter Cell #2),David Michaels/Raymond Benson/Tom Clancy,4.02,0425204227,9780425204221,eng,326,5062,79,11/1/2005,Berkley -13399,Splinter Cell (Tom Clancy's Splinter Cell #1),David Michaels/Raymond Benson/Tom Clancy,3.85,0425201686,9780425201688,eng,355,10329,193,12/6/2004,Berkley -13413,Dark Visions,Douglas E. Winter/Dan Simmons/Stephen King/George R.R. Martin,3.89,0575402903,9780575402904,en-US,381,155,17,8/10/2000,Indigo -13414,Ancilla to the Pre-Socratic Philosophers,Kathleen Banks Freeman/Hermann Alexander Diels,4.25,0674035011,9780674035010,eng,172,46,7,8/8/2003,Harvard University Press (Cambridge) -13421,The Presocratics,Philip Ellis Wheelwright,4.04,002426640X,9780024266408,en-US,352,201,12,1/11/1966,Prentice Hall/Library of Liberal Arts -13422,The Presocratic Philosophers,Geoffrey S. Kirk/John Earle Raven/Malcolm Schofield,4.25,0521274559,9780521274555,eng,518,692,26,12/29/1983,Cambridge University Press -13423,Presocratic Philosophy: A Very Short Introduction,Catherine Osborne,3.58,0192840940,9780192840943,eng,144,205,24,9/16/2004,Oxford University Press USA -13424,The Presocratic Philosophers,Jonathan Barnes/Ted Honderich,4.14,0415050790,9780415050791,eng,728,68,3,9/16/1982,Routledge -13425,The First Philosophers: The Presocratics and Sophists,Robin Waterfield/Anaximander/Anaximenes/Empedocles/Gorgias of Leontini/Heraclitus/Parmenides/Protagoras/Pythagoras/Thales/Thrasymachus/Zeno of Elea,3.95,0192824546,9780192824547,eng,400,356,17,11/30/2000,Oxford University Press -13440,Skeleton Crew,Stephen King,3.96,0751504386,9780751504385,eng,612,97092,1186,5/13/1993,Warner Books -13442,Night Shift,Stephen King,4.00,0385129912,9780385129916,eng,344,486,56,10/1/1993,Doubleday Books -13444,The Talisman,Stephen King/Peter Straub,4.13,0670691992,9780670691999,eng,646,1259,131,11/8/1984,Viking; G. P. Putnam & Sons -13446,El retrato de Rose Madder,Stephen King/Bettina Blanch Tyroller,3.70,0307376583,9780307376589,spa,496,218,30,10/3/2006,Debolsillo -13448,The Dark Half,Stephen King,3.77,5550707004,9785550707005,eng,431,103,16,11/1/1989,Viking Books -13449,La Milla Verde,Stephen King/María Eugenia Ciocchini Suárez,4.44,0743233603,9780743233606,spa,448,9,1,3/26/2002,Fireside Books -13451,Storm of the Century,Stephen King,3.92,067103264X,9780671032647,eng,376,18255,266,2/1/1999,Pocket -13460,Girls Think of Everything: Stories of Ingenious Inventions by Women,Catherine Thimmesh/Melissa Sweet,4.15,0618195637,9780618195633,eng,64,906,171,3/11/2002,HMH Books for Young Readers -13462,How Dogs Think: What the World Looks Like to Them and Why They Act the Way They Do,Stanley Coren,3.99,0743222334,9780743222334,en-US,368,693,58,6/6/2005,Atria Books -13463,The How to Think Like Leonardo da Vinci Workbook: Your Personal Companion to How to Think Like Leonardo da Vinci,Michael J. Gelb,3.85,0440508827,9780440508823,eng,288,327,16,6/15/1999,Dell -13467,Brit-Think Ameri-Think: A Transatlantic Survival Guide,Jane Walmsley,3.26,0142001341,9780142001349,eng,160,269,40,2/25/2003,Penguin Books -13469,What You Think of Me Is None of My Business,Terry Cole-Whittaker,4.10,051509479X,9780515094794,en-US,208,203,25,4/1/1988,Berkley Books -13470,Think on These Things,Jiddu Krishnamurti/D. Rajagopal,4.36,0060916095,9780060916091,eng,258,2509,137,10/11/1989,HarperOne -13484,Think Like a Cat: How to Raise a Well-Adjusted Cat—Not a Sour Puss,Pam Johnson-Bennett,4.06,0965013014,9780965013017,eng,413,543,69,1/24/2000,Penguin Books -13485,Think Like a Guy: How to Get a Guy by Thinking Like One,Giuliana DePandi,3.15,0312354371,9780312354374,en-US,172,115,23,6/27/2006,St. Martin's Griffin -13486,How to Think Theologically,Howard W. Stone/James O. Duke,3.67,0800638182,9780800638184,en-US,142,235,22,1/1/2006,Fortress Press -13487,JoJo's Bizarre Adventure Vol. 6 (Stardust Crusaders #6),Hirohiko Araki,4.36,1421506556,9781421506555,eng,208,309,7,12/5/2006,VIZ Media -13488,JoJo's Bizarre Adventure Vol. 4 (Stardust Crusaders #4),Hirohiko Araki,4.45,142150653X,9781421506531,eng,208,450,8,6/6/2006,VIZ Media -13489,JoJo's Bizarre Adventure Vol. 5 (Stardust Crusaders #5),Hirohiko Araki,4.41,1421506548,9781421506548,eng,208,363,5,9/5/2006,VIZ Media -13490,JoJo's Bizarre Adventure Vol. 7 (Stardust Crusaders #7),Hirohiko Araki,4.42,1421510782,9781421510781,eng,208,339,5,4/3/2007,VIZ Media -13492,Jojo's Bizarre Adventure Tome 4: Dans la salle du dragon à deux têtes (Phantom Blood #4),Hirohiko Araki,3.97,2290318043,9782290318041,fre,180,129,3,4/29/2002,J'ai Lu -13493,JoJo's Bizarre Adventure Vol. 8 (Stardust Crusaders #8),Hirohiko Araki,4.46,1421510790,9781421510798,eng,208,303,5,8/7/2007,VIZ Media -13494,Jojo's Bizarre Adventure Tome 17: L'Amoureux terrible (Stardust Crusaders #5),Hirohiko Araki/Hirohiko Araki,4.41,2290328308,9782290328309,fre,202,2,1,5/23/2003,J'ai lu -13495,Jojo's Bizarre Adventure Tome 6: Jojo contre la forme de vie ultime (Battle Tendency #1),Hirohiko Araki,4.18,2290318493,9782290318492,fre,198,122,2,6/26/2002,J'ai lu -13500,Fevre Dream,George R.R. Martin,3.86,067145577X,9780671455774,eng,350,127,25,1/1/1982,Poseidon Press -13501,The Hedge Knight (The Tales of Dunk and Egg #1),Ben Avery/Mike S. Miller/George R.R. Martin/Mike Crowell,4.14,097640110X,9780976401100,eng,164,15977,415,2/23/2005,Dabel Brothers Publishing -13504,A Clash of Kings (A Song of Ice and Fire #2),George R.R. Martin/Roy Dotrice,4.41,073930870X,9780739308707,eng,0,113,12,2/17/2004,Random House Audio -13505,Tuf Voyaging,George R.R. Martin,4.10,1592220045,9781592220045,en-US,448,62,7,11/10/2004,Meisha Merlin Publishing -13506,Jack of Kinrowan: Jack the Giant-Killer / Drink Down the Moon,Charles de Lint,4.12,0312869592,9780312869595,eng,412,3685,95,9/5/2000,St. Martins Press -13508,Lies My Teacher Told Me: Everything Your History Textbook Got Wrong,James W. Loewen,3.96,156584100X,9781565841000,eng,384,402,55,8/4/1995,The New Press -13509,Lies My Teacher Told Me about Christopher Columbus: What Your History Books Got Wrong,James W. Loewen,4.00,1565840089,9781565840089,eng,48,227,15,10/1/2006,New Press -13517,C.G. Jung and Hermann Hesse: A Book of Two Friendships,Miguel Serrano,4.02,3856305580,9783856305581,eng,142,405,21,1/1/1997,Daimon Verlag -13519,The Journey to the East,Hermann Hesse/Hilda Rosner,3.70,0312421680,9780312421687,eng,128,8071,360,2/1/2003,Picador -13521,Son of a Witch (The Wicked Years #2),Gregory Maguire/Douglas Smith/Jelena Bojić,3.47,0060747226,9780060747220,eng,352,52323,3023,9/26/2006,William Morrow Paperbacks -13529,March,Geraldine Brooks,3.75,0143036661,9780143036661,eng,280,49145,5344,1/31/2006,Penguin -13530,Foreign Correspondence: A Pen Pal's Journey from Down Under to All Over,Geraldine Brooks,3.85,0385483732,9780385483735,eng,240,1428,204,1/19/1999,Anchor Books -13536,Jojo's Bizarre Adventure Tome 1: Dio L'envahisseur (Phantom Blood #1),Hirohiko Araki,3.88,2290061247,9782290061244,fre,186,6,0,1/28/2002,J'ai Lu -13538,Jojo's Bizarre Adventure Tome 19: La Lampe Magique (Stardust Crusaders #7),Hirohiko Araki/Hirohiko Araki,4.42,2290329452,9782290329450,fre,200,3,1,7/15/2003,J'ai Lu -13540,Jojo's Bizarre Adventure Tome 14: Le Navire désert et le Singe (Stardust Crusaders #2),Hirohiko Araki/Hirohiko Araki,4.41,2290328057,9782290328057,fre,189,4,2,2/25/2003,J'ai lu -13541,Jojo's Bizarre Adventure Tome 13: Le Maléfice de Dio (Stardust Crusaders #1),Hirohiko Araki/Hirohiko Araki,4.31,2290328022,9782290328026,fre,191,4,3,1/28/2003,J'ai lu -13543,Jojo's Bizarre Adventure Tome 5: La dernière onde (Phantom Blood #5),Hirohiko Araki,4.10,229031823X,9782290318232,fre,208,121,3,5/23/2002,J'ai lu -13544,Jojo's Bizarre Adventure Tome 9: Ruée vers la falaise de la mort! (Battle Tendency #4),Hirohiko Araki,4.27,2290319368,9782290319369,fre,192,91,2,9/27/2002,J'ai Lu -13545,Jojo's Bizarre Adventure Tome 18: Death Thirteen (Stardust Crusaders #6),Hirohiko Araki/Hirohiko Araki,4.36,2290328316,9782290328316,fre,188,2,1,6/27/2003,J'ai Lu -13546,Jojo's Bizarre Adventure Tome 11: Le guerrier qui retourne au vent (Battle Tendency #6),Hirohiko Araki,4.39,2290320102,9782290320105,fre,185,94,1,11/26/2002,J'ai Lu -13547,Jojo's Bizarre Adventure Tome 16: L'Expérience du combat ! (Stardust Crusaders #4),Hirohiko Araki/Hirohiko Araki,4.45,2290328294,9782290328293,fre,207,3,1,4/29/2003,J'ai lu -13548,Jojo's Bizarre Adventure Tome 14: Le revolver est plus fort que l'épée (Stardust Crusaders #3),Hirohiko Araki/Hirohiko Araki,4.44,2290328227,9782290328224,fre,202,4,2,3/25/2003,J'ai Lu -13549,From Far Away Vol. 12,Kyoko Hikawa/Yuko Sawada/Freeman Wong,4.43,1421505398,9781421505398,eng,208,909,15,9/12/2006,VIZ Media -13550,From Far Away Vol. 13,Kyoko Hikawa/Yuko Sawada/Freeman Wong,4.48,1421505401,9781421505404,eng,208,897,17,11/14/2006,VIZ Media -13551,From Far Away Vol. 14,Kyoko Hikawa/Yuko Sawada/Freeman Wong,4.50,142150541X,9781421505411,eng,208,986,37,1/9/2007,VIZ Media -13552,Very Far Away from Anywhere Else,Ursula K. Le Guin,3.91,0152052089,9780152052089,en-US,133,1756,176,10/1/2004,HMH Books for Young Readers -13557,Vagabond Volume 20,Takehiko Inoue,4.41,1591165830,9781591165835,eng,224,513,12,3/15/2005,VIZ Media LLC -13562,彼方から 13,Kyoko Hikawa,4.48,4592175433,9784592175438,jpn,178,19,0,8/10/2002,Hakusen Sha -13568,Tsubasa: RESERVoir CHRoNiCLE Vol. 11,CLAMP/William Flanagan,4.28,0345485289,9780345485281,eng,183,2728,35,10/31/2006,Del Rey -13569,Tsubasa: RESERVoir CHRoNiCLE Vol. 3,CLAMP/William Flanagan,4.28,0345471830,9780345471833,eng,196,5616,65,10/26/2004,Del Rey -13570,Tsubasa: RESERVoir CHRoNiCLE Vol. 1,CLAMP/Anthony Gerard,4.11,0345470575,9780345470577,eng,197,38296,396,4/27/2004,Del Rey -13571,Tsubasa: RESERVoir CHRoNiCLE Vol. 10,CLAMP/William Flanagan,4.29,0345484304,9780345484307,eng,184,2765,38,7/25/2006,Del Rey -13575,Tsubasa: RESERVoir CHRoNiCLE Vol. 8,CLAMP/William Flanagan,4.27,0345484282,9780345484284,eng,194,2993,40,1/31/2006,Del Rey -13576,Tsubasa: RESERVoir CHRoNiCLE Vol. 6,CLAMP/William Flanagan,4.30,0345477936,9780345477934,eng,193,3359,48,7/26/2005,Del Rey -13577,Tsubasa: RESERVoir CHRoNiCLE Vol. 04 (Tsubasa: RESERVoir CHRoNiCLE #4),CLAMP/William Flanagan,4.28,034547791X,9780345477910,eng,192,4059,50,1/25/2005,Del Rey Books -13578,Tsubasa: RESERVoir CHRoNiCLE Vol. 09,CLAMP/William Flanagan,4.28,0345484290,9780345484291,eng,184,3052,41,4/25/2006,Del Rey -13579,Tsubasa: RESERVoir CHRoNiCLE Vol. 12,CLAMP/William Flanagan,4.31,0345485327,9780345485328,eng,184,2683,38,1/30/2007,Del Rey -13583,ツバサ-RESERVoir CHRoNiCLE- 4,CLAMP,4.28,4063633381,9784063633382,jpn,186,6,2,2/17/2004,講談社 -13584,ツバサ-RESERVoir CHRoNiCLE- 6,CLAMP,4.30,4063633934,9784063633931,jpn,186,5,1,6/17/2004,講談社 -13585,ツバサ-RESERVoir CHRoNiCLE- 3,CLAMP,4.28,4063633225,9784063633221,jpn,190,7,1,12/17/2003,講談社 -13586,ツバサ-RESERVoir CHRoNiCLE- 7,CLAMP,4.29,4063634167,9784063634167,jpn,188,5,2,8/17/2004,講談社 -13587,ツバサ-RESERVoir CHRoNiCLE- 8,CLAMP,4.27,4063634523,9784063634525,jpn,187,4,0,11/17/2004,講談社 -13588,Hikaru no Go Vol. 7: The Young Lions Tournament (Hikaru no Go #7),Yumi Hotta/Takeshi Obata,4.26,1421506416,9781421506418,eng,205,1144,18,7/5/2006,VIZ Media LLC -13589,Hikaru no Go Vol. 8: The Pro Test Preliminaries: Day Four (Hikaru no Go #8),Yumi Hotta/Takeshi Obata,4.22,1421506424,9781421506425,eng,205,985,15,11/7/2006,VIZ Media LLC -13590,Hikaru no Go Vol. 1: Descent of the Go Master (Hikaru no Go #1),Yumi Hotta/Takeshi Obata,4.10,159116222X,9781591162223,eng,187,8921,207,5/19/2004,VIZ Media LLC -13591,Hikaru no Go Vol. 9: The Pro Test Begins (Hikaru no Go #9),Yumi Hotta/Takeshi Obata/Yukari Umezawa,4.27,1421510669,9781421510668,eng,207,1012,21,4/3/2007,VIZ Media LLC -13592,Hikaru no Go Vol. 10: Lifeline (Hikaru no Go #10),Yumi Hotta/Takeshi Obata,4.28,1421510677,9781421510675,eng,203,953,20,8/7/2007,VIZ Media LLC -13593,ヒカルの碁 18、番外編,Yumi Hotta/Yumi Hotta,4.11,4088732898,9784088732893,jpn,211,275,7,8/2/2002,集英社 -13594,ヒカルの碁 23、あなたに呼びかけている,Yumi Hotta/Yumi Hotta,4.22,4088735048,9784088735047,jpn,198,61,5,9/4/2003,集英社 -13595,ヒカルの碁 7、若獅子戦,Yumi Hotta/Yumi Hotta,4.26,4088728734,9784088728735,jpn,208,9,2,6/7/2000,集英社 -13596,ヒカルの碁 15、さよなら,Yumi Hotta/Yumi Hotta,4.25,4088732154,9784088732152,jpn,211,289,8,12/24/2001,集英社 -13598,ヒカルの碁 13、プロ第一戦,Yumi Hotta/Yumi Hotta,4.26,4088731441,9784088731445,jpn,195,11,2,8/8/2001,集英社 -13600,ヒカルの碁 14、sai vs toya koyo,Yumi Hotta/Yumi Hotta,4.23,4088731697,9784088731698,jpn,189,331,6,10/9/2001,集英社 -13602,ヒカルの碁 16、中国棋院,Yumi Hotta/Yumi Hotta,4.15,4088732324,9784088732329,jpn,191,282,7,3/4/2002,集英社 -13603,ヒカルの碁 6、院生試験,Yumi Hotta/Takeshi Obata,4.22,4088728491,9784088728490,jpn,211,8,2,4/9/2000,集英社 -13608,ヒカルの碁 9、本戦開始,Yumi Hotta/Yumi Hotta,4.27,4088730224,9784088730226,jpn,207,9,2,10/9/2000,集英社 -13609,ヒカルの碁 22、打倒高永夏,Yumi Hotta/Yumi Hotta,4.21,4088734327,9784088734323,jpn,189,329,5,6/4/2003,集英社 -13611,ヒカルの碁 12、新初段シリーズ,Yumi Hotta/Yumi Hotta,4.24,4088731107,9784088731100,jpn,189,9,2,5/6/2001,集英社 -13614,Death Note Vol. 8: Target (Death Note #8),Tsugumi Ohba/Takeshi Obata/Tetsuichiro Miyaki,4.26,1421506297,9781421506296,eng,201,16983,428,11/7/2006,VIZ Media LLC -13615,Death Note Vol. 1: Boredom (Death Note #1),Tsugumi Ohba/Takeshi Obata/Pookie Rolf,4.43,1421501686,9781421501680,eng,195,174482,3010,10/10/2005,VIZ Media LLC -13616,Death Note Vol. 4: Love (Death Note #4),Tsugumi Ohba/Alexis Kirsch,4.39,142150331X,9781421503318,eng,204,21653,690,3/7/2006,VIZ Media LLC -13617,Death Note Vol. 5: Whiteout (Death Note #5),Tsugumi Ohba/Takeshi Obata/Alexis Kirsch,4.34,1421506262,9781421506265,eng,201,19274,583,5/2/2006,VIZ Media LLC -13618,Death Note Vol. 3: Hard Run (Death Note #3),Tsugumi Ohba/Takeshi Obata/Pookie Rolf,4.43,1421501708,9781421501703,eng,200,22435,741,1/3/2006,VIZ Media LLC -13619,Death Note Vol. 2: Confluence (Death Note #2),Tsugumi Ohba/Takeshi Obata/Pookie Rolf,4.43,1421501694,9781421501697,eng,197,25578,948,11/1/2005,VIZ Media LLC -13620,Death Note Vol. 6: Give-and-Take (Death Note #6),Tsugumi Ohba/Takeshi Obata/Alexis Kirsch,4.39,1421506270,9781421506272,eng,215,18291,491,7/5/2006,VIZ Media LLC -13621,Death Note Vol. 7: Zero (Death Note #7),Tsugumi Ohba/Takeshi Obata/Alexis Kirsch,4.43,1421506289,9781421506289,eng,211,18321,586,9/5/2006,VIZ Media LLC -13622,Death Note Vol. 9: Contact (Death Note #9),Tsugumi Ohba/Takeshi Obata/Tetsuichiro Miyaki,4.21,1421506300,9781421506302,eng,193,13472,363,1/2/2007,VIZ Media LLC -13623,Death Note Vol. 10: Deletion (Death Note #10),Tsugumi Ohba/Takeshi Obata/Tetsuichiro Miyaki,4.22,142151155X,9781421511559,eng,188,12461,325,3/6/2007,VIZ Media LLC -13624,The Worm Ouroboros,E.R. Eddison/Keith Henderson,3.71,0486447405,9780486447407,eng,446,2956,239,4/28/2006,Dover Publications -13625,Mistress of Mistresses: A Vision of Zimiamvia (The Zimiamvian Trilogy #1),E.R. Eddison/Gerald Ravenscourt Hayes/Keith Henderson,3.64,034527220X,9780345272201,eng,405,26,6,12/12/1977,Del Rey Books -13628,The Mezentian Gate,E.R. Eddison,3.60,0345272218,9780345272218,eng,275,134,5,4/12/1978,Del Rey -13629,The Mythical Man-Month: Essays on Software Engineering,Frederick P. Brooks Jr.,4.05,0201835959,9780201835953,eng,322,9395,616,8/12/1995,Addison-Wesley Professional -13630,Museum of Terror Vol. 1: Tomie 1,Junji Ito/伊藤潤二/Naomi Kokubo,4.09,1593075421,9781593075422,eng,375,1444,83,8/8/2006,Dark Horse Comics -13631,Museum of Terror Vol. 2: Tomie 2,Junji Ito/伊藤潤二/Naomi Kokubo,4.11,1593076126,9781593076122,eng,376,911,33,9/19/2006,Dark Horse Manga -13632,Museum of Terror Vol. 3: The Long Hair in the Attic,Junji Ito/伊藤潤二,4.12,1593076398,9781593076399,eng,392,628,26,11/21/2006,Dark Horse Manga -13633,Tomie 1 富江,Junji Ito/伊藤潤二,3.94,1588990842,9781588990846,eng,248,900,38,4/4/2005,ComicsOne Corporation -13634,Tomie 2 富江 Part 2,Junji Ito/伊藤潤二,3.86,1588990850,9781588990853,eng,247,521,32,4/4/2005,ComicsOne Corporation -13638,Hana Yori Dango: Le jeu da la fin du monde 1 (Boys Over Flowers #1),Yōko Kamio/神尾葉子,4.11,2723441784,9782723441780,fre,212,26,3,3/5/2003,Glénat -13639,Hana Yori Dango 3 (Boys Over Flowers #3),Yōko Kamio/神尾葉子,4.12,2723442314,9782723442312,fre,185,10,0,6/18/2003,Glénat -13640,Hana Yori Dango 2 (Boys Over Flowers #2),Yōko Kamio/神尾葉子,4.12,2723442306,9782723442305,fre,171,12,0,5/14/2003,Glénat -13647,Voices (Annals of the Western Shore #2),Ursula K. Le Guin,3.88,0152056785,9780152056780,eng,341,3493,306,9/1/2006,Harcourt -13648,Gifts (Annals of the Western Shore #1),Ursula K. Le Guin,3.70,0152051244,9780152051242,eng,286,6666,606,4/1/2006,Harcourt -13649,Lao Tzu: Tao Te Ching: A Book about the Way and the Power of the Way,Lao Tzu/Ursula K. Le Guin/J.P. Seaton,4.30,1570623953,9781570623950,eng,125,800,91,10/20/1998,Shambhala -13650,The Wave in the Mind: Talks and Essays on the Writer the Reader and the Imagination,Ursula K. Le Guin,4.30,1590300068,9781590300060,eng,314,1044,164,2/17/2004,Shambhala -13651,The Dispossessed,Ursula K. Le Guin,4.22,0061054887,9780061054884,eng,387,64196,3525,10/20/1994,Harper Voyager -13653,Five Complete Novels,Ursula K. Le Guin,4.13,0517480107,9780517480106,eng,579,58,13,9/4/1985,Random House Value Publishing -13654,Tehanu (Earthsea Cycle #4),Ursula K. Le Guin,3.94,0689845332,9780689845338,eng,281,1269,93,9/1/2001,Aladdin Paperbacks -13657,Changing Planes,Ursula K. Le Guin,3.83,0441012248,9780441012244,eng,239,3489,335,8/1/2005,Ace -13658,The Other Wind (Earthsea Cycle #6),Ursula K. Le Guin/Samuel Roukin,4.12,044101125X,9780441011254,eng,211,14393,635,9/30/2003,Ace Books -13659,Tales from Earthsea (Earthsea Cycle #5),Ursula K. Le Guin,4.04,0441011241,9780441011247,eng,280,14549,468,10/28/2003,Ace -13660,Jane on Her Own (Catwings #4),Ursula K. Le Guin/S.D. Schindler,4.17,0439551927,9780439551922,eng,48,1322,87,10/1/2006,Orchard Books -13661,Tehanu (Earthsea Cycle #4),Ursula K. Le Guin,3.94,1416509631,9781416509639,eng,281,26096,1053,11/23/2004,Pocket Books -13662,The Tombs of Atuan (Earthsea Cycle #2),Ursula K. Le Guin/Margot Paronis,4.09,0689845367,9780689845369,eng,180,73161,1922,9/1/2001,Gallery / Saga Press -13664,Catwings (Catwings #1),Ursula K. Le Guin/S.D. Schindler,4.09,0439551897,9780439551892,eng,40,6598,600,5/1/2003,Orchard Books -13666,Wonderful Alexander and the Catwings,Ursula K. Le Guin/S.D. Schindler,4.13,053106851X,9780531068519,eng,42,21,1,9/1/1994,Orchard Books -13667,The Farthest Shore (Earthsea Cycle #3),Ursula K. Le Guin,4.12,141650964X,9781416509646,eng,259,79809,1224,11/1/2004,Gallery Books -13674,The Life and Games of Mikhail Tal,Mikhail Tal/Iakov Damsky/Kenneth P. Neat,4.52,1857442024,9781857442021,eng,496,442,24,7/1/1997,Everyman Chess -13677,Tal-Botvinnik 1960,Mikhail Tal/Hanon W. Russell,4.55,1888690089,9781888690088,eng,220,161,12,7/3/2001,Russell Enterprises -13688,Don Quixote,Miguel de Cervantes Saavedra/John Rutherford,3.87,0140449094,9780140449099,eng,1056,335,52,1/30/2003,Penguin Books -13719,Cromartie High School Vol. 06,Eiji Nonaka/Brendan Frayne,4.21,1413902626,9781413902624,eng,176,61,4,6/6/2006,ADV Manga -13720,Cromartie High School Vol. 05,Eiji Nonaka/Brendan Frayne,4.28,1413902618,9781413902617,eng,168,63,2,3/21/2006,ADV Manga -13722,Cromartie High School Vol. 01,Eiji Nonaka/Brendan Frayne,4.00,141390257X,9781413902570,eng,158,393,41,3/1/2005,ADV Manga -13724,Cromartie High School Vol. 02,Eiji Nonaka/Brendan Frayne,4.19,1413902588,9781413902587,eng,161,134,9,6/14/2005,ADV Manga -13727,Bleach Volume 16,Tite Kubo,4.34,1421506149,9781421506142,eng,208,5763,75,12/5/2006,VIZ Media LLC -13728,Bleach Volume 13,Tite Kubo,4.36,1421506114,9781421506111,eng,208,6371,85,6/6/2006,VIZ Media LLC -13729,Bleach Volume 10,Tite Kubo,4.28,1421500817,9781421500812,eng,208,7037,81,12/6/2005,VIZ Media LLC -13730,Bleach Volume 18,Tite Kubo,4.34,1421510421,9781421510422,eng,208,7781,70,4/3/2007,VIZ Media LLC -13731,Bleach Volume 17,Tite Kubo,4.35,1421510413,9781421510415,eng,208,6250,60,2/6/2007,VIZ Media LLC -13733,Bleach Volume 19,Tite Kubo,4.36,142151043X,9781421510439,eng,216,5922,81,6/5/2007,VIZ Media LLC -13735,Bleach Volume 20,Tite Kubo,4.36,1421510448,9781421510446,eng,216,5648,76,8/7/2007,VIZ Media LLC -13737,The Twelve Kingdoms: Sea of Shadow (The Twelve Kingdoms #1),Fuyumi Ono/小野 不由美/Akihiro Yamada/山田 章博/Elye J. Alexander/Alexander O. Smith,4.20,1598169467,9781598169461,en-US,464,2504,172,3/13/2007,TokyoPop -13739,Twelve Fair Kingdoms,Suzette Haden Elgin,3.99,0425058506,9780425058503,eng,195,141,10,3/1/1983,Berkley -13741,Crest of the Stars 2: A Modest War (Seikai no Monshou #2),Hiroyuki Morioka,4.11,1598165763,9781598165760,eng,222,135,5,1/1/2007,TokyoPop -13743,Crest of the Stars 3: Return to a Strange World (Seikai no Monshou #3),Hiroyuki Morioka,4.25,1598165771,9781598165777,eng,203,128,3,5/1/2007,TokyoPop -13746,Julie and Julia: My Year of Cooking Dangerously,Julie Powell,3.70,0316013269,9780316013260,en-US,307,2261,537,9/7/2006,Back Bay Books -13747,Julie and Julia: 365 Days 524 Recipes 1 Tiny Apartment Kitchen,Julie Powell,3.70,031610969X,9780316109697,eng,310,136123,5852,9/1/2005,Little Brown and Company -13752,The Master of Go,Yasunari Kawabata/Edward G. Seidensticker,3.84,0679761063,9780679761068,eng,189,2821,199,5/28/1996,Vintage -13759,Conrad's Fate (Chrestomanci #5),Diana Wynne Jones,4.05,0060747455,9780060747459,eng,400,8080,336,5/9/2006,Greenwillow Books -13762,Rocketman: Astronaut Pete Conrad's Incredible Ride to the Moon and Beyond,Nancy Conrad/Howard A. Klausner/Buzz Aldrin,4.08,045121837X,9780451218377,eng,301,26,4,5/1/2006,New American Library -13764,Red River Vol. 14 (Red River #14),Chie Shinohara,4.44,1421505568,9781421505565,eng,191,1030,13,9/12/2006,VIZ Media LLC -13765,Red River Vol. 15 (Red River #15),Chie Shinohara,4.45,1421505576,9781421505572,eng,191,1007,13,11/1/2006,Viz Media -13767,Red River Vol. 16 (Red River #16),Chie Shinohara,4.45,1421505584,9781421505589,eng,191,999,13,1/1/2007,Viz Media -13769,Red River Vol. 17 (Red River #17),Chie Shinohara,4.44,1421509970,9781421509976,eng,189,984,10,4/10/2007,VIZ Media LLC -13783,Tramps Like Us Volume 8,Yayoi Ogawa,4.30,1595324380,9781595324382,en-US,192,611,14,2/7/2006,TokyoPop -13784,Tramps Like Us Volume 9,Yayoi Ogawa,4.32,1595324399,9781595324399,en-GB,185,562,11,6/1/2006,TokyoPop -13785,Tramps Like Us Volume 11,Yayoi Ogawa,4.28,1598161989,9781598161984,eng,182,478,12,2/1/2007,TokyoPop -13786,Tramps Like Us Volume 12,Yayoi Ogawa,4.37,1598161997,9781598161991,en-US,179,497,9,6/1/2007,TokyoPop -13793,きみはペット 11 [Kimi wa Petto 11],Yayoi Ogawa/小川 彌生,4.28,4063405141,9784063405149,jpn,184,6,0,11/12/2004,講談社 -13797,Suki's Kimono,Chieri Uegaki/Stéphane Jorisch,4.19,1553377524,9781553377528,eng,32,645,123,9/1/2005,Kids Can Press -13800,The Interpreter,Suki Kim,3.56,0312422245,9780312422240,eng,304,976,106,1/1/2004,St. Martins Press -13806,The Thousandfold Thought (The Prince of Nothing #3),R. Scott Bakker,3.93,158567883X,9781585678839,eng,560,8716,228,1/30/2007,Harry N. Abrams -13807,Flight of the Nighthawks (The Darkwar Saga #1),Raymond E. Feist,3.96,0060792787,9780060792787,en-US,368,9698,110,4/11/2006,Harper Voyager -13812,Magician: Apprentice (The Riftwar Saga #1),Raymond E. Feist,4.17,0553564943,9780553564945,eng,485,73396,1367,1/1/1994,Bantam Spectra -13814,Into a Dark Realm (The Darkwar Saga #2),Raymond E. Feist,4.00,0060792809,9780060792800,eng,319,9291,97,3/27/2007,EOS -13820,Manna from Heaven,Roger Zelazny/Scott Zrubeck/Steven Brust,3.95,0809530953,9780809530953,en-US,255,337,10,5/29/2006,Wildside Press -13821,Lord of Light,Roger Zelazny,4.10,0060567236,9780060567231,eng,296,23392,1104,3/30/2010,Harper Voyager -13823,Roger Zelazny's To Rule in Amber (The Dawn of Amber #3),John Gregory Betancourt/Roger Zelazny,3.77,1596871326,9781596871328,eng,310,753,13,10/1/2005,iBooks -13829,Terrier (Beka Cooper #1),Tamora Pierce,4.15,037581468X,9780375814686,eng,581,56973,1623,10/24/2006,Random House -13831,Alanna: The First Adventure (Song of the Lioness #1),Tamora Pierce,4.26,0689878559,9780689878558,eng,274,101059,3815,1/1/2005,Simon Pulse -13832,Young Warriors: Stories of Strength,Tamora Pierce/Josepha Sherman/Margaret Mahy/Lesley McBain/Mike Resnick/Bruce Rogers/Pamela F. Service/Jan Stirling/Holly Black/Doranna Durgin/India Edghill/Rosemary Edghill/Esther M. Friesner/Laura Anne Gilman/Janis Ian/Brett Hartinge,3.91,0375829636,9780375829635,eng,312,3643,74,10/24/2006,Random House -13833,Emperor Mage (Immortals #3),Tamora Pierce,4.29,1416903372,9781416903376,eng,358,49912,615,6/1/2005,Simon Pulse -13834,The Realms of the Gods (Immortals #4),Tamora Pierce,4.32,141690817X,9781416908173,eng,347,46937,665,1/1/2006,Simon Pulse -13835,In the Hand of the Goddess (Song of the Lioness #2),Tamora Pierce,4.24,0689878567,9780689878565,eng,264,77540,1396,1/1/2005,Simon Pulse -13836,Wild Magic (Immortals #1),Tamora Pierce,4.32,1416903437,9781416903437,eng,362,61677,1448,6/1/2005,Simon Pulse -13837,Lioness Rampant (Song of the Lioness #4),Tamora Pierce,4.28,0689878575,9780689878572,en-US,384,72386,1230,1/1/2005,Simon Pulse -13839,The Botany of Desire: A Plant's-Eye View of the World,Michael Pollan,4.06,0375760393,9780375760396,eng,297,39680,2780,5/28/2002,Random House Trade Paperbacks -13842,The Botany of Desire: A Plant's-Eye View of the World,Michael Pollan/Scott Brick,4.06,1596590939,9781596590939,eng,0,117,36,5/21/2007,Your Coach Digital -13845,More Milly Molly Mandy,Joyce Lankester Brisley,4.12,0753453347,9780753453346,eng,224,846,17,9/1/1999,Kingfisher -13847,Essence and Alchemy: A Natural History of Perfume,Mandy Aftel,4.09,1586857029,9781586857028,eng,256,459,37,1/31/2007,Gibbs Smith -13853,The Lion the Witch and the Wardrobe,C.S. Lewis/Pauline Baynes,4.21,0060530839,9780060530839,en-US,112,381,19,11/4/2003,HarperCollins -13854,Promise of the Witch King (Forgotten Realms: The Sellswords #2),R.A. Salvatore,4.17,0786940735,9780786940738,eng,373,7847,104,9/12/2006,Wizards of the Coast -13856,Witches Abroad (Discworld #12),Terry Pratchett,4.22,055215296X,9780552152969,en-GB,368,346,31,8/1/2005,Corgi -13860,The Wizard's Apprentice (The Keepers #2),Jackie French Koller/Rebecca Guay,3.80,0689855923,9780689855924,eng,175,353,20,12/1/2003,Aladdin -13867,Magician: Apprentice (The Riftwar Saga #1),Raymond E. Feist,4.17,0553267604,9780553267600,eng,336,614,19,12/1/1993,Spectra -13871,Magician: Apprentice (The Riftwar Saga #1),Raymond E. Feist/Brett Booth,4.45,0976401150,9780976401155,eng,265,276,5,6/29/2006,Dabel Brothers Productions -13872,Geek Love,Katherine Dunn,3.97,0375713344,9780375713347,eng,348,50103,5030,6/11/2002,Random House Vintage -13876,Dear God Help!!! Love Earl,Barbara Park/Kenneth Lafreniere,3.97,0679853952,9780679853954,eng,144,37,4,7/11/2006,Yearling -13878,Prince of the Blood (Krondor's Sons #1),Raymond E. Feist,3.98,0553588117,9780553588118,eng,429,19537,171,12/18/2007,BantamSpectra -13879,Shards of a Broken Crown (The Serpentwar Saga #4),Raymond E. Feist,4.02,0380973995,9780380973996,en-US,417,131,4,4/1/1998,AvonEos -13881,Rage of a Demon King (The Serpentwar Saga #3),Raymond E. Feist,4.05,0380974738,9780380974733,en-US,436,21965,92,4/1/1997,Avon Books -13890,A Crown of Swords (The Wheel of Time #7),Robert Jordan,4.04,0812550285,9780812550283,eng,880,106712,1604,11/15/1997,Tor Books -13891,Winter's Heart (The Wheel of Time #9),Robert Jordan,3.94,081257558X,9780812575583,eng,780,86944,1442,1/7/2002,Tor Fantasy -13895,The Fires of Heaven (The Wheel of Time #5),Robert Jordan,4.16,1857232097,9781857232097,eng,912,113052,1673,7/4/1994,Orbit -13912,A Beautiful Mind,Sylvia Nasar,4.13,0571212921,9780571212927,eng,461,115201,1008,2/4/2002,Faber Faber -13913,How To Have A Beautiful Mind,Edward de Bono,3.62,0091894603,9780091894603,en-US,232,1595,135,6/3/2004,Vermilion -13914,The State of Mind Called Beautiful,Sayadaw U. Pandita/Kate Wheeler/Swami Vivekananda,4.22,0861713451,9780861713455,eng,170,28,1,4/13/2006,Wisdom Publications -13916,Il genio dei numeri,Sylvia Nasar/Carlo Capararo/Sergio Mancini/Roberta Zuppet,4.13,8817128716,9788817128711,ita,442,45,5,2/1/2002,Rizzoli -13922,Wolfskin (Saga of the Light Isles #1),Juliet Marillier,4.01,0765345900,9780765345905,eng,544,5653,225,8/1/2004,Tor Books -13923,Blade of Fortriu (The Bridei Chronicles #2),Juliet Marillier,4.09,0765309963,9780765309969,eng,496,5141,184,10/31/2006,Tor -13924,The Dark Mirror (The Bridei Chronicles #1),Juliet Marillier,3.97,076530998X,9780765309983,en-US,512,63,8,6/13/2006,Tor Books -13925,Child of the Prophecy (Sevenwaters #3),Juliet Marillier,4.12,0765345013,9780765345011,eng,596,17071,708,6/16/2003,Tor Books -13927,Son of the Shadows (Sevenwaters #2),Juliet Marillier,4.33,0765343266,9780765343260,eng,608,24253,1070,6/17/2002,Tor Books -13929,Wildwood Dancing (Wildwood #1),Juliet Marillier,4.09,0375833641,9780375833649,eng,407,24751,2219,1/23/2007,Alfred A. Knopf -13930,Foxmask (Saga of the Light Isles #2),Juliet Marillier,4.10,0330411845,9780330411844,eng,670,104,9,3/18/2005,Tor Books -13931,Foxmask (Saga of the Light Isles #2),Juliet Marillier,4.10,0765345919,9780765345912,eng,560,4123,145,11/1/2005,Tor Fantasy -13932,The Noonday Demon: An Atlas of Depression,Andrew Solomon,4.18,0684854678,9780684854670,eng,576,9255,724,4/2/2002,Scribner -13934,The Noonday Demon: An Anatomy of Depression,Andrew Solomon,4.18,0099277131,9780099277132,en-GB,560,119,10,4/4/2002,Vintage -13939,My Secret: A PostSecret Book,Frank Warren,4.34,0061196681,9780061196683,en-GB,144,5874,281,10/24/2006,William Morrow -13943,The Secret Lives of Men and Women: A PostSecret Book,Frank Warren,4.37,0061198757,9780061198755,en-GB,144,5406,237,1/9/2007,William Morrow -13944,The Secret Life of Houdini: The Making of America's First Superhero,William Kalush/Larry Sloman,3.87,0743272072,9780743272070,en-US,592,1738,235,10/31/2006,Atria Books -13947,The Golden Key,Melanie Rawn/Kate Elliott/Jennifer Roberson,3.82,0330347764,9780330347761,eng,1074,36,5,9/19/1997,Pan -13951,The Case Of The Golden Key (Jigsaw Jones Mystery #19),James Preller/Jamie Smith,3.88,0439426286,9780439426282,eng,80,87,10,9/1/2002,Scholastic Paperbacks -13954,Mandie and the Jumping Juniper (Mandie #18),Lois Gladys Leppard,3.89,1556612001,9781556612008,eng,160,874,19,2/2/2008,Bethany House Publishers -13956,Wise Child,Monica Furlong,4.14,0394891058,9780394891057,eng,228,178,12,2/24/2004,Random House -13964,The Boys of the Archangel Raphael: A Youth Confraternity in Florence 1411-1785,Konrad Eisenbichler,2.00,0802043291,9780802043290,eng,498,1,0,5/30/1998,University of Toronto Press -13965,King Solomon's Ring,Konrad Lorenz/Marjorie Kerr Wilson,4.23,0415267471,9780415267472,eng,192,1509,80,8/11/2002,Routledge -13968,The Konrad Saga (Konrad #1-3),David S. Garnett/David Ferring,3.57,1841542768,9781841542768,eng,608,74,4,4/26/2005,Games Workshop -13979,Aerie (Dragon Jousters #4),Mercedes Lackey,3.95,075640391X,9780756403911,en-US,291,4922,95,10/3/2006,DAW Books -13980,Sanctuary (Dragon Jousters #3),Mercedes Lackey,4.01,0756403413,9780756403416,eng,448,6437,81,5/2/2006,DAW -13981,Fortune's Fool (Five Hundred Kingdoms #3),Mercedes Lackey,3.83,0373802668,9780373802661,en-US,362,7756,283,2/27/2007,Luna Books -13982,The Fairy Godmother (Five Hundred Kingdoms #1),Mercedes Lackey,3.97,0373802455,9780373802456,eng,479,15813,871,10/25/2004,Luna Books -13983,The Wizard of London (Elemental Masters #4),Mercedes Lackey,3.79,0756403634,9780756403638,en-US,384,6145,202,10/3/2006,DAW -13985,By Slanderous Tongues (Doubled Edge #3),Mercedes Lackey/Roberta Gellis,3.90,1416521070,9781416521075,eng,544,698,19,2/6/2007,Baen -13986,Arrows of the Queen (Heralds of Valdemar #1),Mercedes Lackey,4.14,0886773784,9780886773786,eng,320,31058,927,3/3/1987,Daw Books -13987,Phoenix and Ashes (Elemental Masters #3),Mercedes Lackey,4.01,0756402727,9780756402723,eng,480,6980,229,10/4/2005,DAW -13988,Crossroads and Other Tales of Valdemar (Tales of Valdemar #3),Mercedes Lackey/Rosemary Edghill/Sarah A. Hoyt/Tanya Huff/Fiona Patton/Janni Lee Simner/Mickey Zucker Reichert/Judith Tarr/Larry Dixon/Michael Z. Williamson/Nancy Asire/Richard Lee Byers/Brenda Cooper/Stephanie D. Shaver/Kate Paulk/Michael Longcor/Ben Ohlander,3.87,0756403251,9780756403256,eng,338,3049,32,12/6/2005,DAW -13990,Storm Warning (Valdemar: Mage Storms #1),Mercedes Lackey,4.03,0886776619,9780886776619,eng,428,11193,123,9/1/1995,Daw Books -13991,This Rough Magic (Heirs of Alexandria #2),Mercedes Lackey/Eric Flint/Dave Freer,3.86,0743499093,9780743499095,eng,893,1189,23,6/1/2005,Baen -13993,Joust (Dragon Jousters #1),Mercedes Lackey,4.02,0756401534,9780756401535,eng,448,10113,263,3/2/2004,DAW -13994,Winds of Fury (Valdemar: Mage Winds #3),Mercedes Lackey,4.05,0886776120,9780886776121,eng,423,12027,105,8/1/1994,DAW -13995,Winds of Fate (Valdemar: Mage Winds #1),Mercedes Lackey,4.04,0886775167,9780886775162,eng,458,14611,208,7/7/1992,DAW -13996,Alta (Dragon Jousters #2),Mercedes Lackey,4.03,0756402573,9780756402570,en-US,434,7060,113,3/1/2005,Daw Books -13997,The Serpent's Shadow (Elemental Masters #1),Mercedes Lackey,3.99,0756400619,9780756400613,en-US,394,8768,306,3/5/2002,Daw Books -13998,Storm Rising (Valdemar: Mage Storms #2),Mercedes Lackey,4.02,0886777127,9780886777128,en-US,412,10781,86,10/1/1996,DAW -14000,Exile's Valor (Heralds of Valdemar #7),Mercedes Lackey,4.19,0756402212,9780756402211,en-GB,438,10882,104,10/5/2004,DAW -14002,Sword of Ice and Other Tales of Valdemar (Tales of Valdemar #1),Mercedes Lackey/Tanya Huff/Mickey Zucker Reichert/Michelle Sagara West/Gary A. Braunbeck/John Helfers/Elisabeth Waters/Lawrence Schimel/Mark Shepherd/Janni Lee Simner/Richard Lee Byers/Josepha Sherman/Larry Dixon/John Yezeguielian/Mel White/Stephanie D. Shaver/Kristin Schwengel/Ben Ohlander/Philip M. Austin,3.85,0886777208,9780886777203,eng,350,3869,50,1/1/1997,Daw Books -14003,The River's Gift,Mercedes Lackey,3.90,0451457595,9780451457592,eng,128,1050,59,10/2/1999,Roc Hardcover -14004,Jinx High (Diana Tregarde #3),Mercedes Lackey,3.83,0765313197,9780765313195,en-US,335,3507,66,9/5/2000,St. Martins Press-3PL -14007,Owlknight (Owl Mage Trilogy #3),Mercedes Lackey/Larry Dixon,3.98,0886779162,9780886779160,eng,450,8045,98,11/1/2000,DAW -14008,Bedlam's Edge (Bedlam's Bard #8),Mercedes Lackey/Rosemary Edghill,3.92,1416521100,9781416521105,en-US,384,922,20,1/30/2007,Baen -14009,Owlflight (Owl Mage Trilogy #1),Mercedes Lackey/Larry Dixon,3.98,0886778042,9780886778040,eng,342,9217,168,10/1/1998,DAW -14012,Children of the Night (Diana Tregarde #2),Mercedes Lackey,3.94,0765313189,9780765313188,en-US,320,4349,103,8/1/2005,St. Martins Press-3PL -14013,Winter Moon (Walker Papers #1.5),Mercedes Lackey/Tanith Lee/C.E. Murphy,3.78,0373802390,9780373802395,eng,393,2668,148,10/25/2005,Luna Books -14014,Arrow's Fall (Heralds of Valdemar #3),Mercedes Lackey,4.19,0886774004,9780886774004,eng,319,19520,330,1/5/1988,Daw Books -14016,Difficult Conversations: How to Discuss What Matters Most,Bruce Patton/Douglas Stone/Sheila Heen,4.09,014027782X,9780140277821,en-US,250,61,9,5/25/2000,Penguin -14026,The Scarlet Gang of Asakusa,Yasunari Kawabata/Alisa Freedman,3.36,0520241827,9780520241824,eng,181,360,34,4/18/2005,University of California Press -14029,Beauty and Sadness,Yasunari Kawabata/Howard Hibbett,3.85,0679761055,9780679761051,eng,206,4933,313,1/30/1996,Vintage -14030,The Dancing Girl of Izu and Other Stories,Yasunari Kawabata/J. Martin Holman,3.78,1887178945,9781887178945,eng,176,1385,75,8/29/1998,Counterpoint -14031,Palm-of-the-Hand Stories,Yasunari Kawabata/Lane Dunlop/J. Martin Holman,3.99,0374530491,9780374530495,eng,288,1777,129,11/14/2006,Farrar Straus and Giroux -14032,House of the Sleeping Beauties and Other Stories,Yasunari Kawabata/Edward G. Seidensticker/Yukio Mishima,3.67,4770029756,9784770029751,eng,148,3581,224,2/6/2004,Kodansha International -14033,First Snow on Fuji,Yasunari Kawabata/Michael Emmerich,3.85,1582431051,9781582431055,eng,227,601,42,10/12/1999,Counterpoint -14043,Romanee Conti: The World's Most Fabled Wine,Richard Olney,3.75,0847819272,9780847819270,eng,208,20,1,9/15/1995,Rizzoli International Publications -14045,As I Crossed a Bridge of Dreams: Recollections of a Woman in Eleventh-Century Japan,Lady Sarashina/Ivan Morris,3.82,0140442820,9780140442823,eng,148,527,54,1/30/1975,Penguin Classics -14046,The Time Traveler's Wife,Audrey Niffenegger,3.97,1596921536,9781596921535,eng,518,1005,253,10/1/2005,MacAdam/Cage -14049,The Part-Time Wife (The Secret Lives of Society Wives #6),Maureen Child,3.60,0373767552,9780373767557,eng,179,120,12,10/1/2006,Harlequin Books -14051,Part-Time Wife (Hometown Heartbreakers #4),Susan Mallery,3.97,0373240279,9780373240272,eng,256,574,22,3/25/1996,Silhouette Special Edition -14054,The Little Friend,Donna Tartt,3.46,0747573646,9780747573647,eng,555,808,112,6/1/2007,Bloomsbury -14055,The Little Friend,Donna Tartt,3.46,0747562113,9780747562115,eng,559,220,25,10/28/2002,Bloomsbury -14056,The Littles and Their Amazing New Friend,John Lawrence Peterson,3.87,0590876120,9780590876124,eng,112,190,16,3/1/1999,Scholastic Paperbacks -14060,Little House Friends (Little House Chapter Books: Laura #9),Laura Ingalls Wilder/Renée Graef,4.04,0064420809,9780064420808,eng,80,73,2,9/5/1998,HarperCollins -14063,The Legend of the Poinsettia,Tomie dePaola,4.19,0698115678,9780698115675,eng,32,2401,115,10/6/1997,Puffin Books -14064,I Am Legend,Richard Matheson,4.07,1857988094,9781857988093,eng,160,55751,3104,1/21/1999,Millenium -14069,Throne of Jade (Temeraire #2),Naomi Novik,3.89,0345481291,9780345481290,eng,398,30029,1818,4/25/2006,Del Rey Books -14072,Thrones Dominations,Dorothy L. Sayers/Jill Paton Walsh,3.89,0312968302,9780312968304,en-US,322,165,24,3/15/1999,St. Martin's Paperbacks -14075,A Throne in Brussels: Britain the Saxe-Coburgs and the Belgianisation of Europe,Paul Belien,4.14,1845400658,9781845400651,eng,384,14,3,2/1/2006,Imprint Academic -14081,Utena: Revolutionary Girl 01,Chiho Saito,3.83,3551768617,9783551768612,ger,192,14,0,2/1/2003,Carlsen -14082,Malgudi Days,R.K. Narayan/Jhumpa Lahiri,4.21,0143039652,9780143039655,eng,264,13518,473,11/2/2006,Penguin Classics -14084,The Magic Barrel,Bernard Malamud/Jhumpa Lahiri,3.99,0374525862,9780374525866,en-US,240,1958,95,7/7/2003,Farrar Straus and Giroux -14088,O Xará,Jhumpa Lahiri,3.99,8535905324,9788535905328,por,336,152,9,8/30/2004,Companhia das Letras -14089,Prétear Vol. 4 (Prétear #4),Junichi Satō/Kaori Naruse,3.96,1413901476,9781413901474,eng,180,294,14,1/18/2005,ADV Manga -14091,Prétear Vol. 3 (Prétear #3),Junichi Satō/Kaori Naruse,3.95,1413901468,0702727014581,eng,172,326,10,10/12/2004,ADV Manga -14092,Prétear Vol. 2 (Prétear #2),Junichi Satō/Kaori Naruse,4.00,141390145X,9781413901450,eng,182,347,17,8/24/2004,ADV Manga -14093,Zinn & the Art of Road Bike Maintenance,Lennard Zinn/Todd Telander,4.29,1931382697,9781931382694,eng,356,282,24,10/25/2005,VeloPress -14095,A Power Governments Cannot Suppress,Howard Zinn,4.27,0872864758,9780872864757,eng,293,873,78,12/1/2006,City Lights Publishers -14096,Wherever You Go There You Are: Mindfulness Meditation in Everyday Life,Jon Kabat-Zinn,4.12,1401307787,9781401307783,eng,304,30333,1293,1/5/2005,Hachette Books -14098,Mindfulness for Beginners,Jon Kabat-Zinn,3.82,1591794641,9781591794646,eng,3,2913,245,7/1/2006,Sounds True -14106,Grammar Snobs Are Great Big Meanies: A Guide to Language for Fun and Spite,June Casagrande,3.78,0143036831,9780143036838,eng,199,774,157,3/28/2006,Penguin Books -14107,Death of a Snob (Hamish Macbeth #6),M.C. Beaton,3.78,0553409689,9780553409680,eng,192,17,1,6/1/2000,Transworld Publishers -14115,Beauty is the Beast Vol. 4,Tomo Matsumoto/Tomo Kimura,3.79,1421503549,9781421503547,eng,208,335,11,8/1/2006,VIZ Media LLC -14117,Beauty and the Beast,Max Eilenberg/Angela Barrett,4.37,0763631604,9780763631604,eng,64,3682,133,11/14/2006,Candlewick Press -14118,Disney's Beauty and the Beast (A Little Golden Book),Teddy Slater/Ron Dias/Ric González,4.41,0736421971,9780736421973,eng,24,28824,132,5/11/2004,Golden/Disney -14131,Mao II,Don DeLillo/Marianne Véron,3.68,2742735402,9782742735402,fre,278,10,1,10/27/2001,Babel -14137,White Noise: Text and Criticism,Don DeLillo/Mark Osteen,3.87,0140274987,9780140274981,eng,538,747,75,12/1/1998,Penguin Books -14142,The Art of Loving,Erich Fromm/Peter D. Kramer/Rainer Funk,4.04,0061129739,9780061129735,eng,192,38148,1310,8/6/2019,Harper Perennial Modern Classics -14143,The Art of Loving,Eiki Eiki/Sashiko Sato/Bambi Eloriaga,3.51,1569709084,9781569709085,en-US,184,172,13,4/5/2006,Digital Manga Publishing -14168,Inattentional Blindness,Arien Mack/Irvin Rock,4.20,0262632039,9780262632034,en-US,287,10,3,7/24/2000,Bradford Book -14169,Touching the Rock: An Experience of Blindness,John M. Hull/Oliver Sacks,3.98,067973547X,9780679735472,eng,248,141,24,6/2/1992,Vintage -14173,Blindness and Insight: Essays in the Rhetoric of Contemporary Criticism,Paul De Man/Wlad Godzich,4.12,0816611351,9780816611355,eng,342,180,9,10/3/1983,University of Minnesota Press -14176,Yiddish with Dick and Jane,Ellis Weiner/Barbara Davilman/Gabi Payn,3.92,0316159727,9780316159722,en-US,112,373,67,9/13/2004,Little Brown and Company -14177,A Treasury of Dick and Jane and Friends (Dick and Jane),Pearson Scott Foresman/William S. Gray,4.13,0448433400,9780448433400,en-US,200,371,43,9/15/2003,Grosset & Dunlap -14179,The Complete Dick Tracy Volume 1: 1931-1933,Chester Gould/Ashley Wood/Max Allan Collins,4.02,1600100368,9781600100369,eng,352,168,17,1/3/2012,Library of American Comics -14181,Do Androids Dream Of Electric Sheep?,Philip K. Dick,4.08,0752864300,9780752864303,en-US,224,267,28,3/24/2005,Orion Paperbacks -14182,Four Novels of the 1960s: The Man in the High Castle / The Three Stigmata of Palmer Eldritch / Do Androids Dream of Electric Sheep? / Ubik,Philip K. Dick/Jonathan Lethem,4.38,1598530097,9781598530094,eng,830,1970,206,5/10/2007,Library of America -14183,The Philip K. Dick Reader,Philip K. Dick,4.28,0806518561,9780806518565,eng,422,2760,158,4/1/2001,Citadel -14184,The Shifting Realities of Philip K. Dick,Philip K. Dick/Lawrence Sutin,4.09,0679747877,9780679747871,en-US,384,903,40,1/30/1996,Vintage -14186,The Collected Stories of Philip K. Dick 3: Second Variety,Philip K. Dick/John Brunner,4.26,0806512261,9780806512266,eng,414,3135,75,4/1/2002,Citadel -14188,The Minority Report (Collected Stories of Philip K. Dick),Philip K. Dick,4.19,0806521686,9780806521688,eng,396,20,0,1/1/2000,Citadel Press -14194,A Man's Protection,Jayne Castle/Jayne Ann Krentz,3.88,0440151880,9780440151883,eng,186,275,6,12/31/1982,Dell Publishing Company -14196,Jonathan Strange y el señor Norrell,Susanna Clarke/Ana María de la Fuente,3.82,8478889736,9788478889730,spa,795,200,38,9/1/2005,Salamandra -14214,Hunger,Lan Samantha Chang,3.92,0140288481,9780140288483,eng,192,797,72,1/1/2000,Penguin Books -14227,The Diezmo,Rick Bass,3.46,0618710507,9780618710508,eng,224,11,1,6/15/2006,Mariner Books -14228,Colter: The True Story of the Best Dog I Ever Had,Rick Bass,3.88,0618127364,9780618127368,eng,208,463,65,6/1/2001,Mariner Books -14230,The Hermit's Story,Rick Bass,4.12,0618380442,9780618380442,eng,192,437,45,9/18/2003,Mariner Books -14235,The Great Gatsby,F. Scott Fitzgerald,3.91,0891906797,9780891906797,eng,182,149,7,9/1/1925,Amereon Ltd -14236,Gould's Book of Fish: A Novel in Twelve Fish,Richard Flanagan,3.69,1843540703,9781843540700,eng,449,3261,384,3/15/2003,Atlantic Books -14240,One Hundred Years of Solitude,Gabriel García Márquez/Gregory Rabassa,4.07,0060750766,9780060750763,eng,560,130,5,2/20/2004,Harper -14241,The Liars' Club,Mary Karr,3.93,0143035746,9780143035749,eng,320,52578,2464,5/31/2005,Penguin Books -14242,The Pretender (Liar's Club #1),Celeste Bradley,3.98,0312984855,9780312984854,en-GB,358,2241,106,6/16/2003,St. Martin's Paperbacks -14243,The Impostor (Liar's Club #2),Celeste Bradley,3.91,0312984863,9780312984861,eng,369,1356,69,10/19/2003,St. Martin's Paperbacks -14248,Small Wonder,Barbara Kingsolver,4.01,0060504080,9780060504083,eng,264,8965,623,4/15/2003,Harper Perennial -14249,Prodigal Summer,Barbara Kingsolver,4.00,0060959037,9780060959036,eng,444,88241,5652,10/16/2001,Harper Perennial -14257,English Passengers,Matthew Kneale,4.06,038549744X,9780385497442,eng,446,4863,409,1/16/2001,Anchor -14258,English Passengers,Matthew Kneale,4.06,0140285210,9780140285215,en-GB,462,537,65,4/26/2001,Penguin -14263,Independent People,Halldór Laxness/James Anderson Thompson,4.17,1860467768,9781860467769,en-GB,544,80,11,9/28/2001,Harvill Press -14264,World Light,Halldór Laxness/Magnus Magnusson,4.14,0375727574,9780375727573,eng,624,551,52,10/8/2002,Vintage -14265,Under the Glacier,Halldór Laxness/Magnus Magnusson,3.59,1400034418,9781400034413,eng,240,1577,181,3/8/2005,Vintage -14266,Paradise Reclaimed,Halldór Laxness/Magnus Magnusson/Jane Smiley,3.77,0375727582,9780375727580,eng,304,447,33,4/2/2002,Vintage -14267,Iceland's Bell,Halldór Laxness/Philip Roughton/Adam Haslett,3.89,1400034256,9781400034253,eng,425,1262,90,10/14/2003,Vintage -14268,The Atom Station,Halldór Laxness/Magnus Magnusson,3.55,0099455153,9780099455158,en-GB,192,592,52,3/4/2004,Vintage Classics -14271,Island: Collected Stories,Alistair MacLeod,4.19,0099422328,9780099422327,eng,448,837,102,9/5/2002,Vintage -14279,Carried Away: A Personal Selection of Stories,Alice Munro/Margaret Atwood,4.15,0307264866,9780307264862,eng,608,620,83,9/26/2006,Everyman's Library -14281,Selected Stories,Alice Munro,4.28,067976674X,9780679766742,eng,688,5749,285,11/11/1997,Vintage -14282,Runaway,Alice Munro,3.98,140004281X,9781400042814,eng,335,633,115,10/28/2004,Alfred A. Knopf -14283,Something I've Been Meaning to Tell You: 13 Stories,Alice Munro,4.10,0375707484,9780375707483,eng,246,2386,178,10/12/2004,Vintage -14284,The Beggar Maid: Stories of Flo and Rose,Alice Munro/Susanna Basso,3.93,0679732713,9780679732716,eng,210,2814,258,5/7/1991,Vintage -14285,Lives of Girls and Women,Alice Munro,3.99,0375707492,9780375707490,eng,277,8461,553,2/13/2001,Vintage -14286,Open Secrets,Alice Munro,4.07,0679755624,9780679755623,eng,304,4038,297,11/7/1995,Vintage -14289,Coin Locker Babies,Ryū Murakami/Stephen Snyder,3.68,4770028962,9784770028969,eng,393,6440,298,8/9/2002,Kodansha -14295,Pastoralia,George Saunders,4.11,0747553866,9780747553861,eng,188,13431,931,9/8/2001,Bloomsbury Publishing -14300,Good Faith,Jane Smiley,3.26,0385721056,9780385721059,eng,432,1837,245,5/11/2004,Anchor Books -14305,The Greenlanders,Jane Smiley,3.90,1400095468,9781400095469,eng,608,2013,311,9/13/2005,Anchor -14310,The Autograph Man,Zadie Smith,3.16,0140276343,9780140276343,eng,420,535,66,5/22/2003,Penguin Books Ltd -14312,El cazador de autógrafos,Zadie Smith,3.16,8478888462,9788478888467,spa,379,11,1,12/30/2003,Salamandra -14313,Anna Karenina,Leo Tolstoy/Constance Garnett,4.05,0809596814,9780809596812,eng,740,28,7,1/1/2004,Wildside Press -14318,Chronicles: Volume One,Bob Dylan,3.98,0743244583,9780743244589,eng,320,42014,1304,9/13/2005,Simon Schuster -14319,The Essential Interviews,Bob Dylan/Jonathan Cott,4.11,1932958096,9781932958096,eng,447,1097,47,5/17/2006,Wenner Books -14320,The Bob Dylan Encyclopedia,Michael Gray,4.27,0826469337,9780826469335,eng,800,289,8,9/21/2006,Bloomsbury Academic -14326,Going Native,Stephen Wright,3.58,140007942X,9781400079421,eng,320,593,62,4/12/2005,Vintage -14336,Stranger In A Strange Land,Robert A. Heinlein,3.92,0340837950,9780340837955,eng,672,561,48,3/14/2005,Hodder & Stoughton -14345,Rain of Gold,Victor Villaseñor,4.48,038531177X,9780385311779,eng,576,5880,618,9/1/1992,Delta -14349,The Pearl/The Red Pony,John Steinbeck,3.64,0140042326,9780140042320,eng,181,1469,39,9/30/1976,Penguin Books -14350,A Midsummer Night's Dream,William Shakespeare/Stephen Orgel/A.R. Braunmuller/Russ McDonald,3.94,0140714553,9780140714555,eng,144,1002,57,8/1/2000,Penguin Classics -14358,A Ring of Endless Light (Austin Family #4),Madeleine L'Engle,4.15,0440910811,9780440910817,eng,332,16755,620,9/1/1995,Bantam Doubleday Dell Publishing Group -14362,Bless Me Ultima,Rudolfo Anaya,3.77,0446675369,9780446675369,en-US,290,22435,1912,4/1/1999,Grand Central Publishing -14367,Island of the Blue Dolphins,Scott O'Dell/Tantoo Cardinal,3.83,0307243168,9780307243164,en-US,4,205,49,5/10/2005,Listening Library (Audio) -14375,A Reading Guide to Island of the Blue Dolphins,Patricia McHugh,3.89,0439463696,9780439463690,eng,64,4,0,7/1/2003,Scholastic Reference -14376,Einstein's Dreams,Alan Lightman,4.07,140007780X,9781400077809,eng,144,25551,2576,11/9/2004,Vintage -14378,Sweet Dreams Mimi (Baby Einstein),Julie Aigner-Clark/Nadeem Zaidi,3.13,0786851155,9780786851157,eng,16,37,3,4/1/2004,Disney Press -14384,A Hunger Like No Other (Immortals After Dark #1),Kresley Cole,4.19,1416509879,9781416509875,eng,356,57010,2634,4/1/2006,Pocket Star -14385,The Price of Pleasure (Sutherland Brothers #2),Kresley Cole,4.00,0743466500,9780743466509,en-US,353,118,5,7/1/2004,Pocket Books -14386,If You Dare (MacCarrick Brothers #1),Kresley Cole,4.00,1416503595,9781416503590,eng,349,10615,450,5/1/2005,Pocket Books -14389,Organic Church: Growing Faith Where Life Happens,Neil Cole/Leonard Sweet,3.88,078798129X,9780787981297,en-US,237,847,68,9/8/2005,Jossey-Bass -14393,Chekhov's Doctors: A Collection of Chekhov's Medical Tales (Literature & Medicine 5),Anton Chekhov/Jack Coulehan/Robert Coles,4.04,0873387805,9780873387804,en-GB,228,51,3,9/28/2003,Kent State University Press (OH) -14403,The Story of Ruby Bridges,Robert Coles/George Ford,4.43,0439598443,9780439598446,eng,32,11403,605,6/1/2004,Scholastic Paperbacks -14406,The Complete Lyrics of Cole Porter,Cole Porter/Robert Kimball/John Updike,4.53,0306804832,9780306804830,en-US,544,32,2,8/21/1992,Da Capo Press -14414,Barron's Book Notes: Lord of the Flies,Michael Spring/William Golding,3.67,0812034260,9780812034264,eng,120,6,0,10/1/1984,Barron's Educational Series -14427,The spire William Golding : notes,Steve Eddy,3.60,1405835648,9781405835640,eng,135,594,35,10/1/2006,York Press -14428,The Inheritors,William Golding,3.52,0156443791,9780156443791,en-US,240,2826,266,9/25/1963,Mariner Books -14430,The Pyramid,William Golding,3.33,0571192521,9780571192526,eng,217,527,20,7/22/1997,Faber Faber -14455,President Nixon: Alone in the White House,Richard Reeves,3.96,0743227190,9780743227193,en-US,704,391,23,10/10/2002,Simon Schuster -14456,Awakenings,Oliver Sacks,4.10,0375704051,9780375704055,eng,464,8982,333,10/5/1999,Vintage -14460,Kitty Goes to Washington (Kitty Norville #2),Carrie Vaughn,3.87,0446616427,9780446616423,eng,342,18327,665,7/1/2006,Grand Central Publishing -14461,Kitty and the Midnight Hour (Kitty Norville #1),Carrie Vaughn,3.66,0446616419,9780446616416,eng,259,27510,1541,11/1/2005,Grand Central Publishing -14462,Not Since Carrie: Forty Years of Broadway Musical Flops,Ken Mandelbaum,4.09,0312082738,9780312082734,eng,384,362,38,8/15/1992,St. Martin's Griffin -14463,Kitty Takes a Holiday (Kitty Norville #3),Carrie Vaughn,3.91,0446618748,9780446618748,eng,303,16168,505,4/1/2007,Grand Central Publishing -14467,The Best Short Stories of O. Henry,O. Henry/Bennett Cerf/Van H. Cartmell,4.26,0679601228,9780679601227,eng,368,3551,133,1/16/2000,Modern Library -14472,Amelia Bedelia 50th Anniversary Library: Amelia Bedelia Amelia Bedelia and the Surprise Shower and Play Ball Amelia Bedelia,Peggy Parish/Various,4.43,0060542381,9780060542382,eng,96,257,12,12/26/2012,Greenwillow Books -14473,Merry Christmas Amelia Bedelia,Peggy Parish/Lynn Sweat,4.29,0060099453,9780060099459,eng,64,2508,63,10/1/2002,Greenwillow Books -14475,Amelia Bedelia Goes Camping,Peggy Parish/Lynn Sweat,4.13,0060511060,9780060511067,eng,64,2082,76,4/15/2003,Greenwillow Books -14476,Amelia Bedelia and the Baby (Amelia Bedelia),Peggy Parish/Lynn Sweat,4.17,0606300945,9780606300940,eng,64,3,0,3/1/2004,Turtleback Books Distributed by Demco Media -14477,Teach Us Amelia Bedelia,Peggy Parish/Lynn Sweat,4.21,0060511141,9780060511142,eng,64,3134,98,6/29/2004,Greenwillow Books -14479,Amelia Bedelia Helps Out,Peggy Parish/Lynn Sweat,4.25,0060511117,9780060511111,eng,64,7764,67,1/18/2005,Greenwillow Books -14485,Directing the Documentary,Michael Rabiger,4.23,0240806085,9780240806082,en-US,648,183,24,3/30/2004,Focal Press -14487,Introduction to Documentary,Bill Nichols,3.79,0253214696,9780253214690,en-US,248,204,5,11/12/2001,Indiana University Press -14490,$30 Film School: How to Write Direct Produce Shoot Edit Distribute Tour With and Sell Your Own No-Budget Digital Movie,Michael W. Dean,3.49,1592000673,9781592000678,eng,528,30,4,5/13/2003,Cengage Learning -14491,Salonica City of Ghosts: Christians Muslims and Jews 1430-1950,Mark Mazower,4.27,0375727388,9780375727382,eng,544,755,73,5/9/2006,Vintage -14492,Farewell to Salonica: City at the Crossroads,Leon Sciaky/Peter Sciaky,4.13,1589880021,9781589880023,eng,299,63,3,6/1/2003,Paul Dry Books -14495,The Mind Parasites,Colin Wilson,3.77,0974935999,9780974935997,en-GB,240,927,90,10/1/2005,Monkfish Book Publishing -14497,Neverwhere (London Below #1),Neil Gaiman,4.17,0060557818,9780060557812,eng,370,345122,15199,9/2/2003,William Morrow Paperbacks -14498,Neil Gaiman's Neverwhere,Mike Carey/Glenn Fabry/Neil Gaiman,4.24,1401210074,9781401210076,eng,224,33858,569,2/14/2007,Vertigo -14503,Neverwhere,Neil Gaiman,4.17,2290303348,9782290303344,fre,350,105,10,5/17/2001,J'AI LU -14504,Marjorie Morningstar,Herman Wouk,3.98,0316955132,9780316955133,eng,565,6609,582,6/15/1992,Back Bay Books -14535,El Perfume: Historia De Un Asesino,Patrick Süskind,4.02,8432216887,9788432216886,spa,312,17,1,2/19/2018,Planeta Publishing -14542,The Perfume of the Lady in Black,Gaston Leroux/Margaret Jull Costa/Terry Hale,3.53,1873982984,9781873982983,eng,252,71,14,2/25/2015,Dedalus Limited -14551,The Perfume Factory,Alex Austin,4.18,1790877792,9781790877799,eng,227,9,2,12/12/2018,Kindle -14560,Psyche in a Dress,Francesca Lia Block,3.84,0060763728,9780060763725,eng,116,2449,217,9/1/2006,Joanna Cotler Books -14566,Echo,Francesca Lia Block,3.87,0064407446,9780064407441,eng,215,4894,235,8/6/2001,HarperTeen -14567,Ecstasia,Francesca Lia Block,3.90,0142400378,9780142400371,eng,196,1543,51,1/19/2004,Firebird -14570,Eight Cousins (Eight Cousins #1),Louisa May Alcott,4.01,0486455599,9780486455594,eng,224,31532,767,2/27/2007,Dover Publications -14572,Peace Is Every Step: The Path of Mindfulness in Everyday Life,Thich Nhat Hanh/Arnold Kotler/Dalai Lama XIV,4.33,0553351397,9780553351392,eng,160,25071,1156,3/1/1992,Bantam -14583,Night Beat: A Shadow History of Rock & Roll,Mikal Gilmore,3.74,0385484364,9780385484367,en-US,496,67,8,2/1/1999,Knopf Publishing Group -14591,The History of Rock and Roll (World History),Adam Woog,4.00,1560064986,9781560064985,eng,112,5,0,3/28/1999,Lucent Books -14595,Please Kill Me: The Uncensored Oral History of Punk,Legs McNeil/Gillian McCain,4.16,0802142648,9780802142641,eng,452,25094,937,4/13/2006,Grove Press -14604,The Day the Country Died: A History of Anarcho-Punk 1980-1984,Ian Glasper,3.99,1901447707,9781901447705,eng,375,206,16,3/1/2007,Cherry Red Books -14605,Edie: Girl on Fire,David Weisman/Melissa Painter,4.22,0811855260,9780811855266,eng,192,727,19,11/2/2006,Chronicle Books -14606,Edie,Jean Stein/George Plimpton,4.14,0802134106,9780802134103,eng,564,4639,227,10/14/1994,Grove Press -14616,The Leatherstocking Tales Vol. 1: The Pioneers / The Last of the Mohicans / The Prairie,James Fenimore Cooper/Blake Nevius,3.88,0940450208,9780940450202,eng,1347,348,24,7/1/1985,Library of America -14640,The Catcher in the Rye: Annotations and Study Aids,J.D. Salinger/Rudolph F. Rau,3.80,3125738083,9783125738089,eng,80,78,1,12/1/1999,Klett -14641,Der Fänger im Roggen,J.D. Salinger/Eike Schönfeld,3.80,3462032186,9783462032185,ger,270,33,6,2/20/2003,Kiepenheuer & Witsch -14644,A House Divided (House of Earth #3),Pearl S. Buck,3.89,1559210346,9781559210348,eng,348,2849,177,1/1/2006,Moyer Bell and its subsidiaries -14647,Sons (House of Earth #2),Pearl S. Buck,3.84,1559210397,9781559210393,eng,320,3387,242,1/1/2005,Moyer Bell and its subsidiaries -14648,East Wind: West Wind,Pearl S. Buck,4.00,1559210869,9781559210867,eng,288,3238,180,4/5/1995,Moyer Bell and its subsidiaries -14656,Encyclopedia Brown Solves Them All (Encyclopedia Brown #5),Donald J. Sobol/Leonard W. Shortall,4.01,0553480804,9780553480801,eng,96,2602,49,12/1/1992,Yearling -14657,Encyclopedia Brown and the Case of the Slippery Salamander (Encyclopedia Brown #22),Donald J. Sobol/Warren Chang,4.08,0553485210,9780553485219,en-US,96,403,6,8/8/2003,Yearling -14658,Encyclopedia Brown and the Case of the Treasure Hunt (Encyclopedia Brown #17),Donald J. Sobol/Gail Owens,4.03,0553156500,9780553156508,eng,96,637,19,1/1/1989,Yearling -14659,Encyclopedia Brown and the Case of the Sleeping Dog (Encyclopedia Brown #21),Donald J. Sobol/Warren Chang,4.04,0553485172,9780553485172,en-US,80,512,13,9/7/1999,Yearling Books -14663,When Red Is Black (Inspector Chen Cao #3),Qiu Xiaolong,3.77,156947396X,9781569473962,eng,310,1141,120,8/1/2005,Soho Crime -14664,The Red and the Black,Stendhal/Burton Raffel/Diane Johnson,3.88,0812972074,9780812972078,eng,560,327,35,5/11/2004,Modern Library -14666,Red and Black,Stendhal/Robert M. Adams,3.88,0393098214,9780393098211,eng,572,53,4,3/1/1969,W. W. Norton & Company -14670,Black on Red: My 44 Years Inside the Soviet Union: An Autobiography,Robert Robinson/Jonathan Slevin,4.33,0874918855,9780874918854,eng,436,80,14,12/31/1988,Acropolis Books (NY) -14673,Thinking Visually (Basics Illustration #1),Mark Wigan,3.62,2940373159,9782940373154,eng,184,51,5,12/20/2006,AVA Publishing -14679,Love,Stendhal/Gilbert Sale/Suzanne Sale/B.C.J.G. Knight/Jean Stewart,3.71,014044307X,9780140443073,eng,336,1083,51,8/28/1975,Penguin Classics -14680,The Charterhouse of Parma,Stendhal/Richard Howard/Robert Andrew Parker,3.82,0679783180,9780679783183,eng,532,10856,248,9/12/2000,Modern Library -14684,The Charterhouse of Parma,Stendhal/Roger Pearson/Margaret Mauldon,3.82,0192839578,9780192839572,eng,560,51,8,12/9/1999,Oxford University Press -14686,The King of Elfland's Daughter,Lord Dunsany/Neil Gaiman,3.84,034543191X,9780345431912,eng,240,4918,427,7/6/1999,Del Rey -14688,In the Land of Time: And Other Fantasy Tales,Lord Dunsany/S.T. Joshi,4.12,014243776X,9780142437766,eng,432,605,40,2/24/2004,Penguin Classics -14691,Fifty-One Tales,Lord Dunsany/John Gregory Betancourt/Lin Carter,3.79,1587150794,9781587150791,eng,108,357,50,4/1/2002,Borgo Press -14693,The Sword of Welleran and Other Stories,Lord Dunsany/Sidney H. Sime,4.01,0486442179,9780486442174,eng,112,328,41,4/1/2005,Dover Publications -14698,On the Lines of Morris' Romances: Two Books That Inspired J. R. R. Tolkien-The Wood Beyond the World and the Well at the World's End,William Morris/Michale W. Perry,4.09,1587420244,9781587420245,eng,288,11,1,12/23/2003,Inkling Books -14705,Faust Part One,Johann Wolfgang von Goethe/David Luke,3.93,0192835955,9780192835956,en-US,240,1783,67,10/22/1998,Oxford University Press USA -14706,Faust First Part,Johann Wolfgang von Goethe/Peter Salm,3.93,0553213482,9780553213485,eng,327,48213,675,7/1/1988,Bantam Classics -14707,Faust Part Two,Johann Wolfgang von Goethe/David Luke,3.73,0192836366,9780192836366,eng,304,3560,87,7/22/1999,Oxford University Press USA -14712,Nathan the Wise Minna von Barnhelm and Other Plays and Writings,Gotthold Ephraim Lessing,3.70,0826407072,9780826407078,eng,370,88,3,12/1/1991,Bloomsbury Academic -14719,Your First Year in Network Marketing: Overcome Your Fears Experience Success and Achieve Your Dreams!,Mark Yarnell/Rene Reid Yarnell/Richard Poe,4.04,0761512195,9780761512196,eng,304,843,57,1/7/1998,Three Rivers Press -14721,The Wealth of Networks: How Social Production Transforms Markets and Freedom,Yochai Benkler,3.97,0300110561,9780300110562,eng,528,1568,47,5/16/2006,Yale University Press -14729,War Trash,Ha Jin,3.79,1400075793,9781400075799,eng,368,3007,255,5/10/2005,Vintage -14731,戰廢品,Ha Jin/季思聰,3.79,9571343897,9789571343891,zho,392,1,0,11/1/2005,時報出版 -14741,Zone of the Enders: The 2nd Runner Official Strategy Guide,Tim Bogenn,5.00,0744002354,9780744002355,eng,128,2,0,3/6/2003,BradyGames -14743,The God Delusion,Richard Dawkins,3.90,0618680004,9780618680009,eng,374,197099,6216,10/18/2006,Houghton Mifflin Co. (Boston/NY) -14748,Good in Bed (Cannie Shapiro #1),Jennifer Weiner,3.72,0743418174,9780743418171,eng,376,269843,5384,4/2/2002,Washington Square Press -14755,The Guy Not Taken: Stories,Jennifer Weiner,3.48,1416535209,9781416535201,en-US,292,21715,1044,9/5/2006,Atria Books -14756,Goodnight Nobody,Jennifer Weiner,3.65,0743470125,9780743470124,en-US,400,54117,1849,5/2/2006,Washington Square Press -14768,Los diarios de Nanny,Emma McLaughlin/Nicola Kraus,3.42,8420465607,9788420465609,spa,392,33,4,1/1/2003,Santillana USA Publishing Company -14769,Davita's Harp,Chaim Potok,3.99,0449911837,9780449911839,eng,371,5005,314,8/27/1996,Ballantine Books -14770,Neuromancer,William Gibson,3.90,0441012035,9780441012039,eng,384,1647,175,11/2/2004,Ace -14778,Chosen By God: Know God's Perfect Plan for His Glory and His Children,R.C. Sproul,4.34,0842313354,9780842313353,eng,208,6861,205,9/21/1994,Tyndale Momentum -14781,The Chosen: The Hidden History of Admission and Exclusion at Harvard Yale and Princeton,Jerome Karabel,4.08,061877355X,9780618773558,eng,736,200,22,9/8/2006,Mariner Books -14785,Chosen Prey (Lucas Davenport #12),John Sandford,4.24,0425182878,9780425182871,en-US,383,22949,376,5/1/2002,Berkley -14786,Chosen But Free,Norman L. Geisler,3.31,0764225219,9780764225215,en-US,285,361,43,9/1/2001,Bethany House Publishers -14788,The Lady Chosen (Bastion Club #1),Stephanie Laurens,3.97,0060002069,9780060002060,eng,464,5686,193,8/26/2003,Avon -14790,Maya Cosmogenesis 2012: The True Meaning of the Maya Calendar End-Date,John Major Jenkins/Terence McKenna,3.71,1879181487,9781879181489,en-US,480,186,17,8/1/1998,Bear Company -14808,Travels of Marco Polo,Marco Polo/Howard Mittelmark/Milton Rugoff,3.58,0451529510,9780451529510,eng,297,68,16,10/5/2004,Signet -14812,The Sword of Angels (The Bronze Knight #3),John Marco,3.90,075640360X,9780756403607,en-US,980,827,23,7/1/2006,Daw Books -14817,A Scanner Darkly,Philip K. Dick,4.02,057507681X,9780575076815,eng,219,70604,1925,8/17/2006,Gollancz -14836,Midnight's Children,Salman Rushdie,3.98,0099578514,9780099578512,eng,647,87463,4469,5/1/1995,Vintage -14839,Last Man Standing,David Baldacci,4.04,0446611778,9780446611770,eng,640,41611,727,9/1/2002,Warners Visions Books -14841,Last Man Standing,David Baldacci,4.04,0743428951,9780743428958,eng,548,60,6,6/3/2002,Pocket Books -14851,Last Man Standing,David Baldacci,4.04,0330419706,9780330419703,en-GB,556,110,15,11/1/2003,Pan Publishing -14861,Rape: A Love Story,Joyce Carol Oates,3.57,0786712945,9780786712946,eng,128,114,24,12/14/2003,Carroll & Graf Publishers -14864,Plain Truth,Jodi Picoult,3.98,0743275012,9780743275019,eng,405,143658,5760,11/1/2004,Atria Books -14865,Vanishing Acts,Jodi Picoult,3.69,0743454553,9780743454551,eng,426,87109,3920,11/15/2005,Washington Square Press -14866,Nineteen Minutes,Jodi Picoult,4.12,0743496728,9780743496728,eng,440,270574,13491,3/5/2007,Atria Books -14867,The Pact,Jodi Picoult,4.01,0340838035,9780340838037,en-GB,480,988,115,7/18/2005,Hodder & Stoughton -14868,Compasión,Jodi Picoult,3.58,8408068911,9788408068914,spa,554,12,1,1/1/2007,Booket -14870,The Outsiders,S.E. Hinton/Jodi Picoult,4.09,0143039857,9780143039853,eng,160,1589,132,5/30/2006,Penguin Books -14883,Die Wahrheit der letzten Stunde,Jodi Picoult,3.80,3404145844,9783404145843,ger,684,7,2,8/1/2001,Lübbe -14886,Die Hexen von Salem Falls,Jodi Picoult,3.82,3822505870,9783822505878,ger,472,23,3,8/1/2002,Kabel Verlag GmbH Ernst -14888,In einer regnerischen Nacht.,Jodi Picoult,3.58,3492236553,9783492236553,ger,512,1,0,2/1/2003,Piper -14891,A Tree Grows in Brooklyn,Betty Smith,4.26,0061120073,9780061120077,eng,496,345283,16114,5/30/2006,HarperCollins Publishers -14895,The Sound of Mountain Water,Wallace Stegner,4.06,0140266747,9780140266740,en-US,288,250,34,11/1/1997,Penguin Books -14896,Wolf Willow,Wallace Stegner/Page Stegner,3.97,0141185015,9780141185019,eng,306,597,97,12/1/2000,Penguin Classics -14899,Mormon Country,Wallace Stegner/Richard W. Etulain,3.95,0803293054,9780803293052,eng,362,557,74,9/1/2003,Bison Books -14905,The Complete Novels,Jane Austen,4.55,0140259449,9780140259445,eng,1344,21633,351,6/17/1996,Penguin -14909,Jane Austen's Letters,Jane Austen,4.16,1414500084,9781414500089,en-US,112,42,4,1/1/2003,Pavilion Press (Wi) -14911,Pride and Prejudice,Jane Austen,4.26,070898228X,9780708982280,eng,533,18,5,12/1/1984,Charnwood -14913,The Complete Novels of Jane Austen Vol 1: Sense & Sensibility/Pride & Prejudice/Mansfield Park,Jane Austen,4.53,0679600264,9780679600268,eng,898,254,22,9/5/1992,Modern Library -14914,Pride and Prejudice,Jane Austen/Pat Rogers,4.26,0521825148,9780521825146,eng,540,56,7,7/1/2006,Cambridge University Press -14917,Desire and Duty: A Sequel to Jane Austen's Pride and Prejudice,Ted Bader/Marilyn Bader,2.86,0965429903,9780965429900,eng,286,114,9,2/1/1997,Revive Publishing -14926,Emma,Jane Austen/James Kinsley/Adela Pinch,4.00,0192802372,9780192802378,eng,402,737,72,7/10/2003,Oxford University Press -14927,Emma,Jane Austen,4.00,1587263963,9781587263965,en-US,424,83,6,7/14/2006,Ann Arbor Media -14930,Emma,Jane Austen/Prunella Scales,4.00,1572705329,9781572705326,eng,15,28,3,5/5/2006,Audio Partners -14934,Sense and Sensibility,Jane Austen/Claudia L. Johnson,4.07,039397751X,9780393977516,eng,269,768,68,10/30/2001,W. W. Norton & Company -14940,Who's Afraid of Virginia Woolf?,Edward Albee,4.08,0451218590,9780451218599,eng,272,53955,1041,8/1/2006,NAL -14941,To the Lighthouse,Virginia Woolf/Mark Hussey,3.78,0156030470,9780156030472,eng,242,514,59,8/1/2005,Mariner Books -14942,Mrs. Dalloway,Virginia Woolf/Maureen Howard,3.79,0151009988,9780151009985,eng,194,176190,5595,10/28/2002,Houghton Mifflin Harcourt -14943,A Room of One's Own,Virginia Woolf,4.14,1568493665,9781568493664,eng,125,27,4,12/1/1994,Buccaneer Books -14945,Moments of Being: A Collection of Autobiographical Writing,Virginia Woolf/Jeanne Schulkind,4.26,0156619180,9780156619189,eng,230,1729,121,8/23/1985,Mariner Books -14946,The Complete Shorter Fiction of Virginia Woolf,Virginia Woolf/Susan Dick,4.05,0156212501,9780156212502,eng,345,747,36,6/1/1989,Mariner Books -14947,The Diary of Virginia Woolf Volume Two: 1920-1924,Virginia Woolf/Anne Olivier Bell/Andrew McNeillie,4.37,0156260379,9780156260374,eng,384,383,11,9/17/1980,Mariner Books -14948,A Writer's Diary,Virginia Woolf/Leonard Woolf,4.26,0156027917,9780156027915,eng,355,3345,133,3/31/2003,Mariner Books -14951,The Autobiography of Alice B. Toklas,Gertrude Stein,3.59,0141185368,9780141185361,eng,272,255,31,4/26/2001,Penguin Classics -14959,Strange Fits of Passion,Anita Shreve,3.76,0156031396,9780156031394,eng,352,7423,390,10/4/2005,Mariner Books -14960,Eden Close,Anita Shreve,3.66,0156031337,9780156031332,en-US,265,8661,447,10/4/2005,Mariner Books -14962,Where or When,Anita Shreve,3.30,0156031272,9780156031271,eng,241,6343,551,10/4/2005,Mariner Books -14964,Body Surfing,Anita Shreve,3.32,0316059854,9780316059855,eng,291,16371,1538,4/24/2007,Little Brown and Company -14975,Labyrinth (Languedoc #1),Kate Mosse,3.57,0425213978,9780425213971,eng,515,40300,2498,2/6/2007,Berkley Books -14978,Labyrinth of Evil (Star Wars: The Dark Lord Trilogy #1),James Luceno,3.84,0345475739,9780345475732,eng,370,5701,215,9/27/2005,Del Rey Books -14981,Labyrinths: Selected Stories and Other Writings,Jorge Luis Borges/James E. Irby/Donald A. Yates/André Maurois,4.46,0141184841,9780141184845,eng,287,934,82,9/28/2000,Penguin -14983,El laberinto,Kate Mosse/Claudia Conde,3.57,8408065874,9788408065876,spa,626,52,6,1/1/2006,Planeta Publishing -14990,Spook: Science Tackles the Afterlife,Mary Roach,3.58,0393329127,9780393329124,en-US,311,30473,2399,9/26/2006,W.W. Norton & Company (NYC) -14995,Odd Thomas (Odd Thomas #1),Dean Koontz,3.97,0553384287,9780553384284,eng,446,227884,6253,8/29/2006,Bantam -14996,Brother Odd (Odd Thomas #3),Dean Koontz,3.98,0553804804,9780553804805,eng,364,54120,2053,11/28/2006,Bantam -15003,Rape: A Love Story,Joyce Carol Oates,3.57,0786714824,9780786714827,eng,154,3604,364,12/21/2004,Carroll & Graf Publishers -15004,First Love: A Gothic Tale,Joyce Carol Oates/Barry Moser/Erhan Sunar,3.19,088001508X,9780880015080,eng,86,579,83,8/21/1997,Ecco -15012,The Haunted Screen: Expressionism in the German Cinema and the Influence of Max Reinhardt,Lotte H. Eisner,4.16,0520024796,9780520024793,eng,360,274,10,1/7/1974,University of California Press -15014,Crucial Conversations: Tools for Talking When Stakes Are High,Kerry Patterson/Joseph Grenny/Ron McMillan/Al Switzler/Stephen R. Covey,4.03,0071401946,9780071401944,eng,240,40400,2256,7/9/2002,McGraw-Hill Education -15015,Conversations with God: An Uncommon Dialogue Book 1,Neale Donald Walsch,4.18,0399142789,9780399142789,eng,240,26465,1276,10/29/1996,Berkley -15018,Conversations With God: An Uncommon Dialogue Book 3,Neale Donald Walsch,4.21,1571741038,9781571741035,eng,392,14583,178,12/3/2005,Hampton Roads Publishing Company -15019,Conversations With God: An Uncommon Dialogue Book 2,Neale Donald Walsch,4.13,1571740562,9781571740564,eng,263,21800,225,12/3/2005,Hampton Roads Publishing Company -15021,Naked Conversations: How Blogs Are Changing the Way Businesses Talk with Customers,Robert Scoble/Shel Israel,3.72,047174719X,9780471747192,eng,251,547,32,1/1/2006,Wiley -15022,The Art of Civilized Conversation: A Guide to Expressing Yourself with Style and Grace,Margaret Shepherd/Penny Carter/Sharon Hogan,3.58,0767921690,9780767921695,en-US,228,457,72,12/27/2005,Three Rivers Press (CA) -15023,Conversation: A History of a Declining Art,Stephen Miller,3.20,0300110308,9780300110302,eng,368,95,16,3/11/2006,Yale University Press -15030,Bono: In Conversation with Michka Assayas,Michka Assayas,3.95,1573223093,9781573223096,en-US,336,1490,137,4/21/2005,Riverhead Hardcover -15034,Michael Powell: Interviews,David Lazar,3.95,1578064988,9781578064984,eng,186,20,1,3/3/2003,University Press of Mississippi -15044,Art and Lies,Jeanette Winterson,3.86,0679762701,9780679762706,eng,240,3469,141,2/20/1996,Vintage -15045,Tanglewreck,Jeanette Winterson,3.46,1582349193,9781582349190,eng,415,1684,202,7/1/2006,Bloomsbury Children's Books -15046,Weight: The Myth of Atlas and Heracles,Jeanette Winterson,3.77,1841957186,9781841957180,eng,151,4326,392,10/5/2005,Canongate U.S. -15047,The Passion,Jeanette Winterson,4.11,0802135226,9780802135223,eng,176,15572,1008,8/7/1997,Grove Press -15048,Art Objects: Essays on Ecstasy and Effrontery,Jeanette Winterson,4.05,0679768203,9780679768203,eng,192,1760,100,2/4/1997,Vintage -15049,The World and Other Places: Stories,Jeanette Winterson,3.86,0375702369,9780375702365,eng,240,1962,110,6/20/2000,Vintage -15050,Sexing the Cherry,Jeanette Winterson,3.81,0802135781,9780802135780,eng,167,12684,627,8/10/1998,Grove Press -15052,Lighthousekeeping,Jeanette Winterson,3.85,0156032899,9780156032896,eng,232,6229,497,4/3/2006,Mariner Books -15054,Written on the Body,Jeanette Winterson,4.07,0679744479,9780679744474,eng,192,20951,1361,2/1/1994,Vintage -15058,I'm Telling You Stories: Jeanette Winterson and the Politics of Reading (Postmodern Studies 25),Helena Grice/Tim Woods,3.70,9042003405,9789042003408,eng,136,10,2,1/1/1998,Brill/Rodopi -15060,Easy Riders Raging Bulls: How the Sex-Drugs-And-Rock-'N'-Roll Generation Saved Hollywood,Peter Biskind,4.12,0747544212,9780747544210,eng,506,414,26,12/10/2014,Bloomsbury Publishing PLC -15066,It's Only a Movie Ingrid: Encounters on and Off Screen,Alexander Walker,3.80,0747230218,9780747230212,eng,320,0,0,8/17/1989,Headline Book Publishing -15073,Portraits of Murder: 47 Short Stories Chosen by the Master of Suspense,Alfred Hitchcock/Don Tothe,3.89,0883657279,9780883657270,en-US,512,81,7,8/1/2005,Galahad Books -15075,The Art of Alfred Hitchcock: Fifty Years of His Motion Pictures,Donald Spoto,4.08,0385418132,9780385418133,en-US,496,468,18,12/1/1991,Anchor -15082,The Complete Films Of Alfred Hitchcock,Robert A. Harris/Michael S. Lasky,4.00,0806524278,9780806524276,eng,256,18,0,12/1/2002,Citadel -15085,The Mystery of the Whispering Mummy (Alfred Hitchcock and The Three Investigators #3),Robert Arthur/Alfred Hitchcock,3.84,0394837681,9780394837680,en-US,185,81,1,9/12/1985,Random House Books for Young Readers -15087,Alfred Hitchcock and the Making of Psycho,Stephen Rebello,3.90,0714530034,9780714530031,en-GB,224,13,0,1/1/1998,Marion Boyars Publishers Ltd -15096,Five Quarters of the Orange,Joanne Harris,3.85,0060958022,9780060958022,eng,307,26258,1936,6/4/2002,Harper Perennial -15098,Five Quarters of the Orange,Joanne Harris,3.85,0061214604,9780061214608,eng,336,582,74,1/2/2007,William Morrow Paperbacks -15100,Sleep Pale Sister,Joanne Harris,3.28,0060787112,9780060787110,en-US,396,2963,232,8/30/2005,William Morrow Paperbacks -15101,Blackberry Wine,Joanne Harris,3.80,0380815923,9780380815920,eng,368,10721,617,12/23/2003,William Morrow Paperbacks -15102,Gentlemen and Players,Joanne Harris,3.91,0060559144,9780060559144,eng,422,10511,1201,1/3/2006,William Morrow -15104,Blackberry Wine,Joanne Harris,3.80,0552998001,9780552998000,eng,334,506,55,4/1/2001,Black Swan -15110,The Lollipop Shoes (Chocolat #2),Joanne Harris,3.83,0385609485,9780385609487,eng,464,200,27,5/2/2007,Doubleday -15111,The French Kitchen: A Cookbook,Joanne Harris/Fran Warde,4.09,0385607016,9780385607018,eng,256,35,0,11/3/2003,Doubleday -15124,Holy Madness: The Shock Tactics Radical Teachings Crazy Wise Adepts Holy Fools Rascal Gurus,Georg Feuerstein/Roger Walsh,3.71,0140193707,9780140193701,eng,320,16,2,10/1/1992,Penguin Books -15136,The Adventuress,Audrey Niffenegger,3.33,081097052X,9780810970526,eng,144,1058,148,9/1/2006,Abrams -15137,The Time Traveler's Wife,Audrey Niffenegger/William Hope/Laurel Lefkow,3.97,0563504838,9780563504832,eng,5,17,0,8/1/2005,BBC Audiobooks -15138,La mujer del viajero en el tiempo,Audrey Niffenegger/Silvia Alemany,3.97,0307344835,9780307344830,spa,608,20,2,12/6/2005,Random House Mondadori -15148,Ralph Ellison: A Biography,Arnold Rampersad,4.15,0375408274,9780375408274,eng,657,182,24,4/24/2007,Knopf Publishing Group -15154,The Collectors (Camel Club #2),David Baldacci,4.02,044653109X,9780446531092,en-US,438,34462,1410,10/18/2006,Warner Books -15157,Saving Faith,David Baldacci,3.88,0446608890,9780446608893,eng,528,15509,671,9/1/2000,Vision -15160,Total Control,David Baldacci,4.08,033041965X,9780330419659,eng,613,86,6,8/1/2003,Pan Publishing -15167,She Got Up Off the Couch: And Other Heroic Acts from Mooreland Indiana,Haven Kimmel,4.05,074328500X,9780743285001,en-US,313,8769,935,2/1/2007,Free Press -15168,Orville: A Dog Story,Haven Kimmel/Robert Andrew Parker,4.13,061815955X,9780618159550,en-US,32,159,39,9/22/2003,Clarion Books -15170,The Solace Of Leaving Early,Haven Kimmel,3.79,0007152531,9780007152537,en-GB,315,87,15,11/3/2003,Flamingo -15173,The Used World,Haven Kimmel,3.63,0743247787,9780743247788,eng,308,1398,249,9/18/2007,Free Press -15174,Something Rising,Haven Kimmel,3.61,0743247779,9780743247771,eng,288,1237,154,4/5/2005,Free Press -15177,Bridge of Birds (The Chronicles of Master Li and Number Ten Ox #1),Barry Hughart,4.29,0345321383,9780345321381,eng,278,9010,944,4/12/1985,Del Rey -15186,American Film Guide,Frank N. Magill,0.00,0893562505,9780893562502,eng,5,0,0,1/1/1983,Salem Press Inc -15190,Looking for God in Harry Potter,John Granger,4.13,1414306342,9781414306346,eng,234,1347,94,2/17/2006,SaltRiver -15194,Shades of Murder (Mitchell and Markby Village #13),Ann Granger,3.88,0747268037,9780747268031,eng,404,260,25,2/1/2001,Headline -15195,The Complete Maus,Art Spiegelman,4.55,0141014083,9780141014081,eng,296,111475,5966,10/2/2003,Penguin Books -15196,Maus I: A Survivor's Tale: My Father Bleeds History (Maus #1),Art Spiegelman,4.34,0394541553,9780394541556,eng,159,203013,4873,11/1/1991,Pantheon Books -15209,Radical Chic & Mau-Mauing the Flak Catchers,Tom Wolfe,3.77,0553380621,9780553380620,eng,144,2288,106,10/5/1999,Bantam -15211,Katz und Maus,Günter Grass,3.54,3423118229,9783423118224,ger,178,427,23,9/1/1999,Deutscher Taschenbuch Verlag -15216,Sorcery Rising (Fool's Gold #1),Jude Fisher,3.56,0756401100,9780756401108,en-US,528,1313,52,7/1/2003,DAW -15221,The Lord of the Rings: The Two Towers: Visual Companion,Jude Fisher/Viggo Mortensen,4.51,0618258027,9780618258024,eng,72,4524,23,11/6/2002,Houghton Mifflin Harcourt -15225,In the Green Star's Glow (Green Star #5),Lin Carter,3.51,0879972165,9780879972165,eng,192,93,11,1/20/1976,DAW Books -15229,By the Light of the Green Star (Green Star #3),Lin Carter,3.53,0879971207,9780879971205,eng,175,102,10,7/16/1974,DAW -15232,The Lord of the Rings: A Reader's Companion,Wayne G. Hammond/Christina Scull,4.35,0618642676,9780618642670,eng,416,4380,21,12/27/2005,Houghton Mifflin Harcourt -15239,The Lord of the Rings: Official Movie Guide,Brian Sibley,4.39,0618154027,9780618154029,eng,120,6356,21,11/6/2001,Houghton Mifflin Harcourt -15241,The Two Towers (The Lord of the Rings #2),J.R.R. Tolkien/Peter S. Beagle,4.44,0618346260,9780618346264,eng,322,593467,5798,9/5/2003,Houghton Mifflin -15245,The Return of the King (The Lord of the Rings #3),J.R.R. Tolkien,4.53,0007171994,9780007171996,eng,554,265,5,11/6/2003,HarperCollins Publishers Ltd -15249,The Lord of the Rings: The Return of the King - Visual Companion,Jude Fisher,4.59,0007116268,9780007116263,eng,72,26,3,11/6/2003,HarperCollins -15251,Death's Acre: Inside the Legendary Forensic Lab the Body Farm Where the Dead Do Tell Tales,William M. Bass/Jon Jefferson,4.19,0425198324,9780425198322,eng,320,8481,451,10/5/2004,Berkley -15260,The Magical Worlds of Lord of the Rings: The Amazing Myths Legends and Facts Behind the Masterpiece,David Colbert,4.08,0425187713,9780425187715,eng,208,2073,50,10/1/2002,Berkley Trade -15273,The Rough Guide to Australia 7,Margo Daly/David Leffman/Anne Dehne/Chris Scott,3.93,1843534754,9781843534754,eng,1256,8,1,10/1/2005,Rough Guides -15276,The Rough Guide to Vietnam,Rough Guides/Jan Dodd/Mark Lewis/Ron Emmons,3.89,1843536161,9781843536161,eng,639,34,3,10/1/2006,Rough Guides -15294,魔戒首部曲:魔戒現身,J.R.R. Tolkien/托爾金/Alan Lee/朱學恆,4.36,9570823364,9789570823363,zho,608,26,0,12/20/2001,聯經出版事業股份有限公司 -15295,A Gateway to Sindarin: A Grammar of an Elvish Language from J.R.R. Tolkien's Lord of the Rings,David Salo,3.73,0874808006,9780874808001,en-US,438,7,0,11/8/2004,University of Utah Press -15298,The Return of the King (The Lord of the Rings #3),J.R.R. Tolkien,4.53,0618574972,9780618574971,en-US,508,1635,74,6/1/2005,Mariner Books -15309,The Laughing Corpse (Anita Blake Vampire Hunter #2),Laurell K. Hamilton,4.12,0425204669,9780425204665,en-US,301,67686,1409,8/2/2005,Berkley -15312,What the Corpse Revealed,Hugh Miller,3.79,0312975732,9780312975739,eng,320,297,18,12/15/2000,St. Martin's True Crime -15314,Corpse: Nature Forensics and the Struggle to Pinpoint Time of Death,Jessica Snyder Sachs,3.93,0738207713,9780738207711,eng,270,937,70,10/17/2002,Basic Books -15316,The Main Corpse (A Goldy Bear Culinary Mystery #6),Diane Mott Davidson,3.86,0553574639,9780553574630,en-US,384,315,22,7/1/1997,Bantam -15318,魔戒二部曲:雙城奇謀,J.R.R. Tolkien/托爾金/Alan Lee/朱學恆,4.44,9570823372,9789570823370,zho,467,24,0,12/20/2001,聯經出版事業股份有限公司 -15320,Exquisite Corpse,Poppy Z. Brite,3.75,0684836270,9780684836270,eng,240,8582,574,8/20/1997,Gallery Books -15330,The Return of the King (The Lord of the Rings #3),Brian Sibley/J.R.R. Tolkien,4.35,0563536594,9780563536598,eng,1,17,3,3/4/2002,BBC Audiobooks Ltd -15331,The Fellowship of the Ring (The Lord of the Rings #1),J.R.R. Tolkien,4.36,0618574948,9780618574940,eng,506,1323,121,6/1/2004,Houghton Mifflin Company -15336,The Lord of the Rings / The Hobbit,J.R.R. Tolkien,4.59,0007144083,9780007144082,eng,1600,141,5,10/7/2002,Collins Modern Classics -15348,Bored of the Rings: A Parody of J.R.R. Tolkien's Lord of the Rings,The Harvard Lampoon/Henry N. Beard/Douglas C. Kenney,3.13,0451452615,9780451452610,eng,149,4438,301,7/1/1993,Roc Trade -15351,The Return of the Shadow: The History of The Lord of the Rings Part One (The History of Middle-Earth #6),J.R.R. Tolkien/Christopher Tolkien,4.03,061808357X,9780618083572,eng,512,2343,92,9/1/2000,Houghton Mifflin -15361,Les Deux Tours (Le Seigneur des Anneaux #2),J.R.R. Tolkien/Francis Ledoux,4.44,2266118013,9782266118019,fre,471,75,2,10/8/2001,Pocket -15369,The Lord of the Rings,J.R.R. Tolkien/Brian Sibley/Michael Bakewell/Stephen Oliver/Ian Holm/Michael Hordern/Robert Stephens/John Le Mesurier/Peter Woodthorpe/Gerard Murphy/Hugh Dickson/Peter Vaughan/Peter Howell,4.50,0563494859,9780563494850,eng,15,2,0,10/6/2003,BBC Audiobooks -15373,The Return of the King (The Lord of the Rings #3),J.R.R. Tolkien,4.53,0965307794,9780965307796,eng,440,202,10,1/1/2001,Quality Paperback Book Club -15374,The Ice Storm,Rick Moody,3.66,0316706000,9780316706001,eng,288,4592,334,4/10/2002,Back Bay Books -15375,The Diviners,Rick Moody,3.03,0316013277,9780316013277,eng,592,508,65,1/2/2007,Back Bay Books -15378,Right Livelihoods: Three Novellas,Rick Moody,3.31,0316166340,9780316166348,eng,240,223,47,6/1/2007,Little Brown and Company -15379,Black Veil: A Memoir with Digressions,Rick Moody,3.07,0316578991,9780316578998,eng,336,402,38,5/6/2002,Little Brown and Company -15384,Garden State,Rick Moody,3.07,0571200613,9780571200610,eng,212,714,49,8/19/2002,London : Faber 2002 -15407,The Lord of the Rings Millennium Edition Boxed Set (The Lord of the Rings #1-3),J.R.R. Tolkien,4.50,0618037667,9780618037667,eng,1472,120,5,10/10/1999,Houghton Mifflin -15409,The Twenty-Seventh City,Jonathan Franzen,3.12,1841157481,9781841157481,en-GB,528,125,17,5/1/2003,HarperCollins Publishers -15420,Stork Naked (Xanth #30),Piers Anthony,3.88,0765304090,9780765304094,en-US,304,1833,31,10/31/2006,Tor Books -15425,Pet Peeve (Xanth #29),Piers Anthony,3.86,0765343118,9780765343116,en-US,384,2273,35,10/1/2006,Tor Books -15428,Up in a Heaval (Xanth #26),Piers Anthony,3.83,0812574990,9780812574999,eng,342,2364,25,10/19/2003,Tor Fantasy -15430,Roc and a Hard Place (Xanth #19),Piers Anthony,3.75,0812534867,9780812534863,en-US,344,5832,36,10/15/1996,Tor Books -15436,Swell Foop (Xanth #25),Piers Anthony,3.78,0812574745,9780812574746,eng,384,2866,30,10/13/2002,Tor Fantasy -15437,Being a Green Mother (Incarnations of Immortality #5),Piers Anthony,3.96,0727840010,9780727840011,eng,400,41,1,10/26/1989,Severn House -15438,Firefly,Piers Anthony,3.25,0380759500,9780380759507,eng,466,2420,128,3/1/1992,Avon Books -15444,Yon Ill Wind (Xanth #20),Piers Anthony,3.76,0812555104,9780812555103,eng,340,3804,37,10/15/1997,Tor Fantasy -15445,Vision of Tarot (Tarot #2),Piers Anthony,3.47,0441864619,9780441864614,en-US,260,1485,13,7/15/1987,Ace Books -15448,On a Pale Horse,Piers Anthony,4.13,0345305183,9780345305183,eng,325,156,13,9/12/1984,Del Rey Books -15449,Vale of the Vole (Xanth #10),Piers Anthony,3.61,0812574966,9780812574968,eng,304,9240,65,3/15/2000,Tor Fantasy -15452,The Dastard (Xanth #24),Piers Anthony,3.81,0812574737,9780812574739,eng,384,3009,28,10/14/2001,Tor Books -15453,Demons Don't Dream (Xanth #16),Piers Anthony,3.80,0812534832,9780812534832,en-US,352,7737,93,2/15/1994,Tor Fantasy -15460,The Color of Her Panties (Xanth #15),Piers Anthony,3.67,0380759497,9780380759491,eng,342,7374,64,9/1/1992,Eos -15464,Faun & Games (Xanth #21),Piers Anthony,3.76,0812555112,9780812555110,eng,352,4039,38,10/15/1997,Tor Fantasy -15466,Harpy Thyme (Xanth #17),Piers Anthony,3.72,0812534840,9780812534849,en-US,352,6460,63,2/15/1995,Tor Books -15468,Geis of the Gargoyle (Xanth #18),Piers Anthony,3.71,0812534859,9780812534856,en-US,342,5242,42,10/15/1995,Tor Fantasy -15472,Three Complete Xanth Novels (Xanth #1-3),Piers Anthony,4.06,0517122332,9780517122334,en-GB,774,64,1,2/11/1995,Wings -15474,God of Tarot (Tarot #1),Piers Anthony,3.45,0441294707,9780441294701,en-US,288,1737,36,3/1/1987,Ace -15490,Faith of Tarot (Tarot #3),Piers Anthony,3.49,0441225659,9780441225651,eng,304,1273,11,4/15/1987,Ace -15496,Unicorn Point (Apprentice Adept #6),Piers Anthony,3.80,0441845630,9780441845637,eng,337,4820,27,1/1/1990,Ace Books -15497,Hard Sell,Piers Anthony,3.38,0441317480,9780441317486,eng,268,700,14,5/1/1993,Ace -15498,Var the Stick (Battle Circle #2),Piers Anthony,3.76,0552097365,9780552097369,eng,172,762,13,3/21/1975,Corgi -15501,Xanth: The Quest for Magic (Xanth #1-3),Piers Anthony,4.06,034545328X,9780345453280,en-US,784,4867,19,10/29/2002,Del Rey -15502,Killobyte,Piers Anthony,3.56,0441444253,9780441444250,en-US,312,1549,47,1/1/1994,ACE -15509,Fractal Mode (Mode #2),Piers Anthony,3.64,0441251269,9780441251261,eng,344,3456,30,12/1/1992,Ace -15518,Anthonology,Piers Anthony,3.66,0812531140,9780812531145,eng,384,710,18,4/15/1986,Tor Books -15521,I Maccabees,Jonathan A. Goldstein/Anonymous,3.96,0385085338,9780385085335,eng,592,8,0,6/16/1976,Anchor Bible -15529,II Maccabees,Anonymous/Jonathan A. Goldstein,4.04,0385048645,9780385048644,eng,595,24,2,10/11/1983,Anchor Bible -15534,Question Quest (Xanth #14),Piers Anthony,3.71,0380759489,9780380759484,en-US,368,6894,73,10/1/1991,Avon -15535,Rings of Ice,Piers Anthony,3.34,0380000369,9780380000364,eng,191,403,23,11/1/1987,Avon Books -15544,Shame of Man (Geodyssey #2),Piers Anthony,3.84,0312858116,9780312858117,eng,380,18,0,10/1/1994,Tor Books -15546,Magic Kingdom for Sale—Sold! (Magic Kingdom of Landover #1),Terry Brooks,3.89,0345317572,9780345317575,eng,324,320,24,3/12/1986,Del Rey Books -15549,Armageddon's Children (Genesis of Shannara #1),Terry Brooks,4.10,0345484088,9780345484086,eng,371,12609,524,9/30/2006,Ballantine Books -15550,Straken (High Druid of Shannara #3),Terry Brooks,4.04,0345451139,9780345451132,eng,384,10276,126,8/15/2006,Del Rey -15552,Tanequil (High Druid of Shannara #2),Terry Brooks,3.98,034543577X,9780345435774,eng,357,10750,106,8/30/2005,Del Rey Books -15553,The Voyage of the Jerle Shannara Trilogy (Voyage of the Jerle Shannara #1-3),Terry Brooks,4.27,0345492862,9780345492869,eng,1248,3088,39,11/14/2006,Del Rey -15555,The Heritage of Shannara (Heritage of Shannara #1-4),Terry Brooks,4.29,0345465547,9780345465542,eng,1238,3613,42,8/26/2003,Del Rey Books -15557,Jarka Ruus (High Druid of Shannara #1),Terry Brooks,3.97,0345483898,9780345483898,eng,416,12122,138,7/26/2005,Del Rey -15562,Ilse Witch (Voyage of the Jerle Shannara #1),Terry Brooks,3.96,0743209516,9780743209519,eng,464,144,9,10/2/2000,Earthlight -15563,First King of Shannara (The Original Shannara Trilogy #0),Terry Brooks,3.96,0345396537,9780345396532,eng,435,864,55,1/29/1997,Del Rey -15566,The Elf Queen of Shannara (Heritage of Shannara #3),Terry Brooks,4.04,1857238273,9781857238273,eng,416,26676,188,3/4/1998,Orbit -15577,The Druids' Keep (The Sword of Shannara #2),Terry Brooks,4.16,0345461452,9780345461452,eng,240,3732,8,6/3/2003,Del Rey -15578,The Elfstones of Shannara (The Original Shannara Trilogy #2),Terry Brooks,3.97,0345285549,9780345285546,eng,564,1691,152,10/10/2000,Del Rey Books -15580,In the Shadow of the Warlock Lord (The Sword of Shannara #1),Terry Brooks,4.06,0345461460,9780345461469,eng,240,6139,22,8/5/2009,Del Rey -15581,Ferdydurke,Witold Gombrowicz/Danuta Borchardt,3.86,0300082401,9780300082401,eng,320,8193,198,8/11/2000,Yale University Press -15582,Cosmos and Pornografia: Two Novels,Witold Gombrowicz/Alastair Hamilton/Eric Mosbacher,4.12,0802151590,9780802151599,eng,362,241,25,3/23/1994,Grove Press -15584,Cosmos,Witold Gombrowicz/Danuta Borchardt,4.03,0300108486,9780300108484,eng,208,1896,129,10/10/2005,Yale University Press -15587,Bacacay,Witold Gombrowicz/Bill Johnston,3.94,097639507X,9780976395072,eng,275,491,28,5/1/2006,Archipelago Books -15592,McSweeney's #12,Dave Eggers/Roddy Doyle/McSweeney's Publishing,3.87,1932416064,9781932416060,eng,273,188,7,12/1/2003,McSweeney's -15594,A Midwife's Tale: The Life of Martha Ballard Based on Her Diary 1785-1812,Laurel Thatcher Ulrich,4.01,0679733760,9780679733768,eng,444,5149,633,12/22/1991,Vintage Books -15595,The Midwife's Apprentice,Karen Cushman,3.72,006440630X,9780064406307,eng,128,36039,1585,8/16/1996,HarperTrophy -15598,Heart & Hands: A Midwife's Guide to Pregnancy & Birth,Elizabeth Davis/Suzanne Arms,4.37,1587612216,9781587612213,eng,312,875,43,11/1/2004,Celestial Arts -15599,A Midwife's Story,Sheryl Feldman/Penny Armstrong,4.07,1905177046,9781905177042,eng,194,1473,136,4/1/2007,Pinter & Martin Ltd -15600,The Midwife's Tale,Gretchen Moran Laskas,3.83,0385335547,9780385335546,eng,256,705,99,3/2/2004,Delta -15603,Varney's Pocket Midwife,Jan M. Kriebs/Carolyn L. Gegor,4.06,0763726710,9780763726713,eng,616,4,0,1/1/2005,Jones & Bartlett Publishers -15606,McSweeney's #24,Dave Eggers/Christopher R. Howard/Jonathan Ames/Joe Meno/Eric Hanson,3.80,1932416773,9781932416770,eng,300,277,31,5/28/2007,McSweeney's -15610,Billy Budd Sailor and Other Uncompleted Writings,Herman Melville,3.11,0810111136,9780810111134,eng,1016,9,1,12/15/2007,Northwestern University Press -15611,Billy Budd Sailor,Herman Melville/Harrison Hayford/Merton M. Sealts Jr.,3.12,0226321320,9780226321325,eng,230,228,26,9/1/2001,University of Chicago Press -15613,Billy Budd Sailor,Herman Melville,3.12,1416523723,9781416523727,eng,160,12599,687,8/1/2006,Simon Schuster -15617,The Outsider,Richard Wright,4.16,0060539259,9780060539252,en-US,672,1779,76,7/29/2003,Harpperen -15622,Native Son,Richard Wright,3.99,006083756X,9780060837563,eng,504,75139,2987,8/2/2005,Harper Perennial Modern Classics -15624,Later Works: Black Boy (American Hunger) / The Outsider,Richard Wright/Arnold Rampersad,4.34,0940450674,9780940450677,eng,887,53,7,10/1/1991,Library of America -15638,Cyrano de Bergerac,Edmond Rostand/Eteel Lawson/Lowell Bair,4.06,0451528921,9780451528926,eng,240,62116,1119,8/5/2003,Signet Classics -15640,Cyrano de Bergerac,Edmond Rostand/Anthony Burgess,4.06,1854591177,9781854591173,eng,192,59,11,9/1/2003,Nick Hern Books -15647,The Inferno of Dante: A New Verse Translation (Bilingual Edition),Dante Alighieri/Robert Pinsky/Michael Mazur,4.00,0374525315,9780374525316,mul,464,657,94,9/1/1997,Farrar Straus and Giroux -15650,Batman: Inferno,Alexander C. Irvine,3.63,0345479459,9780345479457,eng,339,348,24,10/31/2006,Del Rey -15651,Inferno (La Divina Commedia #1),Dante Alighieri/Ronald L. Martinez/Robert M. Durling/Robert Turner,4.00,0195087445,9780195087444,eng,672,468,50,3/6/1997,Oxford University Press USA -15652,Dante's Inferno,Dante Alighieri/Mark Musa,4.00,0253209307,9780253209306,eng,432,43,6,6/22/1995,Indiana University Press -15654,The Stranger Beside Me: Ted Bundy: The Shocking Inside Story,Ann Rule,4.14,0451203267,9780451203267,eng,548,54029,2779,6/1/2001,Signet -15655,The Kindness of Strangers,Katrina Kittle,4.02,0060564784,9780060564780,en-US,400,11669,1418,1/2/2007,William Morrow Paperbacks -15667,Stranger in the Forest: On Foot Across Borneo,Eric Hansen,4.10,0375724958,9780375724954,eng,288,1584,110,11/14/2000,Vintage -15669,Strangers In Paradise Pocket Book 5,Terry Moore,4.38,1892597381,9781892597380,eng,392,999,24,12/14/2005,Abstract Studio -15672,The Strangers in the House,Georges Simenon/P.D. James/Geoffrey Sainsbury/David Watson,3.75,1590171942,9781590171943,eng,194,655,66,10/24/2006,NYRB Classics -15673,Wayside School Gets A Little Stranger (Wayside School #3),Louis Sachar,4.19,0747569118,9780747569114,eng,176,17980,416,4/1/2004,Bloomsbury U.S.A. Children's Books -15676,Strangers,Dean Koontz,4.00,0425181111,9780425181119,eng,704,38693,590,10/1/2002,Berkley -15677,Strangers on a Train,Patricia Highsmith,3.78,0393321983,9780393321982,eng,256,13041,1208,8/28/2001,W. W. Norton & Company -15678,Come a Stranger (Tillerman Cycle #5),Cynthia Voigt,3.89,068980444X,9780689804441,eng,256,1742,79,11/1/1995,Simon Pulse -15680,Exile and the Kingdom,Albert Camus/Carol Cosman/Orhan Pamuk,3.89,0307278581,9780307278586,eng,166,680,56,2/13/2007,Vintage -15682,A Happy Death,Albert Camus/Richard Howard/Jean Sarocchi,3.82,0141186585,9780141186580,eng,144,6975,257,2/28/2002,Penguin Classics -15683,Lyrical and Critical Essays,Albert Camus/Ellen Conroy Kennedy/Philip Thody,4.27,0394708520,9780394708522,eng,365,817,52,9/12/1970,Vintage -15688,L'Étranger,Albert Camus,3.98,2070360024,9782070360024,fre,184,13454,765,3/2/2000,Gallimard -15690,Outsider,Albert Camus,3.98,081912141X,9780819121417,eng,110,21,2,1/1/1983,University Press of America -15691,Caligula and Three Other Plays,Albert Camus,4.04,039440520X,9780394405209,fre,0,17,3,5/1/1966,Knopf -15692,The Possessed,Albert Camus/Justin O'Brien,3.83,039470245X,9780394702452,eng,190,325,22,3/12/1964,Vintage -15698,Caligula,Albert Camus/Pierre-Louis Rey/P. Morgan/E.T. Jones,4.08,2070386708,9782070386703,fre,224,6059,210,9/1/1993,Gallimard -15701,Introducing Camus,David Zane Mairowitz/Alain Korkos,3.80,1840460644,9781840460643,en-US,176,163,12,1/3/1998,Totem Books -15704,Notebooks 1935-1951,Albert Camus/Philip Thody/Justin O'Brien,4.28,1569246661,9781569246665,eng,496,553,12,9/1/1998,Marlowe & Company -15705,Existential Meditation,Simon Cleveland,4.91,1411665309,9781411665309,eng,100,11,3,12/22/2005,Lulu.com -15708,The Plague,Albert Camus/Robin Buss,3.98,0141185139,9780141185132,eng,238,975,80,12/5/2002,Penguin -15714,Le mythe de Sisyphe,Albert Camus,4.15,2070322882,9782070322886,fre,187,851,49,2/21/1985,Gallimard -15719,Marvel 1602,Neil Gaiman/Andy Kubert/Richard Isanove/Peter Sanderson/Todd Klein,3.94,0785123113,9780785123118,eng,248,48894,1354,8/2/2006,Marvel -15725,Galapagos: A Natural History,Michael H. Jackson,3.88,1895176409,9781895176407,eng,336,98,10,6/30/1994,University of Calgary Press -15731,Ecuador & the Galapagos Islands,Danny Palmerlee/Carolyn McCarthy/Michael Grosberg/Lonely Planet,3.89,174104295X,9781741042955,en-GB,440,66,8,8/1/2006,Lonely Planet -15734,Galápagos,Kurt Vonnegut Jr.,3.88,2246371929,9782246371922,fre,282,27,1,6/1/1994,Grasset -15735,Breakfast of Champions,Robert Egan/Kurt Vonnegut Jr.,4.00,0573605734,9780573605734,eng,106,17,0,4/7/2017,Samuel French Inc. -15740,Seabiscuit: The Saga of a Great Champion,B.K. Beckwith/Howard Brodie/Grantland Rice,4.47,1594160007,9781594160004,eng,64,22,0,8/1/2004,Westholme Publishing -15746,One Door Away from Heaven,Dean Koontz,3.97,0553582755,9780553582758,eng,681,17959,555,10/29/2002,Bantam -15763,Dark Rivers of the Heart / Sole Survivor / Intensity,Dean Koontz,4.41,0970998716,9780970998712,eng,700,602,10,10/25/2001,Bright Sky Press -15764,The Amateur Marriage,Anne Tyler,3.62,0345472454,9780345472458,eng,342,12986,1112,1/31/2006,Ballantine Books -15766,El matrimonio amateur,Anne Tyler/Gemma Rovira,3.62,8466307605,9788466307604,spa,459,4,1,11/1/2006,Punto de Lectura -15773,Angel Christmas,Carole Nelson Douglas/Emma Merritt/Marilyn Campbell/Patricia Rice/Mary Balogh,3.49,0451406281,9780451406286,eng,384,72,5,11/1/1995,Topaz -15779,Sideways Stories from Wayside School (Wayside School #1),Louis Sachar/Adam McCauley,4.15,0747571775,9780747571773,eng,144,81090,1835,1/19/2004,Bloomsbury Childrens Books -15781,Sideways,Rex Pickett,3.69,0312342519,9780312342517,eng,368,4494,522,10/1/2004,St. Martin's Griffin -15782,Sideways Arithmetic from Wayside School (Wayside School #2.5),Louis Sachar,3.88,0747569126,9780747569121,eng,96,3708,74,5/1/2004,Bloomsbury U.S.A. Children's Books -15783,The Sideways Guide to Wine and Life,Alexander Payne/Jim Taylor,4.38,1557046867,9781557046864,eng,64,8,0,5/25/2005,Newmarket Press -15785,More Sideways Arithmetic from Wayside School (Wayside School #2.6),Louis Sachar,3.92,0747569134,9780747569138,eng,112,856,28,9/1/1994,Bloomsbury U.S.A. Children's Books -15786,Sideways: The Shooting Script,Alexander Payne/Jim Taylor,4.21,1557046557,9781557046550,eng,192,101,3,12/8/2004,Newmarket Press -15788,White Man's Grave,Richard Dooling,3.94,031213214X,9780312132149,eng,400,367,48,3/15/1995,Picador USA -15796,Charms for the Easy Life,Kaye Gibbons,4.02,0060760257,9780060760250,eng,272,11168,744,7/1/2005,Harper Perennial -15806,The Lovely Bones,Alice Sebold,3.81,0316168815,9780316168816,en-US,328,5945,735,4/20/2004,Back Bay Books -15812,Hour Game (Sean King & Michelle Maxwell #2),David Baldacci,3.97,140500522X,9781405005227,eng,437,15,2,1/21/2005,MacMillan -15817,House of Sand and Fog,Andre Dubus III/Fontaine Dollas Dubus,3.85,0788759892,9780788759895,eng,15,108,19,1/1/1999,Recorded Books -15819,While I Was Gone,Sue Miller,3.69,0345420748,9780345420749,eng,352,239,28,11/26/2002,Ballantine Books -15820,My War Gone by I Miss It So,Anthony Loyd,4.29,0552771333,9780552771337,en-GB,336,20,2,11/7/2000,Bantam Press -15824,Will You Miss Me When I'm Gone? The Carter Family and Their Legacy in American Music,Mark Zwonitzer/Charles Hirshberg,4.28,074324382X,9780743243827,eng,432,894,99,2/23/2004,Simon Schuster -15826,Bird Songs: Of North America,Les Beletsky/Jon L. Dunn,4.48,1932855416,9781932855418,eng,368,273,30,9/28/2006,Chronicle Books -15827,National Geographic Field Guide to the Birds of North America,National Geographic Society/Jon L. Dunn/Jonathan Alderfer,4.38,0792253140,9780792253143,eng,503,745,27,11/23/2006,National Geographic Society -15836,Fugitive Pieces,Anne Michaels,3.93,0679776591,9780679776598,eng,304,12209,947,5/26/1998,Vintage -15846,Theories of Relativity,Barbara Haworth-Attard,3.91,0805077901,9780805077902,eng,240,760,75,9/1/2005,Henry Holt and Co. (BYR) -15852,Relativity: The Special and the General Theory,Albert Einstein/Nigel Calder/Robert W. Lawson,4.18,0143039822,9780143039822,eng,130,14068,344,7/25/2006,Penguin Classics -15855,Relativity: The Special and the General Theory: The Masterpiece Science Edition,Albert Einstein/Roger Penrose/Robert Geroch/David C. Cassidy,4.18,0131862618,9780131862616,en-US,288,24,2,4/1/2005,Pi Press -15858,Mirror Mirror,Gregory Maguire,3.28,0060988657,9780060988654,eng,280,28014,1512,10/1/2004,Regan Books -15859,Unnatural Exposure (Kay Scarpetta #8),Patricia Cornwell,4.06,0425163407,9780425163405,eng,367,725,33,7/1/1998,Berkley -15862,Estado De Miedo,Michael Crichton,3.70,9685959757,9789685959759,spa,685,2,0,6/30/2005,Plaza & Janés Mexico -15867,Mugglenet.Com's What Will Happen in Harry Potter 7: Who Lives Who Dies Who Falls in Love and How Will the Adventure Finally End?,Ben Schoen/Andy Gordon/Gretchen Stull/Emerson Spartz/Jamie Lawrence,4.23,1569755833,9781569755839,en-GB,216,9023,112,10/19/2006,Ulysses Press -15872,Harry Potter y el misterio del príncipe (Harry Potter #6),J.K. Rowling/Gemma Rovira Ortega,4.57,8478889930,9788478889938,spa,602,5104,386,2/28/2006,Salamandra -15876,Harry Potter y la Orden del Fénix (Harry Potter #5),J.K. Rowling,4.49,8478888845,9788478888849,spa,893,5637,458,2/21/2004,Emece Editores -15877,Ultimate Unofficial Guide to the Mysteries of Harry Potter: Analysis of Books 1-4,Galadriel Waters/Astre Mithrandir,4.05,0972393617,9780972393614,en-US,412,2774,37,1/1/2003,Wizarding World Press -15880,Harrius Potter et Philosophi Lapis,J.K. Rowling/Peter Needham,4.47,1582348251,9781582348254,lat,249,195,24,7/7/2003,Bloomsbury -15881,Harry Potter and the Chamber of Secrets (Harry Potter #2),J.K. Rowling/Mary GrandPré,4.42,0439064864,9780439064866,eng,341,2293963,34692,6/2/1999,Arthur A. Levine Books / Scholastic Inc. -15882,Harrius Potter et Camera Secretorum,J.K. Rowling/Peter Needham,4.42,159990067X,9781599900674,lat,277,86,4,12/26/2006,Bloomsbury USA Children's Books -15887,La historia de la familia Roccamatio de Helsinki,Yann Martel/Bianca Southwood,3.48,8423338665,9788423338665,spa,91,14,2,1/1/2007,Destino Ediciones -15888,An Instance of the Fingerpost,Iain Pears,3.94,1573227951,9781573227957,eng,691,19134,1081,4/1/2000,Riverhead Books -15890,An Instance of the Fingerpost,Iain Pears,3.94,1573220825,9781573220828,eng,691,214,24,3/16/1998,Riverhead Books -15900,Tears of the Giraffe (No. 1 Ladies' Detective Agency #2),Alexander McCall Smith,3.96,0613647904,9780613647908,eng,256,29,9,9/3/2002,Turtleback -15901,Friends Lovers Chocolate (Isabel Dalhousie #2),Alexander McCall Smith,3.62,0375422994,9780375422997,eng,261,9901,747,9/20/2005,Pantheon Books -15902,The Right Attitude to Rain (Isabel Dalhousie #3),Alexander McCall Smith,3.75,0375423001,9780375423000,eng,276,7776,560,9/19/2006,Pantheon Books -15904,The Sunday Philosophy Club (Isabel Dalhousie #1),Alexander McCall Smith,3.36,1400077095,9781400077090,eng,272,16314,1764,7/12/2005,Anchor -15905,The Finer Points of Sausage Dogs (Portuguese Irregular Verbs #2),Alexander McCall Smith,3.69,1400095085,9781400095087,eng,128,4833,479,12/28/2004,Anchor -15910,Geisha: The Life the Voices the Art,Jodi Cobb/Ian Buruma,3.90,037570180X,9780375701801,eng,128,188,12,10/27/1998,Knopf -15923,True Believers (Gregor Demarkian #17),Jane Haddam,3.88,0312982860,9780312982867,eng,432,237,14,4/15/2002,Minotaur Books -15924,At First Sight (Jeremy Marsh & Lexie Darnell #2),Nicholas Sparks,3.82,0446698466,9780446698467,eng,204,68379,3083,9/5/2006,Grand Central Publishing -15925,The Guardian,Nicholas Sparks,4.15,0446696110,9780446696111,eng,400,148042,4193,4/1/2005,Grand Central Publishing -15930,Wokini: A Lakota Journey to Happiness and Self-Understanding,Billy Mills/Nicholas Sparks,3.57,1561706604,9781561706600,eng,175,253,21,6/1/2003,Hay House -15931,The Notebook (The Notebook #1),Nicholas Sparks,4.09,0553816713,9780553816716,eng,214,1090603,15272,7/5/2004,Bantam -15937,À tout jamais,Nicholas Sparks,4.17,2266111108,9782266111102,fre,214,186,22,11/21/2002,Pocket -15948,Weg der Träume,Nicholas Sparks/Maja Ueberle-Pfaff,4.03,3453861906,9783453861909,ger,352,8,2,4/1/2003,Heyne -15952,Noches de tormenta,Nicholas Sparks/Isabel Margelí,3.84,8496544141,9788496544147,spa,190,22,5,6/1/2006,Roca Editorial -15956,True Believer,Nicholas Sparks,3.80,0446532436,9780446532433,en-US,322,896,77,7/1/2009,Warner Books -15957,The Patron Saint of Liars,Ann Patchett,3.80,1841150509,9781841150505,eng,352,25342,2493,4/1/2003,HarperCollins Publishers -15962,Because It Is Bitter and Because It Is My Heart,Joyce Carol Oates,3.89,0452265819,9780452265813,eng,416,2690,133,3/30/1991,Plume -15966,The Female of the Species: Tales of Mystery and Suspense,Joyce Carol Oates,3.62,0156030276,9780156030274,eng,275,1009,109,1/15/2007,Mariner Books -15967,The Falls,Joyce Carol Oates,3.58,0060722290,9780060722296,eng,512,8278,748,8/2/2005,Harper Perennial -15971,The Assignation: Stories,Joyce Carol Oates,3.80,0880014407,9780880014403,eng,208,337,23,8/1/1996,PerfectBound -15972,The Gravedigger's Daughter,Joyce Carol Oates,3.55,0061236829,9780061236822,eng,582,7518,860,5/29/2007,Ecco -15973,Middle Age: A Romance,Joyce Carol Oates,3.58,0060934905,9780060934903,eng,480,1650,199,10/1/2002,Ecco -15974,Black Water,Joyce Carol Oates,3.54,0452269865,9780452269866,eng,160,5513,484,5/1/1993,Plume -15975,Blonde,Joyce Carol Oates/Claude Seban,3.99,2253152854,9782253152859,fre,1110,6903,522,4/30/2002,Le Livre de Poche -15977,The Museum of Dr. Moses: Tales of Mystery and Suspense,Joyce Carol Oates,3.40,0151015317,9780151015313,en-US,229,778,122,8/6/2007,Houghton Mifflin Harcourt -15981,A Garden of Earthly Delights (Wonderland Quartet #1),Joyce Carol Oates/Elaine Showalter,3.84,0812968344,9780812968347,eng,406,1448,138,4/22/2003,Modern Library -15997,Paradise Lost,John Milton/John Leonard,3.82,0140424393,9780140424393,eng,453,113473,2598,2/27/2003,Penguin Classics -16004,Paradise Lost,John Milton/Philip Pullman,3.82,019280619X,9780192806192,eng,374,269,29,9/15/2005,Oxford University Press -16005,Paradise Lost,John Milton/Gordon Teskey,3.82,0393924289,9780393924282,eng,590,1909,120,12/15/2004,W. W. Norton & Company -16006,Paradise (Second Opportunities #1),Judith McNaught,4.31,0743474163,9780743474160,eng,709,27430,1132,7/1/2003,Pocket Books -16007,Last Train to Paradise: Henry Flagler and the Spectacular Rise and Fall of the Railroad that Crossed an Ocean,Les Standiford,4.03,1400049474,9781400049479,eng,288,1776,282,8/5/2003,Broadway Books -16014,Milton's Paradise Lost,John Milton/Gustave Doré,3.82,1841932515,9781841932514,eng,384,118,10,8/14/2008,Booksales -16021,The Trouble with the Pears: An Intimate Portrait of Erzsebet Bathory,Gia Bathory Al Babel,2.55,1425910394,9781425910396,eng,272,33,7,2/14/2006,Authorhouse -16033,Mary Queen of Scotland and The Isles,Margaret George,4.05,0312155859,9780312155858,eng,870,11523,507,4/15/1997,St. Martin's Griffin -16035,When the Elephants Dance,Tess Uriza Holthe,4.03,0142002887,9780142002889,en-US,368,2627,382,6/24/2003,Penguin Books -16047,A Thread of Grace,Mary Doria Russell,4.02,0449004139,9780449004135,eng,442,11782,1332,12/6/2005,Ballantine Books -16051,The Piano Shop on the Left Bank: Discovering a Forgotten Passion in a Paris Atelier,Thad Carhart,3.95,0375758623,9780375758621,eng,281,4151,521,3/12/2002,Random House Trade -16059,The Dive From Clausen's Pier,Ann Packer,3.42,0375727132,9780375727139,eng,432,19844,1747,4/8/2003,Vintage -16063,The Dive from Clausen's Pier,Ann Packer,3.42,0749933631,9780749933630,eng,368,60,8,3/27/2003,Piatkus -16074,A Dubious Codicil,Michael Wharton,3.25,0701130644,9780701130640,eng,224,3,0,3/15/1991,Random House UK Distribution -16076,The Awakening and Selected Stories,Kate Chopin/Cynthia Brantley Johnson/Alyssa Harad,3.92,0743487672,9780743487672,eng,296,9459,194,7/1/2004,Simon Schuster -16077,Complete Novels and Stories,Kate Chopin/Sandra M. Gilbert,4.28,1931082219,9781931082211,eng,1075,506,24,9/30/2002,Library of America -16085,Beowulf & Grendel: The Truth Behind England's Oldest Legend,John Grigsby,3.57,1842931539,9781842931530,en-US,246,47,11,10/10/2005,Watkins Publishing -16091,Grendel: Devil by the Deed,Matt Wagner/Rich Rankin/Chris Pitzer/Diana Schutz,4.08,159307736X,9781593077365,eng,48,539,29,3/27/2007,Dark Horse Comics -16093,Fuselfieber,David Sedaris/Harry Rowohlt,3.79,3453198255,9783453198258,ger,320,14,0,4/1/2002,Diana TB -16102,Mi vida en rose,David Sedaris,3.99,8497934903,9788497934909,spa,240,5,2,11/15/2004,Debolsillo -16111,A Dance to the Music of Time: 4th Movement (A Dance to the Music of Time #10-12),Anthony Powell,4.22,0226677184,9780226677187,eng,793,1145,77,5/31/1995,University of Chicago Press -16112,Anthony Powell: A Life,Michael Barber,3.72,1585677108,9781585677108,eng,352,39,8,12/27/2005,Harry N. Abrams -16113,A Dance to the Music of Time: 1st Movement (A Dance to the Music of Time #1-3),Anthony Powell,3.95,0226677141,9780226677149,eng,718,3817,271,5/31/1995,University of Chicago Press -16114,A Dance to the Music of Time: 3rd Movement (A Dance to the Music of Time #7-9),Anthony Powell,4.26,0226677176,9780226677170,eng,715,1289,83,5/31/1995,University of Chicago Press -16115,A Dance to the Music of Time: 2nd Movement (A Dance to the Music of Time #4-6),Anthony Powell,4.29,0226677168,9780226677163,eng,722,1237,87,6/15/1995,University of Chicago Press -16121,Titan: The Life of John D. Rockefeller Sr.,Ron Chernow,4.20,1400077303,9781400077304,eng,832,15971,812,3/30/2004,Vintage -16130,Alexander Hamilton,Ron Chernow,4.23,0143034758,9780143034759,eng,818,97099,6149,3/29/2005,Penguin Books -16131,The House of Morgan: An American Banking Dynasty and the Rise of Modern Finance,Ron Chernow,4.07,0802138292,9780802138293,eng,812,5110,281,9/20/2001,Grove Press -16141,Ego and Hubris: The Michael Malice Story,Harvey Pekar/Gary Dumm,3.67,0345479394,9780345479396,eng,160,390,57,4/11/2006,Ballantine Books -16148,Empire of the Senseless,Kathy Acker,3.49,0802131794,9780802131799,eng,240,1487,78,1/13/1994,Grove Press -16151,Great Expectations,Kathy Acker,3.59,0802131557,9780802131553,eng,128,740,38,1/18/1994,Grove Press -16172,Desert Queen: The Extraordinary Life of Gertrude Bell: Adventurer Adviser to Kings Ally of Lawrence of Arabia,Janet Wallach,3.92,1400096197,9781400096190,eng,464,2944,499,7/12/2005,Anchor -16175,Queen of the Scene,Queen Latifah/Frank Morrison,4.06,0060778563,9780060778569,en-US,32,94,18,9/26/2006,HarperCollins -16176,The Red Queen: Sex and the Evolution of Human Nature,Matt Ridley,4.04,0060556579,9780060556570,eng,405,13491,506,4/29/2003,Harper Perennial (HarperCollins) -16177,The Sweet Potato Queens' Big-Ass Cookbook (and Financial Planner),Jill Conner Browne,4.02,060980877X,9780609808771,en-US,288,1958,142,1/7/2003,Three Rivers Press (CA) -16178,Dairy Queen (Dairy Queen #1),Catherine Gilbert Murdock,3.74,0618683070,9780618683079,eng,275,25441,2241,5/22/2006,Houghton Mifflin -16179,Sex with the Queen: 900 Years of Vile Kings Virile Lovers and Passionate Politics,Eleanor Herman,3.91,0060846739,9780060846732,en-US,336,3808,315,4/11/2006,William Morrow -16180,The Boleyn Inheritance (The Plantagenet and Tudor Novels #10),Philippa Gregory,3.87,0743272501,9780743272506,eng,518,68763,3394,12/5/2006,Atria Books -16181,The Constant Princess (The Plantagenet and Tudor Novels #6),Philippa Gregory,3.90,0743272498,9780743272490,eng,390,136931,3915,9/6/2006,Washington Square Press -16182,The Favored Child (The Wideacre Trilogy #2),Philippa Gregory,3.62,0743249305,9780743249300,eng,624,9643,451,7/2/2003,Washington Square Press -16183,The Virgin's Lover (The Plantagenet and Tudor Novels #13),Philippa Gregory,3.71,0743269268,9780743269261,eng,441,43749,1967,9/7/2005,Washington Square Press -16184,Virgin Earth (Tradescant #2),Philippa Gregory,3.62,0743272536,9780743272537,en-US,661,4469,272,4/5/2006,Washington Square Press -16185,The Wise Woman,Philippa Gregory,3.32,0006514642,9780006514640,eng,640,6774,529,2/1/2002,HarperCollins Publishers -16186,Meridon (The Wideacre Trilogy #3),Philippa Gregory,3.68,0743249313,9780743249317,eng,569,8842,380,7/2/2003,Washington Square Press -16187,The Little House,Philippa Gregory,3.68,0006496431,9780006496434,eng,368,1910,237,2/1/1998,HarperCollins Publishers -16188,Wideacre (The Wideacre Trilogy #1),Philippa Gregory,3.30,0743249291,9780743249294,eng,656,18944,1547,7/2/2003,Washington Square Press -16191,Un café lejos de aquí,Z.Z. Packer/María Pérez López de Heredia,3.84,8496454339,9788496454330,spa,283,8,0,7/1/2006,Tropismos -16192,You Can't Be Neutral on a Moving Train: A Personal History of Our Times,Howard Zinn,4.30,0807071277,9780807071274,eng,214,2543,141,9/5/2002,Beacon Press -16193,Declarations of Independence: Cross-Examining American Ideology,Howard Zinn,4.26,0060921080,9780060921088,eng,341,732,25,10/23/1991,Harper Perennial -16199,Citas Celestiales,Alexander McCall Smith/Marta Torent López de Lamadrid,3.16,8489367159,9788489367159,spa,190,1,0,11/1/2006,Umbriel -16200,Ella Minnow Pea: A Novel in Letters,Mark Dunn,3.85,0385722435,9780385722438,eng,208,23926,4356,9/17/2002,Anchor -16205,Daisy Miller and Other Stories,Henry James/Jean Gooder,3.52,0192835432,9780192835437,eng,352,558,40,11/19/1998,Oxford University Press -16208,The Turn of the Screw/Daisy Miller,Henry James,3.61,0440391547,9780440391548,eng,192,959,55,8/1/1954,Laurel -16213,The Hot Zone: The Terrifying True Story of the Origins of the Ebola Virus,Richard Preston,4.12,0385495226,9780385495226,eng,352,85408,4334,6/15/1999,Anchor Books -16214,The Hot Zone: The Chilling True Story of an Ebola Outbreak,Richard Preston,4.12,0552143030,9780552143035,eng,384,163,26,8/1/1995,Corgi -16228,Gardening with a Wild Heart: Restoring California's Native Landscapes at Home,Judith Larner Lowry,4.29,0520251741,9780520251748,eng,267,12,2,3/19/2007,University of California Press -16229,Teacher's Pet (Wild at Heart #7),Laurie Halse Anderson,4.05,1584850558,9781584850557,en-US,128,170,5,12/31/2001,American Girl Publishing Inc -16230,Homeless (Wild at Heart #2),Laurie Halse Anderson/Mark Salisbury,4.06,1584850450,9781584850458,eng,126,415,32,6/29/2000,American Girl Publishing Inc -16234,Hear the Wind Blow,Mary Downing Hahn,4.07,0618181903,9780618181902,eng,224,266,45,5/19/2003,Clarion Books -16243,Case Histories (Jackson Brodie #1),Kate Atkinson,3.83,0316010707,9780316010702,eng,389,67271,5246,10/17/2005,Back Bay Books -16245,Three Case Histories,Sigmund Freud/Philip Rieff,3.90,0684829452,9780684829456,eng,282,622,21,11/1/1996,Touchstone -16267,Michael Tolliver Lives (Tales of the City #7),Armistead Maupin,3.93,0060761350,9780060761356,en-US,277,583,82,6/12/2007,Harper -16268,Back to Barbary Lane: The Tales of the City Omnibus (Tales of the City #4-6),Armistead Maupin,4.44,0060166495,9780060166496,eng,720,514,11,11/26/1991,Harper -16271,The Intuitionist,Colson Whitehead,3.68,0385493002,9780385493000,eng,255,7473,903,1/4/1999,Anchor Books -16276,John Henry Days,Colson Whitehead,3.65,0385498209,9780385498203,eng,400,1940,186,5/14/2002,Anchor -16280,"Why Are All The Black Kids Sitting Together in the Cafeteria?": A Psychologist Explains the Development of Racial Identity,Beverly Daniel Tatum,4.21,0465083617,9780465083619,en-US,320,9845,703,1/17/2003,Basic Books -16285,The Custard Kid (Black Cats),Terry Deary,4.40,0713659890,9780713659894,eng,62,5,0,10/31/2001,A & C Black (Childrens books) -16286,The Magus,John Fowles,4.05,0316296198,9780316296199,eng,656,38247,1915,1/4/2001,Back Bay Books -16291,The Magus of Freemasonry: The Mysterious Life of Elias Ashmole—Scientist Alchemist and Founder of the Royal Society,Tobias Churton,4.10,1594771227,9781594771224,eng,303,28,5,6/27/2006,Inner Traditions -16292,The Myth of the Magus (Canto Original),Elizabeth M. Butler,3.73,0521437776,9780521437776,eng,320,27,2,4/15/1993,Cambridge University Press -16297,Cards on the Table (Hercule Poirot #15),Agatha Christie,3.92,0425205959,9780425205952,eng,324,25236,1046,7/5/2005,Berkley -16298,A Murder Is Announced (Miss Marple #5),Agatha Christie,3.98,1579126294,9781579126292,eng,288,33195,1220,9/30/2006,Black Dog & Leventhal Publishers -16299,And Then There Were None,Agatha Christie,4.26,0312330871,9780312330873,eng,264,625767,18785,5/3/2004,St. Martin's Press -16300,Sleeping Murder (Miss Marple #13),Agatha Christie,3.95,0002317850,9780002317856,eng,242,19657,884,8/4/2003,Dodd Mead; 1st edition (September 1976) -16301,Agatha Christie: An Autobiography,Agatha Christie/Robert Welch Herrick,4.27,0006353282,9780006353287,eng,560,4296,310,1/2/2001,HarperCollins -16304,Murder on the Orient Express (Hercule Poirot #10),Agatha Christie,4.17,0425200450,9780425200452,eng,322,145660,5711,8/31/2004,Berkley -16305,Evil Under the Sun (Hercule Poirot #24),Agatha Christie,3.97,1579126286,9781579126285,eng,220,36334,975,9/1/2006,Black Dog & Leventhal Publishers -16307,Hallowe'en Party (Hercule Poirot #39),Agatha Christie,3.66,0007120680,9780007120680,eng,336,20656,1246,9/3/2001,Harper -16312,One Two Buckle My Shoe (Hercule Poirot #23),Agatha Christie/Hugh Fraser,3.76,1572703857,9781572703858,eng,0,14388,411,3/16/2004,HarperCollins Publishers -16313,A Caribbean Mystery,Agatha Christie/Rosalind Ayres,3.80,1572705493,9781572705494,eng,0,49,10,10/9/2006,Audiogo -16315,Crooked House,Agatha Christie,4.04,031298166X,9780312981662,eng,276,24849,1429,8/19/2002,Minotaur Books -16319,The Body in the Library (Miss Marple #3),Agatha Christie,3.85,157912626X,9781579126261,eng,191,46454,1675,9/1/2006,Black Dog & Leventhal Publishers -16320,Witness for the Prosecution and Selected Plays,Agatha Christie,4.05,000649045X,9780006490456,eng,352,3967,67,10/7/1995,HarperCollins Publishers Ltd -16322,The A.B.C. Murders (Hercule Poirot #13),Agatha Christie,4.01,1579126243,9781579126247,eng,252,69806,2470,9/1/2006,Black Dog & Leventhal Publishers -16325,Partners in Crime (Tommy and Tuppence #2),Agatha Christie,3.77,0007111509,9780007111503,eng,347,10106,520,1/1/2001,HarperCollins Publishers -16328,The Murder of Roger Ackroyd (Hercule Poirot #4),Agatha Christie,4.24,1579126278,9781579126278,eng,288,103149,5659,9/1/2006,Black Dog & Leventhal Publishers -16329,Dead Man's Folly (Hercule Poirot #33),Agatha Christie/David Suchet,3.79,1572705477,9781572705470,eng,6,12256,393,9/8/2006,BBC Audiobooks -16330,Poirot's Early Cases: 18 Hercule Poirot Mysteries (Hercule Poirot #41),Agatha Christie/Hugh Fraser/David Suchet,3.92,1572704721,9781572704725,eng,8,5473,144,7/26/2005,AudioGO -16331,Murder at the Vicarage (Miss Marple #1),Agatha Christie,4.05,1579126251,9781579126254,eng,288,121099,2237,9/1/2006,Black Dog & Leventhal Publishers -16334,The Listerdale Mystery And Eleven Other Stories,Agatha Christie/Hugh Fraser,3.56,1572704977,9781572704978,eng,0,1824,89,1/11/2006,AudioGO -16335,The Mystery of the Blue Train (Hercule Poirot #6),Agatha Christie,3.80,1579126952,9781579126957,eng,317,23274,1053,3/30/2007,Black Dog & Leventhal Publishers -16336,The Unexpected Guest: A Play In Two Acts,Agatha Christie,3.83,0573014671,9780573014673,eng,100,2813,167,11/12/2010,Samuel French Ltd -16340,After the Funeral,Agatha Christie,3.87,0002310198,9780002310192,eng,251,47,4,7/2/2001,HarperCollins -16342,Cat Among the Pigeons (Hercule Poirot #34),Agatha Christie,3.83,0425205967,9780425205969,eng,352,21230,735,7/5/2005,Berkley -16343,The Mysterious Affair at Styles (Hercule Poirot #1),Agatha Christie,3.99,0646418432,9780646418438,eng,121,196377,3885,10/21/2002,Deodand -16347,Absent in the Spring and Other Novels (Mary Westmacott Omnibus #1--Absent in the Spring Giant's Bread The Rose and the Yew Tree),Mary Westmacott/Agatha Christie,4.18,0312273223,9780312273224,eng,656,97,11,9/22/2001,Minotaur Books -16349,Hercule Poirot's Christmas (Hercule Poirot #20),Agatha Christie,3.94,0007120699,9780007120697,eng,335,26085,1497,9/1/2001,HarperCollins Publishers -16352,Black Coffee (Hercule Poirot #45.5),Charles Osborne/Agatha Christie,3.50,0312970072,9780312970079,eng,304,10356,622,9/15/1999,St. Martin's Paperbacks -16357,Hercule Poirot's Christmas: A BBC Radio 4 Full-Cast Dramatisation,Agatha Christie/Michael Bakewell/Peter Sallis/Cyril Luckham/Edward De Souza/Rachel Gurney/Nicky Henson/Deryck Guyler,3.94,0563535113,9780563535119,eng,2,52,8,11/5/2001,BBC Audiobooks -16364,Murder on the Orient Express (Hercule Poirot #10),Agatha Christie,4.17,1579126235,9781579126230,eng,266,1520,238,9/1/2006,Black Dog & Leventhal Publishers -16369,Death on the Nile (Hercule Poirot #17),Agatha Christie,4.10,1579126898,9781579126896,eng,351,674,91,3/30/2007,Black Dog & Leventhal Publishers -16371,Mrs. McGinty's Dead (Hercule Poirot #30),Agatha Christie,3.83,0007121008,9780007121007,eng,328,572,74,7/1/2002,HarperCollins Publishers -16374,The Most of P.G. Wodehouse,P.G. Wodehouse,4.48,0743203585,9780743203586,eng,701,1872,106,11/1/2000,Simon & Schuster -16376,Full Moon (Blandings Castle #7),P.G. Wodehouse,4.17,1585678368,9781585678365,eng,272,1860,131,11/23/2006,Harry N. Abrams -16377,How Right You Are Jeeves (Jeeves #12),P.G. Wodehouse,4.17,0743203593,9780743203593,eng,206,2769,156,11/1/2000,Touchstone -16379,Life With Jeeves (Jeeves #6 2 & 4),P.G. Wodehouse,4.39,0140059024,9780140059021,eng,557,3169,137,9/29/1983,Penguin Books -16384,Spring Fever,P.G. Wodehouse,4.05,158567575X,9781585675753,eng,276,483,31,10/21/2004,Harry N. Abrams -16387,Carry On Jeeves (Jeeves #3),P.G. Wodehouse,4.27,1585673927,9781585673926,eng,273,15598,771,3/31/2003,The Overlook Press -16388,Lord Emsworth and Others (Blandings Castle #5.5),P.G. Wodehouse,4.16,1585672777,9781585672776,eng,268,1099,77,5/13/2002,The Overlook Press -16390,The Mating Season (Jeeves #9),P.G. Wodehouse,4.26,1585672319,9781585672318,eng,272,4616,287,1/1/2002,Harry N. Abrams -16392,Thank You Jeeves (Jeeves #5),P.G. Wodehouse,4.24,1585674346,9781585674343,eng,263,5700,308,9/15/2003,Harry N. Abrams -16393,Big Money,P.G. Wodehouse,3.93,014000937X,9780140009378,eng,288,1117,78,9/3/1991,Penguin Books -16394,Much Obliged Jeeves,P.G. Wodehouse,4.23,1585675261,9781585675265,eng,208,701,64,4/12/2004,Harry N. Abrams -16396,The Inimitable Jeeves (Jeeves #2),P.G. Wodehouse,4.24,0140284125,9780140284126,eng,240,7442,320,6/1/2000,Penguin Books -16398,Thank You Jeeves,P.G. Wodehouse/Jonathan Cecil,4.24,1572704616,9781572704619,eng,6,66,23,5/26/2005,AudioGO -16400,Money in the Bank,P.G. Wodehouse,4.13,1585676578,9781585676576,eng,290,321,27,4/7/2005,Harry N. Abrams -16401,The Luck of the Bodkins,P.G. Wodehouse,4.08,1585673366,9781585673360,eng,358,1290,88,10/23/2002,Harry N. Abrams -16414,Joy in the Morning,P.G. Wodehouse/Chris Miller,4.34,0563557354,9780563557357,eng,2,49,7,4/6/1998,BBC Audiobooks -16425,The Labours of Hercules (Hercule Poirot #27),Agatha Christie/Hugh Fraser,3.78,1572704578,9781572704572,eng,9,11167,297,7/13/2005,AudioGO -16427,Dead Man's Folly (Hercule Poirot #33),Agatha Christie,3.79,0007121075,9780007121076,eng,288,619,75,7/1/2008,HarperCollins Publishers -16428,Hercule Poirot's Casebook (Hercule Poirot #42),Agatha Christie,4.31,0399150218,9780399150210,eng,861,1865,52,12/1/1998,G.P. Putnam's Sons -16429,The Husband,Dean Koontz,3.80,0553804790,9780553804799,eng,400,39604,1527,5/30/2006,Bantam -16430,City of Night (Dean Koontz's Frankenstein #2),Dean Koontz/Ed Gorman,3.98,0553587897,9780553587890,en-US,455,1060,116,7/26/2005,Bantam Books -16431,Sole Survivor,Dean Koontz,3.78,0553589490,9780553589498,eng,403,23244,547,7/25/2006,Bantam Books -16433,Forever Odd (Odd Thomas #2),Dean Koontz,3.97,0553588265,9780553588262,eng,364,61555,2263,10/31/2006,Bantam Books -16435,Life Expectancy,Dean Koontz,4.01,0553588249,9780553588248,eng,476,26983,1568,10/25/2005,Bantam Books -16441,The Raphael Affair (Jonathan Argyll #1),Iain Pears,3.54,0425178927,9780425178928,eng,257,102,10,2/1/2001,Berkley Books -16442,The Dream of Scipio,Iain Pears,3.73,1573229865,9781573229869,eng,416,3311,320,6/3/2003,Riverhead Books -16448,Welcome to the Great Mysterious,Lorna Landvik,3.78,0345442741,9780345442741,eng,368,2432,202,1/2/2002,Ballantine Books -16449,Oh My Stars,Lorna Landvik,3.89,0345468368,9780345468369,eng,416,5500,514,2/28/2006,Ballantine Books -16450,Your Oasis on Flame Lake,Lorna Landvik,3.59,0449002985,9780449002988,eng,320,2194,129,6/16/1998,Ballantine Books -16451,Patty Jane's House of Curl,Lorna Landvik/Mechtild Sandberg-Ciletti/Mechtild Ciletti,3.86,0804114609,9780804114608,eng,304,8950,505,6/28/1999,Ivy Books -16452,The Tall Pine Polka / Your Oasis on Flame Lake,Lorna Landvik,3.99,0345487664,9780345487667,eng,752,177,7,10/4/2005,Ballantine Books -16459,Anne's House Of Dreams,L.M. Montgomery,4.14,1406942359,9781406942354,eng,192,2,0,11/3/2006,Hard Press -16464,Poirot: The Complete Ariadne Oliver Vol. 2,Agatha Christie,4.21,0007190689,9780007190683,en-US,727,85,4,6/1/2005,HarperCollins Publishers -16468,The Phantom Tollbooth,Norton Juster/Jules Feiffer,4.21,0375806709,9780375806704,en-US,256,871,56,5/9/2000,Random House Books for Young Readers -16477,The Sixth Book of Lost Swords: Mindsword's Story (Lost Swords #6),Fred Saberhagen,3.81,0812511182,9780812511185,eng,250,1247,9,6/15/1991,Tom Doherty Associates -16478,The Fourth Book of Lost Swords: Farslayer's Story (Lost Swords #4),Fred Saberhagen,3.84,0812552849,9780812552843,en-US,252,1784,8,3/15/1990,Tor Books -16479,Berserkers: The Beginning (Berserkers #1 & #5),Fred Saberhagen,3.70,0671878840,9780671878849,eng,377,232,23,6/1/1998,Baen -16480,The Last Book of Swords: Shieldbreaker's Story (Lost Swords #8),Fred Saberhagen,3.88,0812505778,9780812505771,en-US,255,1233,11,6/15/1995,Tor Fantasy -16501,Ariadne's Web (Book of the Gods #2),Fred Saberhagen,3.67,0812590465,9780812590463,eng,432,172,3,1/15/2001,Tor Fantasy -16503,The Arms of Hercules (Book of the Gods #3),Fred Saberhagen,3.70,0812566807,9780812566802,eng,352,150,1,4/15/2002,Tor Books -16514,Berserker: Blue Death (Berserker #8),Fred Saberhagen,3.71,0812553292,9780812553291,en-US,282,254,8,9/28/1987,Tor Books -16527,Daughter of Fortune,Isabel Allende/Margaret Sayers Peden,3.91,0061120251,9780061120251,eng,432,97539,2733,5/2/2006,Harper Perennial -16528,My Invented Country: A Nostalgic Journey Through Chile,Isabel Allende,3.85,006054564X,9780060545642,en-US,199,4844,359,5/27/2003,Harper -16530,Aphrodite: A Memoir of the Senses,Isabel Allende/Robert Shekter/Panchita Llona,3.64,0060930179,9780060930172,eng,320,3732,195,4/7/1999,Harper Perennial -16532,Of Love and Shadows,Isabel Allende/Margaret Sayers Peden,3.97,0553383833,9780553383836,eng,304,17808,403,8/30/2005,Dial Press Trade Paperback -16535,Strange Relations,Philip José Farmer,3.71,1416509348,9781416509349,eng,476,291,14,2/7/2006,Baen Books -16542,The Black Tower (Philip José Farmer's The Dungeon #1),Richard A. Lupoff/Bruce Coville/Philip José Farmer/Charles de Lint/Robin Wayne Bailey/Robert Gould,3.29,0553273469,9780553273465,eng,339,515,19,7/1/1988,Spectra Books -16543,Dayworld (Dayworld #1),Philip José Farmer,3.64,0441140017,9780441140015,eng,258,1315,68,3/1/1986,Ace Books -16544,The Dungeon 2 (Philip José Farmer's The Dungeon Omnibus Volume 2: Valley of Thunder/Lake of Fire),Charles de Lint/Robin Wayne Bailey/Philip José Farmer,3.50,0743458532,9780743458535,eng,608,50,0,5/1/2003,iBooks -16546,Pictures by J.R.R. Tolkien,J.R.R. Tolkien/Christopher Tolkien,4.47,0395606489,9780395606483,eng,102,531,14,10/1/1992,Houghton Mifflin -16547,The J.R.R. Tolkien Handbook: A Comprehensive Guide to His Life Writings and World of Middle-Earth,Colin Duriez/Brian Sibley,3.72,0801030145,9780801030147,en-US,316,32,2,11/1/2002,Baker Books -16555,Mr. Majeika and the School Trip,Humphrey Carpenter,3.85,0141303352,9780141303352,eng,89,50,2,4/29/1999,Puffin -16556,The Infinite Plan,Isabel Allende,3.72,0060924985,9780060924980,eng,384,7347,300,3/4/1994,Harper Perennial -16562,Ines of My Soul,Isabel Allende/Margaret Sayers Peden,3.93,0061161578,9780061161575,eng,528,62,13,11/7/2006,Harper -16566,Selected Non-Fictions,Jorge Luis Borges/Suzanne Jill Levine/Esther Allen/Eliot Weinberger,4.43,0140290117,9780140290110,eng,560,2059,90,11/1/2000,Penguin Books -16568,The Book of Imaginary Beings,Jorge Luis Borges/Margarita Guerrero/Peter Sís/Andrew Hurley,4.09,0143039938,9780143039938,eng,236,5007,238,9/26/2006,Penguin Books -16569,Ficciones,Jorge Luis Borges/Gordon Botherston/Peter Hulme,4.45,1853995908,9781853995903,spa,232,90,4,12/9/1999,BCP/Duckworth Publishing -16570,This Craft of Verse,Jorge Luis Borges/Călin-Andrei Mihăilescu,4.32,0674008200,9780674008205,eng,160,811,70,3/30/2002,Harvard University Press -16572,Doyle Brunson's Super System,Doyle Brunson/Mike Caro/David Reese/Joey Hawthorne/David Sklansky/Bobby Baldwin,3.94,1580420818,9781580420815,eng,605,2080,73,12/31/2002,Cardoza -16575,Color Drawing: Design Drawing Skills and Techniques for Architects Landscape Architects and Interior Designers,Michael E. Doyle,4.26,0471292451,9780471292456,eng,360,161,3,6/30/1999,Wiley -16580,The Grail: A Year Ambling & Shambling Through an Oregon Vineyard in Pursuit of the Best Pinot Noir Wine in the Whole Wild World,Brian Doyle/Mary Miller Doyle,4.01,0870710931,9780870710933,eng,208,160,43,4/1/2006,Oregon State University Press -16593,The Coming of the Fairies,Arthur Conan Doyle/John M. Lynch,3.39,0803266553,9780803266551,eng,189,208,38,10/1/2006,Bison Books -16595,Vampire Hunter D Volume 06: Pilgrimage of the Sacred and the Profane,Hideyuki Kikuchi/Yoshitaka Amano,4.10,1595821066,9781595821065,en-US,208,844,26,11/22/2006,Digital Manga Publishing / Dark Horse -16596,Vampire Hunter D Volume 05: The Stuff of Dreams,Hideyuki Kikuchi/Yoshitaka Amano,3.99,1595820949,9781595820945,en-US,208,1083,26,9/13/2006,Digital Manga Publishing / Dark Horse -16597,Demon Deathchase (Vampire Hunter D #3),Hideyuki Kikuchi/Yoshitaka Amano,4.02,1595820310,9781595820310,eng,211,1506,53,1/18/2006,Digital Manga Publishing / Dark Horse -16598,Vampire Hunter D Volume 04: Tale of the Dead Town,Hideyuki Kikuchi/Yoshitaka Amano,3.92,1595820930,9781595820938,en-US,205,1158,30,5/24/2006,Digital Manga Publishing / Dark Horse -16601,Vampire Hunter D Volume 07: Mysterious Journey to the North Sea - Part One,Hideyuki Kikuchi/Yoshitaka Amano,4.27,1595821074,9781595821072,en-US,209,1062,19,5/7/2007,Digital Manga Publishing / Dark Horse -16602,Coffin: The Art of Vampire Hunter D,Yoshitaka Amano,4.58,1595820612,9781595820617,eng,199,596,16,11/1/2006,Dark Horse Books -16604,Paradise Lost and Paradise Regained,John Milton/Christopher Ricks/Susanne Woods,4.08,0451527925,9780451527929,en-US,357,329,29,11/1/2001,Signet Classics -16605,Paradise Lost,John Milton/Merritt Y. Hughes/David Scott Kastan,3.82,0872207331,9780872207332,eng,427,328,37,9/15/2005,Hackett Publishing Company Inc. -16609,Leviathan,Thomas Hobbes/Edwin M. Curley,3.70,0872201775,9780872201774,eng,672,500,32,3/1/1994,Hackett Publishing Company Inc. -16616,The Book of Leviathan,Peter Blegvad,4.16,1585670987,9781585670987,en-US,160,631,52,4/23/2001,Harry N. Abrams -16619,Democracy in America,Alexis de Tocqueville/Isaac Kramnick/Gerald Bevan,4.02,0140447601,9780140447606,eng,992,18925,523,4/24/2003,Penguin Classics -16621,Democracy in America,Alexis de Tocqueville/Harvey Mansfield/Delba Winthrop,4.02,0226805360,9780226805368,eng,722,390,40,4/1/2002,University of Chicago Press -16627,Magic Carpet Ride: The Autobiography of John Kay and Steppenwolf,John Kay/John Einarson,4.10,1550821083,9781550821086,eng,372,10,2,10/1/1994,Quarry Press -16630,Steppenwolf Theatre Company : Twenty-Five Years of an Actor's Theater,Victor Skrebneski,4.25,1570715831,9781570715839,eng,144,8,2,12/1/2000,Sourcebooks -16634,The Glass Bead Game,Hermann Hesse/Richard Winston/Clara Winston/Theodore Ziolkowski,4.11,0312278497,9780312278496,eng,558,24967,934,12/6/2002,Picador -16640,The Sorrows of Young Werther,Johann Wolfgang von Goethe/Burton Pike/Edla Valdna,3.67,0812969901,9780812969900,eng,149,45626,1721,2/8/2005,Modern Library -16641,The Sorrows of Young Werther and Selected Writings,Johann Wolfgang von Goethe/Catherine Hutter/Marcelle Clements,3.80,0451529626,9780451529626,eng,255,971,38,7/5/2005,Signet Classics -16642,The Sorrows of Young Werther,Johann Wolfgang von Goethe/Nathan Haskell Dole/Thomas Carlyle/R. Dillon Boylan,3.67,159569045X,9781595690456,en-US,104,16,0,8/15/2006,MONDIAL -16647,The Dream Master,Roger Zelazny,3.64,0575073438,9780575073432,eng,160,12,0,12/31/2010,Gollancz -16649,The Queen's Necklace,Teresa Edgerton,3.61,0380789116,9780380789115,eng,592,99,14,7/3/2001,Harper Voyager -16653,Goblin Moon (The Goblin Moon Duology #1),Teresa Edgerton,3.79,0441294278,9780441294275,eng,293,244,36,2/1/1991,Ace -16654,The Work of the Sun (The Green Lion Trilogy #3),Teresa Edgerton,4.00,0441909116,9780441909117,eng,258,157,5,3/1/1990,Ace -16656,The Castle of the Silver Wheel,Teresa Edgerton,3.94,0441092756,9780441092758,eng,278,89,4,2/1/1993,Ace -16669,China and Japan (Myths and Legends),Donald A. Mackenzie,3.52,0517604469,9780517604465,eng,404,23,3,3/27/1988,Crescent -16670,A Madman Dreams of Turing Machines,Janna Levin,3.68,1400040302,9781400040308,eng,230,1136,180,8/22/2006,Alfred A. Knopf -16675,Turing and the Universal Machine: The Making of the Modern Computer,Jon Agar/Jon Turney,3.33,1840462507,9781840462500,eng,153,56,6,4/23/1997,Totem Books -16677,Ad Infinitum... The Ghost in Turing's Machine: Taking God Out of Mathematics and Putting the Body Back In. An Essay in Corporeal Semiotics,Brian Rotman,4.06,0804721289,9780804721288,en-US,224,17,2,9/1/1993,Stanford University Press -16681,Heart of Darkness,Joseph Conrad,3.42,1599869500,9781599869506,eng,101,1363,58,9/24/2006,Filiquarian Publishing LLC. -16682,Rocket Ship Galileo (Heinlein's Juveniles #1),Robert A. Heinlein,3.71,044101237X,9780441012374,eng,211,6329,145,12/28/2004,Ace -16683,Tunnel in the Sky (Heinlein's Juveniles #9),Robert A. Heinlein,3.94,1416505512,9781416505518,eng,262,10249,356,4/1/2005,Pocket Books -16685,The Cat Who Walks Through Walls (The World As Myth),Robert A. Heinlein,3.70,0441094996,9780441094998,en-US,388,19427,572,6/1/1988,Ace Books -16686,The Fantasies of Robert A. Heinlein,Robert A. Heinlein,3.90,0312875576,9780312875572,en-US,342,788,45,5/17/2002,Tor Books -16689,Citizen of the Galaxy,Robert A. Heinlein,3.99,1416505520,9781416505525,eng,288,11800,413,5/1/2005,Pocket Books: Gallery Books -16690,The Moon is a Harsh Mistress,Robert A. Heinlein,4.17,0340837942,9780340837948,eng,288,93782,2466,3/14/2005,Hodder & Stoughton -16692,Roverandom,J.R.R. Tolkien/Wayne G. Hammond/Christina Scull,3.87,0395957990,9780395957998,eng,128,471,70,6/30/1999,Houghton Mifflin Harcourt -16697,The Mysteries of Pittsburgh,Michael Chabon,3.64,0060790598,9780060790592,eng,320,21823,1518,7/5/2005,Harper Perennial -16702,Summerland,Michael Chabon,3.55,0786816155,9780786816156,eng,500,619,69,3/1/2004,Miramax -16703,The Yiddish Policemen's Union,Michael Chabon,3.71,0007149824,9780007149827,eng,414,53300,5699,5/1/2007,HarperCollins -16710,The Toy Maker: The Life and Times of Inventor Frank Hornby,Anthony Mcreavy,3.00,0091895812,9780091895815,eng,352,1,1,8/1/2004,Ebury Press -16713,The Disappointment Artist,Jonathan Lethem,3.63,1400076811,9781400076819,eng,149,1613,129,3/14/2006,Vintage -16716,The Wall of the Sky the Wall of the Eye,Jonathan Lethem,3.67,0156032481,9780156032483,eng,304,1158,95,3/5/2007,Mariner Books -16717,You Don't Love Me Yet,Jonathan Lethem,2.81,038551218X,9780385512183,eng,225,3854,547,5/29/2007,Doubleday Books -16718,Gun With Occasional Music,Jonathan Lethem,3.77,0156028972,9780156028974,eng,271,8141,786,9/1/2003,Mariner Books -16720,As She Climbed Across the Table,Jonathan Lethem,3.67,0375700129,9780375700125,eng,212,4488,380,2/24/1998,Vintage -16721,Living With the Passive-Aggressive Man,Scott Wetzler,4.03,0671870742,9780671870744,en-US,208,208,30,10/1/1993,Touchstone -16726,Cypress Gardens (Images of America: Florida),Mary M. Flekke/Sarah E. MacDonald/Randall M. MacDonald,3.00,073854339X,9780738543390,eng,128,5,1,11/27/2006,Arcadia Publishing (SC) -16728,The Organized Student: Teaching Children the Skills for Success in School and Beyond,Donna Goldberg/Jennifer Zwiebel,3.82,0743270207,9780743270205,en-US,246,222,26,7/5/2005,Touchstone -16729,Beach Music,Pat Conroy,4.15,0553381539,9780553381535,eng,592,38496,2450,3/26/2002,Dial Press -16734,Der Gesang Des Meeres. Beach Music,Pat Conroy,4.15,340412801X,9783404128013,ger,894,7,2,4/1/1998,Lübbe -16735,The Prince of Tides,Pat Conroy,4.24,0553381547,9780553381542,eng,679,178717,3473,3/26/2002,Dial Press Trade Paperback -16739,Blessings,Belva Plain,3.91,0440243254,9780440243250,eng,393,2562,39,9/15/2010,Dell -16761,Seven Complete Perry Mason Novels - The Case Of: The Foot-Loose Doll / The Glamorous Ghost / The Long-Legged Models / The Lucky Loser The Screaming Woman / The Terrified Typist / The Waylaid Wolf,Erle Stanley Gardner,4.01,0517293633,9780517293638,eng,821,76,6,7/19/1994,Random House Value Publishing -16763,The Case of the Glamorous Ghost (Perry Mason),Erle Stanley Gardner,3.89,0345437861,9780345437860,eng,232,604,35,2/29/2000,Fawcett Books -16767,The Case of the Half-Wakened Wife,Erle Stanley Gardner,3.88,034537147X,9780345371478,eng,245,435,23,3/13/1991,Fawcett -16776,I Dreamed I Married Perry Mason (A Cece Caruso Mystery #1),Susan Kandel,3.47,0060581069,9780060581060,eng,280,788,104,3/29/2005,Avon -16779,The Case of the Terrified Typist (Perry Mason #49),Erle Stanley Gardner,3.75,034591483X,9780345914835,eng,154,591,31,7/1/1999,Ballantine Books -16782,The Case of the Curious Bride (Perry Mason Mystery),Erle Stanley Gardner,3.87,0345437837,9780345437839,eng,192,1559,61,1/4/2000,Fawcett -16788,Fragile Things: Short Fictions and Wonders,Neil Gaiman,4.00,0060515228,9780060515225,eng,360,45473,2540,9/26/2006,William Morrow -16789,The Good Fairies of New York,Martin Millar/Neil Gaiman,3.51,1933368365,9781933368368,eng,242,4343,563,9/8/2006,Soft Skull Press -16790,Smoke and Mirrors: Short Fiction and Illusions,Neil Gaiman,4.04,0380789027,9780380789023,eng,365,53464,1906,8/30/2005,Avon Books -16791,Death: The High Cost of Living,Neil Gaiman/Chris Bachalo/Mark Buckingham/Tori Amos,4.19,1852864982,9781852864989,eng,104,38276,462,6/9/1994,Titan Books -16793,Stardust,Neil Gaiman,4.08,0061142026,9780061142024,eng,248,283274,11746,8/29/2006,Harper Perennial -16794,The Facts in the Case of the Departure of Miss Finch,Neil Gaiman/Michael Zulli,3.54,1593076673,9781593076672,eng,51,2038,198,4/1/2008,Dark Horse Books -16798,The Diagnosis,Alan Lightman,2.86,0375725504,9780375725500,eng,384,898,123,2/19/2002,Vintage -16799,The Best American Science Writing 2002,Matt Ridley/Jesse Cohen/Alan Lightman/Joseph D'Agnese,3.85,0060936509,9780060936501,eng,352,67,7,9/3/2002,Harper Perennial -16802,The Complete Poetry,John Milton/John T. Shawcross,4.06,0385023510,9780385023511,en-US,672,3418,20,7/6/1971,Anchor -16803,The Complete Poems and Major Prose,John Milton/Merritt Y. Hughes,4.18,0872206785,9780872206786,eng,1088,914,22,7/1/2003,Hackett Publishing Company Inc. -16806,The Man and the Author: John Milton: Twentieth Century Perspectives,J. Martin Evans,0.00,0415940478,9780415940474,eng,386,0,0,11/8/2002,Routledge -16807,The Major Works,John Milton/Jonathan Goldberg/Stephen Orgel,4.24,019280409X,9780192804099,eng,1008,285,12,4/3/2003,Oxford University Press -16809,Christopher and His Kind,Christopher Isherwood,4.11,0816638632,9780816638635,eng,352,2261,88,9/18/2001,Univ Of Minnesota Press -16813,The Condor And The Cows: A South American Travel Diary,Christopher Isherwood/William Caskey/Jeffrey Meyers,3.80,0816639825,9780816639823,eng,248,45,9,11/10/2003,Univ Of Minnesota Press -16842,A Single Man,Christopher Isherwood,4.10,0816638624,9780816638628,eng,192,17451,1029,3/20/2001,Univ Of Minnesota Press -16844,Christopher et son monde 1929-1939,Christopher Isherwood,4.11,2010080874,9782010080876,fre,343,1,0,4/1/1981,Hachette Littérature -16857,The Love of the Last Tycoon,F. Scott Fitzgerald,3.65,0020199856,9780020199854,eng,169,7135,386,4/14/1995,Scribner -16874,About This Life,Barry Lopez,4.13,186046565X,9781860465659,eng,304,595,56,5/1/1999,The Harvill Press -16878,Arctic Dreams,Barry Lopez,4.21,0375727485,9780375727481,eng,496,5155,333,10/2/2001,Vintage -16879,Field Notes: The Grace Note of the Canyon Wren,Barry Lopez,4.13,1400075122,9781400075126,eng,176,323,19,6/8/2004,Vintage -16881,The Rediscovery of North America,Barry Lopez,4.06,0679740996,9780679740995,eng,64,245,37,9/1/1992,Vintage -16886,Deadly Feasts: Tracking the Secrets of a Terrifying New Plague,Richard Rhodes,4.00,0684844257,9780684844251,eng,272,1121,76,5/22/1998,Simon Schuster -16887,How to Write: Advice and Reflections,Richard Rhodes,3.87,0688149480,9780688149482,eng,240,162,19,10/16/1996,William Morrow Paperbacks -16888,John James Audubon,Richard Rhodes,4.13,037571393X,9780375713934,eng,528,460,65,4/11/2006,Vintage -16891,Masters of Death: The SS-Einsatzgruppen and the Invention of the Holocaust,Richard Rhodes,4.05,0375708227,9780375708220,en-US,335,1864,93,12/18/2003,Vintage -16892,A Hole in the World: An American Boyhood,Richard Rhodes,3.90,0700610383,9780700610389,eng,288,182,24,4/26/2000,University Press of Kansas -16893,The Crack-Up,F. Scott Fitzgerald/Edmund Wilson,3.92,0811212475,9780811212472,eng,347,2477,133,4/30/2003,New Directions Publishing Corporation -16894,Walden & Resistance to Civil Government (Critical Edition),Owen Thomas/William John Rossi/Henry David Thoreau/William Rossi,3.95,0393959058,9780393959055,eng,482,233,23,8/19/1992,W.W. Norton & Company -16895,Collected Essays and Poems,Henry David Thoreau/Elizabeth Hall Witherell,4.22,1883011957,9781883011956,eng,703,328,9,4/23/2001,Library of America -16897,The Portable Thoreau,Henry David Thoreau/Carl Bode,4.18,0140150315,9780140150315,eng,698,666,28,1/27/1977,Penguin Books -16898,True Harvest: Readings From Henry David Thoreau For Every Day Of The Year,Henry David Thoreau/Barry M. Andrews,4.75,1558964908,9781558964907,eng,304,8,2,10/7/2005,Skinner House Books -16900,Civil Disobedience and Other Essays,Henry David Thoreau,4.06,1420925229,9781420925227,eng,188,13736,189,1/1/2005,Digireads.com -16902,Walden,Henry David Thoreau,3.79,0691096120,9780691096124,eng,352,128351,3652,4/18/2004,Princeton University Press -16908,Interrupted Music: The Making of Tolkien's Mythology,Verlyn Flieger,4.21,0873388240,9780873388245,eng,192,131,8,3/31/2005,Kent State University Press -16914,The Tolkien Fan's Medieval Reader,David E. Smith (Turgon of TheOneRing.net, one of the founding members of this Tolkien website)/Verlyn Flieger/Turgon (=David E. Smith),3.58,1593600119,9781593600112,eng,400,26,4,4/6/2004,Cold Spring Press -16918,Touchy and Feely (Sissy Sawyer #1),Graham Masterton,3.37,072789160X,9780727891600,eng,208,86,12,2/1/2007,Severn House Publishers -16919,Prey,Graham Masterton,3.83,0843946334,9780843946338,eng,352,812,51,11/1/1999,Leisure Books -16920,Hidden World,Graham Masterton,3.47,0727859625,9780727859624,eng,182,58,5,3/1/2003,Severn House Publishers -16921,The House That Jack Built,Graham Masterton,3.88,0843947462,9780843947465,eng,385,1596,64,6/1/2000,Leisure Books -16928,The Riverside Milton,John Milton/Roy C. Flannagan,4.26,0395809991,9780395809990,eng,1248,772,19,3/9/1998,Cengage Learning -16940,How to Read a Poem,Terry Eagleton,3.73,1405151412,9781405151412,eng,182,445,44,10/20/2006,Wiley-Blackwell -16944,The Gatekeeper: A Memoir,Terry Eagleton,3.78,0312316135,9780312316136,eng,192,96,10,6/2/2003,St. Martin's Griffin -16946,The Ideology of the Aesthetic,Terry Eagleton,4.11,0631163026,9780631163022,eng,432,265,13,1/8/1991,Basil Blackwell (Cambridge MA/Oxford) -16947,Marxism and Literary Criticism,Terry Eagleton,3.89,0415285844,9780415285841,eng,84,646,33,6/13/2002,Routledge -16948,Children of God (The Sparrow #2),Mary Doria Russell,4.06,044900483X,9780449004838,eng,451,15158,1417,2/2/1999,Ballantine Books -16951,When the Lion Feeds (Courtney #1),Wilbur Smith,4.19,0312940661,9780312940669,eng,544,10311,350,10/3/2006,St. Martin's Paperbacks -16954,Birds of Prey (Courtney #9),Wilbur Smith,4.19,0312317115,9780312317119,eng,560,8082,191,5/16/2003,St. Martin's Griffin -16961,Alberic the Wise,Norton Juster/Leonard Baskin,3.73,0887082432,9780887082436,eng,24,103,9,9/1/1992,Picture Book Studio Ltd -16963,The Hello Goodbye Window,Norton Juster/Chris Raschka,3.87,0786809140,9780786809141,en-US,32,8898,1311,4/26/2005,Little Brown Books for Young Readers -16965,The Dot and the Line: A Romance in Lower Mathematics,Norton Juster,4.34,0394733525,9780394733524,eng,62,57,6,2/12/1977,Random House -16966,Le Royaume fantôme,Norton Juster,4.21,2013218478,9782013218474,fre,251,3,1,1/15/2003,Hachette Jeunesse -16967,1632,Eric Flint,4.04,1416532811,9781416532811,eng,597,8406,638,6/15/2006,Baen Books -16968,Lützen 1632 : climax of the Thirty Years war,Richard Brzezinski/Graham Turner,3.56,1855325527,9781855325524,eng,96,15,1,2/25/2001,Osprey Publishing -16982,Marvels,Kurt Busiek/Alex Ross,4.22,0785100490,9780785100492,eng,216,23519,482,1/10/2007,Marvel Comics -16986,Marvels,Kurt Busiek/Alex Ross,4.22,0785113886,9780785113881,eng,398,146,25,1/1/2004,Marvel Comics Group -16987,Superman: Back in Action,Kurt Busiek/Fabian Nicieiza/Len Wein/Gerry Conway/Pete Woods/José Luis García-López,3.21,1401212638,9781401212636,en-US,144,140,12,1/31/2007,DC Comics -16989,Spider-Man: Saga of the Sandman,Stan Lee/Roy Thomas/Tom DeFalco/Kurt Busiek/Steve Ditko/Jack Kirby/Herb Trimpe/Ross Andru,3.43,0785124977,9780785124979,eng,176,46,5,3/21/2007,Marvel -16991,Superman: Up Up and Away!,Kurt Busiek/Geoff Johns/Pete Woods/Renato Guedes,3.94,1401209548,9781401209544,eng,192,1681,51,9/27/2006,DC Comics -16992,Kingdom Come,Mark Waid/Alex Ross/Elliot S. Maggin,4.25,1563893304,9781563893308,eng,231,47513,1000,10/1/1997,DC Comics -16993,Fantastic Four Volume 2,Mark Waid/Mike Wieringo/Howard Porter,3.92,078511775X,9780785117759,eng,264,96,8,3/16/2005,Marvel Comics Group -16994,The Flash: Dead Heat,Mark Waid/Oscar Jimenez/Humberto Ramos/José Marzán Jr./Wayne Faucher,3.93,1563896230,9781563896231,eng,144,216,10,8/1/2000,DC Comics -16995,Fantastic Four Volume 3,Mark Waid/Mike Wieringo,3.95,0785120114,9780785120117,eng,256,118,5,11/23/2005,Marvel Comics Group -16996,Underworld Unleashed,Mark Waid/Scott Peterson/Howard Porter/Dennis Janke/Phil Jimenez/J.H. Williams III/John Stokes/Mick Gray/Dan Green,3.12,1563894475,9781563894473,eng,176,111,6,4/1/1998,DC Comics -16999,Fantastic Four Vol 5: Disassembled,Mark Waid/Paco Medina,3.28,0785115366,9780785115366,eng,136,192,13,1/1/2005,Marvel Comics Group -17005,Devilish,Maureen Johnson,3.46,1595140603,9781595140609,eng,263,4782,463,9/7/2006,Razorbill -17007,The Devilish Pleasures of a Duke (Boscastle #6),Jillian Hunter,3.99,0345487621,9780345487629,eng,345,938,46,7/31/2007,Ballantine Books -17011,A Devilish Dilemma,Judith A. Lansdowne,4.02,0821758268,9780821758267,eng,288,54,6,1/1/1998,Zebra -17015,Paranoid Park,Blake Nelson,3.63,0670061182,9780670061181,en-US,180,1109,145,9/21/2006,Viking Books -17018,Notes on a Scandal,Zoë Heller,3.71,0141012250,9780141012254,eng,244,1154,149,3/4/2004,Penguin -17020,13 Little Blue Envelopes (Little Blue Envelope #1),Maureen Johnson,3.64,0060541431,9780060541439,eng,322,70689,4067,12/21/2010,HarperCollins Publishers -17022,My Ishmael (Ishmael #3),Daniel Quinn,4.07,0553379658,9780553379655,eng,293,8654,412,10/6/1998,Bantam -17026,Ishmael (Star Trek: The Original Series #23),Barbara Hambly,3.93,0671743554,9780671743550,eng,256,1485,85,9/1/1991,Pocket Books -17027,Mumbo Jumbo,Ishmael Reed/Gérard H. Durand,3.82,2879291488,9782879291482,fre,292,34,1,1/5/1998,Éditions de L'Olivier -17030,Flatland,Edwin A. Abbott/Rosemary Jann,3.82,0192805983,9780192805980,eng,176,314,43,9/1/2006,Oxford University Press -17031,Flatland,Edwin A. Abbott/Ian Stewart,3.82,190398517X,9781903985175,eng,272,14,2,3/6/2002,Basic Books -17032,Flatland: A Romance of Many Dimensions,Edwin A. Abbott,3.82,1406503436,9781406503432,eng,100,11,1,1/16/2006,Dodo Press -17035,Flatland: A Romance of Many Dimensions,Edwin A. Abbott,3.82,1419120026,9781419120022,eng,64,4,0,6/17/2004,Kessinger Publishing -17039,Flatterland,Ian Stewart,3.71,0330393774,9780330393775,eng,295,24,3,3/7/2003,Pan Publishing -17040,American Government: Continuity and Change,Karen O'Connor/Larry J. Sabato,2.83,0321209184,9780321209184,eng,792,1,0,3/4/2005,Longman Publishing Group -17043,Essentials of American Government: Continuity and Change,Karen O'Connor/Larry J. Sabato,3.50,032127623X,9780321276230,eng,604,4,0,4/1/2005,Longman Publishing Group -17045,American Government: Continuity and Change Texas Edition,Karen O'Connor/Larry J. Sabato,2.83,0321365607,9780321365606,eng,1088,0,0,5/26/2005,Longman Publishing Group -17054,Stardust of Yesterday (de Piaget #9; de Paiget/MacLeod #1),Lynn Kurland,4.09,042518238X,9780425182383,eng,368,3709,169,4/1/2001,Berkley Publishing -17056,Moonage Daydream: The Life & Times of Ziggy Stardust,David Bowie/Mick Rock,4.30,0789313502,9780789313508,eng,320,450,17,9/20/2005,Universe -17057,From Sawdust to Stardust: The Biography of DeForest Kelley,Terry Lee Rioux,4.08,0743457625,9780743457620,eng,362,185,36,2/1/2005,Gallery Books -17059,The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide #1),Douglas Adams,4.22,1400052939,9781400052936,eng,271,212,18,10/19/2004,Crown Publishing Group (NY) -17061,Coraline,Neil Gaiman/Dave McKean,4.06,0061139378,9780061139376,eng,162,403622,13096,8/29/2006,William Morrow Paperbacks -17067,Jurassic Park Institute Dinosaur Field Guide,Michael K. Brett-Surman/Thomas R. Holtz Jr./Bob Walters,4.15,0375812938,9780375812934,en-US,160,2,1,6/12/2001,Random House Children's Books -17075,Lost World of Agharti: The Mystery of Vril Power,Alec MacLellan,3.84,0285633147,9780285633148,eng,232,24,0,3/21/1996,Souvenir Press -17085,I Am the Blues: The Willie Dixon Story,Willie Dixon/Don Snowden,4.02,0306804158,9780306804151,en-US,264,61,13,8/22/1990,Da Capo Press -17098,Isaac Newton,James Gleick,3.84,1400032954,9781400032952,eng,288,5495,324,6/8/2004,Vintage -17112,Things Fall Apart: An Adapted Classic,Chinua Achebe,3.66,0130235016,9780130235015,eng,113,43,0,4/17/2000,Globe -17116,The Stranger,Albert Camus/Stuart Gilbert,3.98,0394700023,9780394700021,en-US,154,1493,184,9/12/1954,Vintage -17118,Having Our Say: The Delany Sisters' First 100 Years,Emily Mann/Sarah L. Delany/A. Elizabeth Delany/Amy Hill Hearth,4.02,0822215020,9780822215028,eng,62,81,9,3/1/1996,Dramatists Play Service -17122,Retrospective 1964-1984,H.R. Giger/Kathi Christen/Adrienne Theimer/Ernst Fuchs,4.35,1883398290,9781883398293,eng,112,115,4,11/4/1997,Morpheus International -17123,Handmaid's Tale,Margaret Atwood,4.11,0860688666,9780860688662,eng,324,400,35,4/14/1994,Virago Press Ltd -17125,One Day in the Life of Ivan Denisovich,Aleksandr Solzhenitsyn/H.T. Willetts,3.95,0374529523,9780374529529,eng,182,73577,2521,3/16/2005,Farrar Straus and Giroux -17133,The Two-Mile Time Machine: Ice Cores Abrupt Climate Change and Our Future,Richard B. Alley,3.98,0691102961,9780691102962,eng,229,143,18,7/21/2002,Princeton University Press -17142,Collected Essays: Notes of a Native Son / Nobody Knows My Name / The Fire Next Time / No Name in the Street / The Devil Finds Work / Other Essays,James Baldwin/Toni Morrison,4.61,1883011523,9781883011529,eng,869,1495,75,2/1/1998,Library of America (NY) -17149,Love and Louis XIV: The Women in the Life of the Sun King,Antonia Fraser,3.90,0385509847,9780385509848,eng,388,5680,216,3/20/2007,Nan A. Talese -17150,My Ántonia (Great Plains Trilogy #3),Willa Cather,3.79,1583485090,9781583485095,eng,232,91539,4662,2/20/2000,New Millennium Library -17151,Marie Antoinette: The Journey,Antonia Fraser,3.93,0385489498,9780385489492,eng,512,1102,154,11/12/2002,Anchor -17152,My Antonia (Great Plains trilogy #3),Willa Cather/Alyssa Harad,3.79,0743487699,9780743487696,eng,314,5985,507,3/4/2009,Pocket Books -17153,The Bush Agenda: Invading the World One Economy at a Time,Antonia Juhasz,4.05,0060846879,9780060846879,eng,400,52,6,4/25/2006,William Morrow -17157,Marie Antoinette: The Journey,Antonia Fraser,3.93,0307277747,9780307277749,eng,512,27291,809,9/12/2006,Anchor Books -17158,Don Quixote: The Ormsby Translation Revised Backgrounds and Sources Criticism,Miguel de Cervantes Saavedra/John Ormsby,3.87,0393090183,9780393090185,eng,1003,56,9,11/1/1980,W. W. Norton & Company -17170,A Tale of Two Cities,Charles Dickens/Gillen D'Arcy Wood,3.84,1593083327,9781593083328,en-GB,409,301,44,10/21/2004,Barnes Noble Classics -17174,A Yellow Raft in Blue Water,Michael Dorris,3.86,0312421850,9780312421854,en-US,372,16190,897,3/5/2003,Picador USA -17176,The Sound and the Fury,William Faulkner,3.86,0679600175,9780679600176,eng,368,518,80,9/5/1992,Modern Library -17178,The Sound and the Fury: An Authoritative Text Backgrounds and Contexts Criticism,William Faulkner/David Minter/Noel Polk/Ben Wasson/C. Vann Woodward/Robert Penn Warren/Richard H. King/Jean-Paul Sartre/Irving Howe/Ralph Ellison,3.86,0393964817,9780393964813,eng,446,1020,126,12/17/1993,W. W. Norton & Company -17179,The Sound and the Fury,William Faulkner/Grover Gardner,3.86,0739325353,9780739325353,eng,9,138,37,7/6/2005,Random House Audio -17181,CliffsNotes on Faulkner's The Sound and the Fury (Cliffs Notes),James Lamar Roberts/William Faulkner/CliffsNotes,3.74,0822012197,9780822012191,en-GB,72,30,9,10/3/1963,Cliffs Notes -17184,The Invisible Man,H.G. Wells,3.64,0451528522,9780451528520,eng,192,109551,3892,9/3/2002,Signet Classics -17185,The Invisible Man,H.G. Wells,3.64,0812504674,9780812504675,eng,178,313,39,9/15/1992,Aerie -17188,Invisible Man,Ralph Ellison,3.86,0679723137,9780679723134,eng,581,334,44,1/12/1990,Vintage -17189,The Invisible Man,H.G. Wells/Christopher Priest,3.64,014143998X,9780141439983,eng,161,871,84,3/31/2005,Penguin Classics -17202,To Sail Beyond the Sunset,Robert A. Heinlein,3.87,0399132678,9780399132674,eng,416,98,6,7/7/1987,G.P. Putnam's Sons -17204,The Friday Night Knitting Club (Friday Night Knitting Club #1),Kate Jacobs,3.42,0399154094,9780399154096,eng,352,64473,7744,1/18/2007,G.P. Putnam's Sons -17206,Lady Friday (The Keys to the Kingdom #5),Garth Nix,3.92,0439700884,9780439700887,eng,320,19436,267,3/1/2007,Scholastic -17208,Friday,Robert A. Heinlein,3.84,0345414004,9780345414007,eng,384,23064,476,6/17/1997,Del Rey -17214,Starship Troopers,Robert A. Heinlein,4.01,0441783589,9780441783588,eng,335,164740,3962,5/15/1987,Ace Book -17215,Starship Troopers,Robert A. Heinlein,4.01,0441014100,9780441014101,eng,280,1100,165,6/27/2006,Ace -17216,Starship Troopers,Robert A. Heinlein,4.01,1568654308,9781568654300,eng,205,172,20,8/1/1997,Ace/SFBC -17224,The Diamond Color Meditation: Color Pathway to the Soul,John Diamond,5.00,1890995525,9781890995522,eng,74,5,3,2/1/2006,Square One Publishers -17228,Zodiac,Neal Stephenson/Jean-Pierre Pugi,3.72,2207252647,9782207252642,fre,391,65,0,4/9/2002,Denoël -17230,Sirens and Sea Monsters (Tales from the Odyssey #3),Mary Pope Osborne/Homer/Troy Howell,4.04,0786809302,9780786809301,en-US,112,371,22,8/18/2003,Disney-Hyperion -17233,The Scarlet Letter,Nathaniel Hawthorne,3.40,1419542206,9781419542206,eng,553,23,4,11/1/2006,Kaplan -17236,Dracula,Bram Stoker/Jan Needle/Gary Blythe,3.99,0744586534,9780744586534,eng,336,73,8,10/4/2004,Walker Books Ltd -17238,Dracula,Bram Stoker/Joseph Valente,3.99,0743477367,9780743477369,eng,528,9871,431,10/1/2003,Pocket Books -17241,Dracula,Bram Stoker/Robert Whitfield,3.99,0786180404,9780786180400,eng,15,53,12,12/1/1998,Blackstone Audiobooks -17243,The Bram Stoker Bedside Companion: 10 Stories by the Author of Dracula,Bram Stoker/Charles Osborne,3.44,0800809637,9780800809638,eng,224,21,2,6/1/1973,Taplinger Publ. Company -17245,Dracula,Bram Stoker/Nina Auerbach/David J. Skal,3.99,0393970124,9780393970128,eng,488,774987,14944,5/12/1986,Norton -17246,Macbeth,William Shakespeare/Paul Werstine/Barbara A. Mowat,3.90,0743482794,9780743482790,eng,272,522,35,8/1/2004,Simon Schuster -17247,Macbeth (No Fear Shakespeare),William Shakespeare/SparkNotes/John Crowther,3.90,1586638467,9781586638467,eng,219,1292,138,4/15/2003,SparkNotes -17248,Death of a Dreamer (Hamish Macbeth #22),M.C. Beaton,3.83,0892967897,9780892967896,eng,247,73,12,2/1/2006,Mysterious Press -17250,The Crucible,Arthur Miller/Christopher Bigsby,3.58,0142437336,9780142437339,eng,143,293374,6037,3/25/2003,Penguin Books -17252,Crucible of War: The Seven Years' War and the Fate of Empire in British North America 1754 - 1766,Fred Anderson,4.16,0375706364,9780375706363,eng,912,3103,114,1/23/2001,Vintage -17253,Spock: The Fire and the Rose (Star Trek: Crucible #2),David R. George III,3.96,0743491696,9780743491693,eng,390,206,14,11/28/2006,Pocket Books -17255,McCoy: The Provenance Of Shadows (Star Trek: Crucible #1),David R. George III,4.14,0743491688,9780743491686,eng,640,332,38,8/29/2006,Pocket Books -17259,Kirk: The Star to Every Wandering (Star Trek: Crucible #3),David R. George III,3.69,074349170X,9780743491709,eng,320,183,16,2/27/2007,Star Trek -17263,Mr Tompkins in Paperback (Canto),George Gamow/Roger Penrose,4.19,0521447712,9780521447713,en-US,202,580,49,3/26/1993,Cambridge University Press -17265,Thirty Years that Shook Physics: The Story of Quantum Theory,George Gamow,4.19,048624895X,9780486248950,eng,224,958,28,7/1/1985,Dover Publications -17267,The Great Divorce,C.S. Lewis,4.28,0006280560,9790007672386,eng,160,87527,3867,2/1/2002,HarperCollins -17271,The Metaphysics of Star Trek,Richard Hanley,3.82,0465091245,9780465091249,eng,253,306,11,7/9/1997,Basic Books -17275,The Very Best of the Feynman Lectures,Richard P. Feynman,4.18,0465099009,9780465099009,eng,180,123,21,10/4/2005,Basic Books -17276,The Feynman Lectures on Physics Vols 3-4,Richard P. Feynman,4.71,0738209252,9780738209258,en-US,0,21,0,5/12/2004,Basic Books -17277,The Feynman Lectures on Physics Vols 7-8,Richard P. Feynman,4.80,0738209279,9780738209272,en-US,0,20,0,1/3/2006,Basic Books -17279,The Feynman Lectures on Physics Vols 5-6,Richard P. Feynman,4.59,0738202835,9780738202839,en-US,12,22,0,11/3/2004,Basic Books -17280,The Feynman Lectures on Physics Vol 3,Richard P. Feynman/Robert B. Leighton/Matthew L. Sands,4.63,0805390499,9780805390490,eng,384,716,15,9/1/2005,Addison Wesley Publishing Company -17289,Galactic Goodnight (Disney's Little Einsteins),Susan Ring/Kirk Albert Etienne,4.42,0786849738,9780786849734,eng,20,12,2,9/1/2006,Disney Press -17290,What Einstein Told His Cook: Kitchen Science Explained,Robert L. Wolke/Marlene Parrish,3.86,0393011836,9780393011838,eng,320,3176,366,5/17/2002,W. W. Norton Company -17292,Mission: Where's June? (Disney's Little Einstein),Susan Ring/Kirk Albert Etienne/Kirk Etienne Albert/Michael James Luzzi,4.50,0786855398,9780786855391,eng,24,12,1,4/5/2006,Disney Press -17293,Babies (Baby Einstein),Julie Aigner-Clark,4.00,0786808381,9780786808380,eng,20,31,2,4/2/2002,Disney Press -17294,Butterfly Suits (Disney's Little Einsteins),Marcy Kelman/Nadeem Zaidi/Andy Mastrocinque,3.68,078685538X,9780786855384,eng,32,26,4,9/1/2006,Disney Press -17295,Birthday Machine (Disney's Little Einsteins Early Reader),Susan Ring/Anna Okabe,4.29,0786849711,9780786849710,eng,12,21,2,9/1/2006,Disney Press -17296,Music of the Meadow (Little Einsteins Early Reader),Susan Ring/Kelly Preston/Katie Nix,3.70,0786855371,9780786855377,eng,28,26,1,9/1/2006,Disney Press -17297,1912 Manuscript on the Special Theory of Relativity,Albert Einstein/Hanoch Gutfreund,4.41,0807615323,9780807615324,eng,174,17,0,5/17/2004,George Braziller Inc. -17303,Piercing the Darkness (Darkness #2),Frank E. Peretti,4.32,1581345275,9781581345278,eng,448,50573,588,6/26/2003,Crossway Books -17309,This Present Darkness (Darkness #1),Frank E. Peretti,4.22,1581345283,9781581345285,eng,376,86548,1637,6/26/2003,Crossway Books -17313,The Oath,Frank E. Peretti,4.07,1595540458,9781595540454,eng,576,32,4,8/28/2005,Thomas Nelson -17315,Oath of Swords (War God #1),David Weber,4.01,1416520864,9781416520863,en-US,576,5582,128,12/26/2006,Baen -17316,Oath of Gold (The Deed of Paksenarrion #3),Elizabeth Moon,4.27,0671697986,9780671697983,eng,501,6200,183,1/2/1989,Baen -17319,The Oath (Dismas Hardy #8),John Lescroart,4.02,0451207645,9780451207647,eng,468,2781,133,1/7/2003,Signet -17320,Wind Rider's Oath (War God #3),David Weber,4.02,1416508953,9781416508953,eng,570,2774,42,8/1/2005,Baen -17323,A Visitation of Spirits,Randall Kenan,3.76,0375703977,9780375703973,eng,272,449,38,1/25/2000,Vintage -17328,Open My Eyes Lord: A Practical Guide to Angelic Visitations and Heavenly Experiences,Gary Oates/Robert Paul Lamb/Randy Clark,4.31,0975262203,9780975262207,eng,148,126,7,1/1/2004,Open Heaven Publications -17334,The Complete C.S. Lewis Signature Classics,C.S. Lewis,4.61,0061208493,9780061208492,eng,746,925,40,2/6/2007,HarperOne -17341,The Collected Letters of C.S. Lewis Volume 3: Narnia Cambridge and Joy 1950 - 1963,C.S. Lewis/Walter Hooper,4.47,0060819227,9780060819224,eng,1840,144,16,1/9/2007,HarperOne -17344,Till We Have Faces: A Myth Retold,C.S. Lewis/Nadia May,4.19,0786198389,9780786198382,eng,9,60,17,9/1/2000,Blackstone Publishing -17349,The Demon-Haunted World: Science as a Candle in the Dark,Carl Sagan/Ann Druyan,4.27,0345409469,9780345409461,eng,459,50343,2084,2/25/1997,Ballantine Books -17352,Stephen Hawking's a Brief History of Time: A Reader's Companion,Stephen Hawking/Gene Stone,4.08,0553077724,9780553077728,eng,194,351,18,5/1/1992,Bantam Books -17355,The Illustrated A Brief History of Time,Stephen Hawking,4.17,0593040597,9780593040591,eng,259,317,38,10/1/1997,Bantam -17356,Brevísima historia del tiempo,Stephen Hawking/Leonard Mlodinow/David Jou i Mirabent,4.22,8484326373,9788484326373,spa,198,64,4,3/8/2005,Critica (Grijalbo Mondadori) -17360,A First Course in String Theory,Barton Zwiebach,4.16,0521831431,9780521831437,eng,578,189,8,6/28/2004,Cambridge University Press -17362,Black Holes & Time Warps: Einstein's Outrageous Legacy,Kip S. Thorne/Stephen Hawking/Frederick Seitz,4.18,0393312763,9780393312768,eng,624,10216,165,1/17/1995,W. W. Norton Company -17364,Surely You're Joking Mr. Feynman!,Richard P. Feynman,4.28,009917331X,9780099173311,eng,350,1837,178,12/17/2006,Vintage -17366,Surely You're Joking Mr. Feynman!: Adventures of a Curious Character,Richard P. Feynman/Raymond Todd,4.28,0786177284,9780786177288,eng,356,74,16,1/1/1997,Blackstone Audiobooks -17375,The Meaning of It All: Thoughts of a Citizen-Scientist,Richard P. Feynman,4.05,0465023940,9780465023943,eng,144,5907,290,4/6/2005,Basic Books -17384,Amor Y Respeto/love And Respect: El Respeto Que El Desesperadamente Necesita/ The Love She Most Desires And The Respect He Desperately Needs,Emerson Eggerichs,4.18,1591855101,9781591855101,spa,292,13,0,5/6/2005,Casa Creacion -17412,Chemistry: The Central Science,Theodore L. Brown/H. Eugene LeMay Jr./Bruce E. Bursten,3.88,0130669970,9780130669971,eng,1046,539,16,5/17/2002,Prentice Hall -17426,Introduction to Linear Algebra and Differential Equations,John W. Dettman,3.50,0486651916,9780486651910,eng,404,17,0,12/1/1986,Dover Publications -17435,Physics for Scientists and Engineers,Douglas C. Giancoli,4.01,0132431068,9780132431064,en-US,976,110,10,1/20/2000,Prentice Hall -17437,Physics: for Scientists and Engineers with Modern Physics,Paul M. Fishbane/Stephen Gasiorowicz/Stephen T. Thornton,3.78,0130352993,9780130352996,eng,1440,9,1,6/9/2004,Benjamin-Cummings Publishing Company -17461,Misty of Chincoteague (Misty #1),Marguerite Henry/Wesley Dennis,4.05,1416927832,9781416927839,eng,176,38024,907,12/26/2006,Aladdin -17468,Black Beauty,Anna Sewell/Scott McKowen,3.96,1402714521,9781402714528,en-US,208,738,74,10/1/2004,Sterling -17473,Black Beauty (Coloring Book),Anna Sewell/John Green,3.96,048629272X,9780486292724,eng,48,68,3,9/13/1996,Dover Publications -17488,Five on a Treasure Island (Famous Five #1),Enid Blyton,4.09,0340796146,9780340796146,eng,256,19173,658,6/14/2001,Hodder -17496,The Secret Seven (The Secret Seven #1),Enid Blyton,3.87,0340917547,9780340917541,eng,144,6881,187,4/20/2006,Hodder -17503,The Circus of Adventure,Enid Blyton,4.11,0330244779,9780330244770,eng,192,12,0,8/22/1975,Pan -17506,La gata perdida = The Missing Cat (Las Aventuras de Nicolas = Adventures with Nicholas),Chris L. Demarest/Berlitz Publishing Company,4.14,9812468234,9789812468239,spa,64,0,0,8/15/2006,Berlitz Kids -17510,La Chatte Perdue = The Missing Cat (Les Aventures avec Nicolas = Adventures with Nicholas),Chris L. Demarest,4.14,981246820X,9789812468208,fre,64,1,0,8/15/2006,Berlitz Kids -17511,The Mystery of the Missing Cat,Gertrude Chandler Warner/Charles Tang,3.82,0785759379,9780785759379,eng,119,5,0,1/1/1994,Turtleback Books -17513,Die Verschwundene Katze = The Missing Cat,Chris L. Demarest,4.14,2831557437,9782831557434,ger,64,1,0,1/1/1996,Berlitz Kids -17518,The Trolley Car Family,Eleanor Clymer/Ursula Koering,4.14,0590407325,9780590407328,eng,256,314,46,7/1/1987,Scholastic -17533,Rose in Bloom (Eight Cousins #2),Louisa May Alcott,4.04,0316030899,9780316030892,eng,302,19389,382,9/1/1995,Little Brown Books for Young Readers -17544,The Quiet Little Woman: A Christmas Story,Louisa May Alcott/C. Michael Dudash/Stephen W. Hines,3.67,1562926160,9781562926168,eng,122,1195,191,4/21/2009,Honor Books -17546,Louisa May Alcott on Race Sex and Slavery,Louisa May Alcott/Sarah Elbert,3.94,1555533078,9781555533076,eng,160,18,5,4/17/1997,Northeastern University Press -17548,An Old-Fashioned Thanksgiving,Louisa May Alcott/James Bernardin,3.71,0060004509,9780060004507,eng,32,659,87,8/1/2005,HarperCollins Publishers -17550,Moods,Louisa May Alcott,3.40,0813516706,9780813516707,eng,538,314,48,1/1/1991,Rutgers University Press -17557,The Girlhood Diary of Louisa May Alcott 1843-1846: Writings of a Young Author,Louisa May Alcott/Kerry A. Graves,3.91,0736805990,9780736805995,eng,32,29,0,9/1/2000,Capstone Press -17580,These Happy Golden Years (Little House #8),Laura Ingalls Wilder/Garth Williams,4.19,0590488120,9780590488129,en-US,289,311,22,1/1/1971,Scholastic Inc. -17581,Pioneer Girl: The Story of Laura Ingalls Wilder,William Anderson/Dan Andreasen,4.14,006446234X,9780064462341,eng,32,440,36,2/2/2000,HarperCollins -17582,The Norton Anthology of Short Fiction,Richard Bausch,4.18,0393926117,9780393926118,en-US,1776,663,15,1/5/2006,W. W. Norton & Company -17593,Red White and Black: The Peoples of Early North America,Gary B. Nash,3.79,0139567569,9780139567568,eng,362,170,7,7/14/1999,Prentice Hall -17600,Homemade Love,bell hooks/Shane W. Evans,4.18,0786806435,9780786806430,eng,32,222,33,12/23/2002,Jump At The Sun -17601,The Will to Change: Men Masculinity and Love,bell hooks,4.36,0743456084,9780743456081,eng,188,2574,322,12/21/2004,Washington Square Press -17602,Killing Rage: Ending Racism,bell hooks,4.28,0805050272,9780805050271,eng,288,1987,106,10/15/1996,Holt Paperbacks -17603,Where We Stand: Class Matters,bell hooks,4.18,041592913X,9780415929134,eng,164,1780,142,10/4/2000,Routledge -17607,All About Love: New Visions,bell hooks,4.01,0688168442,9780688168445,eng,240,10928,1144,12/22/1999,William Morrow -17608,Everybody Was Kung Fu Fighting: Afro-Asian Connections and the Myth of Cultural Purity,Vijay Prashad,3.95,0807050113,9780807050118,en-US,232,201,21,11/18/2002,Beacon Press -17609,The Darker Nations: A People's History of the Third World,Vijay Prashad/Howard Zinn,3.98,1565847857,9781565847859,eng,384,659,51,2/19/2007,New Press The -17610,The Karma Of Brown Folk,Vijay Prashad,4.10,0816634394,9780816634392,eng,272,344,31,3/12/2001,Univ Of Minnesota Press -17619,The Negro,W.E.B. Du Bois/Robert Gregg,4.32,0812217756,9780812217759,eng,284,29,4,5/22/2001,University of Pennsylvania Press -17624,Democracy Matters: Winning the Fight Against Imperialism,Cornel West,3.95,1594200297,9781594200298,eng,240,102,12,9/2/2004,Penguin Press HC The -17632,Tyranny of the Majority: Fundamental Fairness in Representative Democracy,Lani Guinier/Stephen L. Carter,3.87,0029131693,9780029131695,eng,352,41,3,2/1/1995,Free Press -17635,More Readings From One Man's Wilderness: The Journals of Richard L. Proenneke 1974-1980,Richard Proenneke/John Branson,4.42,0160729947,9780160729942,eng,496,239,5,1/5/2006,National Park Service -17639,The Guardship (Thomas Marlowe #1),James L. Nelson,4.01,0380804522,9780380804528,eng,384,313,28,1/5/2000,William Morrow Paperbacks -17643,Before We Were Free,Julia Alvarez,3.87,044023784X,9780440237846,en-US,192,4950,837,4/13/2004,Laurel Leaf Library -17644,Moral Disorder and Other Stories,Margaret Atwood,3.63,0385503849,9780385503846,eng,255,8270,755,10/17/2006,Nan A. Talese -17645,The Penelopiad,Margaret Atwood/Laurel Merlington,3.70,1841957178,9781841957173,eng,198,29315,2631,10/5/2005,Canongate U.S. -17646,The Tent,Margaret Atwood,3.70,0385516681,9780385516686,eng,159,5061,519,1/1/2006,Nan A. Talese -17650,The Robber Bride,Margaret Atwood,3.83,0385491034,9780385491037,eng,528,34550,1679,1/20/1998,Anchor -17654,The Moth Diaries,Rachel Klein,3.49,0571219713,9780571219711,eng,245,60,12,4/7/2004,Faber & Faber Limited -17658,Trauma,Graham Masterton,3.55,0451205553,9780451205551,en-GB,224,344,43,1/1/2002,Signet -17671,Liars and Saints,Maile Meloy,3.60,0743261984,9780743261982,eng,272,2270,306,7/13/2004,Scribner -17673,The Anthropology of Turquoise: Reflections on Desert Sea Stone and Sky,Ellen Meloy,4.04,0375708138,9780375708138,eng,336,1063,159,7/8/2003,Vintage -17675,Eating Stone: Imagination and the Loss of the Wild,Ellen Meloy,4.10,140003177X,9781400031771,eng,352,462,78,10/17/2006,Vintage -17679,Writing the Qualitative Dissertation: Understanding by Doing,Judith M. Meloy,3.73,0805832890,9780805832891,eng,242,9,0,7/3/2001,Psychology Press -17682,The Dead Beat: Lost Souls Lucky Stiffs and the Perverse Pleasures of Obituaries,Marilyn Johnson,3.41,0060758767,9780060758769,en-US,272,1137,231,1/30/2007,Harper Perennial -17683,Dead Beat (The Dresden Files #7),Jim Butcher,4.43,045146091X,9780451460912,eng,517,91592,2747,1/1/2006,Roc -17686,Diaries 1910-1923,Franz Kafka/Max Brod/Joseph Kresh/Martin Greenberg,4.23,0805209069,9780805209068,eng,521,2090,90,1/21/2009,Schocken -17687,The Metamorphosis,Franz Kafka,3.81,1419172697,9781419172694,en-US,48,395,30,6/17/2004,Kessinger Publishing -17688,The Metamorphosis In the Penal Colony and Other Stories: The Great Short Works of Franz Kafka,Franz Kafka,4.04,0684800705,9780684800707,eng,352,13846,193,5/22/2000,Scribner -17690,The Trial,Franz Kafka/Max Brod/Willa Muir/Edwin Muir,3.98,0099428644,9780099428640,eng,255,168300,3724,4/9/2001,Vintage -17691,Franz Kafka: The Complete Stories,Franz Kafka/Nabum N. Glazer/John Updike,4.35,0805238638,9780805238631,en-US,486,59,3,1/1/1987,Schocken -17692,The Trial,Franz Kafka/Breon Mitchell/Arthur H. Samuelson,3.98,0805209999,9780805209990,eng,276,4086,372,5/25/1999,Schocken Books -17694,The Zürau Aphorisms,Franz Kafka/Michael Hofmann/Geoffrey Brock/Roberto Calasso,3.75,0805212078,9780805212075,eng,160,648,57,12/26/2006,Schocken -17697,Collected Shorter Fiction: Volume I,Leo Tolstoy/Aylmer Maude/Nigel J. Cooper,4.41,0375411720,9780375411724,eng,848,72,10,8/7/2001,Everyman's Library -17698,The Cossacks,Leo Tolstoy/Peter Constantine/Cynthia Ozick,3.79,0812975049,9780812975048,eng,161,4356,226,2/14/2006,Modern Library -17701,More Adventures of the Great Brain (Great Brain #2),John D. Fitzgerald/Mercer Mayer,4.26,0142400653,9780142400654,eng,160,4850,138,2/9/2004,Puffin Books -17702,The Dirt: Confessions of the World's Most Notorious Rock Band,Neil Strauss/Vince Neil/Nikki Sixx/Tommy Lee/Mick Mars,4.16,0060392886,9780060392888,eng,430,436,50,5/22/2001,Dey Street Books -17707,The Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1),Douglas Adams,4.22,0671746065,9780671746063,eng,216,2796,242,5/1/1991,Pocket Books -17722,Alice's Adventures in Wonderland & Through the Looking-Glass,Lewis Carroll/John Tenniel,4.07,0553213458,9780553213454,eng,234,1469,98,5/1/1984,Bantam Classics -17724,The Awakening,Kate Chopin/Margo Culley,3.65,0393960579,9780393960570,eng,336,937,72,9/17/1993,W. W. Norton & Company -17726,Go Down Moses,William Faulkner,3.93,0679732179,9780679732174,eng,365,8289,370,1/30/1991,Vintage -17727,The Books of Magic,Neil Gaiman/John Bolton/Scott Hampton/Charles Vess/Paul Johnson/Roger Zelazny,4.08,1563890828,9781563890826,eng,200,13850,481,4/14/1993,Vertigo -17728,The House of Mirth,Edith Wharton/Nina Bawden,3.95,1844082938,9781844082933,eng,351,69014,3180,1/19/2006,Virago -17730,House of Mirth,Edith Wharton,3.95,1600962203,9781600962202,eng,324,220,11,7/30/2008,Waking Lion Press -17733,The House of Mirth,Edith Wharton/Jeffrey Meyers,3.95,1593081049,9781593081041,eng,359,74,9,10/1/2003,Barnes Noble Classics -17735,Light (Kefahuchi Tract #1),M. John Harrison,3.60,0553382950,9780553382952,eng,310,3732,415,8/31/2004,Spectra -17743,Beautiful Evidence,Edward R. Tufte,4.15,0961392177,9780961392178,eng,213,2045,130,11/7/2006,Graphics Press LLC -17747,The Cognitive Style of PowerPoint: Pitching Out Corrupts Within,Edward R. Tufte,4.08,0961392169,9780961392161,en-US,31,924,65,1/1/2006,Graphics Press -17761,Hafen des Unglücks (Aubrey/Maturin Book 11),Patrick O'Brian,4.41,3548256422,9783548256429,ger,354,6,0,10/1/2002,Ullstein Buchverlage GmbH & Co. KG / Ullstein Tas -17762,Manöver um Feuerland (The Far Side of the World) (Aubrey/Maturin Book 10),Patrick O'Brian,4.45,3548254438,9783548254432,ger,478,8,0,6/1/2002,Ullstein Tb -17766,Master and Commander (Aubrey/Maturin Book 1),Patrick O'Brian,4.10,073931565X,9780739315651,eng,0,1,0,3/9/2004,Random House Audio -17770,Post Captain (Aubrey/Maturin Book 2),Patrick O'Brian,4.29,039700804X,9780397008049,eng,413,3,0,12/1/1972,Lippincott Williams & Wilkins -17778,Gefahr im Roten Meer (Treason's Harbour) (Aubrey/Maturin Book 9),Patrick O'Brian,4.38,3548254357,9783548254357,ger,412,7,0,5/1/2002,Ullstein Tb -17780,In the Heart of the Sea: The Tragedy of the Whaleship Essex,Nathaniel Philbrick,4.16,0141001828,9780141001821,eng,302,72656,4930,5/1/2001,Penguin Books -17781,Heart of the Sea (Gallaghers of Ardmore #3),Nora Roberts,4.15,0515128554,9780515128550,eng,369,24451,537,12/5/2000,Berkley Books -17783,Corazón de mar (Gallagher #3),Nora Roberts/Juan Larrea,4.15,8466307257,9788466307253,spa,396,12,0,7/1/2002,Punto de Lectura -17795,Banvard's Folly: Thirteen Tales of People Who Didn't Change the World,Paul Collins,3.98,0312300336,9780312300333,eng,320,513,70,5/3/2002,Picador -17798,Fads and Fallacies in the Name of Science,Martin Gardner,4.06,0486203948,9780486203942,eng,384,1022,46,6/1/1957,Dover Publications (NY) -17799,South of the Border West of the Sun,Haruki Murakami/Philip Gabriel,3.87,0099448572,9780099448570,eng,190,59657,2612,12/1/2006,Vintage -17800,Dance Dance Dance,Haruki Murakami,4.04,0099448769,9780099448761,eng,393,50169,2117,2/7/2002,Vintage -17803,After Dark,Haruki Murakami/Jay Rubin,3.70,0307265838,9780307265838,eng,191,80308,4506,5/8/2007,Knopf Publishing Group -17804,Vintage Murakami,Haruki Murakami,4.03,1400033969,9781400033966,eng,182,740,41,1/6/2004,Vintage Books USA -17807,Gravitation #2,Maki Murakami,3.99,848449487X,9788484494874,spa,208,10,0,6/30/2004,Ediciones Glénat España -17828,The Master and Margarita,Mikhail Bulgakov/Michael Karpelson,4.30,1411683056,9781411683051,eng,332,493,47,4/1/2006,Lulu Press -17830,Bulgakov's the Master and Margarita: The Text as a Cipher,Elena N. Mahlow,5.00,0533017424,9780533017423,eng,202,4,0,1/1/1975,Vantage Press -17837,Мастер и Маргарита,Mikhail Bulgakov/Михаил Булгаков,4.30,5040019521,9785040019526,rus,640,10,1,9/28/2004,Эксмо -17841,Foucault's Pendulum,Umberto Eco/William Weaver,3.89,015603297X,9780156032971,eng,623,46598,2074,3/5/2007,Mariner Books -17845,Pendulum: Leon Foucault and the Triumph of Science,Amir D. Aczel,3.72,0743464796,9780743464796,eng,288,183,25,9/14/2004,Washington Square Press -17846,The House of Mirth,Edith Wharton/Jeffrey Meyers,3.95,1593081537,9781593081539,eng,348,360,67,8/26/2004,Barnes Noble Classics -17850,The House of Mirth,Edith Wharton/R.W.B. Lewis,3.95,0814749763,9780814749760,eng,335,10,0,1/1/1977,New York University Press -17861,The Family Trade (The Merchant Princes #1),Charles Stross,3.52,0765348217,9780765348210,eng,308,4691,355,5/1/2005,Tor Fantasy -17862,Toast and Other Stories,Charles Stross,3.80,0809556030,9780809556038,eng,247,935,34,12/13/2005,Cosmos Books (OH) -17863,Accelerando,Charles Stross,3.88,0441014151,9780441014156,eng,415,16527,971,7/1/2006,Ace Books -17866,Glasshouse,Charles Stross,3.87,0441014038,9780441014033,en-US,335,8975,464,6/27/2006,Ace Books -17867,The Hidden Family (The Merchant Princes #2),Charles Stross,3.57,0765352052,9780765352057,eng,309,3344,127,5/2/2006,Tor Fantasy -17872,Lobsters,Charles Stross/Shandra Marie/Jared Doreck,3.83,1884612466,9781884612466,eng,1,158,5,8/11/2005,AudioText -17873,Antibodies,Charles Stross/Shandra Marie/Jared Doreck,3.46,1884612474,9781884612473,eng,1,67,4,8/11/2005,AudioText -17876,Notes from Underground White Nights The Dream of a Ridiculous Man and Selections from The House of the Dead,Fyodor Dostoyevsky/Andrew R. MacAndrew/Ben Marcus,4.18,0451529553,9780451529558,eng,233,71824,1607,11/2/2004,Signet -17877,The House of the Dead,Fyodor Dostoyevsky/Ergin Altay,4.05,0486434095,9780486434094,eng,247,11252,399,4/22/2004,Dover Publications -17878,The Village of Stepanchikovo,Fyodor Dostoyevsky/Ignat Avsey,3.87,0140446583,9780140446586,eng,224,1570,80,12/1/2001,Penguin Book Limited -17879,Crime and Punishment,Fyodor Dostoyevsky/Larissa Volokhonsky/Richard Pevear,4.21,0679420290,9780679420293,eng,564,6950,381,5/25/1993,Random House -17880,The Gambler,Fyodor Dostoyevsky/Jonathan Franzen,3.89,184391123X,9781843911234,eng,160,82,8,10/1/2005,Hesperus Press -17881,Notes from Underground & The Double,Fyodor Dostoyevsky/Jessie Coulson,4.20,0140442529,9780140442526,eng,287,4706,151,7/30/1972,Penguin Books -17883,Notes from Underground & A Confession (Everyman's Library),A.D.P. Briggs/Leo Tolstoy/Fyodor Dostoyevsky,3.76,0460874489,9780460874489,eng,256,17,1,6/15/1994,Everymans Library -17890,The Gambler/Bobok/A Nasty Story,Fyodor Dostoyevsky/Jessie Coulson,3.99,0140441794,9780140441796,en-US,240,576,41,5/27/1966,Penguin Books -17891,The Idiot,Fyodor Dostoyevsky/Constance Garnett,4.18,0486432130,9780486432137,en-US,540,72,6,12/12/2003,Dover Publications -17893,Netochka Nezvanova,Fyodor Dostoyevsky/Jane Kentish,3.81,0140444556,9780140444551,eng,176,2590,127,8/29/1985,Penguin Classics -17905,Plays 5: Arcadia / The Real Thing / Night and Day / Indian Ink / Hapgood,Tom Stoppard,4.29,0571197515,9780571197514,en-US,608,572,33,12/1/2000,Farrar Straus and Giroux -17908,Rock 'n' Roll,Tom Stoppard,3.71,0802143075,9780802143075,eng,144,951,60,5/10/2007,Grove Press -17914,The Real Thing,Tom Stoppard,3.94,0571125298,9780571125296,en-US,112,3553,140,4/17/2000,Farrar Straus and Giroux -17915,Arcadia,Tom Stoppard,4.19,1568651376,9781568651378,eng,97,48,3,5/1/1995,Doubleday Books -17918,Plays 1: The Real Inspector Hound / After Magritte / Dirty Linen / New-Found-Land / Dogg's Hamlet Cahoot's Macbeth,Tom Stoppard,4.03,0571177654,9780571177653,eng,211,78,13,4/15/1996,Faber & Faber -17922,Every Good Boy Deserves Favor & Professional Foul,Tom Stoppard,3.90,0802150454,9780802150455,en-GB,188,190,10,3/28/1994,Grove Press -17926,Lord Malquist and Mr. Moon,Tom Stoppard,3.41,0802142710,9780802142719,eng,200,192,23,8/15/2006,Grove Press -17944,The Gunslinger (The Dark Tower #1),Stephen King,3.96,0451160525,9780451160522,eng,315,1902,227,7/1/1989,Signet -17945,Everything and Nothing,Jorge Luis Borges/Eliot Weinberger/John M. Fein/James E. Irby/Donald A. Yates,4.38,0811214001,9780811214001,eng,108,593,37,4/17/1999,New Directions -17946,Seven Nights,Jorge Luis Borges/Eliot Weinberger,4.33,0811209059,9780811209052,eng,121,1037,60,5/29/1985,New Directions Publishing Corporation -17947,Museo: Textos Ineditos,Adolfo Bioy Casares,4.17,9500424134,9789500424134,spa,261,6,0,10/1/2002,Emecé Editores -17950,Obra Poética,Jorge Luis Borges,4.49,9500426161,9789500426169,spa,645,50,3,6/1/2005,Emecé Editores -17961,Collected Fictions,Jorge Luis Borges/Andrew Hurley,4.58,0140286802,9780140286809,eng,565,18874,791,9/30/1999,Penguin Classics Deluxe Edition -17971,The Eternal Frontier: An Ecological History of North America and Its Peoples,Tim Flannery,4.06,0802138888,9780802138880,eng,432,588,69,4/17/2002,Grove Press -17976,Hope Springs Eternal (Prairie River #4),Kristiana Gregory,4.27,0439440033,9780439440035,eng,176,130,7,7/1/2005,Scholastic Paperbacks -17977,The Ancestor's Tale: A Pilgrimage to the Dawn of Evolution,Richard Dawkins,4.13,061861916X,9780618619160,eng,688,20232,609,9/2/2005,Mariner Books -17982,The Reverse of the Medal (Aubrey & Maturin #11),Patrick O'Brian,4.41,0006499260,9780006499268,eng,261,186,12,4/1/2010,HarperCollins -17983,The Reverse of the Medal (Aubrey/Maturin #11),Patrick O'Brian/Simon Vance,4.41,0786178183,9780786178186,en-GB,0,3598,93,2/1/2006,Blackstone Audiobooks -17986,Teleny or the Reverse of the Medal,Oscar Wilde,3.67,1595690360,9781595690364,eng,138,985,63,3/7/2006,MONDIAL -17994,The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography,Simon Singh,4.29,0385495323,9780385495325,eng,412,16531,977,8/29/2000,Anchor -17998,The Eternity Code (Artemis Fowl #3),Eoin Colfer,4.04,0786856289,9780786856282,en-US,309,1660,125,5/3/2005,Miramax -18005,How I Became a Pirate,Melinda Long/David Shannon,4.08,0152018484,9780152018481,eng,44,24098,586,9/1/2003,HMH Books for Young Readers -18013,The Pirate Dictionary,Terry Breverton,3.70,1589802438,9781589802438,eng,189,51,7,7/31/2004,Pelican Publishing Company -18016,Mulliner Nights (Mr. Mulliner #3),P.G. Wodehouse,4.11,1400079616,9781400079612,eng,240,1174,75,4/12/2005,Vintage -18017,Life at Blandings,P.G. Wodehouse,4.35,0140059032,9780140059038,en-US,608,2651,47,1/5/1988,Penguin Books -18018,Jill the Reckless,P.G. Wodehouse,4.02,1585676608,9781585676606,eng,290,666,82,4/7/2005,Harry N. Abrams -18019,The Code of the Woosters: Jeeves to the Rescue,P.G. Wodehouse/Jonathan Cecil,4.36,1572705485,9781572705487,eng,7,172,26,9/7/2006,AudioGO -18021,P.G. Wodehouse in His Own Words,P.G. Wodehouse/Tony Ring/Barry Day,4.07,1585673935,9781585673933,eng,320,48,6,4/28/2003,Harry N. Abrams -18022,Jeeves and the Mating Season (Jeeves #9),P.G. Wodehouse/Jonathan Cecil,4.26,1572703199,9781572703193,eng,7,109,22,4/7/2003,AudioGO -18025,Something Fresh (Blandings Castle #1),P.G. Wodehouse,4.16,1585676586,9781585676583,eng,284,5311,391,4/7/2005,Harry N. Abrams -18027,The Clicking of Cuthbert,P.G. Wodehouse,3.93,1406929980,9781406929980,eng,162,6,1,11/3/2006,Hard Press -18029,Ring for Jeeves (Jeeves #10),P.G. Wodehouse,4.01,1585675245,9781585675241,eng,208,2785,183,4/12/2004,Harry N. Abrams -18031,Ukridge,P.G. Wodehouse,3.89,1585674796,9781585674794,eng,272,1019,83,9/15/2003,Harry N. Abrams -18032,Jeeves and the Tie That Binds (Jeeves #14),P.G. Wodehouse,4.23,0743203623,9780743203623,eng,205,2781,130,11/1/2000,Touchstone -18035,Right Ho Jeeves (Jeeves #6),P.G. Wodehouse,4.32,140690483X,9781406904833,eng,224,8193,443,11/3/2006,Hard Press -18039,Blandings Castle (Blandings Castle #3),P.G. Wodehouse,4.18,1585673382,9781585673384,eng,301,1370,70,10/23/2002,Harry N. Abrams -18041,Mr. Mulliner Speaking,P.G. Wodehouse,4.01,1841591386,9781841591384,en-US,232,1497,48,3/3/2005,Everyman Library / Overlook Press -18042,Laughing Gas,P.G. Wodehouse,3.89,1585672327,9781585672325,eng,286,1723,129,1/1/2002,Harry N. Abrams -18047,The Adventures of Sally,P.G. Wodehouse,3.78,1426423705,9781426423703,en-US,232,10,0,5/29/2008,BiblioLife -18053,Meet Mr. Mulliner,P.G. Wodehouse,4.06,1585672750,9781585672752,eng,203,1224,89,5/13/2002,Harry N. Abrams -18055,Eggs Beans and Crumpets,P.G. Wodehouse,4.11,1841591068,9781841591063,eng,224,898,60,10/27/2000,Overlook Press -18057,A Damsel in Distress,P.G. Wodehouse,4.08,1406953210,9781406953213,eng,216,3526,355,11/3/2006,rbooks -18061,Uncle Fred in the Springtime (Blandings Castle #6),P.G. Wodehouse,4.24,1841591300,9781841591308,eng,288,1703,108,4/15/2004,Everyman -18062,The Best of Wodehouse: An Anthology,P.G. Wodehouse/John Mortimer,4.41,0307266613,9780307266613,eng,840,413,46,6/19/2007,Everyman's Library -18064,The World of Mr. Mulliner,P.G. Wodehouse,4.32,0140281703,9780140281705,eng,624,345,30,7/29/1999,Penguin Books Ltd -18067,Cocktail Time,P.G. Wodehouse,4.13,1585675741,9781585675746,eng,304,648,51,10/21/2004,Harry N. Abrams -18072,The Waste Lands (The Dark Tower #3),Stephen King/Ned Dameron,4.24,0451173317,9780451173317,eng,590,1013,96,1/1/1993,Signet Book -18073,Jeeves in the Offing (Jeeves #12),P.G. Wodehouse,4.17,1841591165,9781841591162,eng,208,28,4,9/12/2002,Everyman -18074,Jeeves and The Feudal Spirit (Jeeves #11),P.G. Wodehouse,4.32,1841591017,9781841591018,eng,240,25,1,9/20/2001,Everyman's Library -18077,Piccadilly Jim,P.G. Wodehouse,4.02,1585676160,9781585676163,eng,302,2673,184,10/21/2004,Harry N. Abrams -18081,Joy in the Morning (Jeeves #8),P.G. Wodehouse,4.34,1841591157,9781841591155,eng,296,38,0,3/14/2002,Everyman -18089,The Mating Season (Jeeves #9),P.G. Wodehouse,4.26,1841591076,9781841591070,eng,272,59,2,9/20/2001,Everyman -18098,Indiscretions of Archie,P.G. Wodehouse,3.87,0742632598,9780742632592,eng,215,693,78,5/1/2000,Classic Books -18119,The Subtle Knife (His Dark Materials #2),Philip Pullman,4.13,0440238145,9780440238140,en-US,288,4750,337,9/9/2003,Laurel Leaf Library -18122,The Amber Spyglass (His Dark Materials #3),Philip Pullman,4.09,0440238153,9780440238157,eng,467,237072,6358,9/9/2003,Laurel Leaf -18127,The Eyes of the Dragon,Stephen King/David Palladini,3.93,0451166582,9780451166586,en-US,380,2925,285,12/8/1987,Signet Book -18132,The Voyage of the “Dawn Treader” (The Chronicles of Narnia #3),C.S. Lewis/Pauline Baynes,4.09,0020442602,9780020442608,eng,216,2977,250,1/1/1970,Macmillan Publishing Company/Collier Books -18133,Lolita,Vladimir Nabokov/John Ray Jr.,3.89,0679723161,9780679723165,eng,317,19513,2191,6/13/1997,Vintage International -18134,William Shakespeare’s: Twelfth Night (Shakespeare Retellings #6),Bruce Coville/Kathryn Hewitt,4.11,0803723180,9780803723184,eng,48,150,14,3/10/2003,Dial -18135,Romeo and Juliet,William Shakespeare/Paul Werstine/Barbara A. Mowat,3.74,0743477111,9780743477116,eng,368,1893917,14637,1/1/2004,Simon Schuster -18136,Romeo and Juliet,William Shakespeare/Rex Gibson,3.74,0521618703,9780521618700,en-US,228,425,30,8/1/2005,Cambridge University Press -18140,Romeo and Juliet,William Shakespeare/Michael Sheen/Kate Beckinsale/Fiona Shaw/Norman Rodway,3.74,0521625629,9780521625623,eng,3,18,0,10/23/1997,Naxos Audiobooks -18144,Ohio Class (Silent Service #5),H. Jay Riker,3.84,0060524391,9780060524395,eng,416,44,4,7/25/2006,Avon -18146,Seawolf Class (Silent Service #3),H. Jay Riker,3.96,0380804689,9780380804689,eng,416,65,5,7/30/2002,Avon Books -18160,The Art of Deception: Controlling the Human Element of Security,Kevin D. Mitnick/William L. Simon/Steve Wozniak,3.76,076454280X,9780764542800,eng,352,4565,283,10/17/2003,Wiley -18172,Hardball: Are You Playing to Play or Playing to Win?,George Stalk Jr./Rob Lachenauer/Robert Lachenauer/John Butman,3.49,1591391679,9781591391678,eng,192,84,9,10/1/2004,Harvard Business Review Press -18182,A Theory of Fun for Game Design,Raph Koster/Will Wright,3.94,1932111972,9781932111972,en-CA,256,2113,181,11/6/2004,Paraglyph Press -18184,The Complete Theory Fun Factory: Music Theory Puzzles and Games for the Early Grades,Ian Martin/Katie Elliott,5.00,0851621813,9780851621814,eng,96,1,0,6/1/2004,Boosey & Hawkes Inc -18185,The Pillow Book,Sei Shōnagon/Ivan Morris,4.02,0231073372,9780231073370,eng,419,3786,275,12/30/1991,Columbia University Press -18190,Bachelor Brothers' Bed & Breakfast Pillow Book,Bill Richardson,3.77,0312194404,9780312194406,eng,208,325,42,10/15/1998,St. Martin's Griffin -18194,The Cyberiad,Stanisław Lem/Michael Kandel/Daniel Mróz,4.18,0156027593,9780156027595,en-US,295,7842,397,12/16/2002,Harcourt -18202,Christianity for Modern Pagans: Pascal's Pensées - Edited Outlined & Explained,Peter Kreeft/Blaise Pascal,4.37,0898704529,9780898704525,en-US,341,418,39,9/1/1993,Ignatius Press -18212,Jacques the Fatalist,Denis Diderot/David Coward,3.84,0192838741,9780192838742,eng,304,4891,102,9/16/1999,Oxford University Press -18214,Jacques der Fatalist und sein Herr,Denis Diderot,3.84,315009335X,9783150093351,ger,360,22,0,1/1/1972,Reclam Ditzingen -18215,Pictorial Encyclopedia of Trades and Industry Vol 1,Denis Diderot/Charles Coulston Gillispie,3.60,0486274284,9780486274287,eng,239,5,0,1/18/1993,Dover Publications -18217,Rameau's Nephew / D'Alembert's Dream,Denis Diderot/Leonard Tancock,3.67,0140441735,9780140441734,eng,237,1292,67,10/28/1976,Penguin Books -18225,Theory of Colours,Johann Wolfgang von Goethe/Deane B. Judd,4.06,0262570211,9780262570213,eng,468,694,20,3/15/1970,MIT Press -18226,Maxims and Reflections,Johann Wolfgang von Goethe/Peter Hutchinson/Elisabeth Stopp,3.82,0140447202,9780140447200,eng,208,280,23,3/1/1999,Penguin Books -18240,War and Peace,Leo Tolstoy,4.11,3895086908,9783895086908,en-US,1500,126,9,5/9/1999,Konemann -18241,War and Peace,Leo Tolstoy/Anthony Briggs/Orlando Figes,4.11,067003469X,9780670034697,eng,1412,1228,93,1/19/2006,Viking Adult -18242,A Savage War of Peace: Algeria 1954-1962,Alistair Horne,4.23,1590172183,9781590172186,eng,608,1895,178,10/10/2006,New York Review of Books -18243,War and Peace,Leo Tolstoy/Constance Garnett/A.N. Wilson,4.11,0375760644,9780375760648,eng,1388,850,134,7/9/2002,Modern Library -18245,War and Peace,Leo Tolstoy/Orlando Figes/Anthony Briggs,4.11,0143039997,9780143039990,eng,1408,516,113,12/1/2006,Penguin Books -18246,War and Peace and War: The Rise and Fall of Empires,Peter Turchin,4.16,0452288193,9780452288195,en-US,416,276,36,2/27/2007,Plume -18251,Great Expectations,Charles Dickens,3.77,0140620168,9780140620160,eng,443,905,61,1/13/1994,Penguin Books -18253,Great Expectations,Charles Dickens/Linda Jennings,3.77,0140366814,9780140366815,eng,417,109,4,6/1/1995,Puffin Books -18255,Oliver Twist,Charles Dickens,3.86,0486424537,9780486424538,eng,368,2077,83,12/30/2002,Dover Publications -18257,Oliver Twist,Charles Dickens/Fred Kaplan,3.86,039396292X,9780393962925,eng,624,178,17,12/17/1992,W.W. Norton & Company -18260,Oliver Twist,Charles Dickens/George Cruikshank/Jill Muller,3.86,1593082061,9781593082062,eng,478,348,47,10/25/2004,Barnes Noble Classics -18261,The Nibelungenlied,Unknown/A.T. Hatto,3.87,0140441379,9780140441376,eng,404,4052,163,8/26/2004,Penguin Classics -18265,Gargantua and Pantagruel,François Rabelais/Thomas Urquhart/Pierre Le Motteux,3.71,0679431373,9780679431374,eng,807,51,11,5/10/1994,Alfred A. Knopf Inc. -18266,Gargantua and Pantagruel,François Rabelais/M.A. Screech,3.71,0140445501,9780140445503,eng,1041,12005,297,10/26/2006,Penguin Classics -18273,Beyond Good and Evil: Prelude to a Philosophy of the Future,Friedrich Nietzsche/Walter Kaufmann,4.01,0394703375,9780394703374,eng,256,50,6,12/17/1989,Vintage -18279,Phenomenology of Perception,Maurice Merleau-Ponty/Colin Smith,4.15,0415278414,9780415278416,eng,544,5078,77,5/3/2005,Routledge -18280,Introduction to Phenomenology,Dermot Moran,4.18,0415183731,9780415183734,eng,592,217,19,2/5/2000,Routledge -18281,Introduction to Phenomenology,Robert Sokolowski,3.98,0521667925,9780521667920,eng,248,316,36,1/27/2000,Cambridge University Press -18282,The Basic Problems of Phenomenology (Studies in Phenomenology & Existential Philosophy),Martin Heidegger/Albert Hofstadter,4.29,025320478X,9780253204783,en-US,432,467,16,8/1/1988,Indiana University Press -18283,The Phenomenology of Mind Volume II,Georg Wilhelm Friedrich Hegel/James Black Baillie,4.00,1596057734,9781596057739,ger,372,1,0,2/16/2006,Cosimo Classics -18284,Experimental Phenomenology: An Introduction,Don Ihde,3.73,0887061990,9780887061998,eng,155,44,1,6/30/1986,State University of New York Press -18287,Critique of Pure Reason,Immanuel Kant/J.M.D. Meiklejohn,3.94,0486432548,9780486432540,eng,480,72,10,11/17/2003,Dover Publications -18288,Critique of Pure Reason,Immanuel Kant/Paul Guyer/Allen W. Wood,3.94,0521657296,9780521657297,eng,796,23607,375,2/28/1999,Cambridge University Press -18290,Critique of Pure Reason,Immanuel Kant/Werner S. Pluhar/Patricia Kitcher/James W. Ellington,3.94,0872202577,9780872202573,eng,1096,180,14,12/1/1996,Hackett Publishing Company Inc. -18291,Critique of Pure Reason,Immanuel Kant/Marcus Weigelt/F. Max Müller,3.94,0140447474,9780140447477,eng,784,254,35,11/29/2007,Penguin Books Ltd -18294,Critique of Pure Reason (Studies in the History of Philosophy),Immanuel Kant/Humphrey Palmer,3.94,0773491678,9780773491670,eng,140,17,0,1/1/1992,Edwin Mellen Press -18297,The Anime Encyclopedia: A Guide to Japanese Animation Since 1917,Jonathan Clements/Helen McCarthy,4.04,1933330104,9781933330105,eng,867,25,5,11/1/2006,Stone Bridge Press -18305,Unpublished Writings from the Period of Unfashionable Observations (Complete Works 11),Friedrich Nietzsche/Richard T. Gray,4.06,0804728844,9780804728843,eng,536,2,0,1/1/2000,Stanford University Press -18310,Thus Spake Zarathustra: A Book for All and None,Friedrich Nietzsche,4.06,1406947199,9781406947199,eng,356,275,20,11/3/2006,Penguin -18314,The Picture of Dorian Gray,Oscar Wilde,4.08,1557424292,9781557424297,eng,187,329,21,10/10/2005,Wildside Press -18315,The Picture of Dorian Gray,Oscar Wilde,4.08,1420925288,9781420925289,en-US,124,838,52,1/1/2005,Digireads.com -18324,Haussmann or the Distinction,Paul La Farge,3.65,0312420927,9780312420925,eng,379,157,21,10/2/2002,Picador -18328,The Artist of the Missing,Paul La Farge/Stephen Alcorn,3.58,0374525803,9780374525804,eng,256,99,10,6/4/1999,Farrar Strauss & Giroux-3pl -18333,Reluctant Runaway (To Catch a Thief #2),Jill Elizabeth Nelson,3.71,1590526872,9781590526873,en-US,352,90,12,3/20/2007,Multnomah -18334,Kentucky Straight: Stories,Chris Offutt,4.03,067973886X,9780679738862,eng,192,876,89,10/27/1992,Vintage -18335,Out of the Woods,Chris Offutt,4.05,0684853760,9780684853765,eng,176,480,61,2/22/2000,Simon Schuster -18337,No Heroes: A Memoir of Coming Home,Chris Offutt,3.87,0684865521,9780684865522,eng,272,193,34,4/2/2003,Simon Schuster -18338,The Castle Keeps,Andrew J. Offutt,3.57,0425021874,9780425021873,en-US,191,19,3,7/30/1972,Berkley -18341,Conan: Sword of Skelos,Andrew J. Offutt,3.94,0765340216,9780765340214,eng,224,1427,5,2/18/2002,Tor Fantasy -18348,Incest: From "A Journal of Love": The Unexpurgated Diary of Anaïs Nin 1932-1934,Anaïs Nin/Rupert Pole/Gunther Stuhlmann,3.99,0151443661,9780151443666,eng,418,908,54,10/1/1992,Houghton Mifflin Harcourt -18349,Fire: From "A Journal of Love": The Unexpurgated Diary of Anaïs Nin 1934-1937,Anaïs Nin,4.13,0156003902,9780156003902,eng,448,585,31,7/22/1996,Mariner Books -18350,In Favor of the Sensitive Man and Other Essays,Anaïs Nin,4.02,0156444453,9780156444453,eng,180,520,40,4/1/1976,Mariner Books -18353,Anaïs Nin: A Biography,Deirdre Bair,3.99,0140255257,9780140255256,eng,672,632,37,7/1/1996,Penguin Books -18361,Fire: From A Journal of Love - The Unexpurgated Diary of Anaïs Nin (1934-1937),Anaïs Nin/Gunther Stuhlmann,4.13,0151000883,9780151000883,eng,448,196,6,5/15/1995,Houghton Mifflin Harcourt -18362,The Diary of Anaïs Nin Vol. 6: 1955-1966,Anaïs Nin/Gunther Stuhlmann,4.13,0156260328,9780156260329,eng,432,319,11,11/3/1977,Mariner Books -18365,Nearer the Moon: From "A Journal of Love": The Unexpurgated Diary of Anaïs Nin 1937-1939,Anaïs Nin/Gunther Stuhlmann,4.23,0151000891,9780151000890,eng,396,168,16,11/1/1996,Houghton Mifflin -18366,The Early Diary of Anaïs Nin Vol. 3: 1923-1927,Anaïs Nin,4.18,0156272504,9780156272506,eng,320,147,7,3/22/1985,Mariner Books -18370,Henry and June: From the Unexpurgated Diary of Anaïs Nin,Anaïs Nin,3.90,0151400032,9780151400034,eng,274,151,19,12/31/1986,Houghton Mifflin Harcourt P -18373,Flowers for Algernon,Daniel Keyes,4.12,0156030306,9780156030304,eng,311,337596,9949,5/1/2005,Harvest Books -18374,Flowers for Algernon,Daniel Keyes,4.12,0435123432,9780435123437,en-US,218,190,21,3/31/1989,Heinemann -18380,Algernon Charlie and I: A Writer's Journey: Plus the Complete Original Short Novelette Version of Flowers for Algernon,Daniel Keyes,4.06,1929519001,9781929519002,eng,223,15,3,2/14/2004,Challenge Press Inc./Challcrest Press -18383,Jane Eyre,Charlotte Brontë,4.12,3717519646,9783717519645,ger,784,432,26,3/1/2001,Manesse Verlag -18384,The Death of Ivan Ilyich and Other Stories,Leo Tolstoy,4.11,1840224533,9781840224535,eng,256,320,33,12/5/2004,Wordsworth Editions -18385,The Death of Ivan Ilych & Other Stories,Leo Tolstoy,4.11,1593080697,9781593080693,eng,400,263,37,12/15/2003,Barnes Noble Classics -18392,The Lost Years of Merlin,T.A. Barron,3.98,0441010288,9780441010288,eng,304,12117,452,7/2/2002,Ace -18394,The Mirror of Merlin,T.A. Barron,4.06,0441009654,9780441009657,eng,288,6661,54,7/30/2002,Ace -18395,The Wings of Merlin,T.A. Barron,4.11,0441010245,9780441010240,eng,288,6211,63,1/28/2003,Ace -18403,El Club Dante,Matthew Pearl/Vicente Villacampa,3.38,8432217204,9788432217203,spa,586,156,9,3/1/2006,Planeta Publishing -18404,El club Dante,Matthew Pearl/Vicente Villacampa,3.38,8432296325,9788432296321,spa,464,57,2,8/30/2004,Seix Barral -18405,Gone with the Wind,Margaret Mitchell,4.29,0446675539,9780446675536,eng,1037,999139,15323,4/1/1999,Warner Books -18412,The Wind Done Gone,Alice Randall,3.07,0618219064,9780618219063,eng,224,1698,283,4/8/2002,Mariner Books -18413,Utopia,Thomas More/Clarence H. Miller,3.53,0300084293,9780300084290,eng,200,438,45,2/8/2001,Yale University Press -18414,Utopia,Thomas More/Paul Turner,3.53,0140449108,9780140449105,eng,135,45460,1731,5/6/2003,Penguin Classics -18419,The Kissing Hand,Audrey Penn/Ruth E. Harper/Nancy M. Leak,4.43,1933718005,9781933718002,en-GB,32,57737,1628,10/15/1993,Tanglewood -18420,Hands of Light: A Guide to Healing Through the Human Energy Field,Barbara Ann Brennan/Jos. A. Smith,4.27,0553345397,9780553345391,eng,320,10878,106,2/1/1990,Bantam -18422,Gifted Hands: The Ben Carson Story,Ben Carson/Cecil Murphey,4.21,0310214696,9780310214694,eng,224,11874,1544,11/26/1996,Zondervan -18425,Shake Hands with the Devil,Roméo Dallaire,4.24,0099478935,9780099478935,en-GB,563,242,34,2/3/2005,Arrow -18427,In the Name of Love and Other True Cases (Crime Files #4),Ann Rule,4.04,067179356X,9780671793562,eng,414,1353,53,1/1/1998,Pocket Books -18431,The Rule of Four,Ian Caldwell/Dustin Thomason,3.23,0440241359,9780440241355,eng,450,25111,1691,6/28/2005,Dell Publishing Company -18432,The Real Rule of Four: The Unauthorized Guide to the New York Times #1 Bestseller,Joscelyn Godwin,3.46,1932857087,9781932857085,eng,208,88,5,11/1/2005,Disinformation Books -18438,Time For Kids: Butterflies!,David Bjerklie,3.97,0060782137,9780060782139,eng,32,21,0,2/21/2006,HarperCollins -18443,Macbeth,William Shakespeare/Robert S. Miola/Janet Adelman/Stephen Orgel/Peter Holland,3.90,0393977862,9780393977868,eng,416,739,30,11/26/2003,W. W. Norton & Company -18444,Macbeth,William Shakespeare/Kenneth Muir,3.90,1903436486,9781903436486,eng,255,605,41,1/31/1997,Bloomsbury Arden Shakespeare -18446,Macbeth,William Shakespeare/Roma Gill,3.90,0198321465,9780198321460,eng,160,156,14,1/20/2005,Oxford University Press -18448,Death of a Celebrity (Hamish Macbeth #17),M.C. Beaton,3.84,0446612049,9780446612043,eng,274,2977,183,1/1/2003,Warner Books -18449,The Best of the Journal of Irreproducible Results,George H. Scherr/Richard Liebmann-Smith,4.32,0894805959,9780894805950,en-US,195,40,4,1/10/1989,Workman Publishing Company -18455,The Spy Who Loved Me (James Bond #10),Ian Fleming,3.40,0142003263,9780142003268,eng,198,8053,460,9/2/2003,Penguin Books -18461,Conversations with Jerzy Kosinski,Jerzy Kosiński/Tom Teicholz,3.69,0878056262,9780878056262,eng,242,26,3,5/1/1993,University Press of Mississippi -18486,Frankenstein Makes a Sandwich,Adam Rex,4.21,0152057668,9780152057664,eng,40,1911,276,9/1/2006,Harcourt -18488,Frankenstein or the Modern Prometheus,Mary Wollstonecraft Shelley/Margaret Brantley,3.79,0743487583,9780743487580,eng,324,12897,780,5/1/2004,Pocket Books -18489,Frankenstein,Mary Wollstonecraft Shelley/J. Paul Hunter,3.79,0393964582,9780393964585,en-US,336,2188,171,12/17/1995,W. W. Norton & Company -18496,Mary Shelley: Her Life Her Fiction Her Monsters,Anne K. Mellor,3.90,0415901472,9780415901475,eng,308,80,13,12/15/1989,Routledge -18500,The Faerie Queene: Books I to III,Edmund Spenser/Douglas Brooks-Davies,3.79,0460873911,9780460873918,eng,575,33,3,11/15/1993,Everyman Paperbacks -18503,The Faerie Queene,Edmund Spenser,3.56,1840221089,9781840221084,en-US,896,42,5,6/1/2001,Wordsworth Editions -18517,To the Lighthouse,Virginia Woolf/Eudora Welty,3.78,0156907399,9780156907392,en-US,209,4116,300,12/27/1989,Harcourt -18518,The Diary of Virginia Woolf Volume One: 1915-1919,Virginia Woolf/Anne Olivier Bell/Quentin Bell,4.32,0156260360,9780156260367,eng,356,1281,40,5/15/1979,Mariner Books -18519,The Diary of Virginia Woolf Volume Five: 1936-1941,Virginia Woolf/Anne Olivier Bell/Andrew McNeillie,4.50,0156260409,9780156260404,eng,424,231,8,9/30/1985,Mariner Books -18520,The Diary of Virginia Woolf Volume Three: 1925-1930,Virginia Woolf/Anne Olivier Bell/Andrew McNeillie,4.42,0156260387,9780156260381,eng,408,485,14,9/14/1981,Mariner Books -18521,A Room of One's Own,Virginia Woolf,4.14,0141183535,9780141183534,eng,112,80536,3436,1/1/2000,Penguin Books -18525,Dr. Faustus,Christopher Marlowe,3.80,0486282082,9780486282084,eng,64,45469,935,10/20/1994,Dover Publications -18526,The Complete Plays,Christopher Marlowe/Robert Lindsey/Frank Romany,4.07,0140436332,9780140436334,eng,752,2428,50,11/27/2003,Penguin Classics -18533,Doctor Faustus and Other Plays,Christopher Marlowe/Eric Rasmussen/David Bevington,3.98,0192834452,9780192834454,eng,503,1712,40,5/7/1998,Oxford University Press -18534,Cyrano de Bergerac,Edmond Rostand/Brian Hooker/Walter Hampden,4.06,0553213601,9780553213607,eng,208,410,62,11/1/1950,Bantam Classics -18545,Rosencrantz and Guildenstern Are Dead,Tom Stoppard,4.06,0802132758,9780802132758,eng,126,73863,1618,1/21/1994,Grove Press -18546,King Lear,William Shakespeare/Stanley Wells,3.91,0192839926,9780192839923,eng,336,233,15,4/12/2001,Oxford University Press USA -18547,King Lear Macbeth Indefinition and Tragedy,Stephen Booth,4.11,1877275514,9781877275517,eng,180,18,3,6/1/2002,Cybereditions Corp -18549,A Break with Charity: A Story about the Salem Witch Trials,Ann Rinaldi,3.79,0152046828,9780152046828,eng,320,5052,417,7/1/2003,HMH Books for Young Readers -18551,A Break With Charity: A Story of the Salem Witch Trials,Ann Rinaldi,3.79,0785735488,9780785735489,eng,297,37,6,4/1/1994,Turtleback Books -18553,The Cay (The Cay #1),Theodore Taylor,3.76,044022912X,9780440229124,en-US,156,29126,2227,4/8/2003,Laurel Leaf -18556,The Queen of Whale Cay: The Eccentric Story of 'Joe' Carstairs Fastest Woman on Water,Kate Summerscale/Joe Carstairs,3.69,0140276130,9780140276138,eng,256,393,81,6/1/1999,Penguin Books -18561,Everest: Mountain Without Mercy,Broughton Coburn/David Breashears/Tim Cahill,4.03,0792269845,9780792269847,eng,256,36,2,4/1/2003,National Geographic -18564,The Summit (Everest #3),Gordon Korman,3.96,0439411378,9780439411370,eng,154,2584,106,10/1/2002,Scholastic Paperbacks -18574,Everest: Expedition to the Ultimate,Reinhold Messner,3.93,189857345X,9781898573456,eng,286,256,14,9/1/1999,Baton Wicks -18576,Everything on a Waffle (Coal Harbour #1),Polly Horvath,3.72,0374422087,9780374422080,eng,150,9839,767,9/8/2004,Sunburst -18579,Summer of my German Soldier,Bette Greene,3.68,0142406511,9780142406519,en-US,240,832,91,4/20/2006,Puffin Books -18591,Hamlet (Oxford Bookworms Library: Stage 2),Alistair McCallum/William Shakespeare,3.89,0194232204,9780194232203,eng,54,164,6,10/1/2005,Oxford University Press USA -18596,By Myself and Then Some,Lauren Bacall,3.95,0061127914,9780061127915,eng,512,2799,170,10/31/2006,It Books -18600,Touching the Void: The True Story of One Man's Miraculous Survival,Joe Simpson,4.22,0060730552,9780060730550,eng,218,44074,1405,2/3/2004,Harper Perennial -18603,The Mercy of Thin Air,Ronlyn Domingue,3.83,0743278828,9780743278829,eng,336,4718,656,6/20/2006,Washington Square Press -18610,Thin Air (Spenser #22),Robert B. Parker/David Dukes,3.90,0425152901,9780425152904,en-US,320,4055,141,4/1/1996,G.P. Putnam's Sons -18615,Princess Sultana's Daughters,Jean Sasson,3.89,038547444X,9780385474443,eng,229,59,5,6/1/1994,Doubleday Books -18628,The State of the Art,Iain M. Banks,3.84,189238938X,9781892389381,eng,188,46,6,8/1/2005,Night Shade -18629,Excession (Culture #5),Iain M. Banks,4.21,1857233948,9781857233940,eng,451,173,15,6/13/1996,Orbit -18630,The Player of Games (Culture #2),Iain M. Banks,4.27,0061053562,9780061053566,eng,293,46139,1648,2/1/1997,HarperPrism -18631,Feersum Endjinn,Iain M. Banks,3.82,0553374591,9780553374599,eng,311,320,18,6/1/1995,Spectra/Bantam Books (NYC) -18637,Use of Weapons,Iain M. Banks,4.18,0553292242,9780553292244,eng,389,210,14,3/1/1992,Bantam Books (NY) -18638,Le Sens du vent,Iain M. Banks,4.20,2221095529,9782221095522,fre,404,7,0,9/30/2002,Robert Laffont -18639,Two Girls Fat and Thin,Mary Gaitskill,3.64,0684843129,9780684843124,eng,320,1632,150,2/27/1998,Simon Schuster -18640,Three Novels & Five Short Stories,Daphne du Maurier,4.12,0517349175,9780517349175,eng,677,33,2,12/12/1988,Random House Value Publishing -18646,Galileo's Daughter: A Historical Memoir of Science Faith and Love,Dava Sobel,3.76,0140280553,9780140280555,eng,420,24290,1323,11/1/2000,Penguin Books (NYC) -18648,Galileo's Daughter,Dava Sobel,3.76,1857027124,9781857027129,eng,448,124,18,9/15/2000,Fourth Estate Ltd -18653,Shop in the Name of Love (The Cheetah Girls #2),Deborah Gregory/Paul Mantell,3.64,0786813857,9780786813858,eng,132,54,5,9/15/1999,Jump at the Sun -18655,Shopgirl,Steve Martin,3.43,0786866586,9780786866588,eng,130,1229,147,9/11/2000,Hyperio -18660,The Secret Garden: Talking Beetles and Signaling Trees: The Hidden Ways Gardens Communicate,David Bodanis,4.16,0671868616,9780671868611,eng,187,5,0,11/1/1993,Touchstone Books -18667,E=mc2: A Biography of the World's Most Famous Equation,David Bodanis/Ralph L. Fowler,4.09,0802713521,9780802713520,en-US,352,163,20,9/1/2000,Walker Books -18671,The Botany of Desire: A Plant's Eye View of the World,Michael Pollan,4.06,0747563004,9780747563006,en-US,291,110,11,3/1/2006,Bloomsbury Publishing PLC -18683,Meeting God at Every Turn,Catherine Marshall,4.36,080079298X,9780800792985,eng,256,213,13,9/1/2002,Chosen Books -18699,My Life,Bill Clinton,3.73,0375414576,9780375414572,en-US,957,807,49,6/22/2004,Knopf Publishing Group -18700,My Life Volume I: The Early Years,Bill Clinton,3.82,1400096715,9781400096718,en-US,646,206,15,5/31/2005,Vintage -18710,Murder on the Yellow Brick Road (Toby Peters #2),Stuart M. Kaminsky,3.63,0743400003,9780743400008,eng,192,454,45,5/1/2000,iBooks -18718,Down the Yellow Brick Road:The Making of The Wizard of Oz,Doug McClelland/Ted Sennett,3.92,0515040967,9780515040968,eng,159,3,2,5/1/1976,Pyramid Books -18722,Alentejo Blue,Monica Ali,2.72,0743293037,9780743293037,eng,304,788,104,6/20/2006,Scribner Book Company -18723,Brick Lane,Monica Ali,3.41,0743243315,9780743243315,eng,432,23848,1465,6/2/2004,Scribner -18728,No Ordinary Time: Franklin and Eleanor Roosevelt: The Home Front in World War II,Doris Kearns Goodwin,4.18,0684804484,9780684804484,eng,633,37093,1171,10/1/1995,Simon & Schuster -18736,Going to Pieces Without Falling Apart: A Buddhist Perspective on Wholeness,Mark Epstein/Charlie Conrad,3.90,0767902351,9780767902359,eng,200,4473,228,6/1/1999,Harmony -18741,One More For The Road,Ray Bradbury,3.69,0743440749,9780743440745,eng,289,21,3,4/7/2003,Earthlight -18745,Female Chauvinist Pigs: Women and the Rise of Raunch Culture,Ariel Levy,3.68,0743284283,9780743284288,en-US,236,8511,765,10/3/2006,Free Press -18749,Half of a Yellow Sun,Chimamanda Ngozi Adichie,4.32,1400044162,9781400044160,eng,433,71280,5494,9/12/2006,Knopf -18750,Beauty's Punishment (Sleeping Beauty #2),A.N. Roquelaure/Anne Rice,3.62,0452281431,9780452281431,eng,233,22255,710,5/1/1999,Penguin Books -18753,The World's Last Night: And Other Essays,C.S. Lewis,4.18,0156027712,9780156027717,en-GB,132,1097,117,11/4/2002,Mariner Books -18757,Last Night: Stories,James Salter,3.90,1400078415,9781400078417,eng,132,1825,186,3/14/2006,Vintage -18758,The Last Night of Ballyhoo,Alfred Uhry,3.71,1559361409,9781559361408,en-US,96,259,16,10/1/1997,Theatre Communications Group -18761,Civilization and Its Discontents,Sigmund Freud/Louis Menand,3.78,0393059952,9780393059953,eng,192,215,18,1/17/2005,W. W. Norton Company -18762,Civilization and Its Discontents,Sigmund Freud/James Strachey,3.78,0393096238,9780393096231,eng,121,170,19,12/1/1961,W.W. Norton & Company Inc. (NY) -18765,I Claudius (Claudius #1),Robert Graves,4.27,067972477X,9780679724773,eng,468,45108,1853,10/23/1989,Vintage -18770,The Modern Mind: An Intellectual History of the 20th Century,Peter Watson,4.26,0060084383,9780060084387,eng,847,588,56,7/23/2002,Harper Perennial -18771,Origins of the Modern Mind: Three Stages in the Evolution of Culture and Cognition,Merlin Donald,4.16,0674644840,9780674644847,eng,424,94,9,3/15/1993,Harvard University Press -18772,Beyond the Post-Modern Mind: The Place of Meaning in a Global Civilization,Huston Smith,4.24,0835608301,9780835608305,en-US,295,69,9,7/25/2003,Quest Books -18789,Sanctuary,William Faulkner,3.64,0679748148,9780679748144,eng,317,9336,544,12/6/1993,Vintage -18790,The Portable Faulkner,William Faulkner/Malcolm Cowley,4.29,014243728X,9780142437285,eng,650,776,22,2/25/2003,Penguin Books -18792,One Matchless Time: A Life of William Faulkner,Jay Parini,3.97,0060935553,9780060935559,en-US,528,193,34,6/14/2005,Harper Perennial -18795,The Guermantes Way (In Search of Lost Time #3),Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin/D.J. Enright,4.30,0375752331,9780375752339,eng,834,451,80,11/3/1998,The Modern Library New York -18798,The Guermantes Way (In Search of Lost Time #3),Marcel Proust/Mark Treharne/Christopher Prendergast,4.30,0143039229,9780143039228,eng,619,4345,246,5/31/2005,Penguin Classics -18799,Sodom and Gomorrah (In Search of Lost Time #4),Marcel Proust/Christopher Prendergast/John Sturrock,4.35,0143039318,9780143039310,eng,557,3243,172,11/1/2005,Penguin Classics -18800,In Search of Lost Time Vol. 2: Within a Budding Grove Part 2 & The Guermantes' Way,Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin,4.57,1841598976,9781841598970,eng,888,48,1,6/29/2001,Everyman's Library -18801,The Captive & The Fugitive (In Search of Lost Time #5-6),Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin/D.J. Enright,4.39,0375753117,9780375753114,eng,957,1924,143,2/16/1999,Modern Library -18802,Finding Time Again (In Search of Lost Time #7),Marcel Proust/Ian Patterson/Christopher Prendergast,4.49,0141180366,9780141180366,eng,374,181,43,10/2/2003,Penguin -18803,The Way by Swann’s (In Search of Lost Time #1),Marcel Proust/Lydia Davis/Christopher Prendergast,4.14,0141180315,9780141180311,eng,489,318,52,10/2/2003,Penguin Classics -18807,Dostoevsky: The Mantle of the Prophet 1871-1881,Joseph Frank,4.56,0691115699,9780691115696,eng,800,101,12,9/2/2003,Princeton University Press -18808,Dostoevsky,Richard Freeborn,3.76,1904341276,9781904341277,eng,183,55,6,10/1/2005,Haus Publishing -18812,Dostoevsky: The Stir of Liberation 1860-1865,Joseph Frank,4.51,0691014523,9780691014524,eng,416,118,15,11/21/1988,Princeton University Press -18815,Dostoevsky Kierkegaard Nietzsche and Kafka,William Hubben,3.57,0684825899,9780684825892,eng,192,78,10,5/13/1997,Charles Scribner's Sons -18816,Problems of Dostoevsky's Poetics,Mikhail Bakhtin/Caryl Emerson,4.34,0816612285,9780816612284,eng,334,641,29,6/21/1984,University Of Minnesota Press -18817,Dostoevsky: The Years of Ordeal 1850-1859,Joseph Frank,4.43,0691014221,9780691014227,eng,336,151,22,1/21/1987,Princeton University Press -18822,The Possessed,Fyodor Dostoyevsky/Constance Garnett/Elizabeth Dalton,4.27,1593082509,9781593082505,eng,768,504,52,2/1/2005,Barnes & Noble -18824,The Idiot,Fyodor Dostoyevsky/Constance Garnett/Joseph Frank,4.18,1593083475,9785170211579,eng,559,125,13,1/6/2005,Barnes Noble Classics -18825,Money,Martin Amis,3.71,0099461889,9780099461883,eng,394,19967,732,4/7/2005,Vintage -18826,House of Meetings,Martin Amis,3.41,1400044553,9781400044559,eng,241,1917,206,1/16/2007,Alfred A. Knopf -18828,The Rachel Papers,Martin Amis,3.59,0679734589,9780679734581,eng,240,8180,346,9/29/1992,Vintage -18829,Yellow Dog,Martin Amis,2.79,1400077273,9781400077274,eng,352,1449,94,1/4/2005,Vintage -18831,Success,Martin Amis,3.66,0679734481,9780679734482,eng,224,2191,101,4/3/1991,Vintage -18832,Koba the Dread: Laughter and the Twenty Million,Martin Amis,3.83,1400032202,9781400032204,eng,306,1182,110,9/9/2003,Vintage -18833,Dead Babies,Martin Amis,3.32,067973449X,9780679734499,eng,206,6348,162,4/3/1991,Vintage -18834,Beginning Again: An Autobiography of The Years 1911 to 1918,Leonard Woolf,3.81,0156116804,9780156116800,eng,263,64,8,10/18/1989,Mariner Books -18835,Virginia Woolf: A Biography,Quentin Bell,4.17,0156935805,9780156935807,eng,576,2583,66,3/20/1974,Mariner Books -18837,Cliffs Notes on Woolf's Mrs. Dalloway,Gary K. Carey,3.09,0764544578,9780764544576,eng,72,10,2,12/12/2003,Cliffs Notes -18839,Orlando,Virginia Woolf,3.87,0141184272,9780141184272,eng,228,42153,2071,9/28/2000,Penguin Classics -18840,The Common Reader,Virginia Woolf/Andrew McNeillie,4.16,015602778X,9780156027786,eng,272,1136,58,11/4/2002,Mariner Books -18842,A Room of One's Own,Virginia Woolf/Mark Hussey/Susan Gubar,4.14,0156030411,9780156030410,en-US,112,878,81,8/1/2005,Mariner Books -18843,Women and Writing,Virginia Woolf/Michèle Barrett,4.07,0156028069,9780156028066,eng,216,244,13,3/31/2003,A Harvest Book/Harcourt Inc. -18844,Flush,Virginia Woolf/Trekkie Ritchie,3.83,0156319527,9780156319522,eng,204,3567,336,10/4/1976,Mariner Books -18846,Virginia Woolf,Hermione Lee,4.26,0375701362,9780375701368,eng,893,2807,113,10/5/1999,Vintage -18849,The Letters of Virginia Woolf: Volume Six 1936-1941,Virginia Woolf/Nigel Nicolson/Joanne Trautmann,4.48,0156508877,9780156508872,eng,576,96,2,9/30/1982,Mariner Books -18850,On Being Ill,Virginia Woolf/Hermione Lee,4.02,1930464061,9781930464063,eng,63,1083,96,10/1/2002,Paris Press -18852,The Years,Virginia Woolf,3.77,0141185325,9780141185323,eng,444,2867,174,2/28/2002,Penguin Classics -18853,The Letters of Virginia Woolf: Volume Four 1929-1931,Virginia Woolf/Nigel Nicolson/Joanne Trautmann,4.41,0156508842,9780156508841,en-US,480,106,2,5/15/1981,Mariner Books -18854,Three Guineas,Virginia Woolf/Mark Hussey/Jane Marcus,3.87,0156031639,9780156031639,eng,352,2423,125,7/3/2006,Mariner Books -18860,The Little Red Lighthouse and the Great Gray Bridge,Hildegarde Hoyt Swift/Lynd Ward,4.26,0152045732,9780152045739,eng,64,2276,101,11/1/2003,Houghton Mifflin Company -18861,The Eagle (The Lighthouse Family #3),Cynthia Rylant/Preston McDaniels,4.08,068986311X,9780689863110,eng,64,176,15,10/1/2005,Beach Lane Books -18862,The Storm (The Lighthouse Family #1),Cynthia Rylant/Preston McDaniels,4.18,068984882X,9780689848827,eng,80,445,86,9/1/2003,Beach Lane Books -18867,The Art of Maurice Sendak,Selma G. Lanes,4.43,0810980630,9780810980631,eng,258,796,28,9/1/1998,Harry N. Abrams -18874,The Poet the Warrior the Prophet,Rubem A. Alves,4.43,0334028965,9780334028963,eng,148,27,6,9/28/2002,SCM Press -18877,The Warrior Prophet (The Prince of Nothing #2),R. Scott Bakker,3.95,1585677280,9781585677283,en-US,624,10570,221,10/25/2005,Overlook TP -18878,The Belgariad Vol. 1: Pawn of Prophecy / Queen of Sorcery / Magician's Gambit (The Belgariad #1-3),David Eddings,4.28,0345456327,9780345456328,eng,644,14418,385,8/27/2002,Del Rey Books -18879,The Belgariad Vol. Two: Castle of Wizardry / Enchanters' End Game (The Belgariad #4-5),David Eddings,4.39,0345456319,9780345456311,eng,483,7083,140,8/27/2002,Del Rey -18880,The Younger Gods (The Dreamers #4),David Eddings/Leigh Eddings,3.34,0446613320,9780446613323,eng,420,4541,85,3/1/2007,Grand Central Publishing -18881,The Malloreon Vol. 1: Guardians of the West / King of the Murgos / Demon Lord of Karanda (The Malloreon #1-3),David Eddings,4.34,0345483863,9780345483867,eng,816,4839,71,8/30/2005,Del Rey -18882,The Malloreon Vol. 2: Sorceress of Darshiva / The Seeress of Kell (The Malloreon #4-5),David Eddings,4.36,0345483871,9780345483874,eng,528,5457,59,8/30/2005,Del Rey -18884,Polgara the Sorceress,David Eddings/Leigh Eddings,4.09,0345422554,9780345422552,eng,754,25145,291,12/26/1998,Del Rey Books -18888,Mistress of Magic (The Mists of Avalon #1),Marion Zimmer Bradley/Davina Porter,4.12,1556908687,9781556908682,eng,14,12,4,4/1/1993,Recorded Books -18892,The Forest House (Avalon #2),Marion Zimmer Bradley/Diana L. Paxson,3.86,0451454243,9780451454249,eng,462,15171,322,4/1/1995,Roc -18902,Book of Nightmares (Diadem Worlds of Magic #6),John Peel,4.12,0738706124,9780738706122,eng,192,334,2,3/8/2005,Llewellyn Publications -18906,The Nightmare Room: The Nightmare Begins! (The Nightmare Room #1-3),R.L. Stine,3.88,0060766743,9780060766740,en-US,432,94,7,5/24/2005,HarperCollins -18910,The Parallax View,Slavoj Žižek,4.00,0262240513,9780262240512,eng,433,1027,51,2/10/2006,MIT Press (MA) -18911,Looking Awry: An Introduction to Jacques Lacan through Popular Culture,Slavoj Žižek,4.04,026274015X,9780262740159,eng,188,1316,51,9/8/1992,MIT Press -18913,The Puppet and the Dwarf: The Perverse Core of Christianity,Slavoj Žižek,3.85,0262740257,9780262740258,eng,196,630,40,8/29/2003,The MIT Press -18923,Zizek: A Critical Introduction,Sarah Kay,3.46,0745622089,9780745622088,eng,195,37,4,4/29/2003,Polity Press -18926,Conversations with Žižek,Slavoj Žižek/Glyn Daly,3.88,0745628974,9780745628974,eng,171,117,1,12/30/2003,Polity Press -18929,Marcovaldo,Italo Calvino/William Weaver,3.89,0156572044,9780156572040,eng,128,5813,276,11/16/1983,Mariner Books -18930,The Uses of Literature,Italo Calvino/Patrick Creagh,4.07,0156932504,9780156932509,eng,341,900,32,10/21/1987,Mariner Books -18931,Please Stop Laughing at Me... One Woman's Inspirational Story,Jodee Blanco,3.85,1580628362,9781580628365,en-US,288,9662,897,3/1/2003,Adams Media -18937,In the Beginning...Was the Command Line,Neal Stephenson,3.80,0380815931,9780380815937,en-US,151,6638,329,11/9/1999,William Morrow Paperbacks -18942,The Extraordinary Cases of Sherlock Holmes,Arthur Conan Doyle,4.21,0140367055,9780140367058,eng,277,552,37,6/1/1994,Puffin Books -18943,Confessions of an Ugly Stepsister,Gregory Maguire,3.53,0060987529,9780060987527,en-US,372,53782,3344,10/3/2000,William Morrow Paperbacks -18947,Jane Austen For Dummies,Joan Elizabeth Klingel Ray,4.03,0470008296,9780470008294,eng,362,524,62,8/1/2006,John Wiley -18952,The Rediscovery of Man,Cordwainer Smith,4.14,1857988191,9781857988192,eng,368,2396,98,5/13/1999,Gollancz -18956,Homicide: A Year on the Killing Streets,David Simon,4.38,0805080759,9780805080759,eng,646,12071,837,8/22/2006,Holt McDougal -18957,The Corner: A Year in the Life of an Inner-City Neighborhood,David Simon/Edward Burns,4.43,0767900316,9780767900317,eng,576,4404,434,6/15/1998,Broadway Books -18959,El Libertador: Writings of Simón Bolívar,Simón Bolívar/Frederick H. Fornoff/David Bushnell,3.84,0195144813,9780195144819,eng,288,7,1,5/15/2003,Oxford University Press USA -18962,Hands Collected: The Books of Simon Perchik,Simon Perchik/David Baratier,4.25,188635085X,9781886350854,eng,566,4,0,1/1/2000,Pavement Saw Press -18963,Morgoth's Ring (The History of Middle-Earth #10),J.R.R. Tolkien/Christopher Tolkien,4.13,0395680921,9780395680926,eng,478,1619,44,12/14/1993,Houghton Mifflin Harcourt -18964,The War of the Jewels (The History of Middle-Earth #11),J.R.R. Tolkien/Christopher Tolkien,3.93,0395710413,9780395710418,eng,470,3329,15,12/6/1994,Houghton Mifflin Harcourt -18966,The Silmarillion,J.R.R. Tolkien/Christopher Tolkien,3.92,0261102427,9780261102422,eng,384,292,40,2/7/1999,HarperCollins -18967,The Sillymarillion: An Unauthorized Parody of J.R.R. Tolkien's Classic the Silmarillion,Donald Lloyd,3.54,1593600259,9781593600259,eng,192,25,6,9/28/2004,Cold Spring Press -18977,The Silmarillion,J.R.R. Tolkien/Christopher Tolkien,3.92,0048231533,9780048231536,eng,441,368,44,3/12/1979,Unwin Paperbacks -18981,Hayao Miyazaki: Master of Japanese Animation,Helen McCarthy,3.93,1880656418,9781880656419,en-US,240,317,19,9/1/1999,Stone Bridge Press -18984,Cliffs Notes on Frank's The Diary of Anne Frank,Dorothea Shefer-Vanson/CliffsNotes/Anne Frank,4.32,0822003902,9780822003908,eng,64,70,1,7/10/1984,Cliffs Notes -18990,The Honourable Schoolboy,John le Carré,3.95,0743457919,9780743457910,eng,589,11733,513,10/29/2002,Scribner Book Company -19022,Valparaiso,Don DeLillo,3.33,033042694X,9780330426947,eng,107,383,21,4/1/2004,Pan MacMillan -19040,No More Water in the Tub!,Tedd Arnold/Mark Buehner,3.95,0140564306,9780140564303,eng,32,214,38,12/1/1998,Puffin Books -19041,Big Red Tub,Julia Jarman/Adrian Reynolds,4.03,0439672325,9780439672320,eng,32,241,29,12/1/2004,Orchard -19043,Tabby in the Tub (Animal Ark #29),Ben M. Baglio/Linda Chapman/Jenny Gregory,3.96,0439343909,9780439343909,eng,139,768,33,8/1/2003,Scholastic Paperbacks -19052,June Bug (Murder-by-Month Mystery #2),Jess Lourey/J.H. Lourey/Jessica Lourey,3.56,0738709123,9780738709123,eng,229,764,71,3/8/2007,Midnight Ink -19056,Wickett's Remedy,Myla Goldberg,3.27,1400078121,9781400078127,eng,370,1557,231,10/10/2006,Anchor Books -19057,I Am the Messenger,Markus Zusak/Emmanuel Pailler,4.07,0375836675,9780375836671,eng,357,110898,11457,5/9/2006,Alfred A. Knopf Borzoi Books -19062,Getting the Girl (Wolfe Brothers #3),Markus Zusak,3.70,043938950x,9780439389501,eng,256,4327,385,6/1/2004,Push -19063,The Book Thief,Markus Zusak/Cao Xuân Việt Khương,4.37,0375831002,9780375831003,eng,552,1516367,86881,3/14/2006,Alfred A. Knopf -19065,Fighting Ruben Wolfe (Wolfe Brothers #2),Markus Zusak/Stig Wemyss,3.84,0439241871,9780439241878,eng,224,3105,223,6/1/2002,Push -19066,Underdog (Wolfe Brothers #1),Markus Zusak,3.38,3473352349,9783473352340,eng,153,2591,207,5/1/1999,Ravensburger Buchverlag -19067,Nicomachean Ethics,Aristotle/Martin Ostwald,3.94,0023895306,9780023895302,en-US,352,265,20,1/11/1962,Prentice Hall/Simon & Schuster Company (Englewood Cliffs NJ) -19068,The Nicomachean Ethics,Aristotle/James Alexander Kerr Thomson/Jonathan Barnes/Hugh Tredennick,3.94,0140449493,9780140449495,eng,329,23683,472,1/29/2004,Penguin Classics -19072,Nicomachean Ethics,Aristotle/Hippocrates George Apostle,3.94,0911589031,9780911589030,eng,372,13,0,5/1/1984,Peripatetic Press -19075,Madame Bovary,Gustave Flaubert/Geoffrey Wall/Michèle Roberts,3.67,0140449124,9780140449129,eng,327,3620,394,12/31/2002,Penguin Classics -19078,Madame Bovary (Critical Editions),Gustave Flaubert/Margaret Cohen/Eleanor Marx,3.67,0393979172,9780393979176,en-US,576,401,33,12/19/2004,W.W. Norton & Company -19081,Madame Bovary,Gustave Flaubert/Donada Peters,3.67,1400132746,9781400132744,eng,0,3,0,10/1/2006,Tantor Media -19082,The Complete Works: The Revised Oxford Translation Vol. 1,Aristotle/Jonathan Barnes,4.43,0691099502,9780691099507,eng,1757,2318,17,9/1/1984,Bollingen/Princeton University Press (NJ) -19083,Politics,Aristotle,3.94,0486414248,9780486414249,eng,368,26727,274,11/15/2000,Dover Publications -19084,Aristotle's Ethics (SparkNotes Literature Guides),SparkNotes,3.00,158663822X,9781586638221,eng,80,2,0,6/13/2003,SparkNotes -19088,The Politics and The Constitution of Athens,Aristotle/Stephen Everson,3.98,0521484006,9780521484008,eng,327,407,12,10/13/1996,Cambridge University Press -19090,Middlemarch,George Eliot/Megan McDaniel/Lynne Sharon Schwartz/Lynn Sharon Schwartz,3.96,1593080239,9781593080235,eng,848,503,121,4/1/2003,Barnes Noble Classics -19093,Middlemarch,George Eliot/Harriet Walter,3.96,0141804513,9780141804514,eng,6,50,14,1/28/2003,Penguin Audio UK -19099,Silas Marner,George Eliot,3.64,1591940486,9781591940487,eng,279,165,6,5/31/2006,Townsend Press -19100,1984,George Orwell/Mauricio Molina/Miguel Martínez Sarmiento,4.18,9685270880,9789685270885,spa,301,451,42,8/1/2002,Lectorum -19103,The Complete Tales of Nikolai Gogol Volume 1,Nikolai Gogol/Constance Garnett/Leonard J. Kent,4.32,0226300684,9780226300689,en-US,302,311,14,4/15/1985,University of Chicago Press -19104,The Overcoat and Other Short Stories,Nikolai Gogol,4.21,0486270572,9780486270579,rus,103,8944,196,2/21/1992,Dover Publications -19106,The Nose,Nikolai Gogol/Kevin Hawkes,3.89,0688104649,9780688104641,eng,31,12968,446,9/29/1994,HarperCollins Publishers -19108,Dead Souls,Nikolai Gogol/Richard Pevear/Larissa Volokhonsky,3.99,1400043190,9781400043194,eng,445,388,49,9/21/2004,Everyman's Library -19117,Fathers and Sons,Ivan Turgenev/George Reavy/Jane Costlow,3.96,0451529693,9780451529695,eng,244,49911,1127,2/1/2005,Signet Book -19118,Father to Son (The Destroyer #129),Warren Murphy/Richard Sapir/James Mullaney,4.11,0373632444,9780373632442,eng,349,60,4,10/1/2002,Gold Eagle -19124,Children of the Star (Children of the Star #1-3),Sylvia Engdahl,4.24,1892065142,9781892065148,eng,728,168,12,1/10/2000,Meisha Merlin Publishing -19125,From Far Away,Robert Munsch/Michael Martchenko/Saoussan Askar,4.00,155037396X,9781550373967,eng,33,219,21,2/1/1995,Annick Press -19126,From Far Away Vol. 01,Kyoko Hikawa/Trina Robbins/Yuko Sawada/Walden Wong,4.31,1591165997,9781591165996,eng,200,5827,125,11/9/2004,VIZ Media -19129,Silos Politics and Turf Wars: A Leadership Fable about Destroying the Barriers That Turn Colleagues Into Competitors,Patrick Lencioni,4.05,0787976385,9780787976385,eng,224,2677,166,2/1/2006,Jossey-Bass -19134,Moral Politics: How Liberals and Conservatives Think,George Lakoff,4.03,0226467716,9780226467719,eng,471,1260,130,5/1/2002,University Of Chicago Press -19135,'Salem's Lot,Stephen King/Ron McLarty,4.02,0743536959,9780743536950,en-US,0,56,5,1/19/2004,Simon & Schuster Audio -19136,El misterio de Salem's Lot,Stephen King/Marta I. Guastavino,4.02,8484504794,9788484504795,spa,509,16,3,12/17/2002,Plaza & Janes Editores S.A. -19137,'Salem's Lot,Stephen King,4.02,0451098277,9780451098276,eng,817,18,3,8/1/1976,Signet -19144,Prodigal Blues,Gary A. Braunbeck/Deena Warner,4.25,1587671093,9781587671098,eng,304,221,28,5/1/2006,Cemetery Dance Publications -19148,The Divine Comedy Vol. I: Inferno,Dante Alighieri/Mark Musa,4.00,0140444416,9780140444414,eng,432,305,19,11/28/1984,Penguin Classics -19152,The Divine Comedy I: Hell,Dante Alighieri/Dorothy L. Sayers,4.00,0140440062,9780140440065,eng,347,696,75,1/27/2005,Penguin Classics -19155,The Divine Comedy Vol. 1: Inferno,Dante Alighieri/Mark Musa,4.00,0142437220,9780142437223,eng,432,2172,166,2/27/2003,Penguin Classics -19156,Could Do Better: Why Children Underachieve and What to Do About It,Harvey P. Mandel/Sander I. Marcus/Loral Dean,3.80,047115847X,9780471158479,eng,291,2,0,8/13/1996,Wiley -19163,Inferno,Dante Alighieri/Allen Mandelbaum/Barry Moser/Gabriel Marruzzo/Laury Magnus,4.00,0553213393,9780553213393,eng,396,1075,86,8/3/2004,Bantam Books -19164,Purgatorio (La Divina Commedia #2),Dante Alighieri/Robert M. Durling,4.02,0195087453,9780195087451,ita,704,15675,244,4/8/2004,Oxford University Press USA -19165,Dante Alighieri's Divine Comedy the Inferno,Dante Alighieri,4.00,0812034112,9780812034110,en-US,101,5,0,10/1/1984,Barron's Educational Series -19166,The Portable Dante,Dante Alighieri/Mark Musa,4.22,0142437549,9780142437544,eng,654,278,38,7/29/2003,Penguin Books -19171,Purgatorio (The Divine Comedy #2),Dante Alighieri/Allen Mandelbaum/Laury Magnus/Anthony Oldcorn/Daniel Feldman/Barry Moser,4.02,055321344X,9780553213447,eng,413,460,33,8/3/2004,Bantam Books -19172,The Divine Comedy Vol. 3: Paradise,Dante Alighieri/Mark Musa,3.95,0140444432,9780140444438,eng,433,378,32,7/31/1986,Penguin Classics -19173,The Divine Comedy Vol. 2: Purgatory,Dante Alighieri/Mark Musa,4.02,0140444424,9780140444421,eng,399,764,49,5/30/1985,Penguin Classics -19176,Vita Nuova,Dante Alighieri/Mark Musa,3.87,0253201624,9780253201621,eng,210,67,10,4/22/1973,Indiana University Press -19178,The Rime of the Ancient Mariner and Other Poems,Samuel Taylor Coleridge/Stanley Appelbaum,3.94,0486272664,9780486272665,eng,76,3058,78,9/18/1992,Dover Publications -19179,Beowulf,Unknown/Burton Raffel,3.44,0451527402,9780451527400,eng,160,2753,150,9/1/1999,Signet Classics -19180,Beowulf: A Dual-Language Edition,Unknown/Howell D. Chickering,3.44,1400096227,9781400096220,eng,464,246,32,2/14/2006,Anchor -19181,Beowulf: A New Telling,Robert Nye,3.50,0440905605,9780440905608,eng,94,1690,326,3/15/1982,Dell -19182,Beowulf,Michael Morpurgo/Michael Foreman,3.85,0763632066,9780763632069,eng,96,51,8,10/24/2006,Candlewick Press -19193,Seamus Heaney,Helen Vendler,4.07,0674002059,9780674002050,eng,208,61,10,3/1/2000,Harvard University Press -19199,The Spirit Level: Poems,Seamus Heaney,4.14,0374525110,9780374525118,eng,82,94,12,4/10/1997,Farrar Straus and Giroux -19243,New Selected Poems 1966-1987,Seamus Heaney,4.19,0571143725,9780571143726,eng,246,356,19,3/4/2002,Faber and Faber -19254,Finders Keepers: Selected Prose 1971-2001,Seamus Heaney,4.15,0571210910,9780571210916,en-GB,432,16,0,4/7/2003,Faber and Faber -19257,Canopy: A Work for Voice and Light in Harvard Yard,David Ward/Parveen Adams/Seamus Heaney/Ivan Gaskell,0.00,0916724948,9780916724948,eng,63,0,0,12/31/1997,Arts Publications -19259,Electric Light,Seamus Heaney,3.94,0571207987,9780571207985,en-GB,81,30,2,3/19/2001,Faber and Faber -19263,Norden,Seamus Heaney,4.09,3446187499,9783446187498,ger,127,2,0,8/1/1996,Carl Hanser -19279,Norte,Seamus Heaney/Margarita Ardanaz,4.09,8475173462,9788475173467,spa,155,6,1,11/28/1992,Hiperión -19282,The Odyssey,Homer/Robert Fitzgerald/Seamus Heaney,3.76,1857150945,9781857150940,eng,509,48,3,10/8/1992,Everyman -19290,Paradise Lost,John Milton/Scott Elledge,3.82,0393962938,9780393962932,eng,688,421,40,3/17/1993,W. W. Norton & Company -19293,Tolkien: The Illustrated Encyclopaedia,David Day,4.13,0684839792,9780684839790,eng,288,3965,25,9/1/1996,Touchstone -19295,Ten Days to Self-Esteem,David D. Burns,3.96,0688094554,9780688094553,eng,336,436,19,3/17/1999,William Morrow Paperbacks -19298,The Swords of Night and Day (The Drenai Saga #11),David Gemmell,4.32,0552146781,9780552146784,eng,640,6954,93,4/1/2005,Corgi -19302,Pippi Longstocking,Astrid Lindgren/Florence Lamborn/Louis S. Glanzman,4.13,0142402494,9780142402498,eng,160,147067,2558,4/21/2005,Puffin Books -19307,Pippi in the South Seas,Astrid Lindgren/Gerry Bothmer,4.11,0670557110,9780670557110,en-US,126,15193,173,9/18/1959,Viking Books for Young Readers -19308,Pippi Goes on Board,Astrid Lindgren/Florence Lamborn/Nancy Seligsohn,4.12,0140309594,9780140309591,eng,140,10399,156,2/24/1977,Puffin Books -19311,The Children of Noisy Village,Astrid Lindgren/Ilon Wikland/Florence Lamborn,4.29,014032609X,9780140326093,eng,128,5920,205,2/2/1988,Puffin Books -19312,The Brothers Lionheart,Astrid Lindgren/Ilon Wikland/Jill M. Morgan,4.36,1930900244,9781930900240,eng,231,20235,453,12/31/2004,Purple House Press -19313,Christmas in Noisy Village,Astrid Lindgren/Ilon Wikland/Florence Lamborn,4.18,0140503447,9780140503449,en-US,32,830,41,10/29/1981,Puffin Books -19314,Ronia the Robber's Daughter,Astrid Lindgren/Patricia Crampton,4.30,0140317201,9780140317206,eng,176,16327,444,2/5/1985,Puffin Books -19315,Happy Times in Noisy Village,Astrid Lindgren/Ilon Wikland/Florence Lamborn,4.30,1883937663,9781883937669,eng,128,600,35,7/1/2003,Ignatius Press -19316,Pippi Calzaslargas (Pippi Calzaslargas #1),Astrid Lindgren/Blanca Ríos/Richard Kennedy,4.13,8426131921,9788426131928,spa,137,85,14,7/1/2005,Editorial Juventud -19318,The Tomten,Astrid Lindgren/Harald Wiberg,4.24,0698115910,9780698115910,eng,32,1599,109,10/6/1997,The Putnam & Grosset Group -19319,Lotta on Troublemaker Street,Astrid Lindgren/Robin Preiss Glasser,3.98,0689846738,9780689846731,eng,55,1429,24,10/1/2001,Aladdin Paperbacks -19321,The Tale of Peter Rabbit,Beatrix Potter,4.18,0723247706,9780723247708,eng,72,188842,1575,3/7/2002,Warne -19322,The Tale of Peter Rabbit: A Pop-up Adventure,Beatrix Potter,4.18,0723257043,9780723257042,en-US,16,19,2,2/2/2006,Warne -19323,Tale of Peter Rabbit,Beatrix Potter,4.18,0723249865,9780723249863,eng,80,17,2,10/21/2004,Warne -19327,The Tale of Peter Rabbit,Beatrix Potter,4.18,0723258732,9780723258735,eng,80,36,4,12/28/2006,Warne -19331,Beatrix Potter's Journal,Beatrix Potter,4.36,0723258058,9780723258056,eng,32,350,42,10/19/2006,Warne -19333,The World of Peter Rabbit (Original Peter Rabbit Books 1-23),Beatrix Potter,4.62,0723257639,9780723257639,eng,1072,220,14,5/4/2006,Warne -19335,Beatrix Potter: A Life in Nature,Linda Lear,4.03,0312369344,9780312369347,eng,584,1328,184,1/9/2007,St. Martin's Press -19337,The Tale of the Flopsy Bunnies,Beatrix Potter,4.19,072324779X,9780723247791,eng,58,5209,130,3/7/2002,Warne -19347,Treasure Island,Chris Tait/Robert Louis Stevenson/Lucy Corvino/Arthur Pober,3.83,1402713185,9781402713187,eng,160,798,39,3/1/2005,Sterling -19350,The Epic of Gilgamesh,Anonymous/N.K. Sandars,3.68,0848805011,9780848805012,eng,127,39,6,6/1/1976,Amereon Limited -19351,The Epic of Gilgamesh,Anonymous/N.K. Sandars,3.68,0141026286,9780141026282,eng,120,54162,1368,5/4/2006,Penguin Books Limited -19352,The Epic of Gilgamesh,Anonymous/Maureen Kovacs,3.68,0804717117,9780804717113,eng,122,314,42,8/1/1989,Stanford University Press -19353,The Evolution of the Gilgamesh Epic,Jeffrey H. Tigay,3.82,0865165467,9780865165465,eng,384,11,1,2/21/2003,Bolchazy-Carducci Publishers -19354,The Gilgamesh Epic and Old Testament Parallels,Alexander Heidel,3.95,0226323986,9780226323985,eng,280,58,8,9/15/1963,Phoenix Books/University of Chicago Press (IL) -19361,The Scarlet Letter and Other Writings,Nathaniel Hawthorne/Eugene Hudson Long/Seymour L. Gross/Richard C. Beatty/Sculley Bradley/Richmond Croom Beatty,3.59,0393956539,9780393956535,eng,443,237,17,2/1/1978,W. W. Norton & Company -19370,The Adventures of Huckleberry Finn,Mark Twain/Scott McKowen/Arthur Pober,3.82,1402726007,9781402726002,eng,305,364,27,10/28/2006,Sterling -19371,The Adventures of Huckleberry Finn,Mark Twain/Peter Coveney,3.82,0141439645,9780141439648,eng,394,1980,66,1/30/2003,Penguin Books -19373,Mark Twain's Adventures of Huckleberry Finn,Mark Twain/Richard P. Wasowski,3.82,0764587277,9780764587276,eng,264,12,0,5/1/2001,Hungry Minds -19377,Collected Tales Sketches Speeches & Essays 1852–1890,Mark Twain/Louis J. Budd,4.29,0940450364,9780940450363,eng,1120,67,6,10/15/1992,Library of America -19379,Mark Twain's Own Autobiography: The Chapters from the North American Review,Mark Twain/Michael J. Kiskis,3.80,0299125408,9780299125400,eng,301,9,1,10/1/1990,University of Wisconsin Press -19381,Candide,Voltaire/Robert M. Adams,3.77,0393960587,9780393960587,fre,224,695,55,3/19/1991,W. W. Norton and Company -19382,Candide and Other Stories (World's Classics),Voltaire/Roger Pearson,3.94,0192807269,9780192807267,en-US,301,3368,101,7/6/2006,Oxford University Press -19383,Cliffs Notes on Voltaire's Candide,James K. Lowers/CliffsNotes/Voltaire,3.40,0822002833,9780822002833,eng,80,9,3,3/29/1965,Cliffs Notes -19384,Candide: or Optimism,Voltaire/Peter Constantine/Diane Johnson,3.77,0812972015,9780812972016,eng,144,221,29,10/11/2005,Modern Library -19386,Candide and Related Writings,Voltaire/David Wootton,3.80,0872205460,9780872205468,fre,190,114,10,9/15/2000,Hackett Publishing Company Inc. -19390,Philosophical Dictionary,Voltaire/Theodore Besterman,4.09,014044257X,9780140442571,en-US,400,1394,45,9/27/1979,Penguin Classics -19393,What Is Goth?,Aurelio Voltaire,4.10,1578633222,9781578633227,eng,96,466,31,8/1/2004,Weiser Books -19396,The Picture of Dorian Gray,Oscar Wilde/Andrew Elfenbein,4.08,0321427130,9780321427137,eng,352,123,10,10/1/2006,Pearson -19397,The Real Trial of Oscar Wilde,Merlin Holland,4.04,000715805X,9780007158058,eng,384,189,14,10/5/2004,Harper Perennial -19398,Complete Shorter Fiction,Oscar Wilde/Isobel Murray,4.15,0192833766,9780192833761,eng,288,1192,26,3/5/1998,Oxford University Press -19399,The Unmasking of Oscar Wilde,Joseph Pearce,4.25,1586170260,9781586170264,eng,412,112,13,6/15/2005,Ignatius Press -19400,The Decline and Fall of the Roman Empire,Edward Gibbon/Daniel J. Boorstin/Giovanni Battista Piranesi/Hans-Friedrich Mueller,3.98,0375758119,9780375758119,eng,1312,9320,292,8/12/2003,Modern Library -19401,The Decline and Fall of the Roman Empire,Edward Gibbon/Daniel J. Boorstin/Hans-Friedrich Mueller/Giovanni Battista Piranesi,3.98,0345478843,9780345478849,eng,1258,32,8,3/1/2003,Modern Library -19403,The Decline and Fall of the Roman Empire,Edward Gibbon/Hugh Trevor-Roper,3.98,0753818817,9780753818817,eng,680,35,4,8/4/2005,Phoenix -19406,The Decline and Fall of the Roman Empire,Edward Gibbon,3.98,1857151925,9781857151923,eng,1952,19,1,10/1/1994,Everyman Chess -19409,The Christians and the Fall of Rome (Great Ideas),Edward Gibbon,3.56,0143036246,9780143036241,en-US,96,217,20,9/6/2005,Penguin -19411,The Portable Gibbon: The Decline and Fall of the Roman Empire,Edward Gibbon/Dero A. Saunders/Charles Alexander Robinson Jr.,3.98,0140150609,9780140150605,eng,691,2,1,6/30/1977,Penguin Books -19412,They Cage the Animals at Night,Jennings Michael Burch,4.32,0451159411,9780451159410,eng,304,7999,670,10/1/1985,Signet -19413,The Quilter's Homecoming (Elm Creek Quilts #10),Jennifer Chiaverini,4.04,0743260228,9780743260220,en-US,320,3865,248,4/10/2007,Simon Schuster -19416,Absolutely Normal Chaos,Sharon Creech,3.92,0330397818,9780330397810,en-GB,201,28,3,9/7/2007,MacMillan Children's Books -19428,The Abominable Snowman Doesn't Roast Marshmallows (The Adventures of the Bailey School Kids #50),Debbie Dadey/Marcia Thornton Jones,3.82,0439650372,9780439650373,eng,96,402,19,3/1/2005,Scholastic Paperbacks -19430,Santa Claus Doesn't Mop Floors (The Adventures of the Bailey School Kids #3),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.75,0590444778,9780590444774,en-US,80,1146,42,10/1/1991,Scholastic Paperbacks -19432,Angels Don't Know Karate (The Adventures Of The Bailey School Kids #23),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.80,0590849026,9780590849029,en-US,67,741,26,11/1/1996,Scholastic -19433,Werewolves Don't Run for President (The Adventures of the Bailey School Kids #49),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.84,0439650364,9780439650366,eng,96,262,14,10/1/2004,Scholastic Paperbacks -19435,Vampires Don't Wear Polka Dots (The Adventures of the Bailey School Kids #1),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.81,059043411X,9780590434119,en-US,80,6983,215,1/1/1991,Scholastic Paperbacks -19436,Werewolves Don't Go to Summer Camp (The Adventures of the Bailey School Kids #2),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.82,0590440616,9780590440615,eng,96,2175,76,7/1/1991,Scholastic Paperbacks -19437,Phantoms Don't Drive Sports Cars (The Adventures of the Bailey School Kids #32),Debbie Dadey/Marcia Thornton Jones/John Steven Gurney,3.76,0590189824,9780590189828,eng,80,408,18,9/1/1998,Scholastic Paperbacks -19439,My Perfect Life (Confessions of a Teenage Drama Queen #2),Dyan Sheldon,3.32,076362828X,9780763628284,eng,208,460,39,3/3/2005,Candlewick Press -19444,Be Happy or I'll Scream!: My Deranged Quest for the Perfect Husband Family and Life,Sheri Lynch,3.71,0312342349,9780312342340,en-US,240,162,34,2/6/2007,St. Martin's Griffin -19445,A Guide to the Words of My Perfect Teacher,Ngawang Pelzang/Padmakara Translation Group/Patrul Rinpoche/Alak Zenkar,4.61,1590300734,9781590300732,eng,336,79,0,6/22/2004,Shambhala -19448,All-American Girl (All-American Girl #1),Meg Cabot,3.74,0064472779,9780064472777,eng,398,59683,1728,7/22/2003,HarperTrophy -19452,Ready or Not (All-American Girl #2),Meg Cabot,3.40,0060724501,9780060724504,eng,238,22149,737,8/1/2005,HarperCollins Publishers -19456,Ready or Not (All-American Girl #2),Meg Cabot,3.40,0786282827,9780786282821,en-US,238,86,8,4/12/2006,Thorndike Press -19462,The Perfect Score (It's All About Attitude #5),Julie Kenner,3.24,0373792735,9780373792733,eng,240,110,9,7/25/2006,Harlequin -19469,The Face on the Milk Carton (Janie Johnson #1),Caroline B. Cooney,3.73,038532328X,9780385323284,eng,192,49975,2360,4/13/1996,Delacorte Press -19474,Teen Angst? Naaah...,Ned Vizzini,3.90,044023767X,9780440237679,eng,279,3146,270,8/13/2002,Laurel Leaf Library -19475,It's Kind of a Funny Story,Ned Vizzini,4.13,0786851961,9780786851966,eng,444,704,111,4/1/2006,Disney-Hyperion -19476,Be More Chill,Ned Vizzini,3.68,0786809965,9780786809967,eng,287,9836,1202,9/1/2005,Disney-Hyperion -19483,Collected Prose: Autobiographical Writings True Stories Critical Essays Prefaces and Collaborations with Artists,Paul Auster,4.04,031242468X,9780312424688,eng,528,273,20,3/1/2005,Picador -19484,Hand to Mouth: A Chronicle of Early Failure,Paul Auster,3.62,0312422326,9780312422325,eng,176,1575,89,8/1/2003,Picador -19485,The Book of Illusions,Paul Auster,3.85,0571212182,9780571212187,eng,336,486,57,9/4/2003,Faber and Faber -19487,City of Glass: The Graphic Novel,Paul Karasik/David Mazzucchelli/Paul Auster/Art Spiegelman,3.93,0571226337,9780571226337,eng,144,1628,66,2/3/2005,Faber & Faber -19496,Moonraker,Ian Fleming,3.74,0141187565,9780141187563,en-GB,247,120,13,6/3/2004,Penguin Books Limited (UK) -19498,Moonraker's Bride,Madeleine Brent,4.31,0285620649,9780285620643,eng,352,2281,302,1/1/1973,Souvenir Press -19501,Eat Pray Love,Elizabeth Gilbert,3.55,0143038419,9780143038412,eng,368,1362264,47620,2/1/2007,Riverhead Books -19503,Eat Pray Love: One Woman's Search for Everything Across Italy India and Indonesia,Elizabeth Gilbert,3.55,1415926697,9781415926697,eng,13,112,41,9/1/2006,Books on Tape -19506,The World as Will and Representation Vol. 1,Arthur Schopenhauer/Judith Norman/E.F.J. Payne/Alistair Welchman/Christropher Janaway,4.19,0486217612,9780486217611,eng,534,7475,126,6/1/1966,Dover Publications -19508,The Schopenhauer Cure,Irvin D. Yalom,4.22,0060938102,9780060938109,eng,358,9550,455,1/3/2006,Harper Perennial Modern Classics -19510,Essays and Aphorisms,Arthur Schopenhauer/R.J. Hollingdale,4.17,0140442278,9780140442274,eng,240,6222,169,8/26/1976,Penguin Classics -19511,Essay on the Freedom of the Will,Arthur Schopenhauer/Konstantin Kolenda,4.15,0486440117,9780486440118,eng,128,379,20,5/6/2005,Dover Publications -19512,Schopenhauer: A Very Short Introduction,Christopher Janaway,3.81,0192802593,9780192802590,eng,137,346,26,2/21/2002,Oxford University Press -19528,The Mandarins,Simone de Beauvoir/Leonard M. Friedman,4.14,0007203942,9780007203949,eng,752,3250,194,5/3/2005,Harper Perennial -19531,Les Mandarins: Tome 2,Simone de Beauvoir,4.20,2070367703,9782070367702,fre,500,98,10,6/9/1972,Folio -19532,Die Mandarins von Paris,Simone de Beauvoir,4.14,3499107619,9783499107610,ger,1040,61,5,1/1/2000,Rowohlt Tb. -19534,The Brothers K,David James Duncan,4.38,055337849X,9780553378498,eng,645,12703,1665,6/1/1996,Dial Press Trade Paperback -19542,Where the Wild Things Are,Maurice Sendak,4.22,0060254920,9780060254926,eng,40,8704,483,12/26/2012,HarperCollins -19546,野獸國 (漢聲精選世界最佳兒童圖畫書.心理成長類 #36),Maurice Sendak,4.22,9575881044,9789575881047,zho,36,27,4,3/1/1987,英文漢聲出版股份有限公司 -19552,Essentials of Classic Italian Cooking,Marcella Hazan/Karin Kretschmann,4.16,039458404X,9780394584041,eng,704,15222,163,10/27/1992,Knopf Publishing Group -19560,The Italians: A Full-Length Portrait Featuring Their Manners and Morals,Luigi Barzini/Joan Emerson,3.83,0684825007,9780684825007,eng,352,578,41,7/3/1996,Touchstone -19563,Peking to Paris,Luigi Barzini/L.P. De Castelvecchio,3.79,0912050268,9780912050263,eng,308,25,0,12/1/1973,Open Court Publishing Company -19564,The Lost Lunar Baedeker: Poems of Mina Loy,Mina Loy/Roger L. Conover,4.17,0374525072,9780374525071,eng,256,1469,63,4/8/1997,Farrar Straus and Giroux -19571,Paris Was Yesterday 1925-1939,Janet Flanner/Irving Drutman,3.85,0156709902,9780156709903,eng,264,257,33,4/18/1988,Mariner Books -19578,Lost Boy Lost Girl,Peter Straub,3.48,0449149919,9780449149911,eng,368,4017,296,9/28/2004,Ballantine Books -19580,Shadowland,Peter Straub,3.91,0425188221,9780425188224,eng,468,10293,253,3/4/2003,Berkley -19581,Ghost Story,Peter Straub,3.95,0671685635,9780671685638,eng,567,61330,1520,9/1/1989,Pocket Books / Simon & Schuster Inc. -19587,Territoires (Le talisman des territoires #2),Stephen King/Peter Straub/Bernard Cohen,4.01,2221093836,9782221093832,fre,556,18,1,10/21/2002,Laffont -19593,Floating Dragon,Peter Straub,3.84,0425189643,9780425189641,eng,595,10727,140,8/5/2003,Berkley -19595,The Color of Water: A Black Man's Tribute to His White Mother,James McBride,4.09,159448192X,9781594481925,en-US,328,1597,157,2/7/2006,Riverhead Books -19596,Color: A Natural History of the Palette,Victoria Finlay,3.78,0812971426,9780812971422,en-US,464,61033,558,12/30/2003,Random House Trade Paperbacks -19599,Vincent's Colors,Vincent van Gogh/Metropolitan Museum of Art/William Lach,4.16,0811850994,9780811850995,eng,48,329,49,9/29/2005,Chronicle Books -19605,Flinx's Folly (Pip & Flinx #9),Alan Dean Foster,3.94,0345450396,9780345450395,eng,288,1755,21,9/28/2004,Del Rey -19608,The Doctor's House,Ann Beattie,2.96,0743235010,9780743235013,eng,288,164,23,2/11/2003,Scribner -19610,Chilly Scenes of Winter,Ann Beattie,3.91,0679732349,9780679732341,en-GB,288,1045,100,1/2/1991,Vintage -19613,What Life Was Like in the Realm of Elizabeth: England AD 1533-1603 (What Life Was Like),Time-Life Books,3.72,0783554567,9780783554563,eng,144,59,7,5/24/1999,Time Life Medical -19614,What Life Was Like In the Age of Chivalry: Medieval Europe AD 800-1500 (What Life Was Like),Denise Dersin,3.77,0783554516,9780783554518,eng,168,126,12,5/24/1999,Time Life Medical -19615,What Life Was Like on the Banks of the Nile: Egypt 3050-30 BC,Denise Dersin,4.00,0809493780,9780809493784,eng,192,199,17,5/24/1999,Time Life Books -19617,What Life Was Like at the Rebirth of Genius: Renaissance Italy AD 1400-1550 (What Life Was Like),Richard Stapleford/Time-Life Books,4.00,0783554613,9780783554617,eng,168,41,3,9/1/1999,Time Life Medical -19618,What Life Was Like Among Druids and High Kings: Celtic Ireland AD 400-1200 (What Life Was Like),Robin Chapman Stacey,3.64,0783554559,9780783554556,eng,144,123,13,5/24/1999,Time Life Medical -19619,What Life Was Like Amid Splendor and Intrigue: Byzantine Empire AD 330-1453,Ellen Anker/Denise Dersin,3.68,0783554575,9780783554570,eng,144,49,2,5/24/1999,Time Life Medical -19620,What Life Was Like in the Time of War and Peace: Imperial Russia AD 1696-1917 (What Life Was Like),Time-Life Books,3.75,0783554591,9780783554594,eng,144,47,7,9/1/1999,Time Life Medical -19621,What Life Was Like in the Jewel in the Crown: British India AD 1600-1905,Time-Life Books,3.66,0783554605,0034406054602,eng,168,44,4,9/1/1999,Time Life Medical -19631,Birds of America,Lorrie Moore,4.11,0312241224,9780312241223,eng,291,12321,951,9/23/1999,Picador USA -19633,Self-Help,Lorrie Moore,4.20,0571145345,9780571145348,eng,176,78,9,1/10/1998,Faber & Faber -19634,Who Will Run the Frog Hospital?,Lorrie Moore,3.79,1400033829,9781400033829,eng,160,6419,628,4/13/2004,Vintage -19661,Family Matters,Rohinton Mistry,4.02,037570342X,9780375703423,eng,500,19200,785,11/18/2003,Vintage -19662,Tales from Firozsha Baag [Jan 01 2002] Mistry Rohinton,Rohinton Mistry,3.94,0571218857,9780571218851,eng,250,83,17,1/1/2002,Faber and Faber & Penguin India -19668,Without Remorse (John Clark #1; Jack Ryan Universe Publication Order #6),Tom Clancy,4.18,0425143325,9780425143322,eng,750,53936,1004,8/1/1994,Berkley Books -19669,Clave Red Rabbit (Jack Ryan #2),Tom Clancy/Enric Tremps,3.67,8408065068,9788408065067,spa,720,8,0,2/1/2006,Planeta Publishing -19670,Debt of Honor (Jack Ryan #7),Tom Clancy,4.05,0425147584,9780425147580,eng,990,39521,469,8/1/1995,Berkley Books -19671,The Archimedes Effect (Tom Clancy's Net Force #10),Steve Perry/Larry Segriff/Tom Clancy/Steve Pieczenik,3.98,0425204243,9780425204245,eng,336,1276,12,2/7/2006,Berkley -19672,Hidden Agendas (Tom Clancy's Net Force #2),Steve Perry/Tom Clancy/Steve Pieczenik,3.76,0425171396,9780425171394,eng,366,4138,39,10/28/1999,Berkley -19673,Marine: A Guided Tour of a Marine Expeditionary Unit (Guided Tour),Tom Clancy,3.83,0425154548,9780425154540,eng,336,646,11,11/1/1996,Berkley -19674,The Teeth of the Tiger (Jack Ryan Universe #12),Tom Clancy,3.64,0141004924,9780141004921,eng,625,18128,467,8/26/2004,Penguin Books Ltd. -19675,Executive Orders (Jack Ryan #8),Tom Clancy,4.06,0006479758,9780006479758,eng,1273,39577,436,1/1/1998,HarperCollins -19676,State of War (Tom Clancy's Net Force #7),Steve Perry/Tom Clancy/Steve Pieczenik/Larry Segriff,3.86,0425188132,9780425188132,eng,384,1329,24,3/4/2003,Berkley -19677,Every Man a Tiger: The Gulf War Air Campaign (Commanders),Tom Clancy/Chuck Horner,3.75,0425207366,9780425207369,eng,640,14,2,12/6/2005,Berkley Books -19679,Wild Card (Tom Clancy's Power Plays #8),Jerome Preisler/Tom Clancy/Martin Greenberg,3.96,0425199118,9780425199114,eng,352,835,13,11/2/2004,Berkley -19681,Carrier: A Guided Tour of an Aircraft Carrier (Guided Tour),Tom Clancy/Leon A. Edney,3.82,0425166821,9780425166826,eng,368,583,11,2/1/1999,Berkley -19682,Cloak and Dagger (Tom Clancy's Net Force Explorers #17),John Helfers/Russell Davis/Tom Clancy/Steve Pieczenik,4.00,0425183033,9780425183038,eng,208,58,0,3/4/2003,Berkley -19683,Cybernation (Tom Clancy's Net Force #6),Steve Perry/Tom Clancy/Steve Pieczenik,3.76,0425182673,9780425182673,eng,368,1789,19,11/1/2001,Berkley -19684,Virtual Vandals (Tom Clancy's Net Force Explorers #1),Diane Duane/Tom Clancy/Steve Pieczenik,4.01,0425161730,9780425161739,eng,192,3414,16,2/1/1999,Berkley -19685,Cutting Edge (Tom Clancy's Power Plays #6),Jerome Preisler/Tom Clancy/Martin Greenberg,3.86,0425187055,9780425187050,eng,432,1218,11,11/5/2002,Berkley -19686,Mission of Honor (Tom Clancy's Op-Center #9),Jeff Rovin/Tom Clancy/Steve Pieczenik,3.91,0425186709,9780425186701,eng,432,1557,25,6/4/2002,Berkley Books -19687,The Bear and the Dragon (John Clark #3),Tom Clancy,3.82,0425180964,9780425180969,eng,1137,21401,382,8/1/2001,Berkley Books -19688,Breaking Point (Tom Clancy's Net Force #4),Steve Perry/Tom Clancy/Steve Pieczenik,3.70,0425176932,9780425176931,eng,368,8119,32,10/1/2000,Berkley -19689,Airborne: A Guided Tour Of An Airborne Task Force,Tom Clancy,3.77,0425157709,9780425157701,eng,326,448,5,11/1/1997,Berkley -19707,Red Rabbit (Jack Ryan #2),Tom Clancy,3.67,0399148701,9780399148705,eng,640,23018,514,8/26/2002,G.P. Putnam's Sons -19712,John Deere Farm Tractors: A History of the John Deere Tractor,Randy Leffingwell,4.22,0879387556,9780879387556,eng,192,22,1,9/1/1993,Motorbooks International -19764,Corvette: Fifty Years,Randy Leffingwell/David Newhardt,4.06,0760320063,9780760320068,eng,384,15,1,10/23/2004,Motorbooks -19768,Tough to Tackle,Matt Christopher/Harvey Kidder,3.87,0316140589,9780316140584,eng,139,389,24,9/30/1987,Little Brown Books for Young Readers -19780,Complete Guide to OneNote,W. Frederick Zimmerman/Chris Pratley,4.25,1590592166,9781590592168,eng,412,4,0,11/17/2003,Apress -19786,The Goon Show Volume 4: My Knees Have Fallen Off!,NOT A BOOK,5.00,0563388692,9780563388692,eng,2,3,0,4/1/1996,BBC Physical Audio -19787,The Goon Show: Moriarty Where Are You?,NOT A BOOK,4.43,0563388544,9780563388548,eng,2,0,0,3/30/2005,BBC Physical Audio -19788,The Goon Show Volume 11: He's Fallen in the Water!,NOT A BOOK,5.00,0563388323,9780563388326,eng,2,2,0,10/2/1995,BBC Physical Audio -19792,Power: Die 48 Gesetze Der Macht,Robert Greene/Birgit Brandau/Hartmut Schickert,4.18,3423362480,9783423362481,ger,536,39,4,10/1/2001,Deutscher Taschenbuch Verlag -19794,The Echo Maker,Richard Powers,3.38,0374146357,9780374146351,eng,451,7087,1119,10/17/2006,Farrar Straus Giroux -19795,Power vs. Force,David R. Hawkins,4.20,1561709336,9781561709335,en-US,341,7167,376,3/5/2002,Hay House -19797,The Power of Art,Simon Schama,3.88,0061176109,9780061176104,en-US,448,15804,96,11/10/2006,Ecco -19801,Goodbye Darkness: A Memoir of the Pacific War,William Manchester,4.18,0316501115,9780316501118,eng,401,4936,174,4/12/2002,Back Bay Books -19802,A World Lit Only by Fire: The Medieval Mind and the Renaissance: Portrait of an Age,William Manchester,3.85,0316545562,9780316545563,eng,322,9807,745,6/1/1993,Back Bay Books -19803,The Last Lion 2: Winston Spencer Churchill: Alone 1932-40,William Manchester,4.48,0316545120,9780316545129,eng,756,240,27,10/28/1988,Little Brown & Company -19807,The Glory and the Dream: A Narrative History of America 1932-72,William Manchester,4.43,0553345893,9780553345896,eng,1397,1429,115,7/1/1984,Little Brown & Company (Boston/Toronto) -19808,The Last Lion: Winston Spencer Churchill: Visions of Glory 1874-1932,William Manchester,4.42,0316545031,9780316545037,en-US,992,335,38,5/30/1983,Little Brown & Company -19809,The Last Lion: Winston Spencer Churchill: Visions of Glory 1874-1932,William Manchester,4.42,0385313489,9780385313483,eng,992,9659,467,4/1/1984,Delta -19818,Moon-Flash (Kyreol #1-2),Patricia A. McKillip,3.74,0142403016,9780142403013,eng,304,348,13,3/17/2005,Firebird -19819,Harrowing the Dragon,Patricia A. McKillip,3.94,0441014437,9780441014439,eng,308,1602,86,11/7/2006,Ace Books -19820,Cygnet (Cygnet #1-2),Patricia A. McKillip,4.07,0441014836,9780441014835,en-US,406,543,35,3/6/2007,Ace Books -19822,Solstice Wood (Winter Rose #2),Patricia A. McKillip,3.76,0441014658,9780441014651,eng,278,1715,141,1/2/2007,Ace Books -19823,Od Magic,Patricia A. McKillip,3.98,0441013341,9780441013340,eng,315,3140,265,6/6/2006,Ace Books -19844,25 Ways to Win with People: How to Make Others Feel Like a Million Bucks,John C. Maxwell/Les Parrott III,4.11,0785260943,9780785260943,eng,208,1710,114,6/5/2005,HarperCollins Leadership -19847,Winning with People Workbook,John C. Maxwell,4.22,0785260900,9780785260905,eng,256,8,1,9/10/2005,HarperCollins Leadership -19858,Thornhold (The Harpers #16; Songs & Swords #4),Elaine Cunningham,3.67,078691808X,9780786918089,eng,384,1023,9,12/27/2011,Wizards of the Coast -19859,The Best of the Realms: The Stories of Elaine Cunningham (Forgotten Realms: The Best of the Realms #3),Elaine Cunningham,3.98,0786942886,9780786942886,en-GB,345,164,6,5/8/2007,Wizards of the Coast -19885,Changeling Storytellers Guide,Mark Hunter/Ian Lemke,3.36,1565047087,9781565047082,eng,139,28,0,8/1/1998,White Wolf Games Studio -19888,The Blood Wood (Earthdawn 6113),FASA Corporation/Ian Lemke/Louis J. Prosperi,3.71,1555603130,9781555603137,eng,152,31,1,6/1/1997,FASA Corporation -19894,Basin and Range,John McPhee,4.19,0374516901,9780374516901,eng,240,2781,178,4/1/1982,Farrar Straus and Giroux -19897,The Deltoid Pumpkin Seed,John McPhee,3.95,0374516359,9780374516352,eng,192,380,18,9/1/1992,Farrar Straus and Giroux -19898,Assembling California,John McPhee,4.17,0374523932,9780374523930,eng,294,1595,120,2/1/1994,Farrar Straus and Giroux -19903,Qué Se Puede Esperar Cuando Se Está Esperando,Heidi Murkoff/Arlene Eisenberg,3.77,076113686X,9780761136866,spa,624,27,2,1/31/2006,Workman Publishing Company -19908,Master of Swords (Mageverse #4),Angela Knight,4.20,0425209210,9780425209219,eng,294,2801,45,10/3/2006,Berkley Sensation -19909,Master of the Night (Mageverse #1),Angela Knight,3.88,0425198804,9780425198803,eng,296,4637,125,10/5/2004,Berkley Sensation -19910,Master of Wolves (Mageverse #3),Angela Knight,4.17,0425207439,9780425207437,eng,294,3798,56,4/4/2006,Berkley -19911,Captive Dreams,Angela Knight/Diane Whiteside,3.91,0425207757,9780425207758,en-US,336,1354,60,9/5/2006,Berkley Trade -19912,Master of Dragons (Mageverse #5),Angela Knight,4.22,0425214249,9780425214244,eng,293,3190,56,6/5/2007,Berkley Sensation -19913,Master of the Moon (Mageverse #2),Angela Knight,4.14,0425203573,9780425203576,eng,336,2882,56,5/3/2005,Berkley Sensation -19914,Jane's Warlord (Warlord #1),Angela Knight,3.97,0425196844,9780425196847,eng,320,2552,94,6/1/2004,Berkley Sensation -19916,Over The Moon (Mageverse #3.5),Angela Knight/MaryJanice Davidson/Virginia Kantra/Sunny,3.90,0425213439,9780425213438,eng,330,3681,92,1/2/2007,Berkley Sensation -19949,Mr. and Mistress (Dynasties: The Elliotts #5),Heidi Betts,3.37,0373767234,9780373767236,eng,185,191,16,5/9/2006,Silhouette -19961,Artesia Volume 1,Mark Smylie,3.98,193238622X,9781932386226,eng,192,242,24,9/20/2011,Archaia -19981,Law of Enclosures,Dale Peck,3.65,067100347X,9780671003470,eng,320,72,2,2/1/1997,Washington Square Press -19983,The Drift House: The First Voyage,Dale Peck,3.65,159990005X,9781599900056,eng,437,618,69,11/1/2006,Bloomsbury Publishing PLC -19997,Through a Brazen Mirror,Delia Sherman/Cortney Skinner/Ellen Kushner,3.37,1885865244,9781885865243,eng,100,116,12,2/25/2015,Circlet Press -19998,The Porcelain Dove,Delia Sherman,3.41,0452272262,9780452272262,eng,416,206,28,7/1/1994,Plume -20001,Interfictions: An Anthology of Interstitial Writing,Delia Sherman/Theodora Goss/K. Tempest Bradford/Karen Jordan Allen/Rachel Pollack/Veronica Schanoes/Mikal Trimm/Colin Greenland/Vandana Singh/Matthew Cheney/Léa Silhol/Adrián Ferrero/Holly Phillips/Catherynne M. Valente/Christopher Barzak/Leslie What/Anna Tambour/Joy Marchand/Jon Singer/Csilla Kleinheincz/Michael J. DeLuca,3.77,1931520240,9781931520249,eng,291,229,20,4/1/2007,Small Beer Press -20002,The Fall of the Kings (Riverside #3),Ellen Kushner/Delia Sherman,3.65,0553585940,9780553585940,eng,510,1869,128,9/30/2003,Bantam -20019,Killing Time,Cynthia Harrod-Eagles,3.98,0380732025,9780380732029,en-US,280,12,1,2/1/1999,Avon Books -20021,The Tangled Thread (Morland Dynasty #10),Cynthia Harrod-Eagles,4.32,0751506478,9780751506471,eng,474,305,8,9/1/1987,Little Brown Book Group -20022,The Flood-Tide (Morland Dynasty #9),Cynthia Harrod-Eagles,4.25,075150646X,9780751506464,eng,428,318,7,2/1/1986,Little Brown Book Group -20023,The White Road (Morland Dynasty #28),Cynthia Harrod-Eagles,4.27,0751533459,9780751533453,eng,480,195,8,11/1/2006,Little Brown Book Group -20024,The Maiden (The Morland Dynasty #8),Cynthia Harrod-Eagles,4.27,0751506451,9780751506457,eng,413,330,11,2/1/1985,Little Brown Book Group -20025,The Oak Apple (Morland Dynasty #4),Cynthia Harrod-Eagles,4.18,0751506419,9780751506419,eng,403,460,20,5/1/2001,Little Brown Book Group -20026,The Emperor (The Morland Dynasty #11),Cynthia Harrod-Eagles,4.28,0751506486,9780751506488,eng,512,261,6,8/1/1988,Little Brown Book Group -20051,The Nature of the Child,Jerome Kagan,3.42,0465048528,9780465048526,eng,352,12,1,5/13/1994,Basic Books -20059,Confessions of a Pagan Nun,Kate Horsley,3.87,1570629137,9781570629136,eng,191,1768,266,9/10/2002,Shambhala -20071,Westminster Abby,Micol Ostow,3.41,0142404136,9780142404133,eng,192,1169,83,5/5/2005,Speak -20074,Changelings,Anne McCaffrey/Elizabeth Ann Scarborough,3.77,0345470036,9780345470034,en-US,320,1818,60,12/26/2006,Del Rey -20075,Dragon's Fire (Pern #19),Anne McCaffrey/Todd McCaffrey,3.98,0345480287,9780345480286,eng,366,7923,171,8/1/2006,Del Rey Books -20076,Maelstrom,Anne McCaffrey/Elizabeth Ann Scarborough,3.88,0345470044,9780345470041,eng,237,1088,37,1/31/2007,Del Rey Books -20086,The Mark of the Crown (Star Wars: Jedi Apprentice #4),Jude Watson,3.73,0590519344,9780590519342,eng,131,2319,63,10/1/1999,Scholastic Inc. -20097,The Sea,John Banville/John Lee,3.51,0739333771,9780739333778,eng,0,42,12,8/15/2006,Random House Audio -20117,Joy Within,Joan Goldstein/Manuela Soares,4.38,0671763792,9780671763794,en-US,144,8,3,11/15/1990,Simon Schuster -20118,Butch/Femme,Manuela Soares/Judy Grahn/Nisa Donnelly,3.62,0517702223,9780517702222,eng,64,13,1,4/4/1996,Crown Publishing Group (NY) -20126,Expository Writing: Mini-Lessons * Strategies * Activities,Tara McCarthy/Drew Hires/Jaime Lucero/Vincent Ceci,4.33,0590103873,9780590103879,eng,88,3,0,4/1/1998,Teaching Resources -20127,Persuasive Writing: Mini-Lessons Strategies Activities,Tara MacCarthy/Drew Hires,3.20,0590209345,9780590209342,eng,64,5,1,8/1/1998,Scholastic -20157,McDougal Littell Science: Student Edition Grade 6 Earth Science 2006,McDougal Littell/Douglas W. Carnine,2.00,0618615385,9780618615384,eng,972,3,0,4/12/2005,McDougal Littel -20164,Daisy Bates: Civil Rights Crusader from Arkansas,Grif Stockley,3.55,1578068010,9781578068012,eng,340,11,3,10/18/2005,University Press of Mississippi -20174,The Loftier Way: Tales from the Ancient American Frontier,Blaine M. Yorgason/Brenton G. Yorgason,3.78,087747785X,9780877477853,eng,131,9,2,12/28/1985,Deseret Book Company -20179,A Higher Justice (The Trials of Kit Shannon #5),James Scott Bell,4.26,0764226460,9780764226465,eng,303,175,18,9/1/2003,Bethany House Publishers -20181,Plot & Structure: Techniques and Exercises for Crafting a Plot That Grips Readers from Start to Finish,James Scott Bell,4.10,158297294X,9781582972947,eng,234,4480,439,10/6/2004,Writer's Digest Books -20182,Deadlock,James Scott Bell,3.96,0310243882,9780310243885,eng,319,327,20,10/6/2002,Zondervan -20183,Breach of Promise,James Scott Bell,4.00,0310243874,9780310243878,eng,345,368,36,2/15/2004,Zondervan -20219,Keats's Poetry and Prose,John Keats/Jeffrey N. Cox,4.30,0393924912,9780393924916,eng,673,291,10,8/1/2008,W. W. Norton & Company -20233,A False Mirror (Inspector Ian Rutledge #9),Charles Todd,4.02,0060786736,9780060786731,eng,384,2519,225,1/9/2007,William Morrow -20234,Wings of Fire (Inspector Ian Rutledge #2),Charles Todd,3.99,0312965680,9780312965686,eng,323,5029,438,5/15/1999,St. Martin's Paperbacks -20235,A Cold Treachery (Inspector Ian Rutledge #7),Charles Todd,4.15,0553586610,9780553586619,eng,416,2997,265,8/30/2005,Bantam -20236,The Murder Stone,Charles Todd,3.83,0553586602,9780553586602,eng,416,1492,175,8/31/2004,Bantam -20237,Legacy of the Dead (Inspector Ian Rutledge #4),Charles Todd,4.15,0553583158,9780553583151,eng,356,4081,316,6/1/2001,Bantam Books -20238,A Fearsome Doubt (Inspector Ian Rutledge #6),Charles Todd,4.04,0553583174,9780553583175,eng,384,2815,258,7/29/2003,Bantam -20239,Watchers of Time (Inspector Ian Rutledge #5),Charles Todd,3.99,0553583166,9780553583168,eng,421,3194,326,7/30/2002,Bantam -20240,Search the Dark (Inspector Ian Rutledge #3),Charles Todd,4.01,0312971281,9780312971281,eng,310,3896,324,5/15/2000,St. Martin's Press -20241,Bill Bryson's African Diary,Bill Bryson,3.44,0385605145,9780385605144,eng,63,264,22,12/2/2002,Doubleday -20249,Hunters of Dune (Dune Chronicles #7),Brian Herbert/Kevin J. Anderson,3.65,0765312921,9780765312921,eng,524,10798,274,8/22/2006,Tor Books -20250,The Battle Of Corrin (Legends of Dune #3),Brian Herbert/Kevin J. Anderson,3.74,0340823372,9780340823378,eng,624,59,2,9/1/2004,Hodder & Stoughton Ltd -20252,House Corrino (Prelude to Dune #3),Brian Herbert/Kevin J. Anderson,3.68,0553580337,9780553580334,eng,667,12257,167,8/27/2002,Spectra Books -20253,House Harkonnen (Prelude to Dune #2),Brian Herbert/Kevin J. Anderson,3.67,0553580302,9780553580303,eng,733,13161,206,8/28/2001,Spectra Books -20254,Doctor Who: The Inside Story,Gary Russell,4.22,056348649X,9780563486497,eng,256,273,10,10/26/2006,BBC Books -20258,Doctor Who Short Trips: Repercussions,Gary Russell/Peter Anghelides/J. Shaun Lyon/Jon de Burgh Miller/Eddie Robson/Todd Green/Andy Russell/Andrew Collins/Kathryn Sullivan/Iain McLaughlin/Mark Michalowski/Joseph Lidster/Trevor Baxendale/Colin Brake/Claire Bartlett/Sarah Groenewegen/Trey Korte/Andy Frankham-Allen,3.38,1844350487,9781844350483,eng,246,42,5,7/1/2004,Big Finish -20264,Gerontius,James Hamilton-Paterson,3.74,1862074933,9781862074934,eng,272,4,2,4/17/2002,Not Avail -20287,Hellstrom's Hive,Frank Herbert,3.69,0553144383,9780553144383,eng,312,41,3,3/23/1982,Bantam Books (NY) -20315,The Dark City (Eliot Ness #1),Max Allan Collins,3.88,0727862421,9780727862426,eng,233,49,5,8/1/2005,Severn House Publishers -20316,Bullet Proof (Eliot Ness #3),Max Allan Collins,3.98,0727862987,9780727862983,eng,197,31,2,12/20/2005,Severn House Publishers -20323,The Penguin Companion to European Literature,Anthony Thorlby,4.50,0140510354,9780140510355,eng,907,1,0,5/30/1969,Penguin Books -20327,West To Eden,Gloria Goldreich,3.77,0380706016,9780380706013,eng,501,2,0,12/1/1988,Avon Books -20343,The Various,Steve Augarde,3.71,0440420296,9780440420293,eng,448,825,98,11/8/2005,Yearling -20351,Truman Capote: In Which Various Friends Enemies Acquaintances and Detractors Recall His Turbulent Career,George Plimpton,4.08,0385491735,9780385491730,eng,498,908,56,11/10/1998,Anchor -20355,The Burnt Orange Heresy,Charles Willeford,3.90,0786706686,9780786706686,eng,144,564,49,12/20/1999,Carroll & Graf -20367,Ewan McGregor: From Junkie to Jedi,Brian J. Robb,2.80,0859652769,9780859652766,eng,144,10,1,5/5/1999,Plexus Publishing -20381,Shadow Twin,Gardner Dozois/George R.R. Martin/Daniel Abraham,3.57,1596060298,9781596060296,eng,114,65,7,6/1/2005,Subterranean Press -20394,Der Prophet,Kahlil Gibran,4.23,3530268038,9783530268034,ger,95,9,0,9/1/2001,Benziger -20398,Le prophète,Kahlil Gibran,4.23,2844541844,9782844541840,fre,172,1,0,10/8/2002,Dervy -20408,The Complete Stories of Robert Louis Stevenson: Strange Case of Dr. Jekyll and Mr. Hyde and Nineteen Other Tales,Robert Louis Stevenson/Barry Menikoff,4.13,0375761357,9780375761355,eng,818,439,12,10/8/2002,Modern Library -20410,The Complete Short Stories Of Robert Louis Stevenson: With A Selection Of The Best Short Novels,Robert Louis Stevenson/Charles Neider,4.21,030680882X,9780306808821,eng,720,52,12,8/22/1998,Da Capo Press -20413,A Child's Garden of Verses,Robert Louis Stevenson/Tasha Tudor,4.30,0689823827,9780689823824,eng,67,22227,431,2/1/1999,Simon & Schuster Books for Young Readers -20417,Have Space Suit—Will Travel,Robert A. Heinlein,3.90,1416505490,9781416505495,eng,276,23541,661,2/8/2005,Pocket Books -20420,Practicalities,Marguerite Duras/Barbara Bray,3.98,0802133118,9780802133113,eng,143,226,19,10/22/1993,Grove Press -20422,Le ravissement de Lol V. Stein,Marguerite Duras,3.66,2070368106,9782070368105,fre,192,485,38,6/25/1976,Gallimard -20423,India Song,Marguerite Duras/Barbara Bray,3.57,0802131352,9780802131355,eng,146,289,9,1/13/1994,Grove Press -20424,Clown,Quentin Blake,3.98,0805059334,9780805059335,en-US,32,384,47,9/15/1998,Henry Holt and Co. (BYR) -20425,The Spiral Stair (Arabel and Mortimer #6),Joan Aiken/Quentin Blake,4.33,1903015073,9781903015070,eng,62,35,5,8/1/2000,Barn Owl Books -20429,A Near Thing for Captain Najork (Captain Najork #2),Russell Hoban/Quentin Blake,4.18,1567923232,9781567923230,eng,32,76,11,10/1/2006,David R. Godine -20468,Cover Her Face (Adam Dalgliesh #1),P.D. James/Neville Teller/Robin Ellis/Sian Phillips/Hugh Grant,3.93,0563528273,9780563528272,eng,2,17,4,5/7/2002,BBC Physical Audio -20498,Reptiles and Amphibians (Smithsonian Handbooks),Mark O'Shea/Tim Halliday/Jonathan Metcalf,4.00,0789493934,9780789493934,eng,256,56,5,10/1/2002,DK Publishing (Dorling Kindersley) -20501,The Camera (Ansel Adams Photography #1),Ansel Adams/Robert Hardy Baker,4.16,0821221841,9780821221846,eng,195,5961,65,6/1/1995,Little Brown and Company -20502,The Negative (Ansel Adams Photography #2),Ansel Adams/Robert Hardy Baker,4.40,0821221868,9780821221860,en-US,265,1384,32,6/1/1995,Little Brown and Company -20505,The Print (Ansel Adams Photography #3),Ansel Adams/Robert Hardy Baker,4.37,0821221876,9780821221877,en-US,203,997,14,6/1/1995,Little Brown and Company -20509,The Changing Status of the Artist,Emma Barker/Nick Webb/Kim W. Woods,3.93,0300077424,9780300077421,eng,260,8,0,3/1/1999,Yale University Press -20517,Vicars of Christ: A History of the Popes,Charles A. Coulombe,3.94,0806523700,9780806523705,en-US,492,31,2,7/1/2003,Citadel -20518,The Big Bing: Black Holes of Time Management Gaseous Executive Bodies Exploding Careers and Other Theories on the Origins of the Business Universe,Stanley Bing,3.11,0060529571,9780060529574,en-US,368,27,6,1/3/2006,Harper Business -20519,What Would Machiavelli Do?: The Ends Justify the Meanness,Stanley Bing,3.45,0066620104,9780066620107,eng,176,464,58,7/28/2004,Harper Business -20525,William James: In the Maelstrom of American Modernism,Robert D. Richardson Jr.,4.25,0618433252,9780618433254,eng,622,353,42,11/9/2006,Houghton Mifflin Harcourt -20531,Cliffs Notes on Wright's Black Boy,Carl Senna/CliffsNotes/Richard Wright,3.75,0822002426,9780822002420,eng,56,3,0,5/5/1971,Cliffs Notes -20547,The Wit and Wisdom of Abraham Lincoln: A Book of Quotations,Abraham Lincoln/Bob Blaisdell,4.15,0486440974,9780486440972,eng,96,461,33,8/8/2005,Dover Publications -20549,Speeches and Writings 1832–1858,Abraham Lincoln/Don E. Fehrenbacher,4.36,0940450437,9780940450431,eng,898,1180,21,10/1/1989,Library of America -20552,Selected Speeches and Writings,Abraham Lincoln/Gore Vidal,4.22,0679737316,9780679737315,eng,515,172,12,2/18/1992,Vintage Books USA -20562,George Eliot: The Last Victorian,Kathryn Hughes,4.05,0815411219,9780815411215,eng,416,176,25,7/2/2001,Cooper Square Press -20564,The Mill on the Floss,George Eliot/A.S. Byatt,3.79,0141439629,9780141439624,eng,579,41816,1337,2/27/2003,Penguin Classics -20567,Scenes of Clerical Life,George Eliot/Thomas A. Noble,3.78,019283780X,9780192837806,eng,310,2369,62,1/24/2002,Oxford University Press -20645,Terry Jones' Medieval Lives,Terry Jones/Alan Ereira,4.02,0563522755,9780563522751,eng,240,1950,155,5/5/2005,BBC Books -20646,Terry Jones' Fairy Tales,Terry Jones/Michael Foreman,4.25,0140322620,9780140322620,eng,160,182,19,6/1/1993,Puffin -20657,Some Ether,Nick Flynn,4.16,1555973035,9781555973032,eng,85,1683,87,5/1/2000,Graywolf Press -20660,Tin House: Evil (Volume 8 no. 3),Chris Adrian/Nick Flynn/Francine Prose/Josip Novakovich/Moonshine,3.90,0977698947,9780977698943,eng,224,29,1,4/6/2007,Tin House Magazine -20661,A Note Slipped Under the Door: Teaching from Poems We Love,Nick Flynn/Shirley McPhillips/Philippa Stratton,4.12,1571103201,9781571103208,eng,256,57,5,1/1/2000,Stenhouse Publishers -20668,The Trouble with Testosterone and Other Essays on the Biology of the Human Predicament,Robert M. Sapolsky,4.11,0684838915,9780684838915,eng,288,1106,85,4/24/1998,Scribner -20671,Monkeyluv: And Other Essays on Our Lives as Animals,Robert M. Sapolsky,4.17,0743260163,9780743260169,en-CA,209,1024,102,10/10/2006,Scribner -20677,Literary Criticism Vol. 1: Essays on Literature / American Writers / English Writers,Henry James/Leon Edel/Mark Wilson,4.26,0940450224,9780940450226,eng,1504,27,4,12/1/1984,Library of America -20679,Advanced Statistics Demystified,Larry J. Stephens,4.00,0071432426,9780071432429,eng,324,9,0,6/7/2004,McGraw-Hill Education -20687,Lilly's Big Day,Kevin Henkes,4.20,0060742364,9780060742362,en-US,40,3177,205,3/28/2006,Greenwillow Books -20692,Chester's Way,Kevin Henkes,4.22,0688154727,9780688154721,eng,32,5218,294,9/22/1997,Greenwillow Books -20694,Julius the Baby of the World,Kevin Henkes,4.28,0688143881,9780688143886,eng,32,6697,348,9/21/1995,Greenwillow Books -20738,Forms of Talk,Erving Goffman,3.81,081221112X,9780812211122,eng,344,82,2,3/1/1981,University of Pennsylvania Press -20741,Interaction Ritual - Essays on Face-to-Face Behavior,Erving Goffman,4.05,0394706315,9780394706313,eng,288,308,9,1/12/1982,Pantheon -20749,Study Bible: NIV,Anonymous,4.70,0310929555,9780310929550,eng,2198,4166,186,10/1/2002,Zondervan Publishing House -20775,My Lord Eternity (Immortal Rogues #2),Debbie Raleigh/Alexandra Ivy,3.73,0821775502,9780821775509,eng,256,407,14,10/1/2003,Zebra -20781,Aesop's Fables,Aesop/Ann McGovern,4.05,0590438808,9780590438808,eng,80,108,10,11/1/1963,Scholastic Paperbacks -20794,Once A Wolf: How Wildlife Biologists Fought to Bring Back the Gray Wolf,Stephen R. Swinburne/Jim Brandenburg,4.06,0618111204,9780618111206,eng,48,43,21,2/26/2001,HMH Books for Young Readers -20800,Conversations with Don DeLillo,Don DeLillo/Thomas DePietro,4.06,1578067049,9781578067046,en-US,183,111,7,1/13/2005,University Press of Mississippi -20807,Inventing America: Jefferson's Declaration of Independence,Garry Wills,3.93,0618257764,9780618257768,eng,432,161,16,11/14/2002,Mariner Books -20809,Lincoln at Gettysburg: The Words That Remade America,Garry Wills,4.14,0743299639,9780743299633,eng,320,6876,197,11/14/2006,Simon Schuster -20810,Venice: Lion City: The Religion of Empire,Garry Wills,3.76,0671047647,9780671047641,eng,416,124,20,9/3/2002,Washington Square Press -20812,Four Weddings and a Funeral,Richard Curtis,3.75,0312143400,9780312143404,eng,128,47,4,4/15/1996,St. Martin's Griffin -20813,Halloween,Richard Curtis,4.13,0553262963,9780553262964,eng,166,13,0,9/1/1982,Bantam -20833,Janet My Mother and Me: A Memoir of Growing Up with Janet Flanner and Natalia Danesi Murray,William Murray,3.50,0684809664,9780684809663,eng,320,36,8,2/17/2000,Simon & Schuster -20848,Catch That Pass!,Matt Christopher,3.91,0316139246,9780316139243,eng,130,290,23,9/1/1989,Little Brown Books for Young Readers -20862,Divide and Conquer (Tom Clancy's Op-Center #7),Jeff Rovin/Tom Clancy/Steve Pieczenik,3.80,0425174808,9780425174807,eng,372,2560,30,6/12/2000,Berkley -20865,Death Match (Tom Clancy's Net Force Explorers #18),Diane Duane/Tom Clancy/Steve Pieczenik,4.17,042518448X,9780425184486,eng,192,136,1,7/1/2003,Berkley -20867,Line of Control (Tom Clancy's Op-Center #8),Jeff Rovin/Tom Clancy/Steve Pieczenik,3.86,0425180050,9780425180051,eng,384,3488,29,6/5/2001,Berkley -20868,Sea of Fire (Tom Clancy's Op-Center #10),Jeff Rovin/Tom Clancy/Steve Pieczenik,3.89,0425190919,9780425190913,eng,400,1267,24,6/24/2003,Berkley Books -20869,One is the Loneliest Number (Tom Clancy's Net Force Explorers #3),Diane Duane/Tom Clancy/Steve Pieczenik,3.95,0425164179,9780425164174,eng,182,452,1,4/1/1999,Berkley Publishing Group -20873,Aliens: Nightmare Asylum,Steve Perry,3.67,0553561588,9780553561586,en-US,277,1118,54,4/1/1993,Spectra Books -20876,The Omega Cage (Matador #4),Steve Perry/Michael Reaves,3.78,0441623824,9780441623822,eng,256,522,18,4/1/1988,Ace -20879,The 97th Step (Matador #5),Steve Perry,4.22,0441581056,9780441581054,eng,304,744,9,12/1/1989,Ace -20891,A Friar's Bloodfeud (Knights Templar #20),Michael Jecks,4.10,0755323009,9780755323005,eng,500,220,14,6/5/2006,Headline -20895,Death Ship of Dartmouth (Knights Templar #21),Michael Jecks,4.06,0755323017,9780755323012,eng,352,7,1,6/1/2006,Headline Book Publishing -20913,The John Deere Two-Cylinder Tractor Encyclopedia: The Complete Model-by-Model History,Don Macmillan/Wayne G. Broehl Jr.,4.75,076032963X,9780760329634,eng,256,4,0,5/15/2007,Voyageur Press -20928,Phantoms,Rosalind M. Greenberg,3.38,0886773482,9780886773489,eng,270,13,0,4/4/1989,DAW -20929,Fantasy Gone Wrong,Martin H. Greenberg/Brittiany A. Koren/Brian Stableford/Mickey Zucker Reichert/Fiona Patton/Jim C. Hines/Esther M. Friesner/Donald J. Bingle/Alan Dean Foster/Devon Monk/Phaedra M. Weldon/Christina F. York/Jana Paniccia/Josepha Sherman/Susan Sizemore/Michael Jasper/Janny Wurts/Lisanne Norman,3.45,0756403804,9780756403805,eng,309,229,33,9/5/2006,DAW -20930,The Ghosts in Baker Street: New Tales of Sherlock Holmes,Martin H. Greenberg/Daniel Stashower,3.58,078671400X,9780786714001,en-US,320,51,6,1/9/2006,Running Press -20932,Christmas Bestiary,Martin H. Greenberg/Jack Nimersheim/Jane Yolen/Jack C. Haldeman II/Harry Turtledove/Laura Resnick/Mike Resnick/Karen Haber/Jane Lindskold/Lawrence Schimel/Barry N. Malzberg/Tanya Huff/Michelle Sagara West/Mark Aronson/Stefan R. Dziemianowicz/Jennifer Roberson/Kristine Kathryn Rusch/Elizabeth Ann Scarborough/Barbara Delaplace/Barb Jernigan/Blake Cahoon,3.62,0886775280,9780886775285,eng,315,21,3,11/3/1992,DAW -20934,Black Cats and Broken Mirrors,John Helfers/Esther M. Friesner/Nina Kiriki Hoffman/Bruce Holland Rogers/Peter Crowther/R. Davis/Charles de Lint/Elizabeth Ann Scarborough/Michelle Sagara West/Nancy Springer/Dean Wesley Smith/Kristine Kathryn Rusch/Josepha Sherman/Jane Lindskold/Genevieve Gorman/Kristin Schwengel/Jean-François Podevin/Zane Stillings/Carol Rondou,3.38,0886777887,9780886777883,eng,320,63,7,6/1/1998,DAW -20935,Time Twisters,Jean Rabe/Martin H. Greenberg/Stephen Leigh/Gene DeWeese/Joe Masdon/Donald J. Bingle/Skip Williams/Penny Williams/Pierce Askegren/Nancy Virginia Varian/Wes Nicholson/John Helfers/Chris Pierson/Harry Turtledove/Kevin J. Anderson/Robert E. Vardeman/Jackie Cassada/James M. Ward/Jon L. Breen/Linda P. Baker,3.36,0756404053,9780756404055,eng,306,35,6,1/2/2007,DAW -20941,The Western Canon: The Books and School of the Ages,Harold Bloom,3.86,1573225142,9781573225144,eng,546,2141,167,9/1/1995,Riverhead Books -20942,Shakespeare: The Invention of the Human,Harold Bloom,4.02,157322751X,9781573227513,eng,745,3001,182,9/1/1999,The Berkley Publishing Group -20944,The American Religion,Harold Bloom,3.76,0978721004,9780978721008,en-GB,305,288,40,10/1/2006,Chu Hartley Publishers LLC -20949,American Caesar: Douglas MacArthur 1880-1964,William Manchester,4.15,0316544981,9780316544986,eng,811,10014,232,9/30/1978,Little Brown & Company (Boston/Toronto) -20954,Winchester Shotguns,Dennis Adler/R.L. Wilson,5.00,0785821082,9780785821083,eng,372,2,0,5/15/2008,Chartwell Books -20957,Colossians and Philemon: A Critical and Exegetical Commentary (International Critical Commentary),R. McL. Wilson,5.00,0567044718,9780567044716,eng,512,1,0,12/7/2005,T&T Clark Int'l -20962,Maurice Sendak's Seven Little Monsters: What Time is It? - Book #4,Arthur Yorinks/Raymond Jafelice,2.75,078681778X,9780786817788,eng,24,4,1,4/5/2004,Volo -20971,Meditations for Manifesting: Morning and Evening Meditations to Literally Create Your Heart's Desire,Wayne W. Dyer,4.02,156170315X,9781561703159,eng,1,338,12,6/1/1995,Hay House -20972,There's a Spiritual Solution to Every Problem,Wayne W. Dyer,4.27,0060192305,9780060192303,eng,288,5738,129,8/21/2001,Harper -21004,Michael Smith Elements of Style,Michael S. Smith/Diane Dorrans Saeks,4.17,0847827623,9780847827626,eng,212,18,1,11/22/2005,Rizzoli International Publications -21010,Spares,Michael Marshall Smith,4.13,0006512674,9780006512677,eng,317,2566,160,11/2/1998,HarperCollins -21012,One of Us,Michael Marshall Smith,4.04,0553580698,9780553580693,eng,368,1302,52,7/6/1999,Bantam -21016,The Secret City (Pyrates #1),Chris Archer,4.11,0439368510,9780439368513,eng,184,231,17,2/1/2003,Scholastic Paperbacks -21029,The Theory and Practice of Group Psychotherapy,Irvin D. Yalom/Molyn Leszcz,4.17,0465092845,9780465092840,en-US,688,7888,119,7/6/2005,Basic Books -21031,When Nietzsche Wept,Irvin D. Yalom,4.32,0060748125,9780060748128,eng,310,25063,1031,1/4/2005,Harper Perennial -21032,Existential Psychotherapy,Irvin D. Yalom,4.39,0465021476,9780465021475,en-US,544,3689,103,12/8/1980,Basic Books -21059,Crown of Stars (Crown of Stars #7),Kate Elliott,3.91,0756404061,9780756404062,eng,609,2169,54,1/2/2007,DAW -21060,Crown Duel (Crown & Court #1-2),Sherwood Smith,4.19,0142301515,9780142301517,eng,471,22971,896,6/10/2002,Firebird -21062,A Rose for the Crown,Anne Easter Smith,4.02,0743276876,9780743276870,eng,650,4685,264,3/14/2006,Simon & Schuster -21063,The Bloody Crown of Conan (Conan the Cimmerian #2),Robert E. Howard/Gary Gianni/Patrice Louinet,4.30,0345461525,9780345461520,eng,366,3875,97,11/23/2004,Del Rey Ballantine Random House -21070,Rough Crossings: Britain the Slaves and the American Revolution,Simon Schama,3.98,006053916X,9780060539160,eng,496,747,87,4/25/2006,Ecco / HarperCollins -21071,Landscape and Memory,Simon Schama,4.17,0679735127,9780679735120,eng,672,900,80,11/5/1996,Vintage -21073,The Embarrassment of Riches: An Interpretation of Dutch Culture in the Golden Age,Simon Schama,4.06,0679781242,9780679781240,en-US,720,1783,86,12/8/1997,Vintage -21075,Citizens: A Chronicle of the French Revolution,Simon Schama,3.99,0141017279,9780141017273,en-GB,825,90,12,8/5/2004,Penguin -21089,The Feelings Book: The Care & Keeping of Your Emotions,Lynda Madison/Bonnie Timmons/Norm Bendell,4.16,1584855282,9781584855286,eng,104,782,51,9/1/2002,American Girl Publishing Inc -21091,A Smart Girl's Guide to Money: How to Make It Save It And Spend It,Nancy Holyoke/Ali Douglass,4.14,1593691033,9781593691035,en-GB,95,536,65,3/1/2006,American Girl Publishing Inc -21093,What Would You Do? (American Girl Library),Patti Kelley Criswell/Norm Bendell,4.26,1584858745,9781584858744,en-US,63,77,5,7/1/2004,American Girl Publishing Inc -21107,The Halloween Activity Book: Creepy Crawly Hairy Scary Things to Do,Mymi Doinet/Benjamin Chaud,2.00,0811832791,9780811832793,eng,32,1,1,8/1/2002,Chronicle Books -21114,The Capricorn Stone,Madeleine Brent,3.91,044920149X,9780449201497,eng,346,574,33,5/12/1983,Fawcett -21116,Golden Urchin,Madeleine Brent,4.09,0449213897,9780449213896,en-GB,384,66,10,11/12/1987,Fawcett -21119,The Ethics of Ambiguity,Simone de Beauvoir/Bernard Frechtman,4.15,080650160X,9780806501604,eng,162,4114,153,6/1/2000,Citadel -21121,She Came to Stay,Simone de Beauvoir,3.91,0006540805,9780006540809,en-GB,416,2040,88,10/9/1995,Flamingo -21122,The Coming of Age,Simone de Beauvoir/Patrick O'Brian,3.88,039331443X,9780393314434,en-GB,592,227,14,6/17/1996,W. W. Norton Company -21125,A Transatlantic Love Affair: Letters to Nelson Algren,Simone de Beauvoir/Nelson Algren/Sylvie Le Bon de Beauvoir/Vanessa Kling/Ellen Gordon Reeves,4.01,1565845609,9781565845602,eng,560,235,16,9/1/1999,The New Press -21126,La force de l'âge,Simone de Beauvoir,4.15,2070377822,9782070377824,fre,786,192,17,11/14/1986,Folio -21143,What Life Was Like When Rome Ruled the World: The Roman Empire 100 BC - AD 200 (What Life Was Like),Time-Life Books,3.85,0783554524,9780783554525,eng,192,91,9,5/24/1999,Time Life Medical -21151,Sudden Fiction International: 60 Short-Short Stories,Robert Shapard/James Thomas,3.76,0393306135,9780393306132,en-US,352,306,29,10/17/1989,W. W. Norton Company -21152,Sudden Fiction: American Short-Short Stories,Robert Shapard/James Thomas,3.84,0879052651,9780879052652,eng,264,476,48,12/31/1983,Gibbs Smith -21173,Sarah Bernhardt,Elizabeth Silverthorne/Betty McCollum,4.25,0791074587,9780791074589,eng,136,4,0,1/1/2004,Chelsea House Publishers -21179,The Art of Controversy (The Essays of Arthur Schopenhauer),Thomas Bailey Saunders,3.85,141916130X,9781419161308,eng,76,17,3,6/17/2004,Kessinger Publishing -21182,The Wisdom of Life,Arthur Schopenhauer/Thomas Bailey Saunders,4.14,0486435504,9780486435503,eng,96,1487,77,3/8/2004,Dover Publications -21187,For All Time (Time Travelers #4),Caroline B. Cooney,3.90,0440229316,9780440229315,eng,261,1618,65,7/8/2003,Laurel Leaf Library -21188,Wanted!,Caroline B. Cooney,3.69,0590988492,9780590988490,en-US,230,1969,193,7/1/1997,Scholastic Paperbacks -21191,The Time Travelers: Volume One,Caroline B. Cooney,3.94,0553494805,9780553494808,en-US,420,302,29,1/10/2006,Laurel Leaf -21194,The Stranger,Caroline B. Cooney,3.53,0590456806,9780590456807,eng,198,55,11,11/1/1993,Scholastic -21199,Every Night Italian: Every Night Italian,Giuliano Hazan/Marcella Hazan/Dana Gallagher,3.79,0684800284,9780684800288,eng,256,70,2,1/12/2000,Scribner -21200,More Classic Italian Cooking,Marcella Hazan,4.48,0345314034,9780345314031,eng,465,64,3,7/12/1984,Ballantine Books -21214,Practice Makes Perfect: Italian Verb Tenses,Paola Nanni-Tate,4.00,0071451382,9780071451383,eng,252,9,1,11/23/2005,McGraw-Hill Companies -21220,Effigies (Faye Longchamp #3),Mary Anna Evans,4.03,1590583426,9781590583425,eng,301,460,47,1/15/2007,Poisoned Pen Press -21223,The Cambridge Companion to Schopenhauer,Christopher Janaway,3.83,0521629241,9780521629249,eng,494,23,3,1/20/2000,Cambridge University Press -21230,Stormie: A Story of Forgiveness and Healing,Stormie Omartian,4.40,1565078322,9781565078321,eng,192,430,44,9/1/1997,Harvest House Publishers -21242,The Orion Mystery: Unlocking the Secrets of the Pyramids,Robert Bauval/Adrian Geoffrey Gilbert,3.94,0517884542,9780517884546,eng,352,1123,36,8/22/1995,Three Rivers Press -21245,Orion (Orion #1),Ben Bova,3.72,0812532473,9780812532470,eng,432,1386,54,12/15/1992,Tor Science Fiction -21248,Lake Orion (Images of America: Michigan),James E. Ingram/Lori Grove,4.50,0738539562,9780738539560,eng,128,1,0,7/19/2006,Arcadia Publishing -21266,Rick Steves' Europe Through the Back Door,Rick Steves,4.24,1566918081,9781566918084,eng,808,3569,70,9/12/2017,Avalon Travel -21276,A Dangerous Man (Hank Thompson #3),Charlie Huston,4.07,034548133X,9780345481337,eng,286,2735,162,9/19/2006,Ballantine Books -21277,Already Dead (Joe Pitt #1),Charlie Huston,3.79,034547824X,9780345478245,en-US,268,8447,631,12/27/2005,Del Rey -21278,Caught Stealing (Hank Thompson #1),Charlie Huston,4.04,0345464788,9780345464781,eng,240,4797,431,5/31/2005,Ballantine Books -21280,Ultimate Annuals Volume 2,Charlie Huston/Mike Carey/Brian Michael Bendis/Robert Kirkman/Mike Deodato/Ryan Sook/Stuart Immonen/Frazier Irving,3.21,0785123717,9780785123712,eng,160,105,8,2/7/2007,Marvel -21282,Dead I Well May Be (Dead Trilogy #1),Adrian McKinty,3.97,0743470567,9780743470568,eng,384,2594,243,8/31/2004,Pocket Books -21283,The Dead Yard (Michael Forsythe #2),Adrian McKinty,4.12,0743499484,9780743499484,eng,364,1506,101,12/26/2006,Pocket Books -21284,The Lighthouse Land (Lighthouse Trilogy #1),Adrian McKinty,3.60,081095480X,9780810954809,eng,387,861,114,10/1/2006,Harry N. Abrams -21290,Spider Mountain (Cam Richter #2),P.T. Deutermann,3.92,031233379X,9780312333799,eng,309,461,41,12/26/2006,St. Martin's Press -21294,The Edge of Honor,P.T. Deutermann,3.97,0312953968,9780312953966,eng,626,168,16,5/15/1995,St. Martin's Paperbacks -21295,The Firefly,P.T. Deutermann,3.77,0312994818,9780312994815,eng,528,317,31,11/30/2004,St. Martin's Paperbacks -21315,Diary of a Spider,Doreen Cronin/Harry Bliss,4.25,0060001534,9780060001537,en-US,40,8134,292,7/26/2005,HarperCollins -21318,The Snow Spider (Snow Spider Trilogy #1),Jenny Nimmo,3.70,0439846757,9780439896757,en-US,146,2762,228,9/1/2006,Orchard Books (NY) -21320,Ultimate Spider-Man Volume 16: Deadpool,Brian Michael Bendis/Mark Bagley,3.70,0785119272,9780785119272,eng,184,1474,58,9/13/2006,Marvel -21321,Ultimate Spider-Man Volume 7,Brian Michael Bendis/Mark Bagley,4.10,078512148X,9780785121480,eng,344,272,9,10/4/2006,Marvel -21322,Fables: 1001 Nights of Snowfall,Bill Willingham/Esao Andrews/John Bolton/Mark Buckingham/James Jean/Derek Kirk Kim/Tara McPherson/Jill Thompson/Mark Wheatley/Michael Wm. Kaluta/Charles Vess/Brian Bolland,4.14,1401203671,9781401203672,eng,140,13759,538,10/18/2006,Vertigo -21323,Cold Fire / Hideaway / The Key to Midnight,Dean Koontz/Leigh Nichols,4.18,0399146261,9780399146268,eng,784,19670,13,8/28/2000,Putnam Adult -21324,Fables Vol. 8: Wolves,Bill Willingham/Mark Buckingham/Steve Leialoha/Shawn McManus/Andrew Pepoy,4.27,1401210015,9781401210014,eng,160,18799,568,12/20/2006,Vertigo -21325,Fables Vol. 4: March of the Wooden Soldiers,Bill Willingham/Mark Buckingham/Craig Hamilton/Steve Leialoha/P. Craig Russell,4.29,1401202225,9781401202224,eng,231,26055,785,11/30/2004,Vertigo -21326,Fables Vol. 1: Legends in Exile,Bill Willingham/Terry Moore/Mike Allred/Lan Medina/Mark Buckingham/Matthew Sturges/Steve Leialoha/Craig Hamilton/Russ Braun/James Jean/Tony Akins/Eric Shanower/Shawn McManus/Jae Lee/Chrissie Zullo/David Petersen,3.97,1563899426,9781563899423,eng,128,119292,2866,12/31/2002,Vertigo -21327,Fables Vol. 7: Arabian Nights (and Days),Bill Willingham/Mark Buckingham/Steve Leialoha/Jim Fern/Jimmy Palmiotti/Andrew Pepoy,4.09,1401210007,9781401210007,eng,143,15575,547,7/5/2006,Vertigo -21328,Fables Vol. 6: Homelands,Bill Willingham/David Hahn/Mark Buckingham/Lan Medina/Steve Leialoha,4.28,1401205003,9781401205003,eng,190,21472,637,1/27/2006,Vertigo -21329,Fables Vol. 3: Storybook Love,Bill Willingham/Bryan Talbot/Lan Medina/Mark Buckingham/Linda Medley/Steve Leialoha/James Jean,4.13,140120256X,9781401202569,eng,190,32814,906,5/1/2004,Vertigo -21330,Fables Vol. 5: The Mean Seasons,Bill Willingham/Mark Buckingham/Steve Leialoha/Tony Akins/Jimmy Palmiotti,4.19,1401204864,9781401204860,eng,166,20703,611,4/30/2005,Vertigo -21332,The Choice: A Fable of Free Trade and Protectionism,Russell Roberts/Russ Roberts,3.75,0131433547,9780131433540,eng,132,350,31,9/1/2006,Pearson -21338,Brewer's Dictionary of Phrase and Fable,John Ayto,4.38,0061121207,9780061121203,en-US,1326,40,4,8/15/2006,Collins Reference -21341,Jack of Fables Vol. 1: The (Nearly) Great Escape,Bill Willingham/Matthew Sturges/Tony Akins/Andrew Pepoy,3.58,1401212220,9781401212223,eng,128,4372,271,2/28/2007,Vertigo -21342,Math Fables,Greg Tang/Heather Cahoon,4.03,043945400X,9780439454001,eng,40,0,0,1/1/1949,Scholastic Inc. -21343,The Five Dysfunctions of a Team: A Leadership Fable,Patrick Lencioni,4.04,0787960756,9780787960759,eng,227,65444,2866,4/11/2002,Jossey-Bass -21348,Aesop's Fables,Aesop/Laura Harris/Laura Gibbs,4.05,0192840509,9780192840509,eng,306,97136,947,4/10/2003,Oxford University Press -21352,Icebound,David Axton/Dean Koontz/Paul Michael,3.76,0739341413,9780739341414,eng,0,46,12,3/6/2007,Random House Audio -21353,Odd Thomas (Odd Thomas #1),Dean Koontz/David Baker,3.97,0739301764,9780739301760,eng,11,106,32,12/9/2003,Random House Audio Publishing Group -21362,Seize the Night (Moonlight Bay #2),Dean Koontz/Keith Szarabajka,4.08,0553479016,9780553479010,eng,12,23534,390,12/29/1998,Random House Audio Publishing Group -21365,From the Corner of His Eye,Dean Koontz/Stephen Lang,4.03,0553502697,9780553502695,en-US,0,29,3,12/26/2000,Random House Audio Publishing Group -21370,The Good Guy,Dean Koontz/Richard Ferrrone,3.82,0739332937,9780739332931,eng,9,115,24,5/29/2007,Random House Audio Publishing Group -21402,Pompeii,Robert Harris/Michael Cumpsty,3.82,0739341774,9780739341773,eng,0,7,1,9/5/2006,Random House Audio -21425,3rd Degree,James Patterson/Andrew Gross/Carolyn McCormick,4.02,1586215981,9781586215989,eng,7,76,9,3/1/2004,Hachette Audio -21426,2nd Chance (Women's Murder Club #2),James Patterson/Melissa Leo/Jeremy Piven/Andrew Gross,4.04,1594831165,9781594831164,eng,5,28,4,2/27/2006,Little Brown & Company -21430,The Big Bad Wolf,James Patterson/Peter J. Fernandez/Denis O'Hare,3.99,1586215809,9781586215804,eng,8,101,13,11/1/2003,Little Brown & Company -21437,Pop Goes the Weasel,James Patterson/Roger Rees/Keith David,4.00,1594836116,9781594836114,en-GB,460,49,5,11/13/2006,Little Brown & Company -21484,The Winds of War (The Henry Family #1),Herman Wouk,4.37,0316952664,9780316952668,eng,896,47239,1251,2/5/2002,Back Bay Books -21489,Hollywood Station (Hollywood Station #1),Joseph Wambaugh,3.73,0316066141,9780316066143,en-US,340,2104,220,1/3/2007,Little Brown and Company -21491,The Choirboys,Joseph Wambaugh,4.06,0752851314,9780752851310,eng,368,4227,126,4/18/2002,Orion -21493,Fire Lover: A True Story,Joseph Wambaugh,3.72,006009527X,9780060095277,eng,352,840,113,4/30/2002,William Morrow -21494,Floaters,Joseph Wambaugh,3.52,0553575953,9780553575958,eng,291,567,38,3/3/1997,Bantam -21495,The New Centurions,Joseph Wambaugh,3.94,0440164176,9780440164173,eng,368,2180,66,3/1/1987,Dell -21498,The Black Marble,Joseph Wambaugh,3.83,0440613965,9780440613961,en-US,416,936,45,9/2/1998,Dell -21505,The Secrets of Harry Bright,Joseph Wambaugh,3.76,0722189141,9780722189146,eng,307,605,26,5/7/1987,Sphere -21508,Lines and Shadows,Joseph Wambaugh,3.80,0553763253,9780553763256,en-US,416,680,43,11/1/1995,Bantam -21527,Hollywood Tough (Shane Scully #3),Stephen J. Cannell/Paul Michael/Michael Prichard,3.86,1559278226,9781559278225,eng,10,825,49,1/7/2003,Macmillan Audio -21530,Cold Hit (Shane Scully #5),Stephen J. Cannell/Scott Brick,3.85,1593977735,9781593977733,eng,11,15,6,8/1/2005,Macmillan Audio -21534,Trunk Music (Harry Bosch #5; Harry Bosch Universe #6),Michael Connelly/Dick Hill,4.18,1423323386,9781423323389,eng,13,126,26,11/28/2006,Brilliance Audio -21535,Angels Flight (Harry Bosch #6),Michael Connelly/Dick Hill,4.18,159737685X,9781597376853,eng,9,106,20,7/25/2005,Brilliance Audio -21536,The Black Echo (Harry Bosch #1; Harry Bosch Universe #1),Michael Connelly/Dick Hill,4.10,1423323254,9781423323259,eng,12,209,54,11/25/2006,Brilliance Audio -21538,The Closers (Harry Bosch #11; Harry Bosch Universe #14),Michael Connelly/Len Cariou,4.13,1594830207,9781594830204,eng,12,198,28,5/1/2005,Hachette Audio -21539,Echo Park (Harry Bosch #12; Harry Bosch Universe #16),Michael Connelly/Len Cariou,4.12,1594835896,9781594835896,eng,11,174,35,10/9/2006,Little Brown & Company -21543,The Poet (Jack McEvoy #1; Harry Bosch Universe #5),Michael Connelly/Buck Schirner,4.20,1423323238,9781423323235,eng,15,115,33,6/25/2006,Brilliance Audio -21544,The Concrete Blonde (Harry Bosch #3),Michael Connelly/Dick Hill,4.16,1596009209,9781596009202,en-US,12,132,28,5/25/2005,Brilliance Audio -21545,The Best American Mystery Stories 2003,Michael Connelly/Otto Penzler,3.60,0618390723,9780618390724,eng,1,5,2,11/4/2003,Mariner Books -21550,Hundred-Dollar Baby (Spenser #34),Robert B. Parker/Joe Mantegna,3.82,0739318659,9780739318652,eng,0,57,11,10/24/2006,Random House Audio -21552,The Spenser Collection: Volume I (Spenser #27-28),Robert B. Parker/Joe Mantegna,4.26,0739340190,9780739340196,en-US,0,77,3,5/30/2006,RH Audio -21553,School Days (Spenser #33),Robert B. Parker/Joe Mantegna,3.87,0739318616,9780739318614,en-US,0,24,3,9/27/2005,Random House Audio Publishing Group -21557,Potshot (Spenser #28),Robert B. Parker/Joe Mantegna,3.89,0553702467,9780553702460,eng,0,2,0,4/1/2003,RH Audio Price-less -21581,Chance (Spenser #23),Robert B. Parker/Burt Reynolds,4.10,0787107123,9780787107123,en-US,4,13,2,4/1/1996,Audio Literature -21608,The Accidental Time Machine,Joe Haldeman,3.70,0441014992,9780441014996,eng,278,6572,660,8/7/2007,Ace -21609,A Separate War and Other Stories,Joe Haldeman/Connie Willis,3.68,0441014070,9780441014071,en-US,270,342,35,8/1/2006,Ace Books -21611,The Forever War (The Forever War #1),Joe Haldeman,4.15,0060510862,9780060510862,eng,278,108783,4005,9/2/2003,Voyager -21613,Worlds Enough and Time (Worlds #3),Joe Haldeman,3.70,0688090257,9780688090258,eng,332,336,13,5/1/1992,William Morrow & Company -21615,The Coming,Joe Haldeman,3.09,0441008763,9780441008766,eng,278,690,71,11/1/2001,Ace -21618,Forever Peace (The Forever War #2),Joe Haldeman,3.74,0441005667,9780441005666,eng,351,16338,422,10/1/1998,Ace Books -21621,Dealing in Futures,Joe Haldeman,3.73,0451452585,9780451452580,en-US,352,193,12,11/1/1993,Roc -21624,Study War No More: A Selection of Alternatives,Joe Haldeman/William Nabors/Harry Harrison/Damon Knight/Harlan Ellison/Ben Bova/Poul Anderson/Isaac Asimov/Mack Reynolds/Alec Effinger,3.56,0380405199,9780380405190,eng,323,97,2,10/1/1978,Avon -21626,Not of Woman Born,Constance Ash/Nina Kiriki Hoffman/Patricia A. McKillip/Walter Jon Williams/Debra Doyle/James D. Macdonald/Kara Dalkey/Michael Armstrong/Richard Parks/Sage Walker/Susan Palwick/William F. Wu/Jack McDevitt/Janni Lee Simner/Robert Silverberg,3.82,0451456815,9780451456816,eng,288,60,11,3/1/1999,Roc -21629,Worlds Apart (Worlds 2),Joe Haldeman,3.69,0380716828,9780380716821,eng,227,485,8,6/28/1992,Avon Books (AvoNova) -21638,Train_man Volume 3 (Train_man),Hidenori Hara/Hitori Nakano,3.94,1421508508,9781421508504,eng,200,102,15,2/13/2007,VIZ Media LLC -21665,The Best American Mystery Stories 2004,Nelson DeMille/Otto Penzler,3.55,0618497420,9780618497423,eng,0,3,0,10/14/2004,Mariner Books -21671,Mystic River,Dennis Lehane,4.18,0060584750,9780060584757,eng,416,109447,2859,2/1/2001,William Morrow Paperbacks -21673,Mystic River,Dennis Lehane,4.18,0593047508,9780593047507,eng,401,44,3,3/5/2001,Bantam Press -21682,Coronado: Stories,Dennis Lehane,3.38,006113967X,9780061139673,eng,240,2907,261,8/8/2006,William Morrow -21683,Prayers for Rain (Kenzie & Gennaro #5),Dennis Lehane,4.09,0380730367,9780380730360,eng,375,16329,619,5/2/2000,HarperTorch -21685,A Drink Before the War (Kenzie & Gennaro #1),Dennis Lehane,3.95,0156029022,9780156029025,eng,282,29089,1523,9/15/2003,Mariner Books -21686,Shutter Island,Dennis Lehane,4.09,038073186X,9780380731862,eng,369,134985,6300,4/27/2004,HarperTorch -21703,The Best American Mystery Stories 2002,James Ellroy/Otto Penzler/John Biguenet/Michael Connelly/Thomas H. Cook/Sean Doolittle/Brendan DuBois/David Edgerley Gates/Joe Gores/James Grady/Clark Howard/Stuart M. Kaminsky/Joe R. Lansdale/Michael Malone/Annette Meyers/Joyce Carol Oates/Robert B. Parker/F.X. Toole/Daniel Waterman/Scott Wolven/Fred Melton,3.58,0618258078,9780618258079,eng,1,0,0,10/15/2002,Mariner Books -21704,The Black Dahlia (L.A. Quartet #1),James Ellroy,3.75,0446698873,9780446698870,eng,348,70771,1815,8/16/2006,Mysterious Press -21705,The Black Dahlia Files: The Mob the Mogul and the Murder That Transfixed Los Angeles,Donald H. Wolfe,3.84,0060582502,9780060582500,en-US,448,635,57,9/5/2006,Harper Paperbacks -21710,Corroborating Evidence: The Black Dahlia Murder,William T. Rasmussen,3.39,0865344922,9780865344921,eng,234,12,1,10/30/2005,Sunstone Press -21712,Childhood Shadows: The Hidden Story of the Black Dahlia Murder,Mary Pacios,3.50,1585004847,9781585004843,eng,292,50,4,12/19/1999,Authorhouse -21717,Triptych (Will Trent #1),Karin Slaughter,4.13,0385339461,9780385339469,eng,393,42325,2011,8/15/2006,Delacorte Press -21718,Blindsighted (Grant County #1),Karin Slaughter,4.09,0380820889,9780380820887,eng,418,53996,2171,10/1/2002,HarperTorch -21719,Kisscut (Grant County #2),Karin Slaughter,4.09,0060534044,9780060534042,eng,436,25675,1096,9/30/2003,HarperTorch -21720,Beyond Reach (Grant County #6),Karin Slaughter,4.19,038533947X,9780385339476,eng,404,19136,979,7/31/2007,Delacorte Press -21721,A Faint Cold Fear (Grant County #3),Karin Slaughter,4.08,0060534052,9780060534059,eng,422,25119,900,7/27/2004,Harper -21722,Faithless (Grant County #5),Karin Slaughter,4.12,0440242916,9780440242918,en-US,549,21130,708,7/25/2006,Dell Publishing Company -21723,Like A Charm,Karin Slaughter/Peter Robinson/John Connolly/Denise Mina/Mark Billingham,3.48,0060583312,9780060583316,en-US,384,22,4,5/26/2015,William Morrow Paperbacks -21725,Like a Charm,Karin Slaughter/Denise Mina/John Harvey/Kelley Armstrong/John Connolly/Emma Donoghue/Jane Haddam/Laura Lippman/Peter Robinson/Fidelis Morgan/Peter Moore Smith/Lynda La Plante/Jerrilyn Farmer/Lee Child/Mark Billingham,3.48,0099462257,9780099462255,eng,384,1322,88,6/3/2004,Arrow -21735,The Enemy (Jack Reacher #8),Lee Child/Dick Hill,4.16,1593553943,9781593553944,eng,14,178,35,5/11/2004,Brilliance Audio -21739,The Visitor (Jack Reacher #4),Lee Child/Hayward Morse/Garrick Hagon,4.09,1860428789,9781860428784,eng,15,4,0,10/1/2004,Soundings -21742,Tripwire (Jack Reacher #3),Lee Child/Dick Hill,4.09,1567408346,9781567408348,eng,3,16,3,7/8/1999,Nova Audio Books -21743,Killing Floor (Jack Reacher #1),Lee Child/Dick Hill,4.05,159355558X,9781593555580,en-US,3,124,27,4/10/2004,Brilliance Audio -21745,Without Fail (Jack Reacher #6),Lee Child/Dick Hill,4.15,1590860624,9781590860625,eng,14,64395,1617,5/17/2002,Brilliance Audio -21746,The Enemy (Jack Reacher #8),Lee Child/Dick Hill,4.16,1590864093,9781590864098,eng,14,4,0,5/11/2004,Brilliance Audio -21747,One Shot (Jack Reacher #9),Lee Child/Dick Hill,4.21,1593555199,9781593555191,eng,12,138,26,6/14/2005,Brilliance Audio -21749,Bad Luck and Trouble (Jack Reacher #11),Lee Child,4.18,0739340670,9780739340677,eng,13,53,15,5/15/2007,Random House Audio -21751,The Enemy (Jack Reacher #8),Lee Child,4.16,1423319613,9781423319610,en-US,6,10,3,4/28/2007,Brilliance Audio -21752,The Visitor (Jack Reacher #4),Lee Child/Hayward Morse,4.09,1860429165,9781860429163,eng,14,7,1,5/1/2002,Soundings -21753,Echo Burning (Jack Reacher #5),Lee Child,4.01,1423319524,9781423319528,eng,5,40,14,2/28/2007,Brilliance Audio -21756,Tripwire (Jack Reacher #3),Lee Child/Dick Hill,4.09,1593358725,9781593358723,en-US,14,3,1,11/25/2004,Brilliance Audio -21758,The Enemy (Jack Reacher #8),Lee Child/Dick Hill,4.16,1593354746,9781593354749,eng,14,3,2,6/10/2004,Brilliance Audio -21759,Tripwire (Jack Reacher #3),Lee Child/Dick Hill,4.09,1593555601,9781593555603,eng,14,11,1,11/25/2004,Brilliance Audio -21763,Tripwire (Jack Reacher #3),Lee Child/Dick Hill,4.09,1593357389,9781593357382,eng,14,18,4,11/25/2004,Brilliance Audio -21764,The Enemy (Jack Reacher #8),Lee Child/Dick Hill,4.16,1593353154,9781593353155,eng,14,1,0,6/10/2004,Brilliance Audio -21765,Blood on the Moon: The Assassination of Abraham Lincoln,Edward Steers Jr.,4.13,0813191513,9780813191515,eng,360,497,58,10/1/2005,University Press of Kentucky -21766,The Blood of the Moon: Understanding the Historic Struggle Between Islam and Western Civilization,George Grant,3.69,0785265430,9780785265436,eng,224,70,8,12/16/2001,Thomas Nelson -21767,Blood on the Moon (Lloyd Hopkins #1),James Ellroy,3.44,140009528X,9781400095285,eng,272,1612,100,5/10/2005,Vintage -21768,Blood Moon Over Bengal,Morag McKendrick Pippin,3.47,0843954523,9780843954524,eng,337,20,6,10/1/2004,Leisure Books -21773,Blood Moon Over Britain,Morag McKendrick Pippin,3.44,0843955821,9780843955828,eng,323,17,4,12/1/2005,Leisure Books -21776,The Silent Gondoliers,William Goldman,3.81,0345442636,9780345442635,eng,128,1339,136,1/2/2001,Del Rey -21779,The Season: A Candid Look at Broadway,William Goldman,4.10,0879100230,0073999768442,eng,448,291,35,7/1/2004,Limelight -21782,Heat,William Goldman,3.37,0446300004,9780446300001,eng,244,242,17,9/1/1986,Warner Books (NY) -21783,Tinsel,William Goldman,3.19,0440187354,9780440187356,eng,399,258,14,6/15/1980,Dell -21784,William Goldman: Four Screenplays,William Goldman,4.29,155783198X,0073999254907,en-US,504,17,1,5/1/2000,Applause Books -21787,The Princess Bride,William Goldman,4.26,0345418263,9780345418265,eng,456,703676,13878,7/15/2003,Ballantine Books -21799,Hype and Glory,William Goldman/P. Gethers,3.67,0679734783,9780679734789,eng,306,129,14,3/13/1991,Villard -21803,La princesa prometida,William Goldman,4.26,8427030975,9788427030978,spa,480,39,7,6/14/2005,Planeta Publishing -21806,Boys and Girls Together,William Goldman,3.67,0345439732,9780345439734,eng,768,753,59,7/31/2001,Ballantine Books -21819,Wait Till Next Year: The Story of a Season When What Should've Happened Didn't and What Could've Gone Wrong Did,William Goldman/Mike Lupica,3.94,0553053191,9780553053197,en-US,363,90,11,11/1/1988,Bantam -21823,The Princess Bride: S. Morgenstern's Classic Tale of True Love and High Adventure,William Goldman,4.26,0151730857,9780151730858,eng,283,460,73,9/1/1973,Harcourt Brace Jovanovich -21829,Creepers,David Morrell,3.66,1593153570,9781593153571,en-CA,388,4513,515,9/26/2005,CDS Books -21830,The Totem,David Morrell,3.58,0446691909,9780446691901,eng,448,1152,76,4/1/2003,Grand Central Publishing -21832,The League of Night and Fog (Mortalis #3),David Morrell,4.10,0446691925,9780446691925,eng,448,2564,64,4/1/2003,Grand Central Publishing -21836,Scavenger (Frank Balenger #2),David Morrell,3.60,1593154410,9781593154417,eng,368,1760,190,3/13/2007,Vanguard Press -21837,The Fraternity of the Stone (Mortalis #2),David Morrell,4.16,074723891X,9780747238911,eng,448,2646,68,7/16/1992,Headline -21838,The Brotherhood of the Rose (Mortalis #1),David Morrell,4.14,0747238901,9780747238904,eng,416,5422,163,7/16/1992,Headline Book Publishing -21841,The Protector (Cavanaugh #1),David Morrell,3.94,0446530689,9780446530682,eng,401,2222,80,5/19/2003,Warner Books (NY) -21845,Assumed Identity,David Morrell,3.78,0446600709,9780446600705,eng,512,1118,46,9/1/1994,Vision -21848,Double Image,David Morrell,3.55,2253172286,9782253172284,fre,510,3,1,4/10/2002,Le Livre de Poche -21862,La Cinquième profession,David Morrell,3.99,2253060704,9782253060703,fre,539,9,2,6/1/1992,Le Livre de Poche -21874,The Last Kingdom (The Saxon Stories #1),Bernard Cornwell/Jamie Glover,4.25,0061126578,9780061126574,eng,6,16,1,7/25/2006,HarperAudio -21895,The Last Kingdom (The Saxon Stories #1),Bernard Cornwell/Tom Sellwood,4.25,0792734750,9780792734758,en-GB,13,48,19,2/1/2005,Audiogo -21906,The Last Kingdom (The Saxon Stories #1),Bernard Cornwell/Jamie Glover,4.25,0060759259,9780060759254,eng,6,39,9,1/25/2005,HarperAudio -21928,Time To Hunt (Bob Lee Swagger #3),Stephen Hunter/Beau Bridges,4.26,055345580X,9780553455809,eng,0,11,1,5/18/1998,Random House Audio -21930,Black Light (Bob Lee Swagger #2),Stephen Hunter/Beau Bridges,4.13,055347748X,9780553477481,en-US,4,17,0,5/1/1996,Random House Audio Publishing Group -21931,The Day Before Midnight,Stephen Hunter/Philip Bosco,4.01,0553452118,9780553452112,eng,0,1,0,12/1/1989,Random House Audio -21932,Hot Springs (Earl Swagger #1),Stephen Hunter/Jay O. Sanders,4.13,0743500261,9780743500265,eng,0,3,0,6/1/2000,Simon & Schuster Audio -21933,Point Of Impact (Bob Lee Swagger #1),Stephen Hunter/Beau Bridges,4.27,0739344242,9780739344248,eng,0,15,1,1/9/2007,RH Audio -21934,Dirty White Boys,Stephen Hunter/Will Patten,4.05,1570421927,9781570421921,eng,0,1,1,5/1/2006,Hachette Audio -21947,Bevor es Nacht wird. Ein Leben in Havanna,Reinaldo Arenas,4.17,3423129867,9783423129862,ger,400,16,2,7/1/2002,dtv -21969,The Book of the Dead (Pendergast #7; Diogenes #3),Douglas Preston/Lincoln Child/Scott Brick,4.13,1594832285,9781594832284,eng,0,112,16,5/30/2006,Grand Central Publishing -21972,Relic (Pendergast #1),Douglas Preston/Lincoln Child,4.02,1423330412,9781423330417,eng,473,152,41,2/25/2007,Brilliance Audio -21974,The Wheel of Darkness (Pendergast #8),Douglas Preston/Lincoln Child,3.93,1594839417,9781594839412,en-US,0,41,9,8/28/2007,Grand Central Publishing -21980,Tyrannosaur Canyon,Douglas Preston/Scott Sowers,3.80,1593977794,9781593977795,eng,12,79,18,8/23/2005,MacMillan Audio -21991,Waterworks,E.L. Doctorow/Sam Waterston,3.44,0679433724,9780679433729,eng,0,16,2,5/31/1994,Random House Audio -21996,The Devil in the White City: Murder Magic and Madness at the Fair That Changed America,Erik Larson/Tony Goldwyn,3.99,0739303406,9780739303405,eng,447,421575,23793,2/11/2003,Random House Audio Publishing Group -22017,King Icahn,Mark Stevens/Carol Bloom Stevens,3.97,0525936130,9780525936138,eng,336,35,1,6/1/1993,Dutton Books -22026,The Sicilian,Mario Puzo,3.97,0345441702,9780345441706,eng,416,16557,502,5/1/2001,Ballantine Books -22027,The Dark Arena,Mario Puzo,3.35,0345441699,9780345441690,eng,288,1554,54,5/1/2001,Ballantine Books -22028,Omerta,Mario Puzo,3.71,0345432401,9780345432407,eng,369,12374,330,5/1/2001,Ballantine Books -22035,Fools Die,Mario Puzo,3.72,0451160193,9780451160195,eng,544,5197,215,10/1/1979,Signet -22036,The Godfather,Mario Puzo/Peter Bart/Robert Thompson,4.37,0451217403,9780451217400,eng,448,180,17,10/4/2005,New American Library -22037,The Fortunate Pilgrim,Mario Puzo,3.83,0345476727,9780345476722,eng,304,3232,222,9/28/2004,Ballantine Books -22060,On the Road to Perdition — Oasis Sanctuary and Detour — (Road to Perdition #2),Max Allan Collins/José Luis García-López/Steve Lieber/Josef Rubinstein/Rob Leigh/Bob Lappan,3.66,1401203574,9781401203573,eng,294,168,14,12/1/2004,DC Comics -22061,Oasis (On the Road to Perdition #1),Max Allan Collins/Steve Lieber/Josef Rubinstein/Rob Leigh/José Luis García-López/Bob Lappan,3.55,1401200680,9781401200688,eng,96,76,5,5/1/2003,DC Comics -22063,Double Dealer (CSI: Crime Scene Investigation #1),Max Allan Collins/Mike Flaherty,3.67,0743444043,9780743444040,en-US,320,1029,53,4/1/2003,Pocket Books -22065,The London Blitz Murders (Disaster Series #5),Max Allan Collins,3.72,0425198057,9780425198056,eng,272,209,35,5/4/2004,Berkley -22067,The Last Quarry (Quarry #7),Max Allan Collins,3.93,0843955937,9780843955934,eng,201,673,68,8/1/2006,Hard Crime Case -22068,Snake Eyes (CSI: Crime Scene Investigation #8),Max Allan Collins,3.77,0743496655,9780743496650,en-US,288,457,18,9/1/2006,Pocket Star -22070,A Killing in Comics (Jack & Maggie Starr #1),Max Allan Collins/Terry Beatty,3.65,042521365X,9780425213650,eng,272,151,29,5/1/2007,Berkley Trade -22072,The War of the Worlds Murder (Disaster Series #6),Max Allan Collins,3.71,0425204014,9780425204016,eng,256,196,38,7/5/2005,Berkley -22076,From a Buick 8,Stephen King,3.45,0743211375,9780743211376,eng,356,53587,1330,9/24/2002,Scribner -22077,The Michael Crichton Collection: Jurassic Park / The Lost World / The Andromeda Strain,Michael Crichton/Chris Noth/Anthony Heald,4.29,0375415807,9780375415807,eng,0,107,3,6/9/2000,Random House Audio -22082,Jurassic Park,Michael Crichton,4.02,0345418956,9780345418951,en-US,400,27,5,6/23/1997,Ballantine Books -22095,Binary,John Lange,3.53,0394479874,9780394479873,eng,213,94,10,12/31/1972,Alfred A. Knopf -22114,Un train d'or pour la Crimée,Michael Crichton,3.86,226607007X,9782266070072,fre,342,16,3,1/13/1999,Pocket -22120,The Voices of Morebath: Reformation and Rebellion in an English Village,Eamon Duffy,3.69,0300098251,9780300098259,eng,232,361,39,8/11/2003,Yale University Press -22121,Imperial Life in the Emerald City: Inside Iraq's Green Zone,Rajiv Chandrasekaran,4.02,1400044871,9781400044870,eng,320,4545,477,9/19/2006,Knopf -22123,The Coming Economic Collapse: How You Can Thrive When Oil Costs $200 a Barrel,Stephen Leeb/Glen C. Strathy,3.40,0446699004,9780446699006,en-US,211,34,3,2/1/2007,Business Plus -22126,Betrayal of Trust: The Collapse of Global Public Health,Laurie Garrett/Steven M. Wolinsky,4.12,0786884401,9780786884407,eng,768,1126,50,8/15/2001,Hachette Books -22127,Crash Proof: How to Profit from the Coming Economic Collapse,Peter D. Schiff/John Downes,3.78,0470043601,9780470043608,eng,272,1086,89,2/1/2007,John Wiley & Sons -22128,Patriots (The Coming Collapse),James Wesley, Rawles,3.63,156384155X,9781563841552,eng,342,38,4,1/15/1999,Huntington House Publishers -22133,The World the Text and the Critic,Edward W. Said/إدوارد سعيد,4.18,0674961870,9780674961876,eng,336,198,6,6/10/2006,Harvard University Press -22135,Culture and Imperialism,Edward W. Said,4.15,0679750541,9780679750543,eng,380,4053,123,5/31/1994,Vintage -22141,La economía Long Tail,Chris Anderson/Federico Villegas Silva Lezama,3.81,8493464260,9788493464264,spa,318,24,3,7/1/2007,Ediciones Urano -22146,Prioritizing Web Usability,Jakob Nielsen/Hoa Loranger,3.94,0321350316,9780321350312,en-US,406,599,16,4/20/2006,New Riders Publishing -22148,Homepage Usability: 50 Websites Deconstructed,Jakob Nielsen/Marie Tahir,3.74,073571102X,9780735711020,eng,336,341,12,11/15/2001,New Riders Publishing -22155,Let My People Go Surfing: The Education of a Reluctant Businessman,Yvon Chouinard,4.22,0143037838,9780143037835,eng,272,7838,681,9/5/2006,Penguin Books -22160,And Then There Were None,Agatha Christie/Hugh Fraser,4.26,1572704497,9781572704497,eng,0,214,49,10/15/2004,Audiogo -22163,The Wild Trees: A Story of Passion and Daring,Richard Preston,4.09,1400064899,9781400064892,eng,294,5588,942,8/23/2007,Random House (NY) -22166,The Boat of Dreams: A Christmas Story,Richard Preston/George Henry Jennings,3.29,074324592X,9780743245920,eng,111,115,22,10/28/2003,Touchstone Books -22175,Strange Pilgrims,Gabriel García Márquez,4.03,1400034698,9781400034697,eng,208,6952,422,11/14/2006,Vintage -22176,Doce cuentos peregrinos,Gabriel García Márquez,4.03,1400034949,9781400034949,spa,192,3205,195,11/14/2006,Vintage -22186,Would I Lie to You (Gossip Girl #10),Cecily von Ziegesar,3.59,0316011835,9780316011839,eng,192,7948,135,10/4/2006,Little Brown Young Readers -22188,Gossip Girl (Gossip Girl #1),Cecily von Ziegesar,3.52,0316910333,9780316910330,eng,224,54400,2271,4/1/2002,Little Brown and Company -22192,All I Want is Everything (Gossip Girl #3),Cecily von Ziegesar,3.55,0316912123,9780316912129,eng,240,16452,412,5/7/2003,Poppy -22193,You're the One That I Want (Gossip Girl #6),Cecily von Ziegesar,3.71,0316735167,9780316735162,eng,224,17875,204,10/6/2004,Little Brown Young Readers -22195,The Zero,Jess Walter,3.51,0060898658,9780060898656,eng,336,1976,297,8/29/2006,Harper -22196,Zero: The Biography of a Dangerous Idea,Charles Seife,3.96,0285635948,9780285635944,eng,248,131,19,10/12/2000,Souvenir Press -22197,Zero Debt: The Ultimate Guide to Financial Freedom,Lynnette Khalfani,3.74,1932450750,9781932450750,eng,204,49,10,8/1/2004,Advantage World Press -22198,The Hunt for Zero Point: Inside the Classified World of Antigravity Technology,Nick Cook,4.12,0767906284,9780767906289,en-US,320,323,37,12/18/2007,Broadway Books -22199,Year Zero,Jeff Long,3.60,1416534423,9781416534426,eng,416,2164,139,7/1/2006,Atria Books -22200,Count Zero (Sprawl #2),William Gibson,4.01,0441013678,9780441013678,en-US,308,37360,799,3/7/2006,Ace Books -22201,Triple Zero (Star Wars: Republic Commando #2),Karen Traviss,4.24,0345490096,9780345490094,eng,393,5130,163,2/28/2006,Del Rey Books -22202,Bravo Two Zero,Andy McNab,4.09,0552153575,9780552153577,eng,416,9151,269,11/1/2005,Corgi -22205,This Lullaby,Sarah Dessen,4.03,0142501557,9780142501559,eng,345,163599,4453,3/8/2004,Speak -22207,Lullabies for Little Criminals,Heather O'Neill,3.98,0060875070,9780060875077,eng,330,18419,1371,10/17/2006,Harper Perennial -22208,Hush! A Thai Lullaby,Minfong Ho/Holly Meade,4.03,0531071669,9780531071663,eng,32,1315,197,3/1/2000,Scholastic Inc. -22209,Lullaby Town (Elvis Cole #3),Robert Crais,4.14,0752817000,9780752817002,eng,296,8359,319,4/1/2008,Orion -22219,The Iliad (SparkNotes Literature Guides),SparkNotes/Homer,3.65,1586633716,9781586633714,eng,88,23,3,1/10/2002,SparkNotes -22221,The Iliad,Homer,3.86,0471377589,9780471377580,eng,150,3834,134,10/28/1999,John Wiley & Sons -22225,The Princess Bride (Long Tall Texans #15),Diana Palmer,3.89,0373192827,9780373192823,eng,192,634,32,1/23/1998,Silhouette Romance -22226,The Sultan's Bought Bride (Princess Brides #1),Jane Porter,3.74,037312418X,9780373124183,eng,192,224,20,8/25/2004,Harlequin Presents -22227,The Sheik & the Princess Bride (Desert Rogues #8),Susan Mallery,3.95,0373246471,9780373246472,eng,256,506,22,10/25/2004,Silhouette Special Edition -22229,The Prince Kidnaps a Bride (Lost Princesses #3),Christina Dodd,3.79,0060561181,9780060561185,eng,384,2103,84,11/28/2006,Avon -22230,Stargirl (Stargirl #1),Jerry Spinelli,3.76,0440416779,9780440416777,eng,186,1969,252,5/11/2004,Laurel Leaf -22233,Love Stargirl (Stargirl #2),Jerry Spinelli,3.82,0375813756,9780375813757,en-US,274,713,110,8/14/2007,Knopf Books for Young Readers -22235,Stargirl LitPlans on CD,Mary B. Collins,4.86,158337292X,9781583372920,eng,210,5,0,9/15/2005,Teacher's Pet Publications -22237,Son of the Mob (Son of the Mob #1),Gordon Korman,3.72,0786815930,9780786815937,eng,262,5977,620,9/1/2004,Little Brown Books for Young Readers -22238,Hollywood Hustle (Son of the Mob #2),Gordon Korman,3.64,0786809191,9780786809196,eng,268,1615,145,4/1/2006,Hyperion Paperbacks -22239,For the Sins of My Father: A Mafia Killer His Son and the Legacy of a Mob Life,Albert Demeo/Mary Jane Ross,4.05,0767906896,9780767906890,eng,288,966,108,9/9/2003,Broadway Books -22242,El ojo de fuego,Lewis Perdue,3.66,848974615X,9788489746152,spa,496,18,1,2/1/2007,Puzzle-Via Magna -22265,Neptune Noir: Unauthorized Investigations into Veronica Mars,Rob Thomas/Leah Wilson/Heather Havrilesky/Amy Berner/Lynne Edwards/John Ramos/Alafair Burke/Chris McCubbin/Lawrence Watt-Evans/Lani Diane Rich/Geoff Klock/Judy Fitzwater/Evelyn Vaughn/Joyce Millman/Amanda Ann Klein/Kristen Kidder/Jesse Hassenger/Gwen Ellery/Misty Hook/Samantha Bornemann,3.63,1933771135,9781933771137,eng,224,925,112,4/10/2007,Smart Pop -22268,The Soloist,Nicholas Christopher,3.30,1593761228,9781593761226,eng,320,56,9,11/27/2006,Counterpoint -22277,Kenang-Kenangan Seorang Geisha (Memoirs of a Geisha),Arthur Golden,4.11,9833346685,9789833346684,msa,784,28,6,7/1/2006,Marshall Cavendish Editions -22278,Memoirs of a Geisha,Arthur Golden,4.11,0701169699,9780701169695,eng,452,57,8,10/5/2000,Chatto & Windus -22283,Survivor,Chuck Palahniuk,3.92,009928264X,9780099282648,eng,289,49307,1637,8/3/2000,Vintage -22284,Diary,Chuck Palahniuk,3.61,1400032814,9781400032815,eng,262,65139,2120,9/14/2004,Anchor -22285,Rant,Chuck Palahniuk,3.81,0385517874,9780385517874,eng,320,55592,2516,5/1/2007,Doubleday Books -22286,Clown Girl,Monica Drake/Chuck Palahniuk,3.39,0976631156,9780976631156,eng,297,6015,327,1/4/2007,Hawthorne Books -22287,Choke,Chuck Palahniuk,3.70,0099422689,9780099422686,en-GB,293,1557,115,8/1/2002,Vintage -22288,Haunted,Chuck Palahniuk,3.59,1400032822,9781400032822,eng,419,78280,3745,4/11/2006,Anchor -22289,Fugitives and Refugees: A Walk in Portland Oregon,Chuck Palahniuk,3.51,1400047838,9781400047833,en-US,176,8460,415,7/8/2003,Crown Journeys/Crown Publishers/Crown Publishing Group/Random House -22292,Haunted,Chuck Palahniuk/Erik Darling/Arthur Morey/Scott Brick/Lorna Raver/Marc Cashman/Kimberly Farr/Renee Randman,3.59,0739302868,9780739302866,eng,14,57,23,5/10/2005,Random House Audio -22293,Nonfiction,Chuck Palahniuk,3.57,0224063022,9780224063029,eng,233,213,15,8/5/2004,Jonathan Cape -22296,Haunted,Chuck Palahniuk,3.59,0224064452,9780224064453,eng,416,173,15,5/1/2005,Jonathan Cape -22297,Survivant,Chuck Palahniuk/Freddy Michalski,3.92,2070756270,9782070756278,fre,365,14,0,2/4/2001,Gallimard -22298,Fantasmas,Chuck Palahniuk/Javier Calvo,3.59,9879397509,9789879397503,spa,442,116,13,8/28/2006,Mondadori -22302,Error humano,Chuck Palahniuk/Javier Calvo,3.57,8439711867,9788439711865,spa,253,11,1,5/31/2005,Mondadori -22304,Life After God,Douglas Coupland,3.79,0743231511,9780743231510,eng,291,9882,338,7/1/2002,Simon & Schuster -22306,City of Glass: Douglas Coupland's Vancouver,Douglas Coupland,3.83,1550548182,9781550548181,en-US,152,807,40,5/1/2003,Douglas & McIntyre -22307,Terry: Terry Fox and His Marathon of Hope,Douglas Coupland,4.34,1553651529,9781553651529,eng,176,256,22,8/4/2005,Douglas & McIntyre -22311,All Families Are Psychotic,Douglas Coupland,3.67,0007117531,9780007117536,eng,279,361,32,7/1/2002,Harper Perennial -22312,Shampoo Planet,Douglas Coupland,3.50,0743231538,9780743231534,eng,282,8283,202,3/1/2008,Scribner Book Company -22321,All Tomorrow's Parties (Bridge #3),William Gibson,3.91,0425190447,9780425190449,eng,339,13020,316,2/4/2003,Berkley Books -22322,Spook Country (Blue Ant #2),William Gibson,3.69,0399154302,9780399154300,eng,371,16342,1258,8/7/2007,Putnam Adult -22323,Burning Chrome (Sprawl #0),William Gibson/Bruce Sterling/Jonathan Davis/Dennis Holland/Kevin Pariseau/Victor Bevine/Jay Snyder/Brian Nishil/L.J. Ganser/Oliver Wyman/Eric Michael Summerer/Marc Vietor,4.06,0060539828,9780060539825,eng,224,30566,585,7/29/2003,Harper Voyager -22325,Idoru (Bridge #2),William Gibson,3.80,0425190455,9780425190456,eng,308,17632,388,1/7/2003,Berkley Trade -22326,Virtual Light (Bridge #1),William Gibson,3.85,0140157727,9780140157727,eng,304,18228,358,10/26/1996,Penguin Books Ltd -22331,Stable Strategies and Others,Eileen Gunn/Howard Waldrop/William Gibson,3.77,189239118X,9781892391186,eng,208,104,19,9/1/2004,Tachyon Publications -22332,Cyberpunk and Cyberculture: Science Fiction and the Work of William Gibson,Dani Cavallaro,3.77,0485006073,9780485006070,eng,258,62,4,9/13/2001,Bloomsbury Academic -22337,The Neil Gaiman Audio Collection,Neil Gaiman,4.24,0060732989,9780060732981,eng,1,1666,208,8/31/2004,HarperFestival -22338,The Day I Swapped My Dad for Two Goldfish,Neil Gaiman/Dave McKean,4.03,0060587032,9780060587031,en-US,64,284,31,9/26/2006,HarperCollins -22339,Death: The Time of Your Life (Death of the Endless #2),Neil Gaiman/Chris Bachalo/Mark Buckingham/Mark Pennington/Claire Danes,4.22,1563893339,9781563893339,eng,95,12377,198,12/1/1997,Vertigo -22344,Creatures of the Night,Neil Gaiman/Michael Zulli,3.83,1569719365,9781569719367,eng,46,1706,171,12/27/2004,Dark Horse Books -22345,New X-Men Volume 4: Riot at Xavier's,Grant Morrison/Frank Quitely,4.06,0785110674,9780785110675,eng,120,2113,54,11/15/2006,Marvel -22347,The Invisibles Volume 1: Say You Want a Revolution,Grant Morrison/Steve Yeowell/Jill Thompson/Dennis Cramer/Peter Milligan,3.95,1563892677,9781563892677,eng,224,8822,372,6/1/1996,DC Comics -22348,The Mystery Play,Grant Morrison/Jon J. Muth,3.44,1563891891,9781563891892,en-US,80,688,40,8/1/1995,Vertigo -22350,Kid Eternity,Grant Morrison/Duncan Fegredo,3.41,1401209335,9781401209339,eng,144,693,44,2/1/2006,Vertigo -22351,New X-Men Volume 1: E Is for Extinction,Grant Morrison/Frank Quitely,4.06,0785108114,9780785108115,eng,144,7602,135,9/27/2006,Marvel -22354,Seven Soldiers of Victory Volume 1,Grant Morrison/Ryan Sook/Mick Gray/Frazer Irving/J.H. Williams III/Simone Bianchi/Cameron Stewart,3.79,1401209254,9781401209254,eng,224,2046,98,1/4/2006,DC Comics -22355,Doom Patrol Vol. 1: Crawling from the Wreckage (Doom Patrol #1),Grant Morrison/Richard Case/Doug Braithwaite/Scott Hanna/Carlos Garzon/John Nyberg,4.08,1563890348,9781563890345,eng,192,5447,235,4/17/2000,Vertigo -22356,The Filth,Grant Morrison/Chris Weston/Gary Erskine,3.75,1401200133,9781401200138,en-US,320,3907,266,6/1/2004,Vertigo -22360,Doom Patrol Vol. 5: Magic Bus,Grant Morrison/Richard Case/Ken Steacy/Stan Woch/Philip Bond/Mark McKenna/Scott Hanna,4.27,1401212026,9781401212025,eng,203,1363,52,4/1/2007,Vertigo -22362,JLA Vol. 1: New World Order,Grant Morrison/Howard Porter/John Dell,3.98,156389369X,9781563893698,en-US,93,3714,96,4/1/1997,DC Comics -22363,Batman: Gothic,Grant Morrison/Klaus Janson,3.79,1563890283,9781563890284,eng,128,4294,123,7/1/1998,DC Comics -22364,JLA: Earth 2,Grant Morrison/Frank Quitely,3.97,1563896311,9781563896316,eng,96,5165,143,10/1/2000,DC Comics -22365,New X-Men: Omnibus,Grant Morrison/Marc Silvestri/Chris Bachalo/John Paul Leon/Frank Quitely/Leinil Francis Yu/Igor Kordey/Ethan Van Sciver/Keron Grant/Tom Derenick/Phil Jimenez,4.23,0785123261,9780785123262,eng,1096,2952,112,12/6/2006,Marvel -22366,Superfolks,Robert Mayer/Grant Morrison,3.48,0312339925,9780312339920,eng,240,429,57,3/9/2005,St. Martin's Griffin -22373,Kill Your Boyfriend,Grant Morrison/Philip Bond/D'Israeli/Daniel Vozzo,3.57,156389453X,9781563894534,en-US,55,1269,66,12/31/1998,DC Comics Vertigo -22374,Batman: Arkham Asylum - A Serious House on Serious Earth,Grant Morrison/Dave McKean,4.10,1401204252,9781401204259,eng,216,51984,1469,1/11/2005,DC Comics -22380,JLA: Tierra 2,Grant Morrison/Frank Quitely/Rafael De la Iglesia,3.97,987224975X,9789872249755,spa,96,7,2,11/25/2005,Sticker Design (DC Comics) -22390,Doom Patrol Vol. 4: Musclebound,Grant Morrison/Richard Case/Mike Dringenberg/Mark McKenna/Jamie Hewlett/Steve Yeowell/Rian Hughes,4.15,1401209998,9781401209995,eng,256,2322,77,8/30/2006,Vertigo -22392,New X-Men Volume 7: Here Comes Tomorrow,Grant Morrison/Marc Silvestri,3.75,0785113452,9780785113454,eng,112,1797,55,11/15/2006,Marvel -22394,The Invisibles Vol. 7: The Invisible Kingdom,Grant Morrison/Philip Bond/Warren Pleece/Sean Phillips/Jay Stephens/Frank Quitely/Steve Yeowell,4.20,1401200192,9781401200190,en-US,288,3346,83,12/1/2002,DC Comics Vertigo -22398,The Invisibles Vol. 3: Entropy in the U.K.,Grant Morrison/Phil Jimenez/John Stokes/Tommy Lee Edwards/Paul Johnson/Steve Yeowell/Dick Giordano/Mark Buckingham/Mark Pennington,4.21,1563897288,9781563897283,en-US,232,4084,86,8/1/2001,Vertigo -22399,Invisible,Pete Hautman,3.84,0689869037,9780689869037,eng,160,2311,347,11/28/2006,Simon Pulse -22401,The Invisibles Vol. 4: Bloody Hell in America,Grant Morrison/Phil Jimenez/John Stokes,4.17,1563894440,9781563894442,en-US,104,3882,74,2/1/1998,Vertigo -22406,The Invisibles Vol. 6: Kissing Mister Quimper,Grant Morrison/Chris Weston/Ivan Reis,4.24,1563896001,9781563896002,en-US,224,3852,63,2/1/2000,DC Comics Vertigo -22408,Invisible Residents: The Reality of Underwater UFOs,Ivan T. Sanderson/David Hatcher Childress,3.73,1931882207,9781931882200,en-US,100,62,7,9/15/2005,Adventures Unlimited Press -22409,The Invisibles Vol. 5: Counting to None,Grant Morrison/Phil Jimenez/John Stokes,4.19,1563894890,9781563894893,en-US,240,4270,67,3/1/1999,Vertigo -22414,The Invisible Heart: An Economic Romance,Russell Roberts/Russ Roberts,3.74,0262681358,9780262681353,eng,282,609,90,2/22/2002,MIT Press -22417,Transmetropolitan Vol. 2: Lust for Life,Warren Ellis/Darick Robertson,4.34,1563894815,9781563894817,eng,208,15496,281,2/1/1999,Vertigo -22418,Transmetropolitan Vol. 3: Year of the Bastard,Warren Ellis/Darick Robertson/Rodney Ramos,4.41,1563895684,9781563895685,eng,144,13360,193,9/1/1999,Vertigo -22420,Transmetropolitan Vol. 5: Lonely City,Warren Ellis/Darick Robertson/Rodney Ramos/Patrick Stewart,4.41,1563897229,9781563897221,eng,144,11372,146,7/1/2001,Vertigo -22421,Transmetropolitan Vol. 4: The New Scum,Warren Ellis/Darick Robertson/Rodney Ramos/Keith Akin,4.39,1563896273,9781563896279,eng,133,13331,146,9/1/2000,Vertigo -22423,Transmetropolitan Vol. 8: Dirge,Warren Ellis/Darick Robertson/Rodney Ramos,4.47,1563899531,9781563899539,eng,140,9963,90,4/1/2003,Vertigo -22424,Transmetropolitan Vol. 10: One More Time,Warren Ellis/Darick Robertson/Rodney Ramos,4.51,1401202179,9781401202170,eng,144,10308,184,6/1/2004,Vertigo -22425,Transmetropolitan Vol. 9: The Cure,Warren Ellis/Darick Robertson/Rodney Ramos,4.44,1563899884,9781563899881,eng,144,10331,90,12/1/2003,Vertigo -22426,Transmetropolitan Vol. 7: Spider's Thrash,Warren Ellis/Darick Robertson/Rodney Ramos/Darren Aronofsky,4.32,1563898942,9781563898945,eng,144,12633,88,11/1/2002,Vertigo -22431,Created in Darkness by Troubled Americans: The Best of McSweeney's Humor Category,Dave Eggers/Kevin Shay/Lee Epstein/Suzanne Kleid/McSweeney's Publishing,3.75,1400076854,9781400076857,eng,249,1791,146,6/14/2005,Vintage -22434,The Fabric of the Cosmos: Space Time and the Texture of Reality,Brian Greene,4.11,0141011114,9780141011110,en-US,592,340,22,2/24/2005,Penguin -22436,The Meaning of Relativity (Science Library),Albert Einstein/Brian Greene,4.32,0691120277,9780691120270,en-US,200,26,2,11/21/2004,Princeton University Press -22438,The Fabric of the Cosmos: Space Time and the Texture of Reality,Brian Greene,4.11,0736697500,9780736697507,eng,16,19,5,2/24/2004,Books on Tape -22443,Underground! The Disinformation Guide to Ancient Civilizations Astonishing Archaeology and Hidden History,Preston Peet,3.84,1932857192,9781932857191,eng,343,157,5,10/1/2005,Disinformation Company -22445,Under the Influence: The Disinformation Guide to Drugs,Preston Peet,3.64,1932857001,9781932857009,eng,312,58,3,1/1/2004,The Disinformation Company (NYC) -22448,You are Being Lied To: The Disinformation Guide to Media Distortion Historical Whitewashes and Cultural Myths,Russ Kick,3.87,0966410076,9780966410075,eng,399,1010,34,4/1/2001,Disinformation Company -22459,The Origin of Species,Charles Darwin/Philip Appleman,3.98,0393978672,9780393978674,en-US,134,33,3,3/15/2002,W.W. Norton & Company -22460,Red Herrings and White Elephants: The Origins of the Phrases We Use Every Day,Albert Jack/Ann Page,3.73,0060843373,9780060843373,en-US,272,71,5,11/1/2005,Harper -22461,The Origin of Species,Charles Darwin/Julian Huxley,3.98,0451529065,9780451529060,eng,576,805,75,9/2/2003,Signet Classics -22463,The Origin of Species,Charles Darwin,3.98,0785819118,9780785819110,eng,703,78431,1355,5/1/2004,Castle Books -22470,The Origin of Satan: How Christians Demonized Jews Pagans and Heretics,Elaine Pagels,3.90,0679731180,9780679731184,eng,240,5729,209,4/30/1996,Vintage -22472,Discourse on the Origin of Inequality,Jean-Jacques Rousseau,3.82,0486434141,9780486434148,eng,73,9975,210,6/4/2004,Dover Publications -22473,On the Origins of War and the Preservation of Peace,Donald Kagan,4.01,0385423756,9780385423755,eng,573,520,30,1/1/1996,Anchor -22474,The Origins of Totalitarianism,Hannah Arendt,4.28,0805242252,9780805242256,eng,674,77,11,3/1/2004,Schocken Books -22478,The Origin of Consciousness in the Breakdown of the Bicameral Mind,Julian Jaynes,4.25,0618057072,9780618057078,eng,491,3473,426,8/15/2000,Mariner Books -22482,Final Fantasy Origins - Official Strategy Guide,Casey Loe/Laura Parkinson,3.96,0744002532,9780744002539,eng,256,25,1,4/9/2003,Bradygames -22483,Social Origins of Dictatorship and Democracy: Lord and Peasant in the Making of the Modern World,Barrington Moore Jr./James C. Scott/Edward Friedman,3.98,0807050733,9780807050736,eng,592,823,37,9/1/1993,Beacon Press -22485,Smithsonian Intimate Guide to Human Origins,Carl Zimmer,4.02,0061196673,9780061196676,eng,176,173,17,2/6/2007,Harper Perennial -22486,Economic Origins of Dictatorship and Democracy,Daron Acemoğlu/James A. Robinson,3.97,0521855268,9780521855266,eng,416,158,10,10/1/2005,Cambridge University Press -22489,African Origins of the Major "Western Religions",Yosef A.A. Ben-Jochannan,4.54,0933121296,9780933121294,eng,363,129,6,12/1/1991,Black Classic Press -22493,The Origins of the Civil Rights Movements: Black Communities Organizing for Change,Aldon D. Morris,4.05,0029221307,9780029221303,en-US,368,151,13,9/15/1986,Free Press -22495,The Origin of the Bible,F.F. Bruce/Philip W. Comfort/Carl F.H. Henry/J.I. Packer,3.86,0842383670,9780842383677,en-US,352,79,11,12/17/2003,Tyndale House Publishers -22499,Country of Origin,Don Lee,3.47,039332706X,9780393327069,eng,320,317,41,4/17/2005,W. W. Norton Company -22508,The Making of a Philosopher: My Journey Through Twentieth-Century Philosophy,Colin McGinn,3.65,0060957603,9780060957605,eng,256,226,31,7/8/2003,Harper Perennial -22514,The Beatles and Philosophy: Nothing You Can Think that Can't Be Thunk,Michael Baur/Steven Baur/James S. Spiegel,3.63,0812696069,9780812696066,eng,288,157,14,10/25/2006,Open Court -22515,The Gospel According to the Beatles,Steve Turner,3.77,0664229832,9780664229832,eng,254,126,23,8/3/2006,Westminster John Knox Press -22538,JPod,Douglas Coupland,3.69,1596911042,9781596911048,en-US,448,617,72,5/16/2006,Bloomsbury -22539,Hairstyles of the Damned,Joe Meno,3.72,188845170X,9781888451702,eng,270,5298,468,9/1/2004,Akashic Books/Punk Planet Books -22541,Just Visiting This Planet: Merlin Answers More Questions about Everything Under the Sun Moon and Stars,Neil deGrasse Tyson/Stephen Tyson,4.17,0385488378,9780385488372,eng,352,86,4,7/13/1998,Main Street Books -22542,Merlin's Tour of the Universe,Neil deGrasse Tyson,4.02,0385488351,9780385488358,eng,318,305,27,7/14/1997,Main Street Books -22543,Death by Black Hole: And Other Cosmic Quandaries,Neil deGrasse Tyson,4.10,0393062244,9780393062243,eng,384,9837,552,1/17/2007,W. W. Norton Company -22547,Tales from the Dark Tower,Joseph Vargo/Christine Filipak/Eric Muss-Barnes/Jalone J. Haessig/Joseph Iorillo/Robert Michaels/Russell Novotny/James Pipik,4.23,0967575605,9780967575605,en-US,282,54,5,10/1/2003,Monolith Graphics -22549,The Dark Tower (The Dark Tower #7),Stephen King,4.28,0340827211,9780340827215,eng,686,362,40,9/21/2004,Hodder & Stoughton -22550,The Gunslinger,Stephen King,3.96,0670032549,9780670032549,eng,231,2309,230,6/23/2003,Viking -22553,Gunslinger Girl Vol. 1,Yu Aida/Hiroshi Aida,3.87,1413900208,9781413900200,eng,175,911,42,12/29/2003,ADV Manga -22554,Gunslinger,Ed Dorn,4.11,0822309327,9780822309321,eng,224,247,24,8/22/1989,Duke University Press Books -22557,Wasteland of Flint,Thomas Harlan,3.79,0765341131,9780765341136,eng,512,291,38,2/1/2004,Tor Books -22559,Cities in Dust (Wasteland #1),Antony Johnston/Christopher Mitten,3.55,1932664599,9781932664591,eng,160,576,73,4/20/2010,Oni Press -22562,Slim to None: A Journey Through the Wasteland of Anorexia Treatment,Jennifer Hendricks/Gordon Hendricks,3.63,0071433716,9780071433716,eng,384,580,21,2/4/2004,McGraw-Hill Education -22575,Sit Walk Stand,Watchman Nee,4.42,0842358935,9780842358934,eng,80,2663,141,11/4/1977,Tyndale House Publishers -22576,Prayers for the Assassin (Assassin Trilogy #1),Robert Ferrigno,3.76,141650768X,9781416507680,eng,458,791,95,10/31/2006,Pocket Star Books -22580,Voices From the Street,Philip K. Dick,3.29,0765316927,9780765316929,en-US,301,698,104,1/23/2007,Tor Books -22583,The Minority Report: 18 Classic Stories,Philip K. Dick/James Tiptree Jr.,4.19,0806523794,9780806523798,eng,380,456,40,5/1/2002,Citadel -22584,Flow My Tears the Policeman Said,Philip K. Dick,3.91,1857983416,9781857983418,eng,204,26767,1075,11/8/2001,Gollancz -22586,The Crack in Space,Philip K. Dick,3.46,1400030064,9781400030064,eng,188,1878,142,3/8/2005,Vintage -22590,Ubik,Philip K. Dick/David Alabort/Manuel Espín,4.09,8498000831,9788498000832,spa,288,63422,2486,5/1/2006,La factoría de ideas -22591,The Best of Philip K. Dick,Philip K. Dick/John Brunner,4.22,0345253590,9780345253590,eng,450,622,33,2/12/1978,Del Rey Books (NY) -22595,Vulcan's Hammer,Philip K. Dick,3.52,1400030129,9781400030125,eng,165,1561,97,8/10/2004,Vintage -22602,Carly's Sound,Ali Vali,4.21,1933110457,9781933110455,eng,212,454,11,6/1/2006,Bold Strokes Books -22616,The System of Objects,Jean Baudrillard/James Benedict,4.01,1844670538,9781844670536,eng,224,1002,27,1/17/2006,Verso -22618,The Intelligence of Evil or the Lucidity Pact,Jean Baudrillard/Chris Turner,3.89,1845203348,9781845203344,eng,215,247,9,12/1/2005,Bloomsbury Academic -22620,Introducing Baudrillard,Chris Horrocks/Zoran Jevtić,3.32,1840460873,9781840460872,eng,176,165,25,8/13/1997,Icon Books -22623,Existentialism and Human Emotions,Jean-Paul Sartre,3.84,0806509023,9780806509020,eng,96,4190,147,12/1/2000,Citadel -22624,Nausea,Jean-Paul Sartre/James Wood/Robert Baldick,3.92,014118549X,9780141185491,eng,253,1590,140,11/30/2000,Penguin Books -22626,From Socrates to Sartre: The Philosophic Quest,T.Z. Lavine,3.94,0553251619,9780553251616,eng,426,932,70,1/1/1985,Bantam -22632,The Trial and Death of Socrates (Euthyphro Apology Crito Phaedo (death scene only)),Plato/G.M.A. Grube/John M. Cooper,4.08,0872205541,9780872205543,eng,58,26252,344,6/1/2001,Hackett Publishing Company -22633,The Trial of Queen Caroline: The Scandalous Affair that Nearly Ended a Monarchy,Jane Robins,3.39,0743255909,9780743255905,eng,384,52,8,8/7/2006,Free Press -22649,Bookends,Jane Green,3.72,0767907817,9780767907811,eng,368,37153,822,5/27/2003,Broadway Books -22656,Jemima J.: For those who love Faking Friends and My Sweet Revenge by Jane Fallon,Jane Green,3.65,0140276904,9780140276909,eng,450,683,66,8/6/1998,Penguin Books -22669,Open House,Elizabeth Berg,3.70,0613997638,9780613997638,eng,0,0,0,5/1/2001,Turtleback Books -22677,Feeling Better Getting Better Staying Better: Profound Self-Help Therapy for Your Emotions,Albert Ellis,3.76,1886230358,9781886230354,eng,272,51,6,6/1/2001,Impact -22680,American Sphinx: The Character of Thomas Jefferson,Joseph J. Ellis,3.92,0679764410,9780679764410,eng,440,20178,590,4/7/1998,Vintage -22681,Line Of Vision,David Ellis,3.81,0425183769,9780425183762,en-US,448,609,82,2/5/2002,G.P. Putnam's Sons -22686,The Other Woman,Jane Green,3.70,0452287146,9780452287143,eng,389,29112,651,6/6/2006,Berkley -22687,No Other Woman (No Other #2),Shannon Drake,3.78,0380781360,9780380781362,eng,391,299,7,6/1/1996,Avon Books -22690,The Other Woman (Dundee Idaho #7),Brenda Novak,4.11,0373713444,9780373713448,eng,299,560,33,5/9/2006,Harlequin Special Releases -22691,The Other Woman,Ann O'Leary,3.64,1562802348,9781562802349,eng,213,77,6,4/28/1999,Naiad Press -22697,Sins of a Shaker Summer (Sister Rose Callahan #3),Deborah Woodworth,3.52,0380792044,9780380792047,eng,272,58,6,3/9/1999,Avon -22715,InuYasha Ani-Manga Vol. 1 (Inuyasha Ani-Manga #1),Rumiko Takahashi,4.36,1591162025,9781591162025,eng,206,5862,55,1/14/2004,VIZ Media LLC -22718,Pusteblume,Marian Keyes,3.81,3453189345,9783453189348,ger,560,59,0,5/1/2001,Heyne -22724,¿Quién te lo ha contado?,Marian Keyes,3.79,8497936736,9788497936736,spa,648,169,9,12/30/2005,DeBolsillo -22725,Une vie de rêve,Marian Keyes,3.69,271443813X,9782714438133,fre,593,11,4,5/4/2005,Pocket -22726,Por los pelos,Marian Keyes,3.81,1400002214,9781400002214,spa,592,34,5,9/17/2002,Plaza y Janes -22727,Under the Duvet,Marian Keyes,3.52,0141007478,9780141007472,eng,304,401,43,7/28/2009,Penguin UK -22733,Rachel se va de viaje (La familia Walsh #2),Marian Keyes,3.95,8497599179,9788497599177,spa,595,204,21,3/30/2003,DeBolsillo -22736,Yeats ist tot!,Joseph O'Connor/Diethard Herles/Pauline McLynn/Gerard Stembridge/Frank McCourt/Conor McPherson/Gene Kerrigan/Gina Moxley/Marian Keyes/Anthony Cronin/Owen O'Neill/Hugo Hamilton/Charlie O'Neill/Tom Humphries/Donal O'Kelly,3.40,3548603254,9783548603254,ger,332,11,2,4/1/2003,List Taschenbuch -22739,Le Club de la dernière chance,Marian Keyes,3.81,2266130609,9782266130608,fre,608,6,0,6/5/2003,Pocket -22741,Les vacances de Rachel (Walsh Family #2),Marian Keyes/Roxane Azimi,3.95,2266108271,9782266108270,fre,563,7,1,5/2/2002,Pocket -22743,Rachel se va de viaje (La familia Walsh #2),Marian Keyes,3.95,840132954X,9788401329548,spa,594,7,0,1/31/2003,DeBolsillo -22745,Auszeit für Engel Walsh Family #3),Marian Keyes,3.75,3453868579,9783453868571,ger,477,16,1,2/1/2003,Heyne -22763,Open House,Elizabeth Berg,3.70,0099461269,9780099461265,en-GB,314,61,6,9/29/2003,Arrow Books -22774,Slightly Settled (Slightly #2),Wendy Markham,3.68,0373250479,9780373250479,en-US,312,4756,84,1/23/2004,Red Dress Ink -22784,犬夜叉 8,Rumiko Takahashi,4.26,4091252087,9784091252081,jpn,192,16,0,11/18/1998,小学館 -22786,犬夜叉 7,Rumiko Takahashi,4.27,4091252079,9784091252074,jpn,192,15,0,8/8/1998,小学館 -22789,犬夜叉 24,Rumiko Takahashi,4.26,4091256449,9784091256447,jpn,192,11,1,12/18/2001,小学館 -22799,犬夜叉 28,Rumiko Takahashi,4.29,4091256481,9784091256485,jpn,192,12,1,12/5/2002,小学館 -22801,犬夜叉 4,Rumiko Takahashi,4.29,4091252044,9784091252043,jpn,192,15,0,12/10/1997,小学館 -22802,犬夜叉 22,Rumiko Takahashi,4.25,4091256422,9784091256423,jpn,192,13,1,8/9/2001,小学館 -22803,犬夜叉 26,Rumiko Takahashi,4.28,4091256465,9784091256461,jpn,192,11,1,6/18/2002,小学館 -22804,犬夜叉 12,Rumiko Takahashi,4.25,4091255825,9784091255822,jpn,192,13,0,9/18/1999,小学館 -22805,犬夜叉 17,Rumiko Takahashi,4.25,4091255876,9784091255877,jpn,192,14,1,8/9/2000,小学館 -22807,犬夜叉 14,Rumiko Takahashi,4.30,4091255841,9784091255846,jpn,192,13,1,2/18/2000,小学館 -22816,犬夜叉 10,Rumiko Takahashi,4.28,4091252109,9784091252104,jpn,192,15,0,4/17/1999,小学館 -22817,犬夜叉 1,Rumiko Takahashi,4.27,409125201X,9784091252012,jpn,192,41,3,4/18/1997,小学館 -22820,犬夜叉 27,Rumiko Takahashi,4.28,4091256473,9784091256478,jpn,192,12,1,9/18/2002,小学館 -22821,The Return of Lum Volume 3: Sweet Revenge (Urusei Yatsura #4),Rumiko Takahashi,3.97,1569311935,9781569311936,en-US,216,32,1,3/8/1997,Viz Media -22822,The Return of Lum Volume 5: Feudal Furor (Urusei Yatsura #6),Rumiko Takahashi,4.04,1569312109,9781569312100,en-US,200,27,0,12/6/1997,Viz Media -22826,Lamu: Urusei Yatsura 3,Rumiko Takahashi,4.08,8484497283,9788484497288,spa,416,38,0,8/30/2005,Glénat -22831,The Return of Lum Volume 1: Urusei Yatsura (Urusei Yatsura #2),Rumiko Takahashi,4.11,1569310351,9781569310359,eng,208,72,4,6/5/1995,Viz Media -22832,Lum: Urusei Yatsura. Perfect Collection (Urusei Yatsura #1),Rumiko Takahashi,3.97,156931019X,9781569310199,en-US,400,131,7,6/5/1997,Viz Media -22834,らんま½ 12,Rumiko Takahashi,4.06,409126512X,9784091265128,jpn,176,0,0,9/18/2002,小学館 [Shōgakukan] -22835,Ranma 1/2 Vol. 12 (Ranma ½ (US 2nd) #12),Rumiko Takahashi,4.11,1591162866,9781591162865,eng,200,1102,19,8/17/2004,VIZ Media LLC -22861,Your and My Secret Vol. 1,Ai Morinaga,3.54,1413901433,9781413901436,eng,174,406,31,7/6/2004,ADV Manga -22867,A Man Rides Through (Mordant's Need #2),Stephen R. Donaldson,4.02,0345459849,9780345459848,eng,672,11246,148,6/3/2003,Del Rey -22868,The One Tree (The Second Chronicles of Thomas Covenant #2),Stephen R. Donaldson,3.98,0006163831,9780006163831,en-GB,479,174,3,11/18/1996,Fontana -22871,The Gap Into Madness: Chaos and Order (Gap #4),Stephen R. Donaldson,4.15,0553071793,9780553071795,eng,617,4544,69,6/1/1994,Spectra -22874,The Gap Into Vision: Forbidden Knowledge (Gap #2),Stephen R. Donaldson,3.99,0553297600,9780553297607,en-US,480,5020,101,7/21/2010,Bantam -22875,The One Tree (The Second Chronicles of Thomas Covenant #2),Stephen R. Donaldson,3.98,0345418476,9780345418470,eng,496,15389,109,6/23/1997,Del Rey -22877,The Gap Into Power: A Dark and Hungry God Arises (Gap #3),Stephen R. Donaldson,4.08,0553562606,9780553562606,eng,518,5460,89,10/21/2009,Spectra -22883,Pretty Face Vol. 1,Yasuhiro Kano,3.83,1421513684,9781421513683,eng,192,494,40,8/7/2007,VIZ Media LLC -22885,Not Just a Pretty Face: Dolls and Human Figurines in Alaska Native Cultures,Molly C. Lee/Angela J. Linn/Chase Hensel/James H. Barker,3.50,1889963852,9781889963853,eng,80,2,0,3/1/2006,University of Alaska Press -22888,Just Another Pretty Face (Hollywood Dynasty #2),Candace Schuler,3.89,0373255594,9780373255597,eng,215,17,1,7/23/1993,Harlequin Temptation -22889,Skylight Confessions,Alice Hoffman,3.64,0316058785,9780316058780,eng,264,6754,744,1/1/2007,Little Brown and Company -22892,The Foretelling,Alice Hoffman,3.84,0316154091,9780316154093,eng,182,2646,247,9/1/2006,Little Brown Books for Young Readers -22893,Incantation,Alice Hoffman,3.88,0316010197,9780316010191,eng,166,5653,800,10/1/2006,Little Brown Books for Young Readers -22896,Practical Magic (Practical Magic #1),Alice Hoffman,3.78,0425190374,9780425190371,eng,286,54261,4232,8/5/2003,Penguin -22898,The Probable Future,Alice Hoffman,3.83,0345455916,9780345455918,eng,352,11910,965,6/1/2004,Ballantine Books -22904,The Complete Stories,Franz Kafka/Nahum N. Glatzer/John Updike/Willa Muir/Edwin Muir/Tania Stern/James Stern/Ernst Kaiser/Eithne Wilkins,4.35,0805210555,9780805210552,eng,486,20028,381,11/14/1995,Schocken -22911,Amerika,Franz Kafka/Willa Muir/Edwin Muir/Klaus Mann/E.L. Doctorow,3.75,0805210644,9780805210644,eng,336,17981,522,7/2/1996,Schocken -22912,Collected Stories,Franz Kafka/Willa Muir/Edwin Muir/Gabriel Josipovici,4.35,0679423036,9780679423034,eng,566,445,30,10/26/1993,Knopf -22913,Kafka: Toward a Minor Literature,Gilles Deleuze/Félix Guattari/Franz Kafka,4.17,0816615152,9780816615155,eng,136,1287,45,10/31/1986,Univ Of Minnesota Press -22914,The Annotated Brothers Grimm,Jacob Grimm/Wilhelm Grimm/Maria Tatar/A.S. Byatt/George Cruikshank/Paul Hey/Walter Crane/Warwick Goble/Kay Nielsen/Arthur Rackham,4.46,0393058484,9780393058482,eng,462,3132,103,9/17/2004,W. W. Norton Company -22915,The Complete Brothers Grimm Fairy Tales,Jacob Grimm/Wilhelm Grimm,4.30,0517229250,9780517229255,en-US,680,4420,165,10/3/2006,Gramercy Books -22916,The Complete Fairy Tales of The Brothers Grimm,Jacob Grimm/Wilhelm Grimm/Jack D. Zipes/Johnny Gruelle,4.30,0553382160,9780553382167,eng,762,877,55,1/1/2003,Bantam -22931,Beyond Innocence (Beyond Duet #1),Emma Holly,3.62,0515130990,9780515130997,en-US,295,1421,68,7/1/2001,Jove -22932,Emma Vol. 01,Kaoru Mori/森 薫,3.83,1401211321,9781401211325,eng,183,3515,339,9/20/2006,CMX -22944,Drum Into Silence (Drums of Chaos #3),Jo Clayton/Kevin Andrew Murphy,3.41,0812551249,9780812551242,en-GB,399,1,0,2/1/2004,Tor Fantasy -22945,Dance Down the Stars (Duel of Sorcery: Dancer #3),Jo Clayton,3.74,0886776171,9780886776176,eng,368,35,0,9/1/1994,DAW -22947,Drum Calls (Drums of Chaos #2),Jo Clayton,3.72,0812551230,9780812551235,eng,341,29,1,7/1/1998,Tor Books -22948,Fire in the Sky (Diadem: Shadowsong #1),Jo Clayton,3.87,0886776503,9780886776503,eng,352,63,2,5/1/1995,DAW -22950,Quester's Endgame,Jo Clayton,3.98,0886771382,9780886771386,eng,372,159,6,7/1/1986,DAW -22951,Shadowkill (Diadem: Shadith's Quest #3),Jo Clayton/Jo Clayton,3.99,0886774675,9780886774677,eng,400,68,1,4/1/1991,DAW -22966,Lidia's Family Table,Lidia Matticchio Bastianich/David Nussbaum/Christopher Hirsheimer,4.22,1400040353,9781400040353,eng,448,532,23,11/23/2004,Knopf Publishing Group -22967,Lidia's Italy,Lidia Matticchio Bastianich/Tanya Bastianich Manuali/David Nussbaum/Christopher Hirsheimer,4.21,1400040361,9781400040360,en-US,384,637,24,4/10/2007,Knopf Publishing Group -22969,La Cucina Di Lidia: Recipes and Memories from Italy's Adriatic Coast,Lidia Matticchio Bastianich/Jay Jacobs,4.14,0767914228,9780767914222,en-GB,288,48,3,4/8/2003,Clarkson Potter -22991,Blood Wedding and Yerma,Federico García Lorca/W.S. Merwin/Langston Hughes,3.84,1559360801,9781559360807,en-US,160,885,32,5/1/1994,Theatre Communications Group -22994,Selected Verse,Federico García Lorca/Christopher Maurer,4.43,0374528551,9780374528553,eng,432,189,14,6/9/2004,Farrar Straus and Giroux -23000,Operation Wandering Soul,Richard Powers,3.61,006097611X,9780060976118,eng,352,379,33,4/2/2002,Harper Perennial -23001,Galatea 2.2,Richard Powers,3.72,0312423136,9780312423131,eng,329,2155,191,1/1/2004,Picador -23002,Three Farmers on Their Way to a Dance,Richard Powers,3.82,0060975091,9780060975098,eng,352,742,49,12/1/1994,Harper Perennial -23003,Christian Theology: An Introduction,Alister E. McGrath,4.04,1405153601,9781405153607,eng,534,1178,48,11/13/2006,Blackwell Publishers -23007,The Time of Our Singing,Richard Powers,4.25,0099453835,9780099453833,eng,631,1836,245,2/5/2004,Vintage -23009,The Christian Theology Reader,Alister E. McGrath,4.17,140515358X,9781405153584,eng,744,244,11,9/1/2006,Blackwell Publishers -23010,Prisoner's Dilemma,Richard Powers,3.87,0060977086,9780060977085,en-US,352,543,45,4/2/2002,Harper Perennial -23011,In the Beginning: The Story of the King James Bible and How it Changed a Nation a Language and a Culture,Alister E. McGrath,3.97,0385722168,9780385722162,eng,354,515,76,2/19/2002,Anchor -23013,Gain,Richard Powers,3.77,0099284464,9780099284468,eng,355,710,54,11/1/2001,Vintage -23017,Presidential Power and the Modern Presidents: The Politics of Leadership from Roosevelt to Reagan,Richard E. Neustadt,3.77,0029227968,9780029227961,eng,384,293,17,3/1/1991,Free Press -23022,The Grotesque,Patrick McGrath,3.62,0679776214,9780679776215,eng,178,815,58,1/28/1997,Vintage -23023,Port Mungo,Patrick McGrath,3.32,1400075483,9781400075485,eng,242,412,36,6/14/2005,Vintage -23032,Entre Amis: An Interactive Approach,Michael D. Oates/Larbi Oukada,3.39,0618506918,9780618506910,eng,528,23,4,3/17/2005,Heinle -23036,Experience,Martin Amis,3.96,0099285827,9780099285823,eng,401,71,5,4/5/2001,Vintage -23037,Heavy Water and Other Stories,Martin Amis,3.39,037570115X,9780375701153,eng,208,1071,49,3/14/2000,Vintage -23042,Visiting Mrs Nabokov and Other Excursions,Martin Amis,3.70,0099461870,9780099461876,eng,288,545,16,4/7/2005,Vintage -23045,Intimacy And Other Stories,Hanif Kureishi,3.58,057121200X,9780571212002,eng,205,46,3,7/9/2001,Faber and Faber -23046,The Buddha of Suburbia,Hanif Kureishi,3.73,0571200435,9780571200436,en-US,284,384,25,4/5/2000,Faber and Faber -23056,Image-Music-Text,Roland Barthes/Stephen Heath,4.10,0006861350,9780006861355,eng,220,3209,41,9/13/1993,Fontana Press -23057,Camera Lucida: Reflections on Photography,Roland Barthes/Richard Howard,3.97,0795000375,9780795000379,eng,119,75,5,6/1/2001,Hill and Wang -23060,The Fashion System,Roland Barthes/Matthew Ward/Richard Howard,3.54,0520071778,9780520071773,eng,351,228,10,7/25/1990,University of California Press -23061,The Responsibility of Forms: Critical Essays on Music Art and Representation,Roland Barthes/Richard Howard,3.95,0520072383,9780520072381,eng,320,93,3,2/7/1991,University of California Press -23063,The Pleasure of the Text,Roland Barthes/Richard Miller,4.02,0224011871,9780224011877,eng,80,19,1,2/12/1976,Jonathan Cape -23065,How to Travel with a Salmon & Other Essays,Umberto Eco/William Weaver,3.85,0099428636,9780099428633,eng,229,110,12,4/16/2001,Vintage -23066,How to Travel with a Salmon and Other Essays,Umberto Eco/William Weaver,3.85,0151001367,9780151001361,eng,248,3532,153,12/1/1994,Houghton Mifflin -23080,Le Nom de la rose,Umberto Eco/Jean-Noël Schifano,4.12,2253033138,9782253033134,fre,755,745,49,11/2/1983,Le Livre de Poche -23114,Os libros arden mal,Manuel Rivas,3.36,849782461X,9788497824613,glg,741,36,2,6/24/2006,Edicións Xerais de Galicia S.A. -23158,The Age of Access: The New Culture of Hypercapitalism Where All of Life Is a Paid-For Experience,Jeremy Rifkin/Ralph Fowler,3.82,1585420824,9781585420827,eng,320,228,12,3/5/2001,"Tarcher" -23183,The Book of Questions,Pablo Neruda/William O'Daly,4.04,1556591608,9781556591600,eng,96,2180,224,4/1/2001,Copper Canyon Press -23186,Bugs for Lunch/Insectos para el almuerzo,Margery Facklam/Sylvia Long/Liliana Valenzuela,3.78,1570915067,9781570915062,spa,32,4,1,7/1/2002,Charlesbridge -23194,My Story as told by Water: Confessions Druidic Rants Reflections Bird-watchings Fish-stalkings Visions Songs and Prayers Refracting Light from Living Rivers in the Age of the Industrial Dark,David James Duncan,4.10,1578050499,9781578050499,eng,304,679,53,7/17/2001,Sierra Club Books -23201,Pilgrims and Other Stories,Elizabeth Gilbert,3.13,0330351745,9780330351744,eng,288,1411,182,4/9/1998,Picador -23202,The Last American Man,Elizabeth Gilbert,3.81,0142002836,9780142002834,eng,271,7966,960,5/27/2003,Riverhead Books -23203,Pilgrims Pa,Elizabeth Gilbert,3.13,0395924855,9780395924853,eng,224,10,2,9/17/1998,Mariner Books -23204,Stern Men,Elizabeth Gilbert,3.41,061812733X,9780618127337,eng,304,4308,542,6/8/2001,Mariner Books -23206,A Writer's Workbook: Daily Exercises for the Writing Life,Caroline Sharp/Elizabeth Gilbert,3.72,031228621X,9780312286217,eng,176,152,16,6/14/2002,St. Martin's Griffin -23217,Size 14 Is Not Fat Either (Heather Wells #2),Meg Cabot,3.83,0060525126,9780060525125,eng,344,27424,1038,11/28/2006,William Morrow Paperbacks -23218,Missing You (1-800-Where-R-You #5),Meg Cabot,4.17,0060874309,9780060874308,eng,268,11056,366,12/26/2006,HarperTempest -23219,Queen of Babble (Queen of Babble #1),Meg Cabot,3.69,0060851988,9780060851989,eng,309,60787,1693,5/23/2006,William Morrow -23220,Size 12 Is Not Fat (Heather Wells #1),Meg Cabot,3.74,0060525118,9780060525118,eng,345,75856,2408,12/27/2005,William Morrow Paperbacks -23221,How to Be Popular,Meg Cabot,3.55,0060880120,9780060880125,eng,288,19363,876,8/31/2006,HarperTempest -23222,Valentine Princess (The Princess Diaries #7.75),Meg Cabot,3.67,0060847182,9780060847180,eng,96,9517,219,12/12/2006,HarperTeen -23224,Darkest Hour (The Mediator #4),Meg Cabot,4.17,0060725141,9780060725143,eng,316,30471,671,12/28/2004,HarperCollins -23226,She Went All the Way,Meg Cabot,3.70,0060085444,9780060085445,eng,357,12470,441,12/3/2002,Avon -23227,Are We There Yet?,David Levithan,3.49,037582846X,9780375828461,eng,215,3089,281,7/12/2005,Alfred A. Knopf -23228,Boy Meets Boy,David Levithan,3.84,0375832998,9780375832994,eng,185,59799,3373,5/10/2005,Alfred A. Knopf -23229,This Is Push: New Stories from the Edge,David Levithan/Patricia McCormick/Matthue Roth/Kevin Waltman/Samantha Schutz/Coe Booth/Eddie de Oliveira/Tanuja Desai Hidier/Kevin Brooks/Chris Wooding/Markus Zusak/Brian James/Kristen Kemp/Eireann Corrigan/Christopher Krovatin/Billy Merrell,3.63,0439890284,9780439890281,eng,240,223,23,2/1/2007,Push -23232,The Realm of Possibility,David Levithan,3.93,0375836578,9780375836572,eng,210,14625,1190,5/9/2006,Ember -23233,Ten Things I Hate about You,David Levithan,4.11,0439087309,9780439087308,eng,170,1435,65,6/1/1999,Scholastic -23235,Where We Are What We See: The Best Young Writers and Artists in America,David Levithan,3.76,0439736463,9780439736466,eng,288,41,0,5/1/2005,Push -23236,Aphrodite's Passion (Superhero Central #2),Julie Kenner,3.62,0505524740,9780505524744,eng,352,534,33,4/1/2002,Love Spell -23237,The Manolo Matrix (Codebreaker Trilogy #2),Julie Kenner,3.62,0743496140,9780743496148,eng,352,651,34,2/1/2006,Downtown Press -23238,The Cat's Fancy,Julie Kenner,3.57,0505523973,9780505523976,eng,391,244,27,8/1/2000,Love Spell -23239,Demons Are Forever (Demon-Hunting Soccer Mom #3),Julie Kenner,3.89,0425215385,9780425215388,eng,292,2368,162,7/3/2007,Berkley Publishing Group -23240,Aphrodite's Secret (Superhero Central #3),Julie Kenner,3.70,0505525097,9780505525093,eng,369,410,20,5/6/2003,Love Spell -23242,The Good Ghouls' Guide to Getting Even (Beth Frasier #1),Julie Kenner,3.59,0425213919,9780425213919,eng,256,901,73,4/3/2007,Berkley Trade -23243,Aphrodite's Flame (Superhero Central #4),Julie Kenner,3.67,0505525755,9780505525758,eng,338,385,16,8/1/2004,Love Spell -23244,Carpe Demon (Demon-Hunting Soccer Mom #1),Julie Kenner,3.64,0515142212,9780515142211,eng,320,4811,585,10/31/2006,Jove -23249,Perfect Circle,Sean Stewart,3.80,1931520119,9781931520119,eng,243,679,69,6/1/2004,Small Beer Press -23257,The Great Philosophers: An Introduction to Western Philosophy,Bryan Magee/Myles Burnyeat/Martha C. Nussbaum/Anthony Kenny/Bernard Williams/Anthony Quinton/Michael Ayres/John Passmore/Geoffrey Warnock/Peter Singer/Frederick Charles Copleston/J. P. Stern/Hubert L. Dreyfus/Sidney Morgenbesser/A.J. Ayer/John Rogers Searle,4.07,019289322X,9780192893222,eng,352,359,18,1/18/2001,Oxford University Press USA -23260,Talking Philosophy: Dialogues with Fifteen Leading Philosophers,Bryan Magee/Isaiah Berlin/Charles Taylor/Herbert Marcuse/William Barrett/Anthony Quinton/A.J. Ayer/Bernard Williams/R. M. Hare/Willard Van Orman Quine/John Rogers Searle/Noam Chomsky/Hilary Putnam/Ronald Dworkin/Iris Murdoch/Ernest Gellner,4.06,0192854178,9780192854179,eng,288,24,4,10/18/2001,OUP Oxford -23261,The Story of Philosophy: A Concise Introduction to the World's Greatest Thinkers and Their Ideas,Bryan Magee,4.14,0751333328,9780751333329,eng,240,518,45,11/1/2005,DK Publishing (Dorling Kindersley) -23265,Feminist Measures: Soundings in Poetry and Theory,Lynn Keller/Lynn Keller,4.40,0472064843,9780472064847,en-US,424,5,0,12/14/1994,University of Michigan Press -23276,Taxation of Mineral Rents,Ross Garnaut,5.00,0198284543,9780198284543,eng,350,1,0,11/17/1983,Oxford University Press USA -23290,Dubliners,James Joyce/Margot Norris/Hans Walter Gabler/Walter Hettche,3.85,0393978516,9780393978513,eng,369,789,51,2/1/2006,W. W. Norton & Company -23292,Dubliners: Text Criticism and Notes,James Joyce/Robert Scholes/A. Walton Litz,3.85,0140247742,9780140247749,eng,492,331,32,8/1/1996,Penguin Books -23293,Dubliners,James Joyce/Frank McCourt/Donal Donnelly/Ciaran Hinds/Colm Meaney/Malachy McCourt,3.85,0060789565,9780060789565,eng,8,53,11,5/10/2005,Caedmon -23297,CliffsNotes on Joyce's Dubliners (Cliffs Notes),Adam Sexton/G. Tubach,3.40,0764537156,9780764537158,eng,80,5,2,4/25/2003,Cliffs Notes -23300,The Door to Time (Ulysses Moore #1),Pierdomenico Baccalario/Iacopo Bruno/Laura Zuccotti/Leah D. Janeczko/Beth Dunfey,3.93,0439774381,9780439774383,eng,239,3099,241,1/1/2006,Scholastic Inc. -23303,Ulysses S. Grant: The Unlikely Hero,Michael Korda,3.87,0060590157,9780060590154,eng,176,432,44,9/28/2004,Eminent Lives -23307,Ulysses S. Grant,Josiah Bunting/Arthur M. Schlesinger Jr.,3.89,0805069496,9780805069495,eng,208,445,40,9/8/2004,Times Books -23310,Allusions in Ulysses: An Annotated List,Weldon Thornton,4.04,0807840890,9780807840894,eng,563,22,2,9/20/1982,University of North Carolina Press -23314,Ulysses Found,Ernle Bradford,4.07,0750937254,9780750937252,eng,238,38,8,2/1/2005,History Press Ltd -23315,The Scandal of Ulysses: The Life And Afterlife of a Twentieth Century Masterpiece,Bruce Arnold,3.82,190414845X,9781904148456,eng,346,12,0,11/15/2005,The Liffey Press -23316,Round Ireland with a Fridge,Tony Hawks,3.79,0312274920,9780312274924,en-US,248,15191,838,3/7/2001,Thomas Dunne Books -23318,Discovery of the Presence of God: Devotional Nonduality,David R. Hawkins,4.61,0971500762,9780971500761,en-US,296,186,11,6/28/2007,Veritas Publishing -23319,Transcending the Levels of Consciousness: The Stairway to Enlightenment,David R. Hawkins,4.51,0971500746,9780971500747,eng,407,461,29,6/28/2006,Veritas Publishing -23322,The Eye of the I: From Which Nothing is Hidden,David R. Hawkins,4.38,0964326191,9780964326194,eng,432,752,37,6/23/2001,Veritas Publishing -23331,Letters to J. D. Salinger,Chris Kubica/Chris Kubica,3.50,0299178005,9780299178000,eng,270,26,1,3/4/2002,University of Wisconsin Press -23336,J.D. Salinger's Catcher in the Rye (Modern Critical Interpretations),Harold Bloom,3.58,0791056643,9780791056646,eng,176,18,2,12/31/2000,Chelsea House Publications -23352,Lord of the Flies,William Golding,3.68,0812416112,9780812416114,en-US,208,479,57,7/1/1959,Perfection Learning -23377,Where Is Baby's Mommy? (A Lift-the-Flap Book),Karen Katz,4.15,0689835612,9780689835612,eng,14,434,28,4/1/2001,Little Simon -23378,Counting Christmas,Karen Katz,3.53,0689849257,9780689849251,eng,32,154,26,10/1/2003,Margaret K. McElderry Books -23391,Running from the Deity (Pip & Flinx #11),Alan Dean Foster,3.81,0345461614,9780345461612,eng,280,1045,26,11/28/2006,Del Rey Books -23392,Lost and Found,Alan Dean Foster,3.68,0345461274,9780345461278,eng,256,722,65,5/31/2005,Del Rey Books -23393,Reunion (Pip & Flinx #8),Alan Dean Foster,3.87,0345418689,9780345418685,eng,352,1366,33,2/26/2002,Del Rey -23398,The Dig,Alan Dean Foster,3.40,0727852663,9780727852663,eng,336,2,0,1/1/1998,Severn House Publishers -23404,Regarding the Fountain: A Tale in Letters of Liars and Leaks,Kate Klise/M. Sarah Klise,4.20,0380793474,9780380793471,eng,144,3208,306,3/9/1999,HarperCollins -23410,Pimsleur German Level 1 CD: [Lessons 1-30],Pimsleur Language Programs,4.23,0743518365,9780743518369,eng,16,58,10,4/1/2010,Pimsleur -23418,The Architecture of Happiness,Alain de Botton,3.86,0375424431,9780375424434,eng,280,7101,540,10/3/2006,Pantheon Books -23419,The Consolations of Philosophy,Alain de Botton,4.01,0679779175,9780679779179,en-US,265,13499,812,4/3/2001,Vintage -23420,How Proust Can Change Your Life,Alain de Botton,3.76,0679779159,9780679779155,eng,208,10270,877,4/28/1998,Vintage -23421,Kiss & Tell,Alain de Botton,3.56,0312155611,9780312155612,eng,258,828,46,5/15/1997,Picador -23423,The Consolations of Philosophy,Alain de Botton,4.01,0140276610,9780140276619,eng,272,763,70,3/1/2001,Penguin -23425,Status Anxiety,Alain de Botton,3.91,0375725350,9780375725357,eng,306,7957,535,5/10/2005,Vintage -23426,On Love,Alain de Botton,3.98,0802142400,9780802142405,eng,194,11297,853,1/6/2006,Grove Press -23438,Miracle at St. Anna,James McBride,3.74,1573229717,9781573229715,en-US,336,2141,303,1/7/2003,Riverhead Books -23439,Die Farbe von Wasser,James McBride,4.09,342661278X,9783426612781,ger,317,38,1,2/1/2001,Droemer Knaur -23453,Dragons of Winter Night (Dragonlance: Chronicles #2),Margaret Weis/Tracy Hickman,4.12,0786930675,9780786930678,en-US,361,424,20,7/1/2003,Wizards of the Coast -23454,Dragons of Winter Night (Dragonlance: Chronicles #2),Margaret Weis/Tracy Hickman,4.12,1932796789,9781932796780,eng,358,35536,401,4/10/2007,Devil's Due Publishing -23460,Dragon's Treasure,Elizabeth A. Lynn,3.54,0441012590,9780441012596,eng,336,170,11,9/27/2005,Ace -23461,Watchtower (Chronicles of Tornor #1),Elizabeth A. Lynn,3.57,0743498097,9780743498098,eng,224,646,35,12/1/2004,iBooks -23468,Letters to a Young Artist,Anna Deavere Smith,4.02,1400032385,9781400032389,eng,240,543,50,1/24/2006,Anchor -23475,The Hip Chick's Guide to Macrobiotics: A Philosophy for Achieving a Radiant Mind and a Fabulous Body,Jessica Porter/Michio Kushi,3.69,1583332057,9781583332054,eng,289,424,53,9/9/2004,Avery Publishing Group -23479,La casa en Mango Street,Sandra Cisneros/Elena Poniatowska,3.63,0613046889,9780613046886,spa,110,35,5,10/18/1994,Turtleback Books -23491,Kurt Vonnegut's Cat's Cradle (Modern Critical Interpretations),Harold Bloom/Terry Southern/David H. Goldsmith/James Lundquist/Lawrence R. Broer/Peter J. Reed/Loree Rackstraw/William S. Doxey/Jerome Klinkowitz/Richard Giannone/John L. Simons/Leonard Mustazza/Zoltan Ab di-Nagy/Peter Freese/Wendy B. Faris,4.35,0791063372,9780791063378,eng,258,14,2,6/15/2002,Chelsea House Publications -23492,The Dharma Bums,Jack Kerouac/Ann Douglas,3.92,0143039601,9780143039600,eng,187,2055,172,4/5/2007,Penguin Classics -23503,The Alchemist's Daughter,Katharine McMahon,3.25,0307335852,9780307335852,eng,346,3565,451,10/24/2006,Broadway Books -23504,The Art of Fullmetal Alchemist: The Anime,Hiromu Arakawa/Akira Watanabe/Eric Searleman,4.44,1421507668,9781421507668,eng,96,266,8,10/17/2006,VIZ Media LLC -23506,Fullmetal Alchemist Vol. 11 (Fullmetal Alchemist #11),Hiromu Arakawa/Akira Watanabe,4.59,1421508389,9781421508382,eng,192,7655,129,1/16/2007,VIZ Media LLC -23512,Astronomy Today,Eric Chaisson/Steve McMillan,3.99,0131445960,9780131445963,eng,2,128,4,7/26/2004,Prentice Hall -23515,Astronomy For Dummies,Stephen P. Maran,3.84,0764584650,9780764584657,eng,318,285,27,5/6/2005,Wiley Publishing Inc. -23516,Astronomy: A Self-Teaching Guide,Dinah L. Moché,3.89,0471265187,9780471265184,eng,343,113,10,2/24/2004,John Wiley & Sons -23517,Astronomy: A Beginner's Guide to the Universe,Eric Chaisson/Steve McMillan,3.88,013187165X,9780131871656,eng,499,159,8,2/24/2006,Benjamin Cummings -23518,Bad Astronomy,Philip Plait,4.04,0471409766,9780471409762,eng,277,5247,234,3/5/2002,Wiley -23520,The Complete World of Greek Mythology,Richard Buxton,4.24,0500251215,9780500251218,eng,256,1598,46,6/28/2004,Thames & Hudson -23521,Mythology: Timeless Tales of Gods and Heroes,Edith Hamilton,4.00,0446607258,9780446607254,eng,330,1747,192,8/1/1999,Warner -23522,Mythology,Edith Hamilton/Steele Savage,4.00,0316341517,9780316341516,eng,497,35634,1552,9/14/1998,Little Brown and Company -23524,Mythology: The DC Comics Art of Alex Ross,Alex Ross/Geoff Spear/Chip Kidd,4.33,0375714626,9780375714627,eng,320,1994,37,11/8/2005,Pantheon -23525,Norse Mythology: A Guide to the Gods Heroes Rituals and Beliefs,John Lindow,4.11,0195153820,9780195153828,eng,365,1107,33,10/17/2002,Oxford University Press USA -23526,Classic Myths to Read Aloud: The Great Stories of Greek and Roman Mythology Specially Arranged for Children Five and Up by an Educational Expert,William F. Russell,4.12,0517588374,9780517588376,eng,272,249,44,4/28/1992,Broadway Books -23533,Snapshots From Hell: The Making Of An MBA,Peter M. Robinson,3.70,1857880781,9781857880786,en-US,296,582,43,4/26/2005,Nicholas Brealey -23545,Watchmen on the Walls,Hannah Hurnard,4.02,0805413995,9780805413991,eng,184,39,6,3/1/1998,B&H Publishing Group -23547,America (The Book): A Citizen's Guide to Democracy Inaction (Teacher's Edition),Jon Stewart/Scott C. Jacobson,4.02,0446691860,9780446691864,en-GB,227,1827,116,9/25/2006,Warner Books -23548,The Children's Book of America,William J. Bennett/Michael Hague,4.19,0684849305,9780684849300,en-US,112,95,13,11/2/1998,Simon & Schuster -23549,The Journal of Scott Pendleton Collins: A World War 2 Soldier,Walter Dean Myers,3.96,0439050138,9780439050135,eng,140,1132,181,6/1/1999,Scholastic Inc. -23552,The New Big Book of America,Todd Davis/Marc Frey,5.00,0762412631,9780762412631,eng,56,2,1,3/21/2002,Courage Books -23558,Awake in the Dark: The Best of Roger Ebert,Roger Ebert/David Bordwell,4.20,0226182002,9780226182001,eng,512,416,30,9/15/2006,University of Chicago Press -23563,Ebert's "Bigger" Little Movie Glossary,Roger Ebert/Ray Ebert,3.87,0836282892,9780836282894,en-US,228,82,9,12/3/2005,Andrews McMeel Publishing -23573,The Perfect London Walk,Roger Ebert/Daniel Curley/Jack Lane,4.26,0836279298,9780836279290,eng,123,40,6,1/1/1986,Andrews McMeel Publishing -23576,The Truth with Jokes,Al Franken,3.86,0452287677,9780452287679,eng,386,7469,201,10/1/2006,Plume Books -23577,Lies & the Lying Liars Who Tell Them: A Fair & Balanced Look at the Right,Al Franken,3.81,0452285216,9780452285217,en-US,421,25235,723,7/27/2004,Plume Books -23581,Still More George W. Bushisms: "Neither in French nor in English nor in Mexican",Jacob Weisberg/Al Franken,3.37,0743251008,9780743251006,eng,96,56,11,11/4/2003,Fireside -23582,You're Good Enough You're Smart Enough & Doggone It People Like You!,Al Franken,3.89,0553470949,9780553470949,en-US,0,18,0,10/1/1992,Random House Audio Publishing Group -23584,I'm Good Enough I'm Smart Enough & Doggone It People Like Me!,Al Franken/Melody Beattie/Stuart Smalley,3.82,0440504708,9780440504702,en-US,352,359,35,10/1/1992,Dell -23588,J.R.R. Tolkien: Artist and Illustrator,Wayne G. Hammond/Christina Scull/J.R.R. Tolkien,4.14,0618083618,9780618083619,en-US,224,8140,32,10/18/2000,Mariner Books -23589,The J.R.R. Tolkien Companion and Guide,Christina Scull/Wayne G. Hammond,4.64,0618391134,9780618391134,eng,2264,45,0,11/2/2006,Houghton Mifflin Harcourt -23591,The Children of Húrin,J.R.R. Tolkien/Christopher Tolkien/Alan Lee,3.97,0618894640,9780618894642,eng,313,2681,225,4/17/2007,Houghton Mifflin Harcourt -23596,Tales Before Tolkien: The Roots of Modern Fantasy,Douglas A. Anderson/Frank R. Stockton/Ludwig Tieck/Richard Garnett/H. Rider Haggard/Andrew Lang/William Hope Hodgson/E.A. Wyke-Smith/David Lindsay/Clemence Housman/George MacDonald/Arthur Machen/A. Merritt/L. Frank Baum/Kenneth Morris/William Morris/James Branch Cabell/Lord Dunsany/Francis Stevens/E.H. Knatchbull-Hugessen/E. Nesbit,3.93,0345458567,9780345458568,eng,528,1130,42,11/29/2005,Del Rey -23598,The J.R.R. Tolkien Companion and Guide Volume 1: Chronology,Christina Scull/Wayne G. Hammond,4.51,0618391029,9780618391028,eng,1002,40,2,11/2/2006,Houghton Mifflin Harcourt -23600,Sauron Defeated: The History of The Lord of the Rings Part Four (The History of Middle-Earth #9),J.R.R. Tolkien/Christopher Tolkien,4.01,0395606497,9780395606490,eng,496,2572,41,10/27/1992,Houghton Mifflin Harcourt -23601,The J.R.R. Tolkien Companion and Guide Volume 2: Reader's Guide,Wayne G. Hammond/Wayne G. Hammond,4.46,0618391010,9780618391011,eng,1262,31,2,11/2/2006,Houghton Mifflin Harcourt -23603,Tales from the Perilous Realm,J.R.R. Tolkien,4.08,0007149123,9780007149124,eng,178,3242,162,9/2/2002,HarperCollins Publishers -23608,Tolkien: Man and Myth: A Literary Life,Joseph Pearce,4.05,0898708257,9780898708257,eng,256,467,31,12/1/2001,Ignatius Press -23617,Roverandom,J.R.R. Tolkien/Christina Scull/Wayne G. Hammond,3.87,0007149115,9780007149117,eng,116,8775,413,9/2/2002,HarperCollins Publishers -23625,The History of Middle-Earth Index (The History of Middle-Earth #13),J.R.R. Tolkien/Christopher Tolkien,4.25,0007137435,9780007137435,eng,484,51,3,8/5/2002,HarperCollins -23627,The Lost Road and Other Writings (The History of Middle-earth #5),J.R.R. Tolkien/Christopher Tolkien,3.97,0261102257,9780261102255,eng,455,97,10,6/5/2002,HarperCollins -23637,Tolkien's Modern Middle Ages,Jane Chance/Alfred Siewers,3.62,1403969736,9781403969736,eng,264,16,2,11/19/2005,Palgrave Macmillan -23640,Understanding The Lord of the Rings: The Best of Tolkien Criticism,Rose A. Zimbardo/Neil D. Isaacs,4.02,0618422536,9780618422531,eng,304,2067,17,5/12/2005,Mariner Books -23643,Faërie,J.R.R. Tolkien/Francis Ledoux,3.54,2266102710,9782266102711,fre,217,89,2,11/20/2003,Pocket -23653,The Hobbit or There and Back Again,J.R.R. Tolkien/Alan Lee,4.27,026110330X,9780261103306,eng,289,559,55,9/15/1997,Houghton Mifflin Company -23685,Ranma 1/2 Vol. 36 (Ranma ½ (US 2nd) #36),Rumiko Takahashi,4.14,142150507X,9781421505077,eng,182,863,33,11/1/2006,Viz Media -23686,Ranma ½ Vol. 1 (Ranma ½ (US 2nd) #1),Rumiko Takahashi,4.15,1569319626,9781569319628,eng,304,29058,309,5/7/2003,VIZ Media LLC -23689,Ranma 1/2 Vol. 35 (Ranma ½ (US 2nd) #35),Rumiko Takahashi,4.10,1421505061,9781421505060,eng,208,752,13,8/8/2006,VIZ Media LLC -23692,Ranma 1/2 Vol. 34 (Ranma ½ (US 2nd) #34),Rumiko Takahashi,4.08,1421505053,9781421505053,eng,182,782,13,5/1/2006,Viz Media -23693,Ranma 1/2 Vol. 7 (Ranma ½ (US 2nd) #7),Rumiko Takahashi,4.13,1591161290,9781591161295,eng,184,1392,39,2/4/2004,Viz Media -23697,Mermaid Saga Vol. 2,Rumiko Takahashi,4.05,1591164842,9781591164845,eng,208,92,3,9/21/2004,VIZ Media LLC -23700,The Mermaids Singing,Lisa Carey,3.77,0380815591,9780380815593,en-US,288,1859,231,11/6/2001,William Morrow Paperbacks -23703,Maison Ikkoku Volume 15 (Maison Ikkoku #15),Rumiko Takahashi,4.36,1421502798,9781421502793,en-US,208,257,11,2/14/2006,VIZ Media LLC -23704,Maison Ikkoku Volume 14 (Maison Ikkoku #14),Rumiko Takahashi,4.30,1421501422,9781421501420,eng,240,245,6,12/13/2005,VIZ Media LLC -23706,Maison Ikkoku Volume 12 (Maison Ikkoku #12),Rumiko Takahashi,4.27,1591168694,9781591168690,eng,323,250,3,8/9/2005,VIZ Media LLC -23707,Maison Ikkoku Volume 5 (Maison Ikkoku #5),Rumiko Takahashi,4.22,1591163196,9781591163190,en-US,208,300,5,6/2/2004,Viz Media -23708,Maison Ikkoku Volume 6 (Maison Ikkoku #6),Rumiko Takahashi,4.19,1591164222,9781591164227,en-US,208,291,4,8/17/2004,Viz Media -23709,Maison Ikkoku Volume 11 (Maison Ikkoku #11),Rumiko Takahashi,4.28,159116804X,9781591168041,eng,232,252,4,6/7/2005,VIZ Media LLC -23710,Maison Ikkoku Volume 9 (Maison Ikkoku #9),Rumiko Takahashi,4.19,1591166179,9781591166177,en-US,232,272,4,2/9/2005,VIZ Media LLC -23717,Rumic World Trilogy Volume 3 (Rumic World Trilogy #3),Rumiko Takahashi,3.88,1569312060,9781569312063,eng,192,69,1,11/5/1997,Viz Media -23720,Nausicaä of the Valley of the Wind Vol. 4 (Nausicaä of the Valley of the Wind #4),Hayao Miyazaki/David Lewis/Toren Smith/Kaori Inoue/Joe Yamazaki/Walden Wong/Izumi Evers,4.59,1591163528,9781591163527,eng,134,1956,38,6/2/2004,VIZ Media -23721,Nausicaä of the Valley of the Wind Vol. 6 (Nausicaä of the Valley of the Wind #6),Hayao Miyazaki/Matt Thorn/Kaori Inoue/Joe Yamazaki/Walden Wong/Izumi Evers,4.62,1591163544,9781591163541,eng,159,1776,33,8/10/2004,VIZ Media -23722,Nausicaä of the Valley of the Wind Vol. 5 (Nausicaä of the Valley of the Wind #5),Hayao Miyazaki/Matt Thorn/Kaori Inoue/Joe Yamazaki/Walden Wong/Izumi Evers,4.61,1591164125,9781591164128,eng,151,1904,28,6/30/2004,VIZ Media -23724,Nausicaä of the Valley of the Wind Vol. 7 (Nausicaä of the Valley of the Wind #7),Hayao Miyazaki/Matt Thorn/Kaori Inoue/Joe Yamazaki/Walden Wong/Izumi Evers,4.61,1591163552,9781591163558,eng,223,1716,79,9/7/2004,VIZ Media -23734,Nausicaä De La Vallée Du Vent Tome 4,Hayao Miyazaki,4.59,2723433927,9782723433921,fre,144,29,2,6/12/2001,Glénat -23740,Nausicaä de la vallée du vent tome 3,Hayao Miyazaki,4.56,2723433919,9782723433914,fre,144,32,3,2/20/2001,Glénat -23751,Homer's Daughter,Robert Graves,3.81,0897330595,9780897330596,en-US,283,416,34,8/30/2005,Academy Chicago Publishers -23753,The Absolute Sandman Volume One,Neil Gaiman/Mike Dringenberg/Chris Bachalo/Michael Zulli/Kelly Jones/Charles Vess/Colleen Doran/Malcolm Jones III/Steve Parkhouse/Daniel Vozzo/Lee Loughridge/Steve Oliff/Todd Klein/Dave McKean/Sam Kieth,4.65,1401210821,9781401210823,eng,612,15640,512,11/1/2006,Vertigo -23754,Preludes & Nocturnes (The Sandman #1),Neil Gaiman/Sam Kieth/Mike Dringenberg/Malcolm Jones III/Todd Klein/Karen Berger,4.24,1563892278,9781563892271,eng,233,171841,3781,12/1/1998,Vertigo -23756,Berlin Diary: The Journal of a Foreign Correspondent 1934-1941,William L. Shirer/Gordon A. Craig,4.29,0801870569,9780801870569,eng,627,3574,198,4/17/2002,Johns Hopkins University Press -23757,This Is Berlin: Reporting from Nazi Germany 1938-40,William L. Shirer/John Keegan/Inga Shirer Dean,4.24,1585672793,9781585672790,en-US,478,155,5,5/30/2002,Overlook TP -23758,The Nightmare Years: 1930-40 (20th Century Journey #2),William L. Shirer,4.24,1841581224,9781841581224,eng,654,844,41,3/5/2008,Birlinn -23763,The Collapse of the Third Republic,William L. Shirer,4.21,0306805626,9780306805622,eng,1082,531,40,3/21/1994,Da Capo Press -23774,Something Borrowed (Darcy & Rachel #1),Emily Giffin,3.85,0312321198,9780312321192,en-US,322,24522,4032,4/1/2005,St. Martin's Griffin -23777,Something Borrowed Something Blue,Elaine Barbieri/Constance O'Banyon/Evelyn Rogers/Bobbi Smith,3.94,084394725X,9780843947250,eng,394,17,1,6/1/2000,Leisure Books -23784,The Major Plays,Anton Chekhov/Ann Dunnigan/Rosamund Bartlett/Robert Brustein,4.18,0451530373,9780451530370,eng,406,102,16,12/5/2006,Signet -23785,The Complete Plays,Anton Chekhov/Laurence Senelick,4.47,0393048853,9780393048858,eng,1060,222,12,1/3/2006,W. W. Norton & Company -23788,Anton Chekhov's Selected Plays,Anton Chekhov/Laurence Senelick,4.01,0393924653,9780393924657,eng,674,97,10,10/25/2004,W. W. Norton & Company -23790,Short Stories,Anton Chekhov/Ralph E. Matlaw,4.35,0393090027,9780393090024,eng,384,2633,105,4/17/1979,W. W. Norton & Company -23791,Ward No. 6 and Other Stories,Anton Chekhov/David Plante/Constance Garnett,4.33,1593080034,9781593080037,en-US,400,6988,173,7/1/2003,Barnes Noble Classics -23793,The Dark Descent,David G. Hartwell/Clive Barker/Ray Bradbury/John Collier/Shirley Jackson/Stephen King/Joyce Carol Oates,4.25,0312862172,9780312862176,eng,1011,1991,65,1/15/1997,Tor Books -23796,The Medusa in the Shield,David G. Hartwell/Robert Aickman/Charlotte Perkins Gilman/William Faulkner/Robert Smythe Hichens/Richard Matheson/Joanna Russ/Dennis Etchison/D.H. Lawrence/Tanith Lee/Flannery O'Connor/Ramsey Campbell/Thomas M. Disch/Henry James/Theodore Sturgeon/Clive Barker/Edgar Allan Poe/Stephen King/Michael Bishop/H.P. Lovecraft/J. Sheridan Le Fanu,3.88,0812509668,9780812509663,eng,498,49,6,11/15/1991,Tor Books -23797,A Fabulous Formless Darkness,David G. Hartwell/Fritz Leiber/Fitz-James O'Brien/Shirley Jackson/Ambrose Bierce/Edith Wharton/Algernon Blackwood/Thomas M. Disch/Robert Aickman/Philip K. Dick/Gene Wolfe/Charles Dickens/Stephen King/Joyce Carol Oates/Walter de la Mare/Ivan Turgenev/Robert W. Chambers/Oliver Onions,4.18,0812509676,9780812509670,eng,608,31,5,1/15/1992,Tor Books -23799,The Dark Descent Vol 1: The Color of Evil,David G. Hartwell,4.12,0246136677,9780246136671,eng,304,2,0,9/19/1990,Grafton -23801,Bargaining for Advantage: Negotiation Strategies for Reasonable People,G. Richard Shell,3.95,0143036971,9780143036975,en-US,320,4560,85,5/2/2006,Penguin Books -23802,Bargaining for Advantage: Negotiation Strategies for Reasonable People,G. Richard Shell,3.95,0140281916,9780140281910,eng,304,37,1,6/1/2000,Penguin Books -23809,The Silence of the Lambs and Red Dragon,Thomas Harris,4.48,1850522316,9781850522317,eng,534,293,9,11/1/1991,Peerage Books -23811,The Silence of the Lambs,Yvonne Tasker,4.27,0851708714,9780851708713,eng,96,510,14,3/29/2002,British Film Institute -23814,King Solomon's Mines (Allan Quatermain #1),H. Rider Haggard,3.80,0812966295,9780812966299,eng,264,34623,1168,12/10/2002,Modern Library -23816,Mine All Mine!: A Book About Pronouns,Ruth Heller,4.09,0698117972,9780698117976,en-US,48,117,24,10/1/1999,Puffin Books -23818,A Faith Like Mine,Laura Buller/D.K. Publishing,3.91,0756611776,9780756611774,eng,80,50,19,8/15/2005,DK Children -23824,Speaks the Nightbird (Matthew Corbett #1),Robert R. McCammon,4.13,1880216620,9781880216620,en-US,726,145,31,9/1/2002,River City Publishing -23827,The Bishop's Boys: A Life of Wilbur and Orville Wright,Tom D. Crouch,4.17,039330695X,9780393306958,eng,608,143,28,4/17/2003,W. W. Norton Company -23832,The Insomnia Answer: A Personalized Program for Identifying and Overcoming the Three Types of Insomnia,Paul Glovinsky/Art Spielman,3.93,0399532978,9780399532979,en-US,272,47,13,12/5/2006,TarcherPerigee -23835,Cognitive Behavioral Treatment of Insomnia: A Session-By-Session Guide,Michael L. Perlis/Carla Jungquist/Michael T. Smith,4.05,0387222529,9780387222523,eng,182,2,1,6/1/2005,Springer -23837,Healing Therapies for Overcoming Insomnia,Peter Van Houten/Rich McCord,3.60,1565891740,0798499100096,eng,175,8,1,2/23/2005,Crystal Clarity Publishers -23840,The Attraction,Douglas Clegg,3.62,0843954116,9780843954111,eng,324,386,34,4/1/2006,Leisure Books -23841,Nightmare House (Harrow House #1),Douglas Clegg,3.36,084395177X,9780843951776,en-GB,340,971,101,5/1/2004,Leisure Books -23843,The Abandoned (Harrow House #4),Douglas Clegg,3.45,0843954108,9780843954104,eng,370,229,23,5/1/2005,Leisure Books -23845,The Nightmare Chronicles,Douglas Clegg,3.75,084394580X,9780843945805,en-US,360,409,32,9/1/1999,Leisure Books -23846,Mischief (Harrow House #2),Douglas Clegg,3.49,0843947667,9780843947663,eng,359,385,29,9/1/2000,Leisure Books -23847,Purity (Dark Coming of Age #1),Douglas Clegg,3.79,1881475719,9781881475712,eng,118,99,12,6/2/2000,Cemetery Dance Publications -23848,The Hour Before Dark,Douglas Clegg,3.76,0843951427,9780843951424,eng,370,1034,78,9/1/2003,Leisure Books -23849,The Halloween Man,Douglas Clegg,3.36,0843944390,9780843944396,eng,360,583,71,10/1/1998,Leisure Books -23856,The Sisters: The Saga of the Mitford Family,Mary S. Lovell,3.97,0393324141,9780393324143,eng,611,8132,589,5/20/2003,W.W. Norton & Company -23859,Soldiers of Salamis,Javier Cercas/Anne McLean,3.81,1582344728,9781582344720,eng,213,429,71,1/10/2005,Bloomsbury USA -23870,Spandau: The Secret Diaries,Albert Speer,4.13,0026995018,9780026995016,eng,463,6,2,2/5/1976,Macmillan Publ. Co. -23875,El coronel no tiene quien le escriba,Gabriel García Márquez,3.75,0307350436,9780307350435,spa,104,19205,711,2/7/2006,Plaza & Janés -23876,Of Love and Other Demons,Gabriel García Márquez,3.98,0517405091,9780517405093,eng,160,35045,1116,5/2/1995,Penguin Group (USA) -23877,Noticia de un secuestro,Gabriel García Márquez,3.85,0307350509,9780307350503,spa,336,1444,80,2/7/2006,Plaza y Janes -23878,Chronicle of a Death Foretold,Gabriel García Márquez/Gregory Rabassa,3.97,140003471X,9781400034710,eng,120,69912,2789,10/7/2003,Vintage -23882,Ojos de perro azul,Gabriel García Márquez,3.74,0307350517,9780307350510,spa,192,3303,116,2/7/2006,Plaza y Janes -23884,The General in His Labyrinth,Gabriel García Márquez/Edith Grossman,3.68,1400043336,9781400043330,eng,248,11939,389,10/26/2004,Everyman's Library -23886,La increíble y triste historia de la cándida Eréndira y de su abuela desalmada,Gabriel García Márquez,3.90,0307350363,9780307350367,spa,160,21,1,2/7/2006,Plaza y Janés -23887,The Autumn of the Patriarch,Gabriel García Márquez/Gregory Rabassa,3.85,0060882867,9780060882860,eng,255,12336,492,3/14/2006,Harper Perennial Modern Classics -23894,Cien años de soledad,Gabriel García Márquez,4.07,0307350274,9780307350275,spa,512,52,7,2/7/2006,Plaza y Janes -23895,El amor en los tiempos del cólera,Gabriel García Márquez,3.91,8467204362,9788467204360,spa,430,54,1,1/1/1985,Círculo de Lectores -23900,Relato de un náufrago,Gabriel García Márquez,3.78,0307350401,9780307350404,spa,172,2095,121,2/7/2006,Plaza y Janes -23903,Relato de Um Náufrago,Gabriel García Márquez/Remy Gorga Filho,3.78,8501011207,9788501011206,por,134,43,2,4/15/1995,Record -23912,The Complete Poems,William Blake/Alicia Suskin Ostriker,4.24,0140422153,9780140422153,eng,1072,7738,48,11/24/1977,Penguin Classics -23913,The Marriage of Heaven and Hell,William Blake,4.24,0486281221,9780486281223,eng,48,7163,245,9/1/1994,Dover Publications -23917,The Stranger from Paradise: A Biography of William Blake,G.E. Bentley Jr.,4.06,0300100302,9780300100303,eng,632,79,10,4/10/2003,Paul Mellon Centre BA -23919,The Complete Stories and Poems,Edgar Allan Poe,4.38,0385074077,9780385074070,eng,821,183869,1226,8/15/1984,Doubleday & Company Inc. -23920,Complete Tales and Poems,Edgar Allan Poe,4.38,0785814531,9780785814535,eng,864,1864,110,11/29/2009,Castle Books -23922,The Edgar Allan Poe Audio Collection,Edgar Allan Poe,4.39,0694524190,9780694524198,eng,5,289,64,10/1/2000,Harper Audio -23925,18 Best Stories by Edgar Allan Poe,Edgar Allan Poe/Vincent Price/Chandler Brossard,4.02,0440322278,9780440322276,eng,288,412,37,4/15/1965,Dell -23926,Complete Poems (Library of Classic Poets),Edgar Allan Poe,4.17,0517082454,9780517082454,en-US,128,198,11,3/20/2001,Gramercy -23928,Edgar Allan Poe A to Z,Dawn B. Sova,4.33,081604161X,9780816041619,eng,320,8,0,4/1/2001,Checkmark Books -23929,Selected Letters 1940-1956,Jack Kerouac/Ann Charters,4.13,0140234446,9780140234442,eng,656,804,21,3/1/1996,Penguin (Non-Classics) -23930,The Wild Boys,William S. Burroughs,3.60,0802133312,9780802133311,eng,193,2977,124,1/12/1994,Grove Press -23931,Nova Express (The Nova Trilogy #3),William S. Burroughs,3.67,0802133304,9780802133304,eng,192,2541,70,1/21/1994,Grove Press -23932,Last Words: The Final Journals,William S. Burroughs/James Grauerholz,3.98,0802137784,9780802137784,eng,273,490,20,1/3/2001,Grove Press -23937,The Soft Machine (The Nova Trilogy #1),William S. Burroughs,3.35,0802133290,9780802133298,eng,184,5892,204,1/13/1994,Grove Press -23940,Junky,William S. Burroughs/Oliver Harris/Allen Ginsberg,3.83,0142003166,9780142003169,eng,208,47105,1052,4/1/2003,Penguin -23942,Queer,William S. Burroughs,3.59,0330300164,9780330300162,eng,160,9811,279,12/17/1998,Penguin Books -23944,Cities of the Red Night,William S. Burroughs,3.77,0312278462,9780312278465,en-GB,332,3893,196,5/4/2001,Picador -23945,William S. Burroughs Throbbing Gristle Brion Gysin,V. Vale/Andrea Juno/William S. Burroughs/Throbbing Gristle/Brion Gysin,4.26,1889307157,9781889307152,eng,140,1290,17,1/10/2008,Re/Search Publications -23946,Burroughs Live: The Collected Interviews 1960-1997,William S. Burroughs/Sylvère Lotringer,4.36,1584350105,9781584350101,eng,675,124,5,12/7/2001,Semiotext(e) -23948,My Education: A Book of Dreams,William S. Burroughs,3.70,0140094547,9780140094541,eng,193,1055,47,6/1/1996,Penguin Books -23950,Trainspotting (Mark Renton #2),Irvine Welsh,4.09,0393057240,9780393057249,en-US,340,533,45,10/17/2002,W. W. Norton Company -23952,Trainspotting,Murray Smith,4.03,0851708706,9780851708706,eng,96,75,5,3/29/2002,British Film Institute -23955,Trainspotting,Irvine Welsh/Eric Lindor Fall,4.09,2020336464,9782020336468,fre,344,59077,857,3/6/1998,Seuil -23961,Marabou Stork Nightmares,Irvine Welsh,3.86,0393315630,9780393315639,eng,288,8726,267,1/17/1997,W. W. Norton Company -23963,You'll Have Had Your Hole,Irvine Welsh,3.51,0413728609,9780413728609,eng,76,227,5,4/2/1998,Bloomsbury Methuen Drama -23964,Ecstasy,Irvine Welsh/Alain Defossé,3.55,2020416409,9782020416405,fre,358,12,2,6/10/2000,Points -23966,Filth,Irvine Welsh,3.73,0393318680,9780393318685,eng,393,21997,643,9/17/1998,W. W. Norton Company -23968,The Female Brain,Louann Brizendine,3.83,0767920090,9780767920094,eng,304,8655,1203,8/1/2006,Morgan Road Books -23975,Imaginary Friends,Nora Ephron,3.54,1400034221,9781400034222,eng,144,200,19,3/18/2003,Vintage -23979,Scribble Scribble: Notes on the Media,Nora Ephron,3.70,0553122754,9780553122756,eng,163,326,27,3/1/1979,Bantam Books -23984,Life Amongst the Modocs,Joaquin Miller/Alan Rosenus/Malcolm Margolin,4.32,0930588797,9780930588793,eng,456,19,6,1/1/1997,Urion Press -23989,Devil's Backbone,Terry C. Johnston,4.17,0312925743,9780312925741,eng,448,105,6,8/15/1991,St. Martin's Press -24001,Soldados de Salamina,Javier Cercas,3.81,8483101610,9788483101612,spa,209,4382,235,9/1/2001,Tusquets -24006,Rule #1: The Simple Strategy for Successful Investing in Only 15 Minutes a Week!,Phil Town,4.02,0307336131,9780307336132,eng,320,1373,90,3/21/2006,Crown Business -24010,Laguna I Love You: The Best of "Our Town",John Weld/Phil Interlandi,0.00,1564741575,9781564741578,eng,285,0,0,3/1/1996,Fithian Press -24028,Dirty Italian: Everyday Slang from "What's Up?" to "F*%# Off!",Gabrielle Ann Euvino/Lindsay Mack,4.00,1569755663,9781569755662,eng,163,46,0,10/28/2006,Ulysses Press -24037,The Deep (Dive #2),Gordon Korman,3.78,0439507235,9780439507233,eng,148,1436,55,7/1/2003,Scholastic -24040,The Discovery (Dive #1),Gordon Korman,3.72,0439507227,9780439507226,eng,141,1858,135,6/1/2003,Apple Paperbacks (Scholastic) -24043,New York City's Best Dive Bars: Drinking and Diving in the Five Boroughs,Wendy Mitchell/June Kim,3.75,0970312539,9780970312532,eng,160,16,2,7/1/2003,Gamble Guides -24047,The Stowaway Solution (On The Run #4),Gordon Korman,4.11,0439651395,9780439651394,eng,160,2041,82,10/1/2005,Scholastic -24048,The Abduction (Kidnapped #1),Gordon Korman,3.99,043984777X,9780439847773,eng,144,3306,263,5/1/2006,Scholastic Books -24050,The Fugitive Factor (On The Run #2),Gordon Korman,4.13,0439651379,9780439651370,eng,160,2499,151,6/1/2005,Scholastic -24052,Chasing The Falconers (On The Run #1),Gordon Korman,4.05,0439651360,9780439651363,eng,154,4598,371,4/1/2005,Scholastic Inc. -24054,Losing Joe's Place,Gordon Korman,4.05,0590427695,9780590427692,eng,233,797,46,10/1/1991,Scholastic Paperbacks -24056,Something Fishy at Macdonald Hall (Macdonald Hall #7),Gordon Korman,4.06,0590255223,9780590255226,eng,208,919,13,9/1/2000,Scholastic Paperbacks -24058,The Zucchini Warriors (Macdonald Hall #5),Gordon Korman,4.01,0590441744,9780590441742,eng,208,1160,42,6/1/1991,Scholastic -24060,The Contest (Everest Trilogy),Gordon Korman,3.85,0613589459,9780613589451,eng,137,12,2,8/1/2002,Turtleback Books -24062,The Deep (Dive Trilogy),Gordon Korman,3.78,0613674839,9780613674836,eng,148,0,0,7/1/2003,Turtleback Books -24064,No More Dead Dogs,Gordon Korman,3.71,0439294843,9780439294843,eng,180,12,2,9/1/2001,Scholastic Inc -24065,Radio Fifth Grade,Gordon Korman,3.55,0590419277,9780590419277,eng,192,522,47,8/1/1991,Scholastic Paperbacks -24066,The Climb (Everest Trilogy),Gordon Korman,3.90,061358466X,9780613584661,eng,151,3,0,7/1/2002,Turtleback Books -24073,The Contest (Everest #1),Gordon Korman,3.85,0439401399,9780439401395,eng,96,3561,230,8/1/2002,Scholastic Paperbacks -24079,Casino Royale (James Bond #1),Ian Fleming,3.73,0340425679,9780340425671,eng,188,56,8,10/1/1988,Coronet -24087,The Eternal Flame (Merlin #11),T.A. Barron/David Elliot,4.22,0399242139,9780399242137,eng,377,2506,48,10/19/2006,Philomel Books -24089,The Ivy Tree,Carolyn Brown,4.24,0803494661,9780803494664,eng,192,20,1,2/1/2001,Montlake Romance -24093,Street Magic (The Circle Opens #2),Tamora Pierce,4.15,0590396439,9780590396431,eng,300,21070,286,11/15/2006,Scholastic -24094,Wolf-Speaker (Immortals #2),Tamora Pierce,4.21,1416903445,9781416903444,eng,344,44061,661,6/1/2005,Simon Pulse -24096,Leonardo's Notebooks,Leonardo da Vinci/H. Anna Suh,3.93,1579124577,9781579124571,eng,352,36003,121,8/1/2005,Black Dog & Leventhal -24100,The Golden Notebook,Doris Lessing,3.76,006093140X,9780060931407,eng,640,16000,1219,2/3/1999,Harper Perennial Modern Classics -24115,Gödel Escher Bach: An Eternal Golden Braid,Douglas R. Hofstadter,4.29,0140289208,9780140289206,eng,777,330,26,3/30/2000,Penguin Books -24119,M Is for Mayflower: A Massachusetts Alphabet,Margot Theis Raven/Jeannie Brett,4.00,1585360724,9781585360727,eng,40,27,4,10/1/2002,Sleeping Bear Press -24121,Mayflower Treasure Hunt (A to Z Mysteries: Super Edition #2),Ron Roy/John Steven Gurney,4.19,0375839372,9780375839375,en-US,114,965,39,8/28/2007,Random House Books for Young Readers -24124,William Shakespeare’s: Romeo and Juliet (Shakespeare Retellings #4),Bruce Coville/Dennis Nolan,3.97,0803724624,9780803724624,eng,40,179,17,10/1/1999,Dial Books -24126,Jennifer Hecate Macbeth William McKinley and Me Elizabeth,E.L. Konigsburg,3.79,1416933964,9781416933960,eng,128,54,11,2/27/2007,Aladdin Paperbacks -24127,Death of a Charming Man (Hamish Macbeth #10),M.C. Beaton,3.79,0446403385,9780446403382,eng,176,3618,223,7/1/1995,Grand Central Publishing -24136,The Merchant of Venice,William Shakespeare/Robert Smith/Jonathan Morris,3.80,0521618754,9780521618755,eng,196,1549,36,8/1/2005,Cambridge University Press -24137,Catherine Called Birdy,Karen Cushman,3.71,0060739428,9780060739423,eng,224,33557,1280,6/1/2004,HarperTrophy -24147,How to Build a Time Machine,Paul Davies,3.82,0141005343,9780141005348,eng,148,67,9,7/2/2002,Penguin -24149,Around the World in 8 1/2 Days (Judy Moody #7),Megan McDonald/Peter H. Reynolds,4.15,0763628328,9780763628321,eng,157,3408,113,7/25/2006,Candlewick Press (MA) -24152,Judy Moody M.D.: The Doctor is In! (Judy Moody #5),Megan McDonald/Peter H. Reynolds,4.08,0763626155,9780763626150,eng,176,4554,151,3/14/2006,Candlewick Press -24154,Judy Moody Predicts the Future (Judy Moody #4),Megan McDonald/Peter H. Reynolds,4.07,0763623431,9780763623432,eng,160,93,13,2/3/2005,Candlewick Press -24155,Judy Moody Declares Independence (Judy Moody #6),Megan McDonald/Peter H. Reynolds,4.08,076362800X,9780763628000,eng,160,3884,132,1/26/2010,Candlewick -24156,Judy Moody Gets Famous! (Judy Moody #2),Megan McDonald/Peter H. Reynolds,4.04,0763619310,9780763619312,eng,126,8405,309,4/1/2003,Candlewick Press -24157,Judy Moody Saves the World! (Judy Moody #3),Megan McDonald/Peter H. Reynolds,4.03,0763620874,9780763620875,eng,160,6077,254,4/1/2004,Candlewick Press -24172,Amelia's Notebook (Amelia's Notebooks #1),Marissa Moss,4.01,1416909052,9781416909057,eng,40,5305,166,2/1/2006,Simon Schuster/Paula Wiseman Books -24173,Amelia's 6th-Grade Notebook (Amelia's Notebooks #15),Marissa Moss,4.02,068987040X,9780689870408,en-US,80,625,30,7/1/2005,Simon Schuster/Paula Wiseman Books -24178,Charlotte's Web,E.B. White/Garth Williams/Rosemary Wells,4.17,0064410935,9780064410939,eng,184,1300470,14739,10/1/2001,HarperCollinsPublishers -24179,Charlotte's Web,E.B. White/Garth Williams/Rosemary Wells,4.17,0061127760,9780061127762,en-US,224,227,18,10/31/2006,HarperCollins -24180,Charlotte's Web,E.B. White/Garth Williams/Kate DiCamillo,4.17,0060882611,9780060882617,en-US,192,220,21,10/31/2006,HarperCollins -24183,Charlotte's Web: Wilbur Finds a Friend,Jennifer Frantz/E.B. White/Aleksey Ivanov/Olga Ivanov,4.13,0060882816,9780060882815,eng,32,64,9,10/31/2006,HarperCollins -24188,Secrets of the Scorpion,Jed Carleton/Shawn Carman/Seth Mason/Robert Lee/Travis Heerman/Aaron Medwin/Matthew S. Armstrong/D.J. Trindle/Cris Dornaus/Eric Steiger,3.68,1887953795,9781887953795,eng,96,44,0,4/1/2003,Alderac Entertainment Group (AEG) -24192,The Runaway Jury,John Grisham,3.98,0385339690,9780385339698,eng,358,249884,1691,4/25/2006,Delta -24196,The Boys Start the War (Boy/Girl Battle #1),Phyllis Reynolds Naylor,4.02,0440418410,9780440418412,eng,144,1551,111,1/8/2002,Yearling -24198,The Boys Start the War the Girls Get Even,Phyllis Reynolds Naylor,4.13,0440409713,9780440409717,eng,10,366,23,6/1/1994,Yearling Books -24202,Boys Against Girls (Sweet Valley Twins #17),Francine Pascal/Jamie Suzanne,3.47,0553175262,9780553175264,eng,104,4,1,9/23/1988,Bantam Books -24205,Boys Against Girls (Sweet Valley Twins #17),Francine Pascal/Jamie Suzanne,3.47,0553155717,9780553155716,eng,104,18,2,3/1/1988,Bantam -24213,Alice's Adventures in Wonderland & Through the Looking-Glass,Lewis Carroll/John Tenniel/Martin Gardner,4.07,0451527747,9780451527745,eng,239,381097,6041,12/1/2000,Penguin Group (USA) -24215,Alice's Adventures in Wonderland: A Pop-Up Adaptation,Robert Sabuda/Lewis Carroll,4.33,0689847432,9780689847431,en-US,12,21875,111,10/1/2003,Little Simon -24217,Alice's Adventures in Wonderland and Through the Looking Glass,Lewis Carroll/John Tenniel/Tan Lin,4.07,1593080158,9781593080150,eng,286,2791,273,12/15/2003,Barnes & Noble Classics -24218,Alice's Adventures in Wonderland,Lewis Carroll/Helen Oxenbury,4.02,0763620491,9780763620493,eng,208,65,5,3/1/2003,Candlewick Press -24220,Alice's Adventures in Wonderland and Through the Looking-Glass (Alice's Adventures in Wonderland #1-2),Lewis Carroll/Hugh Haughton/John Tenniel,4.07,0141439769,9780141439761,eng,378,3409,228,3/27/2003,Penguin Books -24221,Alice's Adventures in Wonderland,Lewis Carroll/Helen Oxenbury,4.02,0763608041,9780763608040,eng,207,226,27,10/6/1999,Candlewick Press (MA) -24223,The Art of Warfare,Sun Tzu/Roger T. Ames,3.97,034536239X,9780345362391,eng,336,824,55,3/2/1993,Ballantine Books -24244,The Black Ice (Harry Bosch #2; Harry Bosch Universe #2),Michael Connelly,4.08,0446613444,9780446613446,eng,448,45274,1619,12/1/2003,Vision -24248,Black Ice (Ice #1),Anne Stuart,3.71,0778321711,9780778321712,eng,377,8284,628,4/26/2005,Mira Books -24249,A Cavern of Black Ice (Sword of Shadows #1),J.V. Jones,3.87,076534551X,9780765345516,eng,769,7919,163,3/1/2005,Tor Fantasy -24253,White Sky Black Ice (Nathan Active Mystery #1),Stan Jones,3.77,1569473331,9781569473337,eng,284,644,116,7/1/2003,Soho Crime -24255,Thus Spake the Corpse: An Exquisite Corpse Reader 1988-98 Vol 1 Poetry & Essays,Andrei Codrescu/Laura Rosenthal,3.83,1574231006,9781574231007,en-US,417,18,1,7/1/1999,Black Sparrow Press -24257,Thus Spoke Zarathustra,Friedrich Nietzsche,4.06,1845882423,9781845882426,eng,128,911,40,12/1/2006,Nonsuch Publishing -24268,A World Lit Only by Fire,William Manchester/Barrett Whitener,3.85,0786160446,9780786160440,en-US,10,38,4,3/1/2007,Blackstone Audiobooks -24270,War Comes to Willy Freeman (Arabus Family Saga #1),James Lincoln Collier/Christopher Collier,3.59,0440495040,9780440495048,eng,192,258,53,1/1/1987,Yearling -24271,Skellig (Skellig #1),David Almond,3.80,0440229081,9780440229087,eng,208,17160,1782,9/11/2001,Laurel Leaf -24273,Skellig: The Play,David Almond,3.61,0340854332,9780340854334,eng,128,42,3,11/13/2003,Hodder Children's Books -24281,Les Misérables,Victor Hugo/Charles E. Wilbour,4.17,0679600124,9780679600121,en-US,1260,728,122,9/5/1992,Modern Library -24283,Les Misérables,Victor Hugo/Charles E. Wilbour/James K. Robinson,4.30,0449300021,9780449300022,eng,400,4917,352,12/12/1982,Ballantine Books -24284,Les Misérables,Victor Hugo/Charles E. Wilbour/Peter Washington,4.17,0375403175,9780375403170,eng,1480,8004,474,3/31/1998,Everyman's Library -24288,Les Miserables (Stepping Stones),Monica Kulling/Victor Hugo,4.28,067986668X,9780679866688,eng,112,554,52,3/14/1995,Random House -24296,Because Of Winn Dixie,Kate DiCamillo,4.04,0439250722,9780439250726,eng,182,235,36,3/1/2000,Candlewick Press -24297,At the Edge of the World (Crispin #2),Avi,3.69,078685152X,9780786851522,en-US,234,2566,254,8/8/2006,Little Brown Books for Young Readers -24298,The Story of Avis,Elizabeth Stuart Phelps/Carol Phillips,3.55,0813510996,9780813510996,eng,250,180,14,6/1/1985,Rutgers University Press -24300,Poppy,Avi,3.96,0689837186,9780689837180,eng,163,6894,501,5/3/2005,Scholastic -24304,Poppy's Return,Avi/Brian Floca,3.99,0060000147,9780060000141,eng,256,1110,71,8/22/2006,HarperCollins -24305,The Secret School,Avi,3.79,0152046992,9780152046996,eng,176,3695,384,8/1/2003,HMH Books for Young Readers -24307,The Pen Is Mightier Than The Sword (The Amazing Days of Abby Hayes #6),Anne Mazer/Monica Gesue,3.96,0439178827,9780439178822,eng,128,1072,20,12/1/2001,Scholastic Paperbacks -24308,Have Wheels Will Travel (The Amazing Days of Abby Hayes #4),Anne Mazer/Monica Gesue,3.96,0439178789,9780439178785,eng,144,975,26,4/1/2001,Scholastic Paperbacks -24309,Out of Sight Out of Mind (The Amazing Days of Abby Hayes #9),Anne Mazer/Monica Gesue/Joyce White,3.88,0439353688,9780439353687,en-US,144,595,11,12/1/2002,Scholastic Paperbacks -24312,The Best Is Yet to Come (The Amazing Days of Abby Hayes Super Special #1),Anne Mazer,4.05,1417629754,9781417629756,eng,144,460,17,6/1/2004,Turtleback Books -24315,Violet Makes A Splash (Sister Magic),Anne Mazer/Bill Brown,3.96,0439872472,9780439872478,en-US,112,120,5,7/1/2007,Scholastic Paperbacks -24316,The Trouble With Violet,Anne Mazer/Bill Brown,3.89,0439872464,9780439872461,eng,112,223,36,7/1/2007,Scholastic Paperbacks -24330,Knowledge Is Power (The Amazing Days of Abby Hayes: #15),Anne Mazer,3.97,1417629762,9781417629763,eng,97,23,0,7/1/2004,Turtleback Books -24335,The Trumpet of the Swan,E.B. White/Fred Marcellino,4.08,0064408671,9780064408677,eng,252,63915,1825,10/3/2000,HarperCollins -24337,Ella Enchanted (Ella Enchanted #1),Gail Carson Levine,3.98,0590920685,9780590920681,eng,232,364091,8754,9/1/1998,Scholastic Books -24345,Sachs & Violens,Peter David/George Pérez,3.26,1401210503,9781401210502,en-US,128,66,9,12/6/2006,DC Comics -24346,Nicomachean Ethics,Aristotle/Joe Sachs,3.94,1585100358,9781585100354,eng,240,238,29,1/1/2002,Focus -24374,Harper Lee's To Kill a Mockingbird (Bloom's Guides),Harold Bloom/Harper Lee,4.41,0791077640,9780791077641,eng,98,4687,19,6/30/2004,Chelsea House Publications -24378,His Dark Materials,Nicholas Wright/Philip Pullman,4.02,185459768X,9781854597687,eng,236,38,4,4/1/2004,Nick Hern Books -24379,His Dark Materials: New Edition,Nicholas Wright/Philip Pullman,4.02,1854598317,9781854598318,eng,192,17,1,4/1/2005,Nick Hern Books -24381,His Dark Materials Trilogy (Northern Lights; The Subtle Knife; The Amber Spyglass),Philip Pullman,4.26,0439994349,9780439994347,eng,1016,341,22,11/16/2001,Hippo/Scholastic -24384,The Cricket in Times Square,George Selden/Garth Williams,4.02,0440228891,9780440228899,eng,134,55747,1374,5/11/1999,Yearling -24394,Lucie Babbidge's House,Sylvia Cassedy,3.73,038071812X,9780380718122,eng,242,162,21,4/1/1993,HarperCollins Publishers -24403,Nine Horses,Billy Collins,4.17,0375755209,9780375755200,eng,144,4107,246,10/14/2003,Random House Trade -24406,The Apple that Astonished Paris,Billy Collins,4.20,155728024X,9781557280244,eng,61,542,43,2/1/1999,University of Arkansas Press -24414,The Circle (Dan Lenson #3),David Poyer,4.09,0312929641,9780312929640,en-US,543,354,8,6/15/1993,St. Martin's Paperbacks -24424,The Sorority: Samantha (Sorority Trilogy #3),Tamara Thorne,3.72,0786015411,9780786015412,eng,288,183,18,8/1/2003,Pinnacle -24431,Trickster's Choice (Daughter of the Lioness #1),Tamora Pierce,4.27,0439968089,9780439968089,eng,453,43090,800,9/17/2004,Scholastic Press -24432,Trickster's Choice (Daughter of the Lioness #1),Tamora Pierce/Trini Alvarado,4.27,0307283798,9780307283795,eng,12,74,20,12/13/2005,Listening Library -24438,Video Girl Ai Vol. 15: Len's Story,Masakazu Katsura,3.75,142150295X,9781421502953,en-US,208,134,0,4/4/2006,VIZ Media -24441,The Ships of Earth (Homecoming Saga #3),Orson Scott Card,3.54,0812532635,9780812532630,eng,351,9326,125,1/15/1995,Tor Books -24442,Heathersleigh Homecoming (Secrets of Heathersleigh Hall #3),Michael R. Phillips,4.33,0764222376,9780764222375,eng,429,194,15,10/1/1999,Bethany House Publishers -24450,Bait and Switch: The (Futile) Pursuit of the American Dream,Barbara Ehrenreich,3.48,0805081240,9780805081244,eng,248,4002,473,7/25/2006,St. Martin's Press -24455,For Her Own Good: Two Centuries of the Experts' Advice to Women,Barbara Ehrenreich/Deirdre English,3.97,1400078008,9781400078004,en-US,410,2126,123,1/4/2005,Anchor -24457,Fear of Falling: The Inner Life of the Middle Class,Barbara Ehrenreich,3.91,0060973331,9780060973339,eng,292,331,23,9/26/1990,Harper Perennial -24459,On Duties (De Officiis),Marcus Tullius Cicero/Walter Miller,3.96,0674990331,9780674990333,eng,448,111,11,1/1/1913,Harvard University Press -24472,Peony in Love,Lisa See,3.60,140006466X,9781400064663,eng,273,37411,3719,6/26/2007,Random House -24473,See How She Dies,Lisa Jackson,3.90,0821776053,9780821776056,eng,510,2949,146,8/1/2004,Zebra Books -24475,Chuck Klosterman IV: A Decade of Curious People and Dangerous Ideas,Chuck Klosterman,3.85,0743284887,9780743284882,en-US,374,14639,667,9/5/2006,Scribner Book Company -24476,Fargo Rock City: A Heavy Metal Odyssey in Rural North Dakota,Chuck Klosterman,3.80,0743406567,9780743406567,eng,288,12448,526,5/1/2002,Scribner -24478,i am 8-bit: Art Inspired by Classic Videogames of the '80s,Jon M. Gibson/Chuck Klosterman,4.11,0811853195,9780811853194,en-US,156,114,12,3/30/2006,Chronicle Books -24497,No Idle Hands: The Social History of American Knitting,Anne Macdonald,4.02,0345362535,9780345362537,eng,512,456,61,5/19/1990,Ballantine -24510,How to be Idle,Tom Hodgkinson,3.81,0060779683,9780060779689,en-US,289,103,14,5/10/2005,Harpercollins -24517,The Stuffed Owl: An Anthology of Bad Verse,D.B. Wyndham-Lewis/Charles Lee/Billy Collins/Max Beerbohm,3.73,1590170385,9781590170380,eng,264,69,9,4/30/2003,NYRB Classics -24520,The Complete Aubrey/Maturin Novels (5 Volumes),Patrick O'Brian,4.70,039306011X,9780393060119,eng,6576,1338,81,10/17/2004,W. W. Norton Company -24521,The Hundred Days (Aubrey & Maturin #19),Patrick O'Brian,4.35,0393319792,9780393319798,eng,281,5325,150,11/17/1999,W. W. Norton Company -24524,The Final Unfinished Voyage of Jack Aubrey (Aubrey & Maturin #21),Patrick O'Brian/Richard Snow,3.99,039306025X,9780393060256,eng,144,2194,121,10/17/2004,W. W. Norton Company -24525,The Truelove (Aubrey & Maturin #15),Patrick O'Brian,4.36,0393310167,9780393310160,eng,304,6025,139,7/17/1993,W. W. Norton Company -24526,Blue at the Mizzen (Aubrey & Maturin #20),Patrick O'Brian,4.38,039332107X,9780393321074,eng,262,2375,95,9/17/2000,W. W. Norton Company -24530,Field Guide to Home Buying in America,Mark LeVine/Michael Pollan/Stephen M. Pollan,2.50,0671639617,9780671639617,eng,256,4,1,5/15/1988,Touchstone -24546,Gilliam on Gilliam (Directors on Directors),Terry Gilliam/Ian Christie,4.10,0571202802,9780571202805,eng,294,264,13,11/15/1999,Faber Faber -24562,The Adventures of Baron Munchausen: The Illustrated Screenplay,Terry Gilliam/Charles McKeown,3.52,155783041X,9781557830418,eng,238,11,0,4/1/1989,Rowman & Littlefield Publishers -24565,The Complete Monty Python's Flying Circus: All the Words Vol. 2,Graham Chapman/John Cleese/Terry Gilliam/Eric Idle/Terry Jones/Michael Palin,4.44,0679726489,9780679726487,eng,384,1212,18,11/12/1989,Pantheon -24566,The Pythons Autobiography by The Pythons,Graham Chapman/John Cleese/Terry Gilliam/Eric Idle/Terry Jones/Michael Palin/Bob McCabe,4.08,0312311451,9780312311452,eng,368,70,9,11/15/2005,St. Martin's Griffin -24568,The Complete Monty Python's Flying Circus: All the Words: Volume 1,Graham Chapman/Eric Idle/Terry Gilliam/John Cleese/Terry Jones/Michael Palin/Roger Wilmut,4.38,0679726470,9780679726470,eng,352,3172,40,11/12/1989,Pantheon -24569,The Gangs of New York,Herbert Asbury/Jorge Luis Borges,3.60,1560252758,9781560252757,eng,384,2835,209,10/30/2001,Basic Books -24572,All Around the Town,Herbert Asbury,3.62,1560255218,9781560255215,eng,364,95,3,10/24/2003,Basic Books -24580,The Adventures of Tom Sawyer and Adventures of Huckleberry Finn,Mark Twain/Shelly Fisher Fishkin,4.08,0451528646,9780451528643,eng,520,33489,453,12/3/2002,Signet Classics -24581,The Adventures of Tom Sawyer (Adventures of Tom and Huck #1),Mark Twain/Scott McKowen,3.91,1402714602,9781402714603,eng,224,1507,105,10/1/2004,Sterling -24583,The Adventures of Tom Sawyer (Adventures of Tom and Huck #1),Mark Twain/Guy Cardwell/John Seelye,3.91,0143039563,9780143039563,eng,244,667590,6783,2/28/2006,Penguin Classics -24589,The Moon in Hiding (The Green Lion Trilogy #2),Teresa Edgerton,4.00,0441542158,9780441542154,eng,208,162,4,9/1/1989,Ace -24591,The Short Stories Vol 3,Ernest Hemingway/Stacy Keach,3.77,0743527291,9780743527293,eng,5,80,6,3/1/2003,Simon Schuster Audio -24594,Selections from the Oakland Tribune Archives (Images of America: California),Annalee Allen,3.00,073854678X,9780738546780,eng,128,2,1,10/30/2006,Arcadia Publishing (SC) -24596,Sebastopol (Images of America: California),Western Sonoma County Historical Society,4.40,0738528528,9780738528526,eng,128,4,1,9/21/2003,Arcadia Publishing (SC) -24597,Center City Philadelphia in the 19th Century (Images of America: Pennsylvania),Library Company of Philadelphia,4.44,0738544922,9780738544922,eng,128,9,1,10/23/2006,Arcadia Publishing (SC) -24598,Juneau and Sauk Counties: 1850-2000 (Images of America: Wisconsin),Jacqueline Ann/Sheila Z.,2.67,0738519383,9780738519388,eng,128,3,0,3/5/2002,Arcadia Publishing -24601,Paris Spleen,Charles Baudelaire/Louise Varèse,4.30,0811200078,9780811200073,eng,118,7792,176,1/17/1970,New Directions -24603,The Writer of Modern Life: Essays on Charles Baudelaire,Walter Benjamin/Michael W. Jennings/Rodney Livingstone/Edmund F.N. Jephcott/Harry Zohn/Howard Eiland,4.30,0674022874,9780674022874,eng,307,267,4,11/1/2006,Belknap Press -24604,Flowers of Evil and Other Works/Les Fleurs du Mal et Oeuvres Choisies : A Dual-Language Book (Dover Foreign Language Study Guides) (English and French Edition),Charles Baudelaire/Wallace Fowlie,4.35,0486270920,9780486270920,fre,304,569,24,5/1/1992,Dover Publications -24605,On Wine and Hashish,Charles Baudelaire/Andrew Brown/Margaret Drabble,3.93,1843910179,9781843910176,eng,88,751,17,9/1/2002,Hesperus Press -24606,Intimate Journals,Charles Baudelaire/Christopher Isherwood/W.H. Auden,3.73,0486447782,9780486447780,eng,128,217,27,6/16/2006,Dover Publications -24607,The Painter of Modern Life and Other Essays (Phaidon Arts and Letters),Charles Baudelaire/Jonathon Mayne,3.96,0714833657,9780714833651,eng,310,639,14,8/24/1995,Phaidon Press -24612,Candide,Voltaire/Larousse,3.77,2038717001,9782038717006,fre,240,217,15,5/1/2007,Larousse Kingfisher Chambers -24613,Candide,Voltaire/Mona Mulhair,3.77,0743280547,9780743280549,fre,286,3,1,10/1/2005,Kaplan -24614,The Handbook (The Encheiridion),Epictetus/Nicholas P. White,4.23,0915145693,9780915145690,eng,35,708,57,6/1/1983,Hackett Publishing Company Inc. -24617,A Manual for Living,Epictetus/Sharon Lebell,4.23,0062511114,9780062511119,eng,96,171,14,6/23/1994,HarperOne -24620,Discourses Books 3-4. The Enchiridion (Loeb Classical Library #218),Epictetus/William A. Oldfather,4.34,0674992407,9780674992405,eng,576,110,7,1/1/1928,Harvard University Press (Cambridge) -24626,A Stranger Came Ashore,Mollie Hunter/Lisa Falkenstern,3.82,0064400824,9780064400824,eng,163,464,49,4/6/1977,HarperCollins Publishers -24634,Rob Roy MacGregor,Nigel Tranter,3.93,1897784317,9781897784310,eng,192,100,3,9/1/2012,Neil Wilson Publishing -24635,Rob Roy,Walter Scott,3.70,0543899403,9780543899408,eng,537,4,0,11/16/2000,Adamant Media Corporation -24636,From Glencoe to Stirling: Rob Roy the Highlanders & Scotlands Chivalric Age (Tales of a Scottish Grandfather 3),Walter Scott/George Grant,3.70,1581821298,9781581821291,eng,288,12,1,10/20/2000,Cumberland House Publishing -24647,Myths of the Norsemen: Retold from the Old Norse Poems and Tales,Roger Lancelyn Green/Alan Langford,4.00,0140367381,9780140367386,eng,262,425,27,11/1/1994,Puffin Books -24655,D'Aulaires' Book of Norse Myths,Ingri d'Aulaire/Edgar Parin d'Aulaire/Michael Chabon,4.39,159017125X,9781590171257,eng,154,3485,260,5/31/2005,New York Review of Books -24657,Penguin Book Of Norse Myths: Gods Of The Vikings,Kevin Crossley-Holland,4.20,0140258698,9780140258691,en-GB,276,116,9,1/7/1997,Penguin UK -24658,The Prose Edda,Snorri Sturluson/Jesse L. Byock,4.17,0140447555,9780140447552,eng,180,8625,321,7/28/2005,Penguin Classics -24660,Exploring the Northern Tradition: A Guide to the Gods Lore Rites and Celebrations From the Norse German and Anglo-Saxon Traditions,Galina Krasskova/Swain Wódening,3.83,1564147916,9781564147912,eng,224,443,29,5/15/2005,New Page Books -24666,Tales of the Norse Gods,Barbara Leonie Picard/Rosamund Fowler,4.05,0192751166,9780192751164,en-GB,160,43,4,3/22/2001,Oxford University Press USA -24671,The Tristan Betrayal,Robert Ludlum,3.84,0312990685,9780312990688,eng,505,5942,150,10/17/2004,St. Martin's Paperbacks -24674,Isolde Queen of the Western Isle (Tristan and Isolde #1),Rosalind Miles,3.64,1400047862,9781400047864,eng,360,2260,151,6/24/2003,Broadway Books -24676,The Ultimate Guide to Anal Sex for Women,Tristan Taormino,4.11,1573442216,9781573442213,eng,180,382,26,1/27/2006,Cleis Press -24682,Oh The Places You’ll Go!,Dr. Seuss,4.35,0007158521,9780007158522,eng,48,969,75,5/6/2003,HarperCollinsChildren’sBooks -24686,Toys Go Out: Being the Adventures of a Knowledgeable Stingray a Toughy Little Buffalo and Someone Called Plastic (Toys #1),Emily Jenkins/Paul O. Zelinsky,3.94,0375836047,9780375836046,eng,116,3983,513,9/12/2006,Schwartz & Wade Books -24692,Melville: His World and Work,Andrew Delbanco,4.04,0375702970,9780375702976,eng,448,273,37,9/12/2006,Vintage -24703,Racso and the Rats of NIMH (Rats of NIMH #2),Jane Leslie Conly/Leonard B. Lubin,3.77,0064402452,9780064402453,eng,288,3314,95,9/1/1988,HarperCollins -24704,R-T Margaret and the Rats of NIMH (Rats of NIMH #3),Jane Leslie Conly/Leonard B. Lubin,3.54,0064403874,9780064403870,eng,272,662,29,9/30/1991,HarperCollins -24711,The Dance of the Dissident Daughter,Sue Monk Kidd,3.95,006064589X,9780060645892,eng,256,5645,603,8/20/2002,HarperOne -24723,Talk Talk,T. Coraghessan Boyle,3.42,0670037702,9780670037704,en-US,340,4094,497,7/6/2006,Viking Books -24724,Drop City,T. Coraghessan Boyle/Richard Poe,3.85,0142003808,9780142003800,eng,497,10333,879,1/27/2004,Penguin Books -24725,Tooth and Claw,T. Coraghessan Boyle,3.82,0143037439,9780143037439,eng,304,1193,95,6/27/2006,Penguin Books -24727,East Is East,T. Coraghessan Boyle,3.64,0140131671,9780140131673,eng,384,2098,113,8/1/1991,Penguin Books -24729,After the Plague: and Other Stories,T. Coraghessan Boyle,3.86,0142001414,9780142001417,eng,303,1253,108,12/31/2002,Penguin Books -24733,Descent of Man,T. Coraghessan Boyle,3.96,0140299947,9780140299946,eng,240,605,44,7/27/1990,Penguin Books -24736,World's End,T. Coraghessan Boyle,4.01,0140299939,9780140299939,eng,480,3270,218,7/20/1990,Penguin Books -24737,If the River Was Whiskey: Stories,T. Coraghessan Boyle,3.94,0670826901,9780670826902,eng,224,34,3,5/24/1989,Viking Books -24739,If the River Was Whiskey,T. Coraghessan Boyle,3.94,0140119507,9780140119503,eng,240,1038,69,5/1/1990,Penguin Books -24749,American Writers Supplement VIII,Jay Parini/August Wilson,0.00,0684806371,9780684806372,eng,400,0,0,5/1/2001,Gale Cengage -24751,Greasy Lake & Other Stories,T. Coraghessan Boyle,3.94,0140077812,9780140077810,eng,240,1065,52,5/6/1986,Penguin Books -24753,L'Orient c'est l'Orient,T. Coraghessan Boyle,3.64,2246442613,9782246442615,fre,370,0,0,9/1/1993,Grasset -24761,An Acceptable Time (Time Quintet #5),Madeleine L'Engle,3.82,0440208149,9780440208143,eng,343,16434,639,12/1/1990,Laurel Leaf Books -24762,Conversations with Kurt Vonnegut,William Rodney Allen/Kurt Vonnegut Jr.,4.05,0878053573,9780878053575,en-US,305,3,1,1/1/1988,University Press of Mississippi -24763,So Yesterday,Scott Westerfeld,3.58,1595140328,9781595140326,eng,256,10390,820,9/8/2005,Razorbill -24765,Specials (Uglies #3),Scott Westerfeld,3.77,0689865406,9780689865404,eng,384,151825,6730,5/9/2006,Simon Pulse -24767,Touching Darkness (Midnighters #2),Scott Westerfeld,3.89,0060519568,9780060519568,eng,439,17135,675,3/1/2006,Harper Teen -24768,Pretties (Uglies #2),Scott Westerfeld,3.85,0689865392,9780689865398,eng,370,211060,8890,11/1/2005,Simon & Schuster Simon Pulse -24769,Blue Noon (Midnighters #3),Scott Westerfeld,3.85,0060519592,9780060519599,eng,384,14798,718,2/6/2007,Eos -24770,Uglies (Uglies #1),Scott Westerfeld,3.86,0689865384,9780689865381,eng,425,516152,20708,2/8/2005,Simon Pulse -24771,Evolution's Darling,Scott Westerfeld,3.51,1568581491,9781568581491,eng,290,444,56,4/3/2000,Running Press -24775,The Butterfly Tattoo,Philip Pullman,3.19,0330397966,9780330397964,eng,186,1048,83,9/2/2005,Young Picador -24777,Count Karlstein,Philip Pullman/Diana Bryan,3.50,0375803483,9780375803482,eng,256,1712,116,2/22/2000,Yearling -24779,The Castle of Llyr (The Chronicles of Prydain #3),Lloyd Alexander,4.08,0805080503,9780805080506,eng,174,30401,723,5/16/2006,Square Fish -24780,The Book of Three (The Chronicles of Prydain #1),Lloyd Alexander,3.99,0805080481,9780805080483,en-US,190,64278,2525,5/16/2006,Square Fish -24781,The High King (The Chronicles of Prydain #5),Lloyd Alexander,4.25,080508052X,9780805080520,eng,253,48088,954,5/16/2006,Square Fish -24782,Taran Wanderer (The Chronicles of Prydain #4),Lloyd Alexander,4.14,0805080511,9780805080513,eng,222,34770,840,5/16/2006,Square Fish -24783,Westmark (Westmark #1),Lloyd Alexander,3.92,0141310685,9780141310688,eng,184,4222,180,1/14/2002,Firebird Books -24784,The Black Cauldron (The Chronicles of Prydain #2),Lloyd Alexander,4.13,080508049X,9780805080490,eng,182,53962,1200,5/16/2006,Square Fish -24785,The Foundling and Other Tales of Prydain,Lloyd Alexander,3.93,0805080538,9780805080537,eng,98,3637,157,5/16/2006,Square Fish -24786,The Prydain Companion: A Reference Guide to Lloyd Alexander's Prydain Chronicles,Michael O. Tunnell/Lloyd Alexander,4.22,0805072713,9780805072716,eng,281,83,4,4/1/2003,Henry Holt and Company -24787,A Lloyd Alexander Collection,Lloyd Alexander,4.24,0525467777,9780525467779,eng,752,89,7,5/21/2001,Dutton Children's Books -24788,The Philadelphia Adventure,Lloyd Alexander,3.88,0142301442,9780142301449,eng,150,571,10,7/8/2002,Puffin Books -24789,Libra,Don DeLillo/Michel Courtois-Fourcy,3.99,2742731105,9782742731107,fre,656,8,1,1/1/2001,Babel -24796,Zorro,Isabel Allende/Margaret Sayers Peden/محمدعلی مهمان‌نوازان,3.76,006078721X,9780060787219,eng,677,16324,1145,5/3/2005,HarperLargePrint -24800,House of Leaves,Mark Z. Danielewski,4.10,038560310X,9780385603102,eng,705,97710,7357,3/7/2000,Random House -24804,A Parchment of Leaves,Silas House,4.18,0345464974,9780345464972,eng,304,3192,357,8/26/2003,Ballantine Books -24807,The Areas of My Expertise: An Almanac of Complete World Knowledge Compiled with Instructive Annotation and Arranged in Useful Order,John Hodgman,3.82,1594482225,9781594482229,eng,255,12002,741,9/5/2006,Penguin Books -24812,The Complete Calvin and Hobbes,Bill Watterson,4.82,0740748475,9780740748479,eng,1456,32213,930,9/6/2005,Andrews McMeel Publishing -24813,The Calvin and Hobbes Tenth Anniversary Book,Bill Watterson,4.63,0836204387,9780836204384,eng,208,49122,368,9/5/1995,Andrews McMeel Publishing -24814,It's a Magical World (Calvin and Hobbes #11),Bill Watterson,4.76,0836221362,9780836221367,eng,176,23875,303,9/1/1996,Andrews McMeel Publishing -24816,Homicidal Psycho Jungle Cat (Calvin and Hobbes #9),Bill Watterson,4.72,0836217691,9780836217698,eng,176,15365,290,9/6/1994,Andrews McMeel Publishing -24818,The Days Are Just Packed,Bill Watterson,4.69,0836217357,9780836217353,eng,176,20308,244,9/1/1993,Andrews McMeel Publishing -24819,The Calvin And Hobbes: Tenth Anniversary Book,Bill Watterson,4.63,0751515574,9780751515572,eng,208,303,12,2/1/2008,Time Warner Books UK -24820,Calvin and Hobbes: Sunday Pages 1985-1995: An Exhibition Catalogue,Bill Watterson,4.71,0740721356,9780740721359,eng,96,3613,85,9/17/2001,Andrews McMeel Publishing -24827,Ship of Fools,Richard Paul Russo,3.74,0441008933,9780441008933,eng,370,2192,206,12/31/2001,Ace -24828,The Rosetta Codex,Richard Paul Russo,3.21,0441013309,9780441013302,en-US,384,22,2,12/6/2005,Ace Trade -24832,The Illustrated Man,Ray Bradbury,4.14,0553105574,9780553105575,eng,186,89,7,1/1/1976,Bantam Books -24835,The Sot-Weed Factor,John Barth,4.09,1903809509,9781903809501,eng,756,5911,257,3/1/2005,Atlantic Books (UK) -24836,The Floating Opera and The End of the Road,John Barth,4.03,0385240899,9780385240895,eng,442,1933,115,3/11/1997,Anchor Books -24840,Chimera,John Barth,3.73,0618131701,9780618131709,en-US,308,1775,86,11/20/2001,Mariner Books -24842,Letters,John Barth,3.81,1564780619,9781564780614,eng,772,212,15,10/1/1994,Dalkey Archive Press -24850,Scar Lover,Harry Crews,3.79,0671797867,9780671797867,eng,288,797,39,2/23/1993,Touchstone -24858,Narcisse et Goldmund,Hermann Hesse,4.20,2253000043,9782253000044,fre,251,229,19,1/1/1991,Le Livre de Poche -24863,Demian,Hermann Hesse/Stanley Appelbaum,4.13,0486420426,9780486420424,mul,256,28,3,6/11/2002,Dover Publications -24865,The Ship Avenged,S.M. Stirling,4.06,0671877666,9780671877668,eng,364,3217,29,2/1/1997,Baen Books -24866,Dragon's Kin (Pern #17),Anne McCaffrey/Todd McCaffrey,3.92,0345462009,9780345462008,eng,298,8100,185,12/28/2004,Del Rey -24873,Dragonflight (Pern: Dragonriders of Pern #1),Anne McCaffrey/Dick Hill,4.10,1597379514,9781597379519,en-US,8,118,20,9/25/2005,Brilliance Audio -24875,House of Stairs,William Sleator,3.85,0140345809,9780140345803,eng,176,3423,447,4/1/1991,Puffin Books -24878,Oddballs,William Sleator,3.87,0140374388,9780140374384,eng,144,269,43,6/1/1995,Puffin Books -24880,Hell Phone,William Sleator,3.50,0810954796,9780810954793,en-US,252,570,88,9/26/2006,Harry N. Abrams -24881,The Beasties,William Sleator,3.83,0141306394,9780141306391,eng,208,846,90,10/1/1999,Puffin Books -24884,The Duplicate,William Sleator,3.68,0141304316,9780141304311,eng,154,484,40,6/1/1999,Puffin Books -24885,Strange Attractors,William Sleator,3.72,0140345825,9780140345827,eng,176,230,7,4/1/1991,Puffin Books -24887,Parasite Pig (Interstellar Pig #2),William Sleator,3.64,0142400866,9780142400869,en-US,224,355,31,2/9/2004,Firebird -24888,The Boy Who Couldn't Die,William Sleator,3.68,0810987902,9780810987906,eng,161,1683,247,4/1/2005,Harry N. Abrams -24889,Among the Dolls,William Sleator,3.65,0765352397,9780765352392,eng,96,548,84,5/2/2006,Starscape -24893,That's Silly,William Sleator/Lawrence Di Fiori,3.60,0525409815,9780525409816,eng,46,5,2,4/14/1981,Dutton Books -24894,Once Said Darlene,William Sleator/Steven Kellogg,3.62,0525364102,9780525364108,eng,55,8,0,3/22/1979,Dutton Books -24898,Boltzmon!,William Sleator,3.62,0525461310,9780525461319,eng,160,86,5,9/1/1999,Dutton Juvenile -24899,Interstellar Pig (Interstellar Pig #1),William Sleator,3.88,0340850620,9780340850626,eng,200,2115,197,12/6/2001,Hodder Children's Books -24904,A Birthday for Frances,Russell Hoban/Lillian Hoban,4.24,0099432447,9780099432449,eng,32,2256,71,6/6/2002,Harper Collins -24905,Pilgermann,Russell Hoban,4.02,0747556407,9780747556404,en-GB,240,256,13,1/2/2002,Bloomsbury Publishing PLC -24908,How Tom Beat Captain Najork and His Hired Sportsmen (Captain Najork #1),Russell Hoban/Quentin Blake,4.29,1567923224,9781567923223,eng,32,307,42,10/1/2006,David R. Godine -24910,World's Fair,E.L. Doctorow,3.83,0452275725,9780452275720,eng,304,3178,229,5/1/1996,Plume -24914,The March,E.L. Doctorow,3.80,0812976150,9780812976151,eng,363,8266,831,9/12/2006,Random House Trade Paperbacks -24917,Three Complete Novels: Billy Bathgate/World's Fair/Loon Lake,E.L. Doctorow,4.29,0517100789,9780517100783,eng,658,17,3,5/8/1994,Wings -24920,The Discomfort Zone: A Personal History,Jonathan Franzen,3.40,0374299196,9780374299194,eng,195,4760,532,9/5/2006,Farrar Straus Giroux -24922,A Confederacy of Dunces,John Kennedy Toole,3.89,0140282688,9780140282689,eng,397,540,47,2/26/2003,Penguin Books Limited (UK) -24923,A Confederacy of Dunces,John Kennedy Toole/Walker Percy,3.89,0141182865,9780141182865,eng,338,1561,169,3/30/2000,Penguin Classics -24925,La conjura de los necios,John Kennedy Toole,3.89,8496333604,9788496333604,spa,462,70,6,1/10/2006,Quinteto -24929,Lost,Gregory Maguire/Douglas Smith,2.82,0060988649,9780060988647,eng,340,13152,904,9/17/2002,William Morrow Paperbacks -24930,The Dream Stealer,Gregory Maguire/Diana Bryan,3.64,0618181881,9780618181889,eng,132,433,56,10/21/2002,Clarion Books -24933,Four Stupid Cupids (The Hamlet Chronicles #4),Gregory Maguire/Elaine Clayton,3.52,0064410722,9780064410724,eng,224,111,11,12/4/2001,HarperCollins -24937,Wicked: The Grimmerie,David Cote/Stephen Schwartz/Joan Marcus/Winnie Holzman,4.18,1401308201,9781401308209,eng,192,49109,290,10/26/2005,Hachette Books -24939,A Little Bit Wicked (Last Man Standing #1),Victoria Alexander,3.80,006088262X,9780060882624,eng,359,2209,88,12/26/2006,Avon -24942,My Wicked Wicked Ways,Errol Flynn/Jeffrey Meyers,4.02,1845130499,9781845130497,eng,438,1583,115,2/25/2005,Aurum -24944,The Wonderful Story of Henry Sugar and Six More,Roald Dahl,4.14,0553152645,9780553152647,eng,215,60,7,1/18/1984,Bantam Books -24945,The Wonderful Story Of Henry Sugar and Six More,Roald Dahl,4.14,0141311495,9780141311494,eng,224,252,21,9/27/2001,Puffin Books -24949,Danny The Champion of the World,Roald Dahl/Jill Bennett,4.09,0553152890,9780553152890,eng,196,7,3,6/1/1984,Yearling -24951,Danny the Champion of the World,Roald Dahl,4.09,0435122215,9780435122218,eng,208,20,1,9/1/2009,Heinemann Library -24953,Danny The Champion Of The World,Roald Dahl/Quentin Blake,4.09,022406469X,9780224064699,eng,256,107,9,11/7/2002,Jonathan Cape -24955,Danny Champion Du Monde,Roald Dahl,4.09,201321894X,9782013218948,fre,281,7,0,9/5/2001,Hachette -24956,The Science of the Hitchhiker's Guide to the Galaxy,Michael Hanlon,3.60,0230008909,9780230008908,eng,208,168,16,8/8/2006,Palgrave Macmillan -24958,The Dark Is Rising Sequence,Susan Cooper,4.28,0140316884,9780140316889,eng,786,266,16,10/25/1984,Puffin Books (Penguin Books) -24964,The Essential Kierkegaard,Søren Kierkegaard/Howard Vincent Hong/Edna Hatlestad Hong,4.20,0691019401,9780691019406,eng,524,1807,44,6/19/2000,Princeton University Press -24965,Fear and Trembling,Søren Kierkegaard/Alastair Hannay,4.00,0143037579,9780143037576,eng,160,14185,559,5/30/2006,Penguin Books -24968,Fear and Trembling/Repetition,Søren Kierkegaard/Edna Hatlestad Hong/Howard Vincent Hong,4.23,0691020264,9780691020266,eng,420,4731,96,6/1/1983,Princeton University Press -24970,Either/Or: A Fragment of Life,Søren Kierkegaard/Victor Eremita/Alastair Hannay,4.17,0140445773,9780140445770,eng,640,6405,127,12/1/1992,Penguin Classics -24978,Inside Job,Connie Willis,3.67,1596060247,9781596060241,eng,99,1442,180,6/1/2005,Subterranean Press -24979,Miracle and Other Christmas Stories,Connie Willis,3.90,0553580485,9780553580488,eng,336,1681,199,10/31/2000,Bantam -24980,Lincoln's Dreams,Connie Willis,3.52,0553270257,9780553270259,eng,245,3542,303,6/1/1992,Bantam Doubleday Dell Publishing Company Inc. -24982,Uncharted Territory,Connie Willis,3.51,0553562940,9780553562941,eng,149,1240,122,6/1/1994,Spectra -24984,Passage,Connie Willis,3.69,0553580515,9780553580518,eng,780,7331,753,1/2/2002,Bantam -24985,Bellwether,Connie Willis,3.92,0553562967,9780553562965,eng,248,9419,1110,6/2/1997,Spectra -25002,Writing Degree Zero,Roland Barthes/Annette Lavers/Colin Smith/Susan Sontag,3.88,0809013843,9780809013845,eng,96,19,0,5/1/1977,Hill and Wang -25005,New Worlds Ancient Texts: The Power of Tradition and the Shock of Discovery,Anthony Grafton,3.62,0674618769,9780674618763,eng,296,71,4,3/15/1995,Belknap Press -25012,The Book of My Life,Girolamo Cardano/Jean Stoner/Anthony Grafton,3.75,1590170164,9781590170168,en-GB,320,72,12,10/31/2002,NYRB Classics -25013,A Crack in the Edge of the World,Simon Winchester,3.78,0060572000,9780060572006,eng,419,5413,499,10/10/2006,Harper Perennial -25014,The Map That Changed the World: William Smith and the Birth of Modern Geology,Simon Winchester,3.82,0060931809,9780060931803,eng,329,10452,539,7/30/2002,Perennial -25015,The River at the Center of the World: A Journey Up the Yangtze & Back in Chinese Time,Simon Winchester,3.92,0312423373,9780312423377,eng,416,1398,95,4/1/2004,Picador -25016,Outposts: Journeys to the Surviving Relics of the British Empire,Simon Winchester,3.79,0060598611,9780060598617,eng,400,1209,106,6/15/2004,Harper Perennial -25017,Krakatoa: The Day the World Exploded: August 27 1883,Simon Winchester,3.87,0060838590,9780060838591,eng,464,15680,1074,7/5/2005,Harper Perennial -25021,How the Irish Saved Civilization,Thomas Cahill,3.81,0340637870,9780340637876,en-GB,256,91,13,3/3/2003,Sceptre -25023,Irish Traditional Cooking: Over 300 Recipes from Ireland's Heritage,Darina Allen/Regina Sexton,4.19,190492011X,9781904920113,eng,288,200,7,12/22/2004,Kyle Books -25025,The Scotch-Irish: A Social History,James Graham Leyburn,3.97,0807842591,9780807842591,eng,377,210,25,8/30/1989,University of North Carolina Press -25027,Irish Blessings,Ashley Shannon,4.05,0762404787,9780762404780,eng,128,29,2,2/22/1999,Running Press -25032,Classical Drawing Atelier: A Contemporary Guide to Traditional Studio Practice,Juliette Aristides,4.12,0823006573,9780823006571,eng,160,3686,24,11/1/2006,Watson-Guptill -25033,Common Herbs for Natural Health,Juliette De Bairacli Levy/Heather Wood,4.45,0961462094,9780961462093,eng,223,113,7,4/11/1996,Ash Tree Publishing -25034,The Complete Herbal Handbook for the Dog and Cat,Juliette De Bairacli Levy,4.31,0571161154,9780571161157,eng,368,106,7,4/8/1991,Faber Faber -25037,El rey de Les Halles,Juliette Benzoni/Francisco Rodriguez de Lecea,4.19,8466619453,9788466619455,spa,448,207,5,1/1/2007,Ediciones B -25041,The Case of the Snowboarding Superstar (Jigsaw Jones #29),James Preller/R.W. Alley/Jamie Smith,3.98,0439793955,9780439793957,en-US,80,123,13,1/1/2006,Scholastic -25044,The Case Of The Kidnapped Candy (Jigsaw Jones Mystery #30),James Preller/R.W. Alley/Jamie Smith,3.75,0439896185,9780439896184,eng,80,104,6,1/1/2007,Scholastic -25045,The Case of the Marshmallow Monster (Jigsaw Jones #11),James Preller/R.W. Alley,3.92,0439184738,9780439184731,en-US,80,227,17,3/1/2001,Scholastic Paperbacks -25047,The Case of the Stinky Science Project (Jigsaw Jones #9),James Preller/John Speirs/James Preller,3.83,0439114284,9780439114288,en-US,80,162,11,3/1/2001,Scholastic Paperbacks -25048,The Case Of The Buried Treasure,James Preller/Jamie Smith/R.W. Alley,3.92,043930931X,9780439309318,eng,112,101,9,1/1/2002,Scholastic Paperbacks -25050,The Case of the Mummy Mystery (Jigsaw Jones #6),James Preller/John Speirs/R.W. Alley,3.81,0439080940,9780439080941,en-US,80,327,22,3/1/2001,Scholastic Paperbacks -25051,Mrs. Piggle-Wiggle (Mrs. Piggle Wiggle #1),Betty MacDonald/Alexandra Boiger,4.16,0064401480,9780064401487,eng,128,48919,1089,8/14/2007,HarperCollins -25052,Mrs. Piggle-Wiggle's Magic (Mrs. Piggle Wiggle #2),Betty MacDonald/Alexandra Boiger,4.16,0064401510,9780064401517,eng,192,13359,236,8/14/2007,HarperCollins -25053,Hello Mrs. Piggle-Wiggle (Mrs. Piggle Wiggle #4),Betty MacDonald/Alexandra Boiger,4.24,0064401499,9780064401494,eng,125,14745,203,8/14/2007,HarperCollins -25055,Mrs. Piggle-Wiggle Treasury (Mrs. Piggle Wiggle #1-2 #4),Betty MacDonald/Hilary Knight,4.46,0060248122,9780060248123,eng,392,922,86,6/15/1995,HarperCollins -25059,Brightness Reef (Uplift Storm Trilogy #1),David Brin,3.90,0553573306,9780553573305,eng,661,8963,153,10/1/1996,Spectra -25060,Brightness Falls,Jay McInerney,3.74,0747553718,9780747553717,eng,432,46,0,8/6/2001,Bloomsbury -25061,This Side of Brightness,Colum McCann,3.85,0312421974,9780312421977,eng,304,2506,264,1/1/2003,Picador -25065,Dazzling Brightness (Greek Myths #1),Roberta Gellis,3.84,0786000236,9780786000234,eng,446,196,16,6/1/1994,Pinnacle -25069,Bright Lights Big City,Jay McInerney/Sylvie Durastanti,3.77,2879290937,9782879290935,fre,192,68,5,10/14/1997,Editions de l'Olivier -25074,How it Ended,Jay McInerney,3.49,0747553564,9780747553564,eng,196,762,56,8/6/2009,Bloomsbury Publishing PLC -25078,Savage Inequalities: Children in America's Schools,Jonathan Kozol,4.25,0060974990,9780060974992,eng,272,15923,666,6/12/1992,Harper Perennial -25083,Skipping Towards Gomorrah: The Seven Deadly Sins and the Pursuit of Happiness in America,Dan Savage,3.81,0452284163,9780452284166,eng,320,3090,195,9/30/2003,Penguin Books -25084,Savage Love: Straight Answers from America's Most Popular Sex Columnist,Dan Savage,3.85,0452278155,9780452278158,en-GB,352,900,61,10/1/1998,Penguin Books -25099,The Doll's House (The Sandman #2),Neil Gaiman/Steve Parkhouse/Chris Bachalo/Michael Zulli/Mike Dringenberg/Malcolm Jones III/Todd Klein/Clive Barker,4.44,1563892251,9781563892257,eng,232,63599,1518,3/10/1999,Vertigo -25100,Dream Country (The Sandman #3),Neil Gaiman/Kelley Jones/Charles Vess/Colleen Doran/Malcolm Jones III/Steve Erickson,4.24,156389226X,9781563892264,eng,111,84421,1201,2/5/1999,DC Comics -25101,Season of Mists (The Sandman #4),Neil Gaiman/Matt Wagner/George Pratt/Dick Giordano/Kelley Jones/P. Craig Russell/Mike Dringenberg/Malcolm Jones III/Todd Klein/Harlan Ellison,4.54,1563890356,9781563890352,eng,217,50951,1038,3/10/1999,Vertigo -25102,A Game of You (The Sandman #5),Neil Gaiman/Shawn McManus/Colleen Doran/Bryan Talbot/George Pratt/Stan Woch/Dick Giordano/Todd Klein,4.43,1563890933,9781563890932,eng,192,43065,876,3/10/1999,Vertigo -25103,World's End (The Sandman #8),Neil Gaiman/Mike Allred/Gary Amaro/Mark Buckingham/David Giordano/Tony Harris/Steve Leialoha/Vince Locke/Shea Anton Pensa/Alec Stevens/Bryan Talbot/John Watkiss/Todd Klein/Michael Zulli/Stephen King,4.47,1563891700,9781563891700,eng,160,36629,675,7/16/1999,Vertigo -25104,The Wake (The Sandman #10),Neil Gaiman/Michael Zulli/Jon J. Muth/Charles Vess/Mikal Gilmore,4.52,1563892871,9781563892875,eng,191,37038,767,9/3/1999,Vertigo -25106,Fables & Reflections (The Sandman #6),Neil Gaiman/Bryan Talbot/Stan Woch/P. Craig Russell/Shawn McManus/John Watkiss/Jill Thompson/Duncan Eagleson/Kent Williams/Todd Klein,4.45,1563891069,9781563891069,eng,263,40736,776,3/10/1999,DC Comics -25109,Common Ground: A Turbulent Decade in the Lives of Three American Families,J. Anthony Lukas,4.28,0394746163,9780394746166,eng,688,2061,194,8/12/1986,Vintage -25112,Common Ground: The Water Earth and Air We Share,Molly Bang,3.74,0590100564,9780590100564,eng,40,98,29,10/1/1997,Blue Sky Press -25118,Uncommon Ground: Rethinking the Human Place in Nature,William Cronon,4.16,0393315118,9780393315110,eng,560,664,23,10/17/1996,W. W. Norton Company -25120,Uncommon Grounds (Maggy Thorsen Mystery #1),Sandra Balzo,3.61,1410402363,9781410402363,en-US,245,187,41,9/1/2005,Five Star Trade -25129,The Ecological Approach to Visual Perception,James J. Gibson,4.26,0898599598,9780898599596,eng,348,139,12,9/1/1986,Psychology Press -25142,Fucked By Rock + Cd,Mark Manning,3.96,1840680733,9781840680737,eng,205,1,0,10/1/2001,Creation Books -25148,The Fuck-Up,Arthur Nersesian,3.55,0671027638,9780671027636,eng,304,10655,414,5/1/1999,MTV Books -25150,Pledged: The Secret Life of Sororities,Alexandra Robbins,3.18,1401300464,9781401300463,en-US,384,245,30,4/14/2004,Hyperion -25152,Uzumaki: Spiral into Horror Vol. 1,Junji Ito/伊藤潤二,4.32,1569317143,9781569317143,eng,208,12618,774,10/6/2001,Viz Media -25153,Uzumaki: Spiral into Horror Vol. 2.,Junji Ito/伊藤潤二,4.33,1591160332,9781591160335,eng,208,7275,286,7/6/2002,Viz Media -25154,Uzumaki: Spiral Into Horror Vol. 3,Junji Ito/伊藤潤二,4.27,1591160480,9781591160489,eng,250,6790,337,10/6/2002,Viz Media -25170,Dust (Richard Jury #21),Martha Grimes,3.64,0670037869,9780670037865,eng,342,2612,286,2/1/2007,Viking Books -25171,The Old Wine Shades (Richard Jury #20),Martha Grimes,3.60,0451220722,9780451220721,eng,391,2628,273,3/6/2007,Signet -25172,The Dirty Duck (Richard Jury #4),Martha Grimes,3.94,0451411390,9780451411396,eng,320,3861,140,6/1/2004,Onyx -25173,Belle Ruin (Emma Graham #3),Martha Grimes,3.50,0451219449,9780451219442,eng,368,1158,118,9/1/2006,Berkley Books -25174,Jerusalem Inn (Richard Jury #5),Martha Grimes,3.96,0451411617,9780451411617,eng,320,3542,154,11/2/2004,Onyx -25175,The Anodyne Necklace (Richard Jury #3),Martha Grimes,4.04,0451410890,9780451410894,eng,310,6046,174,1/6/2004,Onyx -25176,The Man With a Load of Mischief (Richard Jury #1),Martha Grimes,3.99,0451410815,9780451410818,eng,272,14812,461,2/4/2003,Berkley Books -25177,The Five Bells and Bladebone (Richard Jury #9),Martha Grimes,3.93,0451410386,9780451410382,eng,334,2884,97,6/1/2002,NAL -25179,Blankets,Craig Thompson,4.05,1891830430,9781891830433,eng,592,86159,5727,8/18/2003,Top Shelf Productions -25190,Beauty's Release (Sleeping Beauty #3),A.N. Roquelaure/Anne Rice,3.71,0452281458,9780452281455,eng,238,23970,570,5/1/1999,Penguin Books -25191,A Personal Matter,Kenzaburō Ōe/John Nathan,3.89,0802150616,9780802150615,eng,165,7081,543,1/13/1994,Grove Press -25192,Teach Us To Outgrow Our Madness,Kenzaburō Ōe/John Nathan,3.86,0714530484,9780714530482,eng,276,44,1,3/4/2000,Marion Boyars Publishers -25198,Rouse Up O Young Men of the New Age!,Kenzaburō Ōe,3.69,1843540789,9781843540786,eng,272,282,25,7/10/2003,Atlantic Books -25200,Silence,Shūsaku Endō/William Johnston,4.08,0800871863,9780800871864,eng,201,17485,2100,1/1/1999,Taplinger Publishing -25201,Deep River,Shūsaku Endō/Van C. Gessel,3.92,081121320X,9780811213202,eng,216,1567,182,5/1/1994,New Directions Publishing Corporation -25210,The Golden Country,Shūsaku Endō/Francis Mathy,3.79,0804833370,9780804833370,eng,128,47,4,8/15/2003,Tuttle Publishing -25216,Eden: It's an Endless World Volume 3 (Eden: It's an Endless World #3),Hiroki Endo,4.20,1593075294,9781593075293,eng,224,421,14,5/16/2006,Dark Horse Manga -25225,The Samurai,Shūsaku Endō/Van C. Gessel,3.96,0811213463,9780811213462,eng,272,1689,157,4/17/1997,New Directions -25226,Tuck Everlasting,Natalie Babbitt,3.87,0374480133,9780374480134,en-US,139,1538,184,3/1/2005,Farrar Straus Giroux -25241,The Philosophy of History,Georg Wilhelm Friedrich Hegel/J. Sibree/C.J. Friedrich/Charles Hegel,3.82,0486437558,9780486437552,eng,480,2762,71,9/10/2004,Dover Publications -25242,Reason in History,Georg Wilhelm Friedrich Hegel/Robert S. Hartman,3.65,0023513209,9780023513206,eng,95,451,17,12/24/1995,Pearson -25244,The Essential Writings,Georg Wilhelm Friedrich Hegel,3.86,0061318310,9780061318313,ger,368,71,6,4/21/1977,Harper Perennial -25245,Introduction to the Philosophy of History with Selections from The Philosophy of Right,Georg Wilhelm Friedrich Hegel/Leo Rauch,3.76,0872200566,9780872200562,eng,106,1088,52,6/1/1988,Hackett Publishing Company Inc. -25246,Hegel: A Very Short Introduction,Peter Singer,3.86,019280197X,9780192801975,eng,131,1141,122,12/6/2001,Oxford University Press -25248,Elements of the Philosophy of Right,Georg Wilhelm Friedrich Hegel/Allen W. Wood/Raymond Geuss,3.87,0521348889,9780521348881,eng,569,2882,48,10/25/1991,Cambridge University Press -25252,Von Helden Und Schelmen: Tall Tales and Legends for Intermediate Students of German,Kurt Reiter,4.00,0844222593,9780844222592,ger,88,4,2,1/1/1989,McGraw-Hill/Glencoe -25257,Mein Urgroßvater die Helden und ich,James Krüss,4.30,3551552711,9783551552716,ger,250,16,1,12/1/2002,Carlsen -25260,American Dragons: Twenty-five Asian American Voices,Laurence Yep/Kam Mak/Ann Tashi Slater,3.45,0064406032,9780064406031,eng,256,66,10,9/7/1995,HarperCollins Publishers -25268,The Rainbow People,Laurence Yep/David Wiesner,3.75,0064404412,9780064404419,eng,208,206,47,8/30/1992,HarperCollins -25278,Child of the Owl (Golden Mountain Chronicles #7),Laurence Yep,3.61,006440336X,9780064403368,eng,288,437,31,5/8/2001,HarperCollins -25279,Dragon's Gate (Golden Mountain Chronicles #3),Laurence Yep,3.67,0064404897,9780064404891,en-US,352,1845,128,1/23/2001,HarperCollins -25282,Man Who Tricked a Ghost,Laurence Yep/Isadore Seltzer,3.83,081673030X,9780816730308,eng,32,39,6,9/13/1997,Troll Communications -25286,The Dragon Prince: A Chinese Beauty & the Beast Tale,Laurence Yep/Kam Mak,3.93,0064435180,9780064435185,eng,32,355,44,1/9/1999,HarperCollins -25295,The Legend of Huma (Dragonlance: Heroes #1),Richard A. Knaak,4.03,078693137X,9780786931378,en-US,379,17274,113,1/1/2004,Wizards of the Coast -25296,The Dark Mirror (The Bridei Chronicles #1),Juliet Marillier,3.97,0765348756,9780765348753,en-US,561,7525,376,3/6/2007,Tor Fantasy -25299,Investing in Real Estate,Andrew James McLean/Gary W. Eldred,3.82,0471741205,9780471741206,eng,314,200,12,11/1/2005,John Wiley & Sons -25307,No god but God: The Origins Evolution and Future of Islam,Reza Aslan,4.12,0812971892,9780812971897,eng,310,16918,1107,1/10/2006,Random House Trade -25319,Flashman on the March (The Flashman Papers #12),George MacDonald Fraser,4.08,1400096464,9781400096466,en-US,352,1646,66,11/14/2006,Anchor -25320,March Upcountry (Empire of Man #1),David Weber/John Ringo,4.18,0743435389,9780743435383,eng,608,9721,239,5/1/2002,Baen -25321,King of the Middle March,Kevin Crossley-Holland,3.82,0439266017,9780439266017,eng,432,1334,47,3/1/2006,Scholastic Inc. -25329,The Dobe Ju/'hoansi,Richard B. Lee,3.58,0155063332,9780155063334,eng,272,356,25,2/4/2002,Wadsworth Publishing Company -25332,Ju-on Volume 1 (呪怨 #1),Kei Ohishi/Joe Swift,3.82,159582071X,9781595820716,eng,240,348,31,9/19/2006,Dark Horse Manga -25344,Get Out of My Life but First Could You Drive Me & Cheryl to the Mall?,Anthony E. Wolf,3.96,0374528535,9780374528539,eng,240,1380,250,8/21/2002,Farrar Straus and Giroux -25347,Out of Egypt (Christ the Lord #1),Anne Rice,3.58,0345436830,9780345436832,eng,350,11519,981,10/31/2006,Ballantine Books -25348,Get Out of Your Mind and Into Your Life: The New Acceptance and Commitment Therapy,Steven C. Hayes/Spencer Smith,4.05,1572244259,9781572244252,eng,224,1506,86,11/1/2005,New Harbinger Publications -25349,The Out-of-Sync Child Has Fun: Activities for Kids with Sensory Processing Disorder,Carol Stock Kranowitz/T.J. Wylie,4.22,0399532714,9780399532719,en-US,352,1223,65,8/1/2006,TarcherPerigee -25350,Out of the Silent Planet (The Space Trilogy #1),C.S. Lewis,3.93,0007157150,9780007157150,eng,224,58756,2528,12/5/2005,HarperCollins -25352,Coming Out,Danielle Steel,3.51,0385338325,9780385338325,eng,210,4160,241,6/27/2006,Delacorte Press -25353,Shutting Out the Sky: Life in the Tenements of New York 1880-1924,Deborah Hopkinson,4.05,0439375908,9780439375900,eng,144,195,37,10/1/2003,Orchard Books -25355,Art Out of Time: Unknown Comics Visionaries 1900-1969,Dan Nadel,4.05,0810958384,9780810958388,eng,320,226,24,6/1/2006,Abrams -25359,The Out-of-Sync Child Has Fun: Activities for Kids with Sensory Integration Dysfunction,Carol Stock Kranowitz/T.J. Wylie/Trude Turnquist,4.22,0399528431,9780399528439,en-US,352,148,9,1/7/2003,Perigee Trade -25363,Shout Out Loud! 3,Satosumi Takaguchi,3.92,1598163183,9781598163186,eng,190,88,2,12/12/2006,TokyoPop -25365,Out,Natsuo Kirino/Stephen Snyder,3.92,1400078377,9781400078370,eng,400,18671,1894,1/4/2005,Vintage -25367,Disparitions,Natsuo Kirino,3.81,2268042618,9782268042619,fre,453,104,9,5/27/2002,Bertrand -25368,Die Umarmung des Todes,Natsuo Kirino,3.92,3442309174,9783442309177,ger,607,6,2,3/1/2003,Goldmann -25372,Are We There Yet?,David Levithan,3.49,0375839569,9780375839566,en-US,215,117,19,12/24/2008,Random House Children's Books -25373,Nick & Norah's Infinite Playlist,Rachel Cohn/David Levithan,3.71,0375835318,9780375835315,eng,183,65091,2971,5/23/2006,Alfred A. Knopf Books for Young Readers -25375,How to Make Money Like a Porn Star,Neil Strauss/Jenna Jameson,3.32,0060884053,9780060884055,en-US,128,164,6,9/26/2006,It Books -25376,The Mystery Method: How to Get Beautiful Women Into Bed,Mystery/Neil Strauss,3.70,0312360118,9780312360115,en-US,240,2208,116,2/6/2007,St. Martin's Press -25378,The Dirt: Confessions of the World's Most Notorious Rock Band,Neil Strauss/Vince Neil/Nikki Sixx/Mick Mars/Tommy Lee,4.16,0060989157,9780060989156,eng,431,28405,1794,7/9/2002,Dey Street Books -25379,Mémoires de l'Enfer,Marilyn Manson/Neil Strauss/Gilles Vaugeois,3.89,2207249107,9782207249109,fre,269,78,3,11/15/2000,Denoël -25395,Una Vida Con Proposito Volumen 6,Rick Warren,4.35,1417499737,9781417499731,spa,56,26,3,5/31/2005,Vida -25401,Maya,Jostein Gaarder/James Anderson,3.60,0753811464,9780753811467,eng,352,3704,136,5/10/2011,Phoenix -25403,The Orange Girl,Jostein Gaarder/James Anderson,3.92,0753819929,9780753819920,eng,151,12162,709,7/6/2005,Phoenix -25406,Sophie's World,Jostein Gaarder/Paulette Møller,3.92,0374530718,9780374530716,en-US,518,4399,515,3/20/2007,Farrar Straus and Giroux -25407,That Same Flower: Floria Aemilia's Letter to St. Augustine,Jostein Gaarder/Anne Born,3.67,0374253846,9780374253844,eng,167,70,12,2/28/1998,Farrar Straus and Giroux -25409,Identity and Violence: The Illusion of Destiny,Amartya Sen/Λία Βουτσοπούλου,3.84,0393329291,9780393329292,eng,240,1227,124,2/17/2007,W. W. Norton Company -25419,When I Was Puerto Rican,Esmeralda Santiago,4.02,0679756760,9780679756767,eng,274,8632,560,10/11/1994,Vintage Books USA -25426,Delwau Duon: Peintiadau Nicholas Evans = Symphonies in Black: The Paintings of Nicholas Evans,Nicholas Evans/Rhonda Evans,5.00,0862431352,9780862431358,wel,150,1,0,6/22/1987,Y Lolfa -25431,Psychonavigation: Techniques for Travel Beyond Time,John Perkins,4.10,089281800X,9780892818006,eng,144,65,3,9/1/1999,Destiny Books -25433,The Stress-free Habit: Powerful Techniques for Health & Longevity from the Andes Yucatan & the Far East,John Perkins,3.84,0892812923,9780892812929,en-US,104,17,1,5/1/1989,Healing Arts Press -25435,Let Justice Roll Down,John M. Perkins/Shane Claiborne,4.35,0830743073,9780830743070,eng,219,767,89,12/6/2006,Regal Books -25440,The Namesake: A Portrait of the Film Based on the Novel by Jhumpa Lahiri,Mira Nair/Jhumpa Lahiri,4.05,1557047413,9781557047410,eng,144,621,26,12/1/2006,Newmarket -25444,The Collected Poems of Robert Penn Warren,Robert Penn Warren/John Burt/Harold Bloom,4.37,0807123331,9780807123331,eng,838,173,10,10/1/1998,LSU Press -25449,The Cave,Robert Penn Warren/James H. Justus/Xavier Pàmies,3.73,0813191556,9780813191553,eng,424,95,16,2/24/2006,University Press of Kentucky -25454,The Glass Castle,Jeannette Walls/Julia Gibson,4.27,1419341049,9781419341045,eng,10,14,6,11/1/2005,Recorded Books -25457,The Little Baby Snoogle-Fleejer,Jimmy Carter/Amy Carter,3.17,0812927311,9780812927313,eng,24,42,11,11/21/1995,Crown -25458,Keeping Faith: Memoirs of a President,Jimmy Carter,3.83,1557283303,9781557283306,en-US,640,247,13,7/1/1995,University of Arkansas Press -25460,Animal Vegetable Miracle: A Year of Food Life,Barbara Kingsolver/Steven L. Hopp/Camille Kingsolver/Richard A. Houser,4.04,0060852550,9780060852559,eng,370,86290,9497,5/1/2007,HarperCollins Publishers -25463,The Essential John Nash,John F. Nash/Harold William Kuhn/Sylvia Nasar,3.89,0691096104,9780691096100,eng,244,78,4,3/18/2007,Princeton University Press -25473,Z for Zachariah,Robert C. O'Brien,3.66,1416939210,9781416939214,eng,250,1030,231,7/10/2007,Simon Pulse -25489,The Anatomy of Human Destructiveness,Erich Fromm,4.21,080501604X,9780805016048,eng,576,2102,38,2/15/1992,Holt Paperbacks -25491,Escape from Freedom,Erich Fromm,4.24,0805031499,9780805031492,eng,301,7201,292,9/15/1994,Holt McDougal -25492,The Art of Being,Erich Fromm/Rainer Funk,4.09,0826406734,9780826406736,eng,144,2464,87,9/1/1994,Bloomsbury Academic -25494,Man for Himself: An Inquiry into the Psychology of Ethics,Erich Fromm,4.17,0415307716,9780415307710,eng,272,1437,30,4/24/2003,Routledge Taylor & Francis Books Ltd imprint -25495,Psychoanalysis and Religion,Erich Fromm/محمود منقذ الهاشمي,4.02,0300000898,9780300000894,en-US,126,865,32,9/10/1959,Yale University Press (New Haven CT) -25510,The Days of Vengeance: An Exposition of the Book of Revelation,David H. Chilton,4.18,0930462092,9780930462093,eng,754,120,28,1/1/1987,Dominion Press -25516,Malinche,Laura Esquivel/Jordi Castells,3.28,0743290348,9780743290340,spa,189,99,20,2/7/2006,Atria Books -25517,Malinche,Laura Esquivel/Jordi Castells/Ernesto Mestre-Reed,3.28,074329033X,9780743290333,en-US,191,3172,304,5/2/2006,Atria Books -25534,Faulkner: A Biography,Joseph Blotner,4.13,1578067324,9781578067329,eng,778,82,10,5/4/2005,University Press of Mississippi -25553,The Best Bug Parade,Stuart J. Murphy/Holly Keller,3.51,0064467007,9780064467001,en-US,40,85,16,3/27/1996,HarperCollins -25563,Flight Dreams (Mark Manning Mystery #1),Michael Craft,3.73,1575668548,9781575668543,eng,230,150,13,6/16/2000,Kensington -25564,Eye Contact (Mark Manning Mystery #2),Michael Craft,3.78,1575664259,9781575664255,eng,342,112,6,6/1/1999,Kensington -25565,Hot Spot (Mark Manning Mystery #6),Michael Craft,3.85,0312313640,9780312313647,eng,288,80,1,6/4/2003,Minotaur Books -25566,Body Language (Mark Manning Mystery #3),Michael Craft,3.91,1575665549,9781575665542,eng,273,111,6,5/1/2000,Kensington -25587,The Second World War,Winston S. Churchill/John Keegan,4.45,039541685X,9780395416853,eng,4736,1493,99,5/9/1986,Mariner Books -25589,Memoirs of the Second World War,Winston S. Churchill/Denis Kelly,4.39,0395599687,9780395599686,eng,1088,438,39,9/17/1991,Mariner Books -25618,Six Degrees of Separation,John Guare,4.00,0822210347,9780822210344,eng,74,242,14,12/1/1995,Dramatists Play Service -25623,Amarse con los ojos abiertos,Jorge Bucay/Silvia Salinas,3.73,8479019395,9788479019396,spa,237,1425,59,3/1/2004,Alfaguara -25639,McGraw-Hill's SAT I (McGraw-Hill's SAT I),Christopher Black/Mark Anestis,3.67,007146235X,9780071462358,eng,890,0,0,10/1/2005,McGraw-Hill Companies -25652,The Best Recipes in the World: More Than 1 000 International Dishes to Cook at Home,Mark Bittman,3.98,0767906721,9780767906722,eng,757,1813,40,10/11/2005,Broadway Books -25653,The Minimalist Cooks at Home: Recipes That Give You More Flavor from Fewer Ingredients in Less Time,Mark Bittman,3.90,0767909267,9780767909266,eng,240,261,20,9/10/2002,Broadway Books -25663,The Soldiers' Tale: Bearing Witness to Modern War,Samuel Hynes,3.80,0140261540,9780140261547,eng,336,82,10,4/1/1998,Penguin Books USA Inc. -25669,How the Irish Saved Civilization: The Untold Story of Ireland's Heroic Role from the Fall of Rome to the Rise of Medieval Europe,Thomas Cahill,3.81,0385418493,9780385418492,eng,246,36446,1486,2/1/1996,Bantam Doubleday Dell (NYC) -25672,Confessions of Saint Augustine (Paraclete Living Library),Augustine of Hippo/J.M. Lelen,3.92,0899421695,9780899421698,eng,448,13,4,1/1/1997,Catholic Book Publishing -25673,City of God,Augustine of Hippo/Henry Bettenson,3.92,0140448942,9780140448948,eng,1186,8754,300,11/27/2003,Penguin Books Ltd -25685,An Odyssey in Learning and Perception,Eleanor J. Gibson,4.50,026257103X,9780262571036,eng,654,0,0,2/3/1994,Bradford Book -25688,Complete Works of Tacitus,Tacitus/Alfred J. Church/William Jackson Brodribb/Moses Hadas,4.29,0075536390,9780075536390,eng,773,280,13,9/1/1964,McGraw-Hill Humanities/Social Sciences/Languages -25689,The Agricola and The Germania,Tacitus/Harold Mattingly/S.A. Handford,3.99,0140442413,9780140442410,eng,174,4013,110,2/28/1971,Penguin Books -25692,Agricola / Germania / Dialogue on Oratory,Tacitus/Maurice Hutton/Robert Maxwell Ogilvie/E.H. Warmington/William Peterson/Michael Winterbottom,3.95,0674990390,9780674990395,mul,384,87,7,1/1/1914,Harvard University Press -25693,Agricola/Germany,Tacitus/Anthony Richard Birley,3.99,0192833006,9780192833006,eng,224,29,2,9/23/1999,Oxford University Press -25698,An Inquiry into the Nature and Causes of the Wealth of Nations,Adam Smith,3.88,0553585975,9780553585971,eng,1264,21524,635,3/4/2003,Arlington House -25701,The Wealth of Nations,Adam Smith/Robert B. Reich,3.88,0679783369,9780679783367,eng,1184,1165,62,7/12/2000,Modern Library -25707,Aquinas's Shorter Summa: Saint Thomas's Own Concise Version of His Summa Theologica,Thomas Aquinas,4.14,1928832431,9781928832430,eng,412,213,8,12/1/2005,Sophia Institute Press -25708,Saint Thomas Aquinas,G.K. Chesterton/Anton C. Pegis,4.14,0385090021,9780385090025,en-US,167,2987,175,1/15/1974,Image -25709,Summa Theologica 5 Vols,Thomas Aquinas,4.12,0870610635,9780870610639,eng,3020,2734,84,1/1/1981,Christian Classics -25711,Selected Writings,Thomas Aquinas/Ralph McInerny,3.91,0140436324,9780140436327,eng,841,626,22,6/25/1998,Penguin Classics -25713,Selected Philosophical Writings,Thomas Aquinas/Timothy McDermott,3.86,0192835858,9780192835857,eng,496,238,9,8/20/1998,Oxford University Press -25715,Treatise on Happiness,Thomas Aquinas/John A. Oesterle,3.83,0268018499,9780268018498,eng,224,76,3,1/1/1984,University of Notre Dame Press -25719,New Jewish Wedding Revised,Anita Diamant,3.96,0743202554,9780743202558,eng,288,694,64,3/6/2001,Scribner -25721,How to Be a Jewish Parent: A Practical Handbook for Family Life,Anita Diamant/Karen Kushner,3.93,0805211160,9780805211160,eng,352,52,5,9/5/2000,Schocken Books Inc -25725,Every Second Counts,Lance Armstrong/Sally Jenkins,3.52,0224064738,9780224064736,en-US,246,274,28,7/1/2004,Yellow Jersey -25737,The Collected Stories of Isaac Bashevis Singer,Isaac Bashevis Singer/Herb Johnson,4.37,0374517886,9780374517885,eng,624,1665,92,8/1/1983,Farrar Straus and Giroux -25740,Der Golem,Isaac Bashevis Singer,3.75,349175710X,9783491757103,ger,64,2,0,2/1/2001,Patmos -25741,Collected Stories III: One Night in Brazil to The Death of Methuselah,Isaac Bashevis Singer/Ilan Stavans,4.61,1931082634,9781931082631,eng,915,23,4,7/8/2004,Library of America -25743,The Slave,Isaac Bashevis Singer/Cecil Hemley,4.18,0374506809,9780374506803,eng,320,2040,150,10/1/1988,Farrar Straus and Giroux -25744,Collected Stories I: Gimpel the Fool to The Letter Writer,Isaac Bashevis Singer/Ilan Stavans,4.49,1931082618,9781931082617,eng,832,63,8,7/8/2004,Library of America -25752,Blind Flight,Hilary H. Milton,3.63,0590321145,9780590321143,en-US,122,25,5,12/1/1982,Scholastic -25756,Tornado!,Hilary H. Milton,3.60,0531045420,9780531045428,eng,147,10,3,1/1/1983,Franklin Watts -25772,From the Age of Discovery to a World at War (America: The Last Best Hope #1),William J. Bennett,4.24,1595550550,9781595550552,eng,573,1069,132,5/23/2006,Nelson Current -25777,Democracy in America Volume 2,Alexis de Tocqueville/Eduardo Brandão/Phillips Bradley/Luann Walther,4.17,0679728260,9780679728269,eng,506,316,19,8/11/1990,Vintage -25779,On Democracy Revolution and Society,Alexis de Tocqueville/John Stone/Stephen Mennell,4.12,0226805271,9780226805276,eng,402,25,0,9/15/1982,University Of Chicago Press -25780,The Two Tocquevilles Father and Son,R.R. Palmer,2.00,0691054959,9780691054957,eng,254,1,0,4/1/1987,Princeton University Press -25781,The Iron Dragon's Daughter,Michael Swanwick,3.69,0380972336,9780380972333,eng,424,2530,182,2/28/2012,Avon Books -25788,The Book of Five Rings,Miyamoto Musashi/Thomas Cleary,4.07,1570627487,9781570627484,eng,144,192,10,4/13/1993,Shambhala -25789,The Book of Five Rings,Miyamoto Musashi/Thomas Cleary,4.07,1590302486,9781590302484,eng,166,926,74,1/11/2005,Shambhala -25790,The Lord of the Rings Sketchbook,Alan Lee/Ian McKellen,4.27,0618640142,9780618640140,eng,192,9853,72,10/19/2005,Houghton Mifflin Harcourt -25794,Birthday (Ring #4),Kōji Suzuki/Glynne Walley,3.67,1932234292,9781932234299,eng,216,866,37,12/12/2006,Vertical -25800,The Book of Five Rings,Miyamoto Musashi/William Scott Wilson/Shiro Tsujimura,4.07,4770028016,9784770028013,eng,157,455,43,3/1/2002,Kodansha International -25802,The Deception of the Emerald Ring (Pink Carnation #3),Lauren Willig,3.91,0525949771,9780525949770,eng,400,8615,499,12/1/2006,Dutton Books -25803,Only the Ring Finger Knows: The Ring Finger Falls Silent (Only the Ring Finger Knows #3),Satoru Kannagi/Hotaru Odagiri,4.04,1569708843,9781569708842,en-US,250,352,12,10/26/2006,Digital Manga Publishing -25804,Only the Ring Finger Knows: The Left Hand Dreams of Him (Only the Ring Finger Knows #2),Satoru Kannagi/Hotaru Odagiri,3.94,1569708851,9781569708859,eng,242,529,17,7/5/2006,Digital Manga Publishing -25806,1000 Rings: Inspiring Adornments for the Hand,Marthe Le Van/Robert W. Ebendorf/Lark Books,4.23,1579905080,9781579905088,eng,416,82,9,8/1/2004,Lark Books -25807,The Postman Always Rings Twice,James M. Cain,3.80,0752861743,9780752861746,eng,116,23157,1287,9/9/2010,Orion -25809,The Ring Bearer,Laura Godwin/John Wallace,3.44,078685510X,9780786855100,en-US,32,17,2,2/20/2006,Disney-Hyperion -25810,Legend of the Five Rings RPG,Rich Wulf/Shawn Carman/Seth Mason/Rob Vaux/Katie Yates/Brian Yoon/Fred Wan/D.J. Trindle,3.78,1594720355,9781594720352,eng,318,169,6,6/6/2005,Alderac Entertainment Group -25811,The Lord of the Rings and Philosophy: One Book to Rule Them All,Gregory Bassham/Eric Bronson,4.28,0812695453,9780812695458,eng,240,4913,40,8/4/2003,Open Court -25812,The Ruby Ring,Diane Haeger,3.70,1400051738,9781400051731,eng,371,1070,70,4/5/2005,Broadway Books -25814,Only the Ring Finger Knows: The Lonely Ring Finger (Only the Ring Finger Knows #1),Satoru Kannagi/Hotaru Odagiri/Allison Markin Powell,3.99,1569709041,9781569709047,eng,210,925,37,3/28/2006,Digital Manga Publishing -25815,The Rings of Saturn,W.G. Sebald/Michael Hulse,4.26,0099448920,9780099448921,eng,304,419,50,7/1/1995,Vintage -25816,Only the Ring Finger Knows,Satoru Kannagi/Hotaru Odagiri/Sachiko Sato,4.10,1569709807,9781569709801,eng,208,3299,57,8/1/2004,Digital Manga Publishing -25817,The Ring Volume 1,Misao Inagaki/Hiroshi Takahashi,3.63,1593070543,9781593070540,eng,304,389,32,11/25/2003,Dark Horse Manga -25841,The Road To War 1933 39,Andrew Hunt,0.00,0340774770,9780340774779,eng,128,0,0,4/1/2000,Hodder & Stoughton Educational Division -25848,The Drifting Classroom Vol. 5 (Drifting Classroom),Kazuo Umezu,3.87,1421509571,9781421509570,en-US,192,388,15,4/17/2007,VIZ Media LLC -25849,The Drifting Classroom Vol. 1,Kazuo Umezu,3.79,1421507226,9781421507224,en-US,190,1535,107,8/8/2006,VIZ Media LLC -25850,The Drifting Classroom Vol. 6 (The Drifting Classroom),Kazuo Umezu,3.87,142150958X,9781421509587,en-US,192,366,13,6/19/2007,VIZ Media LLC -25852,The Drifting Classroom Vol. 7 (The Drifting Classroom),Kazuo Umezu,3.92,1421509598,9781421509594,en-GB,192,343,11,8/21/2007,VIZ Media LLC -25853,The Drifting Classroom Vol. 2 (Drifting Classroom),Kazuo Umezu,3.98,1421507234,9781421507231,en-US,188,724,34,10/10/2006,VIZ Media LLC -25855,The Drifting Classroom Vol. 4 (Drifting Classroom),Kazuo Umezu,3.91,1421509563,9781421509563,en-US,192,412,20,2/20/2007,VIZ Media LLC -25863,The Franco-Prussian War,Michael Eliot Howard,4.09,0415266718,9780415266710,eng,532,202,13,11/11/2001,Routledge/Taylor & Francis Ltd. -25866,My Uncle Napoleon,Iraj Pezeshkzad/Dick Davis/Azar Nafisi,4.16,0812974433,9780812974430,eng,509,790,113,4/11/2006,Modern Library -25868,Hadji Murad,Leo Tolstoy/Aylmer Maude/Louise Maude/Azar Nafisi,3.84,0812967119,9780812967111,eng,153,176,32,7/8/2003,Modern Library -25869,Shahnameh: The Persian Book of Kings,Abolqasem Ferdowsi/Dick Davis/Azar Nafisi,4.51,0143104934,9780143104933,eng,886,246,21,3/1/2007,Penguin -25875,Killer 7 Official Strategy Guide,Brady Games,4.00,0744004446,9780744004441,eng,128,2,0,7/8/2005,BradyGames -25879,Castlevania: Curse of Darkness Official Strategy Guide,Brady Games,3.70,0744006457,9780744006452,eng,176,10,0,10/28/2005,BradyGames -25880,World of Warcraft Atlas,Brady Games,4.09,0744004411,9780744004410,eng,192,245,5,9/20/2005,BradyGames -25881,Manhunt Official Strategy Guide,Tim Bogenn,4.00,0744003229,0752073003227,eng,175,4,0,11/25/2003,Bradygames -25884,The Road to Jerusalem (The Knight Templar #1),Jan Guillou/Anna Paterson,4.00,0752848372,9780752848372,eng,320,4406,160,12/5/2002,Orion -25886,Buddhism: A Concise Introduction,Huston Smith/Philip Novak,3.90,0060730676,9780060730673,eng,256,418,44,12/14/2004,HarperOne -25895,Cleansing the Doors of Perception: The Religious Significance of Entheogenic Plants and Chemicals,Huston Smith,4.01,1591810086,9781591810087,eng,173,194,11,9/12/2003,Sentient Publications -25903,I'll Be Home Before Midnight and I Won't Get Pregnant,Anthony E. Wolf,0.00,0394755669,9780394755663,eng,288,0,0,5/12/1988,Knopf Doubleday Publishing Group -25905,Beneath the Wheel,Hermann Hesse/Michael E. Roloff,3.85,031242230X,9780312422301,eng,192,8494,289,7/1/2003,Picador -25919,Love Mode Vol. 3,Yuki Shimizu,4.15,1598160125,9781598160123,eng,184,585,14,7/3/2006,Blu -25921,Love Mode Vol. 1,Yuki Shimizu,3.93,1598160109,9781598160109,eng,192,1417,41,11/8/2005,Blu -25922,Love Mode Vol. 5,Yuki Shimizu,4.32,1598160141,9781598160147,eng,192,582,10,5/1/2007,Blu -25923,Love Mode Vol. 2,Yuki Shimizu,4.23,1598160117,9781598160116,eng,204,768,18,3/7/2006,Blu -25924,Love Mode Vol. 6,Yuki Shimizu,4.23,159816015X,9781598160154,eng,192,441,7,8/1/2007,Blu -25930,Balzac And The Little Chinese Seamstress,Dai Sijie/Ina Rilke,3.64,0099452243,9780099452249,eng,172,223,22,4/17/2002,Random House (Vintage) -25932,Lost Illusions (La Comédie Humaine),Honoré de Balzac/Ellen Marriage/George Saintsbury,4.16,1406506583,9781406506587,eng,656,6422,161,5/1/2006,Dodo Press -25933,The Black Sheep,Honoré de Balzac/Donald Adamson,3.99,0140442375,9780140442373,eng,339,1483,68,5/27/1976,Penguin Classics -25934,A Harlot High and Low,Honoré de Balzac/Rayner Heppenstall,4.06,0140442324,9780140442328,eng,554,1546,64,9/26/1985,Penguin Classics -25936,The Unknown Masterpiece,Honoré de Balzac,3.87,1425462219,9781425462215,eng,48,11,3,12/8/2005,Kessinger Publishing -25937,The Girl With The Golden Eyes,Honoré de Balzac,3.35,1419163868,9781419163869,eng,72,801,56,6/17/2004,Kessinger Publishing -25941,Le Chef-D'Œuvre Inconnu,Honoré de Balzac,3.87,2868050131,9782868050137,fre,49,10,0,1/19/1998,Findakly -25946,Cousin Pons,Honoré de Balzac/Herbert J. Hunt,3.98,0140442057,9780140442052,eng,336,942,48,5/25/1978,Penguin Classics -25955,The Medium is the Massage,Marshall McLuhan/Quentin Fiore/Jerome Agel,3.94,1584230703,9781584230700,eng,160,12098,295,8/1/2001,Gingko Press -25956,Essential McLuhan,Marshall McLuhan/Eric McLuhan/Frank Zingrone,4.05,0415162459,9780415162456,eng,416,8,0,6/7/1997,Routledge -25961,Understanding Media: The Extensions of Man,Marshall McLuhan/W. Terrence Gordon/Philip B. Meggs,4.12,1584230738,9781584230731,en-US,616,120,11,11/1/2003,Gingko Press -25965,The Best American Sports Writing 2006,Michael Lewis/Glenn Stout,3.75,0618470220,9780618470228,eng,416,84,5,10/11/2006,Mariner Books -25992,Kinfolk,Pearl S. Buck,4.19,1559211563,9781559211567,eng,408,496,41,1/1/2004,Moyer Bell and its subsidiaries -25993,Pearl S. Buck: A Cultural Biography,Peter Conn,4.17,0521639891,9780521639897,eng,500,101,11,1/28/1998,Cambridge University Press -25996,The Mother,Pearl S. Buck,4.04,1559210915,9781559210911,eng,304,1783,93,1/1/2004,Moyer Bell and its subsidiaries -26009,Glamorama,Bret Easton Ellis,3.46,3453190149,9783453190146,ger,832,46,0,2/22/2010,KiWi -26012,Glamorama,Bret Easton Ellis/Pierre Guglielmina,3.46,2264031913,9782264031914,fre,537,56,5,2/15/2001,10/18 -26023,Bright Lights Big Ass,Jen Lancaster,4.06,0451221257,9780451221254,eng,380,28940,1632,5/1/2007,NAL -26046,Morrigan's Cross (Circle Trilogy #1),Nora Roberts,4.14,0515141658,9780515141658,eng,321,46146,1158,8/29/2006,Jove -26047,Rebellion (The MacGregors #0.1),Nora Roberts,3.92,0373285434,9780373285433,eng,395,6650,150,11/21/2006,Silhouette -26048,Dream Makers: Untamed / Less of a Stranger,Nora Roberts,3.80,0373285248,9780373285242,eng,411,989,32,9/19/2006,Silhouette Books -26049,Spellbound (Once Upon #1),Nora Roberts,3.80,0515140775,9780515140774,eng,96,6798,162,9/27/2005,Jove -26050,Angels Fall,Nora Roberts,4.00,0399153721,9780399153723,eng,391,37314,1040,7/11/2006,Putnam -26051,True Betrayals / Montana Sky / Sanctuary,Nora Roberts,4.40,0399147314,9780399147319,eng,852,667,5,6/4/2001,Putnam Adult -26052,First Impressions,Nora Roberts,3.73,0373285388,9780373285389,eng,301,5641,315,10/24/2006,Silhouette Books -26053,Public Secrets,Nora Roberts,4.03,0553589474,9780553589474,eng,481,11035,418,3/27/2012,Bantam Books -26054,The MacGregors: Serena & Caine (The MacGregors #1 -2),Nora Roberts,4.09,0373285132,9780373285136,eng,441,11070,150,1/28/2006,Mira -26055,The MacGregors: Alan & Grant (The MacGregors #3-4),Nora Roberts,4.11,037328523X,9780373285235,eng,458,9423,90,6/16/2006,Mira -26064,Kissing in Manhattan,David Schickler,3.61,0385335679,9780385335676,eng,288,2665,304,8/27/2002,Dial Press Trade Paperback -26069,Making Democracy Work: Civic Traditions in Modern Italy,Robert D. Putnam,3.83,0691037388,9780691037387,eng,280,604,34,6/16/1994,Princeton University Press -26071,The Comparative Study of Political Elites,Robert D. Putnam,3.75,0131541951,9780131541955,eng,246,4,1,1/1/1976,Prentice Hall -26075,A Random Walk Down Wall Street,Burton G. Malkiel,4.10,0393057828,9780393057829,en-US,416,50,6,4/17/2003,W. W. Norton Company -26079,A Random Walk Down Wall Street,Burton G. Malkiel/Christopher Flavin,4.10,0393019993,9780393019995,eng,377,9,1,1/1/1985,W. W. Norton & Company -26085,Identity Crisis,Brad Meltzer/Rags Morales/Michael Bair/Joss Whedon,4.04,1401204589,9781401204587,eng,288,18289,614,8/16/2006,DC Comics -26088,Superman: Secret Identity,Kurt Busiek/Stuart Immonen,4.24,1401204511,9781401204518,eng,208,6368,307,4/9/2013,DC Comics -26090,The Dissociative Identity Disorder Sourcebook,Deborah Bray Haddock,4.16,0737303948,9780737303940,eng,336,276,19,8/21/2001,McGraw-Hill Education -26092,Double Identity,Margaret Peterson Haddix,4.02,0689873743,9780689873744,eng,224,276,52,10/1/2005,Simon Schuster Books for Young Readers -26093,Identity,Milan Kundera/Linda Asher,3.68,0060175648,9780060175641,eng,176,266,31,4/21/1998,Harper -26097,Slowness,Milan Kundera/Linda Asher,3.66,0060928417,9780060928414,eng,156,9760,402,4/11/1997,Harper Perennial -26101,Laughable Loves,Milan Kundera/Suzanne Rappaport,3.87,0571206921,9780571206926,eng,287,14928,470,8/21/2000,Faber & Faber -26123,Learned Optimism: How to Change Your Mind and Your Life,Martin E.P. Seligman,4.00,1400078393,9781400078394,eng,319,13891,628,1/3/2006,Vintage -26130,Homer Price,Robert McCloskey,4.08,0142404152,9780142404157,en-US,149,279,24,12/29/2005,Puffin Books -26131,The Classical World: An Epic History from Homer to Hadrian,Robin Lane Fox,3.91,0465024963,9780465024964,eng,672,1315,69,10/9/2006,Basic Books -26133,The Children's Homer: The Adventures of Odysseus and the Tale of Troy,Padraic Colum/Willy Pogány,3.90,0689868839,9780689868832,eng,256,109,15,7/1/2004,Aladdin -26134,The Coalwood Way: A Memoir (Coalwood #2),Homer Hickam,4.14,0440237165,9780440237167,eng,400,1193,103,9/4/2001,Island Books -26146,Man's Search for Meaning,Viktor E. Frankl/Ilse Lasch/Harold S. Kushner/William J. Winslade,4.36,0807014273,9780807014271,eng,165,3023,303,6/1/2006,Beacon Press -26147,Man's Search for Meaning,Viktor E. Frankl/Ilse Lasch/Gordon W. Allport,4.36,1844132390,9781844132393,eng,160,1959,198,5/6/2004,Rider -26154,Good Grief: The Story of Charles M. Schulz,Rheta Grimsley Johnson,3.72,0886875536,9780886875534,eng,256,20,1,12/31/1989,Pharos Books -26156,Peanuts: The Art of Charles M. Schulz,Chip Kidd/Jean Schulz/Charles M. Schulz/Geoff Spear,4.38,0375714634,9780375714634,eng,368,592,39,10/28/2003,Pantheon -26165,Autobiography of a Yogi,Paramahansa Yogananda,4.23,8120818946,9788120818941,eng,516,9,0,10/1/2002,Motilal Banarsidass -26175,To the Last Man: A Novel of the First World War,Jeff Shaara,4.22,0345461363,9780345461360,eng,636,4809,315,8/30/2005,Ballantine Books -26184,African Nights,Kuki Gallmann,3.80,0060954833,9780060954833,eng,336,313,19,3/22/2000,William Morrow Paperbacks -26187,Angels & Demons (Robert Langdon #1),Dan Brown,3.89,0743486226,9780743486224,eng,572,5738,630,7/28/2003,Atria Books -26189,Letters of St. Augustine,Augustine of Hippo,4.36,0800730305,9780800730307,eng,255,20,2,3/1/1992,Fleming H. Revell Company -26190,Love and Saint Augustine,Hannah Arendt/Joanna Vecchiarelli Scott/Judith Chelius Stark,3.91,0226025977,9780226025971,eng,254,95,10,4/26/1998,University of Chicago Press -26197,Healthy Cooking for IBS: 100 Delicious Recipes to Keep You Symptom-Free,Sophie Braimbridge/Erica Jankovich,2.62,1584794941,9781584794943,eng,144,2,1,4/1/2006,Harry N. Abrams -26206,Me vs. Me,Sarah Mlynowski,3.67,0373895887,9780373895885,eng,311,1725,120,7/25/2006,Red Dress Ink -26207,Spells & Sleeping Bags (Magic in Manhattan #3),Sarah Mlynowski,4.05,0385733879,9780385733878,eng,324,4370,221,6/26/2007,Delacorte Books for Young Readers -26210,Bras & Broomsticks (Magic in Manhattan #1),Sarah Mlynowski,3.73,0385731841,9780385731843,en-GB,310,8709,534,6/13/2006,Delacorte Press -26211,Monkey Business,Sarah Mlynowski,3.67,0778300854,9780778300854,eng,400,1,0,4/15/2005,Mira books -26212,Frogs & French Kisses (Magic in Manhattan #2),Sarah Mlynowski,3.97,0385731825,9780385731829,eng,288,4863,221,6/13/2006,Delacorte Press -26214,Big Anthony and the Magic Ring,Tomie dePaola,4.10,0156119072,9780156119078,en-US,32,462,35,4/25/1979,HMH Books for Young Readers -26216,Patrick: Patron Saint of Ireland,Tomie dePaola,4.08,0823410773,9780823410774,en-US,30,89,5,1/1/1992,Holiday House -26226,The Rattle-Rat,Janwillem van de Wetering,3.97,1569471037,9781569471036,eng,293,174,8,7/1/2003,Soho Press -26229,Robert Van Gulik: His Life His Work,Janwillem van de Wetering/Arthur P. Yin,3.57,156947124X,9781569471241,eng,149,39,5,7/1/1998,Soho Press -26236,Revolutionary Girl Utena Vol. 2: To Plant,Chiho Saito,4.00,1591162068,9781591162063,eng,200,1292,20,3/10/2004,VIZ Media LLC -26237,Revolutionary Girl Utena Vol. 3: To Sprout,Chiho Saito/Be-Pas,4.05,1591162076,9781591162070,eng,200,1153,16,2/4/2004,VIZ Media LLC -26239,Revolutionary Girl Utena Vol. 4: To Bud,Chiho Saito,4.06,1591160685,9781591160687,eng,192,1060,18,10/1/2003,VIZ Media LLC -26240,Revolutionary Girl Utena Vol. 5: To Blossom,Chiho Saito/Lillian Olsen/Be-Papas,4.02,1591161452,9781591161455,eng,168,1017,33,3/3/2004,VIZ Media LLC -26252,The Enneads,Plotinus/Stephen MacKenna/John M. Dillon,4.06,014044520X,9780140445206,eng,688,2481,35,6/27/1991,Penguin Classics -26253,Ennead IV (Plotinus IV),Plotinus/A.H. Armstrong,4.52,0674994884,9780674994881,eng,464,27,3,1/1/1984,Loeb Classical Library 443 -26254,Anaximander Heraclitus Parmenides Plotinus Lao-Tzu Nagarjuna (from Great Philosophers 2),Karl Jaspers/Ralph Manheim,3.92,0156075008,9780156075008,eng,138,42,4,10/23/1974,Harvest Books/Harcourt -26274,The Cultural Cold War: The CIA and the World of Arts and Letters,Frances Stonor Saunders,4.01,1565846648,9781565846647,eng,509,13,1,4/1/2001,The New Press -26289,Trust Fund,Stephen W. Frey,3.72,0345428307,9780345428301,eng,358,607,22,1/2/2002,Fawcett Books -26292,The Chairman (Christian Gillette #1),Stephen W. Frey,3.98,0345457617,9780345457615,eng,415,2173,89,12/27/2005,Fawcett Books -26296,The Mystery of the Ancient Pyramid: Cairo Egypt (Around the World in 80 Mysteries),Carole Marsh,3.61,0635034700,9780635034700,eng,128,27,4,3/6/2006,Gallopade International -26298,The Mystery in the Rocky Mountains,Carole Marsh,3.73,063502389X,0710430023622,eng,145,34,6,4/1/2001,Carole Marsh Mysteries -26301,The Mystery on the Mighty Mississippi,Carole Marsh,3.50,0635023911,0710430023639,eng,142,26,1,4/1/2001,Carole Marsh Mysteries -26314,Medal of Honor: Rising Sun (Prima's Official Strategy Guide),Mark Cohen,3.67,0761542914,9780761542919,eng,96,3,1,11/18/2003,Prima Games -26321,The Elder Scrolls IV: Oblivion -- Revised & Expanded (Xbox360 PC) (Prima Official Game Guide),Peter Olafson,4.29,076155548X,9780761555483,eng,432,57,4,9/10/2007,Prima Games -26324,Social Intelligence: The New Science of Human Relationships,Daniel Goleman,3.98,0553803522,9780553803525,eng,403,10327,318,9/26/2006,Bantam Books -26327,The Power of Truth: A Leading with Emotional Intelligence Conversation with Warren Bennis,Daniel Goleman/Warren Bennis,3.82,1593979746,9781593979744,eng,0,11,2,11/14/2006,Macmillan Audio -26329,Emotional Intelligence: Why It Can Matter More Than IQ,Daniel Goleman,4.01,055380491X,9780553804911,eng,384,63501,1663,9/26/2006,Bantam -26330,Healing Emotions: Conversations with the Dalai Lama on Mindfulness Emotions and Health,Daniel Goleman,4.04,1590300106,9781590300107,eng,288,302,8,1/14/2003,Shambhala -26344,The MacMillan Bible Atlas,Yohanan Aharoni/Michael Avi-Yonah,4.32,0025006053,9780025006058,en-US,215,14,2,3/17/1993,Webster's New World -26348,Paris 1919: Six Months that Changed the World,Margaret MacMillan/Richard Holbrooke,4.08,0375760520,9780375760525,eng,570,9679,640,9/9/2003,Random House Trade -26384,Scripta Minora: Hiero/Agesilaus/Constitution of the Lacedaemonians/Ways & Means/Cavalry Commander/Art of Horsemanship/On Hunting/Constitution of the Athenians,Xenophon/Edgar C. Marchant/G.W. Bowersock,4.00,0674992024,9780674992023,en-US,576,19,2,1/1/1925,Harvard University Press -26401,Primary English: Knowledge and Understanding,Jane Medwell/David Wray,3.87,1844450937,9781844450930,eng,218,1,0,4/1/2007,Learning Matters -26407,The Philosophy of Hegel,Georg Wilhelm Friedrich Hegel/Carl Joachim Friedrich,3.37,0075536552,9780075536550,eng,552,15,4,2/1/1965,McGraw-Hill -26410,Wissenschaft der Logik: Die Lehre Vom Begriff (1816),Georg Wilhelm Friedrich Hegel,4.78,3787307672,9783787307678,ger,337,0,0,1/1/1994,F. Meiner -26415,Existentialism from Dostoevsky to Sartre,Walter Kaufmann,4.08,0452009308,9780452009301,en-US,384,5011,88,3/1/1975,Plume -26417,Anti-Semite and Jew: An Exploration of the Etiology of Hate,Jean-Paul Sartre/Michael Walzer/George J. Becker,3.80,0805210474,9780805210477,eng,176,631,60,4/25/1995,Schocken -26420,CSS: The Definitive Guide,Eric A. Meyer,4.00,0596527330,9780596527334,en-US,518,961,29,11/1/2006,O'Reilly Media -26422,Fullmetal Alchemist Vol. 14 (Fullmetal Alchemist #14),Hiromu Arakawa/Akira Watanabe,4.59,142151379X,9781421513799,eng,192,8634,118,8/14/2007,VIZ Media LLC -26425,Fullmetal Alchemist: The Abducted Alchemist (Fullmetal Alchemist #2),Makoto Inoue/Hiromu Arakawa/Alexander O. Smith/Rich Amtower,4.57,1421502224,9781421502229,eng,240,2779,19,1/10/2006,VIZ Media LLC -26426,Fullmetal Alchemist Vol. 12 (Fullmetal Alchemist #12),Hiromu Arakawa/Akira Watanabe,4.60,1421508397,9781421508399,eng,192,7480,119,3/20/2007,VIZ Media LLC -26436,Programming in C,Stephen G. Kochan,3.96,0672326663,0752063326664,eng,576,222,16,7/8/2004,Sams -26438,Java: An Introduction to Problem Solving and Programming,Walter J. Savitch,3.85,0131492020,9780131492028,en-US,1060,26,1,12/1/2004,Prentice Hall -26439,Absolute C++,Walter J. Savitch,3.83,0321468937,9780321468932,eng,943,36,4,3/1/2007,Addison Wesley -26447,The Odyssey,Homer/Edward McCrorie/Richard P. Martin,3.76,0801882672,9780801882678,eng,472,57,2,8/23/2005,Johns Hopkins University Press -26448,The Odyssey (New Translations from Antiquity),Homer/Edward McCrorie/Richard P. Martin,3.76,0801868548,9780801868542,grc,472,6,1,4/8/2004,Johns Hopkins University Press -26449,Bulfinch's Mythology,Thomas Bulfinch/Richard P. Martin,4.10,0062700251,9780062700254,eng,768,66,7,12/24/1991,Collins Reference -26451,Teaching Reading Comprehension to Students with Learning Difficulties,Janette K. Klingner/Sharon R. Vaughn/Alison Boardman,3.79,1593854463,9781593854461,eng,178,23,1,4/12/2007,The Guilford Press -26470,Seven Gothic Tales,Isak Dinesen/Karen Blixen,3.93,0141187190,9780141187198,eng,368,85,12,10/31/2002,Penguin Classics -26471,Last Tales,Isak Dinesen/Karen Blixen,4.11,0679736409,9780679736400,eng,352,332,22,12/3/1991,Vintage -26472,Isak Dinesen: The Life of a Storyteller,Judith Thurman,4.06,0312135254,9780312135256,en-US,512,1041,53,10/15/1995,Picador -26474,Out of Africa / Shadows on the Grass,Isak Dinesen/Karen Blixen,4.24,0679724753,9780679724759,eng,462,9298,312,10/23/1989,Vintage -26475,Letters from Africa 1914-1931,Isak Dinesen/Karen Blixen/Frans Lasson/Anne Born,4.21,0226153118,9780226153117,eng,516,489,12,4/15/1984,University Of Chicago Press -26480,Witness,Karen Hesse,3.72,0439272009,9780439272001,eng,161,4667,703,3/1/2003,Scholastic Paperbacks -26481,The Cats In Krasinski Square,Karen Hesse/Wendy Watson,4.13,0439435404,9780439435406,eng,32,955,195,8/1/2004,Scholastic Press -26482,The Music of Dolphins,Karen Hesse,3.82,0590897985,9780590897983,eng,181,6015,566,2/1/1998,Scholastic Paperbacks -26503,Verbatim: From the bawdy to the sublime the best writing on language for word lovers grammar mavens and armchair linguists,Erin McKean,3.59,015601209X,9780156012096,eng,372,124,17,10/17/2001,Mariner Books -26506,Sisters,Danielle Steel,3.85,0385340222,9780385340229,eng,341,15495,1037,2/13/2007,Delacorte Press -26511,The Long Road Home,Danielle Steel,4.00,0552145025,9780552145022,en-GB,476,7407,297,3/4/1999,Corgi -26522,Three Plays of Euripides: Alcestis/Medea/The Bacchae,Euripides/Paul Roche,3.97,0393093123,9780393093124,eng,144,243,23,2/17/1974,W.W. Norton & Company -26525,Leadership Challenge,James M. Kouzes,4.05,0787983500,9780787983505,eng,50,0,0,12/1/2004,Pfeiffer & Company -26571,The Kestrel (Westmark #2),Lloyd Alexander,3.98,0141310693,9780141310695,eng,244,2742,104,6/10/2002,Firebird Books -26573,The God in the Moon (Age of Conan: Hyborian Adventures: A Soldier's Quest #1),Richard A. Knaak,3.74,0441014224,9780441014224,en-GB,297,59,4,7/25/2006,Ace Books -26575,Firedrake (Dragonrealm #1),Richard A. Knaak,3.78,0595092144,9780595092147,eng,276,638,39,6/1/2000,Backinprint.com -26576,Night of Blood (Dragonlance: The Minotaur Wars #1),Richard A. Knaak/Margaret Weis,3.91,0786931965,9780786931965,eng,372,1307,22,2/1/2004,Wizards of the Coast -26578,The Eye of Charon (Age of Conan: Hyborian Adventures: A Soldier's Quest #2),Richard A. Knaak,3.91,0441014453,9780441014453,en-GB,288,43,4,9/26/2006,Ace -26579,Children of the Drake (Dragonrealm: Origins #2),Richard A. Knaak,3.88,059509208X,9780595092086,eng,292,167,8,5/1/2000,Backinprint.com -26581,Sleeping Beauty Trilogy (Sleeping Beauty #1-3),A.N. Roquelaure/Anne Rice,3.99,0452156610,9780452156616,eng,724,10891,230,5/1/1999,Plume -26583,Beauty's Punishment,A.N. Roquelaure/Anne Rice,3.62,0452266629,9780452266629,eng,233,426,30,6/1/1984,Plume -26586,The Land of the Dead (Tales from the Odyssey #2),Mary Pope Osborne/Homer/Troy Howell,3.97,0786809299,9780786809295,eng,112,400,32,9/1/2003,Little Brown Books for Young Readers -26587,The One-Eyed Giant (Tales from the Odyssey #1),Mary Pope Osborne/Homer/Troy Howell,3.88,0786809280,9780786809288,en-US,112,782,84,9/1/2003,Little Brown Books for Young Readers -26588,Tsunamis and Other Natural Disasters (Magic Tree House Research Guide #15),Mary Pope Osborne/Natalie Pope Boyce/Salvatore Murdocca,4.03,0375832211,9780375832215,en-GB,128,466,15,2/27/2007,Random House Books for Young Readers -26590,The Final Battle (Tales from the Odyssey #6),Mary Pope Osborne/Troy Howell,4.08,0786809949,9780786809943,en-US,112,263,17,7/1/2005,Little Brown Books for Young Readers -26591,Ancient Greece and the Olympics (Magic Tree House Research Guide #10),Mary Pope Osborne/Natalie Pope Boyce/Salvatore Murdocca,4.05,0375823786,9780375823787,eng,119,1073,30,6/8/2004,Random House Books for Young Readers -26592,Ancient Rome and Pompeii (Magic Tree House Research Guide #14),Mary Pope Osborne/Natalie Pope Boyce/Salvatore Murdocca,4.07,0375832203,9780375832208,eng,128,659,30,4/25/2006,Random House for Young Readers -26593,Haunted Castle on Hallows Eve (Magic Tree House #30),Mary Pope Osborne/Salvatore Murdocca,4.04,1400091055,9781400091058,eng,0,7,0,8/10/2004,Listening Library (Audio) -26595,Earthquake in the Early Morning (Magic Tree House #24),Mary Pope Osborne/Salvatore Murdocca,3.94,067989070X,9780679890706,eng,96,6816,227,6/15/2010,Random House for Young Readers -26596,E.E. Cummings: Complete Poems 1904-1962 (Revised Corrected and Expanded Edition),E.E. Cummings/George J. Firmage,4.35,0871401525,9780871401526,eng,1136,19542,184,4/17/1994,Liveright/W.W. Norton & Company Inc. -26599,Selected Poems,E.E. Cummings/Richard S. Kennedy,4.22,0871401541,9780871401540,eng,208,12438,264,8/17/2007,Liveright -26603,Tulips & Chimneys,E.E. Cummings/Richard S. Kennedy,4.38,0871401657,9780871401656,eng,208,1206,49,8/17/1996,Liveright Publishing Corp. -26638,Kokopelli: The Magic Mirth and Mischief of an Ancient Symbol,Dennis Slifer/R. Carlos Nakai,3.69,1423601742,9781423601746,eng,240,19,4,4/5/2007,Gibbs Smith -26653,The Coal Tattoo,Silas House,4.04,0345480058,9780345480057,eng,368,1789,144,8/30/2005,Ballantine Books -26654,Clay's Quilt,Silas House,3.95,0345450698,9780345450692,eng,320,2685,235,2/26/2002,Ballantine Books -26666,Things Pondered: From the Heart of a Lesser Woman,Beth Moore,4.09,0805427317,9780805427318,en-US,160,283,24,4/1/2004,B Books -26670,Scholastic Success with 4th Grade Workbook,Terry Cooper,4.12,0439569729,9780439569729,en-US,416,8,0,6/1/2003,Teaching Resources -26673,The Punisher Vol. 6: Confederacy of Dunces,Garth Ennis,4.00,0785113444,9780785113447,eng,144,289,11,4/1/2004,Marvel Comics Group -26689,Thunderbird Falls (Walker Papers #2),C.E. Murphy,3.85,0373802358,9780373802357,eng,408,5729,256,4/25/2006,Luna Books -26690,Coyote Dreams (Walker Papers #3),C.E. Murphy,4.00,0373802722,9780373802722,eng,408,5810,200,4/24/2007,Luna Books -26695,Savage Anamoly: The Power of Spinoza’s Metaphysics and Politics,Antonio Negri/Michael Hardt,3.96,0816636702,9780816636709,eng,304,49,3,12/1/1999,Univ Of Minnesota Press -26696,Time for Revolution,Antonio Negri/Matteo Mandarini,3.70,0826479316,9780826479310,eng,271,45,2,5/1/2005,Bloomsbury Academic -26697,The Philosophy of Antonio Negri Volume One: Resistance in Practice,Timothy S. Murphy/Abdul-Karim Mustapha,4.12,0745323375,9780745323374,eng,265,8,1,7/20/2005,Pluto Press -26722,Act of Treason (Mitch Rapp #9),Vince Flynn,4.29,0743270371,9780743270373,en-US,432,38757,826,10/10/2006,Atria Books -26723,Act of Treason (Mitch Rapp #9),Vince Flynn,4.29,1416542264,9781416542261,eng,467,768,47,8/28/2007,Pocket Books -26725,Act of Treason (Mitch Rapp #9),Vince Flynn,4.29,1585479004,9781585479009,eng,462,10,1,1/1/2007,Center Point -26738,President Dad Volume 2,Ju-Yeon Rhim,3.49,1595322353,9781595322357,en-US,168,73,1,3/8/2005,TokyoPop -26748,Game of Shadows: Barry Bonds BALCO and the Steroids Scandal that Rocked Professional Sports,Mark Fainaru-Wada/Lance Williams,3.81,1592402682,9781592402687,en-US,348,165,24,3/1/2007,Avery -26759,Dark Water,Kōji Suzuki/Glynne Walley,3.61,1932234225,9781932234220,eng,279,2433,146,6/6/2006,Vertical -26766,Dark Water's Embrace (Mictlan #1),Stephen Leigh,3.77,0380794780,9780380794782,eng,331,78,10,3/1/1998,Harper Voyager -26768,In Dark Waters,Mary Burton,3.81,0373274483,9780373274482,eng,249,95,10,6/28/2005,Silhouette Books -26779,Oswald Chambers Abandoned to God: The Life Story of the Author of My Utmost for His Highest,David McCasland/Oswald Chambers,4.45,1572930500,9781572930506,eng,352,1372,87,9/1/1998,Our Daily Bread Publishing -26780,Mandie and the Abandoned Mine (Mandie #8),Lois Gladys Leppard,3.96,0871239329,9780871239327,eng,160,1369,17,5/1/1987,Bethany House Publishers -26784,Abandoned Prayers: The Incredible True Story of Murder Obsession and Amish Secrets,Gregg Olsen,3.79,0312982011,9780312982010,eng,399,1458,98,6/16/2003,St. Martin's True Crime -26800,C++ Programmer's Notebook,Jim Keogh/John Shapley Gray,3.00,0130887013,9780130887016,eng,528,3,0,8/16/2001,Prentice Hall PTR -26805,The Sibley Field Guide to Birds of Western North America,David Allen Sibley,4.69,0679451218,9780679451211,en-US,473,730,36,4/29/2003,Alfred A. Knopf -26821,The National Geographic Society: 100 Years of Adventure & Discovery,C.D.B. Bryan,4.11,0810982196,9780810982192,en-US,528,10,2,9/1/2001,Abradale Books/Harry N. Abrams -26827,Park Profiles: Grand Canyon Country (Park Profiles),National Geographic Society,4.10,0792270320,9780792270324,eng,200,10,1,1/19/2010,National Geographic -26829,Canada's Incredible Coasts,Donald J. Crump/William R. Gray,3.71,0870448293,9780870448294,eng,199,7,0,11/1/1993,National Geographic Society -26832,Shout Out Loud! 2,Satosumi Takaguchi,3.95,1598163175,9781598163179,eng,194,91,2,8/1/2006,Blu -26833,Shout Out Loud! 5,Satosumi Takaguchi,3.93,1598163205,9781598163209,en-GB,192,83,6,10/1/2007,Blu -26835,Can't Win With You 1,Satosumi Takaguchi/Yukine Honami,3.57,1569708126,9781569708125,eng,176,77,3,8/15/2007,Digital Manga Publishing -26836,叫んでやるぜ! (1) (あすかコミックスCL-DX),Satosumi Takaguchi/Satosumi Takaguchi,3.68,4048526456,9784048526456,jpn,165,2,0,2/1/1996,角川書店 (Kadokawa Shoten) -26839,叫んでやるぜ! (2) (ASUKA COMICS CL-DX),Satosumi Takaguchi/Satosumi Takaguchi,3.95,4048527851,9784048527859,jpn,178,2,0,3/1/1997,角川書店 (Kadokawa Shoten) -26841,Soups,Norman Kolpas/Allan Rosenberg/Chuck Williams/Laurie Wertz,3.88,0783502508,9780783502502,eng,108,17,2,5/24/1999,Time-Life Books -26842,Pies and Tarts,Chuck Williams/Laurie Wertz/John Phillip Carroll,3.82,0783502001,9780783502007,eng,108,18,2,5/24/1999,Time Life Medical -26853,The Fate of Reason: German Philosophy from Kant to Fichte,Frederick C. Beiser,4.52,067429503X,9780674295032,eng,410,118,8,10/15/1993,Harvard University Press -26860,Michael's Golden Rules,Deloris Jordan/Roslyn M. Jordan/Michael Jordan/Kadir Nelson,3.93,0689870167,9780689870163,eng,32,83,22,1/23/2007,Simon Schuster/Paula Wiseman Books -26871,Confessions of an Actor,Laurence Olivier,3.69,0671417010,9780671417017,eng,348,279,19,12/31/1982,Simon & Schuster -26904,For Lust of Knowing: The Orientalists and Their Enemies,Robert Irwin,3.72,0140289232,9780140289237,eng,304,10,0,1/25/2007,Penguin -26908,The Arabian Nightmare,Robert Irwin,3.84,1585672173,9781585672172,eng,282,411,32,4/30/2002,Harry N. Abrams -26913,The Plot Against America,Philip Roth,3.77,0224074539,9780224074537,eng,391,337,47,9/30/2004,Jonathan Cape -26919,Continental Drift,Russell Banks,3.87,0060854944,9780060854942,eng,408,2824,299,3/13/2007,Harper Perennial Modern Classics -26920,The Darling,Russell Banks,3.78,0060957352,9780060957353,en-US,400,1986,246,10/11/2005,Harper Perennial -26922,Affliction,Russell Banks/Pierre Furlan,3.99,2742722807,9782742722808,fre,486,63,1,12/29/1999,Babel -26930,Success Stories,Russell Banks,3.72,0060927194,9780060927196,en-US,192,155,11,4/26/1996,Harper Perennial -26931,Cloudsplitter,Russell Banks,3.91,0060930861,9780060930868,eng,758,3618,425,1/27/1999,Harper Perennial -26934,A Multitude of Sins,Richard Ford,3.75,037572656X,9780375726569,eng,304,1183,74,2/4/2003,Vintage -26950,The Custom of the Country,Edith Wharton/Linda Wagner-Martin,4.03,0143039709,9780143039709,eng,370,7717,742,9/28/2006,Penguin Classics -26968,Quicksand,Nella Larsen,3.68,0486451402,9780486451404,eng,125,181,29,9/15/2006,Dover Publications -26973,Their Eyes Were Watching God,Zora Neale Hurston/Ruby Dee,3.91,0060776536,9780060776534,en-US,7,421,99,11/23/2004,Caedmon -26979,Novels and Stories,Zora Neale Hurston/Cheryl A. Wall,4.37,0940450836,9780940450837,eng,1054,564,30,2/1/1995,Library of America -26994,Plato on Knowledge and Reality,Nicholas P. White,3.67,0915144220,9780915144228,eng,272,6,0,6/15/1976,Hackett Publishing Company Inc. -26996,A Companion to Plato's Republic,Nicholas P. White,3.67,0915144921,9780915144921,eng,288,25,0,5/1/1979,Hackett Publishing Company Inc. -26999,Something Rotten (Thursday Next #4),Jasper Fforde,4.16,014303541X,9780143035411,eng,385,27382,1138,7/26/2005,Penguin Books -27000,Lost in a Good Book (Thursday Next #2),Jasper Fforde,4.14,0142004030,9780142004036,eng,399,42454,2156,2/4/2004,Penguin Books -27001,The Well of Lost Plots (Thursday Next #3),Jasper Fforde,4.10,0143034359,9780143034353,eng,375,31540,1434,8/3/2004,Penguin Books -27002,First Among Sequels (Thursday Next #5),Jasper Fforde,4.02,0670038717,9780670038718,eng,363,20630,1310,7/24/2007,Viking Adult -27003,The Eyre Affair (Thursday Next #1),Jasper Fforde,3.91,0142001805,9780142001806,eng,374,97343,8068,2/25/2003,Penguin Books -27005,The Eyre Affair (Thursday Next #1),Jasper Fforde,3.91,034073356X,9780340733561,eng,373,3689,566,7/19/2001,Hodder and Stoughton -27006,Chop Shop (Bug Man #2),Tim Downs,4.22,1582294011,9781582294018,eng,352,923,75,7/1/2004,Howard Books -27009,Shoofly Pie (Bug Man #1),Tim Downs,4.18,1582293082,9781582293080,eng,371,1425,130,7/1/2003,Howard Books -27023,RG Veda Vol. 01,CLAMP,3.72,1595324844,9781595324849,eng,197,820,31,4/12/2005,Tokyopop -27036,Augustine,Henry Chadwick,3.71,0192875345,9780192875341,eng,128,14,3,6/19/1986,Oxford University Press USA -27038,The Church in Ancient Society: From Galilee to Gregory the Great (History of the Christian Church),Henry Chadwick,4.19,0199265771,9780199265770,en-GB,744,15,1,7/3/2003,OUP Oxford -27039,East and West: The Making of a Rift in the Church from Apostolic Times until the Council of Florence (History of the Christian Church),Henry Chadwick,3.88,0199280169,9780199280162,en-US,316,4,1,5/12/2005,OUP Oxford -27049,Satan in Goray,Isaac Bashevis Singer/Jacob Sloan/Ruth R. Wisse,3.85,0374524793,9780374524791,eng,288,853,54,7/31/1996,Farrar Straus and Giroux -27051,Lights Out,Peter Abrahams,3.65,0345445783,9780345445780,eng,352,208,16,6/25/2002,Fawcett Books -27052,Behind the Curtain (Echo Falls #2),Peter Abrahams,3.90,0060737042,9780060737047,en-US,352,30,4,4/25/2006,HarperCollins -27054,Red Message,Peter Abrahams,3.12,0380898039,9780380898039,eng,320,8,2,4/1/1986,Avon Books -27059,Her Smoke Rose Up Forever,James Tiptree Jr.,4.21,1892391201,9781892391209,eng,508,3190,325,11/1/2004,Tachyon Publications -27066,The Starry Rift,James Tiptree Jr.,3.81,0312890214,9780312890216,eng,250,232,25,9/1/1994,Orb Books -27091,Teaching to Transgress: Education as the Practice of Freedom,bell hooks,4.37,0415908086,9780415908085,eng,216,5162,325,9/14/1994,Routledge -27092,Desde mi cielo,Alice Sebold/Aurora Echevarría,3.81,0307209431,9780307209436,spa,336,28,3,10/12/2004,Debolsillo -27118,The Roman Empire,Colin Wells,3.58,0674777700,9780674777705,en-US,384,110,7,8/11/1995,Harvard University Press -27126,Bitter Is the New Black: Confessions of a Condescending Egomaniacal Self-Centered Smartass Or Why You Should Never Carry A Prada Bag to the Unemployment Office,Jen Lancaster,3.90,0451217608,9780451217608,eng,400,44607,4114,3/7/2006,NAL -27149,Economics,Paul Krugman/Robin Wells,3.99,0716799561,9780716799566,eng,1088,120,5,4/6/2007,Worth Publishers -27150,Development Geography and Economic Theory,Paul Krugman,4.00,026261135X,9780262611350,eng,127,81,3,8/21/1997,MIT Press -27151,Pop Internationalism,Paul Krugman,3.68,0262611333,9780262611336,eng,221,310,16,2/24/1997,MIT Press -27167,An Unquiet Grave (Louis Kincaid #7),P.J. Parrish,4.13,0786016078,9780786016075,eng,384,614,68,2/1/2006,Pinnacle -27168,Island Of Bones (Louis Kincaid #5),P.J. Parrish,4.02,0786016051,9780786016051,eng,384,586,62,1/1/2004,Pinnacle -27170,Dead Of Winter (Louis Kincaid #2),P.J. Parrish,3.95,0786011890,9780786011896,eng,416,773,86,1/1/2001,Pinnacle -27171,Thicker Than Water (Louis Kincaid #4),P.J. Parrish,4.09,0786014202,9780786014200,eng,380,414,37,1/1/2003,Pinnacle -27189,Teleportation: From Star Trek to Tesla,Commander X/Tim R. Swartz,2.83,1892062437,9781892062437,eng,139,2,1,8/20/2012,Inner Light - Global Communications -27194,Pictures Showing What Happens on Each Page of Thomas Pynchon's Novel Gravity's Rainbow,Zak Smith/Steve Erickson,4.10,0977312798,9780977312795,en-GB,784,490,41,11/30/2006,Tin House Books -27200,Sailing the Wine-Dark Sea: Why the Greeks Matter,Thomas Cahill,3.77,0385495544,9780385495547,eng,352,2470,233,7/27/2004,Anchor -27204,The Gospel According to Luke,Anonymous/Thomas Cahill,4.64,0802136184,9780802136183,eng,81,169,17,10/29/1999,Grove Press -27208,The Third Policeman,Flann O'Brien/Denis Donoghue,4.01,156478214X,9781564782144,eng,200,12452,1179,3/1/1999,Dalkey Archive Press -27222,The Landmark Thucydides: A Comprehensive Guide to the Peloponnesian War,Thucydides/Robert B. Strassler/Richard Crawley/Victor Davis Hanson,3.90,0684827905,9780684827902,eng,713,1751,170,9/10/1998,Free Press -27236,Six Haunted Hairdos (The Hamlet Chronicles #2),Gregory Maguire/Elaine Clayton,3.53,0064407209,9780064407205,eng,176,92,7,8/18/1999,HarperCollins -27243,Dancing in the Flames: The Dark Goddess in the Transformation of Consciousness,Marion Woodman/Elinor Dickson,4.24,1570623139,9781570623134,eng,256,375,24,5/6/1997,Shambhala -27247,The Complete Book of Home Site and Office Security: Selecting Installing and Troubleshooting Systems and Devices,Bill Phillips,3.50,0071467440,9780071467445,eng,309,2,0,8/1/2006,McGraw-Hill Education -27252,Pope Joan,Donna Woolfolk Cross,4.08,0345416260,9780345416261,eng,422,56471,3809,6/9/2009,Ballantine Books (NY) -27253,Pope Joan: Translated & Adapted from the Greek,Emmanuel Rhoides/Lawrence Durrell,3.92,0720610656,9780720610659,eng,200,266,19,3/1/2000,Peter Owen Publishers -27266,Glass Houses (The Morganville Vampires #1),Rachel Caine,3.92,0451219945,9780451219947,eng,239,83997,3992,10/3/2006,NAL Jam -27269,The Glass House (Captain Lacey #3),Ashley Gardner,4.04,0425199436,9780425199435,eng,256,1123,62,12/7/2004,Berkley -27277,Glass House,Philip Johnson/Toshio Nakamura,4.00,1580931863,9781580931861,eng,256,14,2,5/10/2007,The Monacelli Press -27293,The Echo of Greece,Edith Hamilton,4.09,0393002314,9780393002317,eng,224,29,3,2/17/1964,W.W. Norton -27295,Three Greek Plays: Prometheus Bound/Agamemnon/The Trojan Women,Euripides/Aeschylus/Edith Hamilton,4.06,0393002039,9780393002034,en-US,240,77,13,11/28/1958,W.W. Norton & Company -27297,The Analects,Confucius/D.C. Lau,3.83,0140443487,9780140443486,eng,249,12131,319,9/27/1979,Penguin Books Ltd -27298,The Twentieth Wife (Taj Mahal Trilogy #1),Indu Sundaresan,4.04,0743428188,9780743428187,en-US,380,11380,1253,2/18/2003,Washington Square Press -27299,La Emperatriz tras el velo (Trilogía Taj Mahal #1),Indu Sundaresan/Alberto Coscarelli,4.04,8425337607,9788425337604,spa,382,2,1,4/30/2003,Grijalbo Mondadori Sa -27303,A History of God: The 4 000-Year Quest of Judaism Christianity and Islam,Karen Armstrong,3.87,0345384563,9780345384560,eng,496,1343,144,8/9/1994,Ballantine Books -27304,Buddha,Karen Armstrong,3.89,0143034367,9780143034360,eng,240,3783,286,9/28/2004,Penguin Books -27306,Islam: A Short History,Karen Armstrong,4.02,081296618X,9780812966183,eng,230,7660,448,8/6/2002,Modern Library -27308,The Spiral Staircase: My Climb Out of Darkness,Karen Armstrong,3.99,0385721277,9780385721271,eng,306,5755,575,2/22/2005,Anchor -27309,The Battle for God: A History of Fundamentalism,Karen Armstrong,3.93,0345391691,9780345391698,eng,480,5677,254,1/30/2001,Ballantine Books -27310,Muhammad: A Biography of the Prophet,Karen Armstrong,4.15,0062508865,9780062508867,eng,304,4978,258,9/10/1993,HarperOne -27313,The Analects of Confucius: A Philosophical Translation,Confucius/Henry Rosemont Jr./Roger T. Ames,3.83,0345434072,9780345434074,eng,352,180,16,9/7/1999,Ballantine Books -27315,Analects,Confucius/Edward Slingerland,3.83,0872206351,9780872206359,eng,312,115,17,9/15/2003,Hackett Publishing Company Inc. -27323,Hiroshima,John Hersey,3.97,0679721037,9780679721031,eng,152,52567,2358,3/4/1989,Vintage -27326,The Wall,John Hersey,4.28,0394756967,9780394756967,eng,640,1829,57,3/12/1988,Vintage Books -27333,Silent Spring,Rachel Carson/Linda Lear/Edward O. Wilson,3.97,0618249060,9780618249060,eng,378,30281,1694,10/22/2002,Mariner Books -27345,The House of Life: Rachel Carson at Work,Paul Brooks/Rachel Carson,3.95,0395517427,9780395517420,eng,350,10,1,10/18/1989,Mariner Books -27347,Under the Sea Wind (Nature Classic),Rachel Carson/Bob Hines,4.14,0140253807,9780140253801,eng,320,18,4,4/1/1996,Penguin -27356,Black Meets White,Justine Korman Fontes/Geoff Waring,3.50,0763619337,9780763619336,en-US,24,50,11,7/12/2005,Candlewick Press -27363,Back Bay (Peter Fallon #1),William Martin,3.91,0446363162,9780446363167,eng,532,1614,173,7/1/1992,Grand Central Publishing -27368,Letters from the Bay of Islands: The Story of Marianne Williams,Marianne Williams/Caroline Fitzgerald,3.72,0143019295,9780143019299,eng,270,24,2,1/1/2004,Penguin Books -27385,Since "Silent Spring",Frank Graham,3.78,0449231410,9780449231418,eng,0,1,0,6/12/1974,Fawcett -27397,A Civil Action,Jonathan Harr,3.97,0679772677,9780679772675,eng,512,13628,754,8/27/1996,Vintage -27398,The Lost Painting,Jonathan Harr,3.74,0375759867,9780375759864,en-US,320,24619,765,11/7/2006,Random House Trade Paperbacks -27399,The Lost Painting,Jonathan Harr,3.74,0375431535,9780375431531,eng,368,5,0,11/1/2005,Random House Large Print -27404,Gideon's Trumpet: How One Man a Poor Prisoner Took His Case to the Supreme Court-And Changed the Law of the United States,Anthony Lewis,3.91,0679723129,9780679723127,eng,288,2264,185,4/23/1989,Vintage -27410,The Library of Greek Mythology,Apollodorus/Robin Hard,3.98,0192839241,9780192839244,eng,336,1047,34,2/25/1999,Oxford University Press -27411,The Library 1 Books 1-3.9,Apollodorus/James George Frazer,3.93,0674991354,9780674991354,mul,464,21,2,1/1/1921,Harvard University Press (Cambridge MA)/Wm Heinemann Ltd. (London) -27413,The Library of Apollodorus: Gods and Heroes of the Greeks,Apollodorus/Selwyn Reginald Cudjoe/Leonard Baskin,3.98,0870232061,9780870232060,eng,311,11,1,9/1/1986,University of Massachusetts Press -27415,Apollodorus' Library and Hyginus' Myths: Two Handbooks of Greek Mythology,Apollodorus/Hyginus/R. Scott Smith/Stephen M. Trzaskoma,3.98,0872208206,9780872208209,eng,328,20,2,3/1/2007,Hackett Publ. Co Inc -27416,Mythographi Graeci 1: Apollodori Bibliotheca Apollodori epitoma Procli excerpta ex cycli epici carminibus Pediasmi libellus de duodecim Herculis...Graecorum et Romanorum Teubneriana,Apollodorus/Richard Wagner,0.00,3598715439,9783598715433,grc,335,0,0,7/15/1998,K.G. Saur Verlag -27418,Theogony / Works and Days,Hesiod/M.L. West,3.75,0192839411,9780192839411,eng,79,9276,163,5/13/1999,Oxford University Press -27419,The Works and Days/Theogony,Hesiod,3.75,1419188518,9781419188510,eng,48,3,0,6/17/2004,Kessinger Publishing -27420,Theogony/Works and Days/Shield,Hesiod/Apostolos N. Athanassakis,3.97,0801879841,9780801879845,eng,192,83,4,6/28/2004,Johns Hopkins University Press -27421,The Works and Days/Theogony/The Shield of Herakles,Hesiod/Richmond Lattimore,3.97,0472081616,9780472081615,eng,256,90,8,11/15/1991,University of Michigan Press -27422,The Poems,Hesiod/R.M. Frazer/Mary Sue Roniger,3.75,0806118466,9780806118468,eng,160,105,7,5/15/1983,University of Oklahoma Press -27423,Theogonia Opera et Dies Scutum Fragmenta Selecta (Classical Texts),Hesiod/Friedrich Solmsen/Reinholdo Merkelbach,4.06,0198140711,9780198140719,eng,282,9,1,9/13/1990,Clarendon Press -27424,Works of Hesiod and the Homeric Hymns,Hesiod/Daryl Hine,3.73,0226329658,9780226329659,eng,230,34,4,1/15/2005,University of Chicago Press -27425,The Georgics of Virgil,Virgil/David Ferry,3.85,0374530319,9780374530310,eng,224,85,12,5/2/2006,Farrar Straus & Giroux -27426,The Death of Virgil,Hermann Broch/Jean Starr Untermeyer,4.19,0679755489,9780679755487,eng,496,794,65,1/15/1995,Vintage -27427,The Eclogues of Virgil,Virgil/David Ferry,3.91,0374526966,9780374526962,eng,112,74,12,6/15/2000,Farrar Straus & Giroux -27428,The Art of the Personal Essay: An Anthology from the Classical Era to the Present,Phillip Lopate,4.19,0385422989,9780385422987,eng,777,48,4,1/1/1994,Anchor Books -27432,The Art of the Personal Essay: An Anthology from the Classical Era to the Present,Phillip Lopate,4.19,038542339X,9780385423397,eng,777,2136,108,1/15/1997,Anchor -27434,Waterfront: A Walk Around Manhattan,Phillip Lopate,3.71,0385497148,9780385497145,eng,450,254,34,5/10/2005,Anchor -27438,The DC Comics Encyclopedia,Scott Beatty/Robert Greenberger/Phil Jimenez/Daniel Wallace,4.29,075660592X,9780756605926,eng,352,125,6,10/4/2004,DK Publishing -27440,The Marvel Encyclopedia,Tom DeFalco/Peter Sanderson/Michael Teitelbaum/Daniel Wallace/Tom Brevoort/Andrew Darling,4.37,0756623588,9780756623586,eng,352,1049,43,10/16/2006,DK -27445,Reinventing Jesus: How Contemporary Skeptics Miss the Real Jesus and Mislead Popular Culture,J. Ed Komoszewski/Daniel B. Wallace/M. James Sawyer,4.20,082542982X,9780825429828,en-US,347,225,21,5/9/2006,Kregel Publications -27451,The Great Gatsby,F. Scott Fitzgerald/Matthew J. Bruccoli,3.91,0684801523,9780684801520,eng,216,9844,1050,6/1/1995,Scribner -27456,Daniel Deronda,George Eliot/Earl L. Dachslager/George Stade,3.84,1593082908,9781593082901,eng,784,206,47,1/30/2005,Barnes Noble Classics -27457,King Leopold's Ghost,Adam Hochschild,4.15,0618711678,9780618711673,eng,384,102,20,4/1/2006,Mariner Books -27473,The End of Days (The Earth Chronicles #7),Zecharia Sitchin,4.08,0061238236,9780061238239,eng,336,489,36,4/3/2007,William Morrow -27485,Mating in Captivity: Reconciling the Erotic and the Domestic,Esther Perel,4.15,0060753633,9780060753634,eng,272,10138,994,9/5/2006,Harper -27486,The Mating Mind: How Sexual Choice Shaped the Evolution of Human Nature,Geoffrey Miller,4.10,038549517X,9780385495172,eng,528,2144,89,4/17/2001,Anchor Books -27491,The Evolution Of Desire: Strategies of Human Mating,David M. Buss,4.08,046500802X,9780465008025,en-GB,354,1459,78,6/26/2003,Basic Books -27500,Middlesex,Jeffrey Eugenides,4.00,0965045641,9780965045643,eng,529,1081,228,9/4/2002,Farrar Straus and Giroux -27503,The Liberated Bride,A.B. Yehoshua/Hillel Halkin,3.77,0156030160,9780156030168,en-US,576,457,44,10/4/2004,Mariner Books -27507,Plan of Attack,Bob Woodward/Alice Mayhew,3.68,0743255488,9780743255486,eng,480,4603,121,10/11/2004,Simon & Schuster -27511,The Commanders,Bob Woodward,3.71,0743234758,9780743234757,eng,400,527,26,1/1/2002,Simon & Schuster -27514,Veil: The Secret Wars of the CIA 1981-1987,Bob Woodward,3.67,0743274032,9780743274036,eng,592,758,48,7/1/2005,Simon & Schuster -27515,Shadow: Five Presidents and the Legacy of Watergate,Bob Woodward,3.72,0684852632,9780684852638,eng,608,1035,42,6/6/2000,Simon & Schuster -27516,The Brethren: Inside the Supreme Court,Bob Woodward/Scott Armstrong,4.11,0743274024,9780743274029,eng,592,3841,189,7/1/2005,Simon & Schuster -27520,Katy and the Big Snow (Book & Cassette),Virginia Lee Burton,4.24,0395959918,9780395959916,eng,40,0,0,8/30/1999,Houghton Mifflin Harcourt -27523,Left Behind (Left Behind #1),Tim LaHaye/Jerry B. Jenkins,3.83,0842342702,9780842342704,eng,342,189090,3293,9/1/2000,Tyndale House Publishers -27525,Armageddon: The Cosmic Battle of the Ages (Left Behind #11),Tim LaHaye/Jerry B. Jenkins,4.03,0842332367,9780842332361,eng,395,15869,248,11/18/2003,Tyndale House Publishers -27526,Desecration (Left Behind #9),Tim LaHaye/Jerry B. Jenkins,4.01,0842332294,9780842332293,eng,432,21603,261,5/20/2002,Tyndale House Publishers -27528,Nicolae (Left Behind #3),Tim LaHaye/Jerry B. Jenkins,3.96,078622469X,9780786224692,eng,530,30129,566,12/3/2005,Thorndike Press -27533,Banker to the Poor: Micro-Lending and the Battle Against World Poverty,Muhammad Yunus/Alan Jolis,4.09,1586481983,9781586481988,eng,289,7776,737,10/16/2003,PublicAffairs -27537,Working with Emotional Intelligence,Daniel Goleman,3.81,0553378589,9780553378580,eng,400,3265,187,1/4/2000,Bantam -27539,On Intelligence,Jeff Hawkins/Sandra Blakeslee,4.12,0805078533,9780805078534,eng,261,5347,396,8/1/2005,St. Martin's Griffin -27540,The Emotional Intelligence Quick Book: Everything You Need to Know to Put Your EQ to Work,Travis Bradberry/Jean Greaves/Patrick Lencioni,3.52,0743273265,9780743273268,en-US,185,708,68,6/7/2005,Touchstone -27541,Financial Intelligence: A Manager's Guide to Knowing What the Numbers Really Mean,Karen Berman/Joe Knight/John Case,4.12,1591397642,9781591397649,eng,272,1870,92,1/1/2006,Harvard Business Review Press -27543,Artificial Intelligence: A Modern Approach,Stuart Russell/Peter Norvig,4.17,0137903952,9780137903955,eng,1132,2689,79,12/20/2002,Prentice Hall -27548,Most Likely to Succeed at Work: How Work Is Just Like High School -- Crib Notes for Getting Along and Getting Ahead Amidst Bullies Teachers' Pets Cheerleaders and Other Members of the "Class",Wilma Davidson/Jack Dougherty,3.45,0312317085,9780312317089,eng,224,11,1,6/5/2003,St. Martin's Press -27550,Walking with the Wind: A Memoir of the Movement,John Lewis/Michael D'Orso,4.49,0156007088,9780156007085,en-US,496,2052,253,10/18/1999,Mariner Books -27557,Jackie After Jack: Portrait of the Lady,Christopher Andersen/Christopher Andersen,3.95,0446607436,9780446607438,eng,592,373,27,3/1/1999,Grand Central Publishing -27566,To Battle the Gods (Jalav Amazon Warrior #5),Sharon Green,4.07,0886771285,9780886771287,eng,446,87,1,5/6/1986,DAW -27574,A Tale of Love and Darkness,Amos Oz/Nicholas de Lange,4.22,015603252X,9780156032520,eng,560,5325,520,11/1/2005,Harvest / Harcourt -27577,What Went Wrong? The Clash Between Islam & Modernity in the Middle East,Bernard Lewis,3.49,0060516054,9780060516055,eng,186,2474,257,1/7/2003,Harper Perennial -27578,Not Even Wrong: The Failure of String Theory and the Search for Unity in Physical Law,Peter Woit,3.93,0465092756,9780465092758,eng,291,1495,52,9/4/2006,Basic Books -27579,Boy Were We Wrong About Dinosaurs!,Kathleen V. Kudlinski/S.D. Schindler,3.93,0525469788,9780525469780,en-US,32,254,73,9/22/2005,Dutton Books for Young Readers -27580,There Is Nothing Wrong with You: Going Beyond Self-Hate,Cheri Huber/June Shiver,4.18,0971030901,9780971030909,eng,239,1623,101,10/1/2001,Keep It Simple Books -27582,Dead Wrong (Joanna Brady #12),J.A. Jance,4.04,0060540907,9780060540906,eng,368,4163,220,7/25/2006,William Morrow -27584,Sixty Million Frenchmen Can't Be Wrong,Jean-Benoît Nadeau/Julie Barlow,3.74,1402200455,9781402200458,eng,351,2164,212,5/1/2003,Sourcebooks -27585,The Perfect Wrong Note: Learning to Trust Your Musical Self,William Westney,4.24,1574671456,9781574671452,eng,239,191,20,6/1/2006,Hal Leonard Pub Corp -27586,In the Footsteps of Mr. Kurtz: Living on the Brink of Disaster in Mobutu's Congo,Michela Wrong,3.99,0060934433,9780060934439,eng,338,2387,115,5/28/2002,Harper Perennial -27588,Acts of Faith,Philip Caputo,3.94,0375725970,9780375725975,eng,688,1617,231,5/9/2006,Vintage -27590,Simple Acts of Faith: Heartwarming Stories of One Life Touching Another,Margaret Feinberg/Norman Rockwell,4.36,0736910735,9780736910736,en-US,48,14,3,7/1/2003,Harvest House Publishers -27599,The Cross From A Distance: Atonement In Mark's Gospel,Peter G. Bolt,3.89,083082619X,9780830826193,eng,213,50,11,12/9/2004,IVP Academic -27601,Cults in Our Midst: The Continuing Fight Against Their Hidden Menace,Margaret Thaler Singer/Robert Jay Lifton,3.95,0787967416,9780787967413,eng,432,196,25,4/11/2003,Jossey-Bass -27607,Mortals,Norman Rush,3.74,0679737111,9780679737117,en-US,736,469,57,7/13/2004,Vintage -27609,Whites,Norman Rush,3.77,0679738169,9780679738169,eng,160,382,42,9/1/1992,Vintage -27618,Hasta que te encuentre,John Irving/Carlos Milla Soler,3.63,8483103311,9788483103319,spa,1024,28,3,5/1/2006,TusQuets -27624,Howards End,E.M. Forster/Benjamin DeMott/Regina Marler,3.96,0451530462,9780451530462,eng,312,104,13,11/6/2007,Signet -27626,Women Cats: The History of a Love Affair,Michelle Lovric/Lisa Pentreath,4.23,1556525133,9781556525131,eng,66,13,1,9/1/2003,Chicago Review Press -27627,EULIS! The History of Love,Paschal Beverly Randolph,3.85,0766184153,9780766184152,eng,144,9,0,3/5/2004,Kessinger Publishing -27647,Secretos De Familia,Julia Glass,3.57,8496525031,9788496525030,spa,528,0,1,11/1/2006,Puzzle-Roca -27652,Accidental Empires,Robert X. Cringely,4.01,0887308554,9780887308550,eng,384,1570,63,9/13/1996,Harper Business -27660,The Complete ACOA Sourcebook: Adult Children of Alcoholics at Home at Work and in Love,Janet Geringer Woititz/Robert J. Ackerman,4.09,1558749608,9781558749603,en-US,500,152,12,3/8/2002,Health Communications Inc -27668,Bury the Chains,Adam Hochschild,4.28,0618619070,9780618619078,eng,496,1342,178,2/10/2006,Mariner Books -27669,Bury the Chains,Adam Hochschild,4.28,0333904915,9780333904916,eng,467,13,1,3/18/2005,MacMillan -27674,On Christian Belief (Works of Saint Augustine),Augustine of Hippo/Boniface Ramsey/Michael Fiedrowicz,4.08,1565482344,9781565482340,eng,372,12,1,12/1/2005,New City Press -27689,Mary Stewart's Merlin Trilogy (Arthurian Saga #1-3),Mary Stewart,4.39,0688003478,9780688003470,eng,928,4146,175,9/7/2004,Harper Voyager -27690,Touch Not the Cat,Mary Stewart,3.91,0060823720,9780060823726,eng,372,5029,282,11/29/2005,HarperTorch -27691,The Gabriel Hounds,Mary Stewart,3.92,0061145394,9780061145391,eng,322,3629,145,11/28/2006,HarperTorch -27692,The Wicked Day (Arthurian Saga #4),Mary Stewart,4.09,0060548282,9780060548285,eng,417,10055,244,5/1/2003,Eos -27693,The Moonspinners,Mary Stewart,4.03,0060502959,9780060502959,eng,400,6019,397,11/25/2003,HarperTorch -27694,This Rough Magic,Mary Stewart,4.05,0060747471,9780060747473,eng,373,5153,327,11/30/2004,HarperTorch -27695,Nine Coaches Waiting,Mary Stewart/Sandra Brown,4.03,1556526180,9781556526183,eng,342,10640,905,5/1/2006,Chicago Review Press -27696,Airs Above the Ground,Mary Stewart,4.05,006074748X,9780060747480,eng,384,4615,255,11/30/2004,HarperTorch -27698,Madam Will You Talk?,Mary Stewart,4.05,0060093560,9780060093563,eng,360,4460,302,11/25/2003,HarperTorch -27719,The Night of Wishes,Michael Ende/Heike Schwarzbauer/Rick Takvorian/Regina Kehn/Regina Jehn,4.12,0374455031,9780374455033,eng,216,3014,56,4/17/1995,Farrar Straus and Giroux (BYR) -27724,Mirror in the Mirror,Michael Ende/J. Maxwell Brownjohn,4.14,067080682X,9780670806829,eng,224,74,5,6/5/1986,Viking UK -27727,The Greek's Royal Mistress (Princess Brides #2),Jane Porter,3.69,0373124244,9780373124244,eng,192,167,14,9/24/2004,Harlequin Presents -27737,La Cantatrice chauve / La Leçon,Eugène Ionesco,3.90,2070362361,9782070362363,fre,150,6398,75,10/26/1972,Gallimard -27747,Death of a Perfect Wife (Hamish Macbeth #4),M.C. Beaton,3.81,0446614734,9780446614733,eng,175,4958,285,7/1/2006,Grand Central Publishing -27763,Cold Sleep (Cold Series #1),Narise Konohara/Nanao Saikawa/Douglas W. Dlin,3.73,1569708878,9781569708873,eng,226,278,14,8/9/2006,Digital Manga Publishing -27766,The Restless Sleep: Inside New York City's Cold Case Squad,Stacy Horn,3.49,0143037293,9780143037293,eng,336,331,42,7/25/2006,Penguin Books -27769,L'Étranger,Albert Camus,3.98,207030602X,9782070306022,fre,207,688,50,3/1/2005,Editions Gallimard -27776,La caída,Albert Camus/Manuel de Lope,4.04,8420637017,9788420637013,spa,128,233,20,9/19/2005,Alianza Editorial -27779,Le Premier homme,Albert Camus/Catherine Camus,3.96,2070401014,9782070401017,fre,384,293,18,2/11/2000,Gallimard -27780,Noces,Albert Camus,3.65,2070733467,9782070733460,fre,101,184,20,4/7/1993,Gallimard -27783,How to Be a Perfect Stranger: The Essential Religious Etiquette Handbook,Stuart M. Matlins,3.95,1594731403,9781594731402,eng,403,120,16,2/1/2006,Skylight Paths Publishing -27785,The Basic Political Writings,Jean-Jacques Rousseau/Donald A. Cress/Peter Gray,3.87,0872200477,9780872200470,eng,227,4786,24,11/1/1987,Hackett Publishing Company Inc. -27787,Henri Rousseau: Jungles in Paris,Christopher Green/Frances Morris/Nancy Ireson/Claire Freches-Thory,4.06,0810956993,9780810956995,eng,230,31,4,6/1/2006,Harry N. Abrams -27788,Julie or the New Heloise,Jean-Jacques Rousseau/Philip Stewart/Jean Vache,3.46,0874518253,9780874518252,en-US,728,1019,27,10/1/1997,Dartmouth College Press -27798,Anesthesiology Review,Ronald J. Faust/Roy F. Cucchiara/Denise J. Wedel/C. Thomas Wass/Stephen H. Rose/Thomas N. Spackman,3.67,0443066019,9780443066016,eng,595,12,0,9/21/2001,Churchill Livingstone -27800,Faust Part Two,Johann Wolfgang von Goethe/Philip Wayne,3.73,0140440933,9780140440935,eng,288,128,15,2/28/1960,Penguin Classics -27803,The Jew of Malta,Christopher Marlowe/H. Havelock Ellis,3.60,0486431843,9780486431840,en-US,80,2963,120,8/5/2003,Dover Publications -27804,The Trumpeter of Krakow,Eric P. Kelly/Janina Domanska,3.76,0689829922,9780689829925,eng,224,54,13,6/1/1999,Aladdin -27812,Numerical Recipes in C: The Art of Scientific Computing,William H. Press/Saul A. Teukolsky/William T. Vetterling/Brian P. Flannery,4.16,0521431085,9780521431088,eng,1020,217,8,10/30/1992,Cambridge University Press -27813,Numerical Recipes Example Book C++: The Art of Scientific Computing,William T. Vetterling/William H. Press/Saul A. Teukolsky,3.25,0521750342,9780521750349,eng,330,4,0,2/7/2002,Cambridge University Press -27819,Numerical Recipes: Example Book C,William T. Vetterling/Saul A. Teukolsky/William H. Press/Brian P. Flannery,3.75,0521437202,9780521437202,eng,336,7,0,11/27/1992,Cambridge University Press -27822,Eugene Onegin,Alexander Pushkin/James E. Falen,4.09,0192838997,9780192838995,eng,240,42668,690,10/22/1998,Oxford University Press -27823,Eugene Onegin,Alexander Pushkin/Charles Johnston/Michael Basker/John Bayley,4.09,0140448039,9780140448030,en-US,262,382,47,4/29/2003,Penguin Classics -27825,Eugene Onegin,Alexander Pushkin/Charles Johnston/John Bayley,4.09,0140443940,9780140443943,en-US,240,205,25,12/20/1979,Penguin Classics -27826,Eugene Onegin,Alexander Pushkin/Walter W. Arndt,4.09,0875011063,9780875011066,en-US,244,48,12,1/16/2009,Harry N. Abrams -27827,Eugene Onegin: A Novel in Verse (Vol. 1),Alexander Pushkin/Vladimir Nabokov,4.09,0691019053,9780691019055,eng,309,272,31,1/21/1991,Princeton University Press -27828,Eugene Onegin Vol. II (Commentary),Alexander Pushkin/Vladimir Nabokov,4.38,0691019045,9780691019048,eng,1056,45,3,1/21/1991,Princeton University Press -27829,Eugene Onegin: A Novel in Verse,Alexander Pushkin/Douglas R. Hofstadter,4.09,0465020941,9780465020942,eng,224,44,7,9/11/2000,Basic Books -27831,Eugene Onegin,Alexander Pushkin/Tom Beck,4.09,1903517281,9781903517284,eng,262,10,5,3/1/2006,Dedalus -27842,Data Structures and Algorithms in Java,Michael T. Goodrich/Roberto Tamassia,3.83,0471738840,9780471738848,en-US,720,151,8,8/1/2005,Wiley -27843,Data Structures and Algorithm Analysis in C++,Mark Allen Weiss,3.87,032144146X,9780321441461,eng,586,155,8,2/1/2006,Addison Wesley Publishing Company -27844,Data Structures and Algorithms in C++,Adam Drozdek,3.80,0534491820,9780534491826,en-US,758,18,0,9/24/2004,Course Technology -27847,Data Structures and Abstractions with Java,Frank M. Carrano/Walter J. Savitch,3.47,013237045X,9780132370455,eng,998,34,3,8/4/2006,Prentice Hall -27851,Data Structures and Algorithm Analysis in C,Mark Allen Weiss,3.85,0201498405,9780201498400,eng,528,120,11,9/19/1996,Pearson -27861,Data Structures and Algorithms in C++,Adam Drozdek,3.80,0534375979,9780534375973,en-US,528,35,5,6/30/2000,Course Technology -27862,Algorithms in C Parts 1-4: Fundamentals Data Structures Sorting Searching,Robert Sedgewick,4.16,0201314525,0785342314526,en-GB,720,140,3,9/27/1997,Addison-Wesley Professional -27877,Savage Stone Age Sticker Book (Horrible Histories),Terry Deary,4.00,0439959047,9780439959049,eng,20,9,0,8/19/2005,Scholastic -27880,The Girl the Dragon and the Wild Magic (Rhianna #1),Dave Luckett,3.86,0439411874,9780439411875,eng,119,474,31,10/1/2003,Scholastic Paperbacks -27881,Wildfire (Drinker of Souls: Wild Magic #2),Jo Clayton,3.72,0886775140,9780886775148,en-US,400,80,3,6/2/1992,DAW -27883,A Sudden Wild Magic,Diana Wynne Jones,3.75,0575601973,9780575601970,en-US,380,104,15,7/1/1997,Gollehon Books -27885,Wild Magic (Drinker of Souls: Wild Magic #1),Jo Clayton,3.71,0886774969,9780886774967,eng,368,112,4,12/3/1991,DAW -27889,Exile's Children (Exiles #1),Angus Wells,3.54,0553299034,9780553299038,eng,688,122,5,10/1/1996,Spectra -27892,Lords of the Sky,Angus Wells,3.94,0553572660,9780553572667,eng,688,288,17,10/6/1995,Spectra -27897,On a Dark Night I Left My Silent House,Peter Handke/Krishna Winston,3.27,0374175470,9780374175474,eng,186,179,14,11/8/2000,Farrar Straus Giroux -27923,Selected Writings,Augustine of Hippo/Emilie Griffin/Mary T. Clark/Francine du Plessix Gray,4.29,0060754664,9780060754662,eng,160,4,0,5/30/2006,HarperCollins (SanFrancisco) -27924,The Essential Augustine,Augustine of Hippo/Vernon J. Bourke,3.69,0915144077,9780915144075,eng,268,114,7,8/1/1978,Hackett Publishing Company (Indianapolis IN) -27932,A Mortal Bane (Magdalene La Batarde #1),Roberta Gellis,3.90,081257236X,9780812572360,eng,352,809,63,9/17/2001,Tor Books -27943,Crimes Against Nature: How George W. Bush and His Corporate Pals Are Plundering the Country and Hijacking Our Democracy,Robert F. Kennedy Jr.,4.08,0060746874,9780060746872,eng,256,72,14,8/3/2004,Harper -27971,A Lie and a Libel: The History of the Protocols of the Elders of Zion,Binjamin W. Segel/Richard S. Levy/Sergei Nilus,3.30,0803292457,9780803292451,eng,148,8,2,8/1/1996,University of Nebraska Press -27988,Citizen X: Killer Department,Robert Cullen,4.01,0804111642,9780804111645,eng,258,94,10,10/4/1993,Ivy Books -27991,A Mulligan for Bobby Jobe: A Novel,Bob Cullen,3.32,0060933526,9780060933524,eng,400,58,9,5/7/2002,Harper Perennial -27999,Close Range,Annie Proulx,3.99,0684852225,9780684852225,eng,285,12555,799,2/10/2000,Scribner -28001,Accordion Crimes,Annie Proulx,3.59,0684831546,9780684831541,eng,432,5675,456,6/17/1997,Scribner -28003,Heart Songs and Other Stories,Annie Proulx,3.94,0020360754,9780020360759,eng,203,1871,127,3/17/1995,Scribner -28004,Cider,Annie Proulx/Lew Nichols,3.64,1580175201,9781580175203,eng,224,182,25,9/8/2003,Storey Publishing LLC -28012,Authentic Happiness: Using the New Positive Psychology to Realize Your Potential for Lasting Fulfillment,Martin E.P. Seligman,3.95,0743222989,9780743222983,eng,336,8515,331,1/5/2004,Atria Books -28022,Shamanism: Archaic Techniques of Ecstasy,Mircea Eliade/Wendy Doniger/Willard R. Trask,4.22,0691119422,9780691119427,eng,610,2007,52,2/8/2004,Princeton University Press -28023,Images and Symbols: Studies in Religious Symbolism,Mircea Eliade/Philip Mairet,4.16,069102068X,9780691020686,eng,192,354,12,6/25/1991,Princeton University Press (NJ) -28025,The Myth of the Eternal Return or Cosmos and History,Mircea Eliade/Willard R. Trask,4.24,0691017778,9780691017778,eng,195,1799,64,11/21/1971,Princeton University Press -28026,Youth Without Youth & Other Novellas (Romanian Literature & Thought in Translation),Mircea Eliade/Mac L. Ricketts/Matei Călinescu,3.92,0814204570,9780814204573,eng,288,11,2,8/31/1988,Ohio State University Press -28028,Bengal Nights,Mircea Eliade/Catherine Spencer,3.93,0226204197,9780226204192,en-US,184,257,29,4/1/1995,University of Chicago Press -28029,Myth and Reality,Mircea Eliade/Willard R. Trask,4.08,1577660099,9781577660095,en-US,204,531,11,6/1/1998,Waveland Press -28052,Dark Intimacy: Hope for Those in Difficult Prayer-Experiences,David J. Hassel,4.00,0829407081,9780829407082,eng,172,1,0,6/28/1990,Loyola Press (Chicago) -28053,As Eve Said to the Serpent: On Landscape Gender and Art,Rebecca Solnit,4.09,0820324930,9780820324937,eng,240,127,6,3/17/2003,University of Georgia Press -28054,River of Shadows: Eadweard Muybridge and the Technological Wild West,Rebecca Solnit,4.15,0142004103,9780142004104,eng,320,1148,133,3/2/2004,Penguin Books -28055,Wanderlust: A History of Walking,Rebecca Solnit,3.92,0140286012,9780140286014,eng,326,226,25,6/1/2001,Penguin Books (London) -28056,Storming the Gates of Paradise: Landscapes for Politics,Rebecca Solnit,4.21,0520251091,9780520251090,en-US,416,228,30,6/18/2007,University of California Press -28061,Situationist International Anthology: Revised and Expanded Edition,Ken Knabb,4.26,0939682044,9780939682041,eng,532,678,11,3/1/2007,Bureau of Public Secrets -28067,Leaving the 20th Century: The Incomplete Work of the Situationist International,Chris Gray/Larry Law,4.10,0946061157,9780946061150,eng,136,30,2,4/20/1998,Rebel Press -28074,Barrel Fever and Other Stories,David Sedaris/Amy Sedaris,3.79,1586212214,9781586212216,en-US,3,183,47,10/1/2001,Grand Central Publishing -28078,The Birth of Venus,Sarah Dunant,3.81,0812968972,9780812968972,eng,427,87478,2908,11/30/2004,Random House -28086,One Hundred Years of Solitude,Gabriel García Márquez/Gregory Rabassa,4.07,0140157514,9780140157512,eng,422,640,65,6/11/1972,Penguin Books Ltd -28087,Gabriel García Márquez: One Hundred Years of Solitude,Michael Wood,4.54,0521316928,9780521316927,eng,132,3604,78,5/31/1990,Cambridge University Press -28093,Far Afield,Susanna Kaysen,3.81,0679753761,9780679753766,eng,352,316,50,4/19/1994,Vintage -28105,The Steps (Steps #1),Rachel Cohn,3.58,0689874146,9780689874147,eng,144,428,48,9/1/2004,Simon Schuster Books for Young Readers -28116,The Know-It-All: One Man's Humble Quest to Become the Smartest Person in the World,A.J. Jacobs,3.76,0743250621,9780743250627,eng,389,24243,2326,10/10/2005,Simon Schuster -28134,The Eden Express: A Memoir of Insanity,Mark Vonnegut/Kurt Vonnegut Jr.,3.87,1583225439,9781583225431,eng,304,2737,173,11/5/2002,Seven Stories Press -28148,A Wicked Gentleman (Cavendish Square #1),Jane Feather,3.62,1416525513,9781416525516,eng,474,1121,60,3/20/2007,Pocket Star -28158,A Picture Book of Thomas Jefferson (Picture Book Biographies) (Picture Book Biography),David A. Adler/John Wallner/Alexandra Wallner,3.75,0823408817,9780823408818,en-US,32,14,4,3/1/1991,Holiday House -28162,Bound In Blood: The Erotic Journey of a Vampire,David Thomas Lord,3.35,1575667649,9781575667645,en-US,352,71,10,5/1/2001,Kensington -28173,On Vital Reserves,William James/Stephen Vicchio,4.50,0870611518,9780870611513,eng,58,3,1,4/1/1988,Christian Classics -28184,Blue Shoes and Happiness (No. 1 Ladies' Detective Agency #7),Alexander McCall Smith,4.06,1400075718,9781400075713,eng,256,22370,952,3/13/2007,Anchor -28185,The Titan's Curse (Percy Jackson and the Olympians #3),Rick Riordan,4.35,1423101456,9781423101451,eng,312,5521,773,5/5/2007,Miramax Books -28186,The Sea of Monsters (Percy Jackson and the Olympians #2),Rick Riordan,4.24,0786856866,9780786856862,eng,279,630511,19806,4/1/2006,Hyperion Books -28187,The Lightning Thief (Percy Jackson and the Olympians #1),Rick Riordan,4.25,0786838655,9780786838653,eng,375,1766725,47951,3/1/2006,Disney Hyperion Books -28190,The Lightning Thief (Percy Jackson and the Olympians #1),Rick Riordan,4.25,0786282258,9780786282258,en-US,483,139,34,1/6/2006,Thorndike Press Large Print -28193,When Santa Fell to Earth,Cornelia Funke/Paul Howard/Oliver G. Latsch,3.76,043978204X,9780439782043,eng,167,1840,245,10/1/2006,Chicken House / Scholastic -28194,Inkheart (Inkworld #1),Cornelia Funke/Anthea Bell,3.88,0439709105,9780439709101,eng,563,324482,9360,6/1/2005,Scholastic Paperbacks -28195,Inkspell (Inkworld #2),Cornelia Funke/Anthea Bell,3.92,0439554004,9780439554008,eng,635,91475,3132,10/1/2005,The Chicken House -28196,Ghosthunters and the Incredibly Revolting Ghost (Ghosthunters #1),Cornelia Funke,3.73,0439849586,9780439849586,en-US,144,1233,146,8/1/2006,Chicken House -28200,Ghosthunters and the Muddy Monster of Doom! (Ghosthunters #4),Cornelia Funke/Helena Ragg-Kirkby,3.93,0439862698,9780439862691,eng,176,534,32,4/1/2007,Chicken House -28202,The Metaphysical Club,Louis Menand,4.07,0007126905,9780007126903,eng,560,3445,349,2/1/2010,HarperCollins Publishers -28205,Vulcan's Forge (Philip Mercer #1),Jack Du Brul,3.99,0451412109,9780451412102,en-US,372,3369,105,12/6/2005,Berkley Books -28206,Pandora's Curse (Philip Mercer #4),Jack Du Brul,4.17,0451409639,9780451409638,eng,472,1583,32,9/4/2001,Berkley Books -28207,Charon's Landing (Philip Mercer #2),Jack Du Brul,4.08,0451412117,9780451412119,en-US,496,1107,38,1/3/2006,NAL -28209,The Medusa Stone (Philip Mercer #3),Jack Du Brul,4.10,0451409221,9780451409225,eng,464,1355,43,4/1/2000,NAL -28210,River Of Ruin (Philip Mercer #5),Jack Du Brul,4.19,0451410548,9780451410542,en-US,534,1196,37,12/3/2002,Onyx Books -28211,Deep Fire Rising (Philip Mercer #6),Jack Du Brul,4.19,0451411188,9780451411181,eng,483,1059,27,12/2/2003,Berkley Books -28212,And the Band Played On: Politics People and the AIDS Epidemic,Randy Shilts/William Greider,4.37,0312241356,9780312241353,eng,656,19747,1006,4/9/2000,Stonewall Inn Editions -28213,The Band Played Dixie: Race and the Liberal Conscience at Ole Miss,Nadine Cohodas,3.96,0684827212,9780684827216,eng,309,46,5,5/5/1997,Free Press -28225,La mezzanine,Nicholson Baker,3.84,2264017694,9782264017697,fre,191,6,1,11/18/1998,10/18 -28227,Checkpoint,Nicholson Baker,2.88,1400079853,9781400079858,eng,128,654,60,4/12/2005,Vintage -28228,Double Fold: Libraries and the Assault on Paper,Nicholson Baker,3.42,0375726217,9780375726217,eng,370,846,91,4/9/2002,Vintage -28231,A Box of Matches,Nicholson Baker,3.67,0375706038,9780375706035,eng,192,1679,192,3/9/2004,Vintage -28239,Dark Star Safari: Overland from Cairo to Cape Town,Paul Theroux,3.96,0618446877,9780618446872,eng,485,11216,724,4/5/2004,Mariner Books -28240,Dark Star Safari: Overland from Cairo to Cape Town,Paul Theroux,3.96,0618134247,9780618134243,en-US,472,121,20,3/23/2003,Houghton Mifflin -28249,The Magicians' Guild (Black Magician Trilogy #1),Trudi Canavan,3.95,1841493139,9781841493138,eng,467,56333,1565,1/31/2004,Orbit -28250,The Novice (Black Magician Trilogy #2),Trudi Canavan,4.07,1841493147,9781841493145,eng,577,39521,859,7/1/2004,Orbit -28251,The High Lord (Black Magician Trilogy #3),Trudi Canavan,4.15,1841493155,9781841493152,eng,644,39692,998,11/4/2004,Orbit -28252,The Magicians' Guild (Black Magician Trilogy #1),Trudi Canavan,3.95,0732270952,9780732270957,eng,517,194,16,10/24/2001,Voyager -28254,Stone Age Economics,Marshall Sahlins,3.90,0202010996,9780202010991,eng,348,281,26,12/31/1974,Routledge -28255,How "Natives" Think: About Captain Cook For Example,Marshall Sahlins,3.64,0226733696,9780226733692,en-GB,328,64,3,10/1/1996,University of Chicago Press -28257,The Use and Abuse of Biology: An Anthropological Critique of Sociobiology,Marshall Sahlins,3.91,0472766007,9780472766000,eng,120,32,5,12/3/1976,University of Michigan Press -28259,Historical Metaphors and Mythical Realities: Structure in the Early History of the Sandwich Islands Kingdom,Marshall Sahlins,3.74,0472027212,9780472027217,en-US,84,127,7,3/16/1981,University of Michigan Press -28272,Legacy of the Darksword (The Darksword #4),Margaret Weis/Tracy Hickman,3.47,055357812X,9780553578126,eng,400,138,4,6/1/1998,Spectra -28278,When Rain Clouds Gather,Bessie Head,3.84,0435909614,9780435909611,eng,185,1063,86,6/5/1996,Heinemann Educational Books -28282,Election,Tom Perrotta,3.86,0425167283,9780425167281,eng,200,6507,398,10/1/1998,Berkley Books -28289,Joe College,Tom Perrotta,3.39,0312361785,9780312361785,eng,306,3832,256,10/1/2006,St. Martin's Griffin -28294,A Void,Georges Perec/Gilbert Adair,3.80,1567922961,9781567922967,eng,284,1736,155,11/1/2005,Verba Mundi -28295,Things: A Story of the Sixties; A Man Asleep,Georges Perec/David Bellos/Andrew Leak,3.98,1567921574,9781567921571,eng,221,1062,63,7/16/2010,David R. Godine Publisher -28296,W or the Memory of Childhood,Georges Perec/David Bellos,3.88,1567921582,9781567921588,eng,176,1472,76,7/1/2010,David R. Godine Publisher -28297,Species of Spaces and Other Pieces,Georges Perec/John Sturrock,4.28,0140189866,9780140189865,eng,292,1370,60,8/1/1998,Penguin Classics -28302,The Daring Young Man on the Flying Trapeze and Other Stories,William Saroyan,4.21,081121365X,9780811213653,eng,272,677,42,10/17/1997,New Directions -28308,My Name is Aram,William Saroyan/Don Freeman,4.15,0440362059,9780440362050,en-US,151,1045,66,6/1/1991,Laurel Press -28316,Karate Is a Thing of the Spirit,Harry Crews,3.79,068802372X,9780688023720,eng,218,238,11,12/31/1983,Quill -28336,La disparition,Georges Perec,3.80,207071523X,9782070715237,fre,319,261,28,12/31/1990,Gallimard -28340,Las Noches Blancas. El Jugador. Un Ladrón Honrado. (Sepan Cuantos #259),Fyodor Dostoyevsky,3.90,9684324162,9789684324169,spa,147,52,7,10/28/1998,Porrua -28344,Los hermanos Karamazov,Fyodor Dostoyevsky/Alexander Pushkin/Guillermo Suazo Pascual,4.32,847640509X,9788476405093,spa,805,30,4,7/1/1999,Edaf S.A. -28348,Crime and Punishment,Fyodor Dostoyevsky/Richard Pevear/Larissa Volokhonsky,4.21,0679734503,9780679734505,en-US,564,7343,730,3/2/1993,Vintage Classics -28350,I Wish That I Had Duck Feet,Theo LeSieg/Dr. Seuss/Barney Tobey,4.16,000717313X,9780007173136,eng,64,9119,140,1/5/2004,HarperCollinsChildren’sBooks -28351,And to Think That I Saw It on Mulberry Street,Dr. Seuss,4.00,0007169922,9780007169924,eng,64,19663,482,8/4/2003,Vanguard Press -28356,I'm the One That I Want,Margaret Cho,3.69,0345440145,9780345440143,eng,228,1459,132,4/30/2002,Ballantine Books -28358,Am I That Name?: Feminism And The Category Of Women In History,Denise Riley,3.64,0816642699,9780816642694,eng,136,60,7,7/22/2003,Univ Of Minnesota Press -28369,Zazie in the Metro,Raymond Queneau/Barbara Wright/Gilbert Adair,3.72,0142180041,9780142180044,eng,157,3917,195,10/25/2001,Penguin Books Ltd -28370,The Blue Flowers,Raymond Queneau,4.05,0811209458,9780811209458,eng,232,1008,37,4/17/1985,New Directions -28371,Witch Grass,Raymond Queneau/Barbara Wright,3.93,1590170318,9781590170311,eng,328,335,38,1/31/2003,NYRB Classics -28372,The Last Days,Raymond Queneau/Barbara Wright/Vivian Kogan,3.80,1564781402,9781564781406,eng,250,189,17,9/1/1996,Dalkey Archive Press -28375,The Flight of Icarus,Raymond Queneau/Barbara Wright,3.99,0811204839,9780811204835,eng,191,339,45,1/17/1973,New Directions -28377,Heartsnatcher,Boris Vian/Stanley Chapman/Raymond Queneau/John Sturrock,3.97,1564782999,9781564782991,en-GB,245,2430,77,10/3/2003,Dalkey Archive Press -28381,Dead Souls,Nikolai Gogol/Robert A. Maguire/Zlatko Crnković,3.99,0140448071,9780140448078,eng,464,47626,1221,7/29/2004,Penguin Classics -28382,Diary of a Madman and Other Stories,Nikolai Gogol,4.12,0486452352,9780486452357,eng,84,7266,210,12/29/2006,Dover Publications -28385,In the Shadow of Young Girls in Flower (In Search of Lost Time #2),Marcel Proust/James Grieve/Christopher Prendergast,4.40,0143039075,9780143039075,eng,576,5355,238,1/25/2005,Penguin Classics -28388,Proust's Way: A Field Guide to In Search of Lost Time,Roger Shattuck,3.92,0393321800,9780393321807,eng,320,241,28,8/17/2001,W. W. Norton Company -28389,Marcel Proust: A Life,William C. Carter,4.33,0300094000,9780300094008,eng,992,14,4,2/8/2002,Yale University Press -28392,Within a Budding Grove Volume 2 (Remembrance of Things Past #3),Stéphane Heuet/Stanislas Brézet/Marcel Proust,4.04,1561633429,9781561633425,eng,48,14,2,1/1/2003,ComicsLit -28393,In the Shadow of Young Girls in Flower (In Search of Lost Time #2),Marcel Proust/James Grieve,4.40,0670032778,9780670032778,en-US,576,70,17,2/2/2004,Viking Adult -28395,Remembrance of Things Past: Volume II - The Guermantes Way & Cities of the Plain,Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin,4.53,0394711831,9780394711836,en-US,1216,866,42,8/27/1982,Vintage -28396,The Illustrated Man,Ray Bradbury,4.14,0881031909,9780881031904,eng,192,27,3,11/1/1983,Turtleback Books -28400,Combray (Remembrance of Things Past #1),Stéphane Heuet/Marcel Proust/Joe Johnson,3.79,1561632899,9781561632893,eng,72,36,9,1/1/2001,Nantier Beall Minoustchine Publishing -28404,Proust And Signs: The Complete Text,Gilles Deleuze/Richard Howard,4.22,0816632588,9780816632589,eng,208,20,1,10/6/2003,Univ Of Minnesota Press -28407,Germinal,Émile Zola/Roger Pearson,4.13,0140447423,9780140447422,eng,592,23134,750,1/29/2004,Penguin Classics -28408,Taxi Driver,Amy Taubin,3.93,0851703933,9780851703930,en-US,79,130,17,3/28/2000,British Film Institute -28409,The Masterpiece,Émile Zola/Roger Pearson,3.96,0192839632,9780192839633,eng,464,1977,101,7/22/1999,Oxford University Press -28411,His Excellency (Les Rougon-Macquart #6),Émile Zola/Andrew Moore/Ernest Alfred Vizetelly,3.70,1595690557,9781595690555,eng,364,44,9,9/28/2006,MONDIAL -28413,The Ladies' Paradise,Émile Zola/Robin Buss/Brian Nelson,3.99,0192836021,9780192836021,eng,438,5525,342,9/1/2008,Oxford University Press -28416,The Conquest of Plassans (Les Rougon-Macquart #4),Émile Zola/Ernest Alfred Vizetelly,3.90,1595690484,9781595690487,fre,320,50,9,11/7/2005,MONDIAL -28417,La Bête humaine,Émile Zola/Henri Mitterand,4.06,2070418014,9782070418015,fre,462,6293,152,5/16/2001,Gallimard -28418,Taxi Driver,Paul Schrader,4.12,0571203159,9780571203154,eng,116,1030,24,2/21/2000,Faber Faber -28419,La Débâcle,Émile Zola/Robert Lethbridge/Elinor Dorday,4.01,0192822896,9780192822895,eng,592,821,52,9/28/2000,Oxford University Press -28420,The Earth,Émile Zola/Douglas Parmée,4.08,0140443878,9780140443875,eng,506,1113,70,6/26/1980,Penguin Classics -28425,Intimate Enemies,Shana Abe,3.81,0553581996,9780553581997,eng,390,401,27,6/6/2000,Bantam -28427,The Truelove Bride,Shana Abe,3.65,055358054X,9780553580549,eng,357,377,25,6/1/1999,Bantam -28428,The Secret Swan,Shana Abe,3.67,0553582003,9780553582000,eng,393,695,51,4/3/2001,Bantam -28429,The Smoke Thief (Drakon #1),Shana Abe,3.74,0553588044,9780553588040,eng,352,6780,566,9/26/2006,Bantam -28436,Strategies of Containment: A Critical Appraisal of American National Security Policy During the Cold War,John Lewis Gaddis,4.03,019517447X,9780195174472,en-US,484,552,26,7/1/2005,Oxford University Press USA -28440,A Frolic of His Own,William Gaddis,3.85,0684800527,9780684800523,eng,512,1312,106,2/10/1995,Scribner -28441,Agapē Agape,William Gaddis/Sven Birkerts/Joseph Tabbi,3.81,0142437638,9780142437636,en-US,144,914,92,9/30/2003,Penguin Classics -28455,The Review of Contemporary Fiction: Fall 2001: Gilbert Sorrentino/William Gaddis/Mary Caponegro/Margery Latimer,John O'Brien/David Andrews/John Beer/Robert L. McLaughlin/Joy Castro,3.40,1564783014,9781564783011,eng,240,5,2,9/1/2001,Dalkey Archive Press -28456,Carpenter's Gothic,William Gaddis,3.77,184354167X,9781843541677,eng,262,1128,79,2/1/2010,Atlantic Books (UK) -28457,First Love and Other Stories,Ivan Turgenev/Richard Freeborn,4.14,0192836897,9780192836892,eng,304,1245,26,10/28/1999,Oxford University Press USA -28458,Sketches from a Hunter's Album,Ivan Turgenev/Richard Freeborn,3.93,0140445226,9780140445220,eng,403,5967,109,8/30/1990,Penguin Classics -28462,Spring Torrents,Ivan Turgenev/Leonard Schapiro,3.94,014044369X,9780140443691,eng,240,2825,121,1/31/1980,Penguin Classics -28463,Home of the Gentry,Ivan Turgenev/Richard Freeborn,3.92,0140442243,9780140442243,eng,298,2152,70,12/6/2007,Penguin Classics -28466,ADHD in Adulthood: A Guide to Current Theory Diagnosis and Treatment,Margaret Weiss/Gabrielle Weiss/Lily Trokenberg Hechtman,3.40,080186822X,9780801868221,eng,376,5,0,11/6/2001,Johns Hopkins University Press -28467,Sclerotherapy and vein treatment,Robert A. Weiss/Margaret A. Weiss/Karen L. Beasley,0.00,0071485422,9780071485425,eng,248,0,0,12/30/2011,McGraw-Hill Professional Publishing -28468,Fantastic Alice,Margaret Weis/Esther M. Friesner/Roger Zelazny/Bruce Holland Rogers/Robin Wayne Bailey/Janet Pack/Lawrence Schimel/Jody Lynn Nye/Janet Asimov/Lisa Mason/Jane Lindskold/Mickey Zucker Reichert/Lawrence Watt-Evans/Peter Crowther/Gary A. Braunbeck/Connie Hirsch/Tobin Larson/Kevin T. Stein,3.40,0441002536,9780441002535,eng,291,147,14,12/1/1995,Ace Trade -28470,The Reign of Istar (Dragonlance: Tales II #1),Margaret Weis/Tracy Hickman,3.72,0786937793,9780786937790,eng,352,27,0,9/1/2005,Wizards of the Coast -28471,Dragons of the Highlord Skies (Dragonlance: The Lost Chronicles #2),Margaret Weis/Tracy Hickman,4.05,0786943335,9780786943333,eng,456,3523,99,10/23/2007,Wizards of the Coast -28480,The Players of Gilean (Dragonlance: Tales from the War of Souls #2),Margaret Weis/Tracy Hickman/Aron Eisenberg/Jean Rabe/Richard A. Knaak/Douglas Niles/Paul B. Thompson,3.69,0786929200,9780786929207,eng,340,152,4,2/1/2003,Wizards of the Coast -28482,The Hand of Chaos (The Death Gate Cycle #5),Margaret Weis/Tracy Hickman,4.06,0553563696,9780553563696,eng,446,16301,117,11/1/1993,Spectra -28483,The Seventh Gate (The Death Gate Cycle #7),Margaret Weis/Tracy Hickman,4.11,055357325X,9780553573251,eng,317,16304,148,12/1/1995,Spectra -28484,Into the Labyrinth (The Death Gate Cycle #6),Margaret Weis/Tracy Hickman,4.11,0553567713,9780553567717,eng,441,18543,124,7/1/1994,Spectra Books -28485,Elven Star (The Death Gate Cycle #2),Margaret Weis/Tracy Hickman,3.99,0553290983,9780553290981,eng,367,15512,219,7/1/1991,Spectra Books -28486,Beyond Death: The Gates of Consciousness,Stanislav Grof/Christina Grof,4.00,0500810192,9780500810194,eng,96,29,2,2/18/1980,Thames & Hudson -28488,Elven Star (The Death Gate Cycle #2),Margaret Weis/Tracy Hickman,3.99,0593021754,9780593021750,eng,367,76,5,12/1/1990,Bantam Books -28510,The Mantle of Kendis-Dai (Starshield #1),Margaret Weis/Tracy Hickman,3.57,0345397614,9780345397614,eng,353,194,7,8/30/1997,Del Rey Fantasy -28511,Warrior Angel,Margaret Weis/Lizz Weis,3.15,0060833254,9780060833251,en-US,354,242,28,2/27/2007,Avon -28514,Dragons of a Vanished Moon (Dragonlance: The War of Souls #3),Margaret Weis/Tracy Hickman,3.91,0786929502,9780786929504,eng,610,7506,82,3/1/2003,Wizards of the Coast -28522,Starshield: Sentinels,Margaret Weis/Tracy Hickman,3.57,0345397606,9780345397607,eng,421,182,6,11/17/1998,Del Rey -28524,The Soulforge (Dragonlance: Raistlin Chronicles #1),Margaret Weis,4.16,0786913142,9780786913145,eng,408,9080,144,1/1/1999,Wizards of the Coast -28529,Love and War: Tales Volume Three (Dragonlance: Tales),Margaret Weis/Tracy Hickman,3.87,078693770X,9780786937707,eng,368,43,0,6/1/2005,Wizards of the Coast -28530,New Amazons,Margaret Weis/Jane Lindskold/Linda Baker/Kathleen M. Massie-Ferch/Cynthia Ward/Lawrence C. Connolly/John Tigges/Kate Novak/Janet Pack/James Reasoner/Livia Reasoner/Nick O'Donohoe/Anne Yvonne Gilbert/Linda Mannheim/Nancy Springer/Gary A. Braunbeck/Jo Clayton/Robyn McGrew/Kevin T. Stein/Felicia Dale/Russell Davis,3.56,0886778875,9780886778873,eng,336,50,5,2/1/2000,DAW -28531,Nightsword (Starshield #2),Margaret Weis/Tracy Hickman,3.67,034542462X,9780345424624,eng,404,159,5,8/3/1999,Del Rey Fantasy -28532,Realms of Dragons: The Universes of Margaret Weis and Tracy Hickman,Denise Little/J. Robert King/Margaret Weis/Tracy Hickman/Janet Pack/Jean Rabe,4.06,0061052396,9780061052392,en-US,218,49,0,10/1/1999,HarperCollins Publishers -28533,Well of Darkness (Sovereign Stone #1),Margaret Weis/Tracy Hickman,3.67,0061020575,9780061020575,eng,562,2049,49,9/4/2001,HarperTorch -28534,The Best of Tales: Volume Two (Dragonlance Anthology),Margaret Weis/Tracy Hickman,3.82,0786927003,9780786927005,eng,416,108,2,2/1/2002,Wizards of the Coast -28536,The Search for Power (Dragonlance: Tales from the War of Souls #3),Margaret Weis,3.98,0786931930,9780786931934,eng,335,295,3,5/1/2004,Wizards of the Coast -28538,Journey Into the Void (Sovereign Stone #3),Margaret Weis/Tracy Hickman,3.86,0061020591,9780061020599,eng,578,1255,22,7/27/2004,Harper Voyager -28539,The Magic of Krynn (DragonLance: Tales I #1),Margaret Weis/Tracy Hickman/Barbara Siegel/Scott Siegel/Roger E. Moore/Warren B. Smith/Nick O'Donohoe/Richard A. Knaak/Nancy Varian Berberick/Mary L. Kirchoff/Michael Williams,3.74,0880384549,9780880384544,en-US,350,7543,39,5/15/2000,Wizards of the Coast -28540,More Leaves from the Inn of the Last Home (Dragonlance: Leaves from the Inn of the Last Home #2),Margaret Weis/Tracy Hickman,4.01,0786915161,9780786915163,en-US,256,227,1,6/1/2000,Wizards of the Coast -28541,Dragonsong (Harper Hall #1),Anne McCaffrey,4.24,141692499X,9781416924999,eng,192,40324,1001,6/1/2006,Aladdin Paperbacks -28543,Dragonsong (Pern: Harper Hall #1),Anne McCaffrey,4.24,0553120441,9780553120448,eng,176,393,57,1/1/1977,Bantam -28547,Dragonsinger (Harper Hall #2),Anne McCaffrey,4.28,0689860072,9780689860072,eng,288,34996,586,4/1/2003,Aladdin -28553,Dragondrums (Harper Hall #3),Anne McCaffrey,4.07,0689860064,9780689860065,eng,243,28120,411,4/1/2003,Simon & Schuster Aladddin Paperbacks -28557,More Twisted: Collected Stories Vol. II,Jeffery Deaver,3.84,1416541187,9781416541189,eng,433,1673,112,1/1/2007,Simon & Schuster -28558,The Coffin Dancer (Lincoln Rhyme #2),Jeffery Deaver,4.16,0743275039,9780743275033,eng,358,38,1,11/1/2004,Simon & Schuster -28559,The Stone Monkey (Lincoln Rhyme #4),Jeffery Deaver,3.96,0340734019,9780340734018,eng,511,245,20,11/1/2006,Coronet Books (GB) -28560,The Sleeping Doll (Kathryn Dance #1),Jeffery Deaver,3.93,0743260945,9780743260947,eng,428,357,58,6/5/2007,Simon & Schuster -28561,The Twelfth Card (Lincoln Rhyme #6),Jeffery Deaver,3.99,0743491564,9780743491563,en-US,576,468,36,5/1/2006,Pocket Star -28562,Hard News (Rune #3),Jeffery Deaver,3.46,0553583298,9780553583298,eng,304,982,52,1/2/2001,Bantam -28563,Death Of A Blue Movie Star (Rune #2),Jeffery Deaver,3.53,055358295X,9780553582956,eng,336,1194,50,10/31/2000,Bantam -28564,Bloody River Blues (John Pellam #2),William Jefferies/Jeffery Deaver,3.49,0671047507,9780671047504,eng,368,1003,46,12/1/2000,Pocket Books -28565,Hell's Kitchen (John Pellam #3),William Jefferies/Jeffery Deaver,3.60,0340818808,9780340818800,eng,368,52,5,2/7/2002,Hodder -28566,The Empty Chair (Lincoln Rhyme #3),Jeffery Deaver,4.05,0671026011,9780671026011,en-US,512,459,41,4/1/2001,Pocket Books -28567,Twisted: The Collected Short Stories,Jeffery Deaver,3.93,0743491599,9780743491594,eng,480,3093,205,11/1/2004,Pocket Books -28568,The Vanished Man (Lincoln Rhyme #5),Jeffery Deaver,4.10,0743437810,9780743437813,en-US,560,15135,584,7/1/2004,Pocket Books -28569,Praying for Sleep,Jeffery Deaver,3.80,0451203054,9780451203052,eng,512,3061,148,3/1/2001,Signet -28570,The Devil's Teardrop,Jeffery Deaver,4.00,0671038443,9780671038441,en-US,451,6283,268,4/1/2000,Simon & Schuster -28585,Judge Dredd (Audio Cassette),Neal Barrett Jr./Martha Banta,2.96,0553476793,9780553476798,eng,0,6,0,7/1/1995,Random House Audio -28597,Prometheus Rising,Robert Anton Wilson/Israel Regardie,4.26,1561840564,9781561840564,eng,284,5394,299,9/1/2010,New Falcon Publications -28606,Tristan Taormino's True Lust,Tristan Taormino,3.97,1573441570,9781573441575,eng,200,72,6,9/25/2002,Cleis Press -28617,A Free Enquiry Into the Vulgarly Received Notion of Nature,Robert Boyle/Michael Hunter/Edward B. Davis,3.00,0521567963,9780521567961,eng,212,2,0,7/11/1996,Cambridge University Press -28631,The Munsters: A Trip Down Mockingbird Lane,Stephen Cox/Butch Patrick/Yvonne DeCarlo,4.45,0823078949,9780823078943,eng,208,53,10,10/3/2006,Backstage Books -28634,Immortality,Milan Kundera/Peter Kussi,4.14,057114456X,9780571144563,eng,400,21769,803,1/3/1998,Faber and Faber -28635,Identity,Milan Kundera/Linda Asher,3.68,0060930314,9780060930318,eng,168,13601,611,4/21/1999,Harper Perennial -28636,The Curtain: An Essay in Seven Parts,Milan Kundera/Linda Asher,3.96,0060841869,9780060841867,eng,176,1388,109,1/30/2007,Harper -28637,The Art of the Novel,Milan Kundera/Linda Asher,3.96,0060093749,9780060093747,eng,176,3684,165,4/1/2003,Harper Perennial Modern Classics -28639,Yours in Food John Baldessari: with meditations on eating by Paul Auster David Byrne Dave Eggers David Gilbert Tim Griffin Andy Grundberg John Haskell Michael Kimmelman Michael More Glenn O'Brien Francine Prose Peter Schjeldahl Lynne Tillman,John Baldessari/Paul Auster/Francine Prose/Peter Schjeldahl/David Byrne/Dave Eggers/David Gilbert/Tim Griffin/Andy Grundberg/John Haskell/Michael Kimmelman/Glenn O'Brien/Lynne Tillman,4.00,1568984952,9781568984957,en-US,144,19,4,9/30/2004,Princeton Architectural Press -28645,You Shall Know Our Velocity,Dave Eggers,3.63,0141013451,9780141013459,eng,350,266,24,4/1/2004,Penguin -28650,Thin Air (Weather Warden #6),Rachel Caine,3.96,0451461630,9780451461636,eng,307,5875,182,8/7/2007,Roc -28657,Seven Types of Ambiguity,William Empson,3.85,0701106549,9780701106546,eng,272,7,0,12/1/1949,Chatto and Windus -28658,Traitor's Knot (Wars of Light and Shadow #7),Janny Wurts,4.20,1592220827,9781592220823,eng,574,434,7,8/30/2006,Meisha Merlin Publishing -28660,The Curse of the Mistwraith (Wars of Light and Shadow #1),Janny Wurts,3.76,0586210695,9780586210697,eng,830,4655,202,5/1/2009,HarperCollins -28664,Warhost of Vastmark (Wars of Light & Shadow #3; Arc 2 - The Ships of Merior #2),Janny Wurts,4.04,0006482074,9780006482079,eng,522,3039,34,7/1/2009,Voyager -28666,Fugitive Prince (Wars of Light and Shadow #4),Janny Wurts,3.89,0061054682,9780061054686,eng,704,62,4,9/8/1998,HarperCollins Publishers -28670,Peril's Gate (Wars of Light & Shadow #6; Arc 3 - Alliance of Light #3),Janny Wurts,4.16,0061054674,9780061054679,en-US,940,521,8,1/1/2003,HarperCollins Publishers -28671,To Ride Hell's Chasm,Janny Wurts,3.82,159222024X,9781592220243,eng,672,337,46,3/8/2005,Meisha Merlin Publishing -28674,Grand Conspiracy (Wars of Light & Shadow #5; Arc 3 - Alliance of Light #2),Janny Wurts,4.11,0007102224,9780007102228,eng,614,1416,20,11/5/2007,HarperVoyager -28687,Shadowplay (Shadowmarch #2),Tad Williams,3.90,0756403588,9780756403584,eng,656,6061,174,3/6/2007,Daw Books -28688,Shadowmarch (Shadowmarch #1),Tad Williams,3.73,0756402700,9780756402709,eng,656,126,14,11/1/2005,DAW -28689,Stone of Farewell (Memory Sorrow and Thorn #2),Tad Williams,4.09,0756402972,9780756402976,eng,608,37694,414,4/1/2005,Daw Books -28691,To Green Angel Tower (Memory Sorrow and Thorn #3),Tad Williams,4.18,0756402980,9780756402983,eng,1083,29350,320,5/3/2005,DAW -28692,The War of the Flowers,Tad Williams,3.88,075640181X,9780756401818,eng,828,7519,319,5/4/2004,DAW -28694,Shadowmarch (Shadowmarch #1),Tad Williams,3.73,0756403596,9780756403591,eng,796,9677,377,9/5/2006,DAW -28695,City of Golden Shadow (Otherland #1),Tad Williams,3.91,0886777631,9780886777630,eng,780,21714,717,1/1/1998,DAW Books -28698,To Green Angel Tower Part 2 (Memory Sorrow and Thorn #3; Part 2),Tad Williams,4.20,0886776066,9780886776060,eng,815,20025,215,7/1/1994,DAW Fantasy -28699,Traumjäger und Goldpfote,Tad Williams/Hans J. Schütz,3.97,3596283493,9783596283491,ger,380,61,0,10/1/1989,Fischer (Tb.) -28700,Falling Man,Don DeLillo,3.21,1416546022,9781416546023,eng,246,10304,1092,5/15/2007,Scribner -28701,Ratner's Star,Don DeLillo,3.49,009992840X,9780099928409,eng,448,1548,98,7/16/1992,Vintage -28715,Blood Meridian or the Evening Redness in the West,Cormac McCarthy/Harold Bloom,4.17,0679641041,9780679641049,en-US,351,1264,195,1/2/2001,Modern Library -28716,Blood Meridian,Cormac McCarthy,4.17,0330312561,9780330312561,eng,335,539,62,8/3/2007,Picador USA -28721,Cormac McCarthy's All the Pretty Horses,Harold Bloom/Amy Sickels,4.09,0791075680,9780791075685,eng,126,180,10,9/1/2003,Chelsea House Publications -28724,Four & Twenty Blackbirds (Bardic Voices #4),Mercedes Lackey,3.81,0671577786,9780671577780,eng,423,3048,34,2/1/2004,Baen Books -28725,Exile's Honor (Heralds of Valdemar #6),Mercedes Lackey,4.20,0756401135,9780756401139,en-US,431,10429,158,10/7/2003,Daw Books -28727,Spirits White as Lightning (Bedlam's Bard #5),Mercedes Lackey/Rosemary Edghill,3.95,0743436083,9780743436083,en-US,512,2026,14,5/1/2003,Baen -28728,Beyond World's End (Bedlam's Bard #4),Mercedes Lackey/Rosemary Edghill,3.93,0671318551,9780671318550,en-US,416,2508,22,12/1/2001,Baen -28729,The Dragon Quintet,Marvin Kaye/Michael Swanwick/Orson Scott Card/Mercedes Lackey/Tanith Lee/Elizabeth Moon,3.77,0765349116,9780765349118,en-US,304,573,39,5/2/2006,Tor Fantasy -28730,Fiddler Fair,Mercedes Lackey,3.90,0671878662,9780671878665,en-US,272,3289,29,3/1/1998,Baen -28733,Take a Thief (Valdemar #25),Mercedes Lackey,4.12,0756400589,9780756400583,eng,435,11911,174,10/1/2002,DAW -28734,Magic's Price (Valdemar: Last Herald-Mage #3),Mercedes Lackey,4.27,0886774268,9780886774264,eng,351,18764,320,7/3/1990,DAW Books Inc -28735,By the Sword (Valdemar),Mercedes Lackey,4.25,0886774632,9780886774639,eng,492,18531,249,2/5/1991,DAW -28736,Oathblood (Valdemar: Vows and Honor #3),Mercedes Lackey,4.06,0886777739,9780886777739,en-GB,394,9786,103,4/1/1998,DAW -28747,CivilWarLand in Bad Decline,George Saunders,4.22,0099595818,9780099595816,eng,179,12813,986,2/6/1997,Vintage -28748,The Very Persistent Gappers of Frip,George Saunders/Lane Smith,4.11,1932416374,9781932416374,eng,84,2457,356,3/29/2006,McSweeney's -28749,The Brief and Frightening Reign of Phil,George Saunders,3.70,1594481520,9781594481529,eng,130,5157,553,9/6/2005,Riverhead Books -28756,The Cheese Monkeys,Chip Kidd,3.75,0060507403,9780060507404,en-US,288,4672,512,9/3/2002,Harper Perennial -28759,Magic's Pawn (Valdemar: Last Herald-Mage #1),Mercedes Lackey,4.21,0886773520,9780886773526,eng,349,22431,736,6/6/1989,DAW Books Inc -28760,Magic's Promise (Valdemar: Last Herald-Mage #2),Mercedes Lackey,4.21,0886774012,9780886774011,eng,320,18141,278,1/2/1990,DAW Books Inc -28763,His Master's Voice,Stanisław Lem/Michael Kandel,4.11,0810117312,9780810117310,eng,199,2317,161,11/25/1999,Northwestern University Press -28764,The Chain of Chance,Stanisław Lem/Louis Iribarne,3.70,0810117304,9780810117303,en-US,179,505,37,3/28/2000,Northwestern University Press -28766,Fiasco,Stanisław Lem/Michael Kandel,4.12,0156306301,9780156306300,eng,322,2281,166,3/15/1988,Mariner Books -28767,A Perfect Vacuum,Stanisław Lem/Michael Kandel,4.18,0810117339,9780810117334,en-US,229,771,42,11/25/1999,Northwestern University Press -28768,Eden,Stanisław Lem/Marc E. Heine,3.91,0156278065,9780156278065,en-US,276,3439,132,10/31/1991,Mariner Books -28769,Tales of Pirx the Pilot,Stanisław Lem/Louis Iribarne,4.10,0156881500,9780156881500,eng,216,3941,71,11/30/1990,Mariner Books -28796,The Song of Rhiannon,Evangeline Walton,4.02,0020264739,9780020264736,eng,208,255,12,9/1/1992,Collier Books -28801,Why Did the Soviet Union Collapse?: Understanding Historical Change,Robert W. Strayer,3.44,0765600048,9780765600042,eng,240,42,3,5/21/1998,Routledge -28805,Ballad of the Whiskey Robber: A True Story of Bank Heists Ice Hockey Transylvanian Pelt Smuggling Moonlighting Detectives and Broken Hearts,Julian Rubinstein,4.02,0316010731,9780316010733,eng,352,3448,516,9/13/2005,Back Bay Books -28807,Changeling,Roger Zelazny,3.72,0743458192,9780743458191,eng,244,1815,41,1/28/2003,iBooks -28808,The Waterborn (Children of the Changeling #1),Greg Keyes/J. Gregory Keyes,3.81,0345396707,9780345396709,en-US,384,76,5,3/2/1997,Del Rey Books -28810,Social Psychology,Elliot Aronson/Robin M. Akert/Timothy D. Wilson,4.00,0132382458,9780132382458,eng,633,42,1,12/6/2006,Prentice Hall -28815,Influence: The Psychology of Persuasion,Robert B. Cialdini,4.19,006124189X,9780061241895,eng,320,76314,2580,12/26/2006,Harper Business -28819,Writings 1902-1910: The Varieties of Religious Experience / Pragmatism / A Pluralistic Universe / The Meaning of Truth / Some Problems of Philosophy / Essays,William James/Bruce Kuklick,4.21,0940450380,9780940450387,eng,1379,372,11,2/1/1988,Library of America -28821,Writings 1878–1899: Psychology: Briefer Course / The Will to Believe / Talks to Teachers and to Students / Essays,William James/Gerald Eugene Myers,4.25,0940450720,9780940450721,eng,1212,92,4,6/1/1992,Library of America -28822,The Will to Believe Human Immortality and Other Essays in Popular Philosophy,William James,4.07,0486202917,9780486202914,eng,448,455,25,6/1/1956,Dover Publications -28827,Ghost Hunters: William James and the Search for Scientific Proof of Life After Death,Deborah Blum,3.70,1594200904,9781594200908,eng,371,833,127,8/3/2006,Penguin Press -28836,The Principles of Psychology: Vols 1-2 (Works of William James),William James/Frederick Burkhardt/Rand B. Evans/Gerald Eugene Myers,4.18,0674705599,9780674705593,eng,1376,3,1,12/1/1981,Harvard University Press -28845,The Story of Philosophy,Will Durant/Grover Gardner,4.12,1572704209,9781572704206,eng,1162,31,4,9/20/2004,AudioGO -28850,The Return of the King (The Lord of the Rings #3),J.R.R. Tolkien/Rob Inglis,4.53,0788789848,9780788789847,eng,16,3529,171,7/23/2001,Recorded Books Inc. -28854,The Book of Lost Tales Part Two (The History of Middle-earth #2),J.R.R. Tolkien/Christopher Tolkien,3.86,0261102141,9780261102149,eng,385,203,12,5/7/2002,HarperCollinsPublishers -28859,The Gospel According to Jesus Christ,José Saramago/Giovanni Pontiero,4.29,186046095X,9781860460951,eng,341,13919,526,12/26/1999,Harvill Press -28860,El Evangelio Según Jesucristo,José Saramago/Basilio Losada,4.29,8466300651,9788466300650,spa,480,34,6,10/1/2001,Santillana USA Publishing Company -28862,The Prince,Niccolò Machiavelli/Rufus Goodwin/Benjamin Martinez,3.81,0937832383,9780937832387,eng,140,194545,4260,6/1/2003,Dante University of America Press -28863,The Raven Prince (Princes Trilogy #1),Elizabeth Hoyt,3.97,0446618470,9780446618472,eng,392,16024,894,11/1/2006,Warner Forever -28865,Le Petit Prince,Antoine de Saint-Exupéry,4.31,0156013983,9780156013987,fre,87,3045,215,9/4/2001,Mariner Books -28866,Dark Prince (Dark #1),Christine Feehan,4.00,0843955287,9780843955286,eng,447,44210,1942,4/5/2005,Leisure Books -28867,The Princes of Ireland (The Dublin Saga #1),Edward Rutherfurd,3.86,0345472357,9780345472359,eng,778,10514,865,3/1/2005,Ballantine Books -28868,Prince Caspian (Chronicles of Narnia #4),C.S. Lewis,3.97,0061125253,9780061125256,eng,223,1123,90,9/1/2006,HarperCollins Publishers -28869,Pégate un tiro para sobrevivir: un viaje personal por la América de los mitos,Chuck Klosterman,3.81,8439720033,9788439720034,spa,272,27,2,2/28/2006,Literatura Random House -28872,A Practical Guide to Dragons,Lisa Trumbauer/Emily Fiegenshuh,4.33,0786941642,9780786941643,eng,80,577,36,9/26/2006,Mirrorstone -28873,Dragonology (Ologies #1),Dugald A. Steer/Ernest Drake/Wayne Anderson/Helen Ward/Douglas Carrel,4.11,0763623296,9780763623296,eng,32,7726,221,10/13/2003,Candlewick Press -28876,His Majesty's Dragon (Temeraire #1),Naomi Novik,4.05,0345481283,9780345481283,eng,356,62589,4920,3/28/2006,Del Rey -28877,Red Dragon (Hannibal Lecter #1),Thomas Harris,4.04,0525945563,9780525945567,eng,348,236028,3247,5/22/2000,Dutton -28881,Lamb: The Gospel According to Biff Christ's Childhood Pal,Christopher Moore,4.25,0380813815,9780380813810,eng,444,135109,10380,5/25/2004,William Morrow / HarperCollins / Harper Perennial -28887,The Lost Tomb,Kent R. Weeks,4.09,0688172245,9780688172244,eng,384,391,26,11/9/1999,Harper Perennial -28898,Fundamentals of Heat and Mass Transfer [with IHT/FEHT 3.0 CD with User Guide Set],Frank P. Incropera/David P. DeWitt,3.99,0470055545,9780470055540,en-US,997,6,0,10/30/2006,Wiley -28899,Heat,Mike Lupica,3.98,0142407577,9780142407578,eng,220,18883,1417,3/1/2007,Puffin Books -28902,Heat and Mass Transfer,Yunus A. Cengel,4.15,007325035X,9780073250359,eng,901,188,3,1/4/2006,McGraw-Hill Science/Engineering/Math -28910,Journal of a Novel: The East of Eden Letters,John Steinbeck,4.09,0140144188,9780140144185,eng,182,1053,126,12/1/1990,Penguin Books -28913,Never Go Back,Robert Goddard,3.71,0552152110,9780552152112,eng,464,1221,85,10/23/2006,Corgi -28915,Never Go Home Again,Shannon Holmes,4.03,0743496167,9780743496162,eng,336,222,11,9/27/2005,Atria Books -28917,You Can Never Go Home Again,Dyan Sheldon,4.23,081673691X,9780816736911,en-US,166,23,4,8/1/1995,Troll Communications -28920,A Pale View of Hills,Kazuo Ishiguro,3.74,0571225373,9780571225378,eng,183,12858,1036,3/3/2005,Faber and Faber -28922,An Artist of the Floating World,Kazuo Ishiguro,3.76,0571225365,9780571225361,eng,206,15416,1152,3/3/2005,Faber and Faber -28923,When We Were Orphans,Kazuo Ishiguro,3.49,0571225403,9780571225408,eng,320,19252,1673,12/1/2007,Faber & Faber -28926,The Unconsoled,Kazuo Ishiguro,3.54,0679735879,9780679735878,eng,535,587,120,10/1/1996,Vintage International -28929,American Legal History: Cases and Materials,Kermit L. Hall/Paul Finkelman/James W. Jr. Ely,3.50,0195162250,9780195162257,eng,736,31,0,10/1/2004,Oxford University Press USA -28935,Intuition,Allegra Goodman,3.32,0385336101,9780385336109,eng,385,3248,590,3/13/2007,Dial Press -28940,Behind the Scenes at the Museum,Kate Atkinson,3.96,0312150601,9780312150600,eng,336,26443,2116,11/12/1999,Picador USA -28942,Emotionally Weird,Kate Atkinson,3.45,031227999X,9780312279998,eng,368,5308,482,7/6/2001,Picador -28944,Abandonment,Kate Atkinson/Traverse Theatre,3.61,1854596012,9781854596017,en-US,96,82,6,4/1/2000,Nick Hern Books -28947,Familienalbum,Kate Atkinson,3.96,3453212630,9783453212633,ger,507,2,0,1/1/2002,Heyne -28948,Gimpel the Fool and Other Stories,Isaac Bashevis Singer/Saul Bellow/Allegra Goodman,4.16,0374530254,9780374530259,eng,224,1715,63,1/10/2006,Farrar Straus and Giroux -28958,Ein Sommernachtsspiel,Kate Atkinson,3.72,3453152530,9783453152533,ger,410,1,0,6/1/1999,Heyne -28963,Dans les coulisses du musée,Kate Atkinson/Jean Bourdier,3.96,2253144908,9782253144908,fre,410,45,4,9/23/1998,Le Livre de Poche -28977,The Littles and the Lost Children,John Lawrence Peterson/Jacqueline Rogers/Roberta Carter Clark,3.76,0590430262,9780590430265,eng,112,302,16,1/1/1991,Scholastic Paperbacks -28978,Suffer the Little Children (Commissario Brunetti #16),Donna Leon,3.79,087113960X,9780871139603,eng,264,3456,285,5/10/2007,Atlantic Monthly Press -28979,Suffer Little Children (Sister Fidelma #3),Peter Tremayne,4.05,0451195574,9780451195579,eng,320,1348,76,2/1/1999,Signet -28988,The Wishbones,Tom Perrotta,3.50,0425169715,9780425169711,eng,288,2172,158,7/1/1999,Berkley -28991,Bad Haircut: Stories of the Seventies,Tom Perrotta,3.70,042515954X,9780425159545,eng,240,1546,110,4/1/1997,Berkley Trade -29011,One Hundred Demons,Lynda Barry,4.16,1570614598,9781570614590,en-GB,224,7703,521,8/30/2005,Sasquatch Books -29019,The Twelve Terrors of Christmas,John Updike/Edward Gorey,4.23,0764937103,9780764937101,eng,32,2552,103,5/1/2006,Pomegranate Communications -29022,The Twelve Caesars,Suetonius/Michael Grant/Robert Graves,4.05,0140449213,9780140449211,eng,363,12764,376,5/6/2003,Penguin Classics -29026,The Twelve Dancing Princesses,Marianna Mayer/Kinuko Y. Craft,4.32,068814392X,9780688143923,en-US,40,86,9,10/19/1998,HarperCollins -29031,Twelve Ordinary Men,John F. MacArthur Jr.,4.21,0849917735,9780849917738,en-US,224,2409,232,11/18/2002,Thomas Nelson -29035,Twelve Extraordinary Women Workbook,John F. MacArthur Jr.,3.92,1418505579,9781418505578,en-GB,226,46,4,3/5/2006,Thomas Nelson -29036,The Great Influenza: The Story of the Deadliest Pandemic in History,John M. Barry,3.96,0143036491,9780143036494,eng,546,17480,1459,10/4/2005,Penguin Books -29043,Paris: The Secret History,Andrew Hussey,3.81,1596913231,9781596913233,eng,485,657,87,11/28/2006,Bloomsbury USA -29044,The Secret History,Donna Tartt,4.10,1400031702,9781400031702,eng,559,234929,15790,4/13/2004,Vintage -29052,Marijuana Horticulture: The Indoor/Outdoor Medical Grower's Bible,Jorge Cervantes,4.39,187882323X,9781878823236,eng,512,431,25,3/1/2006,Van Patten Publishing -29053,The Cambridge Companion to Cervantes,Anthony J. Cascardi,3.55,0521663873,9780521663878,eng,264,11,1,10/17/2002,Cambridge University Press -29054,Exemplary Stories,Miguel de Cervantes Saavedra/Lesley Lipson,3.72,0192832433,9780192832436,eng,368,797,29,5/7/1998,Oxford University Press -29058,Cervantes in Algiers: A Captive's Tale,Maria Antonia Garcés,3.14,0826514707,9780826514707,eng,368,7,1,6/1/2005,Vanderbilt University Press -29069,Deluxe Encyclopedia of Mandolin Chords,John Baxter/Mel Bay,3.83,0786647973,9780786647972,eng,72,6,0,3/1/2000,Mel Bay Publications Inc. -29075,CSS Cookbook,Christopher Schmitt,3.88,0596527411,9780596527419,en-US,516,164,13,10/24/2006,O'Reilly Media -29081,Big Dog... Little Dog,P.D. Eastman,4.12,0375822976,9780375822971,en-US,48,93,10,5/27/2003,Random House Books for Young Readers -29083,Snow,Roy McKie/P.D. Eastman,4.15,0394800273,9780394800271,eng,72,4383,88,10/12/1962,Random House -29084,Flap Your Wings,P.D. Eastman,4.24,0375802436,9780375802430,en-US,48,1281,64,1/25/2000,Random House Books for Young Readers -29085,Sam And The Firefly (Beginner Books),P.D. Eastman,4.17,0001713191,9780001713192,eng,64,5,0,6/17/1985,Collins -29091,The Berlin Phenomenology,Georg Wilhelm Friedrich Hegel/Michael John Petry,0.00,9027712050,9789027712059,eng,210,0,0,5/31/1981,Springer -29092,The Philosophy of History,Georg Wilhelm Friedrich Hegel/J. Sibree,3.82,0486201120,9780486201122,en-US,457,31,9,6/1/1956,Dover Publications -29093,Philosophy of Right,Georg Wilhelm Friedrich Hegel/S.W. Dyde,3.87,0486445631,9780486445632,en-US,272,19,2,9/20/2005,Dover Publications -29120,The Mistress Manual: The Good Girl's Guide to Female Dominance,Mistress Lorelei,3.76,1890159190,9781890159191,eng,220,346,30,6/15/2000,Greenery Press (CA) -29122,Diary of a Mistress,Miasha,4.34,0743281594,9780743281591,en-US,182,2484,88,8/1/2006,Touchstone -29124,Mistress Masham's Repose,T.H. White/Fritz Eichenberg,3.93,1590171039,9781590171035,en-US,260,1476,124,3/7/2012,New York Review Children's Collection -29128,The Last Unicorn,Peter S. Beagle,4.17,0370006542,9780370006543,eng,224,97,17,8/1/1968,The Bodley Head Ltd -29129,The Last Unicorn,Peter S. Beagle,4.17,0345254848,9780345254849,eng,248,41,5,1/1/1969,Ballantine Books -29135,The Barbed Coil,J.V. Jones,3.92,0446606235,9780446606233,eng,667,2129,64,4/1/1999,Grand Central Publishing -29140,Melliandra,J.V. Jones,3.79,3404204077,9783404204076,ger,734,5,0,3/1/2001,Lübbe -29150,Yakitate!! Japan Volume 1,Takashi Hashiguchi,3.97,1421507196,9781421507194,en-US,208,2207,61,9/12/2006,VIZ Media LLC -29151,Yakitate!! Japan Volume 2,Takashi Hashiguchi,3.99,142150720X,9781421507200,eng,208,339,11,11/14/2006,VIZ Media LLC -29152,Yakitate!! Japan Volume 3,Takashi Hashiguchi,3.97,1421507218,9781421507217,eng,208,297,6,1/9/2007,VIZ Media LLC -29153,Yakitate!! Japan Volume 4,Takashi Hashiguchi,4.00,1421509210,9781421509211,en-US,208,274,8,3/13/2007,VIZ Media LLC -29154,Yakitate!! Japan Volume 7,Takashi Hashiguchi,3.98,1421509245,9781421509242,eng,185,239,5,9/11/2007,VIZ Media LLC -29155,Yakitate!! Japan Volume 5,Takashi Hashiguchi,4.02,1421509229,9781421509228,en-US,208,247,7,5/8/2007,VIZ Media LLC -29156,Yakitate!! Japan Volume 6,Takashi Hashiguchi,4.00,1421509237,9781421509235,eng,185,254,6,7/10/2007,VIZ Media LLC -29159,焼きたて!!ジャぱん 9 [Yakitate!! Japan 9],Takashi Hashiguchi/橋口 たかし,3.99,4091263992,9784091263995,jpn,190,2,0,10/18/2003,小学館 -29160,Brothers in Arms (Dragonlance: Raistlin Chronicles #2),Margaret Weis/Don Perrin,4.05,0786914297,9780786914296,eng,476,6387,66,8/1/1999,Wizards of the Coast -29161,A Magic-Lover's Treasury of the Fantastic,Margaret Weis/Ursula K. Le Guin/Roger Zelazny/Christopher Stasheff/Mercedes Lackey/Ray Bradbury/Andre Norton/Jack Vance/Raymond E. Feist/C.J. Cherryh/Fritz Leiber/Melanie Rawn/Marion Zimmer Bradley/Larry Niven/Zenna Henderson/Greg Bear/Orson Scott Card/Katherine Kurtz/Joe Haldeman/Robert Silverberg/F. Paul Wilson/Keith Birdsong,3.58,044667284X,9780446672849,en-US,421,132,4,1/1/1998,Aspect -29163,Dragons in the Archives: The Best of Weis & Hickman (Dragonlance Anthology),Margaret Weis/Tracy Hickman/Aron Eisenberg,3.89,078693669X,9780786936694,eng,374,74,4,11/1/2004,Wizards of the Coast -29164,Guardians of the Lost (Sovereign Stone #2),Margaret Weis/Tracy Hickman,3.78,0061020583,9780061020582,eng,652,1248,21,9/3/2002,HarperTorch -29167,The War of the Lance (DragonLance: Tales II #3),Margaret Weis/Tracy Hickman,3.90,0786937777,9780786937776,eng,343,47,0,12/1/2005,Wizards of the Coast -29173,The Dragons at War (Dragonlance Dragons #2),Margaret Weis/Tracy Hickman/Adam Lesh,4.02,0786904917,9780786904914,eng,339,2909,10,5/1/1996,TSR Inc./Wizards of the Coast -29185,Earth Air Fire Water (Tales from the Eternal Archives #2),Margaret Weis/Janet Pack/Bruce Holland Rogers/Nina Kiriki Hoffman/Tanya Huff/Linda P. Baker/Michelle Sagara West/Nancy Varian Berberick/Mark A. Garland/Lawrence Schimel/Donald J. Bingle/Jane Lindskold/Kristine Kathryn Rusch/Edward Carmien/Jean-François Podevin/Robyn McGrew/Carrie Channell,3.39,0886778573,9780886778576,eng,320,28,6,11/1/1999,DAW -29187,Time of the Twins (Dragonlance: Legends #1),Margaret Weis/Tracy Hickman,4.15,0786931582,9780786931583,eng,389,28217,298,3/1/2004,Wizards of the Coast -29204,A Certain Justice (Adam Dalgliesh #10),P.D. James,3.93,0770429912,9780770429911,eng,688,6877,374,3/28/2006,Seal Books -29205,A Certain Justice (Abe Glitsky #1),John Lescroart,4.01,0451217764,9780451217769,eng,624,2993,107,2/7/2006,Signet -29209,The Color of Water: A Black Man's Tribute to His White Mother,James McBride,4.09,1573225789,9781573225786,eng,291,92989,4663,1/14/2004,Riverhead Books -29222,Lost Prophet: The Life and Times of Bayard Rustin,John D'Emilio,4.21,0226142698,9780226142692,eng,592,595,44,10/1/2004,University of Chicago Press -29227,Answers to Questions Teachers Ask about Sensory Integration: Forms Checklists and Practical Tools for Teachers and Parents,Stacey Szklut/Carol Stock Kranowitz/Lynn Balzer-Martin,4.11,1931615039,9781931615037,eng,63,18,1,1/1/2002,Sensory Resources -29248,Kevin Trudeau's Mega Memory: How to Release Your Superpower Memory in 30 Minutes Or Less a Day,Kevin Trudeau,3.54,0688153879,9780688153878,eng,368,128,15,8/16/2005,William Morrow Paperbacks -29251,Still Here: Embracing Aging Changing and Dying,Ram Dass/Richard Alpert,4.11,1573228710,9781573228718,en-US,224,861,81,6/1/2001,Riverhead Books -29252,Paths to God: Living the Bhagavad Gita,Ram Dass/Richard Alpert,4.34,1400054036,9781400054039,en-US,352,616,49,10/25/2005,Harmony -29253,Here We All Are,Ram Dass/Richard Alpert,4.21,1401910440,9781401910440,en-GB,0,61,6,12/15/2005,Hay House -29254,Be Here Now,Ram Dass/Richard Alpert,4.29,0517543052,9780517543054,en-US,416,20343,692,10/12/1971,Lama Foundation (San Cristobal NM) -29255,The Only Dance There Is,Ram Dass/Richard Alpert,4.24,0385084137,9780385084130,en-US,192,713,30,3/5/1974,Anchor -29256,Journey of Awakening: A Meditator's Guidebook,Ram Dass/Richard Alpert,4.17,0553285726,9780553285727,en-US,448,898,52,7/1/1990,Bantam -29257,A Spiritual Journey,Ram Dass/Richard Alpert,4.16,1593976720,9781593976729,en-US,0,68,4,8/1/2005,Macmillan Audio -29260,Finding and Exploring Your Spiritual Path: An Exploration of the Pleasures and Perils of Seeking Personal Enlightenment,Ram Dass/Richard Alpert,3.95,0940687569,9780940687561,eng,0,21,1,5/15/1989,Macmillan Audio -29285,Make Way for McCloskey,Robert McCloskey/Leonard S. Marcus,4.46,067005934X,9780670059348,eng,144,129,8,10/21/2004,Viking Books for Young Readers -29286,Burt Dow Deep-Water Man,Robert McCloskey,4.10,014050978X,9780140509786,en-US,64,673,55,3/1/1989,Puffin Books -29289,Lentil,Robert McCloskey,4.13,0140502874,9780140502879,eng,64,4076,104,4/27/1978,Puffin Books -29290,Time of Wonder,Robert McCloskey,4.08,0140502017,9780140502015,en-US,64,4380,308,6/15/1985,Puffin Books -29312,Riddley Walker,Russell Hoban,4.03,074755904X,9780747559047,eng,236,305,44,2/1/2010,Bloomsbury -29313,Sector 7,David Wiesner,4.21,0395746566,9780395746561,eng,48,5066,523,9/20/1999,Clarion Books -29320,Wind Child,Nancy Harding,3.08,0671646192,9780671646196,eng,331,13,1,7/1/1990,Pocket Books -29324,The Catswold Portal,Shirley Rousseau Murphy,4.06,0060765402,9780060765408,eng,432,888,69,1/25/2005,Harper Voyager -29325,Cat Laughing Last (Joe Grey #7),Shirley Rousseau Murphy,4.22,0061015628,9780061015625,eng,368,654,43,11/5/2002,Avon -29326,Cat Seeing Double (Joe Grey #8),Shirley Rousseau Murphy,4.25,006101561X,9780061015618,eng,384,582,22,10/28/2003,Avon -29358,Charlie Wilson's War: The Extraordinary Story of How the Wildest Man in Congress and a Rogue CIA Agent Changed the History of our Times,George Crile,4.01,0802141242,9780802141248,eng,560,6049,648,4/22/2004,Grove Press -29359,Charlie Wilson's War: The Extraordinary Story of the Largest Covert Operation in History,George Crile/Christopher Lane,4.01,0786179953,9780786179954,en-US,10,24,7,10/1/2005,Blackstone Audiobooks -29362,Charlie Wilson's War: The Extraordinary Story of the Largest Cover Operation in History,George Crile,4.01,0613998057,9780613998055,eng,550,4,0,4/22/2004,Turtleback Books -29367,The Fourth Crusade: And the Sack of Constantinople,Jonathan Phillips,4.04,1844130800,9781844130801,eng,416,25,6,4/7/2005,Pimlico -29378,Practical Ethics,Peter Singer,4.05,052143971X,9780521439718,eng,411,2036,80,1/29/1993,Cambridge University Press -29380,Animal Liberation,Peter Singer,4.25,0060011572,9780060011574,eng,352,5325,357,12/1/2001,Ecco Press -29390,Boudicca: The Warrior Queen,M.J. Trow,3.57,075093400X,9780750934008,en-US,250,71,8,2/1/2005,Sutton Publishing -29393,Our Band Could Be Your Life: Scenes from the American Indie Underground 1981-1991,Michael Azerrad,4.18,0316787531,9780316787536,eng,522,12472,573,7/2/2002,Back Bay Books -29394,Cursor's Fury (Codex Alera #3),Jim Butcher,4.36,0441014348,9780441014347,eng,442,50427,1053,12/5/2006,Ace Hardcover -29395,Sharpe's Fury (Sharpe #11),Bernard Cornwell,4.10,0060530480,9780060530488,eng,352,6057,136,8/22/2006,Harper -29396,Furies of Calderon (Codex Alera #1),Jim Butcher,4.12,044101268X,9780441012688,eng,504,84357,3322,6/28/2005,Ace -29404,Your Child and Jesus: A Family Activity Book,Rick Osborne/Kevin Miller,0.00,080242855X,9780802428554,eng,112,0,0,9/13/1999,Moody Publishers -29406,To the Friend who Didn't Save my Life,Hervé Guibert/Linda Cloverdale,3.92,1852423285,9781852423285,eng,240,110,15,1/1/1998,Serpent's Tail -29412,The Mistress's Daughter,A.M. Homes,3.28,0670038385,9780670038381,en-US,256,3282,518,4/5/2007,Viking -29421,Layer Cake,J.J. Connolly,3.98,0802141684,9780802141682,eng,344,1000,68,8/31/2004,Grove Press Black Cat -29434,Self-Made Man: One Woman's Journey Into Manhood and Back Again,Norah Vincent,3.33,0670034665,9780670034666,eng,290,4104,656,1/19/2006,Viking Books -29435,Nixon Agonistes: The Crisis of the Self-Made Man,Garry Wills,4.12,0618134328,9780618134328,eng,640,430,32,11/14/2002,Mariner Books -29442,The Man Who Changed Everything: The Life of James Clerk Maxwell,Basil Mahon,4.13,0470861711,9780470861714,eng,256,500,46,10/15/2004,Wiley -29446,Baghdad Without a Map and Other Misadventures in Arabia,Tony Horwitz,3.98,0452267455,9780452267459,eng,285,3653,196,1/1/1992,Plume Books -29456,Night Train to Memphis (Vicky Bliss #5),Elizabeth Peters,4.07,0446602485,9780446602488,eng,368,3874,192,12/1/1995,Grand Central Publishing -29460,Sociology in Our Times,Diana Kendall,3.21,0495006858,9780495006855,eng,742,1,0,1/1/2006,Wadsworth Publishing Company -29470,Iberia: Spanish Travels and Reflections,James A. Michener/Robert Vavra,3.71,0394429826,9780394429823,en-US,818,39,8,4/12/1968,Random House -29471,Journey,James A. Michener,3.81,0449218473,9780449218471,eng,336,1597,133,10/1/1994,Fawcett -29474,You Remind Me of You: A Poetry Memoir,Eireann Corrigan,3.95,0439297710,9780439297714,eng,128,993,106,2/1/2002,Push -29478,Remind Me Again Why I Need A Man,Claudia Carroll,3.30,0061140538,9780061140532,eng,384,689,128,5/1/2007,Harper -29484,Strange Candy (Anita Blake Vampire Hunter #0.5),Laurell K. Hamilton,3.76,0425212017,9780425212011,en-US,257,15360,314,10/3/2006,Berkley Publishing Group -29486,Candy Girl: A Year in the Life of an Unlikely Stripper,Diablo Cody,3.54,1592402739,9781592401821,en-US,212,11149,1560,1/2/2007,Gotham -29487,Candy Licker,Noire,4.39,0345486471,9780345486479,eng,304,2623,131,12/27/2005,One World/Ballantine -29488,Candy,Luke Davies,4.09,0345423879,9780345423870,en-US,304,5838,301,6/16/1998,Ballantine Books -29489,Hard Candy,Angela Knight/Sheri Gilmore/Morgan Hawke,3.99,1596321288,9781596321281,en-US,350,564,23,6/30/2005,Loose Id LLC -29490,Candy,Mian Mian/Andrea Lingenfelter,3.32,0316563560,9780316563567,en-US,279,1169,95,7/15/2003,Back Bay Books -29497,Demon Diary Volume 01,Kara/Lee Chi-Hyong,3.95,1591821541,9781591821540,eng,192,4685,78,5/6/2003,TokyoPop -29498,Demon Diary Volume 03,Kara/Lee Yun-Hee,4.07,1591821568,9781591821564,eng,187,1296,20,9/9/2003,TokyoPop -29499,Demon Diary Volume 02,Kara/Jee-Hyung Lee,4.14,159182155X,9781591821557,eng,199,1672,26,7/8/2003,TokyoPop -29500,Demon Diary Volume 04,Kara/Lee Yun-Hee,4.10,1591821576,9781591821571,eng,192,1182,15,11/4/2003,TokyoPop -29501,The End of Faith: Religion Terror and the Future of Reason,Sam Harris,3.93,0393327655,9780393327656,en-US,348,29971,1480,9/17/2005,W. W. Norton Company -29506,Prisoner's Dilemma: John von Neumann Game Theory and the Puzzle of the Bomb,William Poundstone/John von Neumann,3.91,038541580X,9780385415804,eng,320,1323,94,1/1/1993,Anchor -29512,Lost Continents,L. Sprague de Camp,3.65,0486226689,9780486226682,en-US,363,108,10,6/1/1970,Dover Publications (NYC) -29514,The Lost Continent,Edgar Rice Burroughs,3.68,1600961509,9781600961502,eng,108,1235,59,7/30/2008,Waking Lion Press -29516,The Lost Continent: The Story of Atlantis,Charles John Cutcliffe Wright Hyne/Gary Hoppenstand/Harry Turtledove,3.78,0803273320,9780803273320,eng,260,19,1,11/1/2002,Bison Books -29519,Conspiracy of Fools,Kurt Eichenwald,4.23,0767911792,9780767911795,eng,784,4511,309,12/27/2005,Broadway Books -29526,The Death and Rebirth of the Seneca,Anthony F.C. Wallace,3.66,039471699X,9780394716992,eng,416,102,5,4/12/1972,Vintage -29529,Rebirth Volume 5,Kang-Woo Lee/Lauren Na,4.03,1591822203,9781591822202,eng,184,102,2,12/2/2003,TokyoPop -29533,Satan Burger,Carlton Mellick III,3.56,0971357234,9780971357235,eng,230,1691,129,11/1/2001,Eraserhead Press -29534,The Strategy of Satan: How to Detect and Defeat Him,Warren W. Wiersbe,4.37,0842366652,9780842366656,en-US,162,440,45,7/20/1979,Tyndale House Publishers -29537,The Black Stallion and Satan (The Black Stallion #5),Walter Farley,4.12,0679813462,9780679813460,eng,224,6280,53,4/14/1992,Yearling -29545,Satan: His Psychotherapy and Cure by the Unfortunate Dr. Kassler J.S.P.S.,Jeremy Leven,4.13,059514506X,9780595145065,eng,496,519,52,11/1/2000,Backinprint.com -29547,Everyone Worth Knowing,Lauren Weisberger,3.40,1416543007,9781416543008,en-US,448,67653,1680,12/26/2006,Pocket Books -29549,The Lost Blogs: From Jesus to Jim Morrison--The Historically Inaccurate and Totally Fictitious Cyber Diaries of Everyone Worth Knowing,Paul Davidson,3.61,0446697389,9780446697385,eng,288,30,5,11/29/2009,Warner Books -29551,Happy Are the Peace Makers (Blackie Ryan #5),Andrew M. Greeley,3.79,0515110752,9780515110753,eng,300,369,16,4/1/1993,Jove Books -29561,The Truth Will Set You Free: Overcoming Emotional Blindness and Finding Your True Adult Self,Alice Miller/Andrew Edwin Jenkins,4.06,0465045855,9780465045853,eng,224,501,32,12/10/2002,Basic Books -29565,The Stone Raft,José Saramago,3.80,1860467210,9781860467219,eng,272,3224,180,6/1/2000,Panther -29566,Baltasar and Blimunda,José Saramago/Giovanni Pontiero,3.92,1860469019,9781860469015,eng,346,105,14,9/20/2001,Vintage Classics -29569,You: The Owner's Manual: An Insider's Guide to the Body That Will Make You Healthier and Younger,Michael F. Roizen/Mehmet C. Oz,3.82,0060765313,9780060765316,en-US,417,3170,286,1/1/2005,Collins Publishers -29571,You: On a Diet: The Owner's Manual for Waist Management,Michael F. Roizen/Mehmet C. Oz,3.66,0743292545,9780743292542,en-US,370,4403,405,10/31/2006,Free Press -29579,Foundation (Foundation #1),Isaac Asimov,4.16,0553803719,9780553803716,eng,244,349846,6561,6/1/2004,Bantam -29580,Second Foundation (Foundation #3),Isaac Asimov,4.26,0553803735,9780553803730,eng,256,119224,1708,6/1/2004,Bantam Spectra -29581,Foundation and Empire (Foundation #2),Isaac Asimov,4.22,0553803727,9780553803723,eng,256,126226,2034,6/1/2004,Spectra Books -29582,Foundation and Earth (Foundation #5),Isaac Asimov,4.05,0553587579,9780553587579,eng,500,46112,890,8/31/2004,Spectra -29584,Foundations of Clinical Research: Applications to Practice,Leslie Gross Portney,4.12,0838526950,9780838526958,eng,742,18,1,1/1/2000,Prentice Hall -29587,Down and Out in the Magic Kingdom,Cory Doctorow,3.56,076530953X,9780765309532,eng,208,10810,1068,12/5/2003,Tor Books -29588,Someone Comes to Town Someone Leaves Town,Cory Doctorow,3.51,0765312808,9780765312808,en-US,315,2956,321,5/30/2006,Tor Books -29589,Eastern Standard Tribe,Cory Doctorow,3.48,0765310457,9780765310453,en-US,223,3213,213,4/1/2005,Tor Books -29593,A Place So Foreign and Eight More,Cory Doctorow/Bruce Sterling,3.72,1568582862,9781568582863,eng,243,860,43,9/8/2003,Four Walls Eight Windows Press -29597,Through Painted Deserts: Light God and Beauty on the Open Road,Donald Miller,3.92,0785209824,9780785209829,eng,256,8931,444,8/14/2005,Thomas Nelson -29603,20 000 Leagues Under the Sea,Ron Miller/Jules Verne/Paul Wright,3.76,0751370738,9780751370737,eng,64,34,4,10/8/1998,Prentice Hall -29613,Codebreakers' Victory: How the Allied Cryptographers Won World War II,Hervie Haufler,4.18,0451209796,9780451209795,eng,352,45,3,11/4/2003,NAL Trade -29616,All Night Long,Jayne Ann Krentz,3.96,0399153055,9780399153051,eng,416,7438,257,1/3/2006,G.P. Putnam's Sons -29617,White Lies (Arcane Society #2),Jayne Ann Krentz,4.01,039915373X,9780399153730,eng,371,7604,328,2/1/2007,G.P. Putnam's Sons -29619,Ghost Hunter (Ghost Hunters #3),Jayne Castle/Jayne Ann Krentz,4.14,0515141402,9780515141405,eng,327,4349,170,5/30/2006,Jove Books -29620,The Pirate / The Adventurer / The Cowboy,Jayne Ann Krentz,3.89,0373771711,9780373771714,eng,362,262,7,4/25/2006,Harlequin -29621,Midnight Jewels,Jayne Ann Krentz,3.75,0446692476,9780446692472,eng,425,1306,35,7/1/2003,Warner Books -29622,The Wedding Night,Jayne Ann Krentz,3.45,1551668513,9781551668512,eng,256,795,23,11/23/2001,MIRA -29623,After Glow (Ghost Hunters #2),Jayne Castle/Jayne Ann Krentz,4.14,0515136948,9780515136944,eng,343,4149,138,2/24/2004,Jove Books -29624,Orchid (St. Helen's #3),Jayne Castle/Jayne Ann Krentz,4.15,0671569023,9780671569020,eng,327,3748,102,5/1/1998,Pocket Books -29625,The Origin of Consciousness in the Breakdown of the Bicameral Mind,Julian Jaynes,4.25,0713912545,9780713912548,en-GB,467,7,1,6/1/1979,Allen Lane -29627,The Future of the Universe,Jack Meadows,3.80,1852339462,9781852339463,eng,175,5,0,12/1/2006,Springer -29632,Micro Eco-Farming: Prospering from Backyard to Small Acreage in Partnership with the Earth,Barbara Berst Adams,3.76,0963281437,9780963281432,eng,174,68,5,5/1/2005,New World Publishing -29633,The Quiet American: Text and Criticism,Graham Greene/John Clark Pratt,3.97,014024350X,9780140243505,eng,515,225,17,1/1/1996,Penguin Books -29639,The Quiet American,Graham Greene/Zadie Smith,3.97,0099478390,9780099478393,eng,198,1344,156,10/7/2004,Vintage Books/Vintage Classics -29641,The End of the Affair,Graham Greene/Monica Ali,3.94,0099478447,9780099478447,eng,160,38283,3002,10/7/2004,Vintage Classics -29658,Postwar: A History of Europe Since 1945,Tony Judt,4.34,0143037757,9780143037750,eng,933,8017,571,9/5/2006,Penguin Books -29680,The Coen Brothers: Interviews,William Rodney Allen,3.82,1578068894,9781578068890,eng,208,73,3,8/18/2006,University Press of Mississippi -29685,The Hermeneutical Spiral: A Comprehensive Introduction to Biblical Interpretation,Grant R. Osborne,3.94,0830828265,9780830828265,eng,624,410,37,12/1/2006,IVP Academic -29694,Raising the Bar: Ministry to Youth in the New Millennium,Alvin L. Reid,3.86,082543632X,9780825436321,en-US,208,42,3,4/7/2004,Kregel Academic & Professional -29705,The Book of Other People,Zadie Smith/David Mitchell/George Saunders/Colm Tóibín/Aleksandar Hemon/Nick Hornby/Hari Kunzru/Toby Litt/Chris Ware,3.38,0143038184,9780143038184,eng,304,2546,328,1/2/2008,Penguin Books -29718,The Confusions of Young Törless,Robert Musil/Shaun Whiteside/J.M. Coetzee,3.73,0142180009,9780142180006,eng,176,4374,179,9/27/2001,Penguin -29719,Robinson Crusoe,Daniel Defoe/J.M. Coetzee,3.67,0192100335,9780192100337,eng,306,125,3,9/16/1999,Oxford University Press -29720,Doubling the Point: Essays and Interviews,J.M. Coetzee/David Attwell,4.05,0674215184,9780674215184,en-US,438,85,2,8/12/1992,Harvard University Press -29724,Fantastic! Wow! and Unreal!: A Book About Interjections and Conjunctions,Ruth Heller,4.22,0698118758,9780698118751,en-US,32,84,11,10/23/2000,Puffin Books -29726,Don DeLillo's White Noise: A Reader's Guide,Leonard Orr,3.92,0826414745,9780826414748,eng,96,76,9,4/10/2003,Bloomsbury Academic -29734,Letting Go,Philip Roth,3.70,0679764178,9780679764175,eng,630,1103,88,9/2/1997,Vintage -29737,My Life as a Man,Philip Roth,3.73,067974827X,9780679748274,eng,334,1561,101,1/13/1994,Vintage -29738,Patrimony,Philip Roth,4.17,0679752935,9780679752936,eng,240,2531,202,6/3/1996,Vintage -29741,The Great American Novel,Philip Roth,3.63,0679749063,9780679749066,eng,416,180,22,4/11/1995,Vintage -29743,The Professor of Desire,Philip Roth/Νίκος Παναγιωτόπουλος,3.66,0099389010,9780099389019,eng,272,2016,113,10/5/1995,Vintage -29745,Deception,Philip Roth,3.34,0099801906,9780099801900,eng,208,1524,118,1/17/2006,Vintage -29746,When She Was Good,Philip Roth,3.53,0679759255,9780679759256,eng,320,1748,149,1/31/1995,Vintage -29776,The Dying Animal,Philip Roth,3.63,0099422697,9780099422693,eng,156,5910,437,3/7/2002,Vintage -29788,For the Relief of Unbearable Urges,Nathan Englander,3.93,0375704434,9780375704437,eng,205,2418,229,3/21/2000,Vintage -29791,The Ministry of Special Cases,Nathan Englander,3.66,0375404937,9780375404931,eng,339,2509,368,4/24/2007,Knopf Publishing Group -29797,The Pilgrim's Progress,John Bunyan,4.00,0486426750,9780486426754,eng,324,87175,1875,2/10/2003,Dover Publications -29800,Scott Pilgrim Volume 1: Scott Pilgrim's Precious Little Life,Bryan Lee O'Malley,4.17,1932664084,9781932664089,eng,168,155863,3267,8/18/2004,Oni Press -29806,The Pilgrim's Regress,C.S. Lewis/Michael Hague,3.88,0802806414,9780802806413,eng,219,6276,362,1/10/1992,William B. Eerdmans Publishing Company -29811,Little Pilgrim's Progress: From John Bunyan's Classic,Helen L. Taylor,4.26,0802449247,9780802449245,eng,336,2065,136,2/1/2006,Moody Publishers -29819,The Landing of the Pilgrims,James Daugherty,3.41,0394846974,9780394846972,eng,160,611,69,2/12/1981,Random House Books for Young Readers -29820,Little Pilgrim's Progress,Helen L. Taylor/John Bunyan,4.26,0802449263,9780802449269,eng,256,212,20,3/8/1989,Moody Publishers -29823,From Nomads to Pilgrims: Stories from Practicing Congregations,Diana Butler Bass,4.00,1566993237,9781566993234,eng,179,13,0,12/30/2005,Rowman & Littlefield Publishers -29838,The New York Times Guide to Essential Knowledge,John D. Leonard/The New York Times,4.10,0312313675,9780312313678,en-US,1104,157,10,11/5/2004,St. Martin's Press -29841,New York 2000: Architecture and Urbanism Between the Bicentennial and the Millennium,Robert A.M. Stern/David Fishman/Jacob Tilove,4.44,1580931774,9781580931779,eng,1520,16,0,11/1/2006,The Monacelli Press -29842,Forgotten New York: Views of a Lost Metropolis,Kevin Walsh,4.16,0060754001,9780060754006,eng,384,200,20,9/26/2006,Collins Reference -29845,The Historical Atlas of New York City: A Visual Celebration of Nearly 400 Years of New York City's History,Eric Homberger/Alice Hudson,4.06,0805078428,9780805078428,eng,192,308,22,7/1/2005,Holt Paperbacks -29868,La toile de Charlotte,E.B. White/Garth Williams/Catherine Chaine,4.17,221102288X,9782211022880,fre,192,13,0,4/1/1997,l'ecole des loisirs -29873,This Is New York,Miroslav Sasek,4.29,0789308843,9780789308849,en-GB,64,385,38,5/30/2003,Universe -29879,They Dare to Speak Out: People and Institutions Confront Israel's Lobby,Paul Findley,4.07,155652482X,9781556524820,eng,416,106,5,5/1/2003,Lawrence Hill Books -29881,Famous Last Words,Timothy Findley,3.99,057120905X,9780571209057,eng,416,1400,57,8/20/2001,Faber Faber -29898,The Wars,Timothy Findley,3.88,0571207995,9780571207992,eng,218,6467,245,8/20/2001,Faber and Faber -29900,Into the Void (Spelljammer: The Cloakmaster Cycle #2),Nigel Findley,3.54,1560761547,9781560761549,en-US,311,257,12,9/1/1991,TSR -29905,Essential Dialogues of Plato,Plato/Benjamin Jowett/Pedro De Blas,4.05,159308269X,9781593082697,eng,624,4853,14,10/5/2005,Barnes Noble Classics -29906,The Collected Dialogues,Plato/Edith Hamilton/Huntington Cairns,4.23,0691097186,9780691097183,eng,1776,704,31,9/15/1963,Princeton University Press (NJ) -29907,Republic,Plato/Benjamin Jowett/Elizabeth Watson Scharffenberger,3.94,1593080972,9781593080976,eng,496,392,33,8/1/2005,Barnes Noble Classics -29908,The Republic,Plato/Tom Griffith,3.94,0460873822,9780460873826,eng,240,7,1,11/15/1993,Orion Publishing Group Ltd. -29914,Inner Circle (Carol Ashton Mysteries #8),Claire McNab,3.74,156280135X,9781562801359,eng,196,72,1,10/1/1996,Naiad Press -29917,The Rising Tide (World War II: 1939-1945 #1),Jeff Shaara,4.11,034546141X,9780345461414,eng,576,5709,390,11/7/2006,Ballantine Books -29919,Jeff Shaara's Civil War Battlefields: Discovering America's Hallowed Ground,Jeff Shaara,4.11,0345464885,9780345464880,eng,288,584,59,4/25/2006,Ballantine Books -29920,Rise to Rebellion,Jeff Shaara,4.18,0345427548,9780345427540,eng,492,5745,383,6/29/2004,Ballantine Books -29922,Gone for Soldiers: A Novel of the Mexican War,Jeff Shaara,4.14,0345427513,9780345427519,eng,424,191,18,7/3/2001,Ballantine Books -29923,The Last Full Measure (The Civil War Trilogy #3),Jeff Shaara,4.24,0345434811,9780345434814,eng,640,13438,314,5/2/2000,Ballantine Books -29927,A Farewell to Arms?: Beyond the Good Friday Agreement,Adrian Guelke/Michael Cox/Fiona Stephen,4.33,0719071151,9780719071157,eng,624,0,0,4/18/2006,Manchester University Press -29932,When Smoke Ran Like Water: Tales Of Environmental Deception And The Battle Against Pollution,Devra Davis/Mitchell Gaynor,4.02,0465015220,9780465015221,en-US,352,249,29,12/25/2003,Basic Books -29934,What Work Is,Philip Levine,4.27,0679740589,9780679740582,eng,77,2102,90,4/21/1992,Knopf -29936,The Simple Truth,Philip Levine/Harry Ford,4.21,0679765840,9780679765844,eng,69,656,52,9/3/1996,Knopf -29941,Fiskadoro,Denis Johnson,3.54,0060976098,9780060976095,en-US,221,1513,116,5/30/2000,Harper Perennial -29946,Illusions: The Adventures of a Reluctant Messiah,Richard Bach,4.15,0099427869,9780099427865,eng,144,50816,1906,3/12/2001,Arrow Books Ltd -29947,There's No Such Place As Far Away,Richard Bach/H. Lee Shapiro/دل آرا قهرمان,3.93,0385319274,9780385319270,eng,48,2737,83,1/12/1998,Delta -29949,Running from Safety: An Adventure of the Spirit,Richard Bach,3.79,0385315287,9780385315289,eng,368,1775,54,11/1/1995,Delta -29953,A Gift Of Wings,Richard Bach,3.79,0330304216,9780330304214,eng,299,1664,44,5/11/2001,Sidgwick & Jackson Ltd -29960,Winter of Magic's Return,Pamela F. Service,4.25,0449702022,9780449702024,eng,194,235,18,11/12/1986,Fawcett -29964,A Modern Utopia,H.G. Wells/Gregory Claeys/Francis Wheen,3.45,0141441127,9780141441122,eng,320,596,53,3/31/2006,Penguin Books Limited -29965,The War of the Worlds,H.G. Wells/Leon Stover,3.82,0786407808,9780786407804,eng,321,16,1,4/30/2001,McFarland & Company -29966,The Shape of Things to Come,H.G. Wells/John Clute,3.61,0141441046,9780141441047,eng,530,931,43,5/26/2006,Penguin Books Limited -29967,Floor Games (Sandplay Classics),H.G. Wells/Barbara A. Turner,3.40,0972851720,9780972851725,eng,110,46,3,9/1/2004,Temenos Press -29971,Seven Novels,H.G. Wells,4.14,0706425618,9780706425611,eng,828,4,3,1/1/1985,Octopus Books (London) -29976,Three Prophetic Science Fiction Novels,H.G. Wells/E.F. Bleiler,3.86,0844631515,9780844631516,eng,335,1,0,12/31/1975,Peter Smith Publisher Inc. -29979,Science Fiction Treasury: Six Complete Novels (complete & unabridged),H.G. Wells/George Gesner,3.94,0517436329,9780517436325,eng,688,17,1,9/19/1984,Random House Value Publishing -29981,The Island of Doctor Moreau,H.G. Wells,3.73,0553214322,9780553214321,eng,153,71933,2443,5/1/1994,Bantam Classics -29990,Notebooks of the Mind: Explorations of Thinking Revised Edition,Vera John-Steiner,3.83,0195108965,9780195108965,eng,288,17,1,1/23/1997,Oxford University Press USA -29993,The Visible Hand: The Managerial Revolution in American Business,Alfred D. Chandler Jr.,4.01,0674940520,9780674940529,en-US,624,222,26,1/1/1977,Belknap Press -29998,Crime Stories and Other Writings,Dashiell Hammett/Steven Marcus,4.39,1931082006,9781931082006,eng,934,490,30,9/10/2001,Library of America -29999,The Maltese Falcon,Dashiell Hammett,3.91,0752865331,9780752865331,eng,213,69254,2997,3/1/2005,Orion -30001,Lost Stories,Dashiell Hammett/Vince Emery/Joe Gores,3.98,0972589813,9780972589819,eng,342,201,37,9/1/2005,Vince Emery Productions -30002,The Dain Curse,Dashiell Hammett,3.83,0752851802,9780752851808,eng,256,5558,268,12/5/2002,Orion -30003,The Big Knockover: Selected Stories and Short Novels,Dashiell Hammett/Lillian Hellman/Jeff Stone,4.18,0679722599,9780679722595,eng,480,2916,83,7/17/1989,Vintage Crime/Black Lizard -30005,Red Harvest,Dashiell Hammett,3.97,0752852612,9780752852614,eng,224,17966,870,5/1/2003,Orion -30010,The Complete Stories Vol 1,Isaac Asimov,4.36,038541627X,9780385416276,eng,624,5362,115,10/1/1990,Broadway -30026,Xénocide (Ender's Saga #3),Orson Scott Card,3.79,2290315524,9782290315521,fre,573,73,3,10/18/2001,J'ai lu -30028,Edgar A. Poe: Mournful and Never-ending Remembrance,Kenneth Silverman,4.01,0060923318,9780060923310,en-US,592,295,34,12/23/2008,Harper Perennial -30029,Tales of Mystery and Madness,Edgar Allan Poe/Gris Grimly,4.34,0689848374,9780689848377,eng,135,2226,139,8/30/2011,Atheneum -30036,Elric of Melniboné (The Elric Saga #1),Michael Moorcock,3.89,0441203981,9780441203987,eng,181,20559,682,7/15/1987,Ace Books -30039,The Prize (deWarenne Dynasty #4),Brenda Joyce,3.98,0778320898,9780778320890,eng,575,1604,66,9/24/2004,Mira Books -30041,Elric of Melnibone: Bright Shadows,Charles Green/Richard Ford/Pascal Quidault,4.00,1905850581,9781905850587,eng,98,8,0,4/1/2008,Mongoose Publishing -30043,A River Runs Through it and Other Stories,Norman Maclean/Annie Proulx,4.18,0226500667,9780226500669,eng,217,18634,1147,10/1/2001,University of Chicago Press -30044,Young Men and Fire,Norman Maclean,4.08,0226500624,9780226500621,eng,301,4346,386,11/5/1993,University Of Chicago Press -30050,When the Rivers Run Dry: Water - The Defining Crisis of the Twenty-first Century,Fred Pearce,3.94,0807085731,9780807085738,eng,336,672,82,3/15/2007,Beacon Press -30051,The River Runs Black: The Environmental Challenge to China's Future,Elizabeth C. Economy,3.80,0801489784,9780801489785,eng,337,135,15,2/24/2005,Cornell University Press -30053,Only the River Runs Free (The Galway Chronicles #1),Bodie Thoene/Brock Thoene,4.09,0785263780,9780785263784,eng,271,1387,104,1/14/1997,Thomas Nelson -30055,It's Not About the Bike: My Journey Back to Life,Lance Armstrong/Sally Jenkins,3.72,0224060872,9780224060875,en-GB,294,495,42,5/3/2001,Yellow Jersey -30065,The Walking Dead Vol. 5: The Best Defense,Robert Kirkman/Charlie Adlard/Cliff Rathburn,4.29,158240612X,9781582406121,eng,136,21435,841,4/21/2009,Image Comics -30066,Being Dead Is No Excuse: The Official Southern Ladies Guide to Hosting the Perfect Funeral,Gayden Metcalfe,3.86,1401359345,9781401359348,en-US,243,1741,272,3/16/2005,Hyperion Books -30067,Drop Dead Gorgeous (Blair Mallory #2),Linda Howard,3.93,0345486587,9780345486585,eng,347,7227,301,11/28/2006,Ballantine Books -30068,The Book of the Dead (Pendergast #7; Diogenes #3),Douglas Preston/Lincoln Child,4.13,0446576980,9780446576987,eng,454,27050,947,8/14/2006,Warner Books (NY) -30069,The Walking Dead Vol. 3: Safety Behind Bars,Robert Kirkman/Charlie Adlard/Cliff Rathburn,4.30,1582404879,9781582404875,eng,136,25796,1020,6/18/2005,Image Comics -30071,The Walking Dead Book One (The Walking Dead #1-12),Robert Kirkman/Tony Moore/Charlie Adlard/Cliff Rathburn,4.35,1582406197,9781582406190,eng,304,34751,1346,10/5/2010,Image Comics -30072,The Brief History of the Dead,Kevin Brockmeier,3.67,1400095956,9781400095957,eng,252,9490,1576,1/9/2007,Vintage -30080,Beckett Football Card Price Guide,Dan Hitt/James Beckett III,0.00,1930692471,9781930692473,eng,830,0,0,9/1/2006,Beckett Media -30085,The Power of Infinite Love & Gratitude: An Evolutionary Journey to Awakening Your Spirit,Darren R. Weissman,4.11,1401917178,9781401917173,eng,298,62,14,2/1/2007,Hay House -30091,Masculinity and Male Codes of Honor in Modern France,Robert A. Nye,4.36,0520215109,9780520215108,en-US,316,14,0,11/30/1998,University of California Press -30092,The Life and Death of My Lord Gilles de Rais,Robert Nye,3.87,0349102503,9780349102504,en-GB,323,65,8,12/1/1991,Abacus Books (London) -30093,The White Wolf's Son: The Albino Underground (Elric & Oona Von Bek #3),Michael Moorcock,3.88,0446617458,9780446617451,en-US,432,283,8,9/1/2006,Grand Central Publishing -30094,Michael Moorcock's Multiverse,Michael Moorcock/Walter Simonson/Mark Reeve/John Ridgway,3.94,1563895161,9781563895166,eng,288,170,10,11/1/1999,Vertigo -30095,Gloriana,Michael Moorcock,3.65,0446691402,9780446691406,eng,496,1742,64,8/1/2004,Aspect -30097,The Eternal Champion (Eternal Champion #1),Michael Moorcock,3.95,1565041917,9781565041912,eng,484,2524,40,2/1/1996,White Wolf Games Studio -30104,The Spell,Alan Hollinghurst,3.54,0140286373,9780140286373,eng,272,1559,103,5/1/2000,Penguin Books -30106,The Swimming-Pool Library,Alan Hollinghurst,3.77,0679722564,9780679722564,eng,352,7115,322,9/19/1989,Vintage -30107,The Ivory Tower,Henry James/Alan Hollinghurst/Ezra Pound,3.29,1590170784,9781590170786,eng,296,57,7,2/29/2004,NYRB Classics -30112,America Alone: The End of the World As We Know It,Mark Steyn,4.13,0895260786,9780895260789,eng,224,3095,362,10/1/2006,Regnery Publishing -30117,Where the Sidewalk Ends: Poems and Drawings,Shel Silverstein,4.30,0060572345,9780060572341,eng,192,3587,179,2/18/2014,HarperCollins -30118,A Light in the Attic,Shel Silverstein,4.34,0060513063,9780060513061,eng,176,349247,2567,10/7/2002,Harpercollins Childrens Books -30122,The Missing Piece (The Missing Piece #1),Shel Silverstein,4.28,0060256710,9780060256715,eng,112,24366,746,1/24/2006,HarperCollins -30125,The Missing Piece Meets the Big O,Shel Silverstein,4.34,0060256575,9780060256579,eng,104,10503,505,1/24/2006,HarperCollins -30128,Lafcadio the Lion Who Shot Back,Shel Silverstein,4.15,0060256753,9780060256753,eng,112,5308,307,9/24/2013,HarperCollins -30129,A Light in the Attic (Book & CD),Shel Silverstein,4.34,0066236177,9780066236179,en-US,176,597,21,10/9/2001,HarperCollins -30134,Runny Babbit Book and Abridged CD,Shel Silverstein/Dennis Locorriere,4.12,0061130478,9780061130472,en-US,96,44,6,9/26/2006,HarperCollins -30143,L'albero,Shel Silverstein/Daniela Gamba,4.37,887782719X,9788877827197,ita,62,36,7,5/1/2000,Salani -30160,The Beginning: The Cove / The Maze (FBI Thriller #1-2),Catherine Coulter,4.20,0425205517,9780425205518,eng,544,756,34,9/6/2005,Berkley Trade -30162,Jade Star (Star #4),Catherine Coulter,3.83,0451206126,9780451206121,en-US,400,896,19,6/1/2002,Signet -30164,Double Take (FBI Thriller #11),Catherine Coulter,4.05,0399154248,9780399154249,eng,420,7456,376,6/12/2007,Putnam Adult -30165,The Valentine Legacy (Legacy #3),Catherine Coulter,3.88,0515118362,9780515118360,eng,406,2133,42,9/1/1996,Berkley Books -30174,Undead and Unwed (Undead #1),MaryJanice Davidson,3.82,1597221104,9781597221108,eng,392,89,18,12/31/2005,Wheeler Publishing -30176,Undead and Unappreciated (Undead #3),MaryJanice Davidson,3.88,1597221287,9781597221283,eng,279,67,5,12/31/2005,Wheeler Publishing -30183,Marked (House of Night #1),P.C. Cast/Kristin Cast,3.80,0312360266,9780312360269,eng,306,399152,12748,5/1/2007,St. Martin's Press -30186,Divine By Choice (Partholon #2),P.C. Cast,4.10,037380251X,9780373802517,eng,377,6435,209,11/21/2006,Luna Books -30187,Divine By Mistake (Partholon #1),P.C. Cast,4.09,0373802471,9780373802470,eng,701,8633,452,8/29/2006,Luna Books -30189,Cast in Courtlight (Chronicles of Elantra #2),Michelle Sagara,4.11,0373802447,9780373802449,eng,488,8990,294,7/18/2006,Luna -30190,Goddess of Light (Goddess Summoning #3),P.C. Cast,4.04,0425201961,9780425201961,eng,355,5594,213,4/5/2005,Berkley -30191,Brighid's Quest (Partholon #5),P.C. Cast,4.14,0373802420,9780373802425,eng,507,3344,107,11/29/2005,Luna Books -30193,Goddess of the Rose (Goddess Summoning #4),P.C. Cast,4.14,0425208915,9780425208915,eng,345,5499,248,2/7/2006,Berkley Sensation -30194,Goddess of Spring (Goddess Summoning #2),P.C. Cast,4.21,0425197492,9780425197493,eng,360,7579,446,8/3/2004,Berkley Sensation -30196,Goddess of the Sea (Goddess Summoning #1),P.C. Cast,3.87,0425192792,9780425192795,eng,368,7847,439,10/7/2003,Berkley Sensation -30199,Mysteria (Mysteria #1),MaryJanice Davidson/Susan Grant/P.C. Cast/Gena Showalter,3.73,0425211061,9780425211069,eng,340,3046,96,7/5/2006,Berkley Sensation -30200,Elphame's Choice (Partholon #4),P.C. Cast,4.03,0373802137,9780373802135,eng,551,3971,141,11/24/2004,Luna Books -30206,Loveless Vol. 1: A Kin of Homecoming,Brian Azzarello/Marcelo Frusín,3.32,1401210619,9781401210618,eng,128,516,52,5/1/2006,Vertigo -30214,Where the Mountain Casts Its Shadow: The Dark Side of Extreme Adventure,Maria Coffey/Thomas Hornbein,3.88,0312339011,9780312339012,eng,256,386,49,4/1/2005,St. Martin's Griffin -30215,Cast a Yellow Shadow (Mac McCorkle #2),Ross Thomas,3.95,0445405562,9780445405561,eng,272,206,17,2/1/1987,Mysterious Press -30220,Like a Velvet Glove Cast in Iron,Daniel Clowes,4.06,1560971169,9781560971160,eng,200,6409,280,1/17/1993,Fantagraphics -30223,Goddess of Love (Goddess Summoning #5),P.C. Cast,4.06,0425215288,9780425215289,eng,292,4475,196,6/5/2007,Berkley Books -30224,Mistral's Kiss (Merry Gentry #5),Laurell K. Hamilton,4.04,0345443586,9780345443588,en-US,212,27026,421,12/12/2006,Ballantine Books -30225,The Harlequin (Anita Blake Vampire Hunter #15),Laurell K. Hamilton,3.92,0425217248,9780425217245,en-US,422,37989,785,6/5/2007,Berkley Books -30226,A Stroke of Midnight (Merry Gentry #4),Laurell K. Hamilton,4.07,0345443608,9780345443601,en-US,385,28551,442,11/28/2006,Ballantine Books -30227,Danse Macabre (Anita Blake Vampire Hunter #14),Laurell K. Hamilton,3.82,0425207978,9780425207970,en-US,483,798,52,6/27/2006,Berkley -30228,Micah (Anita Blake Vampire Hunter #13),Laurell K. Hamilton,3.63,0515140872,9780515140873,en-US,245,39849,868,3/1/2006,Berkley Books -30229,Death of a Darklord (Ravenloft #13),Laurell K. Hamilton,3.43,0786941227,9780786941223,eng,306,2679,113,7/11/2006,Wizards of the Coast -30230,Anita Blake Vampire Hunter Collection 1-4 (Anita Blake Vampire Hunter #1-4),Laurell K. Hamilton,4.54,0515136174,9780515136173,eng,1256,3320,36,2/25/2003,Jove -30231,Little Butterfly Volume 02,Hinako Takanaga,4.18,1569709068,9781569709061,eng,170,760,8,9/19/2006,Digital Manga Publishing -30232,Little Butterfly Volume 03,Hinako Takanaga,4.21,156970905X,9781569709054,eng,184,609,6,12/6/2006,Digital Manga Publishing -30233,Little Butterfly Volume 01,Hinako Takanaga,4.07,1569709076,9781569709078,eng,184,1540,31,5/30/2006,Digital Manga Publishing -30236,The Little Butterfly,Sherry Shahan,4.03,0679888098,9780679888093,eng,24,17,6,4/14/1998,Random House Books for Young Readers -30240,A Caress of Twilight (Merry Gentry #2),Laurell K. Hamilton,4.06,0345478169,9780345478160,en-US,348,32029,596,3/15/2005,Ballantine Books -30241,Bloody Bones (Anita Blake Vampire Hunter #5),Laurell K. Hamilton,4.11,0425205673,9780425205679,eng,336,60937,959,11/1/2005,Berkley Hardcover -30242,Burnt Offerings (Anita Blake Vampire Hunter #7),Laurell K. Hamilton,4.08,0515134473,9780515134476,en-US,392,58849,832,9/24/2002,Berkley Books -30243,Seduced by Moonlight (Merry Gentry #3),Laurell K. Hamilton,4.06,0553816322,9780553816327,eng,409,28152,404,1/14/2005,Bantam -30244,The Killing Dance (Anita Blake Vampire Hunter #6),Laurell K. Hamilton,4.13,0425209067,9780425209066,en-US,368,59524,946,4/4/2006,Berkley Hardcover -30245,Cerulean Sins (Anita Blake Vampire Hunter #11),Laurell K. Hamilton,3.85,0515136816,9780515136814,en-US,529,43475,731,8/31/2004,Berkley Books -30246,Blue Moon (Anita Blake Vampire Hunter #8),Laurell K. Hamilton,4.05,0515134457,9780515134452,en-US,418,55670,835,9/24/2002,Berkley Books -30247,A Stolen Season (Alex McKnight #7),Steve Hamilton,3.96,031235360X,9780312353605,eng,304,1889,137,9/5/2006,Minotaur Books -30248,Narcissus in Chains (Anita Blake Vampire Hunter #10),Laurell K. Hamilton,3.90,0515133876,9780515133875,eng,644,49695,998,9/24/2002,Jove -30249,Sensual Phrase Vol. 15,Mayu Shinjō,4.23,1421505606,9781421505602,en-US,175,488,7,8/1/2006,Viz Media -30250,Sensual Phrase Vol. 17,Mayu Shinjō,4.24,1421505622,9781421505626,en-US,208,489,4,12/1/2006,Viz Media -30253,Sensual Phrase Vol. 3,Mayu Shinjō,4.14,1591164494,9781591164494,en-US,192,744,11,8/11/2004,Viz Media -30258,Harrison's Principles of Internal Medicine,Dennis L. Kasper/Dan L. Longo/Stephen L. Hauser/Anthony S. Fauci/Eugene Braunwald,4.35,0071391401,9780071391405,eng,2751,23,4,7/27/2004,McGraw-Hill Medical Publishing -30259,For a Few Demons More (The Hollows #5),Kim Harrison,4.33,0060788380,9780060788384,eng,456,48049,1104,3/20/2007,Harper Voyager -30260,A Fistful of Charms (The Hollows #4),Kim Harrison,4.29,0060788194,9780060788193,eng,510,47773,1109,6/27/2006,HarperTorch -30262,The Good the Bad and the Undead (The Hollows #2),Kim Harrison,4.26,0060572973,9780060572976,eng,453,54083,1602,1/25/2005,HarperTorch -30263,Every Which Way But Dead (The Hollows #3),Kim Harrison,4.29,006057299X,9780060572990,eng,501,60083,1213,6/28/2005,HarperTorch -30264,Dead Witch Walking (The Hollows #1),Kim Harrison,4.04,0060572965,9780060572969,en-US,416,99076,4091,7/1/2004,HarperTorch -30268,Dates from Hell,Kim Harrison/Lynsay Sands/Kelley Armstrong/Lori Handeland,3.78,006085409X,9780060854096,eng,416,10630,309,3/28/2006,Avon -30270,Pacto Con un Demonio,Kim Harrison,4.39,0060898720,9780060898724,spa,512,0,0,7/1/2008,HarperTorch -30271,Incubus Dreams (Anita Blake Vampire Hunter #12),Laurell K. Hamilton,3.79,0515139750,9780515139754,eng,722,41737,831,9/27/2005,Jove -30272,Schattenkuss (Meredith Gentry #1),Laurell K. Hamilton,4.01,3442356911,9783442356911,ger,573,22,0,4/2/2002,Blanvalet Taschenbuch Verlag -30273,The Lunatic Cafe (Anita Blake Vampire Hunter #4),Laurell K. Hamilton,4.12,0425201376,9780425201374,eng,352,64036,962,3/1/2005,Berkley Hardcover -30274,Circus of the Damned (Anita Blake Vampire Hunter #3),Laurell K. Hamilton,4.17,0425201392,9780425201398,eng,320,78062,1121,1/2/2007,Berkley -30279,Bite (Anita Blake Vampire Hunter #8.5; Sookie Stackhouse #5.1; Undead #2.5; Mageverse #1.5),Laurell K. Hamilton/Charlaine Harris/MaryJanice Davidson/Angela Knight/Vickie Taylor,3.77,051513970X,9780515139709,eng,297,15072,424,12/28/2004,Jove -30280,Out of this World,J.D. Robb/Laurell K. Hamilton/Susan Krinard/Maggie Shayne,4.07,0515131091,9780515131093,eng,357,6006,111,8/1/2001,Jove Books -30281,Guilty Pleasures (Anita Blake Vampire Hunter #1),Laurell K. Hamilton,4.02,0425197549,9780425197547,eng,355,115364,4037,8/3/2004,Berkley -30282,Cravings (Undead #1.5; Moon #3.5),Laurell K. Hamilton/MaryJanice Davidson/Eileen Wilks/Rebecca York,3.82,0515138150,9780515138153,eng,358,7965,188,6/29/2004,Berkley Books -30284,Nachtschwärmer (Meredith Gentry #2),Laurell K. Hamilton,4.06,3442358957,9783442358953,ger,586,13,0,5/1/2003,Blanvalet Taschenbuch Verlag -30288,Laurell K. Hamilton's Anita Blake Vampire Hunter: Guilty Pleasures vol 1,Laurell K. Hamilton/Stacie Ritchie/Jessica Ruffner/Brett Booth,4.17,0785127232,9780785127239,eng,168,7302,250,7/18/2007,Marvel -30289,The Republic,Plato/Desmond Lee/Maria Helena da Rocha Pereira/Benjamin Jowett,3.94,0140449140,9780140449143,eng,416,136467,2013,2/25/2003,Penguin Classics -30290,The Republic of Plato,Plato/Allan Bloom,3.94,0465069347,9780465069347,eng,487,1699,125,10/3/1991,Basic Books -30292,Five Dialogues: Euthyphro Apology Crito Meno Phaedo,Plato/G.M.A. Grube/John M. Cooper,4.13,0872206335,9780872206335,eng,156,15657,227,10/1/2002,Hackett Publishing Company Inc. -30293,Plato Not Prozac!: Applying Eternal Wisdom to Everyday Problems,Lou Marinoff,3.41,0060931361,9780060931360,eng,320,870,67,8/1/2000,Harper Perennial -30294,Republic,Plato/C.D.C. Reeve,3.94,0872207366,9780872207363,eng,358,500,41,9/15/2004,Hackett Publishing Company Inc. -30296,Plato's Symposium,Plato/Seth Benardete/Allan Bloom,4.04,0226042758,9780226042756,eng,199,519,32,2/1/2001,University of Chicago Press -30298,The Symposium,Plato/Christopher Gill,4.04,0140446168,9780140446166,eng,90,174,10,10/1/1999,Penguin Classics -30300,The Last Days of Socrates,Plato/Hugh Tredennick/Harold Tarrant,4.08,0140449280,9780140449280,eng,256,1686,111,3/27/2003,Penguin Classics -30314,Embracing Love Vol. 4,Youka Nitta,4.34,1933440171,9781933440170,eng,208,594,9,1/1/2007,Be Beautiful -30316,Embracing Love Vol. 5,Youka Nitta,4.36,193344018X,9781933440187,eng,216,401,9,4/1/2007,Be Beautiful -30317,Embracing the Love of God: The Path and Promise of Christian Life,James Brian Smith/Richard J. Foster,4.26,0060667419,9780060667412,eng,192,63,8,6/28/1995,HarperOne -30318,Embracing Love Vol. 6,Youka Nitta,4.33,1933440198,9781933440194,eng,216,315,7,6/1/2008,Be Beautiful -30323,Jane Eyre,Charlotte Brontë/Margaret Smith/Sally Shuttleworth,4.12,0192839659,9780192839657,eng,452,684,50,2/1/2001,Oxford University Press -30331,In the Forests of the Night,Amelia Atwater-Rhodes,3.87,0440228166,9780440228165,eng,147,13452,508,2/2/2000,Laurel Leaf Library -30334,Hawksong (The Kiesha'ra #1),Amelia Atwater-Rhodes,4.15,044023803X,9780440238034,eng,243,19722,829,9/28/2004,Laurel Leaf -30335,Demon in My View,Amelia Atwater-Rhodes,4.04,0440228840,9780440228844,eng,192,10944,390,9/11/2001,Laurel Leaf -30336,Shattered Mirror,Amelia Atwater-Rhodes,4.03,0440229405,9780440229407,eng,240,9408,254,7/8/2003,Laurel Leaf -30337,Midnight Predator,Amelia Atwater-Rhodes,4.02,0440237971,9780440237976,eng,256,8039,177,12/9/2003,Laurel Leaf Library -30340,The Pound Era,Hugh Kenner,4.37,0520024273,9780520024274,eng,624,614,29,9/18/1973,University of California Press -30343,Ricochet,Sandra Brown,3.97,1416532358,9781416532354,eng,400,15225,544,1/2/2007,Simon & Schuster -30347,The Alibi,Sandra Brown,4.04,0446618675,9780446618670,eng,564,20164,523,11/1/2006,Hachette Books -30348,A Whole New Light,Sandra Brown,3.55,055329783X,9780553297836,eng,227,2955,203,8/26/2008,Bantam (Fanfare Imprint) -30349,Where There's Smoke,Sandra Brown,3.97,0446600342,9780446600347,eng,512,5861,230,5/1/1994,Grand Central Publishing (Formerly Warner Books) -30351,22 Indigo Place,Sandra Brown,3.63,0553290851,9780553290851,eng,200,2537,79,2/25/1997,Bantam (Fanfare) -30352,Led Astray (Hellraisers #1),Erin St. Claire/Sandra Brown,3.76,0778321584,9780778321583,eng,240,2647,143,2/22/2005,Mira Books -30353,Tidings of Great Joy,Sandra Brown,3.62,0553576003,9780553576009,eng,231,1707,74,11/2/1999,Bantam -30354,A Secret Splendor,Erin St. Claire/Sandra Brown,3.66,077832284X,9780778322849,eng,280,1328,32,2/28/2006,Mira Books -30355,Love Beyond Reason,Rachel Ryan/Sandra Brown,3.64,0446616834,9780446616836,eng,272,1822,90,4/1/2005,Grand Central Publishing -30357,Words of Silk,Erin St. Claire/Sandra Brown,3.56,0446614165,9780446614160,eng,224,2677,136,4/1/2005,Grand Central Publishing -30358,Two Alone,Erin St. Claire/Sandra Brown,3.70,0778324311,9780778324317,eng,282,2155,142,2/27/2007,Mira Books -30361,Not Even for Love,Erin St. Claire/Sandra Brown,3.49,044661291X,9780446612913,eng,208,1705,95,4/1/2004,Grand Central Publishing -30362,Charade,Sandra Brown,3.94,0446601853,9780446601856,en-US,496,6044,250,7/1/1995,Hachette Books -30363,Exclusive,Sandra Brown,3.97,0446604232,9780446604239,eng,496,5852,342,7/1/1997,Grand Central Publishing -30364,Send No Flowers (Bed & Breakfast #2),Sandra Brown,3.56,0553576011,9780553576016,eng,225,2592,80,2/29/2000,Bantam -30365,The Thrill of Victory,Erin St. Claire/Sandra Brown,3.62,1551666723,9781551666723,eng,240,1097,56,2/21/2003,MIRA -30366,Heaven's Price,Sandra Brown,3.54,0553571575,9780553571578,eng,240,1828,58,11/1/1995,Bantam (Fanfare Imprint) -30367,Riley in the Morning,Sandra Brown,3.44,9792234799,9789792234794,eng,224,2268,49,11/27/2008,Gramedia Pustaka Utama -30368,The Rana Look,Sandra Brown,3.51,0553576054,9780553576054,eng,256,2437,96,12/2/2003,Bantam -30370,Texas! Sage (Texas! Tyler Family Saga #3),Sandra Brown,4.02,0553295004,9780553295009,eng,352,6114,195,2/1/1992,Bantam -30371,Temperatures Rising,Sandra Brown,3.45,0553804081,9780553804089,eng,214,2059,80,11/28/2006,Bantam Books -30373,A Kiss Remembered,Erin St. Claire/Sandra Brown,3.47,0446612618,9780446612616,eng,224,3667,164,4/1/2003,Grand Central Publishing -30376,Adam's Fall (Mason Sisters #2),Sandra Brown,3.74,0553567683,9780553567687,eng,208,3065,94,11/27/2001,Bantam -30379,Seduction by Design,Erin St. Claire/Sandra Brown,3.56,0446603104,9780446603102,eng,224,2882,116,3/1/2002,Grand Central Publishing (Formerly Warner Books) -30380,Prime Time,Rachel Ryan/Sandra Brown,3.58,0446364290,9780446364294,eng,256,2005,60,9/1/1995,Grand Central Publishing -30382,Tiger Prince,Erin St. Claire/Sandra Brown,3.78,155166531X,9781551665313,eng,304,2275,75,9/24/1999,MIRA -30383,Best Kept Secrets,Sandra Brown,3.77,0446533289,9780446533287,eng,480,5805,298,11/3/2003,Hachette Books -30384,Tomorrow's Promise,Sandra Brown,3.71,1551666014,9781551666013,eng,304,1764,69,5/25/2000,MIRA -30385,Sweet Anger,Erin St. Claire/Sandra Brown,3.59,0446603082,9780446603089,eng,320,2288,86,1/1/1999,Vision -30386,Demon Rumm,Sandra Brown,3.35,0553576070,9780553576078,eng,230,3122,144,11/29/2005,Bantam -30387,Breakfast in Bed (Bed & Breakfast #1),Sandra Brown,3.54,0553571583,9780553571585,eng,240,53,6,11/4/1996,Fanfare -30390,Above and Beyond,Erin St. Claire/Sandra Brown,3.73,077832026X,9780778320265,eng,240,2149,87,2/23/2004,Mira Books -30391,Fanta C (Mason Sisters #1),Sandra Brown,3.62,0553562746,9780553562743,eng,256,2317,63,1/21/1997,Fanfare -30392,Relentless Desire,Sandra Brown,3.63,0515068705,9780515068702,eng,183,22,4,12/31/1983,Jove Books -30394,Sunny Chandler's Return,Sandra Brown,3.59,0553576062,9780553576061,eng,256,2973,138,11/23/2004,Bantam -30397,Sandra Brown: Three Complete Novels (Best Kept Secrets Mirror Image and Slow Heat in Heaven),Sandra Brown,4.21,0517077744,9780517077740,eng,784,343,5,4/14/1992,Wings -30398,The Devil's Own (Hellraiser #2),Erin St. Claire/Sandra Brown,3.78,1551667932,9781551667935,en-US,240,65,9,2/22/2001,MIRA -30399,The Switch,Sandra Brown,3.92,0749932554,9780749932558,eng,576,9295,478,9/6/2001,Piatkus Books -30403,Play Dirty,Sandra Brown,3.92,0743289358,9780743289351,eng,404,9552,627,8/14/2007,Simon & Schuster -30410,A Secret Splendor,Erin St. Claire/Sandra Brown,3.66,1551660954,9781551660950,eng,297,18,2,1/1/1996,Mira (Mills and Boon) -30411,Texas! Trilogy,Sandra Brown,4.29,0385424701,9780385424707,eng,600,949,39,4/1/1992,Doubleday Books -30413,Betrogen,Sandra Brown,3.92,3764501359,9783764501358,ger,512,5,0,2/1/2003,Blanvalet Verlag GmbH -30415,Tempest in Eden,Sandra Brown,3.48,0446616818,9780446616812,eng,229,1560,57,4/1/2005,Warner Books (NY) -30417,The Killing of Monday Brown,Sandra West Prowell,3.45,0553569694,9780553569698,eng,320,92,11,7/1/1996,Bantam -30423,Un nuevo amanecer,Sandra Brown/Delia Mateovich,3.98,1400001048,9781400001040,spa,560,3,1,1/22/2002,Plaza y Janes -30429,Fanta C (Loveswept #217),Sandra Brown,3.62,0553218360,9780553218367,eng,192,12,1,10/1/1987,Loveswept -30432,Anhelos ocultos,Laura Jordan/Sandra Brown/Camino Estañ Requeni,3.94,8401505534,9788401505539,spa,380,32,8,3/27/1996,Cisne -30446,Schöne Lügen,Rachel Ryan/Sandra Brown,3.60,3442354994,9783442354993,ger,255,13,1,9/1/2001,Goldmann -30458,Yesterday I Cried,Iyanla Vanzant,4.23,0684867486,9780684867489,en-US,304,2311,151,3/2/2000,Atria Books -30474,The Communist Manifesto,Karl Marx/Friedrich Engels/Gareth Stedman Jones,3.55,0140447571,9780140447576,eng,288,75488,2716,6/27/2002,Penguin Classics -30475,The Communist Manifesto and Other Revolutionary Writings: Marx Marat Paine Mao Gandhi and Others,Bob Blaisdell/Karl Marx/Jean-Paul Marat/Tom Paine/Mao Zedong/Mahatma Gandhi,3.85,0486424650,9780486424651,eng,284,311,18,1/15/2003,Dover Publications -30476,The Communist Manifesto with Related Documents,Karl Marx/Friedrich Engels/John E. Toews,3.55,0312157118,9780312157111,en-US,184,97,5,2/28/1999,Bedford/St. Martin's -30477,The Communist Manifesto,Karl Marx/Friedrich Engels/Phil Gasper,3.55,1931859256,9781931859257,eng,221,138,20,10/1/2005,Haymarket Books -30480,The Communist Manifesto,Karl Marx/Friedrich Engels,3.55,1599869950,9781599869957,en-US,88,138,18,12/26/2005,Filiquarian Publishing LLC. -30482,The Communist Manifesto and Other Writings,Karl Marx/Friedrich Engels/Martin Puchner,3.65,1593083750,9781593083755,eng,224,26,0,10/1/2005,Barnes Noble Classics -30488,The Communist Manifesto,Karl Marx/Friedrich Engels/Samuel Moore,3.55,0717802418,9780717802418,eng,48,733,55,6/1/1948,International Publishers (NYC) -30491,The Communist Manifesto (Great Ideas),Karl Marx/Gareth Stedman Jones/Friedrich Engels,3.55,014303751X,9780143037514,en-US,128,251,13,5/30/2006,Penguin -30510,Paula Spencer,Roddy Doyle,3.78,0670038164,9780670038169,en-US,281,1956,186,1/1/2007,Viking Books -30512,Paddy Clarke Ha Ha Ha,Roddy Doyle,3.76,2264022442,9782264022448,eng,307,17042,586,6/4/1998,Editions 10/18 -30515,Introducing Sartre (Introducing... S.),Philip Thody/Howard Read,3.58,1840466723,9781840466720,eng,176,53,9,4/24/2002,Icon Books -30517,Colonialism and Neocolonialism,Jean-Paul Sartre/Azzedine Haddour,3.79,041537846X,9780415378468,eng,252,137,11,3/29/2006,Routledge Classics -30518,Tête-à-Tête: Simone de Beauvoir and Jean-Paul Sartre,Hazel Rowley,4.11,0060520590,9780060520595,eng,432,108,16,10/4/2005,Harper -30523,Jean-Paul Sartre: (The Giants of Philosophy),John Compton/Charlton Heston,3.86,0786169427,9780786169429,eng,3,57,4,4/1/2006,Knowledge Products -30528,Observations on the Feeling of the Beautiful and Sublime,Immanuel Kant/John T. Goldthwait,3.64,0520240782,9780520240780,eng,124,435,24,1/15/2004,University of California Press -30529,A Philosophical Enquiry into the Origin of our Ideas of the Sublime and Beautiful,Edmund Burke/Adam Phillips,3.76,0192835807,9780192835802,eng,208,1239,54,11/19/1998,Oxford University Press -30535,American Sublime: Poems,Elizabeth Alexander,3.80,1555974325,9781555974329,eng,96,196,22,10/1/2005,Graywolf Press -30536,Beauty and the Contemporary Sublime,Jeremy Gilbert-Rolfe,3.56,1581150377,9781581150377,eng,180,39,5,12/1/1999,Allworth -30537,Cigarettes Are Sublime,Richard Klein,3.81,0822316412,9780822316411,en-US,232,138,18,1/20/1995,Duke University Press Books -30542,The Art of the Ridiculous Sublime: On David Lynch's Lost Highway,Slavoj Žižek/Marek Wieczorek,3.72,0295979259,9780295979250,eng,56,275,22,4/1/2000,University of Washington Press -30551,Why Orwell Matters,Christopher Hitchens,3.93,0465030505,9780465030507,eng,211,2852,188,9/11/2003,Basic Books -30557,Shooting an Elephant,George Orwell,4.12,0141187395,9780141187396,eng,368,7029,255,6/5/2003,Penguin -30561,Ape and Essence,Aldous Huxley,3.76,0929587782,9780929587783,eng,222,3733,197,8/25/1992,Ivan R. Dee Publisher -30562,Complete Essays 1 1920-25,Aldous Huxley/Robert S. Baker/James Sexton,4.33,1566633222,9781566633222,en-GB,480,16,2,10/30/2000,Ivan R. Dee Publisher -30567,The Mottled Lizard,Elspeth Huxley,4.01,014005958X,9780140059588,eng,334,311,29,3/25/1986,Penguin Books -30569,Complete Essays 4 1936-38,Aldous Huxley/Robert S. Baker/James Sexton,4.29,156663394X,9781566633949,en-US,416,7,2,11/5/2001,Ivan R. Dee -30574,Plato in 90 Minutes,Paul Strathern,3.23,1566631270,9781566631273,eng,89,515,63,9/1/1996,Ivan R. Dee Publisher -30575,The Atlantis Dialogue,Plato/Aaron Shepard/Benjamin Jowett,3.77,0938497154,9780938497158,en-GB,46,34,3,1/1/2001,Shepard Publications -30580,Cancer Ward,Aleksandr Solzhenitsyn/Nicholas Bethell/David Burg,4.21,0679601635,9780679601630,eng,536,79,10,6/13/1995,Modern Library -30585,Despair,Vladimir Nabokov,3.92,014118454X,9780141184548,eng,163,197,23,11/30/2000,Penguin Classics -30586,Cliffs of Despair: A Journey to Suicide's Edge,Tom Hunt,3.73,0375507159,9780375507151,en-US,256,70,12,12/18/2007,Random House -30587,Inconceivable: A Woman's Triumph Over Despair and Statistics,Julia Indichova/Christiane Northrup,3.83,0767908201,9780767908207,eng,224,170,25,10/9/2001,Harmony -30590,Diary of a Man in Despair,Friedrich Reck-Malleczewen/Paul Rubens/Richard J. Evans,4.24,1590175867,9781590175866,eng,264,34,5,2/12/2013,New York Review of Books -30591,Winston S. Churchill Volume VIII: 'Never Despair ' 1945-1965,Martin Gilbert,4.25,0395419182,9780395419182,eng,1438,19,1,9/1/1988,Houghton Mifflin -30593,Pnin,Vladimir Nabokov/David Lodge,3.90,1400041988,9781400041985,eng,143,13925,848,4/6/2004,Everyman's Library -30597,The Hunchback of Notre-Dame,Victor Hugo/Walter J. Cobb,4.00,0451527887,9780451527882,eng,510,140529,2558,4/10/2001,Signet Classics -30598,The Hunchback of Notre-Dame,Victor Hugo/Catherine Liu/Elizabeth McCracken,4.00,034547242X,9780345472427,en-US,534,140,22,11/2/2004,Modern Library -30602,The Art of the Hunchback of Notre Dame,Stephen Rebello/Walt Disney Company,4.44,078686334X,9780786863341,eng,192,7,1,11/21/1997,Disney Editions -30606,Art and Culture: Critical Essays,Clement Greenberg/Janice Horne,3.90,0807066818,9780807066812,eng,288,472,15,6/1/1971,Beacon Press -30616,Readings for Meditation and Reflection,C.S. Lewis/Walter Hooper,4.32,0060652853,9780060652852,eng,176,272,27,1/5/1996,HarperOne -30621,C.S. Lewis and the Catholic Church,Joseph Pearce,3.88,0898709792,9780898709797,eng,175,165,17,3/17/2004,Ignatius Press -30622,The Collected Letters of C.S. Lewis Volume 1: Family Letters 1905-1931,C.S. Lewis/Walter Hooper,4.36,0060727632,9780060727635,eng,1072,121,21,6/29/2004,HarperOne -30626,Letters to Children,C.S. Lewis/Lyle Wesley Dorsett/Marjorie Lamp Mead/Douglas Gresham,4.19,0805420436,9780805420432,eng,128,1634,134,3/31/1999,B&H Publishing Group -30629,Cartas del diablo a su sobrino,C.S. Lewis/Miguel Marias,4.22,006114004X,9780061140044,spa,144,409,54,3/14/2006,HarperOne -30633,The Four Loves,C.S. Lewis,4.14,0006280897,9780006280897,en-US,170,34681,1084,6/5/2002,HarperCollins Publishers Ltd -30634,What Christians Believe,C.S. Lewis,4.24,0060761539,9780060761530,en-US,98,566,73,2/22/2005,HarperOne -30635,C. S. Lewis: Life Works and Legacy,Bruce L. Edwards/Diana Pavlac Glyer,4.43,0275991164,9780275991166,eng,1416,6,0,4/30/2007,Praeger -30639,Mere Christianity: Abolition of Man (Bonus Feature),C.S. Lewis/Geoffrey Howard/Robert Whitefield/Robert Whitfield,4.32,0786174366,9780786174362,eng,6,43,6,5/1/2006,Blackstone Audiobooks -30645,The Art of Listening,Erich Fromm/Rainer Funk,4.12,0826411320,9780826411327,en-US,204,290,16,9/1/1998,Bloomsbury Academic -30646,Beyond the Chains of Illusion: My Encounter with Marx and Freud,Erich Fromm/Rainer Funk,4.07,082641897X,9780826418975,eng,152,285,20,12/17/2006,Bloomsbury / Continuum -30651,The Art of Loving by Erich Fromm: A True Story of a Japanese Woman,Lala Okamoto,1.67,4990327500,9784990327507,eng,227,3,2,10/31/2006,Intercultural Publishing -30652,Marx's Concept of Man,Erich Fromm/T.B. Bottomore,4.02,0826477917,9780826477910,en-US,224,556,36,12/9/2004,Bloomsbury Academic -30658,Meditations on First Philosophy,René Descartes/Donald A. Cress,3.71,0872201929,9780872201927,eng,59,16700,353,10/1/1993,Hackett Publishing Company Inc. -30659,Meditations,Marcus Aurelius/Martin Hammond/Albert Wittstock/Diskin Clay,4.23,0140449337,9780140449334,eng,303,76332,3206,4/27/2006,Penguin Books -30666,Gulliver's Travels,Jonathan Swift/YKids,3.57,9810549415,9789810549411,en-US,148,7,0,7/1/2007,YoungJin Singapore Pte. Ltd. -30671,The Sleepwalkers: A History of Man's Changing Vision of the Universe,Arthur Koestler/Herbert Butterfield,4.25,0140192468,9780140192469,en-US,624,713,67,6/5/1990,Arkana/Penguin -30673,Darkness at Noon,Arthur Koestler/Daphne Hardy,4.04,1416540261,9781416540267,eng,273,1307,161,10/17/2006,Scribner -30675,The Thirteenth Tribe,Arthur Koestler,3.93,0330250698,9780330250696,eng,224,9,3,9/9/1977,Picador -30676,The Act of Creation,Arthur Koestler,4.26,0140191917,9780140191912,en-US,752,365,24,12/7/1990,Arkana/Penguin -30677,The Ghost in the Machine,Arthur Koestler,4.00,0140191925,9780140191929,eng,400,472,33,12/7/1990,Arkana -30678,The Case of the Midwife Toad,Arthur Koestler,3.79,0394718232,9780394718231,en-GB,187,166,16,4/12/1973,Vintage -30679,The Invisible Writing,Arthur Koestler,4.31,0099490684,9780099490685,eng,544,115,16,9/1/2005,Vintage Classics -30680,Up in the Air,Walter Kirn,2.86,0385722370,9780385722377,eng,320,3504,490,9/24/2002,Anchor -30681,Thumbsucker,Walter Kirn,3.44,0385497091,9780385497091,eng,300,1203,111,10/19/1999,Broadway Books -30697,Crazy Lady!,Jane Leslie Conly,3.64,0064405710,9780064405713,eng,192,1510,100,1/19/1995,HarperCollins -30702,Be the Person You Want to Find: Relationship and Self-Discovery,Cheri Huber/June Shiver,4.25,0963625527,9780963625526,eng,228,278,22,9/1/1997,Keep It Simple Books -30705,Making a Change for Good: A Guide to Compassionate Self-Discipline,Cheri Huber,3.93,1590302087,9781590302088,eng,128,304,36,3/13/2007,Shambhala -30712,The Total Library: Non-Fiction 1922-1986,Jorge Luis Borges/Suzanne Jill Levine/Esther Allen,4.52,0141183020,9780141183022,eng,560,164,17,1/18/2001,Penguin Books Ltd -30713,Ficciones,Jorge Luis Borges/John Sturrock/Anthony Kerringan,4.45,0679422994,9780679422990,eng,192,424,54,5/25/1993,Everyman's Library -30733,Montaigne: Essays,Michel de Montaigne/J.M. Cohen,4.16,014017897X,9780140178975,eng,416,1214,72,7/1/1993,Penguin Books -30734,The Complete Works,Michel de Montaigne/Donald M. Frame,4.44,1400040213,9781400040216,eng,1392,166,13,4/29/2003,Everyman's Library -30735,The Complete Essays,Michel de Montaigne/M.A. Screech,4.24,0140446044,9780140446043,eng,1344,10657,290,2/25/1993,Penguin Classics -30739,On Friendship,Michel de Montaigne/M.A. Screech,3.73,0143036297,9780143036296,eng,128,50,6,9/6/2005,Penguin Books -30743,To America with Love: Letters from the Underground,Abbie Hoffman/Anita Hoffman,3.96,1888996285,9781888996289,eng,224,69,3,9/1/2000,Red Hen Pr -30755,The Stories (So Far),Deborah Eisenberg,4.00,0374524920,9780374524920,eng,496,209,19,3/13/1997,Farrar Straus and Giroux -30771,Hellsing Vol. 03 (Hellsing #3),Kohta Hirano,4.37,1593072023,9781593072025,en-US,164,4831,63,6/15/2004,Dark Horse Manga -30774,Hellsing Vol. 04 (Hellsing #4),Kohta Hirano,4.28,1593072597,9781593072599,eng,208,2596,56,9/21/2004,Dark Horse Manga -30786,Verserade tankar,Lennart Hellsing/Fibben Hald,3.00,9177129334,9789177129332,swe,128,1,0,9/1/1999,Alfabeta Bokförlag -30810,Reefer Madness: Sex Drugs and Cheap Labor in the American Black Market,Eric Schlosser,3.78,0618446702,9780618446704,eng,352,5330,353,4/1/2004,Mariner Books -30811,Feeding the Future: From Fat to Famine How to Solve the World's Food Crises,Andrew Heintzman/Evan Solomon/Eric Schlosser,3.48,0887847447,9780887847448,eng,336,2,0,9/20/2006,House of Anansi Press -30812,Chew on This: Everything You Don't Want to Know About Fast Food,Eric Schlosser/Charles Wilson,3.76,0618710310,9780618710317,eng,259,3745,841,5/10/2006,Houghton Mifflin -30816,Shaken (Left Behind: The Kids #23-25),Jerry B. Jenkins/Tim LaHaye/Chris Fabry,4.32,1414302681,9781414302683,eng,384,217,2,2/1/2005,Tyndale House Publishers -30818,The Rapture: In the Twinkling of an Eye (Before They Were Left Behind #3),Tim LaHaye/Jerry B. Jenkins,4.15,1414305818,9781414305813,en-GB,351,2855,114,2/1/2007,Tyndale House Publishers -30820,Kingdom Come: The Final Victory (Left Behind #13),Tim LaHaye/Jerry B. Jenkins,3.98,0842360611,9780842360616,eng,356,4148,177,4/3/2007,Tyndale House Publishers -30821,John's Story: The Last Eyewitness (The Jesus Chronicles #1),Tim LaHaye/Jerry B. Jenkins,3.94,0399153896,9780399153891,eng,310,1144,108,12/1/2006,Putnam Adult -30822,Silenced: The Wrath of God Descends (Underground Zealot #2),Jerry B. Jenkins,4.24,0842384111,9780842384117,eng,368,1532,40,3/1/2005,Tyndale House Publishers -30836,Restless Till We Rest in You: 60 Reflections from the Writings of St. Augustine (Saints Speak Today),Augustine of Hippo,4.67,1569550344,9781569550342,eng,158,6,1,12/31/1998,Servant Publications -30851,A Woman in Berlin: Eight Weeks in the Conquered City: A Diary,Anonymous/Philip Boehm/Hans Magnus Enzensberger,4.33,0312426119,9780312426118,eng,261,6232,713,7/11/2006,Picador -30852,The Woman Warrior,Maxine Hong Kingston,3.73,0679721886,9780679721888,eng,204,21189,1195,4/23/1989,Vintage Books USA -30855,A Woman in Jerusalem,A.B. Yehoshua/Hillel Halkin,3.43,0151012261,9780151012268,en-US,256,851,132,8/14/2006,Houghton Mifflin Harcourt -30856,The Kept Woman,Susan Donovan,3.81,0312939507,9780312939502,eng,384,4037,143,6/27/2006,St. Martin's Paperbacks -30859,My Woman His Wife,Anna J.,4.38,0975306626,9780975306628,en-US,260,971,65,9/1/2006,Urban Books -30861,Woman Hollering Creek and Other Stories,Sandra Cisneros,4.04,0679738568,9780679738565,eng,192,8107,379,3/3/1992,Vintage -30868,The Bean Trees (Greer Family #1),Barbara Kingsolver,3.97,0812474945,9780812474947,eng,232,120383,5290,3/1/1989,Perfection Learning -30889,The Crazyladies of Pearl Street,Trevanian,3.77,1400080371,9781400080373,eng,384,1063,157,6/6/2006,Broadway Books -30891,The Summer of Katya,Trevanian,3.99,1400098041,9781400098040,eng,288,2257,116,6/28/2005,Broadway Books -30892,The Main,Trevanian,3.86,1400098238,9781400098231,eng,352,920,32,7/26/2005,Broadway Books -30893,The Eiger Sanction (Jonathan Hemlock #1),Trevanian,4.06,1400098025,9781400098026,eng,336,10385,152,5/10/2005,Broadway Books -30913,Time to Learn: How to Create High Schools That Serve All Students,George H. Wood/Theodore R. Sizer,3.50,0325008086,9780325008080,en-US,216,8,2,8/1/2005,Heinemann Educational Books -30923,Scoop (Occupational Hazards #1),Rene Gutteridge,3.61,1400071577,9781400071579,eng,352,460,53,10/10/2006,WaterBrook -30933,Brideshead Revisited,Evelyn Waugh,4.00,0316926345,9780316926348,eng,351,79045,3083,1/30/1982,Back Bay Books -30934,Black Mischief,Evelyn Waugh,3.76,0316917338,9780316917339,eng,304,2421,132,8/30/2002,Back Bay Books -30937,The Complete Stories of Evelyn Waugh,Evelyn Waugh,3.99,0316926604,9780316926607,eng,640,765,57,9/20/2000,Back Bay Books -30938,Helena,Evelyn Waugh/George Weigel/Amy Welborn,3.60,082942122X,9780829421224,eng,264,772,82,3/1/2005,Loyola Classics -30941,Choo Choo (Carry Along Book & Cassette Favorites),Virginia Lee Burton,3.91,0395511682,9780395511688,eng,48,0,0,4/24/1989,Houghton Mifflin -30948,The Rise of Christianity,Rodney Stark,4.04,0060677015,9780060677015,eng,272,1363,151,5/9/1997,HarperOne -30949,The Rise of Christianity : A Sociologist Reconsiders History,Rodney Stark,4.04,0691027498,9780691027494,en-US,246,44,5,6/2/1996,Princeton University Press -30965,Grand Theft Auto: San Andreas Official Strategy Guide,Rick Barba,4.04,0744004292,9780744004298,eng,272,73,5,10/25/2004,BradyGames -30966,Rounding the Mark (Inspector Montalbano #7),Andrea Camilleri/Stephen Sartarelli,4.07,014303748X,9780143037484,eng,272,2598,164,7/25/2006,Penguin Books -30968,Excursion to Tindari (Inspector Montalbano #5),Andrea Camilleri/Stephen Sartarelli,4.03,014303460X,9780143034605,eng,304,3393,194,2/1/2005,Penguin Books -30969,Voice of the Violin (Inspector Montalbano #4),Andrea Camilleri/Stephen Sartarelli,4.03,0142004456,9780142004456,eng,249,3907,254,6/29/2004,Penguin -30971,Andreas Gursky,Andreas Gursky/Peter Galassi,4.22,0870700162,9780870700163,eng,196,70,4,7/2/2002,Museum of Modern Art -30976,Moon of the Spider (Diablo #4),Richard A. Knaak,3.95,0743471326,9780743471329,en-US,336,749,16,1/1/2006,Pocket Star -30977,The Black Road (Diablo #2),Mel Odom,3.67,0743426916,9780743426916,eng,360,1224,18,4/2/2002,Star Trek -30978,Legacy of Blood (Diablo #1),Richard A. Knaak,3.77,067104155X,9780671041557,eng,355,2120,68,5/1/2001,Pocket Books -30981,The Kingdom of Shadow (Diablo #3),Richard A. Knaak,3.93,0743426924,9780743426923,eng,339,1181,24,8/1/2002,Pocket Books/Star Trek -30982,Scales of the Serpent (Diablo: The Sin War #2),Richard A. Knaak,3.86,0743471237,9780743471237,eng,327,866,31,3/27/2007,Pocket Star -30985,El Escorpion: La Marca del Diablo: El Escorpion: The Mark of the Devil,Stephen Desberg/Enrico Marini,3.84,1594970009,9781594970009,spa,56,20,2,10/1/2004,Public Square Books -30992,Diablo II Ultimate Strategy Guide,Bart G. Farkas,3.81,0744001056,9780744001051,en-GB,288,31,4,10/31/2001,Vivendi -31004,El Diablo Cojuelo,Luis Vélez de Guevara,3.06,8437604826,9788437604824,spa,192,13,2,1/11/2007,Cátedra -31016,El diablo de la botella,Robert Louis Stevenson/Diana Castellanos/Eleonora Garcia Larralde,3.74,9580408556,9789580408550,spa,77,34,2,7/15/2018,Grupo Editorial Norma S.A. -31030,Diabolo: Volume 1,Kei Kusunoki/Kaoru Ohashi,3.46,1595322329,9781595322326,en-US,199,207,9,11/1/2004,TokyoPop -31031,Japan (Lonely Planet Guide),Chris Rowthorn/Ray Bartlett/Justin Ellis,4.05,1740599241,9781740599245,eng,812,736,20,10/1/2005,Lonely Planet -31034,Pink Box: Inside Japan's Sex Clubs,Joan Sinclair/James Farrer,4.11,0810992590,9780810992597,eng,192,260,32,10/1/2006,Harry N. Abrams -31040,Japan at War: An Oral History,Haruko Taya Cook/Theodore F. Cook,4.34,1565840399,9781565840393,eng,493,718,87,10/1/1993,New Press (NY) -31049,Sister Bernadette's Barking Dog: The Quirky History and Lost Art of Diagramming Sentences,Kitty Burns Florey,3.59,1933633107,9781933633107,eng,154,705,191,10/1/2006,Melville House Publishing -31050,A Three Dog Life,Abigail Thomas,3.74,0151012113,9780151012114,en-US,182,191,47,9/5/2006,Houghton Mifflin Harcourt -31054,For the Love of a Dog: Understanding Emotion in You and Your Best Friend,Patricia B. McConnell,4.33,0345477146,9780345477149,en-US,382,2132,132,8/29/2006,Ballantine Books -31067,Malcolm X Speaks: Selected Speeches and Statements,Malcolm X/George Breitman,4.46,0802132138,9780802132130,en-US,240,5018,69,1/11/1994,Grove Weidenfeld -31071,Martin and Malcolm and America: A Dream or a Nightmare?,James H. Cone,4.37,0883448246,9780883448243,en-US,358,1311,38,9/1/1992,Orbis Books -31072,Under the Volcano,Malcolm Lowry,3.79,0060955228,9780060955229,eng,397,17894,837,4/26/2000,Harper Perennial -31076,The New Knighthood: A History of the Order of the Temple,Malcolm Barber,3.84,0521558727,9780521558723,eng,441,126,7,9/29/1995,Cambridge University Press -31080,Malcolm X: A Graphic Biography,Andrew Helfer/Randy DuBurke,3.66,0809095041,9780809095049,eng,112,601,106,11/14/2006,Hill and Wang -31082,Who Are You?: 101 Ways of Seeing Yourself,Malcolm Godwin,3.48,0140196099,9780140196092,eng,224,263,26,1/1/2000,Penguin Books -31083,Bosnia: A Short History,Noel Malcolm,4.07,0330412442,9780330412445,eng,384,38,1,8/1/2002,Pan MacMillan -31084,The Other Boleyn Girl,Philippa Gregory,4.06,0743269837,9780743269834,eng,664,3111,375,11/9/2004,Atria Books -31087,The Last Boleyn,Karen Harper,4.05,0307237907,9780307237903,eng,592,9097,205,2/28/2006,Broadway Books -31088,The Rise and Fall of Anne Boleyn,Retha M. Warnicke,3.96,0521406773,9780521406772,eng,338,1336,39,7/26/1991,Cambridge University Press -31089,The Secret Diary of Anne Boleyn,Robin Maxwell,3.80,0684849690,9780684849690,eng,281,5221,299,5/28/1998,Atria Books -31092,The Other Boleyn Girl,Philippa Gregory,4.06,0739427113,9780739427118,eng,664,1165,105,4/21/2001,Scribner -31093,Lila: An Inquiry Into Morals (Phaedrus #2),Robert M. Pirsig,3.78,0553299611,9780553299618,eng,480,5317,291,11/1/1992,Bantam -31095,Lila's Child: An Inquiry into Quality,Robert M. Pirsig/Dan Glover,3.58,1403356203,9781403356208,en-GB,600,54,5,1/14/2003,1st Book Library -31098,Swapping Lives,Jane Green,3.58,0670034800,9780670034802,eng,410,24513,916,6/13/2006,Viking Adult -31099,Babyville,Jane Green,3.62,0767912241,9780767912242,en-US,464,30815,544,3/23/2004,Broadway Books -31100,To Have and to Hold,Jane Green,3.63,0767912276,9780767912273,eng,352,22864,445,3/1/2005,Broadway Books -31101,Mr. Maybe,Jane Green,3.45,0767905202,9780767905206,eng,368,87217,832,6/11/2002,Broadway Books -31102,Straight Talking,Jane Green,3.64,0141011513,9780141011516,en-GB,304,234,12,9/5/2002,Penguin -31103,Spellbound,Jane Green,3.63,0140295941,9780140295948,en-US,439,271,30,12/4/2003,Penguin Books Ltd -31104,Babyville,Jane Green,3.62,0767912233,9780767912235,en-US,438,153,8,5/27/2003,Broadway Books -31105,This Christmas,Jane Green/Jennifer Coburn/Liz Ireland,3.19,0821778064,9780821778067,eng,480,1153,92,10/1/2009,Zebra -31107,Bookends,Jane Green,3.72,0767907809,9780767907804,eng,358,226,31,6/11/2002,Broadway Books -31113,Krik? Krak!: Récits,Edwidge Danticat/Nicole Tisserand,4.12,2857044828,9782857044826,fre,240,79,10,7/4/1997,Pygmalion Editions -31114,Homelands: Women’s Journeys Across Race Place and Time,Patricia Justine Tumang/Edwidge Danticat/Jenesha de Rivera,4.43,158005188X,9781580051880,eng,343,42,5,12/21/2006,Seal Press -31115,The Farming of Bones,Edwidge Danticat,4.07,0140280499,9780140280494,eng,312,6757,612,9/1/1999,Penguin Books -31116,The Dew Breaker,Edwidge Danticat,3.80,1400034299,9781400034291,eng,244,5891,584,3/8/2005,Vintage -31122,I Capture the Castle,Dodie Smith,4.00,0312181108,9780312181109,eng,343,65013,5954,3/31/1998,Wyatt Book -31134,Conversations with Ernest Hemingway (Literary Conversations),Ernest Hemingway/Matthew J. Bruccoli,4.15,0878052739,9780878052738,eng,204,64,6,12/1/1986,University Press of Mississippi -31153,The Rapture: Who Will Face the Tribulation,Tim LaHaye,3.50,0736909524,9780736909525,eng,256,4,1,3/1/2002,Harvest House Publishers -31154,The Regime: Evil Advances (Before They Were Left Behind #2),Tim LaHaye/Jerry B. Jenkins,4.11,141430577X,9781414305776,en-US,391,3657,107,4/1/2006,Tyndale House Publishers -31157,The Rising: Antichrist is Born (Before They Were Left Behind #1),Tim LaHaye/Jerry B. Jenkins,4.20,0842361936,9780842361934,eng,400,14475,194,10/1/2005,Tyndale House Publishers -31160,The Earth and Its Peoples: Volume II,Richard W. Bulliet/Daniel R. Headrick/David Northrup/Lyman L. Johnson/Pamela Kyle Crossley/Steven W. Hirsch/Steven Hirsch,4.07,0618471162,9780618471164,eng,34,9,0,5/9/2005,Cengage Learning -31166,The Earth and Its Peoples: A Global History Volume C: Since 1750,Richard W. Bulliet/Pamela Kyle Crossley/Steven Hirsch,2.00,0618427694,9780618427697,eng,370,1,1,2/9/2004,Cengage Learning -31171,The Life of Charlotte Brontë,Elizabeth Gaskell/Angus Easson,3.91,0192838059,9780192838056,eng,587,5549,129,6/20/2002,Oxford University Press -31172,The Juvenilia of Jane Austen and Charlotte Brontë,Jane Austen/Charlotte Brontë/Frances Beer,3.86,0140432671,9780140432671,eng,400,217,7,10/7/1986,Penguin Books -31174,Selected Works of the Brontë Sisters: Jane Eyre / Villette / Wuthering Heights / Agnes Grey / The Tenant of Wildfell Hall,Charlotte Brontë/Emily Brontë/Anne Brontë,4.38,1840220600,9781840220605,eng,1488,96,6,1/5/1998,Wordsworth Classics -31177,Morgan's Passing,Anne Tyler,3.78,0449911721,9780449911723,eng,346,4035,108,8/27/1996,Ballantine Books -31178,Back When We Were Grownups,Anne Tyler,3.52,0345477243,9780345477248,eng,336,15040,1239,10/26/2004,Ballantine Books -31180,Celestial Navigation,Anne Tyler,3.79,0449911802,9780449911808,eng,288,3403,159,8/27/1996,Ballantine Books -31181,Breathing Lessons,Anne Tyler,3.66,0345485599,9780345485595,eng,350,20474,1140,9/26/2006,Ballantine Books -31182,The Tin Can Tree,Anne Tyler,3.60,0449911896,9780449911891,eng,264,2384,91,8/27/1996,Ballantine Books -31185,Inside the Mind of Gideon Rayburn (Midvale Academy #1),Sarah Miller,3.39,0312333757,9780312333751,eng,289,1072,90,5/2/2006,St. Martin's Griffin -31186,Patience & Sarah,Isabel Miller/Emma Donoghue,3.90,1551521911,9781551521916,en-US,225,3833,166,9/1/2005,Arsenal Pulp Press -31196,The Razor's Edge,W. Somerset Maugham,4.19,1400034205,9781400034208,eng,314,29486,2137,9/9/2003,Vintage International -31200,Razor's Edge: The Unofficial History of the Falklands War,Hugh Bicheno/Richard Holmes,3.79,0753821869,9780753821862,eng,400,42,4,3/1/2007,Phoenix -31204,Tom Jones,Henry Fielding/Doreen Roberts,3.74,1853260215,9781853260216,eng,734,564,48,5/5/1992,Wordsworth Editions -31208,Clarissa Or The History of a Young Lady,Samuel Richardson/Sheila Ortiz Taylor,3.37,0451529790,9780451529794,eng,576,56,8,10/4/2005,Signet Classics -31218,The Hitchhiker's Guide to the Galaxy: The Quintessential Phase (Hitchhiker's Guide: Radio Play #5),Douglas Adams/Dirk Maggs/Simon Jones/Geoffrey McGivern/Mark Wing-Davey/Susan Sheridan/Sandra Dickinson/Stephen Moore/William Franklyn/Rula Lenska/Sam Burke,4.37,0563504072,9780563504078,eng,3,61,1,6/20/2005,BBC Audiobooks -31219,The Secret of Shambhala: In Search of the Eleventh Insight (Celestine Prophecy #3),James Redfield,4.00,0446676489,9780446676489,eng,256,4181,131,11/1/2001,Grand Central Publishing -31220,The Celestine Vision: Living the New Spiritual Awareness,James Redfield,4.07,0446675237,9780446675239,eng,288,7032,58,11/1/1999,Grand Central Publishing -31222,The Purpose of Your Life: Finding Your Place In The World Using Synchronicity Intuition And Uncommon Sense,Carol Adrienne/James Redfield,3.76,0688166253,9780688166250,eng,320,218,27,3/17/1999,William Morrow Paperbacks -31226,The Janson Directive (Paul Janson #1),Robert Ludlum,3.86,0312989385,9780312989385,eng,693,7281,259,10/19/2003,St. Martin's Paperbacks -31227,The Moscow Vector (Covert-One #6),Patrick Larkin/Robert Ludlum,3.98,0312990715,9780312990718,eng,464,6321,80,2/7/2006,St. Martin's Paperbacks -31229,The Ambler Warning,Robert Ludlum,3.72,0312990693,9780312990695,eng,632,9289,361,11/1/2006,St. Martin's Paperbacks -31235,Historical Romances: The Prince and the Pauper / A Connecticut Yankee in King Arthur’s Court / Personal Recollections of Joan of Arc,Mark Twain/Susan K. Harris,4.38,0940450828,9780940450820,eng,1050,296,13,8/1/1994,Library of America -31242,Bleak House,Charles Dickens/Nicola Bradbury/Hablot Knight Browne,4.01,0143037617,9780143037613,eng,1017,80104,2440,1/6/2006,Penguin Books -31244,Our Mutual Friend,Charles Dickens,4.07,0375761144,9780375761140,eng,801,22294,953,9/10/2002,Modern Library -31247,A Christmas Carol and Other Christmas Books,Charles Dickens/Robert Douglas-Fairhurst,3.96,0192806947,9780192806949,eng,438,156,20,11/1/2007,Oxford University Press USA -31250,Little Dorrit,Charles Dickens/Stephen J. Wall/Helen Small,3.99,0141439963,9780141439969,eng,1021,38955,1044,9/25/2003,Penguin Classics -31253,Baseball: a Literary Anthology,Nicholas Dawidoff/Ernest Lawrence Thayer/Jacques Barzun/Robert Frost/John Updike/Leroy Satchel Paige/Bill Veeck/Murray Kempton/Jimmy Breslin/Marianne Moore/Gay Talese/Tallulah Bankhead/Albert G. Spalding/Nelson Algren/William Carlos Williams/James Weldon Johnson/Thomas Wolfe/James Thurber/Philip Roth/Jim Bouton/Dave Frishberg/Roger Kahn/Roger Angell/Damon Runyon/George Plimpton/A. Bartlett Giamatti/Amiri Baraka/Annie Dillard/Stephen Jay Gould/Stephen King/Richard Ford/Don DeLillo/Lawrence S. Ritter/Ring Lardner/Carl Sandburg/Heywood Broun/Bernard Malamud/Red Smith,4.24,193108209X,9781931082099,eng,733,182,14,3/4/2002,Library of America -31259,The Bourne Ultimatum (Jason Bourne #3),Robert Ludlum,4.05,0752858491,9780752858494,eng,725,52976,702,5/6/2004,Orion -31260,The Sigma Protocol,Robert Ludlum,3.80,0312982518,9780312982515,eng,662,9567,252,10/13/2002,St. Martin's Paperbacks -31262,The Road to Gandolfo,Robert Ludlum/Michael Shepherd,3.64,0553271091,9780553271096,eng,320,5141,160,2/1/1992,Bantam -31267,The Arctic Event (Covert-One #7),James H. Cobb/Robert Ludlum,4.01,0446699071,9780446699075,eng,390,4414,127,9/26/2007,Warner Books -31270,The Altman Code (Covert-One #4),Gayle Lynds/Robert Ludlum/Don Leslie,3.95,1593978863,9781593978860,eng,0,5,1,9/30/2005,Audio Renaissance -31271,The Matlock Paper,Robert Ludlum,3.88,0752858637,9780752858630,eng,352,12533,80,8/24/2005,Orion Books -31294,Fat Pig,Neil LaBute,3.56,057121150X,9780571211500,en-US,112,2356,103,11/29/2004,Farrar Straus and Giroux -31299,Hickory Dickory Dock (Hercule Poirot #32),Agatha Christie/Hugh Fraser,3.75,1572705647,9781572705647,eng,196,13515,368,12/7/2006,AudioGO -31300,A Caribbean Mystery (Miss Marple #10),Agatha Christie,3.80,0451199928,9780451199928,eng,224,18590,770,3/1/2000,Signet -31302,Five Complete Miss Marple Novels: The Mirror Crack'd / A Caribbean Mystery / Nemesis / What Mrs. McGillicuddy Saw! / The Body in the Library,Agatha Christie,4.39,0517035804,9780517035801,eng,650,116,6,7/2/1990,Avenel Books -31303,At Bertram's Hotel,Agatha Christie,3.70,0451199936,9780451199935,eng,224,239,15,3/1/2000,Signet -31304,Nemesis (Miss Marple #12),Agatha Christie,3.85,0451200187,9780451200181,eng,224,18896,771,5/1/2000,Signet -31305,A Pocket Full of Rye: A BBC Radio 4 Full-Cast Dramatisation,Agatha Christie/Michael Bakewell/June Whitfield/Nicky Henson/Derek Waring/Natasha Pyne,3.86,0792737369,9780792737360,eng,2,38,3,4/1/2014,Blackstone Audiobooks -31306,Murder at the Vicarage (Miss Marple #1),Agatha Christie,4.05,0451201159,9780451201157,eng,256,462,55,9/1/2000,Signet -31307,Miss Marple Omnibus Vol. 3 (Murder at the Vicarage / Nemesis / Sleeping Murder / At Bertram's Hotel),Agatha Christie,4.32,0006499619,9780006499619,eng,688,138,5,7/10/1997,Harper Collins -31312,The Dance of Anger,Harriet Lerner,4.06,006074104X,9780060741044,eng,239,16897,619,5/3/2005,William Morrow & Company -31313,Dance of the Gods (Circle Trilogy #2),Nora Roberts,4.15,0515141666,9780515141665,eng,321,25065,576,10/3/2006,Jove -31314,Barnyard Dance,Sandra Boynton,4.25,1563054426,9781563054426,en-US,24,21265,480,10/1/1993,Workman Publishing Company -31316,The Dance of Intimacy: A Woman's Guide to Courageous Acts of Change in Key Relationships,Harriet Lerner,4.07,006091646X,9780060916466,eng,255,7368,185,1/1/1989,William Morrow Paperbacks -31318,4:50 from Paddington / A Pocket Full of Rye (BBC Presents: Two Miss Marple Dramas),Agatha Christie,3.94,0553525638,9780553525632,eng,3,34,3,5/4/1999,Random House Audio -31331,Blood Canticle (The Vampire Chronicles #10),Anne Rice,3.72,0099460173,9780099460176,eng,400,19036,325,11/4/2004,Arrow -31332,The Vampire Armand (The Vampire Chronicles #6),Anne Rice,3.76,0345434803,9780345434807,eng,457,59191,710,10/3/2000,Ballantine Books -31333,Violin,Anne Rice,3.28,8466302204,9788466302203,eng,289,15886,405,1/1/2002,Distribooks -31335,Cry to Heaven,Anne Rice,3.85,0345396936,9780345396938,eng,566,18067,558,4/1/1995,Ballantine Books -31340,Lasher (Lives of the Mayfair Witches #2),Anne Rice,3.86,0099471434,9780099471431,eng,400,49367,661,11/4/2004,Arrow Books -31341,Blood And Gold (The Vampire Chronicles #8),Anne Rice,3.89,0099271494,9780099271499,eng,752,28012,436,11/7/2002,Arrow -31345,Hot Stuff (Cate Madigan #1),Janet Evanovich/Leanne Banks,3.74,0312941463,9780312941468,en-US,281,9285,404,4/3/2007,St. Martin's Press -31350,Lovelock (Mayflower Trilogy #1),Orson Scott Card/Kathryn H. Kidd,3.47,031287751X,9780312877514,en-US,288,2150,85,2/1/2001,St. Martins Press-3PL -31351,Treasure Box,Orson Scott Card,3.33,006109398X,9780061093982,eng,384,3646,189,10/1/1997,Harper -31352,Songmaster,Orson Scott Card,3.74,0312876629,9780312876623,en-US,352,6399,286,12/6/2002,Orb Books -31353,Stone Tables,Orson Scott Card,3.87,1573456632,9781573456630,eng,448,1726,133,3/1/2000,Shadow Mountain -31356,William Faulkner: The Sound and the Fury and as I Lay Dying: Essays Articles Reviews,Nicolas Tredell,3.96,023112189X,9780231121897,en-US,192,4,0,12/27/2000,Columbia University Press -31358,Hart's Hope,Orson Scott Card,3.47,0425058190,9780425058190,eng,261,24,4,2/1/1983,Berkley -31360,Children of the Mind (Ender's Saga #4),Orson Scott Card,3.76,0765304740,9780765304742,eng,370,84877,1989,8/24/2002,Tor Books -31361,Maps in a Mirror: The Short Fiction of Orson Scott Card,Orson Scott Card,4.01,0765308401,9780765308405,eng,675,2940,121,1/1/2004,Orb Books -31363,How to Write Science Fiction & Fantasy,Orson Scott Card,3.90,158297103X,9781582971032,eng,140,3408,264,9/15/2001,Writer's Digest Books -31364,What Came Before He Shot Her (Inspector Lynley #14),Elizabeth George,3.56,0060545623,9780060545628,eng,560,6669,668,10/17/2006,Harper -31365,With No One as Witness (Inspector Lynley #13),Elizabeth George,4.04,0060545615,9780060545611,eng,784,9952,529,2/28/2006,Harper -31366,Deception on His Mind (Inspector Lynley #9),Elizabeth George,4.05,0553575090,9780553575095,eng,716,8028,289,10/6/1998,Bantam Books -31371,Becoming a Woman of Beauty and Strength: Esther,Elizabeth George,4.27,0736904891,9780736904896,eng,160,80,14,1/1/2001,Harvest House Publishers -31373,In Pursuit of the Proper Sinner (Inspector Lynley #10),Elizabeth George,4.10,0553575104,9780553575101,eng,718,10608,295,11/31/2000,Bantam Books -31378,A Woman's High Calling Growth and Study Guide,Elizabeth George,4.15,0736904948,9780736904940,eng,160,13,1,8/15/2001,Harvest House Publishers -31382,Living with Passion and Purpose: Luke (Woman After God's Own Heart),Elizabeth George,4.00,0736908161,9780736908160,eng,160,22,4,9/15/2005,Harvest House Publishers -31384,Loving God with All Your Mind,Elizabeth George,4.43,0736913823,9780736913829,en-US,304,1488,77,1/1/2005,Harvest House Publishers -31386,Ariel Sharon: A Life,Nir Hefez/Gadi Bloom/Mitch Ginsburg,3.72,1400065879,9781400065875,en-US,490,40,6,10/24/2006,Random House Inc. -31389,Life Management for Busy Woman: Growth and Study Guide,Elizabeth George,4.53,0736910190,9780736910194,en-GB,166,14,1,7/1/2002,Harvest House Publishers -31401,A Wife After God's Own Heart Growth and Study Guide,Elizabeth George,4.69,0736911685,9780736911689,eng,160,9,1,1/1/2004,Harvest House Publishers -31414,Lover of Unreason: Assia Wevill Sylvia Plath's Rival and Ted Hughes' Doomed Love,Yehuda Koren/Eilat Negev,3.92,0786718617,9780786718610,eng,280,639,75,12/26/2006,Da Capo Press -31420,The Journals of Sylvia Plath,Sylvia Plath/Karen V. Kukil,4.31,0571205216,9780571205219,eng,752,106,9,6/13/2013,Faber & Faber -31421,Letters Home,Sylvia Plath,4.20,0571201156,9780571201150,eng,502,2373,63,1/1/1999,Faber & Faber -31434,The Poetry of Sylvia Plath,Claire Brennan,4.25,0231124279,9780231124270,eng,202,27,0,8/29/2001,Columbia University Press -31437,Black Boy,Richard Wright/Edward P. Jones,4.05,0060834005,9780060834005,en-US,432,88,12,11/29/2005,Harper -31441,Angry Black White Boy,Adam Mansbach,3.55,1400054877,9781400054879,eng,352,614,77,3/8/2005,Broadway Books -31442,Bad Boys In Black Tie (Watson Brothers #3),Lori Foster/Erin McCarthy/Morgan Leigh,3.73,0758207743,9780758207746,eng,278,2164,70,5/1/2004,Brava -31456,The Twits,Roald Dahl/Quentin Blake,3.96,0141318309,9780141318301,eng,96,98823,2552,6/24/2004,Puffin Books -31462,Far from the Madding Crowd,Thomas Hardy/Suzanne Keen,3.94,0451528565,9780451528568,eng,400,340,33,10/1/2002,Signet Classics -31463,Far From the Madding Crowd,Thomas Hardy/Rosemarie Morgan/Shannon Russell,3.94,0141439653,9780141439655,eng,433,104912,3811,2/27/2003,Penguin Books -31465,Far From the Madding Crowd,Thomas Hardy/Suzanne B. Falck-Yi/Linda M. Shires,3.94,019280149X,9780192801494,eng,496,112,17,11/14/2002,Oxford University Press -31466,Far from the Madding Crowd,Thomas Hardy,3.94,0140620478,9780140620474,en-GB,374,320,42,3/31/1994,Penguin Books -31472,Middlemarch: An Authoritative Text Backgrounds Reviews and Criticism,George Eliot/Bert G. Hornback,3.96,0393092100,9780393092103,eng,578,47,10,9/1/1977,W. W. Norton & Company -31474,Slaughterhouse: The Shocking Story of Greed Neglect And Inhumane Treatment Inside the U.S. Meat Industry,Gail A. Eisnitz,4.35,1591024501,9781591024507,en-US,328,1250,144,11/1/2006,Prometheus Books -31476,A Dance At The Slaughterhouse (Matthew Scudder #9),Lawrence Block,4.18,0380813734,9780380813735,eng,294,3351,147,7/3/2000,Harper Paperbacks -31478,Slaughterhouse Blues: The Meat and Poultry Industry in North America,Donald D. Stull/Michael J. Broadway/Eric Schlosser,3.46,0534613039,9780534613037,en-US,172,27,1,4/17/2003,Wadsworth Publishing Company -31481,Inky The Indigo Fairy (Rainbow Magic #6),Daisy Meadows/Georgie Ripper,3.79,043974685X,9780439746854,en-US,80,2042,59,1/1/2006,Scholastic Paperbacks -31482,Sunny The Yellow Fairy (Rainbow Magic #3),Daisy Meadows/Georgie Ripper,3.82,0439744660,9780439744669,en-US,67,2364,67,7/1/2005,Little Apple -31483,Sky The Blue Fairy (Rainbow Magic #5),Daisy Meadows/Georgie Ripper,3.83,0439746841,9780439746847,en-US,80,2267,82,11/1/2005,Scholastic Paperbacks -31484,Heather The Violet Fairy (Rainbow Magic #7),Daisy Meadows/Georgie Ripper,3.86,0439746868,9780439746861,en-US,80,2263,82,2/1/2006,Scholastic Paperbacks -31486,Ruby the Red Fairy (Rainbow Magic #1),Daisy Meadows/Georgie Ripper,3.84,043973861X,9780439738613,en-US,65,4334,319,5/1/2005,Scholastic Inc. -31487,Unweaving the Rainbow: Science Delusion and the Appetite for Wonder,Richard Dawkins,4.02,0618056734,9780618056736,eng,352,9377,189,4/5/2000,Mariner Books -31488,The Rainbow Goblins,Ul De Rico,4.42,0500277591,9780500277591,eng,32,1417,149,6/17/1978,Thames Hudson -31490,The Serpent and the Rainbow,Wade Davis,3.91,0684839296,9780684839295,en-US,304,3373,293,8/5/1997,Simon Schuster -31491,The Rainbow,D.H. Lawrence/Daphne Merkin,3.69,0451530306,9780451530301,eng,544,15840,462,5/5/2009,Signet -31493,Standing in the Rainbow (Elmwood Springs #2),Fannie Flagg,4.04,0345452887,9780345452887,eng,560,13592,897,8/3/2004,Ballantine Books -31502,The Scarlet Pimpernel,Emmuska Orczy/Margaret Brantley,4.07,0743487745,9780743487740,en-US,358,348,67,7/1/2004,Simon Schuster -31505,Adventures of the Scarlet Pimpernel,Emmuska Orczy,4.03,0899664598,9780899664590,eng,256,15,0,12/1/1983,Buccaneer Books -31507,Love's Enduring Promise (Love Comes Softly #2),Janette Oke,4.19,0764228498,9780764228490,eng,239,10835,311,11/1/2003,Bethany House Publishers -31548,Of Human Bondage,W. Somerset Maugham/Benjamin DeMott/Maeve Binchy,4.13,0451530179,9780451530172,eng,684,37531,2201,1/2/2007,Signet -31555,Phantoms in the Brain: Probing the Mysteries of the Human Mind,V.S. Ramachandran/Sandra Blakeslee/Oliver Sacks,4.26,0688172172,9780688172176,eng,352,15190,532,8/18/1999,William Morrow Paperbacks -31569,Mangoes & Curry Leaves: Culinary Travels Through the Great Subcontinent,Jeffrey Alford/Naomi Duguid,4.18,1579652522,9781579652524,eng,416,631,23,11/1/2005,Artisan -31570,Curry: A Tale of Cooks and Conquerors,Lizzie Collingham,3.90,0195172418,9780195172416,eng,315,753,111,2/6/2006,Oxford University Press USA -31573,50 Great Curries of India,Camellia Panjabi,4.15,1904920357,9781904920359,eng,224,209,29,12/30/2005,Kyle Books -31578,Curries Without Worries,Sudha Koul/Warner Books,3.93,0446670782,9780446670784,eng,160,35,4,3/1/1996,Grand Central Publishing -31580,In Search of Duende,Federico García Lorca/Norman Thomas di Giovanni,4.30,0811213765,9780811213769,eng,99,616,36,4/17/1998,New Directions -31582,The Selected Poems of Federico García Lorca,Federico García Lorca,4.32,0811200914,9780811200912,mul,180,236,23,6/1/1955,New Directions Publishing Corporation -31591,Lorca & Jimenez: Selected Poems,Federico García Lorca/Juan Ramón Jiménez/Robert Bly,4.34,0807062138,9780807062135,eng,208,114,8,4/30/1997,Beacon Press -31607,Also sprach Zarathustra: Ein Buch für Alle und Keinen.,Friedrich Nietzsche,4.06,337901706X,9783379017060,ger,371,2,0,7/1/2000,Reclam Leipzig -31611,Seminar on Nietzsche's Zarathustra,C.G. Jung/James L. Jarrett,4.38,0691017387,9780691017389,eng,352,19,2,11/23/1997,Princeton University Press -31615,The Polar Express,Chris Van Allsburg,4.30,061861169X,9780618611690,en-US,32,88,13,10/19/2005,HMH Books for Young Readers -31619,Trip To The North Pole (The Polar Express: The Movie),Ellen Weiss/Doyle Partners/Robert Zemeckis,3.62,061847790X,9780618477906,eng,128,55,7,10/12/2004,HMH Books for Young Readers -31623,Blow Fly (Kay Scarpetta #12),Patricia Cornwell,3.77,0425198731,9780425198735,eng,467,31942,732,9/7/2004,Berkley -31626,The Gift of the Magi and Other Short Stories,O. Henry,4.15,0486270610,9780486270616,eng,96,4616,133,2/5/1992,Dover Publications -31628,James and the Giant Peach,Roald Dahl/Nancy Ekholm Burkert,4.01,0553150324,9780553150322,eng,154,215,16,1/1/1978,Bantam Skylark -31637,Ten Short Stories Book & Cd Pack (Penguin Student Editions),Roald Dahl,3.84,0140817786,9780140817782,eng,208,9,0,3/30/2000,Penguin Classics -31638,The Ultramarines Omnibus (Ultramarines #1-3),Graham McNeill,3.97,1844164039,9781844164035,eng,768,1691,67,12/19/2008,Games Workshop -31641,Star Wars Omnibus: X-Wing Rogue Squadron Vol. 2,Michael A. Stackpole/Jan Strnad/Ryder Windham/Jordi Ensign/John Nadeau/Gary Erskine,3.88,1593076193,9781593076191,eng,288,325,12,10/24/2006,Dark Horse Comics -31644,The Soul Drinkers Omnibus (Soul Drinkers #1-3),Ben Counter,3.77,1844164160,9781844164165,eng,767,790,37,12/26/2006,Games Workshop(uk) -31647,James and the Giant Peach,Roald Dahl/Quentin Blake,4.01,0141311355,9780141311357,eng,160,1251,91,4/5/1998,Puffin -31648,James and the Giant Peach: a Play,Richard R. George/Roald Dahl,4.00,0142407917,9780142407912,en-GB,91,344,22,2/1/2007,Puffin Books -31649,James & The Giant Peach (Disney's),Roald Dahl/Karey Kirkpatrick/Lane Smith,4.03,0140382976,9780140382976,eng,48,1073,32,7/4/1996,Puffin -31659,The Progress of Love,Alice Munro,4.14,0375724702,9780375724701,eng,320,2128,115,12/12/2000,Vintage -31669,A Memoir of Jane Austen and Other Family Recollections,J.E. Austen Leigh/Caroline Austen/Henry Austen/Anna Austen Lefroy/Kathryn Sutherland,3.83,0192840746,9780192840745,eng,352,892,33,12/5/2002,Oxford University Press -31670,The Jane Austen Cookbook,Maggie Black/Deirdre Le Faye,3.93,0771014171,9780771014178,eng,128,275,26,5/10/2002,McClelland & Stewart -31672,The Complete Novels,Jane Austen/Karen Joy Fowler,4.55,0143039504,9780143039501,eng,1278,425,39,3/28/2006,Penguin Classics -31673,The Cambridge Companion to Jane Austen,Edward Copeland/Juliet McMaster,4.09,0521498678,9780521498678,en-US,251,320,21,5/13/1997,Cambridge University Press -31676,The Man Who Loved Jane Austen (The Man Who Loved Jane Austen #1),Sally Smith O'Rourke,3.37,075821037X,9780758210371,eng,303,1745,229,4/1/2006,Kensington -31678,Jane Austen: A Life,Carol Shields,3.85,0143035169,9780143035169,eng,192,2279,173,5/31/2005,Penguin Books -31692,The Complete Novels of Jane Austen,Jane Austen,4.55,1840220554,9781840220551,eng,1431,924,28,1/5/2005,Wordsworth Editions -31693,Persuasion,Jane Austen/Gillian Beer,4.14,0141439688,9780141439686,eng,325,5236,544,4/29/2003,Penguin Classics -31694,The History of England,Jane Austen/Cassandra Austen/Deirdre Le Faye/A.S. Byatt,3.89,1565120558,9781565120556,eng,60,991,88,1/10/1993,Algonquin Books -31695,Jane and the Wandering Eye (Jane Austen Mysteries #3),Stephanie Barron,3.86,0553578170,9780553578171,eng,320,1999,112,11/3/2009,Bantam -31698,Dante: Poet of the Secular World,Erich Auerbach/Ralph Manheim/Michael Dirda,4.25,1590172191,9781590172193,eng,202,169,13,1/16/2007,NYRB Classics -31722,Me Alquilo Para Soñar (Taller de Guión #62),Gabriel García Márquez,3.83,1400092965,9781400092963,spa,224,141,17,3/2/2004,Debolsillo -31728,Silent Running,James F. Calvert,4.17,047119705X,9780471197058,eng,320,344,28,10/15/1997,Wiley -31740,La increíble y triste historia de la cándida Eréndira y de su abuela desalmada,Gabriel García Márquez,3.90,9681317084,9789681317089,spa,157,90,7,5/30/2004,Editorial Diana -31742,The Story of a Shipwrecked Sailor,Gabriel García Márquez/Randolf Hogan,3.78,067972205X,9780679722052,eng,128,462,44,3/13/1989,Vintage -31761,El Dia Que Nietzsche Lloró,Irvin D. Yalom,4.32,9875801445,9789875801448,spa,445,66,4,10/24/2006,Planeta -31763,Zur Genealogie der Moral,Friedrich Nietzsche,4.11,3150071232,9783150071236,ger,187,103,4,1/31/1998,Reclam -31784,Nietzche and Philosophy,Gilles Deleuze/Michael Hardt,4.17,0231138768,9780231138765,eng,256,50,1,5/16/2006,Columbia University Press -31785,The Will to Power,Friedrich Nietzsche/Walter Kaufmann/R.J. Hollingdale,4.05,0394704371,9780394704371,eng,575,7931,132,8/17/2011,Vintage Books -31795,The Story of Philosophy: The Lives and Opinions of the World's Greatest Philosophers,Will Durant,4.12,0671739166,9780671739164,eng,704,10553,550,1/1/1991,Pocket Books -31800,The Oxford Companion to Philosophy,Ted Honderich,4.15,0199264791,9780199264797,en-GB,1056,51,3,5/26/2005,Oxford University Press USA -31802,South Park and Philosophy: You Know I Learned Something Today,Robert Arp,3.43,1405161604,9781405161602,eng,273,1135,37,11/22/2006,Blackwell Publishers -31804,Superheroes and Philosophy: Truth Justice and the Socratic Way,Tom Morris/William Irwin,3.87,0812695739,9780812695731,en-US,300,754,38,4/20/2005,Open Court -31813,The Simpsons and Philosophy: The D'oh! of Homer,William Irwin/Aeon J. Skoble/Mark T. Conard,3.47,0812694333,9780812694338,eng,256,2039,135,2/28/2001,Open Court -31814,Philosophy for Dummies,Tom Morris,3.65,0764551531,9780764551536,eng,361,532,47,9/17/1999,For Dummies -31818,The Philosophy of Andy Warhol (From A to B and Back Again),Andy Warhol,3.74,0156717204,9780156717205,eng,272,33697,402,4/6/1977,Mariner Books -31819,Harry Potter and Philosophy: If Aristotle Ran Hogwarts,David Baggett/Shawn E. Klein,4.48,0812694554,9780812694550,eng,243,11422,78,9/10/2004,Open Court -31822,Philosophy of Religion: An Anthology,Louis P. Pojman,3.94,0534543642,9780534543648,en-US,582,97,7,5/7/2002,Wadsworth Publishing Company -31823,A History of Philosophy 1: Greece and Rome,Frederick Charles Copleston,4.10,0826468950,9780826468956,en-GB,544,20,4,6/1/2003,Bloomsbury Academic -31826,Western Philosophy: An Anthology,John Cottingham,4.04,0631186271,9780631186274,eng,656,71,7,11/14/1996,Wiley-Blackwell -31833,Star Wars and Philosophy: More Powerful than You Can Possibly Imagine,Kevin S. Decker/Jason T. Eberl/William Irwin/George Lucas/William O. Stephens/Walter Ritoku Robinson/Richard H. Dees/Judith A. Barad/Elizabeth F. Cooke/Richard Hanley/Jerold J. Abrams/Robert Arp/Jan-Erik Jones,4.05,0812695836,9780812695830,eng,227,1774,35,3/23/2005,Open Court -31836,Bullshit and Philosophy,Gary L. Hardcastle/George A. Reisch,3.68,0812696115,9780812696110,en-US,288,72,9,10/25/2006,Open Court -31837,The Consolation of Philosophy,Boethius/Victor Watts,3.98,0140447806,9780140447804,eng,192,8318,373,11/25/1999,Penguin Classics -31839,Philosophy of Mind: Classical and Contemporary Readings,David J. Chalmers,4.08,019514581X,9780195145816,eng,675,435,14,7/25/2002,Oxford University Press USA -31842,The Undead and Philosophy: Chicken Soup for the Soulless,Richard V. Greene/K. Silem Mohammad,3.70,0812696018,9780812696011,en-US,288,196,18,8/29/2006,Open Court -31849,Philosophy in a Time of Terror: Dialogues with Jürgen Habermas and Jacques Derrida,Jürgen Habermas/Jacques Derrida/Giovanna Borradori,3.89,0226066665,9780226066660,eng,208,439,17,9/1/2004,University of Chicago Press -31851,An Introduction to Political Philosophy,Jonathan Wolff,4.11,019929609X,9780199296095,eng,215,767,44,3/1/2006,Oxford University Press USA -31853,A Source Book in Indian Philosophy,Sarvepalli Radhakrishnan/Charles Alexander Moore/Kapila/Nandalal Sinha/Kautilya/R. Shamasastry/Manu/Georg Bühler/Patañjali/Rama Prasada/Nāgārjuna/Hermann Oldenberg/Susumu Yamaguchi/Ganganatha Jha/Ramanuja/George Thibaut/Pratap Chandra Ray/Edward J. Thomas,4.13,0691019584,9780691019581,eng,720,148,7,4/21/1967,Princeton University Press -31854,Philosophy: The Basics,Nigel Warburton,3.84,0203506413,9780415327732,eng,169,830,70,7/1/2004,Routledge -31855,A Young Person's Guide To Philosophy,Jeremy Weate/Peter Lawman,3.92,0789430746,9780789430748,eng,64,58,8,9/21/1998,DK Children -31856,Philosophy in the Flesh: The Embodied Mind and its Challenge to Western Thought,George Lakoff/Mark Johnson,4.07,0465056741,9780465056743,eng,640,1145,56,10/8/1999,Basic Books -31860,Practical Philosophy,Immanuel Kant/Mary J. Gregor,4.10,0521654084,9780521654081,eng,704,288,3,12/8/1999,Cambridge University Press -31862,Discourse on Method and Meditations on First Philosophy,René Descartes/Donald A. Cress,3.71,0872204200,9780872204201,eng,103,24689,326,6/15/1999,Hackett Publishing Company Inc. -31864,Readings in Classical Chinese Philosophy,Philip J. Ivanhoe/Bryan W. Van Norden,3.99,0872207803,9780872207806,eng,416,341,21,12/1/2005,Hackett Publishing Company Inc. -31868,Logic and Philosophy: A Modern Introduction,Alan Hausman/Paul Tidman,3.78,0495128449,9780495128441,eng,525,9,0,6/1/2006,Cengage Learning -31871,History of Political Philosophy,Leo Strauss/Joseph Cropsey,4.17,0226777103,9780226777108,eng,980,441,27,11/30/1987,University of Chicago Press -31875,What Is Ancient Philosophy?,Pierre Hadot/Michael Chase,4.19,0674013735,9780674013735,eng,384,400,42,3/15/2004,Belknap Press -31876,Lectures on the History of Philosophy 1: Greek Philosophy to Plato,Georg Wilhelm Friedrich Hegel/E.S. Haldane/Frederick C. Beiser,4.05,0803272715,9780803272712,en-GB,487,54,5,6/1/1995,University of Nebraska Press -31878,Seinfeld and Philosophy,William Irwin,3.50,0812694090,9780812694093,en-US,224,914,50,8/20/1999,Open Court -31880,Introduction to the Philosophies of Research and Criticism in Education and the Social Sciences,James Paul,2.75,0130422533,9780130422538,eng,360,4,1,10/18/2004,Pearson -31881,Introducing Philosophy,Dave Robinson/Chris Garratt/Judy Groves,3.56,184046576X,9781840465761,en-GB,176,241,21,8/8/2000,Icon Books -31882,The Matrix and Philosophy: Welcome to the Desert of the Real,William Irwin/Gerald J. Erion/Barry Smith/Carolyn Korsmeyer/Jonathan J. Sanford/Jason Holt/Theodore Schick Jr./Gregory Bassham/James Lawler/David Mitsuo Nixon,3.91,081269502X,9780812695021,eng,280,1947,71,8/28/2002,Open Court -31891,A Short History of Modern Philosophy (Routledge Classics),Roger Scruton,3.80,0415267633,9780415267632,eng,328,348,23,11/11/2001,Routledge -31894,Ancient Philosophy,Anthony Kenny,3.98,0198752725,9780198752721,eng,341,260,20,11/30/2006,Oxford University Press USA -31898,Woody Allen and Philosophy: [You Mean My Whole Fallacy Is Wrong?],Mark T. Conard/Aeon J. Skoble/Tom Morris/William Irwin,3.75,0812694538,9780812694536,eng,250,293,9,8/9/2004,Open Court -31899,Three Philosophies of Life: Ecclesiastes—Life As Vanity Job—Life As Suffering Song of Songs—Life As Love,Peter Kreeft,4.30,0898702623,9780898702620,eng,140,437,52,6/1/1990,Ignatius Press -31904,Philosophy of Religion,John Harwood Hick,3.68,0136626289,9780136626282,en-US,160,180,11,11/20/1989,Pearson -31910,Early Greek Philosophy,Jonathan Barnes,4.09,0140448152,9780140448153,eng,336,2088,44,9/26/2002,Penguin Books -31911,Contemporary Political Philosophy,Will Kymlicka,4.00,0198782748,9780198782742,eng,512,594,17,10/25/2001,Oxford University Press USA -31912,Buffy the Vampire Slayer and Philosophy: Fear and Trembling in Sunnydale,James B. South/William Irwin,4.06,0812695313,9780812695311,eng,335,2519,85,3/13/2003,Open Court -31916,Philosophy: The Classics,Nigel Warburton,3.89,0415356296,9780415356299,eng,257,337,26,7/9/1998,Routledge -31917,The Oxford Handbook of Philosophy of Mathematics and Logic,Stewart Shapiro,4.25,0195325923,9780195325928,eng,832,19,1,3/1/2007,Oxford University Press USA -31923,Three Books of Occult Philosophy,Cornelius Agrippa/Donald Tyson,4.10,0875428320,9780875428321,eng,1024,1245,28,1/8/1992,Llewellyn Publications -31925,Philosophy Made Simple,Robert Hellenga,3.39,031601334X,9780316013345,eng,304,501,84,3/1/2007,Back Bay Books -31929,The Philosophy of Biology,David L. Hull/Michael Ruse,3.89,0198752121,9780198752127,eng,784,14,3,8/27/1998,Oxford University Press USA -31938,Ten Great Works of Philosophy,Robert Paul Wolff/René Descartes/David Hume/Immanuel Kant/John Stuart Mill/William James/Plato/Aristotle/Anselm of Canterbury/Thomas Aquinas/Various,3.74,0451528301,9780451528308,en-US,592,95,11,3/1/2002,Signet -31947,Philosophy and the Mirror of Nature,Richard M. Rorty,4.01,0691020167,9780691020167,eng,424,2815,48,1/21/1981,Princeton University Press -31960,The Best American Sports Writing 2003,Buzz Bissinger/Glenn Stout/Elizabeth Gilbert/Bill Plaschke/Gary Smith/Michael J. Agovino,3.87,0618251324,9780618251322,eng,352,53,2,10/10/2003,Mariner Books -31968,Walking the Bible: A Journey by Land Through the Five Books of Moses,Bruce Feiler,3.87,0060838639,9780060838638,eng,451,2539,331,8/2/2005,William Morrow Paperbacks -31974,Mac OS X: Tiger Edition (The Missing Manual),David Pogue,3.79,0596009410,9780596009410,eng,864,96,6,7/19/2005,O'Reilly Media -31975,Astonishing X-Men Volume 2: Dangerous,Joss Whedon/John Cassaday,4.19,078511677X,9780785116776,eng,152,10769,282,6/27/2007,Marvel -31976,FINAL FANTASY X Official Strategy Guide,Dan Birlew,4.29,0744001404,9780744001402,eng,272,388,10,12/17/2001,BradyGames -31978,Ultimate X-Men Vol. 14: Phoenix?,Robert Kirkman/Ben Oliver/Tom Raney,3.70,078512019X,9780785120193,eng,144,1409,28,10/4/2006,Marvel -31979,Astonishing X-Men Volume 1: Gifted,Joss Whedon/John Cassaday,4.17,0785115315,9780785115311,eng,152,24262,557,5/10/2006,Marvel -31980,Cross-X,Joe Miller,3.80,0374131945,9780374131944,eng,480,189,40,10/3/2006,Farrar Straus Giroux -31981,Astonishing X-Men Volume 3: Torn,Joss Whedon/John Cassaday,4.24,0785117598,9780785117599,eng,152,8900,241,2/14/2007,Marvel -31983,X/1999 Volume 01: Prelude,CLAMP,3.96,1569319499,9781569319499,eng,200,3138,68,4/30/2003,VIZ Media LLC -31985,X/1999 Volume 02: Overture,CLAMP/Fred Burke,4.03,1569319502,9781569319505,en-US,192,1092,10,4/30/2003,VIZ Media LLC -31992,鋼之鍊金術師 1,Hiromu Arakawa/荒川弘/方郁仁,4.50,9861146091,9789861146096,zho,183,9,1,6/1/2004,東立 -31993,鋼之鍊金術師 6,Hiromu Arakawa/荒川弘/方郁仁,4.58,9861146148,9789861146140,zho,191,5,0,6/2/2004,東立 -31994,鋼之鍊金術師 10,Hiromu Arakawa/荒川弘/方郁仁,4.60,9861156534,9789861156538,zho,188,3,0,3/23/2005,東立 -31995,鋼之鍊金術師 4,Hiromu Arakawa/荒川弘/方郁仁,4.55,9861146121,9789861146126,zho,189,5,0,6/2/2004,東立 -31996,鋼之鍊金術師 9,Hiromu Arakawa/荒川弘/方郁仁,4.57,9861156526,9789861156521,zho,184,4,0,12/16/2004,東立 -31997,鋼之鍊金術師 5,Hiromu Arakawa/荒川弘/方郁仁,4.56,986114613X,9789861146133,zho,189,6,0,6/2/2004,東立 -31998,鋼之鍊金術師 2,Hiromu Arakawa/荒川弘/方郁仁,4.52,9861146105,9789861146102,zho,185,5,0,6/1/2004,東立 -31999,鋼之鍊金術師 7,Hiromu Arakawa/荒川弘/方郁仁,4.57,9861146156,9789861146157,zho,191,5,0,6/12/2004,東立 -32016,The Gospel According to Job,Mike Mason,4.46,158134449X,9781581344493,eng,448,138,19,10/3/2002,Crossway Books -32039,Avid Editing: A Guide for Beginning and Intermediate Users,Sam Kauffmann,3.83,0240805410,9780240805412,en-US,414,5,0,3/17/2003,Focal Press -32053,The Complete Poems (Poetry Library),D.H. Lawrence,4.01,1853264172,9781853264177,eng,704,1564,25,8/5/1994,Wordsworth Editions -32060,Complete Short Stories Vol 2,D.H. Lawrence,4.03,0670000965,9780670000968,en-GB,303,85,8,7/10/1961,Penguin/Viking Compass (Non-Classics) -32065,D.H. Lawrence and Italy: Twilight in Italy/Sea and Sardinia/Etruscan Places,D.H. Lawrence,3.68,0141180307,9780141180304,eng,512,199,12,7/1/1997,Penguin Classics -32070,The Complete Poems,D.H. Lawrence/Vivian de Sola Pinto/Warren Roberts,4.01,0140186573,9780140186574,eng,1088,62,3,1/1/1994,Penguin Classics -32071,Sons and Lovers,D.H. Lawrence/Geoff Dyer,3.63,0375753737,9780375753732,eng,654,39333,1250,8/17/1999,Modern Library Classics -32075,The Woman Who Rode Away and Other Stories,D.H. Lawrence/Christa Jansohn,3.49,0521294304,9780521294300,eng,556,27,1,8/8/2002,Cambridge University Press -32078,Amnesia Moon,Jonathan Lethem,3.49,015603154X,9780156031547,eng,256,2953,230,8/8/2005,Mariner Books -32080,Paul Revere's Ride,David Hackett Fischer,4.12,0195098315,9780195098310,eng,464,3907,208,4/19/1995,Oxford University Press USA -32082,The Great Wave: Price Revolutions and the Rhythm of History,David Hackett Fischer,3.97,019512121X,9780195121216,eng,552,204,33,11/11/1999,Oxford University Press USA -32083,Growing Old in America: The Bland-Lee Lectures Delivered at Clark University,David Hackett Fischer,4.06,0195023668,9780195023664,eng,252,17,1,4/1/1978,Oxford University Press USA -32094,Nathaniel Hawthorne: The Scarlet Letter: Essays Articles Reviews,Elmer Kennedy-Andrews,3.38,0231121911,9780231121910,eng,192,172,10,12/27/2000,Columbia University Press -32096,The All-True Travels and Adventures of Lidie Newton,Jane Smiley,3.57,0449910830,9780449910832,eng,452,2149,256,12/29/1998,Ballantine Books -32097,The Age of Grief,Jane Smiley,3.81,0385721870,9780385721875,eng,224,1389,123,6/11/2002,Anchor -32099,A Year at the Races: Reflections on Horses Humans Love Money and Luck,Jane Smiley,3.90,1400033179,9781400033171,eng,304,696,49,4/19/2005,Anchor -32102,Venetia,Georgette Heyer,4.10,0373771665,9780373771660,eng,364,10067,789,10/24/2006,Hqn -32103,Lady of Quality,Georgette Heyer,3.88,0099474468,9780099474463,eng,267,5927,458,6/2/2005,Arrow -32104,False Colours,Georgette Heyer,3.86,0099476339,9780099476337,eng,303,4457,330,6/2/2005,Arrow -32105,Sylvester,Georgette Heyer/Joan Wolf,4.11,0373836082,9780373836086,eng,410,10231,636,4/23/2004,Harlequin -32106,The Convenient Marriage,Georgette Heyer,3.68,0099474425,9780099474425,eng,272,9272,861,1/6/2005,Arrow -32107,Sprig Muslin,Georgette Heyer,3.81,0099476355,9780099476351,eng,268,5030,406,6/2/2005,Arrow -32108,The Talisman Ring,Georgette Heyer,4.02,0099474395,9780099474395,eng,268,5550,478,1/6/2005,Arrow -32110,The Nonesuch,Georgette Heyer,4.04,0099474387,9780099474388,eng,304,7204,460,1/6/2005,Arrow -32111,The Foundling,Georgette Heyer/Kay Hooper,3.87,0373835493,9780373835492,eng,406,3716,270,3/25/2003,Harlequin -32113,Ali and Nino,Kurban Said/Jenia Graman,3.92,0099283220,9780099283225,eng,237,147,22,10/5/2000,Vintage/Ebury -32115,Ali und Nino,Kurban Said,3.92,3548601316,9783548601311,ger,304,39,2,2/1/2002,List -32121,Last Rights (Francis Hancock #1),Barbara Nadel,3.53,0755321367,9780755321360,eng,352,132,15,1/2/2006,Headline -32122,Belshazzar's Daughter (Inspector Ikmen #1),Barbara Nadel,3.51,1933397497,9781933397498,eng,448,772,99,10/1/2006,Felony & Mayhem -32124,Deep Waters (Cetin Ikmen #4),Barbara Nadel,3.99,0747267197,9780747267195,eng,448,301,24,7/1/2002,Headline -32125,After the Mourning (Francis Hancock #2),Barbara Nadel,3.42,0755321383,9780755321384,eng,352,104,11,12/28/2006,Headline -32129,Spiritual Midwifery,Ina May Gaskin,4.38,1570671044,9781570671043,eng,482,5166,429,1/1/2002,Book Publishing Company (TN) -32130,Monday Night Class,Stephen Gaskin,3.89,1570671818,9781570671814,en-US,191,59,4,7/31/2005,Book Publishing Company -32137,Summer of the Dragon,Elizabeth Peters,3.92,0380731223,9780380731220,eng,352,2419,102,3/6/2001,HarperCollins -32138,Devil May Care,Elizabeth Peters,3.87,0380731150,9780380731152,eng,352,2233,109,9/4/2001,Avon -32139,The Deeds of the Disturber (Amelia Peabody #5),Elizabeth Peters,4.05,0380731959,9780380731954,eng,389,12389,364,1/5/2000,Avon -32144,The Mammoth Book of Egyptian Whodunnits,Mike Ashley/Elizabeth Peters/Lynda S. Robinson/Lauren Haney,3.91,0786710659,9780786710652,eng,512,161,9,9/20/2002,Running Press -32154,The Best American Classics,Cook's Illustrated Magazine/John Burgoyne,4.14,1933615036,9781933615035,eng,421,35,4,9/1/2006,Cook's Illustrated -32155,Cook's Illustrated 2005 (Cook's Illustrated Annuals),Cook's Illustrated Magazine,4.57,0936184922,9780936184920,eng,206,37,1,11/15/2005,America's Test Kitchen -32160,Cook's Illustrated 2003 (Cook's Illustrated Annuals),Cook's Illustrated Magazine,4.69,0936184728,9780936184722,eng,212,26,0,11/15/2003,Boston Common Press -32165,Cook's Illustrated 1995 (Cook's Illustrated Annuals),Cook's Illustrated Magazine,4.53,0964017938,9780964017931,eng,232,15,1,12/1/1995,Cook's Illustrated -32181,Zelda's Cut,Philippa Gregory,2.94,0006511775,9780006511779,eng,432,65,12,2/1/2001,HarperCollins Publishers -32184,Thanksgiving on Thursday (Magic Tree House #27),Mary Pope Osborne/Salvatore Murdocca,3.85,0375806156,9780375806155,eng,73,6361,209,9/24/2002,Random House Books for Young Readers -32185,Rurouni Kenshin Volume 27,Nobuhiro Watsuki,4.38,1421506742,9781421506746,eng,192,1598,22,6/6/2006,VIZ Media LLC -32186,Ranma 1/2 Vol. 27 (Ranma ½ (US 2nd) #27),Rumiko Takahashi,4.09,1591164591,9781591164593,eng,200,891,13,8/10/2004,VIZ Media LLC -32189,Sukhoi Su-27 Flanker (WarbirdTech #42),Yefim Gordon/Peter Davison,3.00,1580070914,9781580070911,eng,104,6,0,4/1/2006,Specialty Press -32197,1001 Illuminated Initial Letters: 27 Full-Color Plates,Owen Jones,3.46,0486256073,9780486256078,eng,32,11,1,4/1/1988,Dover Publications -32199,Gold Rage (Wilderness #27),David Robbins/David Thompson,4.31,0843945192,9780843945195,eng,170,16,0,5/1/1999,Leisure Books -32202,Asfixia,Chuck Palahniuk,3.70,9875661708,9789875661707,eng,336,47,2,9/1/2006,Debolsillo -32213,Expectant Father,Melinda Curtis,3.60,0373713010,9780373713011,eng,304,40,2,12/15/2011,Harlequin Special Releases -32226,Horse Heaven,Jane Smiley,3.88,0804119430,9780804119436,eng,640,4583,328,8/26/2003,Ballantine Books -32234,White Oleander,Janet Fitch,3.96,0316182540,9780316182546,eng,446,301784,6170,9/1/2001,Little Brown and Company -32241,The Night Remembers (Night #1),Kathleen Eagle,3.79,0380784912,9780380784912,eng,355,228,25,6/1/1998,HarperTorch -32254,The Mephisto Club (Rizzoli & Isles #6),Tess Gerritsen,4.02,0345476999,9780345476999,eng,355,27697,1190,9/12/2006,Ballantine Books -32255,Vanish (Rizzoli & Isles #5),Tess Gerritsen,4.12,0345476980,9780345476982,eng,401,46863,1157,8/29/2006,Ballantine Books -32256,Call After Midnight & Under The Knife,Tess Gerritsen,3.99,037377172X,9780373771721,en-US,555,249,20,4/25/2006,Harlequin -32257,The Sinner (Rizzoli & Isles #3),Tess Gerritsen,4.13,0553815024,9780553815023,eng,419,33678,1099,1/17/2005,Bantem Press -32258,Body Double (Rizzoli & Isles #4),Tess Gerritsen,4.17,034545894X,9780345458940,en-US,432,36595,1205,7/26/2005,Ballantine Books -32262,Life Support,Tess Gerritsen,3.99,0671553046,9780671553043,eng,400,11151,352,8/1/1998,Pocket Books -32264,The Family that Couldn't Sleep,D.T. Max,3.91,1400062454,9781400062454,eng,299,4568,350,9/5/2006,Random House (NY) -32275,River Out of Eden: A Darwinian View of Life,Richard Dawkins/Lalla Ward,3.98,0465069908,9780465069903,en-US,172,5891,192,8/23/1996,HarperCollinsPublishers -32276,Dragons of Eden: Speculations on the Evolution of Human Intelligence,Carl Sagan,4.18,0345346297,9780345346292,eng,271,15444,475,12/12/1986,Ballantine Books -32277,Eden: It's an Endless World Volume 1 (Eden: It's an Endless World #1),Hiroki Endo,3.97,1593074069,9781593074067,eng,216,1848,66,11/15/2005,Dark Horse Manga -32281,Demonic Males: Apes and the Origins of Human Violence,Richard W. Wrangham/Dale Peterson,4.03,0395877431,9780395877432,en-US,368,686,64,11/14/1997,Mariner Books -32286,A Mad People's History of Madness,Dale Peterson,4.33,0822953315,9780822953319,eng,384,9,0,3/15/1982,University of Pittsburgh Press -32289,A Primate's Memoir: A Neuroscientist's Unconventional Life Among the Baboons,Robert M. Sapolsky,4.35,0743202414,9780743202411,eng,304,5040,590,3/12/2002,Scribner -32295,Blame It on the Brain: Distinguishing Chemical Imbalances Brain Disorders and Disobedience,Edward T. Welch,4.05,0875526020,9780875526027,eng,204,534,50,6/1/1998,P & R Publishing -32298,Blame! Vol. 7,Tsutomu Nihei,4.30,1595328408,9781595328403,eng,210,785,13,2/1/2007,TokyoPop -32300,The Berenstain Bears and the Blame Game,Stan Berenstain/Jan Berenstain,3.87,0679887431,9780679887430,en-US,32,745,28,10/7/1997,Random House Books for Young Readers -32302,Blame! Vol. 8,Tsutomu Nihei,4.26,1595328416,9781595328410,eng,216,762,13,5/1/2007,TokyoPop -32303,The New Don't Blame Mother: Mending the Mother-Daughter Relationship,Paula J. Caplan,3.88,0415926300,9780415926300,eng,320,5,0,3/25/2000,Routledge -32307,Blame It on Paris,Laura Florand,3.53,0765315084,9780765315083,eng,384,358,63,10/3/2006,Forge Books -32313,No Wind of Blame (Inspector Hemingway #1),Georgette Heyer,3.78,0099493675,9780099493679,eng,352,96,17,9/7/2006,Arrow -32316,Uncle John's Presents Blame It on the Weather: Amazing Weather Facts,David W. Phillips/Michael Parfit/Suzanne Chisholm/Bathroom Readers' Institute,3.57,1571458689,9781571458681,eng,240,7,1,11/1/2002,Portable Press -32317,Who's To Blame (Sweet Valley High #66),Francine Pascal/Kate William,3.36,0553285556,9780553285550,eng,152,406,5,6/1/1990,Bantam -32323,Blame! #1,Tsutomu Nihei,4.10,2723431029,9782723431026,fre,245,18,5,3/20/2000,Glénat -32328,Air Gear Vol. 2 (Air Gear #2),Oh! Great/大暮 維人,4.04,034549279X,9780345492791,eng,224,686,8,10/31/2006,Del Rey -32329,Air Gear Vol. 3 (Air Gear #3),Oh! Great/大暮 維人,4.09,0345492803,9780345492807,eng,224,609,3,1/30/2007,Del Rey -32330,Air Gear Vol. 1 (Air Gear #1),Oh! Great/大暮 維人,3.92,0345492781,9780345492784,eng,224,1875,37,7/25/2006,Del Rey -32331,Air Gear Vol. 4 (Air Gear #4),Oh! Great/大暮 維人,4.07,0345492811,9780345492814,en-GB,224,467,2,5/1/2007,Del Rey -32338,Fire in the Minds of Men: Origins of the Revolutionary Faith,James H. Billington,4.54,0765804719,9780765804716,eng,677,96,9,1/1/1980,Basic Books -32349,Mutant Message Down Under,Marlo Morgan,3.79,0060723513,9780060723514,eng,187,11224,1249,5/25/2004,Harper Perennial -32350,Mutants & Masterminds: RPG,Steve Kenson/Ramón Pérez,3.81,1932442529,9781932442526,eng,253,305,8,11/1/2005,Green Ronin Publishing -32351,Mutants: On Genetic Variety and the Human Body,Armand Marie Leroi,4.05,0142004820,9780142004821,eng,448,3040,200,1/25/2005,Penguin Books -32353,The New Mutants Classic Vol. 1,Chris Claremont/Bob McLeod,3.75,0785121943,9780785121947,eng,240,697,43,5/3/2006,Marvel -32358,James Dean: The Mutant King: A Biography,David Dalton,4.07,155652398X,9781556523984,eng,384,491,29,9/1/2001,Chicago Review Press -32370,Dry,Augusten Burroughs,4.03,0312423799,9780312423797,eng,293,77100,3112,4/1/2004,Picador USA -32373,Yes Your Teen Is Crazy!: Loving Your Kid Without Losing Your Mind,Michael J. Bradley,4.29,0936197447,9780936197449,en-US,332,792,138,11/8/2002,Harbor Press -32386,El Retrato De Dorian Gray,Oscar Wilde,4.08,849531178X,9788495311788,spa,251,43,5,4/7/2006,Mestas Ediciones -32396,Henry IV Part 1,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.83,0743485041,9780743485043,eng,336,1604,146,1/1/2005,Simon Schuster -32398,Henry IV Part 2,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.80,074348505X,9780743485050,eng,400,692,89,1/1/2006,Simon Schuster -32400,Henry IV part II,William Shakespeare,3.80,0141016701,9780141016702,eng,336,22,4,4/26/2005,Penguin UK -32401,King Henry IV Part 2,William Shakespeare/Arthur Raleigh Humphreys,3.80,1904271065,9781904271062,eng,336,262,21,10/12/1967,Bloomsbury Arden Shakespeare -32408,Piccole donne,Louisa May Alcott/Jame's Prunier/Laura Cangemi,3.98,8838461139,9788838461132,ita,288,83,5,4/15/2001,Piemme -32410,I Henry IV,William Shakespeare/Gordon McMullan,3.83,0393979318,9780393979312,en-US,432,89,11,4/22/2003,W. W. Norton & Company -32413,Collected Plays: Henry IV The Man with the Flower in His Mouth Right You Are,Luigi Pirandello/Henry Reed,3.92,0714541109,9780714541105,eng,236,12,1,7/1/1987,Riverrun Press (New York NY) -32414,Henry IV Parts I & II,William Shakespeare/Ronald K. Levao,3.85,032118274X,9780321182746,en-US,400,58,2,12/1/2006,Pearson -32417,Black Sunday,Thomas Harris,3.60,0451217411,9780451217417,eng,311,6969,173,11/1/2005,NAL -32418,Hannibal (Hannibal Lecter #3),Thomas Harris,3.76,0099297701,9780099297703,eng,564,71712,2120,5/18/2000,Arrow -32419,The Hannibal Lecter Trilogy,Thomas Harris,4.42,0434009059,9780434009053,eng,1222,808,29,11/3/2005,William Heinemann Ltd. -32421,Velocity,Dean Koontz,3.86,0553588257,9780553588255,eng,460,53394,1527,4/25/2006,Bantam -32422,Hideaway,Dean Koontz,3.84,0425203891,9780425203897,eng,413,30539,453,7/5/2005,Berkley -32424,Lightning,Dean Koontz,4.06,0425192032,9780425192030,eng,384,49312,1644,9/2/2003,Berkley -32426,Icebound,David Axton/Dean Koontz,3.76,0553582909,9780553582901,eng,408,17062,358,9/5/2000,Bantam -32427,The Servants of Twilight / Darkfall / Phantoms,Dean Koontz/Leigh Nichols,4.24,0517064871,9780517064870,eng,752,3336,24,7/27/1991,Wings -32428,Shadow Fires,Leigh Nichols/Dean Koontz,3.78,0425136981,9780425136980,eng,528,9553,167,6/1/1993,Berkley -32430,The Bad Place,Dean R. Koontz,3.90,0425195481,9780425195482,eng,417,30574,519,7/6/2004,Berkley -32432,Fear Nothing (Moonlight Bay #1),Dean Koontz,4.00,0553579754,9780553579758,eng,448,31462,833,12/1/1998,Bantam Books -32433,The Key to Midnight,Dean Koontz/Leigh Nichols,3.95,0425147517,9780425147511,eng,419,24594,239,6/1/1995,Berkley Books -32434,Mr. Murder,Dean Koontz,3.76,0425210758,9780425210758,eng,493,22577,448,7/5/2006,Berkley -32435,Phantoms,Dean Koontz,3.94,0425181103,9780425181102,eng,448,61123,1047,2/5/2002,Berkley -32437,The Face,Dean Koontz,3.71,0553584480,9780553584486,eng,649,18747,559,4/27/2004,Bantam -32438,Shattered,Dean Koontz,3.90,0425099334,9780425099339,eng,289,19637,228,2/15/1985,Berkley -32439,Intensity,Dean Koontz,4.04,0553582917,9780553582918,eng,436,65221,2345,10/31/2000,Bantam -32441,The Good Guy,Dean Koontz,3.82,0553804812,9780553804812,eng,386,29967,1317,5/29/2007,Bantam -32443,The Eyes of Darkness,Leigh Nichols/Dean Koontz,3.88,0425153975,9780425153970,eng,366,16242,298,7/1/1996,Berkley -32446,The Door to December,Richard Paige/Dean Koontz,3.95,0451205421,9780451205421,eng,518,32385,581,6/1/2002,Berkley Books -32453,The Servants of Twilight,Leigh Nichols/Dean Koontz,3.83,0747236380,9780747236382,eng,499,15666,209,5/16/1991,Headline Feature -32456,Darkfall,Dean Koontz,3.82,0425214591,9780425214596,eng,371,17016,364,2/6/2007,Berkley -32461,Ghosts and Grisly Things,Ramsey Campbell/Jack Dann/Dennis Etchison,3.73,0312867573,9780312867577,en-US,300,202,14,10/11/2001,Tor Books -32483,Shakespeare: The Biography,Peter Ackroyd,3.99,140007598X,9781400075980,eng,608,1541,131,11/14/2006,Anchor -32484,The Necessary Shakespeare,William Shakespeare,4.31,0321272501,9780321272508,eng,896,91,10,8/27/2004,Longman Publishing Group -32487,Shakespeare After All,Marjorie Garber,4.38,0385722141,9780385722148,eng,1008,852,62,9/20/2005,Anchor Books -32488,Playing Shakespeare: An Actor's Guide,John Barton/Luann Walther,4.35,0385720858,9780385720854,eng,288,456,27,8/21/2001,Anchor -32498,John Grisham Value Collection: A Time to Kill The Firm The Client,John Grisham/Michael Beck/Blair Brown/D.W. Moffett,4.50,0739312642,9780739312643,eng,0,476,9,6/1/2004,Random House Audio -32499,The Pelican Brief,John Grisham,4.00,0385339704,9780385339704,eng,400,340714,1942,4/25/2006,Delta -32500,The Harry Bosch Novels Volume 1: The Black Echo / The Black Ice / The Concrete Blonde (Harry Bosch #1-3),Michael Connelly,4.34,0316154970,9780316154970,eng,794,2023,83,10/22/2001,Little Brown & Company -32501,Echo Park (Harry Bosch #12; Harry Bosch Universe #16),Michael Connelly,4.12,0316734950,9780316734950,eng,405,36333,1511,10/9/2006,Little Brown & Company -32502,Angels Flight (Harry Bosch #6; Harry Bosch Universe #7),Michael Connelly,4.18,0446607274,9780446607278,eng,454,33730,1309,1/5/2000,Warner Books (NY) -32503,The Harry Bosch Novels Volume 2: The Last Coyote / Trunk Music / Angels Flight (Harry Bosch #4-6),Michael Connelly,4.49,0316614564,9780316614566,eng,821,2026,27,11/3/2003,Little Brown and Company -32505,The Closers (Harry Bosch #11; Harry Bosch Universe #14),Michael Connelly,4.13,0446699551,9780446699556,eng,432,29913,1282,10/2/2006,Grand Central Publishing -32506,The Poet (Jack McEvoy #1; Harry Bosch Universe #5),Michael Connelly,4.20,0446690457,9780446690454,eng,510,64309,2025,7/1/2002,Grand Central Publishing -32507,Chasing the Dime,Michael Connelly,3.96,044661162X,9780446611626,eng,448,26998,828,9/1/2003,Warner Books -32508,The Black Echo (Harry Bosch #1; Harry Bosch Universe #1),Michael Connelly,4.10,0446612731,9780446612739,eng,482,125864,3198,12/1/2002,Grand Central Publishing -32509,Tales From Shakespeare,Charles Lamb/Mary Lamb/Arthur Rackham,3.96,1853261408,9781853261404,eng,278,117,11,8/5/1994,Wordsworth Editions -32510,Shakespeare's Champion (Lily Bard #2),Charlaine Harris,3.83,0425213102,9780425213100,eng,214,13896,537,12/5/2006,Berkley Books -32511,Will in the World: How Shakespeare Became Shakespeare,Stephen Greenblatt,3.94,0393050572,9780393050578,en-US,430,421,70,9/30/2004,W.W. Norton & Company (NY/London) -32514,Sonnets,William Shakespeare/Barbara A. Mowat/Paul Werstine,4.25,0671722875,9780671722876,eng,391,701,41,2/1/2004,Simon Schuster -32516,Shakespeare's Trollop (Lily Bard #4),Charlaine Harris,3.87,0425196992,9780425196991,eng,194,12212,367,5/4/2004,Berkley -32517,Shakespeare's Kitchen: Renaissance Recipes for the Contemporary Cook,Francine Segan/Tim Turner/Patrick O'Connell,4.01,0375509178,9780375509179,eng,288,111,13,10/14/2003,Random House -32520,Sonnets,William Shakespeare/Stephen Booth,4.25,0300085060,9780300085068,eng,583,104,6,7/11/2000,Yale University Press -32522,The Art of Shakespeare's Sonnets,Helen Vendler,4.30,0674637127,9780674637122,eng,692,613,25,11/1/1999,Belknap Press of Harvard University Press -32523,Hide (Detective D.D. Warren #2),Lisa Gardner,4.16,0553804324,9780553804324,eng,375,26891,1501,1/30/2007,Bantam Books -32527,Alone (Detective D.D. Warren #1),Lisa Gardner/Anna Fields,3.96,0553584537,9780553584530,eng,451,44349,1850,12/27/2005,Bantam -32530,The Third Victim (Quincy & Rainie #2),Lisa Gardner,4.16,0553578685,9780553578683,eng,384,24599,518,1/30/2001,Bantam -32532,On Becoming a Novelist,John Gardner/Raymond Carver,4.11,0393320030,9780393320039,eng,150,2316,204,10/17/1999,W. W. Norton & Company -32533,The Art of Fiction: Notes on Craft for Young Writers,John Gardner,4.00,0679734031,9780679734031,eng,224,5019,408,6/4/1991,Vintage -32534,October Light,John Gardner/Tom Bissell,3.88,0811216373,9780811216371,eng,399,843,61,10/17/2005,New Directions -32537,Excellence,John W. Gardner,3.82,0393312879,9780393312874,eng,176,49,8,4/17/1995,W. W. Norton Company -32540,Conversations with Bernard Malamud (Literary Conversations),J. Michael Lennon/Lawrence M. Lasher,4.00,0878054898,9780878054893,eng,156,0,0,4/28/1991,University Press of Mississippi -32552,Essential Tales and Poems,Edgar Allan Poe/Benjamin F. Fisher,4.36,1593080646,9781593080648,en-US,688,66382,109,10/25/2004,Barnes Noble Classics -32558,Poetry Tales and Selected Essays,Edgar Allan Poe/Gary Richard Thompson/G.R. Thompson/Patrick F. Quinn,4.41,1883011388,9781883011383,eng,1520,170,13,10/1/1996,Library of America -32560,The Complete Stories,Franz Kafka/Nahum N. Glatzer/John Updike,4.35,0805208739,9780805208733,eng,488,168,12,11/14/1995,Schocken Books -32561,The Sons,Franz Kafka/Edwin Muir/Willa Muir/Eithne Wilkins/Ernst Kaiser/Mark Anderson/Arthur S. Wensinger,3.95,0805208860,9780805208863,eng,167,529,37,8/5/1989,Schocken -32572,The Metamorphosis and Other Stories,Franz Kafka/Donna Freed/Jason Baker,4.03,1593081804,9781593081805,eng,191,132,19,9/20/2004,Barnes Noble Classics -32574,The Metamorphosis And Other Stories,Franz Kafka/Joachim Neugroschel,4.03,0684194260,9780684194264,eng,227,61,6,12/1/1993,Scribner Book Company -32576,Metamorphosis (Star Trek: The Next Generation),Jean Lorrah,3.72,0671684027,9780671684020,eng,371,1399,49,3/1/1990,Pocket Books -32578,Lolita,Richard Corliss,3.89,0851703682,9780851703688,eng,96,475,23,12/27/1994,British Film Institute -32579,Lolita: The Screenplay,Vladimir Nabokov,3.87,0679772553,9780679772552,eng,240,281,18,8/26/1997,Vintage -32581,Lolita,Vladimir Nabokov/Martin Amis,3.89,0679410430,9780679410430,eng,335,1965,295,3/9/1993,Everyman's Library -32584,Mysteries,Knut Hamsun/Sverre Lyngstad,4.09,0141186186,9780141186184,en-US,313,282,37,1/1/2001,Penguin Classics -32585,Hunger,Knut Hamsun/George Egerton,4.05,0486431681,9780486431680,eng,134,28153,1372,11/17/2003,Dover Publications -32588,Victoria,Knut Hamsun/Oliver Stallybrass,3.74,1557131775,9781557131775,eng,155,47,7,10/1/1994,Sun & Moon Press -32589,The Wanderer,Knut Hamsun/Oliver Stallybrass/Gunnvor Stallybrass,3.96,0285647873,9780285647879,eng,164,696,25,4/30/2001,Condor Books -32590,Pan,Knut Hamsun/Sverre Lyngstad,3.90,0141180676,9780141180670,eng,181,5833,255,9/1/1998,Penguin Classics -32591,The Last Joy,Knut Hamsun/Sverre Lyngstad,3.77,1931243190,9781931243193,eng,250,129,8,7/1/2002,Green Integer -32592,In Wonderland,Knut Hamsun/Sverre Lyngstad,3.60,0970312555,9780970312556,nor,185,86,8,9/1/2003,Ig Publishing -32609,Guilty as Charged,Scott Turow/Sarah Shankman/Jay Brandon/Jeremiah Healy/Ed Gorman/John Jakes/Maynard F. Thomson/Lia Matera/Susan Dunlap/Bill Pronzini/John Lutz/Andrew Klavan/Marcia Muller/Stuart M. Kaminsky/Carolyn Wheat/Stan Washburn/Valerie Frankel,3.76,0671519166,9780671519162,eng,10,149,2,10/1/1996,Pocket Books -32610,On the Shoulders of Giants: The Great Works of Physics and Astronomy,Stephen Hawking/Isaac Newton/Nicolaus Copernicus/Albert Einstein/Johannes Kepler/Galileo Galilei,4.20,0762427329,9780762427321,eng,256,4151,33,1/1/2006,Penguin Books -32625,Visions of Heaven and Hell,Clive Barker,4.32,0847827372,9780847827374,eng,352,661,20,9/27/2005,Rizzoli -32626,Books of Blood: Volumes One to Three (Books of Blood #1-3),Clive Barker,4.18,0425165582,9780425165584,eng,507,22863,491,10/1/1998,Berkley Books -32627,Everville (Book of the Art #2),Clive Barker,4.03,0060933151,9780060933159,eng,697,8829,157,11/3/1999,HarperPerennial -32628,The Great and Secret Show (Book of the Art #1),Clive Barker,4.05,006093316X,9780060933166,eng,658,25955,518,11/3/1999,HarperPerennial -32636,Abarat: Days of Magic Nights of War,Clive Barker,4.20,0060596384,9780060596385,eng,569,12118,292,9/26/2006,HarperCollins -32637,Imajica: The Reconciliation,Clive Barker,4.42,0061094153,9780061094156,eng,544,2583,30,5/10/1995,HarperTorch -32639,Sacrament,Clive Barker,3.75,0006482643,9780006482642,eng,594,3942,106,5/1/1997,Harper Voyager -32640,The Inhuman Condition (Books of Blood #4),Clive Barker,3.96,0743417348,9780743417341,eng,180,6294,111,3/1/2001,Pocket Books -32649,Notebook of a Return to the Native Land,Aimé Césaire/Annette Smith/Clayton Eshleman,4.09,0819564524,9780819564528,eng,66,941,49,9/24/2001,Wesleyan University Press -32650,The Return of the Native,Thomas Hardy/Alexander Theroux,3.86,037575718X,9780375757181,eng,448,29586,981,2/13/2001,Modern Library -32656,The Return of the Native,Thomas Hardy/Phillip Mallett,3.86,0393927873,9780393927870,eng,552,44,5,2/14/2006,W. W. Norton & Company -32664,The Stephen King Collection: Stories from Night Shift,Stephen King/John Glover,4.00,0553527401,9780553527407,eng,9,662,23,5/2/2000,Random House Audio -32667,Blood and Smoke,Stephen King,3.92,0671046179,9780671046170,eng,4,6221,155,1/1/2000,Simon & Schuster Audio -32668,LT's Theory of Pets,Stephen King,3.69,074352005X,9780743520058,eng,1,2824,140,8/1/2001,Simon Schuster Audio -32679,Carretera maldita,Richard Bachman/Stephen King/Joseph M. Apfelbäume,3.60,8401474728,9788401474729,spa,362,336,37,2/1/1999,Plaza & Janés Editores S.A. -32680,Silver Bullet,Stephen King/Bernie Wrightson,3.64,0451821289,9780451821287,en-US,255,3551,33,11/12/1985,Signet -32682,Patriot Games (Jack Ryan #1),Tom Clancy,4.14,0425134350,9780425134351,eng,503,170797,984,5/1/1992,Berkley -32686,Legends,Robert Silverberg/Stephen King/Robert Jordan/Terry Goodkind/Anne McCaffrey/Orson Scott Card/Tad Williams/George R.R. Martin/Raymond E. Feist/Terry Pratchett/Ursula K. Le Guin,3.92,0765300354,9780765300355,en-US,717,339,25,9/8/2001,Tor Books -32689,Bare Bones: Conversations on Terror with Stephen King,Tim Underwood/Chuck Miller/Stephen King,4.17,0446390577,9780446390576,eng,224,3162,28,7/1/1989,Warner -32691,Four Past Midnight,Stephen King,3.93,0451213599,9780451213594,eng,768,1430,42,3/2/2004,Signet -32692,Gerald's Game,Stephen King,3.51,0831727527,9780831727529,eng,332,117178,2678,9/1/1992,Smithmark Publishers -32694,Faithful: Two Diehard Boston Red Sox Fans Chronicle the Historic 2004 Season,Stewart O'Nan/Stephen King,3.83,0743267532,9780743267533,eng,445,4321,164,9/6/2005,Scribner -32695,El talismán,Stephen King/Peter Straub/Pilar Giralt Gorina,4.13,8408042432,9788408042433,spa,375,12,1,7/1/2003,Planeta Publishing -32696,El umbral de la noche,Stephen King/Gregorio Vlastelica/Eduardo Goligorsky,4.00,8497594290,9788497594295,spa,417,79,11,4/30/2004,Debolsillo -32702,Rabia,Richard Bachman/Stephen King/Hernán Sabaté Vargas,3.78,8427011504,9788427011502,spa,203,91,22,9/1/1987,Martínez Roca -32703,The Diary of Ellen Rimbauer: My Life at Rose Red,Joyce Reardon/Steven Rimbauer/Ridley Pearson,3.67,0786890436,9780786890439,eng,277,7852,352,4/29/2001,Hyperion -32709,Now and on Earth,Jim Thompson/Stephen King,3.70,0679740139,9780679740131,eng,320,339,21,2/1/1994,Vintage -32714,The Monkey,Stephen King/David Purdham,3.77,0394299035,9780394299037,eng,2,801,44,10/28/1989,Random House Audio -32715,Desperation / The Regulators: Box Set,Stephen King/Richard Bachman,4.07,067077605X,9780670776054,eng,1075,3231,72,10/1/1996,Viking Adult -32720,Ojos de fuego,Stephen King/Eduardo Goligorsky,3.88,0609810871,9780609810873,spa,528,353,29,9/4/2001,Plaza y Janés -32737,Tevye's Daughters: Collected Stories of Sholom Aleichem,Sholom Aleichem/Frances Butwin,4.17,1929068034,9781929068036,eng,302,146,13,11/1/1999,Sholom Aleichem Family Publications -32741,Favorite Tales of Sholom Aleichem,Sholom Aleichem/Ben Shahn/Frances Butwin/Julius Butwin,4.26,0517412942,9780517412947,en-US,692,66,6,11/18/1990,Avenel Books -32750,Brown Girl Brownstones,Paule Marshall/Mary Helen Washington/Edwidge Danticat,4.07,1558614982,9781558614987,eng,324,2466,107,8/1/2006,Feminist Press -32760,V.,Thomas Pynchon,3.96,3499137305,9783499137303,ger,544,46,4,8/1/1994,Rowohlt -32765,Gimpel the Fool: And Other Stories,Isaac Bashevis Singer/Saul Bellow,4.16,0374500525,9780374500528,eng,205,37,4,12/31/1988,Farrar Straus Giroux -32767,At the Mountains of Madness,H.P. Lovecraft/China Miéville/S.T. Joshi,3.88,0812974417,9780812974416,eng,224,24866,1608,6/14/2005,Modern Library -32768,At the Mountains of Madness and Other Novels,H.P. Lovecraft/James Turner/S.T. Joshi/August Derleth,4.44,0870540386,9780870540387,eng,458,486,20,12/1/1985,Arkham House Publishers -32769,At the Mountains of Madness and Other Tales of Terror,H.P. Lovecraft,4.25,0345329457,9780345329455,eng,184,21719,491,9/13/1991,Del Rey Books -32773,Mountain Madness (Wilderness #24),David Robbins/David Thompson,4.45,0843943998,9780843943993,eng,170,22,2,6/1/1998,Leisure Books -32774,At the Mountains of Madness and Other Novels of Terror,H.P. Lovecraft/August Derleth/E. Hoffmann Price,4.44,0007127774,9780007127771,eng,552,29,5,6/17/2002,Voyager -32778,The Aeneid,Virgil/Robert Fitzgerald,3.84,0679413359,9780679413356,eng,483,184,21,6/30/1992,Everyman's Library -32779,The Aeneid (Verse Translation),Virgil/Rolfe Humphries,3.84,0024277800,9780024277800,en-US,368,19,2,1/15/1987,Prentice Hall/Scribner/Macmillan -32780,The Iliad,Homer/Andrew Lang,3.86,1904633382,9781904633389,eng,542,64,8,9/1/2011,Collector's Library -32781,War and the Iliad,Simone Weil/Rachel Bespaloff/Mary McCarthy/Christopher E.G. Benfey/Hermann Broch,4.04,1590171454,9781590171455,eng,121,532,57,3/31/2005,NYRB Classics -32782,The Iliad,Homer/Victor G. Ambrus/Nick McCarty,3.86,0753453215,9780753453216,eng,95,8,3,9/15/2000,Kingfisher -32807,Trojan Odyssey (Dirk Pitt #17),Clive Cussler,3.94,0425199320,9780425199329,eng,463,15118,318,12/1/2004,G.P. Putnam's Sons -32810,The Divine Comedy II: Purgatory,Dante Alighieri/Dorothy L. Sayers/C.W. Scott-Giles,4.02,0140440461,9780140440461,en-US,388,369,33,8/30/1981,Penguin Classics -32811,The Divine Comedy,Dante Alighieri/C.H. Sisson/David H. Higgins,4.07,0192835025,9780192835024,en-US,735,177,10,6/18/1998,Oxford University Press -32812,Paradiso (The Divine Comedy #3),Dante Alighieri/Dorothy L. Sayers/Barbara Reynolds,3.95,0140441050,9780140441055,eng,400,11566,222,7/30/1962,Penguin Classics -32813,Modern Reader's Guide to Dante's the Divine Comedy,Joseph Gallagher,4.49,0764804944,9780764804946,eng,256,29,2,5/10/1999,Liguori Publications -32814,The Canterbury Tales,Geoffrey Chaucer/Nevill Coghill,3.49,0140440224,9780140440225,eng,489,1050,74,7/30/1970,Penguin Books -32816,The Canterbury Tales: Fifteen Tales and the General Prologue,Geoffrey Chaucer/V.A. Kolve/Glending Olson,3.95,0393925870,9780393925876,enm,600,1149,41,8/1/2005,W. W. Norton & Company -32823,Fanning the Flame: Bible Cross and Mission,Chris Green/Chris Wright/Paul Douglas Gardner,5.00,0310249872,9780310249870,eng,336,1,1,6/17/2003,Zondervan -32827,From the Earth to the Moon (Extraordinary Voyages #4),Jules Verne,3.78,1598184547,9781598184549,eng,136,17325,421,10/1/2006,Aegypan -32828,The Mammoth Book of New Jules Verne Adventures: Return to the Center of the Earth and Other Extraordinary Voyages New Tales by the Heirs of Jules Verne,Mike Ashley/Eric Brown/Keith Brooke/Johan Heliot/Kevin J. Anderson/Sarah A. Hoyt/Justina Robson/Adam Roberts/Paul Di Filippo/Tim Lebbon/Molly Brown/Tony Ballantyne/Stephen Baxter/Richard A. Lupoff/Sharan Newman/Michael Pagel/Liz Williams/Brian Stableford/James Lovegrove/Ian Watson/Peter Criwther/Laurent Genefirt/F. Gwynplaine MacIntyre/Michael Mallory,3.63,0786714956,9780786714957,eng,498,28,4,2/15/2005,Running Press -32829,Journey to the Center of the Earth (Extraordinary Voyages #3),Jules Verne,3.86,0553213970,9780553213973,eng,240,107189,2510,4/25/2006,Bantam -32830,20 000 Leagues Under The Sea,Pauline Francis/Jules Verne,3.76,0237526883,9780237526887,eng,48,563,32,8/1/2004,Evans Brothers -32831,The Mysterious Island (Extraordinary Voyages #12),Jules Verne/Caleb Carr/Jordan Stump,4.11,0812972120,9780812972122,eng,723,30022,948,4/27/2004,Modern Library -32832,The Lighthouse at the End of the World,Jules Verne,3.64,1589630947,9781589630949,eng,260,1752,40,3/20/2001,Fredonia Books (NL) -32833,The World of Jules Verne,Gonzague Saint Bris/Arthur C. Clarke/Stéphane Heuet/Helen Marx/Saint-Bris Gonzague,4.00,1885586426,9781885586421,eng,85,3,1,11/1/2006,Helen Marx Books -32835,The End of Nana Sahib: The Steam House (Extraordinary Voyages #20),Jules Verne/Agnes D. Kingston,3.59,1410103277,9781410103277,eng,276,199,9,7/19/2003,Fredonia Books (NL) -32836,Around the World in Eighty Days,Jules Verne/Herbert R. Lottman/Jacqueline Rogers,3.93,0451529774,9780451529770,eng,236,156,17,6/7/2005,Signet -32843,Around the World in Eighty Days,Jules Verne/George M. Towle/Bruce Sterling,3.93,0812968565,9780812968569,eng,211,778,35,12/30/2003,Modern Library -32844,The Mysterious Island,Jules Verne/Jordan Stump/Caleb Carr,4.11,0812966422,9780812966428,eng,630,114,14,12/10/2002,Modern Library -32849,Adrift in the Pacific: Two Years Holiday (Extraordinary Voyages #32),Jules Verne,3.99,1410102157,9781410102157,eng,300,1956,39,4/24/2003,Fredonia Books (NL) -32854,Final Payments,Mary Gordon,3.69,0307276783,9780307276780,eng,304,551,78,6/6/2006,Anchor -32872,Sliver of Truth (Ridley Jones #2),Lisa Unger,3.68,0307338460,9780307338464,eng,308,3015,347,1/2/2007,Shaye Areheart Books -32880,The Mothman Prophecies,John A. Keel,3.54,0340824468,9780340824467,eng,352,117,16,3/7/2002,Hodder & Stoughton -32884,Intimate Communion: Awakening Your Sexual Essence,David Deida/Lorrie Bortner,3.99,155874374X,9781558743748,eng,270,265,26,11/1/1995,Health Communications -32893,Letter to a Man in the Fire: Does God Exist and Does He Care?,Reynolds Price,3.70,0684856271,9780684856278,eng,112,113,22,10/17/2000,Scribner -32899,The Promise of Rest,Reynolds Price/Mary Bess Engel,4.00,0684825104,9780684825106,eng,368,253,16,11/5/1996,Scribner -32900,Perfect Match,Jodi Picoult,3.95,0743418727,9780743418720,eng,368,213,33,5/1/2002,Atria Books -32913,Demon Box,Ken Kesey,3.56,0140085300,9780140085303,eng,400,1418,55,8/4/1987,Penguin Books -32915,Sailor Song,Ken Kesey,3.58,0140139974,9780140139976,eng,533,2015,105,7/1/1993,Penguin Books -32916,On the Bus: The Complete Guide to the Legendary Trip of Ken Kesey and the Merry Pranksters and the Birth of Counterculture,Paul Perry/Ken Babbs,3.86,156025114X,9781560251149,eng,205,193,10,1/7/1997,Running Press -32919,The Further Inquiry,Ken Kesey/Ron Bevirt,3.63,0670831743,9780670831746,eng,215,226,3,10/1/1990,Viking Books -32929,Goodnight Moon,Margaret Wise Brown/Clement Hurd,4.28,0060775858,9780060775858,eng,32,276426,4975,1/23/2007,HarperCollins -32936,Goodnight Moon 123: A Counting Book (Over the Moon),Margaret Wise Brown/Clement Hurd,3.57,0061125938,9780061125935,eng,32,198,22,7/1/2007,HarperCollins Publishers -32939,New Rules: Polite Musings from a Timid Observer,Bill Maher,3.71,1594862958,9781594862953,en-US,304,5034,305,7/26/2005,Rodale Books -32941,True Story,Bill Maher,3.11,0743291352,9780743291354,en-US,304,199,28,10/1/2005,Simon Schuster -32942,Does Anybody Have a Problem With That? The Best of Politically Incorrect,Bill Maher,3.51,0345412818,9780345412812,eng,288,189,9,5/20/1997,Ballantine Books -32946,The Outsiders,S.E. Hinton,4.09,0141314575,9780141314570,eng,218,2630,258,3/6/2003,Puffin Group -32947,Outsiders Within: Writing on Transracial Adoption,Jane Jeong Trenka/Julia Chinyere Oparah,4.17,0896087646,9780896087644,eng,300,190,20,8/1/2006,South End Press -32950,Outsiders Vol. 5: The Good Fight,Judd Winick/Matthew Clark/Art Thibert/Pop Mhan/Ron Randall,3.43,140121195X,9781401211950,eng,192,122,12,1/3/2007,DC Comics -32951,Sister Outsider: Essays and Speeches,Audre Lorde,4.49,0895941414,9780895941411,en-GB,190,12105,568,6/1/1984,Crossing Press -32957,Caramelo,Sandra Cisneros,3.90,0679742581,9780679742586,eng,441,9317,700,9/9/2003,Vintage -32961,The House on Mango Street,Sandra Cisneros,3.63,0739322796,9780739322796,en-US,2,108,21,8/30/2005,Random House Audio -32964,Selections from Homer’s Iliad,Homer/Allen Rogers Benner/Mark W. Edwards,4.41,0806133635,9780806133638,eng,522,67,7,12/15/2001,University of Oklahoma Press -32966,The Merchant of Venice,William Shakespeare,3.80,0141013958,9780141013954,eng,240,140,8,4/7/2005,Penguin Classics -32975,Nancy Drew: Girl Detective: #1-4,Carolyn Keene,4.02,0689036914,9780689036910,eng,640,2167,30,10/1/2004,Aladdin -32977,Nancy's Mysterious Letter (Nancy Drew Mystery Stories #8),Carolyn Keene/Walter Karig,3.86,1557091625,9781557091628,eng,210,8279,179,4/1/1996,Applewood Books -32979,The Secret of the Old Clock (Nancy Drew Mystery Stories #1),Carolyn Keene/Russell H. Tandy/Sara Paretsky,3.99,1557091552,9781557091550,eng,210,53304,2118,9/1/1991,Applewood Books -32980,The Mystery at the Moss-covered Mansion (Nancy Drew Mystery Stories #18),Carolyn Keene/Russell H. Tandy/Mildred Benson,3.89,1557092648,9781557092649,eng,215,4920,95,2/1/2003,Applewood Books -32981,The Mystery of the Brass-Bound Trunk (Nancy Drew Mystery Stories #17),Carolyn Keene/Mildred Benson,3.89,155709263X,9781557092632,eng,228,4249,89,12/1/2001,Applewood Books -32986,The Mantle of the Prophet: Religion and Politics in Iran,Roy Mottahedeh,4.08,1851682341,9781851682348,eng,416,412,42,8/15/2000,One World (UK) -32987,The Greatest Generation,Tom Brokaw,4.01,0812975294,9780812975291,eng,464,14233,914,5/1/2001,Random House Trade Paperbacks -32994,Maverick: The Success Story Behind the World's Most Unusual Workplace,Ricardo Semler,4.17,0712678867,9780712678865,eng,336,2979,163,9/6/2001,Random House -33001,Weekend Warriors (Sisterhood #1),Fern Michaels,4.05,0821775898,9780821775899,eng,304,6783,562,7/1/2004,Kensington -33002,The Weekend Novelist,Robert J. Ray/Bret Norris,3.67,0823084507,9780823084500,eng,266,368,36,4/1/2005,Billboard Books -33007,The Week-End Book,Francis Meynell/John Julius Norwich/Francis Maynell,3.67,1585678139,9781585678136,eng,368,31,7,5/4/2006,Harry N. Abrams -33008,North Carolina Weekends,Lynn Setzer,3.71,0895872730,9780895872739,en-US,353,7,1,10/1/2003,John F. Blair Publisher -33013,Far from the Madding Crowd,Thomas Hardy/Margaret Drabble,3.94,037575797X,9780375757976,eng,465,324,40,12/11/2001,Modern Library -33015,Selected Poems,Thomas Hardy/Robert Mezey,3.96,0140436995,9780140436990,eng,320,1509,30,12/1/1998,Penguin Books -33017,Selected Poetry,Thomas Hardy/Samuel Hynes,3.96,0192834916,9780192834911,eng,304,9,0,5/6/1999,Oxford University Press -33024,Underworld (Underworld #1),Greg Cox/Danny McBride/Len Wiseman/Kevin Grevioux,4.09,0743480716,9780743480710,eng,384,2031,79,8/26/2003,Pocket Star Books -33025,Underworld: The Mysterious Origins of Civilization,Graham Hancock,3.95,1400049512,9781400049516,eng,784,1112,70,10/28/2003,Three Rivers Press -33026,The Dream and the Underworld,James Hillman,4.22,0060906820,9780060906825,en-US,256,746,34,7/25/1979,William Morrow Paperbacks -33028,Underworld (Star Wars: The Last of the Jedi #3),Jude Watson,3.96,0439681367,9780439681360,eng,160,840,23,12/1/2005,Scholastic Paperbacks -33029,Star Wars: Underworld - The Yavin Vassilika,Mike Kennedy/Carlos Meglia,3.35,1569716188,9781569716182,eng,120,83,6,10/16/2001,Dark Horse Books -33030,Underworld: Blood Enemy (Underworld #2),Greg Cox/Len Wiseman/Kevin Grevioux,3.91,0743480724,9780743480727,eng,310,548,26,11/30/2004,Pocket Star -33032,Queen of the Underworld,Gail Godwin,2.89,0345483197,9780345483195,eng,368,541,100,1/30/2007,Ballantine Books -33046,Ve perro ¡Ve!,P.D. Eastman/Adolfo Pérez Perdomo,4.09,0375823611,9780375823619,spa,24,33,2,2/25/2003,Random House Para Ninos -33052,Murder in the Cathedral,T.S. Eliot,3.76,0156632772,9780156632775,eng,148,6782,309,3/18/1964,Harcourt Brace Jovanovich/Harvest -33057,Cathedral Forge and Waterwheel: Technology and Invention in the Middle Ages,Frances Gies/Joseph Gies,3.86,0060925817,9780060925819,eng,368,649,56,1/1/1995,Harper Perennial -33064,L'Équilibre du monde,Rohinton Mistry/Françoise Adelstain,4.36,225315086X,9782253150862,fre,890,152,11,6/20/2001,Le Livre de Poche -33075,In the Kitchen with Rosie: Oprah's Favorite Recipes,Rosie Daley/Oprah Winfrey,3.04,0679434046,9780679434047,eng,142,767,31,4/16/1994,Knopf -33130,King Richard II,William Shakespeare/Andrew Gurr,3.77,0521532485,9780521532488,eng,252,89,6,5/5/2003,Cambridge University Press -33131,King Richard II,William Shakespeare/Charles R. Forker,3.77,1903436338,9781903436332,eng,593,501,43,3/21/2002,Bloomsbury Arden Shakespeare -33133,King Richard II,William Shakespeare/Andrew Gurr,3.77,0521297656,9780521297653,eng,240,27,3,11/30/1984,Cambridge University Press -33137,Floating in My Mother's Palm,Ursula Hegi/John Collier/Francine Kass,3.82,0684854759,9780684854755,en-US,192,2738,218,7/3/1998,Touchstone -33139,Tearing the Silence: On Being German in America,Ursula Hegi,3.86,068484611X,9780684846118,eng,304,259,34,7/3/1998,Touchstone -33144,Paint it Black,Janet Fitch,3.48,0316182745,9780316182744,eng,387,10136,978,9/1/2006,Little Brown and Company -33151,The Tempest,William Shakespeare/Peter Hulme/William H. Sherman,3.81,0393978192,9780393978193,eng,355,582,30,12/23/2003,W. W. Norton & Company -33152,The Day of the Tempest (Dragonlance: Dragons of a New Age #2),Jean Rabe,3.65,0786928573,9780786928576,eng,352,1365,16,8/1/2002,Wizards of the Coast -33153,A Tempest,Aimé Césaire/Richard Miller,3.56,1559362103,9781559362108,eng,69,1422,76,5/1/2002,Theatre Communications Group -33155,A Midsummer Night's Dream,William Shakespeare/Harold F. Brooks,3.94,1903436605,9781903436608,en-US,312,2820,76,9/6/1979,Arden Shakespeare -33157,A Midsummer Night's Dream (SparkNotes Literature Guide),SparkNotes/William Shakespeare,3.96,1586634046,9781586634049,eng,64,19,2,1/10/2002,SparkNotes -33158,A Midsummer Night's Dream,William Shakespeare/R.A. Foakes,3.94,0521532477,9780521532471,eng,168,144,10,4/28/2003,Cambridge University Press -33159,Minuit dans le jardin du bien et du mal,John Berendt,3.92,2266075187,9782266075183,fre,388,13,2,6/6/1998,Pocket -33169,Les Essais (mis en français moderne par Claude Pinganaud),Michel de Montaigne,4.24,2869595948,9782869595941,fre,806,6,1,9/14/2002,Arléa -33174,Cliffs Notes on Hugo's Les Miserables,Amy L. Marsland,3.76,0822007355,9780822007357,en-GB,120,21,4,11/1/1968,Cliffs Notes -33175,Les Misérables,Victor Hugo/Norman Denny,4.17,0140444300,9780140444308,eng,1232,3873,459,3/25/1982,Penguin Classics -33179,Hamlet in Purgatory,Stephen Greenblatt,3.94,0691102570,9780691102573,eng,344,219,24,9/15/2002,Princeton University Press -33180,From Hinton to Hamlet: Building Bridges between Young Adult Literature and the Classics,Sarah K. Herz/Donald R. Gallo,4.01,0313324522,9780313324529,en-US,256,64,9,9/1/2005,Greenwood -33185,Hamlet,William Shakespeare/Burton Raffel/Harold Bloom,4.02,0300101058,9780300101058,eng,249,822,58,9/10/2003,Yale University Press -33186,Hamlet Prince of Denmark,William Shakespeare/Philip Edwards/Robert Hapgood,4.02,0521532523,9780521532525,eng,270,149,13,4/21/2003,Cambridge University Press/The New Cambridge Shakespeare -33191,Romeo & Juliet,William Shakespeare/Roma Gill,3.74,019832149X,9780198321491,eng,142,237,18,5/26/2005,Oxford University Press -33192,Romeo and Juliet,William Shakespeare/Paul D. Moliken,3.74,1580495788,9781580495783,eng,111,223,20,3/1/2003,Prestwick House -33194,Romeo and Juliet,William Shakespeare/G. Blakemore Evans/Thomas Moisan,3.74,0521532531,9780521532532,eng,278,273,10,5/1/2003,Cambridge University Press -33195,Shakespeare's Romeo and Juliet,William Shakespeare/Karin Jacobson/Sidney Lamb,3.74,0764585746,9780764585746,eng,231,65,3,5/8/2000,Hungry Minds -33197,Romeo and Juliet (SparkNotes Literature Guide),SparkNotes/Brian Phillips/William Shakespeare,3.91,1586633589,9781586633585,eng,88,52,8,1/10/2002,SparkNotes -33198,Romeo and Juliet,William Shakespeare/René Weis,3.74,1903436915,9781903436912,eng,350,219,13,7/15/2012,Bloomsbury Arden Shakespeare -33247,La Petite Fille du Lac,Christina Schwarz/Marie-Hélène Sabard,3.74,222109249X,9782221092491,fre,363,2,0,3/6/2003,Robert Laffont -33263,South of the Border West of the Sun,Haruki Murakami/Philip Gabriel,3.87,0679767398,9780679767398,eng,213,3778,457,3/14/2000,Vintage -33279,Clock of the Long Now: Time and Responsibility: The Ideas Behind the World's Slowest Computer,Stewart Brand,4.10,0465007805,9780465007806,eng,208,526,63,4/6/2000,Basic Books -33282,Jessica's Bad Idea (Sweet Valley Twins and Friends #31),Francine Pascal/Jamie Suzanne,3.46,0553157272,9780553157277,eng,104,318,6,8/1/1989,Bantam -33288,How to Win Friends and Influence People,Dale Carnegie,4.19,0091906814,9780091906818,eng,268,1842,104,4/6/2006,Vermilion -33291,How to Win Friends and Influence People,Dale Carnegie,4.19,0749307846,9780749307844,en-US,256,210,21,3/31/1994,Cedar Books -33292,How to Win Friends and Influence People for Teen Girls,Donna Dale Carnegie,3.96,0743272773,9780743272773,eng,208,428,44,6/2/2005,Simon Schuster -33293,Naked Economics: Undressing the Dismal Science,Charles Wheelan,4.03,0393324869,9780393324860,eng,288,5719,484,9/17/2003,W. W. Norton Company -33295,The Naked Warrior: Master the Secrets of the Super-Strong - Using Bodyweight Exercises Only,Pavel Tsatsouline,4.00,0938045555,9780938045557,en-US,218,908,63,1/1/2010,Dragon Door Publications -33297,The Naked Ape: A Zoologist's Study of the Human Animal,Desmond Morris,3.95,0385334303,9780385334303,eng,256,6724,325,4/13/1999,Delta -33308,There's No Toilet Paper . . . on the Road Less Traveled: The Best of Travel Humor and Misadventure,Doug Lansky,3.38,1932361278,9781932361278,eng,216,413,53,11/16/2005,Travelers' Tales -33313,Kitchen Confidential: Adventures in the Culinary Underbelly,Anthony Bourdain,4.07,0060899220,9780060899226,eng,312,183882,9427,1/9/2007,Ecco/Harper Perennial -33331,More Than You Know: Finding Financial Wisdom in Unconventional Places,Michael J. Mauboussin,4.09,0231138709,9780231138703,eng,268,1359,48,4/21/2006,Columbia University Press -33333,Searching for God Knows What,Donald Miller,3.92,0785263713,9780785263715,eng,246,23657,692,10/11/2004,Thomas Nelson -33342,The More Than Complete Hitchhiker's Guide (Hitchhiker's Guide #1-4 + short story),Douglas Adams,4.58,0681403225,9780681403222,en-US,624,433,34,11/1/1989,Longmeadow Press -33344,Hitchhiker's Guide To The Galaxy: The Filming of the Douglas Adams classic,Robbie Stamp/Paul Simpson,3.90,155704676X,9781557046765,eng,184,155,18,4/22/2005,Newmarket Press -33348,Different Seasons,Stephen King,4.35,0708823602,9780708823606,en-GB,560,188,24,10/1/1983,Futura -33353,It's Called a Breakup Because It's Broken: The Smart Girl's Break-Up Buddy,Greg Behrendt/Amiira Ruotola (-Behrendt),4.02,0767921968,9780767921961,eng,276,8606,670,9/5/2006,Harmony -33356,Jennifer Government,Max Barry,3.66,0349117624,9780349117621,eng,352,10771,921,2/5/2004,Abacus -33363,Mama Day,Gloria Naylor,4.17,0679721819,9780679721819,eng,312,8922,559,4/23/1989,Vintage -33365,A Feather on the Breath of God,Sigrid Nunez,3.91,0312422733,9780312422738,eng,192,488,66,12/27/2005,Picador -33367,Mitz The Marmoset of Bloomsbury,Sigrid Nunez,3.92,193336856X,9781933368566,eng,128,134,32,2/15/2007,Soft Skull Press -33411,War with the Newts,Karel Čapek/M. Weatherall/R. Weatherall/Ivan Klíma,4.17,0810114682,9780810114685,eng,348,170,22,10/7/1996,Northwestern University Press -33418,Parallel Worlds: A Journey through Creation Higher Dimensions and the Future of the Cosmos,Michio Kaku,4.18,1400033721,9781400033720,eng,361,15096,452,2/14/2006,Anchor -33436,Key Lime Pie Murder (Hannah Swensen #9),Joanne Fluke,3.85,0758210183,9780758210180,eng,342,10361,531,7/31/2007,Kensington Publishing Corporation -33437,Cherry Cheesecake Murder (Hannah Swensen #8),Joanne Fluke,3.91,0758202954,9780758202956,eng,382,12503,532,2/1/2007,Kensington Publishing Corporation -33438,Peach Cobbler Murder (Hannah Swensen #7),Joanne Fluke,3.92,0758201559,9780758201553,eng,384,11633,554,2/1/2006,Kensington -33439,Strawberry Shortcake Murder (Hannah Swensen #2),Joanne Fluke,3.85,1575667215,9781575667218,eng,320,14668,881,2/2/2002,Kensington -33440,Lemon Meringue Pie Murder (Hannah Swensen #4),Joanne Fluke,3.87,0758215045,9780758215048,eng,352,12820,637,2/1/2004,Kensington -33441,Fluke: Or I Know Why the Winged Whale Sings,Christopher Moore,3.75,006056668X,9780060566685,eng,321,35450,1953,6/15/2004,Harper -33442,Sugar Cookie Murder (Hannah Swensen #6),Joanne Fluke,3.75,0758206828,9780758206824,eng,380,11510,691,10/1/2005,Kensington Publishing Corporation -33443,Chocolate Chip Cookie Murder (Hannah Swensen #1),Joanne Fluke,3.71,0758213506,9780758213501,eng,436,31829,1971,9/1/2006,Kensington -33445,Blueberry Muffin Murder (Hannah Swensen #3),Joanne Fluke,3.87,1575667223,9781575667225,eng,310,13669,694,2/1/2003,Kensington -33446,The Wolf Shall Dwell With the Lamb: A Spirituality for Leadership in a Multicultural Community,Eric H.F. Law,3.77,082724231X,9780827242319,eng,144,115,21,1/1/1993,Chalice Press -33447,Focus: The Future of Your Company Depends on It,Al Ries/Laura Ries,4.06,0060799900,9780060799908,eng,320,480,28,9/27/2005,Harper Business -33448,Positioning: The Battle for Your Mind,Al Ries/Jack Trout,4.04,0071359168,9780071359160,en-US,246,126,9,1/18/2001,McGraw-Hill Education -33449,The 22 Immutable Laws of Marketing: Violate Them at Your Own Risk,Al Ries/Jack Trout,4.05,0887306667,9780887306662,en-US,143,13851,462,4/27/1994,Harper Business -33451,Horse Sense: How to Pull Ahead on the Business Track,Al Ries/Jack Trout,3.82,0452267641,9780452267640,eng,240,40,5,3/1/1992,Plume -33453,You Suck (A Love Story #2),Christopher Moore,3.83,0060590297,9780060590291,eng,328,42028,2416,1/16/2007,William Morrow -33454,Bloodsucking Fiends (A Love Story #1),Christopher Moore,3.94,0060735414,9780060735418,eng,300,52843,1868,6/1/2004,HarperCollins -33455,Island of the Sequined Love Nun,Christopher Moore,3.80,0060735449,9780060735449,eng,325,27534,1247,5/25/2004,Harper Perennial -33456,A Dirty Job (Grim Reaper #1),Christopher Moore,4.07,0060590270,9780060590277,en-US,387,90947,5477,3/21/2006,William Morrow -33457,Practical Demonkeeping (Pine Cove #1),Christopher Moore,3.83,0060735422,9780060735425,eng,256,37206,1353,5/25/2004,Perennial / William Morrow / HarperCollins -33458,The Lust Lizard of Melancholy Cove (Pine Cove #2),Christopher Moore,3.87,0060735457,9780060735456,en-US,304,29113,1203,5/25/2004,William Morrow Paperbacks -33464,Granta 7,Bill Buford/Clive Sinclair/Graham Swift/Martin Amis/Rose Tremain/A.N. Wilson/Pat Barker/Julian Barnes/Ursula Bentley/William Boyd/Buchi Emecheta/Alan Judd/Maggie Gee/Kazuo Ishiguro/Adam Mars-Jones/Ian McEwan/Shiva Naipaul/Philip Norman/Christopher Priest/Salman Rushdie/Lisa St. Aubin de Terán,3.94,0140140824,9780140140828,eng,320,2,1,4/1/2013,Granta Books -33473,Will Eisner's New York: Life in the Big City (The New York Tetralogy #1-4),Will Eisner/Neil Gaiman,4.37,039306106X,9780393061062,eng,421,1299,71,10/17/2006,W. W. Norton Company -33474,Graphic Storytelling and Visual Narrative,Will Eisner,4.08,0961472820,9780961472825,en-US,164,1789,30,10/1/1996,Poorhouse Press -33477,The Best of the Spirit,Will Eisner/Neil Gaiman,3.92,1401207553,9781401207557,eng,187,786,95,11/1/2005,DC Comics -33478,The Plot: The Secret Story of the Protocols of the Elders of Zion,Will Eisner/Stephen Eric Bronner/Umberto Eco/Sergei Nilus,3.74,0393328600,9780393328608,eng,160,1109,134,5/17/2006,W. W. Norton Company -33481,Will Eisner Sketchbook,Will Eisner,4.31,1569719608,9781569719602,eng,200,42,2,2/3/2004,Dark Horse Comics -33484,The Conquering Sword of Conan (Conan the Cimmerian #3),Robert E. Howard/Gregory Manchess/Patrice Louinet,4.33,0345461533,9780345461537,eng,416,3697,83,11/29/2005,Del Rey -33488,Conan and the Demons of Khitai,Akira Yoshida/Pat Lee/Paul Lee/C.B. Cebulski,3.31,159307543X,9781593075439,eng,90,130,16,7/25/2006,Dark Horse Books -33489,Call of Cthulhu: Horror Roleplaying (Call of Cthulhu RPG),Sandy Petersen/Lynn Willis,4.45,1568821816,9781568821818,eng,320,7011,39,3/30/2005,Chaosium -33490,The Call of Cthulhu and Other Weird Stories,H.P. Lovecraft,4.22,0141187069,9780141187068,en-GB,420,809,74,7/25/2002,Penguin Books -33491,The Keeper's Companion 2: Prohibition Firearms Tomes & Creatures (Call of Cthulhu RPG),Lynn Willis/Brian M. Sammons/Adam Gauntlett/William Dietze/Greg Henrikson/Charles P. Zaglanis/J. Gordon Olmstead-Dean/M.J. Lempert/James Crowder,3.71,1568821867,9781568821863,eng,170,41,1,12/1/2002,Chaosium -33492,Secrets of New York (Call of Cthulhu RPG),William Jones,3.63,1568821808,9781568821801,eng,180,27,2,6/12/2005,Chaosium -33493,The Keeper's Companion Vol. 1 (Call of Cthulhu RPG),Keith Herber/Brian M. Sammons/William Dietze/Chaosium Inc.,3.92,1568821441,9781568821443,eng,208,65,1,9/15/2003,Chaosium -33494,Secrets of San Francisco: A 1920s Sourcebook for the City by the Bay (Call of Cthulhu RPG),Cody Goodfellow,3.86,1568821875,9781568821870,eng,189,18,0,4/1/2006,Chaosium -33496,Miskatonic University: Dire Secrets & Campus Life (Call of Cthulhu RPG),Sam Johnson/Sandy Antunes,4.12,1568821409,9781568821405,eng,242,38,0,10/12/2005,Chaosium -33497,Call of Cthulhu: Horror Roleplaying (Call of Cthulhu RPG),Sandy Petersen/Lynn Willis,4.45,1568821484,9781568821481,eng,288,34,1,1/1/2000,Chaosium -33498,Shadows of Yog-Sothoth (Call of Cthulhu RPG),Sandy Petersen,3.90,1568821743,9781568821740,eng,180,63,2,8/15/2004,Chaosium -33501,Song of Cthulhu: Tales of the Spheres Beyond Sound,Stephen Mark Rainey/H.P. Lovecraft/Ramsey Campbell/Edward P. Berglund/Fred Chappel/Caitlín R. Kiernan/Thomas F. Montelone/E.A. Lustig/Brian McNaughton/William R. Trotter,3.67,1568821174,9781568821177,eng,211,45,4,12/3/2005,Chaosium -33507,Twenty Thousand Leagues Under the Sea (Extraordinary Voyages #6),Jules Verne/Anthony Bonner,3.88,076072850X,9780760728505,eng,394,142879,3087,4/1/2002,Barnes & Noble -33512,One Thousand White Women: The Journals of May Dodd (One Thousand White Women #1),Jim Fergus,3.88,0312199430,9780312199432,eng,434,100949,7615,2/15/1999,St. Martin's Griffin -33513,The White Man's Burden: Why the West's Efforts to Aid the Rest Have Done So Much Ill and So Little Good,William Easterly,3.83,0143038826,9780143038825,eng,436,4473,232,3/1/2007,Penguin Books -33514,The Elements of Style,William Strunk Jr./E.B. White,4.19,0205313426,9780205313426,en-US,128,53669,2526,9/3/1999,Pearson -33532,Dracula,Bram Stoker,3.99,014062063X,9780140620634,eng,449,1683,120,4/28/1994,Penguin Books -33536,Happy Hour at Casa Dracula (Casa Dracula #1),Marta Acosta,3.59,1416520384,9781416520382,en-US,314,2000,238,7/4/2006,Pocket Books -33537,Frankenstein,Mary Wollstonecraft Shelley/Susan J. Wolfson,3.79,0321399536,9780321399533,eng,431,230,28,7/1/2006,Pearson -33538,World War One British Poets: Brooke Owen Sassoon Rosenberg and Others,Candace Ward,4.02,0486295680,9780486295688,eng,71,469,40,4/22/1997,Dover Publications -33539,World War II: A Short History,Michael J. Lyons,3.90,0130977691,9780130977694,en-US,343,72,6,6/19/2003,Routledge -33541,A Short History of World War I,James L. Stokesbury,3.95,0688001297,9780688001292,eng,352,353,43,2/1/1981,William Morrow Paperbacks -33543,Collected Stories Vol. 2,Richard Matheson/Stanley Wiater/Jack Finney/George Clayton Johnson,4.32,1887368795,9781887368797,eng,453,185,11,3/25/2005,Gauntlet Press -33544,Nightmare At 20 000 Feet,Richard Matheson/Stephen King,4.09,0312878273,9780312878276,eng,336,6502,272,1/5/2002,Tor Books -33546,Earthbound,Logan Swanson/Richard Matheson,3.25,0765311712,9780765311719,eng,223,527,60,4/16/2005,Tor Books -33547,Hell House,Richard Matheson,3.79,0727860992,9780727860996,eng,301,29779,1488,7/1/2004,Severn House Publishers -33550,Noir: Three Novels of Suspense,Richard Matheson,3.69,0765311402,9780765311405,eng,385,150,14,10/1/2005,Forge Books -33551,7 Steps to Midnight,Richard Matheson,3.48,0765308371,9780765308375,en-US,320,423,44,7/18/2003,Forge Books -33554,Duel,Richard Matheson/Ray Bradbury,4.04,0312878265,9780312878269,eng,400,1824,71,1/4/2003,Tor Books -33555,What Dreams May Come,Richard Matheson,3.95,0765308703,9780765308702,eng,288,9298,830,1/1/2004,Tor Books -33557,Richard Matheson's Hell House Book 2,Ian Edginton/Simon Fraser,4.50,1932382720,9781932382723,eng,48,8,0,3/15/2005,IDW Publishing -33559,Bloodlines,Richard Matheson/Mark Dawidziak,4.02,1887368884,9781887368889,eng,520,42,3,1/1/2007,Gauntlet Press -33561,The Bridegroom,Ha Jin,3.77,0375724931,9780375724930,eng,240,1800,168,9/11/2001,Vintage -33563,Under the Red Flag,Ha Jin,3.88,1581950063,9781581950069,eng,224,356,28,6/1/1998,Steerforth -33565,Ocean of Words,Ha Jin,3.81,0375702067,9780375702068,eng,205,419,26,7/28/1998,Vintage -33566,The Bridegroom,Ha Jin,3.77,0099422174,9780099422174,eng,225,49,9,10/4/2001,Vintage -33567,In the Pond,Ha Jin,3.71,0099428164,9780099428169,en-GB,160,1252,122,1/3/2002,Vintage -33569,That Was Then This Is Now,S.E. Hinton,3.91,0140389660,9780140389661,en-US,159,26776,1630,4/1/1998,Speak -33574,Hawkes Harbor,S.E. Hinton,3.13,0765344726,9780765344724,en-US,289,2157,288,10/1/2005,Tor Books -33577,The Collection: The Outsiders / Rumble Fish / That Was Then This Is Now,S.E. Hinton,4.45,0006751156,9780006751151,eng,448,507,31,6/1/1995,HarperCollins Publishers -33581,The Work of Work Servitude Slavery and Labor in Medieval England,Allen J. Frantzen/Ruth Mazo Karras/Madonna J. Hettinger/Elizabeth Stevens Girsch/John Ruffing/George Ovitt Jr./Ross Samson/Niall Brady/Douglas Moffat/David Aers/Louise M. Bishop,3.00,1873448031,9781873448038,eng,240,1,0,8/14/1994,Cruithne Press -33608,East of Eden,John Steinbeck,4.37,0613996984,9780613996983,eng,602,35,1,10/1/1992,Turtleback Books -33609,Katherine,Anya Seton/Philippa Gregory,4.19,155652532X,9781556525322,eng,500,25552,1637,5/1/2004,Chicago Review Press -33614,The Fourth of July Story,Alice Dalgliesh/Marie Nonnast,4.03,0689718764,9780689718762,eng,32,261,19,6/1/1995,Aladdin -33615,Fourth of July Mice!,Bethany Roberts/Doug Cushman,3.24,0618313664,9780618313662,en-US,32,126,16,5/24/2004,Clarion Books -33616,Apple Pie 4th of July,Janet S. Wong/Margaret Chodos-Irvine,3.72,0152057080,9780152057084,eng,40,325,104,5/1/2006,HMH Books for Young Readers -33667,Roses Are Red (Alex Cross #6),James Patterson,4.04,0316693251,9780316693257,eng,400,795,79,11/20/2000,Little Brown and Company -33668,4th of July (Women's Murder Club #4),James Patterson/Maxine Paetro,4.07,0446613363,9780446613361,eng,448,62523,1674,6/1/2006,Vision -33671,Virgin,James Patterson,3.86,0070488207,9780070488205,eng,210,307,28,1/1/1980,McGraw-Hill Companies -33672,Thriller: Stories To Keep You Up All Night,James Patterson/Ted Bell/Raelynn Hillhouse/Gregg Hurwitz/Alex Kava/J.A. Konrath/John Lescroart/David Liss/Eric Van Lustbader/Dennis Lynds/Gayle Lynds/Steve Berry/Chris Mooney/David Morrell/Katherine Neville/Michael Palmer/Douglas Preston/Christopher Reich/James Rollins/M.J. Rose/James Siegel/Grant Blackwood/Brad Thor/M. Diane Vogt/F. Paul Wilson/Lee Child/Lincoln Child/David Dun/Heather Graham/James Grippando/Denise Hamilton/David Liparulo/Christopher Rice,3.50,0778322998,9780778322993,eng,568,2427,208,5/30/2006,Mira Books -33676,Saving the World and Other Extreme Sports (Maximum Ride #3),James Patterson,4.15,0316155608,9780316155601,eng,405,80643,2270,5/29/2007,Little Brown and Company -33681,1st To Die (The Women's Murder Club #1),James Patterson,4.08,0613608704,9780613608701,eng,471,24,4,2/1/2002,Turtleback Books -33682,How to Write a Damn Good Mystery: A Practical Step-by-Step Guide from Inspiration to Finished Manuscript,James N. Frey,3.95,0312304463,9780312304461,eng,288,323,63,2/12/2004,St. Martin's Press -33686,Mediterranean Winter: The Pleasures of History and Landscape in Tunisia Sicily Dalmatia and the Peloponnese,Robert D. Kaplan,3.92,0375714332,9780375714337,eng,272,204,26,3/8/2005,Vintage/Random House (NY) -33690,Balkan Ghosts: A Journey Through History,Robert D. Kaplan,3.94,0312424930,9780312424930,eng,352,3080,287,5/1/2005,Picador -33692,Mediterranean Winter: The Pleasures of History & Landscape in Tunisia Sicily Dalmatia & Greece,Robert D. Kaplan,3.92,037550804X,9780375508042,en-US,272,32,9,2/3/2004,Random House -33699,El librero de Kabul,Åsne Seierstad,3.76,9706519246,9789706519245,spa,285,112,18,11/1/2004,Grupo Océano -33704,Der Buchhändler aus Kabul: Eine Familiengeschichte,Åsne Seierstad,3.76,3546003306,9783546003308,ger,301,1,0,2/1/2003,Claassen Verlag -33705,Does God Know How to Tie Shoes?,Nancy White Carlstrom/Lori McElrath-Eslick,4.20,0802850898,9780802850898,eng,32,0,0,1/31/1997,William B. Eerdmans Publishing Company -33718,The Ties That Bind: Life's Most Essential Knots and Ties,Susan Oliver/Harry Bates,3.67,1584793821,9781584793823,eng,80,3,1,10/26/2004,Harry N. Abrams -33722,The Undomestic Goddess,Sophie Kinsella,3.83,0385338694,9780385338691,eng,404,235032,6613,4/25/2006,Dial Press Trade Paperback -33723,Girls' Night In,Lauren Henderson/Chris Manby/Sarah Mlynowski/Jill A. Davis/Stella Duffy/Lisa Jewell/Marian Keyes/Sophie Kinsella/Adèle Lang/Carole Matthews/Anna Maxted/Megan McCafferty/Alisa Valdes/Isabel Wolff/Meg Cabot/Jessica Adams/Louise Bagshawe/Emily Barr/Jenny Colgan/Lynda Curnyn/Jennifer Weiner,3.63,0373250746,9780373250745,eng,325,12765,185,8/25/2004,Red Dress Ink -33724,Can You Keep a Secret?,Sophie Kinsella,3.84,0440241901,9780440241904,eng,374,333613,9326,12/27/2005,Dell Publishing Company -33726,Crazy For You,Jennifer Crusie,3.78,0312932812,9780312932817,eng,336,15184,445,7/11/2004,St. Martin's Paperbacks -33727,Welcome to Temptation (Dempseys #1),Jennifer Crusie,3.94,0312932804,9780312932800,eng,416,28903,918,7/11/2004,St. Martin's Paperbacks -33729,Faking It (Dempseys #2),Jennifer Crusie,3.92,0312932782,9780312932787,eng,448,16644,665,7/11/2004,St. Martin's Paperbacks -33732,Anyone But You,Jennifer Crusie,3.80,037377138X,9780373771387,eng,283,17677,872,11/21/2006,HQN Books -33734,Getting Rid of Bradley,Jennifer Crusie,3.71,1551668653,9781551668659,eng,248,12528,596,10/25/2001,MIRA -33735,What The Lady Wants,Jennifer Crusie,3.64,155166951X,9781551669519,eng,256,5707,243,10/25/2002,MIRA -33737,Manhunting,Jennifer Crusie,3.77,0373772513,9780373772513,eng,328,13317,697,1/30/2007,HQN -33744,The Unfortunate Miss Fortunes,Jennifer Crusie/Eileen Dreyer/Anne Stuart,3.48,031294098X,9780312940980,eng,391,3252,233,9/10/2007,St. Martin's Paperbacks -33747,La falsificadora,Jennifer Crusie/Marina Mariasch,3.92,9500426544,9789500426541,spa,420,18,1,9/1/2005,Planeta Publishing -33751,Die Naschkatzen,Jennifer Crusie,3.94,3442448964,9783442448968,ger,480,15,1,4/1/2001,Goldmann Verlag -33753,Coffee at Luke's: An Unauthorized Gilmore Girls Gabfest,Jennifer Crusie/Leah Wilson/Gregory Stevenson,3.55,1933771178,9781933771175,eng,197,926,140,4/10/2007,Smart Pop -33762,Bueno en la Cama,Jennifer Weiner/Eduardo García Murillo,3.72,849561863X,9788495618634,spa,415,4,0,6/1/2003,Umbriel -33768,Behaving Like Adults,Anna Maxted,3.54,0060096683,9780060096687,eng,400,2729,105,8/3/2004,William Morrow Paperbacks -33771,Over 100 Truly Astonishing Sex Tips,Anna Maxted,3.44,1858689104,9781858689104,eng,128,9,0,1/1/2000,Carlton Publishing Group -33773,How to Seduce Your Dream Man,Anna Maxted,3.89,0722539010,9780722539019,eng,224,9,2,5/2/2000,HarperCollins Publishers Ltd -33774,Running in Heels,Anna Maxted,3.53,0060988258,9780060988258,eng,432,5826,207,5/28/2002,William Morrow Paperbacks -33775,Kopfüber ins Glück,Anna Maxted,3.54,3442454085,9783442454082,ger,512,0,0,2/1/2003,Goldmann -33777,Venice: Tales of the City,Michelle Lovric,3.68,034911899X,9780349118994,eng,464,34,3,1/20/2005,Abacus -33795,Caucasia,Danzy Senna,4.03,1573227161,9781573227162,eng,413,6206,599,2/1/1999,Riverhead Books -33807,The Talbot Odyssey,Nelson DeMille,3.85,0446358584,9780446358583,eng,544,4874,154,7/1/1991,Grand Central Publishing -33808,The Lion's Game (John Corey #2),Nelson DeMille,4.19,0446679097,9780446679091,eng,720,26514,1008,1/1/2002,Grand Central Publishing -33809,Word of Honor,Nelson DeMille,4.17,0446674826,9780446674829,eng,880,8296,275,9/1/1998,Grand Central Publishing -33810,Plum Island (John Corey #1),Nelson DeMille,4.03,0446679089,9780446679084,eng,592,36285,1662,1/1/2002,Grand Central Publishing -33817,Spencerville,Nelson DeMille,3.67,0751531243,9780751531244,eng,564,49,6,3/1/2008,Sphere -33820,Up Country,Nelson DeMille,4.02,0446611913,9780446611916,eng,880,14537,702,4/1/2003,Vision -33821,Wolfsbrut.,Nelson DeMille,3.85,3548253814,9783548253817,ger,470,2,1,4/1/2002,Ullstein -33824,The Talbot Odyssey,Nelson DeMille,3.85,0751531200,9780751531206,eng,640,28,1,11/2/2000,Sphere -33832,Night Falls Fast: Understanding Suicide,Kay Redfield Jamison,4.10,0375701478,9780375701474,eng,432,5382,224,10/10/2000,Vintage -33833,Before Night Falls,Reinaldo Arenas/Dolores M. Koch,4.17,1852428082,9781852428082,eng,317,3158,252,6/15/2001,Serpents Tail -33835,When True Night Falls (The Coldfire Trilogy #2),C.S. Friedman,4.14,0756403162,9780756403164,en-US,560,8188,139,10/4/2005,DAW -33836,Nightfall,Anne Stuart,3.87,0451404750,9780451404756,eng,416,981,106,3/1/1995,Onyx -33837,When Night Falls,Linda Anderson,3.44,0743411471,9780743411479,eng,436,41,3,10/1/2000,Pocket Books -33838,Before Night Falls,Keith Gray,3.39,1842991248,9781842991244,eng,74,23,6,9/1/2007,Barrington Stoke -33853,Where the Broken Heart Still Beats: The Story of Cynthia Ann Parker,Carolyn Meyer,3.70,0152956026,9780152956028,eng,208,642,80,10/15/1992,HMH Books for Young Readers -33868,In Cahootz: Sequel to Hoodwinked,Quentin Carter,4.47,0977880435,9780977880430,eng,243,499,11,10/1/2006,Triple Crown Publications -33869,Earned Value Project Management,Quentin W. Fleming/Joel M. Koppelman,3.77,1930699891,9781930699892,en-GB,232,66,7,6/30/2006,Project Management Institute -33871,Quintessential Tarantino,Edwin Page,3.25,0714531162,9780714531168,eng,352,50,3,10/1/2005,Marion Boyars Publishers Ltd -33873,The Foundations of Modern Political Thought: Volume One: The Renaissance,Quentin Skinner,4.36,0521220238,9780521220231,eng,332,12,2,2/15/1979,Cambridge University Press -33874,Tara Road,Maeve Binchy,3.90,0752864777,9780752864778,eng,656,44,6,3/2/2006,Orion (an Imprint of The Orion Publishing Group Ltd ) -33876,On the Road to Tara,Aljean Harmetz,4.00,0810936844,9780810936843,eng,224,29,2,9/1/1996,Harry N. Abrams -33880,Selected Stories,Andre Dubus,4.28,0679767304,9780679767305,eng,476,2738,135,12/4/1995,Vintage -33883,Broken Vessels,Andre Dubus,4.33,0879239484,9780879239480,eng,195,351,45,11/1/1992,David R. Godine Publisher -33888,In the Bedroom: Seven Stories,Andre Dubus/Todd Field,4.16,1400030773,9781400030774,eng,148,870,74,1/29/2002,Vintage -33896,Thirteen Moons,Charles Frazier,3.69,0375509321,9780375509322,eng,422,10534,1578,10/3/2006,Random House -33904,Swimming Upstream: Collaborative Approaches to Watershed Management,Paul A. Sabatier/Will Focht/Mark Lubell/Zev Trachtenberg/Arnold Vedlitz/Marty Matlock,3.21,0262693194,9780262693196,eng,344,13,1,4/29/2005,The MIT Press -33906,Story of a Girl,Sara Zarr,3.66,0316014532,9780316014533,eng,192,15106,1558,1/10/2007,Little Brown Books for Young Readers -33914,Approaches to Teaching Atwood's "the Handmaid's Tale" and Other Works (Approaches to Teaching World Literature),Sharon Rose Wilson/Thomas B. Friedman/Shannon Eileen Hengen,3.75,0873527364,9780873527361,eng,215,8,0,1/1/1996,Modern Language Association of America -33917,The Namesake,Jhumpa Lahiri,3.99,0618485228,9780618485222,eng,291,213178,10160,9/1/2004,Mariner Books -33922,Becoming a Goddess of Inner Poise: Spirituality for the Bridget Jones in All of Us,Donna Freitas,3.59,0787976288,9780787976286,eng,239,34,4,9/1/2004,Jossey-Bass -33928,Full House: The Spread of Excellence from Plato to Darwin,Stephen Jay Gould,3.96,0609801406,9780609801406,eng,256,1630,84,9/16/1997,Three Rivers Press (CA) -33929,Eight Little Piggies: Reflections in Natural History,Stephen Jay Gould,4.09,0393311392,9780393311396,en-US,480,721,17,4/17/1994,W.W. Norton & Company -33931,Time's Arrow Time's Cycle: Myth and Metaphor in the Discovery of Geological Time,Stephen Jay Gould,3.92,0674891996,9780674891999,eng,240,321,19,1/1/1988,Harvard University Press -33932,The Hedgehog the Fox & the Magister's Pox: Mending the Gap Between Science & the Humanities,Stephen Jay Gould,3.63,1400051533,9781400051533,eng,288,397,29,3/23/2004,Three Rivers Press -33933,The Panda's Thumb: More Reflections in Natural History,Stephen Jay Gould,4.11,0393308197,9780393308198,eng,343,5726,75,8/17/1992,W. W. Norton Company -33935,Bully for Brontosaurus: Reflections in Natural History,Stephen Jay Gould,4.15,039330857X,9780393308570,eng,544,2608,55,4/17/1992,W. W. Norton Company -33936,Hen's Teeth and Horse's Toes: Further Reflections in Natural History,Stephen Jay Gould,4.10,0393311031,9780393311037,eng,413,1730,43,4/17/1994,W.W. Norton & Company (NY) -33937,The Richness of Life: The Essential Stephen Jay Gould,Stephen Jay Gould/Paul McGarr/Oliver Sacks/Steven Rose,4.25,0393064980,9780393064988,eng,672,363,29,5/17/2007,W. W. Norton Company -33938,The Wheel of Life: A Memoir of Living and Dying,Elisabeth Kübler-Ross,4.16,0684846314,9780684846316,eng,288,1080,112,6/19/1998,Scribner -33953,Persuasive Communication,James B. Stiff/Paul A. Mongeau,3.31,1572307021,9781572307025,en-US,351,4,0,10/18/2002,The Guilford Press -33956,The Spook's Apprentice (The Last Apprentice / Wardstone Chronicles #1),Joseph Delaney,3.99,0099456451,9780099456452,eng,325,2956,242,6/30/2005,Red Fox -33957,Spooks: The Haunting of America: The Private Use of Secret Agents,Jim Hougan,4.12,0688033555,9780688033552,eng,478,24,1,8/1/1978,William Morrow & Company -33973,No More Bull!: The Mad Cowboy Targets America's Worst Enemy: Our Diet,Howard F. Lyman/Glen Merzer/Joanna Samorow-Merzer/Caldwell B. Esselstyn Jr.,3.93,0743286987,9780743286985,eng,288,256,28,9/20/2005,Scribner -33975,Animal E.R.: Extraordinary Stories Hope Healing from 1 World's Leading Veterinary Hospitals,Vicki Constantine Croke/Vicki Constantine Croke,3.95,0525945075,9780525945079,eng,194,12,3,11/1/1999,Dutton Adult -33978,ER Vets: Life in an Animal Emergency Room,Donna M. Jackson,3.91,0618436634,9780618436637,eng,96,110,33,11/28/2005,HMH Books for Young Readers -33992,The 9/11 Commission Report: Final Report of the National Commission on Terrorist Attacks Upon the United States,National Commission on Terrorist Attacks Upon The United States,3.60,0393326713,9780393326710,eng,592,3272,229,7/22/2004,W. W. Norton Company -33993,Citizen Girl,Emma McLaughlin/Nicola Kraus,2.40,0743266862,9780743266864,en-US,305,5415,577,10/4/2005,Washington Square Press -33999,On the Origin of Species by Means of Natural Selection,Charles Darwin/Michael T. Ghiselin,3.98,0486450066,9780486450063,eng,321,185,14,6/23/2006,Dover Publications -34002,The Origin of Species/The Voyage of the Beagle,Charles Darwin/Richard Dawkins,4.15,1400041279,9781400041275,eng,1024,513,34,10/14/2003,Everyman's Library -34003,Genetics and the Origin of Species,Theodosius Dobzhansky/Niles Eldredge/Stephen Jay Gould,4.14,0231054750,9780231054751,eng,364,26,1,7/22/1982,Columbia University Press -34014,Organized Crime,Michael D. Lyman/Gary W. Potter,3.80,0131730363,9780131730366,eng,496,12,1,7/1/2006,Prentice Hall -34015,Physics of Fully Ionized Gases,Lyman S. Spitzer Jr.,4.25,0486449823,9780486449821,eng,192,4,1,7/7/2006,Dover Publications -34016,Criminal Investigation: The Art and the Science,Michael D. Lyman,4.21,0131198777,9780131198777,en-US,536,1,0,10/19/2004,Prentice Hall -34050,A Collection of Rudyard Kipling's Just So Stories,Rudyard Kipling/Christopher Corr,4.09,0763626295,9780763626297,en-US,128,177,19,10/7/2004,Candlewick -34052,Collected Stories,Rudyard Kipling,4.06,1857151992,9781857151992,eng,911,13,3,10/20/1994,Everyman -34053,Just So Stories,Rudyard Kipling,4.09,0517266555,9780517266557,eng,210,39365,824,8/5/2003,Gramercy Books -34055,If: A Father's Advice to His Son,Rudyard Kipling/Charles R. Smith Jr.,4.39,0689877994,9780689877995,eng,40,581,37,3/27/2007,Atheneum Books for Young Readers -34067,Much Ado about Nothing,William Shakespeare/Jacky Bratton,4.07,0521598222,9780521598224,eng,284,9,3,5/2/1998,Cambridge University Press -34069,Much Ado about Nothing,William Shakespeare/Roma Gill,4.07,0198321473,9780198321477,eng,160,37,5,12/2/2004,Oxford University Press USA -34080,The Waste Land,T.S. Eliot/Michael North,4.11,0393974995,9780393974997,eng,320,35549,680,12/1/2000,W.W. Norton & Company -34081,The Annotated Waste Land with Eliot's Contemporary Prose,T.S. Eliot/Lawrence Rainey,4.11,0300119941,9780300119947,eng,304,227,23,8/28/2006,Yale University Press -34082,The Waste Land and Other Writings,T.S. Eliot/Mary Karr,4.21,0375759344,9780375759345,eng,272,3124,74,1/8/2002,Modern Library -34084,The Waste Lands (The Dark Tower #3),Stephen King/Ned Dameron,4.24,0670032565,9780670032563,eng,422,145740,3382,6/23/2003,Viking Adult -34087,Timequake,Kurt Vonnegut Jr.,3.72,0224036408,9780224036405,eng,219,75,7,10/17/1997,Jonathan Cape -34153,Climb the Family Tree Jesse Bear!,Nancy White Carlstrom/Bruce Degen,3.49,0689807015,9780689807015,en-US,32,63,9,7/1/2004,Aladdin -34154,What a Scare Jesse Bear,Nancy White Carlstrom/Bruce Degen,3.47,0689851901,9780689851902,en-US,32,104,21,3/21/2012,Aladdin -34155,Political Philosophy: A Beginners' Guide for Students and Politicians,Adam Swift,3.93,0745635326,9780745635323,eng,240,175,6,8/4/2006,Polity Press -34156,Liberals and Communitarians,Stephen Mulhall/Adam Swift,4.00,0631198199,9780631198192,eng,388,28,2,5/1/1996,Wiley-Blackwell -34157,Political Philosophy: A Beginner's Guide for Students and Politicians,Adam Swift,3.93,0745628478,9780745628479,eng,194,6,0,10/15/2001,Polity Press -34161,Seven Men and Two Others,Max Beerbohm,3.88,1853754153,9781853754159,eng,288,58,8,1/9/2001,Carlton Publishing Group -34168,Dakota,Matt Braun,3.72,0312997833,9780312997830,eng,306,33,5,8/30/2005,St. Martin's Paperbacks -34172,El Paso,Matt Braun,3.35,0312970749,9780312970741,eng,256,23,4,7/15/1999,St. Martin's Paperbacks -34177,The Visual Arts: A History,Hugh Honour/John Fleming,3.85,0810935937,9780810935938,eng,960,0,0,12/1/2002,Harry N. Abrams -34178,The Visual Arts: A History Volume 2,Hugh Honour/John Fleming,4.00,0131551132,9780131551138,eng,604,6,0,5/27/2005,Prentice Hall -34179,The Visual Arts: A History,Hugh Honour/John Fleming,3.85,0131935070,9780131935075,eng,936,38,3,5/1/2005,Prentice Hall -34187,The Brooklyn Bridge (Wonders of the World),Elizabeth Mann/Alan Witschonke,4.44,1931414165,9781931414166,eng,46,37,6,9/12/2006,Mikaya Press -34191,John Adams,John Patrick Diggins/Arthur M. Schlesinger Jr.,3.88,0805069372,9780805069372,eng,224,383,47,6/11/2003,Times Books -34199,The I Ching or Book of Changes,Richard Wilhelm/Cary F. Baynes/C.G. Jung,4.19,0140192077,9780140192070,eng,739,126,12,6/29/1989,Penguin Books -34200,The Complete I Ching: The Definitive Translation,Anonymous/Alfred Huang,4.28,0892811455,9780892811458,eng,539,330,16,4/15/2004,Inner Traditions International -34207,I Ching: The Book of Change,Anonymous/John Blofeld,4.19,0140193359,9780140193350,eng,240,42,7,8/1/1991,Penguin Books -34208,The Everyday I Ching,Sarah Dening,4.19,0312151225,9780312151225,eng,224,23,3,1/15/1997,St. Martin's Griffin -34221,Richard Matheson's Hell House Book 1,Ian Edginton/Simon Fraser,4.08,1932382607,9781932382600,eng,48,13,0,1/11/2005,IDW Publishing -34222,H.G. Wells' The War of the Worlds (Graphic Novel),Ian Edginton/D'Israeli,3.87,1593074743,9781593074746,eng,70,367,23,4/19/2006,Dark Horse -34224,New Complete Guide to Sewing,Reader's Digest Association,4.23,0762104201,9780762104208,eng,384,420,37,10/24/2002,Readers Digest. -34227,A Reader's Digest Songbook: Remembering Yesterday's Hits,William L. Simon,4.38,0895772493,9780895772497,eng,12,13,0,10/1/1987,Reader's Digest Association -34229,Complete Guide to the Bible,Reader's Digest Association,4.58,0762100737,9780762100736,eng,448,12,3,8/24/1998,Readers Digest -34241,焼きたて!!ジャぱん 1,Takashi Hashiguchi/橋口 たかし,3.97,4091263917,9784091263919,jpn,187,6,0,3/18/2002,小学館 -34247,200 Quilt Blocks: To Mix and Match,Davina Thomas,4.09,0896892026,9780896892026,eng,128,5,0,10/1/2005,Krause Publications -34251,The Girl in the Glass,Jeffrey Ford,3.72,0060936193,9780060936198,eng,304,785,126,8/16/2005,William Morrow Paperbacks -34262,Peter and the Starcatchers (Peter and the Starcatchers #1),Dave Barry/Ridley Pearson/Greg Call,4.03,078684907X,9780786849079,eng,452,66017,4284,5/1/2006,Disney-Hyperion -34264,Peter Pan in Scarlet,Geraldine McCaughrean/Scott M. Fischer,3.55,1416918086,9781416918080,eng,307,5421,360,10/5/2006,Margaret K. McElderry Books -34266,It's All Too Much: An Easy Plan for Living a Richer Life with Less Stuff,Peter Walsh,3.85,0743292642,9780743292641,eng,230,4644,672,1/1/2007,Free Press -34268,Peter Pan,J.M. Barrie/Michael Hague,4.08,0805072454,9780805072457,eng,176,213538,5609,10/1/2003,Henry Holt and Co. -34270,The Callahan Chronicals (Callahan's #1-3),Spider Robinson,4.31,0812539370,9780812539370,eng,416,2326,93,10/15/1997,Tor -34281,The Pinhoe Egg (Chrestomanci #6),Diana Wynne Jones,4.06,0061131245,9780061131240,eng,515,6899,327,10/3/2006,Greenwillow Books -34284,The Chronicles of Chrestomanci Vol. 1 (Chrestomanci #1-2),Diana Wynne Jones,4.21,006447268X,9780064472685,en-US,598,13864,391,4/10/2007,Greenwillow Books -34288,The Time of the Ghost,Diana Wynne Jones,3.66,0064473546,9780064473545,eng,291,2122,123,1/1/1981,HarperTrophy -34295,Whitethorn Woods,Maeve Binchy,3.61,0307265781,9780307265784,eng,339,11498,1016,3/6/2007,Knopf Publishing Group -34296,The Builders,Maeve Binchy,3.97,1902602684,9781902602684,eng,87,664,82,11/1/2006,New Island Books -34298,Dublin 4,Maeve Binchy,3.64,0099498588,9780099498582,en-US,256,2155,59,5/4/2006,Arrow -34299,Victoria Line Central Line,Maeve Binchy,3.60,0099498634,9780099498636,eng,432,957,53,7/6/2006,Arrow -34301,Echoes,Maeve Binchy,3.80,0440122090,9780440122098,en-US,496,9434,455,2/10/1997,Dell Publishing Company -34303,Firefly Summer,Maeve Binchy,3.91,0099498669,9780099498667,eng,928,10463,290,8/3/2006,Arrow -34307,Aches & Pains,Maeve Binchy/Wendy Shea,3.53,0385335105,9780385335102,en-US,99,356,30,6/13/2000,Delacorte Press -34310,The Glass Lake,Maeve Binchy,3.93,0752876872,9780752876870,eng,704,17624,670,6/29/2005,The Orion Publishing Group Ltd -34312,The Copper Beech,Maeve Binchy,3.91,0752876813,9780752876818,eng,407,18720,386,6/1/2005,Orion -34317,Dr. Jekyll and Mr. Hyde (Bullseye Chillers),Kate McMullan/Paul Van Munching/Glenn Dean/Kate McCullan/Robert Louis Stevenson,3.81,0394863658,9780394863658,eng,96,30,4,2/12/1984,Random House Books for Young Readers -34318,Harry Potter and the Sorcerer's Stone (Harry Potter #1),J.K. Rowling/Mary GrandPré,4.47,0786222727,9780786222728,eng,424,147,13,11/12/1999,Thorndike Press Large Print -34319,Code Word Kangaroo (Adam Sharp #6),George E. Stanley/Guy Francis,4.14,0375826890,9780375826894,eng,48,5,0,9/28/2004,Random House Books for Young Readers -34320,Operation Spy School (Adam Sharp #4),George E. Stanley/Guy Francis,3.80,0375824049,9780375824043,eng,44,0,0,9/23/2003,Random House Books for Young Readers -34321,The Empty Envelope (A to Z Mysteries #5),Ron Roy/John Steven Gurney,4.06,0679890548,9780679890546,eng,96,82,12,9/9/2009,Random House Books for Young Readers -34324,The School Skeleton (A to Z Mysteries #19),Ron Roy/John Steven Gurney,3.99,0375813683,9780375813689,en-US,96,1844,70,1/28/2003,Random House Books for Young Readers -34325,Moose Master (Adam Sharp #5),George E. Stanley/Guy Francis,4.12,0375826882,9780375826887,en-US,48,12,2,4/27/2004,Random House Books for Young Readers -34327,La Biblia de los Critales: Guia definitiva de los cristales (Cuerpo-Mente),Judy Hall,4.38,8484451143,9788484451143,spa,383,6,0,1/1/2006,Gaia Books -34343,Eva Hesse Drawing,Catherine de Zegher/Elisabeth Sussman,4.55,0300116187,9780300116182,eng,344,51,6,12/28/2006,Yale University Press -34385,Inferno,Dante Alighieri/Anthony M. Esolen,4.00,034548357X,9780345483577,eng,560,219,25,10/25/2005,Modern Library -34407,The Pirates Laffite: The Treacherous World of the Corsairs of the Gulf,William C. Davis,3.50,0156032597,9780156032599,eng,756,217,37,5/1/2006,Mariner Books -34420,Wither (Wendy Ward #1),J.G. Passarella,3.71,0671024817,9780671024819,eng,438,545,40,3/1/2000,Pocket Books -34426,Howl's Moving Castle Film Comic Vol. 1,Hayao Miyazaki/Diana Wynne Jones,4.41,1421500914,9781421500911,eng,176,847,40,8/2/2005,VIZ Media LLC -34427,Howl's Moving Castle Picture Book (Howl's Moving Castle Film Comics #1),Hayao Miyazaki/Diana Wynne Jones,4.41,1421500906,9781421500904,eng,184,1696,86,9/1/2005,VIZ Media LLC -34435,The Theban Plays: Antigone King Oidipous & Oidipous at Colonus (Focus Classical Library),Sophocles/Ruby Blondell,3.97,1585100374,9781585100378,en-US,248,57,3,12/1/2001,Focus -34436,The Complete Greek Tragedies Volume 2: Sophocles,Sophocles/David Grene/Richmond Lattimore,4.14,0226307654,9780226307657,eng,472,32,6,8/1/1992,University of Chicago Press -34440,Doctor Faustus,Thomas Mann/John E. Woods,4.08,0375701168,9780375701160,eng,535,7825,314,7/27/1999,Vintage -34443,Doctor Faustus,Christopher Marlowe/David Wootton,3.80,0872207293,9780872207295,eng,192,102,8,3/15/2005,Hackett Publishing Company Inc. -34444,Doctor Faustus,Thomas Mann/T.J. Reed/H.T. Lowe-Porter,4.08,0679409963,9780679409960,eng,580,88,14,6/2/1992,Everyman's Library -34449,The Makioka Sisters,Jun'ichirō Tanizaki/Edward G. Seidensticker,4.03,0679761640,9780679761648,eng,530,4596,441,9/26/1995,Vintage -34452,Many Lives Many Masters: The True Story of a Prominent Psychiatrist His Young Patient and the Past Life Therapy That Changed Both Their Lives,Brian L. Weiss,4.16,0446520594,9780446520591,eng,217,24345,1914,3/12/1996,Grand Central Publishing -34460,Quicksand,Jun'ichirō Tanizaki/Howard Hibbett,3.65,0679760229,9780679760221,eng,224,1060,90,6/24/1995,Vintage -34462,Naomi,Jun'ichirō Tanizaki/Anthony H. Chambers,3.69,0375724745,9780375724749,en-GB,237,3825,272,4/10/2001,Vintage -34463,Seven Japanese Tales,Jun'ichirō Tanizaki/Howard Hibbett,3.85,0679761071,9780679761075,eng,298,1291,86,10/1/1996,Vintage -34468,A Cat a Man and Two Women,Jun'ichirō Tanizaki/Paul McCarthy,3.80,4770016050,9784770016058,eng,164,972,74,4/1/1992,Kodansha -34472,The Reed Cutter & Captain Shigemoto's Mother,Jun'ichirō Tanizaki/Anthony H. Chambers,3.67,0679757910,9780679757917,eng,180,137,14,6/24/1995,Vintage -34473,In Praise of Shadows,Jun'ichirō Tanizaki/Edward G. Seidensticker/Thomas J. Harper/Charles Moore,4.09,0918172020,9780918172020,eng,56,6674,480,12/1/1977,Leete's Island Books -34480,Le chat son maître et ses deux maîtresses,Jun'ichirō Tanizaki,3.80,2070401677,9782070401673,fre,210,29,2,1/23/1997,Gallimard -34484,Small Gods (Discworld #13),Terry Pratchett,4.29,0552152978,9780552152976,eng,400,83353,1758,8/1/2005,Corgi -34492,Wintersmith (Discworld #35; Tiffany Aching #3),Terry Pratchett,4.24,0060890312,9780060890315,eng,325,42146,1230,10/1/2006,HarperTempest -34493,Strata,Terry Pratchett,3.49,0552133256,9780552133258,eng,285,9019,265,4/22/1988,Corgi -34495,The Bromeliad Trilogy (Omnibus: Truckers / Diggers / Wings),Terry Pratchett,4.07,0060094931,9780060094935,eng,502,5761,191,9/30/2003,HarperCollins -34497,The Color of Magic (Discworld #1; Rincewind #1),Terry Pratchett,4.00,0060855924,9780060855925,eng,228,239617,4478,9/13/2005,Harper -34498,The Truth (Discworld #25; Industrial Revolution #2),Terry Pratchett,4.27,0413771164,9780413771162,eng,336,43964,880,2/21/2002,Bloomsbury Methuen Drama -34501,A Hat Full of Sky (Discworld #32; Tiffany Aching #2),Terry Pratchett,4.30,055255264X,9780552552646,eng,352,51562,1294,5/5/2005,Corgi Childrens -34503,The Last Hero (Discworld #27; Rincewind #7),Terry Pratchett/Paul Kidby,4.17,0060507772,9780060507770,eng,176,26427,517,8/20/2002,Harper Voyager -34504,Wyrd Sisters (Discworld #6; Witches #2),Terry Pratchett,4.13,0061020664,9780061020667,eng,265,72785,1911,2/6/2001,Hartorch -34505,A Tourist Guide to Lancre,Terry Pratchett/Stephen Briggs/Paul Kidby,4.06,0552146080,9780552146081,eng,32,1640,19,5/1/1998,Transworld Publishers -34506,The Light Fantastic (Discworld #2; Rincewind #2),Terry Pratchett,3.97,0061020702,9780061020704,eng,277,91479,2031,2/2/2000,HarperTorch -34507,Equal Rites (Discworld #3; Witches #1),Terry Pratchett,4.03,0060855908,9780060855901,eng,228,110062,2261,9/13/2005,Harper Perennial -34508,Interesting Times: The Play,Stephen Briggs/Terry Pratchett,4.15,0413772195,9780413772190,eng,102,21339,176,7/4/2002,Bloomsbury Methuen Drama -34509,Nanny Ogg's Cookbook,Terry Pratchett/Stephen Briggs/Tina Hannan/Paul Kidby,4.00,0552146730,9780552146739,eng,176,5517,143,11/1/2001,Corgi -34510,Moving Pictures (Discworld #10; Industrial Revolution #1),Terry Pratchett,3.94,0552152943,9780552152945,eng,396,52713,817,4/1/2005,Corgi -34515,Darwin's Watch (The Science of Discworld #3),Terry Pratchett/Ian Stewart/Jack Cohen,3.94,0091898242,9780091898243,eng,344,3601,95,8/3/2006,Ebury Press -34517,Reaper Man (Discworld #11; Death #2),Terry Pratchett,4.28,0552152951,9780552152952,eng,352,63287,1445,4/1/2005,Corgi -34521,Only You Can Save Mankind (Johnny Maxwell #1),Terry Pratchett,3.72,0060541873,9780060541873,eng,210,9778,317,7/25/2006,HarperTrophy -34523,The Flying Sorcerers: More Comic Tales of Fantasy,Peter Haining/Roald Dahl/Terry Pratchett/Angela Carter/Arthur C. Clarke/Kurt Vonnegut Jr./C.S. Lewis/P.G. Wodehouse/Michael Moorcock/L. Sprague de Camp/Fletcher Pratt/Eric Knight/Mervyn Peake/Piers Anthony/John Collier/Fredric Brown/Nelson S. Bond/Thomas M. Disch/Robert Bloch/Stephen Leacock/John Wyndham/Stanisław Lem/Cordwainer Smith/Robert Sheckley/William F. Nolan/Harry Harrison,3.99,1857237250,9781857237252,eng,383,2226,19,2/4/1999,Orbit -34524,Where's My Cow? (Discworld #34.5),Terry Pratchett/Melvyn Grant,4.11,038560937X,9780385609371,eng,32,9116,294,10/1/2005,Doubleday -34529,Lords and Ladies (Discworld #14; Witches #4),Terry Pratchett,4.17,055215315X,9780552153157,eng,400,53721,814,8/1/2005,Corgi -34530,Guards! Guards! (Discworld #8),Terry Pratchett,4.33,0613572173,9780613572170,eng,355,67,2,7/31/2001,Turtleback Books -34532,Hogfather (Discworld #20; Death #4),Terry Pratchett,4.23,0552154288,9780552154284,eng,432,60162,1373,10/2/2006,Corgi -34534,The Amazing Maurice and His Educated Rodents (Discworld #28),Terry Pratchett,4.05,006001234X,9780060012342,eng,256,29309,952,11/6/2001,HarperCollins -34535,Rincewind the Wizzard,Terry Pratchett,4.21,0739403451,9780739403457,en-US,649,1585,24,1/1/1999,Science Fiction Book Club -34539,Going Postal (Discworld #33),Terry Pratchett,4.38,0060013133,9780060013134,en-US,377,969,114,9/28/2004,Harper -34540,The Last Hero: A Discworld Fable (Discworld #27),Terry Pratchett/Paul Kidby,4.17,057506885X,9780575068858,eng,160,830,83,10/18/2001,Gollancz -34541,Carpe Jugulum (Discworld #23; Witches #6),Terry Pratchett,4.14,0061051586,9780061051586,eng,296,41899,746,9/8/1999,Harper Voyager -34542,Truckers (Bromeliad Trilogy #1),Terry Pratchett,3.92,0060094966,9780060094966,eng,261,7464,176,4/1/2004,HarperCollins -34544,X-Statix Volume 1: Good Omens,Peter Milligan/Mike Allred/Paul Pope,3.97,0785110593,9780785110590,eng,128,400,17,1/1/2003,Marvel -34545,Elliott Erwitt: Snaps,Murray Sayle/Charles Flowers/Elliott Erwitt,4.72,071484330X,9780714843308,en-GB,544,102,6,6/1/2003,Phaidon Press -34548,If Chins Could Kill: Confessions of a B Movie Actor,Bruce Campbell,4.00,0312291450,9780312291457,eng,344,13622,731,8/24/2002,L.A. Weekly Books -34558,Real Ultimate Power: The Official Ninja Book,Robert Hamburger,4.00,080652569X,9780806525693,eng,193,997,117,7/1/2004,Citadel -34570,Team Yankee,Harold Coyle,4.07,0425110427,9780425110423,en-US,330,8870,131,9/1/1988,Berkley -34578,At Sword's Point (Knights of the Blood #2),Scott MacMillan/Katherine Kurtz,3.52,0451454073,9780451454072,eng,352,185,8,8/1/1994,Roc -34596,Treasure of Khan (Dirk Pitt #19),Clive Cussler/Dirk Cussler,3.91,0399153691,9780399153693,eng,552,10987,332,11/28/2006,G.P. Putnam's Sons -34600,The Treasure Principle: Unlocking the Secret of Joyful Giving,Randy Alcorn,4.13,1590525086,9781590525081,en-US,120,4088,290,10/9/2001,Multnomah -34601,Snow Treasure,Marie McSwigan/Mary Reardon,3.97,0142402249,9780142402245,eng,208,5279,489,10/5/2006,Puffin Books -34605,The Damnation Game,Clive Barker,3.82,0425188930,9780425188934,eng,433,15857,350,11/5/2002,Berkley Books -34607,The Damnation Game,Clive Barker,3.82,0517681137,9780517681138,eng,374,0,0,1/13/1989,Random House -34612,Texas Hold'em for Dummies,Mark Harlan,3.82,047004604X,9780470046043,eng,267,103,8,10/1/2006,Wiley Publishing -34627,Soldiers of Destruction: The SS Death's Head Division 1933-1945,Charles W. Sydnor Jr.,3.99,0691008531,9780691008530,eng,375,71,7,5/21/1990,Princeton University Press -34628,Spy Catcher: The Candid Autobiography of a Senior Intelligence Officer,Peter Maurice Wright/Paul Greengrass,3.73,0670820555,9780670820559,eng,392,159,22,7/30/1987,Viking Penguin Inc. -34637,Nobody Loves a Centurion (SPQR #6),John Maddox Roberts,4.14,0312320191,9780312320195,eng,288,641,25,10/10/2003,St. Martin's Griffin -34641,The Centurion's Empire,Sean McMullen,3.61,0812564758,9780812564754,eng,416,157,11,5/15/1999,Tor Science Fiction -34646,The Centurions (The Centurions #1),Damion Hunter,4.14,0345296915,9780345296917,eng,384,44,7,11/12/1981,Ballantine Books -34657,The Heights of Courage: A Tank Leader's War on the Golan,Avigdor Kahalani,4.20,0275942694,9780275942694,eng,234,106,11,2/28/1992,Praeger Publishers -34658,Shattered Sword: The Untold Story of the Battle of Midway,Jonathan Parshall/Anthony Tully,4.42,1574889230,9781574889239,eng,612,1876,161,11/1/2005,Potomac Books -34662,Shattered Air: A True Account of Catastrophe and Courage on Yosemite's Half Dome,Bob Madgic/William L. Crary/Adrian Esteban,3.77,1580801420,9781580801423,en-US,264,501,76,2/6/2007,Burford Books -34663,Shattered Bonds: The Color of Child Welfare,Dorothy Roberts,4.19,0465070590,9780465070596,eng,352,153,10,12/25/2002,Civitas Books -34672,Shattered Dance,Caitlin Brennan,3.91,037380248X,9780373802487,eng,442,426,12,9/26/2006,Luna Books -34678,The Shattered Land (Eberron: The Dreaming Dark #2),Keith Baker,3.65,0786938218,9780786938216,eng,374,515,21,2/7/2006,Wizards of the Coast -34687,Koko's Kitten,Francine Patterson/Ronald H. Cohn,4.30,0590444255,9780590444255,eng,32,963,92,6/1/1987,Scholastic Press -34706,13th Directorate,Barry Chubin,2.62,0804104557,9780804104555,eng,0,8,1,2/28/1989,Ivy Books -34708,The Aviators (Brotherhood of War #8),W.E.B. Griffin,4.25,0515100536,9780515100532,eng,464,2567,33,5/1/1989,G.P. Putnam's Sons -34760,All I Really Need to Know I Learned in Kindergarten,Robert Fulghum,4.03,034546639X,9780345466396,eng,240,17354,650,5/4/2004,Ballantine Books -34762,Legends Lies Cherished Myths of World History,Richard Shenkman,3.47,0060922559,9780060922559,eng,320,222,16,11/29/2011,William Morrow Paperbacks -34766,Trevayne,Robert Ludlum,3.62,0752858629,9780752858623,en-GB,528,20,1,10/7/2004,Orion -34768,Trevayne,Jonathan Ryder/Robert Ludlum,3.62,044019069X,9780440190691,en-GB,469,9,0,6/1/1986,Dell -34771,Red Phoenix,Larry Bond,4.02,0751504351,9780751504354,en-US,791,26,2,4/25/1995,Warner Books (NY) -34783,Boomers Xers and Other Strangers: Understanding the Generational Differences that Divide Us,Rick Hicks/Kathy Hicks,3.36,1561796778,9781561796779,eng,384,28,4,10/1/1999,Focus on the Family Publishing -34789,The Boomer Bible,R.F. Laird,4.23,1563050757,9781563050756,eng,880,209,28,1/10/1991,Workman Publishing Company -34816,A Matter of Trust (Justice #0),Radclyffe,4.21,1933110333,9781933110332,eng,240,942,26,2/1/2006,Bold Strokes Books -34819,A Matter of Trust: The Case of the Mesmerizing Boss / The Case of the Confirmed Bachelor,Diana Palmer,4.04,0373771835,9780373771837,eng,440,193,3,12/27/2005,Harlequin Books -34833,A Matter Of Trust,Deb Stover,3.31,0821764608,9780821764602,eng,256,4,0,1/1/2000,Kensington -34835,A Matter of Trust,Penny Jordan,2.61,0373117191,9780373117192,eng,224,36,5,12/23/1994,Harlequin Presents -34844,Mortal Fear (Mississippi #1),Greg Iles,4.00,0451180410,9780451180414,eng,704,566,59,2/1/1998,Signet -34845,Mortal Fear,Robin Cook,3.75,0330307606,9780330307604,eng,364,3996,80,3/23/1989,Pan -34852,Murder On The Glitter Box (Steve Allen Mystery #3),Steve Allen,3.60,1575662450,9781575662459,eng,348,98,9,1/1/1998,Kensington -34856,Lonesome Dove,Larry McMurtry,4.49,068487122X,9780684871226,eng,864,505,63,11/10/2000,Simon & Schuster -34858,Comanche Moon,Larry McMurtry,4.03,0684807548,9780684807546,eng,752,202,30,11/6/1997,Simon & Schuster -34866,Night of the Fox (Dougal Munro and Jack Carter #1),Jack Higgins,3.92,0671728202,9780671728205,eng,352,4908,89,1/25/2008,Pocket Books -34869,Mitla Pass,Leon Uris,3.84,0553282808,9780553282801,eng,495,3256,68,10/1/1989,Bantam -34871,The Complete Clive Barker's The Great And Secret Show,Chris Ryall/Gabriel Rodríguez/Clive Barker,4.23,1600100295,9781600100291,eng,136,17422,67,11/8/2006,IDW Publishing -34873,The Great And Secret Show (Book of the Art #1),Clive Barker,4.05,000617695X,9780006176954,eng,698,275,17,4/26/1990,Fontana Books -34881,Star Bright (Star Power #8),Catherine Hapka,3.67,068987670X,9780689876707,eng,160,3,0,4/26/2005,Aladdin Paperbacks -34889,Brown's Star Atlas: Showing All The Bright Stars With Full Instructions How To Find And Use Them For Navigational Purposes And Department Of Trade Examinations.,Brown, Son & Ferguson,0.00,0851742718,9780851742717,eng,49,0,0,5/1/1977,Brown Son & Ferguson Ltd. -34892,Bright Star's Promise,Karen A. Bale,2.77,0821746219,9780821746219,eng,444,13,3,7/1/1994,Zebra -34895,Dragon Quest VIII: Journey of the Cursed King Official Strategy Guide,Dan Birlew,4.14,0744005833,9780744005837,eng,240,35,0,11/8/2005,BradyGames -34897,The Dragon Reborn (The Wheel of Time #3),Robert Jordan,4.25,0765305119,9780765305114,eng,624,183950,2671,9/14/2002,Tor Books -34898,My Father's Dragon (My Father's Dragon #1),Ruth Stiles Gannett,4.10,0440421217,9780440421214,eng,96,30987,1535,12/27/2005,Yearling -34899,The Book of the Dragon,Ciruelo Cabral,4.20,1402728115,9781402728112,eng,144,372,15,8/1/2005,Union Square Press -34901,Must Love Dragons (Immortally Sexy #2),Stephanie Rowe,3.98,0446617679,9780446617673,en-US,342,1740,77,11/1/2006,Warner Forever -34902,Player's Handbook II,David Noonan,3.76,0786939184,9780786939183,eng,221,815,7,5/9/2006,Wizards of the Coast -34908,Here There Be Dragons (Chronicles of the Imaginarium Geographica #1),James A. Owen,3.86,1416912274,9781416912279,en-US,326,10103,917,9/26/2006,Simon & Schuster Books for Young Readers -34909,The Dragon Doesn't Live Here Anymore: Living Fully Loving Freely,Alan Cohen,4.27,0449908402,9780449908402,eng,416,179,16,8/3/1993,Ballantine Books -34915,Running with the Demon (Word & Void #1),Terry Brooks,3.97,1857236076,9781857236071,eng,503,72,3,7/16/1998,Orbit Books -34918,The Voyage of the Jerle Shannara Trilogy (Voyage of the Jerle Shannara #1-3),Terry Brooks,4.27,1416502041,9781416502043,en-GB,1260,87,4,5/1/2005,Pocket Books -34921,The Black Unicorn (Magic Kingdom of Landover #2),Terry Brooks,3.77,0345335287,9780345335289,eng,307,630,14,8/12/1988,Del Rey Books -34922,Der Sohn von Shannara,Terry Brooks/Tony Westermayr,4.16,3442249759,9783442249756,ger,224,5,0,12/1/2000,Goldmann -34938,First King of Shannara (Shannara Prequel),Terry Brooks,3.96,0517199963,9780517199961,eng,0,1,0,3/19/1996,Random House Value Publishing -34939,The Best of Lester Del Rey,Lester del Rey/Terry Brooks,3.79,034543949X,9780345439499,eng,320,76,9,6/6/2000,Del Rey -34941,The Phantom Menace (Star Wars: Novelizations #1),Terry Brooks/George Lucas,3.57,0099409968,9780099409960,eng,336,13158,455,3/2/2000,Arrow -34948,L'epée de Shannara,Terry Brooks/Rosalie Guillaume,3.45,2914370318,9782914370318,fre,390,6,2,11/27/2002,Bragelonne -34963,Star Wars. Episode I - Die dunkle Bedrohung,Terry Brooks/George Lucas/Regina Winter,3.57,3442352436,9783442352432,ger,320,67,4,8/1/1999,Blanvalet Taschenbuch Verlag -34985,The Deming Management Method,Mary Walton,3.95,1852521414,9781852521417,eng,254,192,11,10/1/1992,Management Books 2000 -34988,The Scions of Shannara (Heritage of Shannara #1),Terry Brooks,3.99,1857230752,9781857230758,eng,512,26985,256,10/5/2006,Orbit -34992,The Three Musketeers (Classic Starts),Oliver Ho/Jamel Akib/Alexandre Dumas/Arthur Pober,4.12,1402736959,9781402736957,eng,151,514,31,2/1/2007,Sterling Publishing Co. Inc. -35002,The One Minute Minute Sales Person,Spencer Johnson,3.78,0007104847,9780007104840,eng,109,68,7,6/1/2000,HarperCollins Publishers -35046,JLA Vol. 14: Trial by Fire,Joe Kelly/Doug Mahnke/Tom Nguyen,3.67,140120242X,9781401202422,en-GB,144,192,12,10/1/2004,DC Comics -35047,Manhunter Vol. 2: Trial by Fire,Marc Andreyko/Javier Pina/Jesus Saiz/Brad Walker,3.90,1401211984,9781401211981,eng,224,297,27,1/3/2007,DC Comics -35048,Trial by Fire (Stargate SG-1 #1),Sabine C. Bauer,3.79,0954734300,9780954734305,eng,237,448,32,6/1/2006,Fandemonium Books -35050,Trial By Fire,D.W. Buffa,3.76,0451412125,9780451412126,en-US,322,9,0,4/4/2006,Onyx -35052,Trial by Fire (Newpointe 911 #4),Terri Blackstock,4.36,0310217601,9780310217602,eng,347,3248,73,10/18/2000,Zondervan -35054,Sahara (Dirk Pitt #11),Clive Cussler,3.96,1416513418,9781416513414,eng,576,47,6,3/1/2005,Pocket Books -35056,Sahara (Dirk Pitt #11),Clive Cussler,3.96,0671521101,9780671521103,en-US,576,528,34,3/1/1995,Pocket Books -35057,Africa South of the Sahara: A Geographical Interpretation (Texts In Regional Geography),Robert Stock,3.12,1572308680,9781572308688,en-US,479,8,0,5/4/2004,The Guilford Press -35061,Ellora's Cavemen: Dreams of the Oasis Volume II,Sylvia Day/B.J. McCall/Sahara Kelly/Elisa Adams/Denise A. Agnew/Anna J. Evans,3.63,1419954482,9781419954481,eng,272,131,8,10/1/2005,Ellora's Cave -35081,Ghosts of Gettysburg III: Spirits Apparitions and Haunted Places of the Battlefield,Mark Nesbitt,4.03,0939631903,9780939631902,eng,75,111,3,10/1/1995,Thomas Publications (PA) -35088,SeinLanguage,Jerry Seinfeld,3.63,0553096060,9780553096064,eng,180,371,44,9/1/1993,Bantam -35090,Der Richter und sein Henker,Friedrich Dürrenmatt/John J. Neumaier/William Gillis,3.73,0395044995,9780395044995,ger,208,5420,81,6/23/1972,Houghton Mifflin Company -35092,It Doesn't Take a Hero: The Autobiography of General H. Norman Schwarzkopf,Norman Schwarzkopf/Peter Petre,4.04,0553563386,9780553563382,eng,640,2554,91,9/1/1993,Bantam -35100,Battle Cry of Freedom,James M. McPherson,4.35,019516895X,9780195168952,eng,867,23112,992,12/11/2003,Oxford University Press USA -35106,The Straight Dope,Cecil Adams,4.19,0345422910,9780345422910,eng,432,596,24,2/24/1998,Ballantine Books -35108,Return of the Straight Dope,Cecil Adams/Ed Zotti/Slug Signorino,4.22,0345381114,9780345381118,eng,448,220,11,3/12/1999,Ballantine -35110,Six Easy Pieces: Essentials of Physics Explained by Its Most Brilliant Teacher (Helix),Richard P. Feynman/Robert B. Leighton/Matthew L. Sands/Paul Davies,4.21,0201408252,9780201408256,en-US,176,167,18,4/10/1996,Basic Books -35111,The Feynman Lectures on Physics Vol 2,Richard P. Feynman/Robert B. Leighton/Matthew L. Sands,4.62,0805390472,9780805390476,eng,512,17,2,9/1/2005,Pearson Education -35115,Sliding Scales (Pip & Flinx #10),Alan Dean Foster,3.88,0345461584,9780345461582,eng,257,1167,28,9/27/2005,Del Rey Books -35116,Star Trek: Logs Seven and Eight (Star Trek: Log #7-8),Alan Dean Foster,3.68,0345495845,9780345495846,eng,358,35,0,9/5/2006,Del Rey Books -35120,Star Trek: Logs One and Two (Star Trek: Log #1-2),Alan Dean Foster,3.46,0345495810,9780345495815,eng,370,58,4,9/5/2006,Del Rey Books -35124,Mid-Flinx (Pip & Flinx #7),Alan Dean Foster,3.94,0345406443,9780345406446,en-US,352,2327,36,9/1/1996,Del Rey Books -35125,Alien,Alan Dean Foster,4.09,2290011150,9782290011157,eng,270,15901,309,3/29/1979,Grand Central Publishing -35126,The Chronicles of Riddick,Alan Dean Foster,3.95,0345468392,9780345468390,en-US,342,1389,47,12/18/2007,Del Rey Books -35128,With Friends Like These...,Alan Dean Foster,3.94,0345323904,9780345323903,eng,236,2277,28,11/12/1977,Del Rey -35134,Nor Crystal Tears (Humanx Commonwealth #9),Alan Dean Foster,4.03,0727845640,9780727845641,eng,231,2278,29,2/1/1994,Severn House Publishers -35138,The Hour of the Gate (Spellsinger #2),Alan Dean Foster,3.84,0743498291,9780743498296,eng,304,30,0,1/1/2005,iBooks -35148,Betcha Can't Read Just One,Alan Dean Foster/George Alec Effinger/Jack McDevitt/Nina Kiriki Hoffman/Mike Resnick/R.A. Lafferty/Tobias Grace/Laura Resnick/Margaret Ball/Ron Goulart/Mel Gilden/Edward Wellen/Wolfgang Jeschke/Greg Costikyan/Esther M. Friesner/Steve Rasnic Tem,3.92,0441248837,9780441248834,eng,242,51,1,12/1/1993,Ace -35149,Star Wars: The Approaching Storm,Alan Dean Foster,3.51,0345443004,9780345443007,eng,344,3947,100,12/1/2002,Del Rey Books -35159,Chorus Skating (Spellsinger #8),Alan Dean Foster,3.62,0446362379,9780446362375,en-US,344,477,8,10/1/1994,Aspect -35163,Star Trek: Logs Five and Six (Star Trek: Log #5-6),Alan Dean Foster,3.65,0345495837,9780345495839,eng,388,35,0,9/5/2006,Del Rey Books -35165,Star Trek: Logs 7-10,Alan Dean Foster,3.71,0671854054,9780671854058,eng,788,21,0,6/1/1995,Pocket Books -35166,The Hand of Dinotopia,Alan Dean Foster/James Gurney,3.96,0060518510,9780060518516,eng,416,292,13,12/1/2002,Avon Books -35178,Interlopers,Alan Dean Foster,3.33,044100847X,9780441008476,eng,313,269,23,5/1/2001,Ace -35180,Alien Nation,Alan Dean Foster,3.55,0446352640,9780446352642,eng,217,227,10,7/1/1988,Warner Books -35183,Phylogenesis (Founding of the Commonwealth #1),Alan Dean Foster,3.82,0345418611,9780345418616,eng,304,1246,21,7/5/2000,Del Rey Books -35206,Rashōmon and Seventeen Other Stories,Ryūnosuke Akutagawa/Jay Rubin/Haruki Murakami/Yoshihiro Tatsumi,4.13,0143039849,9780143039846,eng,268,4813,239,10/31/2006,Penguin Classics -35210,How to Talk to Anyone: 92 Little Tricks for Big Success in Relationships,Leil Lowndes,3.78,007141858X,9780071418584,eng,345,16662,739,10/10/2003,Contemporary Books -35218,There Was a Cold Lady Who Swallowed Some Snow!,Lucille Colandro/Jared Lee/Skip Hinnant,3.85,0439895561,9780439895569,eng,1,14,1,8/13/2006,Scholastic Audio Books -35219,The Red Badge of Courage & The Veteran,Stephen Crane/Shelby Foote,3.38,0679783202,9780679783206,eng,336,497,40,9/12/2000,Modern Library -35223,The Red Badge of Courage and Four Stories,Stephen Crane/James Dickey,3.35,0451526473,9780451526472,eng,240,265,29,2/1/1997,Signet Classics -35226,The Red Badge of Courage (Classic Starts),Oliver Ho/Jamel Akib/Arthur Pober/Stephen Crane,3.86,1402726635,9781402726637,eng,160,59,7,3/28/2006,Sterling -35228,New Threads in the Pattern: The Great Hunt Part 2 (Wheel of Time #2-2),Robert Jordan/Charles Keegan,4.27,0765348446,9780765348449,eng,464,299,6,1/5/2004,Starscape -35231,Lord of Chaos (The Wheel of Time #6),Robert Jordan,4.13,0812513754,9780812513752,eng,1011,109234,1962,11/15/1995,Tor Books -35234,Crossroads of Twilight (Wheel of Time #10),Robert Jordan,3.82,1841491837,9781841491837,eng,818,827,48,11/6/2003,Orbit -35244,Frankenstein (SparkNotes Literature Guide),SparkNotes/Mary Wollstonecraft Shelley,3.50,1586633570,9781586633578,eng,72,16,0,1/10/2002,SparkNotes -35246,Mary Shelley‘s Frankenstein,Mary Wollstonecraft Shelley/Anca Munteanu,3.79,0764587269,9780764587269,eng,240,147,3,4/15/2001,Cliffs Notes -35248,Essential Monster of Frankenstein Vol. 1,Gary Friedrich/Doug Moench/John Buscema/Mike Ploog/Val Mayerick,3.62,0785116346,9780785116349,eng,496,69,7,10/20/2004,Marvel Comics -35249,Frankenstein,Mary Wollstonecraft Shelley,3.79,074325578X,9780743255783,en-US,448,20,6,1/1/2004,Kaplan Publishing -35252,Frankenstein,Mary Wollstonecraft Shelley,3.79,1419542249,9781419542244,en-US,450,17,3,10/30/2006,Kaplan -35254,The Memoirs of Elizabeth Frankenstein,Theodore Roszak,3.56,0553576372,9780553576375,eng,440,233,24,10/1/1996,Bantam -35255,The Essential Frankenstein,Mary Wollstonecraft Shelley/Leonard Wolf/Christopher H. Bing,3.79,0452269687,9780452269682,eng,357,42,6,10/1/1993,Plume -35258,Father of Frankenstein,Christopher Bram,4.10,0452273374,9780452273375,eng,276,587,48,4/1/1996,Plume -35261,Frankenstein,Mary Wollstonecraft Shelley,3.79,076660828X,9780766608283,en-GB,189,84,4,7/30/2004,Modern Publishing -35268,The Walrus Was Paul: The Great Beatle Death Clues,R. Gary Patterson/Jay Fox,3.72,0684850621,9780684850627,eng,208,441,39,10/29/1998,Touchstone -35270,Harpo Speaks!,Harpo Marx/Rowland Barber,4.41,0879100362,9780879100360,eng,482,2006,239,7/1/2004,Limelight Editions -35273,Groucho Harpo Chico and Sometimes Zeppo: A History of the Marx Brothers and a Satire on the Rest of the World,Joe Adamson,4.07,0671470728,9780671470722,eng,464,9,1,1/1/1983,Simon & Schuster -35283,Topsail Island: Mayberry by the Sea,Ray McAllister/Vicki McAllister,3.94,0895873311,9780895873316,eng,228,40,13,7/1/2006,John F. Blair Publisher -35287,Take on Me (Secret Lives of Daytime Divas #1),Sarah Mayberry,3.69,0373793189,9780373793181,eng,249,499,46,2/27/2007,Harlequin Blaze -35288,All Over You (Secret Lives of Daytime Divas #2),Sarah Mayberry,3.73,0373793243,9780373793242,eng,251,521,35,3/27/2007,Harlequin Blaze -35289,The 33 Strategies of War,Robert Greene/Joost Elffers,4.30,0670034576,9780670034574,en-US,496,8005,383,1/19/2006,Viking -35291,Jimmy Stewart: A Biography,Marc Eliot,3.85,1400052211,9781400052219,eng,463,955,95,11/6/2006,Harmony -35292,Jimmy Stewart: Bomber Pilot,Starr Smith/Walter Cronkite,3.93,0760328242,9780760328248,eng,320,441,57,11/15/2006,Zenith Press -35295,Jimmy Stewart: The Truth Behind the Legend,Michael Munn,3.97,1569803102,9781569803103,eng,317,212,35,5/30/2006,Barricade Books -35308,Dirt (Stone Barrington #2),Stuart Woods,3.89,0061094234,9780061094231,en-US,448,6279,274,8/7/1997,HarperTorch -35313,La Ley del Exito,Paramahansa Yogananda,4.44,0876121512,9780876121511,spa,32,0,0,6/1/1998,Self-Realization Fellowship Publishers -35324,Incident at Exeter,John G. Fuller,3.56,0425039293,9780425039298,en-US,221,51,7,4/15/1978,Berkley Books (NY) -35329,The Body Remembers: The Psychophysiology of Trauma and Trauma Treatment,Babette Rothschild,4.27,0393703274,9780393703276,eng,208,1506,45,10/17/2000,W. W. Norton Company -35332,Remember (Redemption #2),Karen Kingsbury/Gary Smalley,4.43,0842356290,9780842356299,eng,432,18445,388,1/1/2003,Tyndale House Publishers -35334,A Summer to Remember (Bedwyn Prequels #2),Mary Balogh,4.08,0440236630,9780440236634,eng,361,7791,360,3/4/2003,Dell -35335,Because I Remember Terror Father I Remember You,Sue William Silverman,4.11,0820321753,9780820321752,en-US,288,725,61,9/2/1999,University of Georgia Press -35347,The Last Story (Remember Me #3),Christopher Pike,3.65,0689854595,9780689854590,eng,256,2208,62,9/1/2002,Simon Pulse -35348,A Place Where the Sea Remembers,Sandra Benítez,3.62,0671892673,9780671892678,eng,176,757,103,2/5/1995,Scribner -35349,She Who Remembers (Kwani #1),Linda Lay Shuler,4.03,0451211448,9780451211446,eng,496,6737,148,8/5/2003,NAL Trade -35350,What the Body Remembers,Shauna Singh Baldwin,3.89,0385496052,9780385496056,eng,471,2340,153,1/16/2001,Anchor -35352,Long Gone Lonesome Blues (The Texas Brands #4),Maggie Shayne,4.25,0373078544,9780373078547,eng,251,398,15,4/1/1998,Silhouette -35365,Remember When (Foster Saga #1),Judith McNaught,3.95,1416530746,9781416530749,eng,418,10632,252,4/25/2006,Pocket Books -35368,A Kiss to Remember (Once Upon a Time #3),Teresa Medeiros,3.89,0553581856,9780553581850,eng,353,3634,201,4/30/2002,Bantam -35400,Star Wars: The Complete Visual Dictionary,James Luceno/David West Reynolds/Ryder Windham,4.33,0756622387,9780756622381,eng,272,1094,40,9/25/2006,DK Children -35402,Star Wars: The Ultimate Visual Guide,Daniel Wallace/Ryder Windham,4.33,0756630525,9780756630522,eng,160,945,17,3/19/2007,DK Children -35404,Star Wars Complete Locations,James Luceno/Kerrie Dougherty/Simon Beecroft/Kristin Lund/Hans Jenssen/Richard Chasemore,4.31,0756614198,9780756614195,eng,175,141,9,12/31/2005,DK Publishing (Dorling Kindersley) -35406,Lego Star Wars: Prima Official Game Guide,Michael Littlefield,4.62,0761554912,9780761554912,eng,128,27,2,9/12/2006,Prima Games -35407,Star Wars: The New Essential Guide to Alien Species,Ann Margaret Lewis/Helen Keier/Chris Trevas/William O'Connor,4.18,034547760X,9780345477606,eng,227,259,11,10/31/2006,Del Rey -35409,Star Wars: The New Essential Chronology,Daniel Wallace/Mark Chiarello/Tommy Lee Edwards/John Van Fleet,4.30,0345449010,9780345449016,eng,256,642,11,10/25/2005,Del Rey -35412,The Swarm War (Star Wars: Dark Nest #3),Troy Denning,3.49,0345463056,9780345463050,eng,357,3852,55,12/27/2005,Del Rey Books -35413,Star Wars: Empire Volume 7: The Wrong Side of the War,Welles Hartley/Davide Fabbri/Christian Dalla Vecchia,3.79,1593077092,9781593077099,eng,144,109,7,1/30/2007,Dark Horse Books -35414,Allegiance (Star Wars),Timothy Zahn,3.99,0345477383,9780345477385,eng,324,6874,280,1/30/2007,Del Rey -35415,Creating the Worlds of Star Wars: 365 Days,John Knoll/J.W. Rinzler,4.13,0810959364,9780810959361,eng,744,87,10,10/1/2005,Harry N. Abrams -35417,Star Wars: Clone Wars Volume 1: The Defense of Kamino and Other Tales,John Ostrander/W. Haden Blackman,3.85,1569719624,9781569719626,eng,128,911,38,9/15/2003,Dark Horse Books -35419,The Making of Star Wars (Star Wars: The Making of #1),J.W. Rinzler/Peter Jackson,4.53,0345494768,9780345494764,eng,362,1198,95,4/24/2007,Del Rey -35421,Star Wars: The New Essential Guide to Weapons & Technology,W. Haden Blackman,4.08,0345449037,9780345449030,eng,224,211,7,10/26/2004,Del Rey -35422,The Star Wars Cookbook II: Darth Malt and More Galactic Recipes,Wesley Martin/Frankie Frankeny,3.86,0811828034,9780811828031,eng,60,205,15,7/1/2000,Chronicle Books -35424,You Can Draw: Star Wars,Bonnie Burton/Matt Busch/Tom Hodges,4.05,075662343X,9780756623432,eng,96,48,11,1/15/2007,DK Children -35425,Star Wars: Empire Volume 6: In the Shadows of Their Fathers,Thomas Andrews/Scott Allie,3.68,1593076274,9781593076276,eng,144,124,10,11/7/2006,Dark Horse Books -35426,Star Wars: The New Essential Guide to Vehicles & Vessels,W. Haden Blackman/Ian Fullwood,4.12,0345449029,9780345449023,eng,200,209,7,9/30/2003,Del Rey -35427,Star Wars: Knights of the Old Republic Vol. 1: Commencement (Star Wars: Knights of the Old Republic #1),John Jackson Miller/Travis Charest/Michael Atiyeh/Brian Ching/Travel Foreman,4.07,1593076401,9781593076405,eng,152,1791,100,12/5/2006,Dark Horse Comics -35428,The Star Wars Poster Book,Stephen J. Sansweet/Peter Vilmur,4.50,0811848833,9780811848831,eng,320,60,2,9/29/2005,Chronicle Books -35431,Star Wars: Clone Wars Volume 9: Endgame,John Ostrander/Welles Hartley/Jan Duursema,4.11,1593075537,9781593075538,eng,144,422,25,8/8/2006,Dark Horse Books -35432,Wookiee Cookies: A Star Wars Cookbook,Robin Davis/Frankie Frankeny,3.93,0811821846,9780811821841,eng,132,952,57,9/1/1998,Chronicle Books -35433,Star Wars: The New Essential Guide to Characters,Daniel Wallace/Michael Sutfin,3.98,0345449002,9780345449009,eng,224,365,3,4/23/2002,Del Rey -35434,The Star Wars Trilogy,George Lucas/Donald F. Glut/James Kahn,4.25,0345475828,9780345475824,eng,705,4365,138,8/31/2004,Del Rey -35437,Star Wars Tales Vol. 1,Dave Land/Peter David/Dave Cooper/Dan Jolley/Doug Wheatley/Tom Fowler/Kilian Plunkett/Sean Phillips/Ryder Windham/John Ostrander/Jan Duursema/Timothy Zahn/Darko Macan/Rich Handley/Igor Kordey/Ron Marz/Rich Hedden/Rick Leonardi/Claudio Castellini/Martin Egeland/Lovern Kindzierski/Chris Brunner/Peet Janes/Jim Woodring,3.89,1569716196,9781569716199,eng,220,932,36,1/27/2004,Dark Horse Books -35439,Complete Star Wars Trilogy Scrapbook Re-issue,David Levithan/Ryder Windham/Marc Cotta Vaz,3.14,0439681308,9780439681308,eng,64,7,1,10/1/2004,Scholastic Paperbacks -35440,Star Wars: Clone Wars Volume 6: On the Fields of Battle,John Ostrander/Jan Duursema,4.04,1593073526,9781593073527,eng,168,487,18,8/2/2005,Dark Horse Books -35441,Star Wars: Clone Wars Volume 8: The Last Siege the Final Truth,John Ostrander/Jan Duursema/Dan Parsons,4.10,1593074824,9781593074821,eng,144,424,20,4/11/2006,Dark Horse Books -35448,Star by Star (Star Wars: The New Jedi Order #9),Troy Denning,3.95,0099410389,9780099410386,eng,605,7740,108,10/3/2002,Arrow -35450,Star Wars: Episode III - Revenge of the Sith: The Visual Dictionary,James Luceno/John Goodson/Robert E. Barnes,4.16,0756611288,9780756611286,eng,64,748,18,4/2/2005,DK Children -35451,The Wildlife of Star Wars,Terryl Whitlatch/Bob Carrau,4.42,0811828697,9780811828697,eng,173,417,27,9/1/2001,Chronicle Books -35454,The Dharma of Star Wars,Matthew Bortolin,4.03,0861714970,9780861714971,eng,224,371,37,4/15/2005,Wisdom Publications -35455,Star Wars: Rebellion Vol. 1: My Brother My Enemy,Rob Williams/Michel Lacombe,3.94,1593077114,9781593077112,eng,128,518,23,2/27/2007,Dark Horse -35456,Star Wars: Empire Volume 1: Betrayal,Scott Allie/Ryan Benjamin/Curtis Arnold,3.82,1569719640,9781569719640,eng,96,621,32,8/5/2003,Dark Horse Books -35458,Revenge of the Sith (Star Wars: Novelizations #3),Matthew Woodring Stover/George Lucas,4.14,0345428838,9780345428837,eng,418,11804,671,4/2/2005,Lucas Books -35459,Star Wars: Revenge of the Sith Incredible Cross-Sections,Curtis Saxton/Hans Jenssen/Richard Chasemore,4.21,0756611296,9780756611293,eng,32,100,4,4/2/2005,DK Children -35460,Star Wars: Clone Wars Adventures Volume 6,W. Haden Blackman/Matt Fillbach/Shawn Fillbach/Ronda Pattison/Mike Kennedy/Stewart McKenney/Rick Lacy/Dan Jackson/Michael David Thomas/Joshua Elliott,3.78,1593075677,9781593075675,eng,88,176,10,8/23/2006,Dark Horse Books -35462,Star Wars: Empire Volume 5: Allies and Adversaries,Ron Marz/Jeremy Barlow/Brandon Badeaux,3.51,1593074662,9781593074661,eng,120,135,9,2/28/2006,Dark Horse Books -35465,Yoda: Dark Rendezvous,Sean Stewart,3.88,0345463099,9780345463098,eng,329,3972,116,11/23/2004,Del Rey -35474,Not a Genuine Black Man: Or How I Claimed My Piece of Ground in the Lily-White Suburbs,Brian Copeland,4.04,1401302335,9781401302337,eng,272,351,78,7/11/2006,Hachette Books -35475,Black Man of the Nile and His Family,Yosef A.A. Ben-Jochannan,4.53,0933121261,9780933121263,eng,442,185,8,11/22/1996,Black Classic Press -35476,Black Elk Speaks: Being the Life Story of a Holy Man of the Oglala Sioux,Black Elk/John G. Neihardt,4.13,0803283857,9780803283855,eng,270,10390,447,11/1/2004,Bison Books -35479,Ring of Fire (Ring of Fire Anthology #1),Eric Flint/David Weber/Mercedes Lackey/Dave Freer/Andrew Dennis/Virginia DeMarce/Loren K. Jones/S.L. Viehl/Anette M. Pedersen/Jonathan Cresswell/Scott Washburn/Deann Allen/Mike Turner/Greg Donahue/Walt Boyes/Jody Dorsett/K.D. Wentworth,3.90,1416509089,9781416509080,eng,722,1970,64,10/1/2005,Baen -35481,1635: The Cannon Law (Assiti Shards #8),Eric Flint/Andrew Dennis,3.76,1416509380,9781416509387,eng,420,1336,35,9/26/2006,Baen -35485,Five Rings of Fire (Able Team #11),Tom Arnett/Dick Stivers/Don Pendleton,3.64,0373612117,9780373612116,eng,0,39,2,2/23/1984,Gold Eagle -35488,Cash,Johnny Cash/Patrick Carr,4.07,0060727535,9780060727536,eng,310,17107,566,10/7/2003,HarperOne -35489,Johnny Cash,Michael Streissguth,3.79,0306813688,9780306813689,eng,334,285,25,9/4/2006,Da Capo Press -35491,Controversy Creates Cash,Eric Bischoff/Jeremy Roberts,3.62,141652729X,9781416527299,en-GB,389,1154,56,10/17/2006,World Wrestling Entertainment Books -35499,Side Effects,Amy Goldman Koss,3.87,1596432942,9781596432949,eng,144,904,179,10/3/2006,Roaring Brook Press -35514,Myths of Light: Eastern Metaphors of the Eternal (Collected Work),Joseph Campbell/David Kudler,4.43,1577314034,9781577314035,eng,224,345,17,5/16/2003,New World Library -35515,The Inner Reaches of Outer Space: Metaphor as Myth and as Religion (Collected Worksl),Joseph Campbell,4.22,1577312090,9781577312093,en-GB,160,971,49,1/9/2002,New World Library -35519,The Power of Myth,Joseph Campbell/Bill Moyers,4.29,0385418868,9780385418867,eng,320,38720,1451,6/1/1988,Anchor -35539,The Beatles: The Biography,Bob Spitz,4.15,0316013315,9780316013314,eng,983,9041,417,10/10/2005,Little Brown -35543,Here There and Everywhere: My Life Recording the Music of the Beatles,Geoff Emerick/Howard Massey/Elvis Costello,4.25,1592402690,9781592402694,eng,400,4381,255,3/1/2007,Avery Publishing Group -35547,The Beatles: 365 Days,Simon Wells,4.18,0810959119,9780810959118,eng,744,99,12,11/1/2005,Harry N. Abrams -35552,A Hard Day's Write: The Stories Behind Every Beatles Song,Steve Turner,4.18,0060844094,9780060844097,eng,224,156,10,10/18/2005,It Books -35553,Shout! The Beatles in Their Generation,Philip Norman,4.03,0743235657,9780743235655,eng,546,4624,137,2/15/2005,Fireside -35558,The Beatles Illustrated Lyrics,Alan Aldridge/The Beatles,4.26,157912058X,9781579120580,eng,272,1360,34,5/1/2005,Black Dog & Leventhal Publishers -35561,The Beatles' Story on Capitol Records Part Two: The Albums,Bruce Spizer,4.72,0966264924,9780966264920,eng,264,29,0,1/1/2010,Four Ninety-Eight Productions -35574,The Rough Guide to The Beatles,Chris Ingham,3.91,1843537206,9781843537205,eng,325,50,4,9/1/2006,Rough Guides -35578,The Beatles Complete - Updated Edition,The Beatles,4.47,0881885959,0073999960822,eng,303,64,0,12/1/1986,Hal Leonard Publishing Corporation -35581,The Love You Make: An Insider's Story of the Beatles,Peter Brown/Steven Gaines/Anthony DeCurtis,4.08,0451207351,9780451207357,eng,464,2491,110,11/5/2002,NAL -35592,Magic Circles: The Beatles in Dream and History,Devin McKinney,3.88,067401636X,9780674016361,eng,432,56,6,10/18/2004,Harvard University Press -35602,A Day in the Life: The Music and Artistry of the Beatles,Mark Hertsgaard,4.16,0385315171,9780385315173,eng,448,1116,46,3/1/1996,Delta -35633,Complete Beatles Chronicle The,Mark Lewisohn/Peter Guzzardi,4.39,0517581000,9780517581001,eng,365,19,0,9/22/1992,Harmony -35652,The Beatles Diary Vol 1: From Liverpool to London (Falk Symposium),Keith Badman/Keith Badman,4.56,0711983089,9780711983083,eng,376,13,0,2/1/2001,Omnibus Press -35655,Two of Us: The Story of a Father a Son and the Beatles,Peter J. Smith,3.53,0618251456,9780618251452,en-US,206,51,12,2/4/2004,Houghton Mifflin Harcourt -35666,A Hard Day's Write: The Stories Behind Every Beatles Song,Steve Turner,4.18,0062736981,9780062736987,eng,224,2072,100,11/1/1999,HarperResource -35668,The Beatles,Hunter Davies,4.10,0393328864,9780393328868,en-US,416,69,5,4/17/2006,W. W. Norton Company -35669,Complete Idiot's Guide to The Beatles,Richard Buskin/Allan Kozinn,3.73,0028621301,9780028621302,eng,384,15,2,12/1/1997,Alpha -35689,Beatles: Every Little Thing,Maxwell Mackenzie,3.83,0380796988,9780380796984,en-US,224,72,12,12/1/1998,It Books -35710,Margot Fonteyn,Meredith Daneman,4.03,0140165304,9780140165302,eng,704,256,17,8/4/2005,Penguin -35711,A General Theory of Love,Thomas Lewis/Fari Amini/Richard Lannon,4.11,0375709223,9780375709227,eng,288,3675,422,1/9/2001,Vintage -35722,Mad Cowboy: Plain Truth from the Cattle Rancher Who Won't Eat Meat,Howard F. Lyman/Glen Merzer,4.13,0684854465,9780684854465,en-US,224,1877,171,8/2/2001,Scribner -35724,The Life You Were Born to Live,Dan Millman,4.11,1567313981,9781567313987,eng,464,19,1,9/1/2000,MJF Books -35729,Lover Eternal (Black Dagger Brotherhood #2),J.R. Ward,4.35,0451218043,9780451218049,eng,464,155348,5325,3/7/2006,Signet -35735,The Silmarillion Volume 3,J.R.R. Tolkien/Martin Shaw,4.19,0553525026,9780553525021,eng,0,60,4,9/1/1998,Random House Audio -35750,Sodom and Gomorrah (In Search of Lost Time #4),Marcel Proust/C.K. Scott Moncrieff/Terence Kilmartin/D.J. Enright,4.35,0375753109,9780375753107,eng,784,377,66,2/16/1999,Modern Library Classics -35751,Swanns Way (In Search of Lost Time #1),Marcel Proust,4.14,0701137681,9780701137687,eng,534,19,1,10/1/1992,Chatto and Windus -35757,Missing Persons and Mistaken Identities: Women and Gender in Ancient Israel,Phyllis A. Bird,3.80,0800631285,9780800631284,eng,304,10,0,1/1/1997,Augsburg Fortress Publishing -35760,Mistaken Identity,Nayantara Sahgal,2.98,8172235224,9788172235222,eng,324,0,0,12/30/2016,Harper Collins -35781,The Skeptic's Dictionary: A Collection of Strange Beliefs Amusing Deceptions and Dangerous Delusions,Robert Todd Carroll,4.02,0471272426,9780471272427,eng,446,531,11,7/1/2003,Wiley -35786,The Bush Dyslexicon: Observations on a National Disorder,Mark Crispin Miller,3.56,0393322963,9780393322965,eng,370,209,19,6/17/2002,W. W. Norton Company -35787,Extraordinary Popular Delusions & the Madness of Crowds (Great Minds),Charles Mackay,3.88,1573928917,9781573928915,eng,724,33,4,5/1/2001,Prometheus Books -35790,Extraordinary Popular Delusions and the Madness of Crowds/Confusión de Confusiones (Marketplace Book),Martin S. Fridson/Charles Mackay/Joseph de La Vega,3.91,0471133124,9780471133124,en-GB,224,35,3,12/29/1995,Wiley -35792,The Crowd/Extraordinary Popular Delusions & the Madness of Crowds,Gustave Le Bon/Charles Mackay,3.93,0934380236,9780934380232,eng,288,406,24,11/1/1993,Wasendorf & Associates Inc -35805,The Capture (Guardians of Ga'Hoole #1),Kathryn Lasky,3.90,0439405572,9780439405577,eng,222,22125,1232,6/1/2003,Scholastic Paperbacks -35806,The Journey (Guardians of Ga'Hoole #2),Kathryn Lasky,4.00,0439405580,9780439405584,en-US,242,11354,404,9/1/2003,Scholastic Inc. -35807,The Rescue (Guardians of Ga'Hoole #3),Kathryn Lasky,4.07,0439405599,9780439405591,eng,198,10154,278,1/1/2004,Scholastic Inc. -35810,The Night Journey,Kathryn Lasky,3.77,0142403229,9780142403228,eng,160,279,57,3/17/2005,Puffin Books -35811,The Collected Stories of Arthur C. Clarke,Arthur C. Clarke,4.29,0312878605,9780312878603,eng,966,4150,138,1/14/2002,Tom Doherty Associates/Orb Books -35815,Sunstorm (A Time Odyssey #2),Arthur C. Clarke/Stephen Baxter,3.83,0345452518,9780345452511,eng,356,4049,154,2/28/2006,Del Rey Books -35819,Lair of the White Worm,Bram Stoker,2.86,0646418424,9780646418421,eng,120,2276,244,10/1/2002,Deodand Publishing -35822,Best Ghost and Horror Stories,Bram Stoker/Richard Dalby,3.52,0486297160,9780486297163,eng,272,55,7,11/2/2011,Dover Publications -35825,The Blonde on the Street Corner,David Goodis,3.71,1852424478,9781852424473,en-US,155,284,26,1/15/1998,Serpent's Tail -35826,Of Tender Sin,David Goodis/Adrian Wootton,3.69,1852426748,9781852426743,en-US,181,150,24,2/16/2001,Serpent's Tail -35827,The Moon in the Gutter,David Goodis/Adrian Wootton,3.65,1852424494,9781852424497,en-US,183,350,40,12/8/1998,Serpent's Tail -35835,Dear Peter Rabbit,Alma Flor Ada/Leslie Tryon,4.13,1416912339,9781416912330,en-US,32,7,0,1/1/2006,Aladdin Paperbacks -35846,The Chocolate-Covered Contest (Nancy Drew #151),Carolyn Keene,3.89,067103443X,9780671034436,en-US,160,520,17,9/1/1999,Aladdin -35848,Ghost Stories (Nancy Drew),Carolyn Keene,3.75,0671691325,9780671691325,eng,160,337,12,10/1/1989,Aladdin -35860,The Humor of the American Cowboy,Stan Hoig/Nick Eggenhofer,3.43,0803273592,9780803273597,eng,200,3,1,7/1/2006,Bison Books -35870,Ghost in the Shell (Ghost in the Shell #1),Masamune Shirow,4.18,1593072287,9781593072285,eng,350,8456,302,6/20/2006,Dark Horse Comics -35875,Ghost in the Shell,Masamune Shirow,4.18,1845760182,9781845760182,en-GB,368,61,3,2/25/2005,Titan -35878,Ghost in the Shell 2: Innocence: After The Long Goodbye,Masaki Yamada/Yuji Oniki/Carl Gustav Horn/Daigo Shinma/Keita Saeki/Mamoru Oshii/Shinji Maki,3.97,1421513943,9781421513942,eng,196,21,3,7/17/2007,VIZ Media LLC -35880,At the Edge (Psychic Triplet Trilogy #1),Cait London,3.79,0061140503,9780061140501,en-US,384,273,21,5/29/2007,Avon -35882,Tallchief: The Hunter (The Tallchiefs #9),Cait London,4.12,0373764197,9780373764198,eng,192,47,1,1/25/2002,Silhouette Desire -35886,With Her Last Breath,Cait London,3.66,006000181X,9780060001810,en-US,384,112,11,6/24/2003,Avon -35888,Tallchief For Keeps (The Tallchiefs #3),Cait London,4.20,0373483376,9780373483372,eng,296,65,2,12/25/1996,Silhouette -35895,The Sgt. Rock Archives Vol. 3,Robert Kanigher/Joe Kubert/Russ Heath/Mark Chiarello/Jerry Grandinetti/Irv Novack,4.47,1401204104,9781401204105,eng,224,19,2,8/1/2005,DC Comics -35896,The Sgt. Rock Archives Vol. 1,Robert Kanigher/Bob Haney/Joe Kubert/Jerry Grandinetti,4.20,1563898411,9781563898419,eng,240,47,1,5/1/2002,DC Comics -35903,Sgt. Rock: The Prophecy,Joe Kubert,3.47,1401212484,9781401212483,en-US,144,76,11,4/7/2007,DC Comics -35907,Sgt. Frog Vol. 13 (Sgt. Frog #13),Mine Yoshizaki,4.23,1427802114,9781427802118,eng,192,77,1,6/1/2007,TokyoPop -35908,The Elements of Style,William Strunk Jr./E.B. White,4.19,0024181900,9780024181909,en-US,85,217,16,12/12/1991,MacMillan Publishing Company -35921,On Basilisk Station (Honor Harrington #1),David Weber,4.13,1416509372,9781416509370,eng,458,33456,1424,7/26/2005,Baen Books -35924,The Lure of the Basilisk (The Lords of Dûs #1),Lawrence Watt-Evans,3.71,1587155877,9781587155871,eng,208,493,17,11/1/2001,Wildside Press -35925,Love Smart: Find the One You Want--Fix the One You Got,Phillip C. McGraw,3.56,074329243X,9780743292436,en-US,283,817,73,12/26/2006,Free Press -35926,Love Smart: Find the One You Want--Fix the One You Got,Phillip C. McGraw,3.56,0743272099,9780743272094,en-US,284,69,14,12/6/2005,Free Press -35927,Smart Love,Martha Heineman Pieper/William J. Pieper,3.91,1558321829,9781558321823,eng,272,97,10,5/1/2001,Harvard Common Press -35958,Sagwa the Chinese Siamese Cat,Amy Tan/Gretchen Schields,4.03,0689846177,9780689846175,eng,40,995,57,9/1/2001,Aladdin Paperbacks -35959,The Bonesetter's Daughter,Amy Tan,3.99,0006550436,9780006550433,eng,352,437,49,10/1/2004,Harper Perennial -35963,The Opposite of Fate,Amy Tan,3.92,0007170408,9780007170401,eng,398,172,11,7/1/2004,Harper Perennial -35975,Bonesetter's Daughter,Amy Tan/Joan Chen,3.99,1597770760,9781597770767,eng,11,177,49,1/1/2006,Phoenix Audio -35983,The Horizontal World: Growing Up Wild in the Middle of Nowhere,Debra Marquart,3.77,1582433453,9781582433455,en-US,270,387,76,6/13/2006,Counterpoint LLC -35986,Horizontal Gene Transfer,Michael Syvanen/Clarence I. Kado,4.00,0126801266,9780126801262,eng,445,0,0,1/16/2002,Academic Press -35987,The Greek Islands,Lawrence Durrell,3.89,0571214266,9780571214266,eng,332,25,3,4/8/2002,Faber & Faber -35988,The Avignon Quintet: Monsieur Livia Constance Sebastian and Quinx,Lawrence Durrell,4.07,0571225551,9780571225552,en-US,1376,287,23,11/1/2004,Faber & Faber -35991,Through the Dark Labyrinth: A Biography of Lawrence Durrell,Gordon Bowker,3.83,0312172257,9780312172251,eng,480,39,7,12/31/1997,St. Martin's Press -35997,Clear Light of Day,Anita Desai,3.68,0618074511,9780618074518,eng,183,2262,144,9/12/2000,Mariner Books -36004,In Custody,Anita Desai,3.33,0140238131,9780140238136,eng,204,1021,81,8/1/1994,Penguin Books Ltd -36005,Baumgartner's Bombay,Anita Desai,3.47,0618056807,9780618056804,eng,240,666,49,5/19/2000,Mariner Books -36023,Tim Burton: Interviews,Kristian Fraga,4.26,1578067596,9781578067596,eng,192,103,7,1/22/2010,University Press of Mississippi -36025,Mysteries,Colin Wilson,4.08,1842931857,9781842931851,eng,672,354,15,7/28/2006,Watkins -36028,The Occult: A History,Colin Wilson,3.91,0394718135,9780394718132,eng,606,36,7,2/12/1973,Vintage/Random House Inc. (NYC) -36047,Exemplary Novels IV: Lady Cornelia the Deceitful Marriage the Dialogue of the Dogs,Miguel de Cervantes Saavedra/John Macklin,4.20,0856684988,9780856684982,eng,167,4,2,1/1/1992,Aris & Phillips -36048,In the Royal Manner : Expert Advice on Etiquette and Entertaining from the Former Butler to Diana Princess of Wales,Paul Burrell,3.64,044652641X,9780446526418,eng,144,47,3,12/14/2008,Warner Books -36060,Because the Night (Lloyd Hopkins #2),James Ellroy,3.48,1400095298,9781400095292,eng,288,1085,42,10/18/2005,Vintage -36062,Crime Wave: Reportage and Fiction from the Underside of L.A.,James Ellroy/Art Cooper,3.59,037570471X,9780375704710,en-US,288,1752,50,1/26/1999,Vintage Crime/Black Lizard -36063,Suicide Hill (Lloyd Hopkins #3),James Ellroy,3.53,1400095301,9781400095308,eng,288,1004,39,8/8/2006,Vintage -36064,American Tabloid (Underworld USA #1),James Ellroy,4.21,037572737X,9780375727375,eng,592,11787,639,4/24/2001,Vintage/Random House (NY) -36067,Your Cheatin' Heart,Nancy Bartholomew,3.69,0061014095,9780061014093,eng,336,72,5,2/2/2000,HarperTorch -36071,First Things First,Stephen R. Covey/A. Roger Merrill/Rebecca R. Merrill,4.10,0684802031,9780684802039,eng,384,33724,350,1/17/1996,Free Press -36072,The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change,Stephen R. Covey/Jim Collins,4.10,0743269519,9780743269513,eng,372,431987,7024,11/9/2004,Free Press -36076,The Speed of Trust: The One Thing that Changes Everything,Stephen M.R. Covey,3.99,074329730X,9780743297301,eng,384,17073,528,10/17/2006,Free Press -36085,Everything Bad is Good for You,Steven Johnson,3.50,1594481946,9781594481949,en-US,254,4027,463,5/2/2006,Riverhead Books -36086,The Ghost Map: The Story of London's Most Terrifying Epidemic—and How It Changed Science Cities and the Modern World,Steven Johnson,3.90,1594489254,9781594489259,eng,299,32723,2855,11/1/2006,Riverhead Books -36128,The Fountains of Paradise,Arthur C. Clarke,3.96,0151327734,9780151327737,eng,245,117,17,1/1/1979,Harcourt Brace Jovanovich (NY) -36137,Bad Dreams,Kim Newman,3.16,0786702273,9780786702275,en-US,280,151,13,4/25/1995,Running Press -36140,Strawberry Days: How Internment Destroyed a Japanese American Community,David Neiwert,4.00,140396792X,9781403967923,eng,288,55,5,6/4/2005,St. Martin's Press -36154,The Price of Glory (Saga of the Gray Death Legion #3),William H. Keith Jr.,3.89,1555600387,9781555600389,eng,321,445,6,10/1/1987,FASA Corp. -36157,Feast of Souls (The Magister Trilogy #1),C.S. Friedman,3.89,0756404320,9780756404321,en-US,464,4240,208,1/2/2007,DAW -36158,In Conquest Born (In Conquest Born #1),C.S. Friedman,3.88,0756400430,9780756400439,eng,530,2467,132,11/1/2001,DAW -36159,Black Sun Rising (The Coldfire Trilogy #1),C.S. Friedman,3.93,0756403146,9780756403140,en-US,496,15607,487,9/6/2005,Daw Books -36160,Crown of Shadows (The Coldfire Trilogy #3),C.S. Friedman,4.17,0756403189,9780756403188,en-US,432,101,7,11/1/2005,DAW -36161,The Madness Season,C.S. Friedman,4.05,0886774446,9780886774448,eng,495,2459,95,10/3/1990,DAW Books Inc -36162,This Alien Shore,C.S. Friedman,4.04,0886777992,9780886777999,en-US,564,3147,197,7/1/1999,DAW -36190,Whirlpool,Elizabeth Lowell/Ann Maxwell,3.78,0060511133,9780060511135,eng,448,1143,63,10/31/2006,Avon -36191,Reckless Love (MacKenzie-Blackthorn #1),Elizabeth Lowell,3.80,0373772521,9780373772520,eng,384,1101,45,12/26/2006,Harlequin -36193,Warrior (MacKenzie-Blackthorn #5),Elizabeth Lowell,3.91,1551669048,9781551669045,eng,256,865,28,4/24/2002,MIRA -36195,Only Mine (Only Series #2),Elizabeth Lowell,3.92,0380763397,9780380763399,en-US,400,2209,79,5/27/2003,Avon -36197,The Secret Sister,Ann Maxwell/Elizabeth Lowell,3.65,0060511109,9780060511104,eng,416,1181,48,10/25/2005,Avon -36198,Tell Me No Lies,Elizabeth Lowell,3.99,0373771258,9780373771257,en-US,576,2221,65,1/31/2006,HQN -36203,Sweet Rosie O'Grady,Joan Jonker,4.48,0747253749,9780747253747,eng,416,128,8,3/13/1997,Headline -36216,Fergus and the Night-Demon,Jim Murphy/John Manders,3.69,0618339558,9780618339556,en-US,32,81,18,9/18/2006,Clarion Books -36244,The Secret on Ararat (Babylon Rising #2),Tim LaHaye/Bob Phillips,4.23,0553586076,9780553586077,eng,416,3153,70,11/28/2006,Bantam -36252,Avalon,Anya Seton/Philippa Gregory,3.87,1556526008,9781556526008,en-US,440,2857,158,5/1/2006,Chicago Review Press -36253,The Winthrop Woman,Anya Seton/Philippa Gregory,4.09,155652644X,9781556526442,en-US,588,4258,326,9/1/2006,Chicago Review Press -36255,The Hearth and Eagle,Anya Seton,3.89,0449236412,9780449236413,eng,476,569,26,9/12/1980,Fawcett -36259,Media Unlimited: How the Torrent of Images & Sounds Overwhelms Our Lives,Todd Gitlin,3.55,0805072837,9780805072839,en-US,256,112,11,1/6/2003,Picador -36260,The Whole World is Watching: Mass Media in the Making and Unmaking of the New Left with a New Preface,Todd Gitlin,3.73,0520239326,9780520239326,en-US,352,83,6,5/1/2003,University of California Press -36261,The Sixties: Years of Hope Days of Rage,Todd Gitlin,3.73,0553372122,9780553372120,en-US,544,475,42,7/1/1993,Bantam Books (NY) -36262,The Intellectuals and the Flag,Todd Gitlin,3.59,0231124929,9780231124928,en-US,167,2,1,1/1/2006,Columbia University Press -36264,The Whole World Is Watching: Mass Media in the Making & Unmaking of the New Left,Todd Gitlin,3.73,0520040244,9780520040243,eng,344,10,1,10/15/1981,University of California Press -36266,Magical Creatures (Easy To Read! Easy To Draw!),Joan Holub/Dana Regan,3.00,0843104368,9780843104363,eng,48,1,0,10/27/2003,Price Stern Sloan -36268,The Pizza That We Made,Joan Holub/Lynne Avril Cravath,3.54,0142300195,9780142300190,en-US,32,60,12,9/10/2001,Penguin Young Readers -36303,'Salem's Lot,Stephen King,4.02,0451139690,9780451139696,eng,427,186,22,8/1/1976,Signet -36310,The Portable Edgar Allan Poe,Edgar Allan Poe/J. Gerald Kennedy,4.31,0143039911,9780143039914,eng,672,234,20,9/28/2006,Penguin Books -36311,Great Short Works,Edgar Allan Poe/Gary Richard Thompson,4.26,006083093X,9780060830939,en-US,576,683,13,11/28/1970,Harper Perennial -36313,Tales,H.P. Lovecraft/Peter Straub,4.34,1931082723,9781931082723,eng,838,2525,174,2/3/2005,Library of America -36314,Tales of H.P. Lovecraft,H.P. Lovecraft/Joyce Carol Oates,4.19,0060957905,9780060957902,eng,352,5300,137,9/19/2000,Ecco -36315,The Best of H.P. Lovecraft: Bloodcurdling Tales of Horror and the Macabre,H.P. Lovecraft/August Derleth/Robert Bloch,4.31,0345350804,9780345350800,eng,406,26857,545,10/29/2002,Ballantine Books -36316,The Doom That Came to Sarnath and Other Stories,H.P. Lovecraft/Lin Carter,4.12,0345331052,9780345331052,eng,208,2774,65,9/13/1991,Del Rey -36317,The Transition of H. P. Lovecraft: The Road to Madness,H.P. Lovecraft/Barbara Hambly,4.30,0345384229,9780345384225,eng,379,9518,93,10/1/1996,Del Rey -36319,The Art of H.P. Lovecraft's the Cthulhu Mythos,Pat Harrigan/Brian Wood/Jeremy McHugh,4.05,1589943074,9781589943070,eng,191,140,9,10/31/2006,Fantasy Flight Games -36321,The Dream Cycle of H.P. Lovecraft: Dreams of Terror and Death,H.P. Lovecraft/E. Hoffmann Price/Neil Gaiman,4.23,0345384210,9780345384218,eng,387,6253,160,2/25/2003,Del Rey -36333,Loving Will Shakespeare,Carolyn Meyer,3.47,0152054510,9780152054519,eng,265,1361,166,10/1/2006,Harcourt Children's Books -36334,Doomed Queen Anne (Young Royals #3),Carolyn Meyer,3.87,0152050868,9780152050863,eng,240,3547,195,5/1/2004,HMH Books for Young Readers -36336,Patience Princess Catherine (Young Royals #4),Carolyn Meyer,3.79,0152054472,9780152054472,en-US,208,2227,119,1/1/2009,HMH Books for Young Readers -36338,Marie Dancing,Carolyn Meyer,3.76,0152051163,9780152051167,eng,272,1085,77,10/1/2005,HMH Books for Young Readers -36340,Isabel: Princesa De Castilla España 1466,Carolyn Meyer/Carme Camps Monf,3.71,8478886745,9788478886746,spa,184,8,0,10/3/2001,Salamandra -36348,Monte Cook Presents The Year's Best D20 (Volume One),Monte Cook,4.20,1588467988,9781588467980,eng,96,5,1,8/15/2005,Malhavoc Press -36361,1848: The Revolution of the Intellectuals,Lewis B. Namier/James Joll,3.11,0197261116,9780197261118,eng,144,15,0,3/12/1992,British Academy -36368,Suddenly Daddy (Suddenly #1),Loree Lough,3.78,0373870280,9780373870288,eng,256,37,1,4/24/1998,Love Inspired -36397,Great Short Stories by American Women,Candace Ward,3.96,0486287769,9780486287768,eng,208,306,35,2/5/1996,Dover Publications Inc. -36399,Children's Christmas Stories and Poems: In Easy-to-Read Type,Bob Blaisdell/Pat Ronson Stewart,4.50,0486286568,9780486286563,eng,96,2,0,11/17/2011,Dover Publications -36402,The Governess; or The Little Female Academy,Sarah Fielding/Candace Ward,2.63,1551114127,9781551114125,eng,242,132,18,9/26/2005,Broadview Press Inc -36421,The Star-Spangled Banner (Symbols of America),Debra Hess,4.00,0761417109,9780761417101,eng,40,1,0,1/1/2003,Cavendish Square Publishing -36422,The Liberty Bell (Symbols of America),Debra Hess,3.83,0761417133,9780761417132,eng,40,4,0,1/1/2003,Cavendish Square Publishing -36423,The Statue of Liberty (Symbols of America),Debra Hess,4.00,0761417079,9780761417071,eng,40,1,0,1/1/2003,Cavendish Square Publishing -36424,The White House (Symbols of America),Debra Hess,4.00,0761417125,9780761417125,eng,40,3,2,1/1/2004,Cavendish Square Publishing -36425,The American Flag (Symbols of America),Debra Hess,4.00,0761417095,9780761417095,eng,39,3,0,1/1/2004,Cavendish Square Publishing -36434,Touched with Fire: Manic-Depressive Illness and the Artistic Temperament,Kay Redfield Jamison,4.02,068483183X,9780684831831,en-US,384,4209,199,10/18/1996,Free Press -36438,Manic-Depressive Illness: Bipolar Disorders and Recurrent Depression,Frederick K. Goodwin/Kay Redfield Jamison,4.40,0195135792,9780195135794,en-GB,1262,107,3,3/1/2007,Oxford University Press USA -36447,The Bone Yard,Paul J. Mikol/Dean Koontz/F. Paul Wilson/Sheri S. Tepper/Ray Garton,4.01,0425127265,9780425127261,eng,329,265,4,5/1/1991,Berkley -36450,Dracula Was a Woman: In Search of the Blood Countess of Transylvania,Raymond T. McNally,3.52,0070456712,9780070456716,eng,254,155,25,6/1/1987,McGraw-Hill Companies -36461,Proof of Concept,Larry Young/Damian Couceiro/Kieron Dwyer,3.00,1932051295,9781932051292,eng,134,6,1,1/18/2005,AIT Planet Lar -36475,Wonderful Life: The Burgess Shale and the Nature of History,Stephen Jay Gould,4.12,039330700X,9780393307009,eng,352,8207,179,9/17/1990,W. W. Norton & Company -36489,Justice Oliver Wendell Holmes: Law and the Inner Self,G. Edward White,3.67,0195101286,9780195101287,eng,648,17,2,12/19/1995,Oxford University Press USA -36492,Oliver Wendell Holmes in Paris: Medicine Theology and the Autocrat of the Breakfast Table,William C. Dowling,5.00,1584655801,9781584655800,eng,179,1,1,2/28/2007,University Press of New England -36505,Evermore,James Robert Smith/Stephen Mark Rainey/Joel Lane/Gary Fry/John Morressy/Kealan Patrick Burke/Manly Wade Wellman/Fred Chappell/Charlee Jacob/F. Gwynplaine MacIntyre/Steve Rasnic Tem/Thomas F. Monteleone/Rick Hautala/Melanie Tem/Trey R. Baker/Ken Goldman/Vincent Starrett/Tom Piccirilli,3.31,0870541854,9780870541858,eng,237,16,3,10/1/2006,Arkham House Publishers -36507,The Azathoth Cycle: Tales of the Blind Idiot God,Robert M. Price/Edward Pickman Derby/Peter Cannon/Stephen Mark Rainey/Lin Carter/Henry Kuttner/Ramsey Campbell/Thomas Ligotti/Richard L. Tierney/Gary Myers/Donald R. Burleson/C.J. Henderson/Stephen Studach/John Glasby/Allen Mackey,3.75,1568820402,9781568820408,eng,260,124,6,3/1/1995,Chaosium -36522,Rethinking the Economics of War: The Intersection of Need Creed and Greed,Cynthia J. Arnson/I. William Zartman,3.50,0801882982,9780801882982,eng,320,10,0,9/8/2005,Woodrow Wilson Center Press / Johns Hopkins University Press -36530,Narrative of the Life of Frederick Douglass: An American Slave Written by Himself,Frederick Douglass/David W. Blight,4.02,0312257376,9780312257378,eng,188,501,36,12/25/2002,Bedford Books -36532,Narrative of the Life of Frederick Douglass: An American Slave,Frederick Douglass/Gregory Stephens/Peter J. Gomes,4.02,0451529944,9780451529947,eng,144,438,50,6/7/2005,Signet Book -36533,Narrative of the Life of Frederick Douglass: An American Slave Written by Himself,Frederick Douglass,4.02,074348777X,9780743487771,eng,208,63,7,11/1/2004,Simon Schuster -36535,Autobiographies: Narrative of the Life of Frederick Douglass / My Bondage and My Freedom / Life and Times of Frederick Douglass,Frederick Douglass/Henry Louis Gates Jr.,4.35,0940450798,9780940450790,eng,1132,504,36,2/1/1994,Library of America -36536,Narrative of the Life of Frederick Douglass an American Slave / Incidents in the Life of a Slave Girl,Frederick Douglass/Harriet Ann Jacobs/Kwame Anthony Appiah,4.01,0345478231,9780345478238,eng,464,986,93,12/28/2004,Modern Library -36550,Antes que anochezca,Reinaldo Arenas,4.17,8483105020,9788483105023,spa,343,427,35,2/28/2008,TusQuets -36555,Hallucinations: or The Ill-Fated Peregrinations of Fray Servando,Reinaldo Arenas/Andrew Hurley/Thomas Colchie,4.09,0142000191,9780142000199,en-US,288,187,8,12/31/2001,Penguin Books -36556,The Assault,Reinaldo Arenas/Andrew Hurley/Thomas Colchie,3.79,0140157182,9780140157185,eng,176,139,12,6/1/1995,Penguin Books -36567,Cold As Ice (Ice #2),Anne Stuart,3.81,0778323560,9780778323563,eng,360,3328,246,10/24/2006,Mira Books -36568,Shadow Lover,Anne Stuart,3.81,0451408691,9780451408693,eng,320,1143,93,3/1/1999,Onyx -36569,Ice Blue (Ice #3),Anne Stuart,3.94,0778324788,9780778324782,eng,378,3215,197,3/27/2007,Mira Books -36570,The Devil's Waltz,Anne Stuart,3.74,0778322734,9780778322733,eng,363,1275,87,1/24/2006,Mira -36571,Shadows At Sunset,Anne Stuart,3.63,1551665719,9781551665719,eng,384,762,38,8/25/2000,MIRA -36572,To Love a Dark Lord,Anne Stuart,3.82,0380776049,9780380776047,eng,409,1245,95,2/24/1994,Avon Books -36573,Ritual Sins,Anne Stuart,3.68,0451192524,9780451192523,eng,396,682,67,10/1/1997,Onyx -36575,Prince of Magic,Anne Stuart,3.64,082176053X,9780821760536,eng,348,260,17,12/1/1998,Zebra -36598,Bound for Oregon,Jean Van Leeuwen/James Watling/R.W. Alley,3.80,0140383190,9780140383195,eng,176,862,92,11/1/1996,Puffin Books -36606,Oliver and Albert Friends Forever (Easy-to-Read Puffin),Jean Van Leeuwen/Ann Schweninger,3.61,0142300845,9780142300848,eng,48,23,2,3/18/2002,Puffin -36609,Midnight Brunch (Casa Dracula #2),Marta Acosta,3.80,1416520392,9781416520399,en-US,336,919,82,4/24/2007,Gallery Books -36636,Midnight Is a Place,Joan Aiken,3.92,0618196250,9780618196258,en-US,304,857,61,10/28/2002,HMH Books for Young Readers -36637,Black Hearts in Battersea (The Wolves Chronicles #2),Joan Aiken/Edward Gorey,4.13,0395971284,9780395971284,en-US,240,3626,145,10/25/1999,HMH Books for Young Readers -36639,A Small Pinch of Weather,Joan Aiken,4.26,0006754899,9780006754893,eng,239,122,11,1/1/2000,HarperCollins Publishers -36641,The Cuckoo Tree (The Wolves Chronicles #6),Joan Aiken,4.04,0618070230,9780618070237,eng,304,878,44,9/25/2000,HMH Books for Young Readers -36644,Nightbirds on Nantucket (The Wolves Chronicles #3),Joan Aiken,4.13,0395971853,9780395971857,eng,218,1946,96,10/25/1999,HMH Books for Young Readers -36652,Seminole Song,Vella Munn,3.71,0812538838,9780812538830,eng,320,46,11,3/15/1998,Forge -36664,Mary Engelbreit's Home Companion,Charlotte Lyons/Mary Engelbreit/Barbara E. Martin,4.12,0836246217,9780836246216,eng,128,60,2,8/1/1994,Andrews McMeel Publishing -36665,Mary Engelbreit's Mother Goose: One Hundred Best-Loved Verses,Mary Engelbreit/Leonard S. Marcus,4.37,0060081716,9780060081713,en-US,128,567,50,9/20/2005,HarperCollins -36666,Save the Date: A Spirituality of Dating Love Dinner and the Divine,Jason King,3.60,0824521234,9780824521233,eng,191,5,1,9/1/2003,Crossroad Publishing Company -36667,Killing the Imposter God: Philip Pullman's Spiritual Imagination in His Dark Materials,Donna Freitas/Jason Edward King,3.67,0787982377,9780787982379,en-GB,224,42,12,9/1/2007,Jossey-Bass -36677,Teaching the World's Children: ESL for Ages Three to Seven (The Pippin Teacher's Library),Mary Ashworth/H. Patricia Wakefield,3.40,0887511120,9780887511127,eng,101,5,3,5/13/2004,Pippin Publishing -36679,Seven Miles a Second,David Wojnarowicz/James Romberger/Marguerite Van Cook,4.04,1563892472,9781563892479,eng,59,84,6,5/1/1996,DC Comics -36681,Drop The Rock: Removing Character Defects - Steps Six and Seven,Bill Pittman/Todd W. Hall/Sara S./Todd W.,4.44,1592851614,9781592851614,en-US,132,955,41,2/11/2005,Hazelden Publishing -36706,The Oxford Dictionary of Quotations,Elizabeth Knowles,4.20,0198601735,9780198601739,en-US,1536,37,2,11/25/1999,Oxford University Press USA -36715,Liberty Before Liberalism,Quentin Skinner,3.90,0521638763,9780521638760,eng,156,131,10,1/13/1998,Cambridge University Press -36717,The Return of Grand Theory in the Human Sciences,Quentin Skinner,3.88,0521398339,9780521398336,en-US,224,31,3,9/13/1990,Cambridge University Press -36768,Symptomatic,Danzy Senna,3.32,1594480672,9781594480676,eng,220,523,65,2/1/2005,Riverhead Books -36775,Tales of Magick: Dark Adventure,Phil Brucato/Aaron Rosenberg,3.45,1565044045,9781565044043,eng,96,38,2,12/10/1999,White Wolf Games Studio -36822,Doctor Tandy's First Guide to Life Extension and Transhumanity,Charles Tandy/Raël/William Faloon/R. Michael Perry/Robin Hanson/Nick Bostrom/Robert A. Freitas Jr./Christopher J. Phoenix/Avatar Polymorph/Jim Yount,4.00,1581126506,9781581126501,eng,292,3,0,12/28/2001,Universal Publishers -36853,Tyrannosaurus Wrecks (Stanley #1),Laura Driscoll/Alisa Klayman-Grodsky/Eric Weiner,5.00,0786845031,9780786845033,eng,24,2,1,2/1/2003,Disney Press -36859,Bailando al rescate (Dora La Exploradora),Dave Aikins/Laura Driscoll,3.47,1416915044,9781416915041,spa,24,2,0,9/1/2005,Libros para ninos -36865,Richard Kern Action,Richard Kern/Dian Hanson,3.84,3822856495,9783822856499,eng,280,13,0,2/1/2007,Taschen -36893,On Film (Thinking in Action),Stephen Mulhall,3.90,0415247969,9780415247962,eng,152,37,1,12/23/2001,Routledge -36904,Warren G. Harding (The American Presidents #29),John W. Dean/Arthur M. Schlesinger Jr.,3.73,0805069569,9780805069563,eng,202,764,82,1/7/2004,Times Books -36925,Prince of the City,Keith Herber,3.56,1565048202,9781565048201,eng,317,58,0,3/1/1995,White Wolf Games Studio -36926,Spawn of Azathoth: Herald of the End of Time (Call of Cthulhu RPG),Keith Herber,3.79,1568821786,9781568821788,eng,197,22,1,5/1/2005,Chaosium -36946,Random House Crossword Mega Omnibus Volume 1,United Feature Syndication,0.00,081292763X,9780812927634,eng,336,0,0,7/22/1997,Random House Puzzles & Games -36952,Chester,Syd Hoff,3.74,0064440958,9780064440950,eng,64,196,31,4/18/1986,HarperCollins -36953,Stanley,Syd Hoff,3.61,0060225351,9780060225353,eng,64,8,1,12/31/1992,HarperCollins Publishers -36956,Grizzwold,Syd Hoff,3.82,0064440575,9780064440578,eng,64,214,23,9/5/1984,HarperCollins -36958,Captain Cat,Syd Hoff,3.65,0064441768,9780064441766,eng,48,110,15,4/22/1994,HarperCollins -37003,Once Upon a Gulf Coast Summer,Susan Oliver,3.44,0805427775,9780805427776,en-US,368,36,9,1/15/2004,B Fiction -37023,Margaret Atwood's Power: Mirrors Reflections and Images in Select Fiction and Poetry,Shannon Hengen,3.43,092900549X,9780929005492,eng,176,7,1,10/6/1993,Sumach Press -37024,The Bears on Hemlock Mountain,Alice Dalgliesh/Helen Sewell,3.79,0689716044,9780689716041,eng,58,2164,147,10/31/1992,Aladdin -37027,Hoodwinked,Quentin Carter,4.43,0976234963,9780976234968,en-US,277,976,30,9/1/2005,Triple Crown Publications -37032,The Risk of Darkness (Simon Serrailler #3),Susan Hill,3.95,0701179791,9780701179793,eng,320,3060,264,7/1/2006,Chatto & Windus -37033,The Pure in Heart (Simon Serrailler #2),Susan Hill,3.92,0701176814,9780701176815,en-GB,370,45,10,6/2/2005,Chatto Windus -37034,The Woman in Black,Susan Hill/John Lawrence,3.71,1567921892,9781567921892,eng,138,31467,3061,12/1/2001,David R. Godine Publisher -37036,The Pure in Heart (Simon Serrailler #2),Susan Hill,3.92,0099462109,9780099462101,eng,320,4245,347,6/1/2006,Vintage -37040,The Various Haunts of Men (Simon Serrailler #1),Susan Hill,3.82,1585678767,9781585678761,eng,438,8361,819,4/19/2007,Harry N. Abrams -37043,Septem Quae Supersunt Tragoediae,Aeschylus/Denys L. Page,4.10,0198145705,9780198145707,grc,352,6,0,1/11/1973,Clarendon Press -37051,鋼の錬金術師 1 [Hagane no Renkinjutsushi 1] (Fullmetal Alchemist #1),Hiromu Arakawa,4.50,4757506201,9784757506206,jpn,180,56,10,1/20/2002,ガンガンコミックス -37052,鋼の錬金術師 4 (Fullmetal Alchemist #4),Hiromu Arakawa,4.55,4757508557,9784757508552,jpn,184,20,2,1/20/2003,ガンガンコミックス -37053,鋼の錬金術師 5 (Fullmetal Alchemist #5),Hiromu Arakawa,4.56,4757509669,9784757509665,jpn,188,20,1,6/21/2003,ガンガンコミックス -37054,鋼の錬金術師 3 (Fullmetal Alchemist #3),Hiromu Arakawa,4.56,4757507917,9784757507913,jpn,182,22,2,9/21/2002,ガンガンコミックス -37055,鋼の錬金術師 8 (Fullmetal Alchemist 8),Hiromu Arakawa,4.57,4757512309,9784757512306,jpn,192,22,1,7/22/2004,ガンガンコミックス -37057,Love's Executioner And Other Tales Of Psychotherapy,Irvin D. Yalom,4.21,0140128468,9780140128468,eng,270,226,17,1/31/1995,Penguin Books -37058,The Brothers Karamazov,Fyodor Dostoyevsky/Thomas R. Beyer Jr./Simon Vance,4.32,1596440783,9781596440784,eng,16,3,1,5/1/2005,Hovel Audio -37060,Old Filth (Old Filth #1),Jane Gardam,3.93,1933372133,9781933372136,eng,290,10337,1619,6/1/2006,Europa Editions -37061,Filth,Irvine Welsh,3.73,0099284294,9780099284291,eng,393,148,17,7/1/1999,Vintage -37063,The Gospel of Filth: A Bible of Decadence & Darkness,Gavin Baddeley/Dani Filth,4.45,9781903254,9781903254387,eng,544,114,6,2/5/2010,Fab Press -37064,Divine Filth: Lost Writings (Modern Classics),Georges Bataille,3.88,1840681128,9781840681123,eng,160,76,2,9/15/2004,Creation Books -37066,Filth: Dirt Disgust and Modern Life,William A. Cohen,4.08,0816643008,9780816643004,eng,360,11,0,12/15/2004,Univ Of Minnesota Press -37067,Pink Flamingos and Other Filth: Three Screenplays,John Waters,4.21,1560257016,9781560257011,eng,258,48,3,4/7/2005,Running Press -37070,Let It Be Love (Effingtons #11),Victoria Alexander,3.79,0060593202,9780060593209,eng,384,1212,45,10/25/2005,Avon -37072,The Marriage Lesson (Effingtons #3),Victoria Alexander,3.90,0380818205,9780380818204,eng,372,1484,67,5/1/2001,Avon -37073,When We Meet Again (Effingtons #10),Victoria Alexander,3.87,0060593199,9780060593193,eng,384,1320,58,5/24/2005,Avon -37074,Her Highness My Wife (Effingtons #5),Victoria Alexander,3.66,0060001445,9780060001445,eng,362,992,47,7/30/2002,Avon HarperCollins -37076,Love With the Proper Husband (Effingtons #6),Victoria Alexander,3.85,0060001453,9780060001452,eng,358,1471,61,3/25/2003,Avon -37077,The Lady in Question (Effingtons #7),Victoria Alexander,3.77,0060517611,9780060517618,eng,384,1286,60,11/25/2003,Avon -37083,Going on Being: Buddhism and the Way of Change,Mark Epstein,3.99,0767904613,9780767904612,eng,240,576,48,2/12/2002,Broadway Books -37087,A New History of Early English Drama,John D. Cox/David Scott Kastan/Stephen Greenblatt,4.05,0231102437,9780231102438,eng,579,20,1,8/15/1997,Columbia University Press -37095,The Shell Seekers,Rosamunde Pilcher,4.15,051722285X,9780517222850,eng,530,84085,2230,4/6/2004,Gramercy Books -37105,Cat's Cradle (Cat #1),William W. Johnstone,3.85,0821718258,9780821718254,eng,412,151,14,5/1/1986,Zebra -37106,Five Patients,Michael Crichton,3.48,0099601117,9780099601111,eng,235,74,8,2/2/1995,Arrow -37119,Undertaker of the Mind: John Monro and Mad-Doctoring in Eighteenth-Century England,Jonathan Andrews/Andrew Scull,3.42,0520231511,9780520231511,eng,386,12,1,11/27/2001,University of California Press -37134,Consider the Lilies,Iain Crichton Smith/Isobel Murray,3.88,0753812932,9780753812938,eng,144,332,33,1/1/1900,Polygon -37139,The Admirable Crichton,J.M. Barrie,3.72,1406955817,9781406955811,eng,88,304,36,11/3/2006,Hard Press -37169,The Delta Star,Joseph Wambaugh,3.66,0553273868,9780553273861,eng,291,592,20,1/1/1984,Bantam -37170,Finnegan's Week,Joseph Wambaugh,3.63,0553763245,9780553763249,eng,352,561,42,8/1/1995,Bantam -37186,The Miraculous Journey of Edward Tulane,Kate DiCamillo/Bagram Ibatoulline,4.37,0763625892,9780763625894,eng,200,66426,8035,2/14/2006,Candlewick Press -37187,The Tiger Rising,Kate DiCamillo,3.82,0763618985,9780763618988,eng,128,19133,2279,7/1/2002,Candlewick Press -37189,Mercy Watson Goes for a Ride,Kate DiCamillo/Chris Van Dusen,4.15,0763623326,9780763623326,eng,72,4162,332,5/9/2006,Candlewick Press -37190,The Tale of Despereaux,Kate DiCamillo/Timothy Basil Ering,4.04,0763625299,9780763625290,eng,267,142149,8457,9/9/2008,Candlewick Press -37191,Mercy Watson to the Rescue,Kate DiCamillo/Chris Van Dusen,4.05,0763622702,9780763622701,eng,68,8987,831,8/23/2005,Candlewick Press -37195,Mercy Watson: Princess in Disguise,Kate DiCamillo/Chris Van Dusen,4.16,0763630144,9780763630140,eng,70,2973,202,7/10/2007,Candlewick Press -37205,The Mill on the Floss,George Eliot,3.79,0140620273,9780140620276,en-GB,536,198,32,2/24/1994,Penguin Books -37211,Culture Shock! Laos (Culture Shock!),Stephen Mansfield,3.29,1857331648,9781857331646,eng,220,12,1,1/30/2000,Kuperard -37231,The Cambridge Companion to Plotinus,Lloyd P. Gerson,4.36,0521476763,9780521476768,eng,480,21,2,11/28/1996,Cambridge University Press -37238,In the Land of the Lawn Weenies and Other Warped and Creepy Tales (Weenies series #1),David Lubar,3.96,0765345706,9780765345707,en-US,256,720,69,6/16/2003,Starscape -37240,Hidden Talents (Talents #1),David Lubar,3.94,0765357666,9780765357663,eng,240,2378,271,2/6/2007,Starscape -37241,Dunk,David Lubar,3.80,0618439099,9780618439096,eng,272,911,118,6/7/2004,HMH Books for Young Readers -37261,Carnet de Voyage,Craig Thompson,3.76,1891830600,9781891830600,en-US,224,4415,400,8/3/2004,Top Shelf Productions -37262,Dark Horse Deluxe Journal: Craig Thompson's Angels and Demons,Craig Thompson,3.52,1593070691,9781593070694,eng,128,46,1,12/30/2003,Dark Horse -37264,Good-Bye Chunky Rice,Craig Thompson,3.80,0375714766,9780375714764,eng,125,7182,468,5/9/2006,Pantheon Books -37266,Adieu Chunky Rice,Craig Thompson,3.80,2840558599,9782840558590,spa,128,10,1,6/20/2002,Delcourt -37272,Balanchine: A Biography,Bernard Taper,4.31,0520206398,9780520206397,eng,413,63,4,11/8/1996,University of California Press -37277,A Scandalous Life: The Biography of Jane Digby,Mary S. Lovell,4.02,1857024699,9781857024692,en-US,365,850,92,6/2/2003,Fourth Estate -37282,The Splendid Outcast: Beryl Markham's African Stories,Beryl Markham/Mary S. Lovell,3.72,0865473013,9780865473010,eng,139,307,33,10/1/1987,North Point Press -37297,Eyes of Prey (Lucas Davenport #3),John Sandford,4.18,0425214435,9780425214435,eng,358,18802,519,3/6/2007,G.P. Putnam's Sons -37299,Sharpe's Prey (Sharpe #5),Bernard Cornwell,4.05,0060084537,9780060084530,eng,288,293,23,10/23/2012,Harper Paperbacks -37300,Broken Prey (Lucas Davenport #16),John Sandford,4.18,0425204308,9780425204306,eng,481,12808,453,5/2/2006,Berkley -37301,Rules of Prey (Lucas Davenport #1),John Sandford,4.11,0425205819,9780425205815,eng,479,62767,1738,8/2/2005,G.P. Putnam's Sons -37302,Certain Prey (Lucas Davenport #10),John Sandford,4.22,0743484193,9780743484190,eng,384,15377,416,2/21/2004,Simon & Schuster -37304,Winter Prey (Lucas Davenport #5),John Sandford,4.26,0425141233,9780425141236,eng,400,35806,503,3/1/1994,Berkley -37305,Destiny's Daughters,Gwynne Forster/Donna Hill/Parry A. Brown,4.20,0758212380,9780758212382,eng,292,71,8,1/31/2006,Kensington -37326,Fragments,Jean Baudrillard/Emily Agar,3.80,1844675734,9781844675739,eng,148,127,11,1/17/2007,Verso -37328,The Consumer Society: Myths and Structures,Jean Baudrillard/Chris Turner/George Ritzer,4.11,0761956921,9780761956921,eng,224,698,28,4/14/1998,Sage Publications Ltd -37329,The Vital Illusion,Jean Baudrillard/Julia Witwer,3.84,0231121008,9780231121002,eng,96,117,7,11/22/2000,Columbia University Press -37330,Hijos de la medianoche,Salman Rushdie/Miguel Sáenz,3.98,8497934326,9788497934329,spa,798,63,13,2/3/2005,DeBolsillo -37338,Wicked Ties (Wicked Lovers #1),Shayla Black,3.96,0425213617,9780425213612,en-US,341,22055,1141,1/2/2007,Berkley Heat -37339,On a Wicked Dawn (Cynster #9),Stephanie Laurens,4.06,0060002050,9780060002053,eng,448,5708,133,4/30/2002,Avon -37340,The Wicked (Vampire Huntress #8),L.A. Banks,4.41,0312352360,9780312352363,en-US,389,1778,36,9/5/2000,St. Martins Press-3PL -37341,Wicked Sacrifice (Bound Hearts #4-5),Lora Leigh,4.21,1419953966,9781419953965,eng,290,2128,27,11/30/2006,Elloras Cave -37343,My Wicked Pirate,Rona Sharon,3.90,0821780573,9780821780572,eng,432,502,33,11/1/2006,Zebra -37345,Wicked Dreams,Kingdome 19,3.67,3861878755,9783861878759,eng,112,3,0,9/1/2006,Bruno Gmünder -37347,If I Have a Wicked Stepmother Where's My Prince?,Melissa Kantor,3.66,0786809604,9780786809608,en-US,283,4393,432,9/1/2005,Disney-Hyperion -37349,A Couple of April Fools (The Hamlet Chronicles #6),Gregory Maguire/Elaine Clayton,3.48,0060760826,9780060760823,eng,240,3,0,3/1/2005,HarperCollins -37350,The Good Liar,Gregory Maguire,3.54,0064408744,9780064408745,eng,144,125,22,5/28/2002,HarperCollins -37356,Seven Spiders Spinning (The Hamlet Chronicles #1),Gregory Maguire/Dirk Zimmer,3.60,0064405958,9780064405959,eng,144,264,30,8/4/1995,HarperCollins -37360,Three Rotten Eggs (The Hamlet Chronicles #5),Gregory Maguire/Elaine Clayton,3.74,0060546573,9780060546571,eng,240,79,5,1/18/2005,HarperCollins -37363,Das Tulpenhaus oder Bekenntnisse einer häßlichen Stiefschwester,Gregory Maguire/Mechtild Sandberg-Ciletti,3.53,3423242302,9783423242301,ger,377,1,1,12/1/2000,Dtv -37377,On the Night You Were Born,Nancy Tillman,4.36,0312346069,9780312346065,en-US,32,12837,505,10/17/2006,Feiwel & Friends -37379,The Night at the Museum,Milan Trenc,3.91,0764136313,9780764136313,eng,32,817,34,11/1/2006,B.E.S. Publishing -37380,The Heart Is a Lonely Hunter,Carson McCullers,3.98,0618084746,9780618084746,eng,359,77530,4685,9/8/2000,Mariner Books -37381,The Heart Is a Lonely Hunter,Carson McCullers/Kasia Boddy,3.98,0141185228,9780141185224,eng,317,1459,169,8/31/2000,Penguin Classics -37387,The Prime of Miss Jean Brodie / The Girls of Slender Means / The Driver's Seat / The Only Problem,Muriel Spark,3.79,1857152743,9781857152746,eng,512,1477,90,5/6/2004,Random House -37388,The Prime of Miss Jean Brodie / The Girls of Slender Means / The Driver's Seat / The Only Problem,Muriel Spark,3.79,1400042062,9781400042067,eng,462,92,15,4/6/2004,Everyman's Library -37390,The Pat Hobby Stories,F. Scott Fitzgerald/Arnold Gingrich,3.56,0684804425,9780684804422,eng,192,927,100,12/6/1995,Scribner -37395,The Pursuit of the Well-Beloved & The Well-Beloved,Thomas Hardy/Patricia Ingham,3.61,0140435190,9780140435191,eng,416,127,10,8/28/1997,Penguin Classics -37405,Playing in the Dark: Whiteness and the Literary Imagination,Toni Morrison,4.24,0674673778,9780674673779,eng,110,3738,241,5/1/1992,Harvard University Press -37408,The Big Box,Toni Morrison/Slade Morrison,3.95,0786812915,9780786812912,eng,48,390,98,9/1/2002,Little Brown Books for Young Readers -37415,Their Eyes Were Watching God,Zora Neale Hurston,3.91,0061120065,9780061120060,eng,219,220309,9536,5/30/2006,Amistad -37417,Grasping God's Word: A Hands-On Approach to Reading Interpreting and Applying the Bible,J. Scott Duvall/J. Daniel Hays,4.17,0310259665,9780310259664,en-US,462,811,68,8/2/2005,Zondervan Publishing Company -37420,The Short Stories of Ernest Hemingway,Ernest Hemingway,4.26,0020518609,9780020518600,eng,499,113,12,3/1/1987,Scribner Classics -37424,Little Big Book for God's Children,Alice Wong/Lena Tabori,4.88,094180755X,9780941807555,en-US,352,8,0,9/1/2001,Welcome Books -37426,Little Children,Tom Perrotta,3.62,0312315732,9780312315733,eng,355,26316,1968,1/1/2005,St. Martin's Griffin -37434,Dale Loves Sophie to Death,Robb Forman Dew,3.23,0316890669,9780316890663,en-US,256,244,23,9/19/2001,Back Bay Books -37435,The Secret Life of Bees,Sue Monk Kidd,4.05,0142001740,9780142001745,eng,302,1044725,26279,1/28/2003,Penguin Books -37438,Hokkaido Highway Blues: Hitchhiking Japan,Will Ferguson,4.00,1841952885,9781841952888,eng,344,2837,195,6/5/2003,Canongate Books -37444,The Martian Chronicles,Ray Bradbury/Ian Miller,4.14,0553011804,9780553011807,eng,259,46,2,12/1/2006,Bantam Books -37451,You Know You Love Me (Gossip Girl #2),Cecily von Ziegesar,3.52,0316911488,9780316911481,en-US,240,19261,648,9/1/2002,Poppy -37467,Classroom Interactions as Cross-Cultural Encounters: Native Speakers in EFL Lessons,Jasmine C.M. Luk/Angel M.Y. Lin,0.00,0805850848,9780805850840,eng,241,0,0,8/5/2006,Routledge -37471,Them: Adventures with Extremists,Jon Ronson,3.95,0330375466,9780330375467,eng,328,1103,96,2/8/2002,Pan Macmillan Ltd. (London) -37476,Why I Hate Canadians,Will Ferguson,3.72,1550546007,9781550546002,en-GB,220,630,48,2/19/2007,Not Avail -37477,Happiness,Will Ferguson,3.79,006052510X,9780060525101,eng,320,2256,182,6/3/2003,HarperPerennial -37481,Discovering God's Will,Sinclair B. Ferguson,4.24,0851513344,9780851513348,eng,126,92,17,3/1/1982,Banner of Truth -37491,The Truth of the Matter,Robb Forman Dew,3.09,0316013307,9780316013307,eng,352,194,40,11/3/2006,Back Bay Books -37516,Spinoza: A Life,Steven Nadler,4.10,0521002931,9780521002936,eng,422,234,23,4/23/2001,Cambridge University Press -37525,Organizational Architecture: Designs for Changing Organizations,David A. Nadler/Robert B. Shaw/Marc S. Gerstein,4.62,1555424430,9781555424435,eng,304,2,0,5/26/1992,Jossey-Bass -37526,Henry V,William Shakespeare/Barbara A. Mowat/Paul Werstine/Michael Neill,3.88,0743484878,9780743484879,eng,294,35155,832,6/22/2004,Washington Square Press -37530,Erotism: Death and Sensuality,Georges Bataille/Mary Dalwood,4.11,0872861902,9780872861909,eng,288,1818,55,1/1/2001,City Lights Publishers -37534,The Weimar Republic: The Crisis of Classical Modernity,Detlev J.K. Peukert/Richard Deveson,3.84,0809015560,9780809015566,eng,360,198,11,9/1/1993,Hill and Wang -37536,Adam and Eve and Pinch Me,Ruth Rendell,3.64,1400031184,9781400031184,eng,368,1932,131,1/14/2003,Vintage Crime/Black Lizard -37538,A Pinch of Snuff (Dalziel & Pascoe #5),Reginald Hill,3.84,0440169127,9780440169123,eng,336,1077,47,7/1/1990,Dell -37539,Egyptian Myth: A Very Short Introduction,Geraldine Pinch,3.61,0192803468,9780192803467,eng,143,189,18,7/8/2004,Oxford University Press USA -37540,A Pinch of Poison (Hemlock Falls Mysteries #3),Claudia Bishop,3.57,0425151042,9780425151044,eng,249,328,29,12/1/1995,Berkley -37546,Persuasion,Jane Austen,4.14,0812565886,9780812565881,eng,242,1532,61,10/15/1999,Tor Classics -37552,Beyond Seduction (Beyond Duet #2),Emma Holly,3.70,0515133086,9780515133080,eng,297,1329,60,6/28/2002,Jove -37553,Sense and Sensibility,Jane Austen/Claire Lamont/James Kinsley,4.07,0192804782,9780192804785,eng,327,6853,249,4/29/2004,Oxford University Press -37554,Sense and Sensibility,Jane Austen/Claire Lamont/Ros Ballaster,4.07,0140434259,9780140434255,eng,346,528,39,1/1/1996,Penguin Classics -37558,Sense and Sensibility,Jane Austen/Laura Engel,4.07,159308336X,9781593083366,eng,312,1189,86,10/21/2004,Barnes & Noble -37560,Sense and Sensibility,Jane Austen/Laura Engel,4.07,1593080492,9781593080495,eng,336,655,67,8/1/2003,Barnes Noble Classics -37561,One Flew Over the Cuckoo's Nest (SparkNotes Literature Guide),SparkNotes/Ken Kesey,4.13,1586633791,9781586633790,eng,72,4,0,7/15/2002,SparkNotes -37564,A Different Mirror: A History of Multicultural America,Ronald Takaki,4.13,0316831115,9780316831116,en-US,508,3389,212,6/1/1994,Back Bay Books -37566,Trapped in the Mirror: Adult Children of Narcissists in Their Struggle for Self,Elan Golomb,3.82,0688140718,9780688140717,en-US,272,779,82,3/28/1995,William Morrow Paperbacks -37569,The Buddha in Your Mirror: Practical Buddhism and the Search for Self,Woody Hochswender/Greg Martin/Ted Morino,4.28,0967469783,9780967469782,eng,230,732,72,10/1/2001,Middleway Press -37572,A Distant Mirror: The Calamitous 14th Century,Barbara W. Tuchman,4.08,0345910907,9780345910905,eng,704,143,26,7/12/1987,Ballantine Books -37573,They Do It With Mirrors,Agatha Christie/Rosemary Leach,3.76,1559277580,9781559277587,eng,7,2,0,11/8/2002,MacMillan Audio -37585,The Lemon Table,Julian Barnes,3.68,1400076501,9781400076505,eng,241,2043,167,4/5/2005,Vintage -37587,The Criminal Mastermind Collection Bks 1-3 (Artemis Fowl #1-3),Eoin Colfer,4.36,0786848693,9780786848690,en-US,912,858,12,9/27/2005,Miramax -37592,Encuentro en el Ártico (Artemis Fowl #2),Eoin Colfer,3.95,8497939212,9788497939218,spa,344,3,0,3/8/2006,Debolsillo -37594,The Eternity Code (Artemis Fowl #3),Eoin Colfer,4.04,0439573882,9780439573887,eng,309,221,13,10/1/2003,Scholastic Inc. -37595,El cubo B (Artemis Fowl #3),Eoin Colfer/Ana Alcaina,4.04,0307343111,9780307343116,spa,352,17,0,7/5/2005,Montena -37598,The Eternity Code (Artemis Fowl #3),Eoin Colfer,4.04,0670913529,9780670913527,eng,329,187,6,4/3/2003,Penguin Group -37603,Forget Me Not: Photography and Remembrance,Geoffrey Batchen,4.22,156898619X,9781568986197,eng,128,56,8,8/3/2006,Princeton Architectural Press -37612,Monsoon Summer,Mitali Perkins,3.82,0440238404,9780440238409,eng,257,588,107,4/11/2006,Laurel Leaf Library -37619,Warlock (Ancient Egypt #3),Wilbur Smith,4.04,0312980388,9780312980382,eng,642,11169,272,9/16/2002,St. Martin's Paperbacks -37623,Sea of Thunder: Four Commanders and the Last Great Naval Campaign 1941-1945,Evan Thomas,4.11,0743252217,9780743252218,eng,415,2414,131,11/7/2006,Simon & Schuster -37624,Gift from the Sea,Anne Morrow Lindbergh,4.17,0679406832,9780679406839,en-US,132,1372,187,10/8/1991,Pantheon Books -37625,Wide Sargasso Sea: A Reader's Guide to Essential Criticism,Carl Plasa,3.63,184046268X,9781840462685,eng,194,166,10,9/6/2002,Palgrave Macmillan -37630,The Good Housekeeping Illustrated Cookbook,Good Housekeeping/Zoe Coulson,4.37,0878510370,9780878510375,eng,512,1160,35,10/1/1980,Hearst Communications -37638,Evelina,Frances Burney/Edward A. Bloom,3.67,0192840312,9780192840318,eng,455,12101,495,7/18/2002,Oxford University Press -37646,Dancing On Air,Frances Oliver,4.00,1553100662,9781553100669,eng,157,10,1,4/30/2004,Ash-Tree Press -37651,Holding On to the Air,Suzanne Farrell/Toni Bentley,4.09,0813025931,9780813025933,eng,352,524,40,9/25/2002,University Press of Florida -37656,The Turtle (The Lighthouse Family #4),Cynthia Rylant/Preston McDaniels,4.07,0689863128,9780689863127,eng,48,155,13,2/1/2006,Beach Lane Books -37657,The Body in the Lighthouse,Katherine Hall Page,3.68,0380813866,9780380813865,en-US,352,434,28,3/30/2004,Avon -37660,American Tragedy: Kennedy Johnson and the Origins of the Vietnam War,David E. Kaiser,3.51,0674006720,9780674006720,eng,576,30,3,1/30/2002,Belknap Press -37670,The Sun Also Rises,Ernest Hemingway,3.82,0684182602,9780684182605,eng,247,62,9,10/1/1984,Scribner Book Company -37673,The Call of the Wild,Jack London/Wendell Minor,3.86,068981836X,9780689818363,eng,128,188,16,10/1/1999,Aladdin -37674,The Call of the Wild,Jack London/Gary Paulsen,3.86,0689856741,9780689856747,eng,139,2210,157,2/1/2003,Aladdin -37675,The Call of the Wild and Three Other Klondike Stories,Jack London/Roger Dressler,3.81,1587887738,9781587887734,eng,5,33,1,9/1/2001,Brilliance Audio -37678,The Call of the Wild and Selected Stories: 100th Anniversary Ed.,Jack London/Alex Kershaw,3.82,0451527038,9780451527035,eng,192,54,12,11/1/1998,Signet Classics -37683,Fahrenheit 451,Ray Bradbury/Alfredo Crespo,3.99,8497930053,9788497930055,spa,176,580,64,11/29/2004,Debolsillo -37684,The Lion the Witch and the Wardrobe (Chronicles of Narnia #1),Hiawyn Oram/C.S. Lewis/Tudor Humphries,4.25,0060556501,9780060556501,eng,48,6307,64,9/21/2004,HarperCollins -37685,The Lion the Witch and the Wardrobe (Chronicles of Narnia #2),C.S. Lewis/Pauline Baynes,4.21,0060765488,9780060765484,eng,189,652,70,10/25/2005,HarperEntertainment -37690,The Lion the Witch and the Wardrobe (Narnia),C.S. Lewis/Pauline Baynes,4.21,0060845244,9780060845247,en-US,189,59,7,10/4/2005,HarperCollins Publishers -37693,New Moon (Moon #6),Rebecca York,3.86,0425216020,9780425216026,eng,323,634,30,3/6/2007,Berkley Sensation -37694,Health: The Basics (Donatelle Series),Rebecca J. Donatelle,3.58,0805377956,9780805377958,en-US,480,6,0,3/9/2006,Benjamin-Cummings Publishing Company -37698,Cliffsnotes on Eliot's Middlemarch,Brian Johnston/George Eliot/CliffsNotes,4.14,0822008254,9780822008255,eng,109,7,2,7/6/1967,Cliffs Notes -37700,Alice's Adventures in Wonderland,Lewis Carroll/Richard Kelly,4.02,155111223X,9781551112237,eng,356,73,8,9/13/2000,Broadview Press Inc -37707,Anne of the Island and Tales of Avonlea,L.M. Montgomery,4.30,051703705X,9780517037058,eng,573,417,5,3/20/1991,Gramercy -37716,A Christmas Carol and The Night Before Christmas,Charles Dickens/Clement C. Moore/Arthur Rackham,4.35,0517229277,9780517229279,eng,156,91,15,10/3/2006,Gramercy Books -37722,In Search of Dracula: The History of Dracula and Vampires,Raymond T. McNally/Radu Florescu,3.87,0395657830,9780395657836,eng,320,1257,76,10/31/1994,Mariner Books -37726,The Annotated Charlotte's Web,E.B. White/Garth Williams/Peter F. Neumeyer,4.17,0060882603,9780060882600,eng,320,43,2,10/31/2006,HarperCollins -37731,Just as Long as We're Together,Judy Blume,4.07,0330398040,9780330398046,eng,202,9375,422,4/9/2001,Macmillan Children's Books -37734,Wifey / Smart Women,Judy Blume,3.68,0743437578,9780743437578,eng,560,376,20,10/2/2001,Pocket Books -37736,Forever...,Judy Blume,3.62,0689849737,9780689849732,eng,199,239,51,12/1/2002,Atheneum/Richard Jackson Books -37737,Fudge-a-Mania (Fudge #4),Judy Blume,4.01,0425193829,9780425193822,eng,176,26588,538,1/6/2004,Berkley -37741,Tales of a Fourth Grade Nothing (Fudge #1),Judy Blume,4.10,0425193799,9780425193792,eng,144,122085,2156,1/6/2004,Berkley -37743,Forever . . .,Judy Blume,3.62,033039780X,9780330397803,eng,178,45863,2952,6/3/2005,Pan Childrens -37744,Wifey,Judy Blume,3.36,0425206548,9780425206546,eng,304,11056,750,9/6/2005,Berkley -37750,Everything I Needed to Know about Being a Girl I Learned from Judy Blume,Jennifer O'Connell/Meg Cabot/Megan McCafferty/Melissa Senate/Diana Peterfreund/Stephanie Lessing/Laura Ruby/Erica Orloff/Stacey Ballis/Julie Kenner/Kristin Harmel/Jennifer Coburn/Elise Juska/Kyra Davis/Beth Kendrick/Berta Platas/Lynda Curnyn/Kayla Perrin/Cara Lockwood/Alison Pace/Megan Crane/Lara Deloza/Laura Caldwell/Shanna Swendson,3.47,1416531041,9781416531043,eng,275,1750,323,6/5/2007,Pocket Books -37751,BFF*: Just As Long As We're Together / Here's to You Rachel Robinson (*Best Friends Forever),Judy Blume,4.26,0385734077,9780385734073,eng,512,479,64,3/27/2007,Delacorte Books for Young Readers -37766,Yosemite: Its Discovery Its Wonder and Its People,Margaret Sanborn,3.96,0939666502,9780939666508,eng,289,23,2,12/1/1989,Yosemite Conservancy -37772,A Man of the People,Chinua Achebe,3.87,0385086164,9780385086165,eng,160,3294,208,8/16/2016,Penguin Books -37773,Collected Poems,Chinua Achebe,3.74,1400076587,9781400076581,eng,84,213,25,1/16/2009,Anchor Books -37774,Arrow of God (The African Trilogy #3),Chinua Achebe,3.81,0385014805,9780385014809,eng,230,4198,300,1/1/1989,Anchor Books -37780,Anatomy of a Boyfriend (Anatomy #1),Daria Snadowsky,3.41,0385733208,9780385733205,eng,259,4470,485,1/9/2007,Delacorte Press -37785,Lithium for Medea,Kate Braverman/Rick Moody,3.95,1583224718,9781583224717,eng,362,344,33,3/5/2002,Seven Stories Press -37790,Die Leiden des Jungen Werther,Johann Wolfgang von Goethe/R. Paulin,3.67,1853993239,9781853993237,ger,142,24,1,1/1/1998,Bristol Classical Press -37804,The Odyssey,Homer/George Herbert Palmer,3.76,0486406547,9780486406541,en-US,239,242,25,12/23/1998,Dover Publications -37807,Caesar's Commentaries: On the Gallic War & On the Civil War,Gaius Julius Caesar/James H. Ford/W.A. McDevitte,4.12,0976072610,9780976072614,eng,340,424,31,10/1/2005,El Paso Norte Press -37808,The Conquest of Gaul,Gaius Julius Caesar/F.P. Long/Cheryl Walker,3.99,0760768951,9780760768952,eng,288,56,8,7/16/2005,Barnes Noble -37811,The Assassination of Julius Caesar: A People's History of Ancient Rome,Michael Parenti,4.17,1565849426,9781565849426,eng,276,685,73,8/30/2004,The New Press -37813,Letters from the Earth: Uncensored Writings,Mark Twain/Bernard DeVoto/Henry Nash Smith,4.21,0060518650,9780060518653,eng,321,6568,376,2/17/2004,Harper Perennial Modern Classics -37815,Mark Twain: Selected Works,Mark Twain,4.22,0517053578,9780517053577,eng,690,41,1,10/2/1990,Gramercy -37817,The Blazing Center Study Guide: The Soul-Satisfying Supremacy of God in All Things,John Piper,4.30,1590526856,9781590526859,eng,112,20,0,7/3/2006,Multnomah -37819,The God of Small Things,Arundhati Roy,3.94,0060977493,9780060977498,en-US,321,6667,722,5/1/1997,HarperCollins -37824,Balzac und die kleine chinesische Schneiderin,Dai Sijie,3.64,3492238696,9783492238694,ger,200,343,15,7/1/2003,Piper Taschenbuch -37826,The Wit & Wisdom of Winston Churchill,James C. Humes/Richard M. Nixon,3.98,0060925779,9780060925772,eng,256,181,15,12/26/2007,Harper Perennial -37828,Winston Churchill,John Keegan,3.83,0670030791,9780670030798,en-GB,196,821,91,10/14/2002,Viking Books -37837,The Illustrated Garden Book: A New Anthology,Robin Lane Fox/Vita Sackville-West/Freda Titford/Ken Kirkwood,4.19,0689118449,9780689118449,eng,192,1,1,10/1/1986,Atheneum Books -37847,The Long Hard Road Out of Hell,Marilyn Manson/Neil Strauss,3.89,0060987464,9780060987466,eng,275,22293,1141,3/3/1999,It Books -37848,Dissecting Marilyn Manson,Gavin Baddeley,3.86,0859653722,9780859653725,eng,192,526,9,10/1/2007,Plexus Publishing -37852,Marilyn Manson,Kurt Reighley,3.36,0312181337,9780312181338,en-US,192,116,5,4/15/1998,St. Martin's Griffin -37854,Marilyn Manson: The Lonely Watchman,Richard D. Nelson,4.00,1597818704,9781597818704,eng,224,3,0,2/18/2006,Xulon Press -37857,Philosophical Papers: Volume 1 Human Agency and Language,Charles Taylor,4.35,0521317509,9780521317504,eng,304,52,1,3/28/1985,Cambridge University Press -37858,Sources of the Self: The Making of the Modern Identity,Charles Taylor,4.20,0674824261,9780674824263,eng,624,1355,54,3/1/1992,Harvard University Press -37860,The Ethics of Authenticity,Charles Taylor,3.92,0674268636,9780674268630,eng,152,697,49,9/22/1992,Harvard University Press -37861,Multiculturalism,Charles Taylor/Amy Gutmann/Michael Walzer/Susan R. Wolf/Shierry Weber Nicholsen/Kwame Anthony Appiah/Jürgen Habermas/Steven C. Rockefeller,3.80,0691037795,9780691037790,eng,192,341,17,9/11/1994,Princeton University Press -37863,Charles Taylor,Ruth Abbey,3.60,0521805228,9780521805223,eng,220,14,0,1/26/2004,Cambridge University Press -37869,Built To Last: Building America's Amazing Bridges Dams Tunnels and Skyscrapers (Built to Last),George Sullivan,4.12,0439517370,9780439517379,eng,128,24,6,10/1/2005,Scholastic Nonfiction -37875,The Art of the Start: The Time-Tested Battle-Hardened Guide for Anyone Starting Anything,Guy Kawasaki,3.87,1591840562,9781591840565,eng,240,22375,402,9/9/2004,Portfolio -37877,Mandala Sand Art Kit,Walter Foster Creative Team,1.00,1560107669,9781560107668,eng,8,1,0,1/1/2004,Walter Foster Publishing -37892,The Death Shift: The True Story of Nurse Genene and the Texas Baby Murders,Peter Elkind,3.78,0451401964,9780451401960,eng,400,118,11,5/1/1990,Onyx -37900,Turn of the Cards (Wild Cards #12),George R.R. Martin/Victor Milán,3.69,0553561529,9780553561524,eng,432,567,18,1/1/1993,Spectra -37902,Turn of the Cards,Georgina Grey,3.00,0449239691,9780449239698,eng,0,3,1,5/12/1979,Fawcett Coventry -37905,Dr. Seuss (First Biographies),Cheryl Carlson,4.33,0736850910,9780736850919,eng,24,14,1,1/1/2005,Capstone Press -37909,Go Jump in the Pool! (Macdonald Hall #2),Gordon Korman,4.16,0590442090,9780590442091,eng,192,1419,38,1/1/1991,Scholastic -37911,Shipwreck (Island I),Gordon Korman/Holter Graham,3.80,0439023319,9780439023313,eng,0,103,14,2/1/2007,Scholastic Audio Books -37947,The Pusher (87th Precinct #3),Ed McBain,3.90,0752857932,9780752857930,eng,192,1098,75,7/3/2003,Orion Books -37951,Eight Black Horses (87th Precinct #38),Ed McBain/Mark T. Sullivan,3.92,0743463080,9780743463089,eng,336,734,40,4/29/2003,Pocket Books -37952,Fiddlers (87th Precinct #55),Ed McBain/Otto Penzler,3.86,0156032783,9780156032780,eng,276,788,85,9/5/2006,Mariner Books -37954,The Last Dance (87th Precinct #50),Ed McBain,3.69,0671025708,9780671025700,eng,336,752,57,12/1/2000,Pocket Books -37976,The Listener's Bible: NIV,Anonymous/Max McLean,4.60,1931047170,9781931047173,eng,77,28,3,1/1/2001,Fellowship for the Performance -37979,Information Technology for Management: Transforming Organizations in the Digital Economy,Efraim Turban/Dorothy Leidner/James C. Wetherbe/Ephraim McLean/Christy Cheung/Daniel Tse/Maggie Lew,3.93,0471705225,9780471705222,eng,724,109,3,1/1/2005,John Wiley & Sons -37986,A Search for What Makes Sense: Finding Faith,Brian D. McLaren/Steve Chalke,3.59,0310272661,9780310272663,eng,187,132,15,2/11/2007,Zondervan Publishing Company -37996,Police Brutality: An Anthology,Jill Nelson/Robin D.G. Kelley/Richard Austin/Flores Alexander Forbes/Ron Daniels/Frank Moss/Derrick A. Bell/Claude Andrew Clegg III/Katheryn K. Russell/Patricia J. Williams/Stanley Crouch/Ishmael Reed/Arthur Doye,3.80,0393321630,9780393321630,eng,320,47,6,5/17/2001,W. W. Norton Company -37998,Reluctant Burglar (To Catch a Thief #1),Jill Elizabeth Nelson,3.67,1590526864,9781590526866,en-US,345,177,27,8/15/2006,Multnomah Books -38004,Q: The Autobiography of Quincy Jones,Quincy Jones,4.09,0767905105,9780767905107,eng,432,639,51,10/8/2002,Three Rivers Press (CA) -38012,Mansion On The Hill: Dylan Young Geffen Springsteen and the Head-on-Collision of Rock and Commerce,Fred Goodman,3.91,0712645624,9780712645621,eng,448,2,0,7/3/2003,Pimlico -38017,Lady on the Hill: How Biltmore Estate Became an American Icon,Howard E. Covington Jr.,3.91,0471758183,9780471758181,eng,331,414,60,3/1/2006,Wiley -38019,Hit Men: Power Brokers and Fast Money Inside the Music Business,Fredric Dannen/Erroll McDonald,3.94,0679730613,9780679730613,eng,432,689,44,7/2/1991,Vintage -38030,Savannah Blues (Weezie and Bebe Mysteries #1),Mary Kay Andrews,3.99,0060519134,9780060519131,en-US,404,16006,1049,7/10/2012,Harper Paperbacks -38042,The Last Shogun: The Life of Tokugawa Yoshinobu,Ryōtarō Shiba/Juliet Winters Carpenter,3.76,1568363567,9781568363561,eng,256,296,29,8/20/2004,Kodansha America -38044,Shōgun (Asian Saga #1),James Clavell,4.39,0340766166,9780340766163,eng,1152,4902,299,12/2/1999,Hodder & Stoughton -38049,Whoreson,Donald Goines,4.32,0870679945,9780870679940,en-US,320,1493,104,1/1/2000,Holloway House -38056,Crime Partners,Donald Goines,4.20,0870678817,9780870678813,eng,159,474,21,11/1/2000,Holloway House -38066,Jonah's Gourd Vine,Zora Neale Hurston,3.99,0060916516,9780060916510,eng,229,1679,82,1/22/1990,Amistad -38068,The Complete Stories,Zora Neale Hurston/Henry Louis Gates Jr./Sieglinde Lemke,4.25,0060921714,9780060921712,eng,336,756,45,1/5/1996,Amistad -38069,Zora Neale Hurston: A Literary Biography,Robert E. Hemenway/Alice Walker,4.10,0252008073,9780252008078,eng,408,103,9,9/1/1980,University of Illinois Press -38070,Zora Neale Hurston: Critical Perspectives Past And Present (Amistad Literary Series),Henry Louis Gates Jr./Kwame Anthony Appiah,4.20,1567430287,9781567430288,eng,238,24,0,2/11/2000,Harper Paperbacks -38075,The Tarot Cafe #1,Sang-Sun Park,3.88,1595325557,9781595325556,en-US,176,1829,85,3/7/2017,TokyoPop -38083,Photography's Other Histories,Christopher Pinney/Nicholas Peterson,3.83,0822331136,9780822331131,eng,296,24,2,4/24/2003,Duke University Press Books -38085,Photos of the Gods: The Printed Image and Political Struggle in India,Christopher Pinney,3.96,1861891849,9781861891846,eng,239,25,0,2/4/2004,Reaktion Books -38093,Antitrust Law,Richard A. Posner,4.00,0226675769,9780226675763,en-US,304,33,1,12/1/2001,University of Chicago Press -38107,Case Closed: Lee Harvey Oswald and the Assassination of JFK,Gerald Posner,3.96,1400034620,9781400034628,eng,640,1194,107,9/9/2003,Anchor Books -38123,Sex and Reason,Richard A. Posner,3.91,0674802802,9780674802803,eng,458,76,13,1/1/1992,Harvard University Press -38128,Law and Literature,Richard A. Posner,3.61,0674514718,9780674514713,eng,432,95,6,3/15/1998,Harvard University Press -38150,Orlando: A Biography: Film Screenplay,Sally Potter/Virginia Woolf,4.07,0571172954,9780571172955,eng,75,84,7,10/25/2013,Faber & Faber -38153,Orlando Furioso: Part Two,Ludovico Ariosto/Barbara Reynolds,4.23,014044310X,9780140443103,eng,800,133,14,9/29/1977,Penguin Classics -38154,Orlando Furioso,Ludovico Ariosto/Guido Waldman,4.02,0192836773,9780192836779,eng,656,2339,64,1/28/1999,Oxford University Press -38155,A People's Tragedy: The Russian Revolution: 1891-1924,Orlando Figes,4.31,014024364X,9780140243642,eng,1024,2931,222,3/1/1998,Penguin Books -38169,Alas Babylon,Pat Frank,4.08,0060741872,9780060741877,eng,323,33140,2614,7/5/2005,Harper Perennial Modern Classics -38175,The South Beach Diet: The Delicious Doctor-Designed Foolproof Plan for Fast and Healthy Weight Loss,Arthur Agatston,3.45,1579546463,9781579546465,en-US,310,553,18,4/5/2003,Rodale Books -38180,On the Beach,Nevil Shute,3.94,1842322761,9781842322765,eng,296,28414,1744,10/31/2002,House of Stratus -38198,The Book of Merlyn: The Unpublished Conclusion to The Once & Future King,T.H. White,3.96,0292707185,9780292707184,eng,137,109,22,9/1/1977,University of Texas Press (Austin/London) -38210,The Art of Happiness,Dalai Lama XIV/Howard C. Cutler,4.16,1573221112,9781573221115,eng,336,80161,2036,10/26/1998,Riverhead Hardcover -38211,The Art of Happiness at Work,Dalai Lama XIV/Howard C. Cutler,3.95,0340831200,9780340831205,eng,224,1615,95,8/15/2005,Hodder Mobius -38212,Zen and the Art of Happiness,Chris Prentiss,4.05,0943015537,9780943015538,eng,145,2955,270,6/28/2006,Power Press -38215,Lovingkindness: The Revolutionary Art of Happiness,Sharon Salzberg/Jon Kabat-Zinn,4.24,1590301870,9781590301876,eng,256,4373,144,12/28/2004,Shambhala -38228,Kaplan & Sadock's Synopsis of Psychiatry: Behavioral Sciences/Clinical Psychiatry,Benjamin James Sadock/Virginia Alcott Sadock,4.22,0781731836,9780781731836,eng,1500,246,9,12/16/2002,LWW -38230,How to Go to College Almost for Free Updated,Ben R. Kaplan,3.45,0060937653,9780060937652,en-US,400,111,11,9/18/2001,Collins Reference -38238,Australia,Kate Hemphill/Zoë Ross/Louise Bostock Lang,4.07,0756615690,9780756615697,eng,616,69,0,8/1/2006,DK Publishing (Dorling Kindersley) -38242,Let's Go Australia on a Budget,Let's Go Inc.,3.93,031236086X,9780312360863,en-US,784,9,2,11/28/2006,Let's Go Publications -38244,National Geographic Traveler: Australia,Roff Smith,3.80,0792238931,9780792238935,eng,400,9,2,10/5/1999,National Geographic -38262,Moll Flanders,Daniel Defoe/Mark Schorer/Georgina Sutton,3.52,1853260738,9781853260735,eng,339,35344,975,10/5/1993,Wordsworth Editions -38264,Moll Flanders,Daniel Defoe/Virginia Woolf,3.52,0375760105,9780375760105,eng,335,387,54,6/11/2002,Modern Library -38288,The Leatherstocking Tales Vol. 2: The Pathfinder / The Deerslayer,James Fenimore Cooper/Blake Nevius,3.98,0940450216,9780940450219,eng,1051,130,12,7/1/1985,Library of America -38296,The Last of the Mohicans (The Leatherstocking Tales #2),James Fenimore Cooper,3.70,0553213296,9780553213294,eng,410,75121,1797,6/1/1982,Bantam Classics -38300,A River Runs Through It,Norman Maclean/Barry Moser,4.17,0226500608,9780226500607,eng,168,6495,388,5/15/1989,University of Chicago Press -38302,Empires of the Monsoon: A History of the Indian Ocean and Its Invaders,Richard Seymour Hall,4.39,0006380832,9780006380832,eng,608,67,12,1/1/1998,HarperCollins Publishers -38311,The Next Whole Earth Catalog: Access to Tools,Stewart Brand,4.45,0394707761,9780394707761,eng,608,24,0,11/6/1981,Random House Inc. -38313,Whole Earth Software Catalog,Stewart Brand,3.92,0385191669,9780385191661,en-US,208,13,1,10/1/1984,Doubleday Books -38315,Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets,Nassim Nicholas Taleb,4.06,0812975219,9780812975215,eng,368,40155,1550,8/23/2005,Random House Trade Paperbacks -38330,El Borbah,Charles Burns,3.94,1560976934,9781560976936,en-US,96,740,34,1/17/2006,Fantagraphics -38331,Big Baby,Charles Burns,3.96,1560978007,9781560978008,eng,96,1368,58,2/17/2007,Fantagraphics -38333,Black Hole,Charles Burns,3.84,037542380X,9780375423802,eng,368,38261,2037,10/18/2005,Pantheon -38336,Black Hole tome 3: Visions,Charles Burns,4.00,2840555522,9782840555520,fre,63,3,0,3/15/2001,Delcourt -38337,Black Hole tome 4 : Reine des lézards,Charles Burns,4.26,2840558874,9782840558873,fre,64,19,1,10/21/2002,Delcourt -38338,9-11,Noam Chomsky/Greg Ruggiero/Marili Margomenou/Miguel Mora/Natalie Levisalles/Il Manifesto/Hartford Courant/David Barsamian/Radio B92/Elise Fried/Peter Kreysler/Gionarle del Popolo/Michael Albert,3.73,1583224890,9781583224892,eng,140,3070,172,12/4/2001,Seven Stories Press -38339,Secrets Lies and Democracy,Noam Chomsky/David Barsamian,3.98,1878825046,9781878825049,eng,128,934,27,7/1/2002,Odonian Press -38340,Syntactic Structures,Noam Chomsky/David W. Lightfoot,3.84,3110172798,9783110172799,eng,135,609,31,9/10/2012,Walter de Gruyter -38341,The Umbrella of US Power: The Universal Declaration of Human Rights & the Contradictions of US Policy,Noam Chomsky/Greg Ruggiero,3.96,1583225471,9781583225479,en-US,80,155,7,7/9/2002,Seven Stories Press -38344,The Common Good,Noam Chomsky/David Barsamian/Arthur Naiman,4.01,1878825089,9781878825087,eng,190,435,18,7/1/2002,Odonian Press -38346,The Curious Sofa,Edward Gorey,4.18,0151003076,9780151003075,eng,64,296,20,9/15/1997,Harcourt Brace & Company -38376,LOVE MODE 11,Yuki Shimizu/志水 ゆき,4.37,4835214102,9784835214108,jpn,182,4,0,1/10/2003,ビブロス -38379,Ring (Ring #1),Kōji Suzuki/Robert B. Rohmer/Glynne Walley,3.82,1932234411,9781932234411,eng,282,11396,742,4/25/2004,Vertical -38385,The Ring Volume 4 Birthday,Kōji Suzuki/Sakura Mizuki,3.58,1593072678,9781593072674,eng,160,56,2,6/21/2005,Dark Horse Manga -38398,Strings Conformal Fields and M-Theory (Graduate Texts in Contemporary Physics),Michio Kaku,4.15,0387988920,9780387988924,eng,531,49,1,12/17/1999,Springer -38399,Introduction to Superstrings and M-Theory,Michio Kaku/Joseph L. Birman/H. Eugene Stanley/J.W. Lynn/M.P. Silverman/M. Voloshin,4.27,0387985891,9780387985893,eng,587,216,2,7/30/1999,Springer -38400,To Win a Nuclear War: The Pentagon's Secret War Plans,Michio Kaku/Daniel Axelrod,3.94,0896083217,9780896083219,en-US,374,2,0,7/1/1999,South End Press (Boston) -38401,Company,Max Barry,3.73,1400079373,9781400079377,eng,338,4938,404,3/13/2007,Vintage -38412,Fermat's Enigma: The Epic Quest to Solve the World's Greatest Mathematical Problem,Simon Singh,4.25,0385493622,9780385493628,eng,315,19473,692,9/8/1998,Anchor -38414,The Science Book,Peter Tallack/Simon Singh,4.05,1841882542,9781841882543,eng,528,25,1,3/28/2006,Weidenfeld & Nicolson -38424,Kristy's Great Idea,Raina Telgemeier/Ann M. Martin,4.17,1417699671,9781417699674,eng,186,24732,726,4/1/2006,Turtleback Books -38426,The Actor in You: Sixteen Simple Steps to Understanding the Art of Acting,Robert Benedetti,3.65,0205359213,9780205359219,en-US,131,11,0,3/4/2002,Allyn & Bacon -38429,The Actor in You: Sixteen Simple Steps to Understanding the Art of Acting,Robert Benedetti,3.65,0205479804,9780205479801,eng,160,5,1,10/1/2005,Allyn & Bacon -38436,The Cat Who Played Post Office (Cat Who... #6),Lilian Jackson Braun,3.97,0747250375,9780747250371,eng,224,6366,200,5/9/1996,Headline -38457,Just Above My Head,James Baldwin,4.38,0385334567,9780385334563,eng,584,1485,159,6/13/2000,Delta -38458,Nobody Knows My Name,James Baldwin,4.35,0679744738,9780679744733,eng,242,2218,146,12/1/1992,Vintage -38461,Tell Me How Long the Train's Been Gone,James Baldwin,4.26,0375701893,9780375701894,eng,496,2162,144,2/17/1998,Vintage -38463,If Beale Street Could Talk,James Baldwin,4.23,0307275930,9780307275936,eng,197,19731,2158,10/10/2006,Vintage -38465,Tell My Horse: Voodoo and Life in Haiti and Jamaica,Zora Neale Hurston,3.96,0060916494,9780060916497,eng,311,1450,105,2/28/1990,HarperCollins -38466,Wrapped in Rainbows: The Life of Zora Neale Hurston,Valerie Boyd,4.32,0743253299,9780743253291,eng,528,893,97,2/3/2004,Scribner -38469,Going to Meet the Man,James Baldwin,4.35,0679761799,9780679761792,eng,249,4022,309,4/25/1995,Vintage Books a division of Random House -38471,The Amen Corner,James Baldwin,3.90,0375701885,9780375701887,eng,112,467,32,2/17/1998,Vintage -38473,Blues for Mister Charlie,James Baldwin,4.13,0679761780,9780679761785,eng,144,1202,80,4/25/1995,Vintage -38476,Every Tongue Got to Confess: Negro Folk-tales from the Gulf States,Zora Neale Hurston/Carla Kaplan/John Edgar Wideman,3.97,0060934549,9780060934545,eng,320,317,47,10/1/2002,Amistad -38496,Factotum,Charles Bukowski,3.97,006113127X,9780061131271,en-US,208,414,56,8/15/2006,Ecco -38500,Women,Charles Bukowski,3.86,0061177598,9780061177590,eng,291,52415,2081,7/29/2014,Ecco -38501,Ham on Rye,Charles Bukowski,4.14,006117758X,9780061177583,eng,288,65829,2318,7/29/2014,Ecco -38503,Tales of Ordinary Madness,Charles Bukowski,3.92,0872861554,9780872861558,eng,238,16544,431,1/1/2001,City Lights Publishers -38504,You Get So Alone at Times That it Just Makes Sense,Charles Bukowski,4.24,0876856830,9780876856833,eng,320,12358,533,6/5/1986,Black Sparrow Press -38510,Tiempo De Matar,John Grisham,4.07,8408041258,9788408041252,spa,0,3,0,7/1/2003,Planeta Publishing -38511,The Wakefields of Sweet Valley (Sweet Valley High Magna Editions #1),Francine Pascal/Kate William,3.92,0553292781,9780553292787,eng,346,1425,73,4/24/1993,Sweet Valley -38513,The Wedding (Sweet Valley High #98),Francine Pascal/Kate William,3.52,0553298550,9780553298550,eng,217,314,11,4/28/1994,Bantam Books -38514,Alone in the Crowd (Sweet Valley High #28),Francine Pascal/Kate William,3.44,0553280872,9780553280876,eng,136,695,27,4/1/1986,Bantam Books -38515,Taking Sides (Sweet Valley High #31),Francine Pascal/Kate William,3.38,0553258869,9780553258868,en-GB,134,813,23,9/1/1986,Bantam Books -38517,The Wakefield Legacy: The Untold Story (Sweet Valley High Magna Editions #2),Francine Pascal/Kate William,3.94,0553297945,9780553297942,eng,345,805,31,5/1/1992,Bantam Books -38522,Love at First Bite (Dark-Hunter #6.5; Wild Wulfs of London #2.5; Companion #3.5),Sherrilyn Kenyon/L.A. Banks/Susan Squires/Ronda Thompson,4.06,0312349297,9780312349295,eng,373,7959,200,10/3/2006,St. Martin's Press -38524,Spunk & Bite: A Writer's Guide to Punchier More Engaging Language & Style,Arthur Plotnik,3.90,0375721150,9780375721151,eng,263,690,87,11/15/2005,Random House Reference Publishing -38528,Cookies: Bite-Size Life Lessons,Amy Krouse Rosenthal/Jane Dyer,4.18,006058081X,9780060580810,eng,40,1162,185,5/2/2006,HarperCollins -38529,Bite Me If You Can (Argeneau #6),Lynsay Sands,4.27,0060774126,9780060774127,eng,384,17950,465,1/30/2007,Avon -38530,Aftershock (Sweet Valley High Super Edition #12),Francine Pascal/Kate William,3.70,0553492365,9780553492361,eng,227,286,7,11/10/1998,Bantam -38531,Sweet 18 (SVH Senior Year #48),Francine Pascal/Kate William,3.47,0553493973,9780553493979,en-US,179,116,3,1/14/2003,Bantam -38532,The New Jessica (Sweet Valley High #32),Francine Pascal/Kate William,3.44,0553275607,9780553275605,eng,136,1054,25,10/1/1986,Bantam Books -38533,Double Love (Sweet Valley High #1),Francine Pascal/Kate William,3.54,0553275674,9780553275674,eng,182,108,17,9/1/1984,Bantam Books -38536,Happily Ever After (Sweet Valley High #134),Francine Pascal/Kate William,3.58,0553570684,9780553570687,eng,199,251,5,8/11/1997,Bantam -38538,Forbidden Love (Sweet Valley High #34),Francine Pascal/Kate William,3.32,0553275216,9780553275216,eng,138,5,0,1/1/1987,Bantam Books -38539,Control Freak (SVH Senior Year #35),Francine Pascal,3.33,0553493841,9780553493849,eng,192,120,1,11/13/2001,Bantam -38547,Mosquito Bite,Alexandra Siy/Dennis Kunkel,3.51,157091592X,9781570915925,eng,32,72,19,2/1/2006,Charlesbridge -38548,Love Bites (Argeneau #2),Lynsay Sands,4.13,0505525534,9780505525536,eng,373,18631,564,1/6/2004,Love Spell -38549,Nigella Bites: From Family Meals to Elegant Dinners--Easy Delectable Recipes for Any Occasion,Nigella Lawson/Francesca Yorke,4.00,0786868694,9780786868698,eng,254,6587,71,11/13/2002,Hachette Books -38551,The Pursuit of History,John Tosh/Sean Lang,3.46,1405823518,9781405823517,en-US,357,374,17,2/1/2006,Longman Publishing Group -38560,Vegas Bites: A Werewolf Romance Anthology,L.A. Banks/J.M. Jeffries/Seressie Glass/Natalie Dunbar,4.12,1600430015,9781600430015,en-US,346,195,6,11/15/2006,Parker Publishing Llc -38562,A Bite to Remember (Argeneau #5),Lynsay Sands,4.24,006077407X,9780060774073,eng,362,17710,393,6/27/2006,Avon -38564,Boys that Bite (Blood Coven Vampire #1),Mari Mancusi,3.68,0425209423,9780425209424,en-US,272,10669,498,4/4/2006,Berkley -38568,A Quick Bite (Argeneau #1),Lynsay Sands,3.91,0060773758,9780060773755,eng,360,35275,1370,3/31/2020,Avon -38570,Bite Club (Bite Club #1),Howard Chaykin/David Tischman/David Hahn,3.07,1845760654,9781845760656,en-US,144,148,12,4/20/2005,Vertigo (DC Comics) -38572,Last Bite,Nancy Verde Barr,3.42,1565124952,9781565124950,eng,308,372,66,6/9/2006,Algonquin Books -38583,Bite Me!: An Unofficial Guide to the World of Buffy the Vampire Slayer,Nikki Stafford,4.13,1550225405,9781550225402,en-US,450,338,8,9/1/2002,ECW Press -38585,Small Bites Big Nights: Seductive Little Plates for Intimate Occasions and Lavish Parties,Govind Armstrong/Lisa Romerein/Tyler Florence,3.60,0307337936,9780307337931,eng,256,20,3,4/10/2007,Clarkson Potter -38592,Plants Bite Back! (DK Readers),Richard Platt,3.88,0789447541,0635517047547,eng,48,21,5,10/25/1999,DK Publishing (Dorling Kindersley) -38593,Last Wish (Sweet Valley High),Francine Pascal,3.91,0553507354,9780553507355,eng,231,2,0,5/1/1999,Bantam Books -38597,Starting Over (Sweet Valley High #33),Francine Pascal/Kate William,3.35,0553274910,9780553274912,eng,153,3,0,12/1/1986,Bantam Books -38601,Dear Sister (Sweet Valley High #7),Francine Pascal/Kate William,3.53,0553276727,9780553276725,eng,160,2071,81,11/1/1984,Bantam Books -38609,Don't Wait for Your Ship to Come In... Swim Out to Meet It!: Bite-Sized Inspirations to Help You Achieve Your Dreams,John Mason,3.22,1562920588,9781562920586,eng,160,9,2,12/1/1994,Honor Books -38619,Magic Bites (Kate Daniels #1),Ilona Andrews,4.07,0441014895,9780441014897,eng,261,86675,5395,3/27/2007,Ace -38633,The Secret Garden,Frances Hodgson Burnett/Graham Rust,4.13,0590240773,9780590240772,eng,298,254,24,6/1/1999,Scholastic -38638,The Secret Garden,Frances Hodgson Burnett/Scott McKowen,4.13,1402714599,9781402714597,eng,248,575,61,10/1/2004,Sterling -38640,The Secret Garden Coloring Book,Brian Doherty/Frances Hodgson Burnett/Thea Kliros,4.25,0486276805,9780486276809,eng,48,4,0,7/16/2014,Dover Publications -38643,A Little Princess,Frances Hodgson Burnett/Scott McKowen,4.20,1402714548,9781402714542,en-GB,208,500,54,10/1/2004,Sterling -38647,A Little Princess,Tania Zamorsky/Frances Hodgson Burnett/Lucy Corvino/Arthur Pober,4.16,1402712758,9781402712753,eng,160,3784,84,3/1/2005,Sterling -38648,The Little Princesses,Marion Crawford/Jennie Bond,4.03,0312312156,9780312312152,eng,230,416,65,4/10/2003,St. Martin's Press -38650,Laura Ingalls Wilder Country: The People and places in Laura Ingalls Wilder's life and books,William Anderson/Leslie A. Kelly,4.24,0060973463,9780060973469,eng,120,91,7,12/1/1995,Harper Perennial -38656,The Collected Works of C.S. Lewis,C.S. Lewis/Michael Hauge,4.45,0884861511,9780884861515,en-US,537,39,3,3/30/1996,Thomas Nelson -38664,Pedro Páramo,Juan Rulfo,4.05,8433920707,9788433920706,spa,122,504,44,10/31/2013,Anagrama -38665,Pedro Páramo / El Llano en llamas,Juan Rulfo,4.29,9703705774,9788408066439,spa,290,5103,118,4/1/2006,Planeta -38667,Pedro Páramo,Juan Rulfo,4.05,9685208557,9789685208550,spa,132,1386,209,12/1/2009,Editorial RM -38669,Pedro Paramo / El Llano En Llamas,Juan Rulfo,4.29,840804575X,9788408045755,spa,290,6,2,11/1/2002,Planeta Publishing -38670,Pedro Páramo,Juan Rulfo,4.05,351801434X,9783518014349,ger,132,450,32,4/1/1999,Suhrkamp -38673,Peter Pan in Kensington Gardens / Peter and Wendy,J.M. Barrie/Peter Hollindale,4.06,0192839292,9780192839299,eng,288,4206,102,10/28/1999,Oxford University Press -38674,Walt Disney's Peter Pan (A Little Golden Book),Walt Disney Company/Al Dempster,4.39,0736402381,9780736402385,eng,24,5661,87,1/23/2007,Golden/Disney -38677,Peter Pan And Wendy,J.M. Barrie/Ken Geist,4.08,0439672570,9780439672573,eng,224,141,23,10/1/2004,Orchard Books -38678,Peter Pan,J.M. Barrie/Tim Curry,4.08,0743564529,9780743564526,eng,5,46,7,10/5/2006,Simon Schuster Audio -38680,Adventures of Huckleberry Finn,Mark Twain,3.82,0440300282,9780440300281,eng,352,90,2,11/15/1977,Laurel -38686,Alice in Wonderland / Hunting of the Snark,Lewis Carroll/Donald J. Gray,4.06,0393958043,9780393958041,eng,416,1404,87,4/17/1992,W. W. Norton & Company -38695,Holes,Louis Sachar,3.96,0440419468,9780440419464,eng,233,2699,230,3/11/2003,Yearling Books -38700,Rabbit Hole,David Lindsay-Abaire,4.06,1559362901,9781559362900,eng,157,6634,185,9/1/2006,Theatre Communications Group -38707,A Magic Crystal? (Marvin Redpost),Louis Sachar,3.76,0747562830,9780747562832,eng,128,227,21,5/2/2005,Bloomsbury Publishing PLC -38709,Holes (Holes #1),Louis Sachar,3.96,0439244196,9780439244190,eng,233,887554,17547,9/2/2000,Scholastic -38710,Super Fast Out of Control,Louis Sachar,3.75,0747566828,9780747566823,eng,128,0,0,5/2/2005,Bloomsbury Publishing PLC -38717,The Anthology at the End of the Universe: Leading Science Fiction Authors on Douglas Adams' The Hitchhiker's Guide to the Galaxy,Glenn Yeffeth/Don DeBrandt/Cory Doctorow/Bruce Bethke/Adam Roberts/Lawrence Watt-Evans/Selina Rosen/Mark W. Tiedemann/Jacqueline Carey/Susan Sizemore/Vox Day/Stephen Baxter/A.M. Dellamonica/Marguerite Krause/John Shirley/Adam-Troy Castro/Amy Berner/Maria Alexander/Marie-Catherine Caillava/Mike Byrne,3.86,1932100563,9781932100563,eng,240,129,10,3/11/2005,Smart Pop -38723,The Feminine Mystique,Betty Friedan/Anna Quindlen,3.86,0393322572,9780393322576,eng,592,10108,650,9/17/2001,W. W. Norton Company -38724,Betty Friedan and the Making of "The Feminine Mystique": The American Left the Cold War and Modern Feminism,Daniel Horowitz,3.59,1558492763,9781558492769,eng,384,58,6,9/27/2000,University of Massachusetts Press -38735,James Herriot's Treasury for Children: Warm and Joyful Tales by the Author of All Creatures Great and Small,James Herriot/Ruth Brown/Peter Barrett,4.45,0312085125,9780312085124,eng,260,10128,245,9/1/1992,St. Martin's Press -38736,James Herriot's Dog Stories,James Herriot/Victor G. Ambrus,4.40,0312364520,9780312364526,eng,464,5692,214,11/14/2006,St. Martin's Griffin -38737,The Real James Herriot: A Memoir of My Father,Jim Wight,4.20,0345434900,9780345434906,en-US,371,4247,153,5/1/2001,Ballantine Books -38739,The Lord God Made Them All,James Herriot,4.42,0312966202,9780312966201,eng,373,12580,197,9/15/1998,St. Martin's Paperbacks -38746,Who Was Mark Twain?,April Jones Prince/Nancy Harrison/John O'Brien,4.16,0448433192,9780448433196,eng,112,529,56,5/24/2004,Grosset & Dunlap -38747,Roughing It,Mark Twain/Henry B. Wonham,3.89,0743436504,9780743436502,eng,560,5846,494,4/29/2003,Pocket Books -38750,The Complete Essays of Mark Twain,Mark Twain/Charles Neider,4.33,0306809575,9780306809576,eng,732,195,15,11/2/2000,Da Capo Press -38752,Death of a Salesman,Arthur Miller,3.51,0670261556,9780670261550,eng,139,1223,104,5/18/1949,Viking Books -38755,The Portable Arthur Miller,Arthur Miller/Harold Clurman/Christopher Bigsby,4.21,0142437557,9780142437551,eng,575,232,6,7/29/2003,Penguin Books -38756,Collected Plays 1944-1961,Arthur Miller/Tony Kushner,4.22,193108291X,9781931082914,en-US,774,419,10,2/2/2006,Library of America -38761,Incident at Vichy,Arthur Miller,3.96,0140481931,9780140481938,eng,80,686,54,4/2/1985,Penguin Books -38769,Discovering Great Artists: Hands-On Art for Children in the Styles of the Great Masters,MaryAnn F. Kohl/Kim Solga/Rebecca Van Slyke,4.24,0935607099,9780935607093,eng,144,400,29,5/1/1997,Chicago Review Press -38773,The Portable Thomas Jefferson,Thomas Jefferson/Merrill D. Peterson,4.05,0140150803,9780140150803,eng,589,171,6,10/27/1977,Penguin Classics -38775,Autobiography of Thomas Jefferson,Thomas Jefferson,3.89,0486442896,9780486442891,eng,112,696,34,6/3/2005,Dover Publications -38786,Juan Rulfo's Mexico,Juan Rulfo/Carlos Fuentes/Margo Glantz/Jorge Alberto Lozoya/Eduardo Rivero/Víctor Jiménez/E. Billeter,4.47,158834097X,9781588340979,eng,223,41,3,8/17/2002,Smithsonian Books -38787,Pedro Páramo,Juan Rulfo/Margaret Sayers Peden/Susan Sontag,4.05,0802133908,9780802133908,eng,128,28102,1511,3/10/1994,Grove Press -38788,The Burning Plain and Other Stories,Juan Rulfo/Kermit Oliver/George D. Schade,4.19,0292701322,9780292701328,en-US,191,337,45,1/1/1971,University of Texas Press -38803,Laughter and Tears: A Family's Journey to Understanding the Autism Spectrum,Ann Hewetson,4.00,1843103311,9781843103318,eng,224,4,1,1/15/2005,Jessica Kingsley Publishers -38804,The Irish Anatomist: A Study of Flann O'Brien,Keith Donohue,5.00,1930901356,9781930901353,eng,222,1,0,7/25/2003,Academica Press -38826,Quito 1599: City and Colony in Transition,Kris Lane/Lyman L. Johnson,3.52,082632357X,9780826323576,eng,312,22,2,7/26/2002,University of New Mexico Press -38827,1599: A Year in the Life of William Shakespeare,James Shapiro,4.09,0571214800,9780571214808,eng,429,34,6,9/1/2005,Faber & Faber -38830,Stranger from the Past,Penny Jordan,3.23,0373115997,9780373115990,eng,224,29,7,9/24/1993,Harlequin Presents -38835,The Olive Farm: A Memoir of Life Love and Olive Oil in the South of France,Carol Drinkwater,3.81,0142001309,9780142001301,eng,336,3269,174,6/25/2002,Penguin Books -38855,Confederates in the Attic: Dispatches from the Unfinished Civil War,Tony Horwitz,4.09,067975833X,9780679758334,eng,406,19207,1596,2/22/1999,Vintage -38860,Convergence Culture: Where Old and New Media Collide,Henry Jenkins,3.85,0814742815,9780814742815,en-GB,308,3147,118,8/1/2006,New York University Press -38874,The Sling and the Stone: On War in the 21st Century,Thomas X. Hammes,3.89,0760324077,9780760324073,eng,336,698,36,2/17/2006,Zenith Press -38892,Mistletoe,Hailey Abbott/Melissa de la Cruz/Aimee Friedman/Nina Malkin,3.41,0439863686,9780439863681,eng,222,541,57,10/1/2006,Scholastic Paperbacks -38898,The Guide to Hollywood and Beverly Hills,Charles Lockwood,4.33,0517550369,9780517550366,eng,174,3,0,1/16/1984,Random House Value Publishing -38905,Follow Your Heart's Vegetarian Soup Cookbook,Janice Cook Migliaccio,3.47,0880071311,9780880071314,eng,127,15,1,12/31/1983,Woodbridge Press Publishing Company -38911,Your Best Friend's Boyfriend (Follow Your Heart #1),J.E. Bright,3.34,0439791405,9780439791403,eng,240,49,5,1/1/2006,Scholastic Paperbacks -38913,Follow Your Heart,Susanna Tamaro/John T. Cullen,3.59,0385316577,9780385316576,eng,208,3294,213,8/1/1996,Delta -38917,Naughty Little Secret,Shayla Black/Shelley Bradley,3.73,1599982935,9781599982939,eng,212,2323,161,8/1/2006,Samhain Publishing -38918,No Accident (Little Secrets #2),Emily Blake,4.16,0439829135,9780439829137,eng,160,324,16,5/1/2006,Scholastic Paperbacks -38924,Dirty Little Secrets (Marisela Morales/Dirty #1),Julie Leto,3.58,1416501622,9781416501626,eng,352,444,51,5/31/2005,Gallery Books -38925,Dirty Little Secrets,Joy King,4.15,031235407X,9780312354077,eng,256,304,31,5/30/2006,St. Martin's Griffin -38928,Three Little Secrets (MacLachlan Family #4),Liz Carlyle,3.84,0743496124,9780743496124,eng,384,1181,50,4/1/2006,Pocket Star -38936,Lori's Little Secret (Bravo Family #15) (Bravo Family Ties Miniseries #3),Christine Rimmer,3.76,0373246838,9780373246830,eng,248,101,6,5/1/2005,Silhouette -38951,The Day My Butt Went Psycho,Andy Griffiths/Miles Thompson,3.73,0439424690,9780439424691,eng,220,1853,232,4/1/2003,Scholastic Inc. -38955,Just Disgusting!,Andy Griffiths/Terry Denton,3.83,0330363689,9780330363686,eng,180,70,3,8/1/2002,Pan Australia -38970,Thorn in Her Side (The Princess School #7),Jane B. Mason/Sarah Hines Stephens,3.88,0439798736,9780439798730,eng,144,214,8,1/1/2006,Scholastic Paperbacks -38977,The Princess of the Chalet School,Elinor M. Brent-Dyer,4.08,000690601X,9780006906018,eng,159,465,21,1/1/2000,HarperCollins -38980,The Princess Diaries (The Princess Diaries #1),Meg Cabot,3.78,0613371658,9780613371650,eng,283,216359,4137,7/1/2001,Turtleback -38986,Let Down Your Hair,Jane B. Mason/Sarah Hines Stephens,3.83,043962939X,9780439629393,eng,144,450,12,12/1/2004,Scholastic Paperbacks -38988,Awakening (Chasing Yesterday #1),Robin Wasserman,3.95,0439933382,9780439933384,en-US,207,2569,297,5/1/2007,Scholastic Paperbacks -38989,Betrayal (Chasing Yesterday #2),Robin Wasserman,3.96,0439933412,9780439933414,en-US,209,1435,101,7/1/2007,Scholastic Paperbacks -38990,Fun Home: A Family Tragicomic,Alison Bechdel,4.08,0618477942,9780618477944,eng,240,48966,3928,6/8/2006,Houghton Mifflin Company -38992,Second Home: Finding Your Place in the Fun (Better Homes and Gardens),Denny Caringer/Better Homes and Gardens,3.83,0696211521,9780696211522,eng,216,6,1,10/15/2000,Better Homes and Gardens Books -39000,Six Frigates: The Epic History of the Founding of the U. S. Navy,Ian W. Toll,4.32,0393058476,9780393058475,eng,560,3966,322,10/17/2006,W. W. Norton Company -39001,Power Sex Suicide: Mitochondria and the Meaning of Life,Nick Lane,4.24,0199205647,9780199205646,eng,354,2221,151,12/1/2006,Oxford University Press USA -39004,Die Tagebücher einer Nanny,Emma McLaughlin/Nicola Kraus,3.42,3442545536,9783442545537,ger,344,38,2,2/1/2003,Goldmann -39020,1491: New Revelations of the Americas Before Columbus,Charles C. Mann,4.02,1400032059,9781400032051,eng,541,56290,3238,10/10/2006,Vintage -39022,Saint Ignatius Loyola: The Pilgrim Years 1491-1538,James Brodrick,4.09,0898706831,9780898706833,eng,350,11,1,11/1/1998,Ignatius Press -39026,Deep Storm (Jeremy Logan #1),Lincoln Child,3.87,0385515502,9780385515504,eng,370,21502,801,3/15/2007,Doubleday Books -39027,Death Match,Lincoln Child,3.79,0307275566,9780307275561,eng,388,8699,410,10/31/2006,Anchor Books -39028,The Wheel of Darkness (Pendergast #8),Douglas Preston/Lincoln Child,3.93,0446580287,9780446580281,eng,388,21797,1002,8/28/2007,Grand Central Publishing -39030,Reliquary (Pendergast #2),Douglas Preston/Lincoln Child,4.01,0765354950,9780765354952,eng,464,32325,1044,8/1/2005,Tor Books -39031,The Cabinet of Curiosities (Pendergast #3),Douglas Preston/Lincoln Child,4.25,0446611239,9780446611237,eng,629,34650,1722,6/1/2003,Warner Books -39033,Still Life With Crows (Pendergast #4),Douglas Preston/Lincoln Child,4.18,0446612766,9780446612760,eng,564,26865,1228,7/1/2004,Grand Central Publishing -39034,Dancing on My Grave,Gelsey Kirkland/Greg Lawrence,3.80,051509465X,9780515094657,eng,363,1593,133,11/1/1987,Jove -39035,Dancing on His Grave: A True Story of Survival and Triumph,Barbara Richard,3.76,1412086531,9781412086530,eng,296,16,4,6/5/2006,Trafford Publishing -39045,I Don't Know How She Does It (Kate Reddy #1),Allison Pearson,3.33,0375713751,9780375713750,eng,368,16763,1420,8/26/2003,Anchor Books -39046,I Don't Know How She Does It (Kate Reddy #1),Allison Pearson,3.33,0099428385,9780099428381,eng,368,214,25,5/1/2003,Vintage -39068,Perfect Girls Starving Daughters: The Frightening New Normalcy of Hating Your Body,Courtney E. Martin,3.78,0743287967,9780743287968,en-US,352,1116,125,4/17/2007,Free Press -39077,The 21 Success Secrets of Self-Made Millionaires: How to Achieve Financial Independence Faster and Easier Than You Ever Thought Possible,Brian Tracy,4.05,1583762051,9781583762059,eng,91,1627,88,11/13/2000,Berrett-Koehler Publishers -39081,The Cake Book,Tish Boyle/John Uher,4.19,0471469335,9780471469339,eng,384,100,12,4/14/2006,Houghton Mifflin Harcourt -39088,Grand Finales: A Modernist View of Plated Desserts,Tish Boyle/Timothy Moriarty,4.24,0471292516,9780471292517,eng,288,17,0,11/7/1997,Wiley -39093,The Making of the Fittest: DNA and the Ultimate Forensic Record of Evolution,Sean B. Carroll/Jamie W. Carroll/Leanne M. Olds,4.07,0393061639,9780393061635,eng,304,2611,105,10/17/2006,W. W. Norton Company -39097,The Bride Finder (St. Leger #1),Susan Carroll,3.84,0449003884,9780449003886,eng,416,1242,96,1/30/1999,Ivy Books -39099,The Courtesan (The Dark Queen Saga #2),Susan Carroll,3.90,0345437977,9780345437976,eng,560,2218,104,7/26/2005,Ballantine Books -39101,Giovanni and Lusanna: Love and Marriage in Renaissance Florence,Gene A. Brucker,3.57,0520244958,9780520244955,eng,160,268,25,12/14/2004,University of California Press -39102,The Collected Poetry 1968-1998,Nikki Giovanni/Virginia C. Fowler,4.42,0060724293,9780060724290,eng,512,1249,52,1/23/2007,William Morrow -39103,Mozart's Don Giovanni (the Dover Opera Libretto Series),Wolfgang Amadeus Mozart/Lorenzo Da Ponte/Ellen H. Bleiler,3.94,0486249441,9780486249445,eng,128,51,2,10/1/1985,Dover Publications -39105,Love Poems,Nikki Giovanni,4.26,0688149898,9780688149895,eng,96,1743,134,2/14/1997,William Morrow -39106,Rosa,Nikki Giovanni/Bryan Collier,4.35,0805071067,9780805071061,en-US,40,6097,635,10/1/2005,Henry Holt and Co. (BYR) -39124,The covert war against rock: what you don't know about the deaths of Jim Morrison Tupac Shakur Michael Hutchence Brian Jones Jimi Hendrix Phil Ochs Bob Marley Peter Tosh John Lennon The Notorious B.I.G,Alex Constantine,3.58,092291561X,9780922915613,eng,280,85,8,5/1/2000,Feral House -39141,Gale Gand's Short + Sweet : Quick Desserts with Eight Ingredients or Less,Gale Gand/Julia Moskin/Tim Turner,3.71,1400047331,9781400047338,eng,160,24,4,1/13/2004,Clarkson Potter/Publishers -39149,What Angels Fear (Sebastian St. Cyr #1),C.S. Harris,3.89,0451219716,9780451219718,eng,410,10168,1077,10/3/2006,Signet -39173,Breaking Free from Compulsive Eating,Geneen Roth,4.01,0452270847,9780452270848,eng,224,182,12,9/1/1993,Plume -39175,When Food Is Love: Exploring the Relationship Between Eating and Intimacy,Geneen Roth,4.04,0452268184,9780452268180,eng,224,1536,134,7/1/1992,Plume Books -39177,You're Born an Original Don't Die a Copy!,John Mason,4.06,0884193551,9780884193555,eng,120,178,24,12/1/1993,Insight International -39180,Orin Aoraiosaa: Songs for Selected Heads,John Mason,4.39,1881244067,9781881244066,eng,450,39,3,1/1/1997,Yoruba Theological Archministry -39181,Guide to Stress Reduction,L. John Mason,4.22,1587610914,9781587610912,eng,326,9,1,5/22/2001,Celestial Arts -39191,La máquina de follar,Charles Bukowski,3.92,8433920448,9788433920447,spa,190,951,85,7/1/1995,Anagrama -39201,Getting a Grip on the Basics: Building a Firm Foundation for the Victorious Christian Life,Beth A. Jones,4.67,1577948262,9781577948261,eng,124,9,0,5/1/2006,Harrison House -39213,Freedom Riders: John Lewis and Jim Zwerg on the Front Lines of the Civil Rights Movement,Ann Bausum,3.98,0792241738,9780792241737,eng,80,254,57,12/27/2005,National Geographic Children's Books -39242,The Milagro Beanfield War,John Nichols,4.10,0805063749,9780805063745,eng,456,9120,395,2/15/2000,Holt McDougal -39245,The Magic Journey,John Nichols,3.91,0805063390,9780805063394,eng,528,449,28,2/15/2000,Holt Paperbacks -39266,Captain Slaughterboard Drops Anchor,Mervyn Peake,4.09,0763616257,9780763616250,en-US,48,165,17,12/31/2001,Candlewick Press (MA) -39286,Hide-and-Seek with Angels: The Life of J.M. Barrie,Lisa Chaney,3.91,0099453231,9780099453239,eng,448,66,11,5/16/2006,Arrow -39302,The Hunted (Vampire Huntress #3),L.A. Banks,4.14,0312937725,9780312937720,eng,565,2732,79,6/13/2005,St. Martin's Paperbacks -39303,The Bitten (Vampire Huntress #4),L.A. Banks,4.24,0312324081,9780312324087,en-US,435,2447,63,6/13/2005,St. Martin's Griffin -39304,The Forsaken (Vampire Huntress #7),L.A. Banks,4.35,0312352352,9780312352356,eng,448,1878,36,6/27/2006,St. Martin's Griffin -39305,Minion (Vampire Huntress #1),L.A. Banks,3.44,0312987013,9780312987015,eng,286,5531,493,5/4/2004,St. Martin's Paperback -39306,The Awakening (Vampire Huntress #2),L.A. Banks,4.00,0312987021,9780312987022,eng,300,3173,133,12/28/2004,St. Martin's Paperbacks -39307,The Forbidden (Vampire Huntress #5),L.A. Banks,4.27,0312940025,9780312940027,eng,490,2133,42,6/27/2006,St. Martin's Paperbacks -39308,The Damned (Vampire Huntress #6),L.A. Banks,4.28,0312336241,9780312336240,eng,487,69,3,1/24/2006,St. Martin's Griffin -39309,The Damned (Vampire Huntress #6),L.A. Banks,4.28,0312934432,9780312934439,eng,492,1993,38,1/2/2007,St. Martin's Paperbacks -39311,Brand New Justice: How Branding Places and Products Can Help the Developing World,Simon Anholt,3.69,0750666005,9780750666008,en-US,184,15,0,1/15/2005,Routledge -39315,Katie's Big Move (Junior Gymnasts #2),Teddy Slater/Wayne Alfano,3.75,0590859986,9780590859981,eng,77,12,0,12/31/1996,Scholastic -39317,Amanda's Unlucky Day (Junior Gymnasts #6),Teddy Slater/Wayne Alfano,3.50,0590959883,9780590959889,eng,78,6,1,12/31/1997,Apple -39339,Beat That! Cookbook,Ann Hodgman,4.31,0395971780,9780395971789,eng,208,34,1,10/7/1999,Rux Martin/Houghton Mifflin Harcourt -39346,Stake That (Blood Coven Vampire #2),Mari Mancusi,3.97,0425212106,9780425212103,eng,288,5449,191,12/5/2006,Berkley -39347,Sk8er Boy (First Kiss Club #1),Mari Mancusi,3.72,0843956046,9780843956047,eng,181,357,32,10/1/2005,Leisure Books -39357,Bride & Groom (A Dog Lover's Mystery #16),Susan Conant/Maxwell Award,3.78,0425200744,9780425200742,eng,262,263,19,1/4/2005,Berkley -39358,Stud Rites (A Dog Lover's Mystery #9),Susan Conant,3.81,0425201597,9780425201596,eng,237,322,16,3/1/2005,Berkley Prime Crime Books -39359,The Dogfather (A Dog Lover's Mystery #15),Susan Conant,3.83,0425194590,9780425194591,eng,272,320,20,2/3/2004,Berkley -39360,Steamed (A Gourmet Girl Mystery #1),Jessica Conant-Park/Susan Conant,3.45,0425210383,9780425210383,eng,320,956,93,2/6/2007,Berkley -39361,Paws Before Dying (A Dog Lover's Mystery #4),Susan Conant,3.90,0425144305,9780425144305,eng,197,427,20,1/1/1960,Berkley Books -39363,A New Leash on Death (A Dog Lover's Mystery #1),Susan Conant,3.79,0425146227,9780425146224,eng,180,1097,71,4/1/1994,Berkley Prime Crime -39365,Scratch the Surface (A Cat Lover's Mystery #1),Susan Conant,3.34,0425206114,9780425206119,eng,288,23,2,7/5/2006,Berkley -39382,Corvette,Jerry Burton,4.83,0883631210,9780883631218,eng,320,6,1,10/1/2006,Universe Publishing(NY) -39392,Lucifer's Shadow,David Hewson,3.57,0385338058,9780385338059,eng,369,586,52,7/26/2005,Delta -39396,The Key,Lynsay Sands,4.04,084394482X,9780843944822,eng,313,2152,89,1/1/2003,Leisure Books -39397,The Deed (Deed #1),Lynsay Sands,3.94,0843948108,9780843948103,eng,313,3048,168,12/1/2004,Leisure Books -39398,The Chase (Deed #3),Lynsay Sands,4.06,0843953241,9780843953244,eng,374,2098,68,12/1/2004,Leisure Books -39399,Bliss,Lynsay Sands,3.97,0843949090,9780843949094,eng,394,1742,108,9/1/2001,Leisure Books -39400,The Perfect Wife,Lynsay Sands,3.86,084395499X,9780843954999,eng,354,2712,131,10/1/2005,Leisure Books -39401,Sweet Revenge,Lynsay Sands,3.99,0843946806,9780843946802,eng,400,1786,90,2/1/2004,Leisure Books -39402,The Reluctant Reformer,Lynsay Sands,3.91,0843949740,9780843949742,eng,371,1274,61,2/3/2002,Leisure -39403,Love Is Blind,Lynsay Sands,3.99,0843955007,9780843955002,eng,342,3488,207,8/1/2006,Leisure Books -39418,Standard Catalog of Smith & Wesson,Jim Supica/Richard Nahas,4.44,089689293X,9780896892934,en-US,432,38,1,1/1/2007,Gun Digest Books -39433,Korea's Place in the Sun: A Modern History,Bruce Cumings,3.77,0393327027,9780393327021,eng,544,647,67,9/17/2005,W. W. Norton Company -39440,Mighty Love,Howard Chaykin,3.12,1563899310,9781563899317,eng,96,51,3,2/1/2005,DC Comics -39441,Challengers of the Unknown: Stolen Moments Borrowed Time,Howard Chaykin/Michelle Madsen,2.82,1401209416,9781401209414,eng,144,44,8,3/29/2006,DC Comics -39442,Black Kiss,Howard Chaykin,3.56,1560973803,9781560973805,eng,136,277,28,5/16/2000,Eros Comix -39444,Son of Superman,Howard Chaykin/David Tischman/J.H. Williams III/Mick Gray/Lee Loughridge,3.38,1563895951,9781563895951,eng,95,11,1,1/1/2000,DC Comics -39470,Castle Diary: The Journal of Tobias Burgess,Richard Platt/Chris Riddell,3.82,0763621641,9780763621643,eng,128,1155,66,7/14/2003,Candlewick -39473,Disaster!: Catastrophes That Shook the World,Richard Bonson/Richard Platt,4.06,0789420341,9780789420343,eng,63,16,2,9/1/1997,DK Publishing (Dorling Kindersley) -39476,Stephen Biesty's Incredible Explosions,Stephen Biesty/Richard Platt,4.41,0789410249,9780789410245,eng,32,30,2,7/1/1996,DK Publishing (Dorling Kindersley) -39501,The Burglar Who Thought He Was Bogart (Bernie Rhodenbarr #7),Lawrence Block,3.89,0060872799,9780060872793,en-US,400,2134,99,10/31/2006,HarperTorch -39503,Hit Parade (John Keller #3),Lawrence Block,3.86,0060840889,9780060840884,eng,295,104,12,7/3/2006,William Morrow -39504,The Girl with the Long Green Heart,Lawrence Block,3.75,0843955856,9780843955859,eng,251,1236,115,11/1/2005,Hard Crime Case -39505,The Burglar Who Painted Like Mondrian (Bernie Rhodenbarr #5),Lawrence Block,3.88,0060731435,9780060731434,eng,311,2063,103,7/26/2005,HarperTorch -39506,The Burglar Who Liked to Quote Kipling (Bernie Rhodenbarr #3),Lawrence Block,3.83,0060731257,9780060731250,eng,304,2473,138,3/1/2005,HarperTorch -39508,Out on the Cutting Edge (Matthew Scudder #7),Lawrence Block,4.07,0752837494,9780752837499,eng,244,2383,115,12/7/2000,Orion -39509,Writing the Novel: From Plot to Print,Lawrence Block,3.95,0898792088,9780898792089,eng,197,347,36,10/28/2002,Writer's Digest Books -39510,The Burglar Who Traded Ted Williams (Bernie Rhodenbarr #6),Lawrence Block,3.89,0060731443,9780060731441,eng,384,2190,98,10/25/2005,HarperTorch -39518,Gilda Joyce: Psychic Investigator (Gilda Joyce #1),Jennifer Allison,3.89,0142406988,9780142406984,eng,336,5227,400,11/23/2006,Puffin Books -39526,Boeing Versus Airbus: The Inside Story of the Greatest International Competition in Business,John Newhouse,3.63,1400043360,9781400043361,eng,254,247,28,1/16/2007,Alfred A. Knopf -39535,Fabulous Small Jews,Joseph Epstein,3.90,0618446583,9780618446582,en-US,352,192,29,7/6/2004,Mariner Books -39539,Feast: Food to Celebrate Life,Nigella Lawson,4.15,1401301363,9781401301361,eng,480,7285,86,10/27/2004,Hachette Books -39541,How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking,Nigella Lawson/Petrina Tinslay,3.97,0786867973,9780786867974,en-US,374,251,18,11/14/2001,Hyperion Books -39542,How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking,Nigella Lawson,3.97,0786886811,9780786886814,eng,384,29553,254,9/1/2005,Hachette Books -39543,Forever Summer,Nigella Lawson,4.00,0701176156,9780701176150,eng,279,4230,43,6/2/2005,Chatto Windus -39571,programming.java: An Introduction to Programming Using Java: An Introduction to Programming Using Java,Rick Decker/Stuart Hirshfield,4.00,0534371094,9780534371098,eng,640,1,0,12/24/1999,Course Technology -39580,The American Campaign: U.S. Presidential Campaigns and the National Vote,James E. Campbell,5.00,089096940X,9780890969403,eng,314,0,0,5/1/2000,Texas A&M University Press -39582,The Anglo-Saxons,James Campbell/Eric John/Patrick Wormald,4.04,0140143955,9780140143959,eng,272,550,28,3/28/1991,Penguin -39585,The Final Frontiersman: Heimo Korth and His Family Alone in Alaska's Arctic Wilderness,James Campbell,4.21,074345314X,9780743453141,en-US,320,1179,141,9/13/2005,Atria Books -39622,The Untamed One (Wild Wulfs of London #2),Ronda Thompson,4.01,0312935749,9780312935740,eng,320,925,42,5/2/2006,St. Martin's Paperbacks -39623,The Cursed One (Wild Wulfs of London #3),Ronda Thompson,4.02,0312935757,9780312935757,eng,305,1006,46,11/28/2006,St. Martin's Paperbacks -39624,The Dark One (Wild Wulfs of London #1),Ronda Thompson,3.87,0312935730,9780312935733,eng,341,1734,98,11/1/2005,St. Martin's Press -39625,Call of the Moon,Ronda Thompson,3.74,0505525151,9780505525154,eng,352,126,8,1/1/2009,Love Spell -39632,Bad (Fearless #13),Francine Pascal,3.97,0743415353,9780743415354,en-GB,215,728,6,7/10/2002,Simon & Schuster Childrens Books -39633,Fear (Fearless #23),Francine Pascal,3.97,0743449320,9780743449328,eng,208,436,6,9/1/2002,Simon & Schuster Childrens Books -39636,Twisted (Fearless #4),Francine Pascal,3.94,0671773453,9780671773458,eng,240,1582,24,6/22/2002,Simon & Schuster Childrens Books -39637,Run (Fearless #3),Francine Pascal,3.93,067103748X,9780671037482,eng,205,2262,50,3/1/2000,Simon & Schuster (Trade Division) -39638,Killer (Fearless #12),Francine Pascal,4.03,0743408667,9780743408660,eng,222,784,12,11/6/2000,Simon & Schuster Childrens Books -39639,Alone (Fearless #22),Francine Pascal,3.97,0743449312,9780743449311,eng,224,490,5,7/16/2002,Simon & Schuster Childrens Books -39640,Tears (Fearless #15),Francine Pascal,3.97,0743412494,9780743412490,eng,214,644,11,5/1/2001,Simon Pulse -39660,The Shawshank Redemption,Mark Kermode/Rob White,4.43,0851709680,9780851709680,eng,96,725,42,8/26/2003,British Film Institute -39661,The Shawshank Redemption: The Shooting Script,Frank Darabont/Stephen King,4.64,1557042462,9781557042460,eng,184,2406,29,9/30/2004,Newmarket Press -39662,Different Seasons,Stephen King,4.35,0751514624,9780751514629,eng,560,127648,2080,2/16/1995,Warner Books -39671,The Real Frank Zappa Book,Frank Zappa/Peter Occhiogrosso,4.13,0330316257,9780330316255,eng,352,4934,223,8/3/1990,Picador USA -39685,Homegrown Democrat: A Few Plain Thoughts from the Heart of America,Garrison Keillor,3.96,0143037684,9780143037682,eng,288,1182,134,8/29/2006,Penguin Books -39690,Good Poems for Hard Times,Garrison Keillor/Charles Bukowski/Robert Burns/Hayden Carruth/Raymond Carver/Billy Collins/Noël Coward/Carl Dennis/E.E. Cummings/Emily Dickinson/Stephen Dobyns/Fleur Adcock/John Donne/Rita Dove/Stephen Dunn/Lawrence Ferlinghetti/Robert Frost/Erica Funkhouser/Donald Hall/Patricia Hampl/Thomas Hardy/Jim Harrison/W.H. Auden/Jennifer Michael Hecht/David Ignatow/John Keats/X.J. Kennedy/Jane Kenyon/Galway Kinnell/Maxine Kumin/Kate Light/Henry Wadsworth Longfellow/Louis MacNeice/Hilaire Belloc/Herman Melville/W.S. Merwin/Edna St. Vincent Millay/Howard Nemerov/Sharon Olds/Mary Oliver/Grace Paley/Lawrence Raab/Kenneth Rexroth/Wendell Berry/Carl Sandburg/John Berryman/Elizabeth Bishop/William Blake/Philip Booth/Virginia Hamilton Adair/Liesl Mueller,4.14,0143037676,9780143037675,eng,344,2662,214,8/29/2006,Penguin Books -39692,Good Poems,Garrison Keillor,4.18,0142003441,9780142003442,eng,476,6060,389,8/26/2003,Penguin Books -39700,Managers Not MBAs: A Hard Look at the Soft Practice of Managing and Management Development,Henry Mintzberg,3.83,1576753514,9781576753514,en-US,464,146,7,8/1/2005,Berrett-Koehler Publishers -39707,Hell No We Won't Go! Resisting the Draft During the Vietnam War,Sherry Gershon Gottlieb,4.50,0670839353,9780670839353,eng,274,8,1,7/1/1991,Viking -39724,Marsha Is Only a Flower (Marsha #2),Barbara Bottner,3.82,0307263304,9780307263308,eng,48,20,1,4/1/2000,Random House Books for Young Readers -39733,Almond Cookies & Dragon Well Tea,Cynthia Chin-Lee/Youshan Tang,3.89,1879965038,9781879965034,eng,37,9,0,5/1/1993,Polychrome Publishing Corporation -39747,The Empire of Ice Cream,Jeffrey Ford/Jonathan Carroll,4.03,1930846398,9781930846395,eng,320,426,37,4/1/2006,Golden Gryphon Press -39748,The Fantasy Writer's Assistant and Other Stories,Jeffrey Ford,4.09,193084610X,9781930846104,eng,247,207,23,8/1/2002,Golden Gryphon Press -39749,Memoranda,Jeffrey Ford/Jacques Guiod,3.90,2290319708,9782290319703,fre,253,206,13,12/10/2002,J'ai Lu -39763,The Mystical Poems of Rumi 1: First Selection Poems 1-200,Rumi/A.J. Arberry,4.28,0226731510,9780226731513,eng,208,114,8,3/15/1974,University Of Chicago Press -39771,Ruby Gloom's Guide to Friendship,Matt Riser/Martin Hsu,4.36,0810958627,9780810958623,eng,72,38,4,5/1/2005,Harry N. Abrams -39773,Slouching Toward Nirvana,Charles Bukowski/John Martin,3.99,0060577045,9780060577049,eng,288,1937,105,1/3/2006,Ecco -39774,Mockingbird Wish Me Luck,Charles Bukowski,4.13,0876851383,9780876851388,eng,160,1818,85,5/31/2002,Ecco -39784,Seventeen and In-Between,Barthe DeClements,3.81,0140364757,9780140364750,eng,176,227,8,8/1/1993,Puffin -39785,How Do You Lose Those Ninth-grade Blues?,Barthe DeClements,3.74,0140363335,9780140363333,eng,144,10,1,4/1/1993,Puffin -39792,The Man Who Smiled (Kurt Wallander #4),Henning Mankell/Laurie Thompson,3.93,1565849930,9781565849938,eng,325,14322,521,9/19/2006,The New Press -39793,Before the Frost (Linda Wallander #1),Henning Mankell/Ebba Segerberg,3.85,1400095816,9781400095810,eng,375,8359,483,2/14/2006,Vintage Crime/Black Lizard -39795,The Dogs of Riga (Kurt Wallander #2),Henning Mankell/Laurie Thompson,3.72,1400031524,9781400031528,eng,326,17060,1016,4/13/2004,Vintage Crime/Black Lizard -39796,Sidetracked (Kurt Wallander #5),Henning Mankell/Steven T. Murray,4.07,1400031567,9781400031566,eng,432,15178,574,5/13/2003,Vintage Crime/Black Lizard -39797,The Return of the Dancing Master,Henning Mankell/Laurie Thompson,3.91,1400076951,9781400076956,swe,406,5341,314,2/8/2005,Vintage Crime/Black Lizard -39799,One Step Behind (Kurt Wallander #7),Henning Mankell/Ebba Segerberg,4.09,0099448874,9780099448877,eng,450,11885,481,4/3/2003,Vintage -39801,The White Lioness (Kurt Wallander #3),Henning Mankell/Laurie Thompson,3.84,0099464691,9780099464693,eng,576,12367,709,9/4/2003,Vintage -39806,Black Like Us: A Century of Lesbian Gay and Bisexual African American Fiction,Devon W. Carbado/Evelyn C. White/Dwight A. McBride/Donald Weise,4.33,1573441082,9781573441087,eng,600,127,16,5/28/2002,Cleis Press -39819,Dogged Pursuit (Jack and Jamie #5),Lee Charles Kelley,3.86,0060732296,9780060732295,eng,320,64,6,6/27/2006,Avon -39820,To Collar a Killer (Jack and Jamie #3),Lee Charles Kelley,3.76,0060524952,9780060524951,eng,304,70,6,11/30/2004,Avon -39822,A Nose for Murder (Jack and Jamie #1),Lee Charles Kelley,3.52,0060524936,9780060524937,eng,267,97,13,3/1/2003,Avon Books -39823,Murder Unleashed (Jack and Jamie #2),Lee Charles Kelley,3.95,0060524944,9780060524944,eng,304,61,10,1/1/2004,Avon Books -39829,His Princess Devotional: A Royal Encounter With Your King,Sheri Rose Shepherd,5.00,1590529626,9781590529621,eng,240,2,0,10/16/2007,Multnomah -39836,How to Be Happy All the Time,Paramahansa Yogananda,4.36,1565892151,9781565892156,eng,167,317,19,6/1/2006,Crystal Clarity Publishers -39849,Illuminata: A Return to Prayer,Marianne Williamson,4.28,1573225207,9781573225205,eng,301,2551,84,11/1/1995,Riverhead Books -39855,Ten Kids No Pets,Ann M. Martin,3.91,0590422448,9780590422444,eng,174,88,11,4/1/1989,Scholastic -39872,Encyclopedia of an Ordinary Life,Amy Krouse Rosenthal,3.92,1400080460,9781400080465,eng,240,5067,897,12/6/2005,Broadway Books -39876,The OK Book,Amy Krouse Rosenthal/Tom Lichtenheld,3.96,0061152552,9780061152559,en-US,40,1019,189,4/24/2007,HarperCollins -39889,Grey Eminence,Aldous Huxley,4.16,0099477823,9780099477822,en-US,320,196,14,4/7/2005,Vintage Classics -39899,Arms and Armor: A Pictorial Archive from Nineteenth-Century Sources,Carol Belanger Grafton,3.96,0486285618,9780486285610,eng,128,26,1,7/25/1995,Dover Publications -39902,Bittersweet: Recipes and Tales from a Life in Chocolate,Alice Medrich/Deborah Jones,4.28,1579651607,9781579651602,eng,378,359,25,11/15/2003,Artisan -39904,Chocolate and the Art of Low-Fat Desserts,Alice Medrich,4.00,044651666X,9780446516662,eng,192,38,1,10/28/1994,Warner Books (NY) -39905,A Year in Chocolate: Four Seasons of Unforgettable Desserts,Alice Medrich,3.74,0446526649,9780446526647,eng,152,28,1,10/24/2001,Warner Books (NY) -39906,Cocolat: Extraordinary Chocolate Desserts,Alice Medrich/Patricia Brabant,4.56,0446514195,9780446514194,eng,192,80,10,10/1/1990,Grand Central Publishing -39910,The Bread Baker's Apprentice: Mastering the Art of Extraordinary Bread,Peter Reinhart/Ron Manville,4.28,1580082688,9781580082686,eng,320,8552,248,11/14/2001,Ten Speed Press -39913,Beach Blanket Bad Boys,Linda Lael Miller/Alison Kent/Lucy Monroe/Jill Shalvis/Susanna Carr/Morgan Leigh,3.89,0758210949,9780758210944,eng,352,1031,27,6/7/2005,Kensington -39916,Epileptic,David B.,3.88,0375714685,9780375714689,eng,368,11891,534,7/4/2005,Pantheon -39926,The Beauty Myth,Naomi Wolf,3.89,0060512180,9780060512187,eng,368,16760,909,9/24/2002,Harper Perennial -39933,How to Read Literature Like a Professor,Thomas C. Foster,3.65,006000942X,9780060009427,eng,314,16550,1826,11/14/2014,Harper Perennial -39934,Reading Like a Writer: A Guide for People Who Love Books and for Those Who Want to Write Them,Francine Prose,3.77,0060777052,9780060777050,eng,297,7914,1094,4/10/2007,Harper Perennial -39936,After,Francine Prose,3.49,0060080833,9780060080839,eng,352,1782,268,5/11/2004,HarperTeen -39937,Blue Angel,Francine Prose,3.35,0060882034,9780060882037,eng,314,2948,383,2/28/2006,Harper Perennial -39941,Household Saints,Francine Prose,3.70,0060507276,9780060507275,en-US,272,370,47,4/1/2003,Harper Perennial -39959,The Carl Hiaasen Collection: Lucky You and Sick Puppy,Carl Hiaasen/Edward Asner,4.32,0739340824,9780739340820,en-US,0,90,5,6/6/2006,Random House Audio -39961,He Came to Set the Captives Free,Rebecca Brown,4.09,0883683237,9780883683231,en-US,288,1598,168,7/1/1992,Whitaker House -39963,A Long Way from Chicago (A Long Way from Chicago #1),Richard Peck,3.94,0142401102,9780142401101,eng,160,30141,2106,4/12/2004,Puffin Books -39969,A Long Way from Chicago (Saddleback's Focus on Reading Study Guides),Lisa S. French,4.00,1599051125,9781599051123,eng,42,1,0,8/5/2006,Saddleback Educational Publishing Inc. -39970,The Dreadful Future of Blossom Culp (Blossom Culp #3),Richard Peck,3.78,0141310944,9780141310947,eng,192,561,37,4/23/2001,Puffin -39980,A Year Down Yonder (A Long Way from Chicago #2),Richard Peck,4.11,0142300705,9780142300701,eng,160,26143,1638,11/21/2002,Puffin Books -39988,Matilda,Roald Dahl/Quentin Blake,4.31,0141301066,9780141301068,eng,240,541914,11576,6/1/1998,Puffin Books -39989,Matilda Bone,Karen Cushman/Trina Schart Hyman,3.74,0440418224,9780440418221,eng,176,3061,215,3/12/2002,Yearling -39993,The Full Matilda,David Haynes,4.00,0767915690,9780767915694,eng,384,46,5,5/11/2004,Broadway Books -39994,Tuscan Countess: The Life and Extraordinary Times of Matilda of Canossa,Michele K. Spike,3.68,0865652422,9780865652422,eng,312,51,10,9/28/2004,Vendome Press -40003,The History of Rome Books 21-30: The War with Hannibal,Livy/Aubrey de Sélincourt/Betty Radice,4.14,014044145X,9780140441451,eng,711,3103,46,7/30/1972,Penguin Classics -40004,Hannibal,Theodore Ayrault Dodge/Ian M. Cuthbertson,4.13,076076896X,9780760768969,eng,592,19,2,7/16/2005,Barnes Noble -40005,Hannibal's Children,John Maddox Roberts,3.68,0441010385,9780441010387,eng,359,204,18,3/25/2003,Berkley Publishing Group -40007,Hannibal Crosses the Alps: The Invasion of Italy & the Second Punic War,John Prevas,3.83,0306810700,9780306810701,en-US,256,91,11,9/17/2001,Da Capo Press -40010,Hannibal: Enemy Of Rome,Leonard Cottrell,3.89,0306804980,9780306804984,eng,248,129,17,8/22/1992,Da Capo Press -40012,Goodman & Gilman's the Pharmacological Basis of Therapeutics,Laurence L. Brunton/John S. Lazo/Keith L. Parker,4.29,0071422803,9780071422802,eng,2021,185,8,9/21/2005,McGraw-Hill Professional Publishing -40016,Young Goodman Brown and Other Short Stories,Nathaniel Hawthorne,3.86,0486270602,9780486270609,eng,111,9101,126,2/5/1992,Dover Publications -40020,A Patchwork Planet,Anne Tyler,3.79,080411918X,9780804119184,eng,320,11355,571,5/1/2001,Ballantine Books -40021,A Slipping-Down Life,Anne Tyler,3.61,0345478959,9780345478955,eng,192,3335,142,5/4/2004,Ballantine Books -40022,The Hound of the Baskervilles: Another Adventure of Sherlock Holmes with "the Adventure of the Speckled Band",Arthur Conan Doyle/Francis O'Gorman,4.11,1551117223,9781551117225,eng,300,1356,32,1/10/2006,Broadview Press Inc -40023,The Hound of the Baskervilles,Patrick Nobes/Arthur Conan Doyle/Jennifer Bassett/Tricia Hedge,3.91,019423035X,9780194230353,eng,105,136,11,9/12/2000,Oxford University Press USA -40024,The Alienist (Dr. Laszlo Kreizler #1),Caleb Carr,4.06,0812976142,9780812976144,eng,498,126669,5578,10/24/2006,Random House -40030,My Movie Business,John Irving,3.34,0552998680,9780552998680,eng,158,27,2,10/5/2000,Black Swan -40031,A Son of the Circus,Irving John,3.63,0747518459,9780747518457,eng,633,139,14,9/1/1994,Bloomsbury -40033,John Hammond on Record: An Autobiography,John Hammond/Irving Townsend,4.06,0140057056,9780140057058,eng,432,27,2,2/26/1981,Penguin Books -40042,Always Remember Me: How One Family Survived World War II,Marisabina Russo,4.13,0689869207,9780689869204,en-US,48,135,37,4/1/2005,Atheneum Books for Young Readers -40048,Un rôle qui me convient,Richard Russo/Jean-Luc Piningre,4.02,2264034890,9782264034892,fre,430,6,0,8/29/2002,Éditions 10/18 -40049,Monkeys,Susan Minot,3.67,0375708367,9780375708367,eng,176,1219,105,8/8/2000,Vintage -40051,Evening,Susan Minot,3.37,0375700269,9780375700262,eng,288,3765,550,9/7/1999,Vintage -40053,Three Genres: Writing Fiction/Literary Nonfiction Poetry and Drama,Stephen Minot,3.64,0132197383,9780132197380,eng,476,36,3,7/1/2006,Prentice Hall -40054,The Tiny One,Eliza Minot,3.68,037570633X,9780375706332,eng,258,248,43,10/17/2000,Vintage -40067,Thunderstruck,Erik Larson,3.70,1400080665,9781400080663,eng,463,30574,3534,10/24/2006,Crown Publishing Group (NY) -40070,The Naked Consumer: How Our Private Lives Become Public Commodities,Erik Larson,3.71,0140233032,9780140233032,eng,288,163,18,2/1/1994,Penguin Books -40076,Artful Paper Dolls: New Ways to Play with a Traditional Form,Terry Taylor,4.07,1579907156,9781579907150,eng,144,59,5,8/1/2006,Lark Books -40081,The Meanest Doll in the World (Doll People #2),Ann M. Martin/Laura Godwin/Brian Selznick,3.96,0786852976,9780786852970,en-GB,304,5717,417,5/15/2005,Little Brown Books for Young Readers -40090,Sacred Games (Sacred Games),Vikram Chandra,3.93,0061130354,9780061130359,eng,916,5983,724,1/9/2007,HarperCollins -40100,Riding the Bus with My Sister: A True Life Journey,Rachel Simon,3.76,0452284554,9780452284555,eng,304,5226,771,8/26/2003,Plume -40102,Blink: The Power of Thinking Without Thinking,Malcolm Gladwell,3.93,0316010669,9780316010665,eng,296,437507,12937,4/3/2007,Back Bay Books -40106,Beatrice's Goat,Page McBrier/Lori Lohstoeter/Hillary Rodham Clinton,4.25,0689869908,9780689869907,eng,40,546,113,7/1/2004,Aladdin -40127,Leonardo's Swans,Karen Essex,3.72,0767923065,9780767923064,eng,351,5473,230,1/9/2007,Anchor Books -40128,The Notebooks of Leonardo da Vinci,Leonardo da Vinci/Irma A. Richter,3.93,0192838970,9780192838971,eng,432,70,2,1/28/1999,Oxford University Press -40130,Leonardo da Vinci: Obra pictorica completa y obra grafica,Frank Zöllner/Johannes Nathan/Frank Zöllner,4.26,3822817341,9783822817346,spa,696,56,4,2/1/2003,Taschen -40132,Leonardo on Painting: An Anthology of Writings by Leonardo da Vinci; With a Selection of Documents Relating to his Career as an Artist,Leonardo da Vinci/Martin Kemp,4.17,0300090951,9780300090956,eng,336,120,4,8/11/2001,Yale University Press -40138,Bone In The Throat,Anthony Bourdain,3.39,1841952877,9781841952871,eng,290,30,4,4/30/2002,Canongate Books -40139,Gone Bamboo,Anthony Bourdain,3.48,1841953679,9781841953670,eng,286,1066,74,5/1/2002,Canongate Books -40143,The Family That Couldn't Sleep: A Medical Mystery,D.T. Max,3.91,081297252X,9780812972528,eng,299,237,48,9/11/2007,Random House Trade Paperbacks -40145,Dear Genius: The Letters of Ursula Nordstrom,Ursula Nordstrom/Leonard S. Marcus/Maurice Sendak,4.40,0064462358,9780064462358,eng,406,533,112,3/31/2000,HarperCollins -40146,"Dear Genius...": A Memoir of My Life with Truman Capote,Jack Dunphy,3.33,0070183171,9780070183179,eng,275,36,6,12/1/1987,McGraw-Hill Companies -40152,Only Revolutions,Mark Z. Danielewski,3.21,0375421769,9780375421761,eng,360,4791,443,9/12/2006,Pantheon Books -40153,The Whalestoe Letters,Mark Z. Danielewski,4.04,0375714413,9780375714412,eng,83,2112,96,10/10/2000,Pantheon -40155,La Maison des feuilles,Mark Z. Danielewski/Christophe Claro,4.10,2207252000,9782207252000,fre,978,79,13,8/29/2002,Denoël -40156,The Thief (The Queen's Thief #1),Megan Whalen Turner,3.88,0613060326,9780613060325,eng,220,97,17,1/28/1998,San Val -40157,Instead of Three Wishes,Megan Whalen Turner,3.78,0060842318,9780060842314,eng,160,923,112,8/8/2006,Greenwillow Books -40158,The Queen of Attolia (The Queen's Thief #2),Megan Whalen Turner,4.19,0060841826,9780060841829,eng,362,31060,2786,1/24/2006,Eos -40159,The King of Attolia (The Queen's Thief #3),Megan Whalen Turner,4.37,006083577X,9780060835774,eng,387,28480,2309,1/24/2006,Greenwillow Books -40160,Firebirds: An Anthology of Original Fantasy and Science Fiction,Sharyn November/Lloyd Alexander/Emma Bull/Charles Vess/Michael Cadnum/Kara Dalkey/Nancy Farmer/Nina Kiriki Hoffman/Diana Wynne Jones/Patricia A. McKillip/Garth Nix/Meredith Ann Pierce/Delia Sherman/Sherwood Smith/Nancy Springer/Megan Whalen Turner/Elizabeth Wein/Laurel Winter,3.96,0142403202,9780142403204,eng,432,3464,153,5/5/2005,Firebird -40174,Herzog on Herzog,Paul Cronin,4.45,0571207081,9780571207084,eng,352,1373,93,7/9/2003,Farrar Straus and Giroux -40180,Vesco,Arthur Herzog III,4.00,0595272096,9780595272099,eng,408,6,3,3/11/2003,iUniverse -40184,Encore Provence: New Adventures in the South of France,Peter Mayle,4.00,0679762698,9780679762690,eng,240,9980,254,4/25/2000,Vintage -40187,Confessions of a French Baker: Breadmaking Secrets Tips and Recipes,Peter Mayle/Gerard Auzet,3.64,140004474X,9781400044740,en-US,91,405,52,10/25/2005,Alfred A. Knopf -40189,A Year in Provence,Peter Mayle,3.96,0679731148,9780679731146,eng,207,54963,2554,6/4/1991,Vintage -40199,How to Breathe Underwater,Julie Orringer,3.96,014101508X,9780141015088,eng,222,194,34,4/7/2005,Penguin -40200,The Crimson Petal and the White,Michel Faber,3.89,1841954314,9781841954318,eng,835,27961,2183,9/11/2003,Canongate Books -40208,Maggie: A Girl of the Streets and Other Short Fiction,Stephen Crane/Jayne Anne Phillips,3.33,0553213555,9780553213553,eng,240,517,37,11/1/2006,Bantam Classics -40209,Maggie: A Girl of the Streets and Other Tales of New York,Stephen Crane/Larzer Ziff/Theo Davis,3.66,0140437975,9780140437973,eng,272,2476,32,3/29/2001,Penguin Classics -40214,Kushiel's Scion (Imriel's Trilogy #1),Jacqueline Carey,4.20,044650002X,9780446500029,en-US,753,454,37,6/12/2006,Warner Books (NY) -40215,Theft: A Love Story,Peter Carey,3.43,0307263711,9780307263711,eng,269,2561,277,5/9/2006,Alfred A. Knopf -40217,Kushiel's Justice (Imriel's Trilogy #2),Jacqueline Carey,4.25,0446500038,9780446500036,eng,703,15897,381,6/14/2007,Roc -40219,Dirty Jokes and Beer: Stories of the Unrefined,Drew Carey,3.53,0786885599,9780786885596,eng,256,1944,93,3/15/2000,Hachette Books -40220,Godslayer (The Sundering #2),Jacqueline Carey,3.70,076535098X,9780765350985,en-US,404,2868,127,6/27/2006,Tor Books -40223,Kushiel's Avatar (Phèdre's Trilogy #3),Jacqueline Carey,4.36,1405034149,9781405034142,eng,702,29409,689,9/17/2004,Tor -40226,Angels: Celestial Spirits in Legend & Art,Jacqueline Carey,4.00,1567996035,9781567996036,en-US,128,42,3,11/1/1997,MetroBooks (NY) -40259,World Atlas of Great Apes and their Conservation,Julian Caldecott/Lera Miles,4.50,0520246330,9780520246331,en-GB,456,10,2,11/1/2005,University of California Press -40260,The Great Ape Project: Equality Beyond Humanity,Paola Cavalieri/Peter Singer,4.05,031211818X,9780312118181,en-US,312,86,11,12/15/1994,St. Martin's Griffin -40262,Walking With the Great Apes: Jane Goodall Dian Fossey Birute Galdikas,Sy Montgomery,4.18,0395515971,9780395515976,eng,280,4,1,3/18/1991,Houghton Mifflin -40264,The Nature of Play: Great Apes and Humans,Anthony D. Pellegrini/Peter K. Smith,4.33,1593851170,9781593851170,eng,308,3,1,12/6/2004,The Guilford Press -40271,Alvin Journeyman (Tales of Alvin Maker #4),Orson Scott Card,3.73,0312850530,9780312850531,en-US,381,13694,231,12/1/2005,Tor Books -40273,Star Trek Voyager Companion,Paul Ruditis,3.95,0743417518,9780743417518,eng,482,162,9,5/1/2003,Pocket Books -40276,Dodge Caravan/Plymouth Voyager/Chrysler Town & Country 96-02 (Haynes Manuals),L. Alan LeDoux,3.93,1563924692,9781563924699,eng,336,14,1,12/2/2002,Haynes Manuals N. America Inc. -40277,Evolution (Star Trek Voyager: String Theory #3),Heather Jarman,3.78,1416507817,9781416507819,eng,416,324,18,2/28/2006,Pocket Books -40281,Masterpieces: The Best Science Fiction of the Twentieth Century,Orson Scott Card/Isaac Asimov/William Gibson/Michael Swanwick/Theodore Sturgeon/Larry Niven/Robert Silverberg/Harry Turtledove/James Blish/George R.R. Martin/James Patrick Kelly/Karen Joy Fowler/Arthur C. Clarke/Lloyd Biggle Jr./Terry Bisson/Poul Anderson/John Kessel/R.A. Lafferty/C.J. Cherryh/Lisa Goldstein/Edmond Hamilton/Robert A. Heinlein/Ursula K. Le Guin/Ray Bradbury/Frederik Pohl/Harlan Ellison/George Alec Effinger/Brian W. Aldiss,4.21,0441011330,9780441011339,eng,422,1202,79,3/2/2004,Ace Books -40284,Earthborn (Homecoming Saga #5),Orson Scott Card,3.41,0312930402,9780312930400,eng,378,64,2,5/1/1995,Tor Books -40286,First Meetings: In the Enderverse,Orson Scott Card,3.84,1841493112,9781841493114,en-GB,228,69,2,3/1/2013,Little Brown Young Readers -40287,Wyrms,Orson Scott Card,3.38,0765305607,9780765305602,eng,336,4984,202,4/5/2003,Orb Books -40289,The Abyss,Orson Scott Card/James Francis Cameron,4.07,0099690608,9780099690603,eng,363,17911,111,10/5/1989,Legend -40291,Shadow Puppets (Shadow Series #3),Orson Scott Card,3.89,0641573049,9780641573040,eng,345,3,0,8/19/2002,Doherty Tom Associates LLC -40293,Pastwatch: The Redemption of Christopher Columbus,Orson Scott Card,3.97,0812508645,9780812508642,en-US,402,12940,894,3/1/2016,Tor Books -40295,This Is the Way the World Ends,James K. Morrow,3.75,0156002086,9780156002080,eng,319,1312,81,4/24/1995,Harcourt Brace & company -40296,Galapagos: World's End,William Beebe,3.84,0486256421,9780486256429,en-US,528,31,7,5/1/1988,Dover Publications -40297,The Well At The World's End: Volume I,William Morris/Lin Carter,3.81,1587150883,9781587150883,en-US,332,257,22,3/20/2000,Borgo Press -40299,The Well at the World's End: Volume II,William Morris,3.90,1587150891,9781587150890,eng,252,14,1,3/20/2000,Borgo Press -40303,Lost Boys,Orson Scott Card,3.59,0517125773,9780517125779,eng,448,7469,689,7/10/1994,Random House Value Publishing -40304,The Worthing Saga (Worthing #1-3),Orson Scott Card,3.85,0812533313,9780812533316,eng,463,8064,299,12/15/1992,Tor Books -40312,The Rocky Road to Romance (Elsie Hawkins #4),Janet Evanovich,3.67,0060598891,9780060598891,eng,249,9669,315,11/29/2011,Harper -40314,Love Overboard,Janet Evanovich,3.65,0060598840,9780060598846,eng,244,11448,338,2/1/2005,HarperTorch -40318,Back to the Bedroom (Elsie Hawkins #1),Janet Evanovich,3.68,0060598859,9780060598853,eng,234,10077,486,2/25/2014,Harper -40326,More Plums in One (Stephanie Plum #4-6),Janet Evanovich,4.45,031236296X,9780312362966,en-US,792,219,11,4/3/2007,St. Martin's Press -40328,Full Blast (Full #4),Janet Evanovich/Charlotte Hughes,3.83,0312983301,9780312983307,eng,344,12363,278,4/19/2004,St. Martin's Paperbacks -40329,Metro Girl (Alex Barnaby #1),Janet Evanovich,3.62,0060584025,9780060584023,eng,374,28987,1090,9/27/2005,HarperTorch -40331,To the Nines (Stephanie Plum #9),Janet Evanovich,4.17,0747267634,9780747267638,eng,320,94990,1581,6/5/2004,St. Martin's Press -40335,Full Speed (Full #3),Janet Evanovich/Charlotte Hughes,3.83,0755301978,9780755301973,eng,344,11280,223,11/3/2003,Headline -40338,Love Overboard,Janet Evanovich/C.J. Critt,3.65,006073695X,9780060736958,eng,5,95,22,1/25/2005,HarperAudio -40339,The Rocky Road to Romance (Elsie Hawkins #4),Janet Evanovich/C.J. Critt,3.67,0060738251,9780060738259,eng,5,93,26,8/31/2004,HarperAudio -40342,Two for the Dough (Stephanie Plum #2),Janet Evanovich,4.11,0312948964,9780312948962,en-US,325,2509,292,6/29/2007,St. Martin's Press -40343,The Full Box (Full #1-4),Janet Evanovich/Charlotte Hughes,4.29,1593979266,9781593979263,eng,0,101,3,2/16/2016,Macmillan Audio -40347,Hard Eight (Stephanie Plum #8),Janet Evanovich,4.17,0747267626,9780747267621,eng,339,155,13,6/23/2003,Headline Review -40359,Hot Six (Stephanie Plum #6),Janet Evanovich,4.19,033037124X,9780330371247,eng,324,307,28,6/1/2001,Pan MacMillan -40360,Metro Girl (Alex Barnaby #1),Janet Evanovich/C.J. Critt,3.62,0061126527,9780061126529,eng,6,79,29,7/25/2006,HarperAudio -40361,Martian Time-Slip,Philip K. Dick,3.77,185798837X,9781857988376,eng,226,353,33,7/8/1999,Gollancz -40364,The Martians (Mars Trilogy #3.5),Kim Stanley Robinson,3.56,0553574019,9780553574012,eng,434,1495,92,10/3/2000,Spectra Books -40372,Pirates of Venus (Venus #1),Edgar Rice Burroughs/Thomas Floyd/F. Paul Wilson/Phillip R. Burger,3.70,0803261837,9780803261839,eng,179,1235,66,9/1/2001,Bison Books -40376,Swords of Mars (Barsoom #8),Edgar Rice Burroughs,3.82,0345329562,9780345329561,eng,191,2812,61,7/12/1979,Del Rey -40378,The Chessmen of Mars (Barsoom #5),Edgar Rice Burroughs/John Bolen,3.83,1400130212,9781400130214,eng,0,5147,157,1/1/2005,Tantor Media -40379,The Warlord of Mars (Barsoom #3),Edgar Rice Burroughs/John Bolen,3.86,1400130220,9781400130221,eng,6,9350,345,2/1/2001,Tantor Media -40384,Synthetic Men of Mars (Barsoom #9),Edgar Rice Burroughs,3.78,0345339304,9780345339300,eng,160,2601,58,1/12/1980,Del Rey -40385,The Master Mind of Mars (Barsoom #6),Edgar Rice Burroughs,3.85,0345334248,9780345334244,eng,160,3949,80,4/12/1979,Ballantine Books -40386,A Fighting Man of Mars (Barsoom #7),Edgar Rice Burroughs,3.84,0345345118,9780345345110,eng,239,3169,77,10/12/1984,Del Rey -40387,Thuvia Maid of Mars (Barsoom #4),Edgar Rice Burroughs,3.75,0345339932,9780345339935,eng,160,6313,233,7/12/1986,Del Rey -40388,John Carter of Mars (Barsoom #11),Edgar Rice Burroughs,3.82,0345329554,9780345329554,eng,167,3703,78,7/12/1985,Del Rey -40395,A Princess of Mars (Barsoom #1),Edgar Rice Burroughs/John Seelye,3.81,0143104888,9780143104889,eng,186,38926,2355,1/30/2007,Penguin Books -40421,Escape on Venus (Venus #4),Edgar Rice Burroughs,3.70,0345370112,9780345370112,eng,246,9,0,6/15/1991,Del Rey -40424,Tarzan of the Apes: Tarzan of the Apes/The Son of Tarzan/Tarzan at the Earth's Core/Tarzan Triumphant,Edgar Rice Burroughs/Esteban Maroto/J. Allen St. John/Studley Burroughs,4.14,0517659573,9780517659571,eng,848,29,1,11/30/1988,Random House Value Publishing -40425,Tarzan of the Apes (Tarzan #1),Edgar Rice Burroughs,3.90,0809599813,9780809599813,eng,324,31734,1573,9/1/2003,Wildside Press -40436,The Five People You Meet in Heaven,Mitch Albom,3.93,0751536822,9780751536829,eng,229,4251,525,9/2/2005,Time Warner Paperbacks -40437,Murder in the Bastille (Aimee Leduc Investigations #4),Cara Black,3.73,1569473641,9781569473641,en-US,276,1198,110,4/1/2004,Soho Crime -40440,The Thirteenth Tale,Diane Setterfield,3.96,0743298020,9780743298025,eng,406,239809,18865,9/12/2006,Atria Books -40450,Market Forces,Richard K. Morgan,3.59,0345457749,9780345457745,eng,464,5593,264,3/1/2005,Ballantine Books -40451,Black Widow: The Things They Say About Her,Richard K. Morgan/Bill Sienkiewicz/Sean Phillips,3.47,0785117687,9780785117681,eng,144,302,33,6/7/2006,Marvel -40452,Black Widow: Homecoming,Richard K. Morgan/Bill Sienkiewicz/Goran Parlov,3.79,0785114939,9780785114932,eng,144,617,43,5/11/2005,Marvel -40459,Ragtime,E.L. Doctorow,3.88,0553026003,9780553135428,eng,369,210,37,3/1/1977,Bantam Books -40460,Ragtime in Simla (Joe Sandilands #2),Barbara Cleverly,3.84,0385339720,9780385339728,en-US,368,60,10,7/25/2006,Delta -40465,Thank You for Smoking,Christopher Buckley,3.93,0812976525,9780812976526,eng,272,9900,561,2/14/2006,Random House Trade Paperbacks -40468,The Crossing,Cormac McCarthy,4.13,0517168952,9780517168950,eng,425,232,13,4/28/1996,Random House Value Publishing -40470,Cities of the Plain (The Border Trilogy #3),Cormac McCarthy,4.09,0679747192,9780679747192,eng,292,17475,946,5/25/1999,Vintage -40473,The Agony and the Ecstasy: A Biographical Novel of Michelangelo,Irving Stone,4.07,0451213238,9780451213235,en-US,776,917,130,9/7/2004,NAL -40478,The Agony and the Ecstasy,Irving Stone,4.07,0099416271,9780099416272,eng,777,160,18,1/1/1991,Arrow -40482,Harvest,Tess Gerritsen,4.11,067155302X,9780671553029,eng,368,15619,523,8/1/1997,Pocket Books -40483,Story of O (Story of O #1),Pauline Réage/Sabine d'Estree,3.32,0345301110,9780345301116,eng,199,12840,997,5/12/1981,Ballantine Books -40484,Story of O,Pauline Réage/John Paul Hand,3.32,1562010352,9781562010355,eng,224,446,52,5/8/1998,Running Press Adult -40485,The O. Henry Prize Stories 2003,Laura Furman/David Guterson/Diane Johnson/Jennifer Egan,3.78,1400031311,9781400031313,eng,384,138,22,9/9/2003,Random House Value Publishing -40487,The Illustrated Story Of O,Doris Kloster/Pauline Réage,3.96,0312266057,9780312266059,eng,160,24,1,9/20/2001,St. Martin's Press -40490,The Valley of Vision: A Collection of Puritan Prayers and Devotions,Arthur Bennett,4.54,0851512283,9780851512280,eng,223,9476,247,11/1/1975,Banner of Truth -40491,Valley Of Silence (Circle Trilogy #3),Nora Roberts,4.22,0515141674,9780515141672,eng,318,1372,113,11/1/2006,Berkley Books -40492,Revolution in The Valley: The Insanely Great Story of How the Mac Was Made,Andy Hertzfeld/Steve Wozniak,4.18,0596007191,9780596007195,en-US,291,1900,55,12/16/2004,O'Reilly Media -40493,The Valley of Horses (Earth's Children #2),Jean M. Auel,4.00,0553381660,9780553381665,en-US,544,59723,1733,6/25/2002,Bantam -40496,How Green Was My Valley,Richard Llewellyn,4.18,0141185856,9780141185859,eng,448,12351,1041,6/28/2001,Penguin Classics -40502,Once A Warrior King: Memories of an Officer in Vietnam,David Donovan,4.27,0345479076,9780345479075,en-US,352,413,24,7/12/1986,Ballantine -40504,Once a Warrior (Warriors #1),Karyn Monk,3.75,0553574221,9780553574227,eng,384,309,20,3/31/1997,Fanfare -40526,Time and Again (Time #1),Jack Finney,3.96,0575073608,9780575073609,eng,399,13760,1624,5/1/2012,Orion Publishing Group -40528,Time and Again (Time Travel #1-2),Nora Roberts,3.77,0373285337,9780373285334,eng,505,302,30,3/28/2006,Silhouette Books -40530,Time and Again: Time Was / Times Change,Nora Roberts,3.77,0373484410,9780373484416,eng,505,7574,194,8/24/2001,Silhouette -40531,Meeting Jesus Again for the First Time: The Historical Jesus and the Heart of Contemporary Faith,Marcus J. Borg,4.12,0060609176,9780060609177,en-US,160,4272,260,4/7/2015,HarperOne -40532,Reading the Bible Again for the First Time: Taking the Bible Seriously but Not Literally,Marcus J. Borg,4.13,0060609192,9780060609191,en-US,321,2959,187,4/7/2015,HarperOne -40536,The Complete Idiot's Guide to Business Plans,Gwen Moran,3.32,1592574009,9781592574001,eng,314,16,4,10/4/2005,Alpha Books -40540,PHP and MySQL Web Development (Developer's Library),Luke Welling/Laura Thomson,3.96,0672326728,0752063326725,en-US,1008,590,31,10/1/2004,Sams -40543,Beginning PHP and MySQL 5: From Novice to Professional,W. Jason Gilmore,3.72,1590595521,9781590595527,en-US,913,158,12,10/1/2005,Apress -40549,PHP & MySQL For Dummies,Janet Valade,3.55,0470096004,9780470096000,eng,436,145,6,12/1/2006,Wiley Publishing -40551,PHP and MySQL for Dummies,Janet Valade,3.55,0764555898,9780764555893,en-US,456,12,2,4/9/2004,For Dummies -40573,Graphic Design Now,Charlotte Fiell/Peter Fiell,3.43,382284778X,9783822847787,eng,349,67,2,11/1/2005,Taschen -40582,Michael Moore's Fahrenheit 9/11: How One Film Divided a Nation,Robert Brent Toplin,3.44,0700614524,9780700614523,eng,161,9,1,4/20/2006,University Press of Kansas -40597,My Dirty Thirties: Romantic Hedonism,Kelly Carr,3.00,1932420347,9781932420340,eng,144,8,1,7/1/2004,New Tradition Books -40604,The Life and Opinions of Tristram Shandy Gentleman,Laurence Sterne/Robert Folkenflik,3.74,0375761195,9780375761195,eng,704,96,11,9/21/2004,Modern Library -40609,La fortaleza digital,Dan Brown/Eduardo García Murillo,3.65,8489367019,9788489367012,spa,440,1078,76,2/1/2006,Umbriel -40620,The United States of Europe: The New Superpower and the End of American Supremacy,T.R. Reid,3.62,0143036084,9780143036081,en-US,320,691,63,11/1/2005,Penguin Books -40622,Europe on a Shoestring,Sarah Johnstone/Aaron Anderson/Sarah Andrews/Lonely Planet,4.05,1741045916,9781741045918,eng,1284,357,16,3/1/2007,Lonely Planet -40625,Europe and the People Without History,Eric R. Wolf,4.12,0520048989,9780520048980,eng,534,995,32,12/3/1982,University of California Press -40626,A History of Modern Europe Volume 2: From the French Revolution to the Present,John M. Merriman,4.00,0393924955,9780393924954,en-US,1040,62,4,2/1/2004,W. W. Norton & Company -40630,How Europe Underdeveloped Africa,Walter Rodney/Vincent Harding,4.27,0882580965,9780882580968,eng,312,2088,96,1/1/1981,Howard University Press -40631,Europe: A History,Norman Davies,4.17,0060974680,9780060974688,eng,1392,3394,163,1/20/1998,Harper Perennial -40636,The Basketball Diaries,Jim Carroll,3.95,0140249990,9780140249996,eng,224,308,19,4/1/1995,Penguin Books -40640,The Basketball Diaries and the Book of Nods,Jim Carroll,4.25,0571148433,9780571148431,eng,320,85,3,5/26/1987,Faber & Faber Ltd. -40646,The 10 Commandments of Parenting: The Do's and Don'ts for Raising Great Kids,Ed Young,4.00,0802431488,9780802431486,eng,224,25,2,9/1/2005,Moody Publishers -40663,Unsung Heroes Of Rock 'n' Roll: The Birth Of Rock In The Wild Years Before Elvis,Nick Tosches,4.11,0306808919,9780306808913,eng,288,334,15,5/7/1999,Da Capo Press -40664,In the Hand of Dante,Nick Tosches,3.18,0316735647,9780316735643,en-US,384,683,76,9/1/2003,Back Bay Books -40694,Ray Bradbury's Fahrenheit 451,Harold Bloom,4.18,0791059294,9780791059296,eng,147,991,52,12/31/2001,Chelsea House Publications -40700,Schott's Original Miscellany,Ben Schott/Collin Deckerman,4.08,1582343497,9781582343495,eng,158,1379,103,8/4/2003,Bloomsbury Publishing PLC -40706,Mind Over Money: How to Match Your Emotional Style to a Winning Financial Strategy,John W. Schott/Jean S. Arbeiter,2.67,0316773786,9780316773782,en-US,260,3,1,1/1/1998,Little Brown and Company -40710,Blowback (Scot Harvath #4),Brad Thor,4.18,1416505415,9781416505419,eng,575,13546,371,6/1/2006,Pocket Books -40718,The Sorrows of Empire: Militarism Secrecy and the End of the Republic,Chalmers Johnson/Shara Kay,4.13,0805077979,9780805077971,en-US,389,1332,75,4/1/2005,St. Martins Press-3PL -40763,Bouvard and Pecuchet,Gustave Flaubert/Αχιλλέας Κυριακίδης/Mark Polizzotti/Raymond Queneau,3.86,1564783936,9781564783936,eng,328,2820,103,3/28/2006,Dalkey Archive Press -40789,Voyage of the Turtle: In Pursuit of the Earth's Last Dinosaur,Carl Safina,4.24,0805078916,9780805078916,eng,383,644,78,5/30/2006,Henry Holt and Company -40790,Thirteen Moons on Turtle's Back,Joseph Bruchac/Jonathan London/Thomas Locker,4.08,0698115848,9780698115842,en-US,32,318,40,8/25/1997,Puffin Books -40792,One Tiny Turtle,Nicola Davies/Jane Chapman,4.13,0763623113,9780763623111,eng,32,518,102,6/14/2005,Candlewick Press -40795,Turtle Island,Gary Snyder/Michael Corr,4.09,0811205460,9780811205467,eng,112,3809,105,1/17/1974,New Directions -40798,Turtles Termites and Traffic Jams: Explorations in Massively Parallel Microworlds,Mitchel Resnick,3.86,0262680939,9780262680936,eng,184,131,8,1/22/1997,Bradford Book -40806,Turtle Moon,Alice Hoffman,3.83,0099429160,9780099429166,eng,275,7545,388,4/4/2002,Vintage -40807,Aquatic Turtles: Sliders Cooters Painted and Map Turtles,Richard D. Bartlett/Patricia P. Bartlett,3.80,0764122789,9780764122781,eng,46,20,4,2/1/2003,B.E.S. Publishing -40816,Turtles & Tortoises for Dummies,Liz Palika,3.57,0764553135,9780764553134,eng,328,53,5,3/15/2001,For Dummies -40821,The Turtle and the Monkey,Paul Galdone/Joanna Galdone,3.74,0395544254,9780395544259,eng,32,58,6,9/24/1990,Clarion Books -40833,Turtle Diary,Russell Hoban,4.00,0747548315,9780747548317,eng,182,893,99,9/4/2000,Bloomsbury Publishing PLC -40836,Lessons from Turtle Island: Native Curriculum in Early Childhood Classrooms,Guy W. Jones/Sally Moomaw,4.35,1929610254,9781929610259,eng,208,16,2,9/1/2002,Redleaf Press -40859,Inside Himalaya,Basil Pao/Michael Palin,4.00,0297843702,9780297843702,en-GB,200,30,2,1/31/2005,Weidenfeld & Nicolson -40863,Youth in Revolt: The Journals of Nick Twisp : Volumes I II III/Youth in Revolt/Youth in Bondage/Youth in Exile,C.D. Payne,4.04,1882647009,9781882647002,eng,503,29,6,8/1/1993,Aivia Press -40868,The Demon Princes Volume One: The Star King The Killing Machine The Palace of Love,Jack Vance,4.25,0312853025,9780312853020,eng,446,1134,44,4/15/1997,Orb Books -40870,Lurulu,Jack Vance,3.59,0312872798,9780312872793,en-US,204,276,20,2/6/2007,Tor Books -40877,Lyonesse: Suldrun's Garden (Lyonesse #1),Jack Vance,3.93,0425058735,9780425058732,eng,436,130,16,4/1/1983,Berkley Trade -40880,Jack Vance: Critical Appreciations and a Bibliography,A.E. Cunningham/Harlan Ellison/Charles F. Miller/Terry Dowling/Paul Rhoads/Jack Vance/Tom Shippey/Gene Wolfe/David Langford/Dan Simmons/David Mathew,4.15,0712311025,9780712311021,eng,232,13,2,1/1/2000,British Library -40884,Galactic Effectuator,Jack Vance,3.69,0441272320,9780441272327,eng,219,286,13,11/1/1981,Ace -40888,The SFWA Grand Masters 3,Frederik Pohl/Lester del Rey/Damon Knight/A.E. van Vogt/Jack Vance,4.02,0312868774,9780312868772,eng,448,8,2,6/23/2001,Tor Books -40889,The Languages of Pao,Jack Vance,3.80,0743487141,9780743487146,en-GB,224,894,54,8/1/2004,iBooks -40891,The Last Castle,Jack Vance,3.79,0425084787,9780425084786,eng,115,841,43,1/1/1986,Underwood/Miller Berkley -40893,Madouc (Lyonesse #3),Jack Vance,4.15,0441505325,9780441505326,eng,426,1825,71,8/1/1991,Ace Books -40894,Ports of Call,Jack Vance,3.55,0312864744,9780312864743,eng,300,409,23,1/15/1999,Tor Books -40911,The Demon Princes Volume Two: The Face The Book of Dreams,Jack Vance,4.30,0312865767,9780312865764,eng,397,653,19,8/15/1997,Tor Books -40912,The Green Pearl (Lyonesse #2),Jack Vance,4.16,0441303161,9780441303168,eng,407,10,2,6/15/1987,Ace -40913,The Last Castle/Nightwings (Tor Double Novel #15),Jack Vance/Robert Silverberg,3.70,0812501942,9780812501940,eng,182,43,4,12/1/1989,Tor Books -40914,The Many Worlds of Magnus Ridolph,Jack Vance,3.90,0879975318,9780879975319,eng,174,282,16,4/1/1980,DAW Books Inc -40919,Big Dead Place: Inside the Strange and Menacing World of Antarctica,Nicholas Johnson/Eirik Sonneland,3.72,0922915997,9780922915996,eng,260,436,95,6/1/2005,Feral House -40922,Best Science Fiction Stories of Clifford D. Simak,Clifford D. Simak,3.94,0446658081,9780446658089,eng,253,64,5,6/1/1972,Paperback Library -40923,Theodore Rex,Edmund Morris,4.19,0812966007,9780812966008,eng,555,38131,911,10/1/2002,Random House Trade Paperbacks -40928,Oedipus Tyrannus,Sophocles/Theodore F. Brunner/Luci Berkowitz,3.70,0393098745,9780393098747,eng,272,146,10,7/1/1970,W.W. Norton & Company -40929,The Rise of Theodore Roosevelt,Edmund Morris,4.23,0375756787,9780375756788,eng,780,36847,1461,11/20/2001,Random House Trade Paperbacks -40941,The Scientists: A History of Science Told Through the Lives of Its Greatest Inventors,John Gribbin,4.08,0812967887,9780812967883,eng,672,892,59,8/10/2004,Random House Trade Paperbacks -40951,A History of the Life Sciences,Lois N. Magner/Magner,4.53,0824708245,9780824708245,en-US,514,15,2,8/13/2002,CRC Press -40958,The Art of Innovation: Lessons in Creativity from IDEO America's Leading Design Firm,Tom Kelley/Jonathan Littman/Tom Peters,3.97,0385499841,9780385499842,eng,320,6412,154,1/16/2001,Broadway Business -40969,Absolute Trust in the Goodness of the Earth: New Poems,Alice Walker,4.02,0812971051,9780812971057,en-US,229,583,70,3/9/2004,Random House Trade Paperbacks -40989,I Sold My Soul on Ebay: Viewing Faith Through an Atheist's Eyes,Hemant Mehta/Rob Bell,3.54,1400073472,9781400073474,en-US,224,442,78,4/17/2007,Waterbrook Press -40992,Shadow & Claw (The Book of the New Sun #1-2),Gene Wolfe,4.02,0312890176,9780312890179,eng,413,13211,883,10/15/1994,Orb Books -40995,Sword & Citadel (The Book of the New Sun #3-4),Gene Wolfe,4.32,0312890184,9780312890186,eng,411,9426,351,10/15/1994,Orb Books -40996,The Wizard (The Wizard Knight #2),Gene Wolfe,3.86,0765350505,9780765350503,eng,587,2595,104,8/29/2006,Tor Fantasy -40997,Soldier of Sidon (Latro #3),Gene Wolfe,4.01,0765316641,9780765316646,eng,320,1063,60,10/31/2006,Tor Books -41005,The Right Stuff,Tom Wolfe,4.24,1579124585,9781579124588,eng,304,213,24,5/1/2005,Black Dog & Leventhal -41028,Wild Fire (The Hot Zone #3),Debra Cowan,3.86,0373274742,9780373274741,eng,250,14,0,1/31/2006,Silhouette Books -41033,The Best American Mystery Stories 2004,Nelson DeMille/Otto Penzler,3.55,0618329676,9780618329670,eng,448,100,13,10/14/2004,Mariner Books -41044,Day and Night,Better Homes and Gardens,0.00,0696018829,9780696018824,eng,32,0,1,3/1/1989,Meredith Corporation -41046,Romanticism,Hugh Honour,3.75,0064300897,9780064300896,eng,416,42,2,8/15/1979,Westview Press -41053,No Cherubs for Melanie,James Hawkins,4.00,1550023926,9781550023923,eng,394,8,1,10/1/2002,Dundurn -41054,The Fish Kisser,James Hawkins,3.40,0888822405,9780888822406,eng,360,9,0,11/1/2001,Dundurn -41055,Street of the Five Moons (Vicky Bliss #2),Elizabeth Peters,3.95,0380731215,9780380731213,eng,376,3654,148,3/7/2000,Avon -41069,Stand on Zanzibar,John Brunner,3.96,1857988361,9781857988369,eng,672,12560,387,8/12/1999,Gollancz -41070,The Shockwave Rider,John Brunner,3.95,0345467175,9780345467171,eng,288,2945,125,3/1/1995,Del Rey -41071,Study Guide to Accompany Brunner and Suddarth's Textbook of Medical-Surgical Nursing,Suzanne C. O'Connell Smeltzer/Brenda G. Bare/Mary Jo Boyer,4.00,0781723051,9780781723053,eng,400,2,0,12/21/1999,LWW -41072,Natural Theology: Comprising Nature & Grace by Professor Dr Emil Brunner & the Reply No! by Dr Karl Barth,Karl Barth/Emil Brunner/Peter Fraenkel,3.72,1592441122,9781592441129,en-GB,132,92,11,12/1/2002,Wipf & Stock Publishers -41073,Children of the Thunder / The Tides of Time / The Crucible of Time,John Brunner,2.92,051712310X,9780517123102,eng,800,11,1,5/3/1995,Wings -41074,The Sheep Look Up,John Brunner/James John Bell/David Brin,3.95,1932100016,9781932100013,eng,388,3568,284,5/11/2003,BenBella Books -41081,Entry to Elsewhen,John Brunner,3.37,0879971541,9780879971540,eng,172,58,3,2/28/1975,DAW Books -41085,The Crucible of Time,John Brunner,3.71,0345302354,9780345302359,eng,416,25,3,6/12/1984,Del Rey -41086,Polymath (Zarathustra Refugee Planets #2),John Brunner,3.56,0879977663,9780879977665,en-US,156,238,16,8/28/1982,DAW Books (NY) -41087,Total Eclipse,John Brunner,3.44,0879979119,9780879979119,eng,206,288,22,2/7/1984,DAW -41088,Manshape,John Brunner,3.11,0879977647,9780879977641,eng,159,34,5,9/28/1982,DAW SF -41089,Modern Classics of Science Fiction,Gardner Dozois/Damon Knight/R.A. Lafferty/Samuel R. Delany/Brian W. Aldiss/Gene Wolfe/Joanna Russ/James Tiptree Jr./Ursula K. Le Guin/Edward Bryant/Howard Waldrop/Jack Dann/L. Sprague de Camp/Lucius Shepard/Pat Cadigan/John Kessel/William Gibson/Connie Willis/Michael Swanwick/Bruce Sterling/Theodore Sturgeon/Richard McKenna/Cordwainer Smith/Jack Vance/Edgar Pangborn/Keith Roberts/Roger Zelazny,4.17,0312088477,9780312088477,eng,672,91,6,1/15/1993,St. Martin's Griffin -41090,The Mammoth Book of Golden Age Science Fiction: Ten Classic Stories from the Birth of Modern Science Fiction Writing,Isaac Asimov/Charles G. Waugh,3.93,0786719052,9780786719051,en-US,512,128,12,1/24/2007,Running Press -41091,Unearthly Neighbors,Chad Oliver,3.83,0517552949,9780517552940,eng,208,38,8,9/5/1984,Random House Value Publishing -41092,The Shores of Another Sea (Classics of Modern Science Fiction 3),Chad Oliver/George Zebrowski/Isaac Asimov,3.55,0517551861,9780517551868,eng,214,37,6,7/25/1984,Random House Value Publishing -41093,Men Martians and Machines,Eric Frank Russell/George Zebrowski/Isaac Asimov,3.77,0517551853,9780517551851,eng,216,164,14,2/1/1984,Crown Publishers -41097,What are the Seven Wonders of the World?: And 100 Other Great Cultural Lists—Fully Explicated,Peter D'Epiro/Mary Desmond Pinkowish,3.77,0385490623,9780385490627,eng,560,231,19,12/1/1998,Anchor -41098,World of Wonders (The Deptford Trilogy #3),Robertson Davies/Wayne Johnston,4.09,0143039148,9780143039143,eng,352,3633,142,2/28/2006,Penguin Classics -41103,Wonder of the World,David Lindsay-Abaire,3.93,0822218631,9780822218630,eng,72,42,4,12/31/2003,Dramatists Play Service Inc. -41105,Worlds of Wonder: How to Write Science Fiction & Fantasy,David Gerrold,3.92,1582970076,9781582970073,eng,246,424,54,4/1/2004,Writer's Digest Books -41111,Walking the World in Wonder: A Children's Herbal,Ellen Evert Hopman/Steven Foster,4.29,0892818786,9780892818785,eng,160,52,4,10/1/2000,Healing Arts Press -41117,Worlds of Wonder,Terry Pastor/Damon Knight/Philip K. Dick/C.M. Kornbluth/Bob Shaw/Frederik Pohl/Alfred Bester/C.L. Moore/Henry Kuttner/Robert Sheckley/James Blish/Cordwainer Smith/Brian W. Aldiss/Jack Vance,4.13,0575043555,9780575043558,eng,368,0,0,11/10/1988,Orion Publishing Co -41120,Sixty Days and Counting (Science in the Capital #3),Kim Stanley Robinson,3.66,0553803131,9780553803136,eng,388,1642,136,2/27/2007,Bantam Doubleday Dell Publishing Group -41121,Fifty Degrees Below (Science in the Capital #2),Kim Stanley Robinson,3.69,0553585819,9780553585810,eng,640,2099,155,1/30/2007,Spectra -41125,The Gold Coast (Three Californias Triptych #2),Kim Stanley Robinson,3.70,0312890370,9780312890377,eng,400,1194,78,5/15/1995,Orb Books -41126,Antarctica,Kim Stanley Robinson,3.78,0553574027,9780553574029,eng,672,2248,165,7/6/1999,Bantam -41128,The Wild Shore (Three Californias Triptych #1),Kim Stanley Robinson,3.75,0312890362,9780312890360,eng,384,2457,170,3/15/1995,Orb Books -41129,Forty Signs of Rain (Science in the Capital #1),Kim Stanley Robinson,3.54,0553585800,9780553585803,en-US,393,3044,339,7/26/2005,Bantam Spectra -41130,Pacific Edge (Three Californias Triptych #3),Kim Stanley Robinson,3.78,0312890389,9780312890384,eng,336,1208,89,5/15/1995,Orb Books -41134,The Memory of Whiteness: A Scientific Romance,Kim Stanley Robinson,3.55,0312861435,9780312861438,en-US,352,448,37,1/15/1996,Orb Books -41150,Les Fils des ténèbres,Dan Simmons,3.71,2253141208,9782253141204,fre,472,33,1,10/1/2007,Livre de Poche -41154,Secret Identity (Lost #2),Catherine Hapka,2.93,0786890916,9780786890910,eng,176,195,11,1/1/2006,Voice -41179,Miracleman Book Three: Olympus,Alan Moore/John Totleben/Steve Oliff/Joe Caramagna/Michael Kelleher/Peter Milligan/Mike Allred,4.39,1560600802,9781560600800,eng,328,1768,93,4/21/2015,Marvel Comics -41193,A Thousand Acres,Jane Smiley,3.81,1400033837,9781400033836,eng,371,53322,2358,12/2/2003,Anchor -41203,Mother's Milk,Edward St. Aubyn,3.76,1890447420,9781890447427,en-US,240,53,7,11/9/2006,Grove Press Open City Books -41217,From a Limestone Ledge: Some Essays and Other Ruminations about Country Life in Texas,John Graves/Glenn Wolff/Bill Wittliff,4.31,0870744852,9780870744853,eng,256,67,7,5/19/2004,Southern Methodist University Press -41219,Possession,A.S. Byatt,3.89,0679735909,9780679735908,eng,555,62580,3465,10/1/1991,Vintage -41226,The Best American Nonrequired Reading 2004,Dave Eggers/Viggo Mortensen,3.86,0618341234,9780618341238,en-US,407,1234,67,10/14/2004,Houghton Mifflin -41231,The Culture of Fear: Why Americans Are Afraid of the Wrong Things,Barry Glassner,3.70,0465014909,9780465014903,en-US,210,3095,305,3/16/2000,Basic Books -41232,Culture of Fear Revisited,Frank Furedi,3.52,0826493955,9780826493958,eng,236,61,3,12/26/2006,Bloomsbury Academic -41250,GraceLand,Chris Abani,3.78,0312425287,9780312425289,en-US,336,2121,202,1/26/2005,Picador -41258,Raised on Rock: Growing Up at Graceland,David Stanley/Mark Bego,2.75,1851588523,9781851588527,eng,192,4,0,12/1/1931,Trafalgar Square Publishing -41261,The White Widow,Jim Lehrer,3.04,189162041X,9781891620416,en-US,224,181,19,5/19/2000,PublicAffairs -41264,The Franklin Affair,Jim Lehrer,3.12,0345468031,9780345468031,eng,208,144,25,6/13/2006,Random House Trade -41270,Short List (One-Eyed Mack #5),Jim Lehrer,4.09,0399136657,9780399136658,eng,224,23,3,2/6/1992,Putnam Publishing Group -41273,Fine Lines (One-Eyed Mack #6),Jim Lehrer,3.23,0517164353,9780517164358,eng,0,17,4,11/19/1995,Random House Value Publishing -41278,Kick the Can (One-Eyed Mack #1),Jim Lehrer,3.85,1571780599,9781571780591,eng,223,77,10,8/1/1997,Council Oak Books -41304,Strangers from a Different Shore: A History of Asian Americans,Ronald Takaki,4.13,0316831301,9780316831307,en-US,640,888,45,9/23/1998,Back Bay Books -41307,La chute,Albert Camus,4.04,0318634872,9780318634876,fre,152,87,6,1/11/1999,Gallimard -41315,Syrup,Max Barry,3.88,0140291873,9780140291872,en-US,304,4715,303,7/1/2000,New York : Penguin Books -41317,Maple Syrup Cookbook: Over 100 Recipes For Breakfast Lunch & Dinner,Ken Haedrich,3.81,1580174043,9781580174046,eng,144,38,8,9/1/2001,Storey Publishing LLC -41329,The Red Tent,Anita Diamant,4.17,0312427298,9780312427290,en-US,321,5390,614,8/21/2007,Picador -41330,Metaconcert (Intervention #2),Julian May,4.21,0345355245,9780345355249,eng,282,1389,15,1/13/1989,Del Rey -41331,Surveillance (Intervention #1),Julian May,4.19,0345355237,9780345355232,en-US,368,1355,15,11/13/1988,Del Rey -41334,The Adversary (Saga of Pliocene Exile #4),Julian May,4.22,0345352440,9780345352446,eng,472,4404,54,9/12/1987,Del Rey Books -41335,Magnificat (Galactic Milieu Trilogy #3),Julian May,4.21,0345362497,9780345362490,en-US,432,2756,31,4/20/2011,Del Rey -41336,The Sagittarius Whorl (Rampart Worlds #3),Julian May,3.75,0345395182,9780345395184,eng,384,339,4,1/2/2001,Del Rey Books -41340,Maison Ikkoku Volume 7 (Maison Ikkoku #7),Rumiko Takahashi,4.24,1591164850,9781591164852,eng,288,305,4,10/26/2004,VIZ Media LLC -41342,Ranma 1/2 Vol. 8 (Ranma ½ (US 2nd) #8),Rumiko Takahashi,4.15,1591161304,9781591161301,eng,196,1473,22,1/7/2004,Viz Media -41344,Maison Ikkoku Volume 8 (Maison Ikkoku #8),Rumiko Takahashi,4.23,1591165628,9781591165620,eng,288,283,5,11/1/2004,Viz Media -41348,The Echo Maker,Richard Powers,3.38,0312426437,9780312426439,en-US,449,555,115,8/21/2007,Picador -41361,Afterglow: A Last Conversation With Pauline Kael,Francis Davis/Pauline Kael,3.69,0306812304,9780306812309,eng,134,128,15,8/21/2003,Da Capo Press -41363,For Keeps: 30 Years at the Movies,Pauline Kael,4.48,0452273080,9780452273085,eng,1312,373,18,9/1/1996,Plume -41369,Hooked: Film Writings 1985-1988,Pauline Kael,4.05,0714529036,9780714529035,eng,528,93,5,7/1/1990,Marion Boyars Publishers -41371,Flirting With Danger (Samantha Jellicoe #1),Suzanne Enoch,3.93,0060593636,9780060593636,eng,384,3625,189,3/1/2005,Avon -41376,Flirting with Danger,Linda Turner,3.57,037307316X,9780373073160,eng,253,6,2,12/1/1989,Silhouette Books -41378,Flirting With Danger,Kate Walker,3.00,037311818X,9780373118182,eng,188,12,4,6/1/1996,Harlequin -41379,As Nature Made Him: The Boy Who Was Raised as a Girl,John Colapinto,3.97,0060929596,9780060929596,eng,320,5456,619,2/20/2001,Harper Perennial -41394,The Serial Killers Club,Jeff Povey,3.22,0446578428,9780446578424,eng,279,109,25,6/22/2006,Warner Books (NY) -41404,The Savage Wars Of Peace: Soldiers' Voices 1945-1989,Charles Allen,4.50,0718128826,9780718128821,eng,290,1,0,10/1/1990,Michael Joseph Ltd./Penguin Books Ltd. -41416,Dark Water (Fog Point #1),Linda Hall,3.66,1578569540,9781578569540,en-US,354,186,25,4/18/2006,Waterbrook Press -41423,The Outlaws of Sherwood,Robin McKinley,3.77,0441013252,9780441013258,eng,368,9043,617,10/4/2005,Ace -41424,Beauty: A Retelling of the Story of Beauty and the Beast,Robin McKinley,4.05,0064404773,9780064404778,eng,256,63876,3744,6/30/1993,HarperCollins -41426,Spindle's End,Robin McKinley,3.81,0552548227,9780552548229,eng,464,189,19,4/3/2003,Corgi Childrens -41430,Imaginary Lands,Robin McKinley/James P. Blaylock/Patricia A. McKillip/Robert Westall/Peter Dickinson/Jane Yolen/P.C. Hodgell/Michael de Larrabetti/Joan D. Vinge,3.59,0862032806,9780862032807,eng,256,463,19,3/26/1987,Julia MacRae -41446,Beauty,Robin McKinley,4.05,0862031435,9780862031435,eng,256,3,0,9/29/1983,Julia MacRae -41451,The Hero and the Crown (Damar #2),Robin McKinley,4.21,0441004997,9780441004997,eng,227,71,7,2/1/1985,Ace -41457,Hitty Her First Hundred Years,Rachel Field/Dorothy P. Lathrop,3.86,0689822847,9780689822841,eng,256,7097,292,9/1/1998,Aladdin -41459,Rachel Field's Hitty: Her First Hundred Years,Rosemary Wells/Susan Jeffers/Rachel Field,4.00,0689817169,9780689817168,eng,112,117,24,10/1/1999,Simon & Schuster -41460,Voting Rights Days (Hitty's Travels #3),Ellen Weiss/Betina Ogden,4.27,0689849125,9780689849121,eng,75,10,2,3/1/2002,Aladdin Paperbacks -41463,A Christmas Carol (Great Illustrated Classics),Malvina G. Vogel/Charles Dickens,4.36,159679237X,9781596792371,eng,238,466,31,1/1/2005,Abdo Publishing Company -41464,Moon in a Dewdrop: Writings of Zen Master Dogen,Dōgen/Kazuaki Tanahashi/Robert Aitken/Reb Anderson/Edward G. Brown/Norman Fischer/Arnold Kotler/Daniel Leighton/Lew Richmond/Katherine Thanas/Brian Unger/Mel Weitsman/Dan Welch/Philip Whalen/David Schneider,4.28,086547186X,9780865471863,eng,356,997,27,10/31/1995,North Point Press -41468,Dewdrops on a Lotus Leaf: Zen Poems of Ryokan,Ryōkan/John Stevens,4.58,1590301080,9781590301081,eng,120,183,19,4/13/2004,Shambhala -41473,A Green Desire,Anton Myrer/Alastair Westgarth,3.73,0060934638,9780060934637,en-US,576,152,9,12/4/2001,Harper Perennial -41474,The Big War,Anton Myrer,3.85,0060934735,9780060934736,en-US,512,98,9,12/4/2001,Harper Perennial -41485,I Heard That Song Before,Mary Higgins Clark,3.82,0743264916,9780743264914,eng,318,545,69,4/3/2007,Simon & Schuster -41486,Santa Cruise: A Holiday Mystery at Sea,Mary Higgins Clark/Carol Higgins Clark,3.41,1416535527,9781416535522,eng,261,4844,433,11/14/2006,Scribner -41487,No Place Like Home,Mary Higgins Clark,3.87,0743497287,9780743497282,eng,472,11128,599,4/1/2006,Pocket Books -41488,Ghost Ship: A Cape Cod Story,Mary Higgins Clark/Wendell Minor,3.73,1416935142,9781416935148,eng,32,353,38,4/3/2007,Simon Schuster/Paula Wiseman Books -41489,Deck the Halls,Mary Higgins Clark/Carol Higgins Clark,3.61,0743418131,9780743418133,eng,292,7116,276,10/1/2001,Pocket Books -41490,On the Street Where You Live,Mary Higgins Clark/Karin Dufner,3.87,0671004530,9780671004538,eng,387,17988,569,4/1/2002,Pocket Books -41491,Silent Night: The Remarkable Christmas Truce of 1914,Stanley Weintraub,3.60,0684866226,9780684866222,eng,256,4041,179,10/30/2001,Pocket Books -41492,Nighttime Is My Time,Mary Higgins Clark,3.82,074341263X,9780743412636,eng,434,11739,485,4/6/2004,Simon & Schuster Adult Publishing Group -41495,Watchfiends and Rack Screams: Works from the Final Period,Antonin Artaud/Bernard Bador/Clayton Eshleman,4.25,1878972189,9781878972187,eng,352,261,14,2/1/2004,Exact Change -41497,Inside My Heart: Choosing to Live with Passion and Purpose,Robin McGraw,3.62,078521836X,9780785218364,eng,221,1113,183,9/12/2006,Nelson Books -41502,Lord John and the Brotherhood of the Blade (Lord John Grey #2),Diana Gabaldon,3.91,0385337493,9780385337496,eng,494,17271,776,8/28/2007,Delacorte Press -41503,How to Stop Worrying and Start Living,Dale Carnegie,4.12,0749307234,9780749307233,eng,293,240,16,5/23/1990,Vermilion -41504,Andrew Carnegie and the Rise of Big Business (Library of American Biography Series),Harold C. Livesay,3.25,0321432878,9780321432872,eng,230,28,1,3/1/2006,Pearson -41505,How to Develop Self-Confidence and Influence People by Public Speaking,Dale Carnegie,4.14,0749305797,9780749305796,eng,256,68,1,3/29/1990,Vermilion -41506,The Autobiography of Andrew Carnegie and the Gospel of Wealth,Andrew Carnegie/Gordon Hutner,3.98,0451530381,9780451530387,eng,336,405,45,11/7/2006,Signet -41513,Love in the Time of Cholera,Gabriel García Márquez/Edith Grossman,3.91,0816147175,9780816147175,eng,551,20,1,5/1/1989,Thorndike Press -41518,A Fan's Notes,Frederick Exley/Jonathan Yardley,4.08,0679602712,9780679602712,eng,425,81,10,8/5/1997,Modern Library -41536,My Soul to Keep (African Immortals #1),Tananarive Due,4.17,006105366X,9780061053665,eng,346,3799,361,4/8/1998,Harper Voyager -41537,Joplin's Ghost,Tananarive Due,3.91,0743449045,9780743449045,eng,496,738,72,9/19/2006,Washington Square Press -41538,The Living Blood (African Immortals #2),Tananarive Due,4.34,0671040847,9780671040840,en-US,515,1862,124,1/1/2002,Washington Square Press -41539,The Good House,Tananarive Due,3.94,0743296168,9780743296168,eng,597,2679,365,12/1/2006,Simon & Schuster -41541,The Prestige,Christopher Priest,3.89,0765356171,9780765356178,eng,368,441,58,10/3/2006,Tor Books -41544,The Mammoth Book of Storms Shipwrecks and Sea Disasters,Richard Russell Lawrence,3.57,0786714689,9780786714681,eng,512,11,3,10/4/2004,Running Press -41551,The Stones of Summer,Dow Mossman,3.15,1585675172,9781585675173,eng,586,421,110,2/24/2004,Overlook Press -41555,The Summer House,Jean Stone,3.89,0553580833,9780553580839,eng,352,128,6,4/4/2000,Bantam -41559,Peek-a-Boo! (Babyfaces),Roberta Grobel Intrater,3.69,0590058967,9780590058964,eng,12,111,11,10/1/1997,Cartwheel -41567,The Handmaid's Tale,Margaret Atwood,4.11,0771008740,9780771008740,eng,368,1185,89,9/19/2006,McClelland & Stewart -41573,The BFG: A Set of Plays,Roald Dahl/David Wood,4.26,0142407925,9780142407929,eng,128,518,48,2/1/2007,Puffin Books -41576,Science Notebooks: Writing about Inquiry,Lori Fulton/Brian Campbell/Linda Gregg,3.64,0325005680,9780325005683,eng,112,55,6,7/2/2003,Heinemann Educational Books -41590,Interviews with John Kenneth Galbraith (Conversations with Public Intellectuals),John Kenneth Galbraith/James Ronald Stanfield/J. Ron Stanfield/Jacqueline Bloom Stanfield,4.50,1578066107,9781578066100,eng,247,2,0,2/20/2004,University Press of Mississippi -41592,The Economics of Innocent Fraud: Truth for Our Time,John Kenneth Galbraith,3.60,0618013245,9780618013241,en-US,62,225,28,4/26/2004,Houghton Mifflin Harcourt -41595,Robin Williams Web Design Workshop,Robin P. Williams/John Tollett/Dave Rohr,3.80,0201748673,9780201748673,eng,384,54,1,8/4/2001,Peachpit Press -41602,The Non-Designer's Web Book,Robin P. Williams/John Tollett,3.66,0321303377,9780321303370,en-US,335,212,19,9/26/2005,Peachpit Press -41611,Hard Drive: Bill Gates and the Making of the Microsoft Empire,James Wallace/Jim Erickson,4.11,0887306292,9780887306297,en-US,426,1234,41,3/26/1993,HarperCollins -41639,Bill Gates: Computer Legend (Famous Lives),Sara Barton-Wood,5.00,0739844326,9780739844328,eng,48,0,0,11/1/2001,Raintree -41648,Chicken Trek,Stephen Manes,4.39,0553157167,9780553157161,eng,128,96,8,7/1/1989,Bantam Skylark -41649,Make Four Million Dollars by Next Thursday!,Stephen Manes/George Ulrich,3.68,0440413702,9780440413707,eng,87,79,12,7/8/1996,Yearling Books -41651,Slim Down Camp,Stephen Manes,3.90,0553233505,9780553233506,eng,176,9,2,12/1/1986,Bantam Books -41652,The Boy Who Turned Into a TV Set,Stephen Manes/Michael Bass,4.00,0380620006,9780380620005,eng,10,8,3,2/1/1984,Avon Books -41654,Masters of Enterprise: Giants of American Business from John Jacob Astor and J.P. Morgan to Bill Gates and Oprah Winfrey,H.W. Brands,4.00,0684854732,9780684854731,eng,368,101,10,6/7/1999,Free Press -41658,The Devil in the Junior League,Linda Francis Lee,3.62,0312354959,9780312354954,eng,336,3852,531,8/22/2006,St. Martin's Press -41659,Prom Anonymous,Blake Nelson,3.42,0142407453,9780142407455,eng,262,462,59,2/15/2007,Speak -41661,The New Rules of High School,Blake Nelson,3.54,0142402427,9780142402429,en-US,224,46,2,9/9/2004,Speak -41662,Cool Girl,Blake Nelson/Hans Schumacher,3.76,3407788193,9783407788191,ger,298,8,1,12/1/2000,Beltz und Gelberg -41663,They Came from Below,Blake Nelson,3.66,0765314231,9780765314239,eng,299,189,42,6/26/2007,Tor Books -41664,User,Blake Nelson,3.37,0970481713,9780970481719,eng,255,81,8,7/15/2003,Versus Press -41665,Exile,Blake Nelson/Francine Kass,3.15,0684838389,9780684838380,en-US,288,159,14,6/11/1997,Scribner -41666,Girl (Girl #1),Blake Nelson,3.76,0671897071,9780671897079,en-US,252,2001,198,9/13/1994,Touchstone Books -41667,My Side of the Mountain (Mountain #1),Jean Craighead George,4.06,0142401110,9780142401118,eng,192,55045,2605,4/12/2004,Puffin Books -41675,The Theban Plays: Oedipus Rex Oedipus at Colonus & Antigone,Sophocles/George Young,3.97,048645049X,9780486450490,eng,176,182,14,6/23/2006,Dover Publications -41681,The Jungle,Upton Sinclair/Earl Lee/Kathleen DeGrave,3.74,1884365302,9781884365300,eng,335,110423,4133,4/1/2003,See Sharp Press -41684,The Jungle Books,Rudyard Kipling/Alev Lytle Croutier,4.02,0451529758,9780451529756,eng,368,78036,692,5/3/2005,Signet Classics -41688,Human Croquet,Kate Atkinson,3.72,0312186886,9780312186883,eng,352,6917,548,11/12/1999,Picador -41689,The Key to Rebecca,Ken Follett/Arto Häilä,3.89,0451207793,9780451207791,eng,352,19339,615,2/4/2003,NAL -41691,Paper Money,Ken Follett,3.32,0330345044,9780330345040,eng,286,102,17,3/1/1996,MacMillan General Books -41693,Skeleton Coast (Oregon Files #4),Clive Cussler/Jack Du Brul,4.12,0425211894,9780425211892,eng,373,7591,210,10/3/2006,Berkley -41694,Dragon (Dirk Pitt #10),Clive Cussler,3.92,1416537805,9781416537809,en-US,602,11450,230,10/31/2006,Pocket Books -41695,Dark Watch (Oregon Files #3),Clive Cussler/Jack Du Brul,4.10,0425205592,9780425205594,eng,357,5956,185,10/31/2005,Berkley -41696,Black Wind (Dirk Pitt #18),Clive Cussler/Dirk Cussler,3.86,0425204235,9780425204238,eng,639,10113,304,6/6/2006,G.P. Putnam's Sons -41697,Cyclops (Dirk Pitt #8),Clive Cussler,3.87,0671704648,9780671704643,eng,473,11750,216,12/1/1986,Pocket Books -41698,Deep Six (Dirk Pitt #7),Clive Cussler,3.90,1416516859,9781416516859,en-US,535,14501,241,1/1/2006,Pocket Books -41699,Polar Shift (NUMA Files #6),Clive Cussler/Paul Kemprecos,3.91,0141017724,9780141017723,eng,504,7121,185,8/30/2005,Putnam -41700,Vixen 03 (Dirk Pitt #5),Clive Cussler,3.84,055358944X,9780553589443,eng,384,10238,199,7/25/2006,Bantam -41701,The Mediterranean Caper (Dirk Pitt #2),Clive Cussler,3.78,0425197395,9780425197394,eng,391,15305,494,4/6/2004,G.P. Putnam's Sons -41702,The Navigator (NUMA Files #7),Clive Cussler/Paul Kemprecos,3.94,0399154191,9780399154195,en-US,437,6152,248,6/5/2007,Putnam Publishing Group -41703,Golden Buddha (Oregon Files #1),Clive Cussler/Craig Dirgo,3.90,0141010312,9780141010311,eng,527,9171,309,3/24/2005,Penguin Books -41704,Shock Wave (Dirk Pitt #13),Clive Cussler,4.02,0743449673,9780743449670,eng,537,14019,260,1/1/1996,Downtown Press -41706,Raise the Titanic! (Dirk Pitt #4),Clive Cussler,3.98,0425194523,9780425194522,eng,545,21489,636,2/3/2004,G.P. Putnam's Sons -41707,Atlantis Found (Dirk Pitt #15),Clive Cussler,3.99,0425204030,9780425204030,eng,530,21436,584,10/26/2004,Berkley Trade -41708,Muerte Blanca,Clive Cussler/Paul Kemprecos,3.91,030734326X,9780307343260,spa,421,2,0,9/6/2005,Debolsillo -41710,Iceberg (Dirk Pitt #3),Clive Cussler,3.85,0425197387,9780425197387,eng,340,18244,381,3/2/2004,Berkley Books -41711,Fire Ice (NUMA Files #3),Clive Cussler/Paul Kemprecos,3.92,0399148728,9780399148729,en-US,434,186,7,6/3/2002,Putnam Adult -41712,Lost City (NUMA Files #5),Clive Cussler/Paul Kemprecos,3.90,0425204197,9780425204191,en-US,515,227,17,7/26/2005,G.P. Putnam's Sons -41713,The Sea Hunters II (The Sea Hunters #2),Clive Cussler/Craig Dirgo,3.85,0425193721,9780425193723,en-US,464,1311,37,12/30/2003,G.P. Putnam's Sons -41714,The Sea Hunters (The Sea Hunters #1),Clive Cussler/Craig Dirgo,3.82,0743480694,9780743480697,en-US,432,2004,58,9/1/2003,Pocket Star -41715,La Ciudad Perdida (NUMA Files #5),Clive Cussler/Paul Kemprecos,3.90,0307376648,9780307376640,spa,432,2,0,11/7/2006,Debolsillo -41716,Sahara (Dirk Pitt #11),Clive Cussler,3.96,030720961X,9780307209610,spa,400,51807,724,1/11/2005,Debolsillo -41717,Clive Cussler and Dirk Pitt Revealed,Clive Cussler/Craig Dirgo,3.88,0671026224,9780671026226,eng,544,2066,35,10/1/1998,Pocket Books -41719,Cliffs Notes on Billy Budd & Typee,Mary Ellen Snodgrass,3.50,0764539507,9780764539503,eng,80,3,0,1/24/2003,Cliffs Notes -41735,Billy Budd Sailor,Herman Melville,3.12,014062175X,9780140621754,eng,96,178,20,10/24/1995,Penguin Books Ltd -41740,Billy Budd Sailor,Herman Melville,3.12,1417647116,9781417647118,eng,127,29,0,3/1/1999,Turtleback Books -41760,Billy Budd Sailor and Other Uncompleted Writings: The Writings of Herman Melville Volume 13,Herman Melville/Hershel Parker/G. Thomas Tanselle/Harrison Hayford/Robert Sandberg/Alma MacDougall Reising,3.11,0810111144,9780810111141,eng,1016,0,0,9/15/2017,Northwestern Univ Press -41773,Billy Budd marin,Herman Melville,3.12,2070709043,9782070709045,fre,182,9,0,5/14/1987,Gallimard -41780,The Elections of 2004,Michael Nelson,4.00,1568028342,9781568028347,eng,213,7,0,3/15/2005,CQ Press -41781,Love Sick: A Smoldering Look at Love Lust and Marriage,Michael J. Nelson/Charles S. Anderson Design Company/Pop Ink,3.76,0810957906,9780810957909,eng,176,71,8,9/1/2005,Harry N. Abrams -41782,Goth-Icky: A Macabre Menagerie of Morbid Monstrosities,Michael J. Nelson/Charles S. Anderson Design Company/Pop Ink,3.65,0810957892,9780810957893,eng,176,147,11,9/1/2005,Harry N. Abrams -41783,Fluffy Humpy Poopy Puppy: A Ruff Dog-Eared Look at Man's Best Friend,Michael J. Nelson/Pop Ink/Charles S. Anderson Design Company,4.00,0810970570,9780810970571,eng,176,56,7,9/1/2006,Harry N. Abrams -41784,Mike Nelson's Death Rat!,Michael J. Nelson,3.66,0060934727,9780060934729,eng,336,450,44,4/15/2003,Dey Street Books -41786,Joel on Software,Joel Spolsky,4.11,1590593898,9781590593899,eng,384,2981,118,10/28/2004,Apress -41793,Hackers & Painters: Big Ideas from the Computer Age,Paul Graham/Allen Noren/Matt Hutchinson,4.05,0596006624,9780596006624,eng,272,6572,302,5/25/2004,O'Reilly Media -41804,I Robot (Robot #0.1),Isaac Asimov,4.19,0553803700,9780553803709,eng,224,238100,4196,6/1/2004,Spectra -41805,I Robot: The Illustrated Screenplay,Harlan Ellison,4.03,1596870419,9781596870413,eng,288,26,1,5/1/2004,iBooks -41810,The Robots of Dawn (Robot #3),Isaac Asimov,4.16,0553299492,9780553299496,eng,435,31186,866,3/1/1994,Spectra -41814,I. Asimov,Isaac Asimov,4.20,055356997X,9780553569971,eng,578,1729,97,1/1/1995,Bantam -41815,Asimov's New Guide to Science,Isaac Asimov,4.38,0140172130,9780140172133,eng,896,49,1,5/27/1993,Penguin -41820,Pebble in the Sky (Galactic Empire #3),Isaac Asimov,3.88,0553293427,9780553293425,eng,308,14022,452,12/1/1991,Bantam -41821,The Gods Themselves,Isaac Asimov,4.09,1857989341,9781857989342,eng,288,42770,1022,2/10/2000,Millenium -41822,The Stars Like Dust (Galactic Empire #1),Isaac Asimov,3.74,0553293435,9780553293432,eng,304,12547,424,12/1/1991,Spectra -41824,The Currents of Space (Galactic Empire #2),Isaac Asimov,3.83,4490249512,9780449015414,eng,192,37,3,1/1/1952,Fawcett crest -41832,Gold: The Final Science Fiction Collection,Isaac Asimov/Orson Scott Card,4.00,0060556528,9780060556525,eng,416,2476,85,10/21/2003,Harper Voyager -41834,Asimov's Guide to the Bible: The Old Testament,Isaac Asimov,4.07,0380010321,9780380010325,eng,677,237,20,11/1/1971,Avon Books (P) -41840,100 Great Fantasy Short Short Stories,Isaac Asimov/Terry Carr/Martin H. Greenberg/Janet Fox,3.91,0380699176,9780380699179,eng,395,204,19,8/1/1985,Avon -41851,Rock Star Superstar,Blake Nelson,3.61,0142405744,9780142405741,en-US,229,310,34,4/6/2006,Speak -41856,Writings and Selected Narratives of the Exploration and Settlement of Virginia,John Smith,3.39,1598530011,9781598530018,en-US,1327,28,3,3/22/2007,Library of America -41861,John Paul George & Ben,Lane Smith,4.21,0786848936,9780786848935,eng,40,3500,393,4/1/2006,Little Brown Books for Young Readers -41862,Evolution and the Theory of Games,John Maynard Smith,4.00,0521288843,9780521288842,eng,234,86,5,10/21/1982,Cambridge University Press -41863,The Origins of Life: From the Birth of Life to the Origin of Language,John Maynard Smith/Eörs Szathmáry,4.13,019286209X,9780192862099,eng,192,43,3,11/26/2000,Oxford University Press USA -41864,American Genesis: Captain John Smith and the Founding of Virginia,Alden T. Vaughan,3.43,0673393550,9780673393555,eng,224,23,2,8/17/2019,Pearson -41865,Twilight (Twilight #1),Stephenie Meyer,3.59,0316015849,9780316015844,eng,501,4597666,94265,9/6/2006,Little Brown and Company -41885,Sense and Sensibility,Jane Austen,4.07,1593081251,9781593081256,eng,325,1278,153,7/25/2004,Barnes & Noble -41887,Uncle Shelby's ABZ Book,Shel Silverstein,4.36,067121148X,9780671211486,eng,80,2550,222,9/9/1985,Gallery Books -41890,Who Wants a Cheap Rhinoceros?,Shel Silverstein,3.96,0689851138,9780689851131,eng,64,1907,124,8/1/2002,Simon Schuster Books for Young Readers -41899,Fantastic Beasts and Where to Find Them (Hogwarts Library),Newt Scamander/J.K. Rowling,3.99,0439321603,9780439321600,eng,128,259399,5513,6/1/2001,Arthur A. Levine Books -41900,J.K. Rowling - A Biography,Sean Smith,3.73,1843170175,9781843170174,eng,248,937,41,5/1/2003,Michael O'Mara Books -41903,Das Zauberer-Handbuch - Die Magische Welt der Joanne K. Rowling von A bis Z,Allan Zola Kronzek,4.04,3442451531,9783442451531,ger,304,39,1,11/1/2001,Goldmann -41907,Harry Potter und die Kammer des Schreckens (Harry Potter #2),J.K. Rowling,4.42,3551552096,9783551552099,ger,351,26,1,9/30/2000,Carlsen -41908,Harry Potter und der Gefangene von Askaban (Harry Potter #3),J.K. Rowling/Rufus Beck,4.56,3895849618,9783895849619,ger,13,313,8,8/31/2002,Dhv der Hörverlag -41909,Harry Potter ve Sırlar Odası (Harry Potter #2),J.K. Rowling/Sevin Okyay,4.42,3570211029,9783570211021,tur,403,1000,41,10/1/2001,Yapı Kredi Yayınları -41911,Harry Potter und der Gefangene von Askaban (Harry Potter #3),J.K. Rowling,4.56,355155210X,9783551552105,ger,448,30,2,4/1/2001,Carlsen -41918,There are No Children Here: The Story of Two Boys Growing Up in the Other America,Alex Kotlowitz,4.27,0385265565,9780385265560,eng,323,12092,837,1/5/1992,Anchor Books -41919,Infants Children and Adolescents (MyDevelopmentLab Series),Laura E. Berk,3.64,0205419283,9780205419289,en-US,784,19,2,9/10/2004,Allyn & Bacon -41926,Spring Music,Elvi Rhodes,4.05,0552146552,9780552146555,eng,464,37,5,8/19/1999,Corgi -41951,Scarlet Feather,Maeve Binchy,3.96,0451203771,9780451203779,eng,549,22812,791,3/1/2002,Signet -41952,The Lilac Bus,Maeve Binchy,3.62,0099498642,9780099498643,eng,196,9649,297,1/12/2007,Dell -41962,Light a Penny Candle,Maeve Binchy,3.91,009949857X,9780099498575,eng,832,14656,585,5/4/2006,Arrow -41967,Evening Class,Maeve Binchy,3.99,0752876821,9780752876825,en-GB,528,35964,855,6/30/2005,Orion Publishing Group -41977,Circle of Friends,Maeve Binchy/René Huigen/Frans Thomése,4.03,0099498596,9780099498599,eng,722,51839,1396,6/1/2006,Arrow -41979,Nos rêves de Castelbay,Maeve Binchy,3.80,2268031675,9782268031675,fre,434,1,0,3/29/1999,Editions du Rocher -41991,Les Saveurs de la vie,Maeve Binchy,3.96,2266129376,9782266129374,fre,893,6,1,6/19/2003,Pocket -41993,Kiss,Jill Mansell,3.68,0747268460,9780747268468,eng,512,1587,67,9/7/2000,Headline Review -41994,Solo,Jill Mansell,3.65,0747267456,9780747267454,eng,421,3362,127,9/2/2002,Headline Review -41996,Two's Company,Jill Mansell,3.61,0747267448,9780747267447,eng,448,1462,53,10/27/2003,Headline Review -41998,Open House,Jill Mansell,3.90,074726743X,9780747267430,en-US,448,2440,65,3/3/2003,Headline -41999,The Dream Kingdom (The Morland Dynasty #26),Cynthia Harrod-Eagles,4.34,0751533432,9780751533439,eng,640,195,7,11/1/2004,Little Brown Book Group -42001,Falling for You,Jill Mansell,3.80,0755304853,9780755304851,eng,448,4816,143,8/16/2004,Headline Review -42002,Millie's Fling,Jill Mansell,3.75,0747264864,9780747264866,en-GB,512,8052,463,8/16/2001,Headline Review -42003,Sheer Mischief,Jill Mansell,3.82,0747268479,9780747268475,eng,504,2555,102,8/2/2001,Headline Review -42007,Head Over Heels,Jill Mansell,3.72,0747257361,9780747257363,en-US,448,3286,128,6/10/1999,Headline Review -42010,Mixed Doubles,Jill Mansell,3.71,0747257353,9780747257356,en-GB,416,2087,82,7/2/1998,Headline Review -42012,Méli-mélo,Jill Mansell,3.71,2290327506,9782290327500,fre,381,5,0,10/31/2002,J'ai Lu -42018,Seven Sunny Days,Chris Manby,3.35,0373895208,9780373895205,eng,352,588,30,4/26/2005,Red Dress Ink -42020,Girl Meets Ape,Chris Manby,3.46,0340828064,9780340828069,eng,406,553,20,1/5/2004,Coronet -42029,Girls' Night In,Jessica Adams/Chris Manby/Fiona Walker,3.26,0006514855,9780006514855,en-GB,586,140,11,7/3/2000,HarperCollins -42036,Tales from Shakespeare,Charles Lamb/Mary Lamb/Arthur Rackham,3.96,0140621598,9780140621594,eng,288,3097,154,10/26/2007,Penguin Books -42038,Shakespeare's Sonnets,William Shakespeare/Katherine Duncan-Jones,4.25,1903436575,9781903436578,eng,488,70617,614,8/21/1997,Bloomsbury Academic -42040,Love Poems and Sonnets,William Shakespeare,4.34,0385017332,9780385017336,eng,160,5808,64,9/3/1957,Doubleday Books -42041,Shakespeare A to Z: The Essential Reference to His Plays His Poems His Life and Times and More,Charles Boyce/David Allen White,4.35,0385313616,9780385313612,eng,752,153,6,11/10/1991,Delta -42045,The Sonnets,William Shakespeare/Stephen Orgel/John Hollander,4.25,0140714537,9780140714531,eng,164,349,19,12/1/2001,Penguin Classics -42048,Shakespeare's Secret,Elise Broach,3.88,0805073876,9780805073874,eng,256,7373,645,5/1/2005,Henry Holt & Company -42051,The Complete Sonnets and Poems,William Shakespeare/Colin Burrow,4.34,019281933X,9780192819338,eng,624,5487,43,7/18/2002,Oxford University Press -42054,The Arden Shakespeare Complete Works,William Shakespeare/Richard Proudfoot/Ann Thompson/David Scott Kastan/Harold Jenkins,4.50,1903436613,9781903436615,eng,1347,122,7,7/5/2001,Arden Shakespeare -42055,Reduced Shakespeare: The Attention-impaired Readers Guide to the World's Best Playwright,Reed Martin/Austin Tichenor,4.13,1401302203,9781401302207,en-US,256,281,53,7/11/2006,Hachette Books -42056,The Cat Who Knew Shakespeare (Cat Who... #7),Lilian Jackson Braun,3.92,0747250383,9780747250388,eng,208,6876,206,11/7/1996,Headline -42057,The Shakespeare Stealer (Shakespeare Stealer #1),Gary L. Blackwood,3.68,0141305959,9780141305950,eng,224,5582,451,7/1/2000,Puffin Books -42060,Richard III,William Shakespeare/Barbara A. Mowat/Paul Werstine,3.93,0743482840,9780743482844,eng,369,1945,191,7/1/2004,Simon Schuster -42068,King Henry VI Part 3,William Shakespeare/John D. Cox/Eric Rasmussen,3.76,1903436311,9781903436318,eng,460,3138,186,11/1/2001,Bloomsbury Arden Shakespeare -42070,The Age Of Shakespeare,Frank Kermode,3.68,0753819953,9780753819951,eng,208,20,2,7/7/2005,Phoenix -42078,Ukraine,Sarah Johnstone,3.91,186450336X,9781864503364,eng,216,27,5,7/1/2005,Lonely Planet -42099,Jimi Hendrix: The Complete Guide to His Music (Complete Guide to the Music of...),Peter Doggett,4.00,1844494241,9781844494248,eng,96,4,1,12/1/2004,Omnibus Press -42140,Outside the Dog Museum (Answered Prayers #4),Jonathan Carroll,3.97,0765311852,9780765311856,eng,267,1406,97,6/1/2005,Orb Books -42141,Glass Soup (Vincent Ettrich #2),Jonathan Carroll,3.88,0765311801,9780765311801,eng,320,1153,62,11/28/2006,Tor Books -42143,The Land of Laughs,Jonathan Carroll,3.90,0312873115,9780312873110,eng,253,4337,352,2/10/2001,Orb Books -42145,Sleeping in Flame (Answered Prayers #2),Jonathan Carroll/Dave McKean,4.05,0765311860,9780765311863,en-US,304,1543,76,10/1/2004,Orb Books -42146,Bones of the Moon (Answered Prayers #1),Jonathan Carroll,3.89,0312873123,9780312873127,eng,224,2046,116,5/3/2002,Orb Books -42148,Kissing the Beehive (Crane's View #1),Jonathan Carroll,3.70,0575402911,9780575402911,eng,256,808,40,8/10/2000,Orion -42149,Baby Proof,Emily Giffin,3.72,0312348649,9780312348649,eng,340,140762,3096,6/13/2006,St. Martin's Press -42155,Something Blue (Darcy & Rachel #2),Emily Giffin,3.93,0312323867,9780312323868,en-US,338,191577,6599,3/21/2006,Griffin -42156,Something Borrowed (Darcy & Rachel #1),Emily Giffin,3.85,031232118X,9780312321185,eng,322,454917,7487,6/1/2004,St. Martin's Press -42157,P.S. Longer Letter Later (Elizabeth and Tara*Starr #1),Paula Danziger/Ann M. Martin,3.78,0590213113,9780590213110,eng,234,2699,242,5/1/1999,Scholastic Paperbacks -42158,P.S. Your Cat Is Dead,James Kirkwood Jr.,3.75,0312321201,9780312321208,eng,218,1334,141,11/15/2003,St. Martin's Griffin -42162,P.S. I Love You Three!,Lynda Milligan/Nancy J. Smith,4.14,1880972476,9781880972472,eng,79,7,0,12/1/2002,Possibilities -42172,The Christmas Shoes (Christmas Hope #1),Donna VanLiere,4.23,0312289510,9780312289515,eng,132,32701,967,11/9/2001,St. Martin's Press -42177,Burning The Map,Laura Caldwell,3.54,0373250215,9780373250219,en-US,288,1336,66,10/25/2002,Red Dress Ink -42180,iMovie 4 & iDVD: The Missing Manual: The Missing Manual,David Pogue,3.25,0596006934,9780596006938,eng,496,4,0,8/23/2004,Pogue Press -42198,The Icarus Agenda,Robert Ludlum,3.96,0752858505,9780752858500,eng,836,37,3,7/1/2004,Orion Books -42210,Life Is a Dream,Pedro Calderón de la Barca,3.98,0486421244,9780486421247,eng,96,346,27,7/1/2002,Dover Publications -42211,Life Is a Dream and Other Spanish Classics (Eric Bentley's Dramatic Repertoire) - Volume II,Pedro Calderón de la Barca/Miguel de Cervantes Saavedra/Lope de Vega/Tirso de Molina/Roy Campbell/Eric Bentley,3.81,1557830061,0073999140774,eng,298,61,4,4/1/2000,Applause Theatre & Cinema Book Publishers -42212,Life Is A Dream = La Vida Es Sueño,Pedro Calderón de la Barca/Stanley Appelbaum,3.98,0486424731,9780486424736,eng,208,56,2,12/6/2002,Dover Publications -42213,Life Is a Dream,Pedro Calderón de la Barca/Gregary Racz,3.98,0143104829,9780143104827,eng,160,168,11,12/26/2006,Penguin Classics -42261,Stylepedia: A Guide to Graphic Design Mannerisms Quirks and Conceits,Steven Heller/Louise Fili,4.06,0811833461,9780811833462,eng,336,170,9,11/9/2006,Chronicle Books -42278,I Can Fly,Ruth Krauss/Mary Blair,4.24,0307001466,9780307001467,eng,24,1069,70,9/9/2003,Golden Books -42300,A Whole Lotta Love,Donna Hill/Francis Ray/Brenda Jackson/Monica Jackson,4.46,0451210905,9780451210906,eng,384,662,7,1/6/2004,Signet -42308,The Best of Pippi Longstocking (Pippi Longstocking #1-3),Astrid Lindgren/Tony Ross,4.25,0192753371,9780192753373,en-GB,378,217,16,10/9/2003,Oxford University Press -42311,Astrid Lindgren: Storyteller to the World,Johanna Hurwitz/Michael Dooling,3.69,0140326928,9780140326925,eng,64,10,2,11/1/1991,Puffin -42323,Astrid Lindgren,Eva-Maria Metcalf,3.78,0805745254,9780805745252,eng,157,7,2,11/1/1994,Twayne Publishers -42337,The Moffats (The Moffats #1),Eleanor Estes/Louis Slobodkin,4.00,0152025413,9780152025410,eng,212,9334,302,4/1/2001,Oddysey/Harcourt Young Classics -42341,Arthur and the Lost Kingdoms,Alistair Moffat,3.70,0753810743,9780753810743,eng,282,59,14,12/31/1999,Orion Publishing Group -42355,God's Generals Why They Succeeded and Why Some Fail,Roberts Liardon,4.45,0883689448,9780883689448,eng,416,1481,67,11/1/2000,Whitaker House -42357,The Alley (The Alley #1),Eleanor Estes/Edward Ardizzone,3.76,0152049185,9780152049188,eng,288,320,20,8/1/2003,HMH Books for Young Readers -42359,Pinky Pye (The Pyes #2),Eleanor Estes/Edward Ardizzone,3.86,0152025650,9780152025656,eng,192,1578,102,9/1/2000,HMH Books for Young Readers -42366,The Witch Family,Eleanor Estes/Edward Ardizzone,4.07,015202610X,9780152026103,eng,240,2550,98,9/1/2000,HMH Books for Young Readers -42369,The Hundred Dresses,Eleanor Estes/Louis Slobodkin,4.09,0152052607,9780152052607,eng,80,30311,2306,9/1/2004,HMH Books for Young Readers -42376,Theater Shoes,Noel Streatfeild/Diane Goode,4.02,0613013379,9780613013376,en-US,252,85,11,11/1/1999,Sagebrush -42377,Gemma Alone (Gemma #3),Noel Streatfeild,3.61,0440428653,9780440428657,eng,150,175,7,2/1/1987,Yearling -42380,When the Siren Wailed,Noel Streatfeild/Judith Gwyn Brown,3.72,0394931475,9780394931470,en-US,157,16,3,10/1/1977,Lions -42382,The Caine Mutiny Court-Martial,Herman Wouk,4.12,0385514417,9780385514415,eng,120,281,10,4/20/1954,Doubleday Books -42389,Band of Brothers: E Company 506th Regiment 101st Airborne from Normandy to Hitler's Eagle's Nest,Stephen E. Ambrose,4.43,0743464117,9780743464116,eng,432,82525,2124,9/1/2002,Simon & Schuster; Media Tie-In edition -42390,Midnight Riders: The Story of the Allman Brothers Band,Scott Freeman,3.97,0316294527,9780316294522,eng,343,278,16,7/1/1996,Little Brown and Company -42408,Babar's World Tour,Laurent de Brunhoff,3.82,0810957809,9780810957800,en-US,48,69,12,9/1/2005,Harry N. Abrams -42410,The Easter Rabbit's Parade,Lois Lenski,3.00,037582748X,9780375827488,eng,40,29,7,1/27/2004,Random House Books for Young Readers -42415,The Little Fire Engine,Lois Lenski,3.56,0375810706,9780375810701,eng,56,209,27,10/24/2000,Random House Books for Young Readers -42417,Right Stuff Wrong Sex: America's First Women in Space Program,Margaret A. Weitekamp,3.82,0801883946,9780801883941,eng,256,36,9,10/26/2005,Johns Hopkins University Press -42424,The Right Stuff (To Protect and Defend #3),Merline Lovelace,3.61,0373273495,9780373273492,eng,256,40,3,2/23/2004,Silhouette Books -42425,For Whom the Bell Tolls,Ernest Hemingway,3.97,1117066037,9781117066035,eng,503,365,33,1/1/1940,P. F. Collier and Sons -42429,Cliffs Notes on Hemingway's The Sun Also Rises,Gary K. Carey,3.50,0822012375,9780822012375,eng,80,14,2,5/20/1964,Cliffs Notes -42430,Dune (Dune #1),Frank Herbert/Domingo Santos,4.22,849759682X,9788497596824,spa,702,565,93,10/30/2003,Debolsillo -42432,God Emperor of Dune (Dune Chronicles #4),Frank Herbert,3.84,0575075066,9780575075061,eng,454,51343,896,3/13/2003,Victor Gollancz -42434,Sandworms of Dune (Dune Chronicles #8),Brian Herbert/Kevin J. Anderson,3.64,076531293X,9780765312938,en-US,494,8486,273,8/7/2007,Tor Books -42435,In Harm's Way: The Sinking of the USS Indianapolis and the Extraordinary Story of Its Survivors,Doug Stanton,4.29,0805073663,9780805073669,eng,339,16684,892,5/1/2003,Owl Books -42438,Harm's Way,Elizabeth Stewart,3.36,1419950584,9781419950582,eng,261,13,5,5/27/2005,Ellora's Cave -42439,Harm's Way: Lust & Madness & Murder & Mayhem,Joel-Peter Witkin/Stanley B. Burns,4.54,0944092284,9780944092286,eng,132,58,3,10/1/1994,Twin Palms Publishers -42444,I Like Winter (Seasons #3),Lois Lenski/Heidi Kilgras,3.94,0375810684,9780375810688,eng,56,65,9,10/24/2000,Random House Books for Young Readers -42447,Strawberry Girl,Lois Lenski,3.87,0064405850,9780064405850,eng,208,11143,423,4/26/2005,HarperCollins -42485,Betsy-Tacy and Tib (Betsy-Tacy #2),Maud Hart Lovelace/Lois Lenski,4.17,006024416X,9780060244163,eng,128,83,16,11/9/1994,HarperCollins -42489,After Collapse: The Regeneration of Complex Societies,Glenn M. Schwartz,4.00,0816525099,9780816525096,eng,336,0,0,5/25/2006,University of Arizona Press -42501,Seize The Fire,Elda Minger,4.00,0373161174,9780373161171,eng,249,3,0,7/25/1985,Harlequin American Romance -42512,We Were Soldiers Once... and Young: Ia Drang - The Battle that Changed the War in Vietnam,Harold G. Moore/Joseph L. Galloway,4.31,034547581X,9780345475817,eng,480,21876,451,11/23/2004,Presidio Press -42513,We Were Soldiers Once ... and Young (Ia Drang - the Battle That Changed the War in Vietnam),Harold G. Moore/Joseph L. Galloway,4.31,0060506989,9780060506988,eng,535,166,24,2/5/2002,HarperTorch -42514,We were Soldiers Once... and young,Harold G. Moore/Joseph L. Galloway,4.31,0552150266,9780552150262,eng,528,153,10,3/1/2002,Corgi -42519,Eisenhower: Soldier and President,Stephen E. Ambrose,3.98,0671747584,9780671747589,eng,640,10718,126,10/15/1991,Simon Schuster -42525,Dwight D. Eisenhower (The American Presidents #34),Tom Wicker/Arthur M. Schlesinger Jr.,3.84,0805069070,9780805069075,en-US,176,248,30,11/5/2002,Times Books -42528,Crusade in Europe,Dwight D. Eisenhower,4.08,080185668X,9780801856686,eng,559,1212,63,6/6/1997,Johns Hopkins University Press -42529,Total Cold War: Eisenhower's Secret Propaganda Battle at Home and Abroad,Kenneth Osgood,3.85,0700614451,9780700614455,eng,506,18,1,2/23/2006,University Press of Kansas -42533,So Far from God: The U.S. War With Mexico 1846-1848,John S.D. Eisenhower,3.93,0806132795,9780806132792,eng,464,271,29,9/15/2000,University of Oklahoma Press -42536,Yanks: The Epic Story of the American Army in World War I,John S.D. Eisenhower/Joanne Thompson Eisenhower,3.72,0743223853,9780743223850,eng,368,110,15,6/4/2002,Free Press -42543,Eisenhower Volume #2: The President,Stephen E. Ambrose,4.20,0671605658,9780671605650,eng,749,95,13,10/1/1985,Touchstone Books -42547,The Autobiography of Martin Luther King Jr.,Martin Luther King Jr./Clayborne Carson,4.35,0446676500,9780446676502,eng,400,14025,547,1/1/2001,Grand Central Publishing -42558,Bull Halsey,E.B. Potter,4.16,1591146917,9781591146919,eng,440,56,6,4/21/2003,US Naval Institute Press -42573,The Water Babies,Charles Kingsley/W. Heath Robinson,3.42,1853261483,9781853261480,eng,224,6148,318,12/5/1994,Wordsworth Editions -42579,Water Water Everywhere: A Splash & Giggle Bath Book (Baby Einstein),Julie Aigner-Clark/Nadeem Zaidi,3.71,0786819111,9780786819119,eng,10,79,10,9/1/2003,Hyperion Books for Children -42589,Shoot the Piano Player,David Goodis,4.02,0679732543,9780679732549,eng,158,2768,143,10/3/1990,Vintage Crime/Black Lizard -42594,CliffsNotes on Shakespeare's Twelfth Night,James Lamar Roberts/CliffsNotes/William Shakespeare,4.16,0822000946,9780822000945,eng,64,11,2,9/20/1960,Cliffs Notes -42597,Twelfth Night: Or What You Will,William Shakespeare/Elizabeth Story Donno/Penny Gay,3.98,052153514X,9780521535144,eng,186,62,7,3/15/2004,Cambridge University Press -42602,How to Spell Like a Champ,Barrie Trinkle/Paige Kimble/Carolyn Andrews,4.17,0761143696,9780761143697,eng,192,46,7,11/16/2006,Workman Publishing Company -42603,Black Like Me,John Howard Griffin,4.13,0451208641,9780451208644,eng,208,53790,2118,5/6/2003,Berkley Books -42604,Men Are Like Waffles Women Are Like Spaghetti,Bill Farrel/Pam Farrel,3.88,0736904867,9780736904865,eng,253,952,117,1/1/2001,Harvest House Publishers -42606,As You Like It,William Shakespeare/Arkangel Cast/Victoria Hamilton/Niamh Cusack/Stephen Mangan,3.83,1932219048,9781932219043,en-US,2,28,6,9/6/2005,The Audio Partners -42607,As You Like It,William Shakespeare,3.83,074348486X,9780743484862,eng,263,62368,1291,8/23/2011,Simon Schuster -42609,As You Like It,William Shakespeare/Juliet Dusinberre,3.83,1904271227,9781904271222,eng,449,410,36,7/25/2006,Bloomsbury Arden Shakespeare -42612,As You Like It (No Fear Shakespeare),William Shakespeare/SparkNotes/John Crowther,3.83,1411401042,9781411401044,eng,256,265,36,6/22/2004,SparkNotes -42615,War of the Rats,David L. Robbins,4.11,055358135X,9780553581355,eng,512,1800,127,6/6/2000,Bantam -42622,Nimitz Class (Admiral Arnold Morgan #1),Patrick Robinson,3.92,0060564423,9780060564421,eng,495,5402,97,2/3/2004,Harper Paperbacks -42625,Nimitz Class (Admiral Arnold Morgan #1),Patrick Robinson,3.92,0061096849,9780061096846,eng,528,1,0,1/23/1998,HarperTorch -42631,Having a Mary Heart in a Martha World: Finding Intimacy with God in the Busyness of Life,Joanna Weaver,4.18,1578562589,9781578562589,eng,256,14711,442,7/18/2000,Waterbrook Press -42632,Thirst,Mary Oliver,4.36,0807068969,9780807068960,eng,88,3689,351,10/15/2006,Beacon Press -42634,The Gilded Web (Web #1),Mary Balogh,3.58,0440243068,9780440243069,eng,480,2621,169,11/28/2006,Dell -42641,Resurrection,Leo Tolstoy/Louise Maude/Aylmer Maude,4.13,0735102864,9780735102866,eng,562,11468,530,2/1/2000,Replica Books -42647,Cold Mountain,Charles Frazier,3.86,0871136791,9780871136794,eng,356,1088,127,5/16/1997,Atlantic Monthly Press (NYC) -42652,Red Road From Stalingrad: Recollections of a Soviet Infantryman,Mansur Abdulin/Artem Drabkin,4.10,184415145X,9781844151455,en-US,195,82,4,1/19/2005,Pen & Sword Military -42661,The Fall of Berlin 1945,Antony Beevor,4.29,0142002801,9780142002803,eng,490,10230,326,4/29/2003,Penguin Books -42662,Paris: After the Liberation 1944-1949,Antony Beevor/Artemis Cooper,3.83,0142437921,9780142437926,eng,464,542,48,8/31/2004,Penguin Books -42668,Demon Angel (The Guardians #1),Meljean Brook,3.53,0425213471,9780425213476,eng,432,2704,237,1/2/2008,Berkley Sensation -42682,Mariel Hemingway's Healthy Living from the Inside Out: Every Woman's Guide to Real Beauty Renewed Energy and a Radiant Life,Mariel Hemingway,3.89,0060890398,9780060890391,eng,288,175,22,12/26/2006,HarperOne -42688,Hemingway vs. Fitzgerald,Scott Donaldson,3.85,1585671266,9781585671267,eng,352,185,19,12/1/2001,Harry N. Abrams -42691,The Haj,Leon Uris,4.03,0553248642,9780553248647,eng,525,11372,396,5/1/1985,Bantam -42692,Mila 18,Leon Uris,4.29,0553241605,9780553241600,eng,563,21662,485,11/1/1983,Bantam -42693,A God in Ruins,Leon Uris,3.26,0061097934,9780061097935,eng,517,1208,104,9/5/2000,Avon -42694,Battle Cry,Leon Uris,4.15,006075186X,9780060751869,eng,694,8323,137,6/28/2005,Avon -42695,The Angry Hills,Leon Uris,3.67,0553277871,9780553277876,eng,245,1163,50,1/1/1984,Bantam -42697,Exodus,Leon Uris,4.34,0553258478,9780553258479,eng,608,85927,1520,10/1/1986,Bantam Books Inc. -42698,Oh Play That Thing,Roddy Doyle,3.29,014303605X,9780143036050,en-US,384,1545,105,10/25/2005,Penguin Books -42701,The Van (The Barrytown Trilogy #3),Roddy Doyle,3.94,0140260021,9780140260021,eng,320,5718,164,3/1/1997,Penguin Books -42706,Fish & Chips (The Barrytown Trilogie #3),Roddy Doyle/Renate Orth-Guttmann,3.94,3596153026,9783596153022,ger,314,2,0,10/1/2002,Fischer Taschenbuch Verlag -42714,The Giggler Treatment,Roddy Doyle/Brian Ajhar,4.17,0439993857,9780439993852,en-GB,112,1425,149,7/20/2001,Scholastic Inc. -42718,A Star Called Henry,Roddy Doyle,3.84,0099284480,9780099284482,eng,342,6885,438,9/7/2000,Vintage -42719,The Van,Roddy Doyle,3.94,043620052X,9780436200526,eng,312,30,4,8/4/1991,Secker and Warburg -42728,Rover rettet Weihnachten.,Roddy Doyle/Brian Ajhar,4.12,3570127214,9783570127216,ger,160,1,0,9/1/2002,Omnibus Hc Bei Bertelsmann -42738,The Snapper,Roddy Doyle,3.93,3596153034,9783596153039,ger,217,26,5,9/1/2002,Fischer TB -42741,Yeats Is Dead,Roddy Doyle/Frank McCourt/Conor McPherson/Gene Kerrigan/Gina Moxley/Marian Keyes/Pauline McLynn/Tom Humphries/Joseph O'Connor/Anthony Cronin/Owen O'Neill/Hugo Hamilton/Charlie O'Neill/Gerard Stembridge/Donal O'Kelly,3.40,0099422344,9780099422341,eng,298,34,4,6/6/2002,Vintage -42758,The Fantastic Vampire: Studies in the Children of the Night: Selected Essays from the Eighteenth International Conference on the Fantastic in the Arts,James Craig Holte,0.00,0313309337,9780313309335,eng,176,0,0,3/30/2002,Greenwood Press -42763,A Dracula Handbook,Elizabeth Russell Miller,4.07,1413480942,9781413480948,eng,200,10,1,3/23/2005,Xlibris Corporation -42772,Real Estate Loopholes: Secrets of Successful Real Estate Investing,Diane Kennedy/Garrett Sutton/Robert T. Kiyosaki,4.15,0446691356,9780446691352,eng,240,721,9,12/31/2003,Warner Books (NY) -42777,Hope is the Thing with Feathers: A Personal Chronicle of Vanished Birds,Christopher Cokinos,4.22,0446677493,9780446677493,eng,384,308,33,4/1/2001,Warner Books (NY) -42797,Goodbye Forever (Sweet Dreams #72),Barbara Conklin,3.76,055324356X,9780553243567,eng,135,56,0,12/31/1984,Bantam Books -42798,Winter Dreams (Sweet Dreams #141),Barbara Conklin,3.85,0553270621,9780553270624,eng,176,104,4,2/1/1988,Bantam Books -42802,First Last and Always (Sweet Dreams #96),Barbara Conklin,3.76,0553251791,9780553251791,eng,160,65,2,9/1/1985,Bantam Books -42808,P.S. I Love You (Sealed with a Kiss #4),Valerie Parv,2.83,0373033664,9780373033669,eng,192,23,1,4/24/1995,Harlequin Romance -42811,PS I Love You Baby Collection,Lynda Milligan/Nancy J. Smith,4.43,0962247723,9780962247729,en-US,79,7,0,12/31/1990,Possibilities -42818,Tales from Margaritaville,Jimmy Buffett,3.90,0156026988,9780156026987,en-US,230,2450,175,6/3/1989,Fawcett -42819,A Pirate Looks at Fifty,Jimmy Buffett/Leona Nevler,3.83,0449005860,9780449005866,eng,420,3036,216,11/28/1999,Fawcett -42831,The Parrot-Head Companion: An Insider's Guide to Jimmy Buffett,Thomas Ryan,2.83,0806520159,9780806520155,eng,176,6,0,1/1/1998,Citadel Press -42849,The Dog Who Loved Too Much: Tales Treatments and the Psychology of Dogs,Nicholas Dodman,4.08,0553375261,9780553375268,eng,258,691,35,3/3/1997,Bantam -42854,Barack Obama: Working to Make a Difference,Marlene Targ Brill/Lerner Publishing Group,3.96,0822560569,9780822560562,en-US,48,19,5,4/1/2006,Lerner Publications -42855,Great Speeches by African Americans: Frederick Douglass Sojourner Truth Dr. Martin Luther King Jr. Barack Obama and Others,James Daley/Barack Obama/Martin Luther King Jr.,4.30,0486447618,9780486447612,eng,160,230,21,4/28/2006,Dover Publications -42862,The Heart of a Leader,Kenneth H. Blanchard,3.96,1562924885,9781562924881,en-US,162,542,33,6/1/1999,David C. Cook -42863,Mission Possible,Kenneth H. Blanchard,3.44,0071348271,9780071348270,eng,242,0,0,4/30/1999,McGraw-Hill Companies -42864,Lead Like Jesus: Lessons from the Greatest Leadership Role Model of All Time,Kenneth H. Blanchard/Phil Hodges,4.04,0849918723,9780849918728,en-US,239,808,41,3/1/2007,W Publishing Group -42866,The Little Book of Coaching: Motivating People to Be Winners,Kenneth H. Blanchard/Don Shula,3.65,0066621038,9780066621036,en-US,128,73,12,1/23/2001,Harper Business -42867,Full Steam Ahead!: Unleash the Power of Vision in Your Work and Your Life,Kenneth H. Blanchard/Jesse Stoner,3.76,1576753069,9781576753064,en-US,192,156,15,10/1/2004,Berrett-Koehler Publishers -42869,The Servant Leader,Kenneth H. Blanchard,4.09,0849996597,0023755004321,eng,128,276,26,3/11/2003,Thomas Nelson -42876,Down Under,Bill Bryson,4.07,055299703X,9780552997034,eng,398,4510,392,8/6/2001,Black Swan -42878,A Walk in the Woods: Rediscovering America on the Appalachian Trail,Bill Bryson,4.06,0767902513,9780767902519,eng,276,1405,266,5/4/1998,Bantam Doubleday Dell Publishing Group -42880,Bizarre World,Bill Bryson/Kathryn Lamb,3.38,0751510610,9780751510614,eng,120,73,6,5/1/2001,Little Brown Book Group -42882,The Life and Times of the Thunderbolt Kid: A Memoir,Bill Bryson,3.94,0767919378,9780767919371,en-US,268,1329,250,9/25/2007,Broadway Books -42883,Bill Bryson: The Complete Notes,Bill Bryson,4.09,038560131X,9780385601313,eng,544,901,36,10/5/2000,Doubleday -42885,Motel Blues,Bill Bryson/David B. Ellis,3.83,2228897353,9782228897358,fre,399,17,3,4/15/2003,Payot -42891,Journeys in English,Bill Bryson,3.72,0563496266,9780563496267,eng,3,510,60,2/2/2004,BBC Physical Audio -42895,Una breve historia de casi todo,Bill Bryson/José Manuel Álvarez,4.21,8478713808,9788478713806,spa,567,713,68,4/30/2006,Rba Libros -42898,Lover Revealed (Black Dagger Brotherhood #4),J.R. Ward,4.30,0451412354,9780451412355,eng,480,106469,3691,3/6/2007,Onyx -42899,Dark Lover (Black Dagger Brotherhood #1),J.R. Ward,4.20,0451216954,9780451216953,eng,393,259511,10475,9/6/2005,Penguin Group (USA) -42900,Lover Awakened (Black Dagger Brotherhood #3),J.R. Ward,4.45,0451219368,9780451219367,eng,448,144906,5728,9/5/2006,Signet -42909,All Things Wise and Wonderful,James Herriot,4.41,0312335288,9780312335281,eng,448,22780,366,11/1/2004,St. Martin's Griffin -42915,CliffsNotes on Remarque's All Quiet on the Western Front,Susan Van Kirk/CliffsNotes/Erich Maria Remarque,4.24,0764586718,9780764586712,eng,112,12,0,12/20/2000,Cliffs Notes -42916,All Quiet on the Western Front,Erich Maria Remarque,3.97,0449231801,9780449231807,en-GB,256,64,4,3/12/1987,Fawcett Crest -42924,The Nightingale's Song,Kathleen Eschenburg,3.88,0380815699,9780380815692,eng,384,16,3,10/30/2001,HarperTorch -42926,Nightingale's Song,Kate Pennington,3.02,0340878754,9780340878750,en-GB,219,40,5,10/19/2006,Hachette Children's -42929,Gai-Jin (Asian Saga #3),James Clavell,3.86,044021680X,9780440216803,eng,1236,10757,296,4/3/1994,Dell -42932,Whirlwind (Asian Saga #6),James Clavell,3.82,0340766182,9780340766187,eng,1231,5626,164,12/2/1999,Morrow -42933,Tai-Pan (Asian Saga #2),James Clavell,4.27,0440184622,9780440184621,eng,734,39315,778,9/1/2009,Dell -42934,Escape: The Love Story from Whirlwind,James Clavell,3.63,0340654163,9780340654163,eng,584,276,14,7/1/1999,Hodder & Stoughton -42953,Alaska,James A. Michener,4.12,037576142X,9780375761423,eng,868,9330,590,11/12/2002,Dial Press Trade Paperback -42955,The Drifters,James A. Michener,4.04,0449213536,9780449213537,eng,768,6253,353,10/12/1986,Fawcett Books -42956,Sayonara,James A. Michener,3.81,0449204146,9780449204146,eng,208,1848,104,9/12/1983,Fawcett -42959,The Bridge at Andau,James A. Michener,3.94,0449210502,9780449210505,en-US,288,1135,158,9/12/1985,Fawcett -42960,Caribbean,James A. Michener,3.93,0812974921,9780812974928,eng,672,4718,232,12/13/2005,Dial Press -42986,War and Remembrance (The Henry Family #2),Herman Wouk,4.41,0316954993,9780316954990,eng,1042,29555,680,2/5/2002,Back Bay Books -42988,Don't Stop the Carnival,Herman Wouk,3.93,0316955124,9780316955126,eng,416,2700,298,5/15/1992,Back Bay Books -42989,The Hope (The Hope and the Glory #1),Herman Wouk,4.15,0316954411,9780316954419,eng,704,2336,141,6/3/2002,Back Bay Books -42990,Youngblood Hawke,Herman Wouk,4.04,0316955175,9780316955171,en-US,783,1248,68,5/15/1992,Back Bay Books -42993,Aurora Dawn,Herman Wouk,3.47,0316955094,9780316955096,en-US,288,213,20,4/15/1992,Back Bay Books -43010,The Curious Incident of the Dog in the Night-Time,Mark Haddon,3.88,1419317261,9781419317262,eng,6,614,119,12/1/2006,Recorded Books -43015,A Long Way Gone: Memoirs of a Boy Soldier,Ishmael Beah,4.16,0374105235,9780374105235,eng,229,147820,9547,2/13/2007,Sarah Crichton Books -43017,Yellow Back Radio Broke-Down,Ishmael Reed,3.83,1564782387,9781564782380,eng,177,496,38,5/1/2000,Dalkey Archive Press -43027,Anthem,Ayn Rand,3.63,0452286352,9780452286351,eng,256,470,67,12/28/2004,NAL -43028,Sorrow's Anthem (Lincoln Perry #2),Michael Koryta,3.89,0312936605,9780312936600,eng,330,62,7,1/2/2007,St. Martin's Paperbacks -43035,White Fang,Jack London,3.98,0439236193,9780439236195,eng,252,119589,3124,1/1/2001,Scholastic Paperbacks -43037,The Call of the Wild White Fang and Other Stories,Jack London,3.99,0192835149,9780192835147,eng,400,18720,192,8/20/1998,Oxford University Press USA -43039,White Fang,Kathleen Olmstead/Jack London/Dan Andreasen/Arthur Pober,4.24,1402725000,9781402725005,en-US,160,713,31,3/28/2006,Sterling -43044,The Sea-Wolf and Selected Stories,Jack London/Ben Bova,4.06,0451529367,9780451529367,eng,352,781,40,5/4/2004,Signet Classics -43045,The Death of an Irish Sea Wolf (Peter McGarr #12),Bartholomew Gill,3.74,0380725789,9780380725786,eng,304,135,12,10/1/1997,Avon -43046,Jack London Illustrated: The Call of the Wild/White Fang/The Sea-Wolf/40 Short Stories,Jack London,4.26,0517309807,9780517309803,eng,761,20,1,10/2/1993,Random House Value Publishing -43049,The Sea Wolf,Jack London,4.04,1598184318,9781598184310,eng,425,19091,851,6/1/2005,Alan Rodgers Books -43051,Kilo Class (Admiral Arnold Morgan #2),Patrick Robinson,4.05,0061096857,9780061096853,eng,512,1738,58,3/3/1999,HarperPaperbacks -43058,Barracuda 945 (Admiral Arnold Morgan #6),Patrick Robinson,3.97,0060086637,9780060086633,eng,498,1119,27,6/29/2004,HarperTorch -43059,H.M.S. Unseen (Admiral Arnold Morgan #3),Patrick Robinson/Sandler/David McCallum,4.01,0061098019,9780061098017,eng,544,2076,38,3/1/2000,HarperTorch -43060,Slider,Patrick Robinson,4.13,006058033X,9780060580339,en-US,416,66,7,4/27/2004,It Books -43061,U.S.S. Seawolf (Admiral Arnold Morgan #4),Patrick Robinson,3.96,0061030651,9780061030659,eng,496,1581,46,5/1/2001,HarperTorch -43063,Menace Invisible (Admiral Arnold Morgan #3),Patrick Robinson,4.01,2226114971,9782226114976,fre,384,3,0,3/1/2000,Albin Michel -43068,True Blue: The Oxford Boat Race Mutiny,Daniel Topolski/Patrick Robinson,4.24,0553400037,9780553400038,en-US,320,69,13,2/23/1990,Bantam -43072,A Picture Book of Anne Frank,David A. Adler/Karen Ritz,4.18,0823410781,9780823410781,en-US,32,217,70,1/1/1993,Holiday House -43073,Who Was Anne Frank?,Ann Abramson/Nancy Harrison,4.26,0448444828,9780448444826,eng,103,1953,293,1/18/2007,Penguin Workshop -43074,Enslaved by Ducks,Bob Tarte,3.44,1565124502,9781565124509,eng,308,2263,448,10/1/2004,Algonquin Books -43076,Ice Castles,Leonore Fleischer,3.87,044970081X,9780449700815,eng,220,161,19,3/12/1982,Fawcett -43081,Marching Powder: A True Story of Friendship Cocaine and South America's Strangest Jail,Rusty Young/Thomas McFadden,4.26,0312330340,9780312330347,eng,400,11121,522,5/1/2004,St. Martin's Griffin -43082,Marching Powder,Rusty Young,4.26,0330419587,9780330419581,eng,371,906,94,7/1/2004,Pan MacMillan -43084,Nations and Nationalism since 1780: Programme Myth Reality,Eric Hobsbawm,3.90,0521439612,9780521439619,eng,214,1175,39,10/30/1992,Cambridge University Press -43087,Interesting Times: A Twentieth-Century Life,Eric Hobsbawm,4.06,1565849655,9781565849655,eng,448,374,24,5/16/2005,New Press -43089,Industry and Empire: The Birth of the Industrial Revolution,Eric Hobsbawm/Chris Wrigley,3.92,1565845617,9781565845619,eng,411,301,14,9/1/1999,The New Press -43098,The Communist Manifesto,Karl Marx/Friedrich Engels/Eric Hobsbawm,3.55,1859848982,9781859848982,eng,88,309,38,5/1/1998,Verso -43101,On the Edge of the New Century,Eric Hobsbawm/Allan Cameron/Antonio Polito,3.71,1565846710,9781565846715,eng,192,82,5,5/1/2001,New Press -43106,The Age of Extremes: The Short Twentieth Century 1914-1991,Eric Hobsbawm,4.25,0349106711,9780349106717,eng,638,348,24,11/12/1995,Abacus -43110,Echoes of the Marseillaise: Two Centuries Look Back on the French Revolution,Eric Hobsbawm,3.52,0813515246,9780813515243,eng,168,57,7,4/1/1990,Rutgers University Press -43128,Winter Is the Warmest Season,Lauren Stringer,3.90,0152049673,9780152049676,eng,40,408,83,10/1/2006,Harcourt -43129,Winter (Four Seasons #4),Núria Roca/Rosa María Curto,3.82,0764127314,9780764127311,eng,36,7,1,6/30/2004,Barron's Educational Series -43130,It's Winter,Linda Glaser/Glaser Linda/Susan Swan,3.64,0761316809,9780761316800,eng,32,88,14,9/1/2002,First Avenue Editions (Tm) -43132,Winter Season: A Dancer's Journal,Toni Bentley,3.92,0813027055,9780813027050,en-US,168,425,39,11/10/2003,University Press of Florida -43150,Twilight of the Idols/The Anti-Christ,Friedrich Nietzsche/Michael Tanner,4.16,0140445145,9780140445145,en-GB,208,7149,143,1/25/1990,Penguin Classics -43166,Practical DV Filmmaking,Russell Evans,3.46,0240807383,9780240807386,en-US,408,9,0,11/1/2005,Focal Press -43171,Diana Vreeland,Eleanor Dwight,4.24,0688167381,9780688167387,eng,320,150,17,10/22/2002,Harper Design -43175,Inventive Paris clothes: 1909-1939 - a photographic essay,Diana Vreeland/Irving Penn,3.67,067040067X,9780670400676,eng,95,3,0,5/26/1978,Penguin Putnam -43177,Brown V. Board of Education: A Civil Rights Milestone and Its Troubled Legacy,James T. Patterson,3.85,0195156323,9780195156324,eng,320,159,24,12/12/2002,Oxford University Press USA -43180,Henry V,William Shakespeare/Stephen Orgel/A.R. Braunmuller/Claire McEachern,3.88,0140714588,9780140714586,eng,121,433,39,9/1/1999,Penguin Classics -43219,Hegemony and Socialist Strategy: Towards a Radical Democratic Politics,Ernesto Laclau/Chantal Mouffe,3.89,1859843301,9781859843307,eng,200,1063,35,5/17/2001,Verso -43220,On Populist Reason,Ernesto Laclau,4.04,1859846513,9781859846513,eng,276,208,11,7/17/2005,Verso -43221,Contingency Hegemony Universality: Contemporary Dialogues on the Left,Judith Butler/Ernesto Laclau/Slavoj Žižek,3.92,185984278X,9781859842782,eng,329,707,18,7/17/2000,Verso -43228,The Meaning of Life,Terry Eagleton,3.50,0199210705,9780199210701,en-GB,187,755,94,5/1/2007,Oxford University Press USA -43229,Sweet Violence: The Idea of the Tragic,Terry Eagleton,4.00,0631233601,9780631233602,eng,348,85,8,9/27/2002,Wiley-Blackwell -43230,The English Novel: An Introduction,Terry Eagleton,3.77,1405117079,9781405117074,eng,376,101,10,8/6/2004,Wiley-Blackwell -43236,MySQL Cookbook,Paul DuBois,4.00,059652708X,9780596527082,en-US,980,126,8,12/4/2006,O'Reilly Media -43244,High Performance MySQL: Optimization Backups Replication & Load Balancing,Jeremy D. Zawodny/Derek J. Balling,4.23,0596003064,9780596003067,eng,304,403,17,4/18/2004,O'Reilly Media -43255,Not Without My Daughter,Betty Mahmoody,4.10,0552152161,9780552152167,eng,528,19790,1042,7/5/2004,Transworld Publishers Ltd -43268,Aman: The Story of a Somali Girl,Virginia Lee Barnes,3.77,0679762094,9780679762096,eng,368,549,46,8/29/1995,Vintage -43269,Amanda's Story (The Girls of Lighthouse Lane #4),Thomas Kinkade/Erika Tamar,4.04,0060543523,9780060543525,eng,208,4,0,3/14/2006,HarperCollins -43271,Lizabeth's Story (The Girls of Lighthouse Lane #3),Thomas Kinkade/Erika Tamar,3.96,0060543493,9780060543495,eng,192,24,0,10/18/2005,HarperCollins -43273,Kids Are Worth It!: Giving Your Child the Gift of Inner Discipline,Barbara Coloroso,4.19,0060014318,9780060014315,en-US,352,1215,129,8/20/2002,William Morrow Paperbacks -43278,Creating a Life Worth Living,Carol Lloyd,4.02,0060952431,9780060952433,eng,336,353,24,8/2/1997,William Morrow Paperbacks -43282,Happy Endings: Finishing the Edges of Your Quilts,Mimi Dietrich,4.25,1564775003,9781564775009,en-US,80,24,3,6/4/2013,That Patchwork Place -43283,Unspeakable Truths and Happy Endings: Human Cruelty and the New Trauma Therapy,Rebecca Coffey,4.25,1886968055,9781886968059,en-US,226,12,0,4/1/2005,Sidran Press -43287,Year's Happy Ending,Betty Neels,3.97,0373511620,9780373511624,eng,216,134,14,9/24/2001,Harlequin Readers' Choice -43313,Trail of Tears: The Rise and Fall of the Cherokee Nation,John Ehle,4.15,0385239548,9780385239547,eng,424,3166,152,9/22/1997,Anchor Books -43317,The Trail of Tears,Joseph Bruchac/Diana Magnuson,3.91,0679890521,9780679890522,eng,48,170,31,9/21/1999,Random House Books for Young Readers -43324,Are You Afraid of the Dark?,Sidney Sheldon,3.66,0007165161,9780007165162,eng,401,23924,681,7/1/2005,HarperCollins Publishers -43325,Nothing Lasts Forever,Sidney Sheldon,3.84,0446354732,9780446354738,eng,384,26040,614,9/1/1995,Grand Central -43328,Rage of Angels,Sidney Sheldon,3.93,0006178731,9780006178736,eng,512,30283,860,8/3/1999,HarperCollins Publishers -43331,He Sees You When You're Sleeping,Mary Higgins Clark/Carol Higgins Clark,3.79,0743456866,9780743456869,en-US,230,477,31,11/1/2002,Pocket Books -43332,My Gal Sunday,Mary Higgins Clark,3.57,0671014919,9780671014919,en-US,206,5355,183,2/1/2003,Pocket Books -43334,We'll Meet Again,Mary Higgins Clark,3.85,0743484312,9780743484312,eng,234,8892,260,2/2/2004,Pocket Books -43335,All Through the Night,Mary Higgins Clark,3.70,0671027123,9780671027124,en-US,256,6332,224,10/1/1999,Pocket Books -43338,The Night Awakens: A Mystery Writers of America Anthology,Mary Higgins Clark/Angela Zeman/Noreen Ayres/Sally Cabot Gunning/Joseph Hansen/Sarah Shankman/Nancy Pickard/Eleanor Taylor Bland/Brendan DuBois/Edward D. Hoch/Loren D. Estleman,3.51,0671519182,9780671519186,en-US,303,162,13,2/1/2000,Simon and Schuster -43339,Where Are the Children?,Mary Higgins Clark,4.02,1416507779,9781416507772,eng,304,39738,969,7/1/2005,Pocket Books -43340,The Second Time Around,Mary Higgins Clark,3.75,0743412621,9780743412629,eng,373,7472,296,4/1/2004,Pocket Books -43342,You Belong To Me,Mary Higgins Clark,3.87,0671004549,9780671004545,en-US,384,20843,421,4/1/1999,Pocket Books -43343,Stowaway and Milk Run: Two Unabridged Stories From Mary Higgins Clark,Mary Higgins Clark/Jan Maxwell,3.49,0671046241,9780671046248,eng,0,64,2,12/1/1999,Simon & Schuster Audio -43344,The Christmas Thief (Regan Reilly Mysteries #9),Mary Higgins Clark/Carol Higgins Clark,3.61,0739447343,9780739447345,eng,253,12,2,1/1/2004,Doubleday -43348,Kitchen Privileges: A Memoir,Mary Higgins Clark,3.84,0743206053,9780743206051,eng,208,1756,255,11/19/2002,Simon & Schuster -43352,I'll Be Seeing You,Mary Higgins Clark,3.81,0671888587,9780671888589,eng,307,14904,291,5/1/1994,Pocket Books -43360,Mount Vernon Love Story: A Novel of George and Martha Washington,Mary Higgins Clark,3.62,0743448944,9780743448949,eng,254,3914,495,6/1/2003,Pocket Books -43361,Inventing the People: The Rise of Popular Sovereignty in England and America,Edmund S. Morgan,3.78,0393306232,9780393306231,eng,320,106,4,9/17/1989,W. W. Norton Company -43363,Benjamin Franklin,Edmund S. Morgan,3.87,0300101627,9780300101621,eng,352,1476,84,8/11/2003,Yale University Press -43365,American Slavery American Freedom,Edmund S. Morgan,4.11,039332494X,9780393324945,eng,464,3008,83,10/17/2003,W. W. Norton Company -43368,The Puritan Dilemma: The Story of John Winthrop,Edmund S. Morgan,3.41,0321478061,9780321478061,eng,210,551,58,10/1/2006,Pearson -43370,Thomas Jefferson: Author of America,Christopher Hitchens,3.91,0060598964,9780060598969,eng,188,2319,221,5/31/2005,Atlas Books/HarperCollins Publishers -43371,No One Left to Lie to: The Values of the Worst Family,Christopher Hitchens,3.86,1859842844,9781859842843,eng,150,1433,157,7/17/2000,Verso -43372,The Missionary Position: Mother Teresa in Theory and Practice,Christopher Hitchens,4.06,185984054X,9781859840542,eng,98,7240,571,4/17/1997,Verso -43375,Unacknowledged Legislation: Writers in the Public Sphere,Christopher Hitchens,4.01,1859843832,9781859843833,eng,430,211,16,1/1/2002,Verso -43376,For the Sake of Argument: Essays and Minority Reports,Christopher Hitchens,4.16,0860916286,9780860916284,en-GB,368,221,9,9/17/1994,Verso -43377,The Trial of Henry Kissinger,Christopher Hitchens,3.96,1859843980,9781859843987,eng,161,2614,187,6/17/2002,Verso -43378,A Long Short War: The Postponed Liberation of Iraq,Christopher Hitchens,3.75,0452284988,9780452284982,en-US,112,371,24,6/3/2003,Plume -43380,Blaming the Victims: Spurious Scholarship and the Palestinian Question,Edward W. Said/Christopher Hitchens,4.22,1859843409,9781859843406,eng,296,166,7,9/17/2001,Verso -43384,Unacknowledged Legislation: Writers in the Public Sphere,Christopher Hitchens,4.01,1859847862,9781859847862,en-US,432,24,4,3/17/2001,Verso -43390,1968: War and Democracy,Eugene J. McCarthy/Christopher Hitchens,4.50,1883477379,9781883477370,eng,246,2,1,9/23/2000,Lone Oak Press -43394,Orwell in Spain: The Full Text of Homage to Catalonia with Associated Articles Reviews and Letters from the Complete Works of George Orwell,George Orwell/Christopher Hitchens,4.14,0141185163,9780141185163,eng,416,211,16,5/3/2001,Penguin Classics -43399,Prepared for the Worst: Selected Essays and Minority Reports,Christopher Hitchens,4.02,0809078678,9780809078677,eng,365,164,7,11/1/1988,Hill & Wang Publ. (NY) -43401,Hons and Rebels,Jessica Mitford/Christopher Hitchens,4.13,1590171101,9781590171103,eng,284,2999,200,9/30/2004,NYRB Classics -43407,Alles ist erleuchtet,Jonathan Safran Foer/Dirk van Gunsteren,3.90,3462032178,9783462032178,ger,384,39,4,2/20/2003,Kiepenheuer & Witsch -43409,How to Be Lost,Amanda Eyre Ward,3.54,0345483170,9780345483171,en-US,290,6176,675,8/30/2005,Ballantine Books -43416,The Complete Stories of Theodore Sturgeon Volume 7: A Saucer of Loneliness,Theodore Sturgeon/Paul Williams/Kurt Vonnegut Jr.,4.42,1556434243,9781556434242,eng,400,141,11,9/5/2002,North Atlantic Books -43419,Surviving Justice: America's Wrongfully Convicted and Exonerated,Scott Turow/Lola Vollen/Dave Eggers,4.29,1932416234,9781932416237,eng,489,264,32,11/4/2005,McSweeney's -43423,McSweeney's #14,Dave Eggers,3.73,1932416129,9781932416121,eng,306,334,21,9/27/2004,McSweeney's -43424,The Best of McSweeney's Vol. 2,Dave Eggers,3.81,0241142466,9780241142462,en-US,384,68,5,8/25/2005,Hamish hamilton -43426,Une oeuvre déchirante d'un génie renversant,Dave Eggers/Michelle Herpe-Volinsky,3.68,2290328243,9782290328248,fre,536,4,0,4/10/2003,J'ai lu -43432,The Tenants of Moonbloom,Edward Lewis Wallant/Dave Eggers,3.88,1590170709,9781590170700,en-US,264,520,78,11/30/2003,NYRB Classics -43433,McSweeney's #18,Dave Eggers,3.72,1932416382,9781932416381,eng,200,407,31,12/8/2005,McSweeney's -43437,McSweeney's #19,Dave Eggers/T. Coraghessan Boyle/Adam Golaski/Sean Casey/Brendan Connell,3.80,193241648X,9781932416480,en-GB,250,305,15,4/10/2006,McSweeney's -43438,McSweeney's #11,Dave Eggers/A.G. Pasquella/Brent Hoff/Stephen Elliott/Daphne Beal/Denis Johnson/Tom Bissell/Sean Warren/Samantha Hunt/Robert Olmstead/T. Coraghessan Boyle/David Means/Doug Dorst/Joyce Carol Oates/McSweeney's Publishing,3.94,1932416013,9781932416015,eng,293,171,6,7/1/2003,McSweeney's -43440,Forty Stories,Donald Barthelme,4.20,0141180943,9780141180946,eng,246,2496,123,4/7/2005,Penguin Books -43441,A Tramp Abroad,Mark Twain/Dave Eggers,3.86,0812970039,9780812970036,eng,400,26,9,10/14/2003,Modern Library -43451,Flores en el ático,V.C. Andrews/Jesús Pardo,3.81,849759746X,9788497597463,spa,480,1399,220,8/30/2005,DeBolsillo -43454,Black Cat (Gemini #2),V.C. Andrews,3.76,0743428676,9780743428675,eng,375,23,4,10/5/2004,Pocket Books -43455,Shooting Stars (Shooting Stars #1-4),V.C. Andrews,3.94,0743449029,9780743449021,en-US,656,1231,22,12/1/2002,Pocket Books -43456,Scattered Leaves (Early Spring #2),V.C. Andrews,3.78,1416530819,9781416530817,en-US,416,1481,44,2/27/2007,Pocket Star -43457,Rose (Shooting Stars #3),V.C. Andrews,3.72,0671039954,9780671039950,eng,185,2352,29,9/1/2001,Pocket Books -43459,Ice (Shooting Stars #2),V.C. Andrews,3.75,0671039946,9780671039943,en-US,208,2455,26,7/31/2001,Pocket Books -43460,Into the Woods (De Beers #4),V.C. Andrews,3.87,0743428595,9780743428590,eng,464,2395,34,1/1/2003,Pocket Books -43461,Ruby (Landry #1),V.C. Andrews,3.93,1568950748,9781568950747,eng,402,17,0,12/1/1994,Wheeler Publishing -43475,Criss Cross,Lynne Rae Perkins,3.34,0060092726,9780060092726,en-US,337,7752,1056,8/30/2005,Greenwillow Books -43476,The Criss Cross,Crystal Lacey Winslow,4.20,0971702128,9780971702127,en-US,360,110,16,8/1/2004,Melodrama Publishing -43484,Honey (Shooting Stars #4),V.C. Andrews,3.74,0671039962,9780671039967,eng,180,2447,27,10/2/2001,Pocket Books -43486,Raven (Orphans #4),V.C. Andrews,3.71,0671020315,9780671020316,eng,192,4678,59,1/27/1999,Pocket Books -43487,Fulgor oculto (Landry #3),V.C. Andrews/Elisa Cerdan,3.89,1400000742,9781400000746,spa,400,5,0,1/22/2002,Plaza y Janes -43488,Hidden Leaves (De Beers #5),V.C. Andrews,3.87,0743457870,9780743457873,en-US,288,2023,26,3/1/2003,Pocket Star -43489,Music in the Night (Logan #4),V.C. Andrews,3.85,067153467X,9780671534677,eng,320,5554,64,3/1/1998,Pocket Books -43490,Runaways (Orphans #5),V.C. Andrews,3.77,0671007637,9780671007638,eng,342,5121,78,11/1/1998,Pocket Books -43491,Child of Darkness (Gemini #3),V.C. Andrews,3.81,1416500502,9781416500506,eng,400,19,4,3/15/2005,Gallery Books -43499,Die Flucht der Waisen (Die Orphan-Saga #5),V.C. Andrews/Susanne Althoetmar-Smarczyk,3.77,3442354560,9783442354566,ger,349,2,0,3/1/2002,Goldmann -43503,Dornen des Glücks (Das Erbe von Foxworth Hall #3),V.C. Andrews/Michael Görden,3.77,3442552966,9783442552962,ger,412,5,0,9/1/2002,Goldmann -43504,Harry Potter and the Philosopher's Stone (Harry Potter #1),J.K. Rowling,4.47,158234681X,9781582346816,gla,250,11,0,7/1/2010,Bloomsbury USA Childrens -43509,Harry Potter and the Goblet of Fire (Harry Potter #4),J.K. Rowling,4.56,074754624X,9780747546245,eng,636,18754,906,7/8/2000,Bloomsbury -43526,Sun-Kissed (The Au Pairs #3),Melissa de la Cruz,3.86,1416917462,9781416917465,eng,306,2720,51,5/23/2006,Simon & Schuster -43527,Crazy Hot (The Au Pairs #4),Melissa de la Cruz,3.94,141693961X,9781416939610,eng,271,2501,64,5/8/2007,Simon & Schuster -43529,The Au Pairs (The Au Pairs #1),Melissa de la Cruz,3.65,0689873190,9780689873195,eng,294,6140,244,5/31/2005,Simon & Schuster Books for Young Readers -43536,Wooden: A Lifetime of Observations and Reflections On and Off the Court,John Wooden/Steve Jamison,4.45,0809230410,9780809230419,eng,201,3429,274,4/22/1997,McGraw-Hill -43544,The Strange Case of Dr. Jekyll and Mr. Hyde and Other Stories,Robert Louis Stevenson/Jenny Davidson,4.01,1593080549,9781593080549,eng,320,857,57,10/1/2003,Barnes Noble Classics -43545,The Once and Future King (The Once and Future King #1-4),T.H. White,4.07,0441627404,9780441627400,eng,639,85082,2921,6/15/1987,Ace -43547,Rose of No Man's Land,Michelle Tea,3.52,0156030934,9780156030939,eng,320,1484,161,2/5/2007,Mariner Books -43548,The Roses of No Man's Land,Lyn Macdonald,4.26,014017866X,9780140178661,eng,320,293,36,9/7/1993,Penguin UK -43554,The Quitter,Harvey Pekar/Dean Haspiel,3.60,1401204007,9781401204006,en-US,104,1318,125,9/6/2006,Vertigo -43555,The Best American Comics 2006,Harvey Pekar/Anne Elizabeth Moore/Esther Pearl Watson/Lilli Carré/Robert Crumb/Chris Ware/Kim Deitch/Jaime Hernández/Alison Bechdel/Joe Sacco/Lynda Barry/Justin Hall/Joel Priddy/Anders Nilsen/David Lasky/Ben Katchor/Rebecca Dart/Ivan Brunetti/Jonathan Bennett/John Porcellino/David Heatley/Lloyd Dangle/Hob/Gilbert Shelton/Olivia Schanzer/Alex Robinson/Jessica Abel/Seth Tobocman/Rick Geary/Tom Hart/Kurt Wolfgang/Jesse Reklaw,3.87,0618718745,9780618718740,eng,293,1502,124,10/1/2006,Houghton Mifflin -43556,The New American Splendor Anthology: From Off the Streets of Cleveland,Harvey Pekar,4.21,0941423646,9780941423649,eng,300,577,25,1/22/1993,Running Press Adult -43562,American Splendor: Another Day,Harvey Pekar/Ty Templeton/Eddie Campbell/Hilary Barta,3.71,1401212352,9781401212353,en-US,136,349,28,4/7/2007,Vertigo -43564,Face Off: How to Draw Amazing Caricatures & Comic Portraits,Harry Hamernik,4.02,1581807597,9781581807592,eng,127,67,5,9/27/2006,Impact -43582,David Boring,Daniel Clowes,3.81,1594971226,9781594971228,spa,128,71,2,5/25/2005,Public Square Books -43586,Lout Rampage!,Daniel Clowes,4.10,1560970707,9781560970705,eng,96,177,9,11/1/1992,Fantagraphics Books -43594,The Campfire Collection: Spine-tingling Tales to Tell in the Dark,Eric B. Martin/George R. Stewart/Peter Matthiessen/Robert W. Service/Judith M. Brueske/Anthony Boucher/Tobias Wolff/John Long/Frank Norris/Beryl Bainbridge/Greg Child/Marc Reisner/Haruki Murakami/Jack London/Edgar Allan Poe/Paul Bowles/Larry Kanuit,3.22,0811824543,9780811824545,en-US,176,50,6,3/1/2000,Chronicle Books -43603,The People of Paper,Salvador Plascencia,4.09,0156032112,9780156032117,eng,256,4154,458,11/13/2006,Mariner Books -43616,The Gunslinger's Bride (Montana Mavericks: Historicals #1),Cheryl St. John,3.68,0373291779,9780373291779,eng,304,137,11,8/24/2001,Harlequin Historical -43618,Two Brothers: The Lawman / The Gunslinger (Two Brothers #1-2),Linda Lael Miller,4.04,0743411544,9780743411547,eng,393,823,40,1/1/2001,Pocket Books -43619,The Gunslinger (Two Brothers #2),Linda Lael Miller,4.22,1568958129,9781568958125,eng,179,78,1,1/1/1999,Wheeler Publishing -43620,The Gunslinger,Mary McBride,4.10,0373288565,9780373288564,eng,304,17,2,12/23/1994,Harlequin Historical -43623,Gunslinger and Nine Other Action-Packed Stories of the Wild West,Ed Gorman/Bill Pronzini,4.25,1569800367,9781569800362,eng,131,4,1,3/1/1995,Barricade Books -43630,Leadership and the One Minute Manager: Increasing Effectiveness Through Situational Leadership,Kenneth H. Blanchard/Drea Zigarmi/Patricia Zigarmi,3.97,0688039693,9780688039691,en-US,111,2592,123,10/20/1999,William Morrow & Company -43636,Atlantic Shift,Emily Barr,3.31,0755301943,9780755301942,eng,406,138,12,3/14/2005,Headline Review -43641,Water for Elephants,Sara Gruen,4.09,1565125606,9781565125605,eng,335,1260027,52759,5/1/2007,Algonquin Books -43650,Something Borrowed,Rebecca Hagan Lee,4.14,0786500735,9780786500734,eng,282,38,1,2/1/1995,Diamond/Charter -43656,Double-Cross (Athena Force #4),Meredith Fletcher,3.72,0373513283,9780373513284,eng,304,38,3,9/24/2004,Silhouette Bombshell -43661,McNally's Alibi (Archy McNally Novels),Vincent Lardo/Lawrence Sanders,3.90,0425191192,9780425191194,eng,304,221,4,8/5/2003,Berkley -43666,McNally's Puzzle (Archy McNally #6),Lawrence Sanders,3.85,0425157466,9780425157466,eng,343,1569,63,2/1/1997,Berkley -43669,McNally's Caper (Archy McNally #4),Lawrence Sanders,3.90,0425145301,9780425145302,eng,352,1604,49,1/1/1995,Berkley -43673,The First Deadly Sin (Deadly Sins #2),Lawrence Sanders,4.04,0425104273,9780425104279,eng,628,5817,145,4/15/1987,Berkley -43675,First Deadly Sin,Lawrence Sanders,4.04,0871881780,9780871881786,eng,17,2,0,7/1/1989,Random House Audio -43678,The Anderson Tapes (Deadly Sins #1),Lawrence Sanders,3.68,0425103641,9780425103647,eng,336,1275,25,3/15/1987,Berkley -43681,A Garden Of Vipers (Carson Ryder #3),Jack Kerley,3.96,0451412338,9780451412331,en-US,400,562,37,2/6/2007,Onyx -43682,The Death Collectors (Carson Ryder #2),Jack Kerley,3.94,0451218299,9780451218292,eng,400,1088,78,5/2/2006,Signet -43691,The Master,Colm Tóibín,3.83,0743250419,9780743250412,eng,339,7299,771,5/3/2005,Scribner -43700,The South,Colm Tóibín,3.60,0140149864,9780140149869,eng,240,807,92,10/1/1992,Penguin Books -43702,The Blackwater Lightship,Colm Tóibín,3.87,0743203313,9780743203319,eng,288,4421,367,6/5/2005,Scribner -43704,The Sign of the Cross: Travels in Catholic Europe,Colm Tóibín,3.80,0330373579,9780330373579,eng,243,23,7,5/4/2001,Picador USA -43706,Through the Arc of the Rain Forest,Karen Tei Yamashita,3.90,091827382X,9780918273826,eng,212,127,18,7/1/1990,Coffee House Press -43708,Tropic of Orange,Karen Tei Yamashita,3.55,1566890640,9781566890649,eng,268,1749,118,9/1/1997,Coffee House Press -43713,Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science),Harold Abelson/Gerald Jay Sussman/Julie Sussman,4.45,0262510871,9780262510875,en-US,657,3654,133,7/25/1996,MIT Press -43717,Crooked Little Vein,Warren Ellis,3.82,0060723939,9780060723934,en-US,288,7811,991,7/24/2007,William Morrow -43722,Fell,Warren Ellis/Ben Templesmith,4.16,1582406936,9781582406930,eng,128,6740,283,6/5/2007,Image Comics -43723,Hellblazer: Setting Sun,Warren Ellis/Frank Teran/Tim Bradstreet/Javier Pulido/James Romberger/Marcelo Frusín,4.20,1401202454,9781401202453,en-GB,96,2583,35,10/1/2004,Vertigo -43725,NextWave: Agents of H.A.T.E. Vol. 1: This is What They Want,Warren Ellis/Stuart Immonen/Wade Von Grawbadger/Dave McCaig,4.16,0785122788,9780785122784,eng,144,4119,184,9/13/2006,Marvel Comics Group -43738,Desolation Jones: Made in England,Warren Ellis/J.H. Williams III,3.93,140121150X,9781401211509,eng,144,1767,76,10/4/2006,Wildstorm -43739,Iron Man: Extremis,Warren Ellis/Adi Granov,4.09,0785122583,9780785122586,eng,160,10792,290,2/14/2007,Marvel -43747,The Authority Vol. 2: Under New Management,Warren Ellis/Mark Millar/Bryan Hitch/Frank Quitely,4.15,1563897563,9781563897566,eng,200,4146,71,11/1/2000,Wildstorm -43755,Azumanga Daioh Vol. 3 (Azumanga Daioh #3),Kiyohiko Azuma/あずま きよひこ,4.38,1413900305,9781413900309,eng,166,2144,19,2/17/2004,ADV Manga -43758,The Queen of the Damned (The Vampire Chronicles #3),Anne Rice,3.89,0345419626,9780345419620,eng,448,121794,1667,11/29/1997,Ballantine Books -43759,La regina dei dannati,Anne Rice/Roberta Rambelli,3.89,8878193283,9788878193284,ita,507,333,18,2/1/1997,TEA -43763,Interview with the Vampire (The Vampire Chronicles #1),Anne Rice,3.99,0345476875,9780345476876,eng,342,433413,7368,8/31/2004,Ballantine Books -43779,Cántico de sangre (Crónicas Vampíricas #10),Anne Rice/Camila Batlles,3.72,8466620265,9788466620260,spa,416,143,9,7/1/2006,Ediciones B -43780,Vampire Chronicles: Interview with the Vampire The Vampire Lestat The Queen of the Damned (Anne Rice),Anne Rice/Robert O'Keefe/F. Murray Abraham/Michael York/Kate Nelligan/David Purdham,4.27,0679410503,9780679410508,eng,9,10350,120,11/17/1992,Random House Audio -43781,Merrick (The Vampire Chronicles #7),Anne Rice,3.73,0345422406,9780345422408,eng,370,35529,478,10/2/2001,Ballantine Books -43792,La reina de los condenados (Crónicas Vampíricas #3),Anne Rice,3.89,8466617116,9788466617116,spa,725,287,19,1/1/2007,Byblos -43796,The Vampire Companion,Katherine Ramsland/Anne Rice,3.94,0345397398,9780345397393,en-US,608,4829,25,8/1/1995,Ballantine Books -43798,The Feast of All Saints,Anne Rice,3.85,0345376048,9780345376046,en-US,570,16178,337,1/28/1992,Ballantine Books -43799,Exit to Eden,Anne Rampling/Anne Rice,3.58,0727853414,9780727853417,eng,336,12646,323,4/24/1998,Severn House Publishers -43808,Anne Rice's The Vampire Lestat: A Graphic Novel,Faye Perozich/Anne Rice/John Bolton/Daerick Gröss,4.20,0345373944,9780345373946,eng,404,70039,138,11/30/1991,Ballantine Books -43812,Entrevista con el vampiro (Crónicas vampíricas #1),Anne Rice/Marcelo Covián,3.99,8466616209,9788466616201,spa,463,1307,93,6/1/2005,Ediciones B -43814,The Vampire Lestat (The Vampire Chronicles #2),Anne Rice,4.07,0345476883,9780345476883,eng,481,156354,2720,8/31/2004,Ballantine Books -43817,El Mesías: El niño judío,Anne Rice/Luis Murillo,3.58,8466630031,9788466630030,spa,352,61,8,5/28/2007,Ediciones B -43819,Anne Rice Value Collection: Mayfair Witches (Lives of the Mayfair Witches #1-3),Anne Rice/Joe Morton/Tim Curry/Lindsay Crouse,4.23,037541620X,9780375416200,eng,10,35,3,11/7/2000,Random House Audio Publishing Group -43821,Merrick (Crónicas Vampíricas #7),Anne Rice,3.73,8466606602,9788466606608,spa,414,99,9,11/1/2002,Ediciones B -43824,Vittorio the Vampire (New Tales of the Vampires #2),Anne Rice,3.52,0375401601,9780375401602,eng,292,685,36,3/8/1999,Knopf Publishing Group -43826,The Feast Of All Saints,Anne Rice,3.85,0099269473,9780099269472,eng,640,86,5,12/4/1997,Arrow -43828,The Unauthorized Anne Rice Companion,George Beahm,3.68,0836210360,9780836210361,eng,246,97,0,5/1/1996,Andrews and McMeel -43841,When Christ and His Saints Slept (Henry II and Eleanor of Aquitaine #1),Sharon Kay Penman,4.27,0345396685,9780345396686,eng,784,12022,648,2/6/1996,Ballantine Books -43877,The Monk Who Sold His Ferrari: A Fable About Fulfilling Your Dreams and Reaching Your Destiny,Robin S. Sharma,3.83,0062515675,9780062515674,eng,208,71133,3741,4/21/1999,HarperOne -43878,The Monk Who Sold His Ferrari: A Fable about Fulfilling Your Dreams and Reaching Your Destiny (Revised),Robin S. Sharma,3.83,0007179731,9780007179732,eng,241,781,93,12/31/2015,Harper Element -43884,Phantom (Sword of Truth #10),Terry Goodkind,3.99,0765305240,9780765305244,eng,587,38420,452,7/18/2006,Tor Books -43888,The Sword of Truth Boxed Set I: Wizard's First Rule Blood of the Fold Stone of Tears (Sword of Truth #1-3),Terry Goodkind,4.29,0812575601,9780812575606,en-US,2480,4196,81,11/15/1998,Tor Books -43889,Wizard's First Rule (Sword of Truth #1),Terry Goodkind,4.13,0765346524,9780765346520,eng,836,204648,4986,4/14/2003,Tor Books -43893,Naked Empire (Sword of Truth #8),Terry Goodkind,3.81,0765344300,9780765344304,eng,736,44561,556,6/1/2004,Tor Books -43895,Legends 2 (Legends 1 Volume 2of3),Robert Silverberg/Terry Goodkind/George R.R. Martin/Anne McCaffrey,3.88,0812575237,9780812575231,eng,379,623,20,11/1/1999,Tor Books -43899,Naked Empire (Sword of Truth #8),Terry Goodkind,3.81,0007145594,9780007145591,en-GB,685,171,6,10/1/2004,Voyager -43905,The Wood Boy / The Burning Man,Raymond E. Feist/Tad Williams/Mat Broome/Robin Gillespie/Sean J. Jordan/Brett Booth,3.63,0976401118,9780976401117,eng,144,363,13,12/21/2005,Dabel Brothers Publishing -43910,The King's Buccaneer (Krondor's Sons #2),Raymond E. Feist,4.02,0385236255,9780385236256,en-GB,465,131,6,10/18/1992,Doubleday -43915,Magician: Apprentice Volume 1 (Raymond E. Feist's Magician: Apprentice #1),Raymond E. Feist/Michael Avon Oeming/Bryan J.L. Glass/Ryan Stegman,4.45,0785127224,9780785127222,eng,168,19895,114,5/30/2007,Marvel Comics Group -43918,Magician (The Riftwar Saga #1-2),Raymond E. Feist,4.32,0385175809,9780385175807,en-US,568,73,7,1/1/1982,Doubleday Books -43919,Faerie Tale,Raymond E. Feist,3.88,0586071393,9780586071397,eng,490,7908,349,11/15/1989,Voyager -43924,Promise Me (Myron Bolitar #8),Harlan Coben,3.99,0451219244,9780451219244,eng,504,21149,1138,3/27/2007,Dutton -43925,The Final Detail (Myron Bolitar #6),Harlan Coben,4.02,0752849182,9780752849188,eng,344,157,16,5/1/2005,Orion -43926,The Innocent,Harlan Coben,3.96,045121577X,9780451215772,eng,503,21382,1229,4/25/2006,Dutton -43927,No Second Chance,Harlan Coben,4.08,0451210557,9780451210555,eng,452,22104,1237,4/27/2004,Dutton Books -43929,Darkest Fear (Myron Bolitar #7),Harlan Coben,4.05,0752849190,9780752849195,eng,354,13462,583,11/8/2008,Dell -43930,Gone for Good,Harlan Coben,4.10,0440236738,9780440236733,eng,432,35722,1844,3/4/2003,Dell Publishing Company -43932,Drop Shot (Myron Bolitar #2),Harlan Coben/Martine Leconte,3.94,0440220459,9780440220459,eng,341,20461,981,2/5/1996,Dell Publishing Company -43933,Tell No One,Harlan Coben,4.11,0440236703,9780440236702,eng,370,95220,4017,8/25/2009,Dell Publishing Company -43937,The Aeneid: A New Prose Translation,Virgil/David West,3.84,0140444572,9780140444575,eng,353,105,10,8/6/1991,Penguin Classics -43939,The Complete Odes and Epodes,Horace/David West,4.00,019283942X,9780192839428,eng,200,40,3,5/16/2000,Oxford University Press -43940,Object Thinking,David West,3.99,0735619654,9780735619654,eng,334,155,21,7/23/2019,Microsoft Press -43949,Left Foot Forward: A Year in the Life of a Journeyman Footballer,Garry Nelson,3.97,0747251827,9780747251828,eng,375,92,4,5/1/1996,Headline Book Publishing -43958,Apologia Pro Vita Sua (A Defense of One's Life),John Henry Newman,4.12,0486442136,9780486442136,eng,336,894,52,6/17/2005,Dover Publications -43959,Margherita Dolce Vita,Stefano Benni/Antony Shugaar,3.71,1933372206,9781933372204,en-US,208,1704,100,11/1/2006,Europa Editions -43960,Living La Dolce Vita: Bring the Passion Laughter and Serenity of Italy Into Your Daily Life,Raeleen D'Agostino Mautner,3.76,1570719276,0760789719271,eng,272,110,11,4/1/2003,Sourcebooks -43961,The Letters of Vita Sackville-West and Virginia Woolf,Louise DeSalvo/Mitchell Alexander Leaska/Vita Sackville-West/Virginia Woolf,4.27,1573441961,9781573441964,eng,480,1133,37,9/30/2004,Cleis Press -43963,Vita,Melania G. Mazzucco/Virginia Jewiss,3.77,0312425864,9780312425869,eng,433,592,48,9/19/2006,St. Martins Press-3PL -43979,The Church in Emerging Culture: Five Perspectives,Leonard Sweet/Brian D. McLaren/Erwin Raphael McManus/Michael S. Horton/Frederica Matthewes-Green/Andy Crouch,3.36,0310254876,9780310254874,eng,272,190,6,10/19/2003,Zondervan -43980,A History of the World in 10½ Chapters,Julian Barnes,3.89,0679731377,9780679731375,eng,320,10008,638,11/27/1990,Vintage -43988,Life Is a Caravanserai,Emine Sevgi Özdamar/Luise von Flotow,3.71,189825334X,9781898253341,eng,270,89,8,8/30/2000,Middlesex University Press -43992,True Evil,Greg Iles,4.09,0743292499,9780743292498,eng,512,13021,781,12/12/2006,Scribner Book Company -43993,The Quiet Game (Penn Cage #1),Greg Iles,4.20,0340686030,9780340686034,eng,580,21288,1418,7/1/2000,Coronet Books (GB) -43994,Trapped (Mississippi #2),Greg Iles,4.00,0451207505,9780451207500,en-US,434,320,19,8/27/2002,Signet -43995,The Footprints of God,Greg Iles,3.77,0743454146,9780743454148,eng,528,6179,516,12/28/2004,Pocket Star Books -43996,Dead Sleep,Greg Iles,4.05,0451206525,9780451206527,eng,452,8124,475,7/2/2002,Berkley Books -44001,Small Island,Andrea Levy,3.95,0312424671,9780312424671,eng,441,21165,1145,4/1/2005,Picador USA -44002,Never Far From Nowhere,Andrea Levy,3.70,0747252130,9780747252139,eng,282,648,42,8/8/1996,Tinder Press -44011,Shield of Thunder (Troy #2),David Gemmell/Željko Petrović,4.36,0593052226,9780593052228,eng,480,7356,171,9/1/2006,Bantam Press -44012,Shield of Thunder (Troy #2),David Gemmell,4.36,0345477014,9780345477019,ale,512,102,16,3/27/2007,Ballantine Books -44018,Historia de una Gaviota y del Gato Que le Enseñó a Volar,Luis Sepúlveda/Chris Sheban,4.14,0439560268,9780439560269,spa,128,9,1,9/1/2003,Arthur A. Levine Books -44022,Full Circle: A South American Journey,Luis Sepúlveda/Chris Andrews,3.77,0864424655,9780864424655,eng,192,56,9,12/31/1996,Lonely Planet -44030,Looking East,Steve McCurry,4.55,0714846376,9780714846378,eng,124,83,8,9/1/2006,Phaidon Press -44034,Masters of Small Worlds: Yeoman Households Gender Relations and the Political Culture of the Antebellum South Carolina Low Country,Stephanie McCurry,3.69,0195117956,9780195117950,eng,344,98,6,11/1/1997,Oxford University Press USA -44039,Borges and The Eternal Orangutans,Luis Fernando Verissimo/Margaret Jull Costa,3.81,081121592X,9780811215923,eng,135,567,80,5/17/2005,New Directions -44045,A Universal History of Iniquity,Jorge Luis Borges/Andrew Hurley,3.97,0142437891,9780142437896,eng,128,3101,129,7/27/2004,Penguin Classics -44046,Jorge Luis Borges,Nextext/McDougal Publishing Staff,3.50,0618048235,9780618048236,spa,223,2,0,2/25/2000,Houghton Mifflin -44053,Odes to Common Things,Pablo Neruda/Ferris Cook/Ken Krabbenhoft,4.39,0821220802,9780821220801,eng,152,1885,105,5/1/1994,Bulfinch -44067,Full Woman Fleshly Apple Hot Moon: Selected Poems,Pablo Neruda/Stephen Mitchell,4.45,0060928778,9780060928773,eng,288,1018,66,2/11/1998,Harper Perennial -44086,Maps for Lost Lovers,Nadeem Aslam,3.78,1400076978,9781400076970,eng,400,2127,277,5/9/2006,Vintage -44089,Phantom Pain,Arnon Grunberg/Sam Garrett,3.34,1590511263,9781590511268,en-US,288,406,11,5/15/2004,Other Press (NY) -44100,The Ethics and Politics of Asylum: Liberal Democracy and the Response to Refugees,Matthew J. Gibney,3.55,0521009375,9780521009379,eng,287,10,2,7/8/2004,Cambridge University Press -44101,Arkham Asylum: Living Hell,Dan Slott/Ryan Sook/Wade Von Grawbadger/Jim Royal,3.81,1401201938,9781401201937,eng,144,1709,88,3/1/2004,DC Comics -44128,Blackout (Kat Bronsky #2),John J. Nance,3.96,0330481916,9780330481915,eng,672,572,36,12/9/2000,Pan Books -44131,Design Like You Give a Damn: Architectural Responses to Humanitarian Crises,Architecture For Humanity/Cameron Sinclair,4.12,1933045256,9781933045252,eng,336,792,27,1/15/2006,US Green Building Council -44133,The Winter's Tale,William Shakespeare/Susan Snyder/Deborah T. Curren-Aquino,3.70,0521293731,9780521293730,eng,279,18126,587,3/1/2007,Cambridge University Press -44145,The Bar on the Seine,Georges Simenon/David Watson,3.69,0143038311,9780143038313,en-US,160,380,54,12/26/2006,Penguin Books -44146,Maigret in Holland,Georges Simenon,3.59,0156028522,9780156028523,en-US,180,265,20,6/16/2003,Mariner Books -44147,The Man Who Watched Trains Go By,Georges Simenon/Marc Romano/D. Thin/Luc Sante,3.85,1590171497,9781590171493,eng,203,1392,86,11/7/2005,New York Review of Books -44148,Maigret and the Killer,Georges Simenon/Lyn Moir,3.86,0156028417,9780156028417,en-US,168,471,29,6/16/2003,Mariner Books -44149,Lock 14,Georges Simenon/Robert Baldick,3.63,0143037277,9780143037279,en-US,154,406,45,7/25/2006,Penguin Books -44151,The Madman of Bergerac,Georges Simenon,3.77,0141187263,9780141187266,eng,160,7,1,12/4/2003,Penguin Books Ltd -44153,Dirty Snow,Georges Simenon/Marc Romano/William T. Vollmann,3.93,1590170431,9781590170434,eng,244,1780,220,8/31/2003,NYRB Classics -44156,The Man Who Wasn't Maigret: A Portrait of Georges Simenon,Patrick Marnham,4.08,0156000598,9780156000598,eng,404,44,7,4/15/1994,Mariner Books -44157,Maigret à New York (Maigret #27),Georges Simenon,3.55,2253142425,9782253142423,fre,189,315,15,12/4/2002,Presses de La Cite -44158,The Engagement,Georges Simenon/Anna Moschovakis/John N. Gray,3.75,1590172280,9781590172285,en-US,135,494,67,3/6/2007,New York Review of Books -44160,Mon Ami Maigret,Georges Simenon,3.62,2253142441,9782253142447,fre,219,37,6,4/23/2003,Livre de Poche -44162,Maigret and the Headless Corpse,Georges Simenon/Eileen Ellenbogen,3.81,0156551446,9780156551441,eng,196,392,37,6/26/1985,Mariner Books -44164,Maigret Loses His Temper (Maigret #61),Georges Simenon,3.83,0156028476,9780156028479,eng,144,370,26,6/16/2003,Mariner Books -44170,The Looking Glass Wars,Frank Beddor,3.93,0803731531,9780803731530,eng,364,37148,3142,9/26/2006,Dial Books -44175,Rash,Pete Hautman,3.75,0689868014,9780689868016,eng,256,2994,459,6/1/2006,Simon Schuster Books for Young Readers -44176,Saints at the River,Ron Rash,3.81,0312424914,9780312424916,eng,239,2967,335,7/1/2005,Picador USA -44179,The World Made Straight,Ron Rash,3.87,0312426607,9780312426606,eng,289,2143,254,3/20/2007,Picador USA -44181,Eureka Mill,Ron Rash,4.20,189188526X,9781891885266,eng,64,155,15,9/1/2001,Hub City Press -44183,Chemistry and Other Stories,Ron Rash,4.19,0312425082,9780312425081,eng,230,601,79,9/5/2000,St. Martins Press-3PL -44184,Monster,Walter Dean Myers,3.72,0064407314,9780064407311,eng,281,56171,5341,3/5/2019,Amistad -44185,The Gospel of the Flying Spaghetti Monster,Bobby Henderson,3.93,0812976568,9780812976564,eng,169,3248,341,3/28/2006,Villard -44186,The Monster at the End of this Book,Jon Stone/Michael J. Smollin,4.44,037582913X,9780375829130,eng,32,114297,2565,5/11/2004,Golden Books -44187,The Sea of Monsters (Percy Jackson and the Olympians #2),Rick Riordan,4.24,1423103343,9781423103349,eng,280,10551,1205,4/1/2007,Disney Hyperion Books -44188,Monster: The Autobiography of an L.A. Gang Member,Sanyika Shakur,3.97,0802141447,9780802141446,en-GB,400,4239,350,6/29/2004,Grove Press -44190,Monster Island (Monster Island #1),David Wellington,3.60,1560258500,9781560258506,eng,282,9808,497,3/24/2006,Running Press Adult -44208,The Frog King,Frank McConnell,3.60,0802757480,9780802757487,eng,226,10,1,7/1/1990,Walker & Company -44215,I Should Be Extremely Happy in Your Company: A Novel of Lewis and Clark,Brian Hall,3.35,0142003719,9780142003718,en-US,432,339,76,12/30/2003,Penguin -44217,D.B.,Elwood Reid,3.23,0385497393,9780385497398,eng,356,53,8,7/12/2005,Anchor Books -44224,Lincoln,Gore Vidal,4.21,8448306996,9788448306991,spa,354,5,0,7/30/2006,Acento Editorial -44225,Lincoln (Narratives of a Golden Age),Gore Vidal,4.21,0349105308,9780349105307,en-GB,736,29,4,4/21/1994,Abacus Books -44229,The Silver Pigs (Marcus Didius Falco #1),Lindsey Davis,3.94,0345369076,9780345369079,eng,241,144,26,2/13/1991,Fawcett Books -44230,The Silver Pigs (Marcus Didius Falco #1),Lindsey Davis,3.94,031235777X,9780312357771,eng,329,8882,561,10/3/2006,Minotaur Books -44231,The Silver Pigs,Lindsey Davis/Mary Cutler/Anton Lesser/Fritha Goodey,3.94,056352569X,9780563525691,eng,2,5,0,2/7/2005,BBC Audiobooks -44233,Judas Pig,Horace Silver,4.27,1904316344,9781904316343,eng,345,63,9,7/1/2004,Do-Not Press -44236,The Civil War Vol. 1: Fort Sumter to Perryville,Shelby Foote,4.42,0394746236,9780394746234,eng,856,9760,346,11/12/1986,Vintage -44244,The Beleaguered City: The Vicksburg Campaign,Shelby Foote,4.22,0679601708,9780679601708,eng,368,271,25,1/30/2000,Modern Library -44246,Stars in Their Courses: The Gettysburg Campaign June-July 1863,Shelby Foote,4.44,0679601120,9780679601128,eng,304,1464,88,6/28/1994,Modern Library (NY) -44254,La telaraña de Carlota,E.B. White/Guillermo Solana/Garth Williams,4.17,006075740X,9780060757403,spa,224,225,38,10/4/2005,HarperCollins Espanol -44255,Toujours Provence,Peter Mayle,4.02,0679736042,9780679736042,eng,241,25092,432,6/2/1992,Vintage -44269,The American Heritage New History of the Civil War,Bruce Catton/James M. McPherson,4.11,1586631985,9781586631987,eng,630,104,2,10/1/2001,MetroBooks (NY) -44284,The Confident Child,Terri Apter,3.63,0393040585,9780393040586,eng,270,13,5,1/1/1997,W. W. Norton & Company -44296,Your Child's Self-Esteem: Step-by-Step Guidelines for Raising Responsible Productive Happy Children,Dorothy Corkille Briggs,4.27,0385040202,9780385040204,en-US,368,184,29,6/15/1988,Harmony -44300,Smart Discipline: Fast Lasting Solutions for Your Child's Self-Esteem and Your Peace of Mind,Larry J. Koenig,3.99,0060936665,9780060936662,en-US,208,13,2,3/2/2004,William Morrow Paperbacks -44309,Reading in the Dark,Seamus Deane,3.73,0375700234,9780375700231,en-US,256,3237,227,2/24/1998,Vintage -44312,Alphabet Weekends,Elizabeth Noble,3.59,0061122181,9780061122187,en-US,448,5796,386,1/23/2007,William Morrow Paperbacks -44321,A Cargo of Women: Susannah Watson and the Convicts of the Princess Royal,Babette Smith,3.58,1877058335,9781877058332,eng,264,0,0,6/1/2005,Rosenberg Publishing -44323,The Rose and the Beast: Fairy Tales Retold,Francesca Lia Block,3.77,0064407454,9780064407458,en-US,240,6872,395,8/7/2001,Joanna Cotler Books/HarperCollinsPublishers -44325,I Was a Teenage Fairy,Francesca Lia Block,3.82,0064408620,9780064408622,eng,192,6599,236,5/3/2000,HarperTeen -44328,Firebirds Rising: An Anthology of Original Science Fiction and Fantasy,Sharyn November/Francesca Lia Block/Diana Wynne Jones/Ellen Klages/Sharon Shinn/Patricia A. McKillip/Emma Bull/Kelly Link/Tamora Pierce/Nina Kiriki Hoffman/Alison Goodman/Charles de Lint/Kara Dalkey/Alan Dean Foster/Carol Emshwiller/Tanith Lee/Pamela Dean,3.92,0142405493,9780142405499,eng,530,2819,127,4/6/2006,Firebird -44331,Witch Baby (Weetzie Bat #2),Francesca Lia Block,4.18,0064470652,9780064470650,eng,128,3576,110,1/1/1992,HarperTeen -44349,Goat Girls (Weetzie Bat #2-3),Francesca Lia Block,4.42,0060594349,9780060594343,en-US,240,469,5,7/6/2004,HarperTeen -44350,Beautiful Boys (Weetzie Bat #4-5),Francesca Lia Block,4.43,0060594357,9780060594350,en-US,304,413,5,7/6/2004,HarperTeen -44353,Weetzie Bat (Weetzie Bat #1),Francesca Lia Block,3.74,0060736259,9780060736255,eng,128,13013,1025,7/6/2004,HarperTeen -44361,Velvet Elvis: Repainting the Christian Faith,Rob Bell,3.78,031026345X,9780310263456,eng,194,20131,848,7/31/2005,Zondervan Publishing Company -44380,Man Walks Into a Room,Nicole Krauss,3.33,0385721919,9780385721912,eng,248,5422,554,11/11/2003,Anchor Books -44382,Testaments Betrayed: An Essay in Nine Parts,Milan Kundera/Linda Asher/فروغ پوریاوری,4.04,0060927518,9780060927516,eng,288,1294,59,8/2/1996,Harper Perennial -44399,Too Busy Not to Pray: Slowing Down to Be With God,Bill Hybels/Lavonne Neff,4.16,0830819711,9780830819713,en-US,191,9632,212,4/1/1998,InterVarsity Press -44408,Becoming a Contagious Christian,Bill Hybels/Mark Mittelberg,3.92,0310210089,9780310210085,eng,224,1315,50,4/20/1996,Zondervan -44433,Courageous Faith Through the Year,Bill Hybels/Keri Wyatt Kent,3.50,0830832947,9780830832941,eng,327,0,0,7/1/2004,IVP Books -44436,Becoming a Contagious Christian Leader's Guide: Communicating Your Faith in a Style That Fits You,Mark Mittelberg/Lee Strobel,3.75,0310257867,9780310257868,eng,299,8,1,2/12/2007,Zondervan -44439,"A" Is for Abductive : The Language of the Emerging Church,Leonard Sweet/Brian D. McLaren,3.14,0310243564,9780310243564,en-US,338,49,3,12/24/2002,Zondervan -44442,The Church on the Other Side: Doing Ministry in the Postmodern Matrix,Brian D. McLaren,3.58,0310252199,9780310252191,eng,224,205,10,1/9/2003,Zondervan -44446,Great Russian Short Stories,Paul Negri/Alexander Pushkin/Maxim Gorky/Aleksandr Ivanovich Kuprin/Leonid Andreyev/Nikolai Gogol/Ivan Turgenev/Fyodor Dostoyevsky/Leo Tolstoy/Nicholay Leskov/Vsevolod Garshin/Anton Chekhov/Theodor Sologub,4.02,048642992X,9780486429922,eng,208,162,20,7/29/2003,Dover Publications -44450,The Portable Dorothy Parker,Dorothy Parker/Marion Meade/Seth,4.34,0143039539,9780143039532,eng,626,1447,199,3/28/2006,Penguin Books -44455,Not Much Fun: The Lost Poems of Dorothy Parker,Dorothy Parker/Stuart Y. Silverstein,4.18,0743211480,9780743211482,eng,256,444,27,7/10/2001,Scribner -44458,The Collected Dorothy Parker,Dorothy Parker/Brendan Gill,4.29,014118258X,9780141182582,eng,604,1106,50,5/31/2001,Penguin Classics -44469,The Killer Angels: A Novel of the Civil War (The Civil War Trilogy #2),Michael Shaara,4.32,0679643249,9780679643241,eng,337,425,48,12/23/2004,Modern Library -44470,The Killer Angels,Michael Shaara/Stephen Hoye,4.32,0739309056,9780739309056,en-US,13,92,37,5/11/2004,Random House Audio Publishing Group -44471,The Killer Angels (The Civil War Trilogy #2),Michael Shaara,4.32,1841580821,9781841580821,eng,395,318,45,4/1/2001,Birlinn Ltd -44478,Architecture and Tourism: Perception Performance and Place,D. Medina Lasansky,3.20,1859737099,9781859737095,eng,320,5,1,9/4/2004,Bloomsbury Academic -44481,The Last Eyewitness: The Final Week,Chris Seay/Rob Pepper/Brian D. McLaren,3.65,0529123452,9780529123459,eng,144,23,6,5/10/2006,Thomas Nelson -44505,The Best American Essays 2006,Lauren Slater/Robert Atwan,3.88,0618705295,9780618705290,en-US,304,434,34,10/11/2006,Mariner Books -44508,The Best American Spiritual Writing 2006,Philip Zaleski/Peter J. Gomes,3.50,0618586458,9780618586455,eng,336,29,11,10/11/2006,Mariner Books -44509,The Best American Travel Writing 2006,Tim Cahill,3.94,0618582150,9780618582150,eng,352,492,47,10/11/2006,Mariner Books -44510,The Best American Crime Writing 2006,Mark Bowden/Otto Penzler/Thomas H. Cook/S.C. Gwynne/Paige Williams/Mary Battiata/Howard Blum/John Connolly/Richard Rubin/Chuck Hustmyre/David Friedman/Denise Grollmus/Deanne Stillman/Jeffrey Toobin/Skip Hollandsworth/Jimmy Breslin/John Heilemann/Mark Jacobson/Robert Nelson,4.00,0060815523,9780060815523,eng,352,206,18,9/5/2006,Ecco -44511,How Democratic Is the American Constitution?,Robert A. Dahl,3.64,0300095244,9780300095241,en-US,240,466,48,11/10/2003,Yale University Press -44513,The Roald Dahl Omnibus: Perfect Bedtime Stories for Sleepless Nights,Roald Dahl,4.35,0880291230,9780880291231,eng,681,2276,170,6/13/1993,Barnes & Noble -44514,A Preface to Democratic Theory,Robert A. Dahl,3.63,0226134342,9780226134345,en-GB,200,88,8,9/15/2006,University of Chicago Press -44520,Matilda,Roald Dahl/Joely Richardson,4.31,0060582545,9780060582548,eng,5,56,18,1/20/2004,Festival Books -44521,Kiss Kiss,Roald Dahl,4.10,0140018328,9780140018325,eng,231,5961,347,10/26/1987,Penguin Books -44524,Roald Dahl: A Biography,Jeremy Treglown,3.62,0156001993,9780156001991,eng,336,221,26,6/5/1995,Mariner Books -44528,Matilda,Roald Dahl/Rula Lenska/Sian Thomas/Christopher Timothy,4.31,0141805625,9780141805627,eng,1,6,0,3/3/2005,Puffin Audiobooks -44529,The Adventures of Charlie and Mr. Willy Wonka: A Fully Dramatized Recording,Roald Dahl,4.13,0141805617,9780141805610,en-GB,4,11,2,11/25/2004,Puffin -44531,Fantastic Mr Fox and Other Animal Stories,Roald Dahl,3.95,0141805641,9780141805641,eng,4,25,1,11/25/2004,Puffin -44533,Hood,Emma Donoghue,3.59,1555834531,9781555834531,eng,309,1895,170,7/1/1998,Alyson Books -44535,Landing,Emma Donoghue,3.41,0151012970,9780151012978,eng,336,3032,309,5/7/2007,Houghton Mifflin Harcourt -44536,Touchy Subjects,Emma Donoghue,3.49,0156032619,9780156032612,eng,288,14,2,5/7/2007,Mariner Books -44537,Kissing the Witch: Old Tales in New Skins,Emma Donoghue,3.89,0064407721,9780064407724,eng,228,6097,592,2/27/1999,HarperTeen -44538,Life Mask,Emma Donoghue,3.50,0156032643,9780156032643,eng,672,1883,185,9/5/2005,Mariner Books -44539,Stir-Fry,Emma Donoghue,3.59,1555837239,9781555837235,eng,240,1565,97,12/29/2006,Alyson Books -44540,Poems Between Women: Four Centuries of Love Romantic Friendship and Desire,Emma Donoghue,3.88,0231109253,9780231109253,en-US,256,68,4,3/19/1999,Columbia University Press -44541,What Sappho Would Have Said,Emma Donoghue,3.62,0241136822,9780241136829,eng,256,24,3,4/24/1997,Hamish Hamilton Ltd -44542,Mammoth Book Of Lesbian Short Stories (Mammoth Books),Emma Donoghue,3.65,1841190497,9781841190495,eng,512,7,1,6/24/1999,Robson Books London -44543,Slammerkin,Emma Donoghue,3.71,0156007479,9780156007474,eng,410,12551,1251,5/1/2002,Mariner Books -44545,We Are Michael Field,Emma Donoghue/Nick Drake,3.55,1899791663,9781899791668,en-US,152,50,4,10/1/1998,Absolute Press -44559,Life is Elsewhere,Milan Kundera/Aaron Asher,3.95,0060997028,9780060997021,eng,432,10129,306,7/25/2000,Harper Perennial -44567,Todo está iluminado,Jonathan Safran Foer,3.90,030734312X,9780307343123,spa,352,8,0,7/5/2005,Debolsillo -44574,Hart's Hope,Orson Scott Card,3.47,0812521358,9780812521351,eng,261,32,5,3/28/1992,Tor Books -44585,Firefighters in the Dark,Dashka Slater/Nicoletta Ceccoli,3.60,0618554599,9780618554591,en-US,32,89,17,10/2/2006,HMH Books for Young Readers -44595,Wide Sargasso Sea,Jean Rhys,3.58,0140818030,9780140818031,en-US,168,878,79,4/26/2001,Penguin Classics -44597,Wide Sargasso Sea,Jean Rhys,3.58,0140274219,9780140274219,eng,160,21384,1386,9/3/1998,Penguin Books -44612,Marcel Proust: On Art and Literature 1896-1919,Marcel Proust/Sylvia Townsend Warner,4.06,0786704543,9780786704545,eng,416,73,5,8/5/1997,Carroll & Graf Publishers -44613,Remembrance of Things Past (Boxed Set),Marcel Proust/C.K. Scott Moncrieff/Frederick A. Blossom/Joseph Wood Crutch,4.34,0701125594,9780701125592,eng,3400,6,1,3/5/1981,Chatto & Windus -44617,The Complete Green Letters,Miles J. Stanford,4.20,0310330513,9780310330516,en-US,336,293,32,1/1/1984,Zondervan -44621,Naked,David Sedaris/Amy Sedaris,4.09,1586212230,9781586212230,en-US,3,308,62,10/1/2001,Grand Central Publishing -44628,The Last Shot: City Streets Basketball Dreams,Darcy Frey,4.17,0618446710,9780618446711,en-CA,233,5106,155,3/3/2004,Mariner Books -44630,The Inner Sanctum,Stephen W. Frey,3.64,0451190149,9780451190147,eng,448,472,36,7/1/1998,Signet -44634,Life on Planet Rock: From Guns N' Roses to NIRVana a Backstage Journey Through Rock's Most Debauched Decade,Lonn M. Friend,3.58,0767922085,9780767922081,eng,320,241,30,7/11/2006,Three Rivers Press -44644,Principle-Centered Leadership,Stephen R. Covey,4.10,0671792806,9780671792800,eng,336,15003,140,10/1/1992,Free Press -44649,7 hábitos de las familias altamente efectivas,Stephen R. Covey,4.16,1400083419,9781400083411,spa,412,7,0,9/1/2003,Grijalbo -44652,Fablehaven (Fablehaven #1),Brandon Mull,4.10,1590385810,9781590385814,eng,351,117341,8718,6/7/2006,Shadow Mountain -44684,Queen of Sorcery (The Belgariad #2),David Eddings,4.14,0552148083,9780552148085,eng,447,453,20,8/3/2000,Corgi Books (Adult) -44685,Castle of Wizardry (The Belgariad #4),David Eddings,4.16,0552148105,9780552148108,eng,443,434,12,9/21/1984,Corgi -44705,The Leadership Challenge: Skills for Taking Charge,Warren G. Bennis,0.00,088684049X,9780886840495,eng,60,0,0,12/1/1985,AMR/Advanced Management Reports -44734,Fullmetal Alchemist Vol. 6 (Fullmetal Alchemist #6),Hiromu Arakawa/Akira Watanabe,4.58,1421503190,9781421503196,eng,200,10052,201,3/21/2006,VIZ Media LLC -44735,The Elements of Typographic Style,Robert Bringhurst,4.24,0881792063,9780881792065,en-US,352,7564,206,9/27/2004,Hartley & Marks Publishers -44737,The Elements of Visual Style: The Basics of Print Design for Every PC and Mac User,Robert W. Harris,3.21,0618772456,9780618772452,en-US,177,14,3,5/1/2007,Houghton Mifflin Harcourt -44739,Graphic Design Solutions,Robin Landa,4.04,1401881548,9781401881542,en-US,403,147,12,4/27/2005,Delmar Thomson Learning -44748,The Mask of the Enchantress,Victoria Holt,3.85,0449210847,9780449210840,eng,0,21,1,10/12/1981,Ivy Books -44749,Secret for a Nightingale,Victoria Holt,3.82,0449212963,9780449212967,eng,396,1873,34,10/12/1987,Ivy Books -44758,The Silk Vendetta,Victoria Holt,3.82,0449215482,9780449215487,eng,373,2261,47,11/27/1988,Ivy Books -44759,Curse Of The Kings,Victoria Holt,3.76,044920068X,9780449200681,eng,304,15,1,6/12/1985,Fawcett Crest Books -44766,Purple Cane Road (Dave Robicheaux #11),James Lee Burke,4.15,0440224047,9780440224044,en-US,387,5467,246,5/8/2001,Dell -44781,Parliament of Whores: A Lone Humorist Attempts to Explain the Entire U.S. Government,P.J. O'Rourke,4.01,0802139701,9780802139702,en-US,240,2762,180,1/7/2003,Grove Press -44783,Monkeewrench (Monkeewrench #1),P.J. Tracy,4.12,045121157X,9780451211576,eng,421,8031,618,4/6/2004,G.P. Putnam's Sons -44787,P. J. Funnybunny Camps Out,Marilyn Sadler/Roger Bollen,3.87,0679832696,9780679832690,eng,32,169,16,2/22/1994,Random House Books for Young Readers -44790,Lo único que no podrás hacer en el cielo,Mark Cahill,4.13,0964366568,9780964366565,spa,255,15,0,3/1/2007,Mark Cahill Ministries -44795,The Moon And Sixpence,W. Somerset Maugham,4.13,0099284766,9780099284765,eng,215,447,53,9/2/1999,Vintage Classics -44801,De profundis,Oscar Wilde,4.18,8484034348,9788484034346,spa,192,13,2,9/1/2004,Edimat Libros -44815,Un amour de swann (À la recherche du temps perdu #1.2),Marcel Proust,3.92,2035882133,9782035882134,fre,432,4,0,6/1/2006,Larousse -44816,Serious Girls,Maxine Swann,3.20,0312288018,9780312288013,eng,240,207,28,12/1/2004,Picador USA -44821,Deadly Love (Francesca Cahill Deadly #1),Brenda Joyce,3.96,0312977670,9780312977672,eng,338,755,52,1/15/2001,St. Martin's -44824,Exiled in Paris: Richard Wright James Baldwin Samuel Beckett and Others on the Left Bank,James Campbell,4.03,0520234413,9780520234413,eng,304,35,6,2/1/2003,University of California Press -44826,The Price of the Ticket: Collected Nonfiction 1948-1985,James Baldwin,4.70,0312643063,9780312643065,eng,712,404,30,9/15/1985,St. Martin's Press -44836,2006 International Building Code,International Code Council (ICC),3.27,1580012515,9781580012515,eng,664,11,1,3/6/2006,International Code Council -44841,Einstein's Monsters,Martin Amis/Erroll McDonald,3.40,0679729968,9780679729969,eng,151,820,33,1/5/2011,Vintage International -44849,Code Check Electrical: An Illustrated Guide to Wiring a Safe House,Michael Casey/Redwood Kardon/Douglas Hansen,4.67,1561587389,9781561587384,eng,29,3,0,11/11/2005,Taunton Press -44851,International Building Code 2003,International Code Council (ICC),3.62,1892395568,9781892395566,eng,656,15,2,2/16/2003,International Code Council -44865,The Major Works,Alexander Pope/Pat Rogers,3.87,019920361X,9780199203611,eng,768,213,8,11/6/2006,Oxford University Press -44866,Poetry and Prose of Alexander Pope (Riverside Editions),Alexander Pope/Aubrey Williams,3.97,0395051568,9780395051566,eng,512,93,5,1/2/1968,Houghton Mifflin Company -44877,Illustrated Guide to the NEC: Based on the 2005 National Electric Code,Charles R. Miller,4.06,1401850685,9781401850685,eng,452,2,0,12/1/2004,Cengage Learning -44879,Surfer's Code: Twelve Simple Lessons For Riding Through Life,Shaun Tomson/Patrick Moser,3.82,1423600762,9781423600763,en-US,192,114,17,9/1/2006,Gibbs Smith Publishers -44881,Code Orange,Caroline B. Cooney,3.63,0385732597,9780385732598,eng,200,5889,693,9/27/2005,Delacorte Press -44882,Code,Charles Petzold,4.39,0735611319,9780735611313,eng,400,4919,418,10/21/2000,Microsoft Press -44883,Brando Unzipped: A Revisionist and Very Private Look at America's Greatest Actor,Darwin Porter,3.51,0974811823,9780974811826,eng,625,81,16,1/5/2006,Blood Moon Productions -44891,The Kid Stays in the Picture,Robert Evans,3.92,0571219314,9780571219315,eng,462,2209,176,2/19/2004,Faber & Faber -44896,Measle and the Dragodon,Ian Ogilvy,3.97,0060586907,9780060586904,eng,352,263,13,9/1/2006,HarperTrophy -44898,The Unpublished David Ogilvy,David Ogilvy/Joel Raphaelson,4.16,0517566095,9780517566091,eng,178,255,19,10/21/1987,Crown -44900,The Alchemist’s Kitchen: Extraordinary Potions & Curious Notions,Guy Ogilvy,4.03,0802715400,9780802715401,eng,58,136,12,10/17/2006,Bloomsbury -44905,Writing Down the Bones: Freeing the Writer Within,Natalie Goldberg,4.19,1590303164,9781590303160,eng,312,21673,1395,1/10/2006,Shambhala Publications -44906,Black Hawk Down: A Story of Modern War,Mark Bowden,4.28,0451205146,9780451205148,eng,496,368,39,1/1/2002,Signet -44916,Writing Secure Code,Michael Howard/David LeBlanc,4.01,0735617228,9780735617223,en-US,768,328,10,12/14/2002,Microsoft Press -44919,Working Effectively with Legacy Code,Michael C. Feathers,4.14,0131177052,0076092025986,eng,464,3450,195,9/1/2004,Prentice Hall -44921,Explode the Code 1,Nancy Hall,4.37,0838814603,9780838814604,eng,99,89,10,1/1/2001,School Specialty Publishing -44925,Down the Long Hills,Louis L'Amour,4.07,0553280813,9780553280814,eng,208,2503,141,9/1/1984,Bantam -44930,The Glass Books of the Dream Eaters (Miss Temple Doctor Svenson and Cardinal Chang #1),Gordon Dahlquist,3.50,0385340354,9780385340359,en-US,760,3678,459,12/15/2006,Bantam Books -44933,Breaking the Maya Code,Michael D. Coe,4.03,0500281335,9780500281338,eng,304,402,42,10/1/1999,Thames Hudson -44936,Refactoring: Improving the Design of Existing Code,Martin Fowler/Kent Beck/Don Roberts/Erich Gamma,4.24,0201485672,9780201485677,eng,431,6086,222,7/8/1999,Addison-Wesley Professional -44941,The Heart's Code: Tapping the Wisdom and Power of Our Heart Energy,Paul Pearsall/Gary E. Schwartz/Linda G. Russek,4.01,0767900952,9780767900959,en-US,304,267,34,4/6/1999,Harmony -44949,Write Great Code: Volume 1: Understanding the Machine,Randall Hyde,3.92,1593270038,9781593270032,eng,456,145,12,11/8/2004,No Starch Press -44950,Code of the Samurai: A Modern Translation of the Bushido Shoshinshu of Taira Shigesuke,Daidōji Yūzan/Oscar Ratti/Thomas Cleary,4.04,0804831904,9780804831901,eng,128,2274,87,9/15/1999,Tuttle Publishing -44954,Code: And Other Laws of Cyberspace,Lawrence Lessig,3.94,0465039138,9780465039135,eng,320,212,12,7/13/2000,Basic Books -44958,Landscape Within: Insights and Inspirations for Photographers,David Ward/Joe Cornish,4.36,190253834X,9781902538341,eng,128,22,3,11/1/2004,Aurum Press -44972,Bob Marley - Songs of Freedom,Bob Marley,4.48,0793536693,9780793536696,eng,200,16,1,12/1/1995,Hal Leonard Publishing Corporation -44976,Such a Good Girl and Other Crime Stories,Ed Gorman/Richard Laymon,3.60,0786229985,9780786229987,eng,256,5,1,1/7/2001,Five Star (ME) -44979,Howards End,E.M. Forster/Nadia May,3.96,0786168471,9780786168477,eng,9,32,16,6/1/2007,Blackstone Audiobooks -44982,Three Complete Novels: Howards End A Room with a View Where Angels Fear to Tread,E.M. Forster/Neil Felshman,4.22,0517091267,9780517091265,eng,503,389,31,2/20/1993,Gramercy Books -44987,Kim,Rudyard Kipling,3.72,0486445089,9780486445083,eng,240,159,19,11/8/2005,Dover Publications -44988,Kim,Rudyard Kipling/Pankaj Mishra,3.72,0812971345,9780812971347,eng,306,113,22,2/10/2004,Modern Library -45000,The Island at the Center of the World: The Epic Story of Dutch Manhattan and the Forgotten Colony That Shaped America,Russell Shorto,4.14,1400078679,9781400078677,eng,384,6919,777,4/12/2005,Vintage -45017,The Bard's Tale: Prima's Official Strategy Guide,Craig Keller,4.17,0761545646,9780761545644,eng,144,6,0,10/26/2004,Prima Games -45018,The Free Bards (Bardic Voices #1-3),Mercedes Lackey,4.18,067187778X,9780671877781,eng,712,1530,20,5/1/1997,Baen -45019,Insurgency and Terrorism: From Revolution to Apocalypse,Bard E. O'Neill,3.91,1574881728,9781574881721,eng,240,133,8,6/1/2005,Potomac Books -45020,Shakespeare's Landlord (Lily Bard #1),Charlaine Harris,3.76,0425206866,9780425206867,eng,216,22721,1111,11/1/2005,Berkley -45025,Liturgies of the Western Church,Bard Thompson,3.96,0800614283,9780800614287,eng,434,52,8,9/1/1980,Augsburg Fortress Publishing -45030,Bedlam's Bard (Bedlam Bard #1-2),Mercedes Lackey/Ellen Guon,3.95,141653282X,9781416532828,eng,617,3016,30,6/30/2006,Baen Books -45035,Mansfield Park,Jane Austen/James Kinsley/Jane Stabler,3.86,019280264X,9780192802644,eng,418,1492,73,10/2/2003,Oxford University Press -45036,Walking the Rez Road,Jim Northrup,4.15,089658321X,9780896583214,eng,176,153,16,10/26/1995,Voyageur Press -45037,Mansfield Park,Jane Austen/Carol Shields,3.86,0375757813,9780375757815,eng,420,328,38,10/9/2001,Modern Library -45041,Mansfield Park,Jane Austen,3.86,0755331478,9780755331475,eng,454,142,18,5/15/2006,Headline -45046,Mansfield Park,Jane Austen,3.86,0140620664,9780140620665,eng,479,505,54,5/26/1994,Penguin -45052,The Mini Zen Gardening Kit,Daniel Abdal-Hayy Moore,3.16,0762408286,9780762408283,eng,40,14,1,9/4/2000,RP Minis -45054,The Zen Gardening Kit/Book and Japanese Rock Garden,Daniel Abdal-Hayy Moore,3.16,1561381489,9781561381487,eng,96,29,2,11/23/1992,Running Press Book Publishers -45057,Stalky & Co.,Rudyard Kipling,3.89,1406503258,9781406503258,eng,212,552,42,12/21/2005,Dodo Press -45066,The Mill on the Floss,George Eliot/Carol T. Christ,3.79,0393963322,9780393963328,eng,640,133,16,11/17/1993,W. W. Norton & Company -45085,Zen in Your Garden,Jenny Hendy,3.60,1841811106,9781841811109,eng,128,7,2,1/4/2003,Godsfield Press Ltd -45092,Agnes Grey,Anne Brontë/Fred Schwarzbach,3.68,1593083238,9781593083236,eng,224,418,77,10/1/2005,Barnes Noble Classics -45101,The Mad Ship (Liveship Traders #2),Robin Hobb,4.23,0006498868,9780006498865,eng,906,38753,893,2/4/2008,Harper Voyager -45102,Ship of Destiny (Liveship Traders #3),Robin Hobb,4.22,0553575651,9780553575651,eng,789,46646,1014,11/27/2001,Spectra Books -45106,Forest Mage (Soldier Son #2),Robin Hobb,3.39,0060757639,9780060757632,eng,718,13716,393,8/29/2006,Harper Voyager -45112,Assassin's Quest (Farseer Trilogy #3),Robin Hobb,4.18,0553565699,9780553565690,eng,757,67473,1967,1/5/1998,Spectra -45113,Der lohfarbene Mann (Die zweiten Chroniken von Fitz dem Weitseher #1),Robin Hobb,4.31,3404283368,9783404283361,ger,880,8,0,4/1/2003,Lübbe -45114,Disordered Minds,Minette Walters,3.78,0425199355,9780425199350,eng,544,2968,123,12/7/2004,Berkley -45116,The Scold's Bridle,Minette Walters,3.95,0312956126,9780312956127,eng,384,7019,113,10/15/1995,St. Martin's Press -45117,Fox Evil,Minette Walters,3.60,0425214923,9780425214923,en-US,400,2777,119,11/7/2006,Berkley Trade -45118,The Devil's Feather,Minette Walters,3.63,0307264629,9780307264626,eng,349,2343,153,8/22/2006,Alfred A. Knopf -45119,The Breaker,Minette Walters,3.62,0515128821,9780515128826,eng,384,2919,142,8/1/2000,Jove -45121,The Echo,Minette Walters,3.63,0515122564,9780515122565,eng,368,3017,124,4/1/1998,Jove Books -45149,A Painted House,John Grisham,3.70,0099416158,9780099416159,eng,466,484,48,9/29/2002,Arrow Books -45159,D is for Dahl: A gloriumptious A-Z guide to the world of Roald Dahl,Wendy Cooling/Quentin Blake/Roald Dahl,4.08,0670060232,9780670060238,en-US,160,1246,54,6/2/2005,Viking Children's Books -45161,The Roald Dahl Audio Collection,Roald Dahl,4.41,0061214965,9780061214967,en-US,4,199,36,2/20/2007,HarperCollins Publishers -45169,Step on a Crack (Michael Bennett #1),James Patterson/Michael Ledwidge,4.01,0316013943,9780316013949,eng,383,37552,1592,2/6/2007,Little Brown and Company -45179,The Railway Children,E. Nesbit,4.01,0140621628,9780140621624,en-GB,212,177,16,4/1/1995,Penguin Books Limited (UK) -45181,Five Children and It (Five Children #1),E. Nesbit,3.88,0140367357,9780140367355,eng,237,18723,722,12/1/1996,Puffin -45182,Five Children and It,E. Nesbit/Gillian Avery,3.88,0143039156,9780143039150,eng,240,63,7,12/28/2004,Penguin Classics -45183,The Enchanted Castle,E. Nesbit/H.R. Millar,3.85,0140367438,9780140367430,eng,291,6352,397,7/1/1994,Puffin -45193,Treasure Island #2: Off to Sea (Easy Reader Classics),Catherine Nichols/Sally Wern Comport/Robert Louis Stevenson,4.17,1402732988,9781402732980,eng,32,6,0,5/28/2006,Sterling -45194,A Passage to India: A Reader's Guide to Essential Criticism,Betty Jay,3.56,184046027X,9781840460278,en-GB,176,108,6,8/16/2003,Palgrave Macmillan -45195,A Passage to India,E.M. Forster/Oliver Stallybrass/Pankaj Mishra,3.68,014144116X,9780141441160,eng,376,55810,2148,8/30/2005,Penguin Books -45201,A Passage to India,E.M. Forster,3.68,0140274235,9780140274233,en-GB,288,441,40,9/3/1998,Penguin Books -45205,No Name,Wilkie Collins/Virginia Blain,3.92,019283388X,9780192833884,eng,748,7174,297,6/25/1998,Oxford University Press -45206,Miss or Mrs?/ The Haunted Hotel/ The Guilty River,Wilkie Collins/Norman Page/Toru Sasaki,3.79,0192833073,9780192833075,eng,360,175,14,5/13/1999,Oxford University Press USA -45207,The Law and the Lady,Wilkie Collins/David Skilton,3.80,0140436073,9780140436075,en-GB,383,120,15,9/24/1998,Penguin Classics -45213,The Woman In White,Wilkie Collins,4.00,185715018X,9781857150186,en-GB,664,50,11,9/26/1991,Everyman's Library -45217,Armadale,Wilkie Collins/Catharine Peters,3.91,0192834673,9780192834676,eng,880,56,11,8/12/1999,Oxford University Press -45220,I Never Promised You a Rose Garden,Hannah Green/Joanne Greenberg,3.87,0451160312,9780451160317,eng,288,24126,609,11/7/1989,Signet -45223,I Never Promised You a Rose Garden,Hannah Green/Joanne Greenberg,3.87,0451131363,9780451131362,eng,256,2,0,3/1/1965,Signet -45234,The Gun Seller,Hugh Laurie,3.68,067102082X,9780671020828,eng,340,14495,1434,10/1/1998,Washington Square Press -45250,A Quantum Murder (Greg Mandel #2),Peter F. Hamilton,3.97,0812555244,9780812555240,eng,375,4016,95,6/15/1998,Tor Books -45251,Judas Unchained (Commonwealth Saga #2),Peter F. Hamilton,4.31,0345461673,9780345461674,en-US,1008,738,68,3/27/2007,Del Rey -45252,Pandora's Star,Peter F. Hamilton,4.24,0345461622,9780345461629,eng,768,33987,1519,3/2/2005,Del Rey -45253,Mindstar Rising (Greg Mandel #1),Peter F. Hamilton,3.92,0812590562,9780812590562,en-US,432,6192,171,5/15/1997,Tor Books -45255,The Reality Dysfunction Part 2: Expansion (Night's Dawn 1),Peter F. Hamilton,4.30,0446605166,9780446605168,eng,572,4092,39,8/1/1997,Aspect -45259,Anthony Thwaite: In Conversation With Peter Dale and Ian Hamilton,Peter Dale/Ian Hamilton/Anthony Thwaite,0.00,0953284123,9780953284122,eng,96,0,0,12/9/1999,Between the Lines Productions -45267,Doisneau,Peter Hamilton/Robert Doisneau/David Elliott,4.36,1900826240,9781900826242,eng,128,4,0,7/1/2000,Cartago -45279,Criptonomicón II: El código Pontifex,Neal Stephenson/Pedro Jorge Romero,4.10,8466616926,9788466616928,spa,496,404,17,11/1/2005,Ediciones B -45280,Quicksilver (The Baroque Cycle #1),Neal Stephenson,3.93,0434008176,9780434008179,eng,927,171,12,10/2/2003,William Heinemann -45283,Todo está iluminado,Jonathan Safran Foer,3.90,8497930975,9788497930970,spa,344,108,11,11/30/2007,DeBolsillo -45288,The Portable Walt Whitman,Walt Whitman/Michael Warner,4.33,0142437689,9780142437681,eng,570,82,5,12/30/2003,Penguin Books -45289,Walt Whitman's America,David S. Reynolds,4.17,0679767096,9780679767091,eng,672,387,43,3/19/1996,Vintage -45291,Walt Whitman: A Life,Justin Kaplan,3.99,0060535113,9780060535117,eng,464,217,17,7/8/2003,Harper Perennial Modern Classics -45292,Walt Whitman: Words for America,Barbara Kerley/Brian Selznick,4.05,0439357918,9780439357913,eng,56,258,58,10/1/2004,Scholastic Press -45294,Love Hate and Everything in Between: Expressing Emotions in Japanese,Mamiko Murakami/Ernest Reiss,3.54,4770028032,9784770028037,eng,176,27,0,3/1/2002,Kodansha -45296,Blind Willow Sleeping Woman,Haruki Murakami/Jay Rubin/Philip Gabriel,3.84,1400096081,9781400096084,eng,362,1162,132,9/1/2007,Vintage -45306,Haruki Murakami and the Music of Words,Jay Rubin,3.83,1860469868,9781860469862,eng,326,38,2,12/3/2005,Harvill Press -45310,Hard-Boiled Wonderland and the End of the World,Haruki Murakami/Alfred Birnbaum,4.15,4770015445,9784770015440,eng,400,247,41,9/1/1991,Kodansha -45312,The Wind-Up Bird Chronicle,Haruki Murakami/Jay Rubin,4.17,0679446699,9780679446699,eng,611,301,67,10/21/1997,Alfred A. Knopf -45313,After the Quake,Haruki Murakami/Jay Rubin,3.78,0375413901,9780375413902,eng,182,564,84,8/13/2002,Alfred A. Knopf -45314,Kafka on the Shore,Haruki Murakami/Philip Gabriel,4.14,1400043662,9781400043668,en-US,436,1989,315,1/26/2005,Knopf Publishing Group -45316,Sputnik Sweetheart,Haruki Murakami/Philip Gabriel,3.83,0375411690,9780375411694,eng,210,582,92,4/24/2001,Alfred A. Knopf -45325,Joseph Cornell: Secrets in a Box (Adventures in Art),Alison Baverstock/Joseph Cornell/Christopher Wynne,4.03,3791329286,9783791329284,eng,27,32,5,9/1/2003,Prestel Publishing -45334,Mandala: Luminous Symbols for Healing (with a New CD of Meditations and Exercises!),Judith Cornell/Joan Borysenko/Miron Borysenko,4.11,0835608476,9780835608473,en-US,176,73,4,9/1/2006,Quest Books -45336,Dime-Store Alchemy: The Art of Joseph Cornell,Charles Simic,4.18,1590171705,9781590171707,eng,116,70,12,9/12/2006,NYRB Classics -45337,Night Has a Thousand Eyes,Cornell Woolrich,3.77,1933648279,9781933648279,eng,344,704,74,4/1/2007,Pegasus Books -45338,Rendezvous in Black,Cornell Woolrich/Richard Dooling,3.96,0812971450,9780812971453,eng,211,1087,99,3/16/2004,Modern Library -45343,The Nixie's Song (Beyond the Spiderwick Chronicles #1),Tony DiTerlizzi/Holly Black,3.73,0689871317,9780689871313,eng,162,9927,416,9/18/2007,Simon Schuster Books for Young Readers -45348,When the Darkness Will Not Lift: Doing What We Can While We Wait for God—And Joy,John Piper,4.13,1581348762,9781581348767,eng,79,1279,126,12/14/2006,Crossway Books -45349,Desiring God: Meditations of a Christian Hedonist,John Piper,4.14,1844740447,9781844740444,en-US,391,65,9,7/16/2004,Inter-Varsity Press -45350,Suffering and the Sovereignty of God,John Piper/Justin Taylor/Mark Talbot/David A. Powlison/Steve Saint/Dustin Shramek/Carl Ellis,4.30,1581348096,9781581348095,eng,254,652,47,9/13/2006,Crossway Books -45352,When I Don't Desire God: How to Fight for Joy,John Piper,4.19,1581346522,9781581346527,eng,268,4446,218,9/21/2004,Crossway Books -45354,The Legacy of Sovereign Joy: God's Triumphant Grace in the Lives of Augustine Luther and Calvin (The Swans Are Not Silent #1),John Piper,4.27,1581348134,9781581348132,eng,158,839,65,8/11/2006,Crossway Books -45358,The Hidden Smile of God: The Fruit of Affliction in the Lives of John Bunyan William Cowper and David Brainerd (The Swans Are Not Silent #2),John Piper,4.34,1581342470,9781581342475,eng,175,675,61,1/15/2001,Crossway Books -45362,The Passion of Jesus Christ,John Piper,4.23,1581346085,9781581346084,eng,127,6164,136,1/9/2004,Crossway Books -45369,Arthur & George,Julian Barnes,3.70,1400097037,9781400097036,eng,445,11626,1141,1/9/2007,Vintage International -45378,Wartime Lies,Louis Begley,3.71,0449001172,9780449001172,eng,240,524,54,10/15/1997,Ballantine Books -45382,Schmidt Delivered (Schmidt #2),Louis Begley,3.61,0345440838,9780345440839,en-US,320,107,12,10/30/2001,Ballantine Books -45392,The Brave Women of the Gulf Wars: Operation Desert Storm and Operation Iraqi Freedom,Karen Zeinert/Mary Miller,4.00,0761327053,9780761327059,eng,112,1,0,9/1/2005,Twenty-First Century Books (CT) -45399,The Classic Ten: The True Story of the Little Black Dress and Nine Other Fashion Favorites,Nancy MacDonell Smith/Nancy MacDonell,3.43,0142003565,9780142003565,en-US,224,109,14,10/28/2003,Penguin Books -45414,The Locked Room (The New York Trilogy #3),Paul Auster,3.89,0140097368,9780140097368,en-US,192,62,3,1/5/1988,Penguin Books -45420,The Home Front,Brian Braithwaite/Noelle Walsh/Glyn Davies,3.40,0852237510,9780852237519,eng,192,1,1,2/23/1989,Ebury Press -45431,Half Moon Investigations,Eoin Colfer,3.77,0786849606,9780786849604,en-US,304,279,41,4/1/2007,Disney-Hyperion -45432,The Supernaturalist,Eoin Colfer,3.86,078685149X,9780786851492,en-US,267,24863,1001,4/20/2005,Disney-Hyperion -45436,The Wish List,Eoin Colfer,3.77,0439443369,9780439443364,eng,252,13988,589,7/1/2004,Scholastic Inc. -45438,Legend of the Worst Boy in the World,Eoin Colfer/Glenn McCoy,3.76,0786855037,9780786855032,en-US,101,328,43,5/1/2007,Hyperion Books for Children -45440,The Legend of Spud Murphy,Eoin Colfer/Glenn McCoy,3.88,0786855010,9780786855018,eng,96,92,25,9/6/2004,Disney-Hyperion -45442,La venganza de Opal (Artemis Fowl #4),Eoin Colfer/Ana Alcaina,4.05,0307344673,9780307344670,spa,368,42,2,11/1/2005,Random House Mondadori -45444,Going Potty,Eoin Colfer,3.14,0862786029,9780862786021,eng,64,7,1,10/1/1999,O'Brien Press -45449,Artemis Fowl (Artemis Fowl #1),Eoin Colfer/Claudia Feldmann,3.84,3548603203,9783548603209,ger,240,428,24,5/1/2003,List -45450,La última oportunidad,Eoin Colfer,3.77,0307350053,9780307350053,spa,258,2,0,4/4/2006,Plaza y Janes -45455,Artemis Fowl (Artemis Fowl #1),Eoin Colfer/Ana Alcaina,3.84,8497939204,9788497939201,spa,286,45,3,3/30/2006,DEBOLS!LLO -45462,La venganza de opal (Artemis Fowl #4),Eoin Colfer,4.05,8484412474,9788484412472,spa,368,21,1,4/30/2005,Montena -45463,Encuentro en el Ártico (Artemis Fowl #2),Eoin Colfer/Ana Alcaina Pérez,3.95,0307343103,9780307343109,spa,320,15,3,7/5/2005,Montena -45465,Artemis Fowl (Artemis Fowl #1),Eoin Colfer/Nathaniel Parker,3.84,1400085918,9781400085910,eng,6,55,14,4/6/2004,Listening Library -45472,Treasury of American Tall Tales: Volume 1: Davy Crockett Rip Van Winkle Johnny Appleseed Paul Bunyan (Rabbit Ears),David Bromberg/Jay Ungar/Molly Mason/Garrison Keillor/Mark O'Connor/Jonathan Winters/Duck Baker/Washington Irving/Anjelica Huston/Nicolas Cage/Leo Kottke,3.86,0739336509,9780739336502,eng,0,36,9,8/22/2006,Listening Library (Audio) -45479,The Subtle Knife (His Dark Materials #2),Philip Pullman/Ian Beck,4.13,0375846727,9780375846724,eng,326,677,77,9/1/2007,Alfred A. Knopf Books for Young Readers -45480,The Amber Spyglass (His Dark Materials #3),Philip Pullman/Ian Beck,4.09,0375846735,9780375846731,en-US,518,562,61,9/1/2007,Alfred A. Knopf Books for Young Readers -45485,The Subtle Knife (His Dark Materials #2),Philip Pullman,4.13,0807210471,9780807210475,eng,8,39,8,1/28/2000,Listening Library -45486,His Dark Materials (His Dark Materials #1-3),Philip Pullman,4.26,0375847227,9780375847226,eng,933,2656,260,4/10/2007,Alfred A. Knopf -45487,El catalejo lacado (La Materia Oscura #3),Philip Pullman,4.09,8440699476,9788440699473,spa,446,565,49,5/1/2005,Ediciones B -45490,His Dark Materials Omnibus (His Dark Materials),Philip Pullman,4.26,0375947221,9780375947223,eng,944,70,9,4/10/2007,Knopf Books for Young Readers -45492,Northern Lights (His Dark Materials #1),Philip Pullman,3.98,0439994128,9780439994125,en-GB,399,836,62,9/14/2001,Scholastic Press -45495,El alquimista: una fábula para seguir tus sueños,Paulo Coelho/Juan Godó Costa,3.86,0062511408,9780062511409,eng,192,775,43,10/23/2018,Rayo -45500,La conspiración de los alquimistas,Hania Czajkowski,4.00,030727411X,9780307274113,spa,488,51,4,3/5/2005,Debolsillo -45503,El Alquimista: Edicion Illustrada: Edicion Illustrada,Paulo Coelho,3.86,0061351342,9780061351341,eng,192,43,5,4/10/2007,Rayo -45506,The Call of the Mall: How we shop,Paco Underhill,3.60,1861974426,9781861974426,eng,227,14,1,4/1/2004,Profile Books -45511,Die Broke: A Radical Four-Part Financial Plan,Stephen M. Pollan/Mark LeVine,3.64,0887309429,9780887309427,en-US,320,270,45,9/23/1998,Harper Business -45515,Live Rich Die Broke,Stephen M. Pollan,3.29,1594860165,9781594860164,en-US,482,14,2,1/1/2005,Rodale Books -45516,The Die Broke Financial Problem Solver,Stephen M. Pollan/Mark LeVine,2.33,0066619912,9780066619910,en-US,272,3,0,12/26/2000,William Morrow Paperbacks -45529,Montaillou: The Promised Land of Error,Emmanuel Le Roy Ladurie/Barbara Bray,3.96,0394729641,9780394729640,eng,416,1142,62,7/12/1979,Vintage/Random House (NY) -45530,Montaillou: Cathars and Catholics in a French Village 1294-1324,Emmanuel Le Roy Ladurie/Barbara Bray,3.96,0140137009,9780140137002,eng,400,80,14,12/5/2002,Penguin -45531,Montaillou village occitan de 1294 à 1324,Emmanuel Le Roy Ladurie/Emmanuel Le Roy-Ladurie,3.96,2070323285,9782070323289,fre,640,15,2,6/31/1982,Folio histoire -45533,Montaillou: Cathars and Catholics in a French Village 1294-1324,Emmanuel Le Roy Ladurie/Barbara Bray,3.96,0140054715,9780140054712,en-GB,400,17,2,5/29/1980,Penguin Books Ltd. -45536,On the Road,Jack Kerouac/Ann Charters,3.63,0142437255,9780142437254,en-US,307,3271,342,1/3/2006,Penguin Classics -45546,Undaunted Courage: The Pioneering First Mission to Explore America's Wild Frontier,Stephen E. Ambrose,4.21,074347788X,9780743477888,eng,592,41236,1830,10/6/2003,Simon & Schuster -45549,Undaunted Courage,Stephen E. Ambrose/Barrett Whitener,4.21,1415918090,9781415918098,eng,22,8,2,3/8/2005,Books on Tape -45557,Co. Aytch: A Confederate Memoir of the Civil War,Sam R. Watkins,4.13,0684833247,9780684833248,eng,240,23,2,8/12/1997,Touchstone Books -45564,Jonny Reb & Billy Yank,Alexander Hunter,4.11,1568520808,9781568520803,eng,635,14,2,5/31/1998,Not Avail -45568,El Superzorro,Roald Dahl/Horacio Elena,4.05,9681907191,9789681907198,spa,96,174,20,6/1/2000,Alfaguara Infantil -45570,Fantastic Mr Fox,David Wood/Roald Dahl,4.09,057305133X,9780573051333,en-GB,74,65,2,1/5/2011,Samuel French Ltd -45572,Fantastic Mr. Fox (Cover to Cover),Roald Dahl,4.05,1855495090,9781855495098,eng,90,7,0,9/15/1995,BBC Audiobooks -45574,Ajax in Action,Dave Crane/Eric Pascarello/Darren James,3.56,1932394613,9781932394610,en-US,680,126,10,11/3/2005,Manning Publications -45583,Historia del rey transparente,Rosa Montero,3.90,8466318771,9788466318778,spa,592,1266,90,9/1/2006,Punto de Lectura -45585,Bella y oscura,Rosa Montero,3.66,843221728X,9788432217289,spa,204,293,31,3/1/2006,Planeta Publishing -45592,La tía Julia y el escribidor,Mario Vargas Llosa,3.92,8466302298,9788466302296,spa,566,162,10,3/1/2001,Suma -45595,La Tía Julia y el Escribidor,Mario Vargas Llosa,3.92,8432203238,9788432203237,spa,447,25,4,7/10/1977,Seix Barral -45604,Narraciones Extraordinarias,Edgar Allan Poe,4.13,9583006408,9789583006401,spa,316,36,4,6/1/2004,Panamericana Editorial -45607,Las Crónicas de Narnia,C.S. Lewis/Margarita E. Valdes/Gemma Gallart/Pauline Baynes,4.26,0061199001,9780061199004,spa,816,186,11,11/7/2006,HarperCollins Espanol -45615,O Trono de Prata (As Crónicas de Nárnia #6),C.S. Lewis/Ana Falcão Bastos,3.96,972233168X,9789722331685,por,168,141,10,4/16/2004,Editorial Presença -45616,A Última Batalha (As Crónicas de Nárnia #7),C.S. Lewis/Pauline Baynes/Ana Falcão Bastos,4.03,9722332201,9789722332200,por,149,211,24,7/17/2004,Editorial Presença -45617,O Cavalo e o Seu Rapaz (As Crónicas de Nárnia #3),C.S. Lewis/Pauline Baynes/Ana Falcão Bastos,3.92,9722330551,9789722330558,por,160,207,16,8/15/2003,Editorial Presença -45623,O Sobrinho do Mágico (As Crónicas de Nárnia #1),C.S. Lewis/Pauline Baynes/Ana Falcão Bastos,4.04,9722329987,9789722329989,por,147,396,37,4/8/2003,Editorial Presença -45625,A Viagem do Caminheiro da Alvorada (As Crónicas de Nárnia #5),C.S. Lewis/Pauline Baynes/Ana Falcão Bastos,4.09,9722331329,9789722331326,por,176,161,14,9/1/2004,Editorial Presença -45626,O Príncipe Caspian (As Crónicas de Nárnia #4),C.S. Lewis/Pauline Baynes/Ana Falcão Bastos,3.97,9722330977,9789722330978,por,160,215,11,10/11/2003,Editorial Presença -45630,Whores for Gloria,William T. Vollmann,3.69,0140231579,9780140231571,en-US,160,932,111,2/1/1994,Penguin Books -45631,Expelled from Eden: A William T. Vollmann Reader,William T. Vollmann/Larry McCaffery/Michael Hemmingson,4.06,1560254416,9781560254416,eng,512,156,20,12/21/2004,Da Capo Press -45633,You Bright and Risen Angels,William T. Vollmann,4.08,0140110879,9780140110876,eng,635,783,56,12/1/1988,Penguin Books -45634,The Ice-Shirt (Seven Dreams #1),William T. Vollmann,3.96,0140131965,9780140131963,eng,415,820,95,8/1/1993,Penguin Books -45639,Poor People,William T. Vollmann,3.72,0060878827,9780060878825,eng,434,769,139,2/27/2007,Ecco -45641,Las aventuras de Tom Sawyer,Mark Twain,3.91,8497646983,9788497646987,spa,272,113,12,5/28/2006,Edimat Libros diff --git a/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/csv_sample.csv b/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/csv_sample.csv new file mode 100644 index 000000000..29badeac0 --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/sample_data/csv_table/csv_sample.csv @@ -0,0 +1,3 @@ +1,value12,value13 +2,value22,value23 +3,value32,value33 \ No newline at end of file diff --git a/tests_new/integration_tests/modules/s3_datasets/sample_data/parquet_table/sample1.parquet b/tests_new/integration_tests/modules/s3_datasets/sample_data/parquet_table/sample1.parquet deleted file mode 100644 index 9b6a78cf8cc7cd3ece15e13c9b2f222c8f09b81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmWG=3^EjD5Z%Hr`iosh^b{kI%_hpmz#!kv!2kyTLxU6Z9~tnZHa*@opEc(Au?K1g zOD4aYo#~scS*oJ`_R8gD$~^!1^Jl8v?6d#uZT@&1Z&h*OEsK+iS@vM( z^NvMD|`UJH2qG^xTWJ-dT6$7G6DVTky7Woy5#*nvWVEJpR{CJ{Fy0- zE8ux@_5^8x!?dEIRau&2MyW=j!5h*xtj<|H$T%nI_ zrsjz?W}YW@dt8{DRBI|`*(jU(m2ZmM@u#NQ!s{)z%{yLgtZF$)cAddC?xOT5D^_mz z-x7J9sr1v$v$K{(^`5h;Sz-1gc2*AGUh7}8F0R?}-B&E(IrH;G`GUhY z?q@1K*wQW0otd;iYI&}N?~AIE{%tkCroWN7t$#4bGw~KP0|PJ-eBc+|z=1tM#0JF{ zU3TEfTh6OHr)jl`=8?k_CV5&tiR=x1?{{sI`|Af*?oUEIqS_tiuleY8e||}EY3bMB zzp9qaKhIf|e>9xYs^&t{(WWC|y8X+=Uc{}=?T>Xh_5JxVk(1Vsywf&)T&i$tu2}yJ zsTDW>>9!Q_yZT7oEaCof4t43QdkFv1JFG`q9?h6g zxTpBgk6%&qwlli6{)!hkc#l_C=)}P;-Ys+NvjP>bYG~cCGCw}YQ1x-0z@w1)u@}^n zTV#|>Z7-{GtbTT=rr=<)~?``+iTxh4l+3|MS-tdVRHm+9w`h0!z=3knV zrSnX_{WmK}KJ?@4(a#30zmF(AmC{eNN7s8Lx}H>x1pMHFk2oys;%$ zvXN_R)m$dd8M|y^7q?Bh-x;&%icdYm3!CL}KR{`PNz%rYL4r4>G&wsZDZV&4BQ-Zs zl!ZZ*N0mu}Jvl$8G&j!xn4o|vkwidc4g-VODMm>dNgXu?8BrcdQ3gqbdKRFR7=zd% z4mA!N3D&gCqT&(>R>!2I%v3Q34HQ1GkiyV!C<@hogF|f<&;XY3{QMLNR)w6z;u4^K eWG+xU(4JF_Y8(t2Y%V}QxHvIf1_}lM%S8a*|2_@? diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py index 98eb956cd..2ca4167d6 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py @@ -5,94 +5,204 @@ import time from assertpy import assert_that import requests +import pytest from integration_tests.modules.s3_datasets.queries import ( - create_folder, + create_dataset, delete_dataset, - delete_folder, - delete_table, get_dataset, get_dataset_assume_role_url, generate_dataset_access_token, get_dataset_presigned_role_url, - preview_table, - start_dataset_profiling_run, start_glue_crawler, - sync_tables, update_dataset, ) -from integration_tests.modules.datasets_base.queries import list_datasets from integration_tests.core.stack.queries import update_stack from integration_tests.core.stack.utils import check_stack_ready from integration_tests.errors import GqlError +from integration_tests.modules.s3_datasets.conftest import DATASETS_FIXTURES_PARAMS log = logging.getLogger(__name__) -def test_create_s3_dataset(client1, session_s3_dataset1): - assert_that(session_s3_dataset1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +# Dataset Mutations +def test_create_import_s3_dataset(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + assert_that(dataset.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') -def test_import_sse_s3_dataset(session_imported_sse_s3_dataset1): - assert_that(session_imported_sse_s3_dataset1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') +def test_create_s3_dataset_unauthorized(user2, group2, client2, org1, session_env1): + env_uri = session_env1.environmentUri + assert_that(create_dataset).raises(GqlError).when_called_with( + client=client2, + name='UnauthorizedTestDatasetCreated', + owner=user2.username, + group=group2, + organizationUri=org1.organizationUri, + environmentUri=env_uri, + tags=['unauth'], + ).contains('UnauthorizedOperation', 'CREATE_DATASET', env_uri) -def test_import_kms_s3_dataset(session_imported_kms_s3_dataset1): - assert_that(session_imported_kms_s3_dataset1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_s3_dataset(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + response = get_dataset(client1, dataset.datasetUri) + assert_that(response.label).is_equal_to(dataset_fixture_name) -def test_get_s3_dataset(client1, session_s3_dataset1): - dataset = get_dataset(client1, session_s3_dataset1.datasetUri) - assert dataset - assert_that(dataset.label).is_equal_to(session_s3_dataset1.label) +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_s3_dataset_non_admin(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + response = get_dataset(client2, dataset.datasetUri) + assert_that(response.userRoleForDataset).is_equal_to('NoPermission') -def test_get_s3_dataset_non_admin(client2, session_s3_dataset1): - dataset = get_dataset(client2, session_s3_dataset1.datasetUri) - assert dataset - assert_that(dataset.userRoleForDataset).is_equal_to('NoPermission') +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_dataset_assume_role_url(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + assert_that(get_dataset_assume_role_url(client1, dataset.datasetUri)).starts_with( + 'https://signin.aws.amazon.com/federation' + ) + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_dataset_assume_role_url_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(get_dataset_assume_role_url).raises(GqlError).when_called_with(client2, dataset_uri).contains( + 'UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri + ) -def test_list_datasets( - client1, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id -): - assert_that(list_datasets(client1, term=session_id).nodes).is_length(3) +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_dataset_presigned_url_upload_data(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + file_path = os.path.join(os.path.dirname(__file__), 'sample_data/csv_table/csv_sample.csv') + prefix = 'csv_table' + file_name = 'csv_sample.csv' -def test_list_datasets_unauthorized( - client2, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id -): - assert_that(list_datasets(client2, term=session_id).nodes).is_length(0) + response = json.loads( + get_dataset_presigned_role_url(client1, dataset_uri, input={'prefix': prefix, 'fileName': file_name}) + ) + assert_that(response).contains_key('url', 'fields') + with open(file_path, 'rb') as f: + # Create a dictionary with the form fields and the file data + files = {'file': (f'{prefix}/{file_name}', f)} + + # Send the POST request with the presigned URL, form fields, and file data + http_response = requests.post(response['url'], data=response['fields'], files=files) + http_response.raise_for_status() + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_get_dataset_presigned_url_upload_data_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(get_dataset_presigned_role_url).raises(GqlError).when_called_with( + client2, dataset_uri, input={'prefix': 'sample_data', 'fileName': 'name'} + ).contains('UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri) -def test_modify_dataset(client1, session_s3_dataset1): +def test_list_s3_datasets_owned_by_env_group(): + # TODO + pass + + +def test_list_s3_datasets_owned_by_env_group_unauthorized(): + # TODO + pass + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_update_dataset(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) test_description = f'a test description {datetime.utcnow().isoformat()}' - dataset_uri = session_s3_dataset1.datasetUri + dataset_uri = dataset.datasetUri updated_dataset = update_dataset( - client1, dataset_uri, {'description': test_description, 'KmsAlias': session_s3_dataset1.KmsAlias} + client1, dataset_uri, {'description': test_description, 'KmsAlias': dataset.KmsAlias} ) assert_that(updated_dataset).contains_entry(datasetUri=dataset_uri, description=test_description) env = get_dataset(client1, dataset_uri) assert_that(env).contains_entry(datasetUri=dataset_uri, description=test_description) -def test_modify_dataset_unauthorized(client1, client2, session_s3_dataset1): +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_update_dataset_unauthorized(client1, client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) test_description = f'unauthorized {datetime.utcnow().isoformat()}' - dataset_uri = session_s3_dataset1.datasetUri + dataset_uri = dataset.datasetUri assert_that(update_dataset).raises(GqlError).when_called_with( - client2, dataset_uri, {'description': test_description, 'KmsAlias': session_s3_dataset1.KmsAlias} + client2, dataset_uri, {'description': test_description, 'KmsAlias': dataset.KmsAlias} ).contains('UnauthorizedOperation', dataset_uri) - dataset = get_dataset(client1, dataset_uri) - assert_that(dataset).contains_entry(datasetUri=dataset_uri).does_not_contain_entry(description=test_description) + response = get_dataset(client1, dataset_uri) + assert_that(response).contains_entry(datasetUri=dataset_uri).does_not_contain_entry(description=test_description) + +def test_delete_s3_dataset(): + # TODO + pass -def test_delete_dataset_unauthorized(client2, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_delete_dataset_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri assert_that(delete_dataset).raises(GqlError).when_called_with(client2, dataset_uri).contains( 'UnauthorizedOperation', dataset_uri ) +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_generate_dataset_access_token(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + creds = generate_dataset_access_token(client1, dataset_uri) + assert_that(json.loads(creds)).contains_key('AccessKey', 'SessionKey', 'sessionToken') + + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_generate_dataset_access_token_unauthorized(client1, client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(generate_dataset_access_token).raises(GqlError).when_called_with(client2, dataset_uri).contains( + 'UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri + ) + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_start_crawler(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + response = start_glue_crawler(client1, datasetUri=dataset_uri, input={}) + assert_that(response.Name).is_equal_to(dataset.GlueCrawlerName) + # TODO: check it can run successfully + check sending prefix + + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_start_crawler_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(start_glue_crawler).raises(GqlError).when_called_with(client2, dataset_uri, {}).contains( + 'UnauthorizedOperation', 'CRAWL_DATASET', dataset_uri + ) + + +## Backwards compatibility def test_persistent_s3_dataset_update(client1, persistent_s3_dataset1): # wait for stack to get to a final state before triggering an update stack_uri = persistent_s3_dataset1.stack.stackUri @@ -156,61 +266,3 @@ def test_persistent_import_kms_s3_dataset_update(client1, persistent_imported_km client1, env_uri=env_uri, stack_uri=stack_uri, target_uri=dataset_uri, target_type=target_type ) assert_that(stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') - - -def test_access_dataset_assume_role_url(client1, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri - - assert_that(get_dataset_assume_role_url(client1, dataset_uri)).starts_with( - 'https://signin.aws.amazon.com/federation' - ) - - -def test_access_dataset_assume_role_url_unauthorized(client2, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri - - assert_that(get_dataset_assume_role_url).raises(GqlError).when_called_with(client2, dataset_uri).contains( - 'UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri - ) - - -def test_generate_dataset_access_token(client1, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri - - creds = generate_dataset_access_token(client1, dataset_uri) - assert_that(json.loads(creds)).contains_key('AccessKey', 'SessionKey', 'sessionToken') - - -def test_generate_dataset_access_token_unauthorized(client1, client2, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri - - assert_that(generate_dataset_access_token).raises(GqlError).when_called_with(client2, dataset_uri).contains( - 'UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri - ) - - -def test_get_dataset_presigned_url_upload_data(client1, session_s3_dataset1): - # TODO: Test + Iterate for Multiple Files - dataset_uri = session_s3_dataset1.datasetUri - file_path = os.path.join(os.path.dirname(__file__), 'sample_data/csv_table/books.csv') - prefix = 'csv_table' - file_name = 'books.csv' - - response = json.loads( - get_dataset_presigned_role_url(client1, dataset_uri, input={'prefix': prefix, 'fileName': file_name}) - ) - assert_that(response).contains_key('url', 'fields') - with open(file_path, 'rb') as f: - # Create a dictionary with the form fields and the file data - files = {'file': (f'{prefix}/{file_name}', f)} - - # Send the POST request with the presigned URL, form fields, and file data - http_response = requests.post(response['url'], data=response['fields'], files=files) - http_response.raise_for_status() - - -def test_get_dataset_presigned_url_upload_data_unauthorized(client2, session_s3_dataset1): - dataset_uri = session_s3_dataset1.datasetUri - assert_that(get_dataset_presigned_role_url).raises(GqlError).when_called_with( - client2, dataset_uri, input={'prefix': 'sample_data', 'fileName': 'name'} - ).contains('UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri) diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_folders.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_folders.py new file mode 100644 index 000000000..606b236da --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_folders.py @@ -0,0 +1,100 @@ +import logging +import pytest +from assertpy import assert_that + +from integration_tests.modules.s3_datasets.queries import create_folder, delete_folder, update_folder, get_folder +from integration_tests.errors import GqlError + +from integration_tests.modules.s3_datasets.conftest import ( + FOLDERS_FIXTURES_PARAMS, + DATASETS_FIXTURES_PARAMS, +) + +log = logging.getLogger(__name__) + + +@pytest.mark.parametrize(*FOLDERS_FIXTURES_PARAMS) +def test_create_folder(client1, folders_fixture_name, request): + folders = request.getfixturevalue(folders_fixture_name) + folder = folders[0] + assert_that(folder.S3Prefix).is_equal_to('sessionFolderA') + assert_that(folder.label).is_equal_to('labelSessionFolderA') + + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_create_folder_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(create_folder).raises(GqlError).when_called_with( + client2, dataset_uri, {'prefix': 'badFolder', 'label': 'badFolder'} + ).contains('UnauthorizedOperation', 'CREATE_DATASET_FOLDER', dataset_uri) + + +@pytest.mark.parametrize(*FOLDERS_FIXTURES_PARAMS) +def test_get_folder(client1, folders_fixture_name, request): + folders = request.getfixturevalue(folders_fixture_name) + folder = folders[0] + response = get_folder(client1, locationUri=folder.locationUri) + assert_that(response.S3Prefix).is_equal_to('sessionFolderA') + assert_that(response.label).is_equal_to('labelSessionFolderA') + + +@pytest.mark.parametrize( + 'folders_fixture_name', + ['session_s3_dataset1_folders'], +) +def test_get_folder_unauthorized(client2, folders_fixture_name, request): + folders = request.getfixturevalue(folders_fixture_name) + folder = folders[0] + assert_that(get_folder).raises(GqlError).when_called_with(client2, locationUri=folder.locationUri).contains( + 'UnauthorizedOperation', 'GET_DATASET_FOLDER', folder.locationUri + ) + + +@pytest.mark.parametrize(*FOLDERS_FIXTURES_PARAMS) +def test_update_folder(client1, folders_fixture_name, request): + folders = request.getfixturevalue(folders_fixture_name) + folder = folders[0] + response = update_folder(client1, locationUri=folder.locationUri, input={'label': 'newLabel'}) + assert_that(response.label).is_equal_to('newLabel') + + +@pytest.mark.parametrize( + 'dataset_fixture_name,folders_fixture_name', + [('session_s3_dataset1', 'session_s3_dataset1_folders')], +) +def test_update_folder_unauthorized(client2, dataset_fixture_name, folders_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + folder = request.getfixturevalue(folders_fixture_name)[0] + assert_that(update_folder).raises(GqlError).when_called_with( + client2, locationUri=folder.locationUri, input={'label': 'newLabel'} + ).contains('UnauthorizedOperation', 'UPDATE_DATASET_FOLDER', dataset.datasetUri) + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_delete_folder(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + location = create_folder( + client1, datasetUri=dataset_uri, input={'prefix': 'folderToDelete', 'label': 'folderToDelete'} + ) + response = delete_folder(client1, location.locationUri) + assert_that(response).is_equal_to(True) + + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_delete_folder_unauthorized(client1, client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + location = create_folder( + client1, datasetUri=dataset_uri, input={'prefix': 'badFolderToDelete', 'label': 'badFolderToDelete'} + ) + assert_that(delete_folder).raises(GqlError).when_called_with(client2, location.locationUri).contains( + 'UnauthorizedOperation', 'DELETE_DATASET_FOLDER', dataset_uri + ) diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py new file mode 100644 index 000000000..938b125bc --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py @@ -0,0 +1,170 @@ +import logging +import json +import boto3 +from assertpy import assert_that +import pytest + +from integration_tests.modules.s3_datasets.queries import ( + update_dataset_table, + delete_table, + sync_tables, + create_table_data_filter, + delete_table_data_filter, + preview_table, + get_dataset_table, + list_dataset_tables, + generate_dataset_access_token, +) +from integration_tests.errors import GqlError +from integration_tests.modules.s3_datasets.aws_clients import GlueClient +from integration_tests.modules.s3_datasets.conftest import ( + TABLES_FIXTURES_PARAMS, + DATASETS_FIXTURES_PARAMS, + DATASETS_TABLES_FIXTURES_PARAMS, + TABLES_CONFIDENTIALITY_FIXTURES_PARAMS, +) + +log = logging.getLogger(__name__) + + +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_sync_tables(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + assert_that(len(tables)).is_equal_to(2) + assert_that(tables[0].label).is_equal_to('integrationtest2') + + +@pytest.mark.parametrize( + 'dataset_fixture_name', + ['session_s3_dataset1'], +) +def test_sync_tables_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(sync_tables).raises(GqlError).when_called_with(client2, dataset_uri).contains( + 'UnauthorizedOperation', 'SYNC_DATASET', dataset_uri + ) + + +@pytest.mark.parametrize(*DATASETS_TABLES_FIXTURES_PARAMS) +def test_get_dataset_table(client1, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + response = get_dataset_table(client1, table_uri) + assert_that(response.label).is_equal_to('integrationtest2') + assert_that(response.datasetUri).is_equal_to(dataset.datasetUri) + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_list_dataset_tables(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + response = list_dataset_tables(client1, dataset.datasetUri) + assert_that(response.tables.count).is_greater_than_or_equal_to(2) + tables = [table for table in response.tables.get('nodes', []) if table.GlueTableName.startswith('integrationtest')] + assert_that(len(tables)).is_equal_to(2) + + +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_preview_table(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + response = preview_table(client1, table_uri) + assert_that(len(response.rows)).is_equal_to(3) + assert_that(response.rows[0]).contains('value12', 'value13') + + +@pytest.mark.parametrize(*TABLES_CONFIDENTIALITY_FIXTURES_PARAMS) +def test_preview_table_by_confidentiality(client2, tables_fixture_name, confidentiality, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + if confidentiality in ['Unclassified']: + response = preview_table(client2, table_uri) + assert_that(len(response.rows)).is_equal_to(3) + assert_that(response.rows[0]).contains('value12', 'value13') + else: + assert_that(preview_table).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'PREVIEW_DATASET_TABLE' + ) + + +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_update_dataset_table(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + response = update_dataset_table(client1, table_uri, input={'label': 'newTableLabel'}) + assert_that(response.label).is_equal_to('newTableLabel') + + +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [('session_s3_dataset1', 'session_s3_dataset1_tables')], +) +def test_update_dataset_table_unauthorized(client2, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + assert_that(update_dataset_table).raises(GqlError).when_called_with( + client2, table_uri, {'label': 'badNewLabel'} + ).contains('UnauthorizedOperation', 'UPDATE_DATASET_TABLE', dataset.datasetUri) + + +@pytest.mark.parametrize(*DATASETS_FIXTURES_PARAMS) +def test_delete_table(client1, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + creds = json.loads(generate_dataset_access_token(client1, dataset.datasetUri)) + dataset_session = boto3.Session( + aws_access_key_id=creds['AccessKey'], + aws_secret_access_key=creds['SessionKey'], + aws_session_token=creds['sessionToken'], + ) + GlueClient(dataset_session, dataset.region).create_table( + database_name=dataset.GlueDatabaseName, table_name='todelete', bucket=dataset.S3BucketName + ) + response = sync_tables(client1, datasetUri=dataset.datasetUri) + table_uri = [table.tableUri for table in response.get('nodes', []) if table.label == 'todelete'][0] + response = delete_table(client1, table_uri) + assert_that(response).is_true() + + +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [('session_s3_dataset1', 'session_s3_dataset1_tables')], +) +def test_delete_table_unauthorized(client2, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + assert_that(delete_table).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'DELETE_DATASET_TABLE', dataset.datasetUri + ) + + +def test_create_table_data_filter(): + # TODO + pass + + +def test_create_table_data_filter_unauthorized(): + # TODO + pass + + +def test_list_table_data_filters(): + # TODO + pass + + +def test_list_table_data_filters_unauthorized(): + # TODO + pass + + +def test_delete_table_data_filter(): + # TODO + pass + + +def test_delete_table_data_filter_unauthorized(): + # TODO + pass diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py new file mode 100644 index 000000000..0cb068961 --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py @@ -0,0 +1,41 @@ +import logging +from assertpy import assert_that + +from integration_tests.modules.s3_datasets.queries import ( + sync_dataset_table_columns, + update_dataset_table_column, + list_dataset_table_columns, +) +from integration_tests.errors import GqlError + +log = logging.getLogger(__name__) + + +def test_sync_dataset_table_columns(): + # TODO + pass + + +def test_sync_dataset_table_columns_unauthorized(): + # TODO + pass + + +def test_update_dataset_table_column(): + # TODO + pass + + +def test_update_dataset_table_column_unauthorized(): + # TODO + pass + + +def test_list_dataset_table_columns(): + # TODO + pass + + +def test_list_dataset_table_columns_unauthorized(): + # TODO + pass diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py new file mode 100644 index 000000000..24a6f7f4d --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py @@ -0,0 +1,56 @@ +import logging +import pytest +from assertpy import assert_that + +from integration_tests.modules.s3_datasets.queries import ( + start_dataset_profiling_run, + list_table_profiling_runs, + get_table_profiling_run, +) +from integration_tests.errors import GqlError +from integration_tests.modules.s3_datasets.conftest import DATASETS_TABLES_FIXTURES_PARAMS + +log = logging.getLogger(__name__) + + +@pytest.mark.parametrize(*DATASETS_TABLES_FIXTURES_PARAMS) +def test_start_table_profiling(client1, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table = tables[0] + dataset_uri = dataset.datasetUri + response = start_dataset_profiling_run( + client1, input={'datasetUri': dataset_uri, 'tableUri': table.tableUri, 'GlueTableName': table.GlueTableName} + ) + assert_that(response.datasetUri).is_equal_to(dataset_uri) + assert_that(response.status).is_equal_to('RUNNING') + assert_that(response.GlueTableName).is_equal_to(table.GlueTableName) + + +@pytest.mark.parametrize('dataset_fixture_name', ['session_s3_dataset1']) +def test_start_table_profiling_unauthorized(client2, dataset_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + dataset_uri = dataset.datasetUri + assert_that(start_dataset_profiling_run).raises(GqlError).when_called_with( + client2, input={'datasetUri': dataset_uri} + ).contains('UnauthorizedOperation', 'PROFILE_DATASET_TABLE', dataset_uri) + + +def test_list_table_profiling_runs(): + # TODO + pass + + +def test_list_table_profiling_runs_unauthorized(): + # TODO + pass + + +def test_get_table_profiling_run(): + # TODO + pass + + +def test_get_table_profiling_run_unauthorized(): + # TODO + pass From 3d4d648131a08f3c9ea3c3088a083b2c1fbd9e14 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Fri, 13 Sep 2024 17:38:23 +0300 Subject: [PATCH 071/188] add mlstudio integ tests (#1535) ### Feature or Bugfix Feature ### Detail Adding integration tests for ML Studio PENDING TESTS PASSING IN DEV AWS ENV ### Relates related to #1220 and resolves #1534 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- tests_new/integration_tests/client.py | 2 +- .../core/environment/utils.py | 36 +++++ .../modules/mlstudio/conftest.py | 22 +++ .../modules/mlstudio/mutations.py | 58 +++++++ .../modules/mlstudio/queries.py | 152 ++++++++++++++++++ .../modules/mlstudio/test_mlstudio.py | 33 ++++ 6 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 tests_new/integration_tests/core/environment/utils.py create mode 100644 tests_new/integration_tests/modules/mlstudio/conftest.py create mode 100644 tests_new/integration_tests/modules/mlstudio/mutations.py create mode 100644 tests_new/integration_tests/modules/mlstudio/queries.py create mode 100644 tests_new/integration_tests/modules/mlstudio/test_mlstudio.py diff --git a/tests_new/integration_tests/client.py b/tests_new/integration_tests/client.py index b288cff52..75fa0455e 100644 --- a/tests_new/integration_tests/client.py +++ b/tests_new/integration_tests/client.py @@ -29,9 +29,9 @@ def query(self, query: str): graphql_endpoint = os.path.join(os.environ['API_ENDPOINT'], 'graphql', 'api') headers = {'AccessKeyId': 'none', 'SecretKey': 'none', 'authorization': self.token} r = requests.post(graphql_endpoint, json=query, headers=headers) - r.raise_for_status() if errors := r.json().get('errors'): raise GqlError(errors) + r.raise_for_status() return DefaultMunch.fromDict(r.json()) diff --git a/tests_new/integration_tests/core/environment/utils.py b/tests_new/integration_tests/core/environment/utils.py new file mode 100644 index 000000000..99e55c959 --- /dev/null +++ b/tests_new/integration_tests/core/environment/utils.py @@ -0,0 +1,36 @@ +from integration_tests.core.environment.queries import update_environment +from integration_tests.core.stack.utils import check_stack_ready, check_stack_in_progress + + +def set_env_params(client, env, **new_params): + should_update = False + new_params_list = [] + for param in env.parameters: + new_param_value = new_params.get(param.key, param.value) + if new_param_value != param.value: + should_update = True + new_params_list.append({'key': param.key, 'value': new_param_value}) + if should_update: + env_uri = env.environmentUri + stack_uri = env.stack.stackUri + check_stack_ready(client, env_uri, stack_uri) + update_environment( + client, + env.environmentUri, + { + k: v + for k, v in env.items() + if k + in [ + 'description', + 'label', + 'resourcePrefix', + 'subnetIds', + 'tags', + 'vpcId', + ] + } + | {'parameters': new_params_list}, + ) + check_stack_in_progress(client, env_uri, stack_uri) + check_stack_ready(client, env_uri, stack_uri) diff --git a/tests_new/integration_tests/modules/mlstudio/conftest.py b/tests_new/integration_tests/modules/mlstudio/conftest.py new file mode 100644 index 000000000..58935f1fc --- /dev/null +++ b/tests_new/integration_tests/modules/mlstudio/conftest.py @@ -0,0 +1,22 @@ +import pytest + +from integration_tests.core.environment.utils import set_env_params +from integration_tests.core.stack.utils import check_stack_ready +from integration_tests.modules.mlstudio.mutations import create_smstudio_user, delete_smstudio_user +from integration_tests.modules.mlstudio.queries import get_smstudio_user + + +@pytest.fixture(scope='session') +def smstudio_user1(session_id, client1, persistent_env1): + set_env_params(client1, persistent_env1, mlStudiosEnabled='true') + env_uri = persistent_env1.environmentUri + smstudio = create_smstudio_user( + client1, + environmentUri=env_uri, + groupName=persistent_env1.SamlGroupName, + label=session_id, + ) + smstudio_uri = smstudio.sagemakerStudioUserUri + check_stack_ready(client1, env_uri, smstudio.stack.stackUri, smstudio_uri, 'mlstudio') + yield get_smstudio_user(client1, smstudio_uri) + delete_smstudio_user(client1, smstudio_uri) diff --git a/tests_new/integration_tests/modules/mlstudio/mutations.py b/tests_new/integration_tests/modules/mlstudio/mutations.py new file mode 100644 index 000000000..f752973f1 --- /dev/null +++ b/tests_new/integration_tests/modules/mlstudio/mutations.py @@ -0,0 +1,58 @@ +def create_smstudio_user( + client, environmentUri, groupName, label, description='integtestmlstudio', tags=[], topics=None +): + query = { + 'operationName': 'createSagemakerStudioUser', + 'variables': { + 'input': { + 'environmentUri': environmentUri, + 'SamlAdminGroupName': groupName, + 'label': label, + 'description': description, + 'tags': tags, + 'topics': topics, + } + }, + 'query': f""" + mutation createSagemakerStudioUser($input: NewSagemakerStudioUserInput!) {{ + createSagemakerStudioUser(input: $input) {{ + sagemakerStudioUserUri + name + label + created + description + tags + stack {{ + stack + status + stackUri + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.createSagemakerStudioUser + + +def delete_smstudio_user(client, uri, delete_from_aws=True): + query = { + 'operationName': 'deleteSagemakerStudioUser', + 'variables': { + 'sagemakerStudioUserUri': uri, + 'deleteFromAWS': delete_from_aws, + }, + 'query': f""" + mutation deleteSagemakerStudioUser( + $sagemakerStudioUserUri: String! + $deleteFromAWS: Boolean + ) {{ + deleteSagemakerStudioUser( + sagemakerStudioUserUri: $sagemakerStudioUserUri + deleteFromAWS: $deleteFromAWS + ) + }} + """, + } + response = client.query(query=query) + return response.data.deleteSagemakerStudioUser diff --git a/tests_new/integration_tests/modules/mlstudio/queries.py b/tests_new/integration_tests/modules/mlstudio/queries.py new file mode 100644 index 000000000..cec2c058a --- /dev/null +++ b/tests_new/integration_tests/modules/mlstudio/queries.py @@ -0,0 +1,152 @@ +def get_smstudio_user(client, uri): + query = { + 'operationName': 'getSagemakerStudioUser', + 'variables': { + 'sagemakerStudioUserUri': uri, + }, + 'query': f""" + query getSagemakerStudioUser($sagemakerStudioUserUri: String!) {{ + getSagemakerStudioUser(sagemakerStudioUserUri: $sagemakerStudioUserUri) {{ + sagemakerStudioUserUri + name + owner + description + label + created + tags + userRoleForSagemakerStudioUser + sagemakerStudioUserStatus + SamlAdminGroupName + sagemakerStudioUserApps {{ + DomainId + UserName + AppType + AppName + Status + }} + environment {{ + label + name + environmentUri + AwsAccountId + region + EnvironmentDefaultIAMRoleArn + }} + organization {{ + label + name + organizationUri + }} + stack {{ + stack + status + stackUri + targetUri + accountid + region + stackid + link + outputs + resources + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.getSagemakerStudioUser + + +def list_smstudio_users(client, term=None): + query = { + 'operationName': 'listSagemakerStudioUsers', + 'variables': { + 'filter': {'term': term}, + }, + 'query': f""" + query listSagemakerStudioUsers($filter: SagemakerStudioUserFilter) {{ + listSagemakerStudioUsers(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + sagemakerStudioUserUri + name + owner + description + label + created + tags + sagemakerStudioUserStatus + userRoleForSagemakerStudioUser + environment {{ + label + name + environmentUri + AwsAccountId + region + SamlGroupName + }} + organization {{ + label + name + organizationUri + }} + stack {{ + stack + status + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listSagemakerStudioUsers + + +def get_smstudio_user_presigned_url(client, uri): + query = { + 'operationName': 'getSagemakerStudioUserPresignedUrl', + 'variables': { + 'sagemakerStudioUserUri': uri, + }, + 'query': f""" + query getSagemakerStudioUserPresignedUrl($sagemakerStudioUserUri: String!) {{ + getSagemakerStudioUserPresignedUrl( + sagemakerStudioUserUri: $sagemakerStudioUserUri + ) + }} + """, + } + response = client.query(query=query) + return response.data.getSagemakerStudioUserPresignedUrl + + +def get_environment_mlstudio_domain(client, uri): + query = { + 'operationName': 'getEnvironmentMLStudioDomain', + 'variables': { + 'environmentUri': uri, + }, + 'query': f""" + query getEnvironmentMLStudioDomain($environmentUri: String!) {{ + getEnvironmentMLStudioDomain(environmentUri: $environmentUri) {{ + sagemakerStudioUri + environmentUri + label + sagemakerStudioDomainName + DefaultDomainRoleName + vpcType + vpcId + subnetIds + owner + created + }} + }} + """, + } + response = client.query(query=query) + return response.data.getEnvironmentMLStudioDomain diff --git a/tests_new/integration_tests/modules/mlstudio/test_mlstudio.py b/tests_new/integration_tests/modules/mlstudio/test_mlstudio.py new file mode 100644 index 000000000..d1f78be45 --- /dev/null +++ b/tests_new/integration_tests/modules/mlstudio/test_mlstudio.py @@ -0,0 +1,33 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError +from integration_tests.modules.mlstudio.queries import ( + list_smstudio_users, + get_smstudio_user_presigned_url, + get_environment_mlstudio_domain, +) + + +def test_create_smstudio_user(smstudio_user1): + assert_that(smstudio_user1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') + + +def test_list_smstudio_users(client1, client2, session_id, smstudio_user1): + assert_that(list_smstudio_users(client1, term=session_id).nodes).is_length(1) + assert_that(list_smstudio_users(client2, term=session_id).nodes).is_length(0) + + +def test_get_smstudio_user_presigned_url(client1, smstudio_user1): + assert_that(get_smstudio_user_presigned_url(client1, smstudio_user1.sagemakerStudioUserUri)).starts_with('https://') + + +def test_get_smstudio_user_presigned_url_unauthorized(client2, smstudio_user1): + assert_that(get_smstudio_user_presigned_url).raises(GqlError).when_called_with( + client2, smstudio_user1.sagemakerStudioUserUri + ).contains('UnauthorizedOperation', 'SGMSTUDIO_USER_URL') + + +def test_get_environment_mlstudio_domain(client1, smstudio_user1): + assert_that( + get_environment_mlstudio_domain(client1, smstudio_user1.environment.environmentUri).sagemakerStudioDomainName + ).starts_with('dataall') From 75971b8711f41dd17b0c0090700036f8db401738 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 16 Sep 2024 14:04:11 -0400 Subject: [PATCH 072/188] Allow configurable Region to run CDK IaC checks (#1531) ### Feature or Bugfix - Enhancement ### Detail - Allow for `cdk synth` to run on a configurable region using env variables rather than fixing for `eu-west-1` for testing cases - Change checkov scans to use `us-east-1` ### Relates - N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 12 ------------ .github/workflows/checkov.yml | 3 ++- deploy/app.py | 9 +++++---- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/.checkov.baseline b/.checkov.baseline index 9f940e563..0dafe9c5b 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -421,18 +421,6 @@ } ] }, - { - "file": "/cdk.out/cross-region-stack-111111111111:us-east-1.template.json", - "findings": [ - { - "resource": "AWS::S3::Bucket.CrossRegionCodePipelineReplicationBucketFC3227F2", - "check_ids": [ - "CKV_AWS_18", - "CKV_AWS_21" - ] - } - ] - }, { "file": "/cdk.out/dataall-main-cicd-stack.template.json", "findings": [ diff --git a/.github/workflows/checkov.yml b/.github/workflows/checkov.yml index 3fa149607..340f713f2 100644 --- a/.github/workflows/checkov.yml +++ b/.github/workflows/checkov.yml @@ -16,7 +16,8 @@ permissions: jobs: build: env: - CDK_DEFAULT_REGION: eu-west-1 + CDK_DEFAULT_REGION: us-east-1 + AWS_REGION: us-east-1 CDK_DEFAULT_ACCOUNT: 111111111111 GITHUB_ACTIONS: true CHECKOV_ACTIONS: true diff --git a/deploy/app.py b/deploy/app.py index 6fa754e56..88bf2dde5 100644 --- a/deploy/app.py +++ b/deploy/app.py @@ -38,9 +38,10 @@ if os.getenv('GITHUB_ACTIONS'): logger.info('Running GitHub Actions') account_id = os.getenv('CDK_DEFAULT_ACCOUNT') + region = os.getenv('CDK_DEFAULT_REGION', 'eu-west-1') app = App( context={ - 'availability-zones:account=111111111111:region=eu-west-1': ['eu-west-1a', 'eu-west-1b', 'eu-west-1c'], + f'availability-zones:account=111111111111:region={region}': [f'{region}a', f'{region}b', f'{region}c'], 'availability-zones:account=111111111111:region=us-east-1': ['us-east-1a', 'us-east-1b', 'us-east-1c'], } ) @@ -48,7 +49,7 @@ account_id = boto3.client('sts').get_caller_identity().get('Account') or os.getenv('CDK_DEFAULT_ACCOUNT') try: logger.info('Trying to get cdkjson parameter from SSM') - ssmc = boto3.client('ssm', os.getenv('CDK_DEFAULT_REGION')) + ssmc = boto3.client('ssm', os.getenv('CDK_DEFAULT_REGION', 'eu-west-1')) response = ssmc.get_parameter(Name=f'/dataall/{git_branch}/cdkjson') cdkjson = json.loads(response['Parameter']['Value']).get('context') @@ -64,10 +65,10 @@ app = App() logger.info('Loaded context from cdk.json file in repository') -cdk_pipeline_region = app.node.try_get_context('tooling_region') or os.getenv('CDK_DEFAULT_REGION') +cdk_pipeline_region = app.node.try_get_context('tooling_region') or os.getenv('CDK_DEFAULT_REGION', 'eu-west-1') target_envs = app.node.try_get_context('DeploymentEnvironments') or [ - {'envname': 'dev', 'account': account_id, 'region': 'eu-west-1'} + {'envname': 'dev', 'account': account_id, 'region': os.getenv('CDK_DEFAULT_REGION', 'eu-west-1')} ] resource_prefix = app.node.try_get_context('resource_prefix') or 'dataall' From 7eb833569c8200a84f2e136fa0df136164768068 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 16 Sep 2024 14:04:30 -0400 Subject: [PATCH 073/188] Feat/integration tests dataset filters (#1539) ### Feature or Bugfix - Feature ### Detail - Adding integration tests for Dataset Table Data Filters - PENDING TESTS PASSING IN DEV AWS ENV - Merge after https://github.com/data-dot-all/dataall/pull/1391/ ### Relates - related to https://github.com/data-dot-all/dataall/issues/1220 and #1358 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: dlpzx --- .../modules/s3_datasets/conftest.py | 9 ++ .../modules/s3_datasets/global_conftest.py | 38 ++++++++ .../modules/s3_datasets/queries.py | 30 +++--- .../modules/s3_datasets/test_s3_tables.py | 32 ------ .../s3_datasets/test_s3_tables_filters.py | 97 +++++++++++++++++++ 5 files changed, 160 insertions(+), 46 deletions(-) create mode 100644 tests_new/integration_tests/modules/s3_datasets/test_s3_tables_filters.py diff --git a/tests_new/integration_tests/modules/s3_datasets/conftest.py b/tests_new/integration_tests/modules/s3_datasets/conftest.py index 5e6bd503c..79f87261c 100644 --- a/tests_new/integration_tests/modules/s3_datasets/conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/conftest.py @@ -42,3 +42,12 @@ 'session_imported_kms_s3_dataset1_folders', ], ) + +TABLE_FILTERS_FIXTURES_PARAMS = ( + 'tables_fixture_name, table_filters_fixture_name', + [ + ('session_s3_dataset1_tables', 'session_s3_dataset1_tables_data_filters'), + ('session_imported_sse_s3_dataset1_tables', 'session_imported_sse_s3_dataset1_tables_data_filters'), + ('session_imported_kms_s3_dataset1_tables', 'session_imported_kms_s3_dataset1_tables_data_filters'), + ], +) diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index 869274bbb..8ee40cb92 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -14,6 +14,7 @@ get_dataset, sync_tables, create_folder, + create_table_data_filter, ) from tests_new.integration_tests.modules.datasets_base.queries import list_datasets @@ -21,6 +22,19 @@ log = logging.getLogger(__name__) +COL_FILTER_INPUT = { + 'filterName': 'columnfilter', + 'description': 'test column', + 'filterType': 'COLUMN', + 'includedCols': ['column1'], +} +ROW_FILTER_INPUT = { + 'filterName': 'rowfilter', + 'description': 'test row', + 'filterType': 'ROW', + 'rowExpression': '"column2" LIKE \'%value%\' AND "column1" IS NOT NULL', +} + def create_s3_dataset( client, name, owner, group, org_uri, env_uri, tags=[], autoApprovalEnabled=False, confidentiality=None @@ -188,6 +202,15 @@ def create_folders(client, dataset): return [folderA, folderB] +def create_filters(client, tables): + filter_list = [] + for table in tables: + filter_list.append(create_table_data_filter(client, table.tableUri, input=COL_FILTER_INPUT)) + filter_list.append(create_table_data_filter(client, table.tableUri, input=ROW_FILTER_INPUT)) + + return filter_list + + """ Session envs persist across the duration of the whole integ test suite and are meant to make the test suite run faster (env creation takes ~2 mins). For this reason they must stay immutable as changes to them will affect the rest of the tests. @@ -327,6 +350,21 @@ def session_imported_kms_s3_dataset1_folders(client1, session_imported_kms_s3_da yield create_folders(client1, session_imported_kms_s3_dataset1) +@pytest.fixture(scope='session') +def session_s3_dataset1_tables_data_filters(client1, session_s3_dataset1_tables): + yield create_filters(client1, session_s3_dataset1_tables) + + +@pytest.fixture(scope='session') +def session_imported_sse_s3_dataset1_tables_data_filters(client1, session_imported_sse_s3_dataset1_tables): + yield create_filters(client1, session_imported_sse_s3_dataset1_tables) + + +@pytest.fixture(scope='session') +def session_imported_kms_s3_dataset1_tables_data_filters(client1, session_imported_kms_s3_dataset1_tables): + yield create_filters(client1, session_imported_kms_s3_dataset1_tables) + + """ Temp envs will be created and deleted per test, use with caution as they might increase the runtime of the test suite. They are suitable to test env mutations. diff --git a/tests_new/integration_tests/modules/s3_datasets/queries.py b/tests_new/integration_tests/modules/s3_datasets/queries.py index 1acada033..fc1f7af22 100644 --- a/tests_new/integration_tests/modules/s3_datasets/queries.py +++ b/tests_new/integration_tests/modules/s3_datasets/queries.py @@ -76,6 +76,16 @@ autoApprovalEnabled """ +S3_DATASET_TABLE_FILTER_TYPE = """ +filterUri +tableUri +label +description +filterType +includedCols +rowExpression +""" + ## Dataset Queries/Mutations def create_dataset( @@ -457,12 +467,9 @@ def create_table_data_filter(client, tableUri, input): 'operationName': 'createTableDataFilter', 'variables': {'tableUri': tableUri, 'input': input}, 'query': f""" - mutation createTableDataFilter( - $tableUri: String! - $input: NewTableDataFilterInput! - ) {{ + mutation createTableDataFilter($tableUri: String!,$input: NewTableDataFilterInput!) {{ createTableDataFilter(tableUri: $tableUri, input: $input) {{ - filterUri + {S3_DATASET_TABLE_FILTER_TYPE} }} }} """, @@ -552,10 +559,10 @@ def preview_table(client, tableUri): return response.data.previewTable -def list_table_data_filters(client, tableUri, term): +def list_table_data_filters(client, tableUri): query = { 'operationName': 'listTableDataFilters', - 'variables': {'tableUri': tableUri, 'filter': {'term': term}}, + 'variables': {'tableUri': tableUri, 'filter': {}}, 'query': f""" query listTableDataFilters( $tableUri: String! @@ -568,19 +575,14 @@ def list_table_data_filters(client, tableUri, term): hasNext hasPrevious nodes {{ - filterUri - label - description - filterType - includedCols - rowExpression + {S3_DATASET_TABLE_FILTER_TYPE} }} }} }} """, } response = client.query(query=query) - return response.data.deleteTableDataFilter + return response.data.listTableDataFilters ## Table Column Queries/Mutations diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py index 938b125bc..934cac9d4 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables.py @@ -8,8 +8,6 @@ update_dataset_table, delete_table, sync_tables, - create_table_data_filter, - delete_table_data_filter, preview_table, get_dataset_table, list_dataset_tables, @@ -138,33 +136,3 @@ def test_delete_table_unauthorized(client2, dataset_fixture_name, tables_fixture assert_that(delete_table).raises(GqlError).when_called_with(client2, table_uri).contains( 'UnauthorizedOperation', 'DELETE_DATASET_TABLE', dataset.datasetUri ) - - -def test_create_table_data_filter(): - # TODO - pass - - -def test_create_table_data_filter_unauthorized(): - # TODO - pass - - -def test_list_table_data_filters(): - # TODO - pass - - -def test_list_table_data_filters_unauthorized(): - # TODO - pass - - -def test_delete_table_data_filter(): - # TODO - pass - - -def test_delete_table_data_filter_unauthorized(): - # TODO - pass diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_filters.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_filters.py new file mode 100644 index 000000000..a8aa73e73 --- /dev/null +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_filters.py @@ -0,0 +1,97 @@ +import logging + +from assertpy import assert_that +import pytest + +from integration_tests.modules.s3_datasets.queries import ( + create_table_data_filter, + delete_table_data_filter, + list_table_data_filters, +) +from integration_tests.errors import GqlError +from integration_tests.modules.s3_datasets.global_conftest import COL_FILTER_INPUT +from integration_tests.modules.s3_datasets.conftest import TABLE_FILTERS_FIXTURES_PARAMS, TABLES_FIXTURES_PARAMS + +log = logging.getLogger(__name__) + + +@pytest.mark.parametrize(*TABLE_FILTERS_FIXTURES_PARAMS) +def test_create_table_data_filter(tables_fixture_name, table_filters_fixture_name, request): + filters = request.getfixturevalue(table_filters_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + assert_that(len(filters)).is_equal_to(4) + for table in tables: + table_filters = [f for f in filters if f.tableUri == table.tableUri] + for f in table_filters: + assert_that(f.filterType).is_in('ROW', 'COLUMN') + assert_that(f.filterUri).is_not_none() + assert_that(f.tableUri).is_equal_to(table.tableUri) + + +def test_create_table_data_filter_unauthorized(client2, session_s3_dataset1_tables): + table_uri = session_s3_dataset1_tables[0].tableUri + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client2, table_uri, COL_FILTER_INPUT + ).contains('UnauthorizedOperation', 'CREATE_TABLE_DATA_FILTER', table_uri) + + +def test_create_table_data_filter_invalid_input(client1, session_s3_dataset1_tables): + table_uri = session_s3_dataset1_tables[0].tableUri + + # Unknown Filter Type + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client1, table_uri, input={'filterName': 'columnfilter', 'filterType': 'UNKNOWN', 'includedCols': ['col_0']} + ).contains('InvalidInput', 'filterType') + + # No Included Cols for COLUMN Type + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client1, table_uri, input={'filterName': 'columnfilter', 'filterType': 'COLUMN'} + ).contains('InvalidInput', 'includedCols') + + # No Row Expression for COLUMN Type + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client1, table_uri, input={'filterName': 'rowfilter', 'filterType': 'ROW'} + ).contains('InvalidInput', 'rowExpression') + + # No Filter Name + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client1, table_uri, input={'filterType': 'COLUMN', 'includedCols': ['col_0']} + ).contains('filterName') + + # Bad Filter Name + filter_name = 'Column !!##$$ Filter' + assert_that(create_table_data_filter).raises(GqlError).when_called_with( + client1, table_uri, input={'filterName': filter_name, 'filterType': 'COLUMN'} + ).contains('InvalidInput', filter_name) + + +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_list_table_data_filters(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + for table in tables: + filters = list_table_data_filters(client1, table.tableUri) + assert_that(filters.nodes).is_length(2) + filter_names = [f.label for f in filters.nodes] + assert_that(filter_names).contains('columnfilter', 'rowfilter') + + +def test_list_table_data_filters_unauthorized(client2, session_s3_dataset1_tables): + table_uri = session_s3_dataset1_tables[0].tableUri + assert_that(list_table_data_filters).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'LIST_TABLE_DATA_FILTERS', table_uri + ) + + +def test_delete_table_data_filter_unauthorized(client2, session_s3_dataset1_tables_data_filters): + filter = session_s3_dataset1_tables_data_filters[0] + assert_that(delete_table_data_filter).raises(GqlError).when_called_with(client2, filter.filterUri).contains( + 'UnauthorizedOperation', 'DELETE_TABLE_DATA_FILTER', filter.tableUri + ) + + +def test_delete_table_data_filter(client1, session_s3_dataset1_tables): + table = session_s3_dataset1_tables[0] + col_filter_input = COL_FILTER_INPUT.copy() + col_filter_input.update({'filterName': 'todelete'}) + filter = create_table_data_filter(client1, table.tableUri, input=col_filter_input) + assert_that(delete_table_data_filter(client1, filter.filterUri)).is_true() From cc6ac155cc6255d24f17173170727355d5e57f44 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 17 Sep 2024 09:27:27 +0100 Subject: [PATCH 074/188] Increase access point creation buffer time and fix bug in share cross account if condition (#1552) ### Feature or Bugfix - Bugfix ### Detail - Condition for RAM invitation acceptance is True (we have to try at least once) - Increase number of retries for access point check + back off time is 10% more every time ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../share_managers/s3_access_point_share_manager.py | 7 +++++-- .../share_processors/glue_table_share_processor.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index 7bd275d6a..e5d70e5ef 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -40,7 +40,8 @@ logger = logging.getLogger(__name__) ACCESS_POINT_CREATION_TIME = 30 -ACCESS_POINT_CREATION_RETRIES = 5 +ACCESS_POINT_CREATION_RETRIES = 10 +ACCESS_POINT_BACKOFF_COEFFICIENT = 1.1 # every time increase retry delay by 10% class S3AccessPointShareManager: @@ -447,12 +448,14 @@ def manage_access_point_and_policy(self): access_point_arn = s3_client.create_bucket_access_point(self.bucket_name, self.access_point_name) # Access point creation is slow retries = 1 + sleep_coeff = 1 while ( not s3_client.get_bucket_access_point_arn(self.access_point_name) and retries < ACCESS_POINT_CREATION_RETRIES ): logger.info('Waiting 30s for access point creation to complete..') - time.sleep(ACCESS_POINT_CREATION_TIME) + time.sleep(ACCESS_POINT_CREATION_TIME * sleep_coeff) + sleep_coeff = sleep_coeff * ACCESS_POINT_BACKOFF_COEFFICIENT retries += 1 existing_policy = s3_client.get_access_point_policy(self.access_point_name) # requester will use this role to access resources diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index cd3c9e581..284875416 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -153,7 +153,7 @@ def process_approved_shares(self) -> bool: manager.grant_principals_permissions_to_source_table(table, share_item, share_item_filter) if manager.cross_account: retries = 0 - retry_share_table = False + retry_share_table = True while retry_share_table and retries < 1: ( retry_share_table, From f683ecd1f66f0ce6356ef4ca8ec319cdc8749a62 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:31:18 +0200 Subject: [PATCH 075/188] Add Dataset integration tests - Dataset missing tests, Table Profiling (#1533) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature: Tests TO BE MERGED AFTER https://github.com/data-dot-all/dataall/pull/1391 ### Detail Follow-up of https://github.com/data-dot-all/dataall/pull/1391. This PR adds: - Tests for profiling jobs - because it is an easy submodule I decided to "chain" the tests and make them one dependent on the next one. I could also create a fixture for a profiling job (check warning, profiling jobs cannot be deleted) - Added missing tests in datasets_base - we still need to add redshift datasets and other types of datasets every time there is a new dataset added. - Added missing tests in s3_datasets: test_list_s3_datasets_owned_by_env_group. ⚠️ Issues discovered during testing. They are not bugs, they are missing functionalities: - Profiling jobs can never be deleted. It is just information on the RDS database, but nevertheless it cannot be deleted. - It would be nice to have an API that checks the status of a Glue crawler ### Relates - https://github.com/data-dot-all/dataall/issues/1358 - https://github.com/data-dot-all/dataall/pull/1391 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Noah Paige --- .../modules/datasets_base/queries.py | 2 +- .../modules/datasets_base/test_dataset.py | 46 +++++-- .../modules/s3_datasets/aws_clients.py | 1 + .../modules/s3_datasets/queries.py | 5 +- .../modules/s3_datasets/test_s3_dataset.py | 32 ++++- .../s3_datasets/test_s3_tables_profiling.py | 121 +++++++++++++++--- 6 files changed, 171 insertions(+), 36 deletions(-) diff --git a/tests_new/integration_tests/modules/datasets_base/queries.py b/tests_new/integration_tests/modules/datasets_base/queries.py index 1ac42f899..73dc14368 100644 --- a/tests_new/integration_tests/modules/datasets_base/queries.py +++ b/tests_new/integration_tests/modules/datasets_base/queries.py @@ -86,7 +86,7 @@ def list_owned_datasets(client, term=''): def list_datasets_created_in_environment(client, environment_uri, term=''): query = { - 'operationName': 'ListDatasets', + 'operationName': 'ListDatasetsCreatedInEnvironment', 'variables': {'environmentUri': environment_uri, 'filter': {'term': term}}, 'query': f""" query ListDatasetsCreatedInEnvironment( diff --git a/tests_new/integration_tests/modules/datasets_base/test_dataset.py b/tests_new/integration_tests/modules/datasets_base/test_dataset.py index dcc3203d5..186326c20 100644 --- a/tests_new/integration_tests/modules/datasets_base/test_dataset.py +++ b/tests_new/integration_tests/modules/datasets_base/test_dataset.py @@ -6,39 +6,65 @@ list_owned_datasets, list_datasets_created_in_environment, ) +from integration_tests.errors import GqlError log = logging.getLogger(__name__) -def test_list_datasets( +def test_list_datasets( # TODO: add Redshift datasets and shared datasets client1, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id ): assert_that(list_datasets(client1, term=session_id).nodes).is_length(3) -def test_list_datasets_unauthorized( +def test_list_datasets_unauthorized( # TODO: add Redshift datasets and shared datasets client2, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id ): assert_that(list_datasets(client2, term=session_id).nodes).is_length(0) -def test_list_owned_datasets( # TODO +def test_list_owned_datasets( # TODO: add Redshift datasets client1, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id ): assert_that(list_owned_datasets(client1, term=session_id).nodes).is_length(3) -def test_list_owned_datasets_unauthorized( # TODO +def test_list_owned_datasets_unauthorized( # TODO: add Redshift datasets client2, session_s3_dataset1, session_imported_sse_s3_dataset1, session_imported_kms_s3_dataset1, session_id ): assert_that(list_owned_datasets(client2, term=session_id).nodes).is_length(0) -def test_list_datasets_created_in_environment(): - # TODO - pass +def test_list_datasets_created_in_environment( # TODO: add Redshift datasets + client1, + client2, + session_env1, + session_env2, + session_s3_dataset1, + session_imported_sse_s3_dataset1, + session_imported_kms_s3_dataset1, + session_id, +): + assert_that( + list_datasets_created_in_environment( + client1, environment_uri=session_env1.environmentUri, term=session_id + ).nodes + ).is_length(3) + assert_that( + list_datasets_created_in_environment( + client2, environment_uri=session_env2.environmentUri, term=session_id + ).nodes + ).is_length(0) -def test_list_datasets_created_in_environment_unauthorized(): - # TODO - pass +def test_list_datasets_created_in_environment_unauthorized( # TODO: add Redshift datasets + client2, + session_env1, + session_s3_dataset1, + session_imported_sse_s3_dataset1, + session_imported_kms_s3_dataset1, + session_id, +): + assert_that(list_datasets_created_in_environment).raises(GqlError).when_called_with( + client2, environment_uri=session_env1.environmentUri, term=session_id + ).contains('UnauthorizedOperation', 'LIST_ENVIRONMENT_DATASETS', session_env1.environmentUri) diff --git a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py index 25d8a54c6..f53576ea8 100644 --- a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py +++ b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py @@ -247,6 +247,7 @@ def create_table(self, database_name, bucket, table_name): 'Parameters': {'field.delim': ','}, }, }, + 'TableType': 'EXTERNAL_TABLE', }, ) except ClientError as e: diff --git a/tests_new/integration_tests/modules/s3_datasets/queries.py b/tests_new/integration_tests/modules/s3_datasets/queries.py index fc1f7af22..3c553dd9c 100644 --- a/tests_new/integration_tests/modules/s3_datasets/queries.py +++ b/tests_new/integration_tests/modules/s3_datasets/queries.py @@ -284,7 +284,7 @@ def start_glue_crawler(client, datasetUri, input): def list_s3_datasets_owned_by_env_group(client, environment_uri, group_uri, term): query = { 'operationName': 'listS3DatasetsOwnedByEnvGroup', - 'variables': {'environmentUri': environment_uri, 'group_uri': group_uri, 'filter': {'term': term}}, + 'variables': {'environmentUri': environment_uri, 'groupUri': group_uri, 'filter': {'term': term}}, 'query': f""" query listS3DatasetsOwnedByEnvGroup( $filter: DatasetFilter @@ -321,7 +321,7 @@ def list_s3_datasets_owned_by_env_group(client, environment_uri, group_uri, term """, } response = client.query(query=query) - return response.data.listDatasetsCreatedInEnvironment + return response.data.listS3DatasetsOwnedByEnvGroup ## Folders Queries/Mutations @@ -743,7 +743,6 @@ def get_table_profiling_run(client, tableUri): GlueTableName AwsAccountId results - status }} }} """, diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py index 2ca4167d6..8e08f2855 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_dataset.py @@ -16,6 +16,7 @@ get_dataset_presigned_role_url, start_glue_crawler, update_dataset, + list_s3_datasets_owned_by_env_group, ) from integration_tests.core.stack.queries import update_stack from integration_tests.core.stack.utils import check_stack_ready @@ -106,9 +107,26 @@ def test_get_dataset_presigned_url_upload_data_unauthorized(client2, dataset_fix ).contains('UnauthorizedOperation', 'CREDENTIALS_DATASET', dataset_uri) -def test_list_s3_datasets_owned_by_env_group(): - # TODO - pass +def test_list_s3_datasets_owned_by_env_group( + client1, + session_env1, + group1, + group2, + session_s3_dataset1, + session_imported_sse_s3_dataset1, + session_imported_kms_s3_dataset1, + session_id, +): + assert_that( + list_s3_datasets_owned_by_env_group( + client1, environment_uri=session_env1.environmentUri, group_uri=group1, term=session_id + ).nodes + ).is_length(3) + assert_that( + list_s3_datasets_owned_by_env_group( + client1, environment_uri=session_env1.environmentUri, group_uri=group2, term=session_id + ).nodes + ).is_length(0) def test_list_s3_datasets_owned_by_env_group_unauthorized(): @@ -144,9 +162,9 @@ def test_update_dataset_unauthorized(client1, client2, dataset_fixture_name, req assert_that(response).contains_entry(datasetUri=dataset_uri).does_not_contain_entry(description=test_description) -def test_delete_s3_dataset(): - # TODO - pass +## test_delete_dataset() +## dataset delete not tested as it is already done in the +## Session fixtures clean-up @pytest.mark.parametrize( @@ -187,7 +205,7 @@ def test_start_crawler(client1, dataset_fixture_name, request): dataset_uri = dataset.datasetUri response = start_glue_crawler(client1, datasetUri=dataset_uri, input={}) assert_that(response.Name).is_equal_to(dataset.GlueCrawlerName) - # TODO: check it can run successfully + check sending prefix + # TODO: check it can run successfully + check sending prefix - We should first implement it in API @pytest.mark.parametrize( diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py index 24a6f7f4d..6a605a58a 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_profiling.py @@ -8,12 +8,36 @@ get_table_profiling_run, ) from integration_tests.errors import GqlError -from integration_tests.modules.s3_datasets.conftest import DATASETS_TABLES_FIXTURES_PARAMS +from integration_tests.utils import poller log = logging.getLogger(__name__) -@pytest.mark.parametrize(*DATASETS_TABLES_FIXTURES_PARAMS) +def has_job_finished(job): + return job.status not in ['STARTING', 'RUNNING', 'STOPPING', 'WAITING'] + + +@poller(check_success=has_job_finished, timeout=600) +def check_job_finished(client, table_uri): + return get_table_profiling_run(client, table_uri) + + +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [ + pytest.param('session_s3_dataset1', 'session_s3_dataset1_tables', marks=pytest.mark.dependency(name='s1')), + pytest.param( + 'session_imported_sse_s3_dataset1', + 'session_imported_sse_s3_dataset1_tables', + marks=pytest.mark.dependency(name='s2'), + ), + pytest.param( + 'session_imported_kms_s3_dataset1', + 'session_imported_kms_s3_dataset1_tables', + marks=pytest.mark.dependency(name='s3'), + ), + ], +) def test_start_table_profiling(client1, dataset_fixture_name, tables_fixture_name, request): dataset = request.getfixturevalue(dataset_fixture_name) tables = request.getfixturevalue(tables_fixture_name) @@ -23,7 +47,6 @@ def test_start_table_profiling(client1, dataset_fixture_name, tables_fixture_nam client1, input={'datasetUri': dataset_uri, 'tableUri': table.tableUri, 'GlueTableName': table.GlueTableName} ) assert_that(response.datasetUri).is_equal_to(dataset_uri) - assert_that(response.status).is_equal_to('RUNNING') assert_that(response.GlueTableName).is_equal_to(table.GlueTableName) @@ -36,21 +59,89 @@ def test_start_table_profiling_unauthorized(client2, dataset_fixture_name, reque ).contains('UnauthorizedOperation', 'PROFILE_DATASET_TABLE', dataset_uri) -def test_list_table_profiling_runs(): - # TODO - pass +@pytest.mark.parametrize( + 'tables_fixture_name', + [ + pytest.param('session_s3_dataset1_tables', marks=pytest.mark.dependency(depends=['s1'])), + pytest.param('session_imported_sse_s3_dataset1_tables', marks=pytest.mark.dependency(depends=['s2'])), + pytest.param('session_imported_kms_s3_dataset1_tables', marks=pytest.mark.dependency(depends=['s3'])), + ], +) +def test_get_table_profiling_run_succeeded(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + table = tables[0] + check_job_finished(client1, table.tableUri) + response = get_table_profiling_run(client1, tableUri=table.tableUri) + assert_that(response.status).is_equal_to('SUCCEEDED') -def test_list_table_profiling_runs_unauthorized(): - # TODO - pass +@pytest.mark.parametrize( + 'tables_fixture_name,confidentiality', + [ + pytest.param('session_s3_dataset1_tables', 'Unclassified', marks=pytest.mark.dependency(depends=['s1'])), + pytest.param( + 'session_imported_sse_s3_dataset1_tables', 'Official', marks=pytest.mark.dependency(depends=['s2']) + ), + pytest.param('session_imported_kms_s3_dataset1_tables', 'Secret', marks=pytest.mark.dependency(depends=['s3'])), + ], +) +def test_get_table_profiling_run_by_confidentiality(client2, tables_fixture_name, confidentiality, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + if confidentiality in ['Unclassified']: + response = get_table_profiling_run(client2, tableUri=table_uri) + assert_that(response.GlueTableName).is_equal_to(tables[0].GlueTableName) + else: + assert_that(get_table_profiling_run).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'GET_TABLE_PROFILING_METRICS' + ) -def test_get_table_profiling_run(): - # TODO - pass +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [ + pytest.param('session_s3_dataset1', 'session_s3_dataset1_tables', marks=pytest.mark.dependency(depends=['s1'])), + pytest.param( + 'session_imported_sse_s3_dataset1', + 'session_imported_sse_s3_dataset1_tables', + marks=pytest.mark.dependency(depends=['s2']), + ), + pytest.param( + 'session_imported_kms_s3_dataset1', + 'session_imported_kms_s3_dataset1_tables', + marks=pytest.mark.dependency(depends=['s3']), + ), + ], +) +def test_list_table_profiling_runs(client1, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table = tables[0] + dataset_uri = dataset.datasetUri + second_run = start_dataset_profiling_run( + client1, input={'datasetUri': dataset_uri, 'tableUri': table.tableUri, 'GlueTableName': table.GlueTableName} + ) + response = list_table_profiling_runs(client1, tableUri=table.tableUri) + assert_that(response.count).is_equal_to(2) -def test_get_table_profiling_run_unauthorized(): - # TODO - pass +@pytest.mark.parametrize( + 'tables_fixture_name,confidentiality', + [ + pytest.param('session_s3_dataset1_tables', 'Unclassified', marks=pytest.mark.dependency(depends=['s1'])), + pytest.param( + 'session_imported_sse_s3_dataset1_tables', 'Official', marks=pytest.mark.dependency(depends=['s2']) + ), + pytest.param('session_imported_kms_s3_dataset1_tables', 'Secret', marks=pytest.mark.dependency(depends=['s3'])), + ], +) +def test_list_table_profiling_runs_by_confidentiality(client2, tables_fixture_name, confidentiality, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + if confidentiality in ['Unclassified']: + response = list_table_profiling_runs(client2, tableUri=table_uri) + assert_that(response.count).is_greater_than_or_equal_to(1) + else: + assert_that(list_table_profiling_runs).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'GET_TABLE_PROFILING_METRICS' + ) From 1570ed3ffa24346fd6afe72955984a10c3da4ae7 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 18 Sep 2024 17:39:09 +0200 Subject: [PATCH 076/188] Add Permissions integration tests (#1550) ### Feature or Bugfix - Feature: testing ### Detail Implement tests for Permissions api calls (inside core/permissions) as part of https://github.com/data-dot-all/dataall/issues/1220 !Excludes updateSSMParameter mutation - I think it is unused ### Relates - https://github.com/data-dot-all/dataall/issues/1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../core/permissions/queries.py | 64 +++++++++++++++++++ .../core/permissions/test_permissions.py | 57 +++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 tests_new/integration_tests/core/permissions/queries.py create mode 100644 tests_new/integration_tests/core/permissions/test_permissions.py diff --git a/tests_new/integration_tests/core/permissions/queries.py b/tests_new/integration_tests/core/permissions/queries.py new file mode 100644 index 000000000..130011f1d --- /dev/null +++ b/tests_new/integration_tests/core/permissions/queries.py @@ -0,0 +1,64 @@ +# TODO: This file will be replaced by using the SDK directly +def update_group_tenant_permissions(client, group_uri, permissions=[]): + query = { + 'operationName': 'updateGroupTenantPermissions', + 'variables': { + 'input': { + 'groupUri': group_uri, + 'permissions': permissions, + } + }, + 'query': """ + mutation updateGroupTenantPermissions( + $input: UpdateGroupTenantPermissionsInput! + ) { + updateGroupTenantPermissions(input: $input) + } + """, + } + response = client.query(query=query) + return response.data.updateGroupTenantPermissions + + +def list_tenant_permissions(client): + query = { + 'operationName': 'listTenantPermissions', + 'variables': {}, + 'query': """ + query listTenantPermissions { + listTenantPermissions { + name + description + } + } + """, + } + response = client.query(query=query) + return response.data.listTenantPermissions + + +def list_tenant_groups(client, term=''): + query = { + 'operationName': 'listTenantGroups', + 'variables': {'filter': {'term': term}}, + 'query': """ + query listTenantGroups($filter: GroupFilter) { + listTenantGroups(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + groupUri + tenantPermissions { + name + description + } + } + } + } + """, + } + response = client.query(query=query) + return response.data.listTenantGroups diff --git a/tests_new/integration_tests/core/permissions/test_permissions.py b/tests_new/integration_tests/core/permissions/test_permissions.py new file mode 100644 index 000000000..9d5ff3a50 --- /dev/null +++ b/tests_new/integration_tests/core/permissions/test_permissions.py @@ -0,0 +1,57 @@ +from assertpy import assert_that + +from integration_tests.core.permissions.queries import ( + update_group_tenant_permissions, + list_tenant_permissions, + list_tenant_groups, +) +from integration_tests.errors import GqlError + + +def test_list_tenant_permissions(clientTenant): + response = list_tenant_permissions(clientTenant) + assert_that(response).is_not_empty() + assert_that(len(response)).is_greater_than_or_equal_to(3) + assert_that(response).does_not_contain([None, '', False]) + assert_that([p.name for p in response]).does_not_contain([None, '', False]) + + +def test_list_tenant_permissions_unauthorized(client1): + assert_that(list_tenant_permissions).raises(GqlError).when_called_with(client1).contains( + 'UnauthorizedOperation', 'LIST_TENANT_TEAM_PERMISSIONS' + ) + + +def test_list_tenant_groups(clientTenant): + response = list_tenant_groups(clientTenant) + assert_that(response.count).is_greater_than_or_equal_to(4) + assert_that(response.nodes).is_not_empty() + assert_that(response.nodes[0]).contains_key('tenantPermissions') + ## Testing admin group DAAdministrators exists + admin_group = next(group for group in response.nodes if group.groupUri == 'DHAdmins') + assert_that(admin_group).contains_key('tenantPermissions') + + +def test_list_tenant_groups_unauthorized(client1): + assert_that(list_tenant_groups).raises(GqlError).when_called_with(client1).contains( + 'UnauthorizedOperation', 'LIST_TENANT_TEAMS' + ) + + +def test_update_group_tenant_permissions(clientTenant, group1): + # get group with permissions + response = list_tenant_groups(clientTenant, term=group1) + assert_that(response.count).is_equal_to(1) + assert_that(len(response.nodes[0].tenantPermissions)).is_greater_than_or_equal_to(1) + group1_perms = [p.name for p in response.nodes[0].tenantPermissions] + # update permissions + response = update_group_tenant_permissions(clientTenant, group1, group1_perms[:-1]) + assert_that(response).is_true() + # check permissions were updated + response = list_tenant_groups(clientTenant, term=group1) + assert_that(response.count).is_equal_to(1) + group1_p_updated = response.nodes[0] + assert_that(len(group1_p_updated.tenantPermissions)).is_equal_to(len(group1_perms) - 1) + assert_that(group1_p_updated.tenantPermissions).does_not_contain(group1_perms[-1]) + # update permissions back to initial state + update_group_tenant_permissions(clientTenant, group1, group1_perms) From 47697ca3d051ecb46a36beb6181663c43ede866a Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Thu, 19 Sep 2024 08:23:35 +0200 Subject: [PATCH 077/188] Add Stacks and KeyValueTags integration tests (#1551) ### Feature or Bugfix Implement tests for Stacks and KeyValueTags api calls (inside core/stacks) as part of https://github.com/data-dot-all/dataall/issues/1220 ### Detail ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../integration_tests/core/stack/conftest.py | 31 ++++++ .../integration_tests/core/stack/queries.py | 65 +++++++++++ .../core/stack/test_stack.py | 102 ++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 tests_new/integration_tests/core/stack/conftest.py create mode 100644 tests_new/integration_tests/core/stack/test_stack.py diff --git a/tests_new/integration_tests/core/stack/conftest.py b/tests_new/integration_tests/core/stack/conftest.py new file mode 100644 index 000000000..c6979c60d --- /dev/null +++ b/tests_new/integration_tests/core/stack/conftest.py @@ -0,0 +1,31 @@ +import pytest + +from integration_tests.core.stack.queries import update_key_value_tags + + +@pytest.fixture(scope='function') +def environment_tags_1(client1, session_env1, session_id): + tags = None + try: + tags = update_key_value_tags( + client1, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [ + {'key': 'key1', 'value': session_id, 'cascade': False}, + {'key': 'key2', 'value': session_id, 'cascade': True}, + ], + }, + ) + yield tags + finally: + if tags: + update_key_value_tags( + client1, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [], + }, + ) diff --git a/tests_new/integration_tests/core/stack/queries.py b/tests_new/integration_tests/core/stack/queries.py index f40ac253f..ef4910a11 100644 --- a/tests_new/integration_tests/core/stack/queries.py +++ b/tests_new/integration_tests/core/stack/queries.py @@ -56,3 +56,68 @@ def get_stack(client, env_uri, stack_uri, target_uri, target_type): } response = client.query(query=query) return response.data.getStack + + +def get_stack_logs(client, target_uri, target_type): + query = { + 'operationName': 'getStackLogs', + 'variables': { + 'targetUri': target_uri, + 'targetType': target_type, + }, + 'query': """ + query getStackLogs($targetUri: String!, $targetType: String!) { + getStackLogs(targetUri: $targetUri, targetType: $targetType) { + message + timestamp + } + } + """, + } + response = client.query(query=query) + return response.data.getStackLogs + + +def list_key_value_tags(client, target_uri, target_type): + query = { + 'operationName': 'listKeyValueTags', + 'variables': { + 'targetUri': target_uri, + 'targetType': target_type, + }, + 'query': """ + query listKeyValueTags($targetUri: String!, $targetType: String!) { + listKeyValueTags(targetUri: $targetUri, targetType: $targetType) { + tagUri + targetUri + targetType + key + value + cascade + } + } + """, + } + response = client.query(query=query) + return response.data.listKeyValueTags + + +def update_key_value_tags(client, input): + query = { + 'operationName': 'updateKeyValueTags', + 'variables': {'input': input}, + 'query': """ + mutation updateKeyValueTags($input: UpdateKeyValueTagsInput!) { + updateKeyValueTags(input: $input) { + tagUri + targetUri + targetType + key + value + cascade + } + } + """, + } + response = client.query(query=query) + return response.data.updateKeyValueTags diff --git a/tests_new/integration_tests/core/stack/test_stack.py b/tests_new/integration_tests/core/stack/test_stack.py new file mode 100644 index 000000000..c8828d394 --- /dev/null +++ b/tests_new/integration_tests/core/stack/test_stack.py @@ -0,0 +1,102 @@ +from assertpy import assert_that + +from integration_tests.core.stack.queries import get_stack_logs, list_key_value_tags, update_key_value_tags +from integration_tests.errors import GqlError + + +## test_update_stack and test_get_stack are not needed as they are +## tested in each module that uses stacks (e.g. integration_tests.core.environment.test_environment.test_persistent_env_update) + + +def test_get_env_stack_logs(client1, session_env1): + response = get_stack_logs(client1, target_uri=session_env1.environmentUri, target_type='environment') + assert_that(response).is_not_empty() + + +def test_get_env_stack_logs_unauthorized(client2, session_env1): + assert_that(get_stack_logs).raises(GqlError).when_called_with( + client=client2, + target_uri=session_env1.environmentUri, + target_type='environment', + ).contains( + 'UnauthorizedOperation', + 'GET_ENVIRONMENT', + session_env1.environmentUri, + ) + + +def test_update_key_value_tags_add_tags(client1, environment_tags_1, session_id): + assert_that(len(environment_tags_1)).is_equal_to(2) + assert_that(environment_tags_1[0]).contains_entry(key='key1', value=session_id, cascade=False) + assert_that(environment_tags_1[1]).contains_entry(key='key2', value=session_id, cascade=True) + + +def test_update_key_value_tags_unauthorized(client2, session_env1, session_id): + assert_that(update_key_value_tags).raises(GqlError).when_called_with( + client=client2, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [ + {'key': 'key1U', 'value': session_id, 'cascade': False}, + {'key': 'key2U', 'value': session_id, 'cascade': True}, + ], + }, + ).contains( + 'UnauthorizedOperation', + 'UPDATE_ENVIRONMENT', + session_env1.environmentUri, + ) + + +def test_update_list_key_value_tags_add_tag_invalid_input(client1, session_env1, session_id): + assert_that(update_key_value_tags).raises(GqlError).when_called_with( + client=client1, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [ + {'key': 'keyDuplicated', 'value': session_id, 'cascade': False}, + {'key': 'keyDuplicated', 'value': session_id, 'cascade': True}, + ], + }, + ).contains( + 'UnauthorizedOperation', + 'SAVE_KEY_VALUE_TAGS', + 'Duplicate tag keys found', + ) + + +def test_update_key_value_tags_delete_tags(client1, session_env1, session_id): + response = update_key_value_tags( + client1, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [ + {'key': 'key1delete', 'value': session_id, 'cascade': False}, + {'key': 'key2delete', 'value': session_id, 'cascade': True}, + ], + }, + ) + assert_that(len(response)).is_equal_to(2) + # Test delete tag + response = update_key_value_tags( + client1, + input={ + 'targetUri': session_env1.environmentUri, + 'targetType': 'environment', + 'tags': [], + }, + ) + assert_that(response).is_equal_to([]) + # Test list tags after delete + response = list_key_value_tags(client1, target_uri=session_env1.environmentUri, target_type='environment') + assert_that(response).is_equal_to([]) + + +def test_list_key_value_tags(client1, environment_tags_1, session_env1, session_id): + response = list_key_value_tags(client1, target_uri=session_env1.environmentUri, target_type='environment') + assert_that(len(response)).is_equal_to(2) + assert_that(response[0]).contains_entry(key='key1', value=session_id, cascade=False) + assert_that(response[1]).contains_entry(key='key2', value=session_id, cascade=True) From 2749ce5a95adec135753c1ee47dc8d02bc614d33 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 20 Sep 2024 08:35:31 +0200 Subject: [PATCH 078/188] Add VPC network integration tests + fix tags bug in networks (#1555) ### Feature or Bugfix - Feature: testing - Bugfix ### Detail Implement tests for Networksapi calls (inside core/vpc + listEnvironmentNetworks) as part of https://github.com/data-dot-all/dataall/issues/1220 ++ It also fixes a small bug on networks - tags were not correctly saved in the database! ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/dataall/core/vpc/api/__init__.py | 4 +- backend/dataall/core/vpc/api/queries.py | 0 .../dataall/core/vpc/db/vpc_repositories.py | 1 + .../dataall/core/vpc/services/vpc_service.py | 1 + .../integration_tests/core/vpc/conftest.py | 21 +++++ .../integration_tests/core/vpc/queries.py | 84 +++++++++++++++++++ .../integration_tests/core/vpc/test_vpc.py | 68 +++++++++++++++ 7 files changed, 177 insertions(+), 2 deletions(-) delete mode 100644 backend/dataall/core/vpc/api/queries.py create mode 100644 tests_new/integration_tests/core/vpc/conftest.py create mode 100644 tests_new/integration_tests/core/vpc/queries.py create mode 100644 tests_new/integration_tests/core/vpc/test_vpc.py diff --git a/backend/dataall/core/vpc/api/__init__.py b/backend/dataall/core/vpc/api/__init__.py index e6f4fa087..1e1887102 100644 --- a/backend/dataall/core/vpc/api/__init__.py +++ b/backend/dataall/core/vpc/api/__init__.py @@ -1,3 +1,3 @@ -from . import input_types, queries, mutations, resolvers, types +from . import input_types, mutations, resolvers, types -__all__ = ['resolvers', 'types', 'input_types', 'queries', 'mutations'] +__all__ = ['resolvers', 'types', 'input_types', 'mutations'] diff --git a/backend/dataall/core/vpc/api/queries.py b/backend/dataall/core/vpc/api/queries.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/dataall/core/vpc/db/vpc_repositories.py b/backend/dataall/core/vpc/db/vpc_repositories.py index f5b4865b6..60ad4aed8 100644 --- a/backend/dataall/core/vpc/db/vpc_repositories.py +++ b/backend/dataall/core/vpc/db/vpc_repositories.py @@ -48,6 +48,7 @@ def query_environment_networks(session, uri, filter): or_( Vpc.label.ilike('%' + term + '%'), Vpc.VpcId.ilike('%' + term + '%'), + Vpc.tags.contains(f'{{{term}}}'), ) ) return query.order_by(Vpc.label) diff --git a/backend/dataall/core/vpc/services/vpc_service.py b/backend/dataall/core/vpc/services/vpc_service.py index 29feb3428..48c9c726c 100644 --- a/backend/dataall/core/vpc/services/vpc_service.py +++ b/backend/dataall/core/vpc/services/vpc_service.py @@ -44,6 +44,7 @@ def create_network(uri: str, admin_group: str, data: dict): owner=username, label=data['label'], name=data['label'], + tags=data.get('tags', []), default=data.get('default', False), ) VpcRepository.save_network(session, vpc) diff --git a/tests_new/integration_tests/core/vpc/conftest.py b/tests_new/integration_tests/core/vpc/conftest.py new file mode 100644 index 000000000..fbb88c8cb --- /dev/null +++ b/tests_new/integration_tests/core/vpc/conftest.py @@ -0,0 +1,21 @@ +import pytest +from integration_tests.core.vpc.queries import create_network, delete_network + + +@pytest.fixture(scope='function') +def network1(client1, group1, session_env1, session_id): + network = None + try: + network = create_network( + client1, + name='testVpc1', + vpc_id='someId', + public_subnets=['testSubnet1'], + environment_uri=session_env1.environmentUri, + group=group1, + tags=[session_id], + ) + yield network + finally: + if network: + delete_network(client1, vpc_uri=network.vpcUri) diff --git a/tests_new/integration_tests/core/vpc/queries.py b/tests_new/integration_tests/core/vpc/queries.py new file mode 100644 index 000000000..4069c43d4 --- /dev/null +++ b/tests_new/integration_tests/core/vpc/queries.py @@ -0,0 +1,84 @@ +# TODO: This file will be replaced by using the SDK directly + +NETWORK_TYPE = """ +VpcId +vpcUri +environment { + environmentUri + label + AwsAccountId + region +} +label +owner +name +description +tags +AwsAccountId +region +privateSubnetIds +publicSubnetIds +SamlGroupName +default +""" + + +def create_network(client, name, environment_uri, group, vpc_id, public_subnets=[], private_subnets=[], tags=[]): + query = { + 'operationName': 'createNetwork', + 'variables': { + 'input': { + 'label': name, + 'environmentUri': environment_uri, + 'vpcId': vpc_id, + 'publicSubnetIds': public_subnets, + 'privateSubnetIds': private_subnets, + 'SamlGroupName': group, + 'description': 'Created for integration testing', + 'tags': tags, + } + }, + 'query': f"""mutation createNetwork($input: NewVpcInput!) {{ + createNetwork(input: $input) {{ + {NETWORK_TYPE} + }} + }} + """, + } + response = client.query(query=query) + return response.data.createNetwork + + +def delete_network(client, vpc_uri): + query = { + 'operationName': 'deleteNetwork', + 'variables': {'vpcUri': vpc_uri}, + 'query': """mutation deleteNetwork($vpcUri: String!) { + deleteNetwork(vpcUri: $vpcUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteNetwork + + +def list_environment_networks(client, environment_uri, term=''): + query = { + 'operationName': 'listEnvironmentNetworks', + 'variables': {'environmentUri': environment_uri, 'filter': {'term': term}}, + 'query': f"""query listEnvironmentNetworks($environmentUri: String!, $filter: VpcFilter!) {{ + listEnvironmentNetworks(environmentUri: $environmentUri, filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + {NETWORK_TYPE} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listEnvironmentNetworks diff --git a/tests_new/integration_tests/core/vpc/test_vpc.py b/tests_new/integration_tests/core/vpc/test_vpc.py new file mode 100644 index 000000000..eb9a78d8e --- /dev/null +++ b/tests_new/integration_tests/core/vpc/test_vpc.py @@ -0,0 +1,68 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError +from integration_tests.core.vpc.queries import create_network, delete_network, list_environment_networks + + +def test_create_network(network1, session_id): + assert_that(network1).contains_entry(label='testVpc1', tags=[session_id], VpcId='someId') + assert_that(network1.vpcUri).is_not_none() + + +def test_create_network_unauthorized(client2, group2, session_env1, session_id): + assert_that(create_network).raises(GqlError).when_called_with( + client2, + name='testVpc2', + vpc_id='someId2', + public_subnets=['testSubnet2'], + environment_uri=session_env1.environmentUri, + group=group2, + tags=[session_id], + ).contains('UnauthorizedOperation', 'CREATE_NETWORK', session_env1.environmentUri) + + +def test_create_duplicated_network_invalid(client1, group1, session_env1, session_id, network1): + assert_that(create_network).raises(GqlError).when_called_with( + client1, + name='testVpcDuplicated2', + vpc_id='someId', + public_subnets=['testSubnet1'], + environment_uri=session_env1.environmentUri, + group=group1, + tags=[session_id], + ).contains('ResourceAlreadyExists', 'CREATE_NETWORK', 'someId') + + +def test_delete_network(client1, group1, session_env1, session_id): + response = create_network( + client1, + name='testVpcDelete', + vpc_id='someIdDelete', + public_subnets=['testSubnet1'], + environment_uri=session_env1.environmentUri, + group=group1, + tags=[session_id], + ) + assert_that(response.vpcUri).is_not_none() + response = delete_network(client1, vpc_uri=response.vpcUri) + assert_that(response).is_true() + + +def test_delete_network_unauthorized(client2, network1): + assert_that(delete_network).raises(GqlError).when_called_with( + client2, + vpc_uri=network1.vpcUri, + ).contains('UnauthorizedOperation', 'DELETE_NETWORK', network1.vpcUri) + + +def test_list_environment_networks(client1, network1, session_env1, session_id): + response = list_environment_networks(client1, environment_uri=session_env1.environmentUri, term=session_id) + assert_that(response.count).is_equal_to(1) + assert_that(response.nodes[0]).contains_entry(label='testVpc1', VpcId='someId', vpcUri=network1.vpcUri) + + +def test_list_environment_networks_unauthorized(client2, network1, session_env1): + assert_that(list_environment_networks).raises(GqlError).when_called_with( + client2, + environment_uri=session_env1.environmentUri, + ).contains('UnauthorizedOperation', 'LIST_ENVIRONMENT_NETWORKS', session_env1.environmentUri) From d5226c5eaac105d65faf029aba39338959095828 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:00:30 +0200 Subject: [PATCH 079/188] Add Glossaries integration tests (#1556) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature:Testing ### Detail Implement tests for Glossaries/Catalog as part of https://github.com/data-dot-all/dataall/issues/1220 ⚠️ To test glossary associations, we need resources that use the glossary terms (associate a term to a resource). Possible resources include: s3_datasets, s3_tables, s3_folders, dashboards, redshift_datasets and redshift_tables. All of which are part of other modules that might be enabled or disabled. In this PR we assume that the s3_datasets module is enabled! If it was not enabled, then the glossary tests would fail! During the implementation several enhancement ideas came up and are collected in #1557 Tested in local with connection to real AWS deployment: ![image](https://github.com/user-attachments/assets/d759cc3d-7e44-4057-b16b-0fc94edd2290) ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/dataall/modules/catalog/api/types.py | 12 +- .../modules/catalog/__init__.py | 0 .../modules/catalog/conftest.py | 113 +++++ .../modules/catalog/queries.py | 421 ++++++++++++++++++ .../modules/catalog/test_glossaries.py | 229 ++++++++++ 5 files changed, 769 insertions(+), 6 deletions(-) create mode 100644 tests_new/integration_tests/modules/catalog/__init__.py create mode 100644 tests_new/integration_tests/modules/catalog/conftest.py create mode 100644 tests_new/integration_tests/modules/catalog/queries.py create mode 100644 tests_new/integration_tests/modules/catalog/test_glossaries.py diff --git a/backend/dataall/modules/catalog/api/types.py b/backend/dataall/modules/catalog/api/types.py index f8aa049e0..a33ba37c8 100644 --- a/backend/dataall/modules/catalog/api/types.py +++ b/backend/dataall/modules/catalog/api/types.py @@ -42,21 +42,21 @@ fields=[ gql.Field(name='nodeUri', type=gql.ID), gql.Field(name='parentUri', type=gql.NonNullableType(gql.String)), - gql.Field(name='status', type=gql.NonNullableType(gql.String)), gql.Field(name='owner', type=gql.NonNullableType(gql.String)), gql.Field(name='path', type=gql.NonNullableType(gql.String)), gql.Field(name='label', type=gql.NonNullableType(gql.String)), + gql.Field(name='status', type=gql.NonNullableType(gql.String)), + gql.Field(name='readme', type=gql.String), + gql.Field(name='created', type=gql.NonNullableType(gql.String)), + gql.Field(name='updated', type=gql.String), + gql.Field(name='deleted', type=gql.String), + gql.Field(name='isMatch', type=gql.Boolean), gql.Field(name='admin', type=gql.String), gql.Field( name='userRoleForGlossary', type=GlossaryRole.toGraphQLEnum(), resolver=resolve_user_role, ), - gql.Field(name='readme', type=gql.String), - gql.Field(name='created', type=gql.NonNullableType(gql.String)), - gql.Field(name='updated', type=gql.String), - gql.Field(name='deleted', type=gql.String), - gql.Field(name='isMatch', type=gql.Boolean), gql.Field(name='stats', resolver=resolve_stats, type=gql.Ref('GlossaryNodeStatistics')), gql.Field( resolver=resolve_node_tree, diff --git a/tests_new/integration_tests/modules/catalog/__init__.py b/tests_new/integration_tests/modules/catalog/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests_new/integration_tests/modules/catalog/conftest.py b/tests_new/integration_tests/modules/catalog/conftest.py new file mode 100644 index 000000000..fa93399fe --- /dev/null +++ b/tests_new/integration_tests/modules/catalog/conftest.py @@ -0,0 +1,113 @@ +import pytest +from integration_tests.modules.catalog.queries import ( + create_glossary, + delete_glossary, + create_term, + delete_term, + create_category, + delete_category, + list_glossary_associations, + approve_term_association, +) + +from integration_tests.modules.s3_datasets.queries import update_dataset + +""" +Temp glossary elements. Scope=function +""" + + +@pytest.fixture(scope='function') +def glossary1(client1, group1, session_id): + glos = None + try: + glos = create_glossary( + client1, name=f'glossary1-{session_id}', group=group1, read_me='Glossary created for integration testing' + ) + yield glos + finally: + if glos: + delete_glossary(client1, node_uri=glos.nodeUri) + + +@pytest.fixture(scope='function') +def category1(client1, group1, glossary1): + cat = None + try: + cat = create_category( + client1, name='category1', parent_uri=glossary1.nodeUri, read_me='Category created for integration testing' + ) + yield cat + finally: + if cat: + delete_category(client1, node_uri=cat.nodeUri) + + +@pytest.fixture(scope='function') +def glossary_term1(client1, group1, glossary1): + term = None + try: + term = create_term( + client1, name='glos_term1', parent_uri=glossary1.nodeUri, read_me='Term created for integration testing' + ) + yield term + finally: + if term: + delete_term(client1, node_uri=term.nodeUri) + + +@pytest.fixture(scope='function') +def category_term1(client1, group1, category1): + term = None + try: + term = create_term( + client1, name='cat_term1', parent_uri=category1.nodeUri, read_me='Term created for integration testing' + ) + yield term + finally: + if term: + delete_term(client1, node_uri=term.nodeUri) + + +""" +WARNING! +Associations are applied to the S3_Datasets module +Glossaries can only be tested if the S3_datasets module is enabled in the deployment used for testing! +""" + + +@pytest.fixture(scope='function') +def dataset_association1(client1, group1, glossary1, glossary_term1, session_s3_dataset1): + ds_association = None + try: + update_dataset( + client1, + datasetUri=session_s3_dataset1.datasetUri, + input={ + 'terms': [glossary_term1.nodeUri], + 'KmsAlias': session_s3_dataset1.KmsAlias, + }, + ) + response = list_glossary_associations(client1, node_uri=glossary1.nodeUri) + ds_association = next( + (assoc for assoc in response.associations.nodes if assoc.targetUri == session_s3_dataset1.datasetUri), None + ) + yield ds_association + finally: + if ds_association: + update_dataset( + client1, + datasetUri=session_s3_dataset1.datasetUri, + input={ + 'terms': [], + 'KmsAlias': session_s3_dataset1.KmsAlias, + }, + ) + + +@pytest.fixture(scope='function') +def approved_dataset_association1(client1, glossary1, dataset_association1): + approve_term_association(client1, link_uri=dataset_association1.linkUri) + response = list_glossary_associations(client1, node_uri=glossary1.nodeUri) + association = next((n for n in response.associations.nodes if n.linkUri == dataset_association1.linkUri), None) + yield association diff --git a/tests_new/integration_tests/modules/catalog/queries.py b/tests_new/integration_tests/modules/catalog/queries.py new file mode 100644 index 000000000..e19f5395a --- /dev/null +++ b/tests_new/integration_tests/modules/catalog/queries.py @@ -0,0 +1,421 @@ +# TODO: This file will be replaced by using the SDK directly + +GLOSSARY_TERM_CATEGORY_COMMON_FIELDS = """ +nodeUri, +parentUri, +owner, +path, +label, +status, +readme, +created, +updated, +deleted, +isMatch +""" + + +def create_glossary(client, name, group, read_me): + query = { + 'operationName': 'CreateGlossary', + 'variables': { + 'input': { + 'label': name, + 'admin': group, + 'status': 'approved', + 'readme': read_me, + } + }, + 'query': f""" + mutation CreateGlossary($input: CreateGlossaryInput) {{ + createGlossary(input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.createGlossary + + +def update_glossary(client, node_uri, name, group, read_me): + query = { + 'operationName': 'UpdateGlossary', + 'variables': { + 'nodeUri': node_uri, + 'input': { + 'label': name, + 'admin': group, + 'status': 'SomeStatus', + 'readme': read_me, + }, + }, + 'query': f""" + mutation UpdateGlossary($nodeUri: String!, $input: UpdateGlossaryInput) {{ + updateGlossary(nodeUri: $nodeUri, input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateGlossary + + +def delete_glossary(client, node_uri): + query = { + 'operationName': 'deleteGlossary', + 'variables': {'nodeUri': node_uri}, + 'query': """ + mutation deleteGlossary($nodeUri: String!) { + deleteGlossary(nodeUri: $nodeUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteGlossary + + +def get_glossary(client, node_uri): + query = { + 'operationName': 'GetGlossary', + 'variables': {'nodeUri': node_uri}, + 'query': f""" + query GetGlossary($nodeUri: String!) {{ + getGlossary(nodeUri: $nodeUri) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + admin + userRoleForGlossary + stats {{ + categories + terms + associations + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.getGlossary + + +def get_glossary_tree(client, node_uri, node_type=''): + query = { + 'operationName': 'GetGlossaryTree', + 'variables': {'nodeUri': node_uri, 'filter': {'nodeType': node_type}}, + 'query': f""" + query GetGlossaryTree( + $nodeUri: String! + $filter: GlossaryNodeSearchFilter + ) {{ + getGlossary(nodeUri: $nodeUri) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + admin + categories {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + parentUri + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + stats {{ + categories + terms + }} + }} + }} + tree(filter: $filter) {{ + count + hasNext + hasPrevious + page + pages + nodes {{ + __typename + ... on Glossary {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + ... on Category {{ + parentUri + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + ... on Term {{ + parentUri + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.getGlossary + + +def list_glossary_associations(client, node_uri): + query = { + 'operationName': 'GetGlossaryTree', + 'variables': {'nodeUri': node_uri}, + 'query': f""" + query GetGlossaryTree( + $nodeUri: String! + $filter: GlossaryTermTargetFilter + ) {{ + getGlossary(nodeUri: $nodeUri) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + admin + userRoleForGlossary + associations(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + linkUri + targetUri + approvedBySteward + term {{ + label + nodeUri + }} + targetType + target {{ + label + }} + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.getGlossary + + +def list_glossaries(client, term='', status=''): + query = { + 'operationName': 'ListGlossaries', + 'variables': {'filter': {'term': term, 'status': status}}, + 'query': f""" + query ListGlossaries($filter: GlossaryFilter) {{ + listGlossaries(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + admin + stats {{ + categories + terms + associations + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.listGlossaries + + +def search_glossary(client, term='', node_type=''): + query = { + 'operationName': 'SearchGlossary', + 'variables': {'filter': {'term': term, 'nodeType': node_type}}, + 'query': f""" + query SearchGlossary($filter: GlossaryNodeSearchFilter) {{ + searchGlossary(filter: $filter) {{ + count + page + pages + hasNext + hasPrevious + nodes {{ + __typename + ... on Glossary {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + ... on Category {{ + parentUri + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + ... on Term {{ + parentUri + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + }} + }} + """, + } + response = client.query(query=query) + return response.data.searchGlossary + + +def create_category(client, parent_uri, name, read_me): + query = { + 'operationName': 'CreateCategory', + 'variables': { + 'parentUri': parent_uri, + 'input': { + 'label': name, + 'status': 'approved', + 'readme': read_me, + }, + }, + 'query': f""" + mutation CreateCategory($parentUri: String!, $input: CreateCategoryInput) {{ + createCategory(parentUri: $parentUri, input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.createCategory + + +def update_category(client, node_uri, name, read_me): + query = { + 'operationName': 'UpdateCategory', + 'variables': { + 'nodeUri': node_uri, + 'input': { + 'label': name, + 'status': 'SomeStatus', + 'readme': read_me, + }, + }, + 'query': f""" + mutation UpdateCategory($nodeUri: String!, $input: UpdateCategoryInput) {{ + updateCategory(nodeUri: $nodeUri, input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateCategory + + +def delete_category(client, node_uri): + query = { + 'operationName': 'deleteCategory', + 'variables': {'nodeUri': node_uri}, + 'query': """ + mutation deleteCategory($nodeUri: String!) { + deleteCategory(nodeUri: $nodeUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteCategory + + +def create_term(client, parent_uri, name, read_me): + query = { + 'operationName': 'CreateTerm', + 'variables': { + 'parentUri': parent_uri, + 'input': { + 'label': name, + 'status': 'SomeStatus', + 'readme': read_me, + }, + }, + 'query': f""" + mutation CreateTerm($parentUri: String!, $input: CreateTermInput) {{ + createTerm(parentUri: $parentUri, input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.createTerm + + +def update_term(client, node_uri, name, read_me): + query = { + 'operationName': 'UpdateTerm', + 'variables': { + 'nodeUri': node_uri, + 'input': { + 'label': name, + 'status': 'SomeStatus', + 'readme': read_me, + }, + }, + 'query': f""" + mutation UpdateTerm($nodeUri: String!, $input: UpdateTermInput) {{ + updateTerm(nodeUri: $nodeUri, input: $input) {{ + {GLOSSARY_TERM_CATEGORY_COMMON_FIELDS} + }} + }} + """, + } + response = client.query(query=query) + return response.data.updateTerm + + +def delete_term(client, node_uri): + query = { + 'operationName': 'deleteTerm', + 'variables': {'nodeUri': node_uri}, + 'query': """ + mutation deleteTerm($nodeUri: String!) { + deleteTerm(nodeUri: $nodeUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteTerm + + +def approve_term_association(client, link_uri): + query = { + 'operationName': 'ApproveTermAssociation', + 'variables': {'linkUri': link_uri}, + 'query': """ + mutation ApproveTermAssociation($linkUri: String!) { + approveTermAssociation(linkUri: $linkUri) + } + """, + } + response = client.query(query=query) + return response.data.approveTermAssociation + + +def dismiss_term_association(client, link_uri): + query = { + 'operationName': 'DismissTermAssociation', + 'variables': {'linkUri': link_uri}, + 'query': """ + mutation DismissTermAssociation($linkUri: String!) { + dismissTermAssociation(linkUri: $linkUri) + } + """, + } + response = client.query(query=query) + return response.data.dismissTermAssociation + + +def start_reindex_catalog(client, handle_deletes): + query = { + 'operationName': 'startReindexCatalog', + 'variables': {'handleDeletes': handle_deletes}, + 'query': """ + mutation startReindexCatalog($handleDeletes: Boolean!) { + startReindexCatalog(handleDeletes: $handleDeletes) + } + """, + } + response = client.query(query=query) + return response.data.startReindexCatalog diff --git a/tests_new/integration_tests/modules/catalog/test_glossaries.py b/tests_new/integration_tests/modules/catalog/test_glossaries.py new file mode 100644 index 000000000..e5258eb97 --- /dev/null +++ b/tests_new/integration_tests/modules/catalog/test_glossaries.py @@ -0,0 +1,229 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError +from integration_tests.modules.catalog.queries import ( + create_glossary, + get_glossary, + get_glossary_tree, + list_glossary_associations, + list_glossaries, + search_glossary, + delete_glossary, + update_glossary, + create_term, + delete_term, + update_term, + create_category, + delete_category, + update_category, + approve_term_association, + dismiss_term_association, + start_reindex_catalog, +) + + +def test_create_glossary(client1, glossary1, session_id): + assert_that(glossary1.nodeUri).is_not_none() + assert_that(glossary1.label).is_equal_to(f'glossary1-{session_id}') + assert_that(glossary1.readme).is_equal_to('Glossary created for integration testing') + + +def test_get_glossary(client1, glossary1, category1, glossary_term1, category_term1, session_id): + response = get_glossary(client1, node_uri=glossary1.nodeUri) + assert_that(response.label).is_equal_to(f'glossary1-{session_id}') + assert_that(response.nodeUri).is_equal_to(glossary1.nodeUri) + assert_that(response.stats).contains_entry(categories=1, terms=2) + + +def test_get_glossary_get_tree(client1, glossary1, category1, glossary_term1, category_term1): + response = get_glossary_tree(client1, node_uri=glossary1.nodeUri) + assert_that(response.tree).is_not_none() + assert_that(response.tree.count).is_equal_to(4) + # Check that the glossary is in the tree + glos = next((n for n in response.tree.nodes if n.nodeUri == glossary1.nodeUri), None) + assert_that(glos.label).is_equal_to(glossary1.label) + assert_that(glos.nodeUri).is_equal_to(glossary1.nodeUri) + assert_that(glos.path).is_equal_to(f'/{glossary1.nodeUri}') + # Check that the category is in the tree + cat = next((n for n in response.tree.nodes if n.nodeUri == category1.nodeUri), None) + assert_that(cat.label).is_equal_to(category1.label) + assert_that(cat.nodeUri).is_equal_to(category1.nodeUri) + assert_that(cat.parentUri).is_equal_to(glossary1.nodeUri) + assert_that(cat.path).is_equal_to(f'/{glossary1.nodeUri}/{category1.nodeUri}') + # Check that the terms are in the tree and their parentUris are correct + g_term = next((n for n in response.tree.nodes if n.nodeUri == glossary_term1.nodeUri), None) + assert_that(g_term.label).is_equal_to(glossary_term1.label) + assert_that(g_term.nodeUri).is_equal_to(glossary_term1.nodeUri) + assert_that(g_term.parentUri).is_equal_to(glossary1.nodeUri) + assert_that(g_term.path).is_equal_to(f'/{glossary1.nodeUri}/{glossary_term1.nodeUri}') + c_term = next((n for n in response.tree.nodes if n.nodeUri == category_term1.nodeUri), None) + assert_that(c_term.label).is_equal_to(category_term1.label) + assert_that(c_term.nodeUri).is_equal_to(category_term1.nodeUri) + assert_that(c_term.parentUri).is_equal_to(category1.nodeUri) + assert_that(c_term.path).is_equal_to(f'/{glossary1.nodeUri}/{category1.nodeUri}/{category_term1.nodeUri}') + + +def test_get_glossary_list_associations(client1, glossary1, glossary_term1, dataset_association1): + response = list_glossary_associations(client1, node_uri=glossary1.nodeUri) + assert_that(response.associations.count).is_equal_to(1) + ass = response.associations.nodes[0] + assert_that(ass.linkUri).is_not_none() + assert_that(ass.term.nodeUri).is_equal_to(glossary_term1.nodeUri) + + +def test_list_glossaries(client1, glossary1, category1, glossary_term1, category_term1): + response = list_glossaries(client1) + assert_that(response.count).is_greater_than_or_equal_to(1) + glos_1 = next((n for n in response.nodes if n.nodeUri == glossary1.nodeUri), None) + assert_that(glos_1.nodeUri).is_equal_to(glossary1.nodeUri) + assert_that(glos_1.stats).contains_entry(categories=1, terms=2) + + +def test_search_glossary(client1, glossary1, category1, glossary_term1, category_term1): + response = search_glossary(client1, term=glossary1.label) + assert_that(response.count).is_equal_to(1) + + +def test_update_glossary(client1, group1, glossary1, session_id): + response = update_glossary( + client1, + node_uri=glossary1.nodeUri, + name='glossaryUpdated', + group=group1, + read_me=f'UPDATED: {session_id} Glossary created for integration testing', + ) + assert_that(response.label).is_equal_to('glossaryUpdated') + assert_that(response.readme).is_equal_to(f'UPDATED: {session_id} Glossary created for integration testing') + + +def test_delete_glossary(client1, group1): + glos = create_glossary(client1, name='glossary1', group=group1, read_me='Glossary created for integration testing') + number_glossaries_before_delete = list_glossaries(client1).count + response = delete_glossary(client1, glos.nodeUri) + assert_that(response).is_true() + response = list_glossaries(client1) + assert_that(response.count).is_equal_to(number_glossaries_before_delete - 1) + + +def test_delete_glossary_with_categories_and_terms(client1, group1): + glos = create_glossary(client1, name='glossary1', group=group1, read_me='Glossary created for integration testing') + category = create_category( + client1, name='category1', parent_uri=glos.nodeUri, read_me='Category created for integration testing' + ) + term = create_term( + client1, name='term1', parent_uri=category.nodeUri, read_me='Term created for integration testing' + ) + response = delete_glossary(client1, glos.nodeUri) + assert_that(response).is_true() + + +def test_create_category(client1, category1): + assert_that(category1.nodeUri).is_not_none() + assert_that(category1.label).is_equal_to('category1') + + +def test_update_category(client1, category1, session_id): + response = update_category( + client1, + node_uri=category1.nodeUri, + name=category1.label, + read_me=f'UPDATED: {session_id} Category created for integration testing', + ) + assert_that(response.readme).is_equal_to(f'UPDATED: {session_id} Category created for integration testing') + + +def test_delete_category(client1, glossary1): + category = create_category( + client1, name='glossary1', parent_uri=glossary1.nodeUri, read_me='Category created for integration testing' + ) + number_categories_before_delete = get_glossary(client1, node_uri=glossary1.nodeUri).stats.categories + response = delete_category(client1, category.nodeUri) + assert_that(response).is_true() + response = get_glossary(client1, node_uri=glossary1.nodeUri) + assert_that(response.stats.categories).is_equal_to(number_categories_before_delete - 1) + + +def test_delete_category_with_terms(client1, glossary1): + category = create_category( + client1, name='category1', parent_uri=glossary1.nodeUri, read_me='Category created for integration testing' + ) + term = create_term( + client1, name='term1', parent_uri=category.nodeUri, read_me='Term created for integration testing' + ) + response = delete_category(client1, node_uri=category.nodeUri) + assert_that(response).is_true() + + +def test_create_term_in_glossary(client1, glossary_term1): + assert_that(glossary_term1.nodeUri).is_not_none() + assert_that(glossary_term1.label).is_equal_to('glos_term1') + + +def test_create_term_in_category(client1, category_term1): + assert_that(category_term1.nodeUri).is_not_none() + assert_that(category_term1.label).is_equal_to('cat_term1') + + +def test_update_term(client1, glossary_term1, session_id): + response = update_term( + client1, + node_uri=glossary_term1.nodeUri, + name=glossary_term1.label, + read_me=f'UPDATED: {session_id} Glossary term created for integration testing', + ) + assert_that(response.readme).is_equal_to(f'UPDATED: {session_id} Glossary term created for integration testing') + + +def test_delete_term(client1, group1, category1, glossary1): + term = create_term( + client1, name='toDelete', parent_uri=category1.nodeUri, read_me='Term created for integration testing' + ) + number_terms_before_delete = get_glossary(client1, node_uri=glossary1.nodeUri).stats.terms + response = delete_term(client1, node_uri=term.nodeUri) + assert_that(response).is_true() + response = get_glossary(client1, node_uri=glossary1.nodeUri) + assert_that(response.stats.terms).is_equal_to(number_terms_before_delete - 1) + + +def test_approve_term_association_unathorized(client2, dataset_association1): + assert_that(approve_term_association).raises(GqlError).when_called_with( + client2, link_uri=dataset_association1.linkUri + ).contains('UnauthorizedOperation', 'ASSOCIATE_GLOSSARY_TERM') + + +def test_approve_term_association(approved_dataset_association1, dataset_association1): + assert_that(approved_dataset_association1.linkUri).is_equal_to(dataset_association1.linkUri) + assert_that(approved_dataset_association1.approvedBySteward).is_equal_to(True) + + +def test_dismiss_term_association_unathorized(client2, approved_dataset_association1): + assert_that(dismiss_term_association).raises(GqlError).when_called_with( + client2, link_uri=approved_dataset_association1.linkUri + ).contains('UnauthorizedOperation', 'ASSOCIATE_GLOSSARY_TERM') + + +def test_dismiss_term_association(client1, glossary1, approved_dataset_association1): + assert_that(approved_dataset_association1.approvedBySteward).is_equal_to(True) + response = dismiss_term_association(client1, link_uri=approved_dataset_association1.linkUri) + assert_that(response).is_true() + response = list_glossary_associations(client1, node_uri=glossary1.nodeUri) + association = next( + (n for n in response.associations.nodes if n.linkUri == approved_dataset_association1.linkUri), None + ) + assert_that(association.approvedBySteward).is_equal_to(False) + + +def test_start_reindex_catalog_unauthorized(client1): + assert_that(start_reindex_catalog).raises(GqlError).when_called_with(client1, handle_deletes=True).contains( + 'Only data.all admin', 're-index catalog' + ) + + +def test_start_reindex_catalog_handle_deletes(clientTenant): + response = start_reindex_catalog(clientTenant, handle_deletes=True) + assert_that(response).is_true() + + +def test_start_reindex_catalog_handle_deletes_false(clientTenant): + response = start_reindex_catalog(clientTenant, handle_deletes=False) + assert_that(response).is_true() From 95e278c677bd5bef15ef35cf3fda3bb9cc0e460c Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:15:11 +0200 Subject: [PATCH 080/188] Add Redshift connection tooltips and info + restrict to DATA_USER connections for import Redshift Dataset (#1565) ### Feature or Bugfix - Feature: enhancement ### Detail This feature is an enhancement suggested by Redshift experts on #955, which is well explained in #1562. This PR: - adds more info and tooltips that explain details about Redshift Connections on the UI - restricts the type of connection that can be used to import a dataset: ONLY DATA_USER CONNECTIONS CAN BE USED TO IMPORT DATASETS. It implements this logic both in the frontend and backend FIRST VERSION: image UPDATED: ![image](https://github.com/user-attachments/assets/1b199dba-d6ee-471f-9cd7-d74e70b8dd4b) ### Relates #1562 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../services/redshift_dataset_service.py | 9 + .../EnvironmentRedshiftConnectionAddForm.js | 513 +++++++++--------- .../views/RSDatasetImportForm.js | 3 +- 3 files changed, 278 insertions(+), 247 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py index 573c50bd1..2edf3724c 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -2,6 +2,7 @@ from typing import List from dataall.base.context import get_context from dataall.base.db.paginator import paginate_list +from dataall.base.db import exceptions from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.core.permissions.services.group_policy_service import GroupPolicyService @@ -40,6 +41,7 @@ GLOSSARY_REDSHIFT_DATASET_TABLE_NAME, VOTE_REDSHIFT_DATASET_NAME, ) +from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftConnectionTypes log = logging.getLogger(__name__) @@ -94,6 +96,13 @@ def import_redshift_dataset(uri, admin_group, data: dict): context = get_context() with context.db_engine.scoped_session() as session: environment = EnvironmentService.get_environment_by_uri(session, uri) + connection = RedshiftConnectionRepository.get_redshift_connection(session, data.get('connectionUri')) + if connection.connectionType != RedshiftConnectionTypes.DATA_USER.value: + raise exceptions.InvalidInput( + 'Connection', + connection.name, + f'Invalid connection. Only DATA_USER connections can be used to import Redshift Datasets and connection {connection.name} is of type {connection.connectionType}', + ) dataset = RedshiftDatasetRepository.create_redshift_dataset( session=session, username=context.username, env=environment, data=data diff --git a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js index 60b673e4a..3993227c5 100644 --- a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js +++ b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnectionAddForm.js @@ -1,5 +1,7 @@ import { GroupAddOutlined } from '@mui/icons-material'; +import InfoIcon from '@mui/icons-material/Info'; import { LoadingButton } from '@mui/lab'; +import { styled } from '@mui/material/styles'; import { Autocomplete, Box, @@ -10,6 +12,9 @@ import { Grid, MenuItem, TextField, + Tooltip, + TooltipProps, + tooltipClasses, Typography } from '@mui/material'; import { Formik } from 'formik'; @@ -27,11 +32,27 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { const dispatch = useDispatch(); const client = useClient(); + const CustomWidthTooltip = styled(({ className, ...props }: TooltipProps) => ( + + ))({ + [`& .${tooltipClasses.tooltip}`]: { + maxWidth: 500 + } + }); + let { groupOptions, loadingGroups } = useFetchGroups(environment); const connectionOptions = [ - { value: 'DATA_USER', label: 'Data User' }, - { value: 'ADMIN', label: 'Admin' } + { + value: 'DATA_USER', + label: 'Data User', + info: 'Data users connections are required to import Redshift Datasets. The Redshift user for the connection should have Redshift READ permissions to the tables that will be imported in data.all' + }, + { + value: 'ADMIN', + label: 'Admin', + info: 'Admin connections are used by data.all backend to manage data sharing requests. To create a share request between 2 namespaces, an ADMIN connection in the source and in the target namespaces are required. The Redshift user for the connection should have enough permissions to MANAGE DATASHARES in the namespace.' + } ]; const clusterOptions = [ @@ -104,78 +125,110 @@ export const EnvironmentRedshiftConnectionAddForm = (props) => { Add a Redshift connection to environment {environment.label} - The Redshift connection is owned by the selected Team. It is used to - import Redshift Datasets. + The Redshift connection contains the metadata to connect to Redshift + with a particular user. - - { - await submit(values, setStatus, setSubmitting, setErrors); - }} - > - {({ - errors, - handleChange, - handleSubmit, - isSubmitting, - setFieldValue, - touched, - values - }) => ( -

      - - - + + { + await submit(values, setStatus, setSubmitting, setErrors); + }} + > + {({ + errors, + handleChange, + handleSubmit, + isSubmitting, + setFieldValue, + touched, + values + }) => ( + + + + + + + option)} + noOptionsText="No teams found for this environment" + onChange={(event, value) => { + if (value && value.value) { + setFieldValue('SamlAdminGroupName', value.value); + } else { + setFieldValue('SamlAdminGroupName', ''); } - label="connection Name" - placeholder="Name to identify your Connection in data.all" - name="connectionName" - onChange={handleChange} - value={values.connectionName} - variant="outlined" - /> - + }} + renderInput={(params) => ( + + )} + /> + + + + { > {connectionOptions.map((r) => ( - {r.label} + + +
      {r.label}
      + +
      +
      ))}
      - option)} - noOptionsText="No teams found for this environment" - onChange={(event, value) => { - if (value && value.value) { - setFieldValue('SamlAdminGroupName', value.value); - } else { - setFieldValue('SamlAdminGroupName', ''); - } - }} - renderInput={(params) => ( + + {clusterOptions.map((r) => ( + + {r.label} + + ))} + + +
      + + {values.redshiftType === 'serverless' && ( + + + + + + + + )} + {values.redshiftType === 'cluster' && ( + + + + + + )} + +
      + + + + + + You can choose to provide a Redshift user (for Provisioned + Cluster) or a Secrets Manager secret. + + + {values.redshiftType !== 'serverless' && ( + + + + OR - - - - - {clusterOptions.map((r) => ( - - {r.label} - - ))} - - - - - {values.redshiftType === 'serverless' && ( - - - - - - - - - )} - {values.redshiftType === 'cluster' && ( - - - - - - )} - - - - - - - - You can choose to provide a Redshift user (for Provisioned - Cluster) or a Secrets Manager secret. - - - {values.redshiftType !== 'serverless' && ( - - - - - OR - - )} + )} + + + + - + startIcon={} + color="primary" + disabled={isSubmitting} + type="submit" + variant="contained" + > + Add Connection + - - - } - color="primary" - disabled={isSubmitting} - type="submit" - variant="contained" - > - Add Connection - - - - - )} - - + + + )} + ); diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js index f1bfc0f04..6aa4f5db2 100644 --- a/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js @@ -125,7 +125,8 @@ const RSDatasetImportForm = (props) => { filter: { ...Defaults.selectListFilter, environmentUri: environmentUri, - groupUri: groupUri + groupUri: groupUri, + connectionType: 'DATA_USER' } }) ); From 93bd073d0d694de6c64a3fd336f39c88f89a0940 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 23 Sep 2024 11:58:34 -0700 Subject: [PATCH 081/188] fix setting maintenance modes enum (#1567) ### Feature or Bugfix - Bugfix ### Detail - Fix small bug introduced in https://github.com/data-dot-all/dataall/pull/1435 when fetching enums specifically for `maintenanceModes` ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../src/modules/Maintenance/components/MaintenanceViewer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/modules/Maintenance/components/MaintenanceViewer.js b/frontend/src/modules/Maintenance/components/MaintenanceViewer.js index a4048dba9..810c8558d 100644 --- a/frontend/src/modules/Maintenance/components/MaintenanceViewer.js +++ b/frontend/src/modules/Maintenance/components/MaintenanceViewer.js @@ -320,7 +320,7 @@ export const MaintenanceViewer = () => { if (maintenanceModesEnum['MaintenanceModes'].length > 0) { setMaintenanceModes( maintenanceModesEnum['MaintenanceModes'].map((elem) => { - return { label: elem.value, value: elem.name }; + return { label: elem.value, value: elem.value }; }) ); } else { From dcc38491b59e460b611c3dca470ff6a4c932f143 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:19:11 -0700 Subject: [PATCH 082/188] Feat/integration tests dashboards (#1560) ### Feature or Bugfix - Feature ### Detail - Add integration tests for dashboards - Remove `shareDashboard` unused API - Small update to notebook tests to now use `set_env_params` util ### Relates - https://github.com/data-dot-all/dataall/issues/1546 ### Note For dashboard tests to run successfully the follow pre-requisite work must be complete: - QS Enterprise Account created in `session_env1` with Capacity Pricing - QS Dashboard created with `dataall` QS Group having `Owner` permissions - And `dashboardId` added to the `testdata.json` as shown in `README` ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/dashboards/api/mutations.py | 12 -- .../modules/dashboards/api/resolvers.py | 9 -- .../services/dashboard_share_service.py | 18 --- tests/modules/dashboards/test_dashboards.py | 34 ---- tests_new/integration_tests/README.md | 9 ++ tests_new/integration_tests/conftest.py | 7 + .../core/environment/queries.py | 6 +- .../modules/dashboards/conftest.py | 47 ++++++ .../modules/dashboards/mutations.py | 108 +++++++++++++ .../modules/dashboards/queries.py | 147 ++++++++++++++++++ .../modules/dashboards/test_dashboard.py | 115 ++++++++++++++ .../modules/notebooks/conftest.py | 3 + 12 files changed, 441 insertions(+), 74 deletions(-) create mode 100644 tests_new/integration_tests/modules/dashboards/conftest.py create mode 100644 tests_new/integration_tests/modules/dashboards/mutations.py create mode 100644 tests_new/integration_tests/modules/dashboards/queries.py create mode 100644 tests_new/integration_tests/modules/dashboards/test_dashboard.py diff --git a/backend/dataall/modules/dashboards/api/mutations.py b/backend/dataall/modules/dashboards/api/mutations.py index 93a6e0a02..b6deeebba 100644 --- a/backend/dataall/modules/dashboards/api/mutations.py +++ b/backend/dataall/modules/dashboards/api/mutations.py @@ -6,7 +6,6 @@ import_dashboard, reject_dashboard_share, request_dashboard_share, - share_dashboard, update_dashboard, ) @@ -35,17 +34,6 @@ resolver=delete_dashboard, ) - -shareDashboard = gql.MutationField( - name='shareDashboard', - type=gql.Ref('DashboardShare'), - args=[ - gql.Argument(name='principalId', type=gql.NonNullableType(gql.String)), - gql.Argument(name='dashboardUri', type=gql.NonNullableType(gql.String)), - ], - resolver=share_dashboard, -) - requestDashboardShare = gql.MutationField( name='requestDashboardShare', type=gql.Ref('DashboardShare'), diff --git a/backend/dataall/modules/dashboards/api/resolvers.py b/backend/dataall/modules/dashboards/api/resolvers.py index 86d0fb671..67ae59169 100644 --- a/backend/dataall/modules/dashboards/api/resolvers.py +++ b/backend/dataall/modules/dashboards/api/resolvers.py @@ -89,15 +89,6 @@ def list_dashboard_shares( return DashboardShareService.list_dashboard_shares(uri=dashboardUri, data=filter) -def share_dashboard( - context: Context, - source: Dashboard, - principalId: str = None, - dashboardUri: str = None, -): - return DashboardShareService.share_dashboard(uri=dashboardUri, principal_id=principalId) - - def delete_dashboard(context: Context, source, dashboardUri: str = None): return DashboardService.delete_dashboard(uri=dashboardUri) diff --git a/backend/dataall/modules/dashboards/services/dashboard_share_service.py b/backend/dataall/modules/dashboards/services/dashboard_share_service.py index 82edb0a44..aa344f87f 100644 --- a/backend/dataall/modules/dashboards/services/dashboard_share_service.py +++ b/backend/dataall/modules/dashboards/services/dashboard_share_service.py @@ -81,24 +81,6 @@ def list_dashboard_shares(uri: str, data: dict): data=data, ) - @staticmethod - @TenantPolicyService.has_tenant_permission(MANAGE_DASHBOARDS) - @ResourcePolicyService.has_resource_permission(SHARE_DASHBOARD) - def share_dashboard(uri: str, principal_id: str): - context = get_context() - with context.db_engine.scoped_session() as session: - dashboard = DashboardRepository.get_dashboard_by_uri(session, uri) - share = DashboardRepository.create_share( - session=session, - username=context.username, - dashboard=dashboard, - principal_id=principal_id, - init_status=DashboardShareStatus.APPROVED, - ) - - DashboardShareService._create_share_policy(session, principal_id, dashboard.dashboardUri) - return share - @staticmethod def _change_share_status(share, status): DashboardShareService._check_share_status(share) diff --git a/tests/modules/dashboards/test_dashboards.py b/tests/modules/dashboards/test_dashboards.py index 6927c62df..8ab48707f 100644 --- a/tests/modules/dashboards/test_dashboards.py +++ b/tests/modules/dashboards/test_dashboards.py @@ -263,40 +263,6 @@ def test_request_dashboard_share( ) assert len(response.data.searchDashboards['nodes']) == 0 - response = client.query( - """ - mutation shareDashboard($dashboardUri:String!, $principalId:String!){ - shareDashboard(dashboardUri:$dashboardUri, principalId:$principalId){ - shareUri - status - } - } - """, - dashboardUri=dashboard.dashboardUri, - principalId=group2.name, - username=user.username, - groups=[group.name], - ) - assert response.data.shareDashboard.shareUri - - response = client.query( - """ - query searchDashboards($filter:DashboardFilter!){ - searchDashboards(filter:$filter){ - count - nodes{ - dashboardUri - userRoleForDashboard - } - } - } - """, - filter={}, - username=user2.username, - groups=[group2.name], - ) - assert len(response.data.searchDashboards['nodes']) == 1 - def test_delete_dashboard(client, env_fixture, db, user, group, module_mocker, dashboard, patch_es): response = client.query( diff --git a/tests_new/integration_tests/README.md b/tests_new/integration_tests/README.md index fe76e45e8..d2458b2cd 100644 --- a/tests_new/integration_tests/README.md +++ b/tests_new/integration_tests/README.md @@ -54,6 +54,10 @@ Currently **we support only Cognito based deployments** but support for any IdP } }, "envs": { + "persistent_env1": { + "accountId": "...", + "region": "us-east-1" + }, "session_env1": { "accountId": "...", "region": "eu-central-1" @@ -62,6 +66,11 @@ Currently **we support only Cognito based deployments** but support for any IdP "accountId": "...", "region": "eu-west-1" } + }, + "dashboards": { + "session_env1": { + "dashboardId": "..." + }, } } ``` diff --git a/tests_new/integration_tests/conftest.py b/tests_new/integration_tests/conftest.py index 2ca8f5f5f..417a09936 100644 --- a/tests_new/integration_tests/conftest.py +++ b/tests_new/integration_tests/conftest.py @@ -33,11 +33,18 @@ class Env: region: str +@dataclass_json +@dataclass +class Dashboard: + dashboardId: str + + @dataclass_json @dataclass class TestData: users: dict[str, User] envs: dict[str, Env] + dashboards: dict[str, Dashboard] @pytest.fixture(scope='session', autouse=True) diff --git a/tests_new/integration_tests/core/environment/queries.py b/tests_new/integration_tests/core/environment/queries.py index a965d1588..9469fb979 100644 --- a/tests_new/integration_tests/core/environment/queries.py +++ b/tests_new/integration_tests/core/environment/queries.py @@ -61,10 +61,14 @@ def create_environment(client, name, group, organizationUri, awsAccountId, regio 'region': region, 'description': 'Created for integration testing', 'tags': tags, + 'type': 'IntegrationTesting', 'parameters': [ {'key': 'notebooksEnabled', 'value': 'true'}, + {'key': 'dashboardsEnabled', 'value': 'true'}, + {'key': 'mlStudiosEnabled', 'value': 'false'}, + {'key': 'pipelinesEnabled', 'value': 'true'}, + {'key': 'omicsEnabled', 'value': 'true'}, ], - 'type': 'IntegrationTesting', } }, 'query': f""" diff --git a/tests_new/integration_tests/modules/dashboards/conftest.py b/tests_new/integration_tests/modules/dashboards/conftest.py new file mode 100644 index 000000000..d2f773f8a --- /dev/null +++ b/tests_new/integration_tests/modules/dashboards/conftest.py @@ -0,0 +1,47 @@ +import pytest +from integration_tests.modules.dashboards.mutations import ( + import_dashboard, + delete_dashboard, + request_dashboard_share, + reject_dashboard_share, +) +from integration_tests.modules.dashboards.queries import get_dashboard +from integration_tests.core.environment.utils import set_env_params + + +def create_dataall_dashboard(client, session_id, dashboard_id, env): + dashboard_input = { + 'label': session_id, + 'dashboardId': dashboard_id, + 'environmentUri': env.environmentUri, + 'description': 'integration test dashboard', + 'SamlGroupName': env.SamlGroupName, + 'tags': [session_id], + 'terms': [], + } + ds = import_dashboard(client, dashboard_input) + return get_dashboard(client, ds.dashboardUri) + + +@pytest.fixture(scope='session') +def dashboard1(session_id, client1, session_env1, testdata): + set_env_params(client1, session_env1, dashboardsEnabled='true') + dashboardId = testdata.dashboards['session_env1'].dashboardId + ds = None + try: + ds = create_dataall_dashboard(client1, session_id, dashboardId, session_env1) + yield ds + finally: + if ds: + delete_dashboard(client1, ds.dashboardUri) + + +@pytest.fixture(scope='function') +def dashboard1_share(client1, client2, dashboard1, group2): + share = None + try: + share = request_dashboard_share(client2, dashboard1.dashboardUri, group2) + yield share + finally: + if share: + reject_dashboard_share(client1, share.shareUri) diff --git a/tests_new/integration_tests/modules/dashboards/mutations.py b/tests_new/integration_tests/modules/dashboards/mutations.py new file mode 100644 index 000000000..eb62bf3ca --- /dev/null +++ b/tests_new/integration_tests/modules/dashboards/mutations.py @@ -0,0 +1,108 @@ +# TODO: This file will be replaced by using the SDK directly + +# # IF MONITORING ON (TODO) +# createQuicksightDataSourceSet (TODO) + + +def import_dashboard(client, input): + query = { + 'operationName': 'importDashboard', + 'variables': {'input': input}, + 'query': """ + mutation importDashboard($input: ImportDashboardInput!) { + importDashboard(input: $input) { + dashboardUri + name + label + DashboardId + created + } + } + """, + } + response = client.query(query=query) + return response.data.importDashboard + + +def update_dashboard(client, input): + query = { + 'operationName': 'updateDashboard', + 'variables': {'input': input}, + 'query': """ + mutation updateDashboard($input: UpdateDashboardInput!) { + updateDashboard(input: $input) { + dashboardUri + name + label + created + } + } + """, + } + response = client.query(query=query) + return response.data.importDashboard + + +def delete_dashboard(client, dashboardUri): + query = { + 'operationName': 'deleteDashboard', + 'variables': {'dashboardUri': dashboardUri}, + 'query': """ + mutation deleteDashboard($dashboardUri: String!) { + deleteDashboard(dashboardUri: $dashboardUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteDashboard + + +def request_dashboard_share(client, dashboardUri, principalId): + query = { + 'operationName': 'requestDashboardShare', + 'variables': {'dashboardUri': dashboardUri, 'principalId': principalId}, + 'query': """ + mutation requestDashboardShare($dashboardUri: String!,$principalId: String!) { + requestDashboardShare(dashboardUri: $dashboardUri,principalId: $principalId) { + shareUri + status + } + } + """, + } + response = client.query(query=query) + return response.data.requestDashboardShare + + +def approve_dashboard_share(client, shareUri): + query = { + 'operationName': 'approveDashboardShare', + 'variables': {'shareUri': shareUri}, + 'query': """ + mutation approveDashboardShare($shareUri: String!) { + approveDashboardShare(shareUri: $shareUri) { + shareUri + status + } + } + """, + } + response = client.query(query=query) + return response.data.approveDashboardShare + + +def reject_dashboard_share(client, shareUri): + query = { + 'operationName': 'rejectDashboardShare', + 'variables': {'shareUri': shareUri}, + 'query': """ + mutation rejectDashboardShare($shareUri: String!) { + rejectDashboardShare(shareUri: $shareUri) { + shareUri + status + } + } + """, + } + response = client.query(query=query) + return response.data.rejectDashboardShare diff --git a/tests_new/integration_tests/modules/dashboards/queries.py b/tests_new/integration_tests/modules/dashboards/queries.py new file mode 100644 index 000000000..901536308 --- /dev/null +++ b/tests_new/integration_tests/modules/dashboards/queries.py @@ -0,0 +1,147 @@ +# TODO: This file will be replaced by using the SDK directly + + +# # IF MONITORING ON (TODO) +# getMonitoringDashboardId +# getMonitoringVpcConnectionId +# getPlatformAuthorSession +# getPlatformReaderSession + + +def search_dashboards(client, filter): + query = { + 'operationName': 'searchDashboards', + 'variables': {'filter': filter}, + 'query': """ + query searchDashboards($filter: DashboardFilter) { + searchDashboards(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + dashboardUri + name + owner + SamlGroupName + description + label + created + tags + userRoleForDashboard + upvotes + organization { + organizationUri + label + name + } + environment { + environmentUri + name + label + AwsAccountId + region + } + } + } + } + """, + } + response = client.query(query=query) + return response.data.searchDashboards + + +def get_dashboard(client, dashboardUri): + query = { + 'operationName': 'GetDashboard', + 'variables': {'dashboardUri': dashboardUri}, + 'query': """ + query GetDashboard($dashboardUri: String!) { + getDashboard(dashboardUri: $dashboardUri) { + dashboardUri + name + owner + SamlGroupName + description + label + created + tags + userRoleForDashboard + environment { + label + region + } + organization { + organizationUri + label + name + } + terms { + count + nodes { + nodeUri + path + label + } + } + } + } + """, + } + response = client.query(query=query) + return response.data.getDashboard + + +def list_dashboard_shares(client, dashboardUri, filter): + query = { + 'operationName': 'listDashboardShares', + 'variables': {'dashboardUri': dashboardUri, 'filter': filter}, + 'query': """ + query listDashboardShares($dashboardUri: String!,$filter: DashboardShareFilter!) { + listDashboardShares(dashboardUri: $dashboardUri, filter: $filter) { + count + nodes { + dashboardUri + shareUri + SamlGroupName + owner + created + status + } + } + } + """, + } + response = client.query(query=query) + return response.data.listDashboardShares + + +def get_author_session(client, environmentUri): + query = { + 'operationName': 'GetAuthorSession', + 'variables': {'environmentUri': environmentUri}, + 'query': """ + query GetAuthorSession($environmentUri: String!) { + getAuthorSession(environmentUri: $environmentUri) + } + """, + } + response = client.query(query=query) + return response.data.getAuthorSession + + +def get_reader_session(client, dashboardUri): + query = { + 'operationName': 'GetReaderSession', + 'variables': { + 'dashboardUri': dashboardUri, + }, + 'query': """ + query GetReaderSession($dashboardUri: String!) { + getReaderSession(dashboardUri: $dashboardUri) + } + """, + } + response = client.query(query=query) + return response.data.getReaderSession diff --git a/tests_new/integration_tests/modules/dashboards/test_dashboard.py b/tests_new/integration_tests/modules/dashboards/test_dashboard.py new file mode 100644 index 000000000..ee3a255e3 --- /dev/null +++ b/tests_new/integration_tests/modules/dashboards/test_dashboard.py @@ -0,0 +1,115 @@ +from assertpy import assert_that + +from integration_tests.modules.dashboards.queries import ( + search_dashboards, + get_dashboard, + list_dashboard_shares, + get_author_session, + get_reader_session, +) +from integration_tests.modules.dashboards.mutations import ( + update_dashboard, + delete_dashboard, + approve_dashboard_share, + reject_dashboard_share, +) +from integration_tests.modules.dashboards.conftest import create_dataall_dashboard +from integration_tests.core.environment.utils import set_env_params +from integration_tests.errors import GqlError + +UPDATED_DESC = 'new description' + + +def test_get_author_session(client1, session_env1): + set_env_params(client1, session_env1, dashboardsEnabled='true') + assert_that(get_author_session(client1, session_env1.environmentUri)).starts_with('https://') + + +def test_get_author_session_unauthorized(client2, session_env1): + assert_that(get_author_session).raises(GqlError).when_called_with(client2, session_env1.environmentUri).contains( + 'UnauthorizedOperation', 'CREATE_DASHBOARD', session_env1.environmentUri + ) + + +def test_get_dashboard(session_id, dashboard1): + assert_that(dashboard1.label).is_equal_to(session_id) + + +def test_list_dashboards(client1, client2, session_id, dashboard1): + filter = {'term': session_id} + assert_that(search_dashboards(client1, filter).nodes).is_length(1) + assert_that(search_dashboards(client2, filter).nodes).is_length(0) + + +def test_get_dashboard_unauthorized(client2, dashboard1): + assert_that(get_dashboard).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( + 'UnauthorizedOperation', 'GET_DASHBOARD', dashboard1.dashboardUri + ) + + +def test_update_dashboard(client1, dashboard1): + update_dashboard(client1, {'dashboardUri': dashboard1.dashboardUri, 'description': UPDATED_DESC}) + ds = get_dashboard(client1, dashboard1.dashboardUri) + assert_that(ds.description).is_equal_to(UPDATED_DESC) + + +def test_update_dashboard_unauthorized(client2, dashboard1): + assert_that(update_dashboard).raises(GqlError).when_called_with( + client2, {'dashboardUri': dashboard1.dashboardUri, 'description': UPDATED_DESC} + ).contains('UnauthorizedOperation', 'UPDATE_DASHBOARD', dashboard1.dashboardUri) + + +def test_request_dashboard_share(dashboard1_share): + assert_that(dashboard1_share.shareUri).is_not_none() + assert_that(dashboard1_share.status).is_equal_to('REQUESTED') + + +def test_list_dashboard_shares(client1, session_id, dashboard1, dashboard1_share): + assert_that(list_dashboard_shares(client1, dashboard1.dashboardUri, {'term': session_id}).nodes).is_length(1) + + +def test_approve_dashboard_share_unauthorized(client2, dashboard1, dashboard1_share): + assert_that(approve_dashboard_share).raises(GqlError).when_called_with(client2, dashboard1_share.shareUri).contains( + 'UnauthorizedOperation', 'SHARE_DASHBOARD', dashboard1.dashboardUri + ) + + +def test_approve_dashboard_share(client1, client2, session_id, dashboard1, dashboard1_share): + filter = {'term': session_id} + assert_that(search_dashboards(client2, filter).nodes).is_length(0) + ds_share = approve_dashboard_share(client1, dashboard1_share.shareUri) + assert_that(ds_share.status).is_equal_to('APPROVED') + assert_that(get_reader_session(client2, dashboard1.dashboardUri)).starts_with('https://') + assert_that(search_dashboards(client2, filter).nodes).is_length(1) + + +def test_reject_dashboard_share(client1, client2, session_id, dashboard1_share): + ds_share = reject_dashboard_share(client1, dashboard1_share.shareUri) + assert_that(ds_share.status).is_equal_to('REJECTED') + assert_that(search_dashboards(client2, {'term': session_id}).nodes).is_length(0) + + +def test_get_reader_session(client1, dashboard1): + assert_that(get_reader_session(client1, dashboard1.dashboardUri)).starts_with('https://') + + +def test_get_reader_session_unauthorized(client2, dashboard1): + assert_that(get_reader_session).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( + 'UnauthorizedOperation', 'GET_DASHBOARD', dashboard1.dashboardUri + ) + + +def test_delete_dashboard(client1, session_id, session_env1, testdata): + filter = {'term': session_id} + dashboardId = testdata.dashboards['session_env1'].dashboardId + dashboard2 = create_dataall_dashboard(client1, session_id, dashboardId, session_env1) + assert_that(search_dashboards(client1, filter).nodes).is_length(2) + + delete_dashboard(client1, dashboard2.dashboardUri) + assert_that(search_dashboards(client1, filter).nodes).is_length(1) + + +def test_delete_dashboard_unauthorized(client2, dashboard1): + assert_that(delete_dashboard).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( + 'UnauthorizedOperation', 'DELETE_DASHBOARD', dashboard1.dashboardUri + ) diff --git a/tests_new/integration_tests/modules/notebooks/conftest.py b/tests_new/integration_tests/modules/notebooks/conftest.py index 975f621f0..be7924fe6 100644 --- a/tests_new/integration_tests/modules/notebooks/conftest.py +++ b/tests_new/integration_tests/modules/notebooks/conftest.py @@ -10,6 +10,7 @@ list_sagemaker_notebooks, ) from integration_tests.core.stack.utils import check_stack_ready, wait_stack_delete_complete +from integration_tests.core.environment.utils import set_env_params from integration_tests.modules.notebooks.aws_clients import VpcClient @@ -62,6 +63,7 @@ def session_notebook1(client1, group1, session_env1, session_id, session_env1_aw resource_name = 'sessionnotebook1' notebook = None try: + set_env_params(client1, session_env1, notebooksEnabled='true') vpc_client = VpcClient(session=session_env1_aws_client, region=session_env1['region']) vpc_id = vpc_client.create_vpc(vpc_name=resource_name, cidr='172.31.0.0/26') subnet_id = vpc_client.create_subnet(vpc_id=vpc_id, subnet_name=resource_name, cidr='172.31.0.0/28') @@ -162,6 +164,7 @@ def get_or_create_persistent_notebook(resource_name, client, group, env, session @pytest.fixture(scope='session') def persistent_notebook1(client1, group1, persistent_env1, persistent_env1_aws_client): + set_env_params(client1, persistent_env1, notebooksEnabled='true') return get_or_create_persistent_notebook( 'persistent_notebook1', client1, group1, persistent_env1, persistent_env1_aws_client ) From b9915efdae8a7a68d34d98eb877b05977ff7c9fc Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:19:51 +0200 Subject: [PATCH 083/188] Upgrade rollup to non-vulnerable version 2.79.1 -> 3.29.5 (#1571) ### Feature or Bugfix - Upgrade dependency ### Detail Security vulnerability found in `rollup` (well explained [here](https://github.com/advisories/GHSA-gcx4-mw62-g8wm)). This PR upgrades the package to a non-vulnerable version ### Relates - https://github.com/advisories/GHSA-gcx4-mw62-g8wm ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 10 ++++++---- frontend/package.json | 6 ++++-- frontend/yarn.lock | 8 ++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 220b6410c..b25a528f7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -30451,14 +30451,16 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" diff --git a/frontend/package.json b/frontend/package.json index 89a4e6e08..887716522 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,7 +99,8 @@ "fast-xml-parser": "4.4.1", "path-to-regexp": "0.1.10", "body-parser": "^1.20.3", - "send": "0.19.0" + "send": "0.19.0", + "rollup": "3.29.5" }, "resolutions": { "react-redux": "^7.2.6", @@ -118,7 +119,8 @@ "fast-xml-parser": "4.4.1", "path-to-regexp": "0.1.10", "body-parser": "^1.20.3", - "send": "0.19.0" + "send": "0.19.0", + "rollup": "3.29.5" }, "devDependencies": { "env-cmd": "^10.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 33674f343..e21471454 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -13295,10 +13295,10 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== +rollup@3.29.5: + version "3.29.5" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz" + integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== optionalDependencies: fsevents "~2.3.2" From 59f0b26cd037036aebf7668d9f60abe148dd1bf0 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 24 Sep 2024 17:53:12 +0200 Subject: [PATCH 084/188] Add Dataset integration tests - Table Columns (#1548) ### Feature or Bugfix - Feature: Testing ### Detail Follow-up of #1391 - Implement Table Column tests ### Relates - https://github.com/data-dot-all/dataall/issues/1358 - #1391 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Noah Paige --- .../modules/s3_datasets/queries.py | 2 +- .../s3_datasets/test_s3_tables_columns.py | 82 +++++++++++++++---- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/tests_new/integration_tests/modules/s3_datasets/queries.py b/tests_new/integration_tests/modules/s3_datasets/queries.py index 3c553dd9c..c129954da 100644 --- a/tests_new/integration_tests/modules/s3_datasets/queries.py +++ b/tests_new/integration_tests/modules/s3_datasets/queries.py @@ -632,7 +632,7 @@ def update_dataset_table_column(client, columnUri, input): return response.data.updateDatasetTableColumn -def list_dataset_table_columns(client, tableUri, term): +def list_dataset_table_columns(client, tableUri, term=''): query = { 'operationName': 'ListDatasetTableColumns', 'variables': {'tableUri': tableUri, 'filter': {'term': term}}, diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py index 0cb068961..58ae9140b 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py @@ -1,4 +1,5 @@ import logging +import pytest from assertpy import assert_that from integration_tests.modules.s3_datasets.queries import ( @@ -7,35 +8,80 @@ list_dataset_table_columns, ) from integration_tests.errors import GqlError +from integration_tests.modules.s3_datasets.conftest import ( + TABLES_FIXTURES_PARAMS, + TABLES_CONFIDENTIALITY_FIXTURES_PARAMS, +) log = logging.getLogger(__name__) -def test_sync_dataset_table_columns(): - # TODO - pass +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_sync_dataset_table_columns(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + response = sync_dataset_table_columns(client1, tables[0].tableUri) + assert_that(response.count).is_equal_to(3) + assert_that(response.nodes[0].name).is_equal_to('column1') + assert_that(response.nodes[0].typeName).is_equal_to('int') -def test_sync_dataset_table_columns_unauthorized(): - # TODO - pass +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [('session_s3_dataset1', 'session_s3_dataset1_tables')], +) +def test_sync_dataset_table_columns_unauthorized(client2, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + assert_that(sync_dataset_table_columns).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'UPDATE_DATASET_TABLE', dataset.datasetUri + ) -def test_update_dataset_table_column(): - # TODO - pass +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_list_dataset_table_columns(client1, tables_fixture_name, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + response = list_dataset_table_columns(client1, table_uri) + assert_that(response.count).is_equal_to(3) + assert_that(response.nodes[0].name).is_equal_to('column1') + assert_that(response.nodes[0].columnUri).is_not_none() -def test_update_dataset_table_column_unauthorized(): - # TODO - pass +@pytest.mark.parametrize(*TABLES_CONFIDENTIALITY_FIXTURES_PARAMS) +def test_list_dataset_table_columns_by_confidentiality(client2, tables_fixture_name, confidentiality, request): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + if confidentiality in ['Unclassified']: + response = list_dataset_table_columns(client2, table_uri) + assert_that(response.count).is_equal_to(3) + else: + assert_that(list_dataset_table_columns).raises(GqlError).when_called_with(client2, table_uri).contains( + 'UnauthorizedOperation', 'LIST_DATASET_TABLE_COLUMNS' + ) -def test_list_dataset_table_columns(): - # TODO - pass +@pytest.mark.parametrize(*TABLES_FIXTURES_PARAMS) +def test_update_dataset_table_column(client1, tables_fixture_name, request, session_id): + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + columns = list_dataset_table_columns(client1, table_uri) + column_uri = columns.nodes[0].columnUri + new_desc = f'{session_id} new updated description' + response = update_dataset_table_column(client1, column_uri, {'description': new_desc}) + assert_that(response.description).is_equal_to(new_desc) -def test_list_dataset_table_columns_unauthorized(): - # TODO - pass +@pytest.mark.parametrize( + 'dataset_fixture_name,tables_fixture_name', + [('session_s3_dataset1', 'session_s3_dataset1_tables')], +) +def test_update_dataset_table_column_unauthorized(client1, client2, dataset_fixture_name, tables_fixture_name, request): + dataset = request.getfixturevalue(dataset_fixture_name) + tables = request.getfixturevalue(tables_fixture_name) + table_uri = tables[0].tableUri + columns = list_dataset_table_columns(client1, table_uri) + column_uri = columns.nodes[0].columnUri + assert_that(update_dataset_table_column).raises(GqlError).when_called_with( + client2, column_uri, {'description': 'badNewDescription'} + ).contains('UnauthorizedOperation', 'UPDATE_DATASET_TABLE', dataset.datasetUri) From 075b43cf4fe57a054660f97b9c049b9dca581899 Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Wed, 25 Sep 2024 01:31:58 -0500 Subject: [PATCH 085/188] [Gh-1528] Configurable stack logs display (#1559) ### Feature or Bugfix - Feature ### Detail As described in this issue - https://github.com/data-dot-all/dataall/issues/1528 , stack logs provide some key info. Creating a feature config called `show_stack_logs` for s3_datasets, s3_dataset_shares, and core ( for environment stack logs ) and adding logic in frontend to hide/show the logs button. Using decorator in backend to restrict access based on config. ### Relates - https://github.com/data-dot-all/dataall/issues/1528 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? N/A - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: trajopadhye --- .../dataall/base/feature_toggle_checker.py | 34 ++++++++++++++++ backend/dataall/core/stacks/api/resolvers.py | 12 +++++- backend/dataall/core/stacks/api/types.py | 2 + .../core/stacks/services/stack_service.py | 37 ++++++++++++++++++ .../modules/shares_base/api/resolvers.py | 7 +++- .../services/share_logs_service.py | 37 +++++++++++++----- config.json | 27 ++++++++++--- frontend/src/modules/Shared/Stack/Stack.js | 39 +++++++++++-------- .../src/services/graphql/Stack/getStack.js | 1 + 9 files changed, 162 insertions(+), 34 deletions(-) diff --git a/backend/dataall/base/feature_toggle_checker.py b/backend/dataall/base/feature_toggle_checker.py index b6d681646..3fa3f70f3 100644 --- a/backend/dataall/base/feature_toggle_checker.py +++ b/backend/dataall/base/feature_toggle_checker.py @@ -2,6 +2,8 @@ Contains decorators that check if a feature has been enabled or not """ +from typing import List, Any, Optional, Callable + from dataall.base.config import config from dataall.base.utils.decorator_utls import process_func @@ -19,3 +21,35 @@ def decorated(*args, **kwargs): return fn_decorator(decorated) return decorator + + +def is_feature_enabled_for_allowed_values( + allowed_values: List[Any], + enabled_values: List[Any], + default_value: Any, + resolve_property: Optional[Callable] = None, + config_property: Optional[str] = None, +): + def decorator(f): + fn, fn_decorator = process_func(f) + + def decorated(*args, **kwargs): + config_property_value = None + if config_property is None and resolve_property is None: + raise Exception('Config property not provided') + if resolve_property: + config_property_value = resolve_property(*args, **kwargs) + if config_property: + config_property_value = config_property + value = config.get_property(config_property_value, default_value) + if value not in allowed_values: + raise Exception( + f'Disabled since incorrect values in config {config_property_value}. Correct config values {allowed_values}' + ) + if value not in enabled_values: + raise Exception(f'Disabled by config: {value}. Enable config value(s): {", ".join(enabled_values)}') + return fn(*args, **kwargs) + + return fn_decorator(decorated) + + return decorator diff --git a/backend/dataall/core/stacks/api/resolvers.py b/backend/dataall/core/stacks/api/resolvers.py index 71d66f03f..22f1b7fa5 100644 --- a/backend/dataall/core/stacks/api/resolvers.py +++ b/backend/dataall/core/stacks/api/resolvers.py @@ -6,7 +6,7 @@ from dataall.base.api.context import Context from dataall.core.environment.services.environment_service import EnvironmentService from dataall.core.stacks.services.keyvaluetag_service import KeyValueTagService -from dataall.core.stacks.services.stack_service import StackService +from dataall.core.stacks.services.stack_service import StackService, map_target_type_to_log_config_path from dataall.core.stacks.db.stack_models import Stack from dataall.core.stacks.aws.cloudwatch import CloudWatch from dataall.base.utils import Parameter @@ -57,6 +57,16 @@ def resolve_events(context, source: Stack, **kwargs): return json.dumps(source.events or {}) +def resolve_stack_visibility(context, source: Stack, **kwargs): + if not source: + return False + try: + return StackService.check_if_user_allowed_view_logs(target_type=source.stack, target_uri=source.targetUri) + except Exception as e: + log.error(f'Failed to check if the user is allowed to view stack logs due to: {e}') + return False + + def resolve_task_id(context, source: Stack, **kwargs): if not source: return None diff --git a/backend/dataall/core/stacks/api/types.py b/backend/dataall/core/stacks/api/types.py index 1ddd96184..4cd624de4 100644 --- a/backend/dataall/core/stacks/api/types.py +++ b/backend/dataall/core/stacks/api/types.py @@ -6,6 +6,7 @@ resolve_events, resolve_task_id, resolve_error, + resolve_stack_visibility, ) Stack = gql.ObjectType( @@ -27,6 +28,7 @@ gql.Field(name='events', type=gql.String, resolver=resolve_events), gql.Field(name='EcsTaskArn', type=gql.String), gql.Field(name='EcsTaskId', type=gql.String, resolver=resolve_task_id), + gql.Field(name='canViewLogs', type=gql.Boolean, resolver=resolve_stack_visibility), ], ) diff --git a/backend/dataall/core/stacks/services/stack_service.py b/backend/dataall/core/stacks/services/stack_service.py index 5da1c4ba6..c409a640d 100644 --- a/backend/dataall/core/stacks/services/stack_service.py +++ b/backend/dataall/core/stacks/services/stack_service.py @@ -3,6 +3,8 @@ import requests import logging +from dataall.base.db import exceptions +from dataall.base.feature_toggle_checker import is_feature_enabled_for_allowed_values from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.stacks.aws.cloudformation import CloudFormation from dataall.core.stacks.services.keyvaluetag_service import KeyValueTagService @@ -44,6 +46,22 @@ def verify_target_type_and_uri(target_type, target_uri): raise RequiredParameter('targetType') +def map_target_type_to_log_config_path(**kwargs): + target_type = kwargs.get('target_type') + if target_type == 'environment': + return 'core.features.show_stack_logs' + elif target_type == 'dataset': + return 'modules.s3_datasets.features.show_stack_logs' + elif target_type == 'mlstudio': + return 'modules.mlstudio.features.show_stack_logs' + elif target_type == 'notebooks': + return 'modules.notebooks.features.show_stack_logs' + elif target_type == 'datapipelines': + return 'modules.datapipelines.features.show_stack_logs' + else: + return 'Invalid Config' + + class StackService: @staticmethod def resolve_parent_obj_stack(targetUri: str, environmentUri: str): @@ -188,6 +206,7 @@ def update_stack_tags(input): @staticmethod def get_stack_logs(target_uri, target_type): context = get_context() + StackService.check_if_user_allowed_view_logs(target_type=target_type, target_uri=target_uri) StackRequestVerifier.verify_target_type_and_uri(target_uri, target_type) with context.db_engine.scoped_session() as session: @@ -213,3 +232,21 @@ def get_stack_logs(target_uri, target_type): | filter @logStream like "{stack.EcsTaskArn.split('/')[-1]}" """ return query + + @staticmethod + @is_feature_enabled_for_allowed_values( + allowed_values=['admin-only', 'enabled', 'disabled'], + enabled_values=['admin-only', 'enabled'], + default_value='enabled', + resolve_property=map_target_type_to_log_config_path, + ) + def check_if_user_allowed_view_logs(target_type: str, target_uri: str): + context = get_context() + config_value = config.get_property(map_target_type_to_log_config_path(target_type=target_type), 'enabled') + if config_value == 'admin-only' and 'DAAdministrators' not in context.groups: + raise exceptions.ResourceUnauthorized( + username=context.username, + action='View Stack logs', + resource_uri=f'{target_uri} ( Resource type: {target_type} )', + ) + return True diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index 6a8558b72..93524b3d4 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -5,7 +5,6 @@ from dataall.base.db.exceptions import RequiredParameter from dataall.core.environment.db.environment_models import Environment from dataall.core.environment.services.environment_service import EnvironmentService -from dataall.core.organizations.db.organization_repositories import OrganizationRepository from dataall.modules.datasets_base.db.dataset_models import DatasetBase from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.shares_base.services.shares_enums import ShareObjectPermission, PrincipalType @@ -214,7 +213,11 @@ def resolve_user_role(context: Context, source: ShareObject, **kwargs): def resolve_can_view_logs(context: Context, source: ShareObject): - return ShareLogsService.check_view_log_permissions(context.username, context.groups, source.shareUri) + try: + return ShareLogsService.check_view_logs_permissions(source.shareUri) + except Exception as e: + log.error(f'Failed to check if user is allowed to view share logs due to: {e}') + return False def resolve_dataset(context: Context, source: ShareObject, **kwargs): diff --git a/backend/dataall/modules/shares_base/services/share_logs_service.py b/backend/dataall/modules/shares_base/services/share_logs_service.py index d79f165d8..d67e45784 100644 --- a/backend/dataall/modules/shares_base/services/share_logs_service.py +++ b/backend/dataall/modules/shares_base/services/share_logs_service.py @@ -2,6 +2,7 @@ import logging from dataall.base.context import get_context +from dataall.base.feature_toggle_checker import is_feature_enabled_for_allowed_values from dataall.base.utils import Parameter from dataall.base.db import exceptions from dataall.core.stacks.aws.cloudwatch import CloudWatch @@ -15,11 +16,33 @@ class ShareLogsService: @staticmethod - def check_view_log_permissions(username, groups, shareUri): - with get_context().db_engine.scoped_session() as session: + @is_feature_enabled_for_allowed_values( + allowed_values=['admin-only', 'enabled', 'disabled'], + enabled_values=['admin-only', 'enabled'], + default_value='enabled', + config_property='modules.shares_base.features.show_share_logs', + ) + def check_view_logs_permissions(shareUri): + context = get_context() + log_config = config.get_property('modules.shares_base.features.show_share_logs', 'enabled') + if log_config == 'admin-only' and 'DAAdministrators' not in context.groups: + raise exceptions.ResourceUnauthorized( + username=context.username, + action='View Share Logs', + resource_uri=shareUri, + ) + with context.db_engine.scoped_session() as session: share = ShareObjectRepository.get_share_by_uri(session, shareUri) ds = DatasetBaseRepository.get_dataset_by_uri(session, share.datasetUri) - return ds.stewards in groups or ds.SamlAdminGroupName in groups or username == ds.owner + if not ( + ds.stewards in context.groups or ds.SamlAdminGroupName in context.groups or context.username == ds.owner + ): + raise exceptions.ResourceUnauthorized( + username=context.username, + action='View Share Logs', + resource_uri=shareUri, + ) + return True @staticmethod def get_share_logs_name_query(shareUri): @@ -43,13 +66,7 @@ def get_share_logs_query(log_stream_name): @staticmethod def get_share_logs(shareUri): context = get_context() - if not ShareLogsService.check_view_log_permissions(context.username, context.groups, shareUri): - raise exceptions.ResourceUnauthorized( - username=context.username, - action='View Share Logs', - resource_uri=shareUri, - ) - + ShareLogsService.check_view_logs_permissions(shareUri) envname = os.getenv('envname', 'local') log_query_period_days = config.get_property('core.log_query_period_days', 1) log.info(f'log_query_period_days: {log_query_period_days}') diff --git a/config.json b/config.json index 0ff775965..e0e193c59 100644 --- a/config.json +++ b/config.json @@ -1,13 +1,22 @@ { "modules": { "mlstudio": { - "active": true + "active": true, + "features": { + "show_stack_logs": "enabled" + } }, "notebooks": { - "active": true + "active": true, + "features": { + "show_stack_logs": "enabled" + } }, "datapipelines": { - "active": true + "active": true, + "features": { + "show_stack_logs": "enabled" + } }, "omics": { "active": false @@ -47,7 +56,14 @@ "file_actions": true, "aws_actions": true, "preview_data": true, - "glue_crawler": true + "glue_crawler": true, + "show_stack_logs": "enabled" + } + }, + "shares_base": { + "active": true, + "features": { + "show_share_logs": "enabled" } }, "s3_datasets_shares": { @@ -73,7 +89,8 @@ "features": { "env_aws_actions": true, "cdk_pivot_role_multiple_environments_same_account": false, - "enable_quicksight_monitoring": false + "enable_quicksight_monitoring": false, + "show_stack_logs": "enabled" }, "log_query_period_days": 1 } diff --git a/frontend/src/modules/Shared/Stack/Stack.js b/frontend/src/modules/Shared/Stack/Stack.js index 56baeff50..abd20da55 100644 --- a/frontend/src/modules/Shared/Stack/Stack.js +++ b/frontend/src/modules/Shared/Stack/Stack.js @@ -35,6 +35,8 @@ export const Stack = (props) => { const [resources, setResources] = useState([]); const [stackName, setStackName] = useState(null); const [openLogsModal, setOpenLogsModal] = useState(null); + const [isStackLogsVisible, setIsStackLogsVisible] = useState(false); + const handleOpenLogsModal = () => { setOpenLogsModal(true); }; @@ -54,6 +56,7 @@ export const Stack = (props) => { setStack({ ...response.data.getStack }); setStackName(`${response.data.getStack.name}`); setResources(JSON.parse(response.data.getStack.resources).resources); + setIsStackLogsVisible(response.data.getStack.canViewLogs); } else { dispatch({ type: SET_ERROR, error: response.errors[0].message }); } @@ -120,15 +123,17 @@ export const Stack = (props) => { > Refresh - + {isStackLogsVisible === true && ( + + )} { )} )} - + {isStackLogsVisible === true && ( + + )} )} diff --git a/frontend/src/services/graphql/Stack/getStack.js b/frontend/src/services/graphql/Stack/getStack.js index 9add63401..960bf524d 100644 --- a/frontend/src/services/graphql/Stack/getStack.js +++ b/frontend/src/services/graphql/Stack/getStack.js @@ -32,6 +32,7 @@ export const getStack = (environmentUri, stackUri, targetUri, targetType) => ({ error events name + canViewLogs } } ` From 2005863bdb6ba84db08673c7f42b268767482b4d Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 25 Sep 2024 12:45:14 +0100 Subject: [PATCH 086/188] Add Dataset integration tests - S3 Share requests (#1389) ### Feature or Bugfix - Tests ### Detail - module `share_base` - bugfix `delete_env` requires `env_object` not `envUri` - TEMPORARY: hardcoded dataset_uri --> I wait for dataset module ### Relates - #1376 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: dlpzx Co-authored-by: Noah Paige Co-authored-by: Sofia Sazonova --- .../core/environment/cdk/environment_stack.py | 8 + .../s3_access_point_share_manager.py | 6 +- .../modules/s3_datasets_shares/test_share.py | 4 +- tests_new/clean_up_s3.sh | 13 + tests_new/integration_tests/README.md | 131 ++++---- .../integration_tests/aws_clients/athena.py | 37 +++ .../integration_tests/aws_clients/iam.py | 96 ++++++ .../integration_tests/aws_clients/sts.py | 19 ++ tests_new/integration_tests/conftest.py | 18 ++ .../core/environment/global_conftest.py | 48 ++- .../core/environment/queries.py | 23 ++ .../core/environment/test_environment.py | 4 + .../core/organizations/global_conftest.py | 8 +- .../core/organizations/queries.py | 6 +- .../modules/s3_datasets/aws_clients.py | 14 + .../modules/s3_datasets/global_conftest.py | 8 +- .../modules/share_base/__init__.py | 0 .../modules/share_base/conftest.py | 202 +++++++++++++ .../modules/share_base/input_types.py | 12 + .../modules/share_base/queries.py | 231 ++++++++++++++ .../share_base/test_new_crossacc_s3_share.py | 285 ++++++++++++++++++ .../modules/share_base/types.py | 81 +++++ .../modules/share_base/utils.py | 52 ++++ tests_new/integration_tests/requirements.txt | 2 +- 24 files changed, 1232 insertions(+), 76 deletions(-) create mode 100644 tests_new/clean_up_s3.sh create mode 100644 tests_new/integration_tests/aws_clients/athena.py create mode 100644 tests_new/integration_tests/aws_clients/iam.py create mode 100644 tests_new/integration_tests/aws_clients/sts.py create mode 100644 tests_new/integration_tests/modules/share_base/__init__.py create mode 100644 tests_new/integration_tests/modules/share_base/conftest.py create mode 100644 tests_new/integration_tests/modules/share_base/input_types.py create mode 100644 tests_new/integration_tests/modules/share_base/queries.py create mode 100644 tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py create mode 100644 tests_new/integration_tests/modules/share_base/types.py create mode 100644 tests_new/integration_tests/modules/share_base/utils.py diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index 58e30a221..b9935c9c9 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -654,3 +654,11 @@ def create_integration_tests_role(self): resources=[f'arn:aws:cloudformation:*:{self.account}:stack/*/*'], ), ) + + self.test_role.add_to_policy( + iam.PolicyStatement( + actions=['iam:GetRole', 'iam:CreateRole', 'iam:PutRolePolicy'], + effect=iam.Effect.ALLOW, + resources=[f'arn:aws:iam::{self.account}:role/dataall-test-*'], + ), + ) diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index e5d70e5ef..542c4ad08 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -453,10 +453,14 @@ def manage_access_point_and_policy(self): not s3_client.get_bucket_access_point_arn(self.access_point_name) and retries < ACCESS_POINT_CREATION_RETRIES ): - logger.info('Waiting 30s for access point creation to complete..') + logger.info( + f'Attempt {retries}. Waiting {ACCESS_POINT_CREATION_TIME * sleep_coeff}s for access point creation to complete..' + ) time.sleep(ACCESS_POINT_CREATION_TIME * sleep_coeff) sleep_coeff = sleep_coeff * ACCESS_POINT_BACKOFF_COEFFICIENT retries += 1 + if not s3_client.get_bucket_access_point_arn(self.access_point_name): + raise Exception(f'Failed to create access point {self.access_point_name}') existing_policy = s3_client.get_access_point_policy(self.access_point_name) # requester will use this role to access resources target_requester_id = SessionHelper.get_role_id( diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index cf531c461..91bf6b18d 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -427,7 +427,7 @@ def share3_processed( def share3_item_shared( share_item: typing.Callable, share3_processed: ShareObject, table1: DatasetTable ) -> ShareObjectItem: - # Cleaned up with share3 + # Cleaned up with share3_happy_path yield share_item(share=share3_processed, table=table1, status=ShareItemStatus.Share_Succeeded.value) @@ -608,7 +608,7 @@ def share4_draft( def share3_item_shared_unhealthy( share_item: typing.Callable, share3_processed: ShareObject, table1_1: DatasetTable ) -> ShareObjectItem: - # Cleaned up with share3 + # Cleaned up with share3_happy_path yield share_item( share=share3_processed, table=table1_1, diff --git a/tests_new/clean_up_s3.sh b/tests_new/clean_up_s3.sh new file mode 100644 index 000000000..39d4c1fe9 --- /dev/null +++ b/tests_new/clean_up_s3.sh @@ -0,0 +1,13 @@ +my_array=("$(aws s3api list-buckets --query 'Buckets[?contains(Name, `session`) == `true`].[Name]' --output text)") +array=("${(@f)my_array}") +for YOUR_BUCKET in "${array[@]}" +do + +aws s3api delete-objects --bucket ${YOUR_BUCKET} \ +--delete "$(aws s3api list-object-versions --bucket ${YOUR_BUCKET} --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')" + +aws s3api delete-objects --bucket ${YOUR_BUCKET} \ +--delete "$(aws s3api list-object-versions --bucket ${YOUR_BUCKET} --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')" + +aws s3api delete-bucket --bucket ${YOUR_BUCKET} +done \ No newline at end of file diff --git a/tests_new/integration_tests/README.md b/tests_new/integration_tests/README.md index d2458b2cd..157508dd8 100644 --- a/tests_new/integration_tests/README.md +++ b/tests_new/integration_tests/README.md @@ -12,68 +12,75 @@ Currently **we support only Cognito based deployments** but support for any IdP - A real deployment of data.all in AWS. - For this deployment the `cdk.json` flag `enable_pivot_role_auto_create` must be set to `true`. - - For this deployment the `config.json` flag `cdk_pivot_role_multiple_environments_same_account` must be set to `true` if an AWS account is going to be reused for multiple environments, -- An SSM parameter (`/dataall/{env_name}/testdata`) in the DEPLOYMENT ACCOUNT with the following contents - ``` - { - "users": { - "testUserTenant": { - "username": "testUserTenant", - "password": "...", - "groups": [ - "DAAdministrators" - ] - }, - "testUser1": { - "username": "testUser1", - "password": "...", - "groups": [ - "testGroup1" - ] - }, - "testUser2": { - "username": "testUser2", - "password": "...", - "groups": [ - "testGroup2" - ] - }, - "testUser3": { - "username": "testUser3", - "password": "...", - "groups": [ - "testGroup3" - ] - }, - "testUser4": { - "username": "testUser4", - "password": "...", - "groups": [ - "testGroup4" - ] - } - }, - "envs": { - "persistent_env1": { - "accountId": "...", - "region": "us-east-1" - }, - "session_env1": { - "accountId": "...", - "region": "eu-central-1" - }, - "session_env2": { - "accountId": "...", - "region": "eu-west-1" - } - }, - "dashboards": { - "session_env1": { - "dashboardId": "..." - }, - } - } - ``` + - For this deployment the `config.json` flag `cdk_pivot_role_multiple_environments_same_account` must be set to `true` if an AWS account is going to be reused for multiple environments, + - Second test account is bootstraped, and first account is added to trusted policy in target regions + ```cdk bootstrap --trust -c @aws-cdk/core:newStyleStackSynthesis=true --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws:///region``` + - An SSM parameter (`/dataall/{env_name}/testdata`) in the DEPLOYMENT ACCOUNT with the following contents + ``` + { + "users": { + "testUserTenant": { + "username": "testUserTenant", + "password": "...", + "groups": [ + "DAAdministrators" + ] + }, + "testUser1": { + "username": "testUser1", + "password": "...", + "groups": [ + "testGroup1" + ] + }, + "testUser2": { + "username": "testUser2", + "password": "...", + "groups": [ + "testGroup2" + ] + }, + "testUser3": { + "username": "testUser3", + "password": "...", + "groups": [ + "testGroup3" + ] + }, + "testUser4": { + "username": "testUser4", + "password": "...", + "groups": [ + "testGroup4" + ] + } + }, + "envs": { + "session_env1": { + "accountId": "...", + "region": "eu-central-1" + }, + "session_env2": { + "accountId": "...", + "region": "eu-west-1" + }, + "persistent_env1": { + "accountId": "...", + "region": "us-east-1" + }, + "session_cross_acc_env_1": { + "accountId": "another acc", + "region": "same as session_env1" + }, + }, + "dashboards": { + "session_env1": { + "dashboardId": "..." + }, + } + } + ``` + - The pipeline will create the users/groups ## Run tests diff --git a/tests_new/integration_tests/aws_clients/athena.py b/tests_new/integration_tests/aws_clients/athena.py new file mode 100644 index 000000000..5adaf1cd5 --- /dev/null +++ b/tests_new/integration_tests/aws_clients/athena.py @@ -0,0 +1,37 @@ +import time +from tests_new.integration_tests.utils import poller + + +class AthenaClient: + def __init__(self, session, region): + self._client = session.client('athena', region_name=region) + self._region = region + + def _run_query(self, query, workgroup='primary', output_location=None): + if output_location: + result = self._client.start_query_execution( + QueryString=query, ResultConfiguration={'OutputLocation': output_location} + ) + else: + result = self._client.start_query_execution(QueryString=query, WorkGroup=workgroup) + return result['QueryExecutionId'] + + @poller(check_success=lambda state: state not in ['QUEUED', 'RUNNING'], timeout=600, sleep_time=5) + def _wait_for_query(self, query_id): + result = self._client.get_query_execution(QueryExecutionId=query_id) + return result['QueryExecution']['Status']['State'] + + def execute_query(self, query, workgroup='primary', output_location=None): + q_id = self._run_query(query, workgroup, output_location) + return self._wait_for_query(q_id) + + def list_work_groups(self): + result = self._client.list_work_groups() + return [x['Name'] for x in result['WorkGroups']] + + def get_env_work_group(self, env_name): + workgroups = self.list_work_groups() + for workgroup in workgroups: + if env_name in workgroup: + return workgroup + return workgroups[0] if workgroups else None diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py new file mode 100644 index 000000000..0e0a13b88 --- /dev/null +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -0,0 +1,96 @@ +import json +import logging +import os + +import boto3 + +from dataall.base.aws.parameter_store import ParameterStoreManager + +log = logging.getLogger(__name__) + + +class IAMClient: + def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', 'us-east-1')): + self._client = session.client('iam', region_name=region) + self._resource = session.resource('iam', region_name=region) + self._region = region + + def get_role(self, role_name): + try: + role = self._client.get_role(RoleName=role_name) + return role + except Exception as e: + log.info(f'Error occurred: {e}') + return None + + @staticmethod + def get_tooling_account_id(): + session = boto3.Session() + param_client = session.client('ssm', os.environ.get('AWS_REGION', 'us-east-1')) + parameter_path = f"/dataall/{os.environ.get('ENVNAME', 'dev')}/toolingAccount" + toolingAccount = param_client.get_parameter(Name=parameter_path)['Parameter']['Value'] + return toolingAccount + + def create_role(self, account_id, role_name, test_role_name): + policy_doc = { + 'Version': '2012-10-17', + 'Statement': [ + { + 'Effect': 'Allow', + 'Principal': { + 'AWS': [ + f'arn:aws:iam::{account_id}:root', + f'arn:aws:iam::{IAMClient.get_tooling_account_id()}:root', + f'arn:aws:sts::{account_id}:assumed-role/{test_role_name}/{test_role_name}', + ] + }, + 'Action': 'sts:AssumeRole', + 'Condition': {}, + } + ], + } + try: + role = self._client.create_role( + RoleName=role_name, + AssumeRolePolicyDocument=json.dumps(policy_doc), + Description='Role for Lambda function', + ) + return role + except Exception as e: + log.error(e) + raise e + + def create_role_if_not_exists(self, account_id, role_name, test_role_name): + role = self.get_role(role_name) + if role is None: + role = self.create_role(account_id, role_name, test_role_name) + return role + + def get_consumption_role(self, account_id, role_name, test_role_name): + role = self.get_role(role_name) + if role is None: + role = self.create_role(account_id, role_name, test_role_name) + self.put_consumption_role_policy(role_name) + return role + + def put_consumption_role_policy(self, role_name): + self._client.put_role_policy( + RoleName=role_name, + PolicyName='ConsumptionPolicy', + PolicyDocument="""{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": [ + "s3:*", + "athena:*", + "glue:*", + "lakeformation:GetDataAccess" + ], + "Resource": "*" + } + ] + }""", + ) diff --git a/tests_new/integration_tests/aws_clients/sts.py b/tests_new/integration_tests/aws_clients/sts.py new file mode 100644 index 000000000..f82cadf1f --- /dev/null +++ b/tests_new/integration_tests/aws_clients/sts.py @@ -0,0 +1,19 @@ +import os + +import boto3 + + +class StsClient: + def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', 'us-east-1')): + self._client = session.client('sts', region_name=region) + self._region = region + + def get_role_session(self, role_arn): + assumed_role_object = self._client.assume_role(RoleArn=role_arn, RoleSessionName='AssumeRole') + credentials = assumed_role_object['Credentials'] + + return boto3.Session( + aws_access_key_id=credentials['AccessKeyId'], + aws_secret_access_key=credentials['SecretAccessKey'], + aws_session_token=credentials['SessionToken'], + ) diff --git a/tests_new/integration_tests/conftest.py b/tests_new/integration_tests/conftest.py index 417a09936..89464e029 100644 --- a/tests_new/integration_tests/conftest.py +++ b/tests_new/integration_tests/conftest.py @@ -91,6 +91,12 @@ def user4(userdata): yield userdata['testUser4'] +@pytest.fixture(scope='session', autouse=True) +def user5(userdata): + # Existing user with name and password + yield userdata['testUser5'] + + @pytest.fixture(scope='session', autouse=True) def group1(): # Existing Cognito group with name testGroup1 @@ -119,6 +125,13 @@ def group4(): yield 'testGroup4' +@pytest.fixture(scope='session', autouse=True) +def group5(): + # Existing Cognito group with name testGroup5 + # Add user5 + yield 'testGroup5' + + @pytest.fixture(scope='session') def client1(user1) -> Client: yield Client(user1.username, user1.password) @@ -139,6 +152,11 @@ def client4(user4) -> Client: yield Client(user4.username, user4.password) +@pytest.fixture(scope='session') +def client5(user5) -> Client: + yield Client(user5.username, user5.password) + + @pytest.fixture(scope='session') def clientTenant(userTenant) -> Client: yield Client(userTenant.username, userTenant.password) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index d24321c11..fcc1db311 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -16,9 +16,9 @@ log = logging.getLogger(__name__) -def create_env(client, group, org_uri, account_id, region, tags=[]): +def create_env(client, env_name, group, org_uri, account_id, region, tags=[]): env = create_environment( - client, name='testEnvA', group=group, organizationUri=org_uri, awsAccountId=account_id, region=region, tags=tags + client, name=env_name, group=group, organizationUri=org_uri, awsAccountId=account_id, region=region, tags=tags ) check_stack_ready(client, env.environmentUri, env.stack.stackUri) return get_environment(client, env.environmentUri) @@ -44,7 +44,9 @@ def session_env1(client1, group1, org1, session_id, testdata): envdata = testdata.envs['session_env1'] env = None try: - env = create_env(client1, group1, org1.organizationUri, envdata.accountId, envdata.region, tags=[session_id]) + env = create_env( + client1, 'session_env1', group1, org1.organizationUri, envdata.accountId, envdata.region, tags=[session_id] + ) yield env finally: if env: @@ -77,6 +79,36 @@ def session_env1_aws_client(session_env1, session_env1_integration_role_arn): return get_environment_aws_session(session_env1_integration_role_arn, session_env1) +@pytest.fixture(scope='session') +def session_cross_acc_env_1(client5, group5, testdata, org1, session_id): + envdata = testdata.envs['session_cross_acc_env_1'] + env = None + try: + env = create_env( + client5, + 'session_cross_acc_env_1', + group5, + org1.organizationUri, + envdata.accountId, + envdata.region, + tags=[session_id], + ) + yield env + finally: + if env: + delete_env(client5, env) + + +@pytest.fixture(scope='session') +def session_cross_acc_env_1_integration_role_arn(session_cross_acc_env_1): + return f'arn:aws:iam::{session_cross_acc_env_1.AwsAccountId}:role/dataall-integration-tests-role-{session_cross_acc_env_1.region}' + + +@pytest.fixture(scope='session') +def session_cross_acc_env_1_aws_client(session_cross_acc_env_1, session_cross_acc_env_1_integration_role_arn): + return get_environment_aws_session(session_cross_acc_env_1_integration_role_arn, session_cross_acc_env_1) + + @pytest.fixture(scope='session') def persistent_env1_integration_role_arn(persistent_env1): return f'arn:aws:iam::{persistent_env1.AwsAccountId}:role/dataall-integration-tests-role-{persistent_env1.region}' @@ -92,7 +124,9 @@ def session_env2(client1, group1, group2, org2, session_id, testdata): envdata = testdata.envs['session_env2'] env = None try: - env = create_env(client1, group1, org2.organizationUri, envdata.accountId, envdata.region, tags=[session_id]) + env = create_env( + client1, 'session_env2', group1, org2.organizationUri, envdata.accountId, envdata.region, tags=[session_id] + ) invite_group_on_env(client1, env.environmentUri, group2, ['CREATE_DATASET']) yield env finally: @@ -111,7 +145,7 @@ def temp_env1(client1, group1, org1, testdata): envdata = testdata.envs['temp_env1'] env = None try: - env = create_env(client1, group1, org1.organizationUri, envdata.accountId, envdata.region) + env = create_env(client1, 'temp_env1', group1, org1.organizationUri, envdata.accountId, envdata.region) yield env finally: if env: @@ -131,7 +165,9 @@ def get_or_create_persistent_env(env_name, client, group, testdata): else: envdata = testdata.envs[env_name] org = create_organization(client, f'org_{env_name}', group) - env = create_env(client, group, org.organizationUri, envdata.accountId, envdata.region, tags=[env_name]) + env = create_env( + client, env_name, group, org.organizationUri, envdata.accountId, envdata.region, tags=[env_name] + ) if env.stack.status in ['CREATE_COMPLETE', 'UPDATE_COMPLETE']: return env else: diff --git a/tests_new/integration_tests/core/environment/queries.py b/tests_new/integration_tests/core/environment/queries.py index 9469fb979..acdf2ca79 100644 --- a/tests_new/integration_tests/core/environment/queries.py +++ b/tests_new/integration_tests/core/environment/queries.py @@ -265,3 +265,26 @@ def remove_consumption_role(client, env_uri, consumption_role_uri): } response = client.query(query=query) return response.data.removeConsumptionRoleFromEnvironment + + +def get_environment_access_token(client, env_uri, group_uri): + query = { + 'operationName': 'generateEnvironmentAccessToken', + 'variables': { + 'environmentUri': env_uri, + 'groupUri': group_uri, + }, + 'query': """ + query generateEnvironmentAccessToken( + $environmentUri: String! + $groupUri: String + ) { + generateEnvironmentAccessToken( + environmentUri: $environmentUri + groupUri: $groupUri + ) + } + """, + } + response = client.query(query=query) + return response.data.generateEnvironmentAccessToken diff --git a/tests_new/integration_tests/core/environment/test_environment.py b/tests_new/integration_tests/core/environment/test_environment.py index 55d44188a..28e487230 100644 --- a/tests_new/integration_tests/core/environment/test_environment.py +++ b/tests_new/integration_tests/core/environment/test_environment.py @@ -117,3 +117,7 @@ def test_add_consumption_role_unauthorized(client2, session_env2, group1): assert_that(add_consumption_role).raises(GqlError).when_called_with( client2, env_uri, group1, 'TestConsumptionRole', f'arn:aws:iam::{session_env2.AwsAccountId}:role/Admin' ).contains('UnauthorizedOperation', 'ADD_ENVIRONMENT_CONSUMPTION_ROLES', env_uri) + + +def test_create_crossaccount_env(client5, persistent_cross_acc_env_1, group5): + assert_that(persistent_cross_acc_env_1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') diff --git a/tests_new/integration_tests/core/organizations/global_conftest.py b/tests_new/integration_tests/core/organizations/global_conftest.py index 40dded5ca..adbd73eb0 100644 --- a/tests_new/integration_tests/core/organizations/global_conftest.py +++ b/tests_new/integration_tests/core/organizations/global_conftest.py @@ -3,11 +3,17 @@ @pytest.fixture(scope='session') -def org1(client1, group1, session_id): +def org1(client1, group1, group5, session_id): """ Session org owned by group1 """ org = create_organization(client1, 'organization1', group1, tags=[session_id]) + invite_team_to_organization( + client=client1, + organizationUri=org.organizationUri, + group=group5, + permissions=['LINK_ENVIRONMENT', 'INVITE_ORGANIZATION_GROUP', 'REMOVE_ORGANIZATION_GROUP'], + ) yield org archive_organization(client1, org.organizationUri) diff --git a/tests_new/integration_tests/core/organizations/queries.py b/tests_new/integration_tests/core/organizations/queries.py index 107d88439..1534a02cf 100644 --- a/tests_new/integration_tests/core/organizations/queries.py +++ b/tests_new/integration_tests/core/organizations/queries.py @@ -82,10 +82,12 @@ def update_organization(client, organizationUri): return response.data.updateOrganization -def invite_team_to_organization(client, organizationUri, group): +def invite_team_to_organization(client, organizationUri, group, permissions=None): query = { 'operationName': 'inviteGroupToOrganization', - 'variables': {'input': {'organizationUri': organizationUri, 'groupUri': group}}, + 'variables': { + 'input': {'organizationUri': organizationUri, 'groupUri': group, 'permissions': permissions or []} + }, 'query': """mutation inviteGroupToOrganization($input:InviteGroupToOrganizationInput!){ inviteGroupToOrganization(input:$input){ organizationUri diff --git a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py index f53576ea8..a7b883d32 100644 --- a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py +++ b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py @@ -99,6 +99,20 @@ def upload_file_to_prefix(self, local_file_path, s3_path): logging.error(f'Error uploading file to S3: {e}') raise + def list_bucket_objects(self, bucket_name): + try: + return self._client.list_objects(Bucket=bucket_name) + except ClientError as e: + logging.error(f'Error listing objects in S3: {e}') + raise + + def list_accesspoint_folder_objects(self, access_point, folder_name): + try: + return self._client.list_objects(Bucket=access_point, Prefix=folder_name) + except ClientError as e: + logging.error(f'Error listing objects in S3: {e}') + raise + class KMSClient: def __init__(self, session, account_id, region): diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index 8ee40cb92..8de97095d 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -270,6 +270,7 @@ def session_imported_sse_s3_dataset1( tags=[session_id], bucket=bucket, confidentiality='Official', + autoApprovalEnabled=True, ) yield ds finally: @@ -396,7 +397,10 @@ def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): """ -def get_or_create_persistent_s3_dataset(dataset_name, client, group, env, bucket=None, kms_alias='', glue_database=''): +def get_or_create_persistent_s3_dataset( + dataset_name, client, group, env, autoApprovalEnabled=False, bucket=None, kms_alias='', glue_database='' +): + dataset_name = dataset_name or 'persistent_s3_dataset1' s3_datasets = list_datasets(client, term=dataset_name).nodes if s3_datasets: return s3_datasets[0] @@ -413,6 +417,7 @@ def get_or_create_persistent_s3_dataset(dataset_name, client, group, env, bucket bucket=bucket, kms_alias=kms_alias, glue_db_name=glue_database, + autoApprovalEnabled=autoApprovalEnabled, ) else: @@ -424,6 +429,7 @@ def get_or_create_persistent_s3_dataset(dataset_name, client, group, env, bucket org_uri=env['organization']['organizationUri'], env_uri=env['environmentUri'], tags=[dataset_name], + autoApprovalEnabled=autoApprovalEnabled, ) if s3_dataset.stack.status in ['CREATE_COMPLETE', 'UPDATE_COMPLETE']: diff --git a/tests_new/integration_tests/modules/share_base/__init__.py b/tests_new/integration_tests/modules/share_base/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/share_base/conftest.py new file mode 100644 index 000000000..50c014531 --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/conftest.py @@ -0,0 +1,202 @@ +import pytest + +from tests_new.integration_tests.aws_clients.iam import IAMClient +from tests_new.integration_tests.core.environment.queries import add_consumption_role, remove_consumption_role +from dataall.modules.shares_base.services.shares_enums import PrincipalType +from tests_new.integration_tests.modules.share_base.queries import ( + create_share_object, + delete_share_object, + get_share_object, + revoke_share_items, +) +from tests_new.integration_tests.modules.share_base.utils import check_share_ready +from dataall.modules.shares_base.services.shares_enums import ShareItemStatus + +test_cons_role_name = 'dataall-test-ShareTestConsumptionRole' + + +def revoke_all_possible(client, shareUri): + share = get_share_object(client, shareUri, {'isShared': True}) + statuses_can_delete = [ + ShareItemStatus.PendingApproval.value, + ShareItemStatus.Revoke_Succeeded.value, + ShareItemStatus.Share_Failed.value, + ShareItemStatus.Share_Rejected.value, + ] + + shareItemUris = [item.shareItemUri for item in share['items'].nodes if item.status not in statuses_can_delete] + if shareItemUris: + revoke_share_items(client, shareUri, shareItemUris) + + +def clean_up_share(client, shareUri): + check_share_ready(client, shareUri) + revoke_all_possible(client, shareUri) + check_share_ready(client, shareUri) + delete_share_object(client, shareUri) + + +@pytest.fixture(scope='session') +def consumption_role_1(client5, group5, session_cross_acc_env_1, session_cross_acc_env_1_aws_client): + iam_client = IAMClient(session=session_cross_acc_env_1_aws_client, region=session_cross_acc_env_1['region']) + role = iam_client.get_consumption_role( + session_cross_acc_env_1.AwsAccountId, + test_cons_role_name, + f'dataall-integration-tests-role-{session_cross_acc_env_1.region}', + ) + consumption_role = add_consumption_role( + client5, + session_cross_acc_env_1.environmentUri, + group5, + 'ShareTestConsumptionRole', + role['Role']['Arn'], + ) + yield consumption_role + remove_consumption_role(client5, session_cross_acc_env_1.environmentUri, consumption_role.consumptionRoleUri) + + +@pytest.fixture(scope='session') +def session_share_1( + client5, + client1, + session_cross_acc_env_1, + session_s3_dataset1, + session_s3_dataset1_tables, + session_s3_dataset1_folders, + group5, +): + share1 = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=group5, + principalType=PrincipalType.Group.value, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share1 = get_share_object(client5, share1.shareUri) + yield share1 + clean_up_share(client5, share1.shareUri) + + +@pytest.fixture(scope='session') +def session_share_2( + client5, + client1, + session_cross_acc_env_1, + session_imported_sse_s3_dataset1, + session_imported_sse_s3_dataset1_tables, + session_imported_sse_s3_dataset1_folders, + group5, +): + share2 = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_imported_sse_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=group5, + principalType=PrincipalType.Group.value, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share2 = get_share_object(client5, share2.shareUri) + yield share2 + + clean_up_share(client5, share2.shareUri) + + +@pytest.fixture(scope='session') +def session_share_consrole_1( + client5, + client1, + session_cross_acc_env_1, + session_s3_dataset1, + session_s3_dataset1_tables, + session_s3_dataset1_folders, + group5, + consumption_role_1, +): + share1cr = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=consumption_role_1.consumptionRoleUri, + principalType=PrincipalType.ConsumptionRole.value, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share1cr = get_share_object(client5, share1cr.shareUri) + yield share1cr + clean_up_share(client5, share1cr.shareUri) + + +@pytest.fixture(scope='session') +def session_share_consrole_2( + client5, + client1, + session_cross_acc_env_1, + session_imported_sse_s3_dataset1, + session_imported_sse_s3_dataset1_tables, + session_imported_sse_s3_dataset1_folders, + group5, + consumption_role_1, +): + share2cr = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_imported_sse_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=consumption_role_1.consumptionRoleUri, + principalType=PrincipalType.ConsumptionRole.value, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share2cr = get_share_object(client5, share2cr.shareUri) + yield share2cr + + clean_up_share(client5, share2cr.shareUri) + + +@pytest.fixture(params=['Group', 'ConsumptionRole']) +def principal1(request, group5, consumption_role_1): + if request.param == 'Group': + yield group5, request.param + else: + yield consumption_role_1.consumptionRoleUri, request.param + + +@pytest.fixture(params=['Group', 'ConsumptionRole']) +def share_params_main(request, session_share_1, session_share_consrole_1, session_s3_dataset1): + if request.param == 'Group': + yield session_share_1, session_s3_dataset1 + else: + yield session_share_consrole_1, session_s3_dataset1 + + +@pytest.fixture(params=[(False, 'Group'), (True, 'Group'), (False, 'ConsumptionRole'), (True, 'ConsumptionRole')]) +def share_params_all( + request, + session_share_1, + session_share_consrole_1, + session_s3_dataset1, + session_share_2, + session_share_consrole_2, + session_imported_sse_s3_dataset1, +): + autoapproval, principal_type = request.param + if autoapproval: + if principal_type == 'Group': + yield session_share_2, session_imported_sse_s3_dataset1 + else: + yield session_share_consrole_2, session_imported_sse_s3_dataset1 + else: + if principal_type == 'Group': + yield session_share_1, session_s3_dataset1 + else: + yield session_share_consrole_1, session_s3_dataset1 diff --git a/tests_new/integration_tests/modules/share_base/input_types.py b/tests_new/integration_tests/modules/share_base/input_types.py new file mode 100644 index 000000000..520225dc6 --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/input_types.py @@ -0,0 +1,12 @@ +def NewShareObjectInput( + environmentUri, groupUri, principalId, principalType, requestPurpose, attachMissingPolicies, permissions +): + return { + 'environmentUri': environmentUri, + 'groupUri': groupUri, + 'principalId': principalId, + 'principalType': principalType, + 'requestPurpose': requestPurpose, + 'attachMissingPolicies': attachMissingPolicies, + 'permissions': permissions, + } diff --git a/tests_new/integration_tests/modules/share_base/queries.py b/tests_new/integration_tests/modules/share_base/queries.py new file mode 100644 index 000000000..5e69543fc --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/queries.py @@ -0,0 +1,231 @@ +from tests_new.integration_tests.modules.share_base.input_types import NewShareObjectInput +from tests_new.integration_tests.modules.share_base.types import ShareObject +from typing import List + + +def create_share_object( + client, + dataset_or_item_params: dict, + environmentUri, + groupUri, + principalId, + principalType, + requestPurpose, + attachMissingPolicies, + permissions, +): + variables = dataset_or_item_params + variables['input'] = NewShareObjectInput( + environmentUri, groupUri, principalId, principalType, requestPurpose, attachMissingPolicies, permissions + ) + query = { + 'operationName': 'createShareObject', + 'variables': variables, + 'query': f""" + mutation createShareObject( $datasetUri: String! + $itemType: String + $itemUri: String + $input: NewShareObjectInput!) {{ + createShareObject( + datasetUri: $datasetUri + itemType: $itemType + itemUri: $itemUri + input: $input + ) {{ + shareUri, + status, + }} + }} + """, + } + response = client.query(query=query) + return response.data.createShareObject + + +def submit_share_object(client, shareUri: str): + variables = {'shareUri': shareUri} + query = { + 'operationName': 'submitShareObject', + 'variables': variables, + 'query': f""" + mutation submitShareObject($shareUri: String!) {{ + submitShareObject(shareUri: $shareUri) {{ + shareUri, + status, + }} + }} + """, + } + response = client.query(query=query) + return response.data.submitShareObject + + +def update_share_request_reason(client, shareUri: str, reason: str): + variables = {'shareUri': shareUri, 'requestPurpose': reason} + query = { + 'operationName': 'updateShareRequestReason', + 'variables': variables, + 'query': f""" + mutation updateShareRequestReason($shareUri: String!, $requestPurpose: String!) {{ + updateShareRequestReason(shareUri: $shareUri, requestPurpose: $requestPurpose) + }} + """, + } + response = client.query(query=query) + return response.data.updateShareRequestReason + + +def update_share_reject_reason(client, shareUri: str, reason: str): + variables = {'shareUri': shareUri, 'rejectPurpose': reason} + query = { + 'operationName': 'updateShareRejectReason', + 'variables': variables, + 'query': f""" + mutation updateShareRejectReason($shareUri: String!, $rejectPurpose: String!) {{ + updateShareRejectReason(shareUri: $shareUri, rejectPurpose: $rejectPurpose) + }} + """, + } + response = client.query(query=query) + return response.data.updateShareRejectReason + + +def reject_share_object(client, shareUri: str): + variables = {'shareUri': shareUri} + query = { + 'operationName': 'rejectShareObject', + 'variables': variables, + 'query': f""" + mutation rejectShareObject($shareUri: String!) {{ + rejectShareObject(shareUri: $shareUri) {{ + shareUri, + status, + }} + }} + """, + } + response = client.query(query=query) + return response.data.rejectShareObject + + +def approve_share_object(client, shareUri: str): + variables = {'shareUri': shareUri} + query = { + 'operationName': 'approveShareObject', + 'variables': variables, + 'query': f""" + mutation approveShareObject($shareUri: String!) {{ + approveShareObject(shareUri: $shareUri) {{ + shareUri, + status, + }} + }} + """, + } + response = client.query(query=query) + return response.data.approveShareObject + + +def delete_share_object(client, shareUri: str): + variables = {'shareUri': shareUri} + query = { + 'operationName': 'deleteShareObject', + 'variables': variables, + 'query': f""" + mutation deleteShareObject($shareUri: String!) {{ + deleteShareObject(shareUri: $shareUri) + }} + """, + } + response = client.query(query=query) + return response.data.deleteShareObject + + +def get_share_object(client, shareUri: str, filter=None): + variables = {'shareUri': shareUri, 'filter': filter or {}} + query = { + 'operationName': 'getShareObject', + 'variables': variables, + 'query': f""" + query getShareObject($shareUri: String!, $filter: ShareableObjectFilter) {{ + getShareObject(shareUri: $shareUri) {{ + {ShareObject} + }} + }} + """, + } + + response = client.query(query=query) + return response.data.getShareObject + + +def add_share_item(client, shareUri: str, itemUri: str, itemType: str): + query = { + 'operationName': 'addSharedItem', + 'variables': {'shareUri': shareUri, 'input': {'itemUri': itemUri, 'itemType': itemType}}, + 'query': f""" + mutation addSharedItem($shareUri: String!, $input: AddSharedItemInput!) {{ + addSharedItem(shareUri: $shareUri, input: $input) {{ + shareItemUri + }} + }} + """, + } + + response = client.query(query=query) + return response.data.addSharedItem.shareItemUri + + +def verify_share_items(client, shareUri: str, shareItemsUris: List[str]): + query = { + 'operationName': 'verifyItemsShareObject', + 'variables': {'input': {'shareUri': shareUri, 'itemUris': shareItemsUris}}, + 'query': f""" + mutation verifyItemsShareObject($input: ShareItemSelectorInput) {{ + verifyItemsShareObject(input: $input) {{ + shareUri + status + }} + }} + """, + } + + response = client.query(query=query) + return response.data.verifyItemsShareObject + + +def revoke_share_items(client, shareUri: str, shareItemUris: List[str]): + query = { + 'operationName': 'revokeItemsShareObject', + 'variables': {'input': {'shareUri': shareUri, 'itemUris': shareItemUris}}, + 'query': f""" + mutation revokeItemsShareObject($input: ShareItemSelectorInput) {{ + revokeItemsShareObject(input: $input) {{ + shareUri + status + }} + }} + """, + } + + response = client.query(query=query) + return response.data.revokeItemsShareObject + + +def get_s3_consumption_data(client, shareUri: str): + query = { + 'operationName': 'getS3ConsumptionData', + 'variables': {'shareUri': shareUri}, + 'query': f""" + query getS3ConsumptionData($shareUri: String!) {{ + getS3ConsumptionData(shareUri: $shareUri) {{ + s3AccessPointName + sharedGlueDatabase + s3bucketName + }} + }} + """, + } + + response = client.query(query=query) + return response.data.getS3ConsumptionData diff --git a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py new file mode 100644 index 000000000..fad194fe5 --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py @@ -0,0 +1,285 @@ +import pytest +from assertpy import assert_that + +from tests_new.integration_tests.modules.s3_datasets.queries import get_folder +from tests_new.integration_tests.aws_clients.athena import AthenaClient +from dataall.modules.shares_base.services.shares_enums import ( + ShareItemStatus, + ShareObjectStatus, + ShareItemHealthStatus, + ShareableType, +) +from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client +from tests_new.integration_tests.modules.share_base.conftest import clean_up_share +from tests_new.integration_tests.modules.share_base.queries import ( + create_share_object, + submit_share_object, + add_share_item, + get_share_object, + reject_share_object, + approve_share_object, + revoke_share_items, + delete_share_object, + verify_share_items, + update_share_request_reason, + update_share_reject_reason, + get_s3_consumption_data, +) +from tests_new.integration_tests.modules.share_base.utils import ( + check_share_ready, + check_share_items_verified, + get_group_session, + get_role_session, +) + +ALL_S3_SHARABLE_TYPES_NAMES = [ + ShareableType.Table.name, + ShareableType.StorageLocation.name, + ShareableType.S3Bucket.name, +] + + +def test_create_and_delete_share_object(client5, session_cross_acc_env_1, session_s3_dataset1, principal1, group5): + principal_id, principal_type = principal1 + share = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=principal_id, + principalType=principal_type, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + assert_that(share.status).is_equal_to(ShareObjectStatus.Draft.value) + delete_share_object(client5, share.shareUri) + + +def test_submit_empty_object(client5, session_cross_acc_env_1, session_s3_dataset1, group5, principal1): + # here Exception is not recognized as GqlError, so we use base class + # toDo: back to GqlError + principal_id, principal_type = principal1 + share = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=principal_id, + principalType=principal_type, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + assert_that(submit_share_object).raises(Exception).when_called_with(client5, share.shareUri).contains( + 'ShareItemsFound', 'The request is empty' + ) + clean_up_share(client5, share.shareUri) + + +def test_add_share_items(client5, session_cross_acc_env_1, session_s3_dataset1, group5, principal1): + principal_id, principal_type = principal1 + share = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=principal_id, + principalType=principal_type, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share = get_share_object(client5, share.shareUri) + + items = share['items'].nodes + assert_that(len(items)).is_greater_than(0) + assert_that(items[0].status).is_none() + + item_to_add = items[0] + share_item_uri = add_share_item(client5, share.shareUri, item_to_add.itemUri, item_to_add.itemType) + assert_that(share_item_uri).is_not_none() + + updated_share = get_share_object(client5, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + assert_that(items).is_length(1) + assert_that(items[0].shareItemUri).is_equal_to(share_item_uri) + assert_that(items[0].status).is_equal_to(ShareItemStatus.PendingApproval.value) + + clean_up_share(client5, share.shareUri) + + +def test_reject_share(client1, client5, session_cross_acc_env_1, session_s3_dataset1, group5, principal1): + principal_id, principal_type = principal1 + share = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=principal_id, + principalType=principal_type, + requestPurpose='test create share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share = get_share_object(client5, share.shareUri) + + items = share['items'].nodes + assert_that(len(items)).is_greater_than(0) + assert_that(items[0].status).is_none() + + item_to_add = items[0] + add_share_item(client5, share.shareUri, item_to_add.itemUri, item_to_add.itemType) + submit_share_object(client5, share.shareUri) + + reject_share_object(client1, share.shareUri) + updated_share = get_share_object(client1, share.shareUri) + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Rejected.value) + + change_request_purpose = update_share_reject_reason(client1, share.shareUri, 'new purpose') + assert_that(change_request_purpose).is_true() + updated_share = get_share_object(client5, share.shareUri) + assert_that(updated_share.rejectPurpose).is_equal_to('new purpose') + + clean_up_share(client5, share.shareUri) + + +def test_change_share_purpose(client5, share_params_main): + share, dataset = share_params_main + change_request_purpose = update_share_request_reason(client5, share.shareUri, 'new purpose') + assert_that(change_request_purpose).is_true() + updated_share = get_share_object(client5, share.shareUri) + assert_that(updated_share.requestPurpose).is_equal_to('new purpose') + + +@pytest.mark.dependency(name='share_submitted') +def test_submit_object(client5, share_params_all): + share, dataset = share_params_all + updated_share = get_share_object(client5, share.shareUri) + items = updated_share['items'].nodes + for item in items: + add_share_item(client5, share.shareUri, item.itemUri, item.itemType) + + submit_share_object(client5, share.shareUri) + updated_share = get_share_object(client5, share.shareUri) + if dataset.autoApprovalEnabled: + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Approved.value) + else: + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Submitted.value) + + +@pytest.mark.dependency(name='share_approved', depends=['share_submitted']) +def test_approve_share(client1, share_params_main): + share, dataset = share_params_main + approve_share_object(client1, share.shareUri) + + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Approved.value) + items = updated_share['items'].nodes + assert_that(items).extracting('status').contains_only(ShareItemStatus.Share_Approved.value) + + +@pytest.mark.dependency(name='share_succeeded', depends=['share_approved']) +def test_share_succeeded(client1, share_params_main): + share, dataset = share_params_main + check_share_ready(client1, share.shareUri) + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Processed.value) + for item in items: + assert_that(item.status).is_equal_to(ShareItemStatus.Share_Succeeded.value) + assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Healthy.value) + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + + +@pytest.mark.dependency(name='share_verified', depends=['share_succeeded']) +def test_verify_share_items(client1, share_params_main): + share, dataset = share_params_main + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + times = [item.lastVerificationTime for item in items] + verify_share_items(client1, share.shareUri, [item.shareItemUri for item in items]) + check_share_items_verified(client1, share.shareUri) + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + assert_that(items).extracting('status').contains_only(ShareItemStatus.Share_Succeeded.value) + assert_that(items).extracting('healthStatus').contains_only(ShareItemHealthStatus.Healthy.value) + assert_that(items).extracting('lastVerificationTime').does_not_contain(*times) + + +@pytest.mark.dependency(depends=['share_verified']) +def test_check_item_access(client5, session_cross_acc_env_1_aws_client, share_params_main, group5, consumption_role_1): + share, dataset = share_params_main + principal_type = share.principal.principalType + if principal_type == 'Group': + session = get_group_session(client5, share.environment.environmentUri, group5) + elif principal_type == 'ConsumptionRole': + session = get_role_session(session_cross_acc_env_1_aws_client, consumption_role_1.IAMRoleArn, dataset.region) + else: + raise Exception('wrong principal type') + + s3_client = S3Client(session, dataset.region) + athena_client = AthenaClient(session, dataset.region) + + consumption_data = get_s3_consumption_data(client5, share.shareUri) + updated_share = get_share_object(client5, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + + glue_db = consumption_data.sharedGlueDatabase + access_point_arn = ( + f'arn:aws:s3:{dataset.region}:{dataset.AwsAccountId}:accesspoint/{consumption_data.s3AccessPointName}' + ) + if principal_type == 'Group': + workgroup = athena_client.get_env_work_group(updated_share.environment.name) + athena_workgroup_output_location = None + else: + workgroup = 'primary' + athena_workgroup_output_location = ( + f's3://dataset-{dataset.datasetUri}-session-query-results/athenaqueries/primary/' + ) + + for item in items: + if item.itemType == ShareableType.Table.name: + # nosemgrep-next-line:noexec + query = 'SELECT * FROM {}.{}'.format(glue_db, item.itemName) + state = athena_client.execute_query(query, workgroup, athena_workgroup_output_location) + assert_that(state).is_equal_to('SUCCEEDED') + elif item.itemType == ShareableType.S3Bucket.name: + assert_that(s3_client.bucket_exists(item.itemName)).is_not_none() + assert_that(s3_client.list_bucket_objects(item.itemName)).is_not_none() + elif item.itemType == ShareableType.StorageLocation.name: + folder = get_folder(client5, item.itemUri) + assert_that( + s3_client.list_accesspoint_folder_objects(access_point_arn, folder.S3Prefix + '/') + ).is_not_none() + + +@pytest.mark.dependency(name='share_revoked', depends=['share_succeeded']) +def test_revoke_share(client1, share_params_main): + share, dataset = share_params_main + check_share_ready(client1, share.shareUri) + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + + shareItemUris = [item.shareItemUri for item in items] + revoke_share_items(client1, share.shareUri, shareItemUris) + + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Revoked.value) + items = updated_share['items'].nodes + + assert_that(items).extracting('status').contains_only(ShareItemStatus.Revoke_Approved.value) + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + + +@pytest.mark.dependency(name='share_revoke_succeeded', depends=['share_revoked']) +def test_revoke_succeeded(client1, share_params_main): + share, dataset = share_params_main + check_share_ready(client1, share.shareUri) + updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) + items = updated_share['items'].nodes + + assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Processed.value) + assert_that(items).extracting('status').contains_only(ShareItemStatus.Revoke_Succeeded.value) + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) diff --git a/tests_new/integration_tests/modules/share_base/types.py b/tests_new/integration_tests/modules/share_base/types.py new file mode 100644 index 000000000..62c6778b4 --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/types.py @@ -0,0 +1,81 @@ +Principal = """ + principalName + principalType + principalId + principalRoleName + SamlGroupName + environmentName +""" + +Dataset = """ +datasetUri +datasetName +SamlAdminGroupName +environmentName +AwsAccountId +region +exists +description +""" + + +ShareItem = """ +shareUri, +shareItemUri, +itemUri, +status, +action, +itemType, +itemName, +description, +healthStatus, +healthMessage, +lastVerificationTime, +""" + + +SharedItemSearchResult = f""" +count, +pageSize, +nextPage, +pages, +page, +previousPage, +hasNext, +hasPrevious, +nodes {{ + {ShareItem} +}} +""" + +ShareObject = f""" +shareUri, +status, +owner, +created, +deleted, +updated, +datasetUri, +requestPurpose, +rejectPurpose, +dataset {{ + {Dataset} +}}, +alreadyExisted, +existingSharedItems, +principal {{ + {Principal} +}}, +items(filter: $filter){{ + {SharedItemSearchResult} +}}, +environment{{ + environmentUri, + AwsAccountId, + region + resourcePrefix + name +}} +canViewLogs, +userRoleForShareObject, +""" diff --git a/tests_new/integration_tests/modules/share_base/utils.py b/tests_new/integration_tests/modules/share_base/utils.py new file mode 100644 index 000000000..78ce7b1fc --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/utils.py @@ -0,0 +1,52 @@ +import json +import re + +import boto3 + +from tests_new.integration_tests.aws_clients.sts import StsClient +from tests_new.integration_tests.modules.share_base.queries import get_share_object +from tests_new.integration_tests.utils import poller +from dataall.modules.shares_base.services.shares_enums import ShareObjectStatus, ShareItemHealthStatus +from tests_new.integration_tests.core.environment.queries import get_environment_access_token + + +def is_share_in_progress(share): + return share.status in [ + ShareObjectStatus.Share_In_Progress.value, + ShareObjectStatus.Revoke_In_Progress.value, + ShareObjectStatus.Approved.value, + ShareObjectStatus.Revoked.value, + ] + + +def is_all_items_verified(share): + items = share['items'].nodes + statuses = [item.healthStatus for item in items] + return not ( + ShareItemHealthStatus.PendingVerify.value in statuses or ShareItemHealthStatus.PendingReApply.value in statuses + ) + + +@poller(check_success=lambda share: not is_share_in_progress(share), timeout=600) +def check_share_ready(client, shareUri): + return get_share_object(client, shareUri) + + +@poller(check_success=lambda share: is_all_items_verified(share), timeout=600) +def check_share_items_verified(client, shareUri): + return get_share_object(client, shareUri) + + +def get_group_session(client, env_uri, group): + credentials = json.loads(get_environment_access_token(client, env_uri, group)) + + return boto3.Session( + aws_access_key_id=credentials['AccessKey'], + aws_secret_access_key=credentials['SessionKey'], + aws_session_token=credentials['sessionToken'], + ) + + +def get_role_session(session, role_arn, region): + sts_client = StsClient(session=session, region=region) + return sts_client.get_role_session(role_arn) diff --git a/tests_new/integration_tests/requirements.txt b/tests_new/integration_tests/requirements.txt index 35da0738e..ced7a58ef 100644 --- a/tests_new/integration_tests/requirements.txt +++ b/tests_new/integration_tests/requirements.txt @@ -8,4 +8,4 @@ pytest-dependency==0.5.1 requests==2.32.2 dataclasses-json==0.6.6 werkzeug==3.0.3 -retrying==1.3.4 +retrying==1.3.4 \ No newline at end of file From 65009168289a255ca3f8b9b78f81f79812eefc38 Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:45:06 -0500 Subject: [PATCH 087/188] [Gh 1570] feature flag for table metrics (#1574) ### Feature or Bugfix - Feature ### Detail Using existing functions like is_feature_enabled to enabled / disable use of metrics and associated profiling jobs. ### Relates - https://github.com/data-dot-all/dataall/issues/1570 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? N/A - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? N/A - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? No - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? No - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: trajopadhye --- .../s3_datasets/services/dataset_profiling_service.py | 6 ++++++ config.json | 1 + frontend/src/modules/Tables/views/TableView.js | 5 +++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py b/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py index 7839ca9d1..7b8e5f0f8 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_profiling_service.py @@ -1,5 +1,6 @@ import json +from dataall.base.feature_toggle_checker import is_feature_enabled from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.tasks.service_handlers import Worker from dataall.base.context import get_context @@ -22,6 +23,7 @@ class DatasetProfilingService: @staticmethod @ResourcePolicyService.has_resource_permission(PROFILE_DATASET_TABLE) + @is_feature_enabled('modules.s3_datasets.features.metrics_data') def start_profiling_run(uri, table_uri, glue_table_name): context = get_context() with context.db_engine.scoped_session() as session: @@ -55,6 +57,7 @@ def start_profiling_run(uri, table_uri, glue_table_name): return run @staticmethod + @is_feature_enabled('modules.s3_datasets.features.metrics_data') def resolve_profiling_run_status(run_uri): context = get_context() with context.db_engine.scoped_session() as session: @@ -64,11 +67,13 @@ def resolve_profiling_run_status(run_uri): @staticmethod @ResourcePolicyService.has_resource_permission(GET_DATASET) + @is_feature_enabled('modules.s3_datasets.features.metrics_data') def list_profiling_runs(uri): with get_context().db_engine.scoped_session() as session: return DatasetProfilingRepository.list_profiling_runs(session, uri) @classmethod + @is_feature_enabled('modules.s3_datasets.features.metrics_data') def get_dataset_table_profiling_run(cls, uri: str): with get_context().db_engine.scoped_session() as session: cls._check_preview_permissions_if_needed(session, table_uri=uri) @@ -94,6 +99,7 @@ def get_dataset_table_profiling_run(cls, uri: str): return run @classmethod + @is_feature_enabled('modules.s3_datasets.features.metrics_data') def list_table_profiling_runs(cls, uri: str): with get_context().db_engine.scoped_session() as session: cls._check_preview_permissions_if_needed(session=session, table_uri=uri) diff --git a/config.json b/config.json index e0e193c59..26d0891b4 100644 --- a/config.json +++ b/config.json @@ -57,6 +57,7 @@ "aws_actions": true, "preview_data": true, "glue_crawler": true, + "metrics_data": true, "show_stack_logs": "enabled" } }, diff --git a/frontend/src/modules/Tables/views/TableView.js b/frontend/src/modules/Tables/views/TableView.js index a7f0fb028..85ce3c0a6 100644 --- a/frontend/src/modules/Tables/views/TableView.js +++ b/frontend/src/modules/Tables/views/TableView.js @@ -42,6 +42,7 @@ import { isFeatureEnabled } from 'utils'; import config from '../../../generated/config.json'; const previewDataEnabled = isFeatureEnabled('s3_datasets', 'preview_data'); +const metricsEnabled = isFeatureEnabled('s3_datasets', 'metrics_data'); const confidentialityOptionsDict = config.modules.datasets_base.features.confidentiality_dropdown === true && @@ -195,7 +196,7 @@ const TableView = () => { if (!tabs.find((t) => t.value === 'columns')) { tabs.push({ label: 'Columns', value: 'columns' }); } - if (!tabs.find((t) => t.value === 'metrics')) { + if (metricsEnabled && !tabs.find((t) => t.value === 'metrics')) { tabs.push({ label: 'Metrics', value: 'metrics' }); } if ( @@ -310,7 +311,7 @@ const TableView = () => { {currentTab === 'columns' && ( )} - {currentTab === 'metrics' && ( + {metricsEnabled && currentTab === 'metrics' && ( )} {currentTab === 'datafilters' && isAdmin && ( From ab7e2a9cad43b91702de3c70c6123c403c29d0eb Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Thu, 26 Sep 2024 14:20:23 +0300 Subject: [PATCH 088/188] migrate local server to FastAPI (#1577) ### Feature or Bugfix - Refactoring ### Detail * Migrate local server Flask to FastAPI * Upgrade and align versions of important libraries (aws-cdk-lib/boto3) * Simplify requirements files (removed explicitly defined deps that were not required or were implicitly pulled by other packages). ### Testing Penting succesful run on dev pipeline ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../dataall/base/cdkproxy/requirements.txt | 13 +-- backend/dataall/base/context.py | 2 +- .../data_pipeline_blueprint/requirements.txt | 3 +- backend/local_graphql_server.py | 87 ++++++++----------- backend/requirements.txt | 8 +- deploy/requirements.txt | 8 +- deploy/stacks/cdk_nag_exclusions.py | 4 + deploy/stacks/pipeline.py | 6 +- docker-compose.yaml | 2 +- tests/client.py | 35 ++++---- tests/conftest.py | 4 +- tests/requirements.txt | 1 + tests_new/integration_tests/requirements.txt | 2 +- 13 files changed, 81 insertions(+), 94 deletions(-) diff --git a/backend/dataall/base/cdkproxy/requirements.txt b/backend/dataall/base/cdkproxy/requirements.txt index 2c9be32f7..894243316 100644 --- a/backend/dataall/base/cdkproxy/requirements.txt +++ b/backend/dataall/base/cdkproxy/requirements.txt @@ -1,17 +1,12 @@ -aws-cdk-lib==2.99.0 -boto3==1.34.119 -boto3-stubs==1.34.119 -botocore==1.34.119 +aws-cdk-lib==2.160.0 +boto3==1.35.26 +boto3-stubs==1.35.26 cdk-nag==2.7.2 -constructs==10.0.73 -starlette==0.36.3 -fastapi == 0.109.2 -Flask==2.3.2 +fastapi == 0.115.0 PyYAML==6.0 requests==2.32.2 tabulate==0.8.9 uvicorn==0.15.0 werkzeug==3.0.3 -constructs>=10.0.0,<11.0.0 git-remote-codecommit==1.16 aws-ddk-core==1.3.0 \ No newline at end of file diff --git a/backend/dataall/base/context.py b/backend/dataall/base/context.py index b271b3e18..3df892e18 100644 --- a/backend/dataall/base/context.py +++ b/backend/dataall/base/context.py @@ -4,7 +4,7 @@ that in the request scope The class uses Flask's approach to handle request: ThreadLocal -That approach should work fine for AWS Lambdas and local server that uses Flask app +That approach should work fine for AWS Lambdas and local server that uses FastApi app """ from dataclasses import dataclass diff --git a/backend/dataall/modules/datapipelines/cdk/blueprints/data_pipeline_blueprint/requirements.txt b/backend/dataall/modules/datapipelines/cdk/blueprints/data_pipeline_blueprint/requirements.txt index 4067e0fd9..7351d1274 100644 --- a/backend/dataall/modules/datapipelines/cdk/blueprints/data_pipeline_blueprint/requirements.txt +++ b/backend/dataall/modules/datapipelines/cdk/blueprints/data_pipeline_blueprint/requirements.txt @@ -1,3 +1,2 @@ -aws-cdk-lib==2.103.1 -constructs>=10.0.0,<11.0.0 +aws-cdk-lib==2.160.0 aws-ddk-core==1.3.0 diff --git a/backend/local_graphql_server.py b/backend/local_graphql_server.py index 1ea96a732..40c765896 100644 --- a/backend/local_graphql_server.py +++ b/backend/local_graphql_server.py @@ -1,24 +1,23 @@ +import logging import os import jwt from ariadne import graphql_sync from ariadne.constants import PLAYGROUND_HTML -from flask import Flask, request, jsonify -from flask_cors import CORS +from fastapi import FastAPI, Request from graphql import parse +from starlette.middleware.cors import CORSMiddleware +from starlette.responses import JSONResponse, HTMLResponse from dataall.base.api import get_executable_schema -from dataall.core.tasks.service_handlers import Worker -from dataall.core.permissions.services.tenant_permissions import TENANT_ALL -from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService - -from dataall.base.db import get_engine, Base -from dataall.base.searchproxy import connect, run_query -from dataall.base.loader import load_modules, ImportMode from dataall.base.config import config from dataall.base.context import set_context, dispose_context, RequestContext - -import logging +from dataall.base.db import get_engine, Base +from dataall.base.loader import load_modules, ImportMode +from dataall.base.searchproxy import connect, run_query +from dataall.core.permissions.services.tenant_permissions import TENANT_ALL +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService +from dataall.core.tasks.service_handlers import Worker logger = logging.getLogger('graphql') logger.propagate = False @@ -45,10 +44,14 @@ def __init__(self, **kwargs): schema = get_executable_schema() -# app = GraphQL(schema, debug=True) - -app = Flask(__name__) -CORS(app) +app = FastAPI(debug=True) +app.add_middleware( + CORSMiddleware, + allow_origins=['*'], + allow_credentials=True, + allow_methods=['*'], + allow_headers=['*'], +) def request_context(headers, mock=False): @@ -87,67 +90,61 @@ def request_context(headers, mock=False): return context.__dict__ -@app.route('/graphql', methods=['OPTIONS']) +@app.options('/graphql') def opt(): # On GET request serve GraphQL Playground # You don't need to provide Playground if you don't want to # but keep on mind this will not prohibit clients from # exploring your API using desktop GraphQL Playground app. - return '

      Hello

      ', 200 + return HTMLResponse('

      Hello

      ') -@app.route('/esproxy', methods=['OPTIONS']) +@app.options('/esproxy') def esproxyopt(): # On GET request serve GraphQL Playground # You don't need to provide Playground if you don't want to # but keep on mind this will not prohibit clients from # exploring your API using desktop GraphQL Playground app. - return '

      Hello

      ', 200 + return HTMLResponse('

      Hello

      ') -@app.route('/graphql', methods=['GET']) +@app.get('/graphql') def graphql_playground(): # On GET request serve GraphQL Playground # You don't need to provide Playground if you don't want to # but keep on mind this will not prohibit clients from # exploring your API using desktop GraphQL Playground app. - return PLAYGROUND_HTML, 200 + return HTMLResponse(PLAYGROUND_HTML) -@app.route('/esproxy', methods=['POST']) -def esproxy(): - body = request.data.decode('utf-8') - print(body) +@app.post('/esproxy') +async def esproxy(request: Request): + body = (await request.body()).decode('utf-8') + logger.info('body %s', body) return run_query(es=es, index='dataall-index', body=body) -@app.route('/graphql', methods=['POST']) -def graphql_server(): - print('.............................') - # GraphQL queries are always sent as POST - logger.debug(request.data) - data = request.get_json() - print('*** Request ***', request.data) - logger.info(data) +@app.post('/graphql') +async def graphql_server(request: Request): + logger.info('.............................') + data = await request.json() + logger.info('Request payload %s', data) # Extract the GraphQL query string from the 'query' key in the data dictionary query_string = data.get('query') if not query_string: - return jsonify({'error': 'GraphQL query not provided'}), 400 + return JSONResponse({'error': 'GraphQL query not provided'}, 400) try: query = parse(query_string) except Exception as e: - return jsonify({'error': str(e)}), 400 + return JSONResponse({'error': str(e)}, 400) - print('***** Printing Query ****** \n\n') - print(query) + logger.info('Request query %s', query.to_dict()) context = request_context(request.headers, mock=True) logger.debug(context) - # Note: Passing the request to the context is optional. - # In Flask, the current request is always accessible as flask.request success, result = graphql_sync( schema, data, @@ -157,14 +154,4 @@ def graphql_server(): dispose_context() status_code = 200 if success else 400 - return jsonify(result), status_code - - -if __name__ == '__main__': - logger.info('Starting dataall flask local application') - app.run( - debug=True, # nosec - threaded=False, - host='0.0.0.0', - port=5000, - ) + return JSONResponse(result, status_code) diff --git a/backend/requirements.txt b/backend/requirements.txt index 94f7927ca..d50a72380 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,10 +1,7 @@ ariadne==0.17.0 aws-xray-sdk==2.4.3 -boto3==1.34.119 -botocore==1.34.119 -fastapi == 0.109.2 -Flask==3.0.3 -flask-cors==5.0.0 +boto3==1.35.26 +fastapi == 0.115.0 nanoid==2.0.0 opensearch-py==1.0.0 PyAthena==2.3.0 @@ -14,5 +11,4 @@ PyYAML==6.0 requests==2.32.2 requests_aws4auth==1.1.1 sqlalchemy==1.3.24 -starlette==0.36.3 alembic==1.13.1 \ No newline at end of file diff --git a/deploy/requirements.txt b/deploy/requirements.txt index 3ac23e4da..d91bc5199 100644 --- a/deploy/requirements.txt +++ b/deploy/requirements.txt @@ -1,6 +1,4 @@ -aws-cdk-lib==2.115.0 -boto3-stubs==1.20.20 -boto3==1.28.23 -botocore==1.31.23 +aws-cdk-lib==2.160.0 +boto3==1.35.26 +boto3-stubs==1.35.26 cdk-nag==2.7.2 -constructs>=10.0.0,<11.0.0 diff --git a/deploy/stacks/cdk_nag_exclusions.py b/deploy/stacks/cdk_nag_exclusions.py index a9948088b..e1c80e0d2 100644 --- a/deploy/stacks/cdk_nag_exclusions.py +++ b/deploy/stacks/cdk_nag_exclusions.py @@ -28,6 +28,10 @@ 'id': 'AwsSolutions-CB3', 'reason': 'Access to docker daemon is required to build docker images', }, + { + 'id': 'AwsSolutions-SMG4', + 'reason': 'Database is used for test purposes', + }, ] BACKEND_STACK_CDK_NAG_EXCLUSIONS = [ diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index 39e7bad38..add56e890 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -821,7 +821,7 @@ def set_cloudfront_stage(self, target_env): f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', 'export AWS_PROFILE=buildprofile', - 'pip install boto3==1.34.35', + 'pip install boto3==1.35.26', 'pip install beautifulsoup4', 'python deploy/configs/frontend_config.py', 'export AWS_DEFAULT_REGION=us-east-1', @@ -893,7 +893,7 @@ def cw_rum_config_action(self, target_env): 'aws sts get-caller-identity --profile buildprofile', 'export AWS_PROFILE=buildprofile', 'pip install --upgrade pip', - 'pip install boto3==1.34.35', + 'pip install boto3==1.35.26', 'python deploy/configs/rum_config.py', ], role=self.expanded_codebuild_role.without_policy_updates(), @@ -962,7 +962,7 @@ def set_albfront_stage(self, target_env, repository_name): f'echo "external_id = {get_tooling_account_external_id(target_env["account"])}" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', 'export AWS_PROFILE=buildprofile', - 'pip install boto3==1.34.35', + 'pip install boto3==1.35.26', 'pip install beautifulsoup4', 'python deploy/configs/frontend_config.py', 'unset AWS_PROFILE', diff --git a/docker-compose.yaml b/docker-compose.yaml index 6b10cfeac..2e9597772 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -37,7 +37,7 @@ services: dockerfile: docker/dev/Dockerfile args: CONTAINER_UID: ${UID} - entrypoint: /bin/bash -c "../build/wait-for-it.sh elasticsearch:9200 -t 30 && python3.9 local_graphql_server.py" + entrypoint: /bin/bash -c "../build/wait-for-it.sh elasticsearch:9200 -t 30 && uvicorn local_graphql_server:app --host 0.0.0.0 --port 5000 --reload" expose: - 5000 ports: diff --git a/tests/client.py b/tests/client.py index 5f5346f0a..908709acf 100644 --- a/tests/client.py +++ b/tests/client.py @@ -1,12 +1,16 @@ -import typing import json +import typing + from ariadne import graphql_sync from ariadne.constants import PLAYGROUND_HTML -from flask import Flask, request, jsonify, Response +from fastapi import FastAPI from munch import DefaultMunch +from starlette.requests import Request +from starlette.responses import JSONResponse, HTMLResponse + from dataall.base.api import get_executable_schema -from dataall.base.context import set_context, dispose_context, RequestContext from dataall.base.config import config +from dataall.base.context import set_context, dispose_context, RequestContext config.set_property('cdk_proxy_url', 'mock_url') @@ -22,40 +26,41 @@ def query( groups: typing.List[str] = ['-'], **variables, ): - response: Response = self.client.post( + if not isinstance(username, str): + username = username.username + response = self.client.post( '/graphql', json={'query': f""" {query} """, 'variables': variables}, headers={'groups': json.dumps(groups), 'username': username}, ) - return DefaultMunch.fromDict(response.get_json()) + return DefaultMunch.fromDict(json.loads(response.text)) def create_app(db): - app = Flask('tests') + app = FastAPI(debug=True) schema = get_executable_schema() - @app.route('/', methods=['OPTIONS']) + @app.options('/') def opt(): # On GET request serve GraphQL Playground # You don't need to provide Playground if you don't want to # but keep on mind this will not prohibit clients from # exploring your API using desktop GraphQL Playground app. - return '

      Hello

      ', 200 + return HTMLResponse('

      Hello

      ') - @app.route('/graphql', methods=['GET']) + @app.get('/graphql') def graphql_playground(): # On GET request serve GraphQL Playground # You don't need to provide Playground if you don't want to # but keep on mind this will not prohibit clients from # exploring your API using desktop GraphQL Playground app. - return PLAYGROUND_HTML, 200 + return HTMLResponse(PLAYGROUND_HTML) - @app.route('/graphql', methods=['POST']) - def graphql_server(): + @app.post('/graphql') + async def graphql_server(request: Request): # GraphQL queries are always sent as POST # Note: Passing the request to the context is optional. - # In Flask, the current request is always accessible as flask.request - data = request.get_json() + data = await request.json() username = request.headers.get('Username', 'anonym') user_id = request.headers.get('Username', 'anonym_id') @@ -72,6 +77,6 @@ def graphql_server(): dispose_context() status_code = 200 if success else 400 - return jsonify(result), status_code + return JSONResponse(result, status_code) return app diff --git a/tests/conftest.py b/tests/conftest.py index 44a12aa71..78c96a26e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,6 +3,8 @@ from unittest.mock import MagicMock import pytest +from starlette.testclient import TestClient + from dataall.base.db import get_engine, create_schema_and_tables, Engine from dataall.base.loader import load_modules, ImportMode, list_loaded_modules from glob import glob @@ -72,7 +74,7 @@ def app(db): @pytest.fixture(scope='module') def client(app) -> ClientWrapper: - with app.test_client() as client: + with TestClient(app) as client: yield ClientWrapper(client) diff --git a/tests/requirements.txt b/tests/requirements.txt index 87c1432ef..85e3fb149 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -3,5 +3,6 @@ pytest==7.3.1 pytest-cov==3.0.0 pytest-mock==3.6.1 pytest-dependency==0.5.1 +httpx==0.27.2 werkzeug==3.0.3 assertpy==1.1.0 \ No newline at end of file diff --git a/tests_new/integration_tests/requirements.txt b/tests_new/integration_tests/requirements.txt index ced7a58ef..2225c80dc 100644 --- a/tests_new/integration_tests/requirements.txt +++ b/tests_new/integration_tests/requirements.txt @@ -1,5 +1,5 @@ assertpy==1.1.0 -boto3==1.26.95 +boto3==1.35.26 munch==2.5.0 pytest==7.3.1 pytest-cov==3.0.0 From c903d99658d452cd64a37e949b94f808aad2e9e8 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Thu, 26 Sep 2024 15:22:31 +0300 Subject: [PATCH 089/188] don't import dataall from integtest (#1581) ### Feature or Bugfix - Bugfix ### Detail We shouldn't be importing data.all code into integ tests. 1. Integ tests are yet another client that don't and shouldn't know anything about data.all svc internals 2. By doing this we need to install the entire dependency tree of the backend (i.e currently tests are failing because ariadne dep is missing. ``` /root/.pyenv/versions/3.11.9/lib/python3.11/importlib/__init__.py:126: in import_module return _bootstrap._gcd_import(name[level:], package, level) :1204: in _gcd_import ??? :1176: in _find_and_load ??? :1147: in _find_and_load_unlocked ??? :690: in _load_unlocked ??? env/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:172: in exec_module exec(co, module.__dict__) tests_new/integration_tests/modules/share_base/conftest.py:3: in from tests_new.integration_tests.aws_clients.iam import IAMClient tests_new/integration_tests/aws_clients/iam.py:7: in from dataall.base.aws.parameter_store import ParameterStoreManager backend/dataall/__init__.py:1: in from . import core, version backend/dataall/core/__init__.py:3: in from dataall.core import permissions, stacks, groups, environment, organizations, tasks, vpc, resource_lock backend/dataall/core/permissions/__init__.py:1: in from dataall.core.permissions import api backend/dataall/core/permissions/api/__init__.py:1: in from dataall.core.permissions.api import input_types, queries, resolvers, types, mutations backend/dataall/core/permissions/api/input_types.py:1: in from dataall.base.api import gql backend/dataall/base/api/__init__.py:3: in from ariadne import ( E ModuleNotFoundError: No module named 'ariadne' ``` 3. Initialisation of data.all is convoluted and there are actions (i.e accessing Params) being done at import time ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../integration_tests/aws_clients/iam.py | 2 - .../modules/share_base/conftest.py | 18 +++---- .../share_base/test_new_crossacc_s3_share.py | 52 ++++++++----------- .../modules/share_base/utils.py | 16 +++--- 4 files changed, 37 insertions(+), 51 deletions(-) diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py index 0e0a13b88..8a3d6b361 100644 --- a/tests_new/integration_tests/aws_clients/iam.py +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -4,8 +4,6 @@ import boto3 -from dataall.base.aws.parameter_store import ParameterStoreManager - log = logging.getLogger(__name__) diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/share_base/conftest.py index 50c014531..3abc1bd9c 100644 --- a/tests_new/integration_tests/modules/share_base/conftest.py +++ b/tests_new/integration_tests/modules/share_base/conftest.py @@ -2,7 +2,6 @@ from tests_new.integration_tests.aws_clients.iam import IAMClient from tests_new.integration_tests.core.environment.queries import add_consumption_role, remove_consumption_role -from dataall.modules.shares_base.services.shares_enums import PrincipalType from tests_new.integration_tests.modules.share_base.queries import ( create_share_object, delete_share_object, @@ -10,7 +9,6 @@ revoke_share_items, ) from tests_new.integration_tests.modules.share_base.utils import check_share_ready -from dataall.modules.shares_base.services.shares_enums import ShareItemStatus test_cons_role_name = 'dataall-test-ShareTestConsumptionRole' @@ -18,10 +16,10 @@ def revoke_all_possible(client, shareUri): share = get_share_object(client, shareUri, {'isShared': True}) statuses_can_delete = [ - ShareItemStatus.PendingApproval.value, - ShareItemStatus.Revoke_Succeeded.value, - ShareItemStatus.Share_Failed.value, - ShareItemStatus.Share_Rejected.value, + 'PendingApproval', + 'Revoke_Succeeded', + 'Share_Failed', + 'Share_Rejected', ] shareItemUris = [item.shareItemUri for item in share['items'].nodes if item.status not in statuses_can_delete] @@ -71,7 +69,7 @@ def session_share_1( environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, principalId=group5, - principalType=PrincipalType.Group.value, + principalType='Group', requestPurpose='test create share object', attachMissingPolicies=True, permissions=['Read'], @@ -97,7 +95,7 @@ def session_share_2( environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, principalId=group5, - principalType=PrincipalType.Group.value, + principalType='Group', requestPurpose='test create share object', attachMissingPolicies=True, permissions=['Read'], @@ -125,7 +123,7 @@ def session_share_consrole_1( environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, principalId=consumption_role_1.consumptionRoleUri, - principalType=PrincipalType.ConsumptionRole.value, + principalType='ConsumptionRole', requestPurpose='test create share object', attachMissingPolicies=True, permissions=['Read'], @@ -152,7 +150,7 @@ def session_share_consrole_2( environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, principalId=consumption_role_1.consumptionRoleUri, - principalType=PrincipalType.ConsumptionRole.value, + principalType='ConsumptionRole', requestPurpose='test create share object', attachMissingPolicies=True, permissions=['Read'], diff --git a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py index fad194fe5..035d2e254 100644 --- a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py +++ b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py @@ -1,15 +1,9 @@ import pytest from assertpy import assert_that -from tests_new.integration_tests.modules.s3_datasets.queries import get_folder from tests_new.integration_tests.aws_clients.athena import AthenaClient -from dataall.modules.shares_base.services.shares_enums import ( - ShareItemStatus, - ShareObjectStatus, - ShareItemHealthStatus, - ShareableType, -) from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client +from tests_new.integration_tests.modules.s3_datasets.queries import get_folder from tests_new.integration_tests.modules.share_base.conftest import clean_up_share from tests_new.integration_tests.modules.share_base.queries import ( create_share_object, @@ -33,9 +27,9 @@ ) ALL_S3_SHARABLE_TYPES_NAMES = [ - ShareableType.Table.name, - ShareableType.StorageLocation.name, - ShareableType.S3Bucket.name, + 'Table', + 'StorageLocation', + 'S3Bucket', ] @@ -52,7 +46,7 @@ def test_create_and_delete_share_object(client5, session_cross_acc_env_1, sessio attachMissingPolicies=True, permissions=['Read'], ) - assert_that(share.status).is_equal_to(ShareObjectStatus.Draft.value) + assert_that(share.status).is_equal_to('Draft') delete_share_object(client5, share.shareUri) @@ -104,7 +98,7 @@ def test_add_share_items(client5, session_cross_acc_env_1, session_s3_dataset1, items = updated_share['items'].nodes assert_that(items).is_length(1) assert_that(items[0].shareItemUri).is_equal_to(share_item_uri) - assert_that(items[0].status).is_equal_to(ShareItemStatus.PendingApproval.value) + assert_that(items[0].status).is_equal_to('PendingApproval') clean_up_share(client5, share.shareUri) @@ -134,7 +128,7 @@ def test_reject_share(client1, client5, session_cross_acc_env_1, session_s3_data reject_share_object(client1, share.shareUri) updated_share = get_share_object(client1, share.shareUri) - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Rejected.value) + assert_that(updated_share.status).is_equal_to('Rejected') change_request_purpose = update_share_reject_reason(client1, share.shareUri, 'new purpose') assert_that(change_request_purpose).is_true() @@ -163,9 +157,9 @@ def test_submit_object(client5, share_params_all): submit_share_object(client5, share.shareUri) updated_share = get_share_object(client5, share.shareUri) if dataset.autoApprovalEnabled: - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Approved.value) + assert_that(updated_share.status).is_equal_to('Approved') else: - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Submitted.value) + assert_that(updated_share.status).is_equal_to('Submitted') @pytest.mark.dependency(name='share_approved', depends=['share_submitted']) @@ -174,9 +168,9 @@ def test_approve_share(client1, share_params_main): approve_share_object(client1, share.shareUri) updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Approved.value) + assert_that(updated_share.status).is_equal_to('Approved') items = updated_share['items'].nodes - assert_that(items).extracting('status').contains_only(ShareItemStatus.Share_Approved.value) + assert_that(items).extracting('status').contains_only('Share_Approved') @pytest.mark.dependency(name='share_succeeded', depends=['share_approved']) @@ -186,10 +180,10 @@ def test_share_succeeded(client1, share_params_main): updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) items = updated_share['items'].nodes - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Processed.value) + assert_that(updated_share.status).is_equal_to('Processed') for item in items: - assert_that(item.status).is_equal_to(ShareItemStatus.Share_Succeeded.value) - assert_that(item.healthStatus).is_equal_to(ShareItemHealthStatus.Healthy.value) + assert_that(item.status).is_equal_to('Share_Succeeded') + assert_that(item.healthStatus).is_equal_to('Healthy') assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) @@ -203,8 +197,8 @@ def test_verify_share_items(client1, share_params_main): check_share_items_verified(client1, share.shareUri) updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) items = updated_share['items'].nodes - assert_that(items).extracting('status').contains_only(ShareItemStatus.Share_Succeeded.value) - assert_that(items).extracting('healthStatus').contains_only(ShareItemHealthStatus.Healthy.value) + assert_that(items).extracting('status').contains_only('Share_Succeeded') + assert_that(items).extracting('healthStatus').contains_only('Healthy') assert_that(items).extracting('lastVerificationTime').does_not_contain(*times) @@ -240,15 +234,15 @@ def test_check_item_access(client5, session_cross_acc_env_1_aws_client, share_pa ) for item in items: - if item.itemType == ShareableType.Table.name: + if item.itemType == 'Table': # nosemgrep-next-line:noexec query = 'SELECT * FROM {}.{}'.format(glue_db, item.itemName) state = athena_client.execute_query(query, workgroup, athena_workgroup_output_location) assert_that(state).is_equal_to('SUCCEEDED') - elif item.itemType == ShareableType.S3Bucket.name: + elif item.itemType == 'S3Bucket': assert_that(s3_client.bucket_exists(item.itemName)).is_not_none() assert_that(s3_client.list_bucket_objects(item.itemName)).is_not_none() - elif item.itemType == ShareableType.StorageLocation.name: + elif item.itemType == 'StorageLocation': folder = get_folder(client5, item.itemUri) assert_that( s3_client.list_accesspoint_folder_objects(access_point_arn, folder.S3Prefix + '/') @@ -266,10 +260,10 @@ def test_revoke_share(client1, share_params_main): revoke_share_items(client1, share.shareUri, shareItemUris) updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Revoked.value) + assert_that(updated_share.status).is_equal_to('Revoked') items = updated_share['items'].nodes - assert_that(items).extracting('status').contains_only(ShareItemStatus.Revoke_Approved.value) + assert_that(items).extracting('status').contains_only('Revoke_Approved') assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) @@ -280,6 +274,6 @@ def test_revoke_succeeded(client1, share_params_main): updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) items = updated_share['items'].nodes - assert_that(updated_share.status).is_equal_to(ShareObjectStatus.Processed.value) - assert_that(items).extracting('status').contains_only(ShareItemStatus.Revoke_Succeeded.value) + assert_that(updated_share.status).is_equal_to('Processed') + assert_that(items).extracting('status').contains_only('Revoke_Succeeded') assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) diff --git a/tests_new/integration_tests/modules/share_base/utils.py b/tests_new/integration_tests/modules/share_base/utils.py index 78ce7b1fc..e1eaee334 100644 --- a/tests_new/integration_tests/modules/share_base/utils.py +++ b/tests_new/integration_tests/modules/share_base/utils.py @@ -1,30 +1,26 @@ import json -import re import boto3 from tests_new.integration_tests.aws_clients.sts import StsClient +from tests_new.integration_tests.core.environment.queries import get_environment_access_token from tests_new.integration_tests.modules.share_base.queries import get_share_object from tests_new.integration_tests.utils import poller -from dataall.modules.shares_base.services.shares_enums import ShareObjectStatus, ShareItemHealthStatus -from tests_new.integration_tests.core.environment.queries import get_environment_access_token def is_share_in_progress(share): return share.status in [ - ShareObjectStatus.Share_In_Progress.value, - ShareObjectStatus.Revoke_In_Progress.value, - ShareObjectStatus.Approved.value, - ShareObjectStatus.Revoked.value, + 'Share_In_Progress', + 'Revoke_In_Progress', + 'Approved', + 'Revoked', ] def is_all_items_verified(share): items = share['items'].nodes statuses = [item.healthStatus for item in items] - return not ( - ShareItemHealthStatus.PendingVerify.value in statuses or ShareItemHealthStatus.PendingReApply.value in statuses - ) + return not ('PendingVerify' in statuses or 'PendingReApply' in statuses) @poller(check_success=lambda share: not is_share_in_progress(share), timeout=600) From a535c9c13e5139b0473dc9b8ca4a76b6bdfb13bb Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Thu, 26 Sep 2024 16:59:18 +0300 Subject: [PATCH 090/188] increase codebuild timeout for integration tests (#1584) ### Feature or Bugfix - Bugfix ### Detail Integration tests take more than 1hr to run hence the codebuild job is timing out, increasing it to 4hrs ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/stacks/pipeline.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index add56e890..427a117c5 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -738,6 +738,7 @@ def set_approval_tests_stage( role=self.expanded_codebuild_role.without_policy_updates(), vpc=self.vpc, security_groups=[self.codebuild_sg], + timeout=Duration.hours(4), ) ) From 0b1295a08918ea663a6e94ef81383b937dfea1fb Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Fri, 27 Sep 2024 10:06:50 +0100 Subject: [PATCH 091/188] Fialed test fix: rename fixture session_cross_acc_env_1 (#1586) ### Feature or Bugfix - Bugfix ### Detail - fixed wrong fixture name ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../integration_tests/core/environment/test_environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests_new/integration_tests/core/environment/test_environment.py b/tests_new/integration_tests/core/environment/test_environment.py index 28e487230..256fd3327 100644 --- a/tests_new/integration_tests/core/environment/test_environment.py +++ b/tests_new/integration_tests/core/environment/test_environment.py @@ -119,5 +119,5 @@ def test_add_consumption_role_unauthorized(client2, session_env2, group1): ).contains('UnauthorizedOperation', 'ADD_ENVIRONMENT_CONSUMPTION_ROLES', env_uri) -def test_create_crossaccount_env(client5, persistent_cross_acc_env_1, group5): - assert_that(persistent_cross_acc_env_1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') +def test_create_crossaccount_env(client5, session_cross_acc_env_1, group5): + assert_that(session_cross_acc_env_1.stack.status).is_in('CREATE_COMPLETE', 'UPDATE_COMPLETE') From 4b67986afc50f581b33313c7d605f0ebc3682aab Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 27 Sep 2024 13:59:41 +0200 Subject: [PATCH 092/188] Fix wrong environment in the verification of redshift role (#1587) ### Feature or Bugfix - Bugfix ### Detail We were validating if the Redshift role for a Redshift share request existed in the dataset account, while we should be validating if it exists in the target account (share.environmentUri) ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../services/redshift_table_share_validator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py index f46a919ae..a0f87a439 100644 --- a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py @@ -48,7 +48,7 @@ def validate_share_object_create( @staticmethod def validate_share_object_submit(session, dataset, share) -> bool: - environment = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + environment = EnvironmentService.get_environment_by_uri(session, share.environmentUri) RedshiftTableValidator._validate_redshift_role( session=session, environment=environment, @@ -60,7 +60,7 @@ def validate_share_object_submit(session, dataset, share) -> bool: @staticmethod def validate_share_object_approve(session, dataset, share) -> bool: - environment = EnvironmentService.get_environment_by_uri(session, dataset.environmentUri) + environment = EnvironmentService.get_environment_by_uri(session, share.environmentUri) RedshiftTableValidator._validate_redshift_role( session=session, environment=environment, From 1e2c3888d6b056e5e075137619423f5ceb337e62 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Mon, 30 Sep 2024 10:13:43 +0100 Subject: [PATCH 093/188] Metadata form 7: Access control and deletion behaviour (#1540) ### Feature or Bugfix - Feature ### Detail - When entity is deleted all attached MF are deleted - When Org or Env is deleted MF with visibility in this org|env is deleted. And all connected attached MFs - Resource policies: CREATE_METADATA_FORM (create MF with visibility inside this entity), ATTACH_METADATA_FORM - Migrations for entity owners to have all permissions - Triggers to delete dependencies for MF deletion and entity deletion ### Relates - #1541 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../services/resource_policy_service.py | 1 + .../modules/metadata_forms/api/queries.py | 9 ++ .../modules/metadata_forms/api/resolvers.py | 4 + .../db/metadata_form_repository.py | 33 ++-- .../attached_metadata_form_service.py | 22 ++- .../services/metadata_form_permissions.py | 51 +++++- .../services/metadata_form_service.py | 55 +++++-- .../services/redshift_dataset_service.py | 1 + .../s3_datasets/services/dataset_service.py | 1 - .../versions/075d344ae2cc_mf_triggers.py | 153 ++++++++++++++++++ ...f31999_backfill_MF_resource_permissions.py | 127 +++++++++++++++ .../852cdf6cf1e0_add_redshift_datasets.py | 7 +- .../f87aecc36d39_attached_field_type_enum.py | 2 +- .../Environments/views/EnvironmentView.js | 1 - .../components/metadataAttachment.js | 20 ++- .../getMetadataFormEntityPermissions.js | 12 ++ .../modules/Metadata_Forms/services/index.js | 1 + .../Organizations/views/OrganizationView.js | 1 - .../modules/S3_Datasets/views/DatasetView.js | 6 +- 19 files changed, 469 insertions(+), 38 deletions(-) create mode 100644 backend/migrations/versions/075d344ae2cc_mf_triggers.py create mode 100644 backend/migrations/versions/427db8f31999_backfill_MF_resource_permissions.py create mode 100644 frontend/src/modules/Metadata_Forms/services/getMetadataFormEntityPermissions.js diff --git a/backend/dataall/core/permissions/services/resource_policy_service.py b/backend/dataall/core/permissions/services/resource_policy_service.py index 95de63743..c39c354d4 100644 --- a/backend/dataall/core/permissions/services/resource_policy_service.py +++ b/backend/dataall/core/permissions/services/resource_policy_service.py @@ -217,6 +217,7 @@ def get_resource_policy_permissions(session, group_uri, resource_uri) -> List[Re raise exceptions.RequiredParameter(param_name='group_uri') if not resource_uri: raise exceptions.RequiredParameter(param_name='resource_uri') + policy = ResourcePolicyRepository.find_resource_policy( session=session, group_uri=group_uri, diff --git a/backend/dataall/modules/metadata_forms/api/queries.py b/backend/dataall/modules/metadata_forms/api/queries.py index 4458e3860..e9385e091 100644 --- a/backend/dataall/modules/metadata_forms/api/queries.py +++ b/backend/dataall/modules/metadata_forms/api/queries.py @@ -5,6 +5,7 @@ get_metadata_form, get_attached_metadata_form, list_attached_forms, + get_entity_metadata_form_permissions, ) listUserMetadataForms = gql.QueryField( @@ -47,3 +48,11 @@ resolver=get_attached_metadata_form, test_scope='MetadataForm', ) + +getEntityMetadataFormPermissions = gql.QueryField( + name='getEntityMetadataFormPermissions', + args=[gql.Argument('entityUri', gql.NonNullableType(gql.String))], + type=gql.ArrayType(gql.String), + resolver=get_entity_metadata_form_permissions, + test_scope='MetadataForm', +) diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 390a0938f..4e03e6d6c 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -94,3 +94,7 @@ def has_tenant_permissions_for_metadata_forms(context: Context, source: Metadata def resolve_metadata_form_field(context: Context, source: AttachedMetadataFormField): return MetadataFormService.get_metadata_form_field_by_uri(uri=source.fieldUri) + + +def get_entity_metadata_form_permissions(context: Context, source, entityUri): + return MetadataFormService.get_mf_permissions(entityUri=entityUri) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index cd404e396..8dcf55f1b 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -70,6 +70,9 @@ def query_user_metadata_forms(session, is_da_admin, groups, env_uris, org_uris, :param filter: """ + env_uris = env_uris or [] + org_uris = org_uris or [] + query = session.query(MetadataForm) if not is_da_admin: @@ -141,16 +144,22 @@ def query_entity_metadata_forms( entity_orgs_uris = entity_orgs_uris or [] entity_envs_uris = entity_envs_uris or [] - orgs = list(set(user_org_uris).intersection(set(entity_orgs_uris))) - envs = list(set(user_env_uris).intersection(set(entity_envs_uris))) - - query = MetadataFormRepository.query_user_metadata_forms(session, is_da_admin, groups, envs, orgs, filter) - - if not orgs: - query = query.filter(MetadataForm.visibility != MetadataFormVisibility.Organization.value) + query = MetadataFormRepository.query_user_metadata_forms( + session, is_da_admin, groups, user_env_uris, user_org_uris, filter + ) - if not envs: - query = query.filter(MetadataForm.visibility != MetadataFormVisibility.Environment.value) + query = query.filter( + and_( + or_( + MetadataForm.visibility != MetadataFormVisibility.Organization.value, + MetadataForm.homeEntity.in_(entity_orgs_uris), + ), + or_( + MetadataForm.visibility != MetadataFormVisibility.Environment.value, + MetadataForm.homeEntity.in_(entity_envs_uris), + ), + ) + ) query = MetadataFormRepository.exclude_attached(session, query, filter) return query.order_by(MetadataForm.name) @@ -247,3 +256,9 @@ def query_attached_metadata_forms(session, is_da_admin, groups, user_envs_uris, if filter and filter.get('metadataFormUri'): query = query.filter(AttachedMetadataForm.metadataFormUri == filter.get('metadataFormUri')) return query + + @staticmethod + def query_all_attached_metadata_forms_for_entity(session, entityUri, entityType): + return session.query(AttachedMetadataForm).filter( + and_(AttachedMetadataForm.entityType == entityType, AttachedMetadataForm.entityUri == entityUri) + ) diff --git a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py index 41f6067b4..005e9a45b 100644 --- a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py @@ -1,10 +1,9 @@ from dataall.base.context import get_context from dataall.base.db import exceptions, paginate -from dataall.core.environment.db.environment_repositories import EnvironmentRepository -from dataall.core.organizations.db.organization_repositories import OrganizationRepository -from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository from dataall.modules.metadata_forms.services.metadata_form_access_service import MetadataFormAccessService +from dataall.modules.metadata_forms.services.metadata_form_permissions import ATTACH_METADATA_FORM class AttachedMetadataFormValidationService: @@ -33,15 +32,22 @@ def validate_enrich_fields_params(mf_fields, data): class AttachedMetadataFormService: @staticmethod + def _get_entity_uri(data): + return data.get('entityUri') + + @staticmethod + @ResourcePolicyService.has_resource_permission( + ATTACH_METADATA_FORM, parent_resource=_get_entity_uri, param_name='data' + ) def create_attached_metadata_form(uri, data): AttachedMetadataFormValidationService.validate_filled_form_params(uri, data) - with get_context().db_engine.scoped_session() as session: + context = get_context() + with context.db_engine.scoped_session() as session: mf = MetadataFormRepository.get_metadata_form(session, uri) if not mf: raise exceptions.ObjectNotFound('MetadataForm', uri) mf_fields = MetadataFormRepository.get_metadata_form_fields(session, uri) AttachedMetadataFormValidationService.validate_enrich_fields_params(mf_fields, data) - amf = MetadataFormRepository.create_attached_metadata_form(session, uri, data) for f in data.get('fields'): MetadataFormRepository.create_attached_metadata_form_field( @@ -74,7 +80,11 @@ def list_attached_forms(filter=None): ).to_dict() @staticmethod + @ResourcePolicyService.has_resource_permission( + ATTACH_METADATA_FORM, parent_resource=_get_entity_uri, param_name='data' + ) def delete_attached_metadata_form(uri): mf = AttachedMetadataFormService.get_attached_metadata_form(uri) - with get_context().db_engine.scoped_session() as session: + context = get_context() + with context.db_engine.scoped_session() as session: return session.delete(mf) diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py b/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py index f5801f6e3..883977a16 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_permissions.py @@ -1,6 +1,55 @@ +from dataall.core.permissions.services.environment_permissions import ENVIRONMENT_INVITED, ENVIRONMENT_ALL +from dataall.core.permissions.services.organization_permissions import ( + ORGANIZATION_ALL, + ORGANIZATION_INVITED_DESCRIPTIONS, +) from dataall.core.permissions.services.tenant_permissions import TENANT_ALL, TENANT_ALL_WITH_DESC +from dataall.core.permissions.services.resources_permissions import RESOURCES_ALL, RESOURCES_ALL_WITH_DESC +from dataall.modules.s3_datasets.services.dataset_permissions import DATASET_WRITE, DATASET_ALL - +# ------------------------TENANT----------------------------------- MANAGE_METADATA_FORMS = 'MANAGE_METADATA_FORMS' TENANT_ALL.append(MANAGE_METADATA_FORMS) TENANT_ALL_WITH_DESC[MANAGE_METADATA_FORMS] = 'Manage metadata forms' + +# ------------------------RESOURCE--------------------------------- +# permissions to attach MF to the entity, ot make the entity the visibility base for MF +# these permissions are attached to Organizations, Environments, Datasets etc. +ATTACH_METADATA_FORM = 'ATTACH_METADATA_FORM' +CREATE_METADATA_FORM = 'CREATE_METADATA_FORM' +ALL_METADATA_FORMS_ENTITY_PERMISSIONS = [ATTACH_METADATA_FORM, CREATE_METADATA_FORM] +RESOURCES_ALL.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) +RESOURCES_ALL_WITH_DESC[CREATE_METADATA_FORM] = 'Create metadata form within this visibility scope' +RESOURCES_ALL_WITH_DESC[ATTACH_METADATA_FORM] = 'Attach metadata form' + +ORGANIZATION_ALL.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) +ORGANIZATION_INVITED_DESCRIPTIONS[CREATE_METADATA_FORM] = 'Create metadata form within this visibility scope' +ORGANIZATION_INVITED_DESCRIPTIONS[ATTACH_METADATA_FORM] = 'Attach metadata form' + +ENVIRONMENT_INVITED.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) +ENVIRONMENT_ALL.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) + +DATASET_WRITE.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) +DATASET_ALL.extend(ALL_METADATA_FORMS_ENTITY_PERMISSIONS) +# ------------------------METADATA FORM---------------------------- +# permissions to change and delete metadata forms +# these permissions are attached to MFs +UPDATE_METADATA_FORM_FIELD = 'UPDATE_METADATA_FORM_FIELD' +DELETE_METADATA_FORM_FIELD = 'DELETE_METADATA_FORM_FIELD' +DELETE_METADATA_FORM = 'DELETE_METADATA_FORM' +EDIT_METADATA_FORM = 'EDIT_METADATA_FORM' + +METADATA_FORM_PERMISSIONS_ALL = [ + UPDATE_METADATA_FORM_FIELD, + DELETE_METADATA_FORM_FIELD, + DELETE_METADATA_FORM, + EDIT_METADATA_FORM, +] + +METADATA_FORM_EDIT_PERMISSIONS = [ + EDIT_METADATA_FORM, + UPDATE_METADATA_FORM_FIELD, + DELETE_METADATA_FORM_FIELD, +] + +RESOURCES_ALL.extend(METADATA_FORM_PERMISSIONS_ALL) diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index ac4ddbb91..5ac4af784 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -2,7 +2,9 @@ from dataall.base.db import exceptions, paginate from dataall.core.organizations.db.organization_repositories import OrganizationRepository from dataall.core.environment.db.environment_repositories import EnvironmentRepository -from dataall.core.permissions.services.tenant_policy_service import TenantPolicyValidationService, TenantPolicyService +from dataall.core.permissions.db.resource_policy.resource_policy_repositories import ResourcePolicyRepository +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService from dataall.modules.metadata_forms.db.enums import ( MetadataFormVisibility, MetadataFormFieldType, @@ -10,7 +12,14 @@ from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository from dataall.modules.metadata_forms.services.metadata_form_access_service import MetadataFormAccessService -from dataall.modules.metadata_forms.services.metadata_form_permissions import MANAGE_METADATA_FORMS +from dataall.modules.metadata_forms.services.metadata_form_permissions import ( + MANAGE_METADATA_FORMS, + DELETE_METADATA_FORM, + DELETE_METADATA_FORM_FIELD, + UPDATE_METADATA_FORM_FIELD, + CREATE_METADATA_FORM, + ALL_METADATA_FORMS_ENTITY_PERMISSIONS, +) class MetadataFormParamValidationService: @@ -91,7 +100,20 @@ class MetadataFormService: @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) def create_metadata_form(data): MetadataFormParamValidationService.validate_create_form_params(data) - with get_context().db_engine.scoped_session() as session: + context = get_context() + with context.db_engine.scoped_session() as session: + if data.get('visibility') in [ + MetadataFormVisibility.Organization.value, + MetadataFormVisibility.Environment.value, + ]: + ResourcePolicyService.check_user_resource_permission( + session=session, + username=context.username, + groups=context.groups, + resource_uri=data.get('homeEntity'), + permission_name=CREATE_METADATA_FORM, + ) + form = MetadataFormRepository.create_metadata_form(session, data) return form @@ -104,7 +126,7 @@ def get_metadata_form_by_uri(uri): # toDo: deletion logic @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('DELETE') + @MetadataFormAccessService.can_perform(DELETE_METADATA_FORM) def delete_metadata_form_by_uri(uri): if mf := MetadataFormService.get_metadata_form_by_uri(uri): with get_context().db_engine.scoped_session() as session: @@ -181,7 +203,7 @@ def get_metadata_form_field_by_uri(uri): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('ADD FIELD') + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def create_metadata_form_field(uri, data): MetadataFormParamValidationService.validate_create_field_params(data) with get_context().db_engine.scoped_session() as session: @@ -189,7 +211,7 @@ def create_metadata_form_field(uri, data): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('ADD FIELDS') + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def create_metadata_form_fields(uri, data_arr): fields = [] for data in data_arr: @@ -198,7 +220,7 @@ def create_metadata_form_fields(uri, data_arr): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('DELETE FIELD') + @MetadataFormAccessService.can_perform(DELETE_METADATA_FORM_FIELD) def delete_metadata_form_field(uri, fieldUri): mf = MetadataFormService.get_metadata_form_field_by_uri(fieldUri) with get_context().db_engine.scoped_session() as session: @@ -206,7 +228,7 @@ def delete_metadata_form_field(uri, fieldUri): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('UPDATE FIELDS') + @MetadataFormAccessService.can_perform('UPDATE_METADATA_FORM_FIELD') def batch_metadata_form_field_update(uri, data): to_delete = [] to_update = [] @@ -238,8 +260,23 @@ def batch_metadata_form_field_update(uri, data): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('UPDATE FIELD') + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def update_metadata_form_field(uri, fieldUri, data): with get_context().db_engine.scoped_session() as session: MetadataFormParamValidationService.validate_update_field_params(uri, data) return MetadataFormRepository.update_metadata_form_field(session, fieldUri, data) + + @staticmethod + def get_mf_permissions(entityUri): + context = get_context() + result_permissions = [] + with context.db_engine.scoped_session() as session: + for permissions in ALL_METADATA_FORMS_ENTITY_PERMISSIONS: + if ResourcePolicyRepository.has_user_resource_permission( + session=session, + groups=context.groups, + permission_name=permissions, + resource_uri=entityUri, + ): + result_permissions.append(permissions) + return result_permissions diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py index 2edf3724c..f578894b0 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -193,6 +193,7 @@ def delete_redshift_dataset(uri): RedshiftDatasetService._delete_dataset_term_links(session, uri) VoteRepository.delete_votes(session, dataset.datasetUri, VOTE_REDSHIFT_DATASET_NAME) session.delete(dataset) + session.commit() return True diff --git a/backend/dataall/modules/s3_datasets/services/dataset_service.py b/backend/dataall/modules/s3_datasets/services/dataset_service.py index 14cfdc2fd..2e68eb951 100644 --- a/backend/dataall/modules/s3_datasets/services/dataset_service.py +++ b/backend/dataall/modules/s3_datasets/services/dataset_service.py @@ -22,7 +22,6 @@ from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.s3_datasets.db.dataset_bucket_repositories import DatasetBucketRepository from dataall.modules.shares_base.db.share_object_repositories import ShareObjectRepository -from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.vote.db.vote_repositories import VoteRepository from dataall.modules.s3_datasets.aws.glue_dataset_client import DatasetCrawler from dataall.modules.s3_datasets.aws.s3_dataset_client import S3DatasetClient diff --git a/backend/migrations/versions/075d344ae2cc_mf_triggers.py b/backend/migrations/versions/075d344ae2cc_mf_triggers.py new file mode 100644 index 000000000..35b1a9b5e --- /dev/null +++ b/backend/migrations/versions/075d344ae2cc_mf_triggers.py @@ -0,0 +1,153 @@ +"""mf_triggers + +Revision ID: 075d344ae2cc +Revises: 427db8f31999 +Create Date: 2024-09-13 13:12:16.951311 + +""" + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '075d344ae2cc' +down_revision = '427db8f31999' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.execute(""" + CREATE OR REPLACE FUNCTION org_delete_trigger_function() + RETURNS TRIGGER AS $$ + BEGIN + -- Delete from attached_metadata_form + DELETE FROM attached_metadata_form + WHERE "entityUri" = OLD."organizationUri" + AND "entityType" = 'Organization'; + + -- Delete from metadata_form + DELETE FROM metadata_form + WHERE "homeEntity" = OLD."organizationUri" + AND visibility = 'Organization-Wide'; + + RETURN OLD; + END; + $$ LANGUAGE plpgsql; + + -- Create the trigger for organization table + CREATE TRIGGER org_delete_trigger + BEFORE DELETE ON organization + FOR EACH ROW + EXECUTE FUNCTION org_delete_trigger_function(); + """) + + op.execute(""" + CREATE OR REPLACE FUNCTION env_delete_trigger_function() + RETURNS TRIGGER AS $$ + BEGIN + -- Delete from attached_metadata_form + DELETE FROM attached_metadata_form + WHERE "entityUri" = OLD."environmentUri" + AND "entityType" = 'Environment'; + + -- Delete from metadata_form + DELETE FROM metadata_form + WHERE "homeEntity" = OLD."environmentUri" + AND visibility = 'Environment-Wide'; + + RETURN OLD; + END; + $$ LANGUAGE plpgsql; + + -- Create the trigger for environment table + CREATE TRIGGER env_delete_trigger + BEFORE DELETE ON environment + FOR EACH ROW + EXECUTE FUNCTION env_delete_trigger_function(); + """) + + op.execute(""" + CREATE OR REPLACE FUNCTION dataset_delete_trigger_function() + RETURNS TRIGGER AS $$ + BEGIN + -- Delete from attached_metadata_form + DELETE FROM attached_metadata_form + WHERE "entityUri" = OLD."datasetUri" + AND "entityType" = 'Dataset'; + + RETURN OLD; + END; + $$ LANGUAGE plpgsql; + + -- Create the trigger for dataset table + CREATE TRIGGER dataset_delete_trigger + BEFORE DELETE ON dataset + FOR EACH ROW + EXECUTE FUNCTION dataset_delete_trigger_function(); + """) + + op.execute(""" + CREATE OR REPLACE FUNCTION metadata_form_delete_trigger_function() + RETURNS TRIGGER AS $$ + BEGIN + -- Delete from resource_permission_policy + DELETE FROM resource_policy_permission + WHERE "sid" in (SELECT sid from resource_policy where "resourceUri"=OLD.uri and "resourceType"='MetadataForm'); + DELETE FROM resource_policy where "resourceUri"=OLD.uri; + RETURN OLD; + END; + $$ LANGUAGE plpgsql; + + -- Create the trigger for dataset table + CREATE TRIGGER metadata_form_delete_trigger + BEFORE DELETE ON metadata_form + FOR EACH ROW + EXECUTE FUNCTION metadata_form_delete_trigger_function(); + """) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.execute( + """ + -- Drop the org_delete_trigger + DROP TRIGGER IF EXISTS org_delete_trigger ON organization; + + -- Drop the org_delete_trigger_function + DROP FUNCTION IF EXISTS org_delete_trigger_function; + """ + ) + + op.execute( + """ + -- Drop the env_delete_trigger + DROP TRIGGER IF EXISTS env_delete_trigger ON environment; + + -- Drop the env_delete_trigger_function + DROP FUNCTION IF EXISTS env_delete_trigger_function; + """ + ) + + op.execute( + """ + -- Drop the dataset_delete_trigger + DROP TRIGGER IF EXISTS dataset_delete_trigger ON dataset; + + -- Drop the dataset_delete_trigger_function + DROP FUNCTION IF EXISTS dataset_delete_trigger_function; + """ + ) + + op.execute( + """ + -- Drop the dataset_delete_trigger + DROP TRIGGER IF EXISTS metadata_form_delete_trigger ON metadata_form; + + -- Drop the dataset_delete_trigger_function + DROP FUNCTION IF EXISTS metadata_form_delete_trigger_function; + """ + ) + # ### end Alembic commands ### diff --git a/backend/migrations/versions/427db8f31999_backfill_MF_resource_permissions.py b/backend/migrations/versions/427db8f31999_backfill_MF_resource_permissions.py new file mode 100644 index 000000000..5209963e8 --- /dev/null +++ b/backend/migrations/versions/427db8f31999_backfill_MF_resource_permissions.py @@ -0,0 +1,127 @@ +"""backfill_MF_resource_permissions + +Revision ID: 427db8f31999 +Revises: f87aecc36d39 +Create Date: 2024-09-11 15:55:51.444403 + +""" + +from alembic import op +from sqlalchemy import orm + +from dataall.core.environment.db.environment_models import Environment +from dataall.core.organizations.db.organization_models import Organization +from dataall.core.permissions.api.enums import PermissionType +from dataall.core.permissions.services.permission_service import PermissionService +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService +from dataall.core.permissions.services.resources_permissions import RESOURCES_ALL_WITH_DESC +from dataall.modules.datasets_base.db.dataset_models import DatasetBase +from dataall.modules.metadata_forms.services.metadata_form_permissions import ( + ATTACH_METADATA_FORM, + CREATE_METADATA_FORM, + METADATA_FORM_PERMISSIONS_ALL, +) + +# revision identifiers, used by Alembic. +revision = '427db8f31999' +down_revision = 'f87aecc36d39' +branch_labels = None +depends_on = None + + +def get_session(): + bind = op.get_bind() + session = orm.Session(bind=bind) + return session + + +def upgrade(): + session = get_session() + + for perm in [ATTACH_METADATA_FORM, CREATE_METADATA_FORM] + METADATA_FORM_PERMISSIONS_ALL: + PermissionService.save_permission( + session, + name=perm, + description=RESOURCES_ALL_WITH_DESC.get(perm, perm), + permission_type=PermissionType.RESOURCE.name, + ) + print('Adding organization resource permissions...') + orgs = session.query(Organization).all() + for org in orgs: + ResourcePolicyService.attach_resource_policy( + session=session, + group=org.SamlGroupName, + resource_uri=org.organizationUri, + permissions=[ATTACH_METADATA_FORM, CREATE_METADATA_FORM], + resource_type=Organization.__name__, + ) + print('Adding environment resource permissions...') + envs = session.query(Environment).all() + for env in envs: + ResourcePolicyService.attach_resource_policy( + session=session, + group=env.SamlGroupName, + resource_uri=env.environmentUri, + permissions=[ATTACH_METADATA_FORM, CREATE_METADATA_FORM], + resource_type=Environment.__name__, + ) + print('Adding dataset resource permissions...') + datasets = session.query(DatasetBase).all() + for dataset in datasets: + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + resource_uri=dataset.datasetUri, + permissions=[ATTACH_METADATA_FORM], + resource_type=DatasetBase.__name__, + ) + + +def downgrade(): + bind = op.get_bind() + session = orm.Session(bind=bind) + all_environments = session.query(Environment).all() + for env in all_environments: + policies = ResourcePolicyService.find_resource_policies( + session=session, + group=env.SamlGroupName, + resource_uri=env.environmentUri, + resource_type=Environment.__name__, + permissions=[ATTACH_METADATA_FORM, CREATE_METADATA_FORM], + ) + for policy in policies: + for resource_pol_permission in policy.permissions: + if resource_pol_permission.permission.name in [ATTACH_METADATA_FORM, CREATE_METADATA_FORM]: + session.delete(resource_pol_permission) + session.commit() + + all_organizations = session.query(Organization).all() + for org in all_organizations: + policies = ResourcePolicyService.find_resource_policies( + session=session, + group=org.SamlGroupName, + resource_uri=org.organizationUri, + permissions=[ATTACH_METADATA_FORM, CREATE_METADATA_FORM], + resource_type=Organization.__name__, + ) + for policy in policies: + for resource_pol_permission in policy.permissions: + if resource_pol_permission.permission.name in [ATTACH_METADATA_FORM, CREATE_METADATA_FORM]: + session.delete(resource_pol_permission) + session.commit() + + datasets = session.query(DatasetBase).all() + for dataset in datasets: + policies = ResourcePolicyService.find_resource_policies( + session=session, + group=dataset.SamlAdminGroupName, + resource_uri=dataset.datasetUri, + permissions=[ATTACH_METADATA_FORM], + resource_type=DatasetBase.__name__, + ) + + for policy in policies: + for resource_pol_permission in policy.permissions: + if resource_pol_permission.permission.name in [ATTACH_METADATA_FORM, CREATE_METADATA_FORM]: + session.delete(resource_pol_permission) + session.commit() diff --git a/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py b/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py index 3e7a38c35..422d1ffbb 100644 --- a/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py +++ b/backend/migrations/versions/852cdf6cf1e0_add_redshift_datasets.py @@ -146,6 +146,7 @@ def downgrade(): permissions=ENVIRONMENT_REDSHIFT_ALL, ) for policy in policies: - for permission in policy.permissions: - session.delete(permission) - session.commit() + for resource_pol_permission in policy.permissions: + if resource_pol_permission.permission.name in ENVIRONMENT_REDSHIFT_ALL: + session.delete(resource_pol_permission) + session.commit() diff --git a/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py b/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py index 391b52f21..68ab75285 100644 --- a/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py +++ b/backend/migrations/versions/f87aecc36d39_attached_field_type_enum.py @@ -118,8 +118,8 @@ def upgrade(): def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.execute('DROP TYPE metadataformfieldtype') op.alter_column('attached_metadata_form_field', 'type', type_=sa.VARCHAR(), existing_nullable=True) + op.execute('DROP TYPE metadataformfieldtype CASCADE') # ### end Alembic commands ### # ### commands auto generated by Alembic - please adjust! ### diff --git a/frontend/src/modules/Environments/views/EnvironmentView.js b/frontend/src/modules/Environments/views/EnvironmentView.js index 790d97f57..de5d91ee1 100644 --- a/frontend/src/modules/Environments/views/EnvironmentView.js +++ b/frontend/src/modules/Environments/views/EnvironmentView.js @@ -275,7 +275,6 @@ const EnvironmentView = () => { )} {currentTab === 'teams' && } diff --git a/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js b/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js index e29f78675..1ac206290 100644 --- a/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js +++ b/frontend/src/modules/Metadata_Forms/components/metadataAttachment.js @@ -16,6 +16,7 @@ import { import { deleteAttachedMetadataForm, getAttachedMetadataForm, + getEntityMetadataFormPermissions, getMetadataForm, listAttachedMetadataForms, listEntityMetadataForms @@ -30,7 +31,7 @@ import DoNotDisturbAltOutlinedIcon from '@mui/icons-material/DoNotDisturbAltOutl import DeleteIcon from '@mui/icons-material/DeleteOutlined'; export const MetadataAttachment = (props) => { - const { entityType, entityUri, canEdit } = props; + const { entityType, entityUri } = props; const client = useClient(); const dispatch = useDispatch(); const [selectedForm, setSelectedForm] = useState(null); @@ -38,6 +39,7 @@ export const MetadataAttachment = (props) => { const [loadingFields, setLoadingFields] = useState(false); const [formsList, setFormsList] = useState([]); const [fields, setFields] = useState([]); + const [canEdit, setCanEdit] = useState(false); const [filter] = useState({ ...Defaults.filter, entityType: entityType, @@ -139,9 +141,25 @@ export const MetadataAttachment = (props) => { } }; + const getPermissions = async () => { + const response = await client.query( + getEntityMetadataFormPermissions(entityUri) + ); + if (!response.errors) { + setCanEdit( + response.data.getEntityMetadataFormPermissions.includes( + 'ATTACH_METADATA_FORM' + ) + ); + } + }; + useEffect(() => { if (client) { fetchList().catch((e) => dispatch({ type: SET_ERROR, error: e.message })); + getPermissions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); fetchAvailableForms().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); diff --git a/frontend/src/modules/Metadata_Forms/services/getMetadataFormEntityPermissions.js b/frontend/src/modules/Metadata_Forms/services/getMetadataFormEntityPermissions.js new file mode 100644 index 000000000..ca268874b --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/getMetadataFormEntityPermissions.js @@ -0,0 +1,12 @@ +import { gql } from 'apollo-boost'; + +export const getEntityMetadataFormPermissions = (entityUri) => ({ + variables: { + entityUri + }, + query: gql` + query getEntityMetadataFormPermissions($entityUri: String!) { + getEntityMetadataFormPermissions(entityUri: $entityUri) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/index.js b/frontend/src/modules/Metadata_Forms/services/index.js index 99e3b2312..74c383379 100644 --- a/frontend/src/modules/Metadata_Forms/services/index.js +++ b/frontend/src/modules/Metadata_Forms/services/index.js @@ -8,3 +8,4 @@ export * from './attachMetadataForm'; export * from './getAttachedMetadataForm'; export * from './listAttachedMetadataForms'; export * from './deleteAttachedMetadataForm'; +export * from './getMetadataFormEntityPermissions'; diff --git a/frontend/src/modules/Organizations/views/OrganizationView.js b/frontend/src/modules/Organizations/views/OrganizationView.js index ccc868a39..758409c46 100644 --- a/frontend/src/modules/Organizations/views/OrganizationView.js +++ b/frontend/src/modules/Organizations/views/OrganizationView.js @@ -237,7 +237,6 @@ const OrganizationView = () => { )} diff --git a/frontend/src/modules/S3_Datasets/views/DatasetView.js b/frontend/src/modules/S3_Datasets/views/DatasetView.js index 6f1800a64..f47b376c1 100644 --- a/frontend/src/modules/S3_Datasets/views/DatasetView.js +++ b/frontend/src/modules/S3_Datasets/views/DatasetView.js @@ -362,11 +362,7 @@ const DatasetView = () => { )} {currentTab === 'metadata' && ( - + )} {currentTab === 'overview' && ( From a3c7bb882f4948832bb27f3e8fc2d14fd6c1bdf9 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 1 Oct 2024 05:19:49 +0100 Subject: [PATCH 094/188] Integration Test CICD: iam role bugfix (#1589) ### Feature or Bugfix - Bugfix ### Detail - remove unused trust policy that cause problems - remove iam role after test ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../core/environment/cdk/environment_stack.py | 8 ++++- .../integration_tests/aws_clients/iam.py | 31 ++++++++++--------- .../modules/share_base/conftest.py | 1 + 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index b9935c9c9..451921ace 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -657,7 +657,13 @@ def create_integration_tests_role(self): self.test_role.add_to_policy( iam.PolicyStatement( - actions=['iam:GetRole', 'iam:CreateRole', 'iam:PutRolePolicy'], + actions=[ + 'iam:GetRole', + 'iam:CreateRole', + 'iam:DeleteRole', + 'iam:PutRolePolicy', + 'iam:DeleteRolePolicy', + ], effect=iam.Effect.ALLOW, resources=[f'arn:aws:iam::{self.account}:role/dataall-test-*'], ), diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py index 8a3d6b361..eb0e1b885 100644 --- a/tests_new/integration_tests/aws_clients/iam.py +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -8,6 +8,8 @@ class IAMClient: + CONSUMPTION_POLICY_NAME = 'ConsumptionPolicy' + def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', 'us-east-1')): self._client = session.client('iam', region_name=region) self._resource = session.resource('iam', region_name=region) @@ -21,13 +23,12 @@ def get_role(self, role_name): log.info(f'Error occurred: {e}') return None - @staticmethod - def get_tooling_account_id(): - session = boto3.Session() - param_client = session.client('ssm', os.environ.get('AWS_REGION', 'us-east-1')) - parameter_path = f"/dataall/{os.environ.get('ENVNAME', 'dev')}/toolingAccount" - toolingAccount = param_client.get_parameter(Name=parameter_path)['Parameter']['Value'] - return toolingAccount + def delete_role(self, role_name): + try: + self._client.delete_role(RoleName=role_name) + except Exception as e: + log.error(e) + raise e def create_role(self, account_id, role_name, test_role_name): policy_doc = { @@ -38,7 +39,6 @@ def create_role(self, account_id, role_name, test_role_name): 'Principal': { 'AWS': [ f'arn:aws:iam::{account_id}:root', - f'arn:aws:iam::{IAMClient.get_tooling_account_id()}:root', f'arn:aws:sts::{account_id}:assumed-role/{test_role_name}/{test_role_name}', ] }, @@ -58,12 +58,6 @@ def create_role(self, account_id, role_name, test_role_name): log.error(e) raise e - def create_role_if_not_exists(self, account_id, role_name, test_role_name): - role = self.get_role(role_name) - if role is None: - role = self.create_role(account_id, role_name, test_role_name) - return role - def get_consumption_role(self, account_id, role_name, test_role_name): role = self.get_role(role_name) if role is None: @@ -71,10 +65,17 @@ def get_consumption_role(self, account_id, role_name, test_role_name): self.put_consumption_role_policy(role_name) return role + def delete_policy(self, role_name, policy_name): + self._client.delete_role_policy(RoleName=role_name, PolicyName=policy_name) + + def delete_consumption_role(self, role_name): + self.delete_policy(role_name, self.CONSUMPTION_POLICY_NAME) + self.delete_role(role_name) + def put_consumption_role_policy(self, role_name): self._client.put_role_policy( RoleName=role_name, - PolicyName='ConsumptionPolicy', + PolicyName=self.CONSUMPTION_POLICY_NAME, PolicyDocument="""{ "Version": "2012-10-17", "Statement": [ diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/share_base/conftest.py index 3abc1bd9c..a44ebe722 100644 --- a/tests_new/integration_tests/modules/share_base/conftest.py +++ b/tests_new/integration_tests/modules/share_base/conftest.py @@ -51,6 +51,7 @@ def consumption_role_1(client5, group5, session_cross_acc_env_1, session_cross_a ) yield consumption_role remove_consumption_role(client5, session_cross_acc_env_1.environmentUri, consumption_role.consumptionRoleUri) + iam_client.delete_consumption_role(role['Role']['RoleName']) @pytest.fixture(scope='session') From 698d5ec9745eded1226c2eeea03a496d3c9d5520 Mon Sep 17 00:00:00 2001 From: Rick Bernotas <97474536+rbernotas@users.noreply.github.com> Date: Tue, 1 Oct 2024 02:29:43 -0500 Subject: [PATCH 095/188] Enable hyperlinks in dataset description (#1591) ### Feature or Bugfix - Feature ### Detail - Enables conversion of hyperlinks in dataset description text. ### Relates - https://github.com/data-dot-all/dataall/issues/1590 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? Dataset description field is parsed for hyperlinks - Is the input sanitized? Yes, and additional sanitization can take place in linkMarkup.js - What precautions are you taking before deserializing the data you consume? N/A - Is injection prevented by parametrizing queries? N/A - Have you ensured no `eval` or similar functions are used? Yes - Does this PR introduce any functionality or component that requires authorization? No - How have you ensured it respects the existing AuthN/AuthZ mechanisms? N/A - Are you logging failed auth attempts? N/A - Are you using or adding any cryptographic features? N/A - Do you use a standard proven implementations? N/A - Are the used keys controlled by the customer? Where are they stored? N/A - Are you introducing any new policies/roles/users? N/A - Have you used the least-privilege principle? How? N/A By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: rbernota --- frontend/src/design/components/ObjectBrief.js | 12 +++++-- .../src/design/components/SanitizedHTML.js | 2 +- .../src/modules/Shares/views/ShareView.js | 17 +++++++--- frontend/src/utils/helpers/index.js | 1 + frontend/src/utils/helpers/linkMarkup.js | 33 +++++++++++++++++++ 5 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 frontend/src/utils/helpers/linkMarkup.js diff --git a/frontend/src/design/components/ObjectBrief.js b/frontend/src/design/components/ObjectBrief.js index 995022377..cb77a5879 100644 --- a/frontend/src/design/components/ObjectBrief.js +++ b/frontend/src/design/components/ObjectBrief.js @@ -6,9 +6,12 @@ import { CardHeader, Chip, Typography, - Divider + Divider, + useTheme } from '@mui/material'; import { Label } from './Label'; +import { createLinkMarkup } from 'utils'; +import { SanitizedHTML } from 'design'; export const ObjectBrief = (props) => { const { @@ -24,6 +27,9 @@ export const ObjectBrief = (props) => { ...other } = props; + const theme = useTheme(); + const linkColor = theme.palette.primary.main; + return ( {title && ( @@ -136,7 +142,9 @@ export const ObjectBrief = (props) => { variant="subtitle2" style={{ whiteSpace: 'pre-line' }} > - {description} + )} diff --git a/frontend/src/design/components/SanitizedHTML.js b/frontend/src/design/components/SanitizedHTML.js index a802d9ba0..d0b9267da 100644 --- a/frontend/src/design/components/SanitizedHTML.js +++ b/frontend/src/design/components/SanitizedHTML.js @@ -3,7 +3,7 @@ import DOMPurify from 'dompurify'; export const SanitizedHTML = ({ dirtyHTML }) => { const defaultOptions = { ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a'], - ALLOWED_ATTR: ['href'] + ALLOWED_ATTR: ['href', 'target', 'rel', 'style'] }; const sanitizedHtml = DOMPurify.sanitize(dirtyHTML, defaultOptions); diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 460a089a4..00cb8121d 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -48,7 +48,8 @@ import { ShareHealthStatus, TextAvatar, useSettings, - Label + Label, + SanitizedHTML } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { useClient } from 'services'; @@ -75,9 +76,10 @@ import { UpdateRequestReason, ShareItemFilterModal } from '../components'; -import { generateShareItemLabel } from 'utils'; +import { generateShareItemLabel, createLinkMarkup } from 'utils'; import { ShareLogs } from '../components/ShareLogs'; import { ShareSubmitModal } from '../components/ShareSubmitModal'; +import { useTheme } from '@mui/styles'; import { UpdateExtensionReason } from '../components/ShareUpdateExtension'; import CancelIcon from '@mui/icons-material/Close'; @@ -747,6 +749,8 @@ const ShareView = () => { const dispatch = useDispatch(); const params = useParams(); const client = useClient(); + const theme = useTheme(); + const linkColor = theme.palette.primary.main; const [loading, setLoading] = useState(true); const [loadingShareItems, setLoadingShareItems] = useState(false); const [isAddItemModalOpen, setIsAddItemModalOpen] = useState(false); @@ -962,9 +966,12 @@ const ShareView = () => { WebkitBoxOrient: 'vertical' }} > - {share.dataset.description.trim().length !== 0 - ? share.dataset.description - : 'No dataset description'} + diff --git a/frontend/src/utils/helpers/index.js b/frontend/src/utils/helpers/index.js index 26cfd9ef2..43883b958 100644 --- a/frontend/src/utils/helpers/index.js +++ b/frontend/src/utils/helpers/index.js @@ -2,3 +2,4 @@ export * from './bytesToSize'; export * from './dayjs'; export * from './listToTree'; export * from './moduleUtils'; +export * from './linkMarkup'; diff --git a/frontend/src/utils/helpers/linkMarkup.js b/frontend/src/utils/helpers/linkMarkup.js new file mode 100644 index 000000000..230ebf89e --- /dev/null +++ b/frontend/src/utils/helpers/linkMarkup.js @@ -0,0 +1,33 @@ +export const createLinkMarkup = (text, color) => { + // Define the components of the regex pattern + + // Matches optional protocol (http:// or https://) + const protocol = '(https?://)?'; + + // Matches any domain or subdomain + const domain = '([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}'; + + // Matches paths and query strings, excluding certain special characters + const pathAndQuery = '(\\/[^\\s()$@]*)?(\\?[\\w=&-]*)?(#[\\w\\-]*)?'; + + // Combine all parts into the final regex pattern + const urlRegex = new RegExp( + `(${protocol})?(${domain})(?=\\s|\\/|$)${pathAndQuery}(?=\\s|$)`, + 'gi' + ); + + return text.replace(urlRegex, (fullMatch) => { + const decodedUrl = decodeURIComponent(fullMatch); + + // Determine the correct href value for the anchor tag + let href = ''; + if (decodedUrl.startsWith('https://') || decodedUrl.startsWith('http://')) { + href = decodedUrl; + } else { + href = `https://${decodedUrl}`; + } + + // Return the HTML string for the anchor tag with the correct href and style + return `${fullMatch}`; + }); +}; From c5a88c78dfd74c0fdd7efded11c61aff8a08c22c Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 1 Oct 2024 14:59:25 +0100 Subject: [PATCH 096/188] Bandit fix: explicitly install typing-extensions (#1600) ### Feature or Bugfix - Feature - Bugfix - Refactoring ### Detail - - ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .github/workflows/bandit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml index bd73332ad..d90188d87 100644 --- a/.github/workflows/bandit.yml +++ b/.github/workflows/bandit.yml @@ -28,6 +28,7 @@ jobs: - name: Install run: | python -m pip install --upgrade pip + python -m pip install typing-extensions python -m pip install bandit - name: Bandit run: bandit -r -lll -ii . From 07b2219e1f952f87b24494230d2133ac87423415 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:04:00 +0200 Subject: [PATCH 097/188] Add schema in database routines in metadata forms migration script (#1601) ### Feature or Bugfix - Bugfix ### Detail In `backend/migrations/versions/075d344ae2cc_mf_triggers.py` the database routines do not specify the database schema. As a result, when the routines are executed they fail to find the table. In this PR we read the schema name that matches the environment variable ENVNAME when defining the database triggers. ### Relates - https://github.com/data-dot-all/dataall/pull/1540 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../versions/075d344ae2cc_mf_triggers.py | 86 +++++++++++-------- 1 file changed, 49 insertions(+), 37 deletions(-) diff --git a/backend/migrations/versions/075d344ae2cc_mf_triggers.py b/backend/migrations/versions/075d344ae2cc_mf_triggers.py index 35b1a9b5e..a955411e3 100644 --- a/backend/migrations/versions/075d344ae2cc_mf_triggers.py +++ b/backend/migrations/versions/075d344ae2cc_mf_triggers.py @@ -7,7 +7,7 @@ """ from alembic import op -import sqlalchemy as sa +import os # revision identifiers, used by Alembic. revision = '075d344ae2cc' @@ -15,98 +15,110 @@ branch_labels = None depends_on = None +ENVNAME = os.getenv('envname', 'local') + def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.execute(""" + SQL_ORG_TRIGGER_DEF = """ CREATE OR REPLACE FUNCTION org_delete_trigger_function() RETURNS TRIGGER AS $$ BEGIN -- Delete from attached_metadata_form - DELETE FROM attached_metadata_form + DELETE FROM {SCHEMA_NAME}.attached_metadata_form WHERE "entityUri" = OLD."organizationUri" AND "entityType" = 'Organization'; -- Delete from metadata_form - DELETE FROM metadata_form + DELETE FROM {SCHEMA_NAME}.metadata_form WHERE "homeEntity" = OLD."organizationUri" AND visibility = 'Organization-Wide'; RETURN OLD; END; $$ LANGUAGE plpgsql; + """.format(SCHEMA_NAME=ENVNAME) - -- Create the trigger for organization table + SQL_ORG_TRIGGER_CREATE = """ CREATE TRIGGER org_delete_trigger - BEFORE DELETE ON organization + BEFORE DELETE ON {SCHEMA_NAME}.organization FOR EACH ROW EXECUTE FUNCTION org_delete_trigger_function(); - """) + """.format(SCHEMA_NAME=ENVNAME) + + op.execute(SQL_ORG_TRIGGER_DEF) # nosemgrep + op.execute(SQL_ORG_TRIGGER_CREATE) # nosemgrep - op.execute(""" - CREATE OR REPLACE FUNCTION env_delete_trigger_function() + SQL_ENV_TRIGGER_DEF = """CREATE OR REPLACE FUNCTION env_delete_trigger_function() RETURNS TRIGGER AS $$ BEGIN -- Delete from attached_metadata_form - DELETE FROM attached_metadata_form + DELETE FROM {SCHEMA_NAME}.attached_metadata_form WHERE "entityUri" = OLD."environmentUri" AND "entityType" = 'Environment'; - + -- Delete from metadata_form - DELETE FROM metadata_form + DELETE FROM {SCHEMA_NAME}.metadata_form WHERE "homeEntity" = OLD."environmentUri" AND visibility = 'Environment-Wide'; - + RETURN OLD; END; - $$ LANGUAGE plpgsql; + $$ LANGUAGE plpgsql;""".format(SCHEMA_NAME=ENVNAME) - -- Create the trigger for environment table + SQL_ENV_TRIGGER_CREATE = """ CREATE TRIGGER env_delete_trigger - BEFORE DELETE ON environment + BEFORE DELETE ON {SCHEMA_NAME}.environment FOR EACH ROW EXECUTE FUNCTION env_delete_trigger_function(); - """) + """.format(SCHEMA_NAME=ENVNAME) + + op.execute(SQL_ENV_TRIGGER_DEF) # nosemgrep + op.execute(SQL_ENV_TRIGGER_CREATE) # nosemgrep - op.execute(""" - CREATE OR REPLACE FUNCTION dataset_delete_trigger_function() + SQL_DATASET_TRIGGER_DEF = """ + CREATE OR REPLACE FUNCTION dataset_delete_trigger_function() RETURNS TRIGGER AS $$ BEGIN -- Delete from attached_metadata_form - DELETE FROM attached_metadata_form + DELETE FROM {SCHEMA_NAME}.attached_metadata_form WHERE "entityUri" = OLD."datasetUri" AND "entityType" = 'Dataset'; - + RETURN OLD; END; - $$ LANGUAGE plpgsql; + $$ LANGUAGE plpgsql;""".format(SCHEMA_NAME=ENVNAME) - -- Create the trigger for dataset table - CREATE TRIGGER dataset_delete_trigger - BEFORE DELETE ON dataset + SQL_DATASET_TRIGGER_CREATE = """ + CREATE TRIGGER dataset_delete_trigger + BEFORE DELETE ON {SCHEMA_NAME}.dataset FOR EACH ROW - EXECUTE FUNCTION dataset_delete_trigger_function(); - """) + EXECUTE FUNCTION dataset_delete_trigger_function();""".format(SCHEMA_NAME=ENVNAME) + + op.execute(SQL_DATASET_TRIGGER_DEF) # nosemgrep + op.execute(SQL_DATASET_TRIGGER_CREATE) # nosemgrep - op.execute(""" + SQL_RESOURCE_TRIGGER_DEF = """ CREATE OR REPLACE FUNCTION metadata_form_delete_trigger_function() RETURNS TRIGGER AS $$ BEGIN -- Delete from resource_permission_policy - DELETE FROM resource_policy_permission - WHERE "sid" in (SELECT sid from resource_policy where "resourceUri"=OLD.uri and "resourceType"='MetadataForm'); - DELETE FROM resource_policy where "resourceUri"=OLD.uri; + DELETE FROM {SCHEMA_NAME}.resource_policy_permission + WHERE "sid" in (SELECT sid from {SCHEMA_NAME}.resource_policy where "resourceUri"=OLD.uri and "resourceType"='MetadataForm'); + DELETE FROM {SCHEMA_NAME}.resource_policy where "resourceUri"=OLD.uri; RETURN OLD; END; - $$ LANGUAGE plpgsql; + $$ LANGUAGE plpgsql;""".format(SCHEMA_NAME=ENVNAME) - -- Create the trigger for dataset table + SQL_RESOURCE_TRIGGER_CREATE = """ CREATE TRIGGER metadata_form_delete_trigger - BEFORE DELETE ON metadata_form + BEFORE DELETE ON {SCHEMA_NAME}.metadata_form FOR EACH ROW - EXECUTE FUNCTION metadata_form_delete_trigger_function(); - """) - # ### end Alembic commands ### + EXECUTE FUNCTION metadata_form_delete_trigger_function();""".format(SCHEMA_NAME=ENVNAME) + + op.execute(SQL_RESOURCE_TRIGGER_DEF) # nosemgrep + op.execute(SQL_RESOURCE_TRIGGER_CREATE) # nosemgrep + # # ### end Alembic commands ### def downgrade(): From 9204f0a4819563e8a902e926998c63973ef09659 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:04:51 -0400 Subject: [PATCH 098/188] Fixes to integration tests (#1602) ### Feature or Bugfix - Bugfix ### Detail - Remove check on org group stats equal to 0 (should be equal to 1 - but do not think this assertion is useful) - Fix UnAuth Ops in MF Form Tests to Proper Field Names ++ Increase to access token validity (manual for now - can introduce via code later for testing env only!) ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../core/organizations/test_organization.py | 1 - .../modules/metadata_forms/test_metadata_forms.py | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tests_new/integration_tests/core/organizations/test_organization.py b/tests_new/integration_tests/core/organizations/test_organization.py index dcdae19a6..c06081ce2 100644 --- a/tests_new/integration_tests/core/organizations/test_organization.py +++ b/tests_new/integration_tests/core/organizations/test_organization.py @@ -41,7 +41,6 @@ def test_get_organization_organization_with_admin_team(client1, org1): assert_that(response.owner).is_equal_to(organization.owner) assert_that(response.SamlGroupName).is_equal_to(organization.SamlGroupName) assert_that(response.userRoleInOrganization).is_equal_to('Owner') - assert_that(response.stats.groups).is_equal_to(0) def test_get_organization_with_invited_team(client2, org2): diff --git a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py index 47bb2c8b6..22a03acb8 100644 --- a/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py +++ b/tests_new/integration_tests/modules/metadata_forms/test_metadata_forms.py @@ -15,7 +15,7 @@ def test_metadata_form_create(metadata_form_1): def test_delete_unauth(client2, metadata_form_1): - err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE operation:' + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE_METADATA_FORM operation:' err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' assert_that(delete_metadata_form).raises(Exception).when_called_with(client2, metadata_form_1.uri).contains( @@ -85,7 +85,7 @@ def test_create_update_field_invalid_value(client1, metadata_form_1, metadata_fo def test_delete_metadata_form_field_unauth(client2, metadata_form_1, metadata_form_field_1): - err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE FIELD operation:' + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling DELETE_METADATA_FORM_FIELD operation:' err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' assert_that(delete_metadata_form_field).raises(Exception).when_called_with( @@ -103,7 +103,7 @@ def test_update_metadata_form_fields_unauth(client2, metadata_form_1, metadata_f 'displayNumber': 1, } - err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling UPDATE FIELDS operation:' + err_message_part1 = 'An error occurred (UnauthorizedOperation) when calling UPDATE_METADATA_FORM_FIELD operation:' err_message_part2 = f'is not the owner of the metadata form {metadata_form_1.uri}' assert_that(update_metadata_form_fields).raises(Exception).when_called_with( From cb909e9a0df0610ff310040a52c7d0a286356ea2 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:02:00 -0400 Subject: [PATCH 099/188] Add integration tests feed (#1579) ### Feature or Bugfix - Feature ### Detail - Add integration tests for `feed` module ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../integration_tests/modules/feed/queries.py | 64 +++++++++++++++++++ .../modules/feed/test_feed.py | 44 +++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 tests_new/integration_tests/modules/feed/queries.py create mode 100644 tests_new/integration_tests/modules/feed/test_feed.py diff --git a/tests_new/integration_tests/modules/feed/queries.py b/tests_new/integration_tests/modules/feed/queries.py new file mode 100644 index 000000000..0062c116a --- /dev/null +++ b/tests_new/integration_tests/modules/feed/queries.py @@ -0,0 +1,64 @@ +# TODO: This file will be replaced by using the SDK directly + + +def post_feed_message(client, target_uri, target_type, content): + query = { + 'operationName': 'PostFeedMessage', + 'variables': { + 'targetUri': target_uri, + 'targetType': target_type, + 'input': {'content': content}, + }, + 'query': """ + mutation PostFeedMessage( + $targetUri: String! + $targetType: String! + $input: FeedMessageInput! + ) { + postFeedMessage( + targetUri: $targetUri + targetType: $targetType + input: $input + ) { + feedMessageUri + content + created + creator + } + } + """, + } + response = client.query(query=query) + return response.data.postFeedMessage + + +def get_feed(client, target_uri, target_type, filter={}): + query = { + 'operationName': 'GetFeed', + 'variables': {'targetUri': target_uri, 'targetType': target_type, 'filter': filter}, + 'query': """ + query GetFeed( + $targetUri: String! + $targetType: String! + $filter: FeedMessageFilter + ) { + getFeed(targetUri: $targetUri, targetType: $targetType) { + messages(filter: $filter) { + count + hasNext + hasPrevious + page + pages + nodes { + content + feedMessageUri + creator + created + } + } + } + } + """, + } + response = client.query(query=query) + return response.data.getFeed diff --git a/tests_new/integration_tests/modules/feed/test_feed.py b/tests_new/integration_tests/modules/feed/test_feed.py new file mode 100644 index 000000000..17f984770 --- /dev/null +++ b/tests_new/integration_tests/modules/feed/test_feed.py @@ -0,0 +1,44 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError + +from integration_tests.modules.feed.queries import post_feed_message, get_feed + + +S3_DATASET_TARGET_TYPE = 'Dataset' + + +def test_get_feed(client1, session_s3_dataset1): + feed = get_feed(client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE) + assert_that(feed).is_not_none() + + +def test_post_feed_message(client1, session_s3_dataset1, session_id): + feed_message_count = get_feed( + client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, filter={'term': session_id} + ).messages.count + + feed_mesage = post_feed_message(client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, session_id) + assert_that(feed_mesage.feedMessageUri).is_not_none() + + feed = get_feed(client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, filter={'term': session_id}) + assert_that(feed.messages.count).is_equal_to(feed_message_count + 1) + assert_that(feed.messages.nodes[0].content).is_equal_to(session_id) + + +def test_post_feed_message_invalid(client1, session_s3_dataset1): + assert_that(post_feed_message).raises(GqlError).when_called_with( + client1, session_s3_dataset1.datasetUri, None, None + ).contains('targetType', 'must not be null') + assert_that(post_feed_message).raises(GqlError).when_called_with( + client1, None, S3_DATASET_TARGET_TYPE, None + ).contains('targetUri', 'must not be null') + + +def test_get_feed_invalid(client1, session_s3_dataset1): + assert_that(get_feed).raises(GqlError).when_called_with(client1, session_s3_dataset1.datasetUri, None).contains( + 'targetType', 'must not be null' + ) + assert_that(get_feed).raises(GqlError).when_called_with(client1, None, S3_DATASET_TARGET_TYPE).contains( + 'targetUri', 'must not be null' + ) From 09319498bde11c3d6f713eddc5c8451e11ccae06 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:02:16 -0400 Subject: [PATCH 100/188] add integration tests votes (#1578) ### Feature or Bugfix - Feature ### Detail - Add integration tests for `vote` module - Fix Vote creation by username ### Relates - https://github.com/data-dot-all/dataall/issues/1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/vote/db/vote_repositories.py | 2 + .../modules/vote/conftest.py | 11 ++++ .../integration_tests/modules/vote/queries.py | 55 +++++++++++++++++++ .../modules/vote/test_vote.py | 51 +++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 tests_new/integration_tests/modules/vote/conftest.py create mode 100644 tests_new/integration_tests/modules/vote/queries.py create mode 100644 tests_new/integration_tests/modules/vote/test_vote.py diff --git a/backend/dataall/modules/vote/db/vote_repositories.py b/backend/dataall/modules/vote/db/vote_repositories.py index 339922439..88971a23d 100644 --- a/backend/dataall/modules/vote/db/vote_repositories.py +++ b/backend/dataall/modules/vote/db/vote_repositories.py @@ -15,6 +15,7 @@ def get_vote(session, targetUri, targetType) -> [models.Vote]: .filter( models.Vote.targetUri == targetUri, models.Vote.targetType == targetType, + models.Vote.username == get_context().username, ) .first() ) @@ -24,6 +25,7 @@ def upvote(session, targetUri: str, targetType: str, upvote: bool) -> [models.Vo vote: models.Vote = ( session.query(models.Vote) .filter( + models.Vote.username == get_context().username, models.Vote.targetUri == targetUri, models.Vote.targetType == targetType, ) diff --git a/tests_new/integration_tests/modules/vote/conftest.py b/tests_new/integration_tests/modules/vote/conftest.py new file mode 100644 index 000000000..16781af4e --- /dev/null +++ b/tests_new/integration_tests/modules/vote/conftest.py @@ -0,0 +1,11 @@ +import pytest +from integration_tests.modules.vote.queries import upvote, get_vote + + +S3_DATASET_TARGET_TYPE = 'dataset' + + +@pytest.fixture(scope='session') +def vote1(client1, session_s3_dataset1): + upvote(client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, True) + yield get_vote(client1, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE) diff --git a/tests_new/integration_tests/modules/vote/queries.py b/tests_new/integration_tests/modules/vote/queries.py new file mode 100644 index 000000000..1912bb79e --- /dev/null +++ b/tests_new/integration_tests/modules/vote/queries.py @@ -0,0 +1,55 @@ +# TODO: This file will be replaced by using the SDK directly + + +def upvote(client, uri, target_type, vote): + query = { + 'operationName': 'upVote', + 'variables': {'input': {'targetUri': uri, 'targetType': target_type, 'upvote': vote}}, + 'query': """ + mutation upVote($input:VoteInput!){ + upVote(input:$input){ + voteUri + targetUri + targetType + upvote + } + } + """, + } + + response = client.query(query=query) + return response.data.upVote + + +def count_upvotes(client, uri, target_type): + query = { + 'operationName': 'countUpVotes', + 'variables': {'targetUri': uri, 'targetType': target_type}, + 'query': """ + query countUpVotes($targetUri:String!, $targetType:String!){ + countUpVotes(targetUri:$targetUri, targetType:$targetType) + } + """, + } + response = client.query(query=query) + return response.data.countUpVotes + + +def get_vote(client, uri, target_type): + query = { + 'operationName': 'getVote', + 'variables': {'targetUri': uri, 'targetType': target_type}, + 'query': """ + query getVote($targetUri:String!, $targetType:String!){ + getVote(targetUri:$targetUri, targetType:$targetType){ + upvote + voteUri + targetUri + targetType + } + } + """, + } + response = client.query(query=query) + print(response.data.getVote) + return response.data.getVote diff --git a/tests_new/integration_tests/modules/vote/test_vote.py b/tests_new/integration_tests/modules/vote/test_vote.py new file mode 100644 index 000000000..49c657bbf --- /dev/null +++ b/tests_new/integration_tests/modules/vote/test_vote.py @@ -0,0 +1,51 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError + +from integration_tests.modules.vote.queries import upvote, count_upvotes, get_vote +from integration_tests.modules.vote.conftest import S3_DATASET_TARGET_TYPE + + +def test_upvote(client1, vote1): + assert_that(vote1).is_not_none() + assert_that(vote1.voteUri).is_not_none() + assert_that(vote1.upvote).is_true() + + +def test_upvote_invalid(client1, vote1, session_s3_dataset1): + assert_that(upvote).raises(GqlError).when_called_with(client1, session_s3_dataset1.datasetUri, None, True).contains( + 'targetType', 'not to be None' + ) + assert_that(upvote).raises(GqlError).when_called_with(client1, None, S3_DATASET_TARGET_TYPE, True).contains( + 'targetUri', 'not to be None' + ) + + +def test_get_vote_invalid(client1, vote1, session_s3_dataset1): + assert_that(get_vote).raises(GqlError).when_called_with(client1, session_s3_dataset1.datasetUri, None).contains( + 'targetType', 'must not be null' + ) + assert_that(get_vote).raises(GqlError).when_called_with(client1, None, S3_DATASET_TARGET_TYPE).contains( + 'targetUri', 'must not be null' + ) + + +def test_count_upvote_invalid(client1, vote1, session_s3_dataset1): + assert_that(count_upvotes).raises(GqlError).when_called_with( + client1, session_s3_dataset1.datasetUri, None + ).contains('targetType', 'must not be null') + assert_that(count_upvotes).raises(GqlError).when_called_with(client1, None, S3_DATASET_TARGET_TYPE).contains( + 'targetUri', 'must not be null' + ) + + +def test_count_votes(client2, vote1, session_s3_dataset1): + count = count_upvotes(client2, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE) + + # Assert incremeent by 1 + upvote(client2, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, True) + assert_that(count_upvotes(client2, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE)).is_equal_to(count + 1) + + # Assert decrement by 1 + upvote(client2, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE, False) + assert_that(count_upvotes(client2, session_s3_dataset1.datasetUri, S3_DATASET_TARGET_TYPE)).is_equal_to(count) From 0e176d20de896d16ffc73225470cb52b8b45d7b0 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 2 Oct 2024 09:54:03 +0100 Subject: [PATCH 101/188] retry for LF grant_permissions (#1585) ### Feature or Bugfix - Bugfix ### Detail - Add retries to grant_permissions boto3 call in lakeformation client - timeout is increased by 10% every retry ### Relates - #1572 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../s3_datasets_shares/aws/lakeformation_client.py | 10 +++++++++- backend/requirements.txt | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py b/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py index 1c1ba42cc..72e44ceb4 100644 --- a/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/lakeformation_client.py @@ -3,6 +3,7 @@ import time from botocore.exceptions import ClientError +from retrying import Retrying from dataall.base.aws.sts import SessionHelper @@ -160,7 +161,14 @@ def _grant_permissions_to_resource( if permissions_with_grant_options: grant_dict['PermissionsWithGrantOption'] = permissions_with_grant_options - response = self._client.grant_permissions(**grant_dict) + response = Retrying( + retry_on_exception=lambda ex: isinstance( + ex, self._client.exceptions.ConcurrentModificationException + ), + stop_max_attempt_number=5, + wait_random_min=1000, + wait_random_max=3000, + ).call(self._client.grant_permissions, **grant_dict) log.info( f'Successfully granted principal {principal} ' diff --git a/backend/requirements.txt b/backend/requirements.txt index d50a72380..05cb6619c 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -11,4 +11,5 @@ PyYAML==6.0 requests==2.32.2 requests_aws4auth==1.1.1 sqlalchemy==1.3.24 -alembic==1.13.1 \ No newline at end of file +alembic==1.13.1 +retrying==1.3.4 From aa2a4f1a5b9c70b9a970628bdda7a64489a30339 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 2 Oct 2024 09:54:36 +0100 Subject: [PATCH 102/188] MF7 bugfix (#1595) ### Feature or Bugfix - Bugfix ### Detail - _get_entity_uri requires the dummy parameter session - _get_entity_uri_by_mf_uri for delete_attached_metadata_form - it is required for the ResourcePolicyService to work ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../services/attached_metadata_form_service.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py index 005e9a45b..e0dbca860 100644 --- a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py @@ -31,8 +31,9 @@ def validate_enrich_fields_params(mf_fields, data): class AttachedMetadataFormService: + # session is rudimentary here, but it is required for the ResourcePolicyService to work @staticmethod - def _get_entity_uri(data): + def _get_entity_uri(session, data): return data.get('entityUri') @staticmethod @@ -79,9 +80,15 @@ def list_attached_forms(filter=None): page_size=filter.get('pageSize', 10), ).to_dict() + # session is rudimentary here, but it is required for the ResourcePolicyService to work + @staticmethod + def _get_entity_uri_by_mf_uri(session, uri): + mf = AttachedMetadataFormService.get_attached_metadata_form(uri) + return mf.entityUri + @staticmethod @ResourcePolicyService.has_resource_permission( - ATTACH_METADATA_FORM, parent_resource=_get_entity_uri, param_name='data' + ATTACH_METADATA_FORM, parent_resource=_get_entity_uri_by_mf_uri, param_name='uri' ) def delete_attached_metadata_form(uri): mf = AttachedMetadataFormService.get_attached_metadata_form(uri) From d1254009094d9db256b442381d010d0640e79783 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 2 Oct 2024 10:54:49 +0200 Subject: [PATCH 103/188] Fix share expiration date calculation for end-of-month days (#1594) ### Feature or Bugfix - Bugfix ### Detail Solves #1592 With this PR for the 15 first days of the month, extending the share request for another month means extending it until the end of the month. For the second half of the month, extending the share request for another month means extending it until the end of the NEXT month. ### Relates - #1592 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/dataall/base/utils/expiration_util.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/dataall/base/utils/expiration_util.py b/backend/dataall/base/utils/expiration_util.py index 0f0d6ec29..5c1a245e8 100644 --- a/backend/dataall/base/utils/expiration_util.py +++ b/backend/dataall/base/utils/expiration_util.py @@ -9,11 +9,21 @@ class ExpirationUtils: def calculate_expiry_date(expirationPeriod, expirySetting): currentDate = date.today() if expirySetting == Expiration.Quartely.value: - quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3 - 1) + if currentDate < datetime(currentDate.year, currentDate.month, 15).date(): + # First half of the month - extend 2.X months + quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3 - 1) + else: + # Second half of the month - extend 3.X months + quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3) day = calendar.monthrange(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month)[1] shareExpiryDate = datetime(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month, day) elif expirySetting == Expiration.Monthly.value: - monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod - 1) + if currentDate < datetime(currentDate.year, currentDate.month, 15).date(): + # First half of the month - extend until end of month + monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod - 1) + else: + # Second half of the month - extend until end of next month + monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod) monthEndDay = calendar.monthrange(monthlyCalculatedDate.year, monthlyCalculatedDate.month)[1] shareExpiryDate = datetime(monthlyCalculatedDate.year, monthlyCalculatedDate.month, monthEndDay) else: From 34d5651ed26ff784d369421d52416b56eec420e0 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 2 Oct 2024 10:55:09 +0200 Subject: [PATCH 104/188] New permission model for Redshift ADMIN connections (#1573) ### Feature or Bugfix - Feature ### Detail Implements new way of transferring connection permissions as explained in #1562 This PR introduces a new frontend window to deal with connection permissions. - [X] Add button in column in the Connections tab - disabled for DATA_USER connections - [X] Create new window where admins can grant other groups permissions to the connection. - add group premissions - remove group permissions - groupOptions is updated depending on the environment groups that still do not have permissions to the connection At the moment it only allows to select the CREATE_SHARE_REQUEST permission, which is hardcoded in the UI view. If in the future we introduce more permissions we can "easily" read those grantable permissions from the backend and update the FE view and replace the current chip for a dropdown of permissions., 4 new APIs to manage the permissions to the Connection: - [X] add permissions for a group to a connection - [X] delete permissions for a group to a connection - [X] list group permissions for a connection - [x] list groups in an environment without any permissions to a connection New permission in connection_permissions + new db functions for the above. - MANAGE_CONNECTION_PERMISSIONS - to separate from GET_CONNECTION permissions which is very generic and could be granted to other teams. - CREATE_SHARE_REQUEST In the share request view there are no changes in the frontend, but in the backend the listConnections API db query has been modified to return also the connections of a user if the user belongs to a group with permissions. - [x] Ensure in the backend that only users with permissions to a connection can open a share request for that connection In addition we need to: - [X] Add unit tests - [x] Update documentation ### Coverage of unit tests for Redshift For the `redshift_datasets` module: image For the `redshift_datasets_shares` module: image ## Testing - tested locally - tested CICD pipeline completes, UI view for connections updated! ### Relates - #1562 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/connections/mutations.py | 23 ++ .../api/connections/queries.py | 22 ++ .../api/connections/resolvers.py | 72 +++- .../api/connections/types.py | 28 ++ .../db/redshift_connection_repositories.py | 96 ++++- .../redshift_connection_permissions.py | 7 +- .../services/redshift_connection_service.py | 87 +++++ .../redshift_table_share_validator.py | 25 +- .../redshift_connection_menu.png | Bin 139807 -> 92635 bytes .../redshift_connection_permissions.png | Bin 0 -> 64813 bytes .../docs/pictures/shares/redshift_catalog.png | Bin 0 -> 177291 bytes .../shares/redshift_share_request_form.png | Bin 0 -> 78016 bytes .../userguide/docs/redshift_datasets.md | 99 ++++- documentation/userguide/docs/shares.md | 29 ++ .../components/RequestRedshiftAccessModal.js | 3 +- .../EnvironmentRedshiftConnections.js | 33 ++ .../RedshiftConnectionsPermissionsDialog.js | 361 ++++++++++++++++++ .../services/addConnectionGroupPermission.js | 26 ++ .../deleteConnectionGroupPermission.js | 19 + .../modules/Environments/services/index.js | 4 + .../listConnectionGroupNoPermissions.js | 22 ++ .../listConnectionGroupPermissions.js | 32 ++ tests/modules/redshift_datasets/conftest.py | 39 ++ .../test_unit_redshift_connection_service.py | 149 +++++++- .../redshift_datasets_shares/conftest.py | 55 ++- .../test_redshift_share.py | 11 +- .../test_redshift_table_processor.py | 8 +- .../test_redshift_table_validator.py | 101 ++++- 28 files changed, 1275 insertions(+), 76 deletions(-) create mode 100644 documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_permissions.png create mode 100644 documentation/userguide/docs/pictures/shares/redshift_catalog.png create mode 100644 documentation/userguide/docs/pictures/shares/redshift_share_request_form.png create mode 100644 frontend/src/modules/Environments/components/RedshiftConnectionsPermissionsDialog.js create mode 100644 frontend/src/modules/Environments/services/addConnectionGroupPermission.js create mode 100644 frontend/src/modules/Environments/services/deleteConnectionGroupPermission.js create mode 100644 frontend/src/modules/Environments/services/listConnectionGroupNoPermissions.js create mode 100644 frontend/src/modules/Environments/services/listConnectionGroupPermissions.js diff --git a/backend/dataall/modules/redshift_datasets/api/connections/mutations.py b/backend/dataall/modules/redshift_datasets/api/connections/mutations.py index 291944e33..a77ccb67c 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/mutations.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/mutations.py @@ -1,7 +1,9 @@ from dataall.base.api import gql from dataall.modules.redshift_datasets.api.connections.resolvers import ( + add_redshift_connection_group_permissions, create_redshift_connection, delete_redshift_connection, + delete_redshift_connection_group_permissions, ) from dataall.modules.redshift_datasets.api.connections.types import ( RedshiftConnection, @@ -20,3 +22,24 @@ type=gql.Boolean, resolver=delete_redshift_connection, ) + +addConnectionGroupPermission = gql.MutationField( + name='addConnectionGroupPermission', + args=[ + gql.Argument('connectionUri', gql.NonNullableType(gql.String)), + gql.Argument('groupUri', gql.NonNullableType(gql.String)), + gql.Argument('permissions', gql.NonNullableType(gql.ArrayType(gql.String))), + ], + type=gql.Boolean, + resolver=add_redshift_connection_group_permissions, +) + +deleteConnectionGroupPermission = gql.MutationField( + name='deleteConnectionGroupPermission', + args=[ + gql.Argument('connectionUri', gql.NonNullableType(gql.String)), + gql.Argument('groupUri', gql.NonNullableType(gql.String)), + ], + type=gql.Boolean, + resolver=delete_redshift_connection_group_permissions, +) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/queries.py b/backend/dataall/modules/redshift_datasets/api/connections/queries.py index 166ee5a7b..787965fa5 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/queries.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/queries.py @@ -1,6 +1,8 @@ from dataall.base.api import gql from dataall.modules.redshift_datasets.api.connections.resolvers import ( list_environment_redshift_connections, + list_redshift_connection_group_no_permissions, + list_redshift_connection_group_permissions, list_redshift_connection_schemas, list_redshift_schema_tables, ) @@ -28,3 +30,23 @@ type=gql.ArrayType(gql.Ref('RedshiftTable')), resolver=list_redshift_schema_tables, ) + +listConnectionGroupPermissions = gql.QueryField( + name='listConnectionGroupPermissions', + type=gql.Ref('ConnectionGroupSearchResult'), + args=[ + gql.Argument(name='connectionUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='filter', type=gql.Ref('GroupFilter')), + ], + resolver=list_redshift_connection_group_permissions, +) + +listConnectionGroupNoPermissions = gql.QueryField( + name='listConnectionGroupNoPermissions', + type=gql.ArrayType(gql.String), + args=[ + gql.Argument(name='connectionUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='filter', type=gql.Ref('GroupFilter')), + ], + resolver=list_redshift_connection_group_no_permissions, +) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py b/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py index 95d700ef0..b290e93fa 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/resolvers.py @@ -1,4 +1,5 @@ import logging +import re from typing import Any from dataall.base.db import exceptions from dataall.base.api.context import Context @@ -17,45 +18,88 @@ def create_redshift_connection(context: Context, source, input=None): def delete_redshift_connection(context: Context, source, connectionUri: str): - RequestValidator.required_param('connectionUri', connectionUri) + RequestValidator.validate_uri('connectionUri', connectionUri) return RedshiftConnectionService.delete_redshift_connection(uri=connectionUri) def list_environment_redshift_connections(context: Context, source, filter: dict = None): environmentUri = filter['environmentUri'] - RequestValidator.required_param('environmentUri', environmentUri) + RequestValidator.validate_uri('environmentUri', environmentUri) return RedshiftConnectionService.list_environment_redshift_connections(uri=environmentUri, filter=filter) def list_redshift_connection_schemas(context: Context, source, connectionUri): - RequestValidator.required_param('connectionUri', connectionUri) + RequestValidator.validate_uri('connectionUri', connectionUri) return RedshiftConnectionService.list_connection_schemas(uri=connectionUri) def list_redshift_schema_tables(context: Context, source, connectionUri: str, schema: str): - RequestValidator.required_param('connectionUri', connectionUri) - RequestValidator.required_param('schema', schema) + RequestValidator.validate_uri('connectionUri', connectionUri) return RedshiftConnectionService.list_schema_tables(uri=connectionUri, schema=schema) +def add_redshift_connection_group_permissions( + context: Context, source, connectionUri: str, groupUri: str, permissions: list +): + RequestValidator.validate_uri('connectionUri', connectionUri) + return RedshiftConnectionService.add_group_permissions(uri=connectionUri, group=groupUri, permissions=permissions) + + +def delete_redshift_connection_group_permissions(context: Context, source, connectionUri: str, groupUri: str): + RequestValidator.validate_uri('connectionUri', connectionUri) + return RedshiftConnectionService.delete_group_permissions(uri=connectionUri, group=groupUri) + + +def list_redshift_connection_group_permissions(context: Context, source, connectionUri: str, filter: dict = None): + RequestValidator.validate_uri('connectionUri', connectionUri) + return RedshiftConnectionService.list_connection_group_permissions(uri=connectionUri, filter=filter) + + +def list_redshift_connection_group_no_permissions(context: Context, source, connectionUri: str, filter: dict = None): + RequestValidator.validate_uri('connectionUri', connectionUri) + return RedshiftConnectionService.list_connection_group_no_permissions(uri=connectionUri, filter=filter) + + class RequestValidator: - def required_param(param_name: str, param_value: Any): + @staticmethod + def _required_param(param_name: str, param_value: Any): if not param_value: raise exceptions.RequiredParameter(param_name) + @staticmethod + def validate_uri(param_name: str, param_value: str): + RequestValidator._required_param(param_name, param_value) + pattern = r'^[a-z0-9]{8}$' + if not re.match(pattern, param_value): + raise exceptions.InvalidInput( + param_name=param_name, + param_value=param_value, + constraint='8 characters long and contain only lowercase letters and numbers', + ) + + @staticmethod def validate_connection_creation_request(data): if not data: raise exceptions.RequiredParameter('data') - RequestValidator.required_param('SamlGroupName', data.get('SamlGroupName')) - RequestValidator.required_param('environmentUri', data.get('environmentUri')) - RequestValidator.required_param('connectionName', data.get('connectionName')) - RequestValidator.required_param('redshiftType', data.get('redshiftType')) - RequestValidator.required_param('database', data.get('database')) + RequestValidator.validate_uri('environmentUri', data.get('environmentUri')) + RequestValidator._required_param('SamlGroupName', data.get('SamlGroupName')) + RequestValidator._required_param('connectionName', data.get('connectionName')) + RequestValidator._required_param('redshiftType', data.get('redshiftType')) + if data.get('redshiftType') not in [RedshiftType.Serverless.value, RedshiftType.Cluster.value]: + raise exceptions.InvalidInput('redshiftType', data.get('redshiftType'), 'Serverless or Cluster') + RequestValidator._required_param('database', data.get('database')) if not data.get('redshiftUser') and not data.get('secretArn'): raise exceptions.RequiredParameter('RedshiftUser OR secretArn') if data.get('redshiftType') == RedshiftType.Serverless.value: - RequestValidator.required_param('nameSpaceId', data.get('nameSpaceId')) - RequestValidator.required_param('workgroup', data.get('workgroup')) + RequestValidator._required_param('nameSpaceId', data.get('nameSpaceId')) + RequestValidator._required_param('workgroup', data.get('workgroup')) + pattern = '^[a-z0-9-]*$' + if not re.match(pattern, data.get('workgroup')): + raise exceptions.InvalidInput( + param_name='workgroup', + param_value=data.get('workgroup'), + constraint='contain only lowercase letters and numbers', + ) if data.get('redshiftType') == RedshiftType.Cluster.value: - RequestValidator.required_param('clusterId', data.get('clusterId')) + RequestValidator._required_param('clusterId', data.get('clusterId')) diff --git a/backend/dataall/modules/redshift_datasets/api/connections/types.py b/backend/dataall/modules/redshift_datasets/api/connections/types.py index b509b3668..7b82c427b 100644 --- a/backend/dataall/modules/redshift_datasets/api/connections/types.py +++ b/backend/dataall/modules/redshift_datasets/api/connections/types.py @@ -39,3 +39,31 @@ gql.Field('alreadyAdded', gql.String), ], ) + +ConnectionPermission = gql.ObjectType( + name='ConnectionPermission', + fields=[ + gql.Field(name='name', type=gql.String), + gql.Field(name='description', type=gql.String), + ], +) + +ConnectionGroup = gql.ObjectType( + name='ConnectionGroup', + fields=[ + gql.Field(name='groupUri', type=gql.String), + gql.Field(name='permissions', type=gql.ArrayType(ConnectionPermission)), + ], +) + +ConnectionGroupSearchResult = gql.ObjectType( + name='ConnectionGroupSearchResult', + fields=[ + gql.Field(name='count', type=gql.Integer), + gql.Field(name='page', type=gql.Integer), + gql.Field(name='pages', type=gql.Integer), + gql.Field(name='hasNext', type=gql.Boolean), + gql.Field(name='hasPrevious', type=gql.Boolean), + gql.Field(name='nodes', type=gql.ArrayType(ConnectionGroup)), + ], +) diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py index fed9c525a..110d6e0ef 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -1,10 +1,12 @@ import logging -from sqlalchemy import or_ +from sqlalchemy import or_, and_, func from sqlalchemy.orm import Query -from dataall.base.db import exceptions +from dataall.base.db import exceptions, paginate from dataall.core.environment.services.environment_resource_manager import EnvironmentResource -from dataall.base.db import paginate +from dataall.core.permissions.db.permission.permission_models import Permission +from dataall.core.permissions.db.resource_policy.resource_policy_models import ResourcePolicy, ResourcePolicyPermission +from dataall.core.environment.db.environment_models import EnvironmentGroup from dataall.modules.redshift_datasets.db.redshift_models import RedshiftConnection from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftConnectionTypes @@ -41,16 +43,26 @@ def get_redshift_connection(session, uri) -> RedshiftConnection: @staticmethod def _query_user_redshift_connections(session, username, groups, filter) -> Query: - query = session.query(RedshiftConnection).filter( - or_( - RedshiftConnection.owner == username, - RedshiftConnection.SamlGroupName.in_(groups), + query = ( + session.query(RedshiftConnection) + .join(ResourcePolicy, ResourcePolicy.resourceUri == RedshiftConnection.connectionUri) + .filter( + or_( + RedshiftConnection.owner == username, + RedshiftConnection.SamlGroupName.in_(groups), + ResourcePolicy.principalId.in_(groups), + ) ) ) if filter and filter.get('environmentUri'): query = query.filter(RedshiftConnection.environmentUri == filter.get('environmentUri')) if filter and filter.get('groupUri'): - query = query.filter(RedshiftConnection.SamlGroupName == filter.get('groupUri')) + query = query.filter( + or_( + RedshiftConnection.SamlGroupName == filter.get('groupUri'), + ResourcePolicy.principalId == filter.get('groupUri'), + ) + ) if filter and filter.get('connectionType'): query = query.filter(RedshiftConnection.connectionType == filter.get('connectionType')) if filter and filter.get('term'): @@ -87,3 +99,71 @@ def paginated_user_redshift_connections(session, username, groups, filter={}) -> @staticmethod def delete_all_environment_connections(session, environment_uri): session.query(RedshiftConnection).filter(RedshiftConnection.environmentUri == environment_uri).delete() + + @staticmethod + def _query_redshift_connection_group_permissions(session, connection_uri, permissions, filter) -> Query: + query = ( + session.query( + ResourcePolicy.principalId.label('groupUri'), + func.array_agg( + func.json_build_object('name', Permission.name, 'description', Permission.description) + ).label('permissions'), + ) + .join( + ResourcePolicyPermission, + ResourcePolicy.sid == ResourcePolicyPermission.sid, + ) + .join( + Permission, + Permission.permissionUri == ResourcePolicyPermission.permissionUri, + ) + .filter( + and_( + ResourcePolicy.principalType == 'GROUP', + ResourcePolicy.resourceUri == connection_uri, + ResourcePolicy.resourceType == RedshiftConnection.__name__, + Permission.name.in_(permissions), + ) + ) + .group_by(ResourcePolicy.principalId) + ) + + if filter and filter.get('groupUri'): + query = query.filter(ResourcePolicy.principalId == filter.get('groupUri')) + if filter and filter.get('term'): + query = query.filter( + ResourcePolicy.principalId.ilike(filter.get('term') + '%%'), + ) + return query.order_by(ResourcePolicy.principalId) + + @staticmethod + def paginated_redshift_connection_group_permissions(session, connection_uri, permissions, filter) -> dict: + return paginate( + query=RedshiftConnectionRepository._query_redshift_connection_group_permissions( + session, connection_uri, permissions, filter + ), + page=filter.get('page', RedshiftConnectionRepository._DEFAULT_PAGE), + page_size=filter.get('pageSize', RedshiftConnectionRepository._DEFAULT_PAGE_SIZE), + ).to_dict() + + @staticmethod + def list_redshift_connection_group_no_permissions(session, connection_uri, environment_uri, filter) -> list[str]: + groups_with_permissions = ( + session.query(ResourcePolicy.principalId).filter(ResourcePolicy.resourceUri == connection_uri).all() + ) + + groups_with_permissions = [g[0] for g in groups_with_permissions] + logger.info(f'Groups with permissions: {groups_with_permissions}') + + groups_without_permission = ( + session.query(EnvironmentGroup.groupUri.label('groupUri')) + .filter( + and_( + EnvironmentGroup.environmentUri == environment_uri, + EnvironmentGroup.groupUri.notin_(groups_with_permissions), + ) + ) + .order_by(EnvironmentGroup.groupUri) + .all() + ) + return [g[0] for g in groups_without_permission] diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py index bad6ab72a..3dadd7c80 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py @@ -27,7 +27,11 @@ REDSHIFT_CONNECTION_READ = [GET_REDSHIFT_CONNECTION] DELETE_REDSHIFT_CONNECTION = 'DELETE_REDSHIFT_CONNECTION' -REDSHIFT_CONNECTION_WRITE = [DELETE_REDSHIFT_CONNECTION] +MANAGE_REDSHIFT_CONNECTION_PERMISSIONS = 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS' +REDSHIFT_CONNECTION_WRITE = [DELETE_REDSHIFT_CONNECTION, MANAGE_REDSHIFT_CONNECTION_PERMISSIONS] + +CREATE_SHARE_REQUEST_WITH_CONNECTION = 'CREATE_SHARE_REQUEST_WITH_CONNECTION' +REDSHIFT_GRANTABLE_PERMISSIONS = [CREATE_SHARE_REQUEST_WITH_CONNECTION] REDSHIFT_CONNECTION_ALL = list(set(REDSHIFT_CONNECTION_WRITE + REDSHIFT_CONNECTION_READ)) RESOURCES_ALL.extend(REDSHIFT_CONNECTION_ALL) @@ -35,6 +39,7 @@ for perm in chain(REDSHIFT_CONNECTION_ALL): RESOURCES_ALL_WITH_DESC[perm] = perm +RESOURCES_ALL_WITH_DESC[CREATE_SHARE_REQUEST_WITH_CONNECTION] = 'Use Connection in share request' """ REDSHIFT CONNECTION PERMISSIONS FOR ENVIRONMENT diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index d0edc0c05..3f0578049 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -11,8 +11,10 @@ from dataall.modules.redshift_datasets.services.redshift_connection_permissions import ( MANAGE_REDSHIFT_CONNECTIONS, REDSHIFT_CONNECTION_ALL, + REDSHIFT_GRANTABLE_PERMISSIONS, DELETE_REDSHIFT_CONNECTION, GET_REDSHIFT_CONNECTION, + MANAGE_REDSHIFT_CONNECTION_PERMISSIONS, CREATE_REDSHIFT_CONNECTION, LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS, ) @@ -73,6 +75,14 @@ def create_redshift_connection(uri, admin_group, data: dict) -> RedshiftConnecti resource_uri=connection.connectionUri, resource_type=RedshiftConnection.__name__, ) + if connection.connectionType == RedshiftConnectionTypes.ADMIN.value: + ResourcePolicyService.attach_resource_policy( + session=session, + group=connection.SamlGroupName, + permissions=REDSHIFT_GRANTABLE_PERMISSIONS, + resource_uri=connection.connectionUri, + resource_type=RedshiftConnection.__name__, + ) StackService.deploy_stack(targetUri=environment.environmentUri) return connection @@ -138,6 +148,73 @@ def list_schema_tables(uri, schema): ).list_redshift_tables(schema) return response + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + def add_group_permissions(uri, group, permissions) -> bool: + context = get_context() + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) + RedshiftConnectionService._check_redshift_connection_has_grantable_permissions(connection) + if any(permission not in REDSHIFT_GRANTABLE_PERMISSIONS for permission in permissions): + raise exceptions.InvalidInput( + param_name='Permissions', + param_value=permissions, + constraint=f'one of the possible grantable permissions {REDSHIFT_GRANTABLE_PERMISSIONS}', + ) + + with context.db_engine.scoped_session() as session: + ResourcePolicyService.attach_resource_policy( + session=session, + group=group, + permissions=permissions, + resource_uri=uri, + resource_type=RedshiftConnection.__name__, + ) + return True + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + def delete_group_permissions(uri, group) -> bool: + context = get_context() + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) + RedshiftConnectionService._check_redshift_connection_has_grantable_permissions(connection) + if connection.SamlGroupName == group: + raise exceptions.InvalidInput( + param_name='Team', param_value=group, constraint='any team EXCEPT the connection owners team.' + ) + with context.db_engine.scoped_session() as session: + ResourcePolicyService.delete_resource_policy( + session=session, + group=group, + resource_uri=uri, + resource_type=RedshiftConnection.__name__, + ) + return True + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + def list_connection_group_permissions(uri, filter): + context = get_context() + permissions = REDSHIFT_GRANTABLE_PERMISSIONS + with context.db_engine.scoped_session() as session: + return RedshiftConnectionRepository.paginated_redshift_connection_group_permissions( + session, uri, permissions, filter + ) + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) + @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + def list_connection_group_no_permissions(uri, filter): + context = get_context() + with context.db_engine.scoped_session() as session: + connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) + RedshiftConnectionService._check_redshift_connection_has_grantable_permissions(connection) + return RedshiftConnectionRepository.list_redshift_connection_group_no_permissions( + session, uri, connection.environmentUri, filter + ) + @staticmethod def _check_redshift_connection(account_id: str, region: str, connection: RedshiftConnection): if connection.redshiftType == RedshiftType.Serverless.value: @@ -205,3 +282,13 @@ def _get_redshift_encryption( if cluster.get('HsmStatus', None): return RedshiftEncryptionType.HSM raise Exception + + @staticmethod + def _check_redshift_connection_has_grantable_permissions(connection: RedshiftConnection): + if connection.connectionType != RedshiftConnectionTypes.ADMIN.value: + raise exceptions.InvalidInput( + param_name='ConnectionType', + param_value=connection.connectionType, + constraint=f'of type {RedshiftConnectionTypes.ADMIN.value}. Only ADMIN connections support granting additional permissions.', + ) + return True diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py index a0f87a439..08f75d2b4 100644 --- a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_validator.py @@ -1,3 +1,5 @@ +from dataall.base.context import get_context +from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.environment.services.environment_service import EnvironmentService from dataall.modules.shares_base.services.share_object_service import SharesValidatorInterface from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound, InvalidConfiguration @@ -9,6 +11,9 @@ from dataall.modules.redshift_datasets_shares.aws.redshift_data import redshift_share_data_client from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository from dataall.modules.redshift_datasets.db.redshift_dataset_repositories import RedshiftDatasetRepository +from dataall.modules.redshift_datasets.services.redshift_connection_permissions import ( + CREATE_SHARE_REQUEST_WITH_CONNECTION, +) import logging @@ -28,9 +33,13 @@ def validate_share_object_create( attachMissingPolicies, permissions, ) -> bool: + RedshiftTableValidator._validate_target_connection_permissions(session=session, uri=principal_id) rs_dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri( session=session, dataset_uri=dataset.datasetUri ) + RedshiftTableValidator._validate_source_connection( + session=session, dataset_connection_uri=rs_dataset.connectionUri + ) RedshiftTableValidator._validate_clusters( session=session, source_connection_uri=rs_dataset.connectionUri, target_connection_uri=principal_id ) @@ -41,9 +50,6 @@ def validate_share_object_create( principal_role_name=principal_role_name, action=CREATE_SHARE_OBJECT, ) - RedshiftTableValidator._validate_source_connection( - session=session, dataset_connection_uri=rs_dataset.connectionUri - ) return True @staticmethod @@ -105,5 +111,16 @@ def _validate_source_connection(session, dataset_connection_uri): ): raise InvalidConfiguration( action=CREATE_SHARE_OBJECT, - message='Redshift data.all datashares require an ADMIN connection in both clusters', + message='Redshift data.all datashares require an ADMIN connection in the SOURCE namespace', ) + + @staticmethod + def _validate_target_connection_permissions(session, uri): + context = get_context() + return ResourcePolicyService.check_user_resource_permission( + session=session, + username=context.username, + groups=context.groups, + resource_uri=uri, + permission_name=CREATE_SHARE_REQUEST_WITH_CONNECTION, + ) diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_menu.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_connection_menu.png index 51a2bed0b3df4b0e019fd1ba44994a8371c3d896..ba3be43fc9d71494b4e6c177b50b006ff2dcbf3d 100644 GIT binary patch literal 92635 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 T~GEC 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Μq>A2ct`BxW8N&%yf7mg$8vK%%lOws|0$p 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 Pz~`K<$(h1a7jOO_1YhBp literal 139807 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≊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 MW~5nq#UcFv0BBDCi2wiq literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/shares/redshift_catalog.png b/documentation/userguide/docs/pictures/shares/redshift_catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..69d050bfbcdf16005fc17981221d84da3b3b7757 GIT binary patch literal 177291 zcmc$`by!s2+BXgeN~oxS2uN5UEg&EbqI7o;O2^RMU?L()3PUN~F)%|nB017Al+*yj z(9F>MHh#}}&$*u8qxi>rT`yiTo4xmnJJ!AK_^b(4Q<1$yN=u4|hj&R{?uiB--i2a3 zymO(%=Yc!XS8MM9AB0v?%2IfEB@twY&xnA(nat!gl=1L1m_N~}^B1s*t9=*e3uE90>N*Ti@P_}B2x0ay6IKfE_Kc!a;M@$i72 zfFHuh*LW9z&uhScqg4F=yqQYy?>8?Lr=I)w^|{c~MpBy6^76o^rkRU{g@dcLqg&U5 zwAXle1ok#sdTx5kO2TH2V6JE8j?XQ)yuePUP4Gm$gn>)2h1)YGFR;CXtFV{Y?O$&Q z1J|dwxoR9hTL-Gg-Jo@i3|Lf6zH9e(R zSk=V_81C6A%TI~>|K0o7`=Z>Z^7t?L{3HBdcLC{(lZtZxA59V`y+TPxiH9eNC;voB z%L{*H;)0uY>)5vqmT+3z#o8C!lj$VyLgX$ql9GOZ`jqG@)e|i(O8d7=*(3Kuwwd2D zX%nWun)F?(O`i~>=(%-^<)b7q$)Q!jTvu|um@js1@u+Sd;`vQ6Jdl`z2%qqZB;KEY z1&eS@`@cy+%w9d~O`xA*0>a|G3;2KT@$@N^6!Db?l`EigVSmvpQ&6|WIbxKY-+aJ^X#n^IJ0Fo$Lh8u35$tiq7V$&_eS(60DmJGSV6qLkN zcm8_t*>6kYK?2YJ#n{(g;^D6lZtxcqpDj~-f{{bMGucVZ^pOc5iREok@YA!I56E*N z9mwzn?IoT22vOe)|+K+}l|4F{@@SQ&Z0+QD-54PV1pxa`?&-^K(v=F3c(t|Pk@ zDrMbrJyXPQRvTDx5wcpnj^5uHOn@Pb1dn&QU%h-?+4e16qr_Ckf8U-+#0}Zl?-MZH z^m%;2`F$X-gg1y}02Yzce?zJ?o_F zg^C4QANiqA3MKOOY!&g;VCsQg3543T-(PzMyDEqb1zo;8sH-_tc>uE0>oSgz&(JG$ z^C>e@!TrF=6uAwrxwR4wDtlD!+2GW?Qg>B~LQ!|lRNGK>CKZB_)+D^GW{XlJ4ph5U zk;#DsqiHl*`k~~MWjl_?BdJj8X1=UE%AUK>dtOS4i0is=W>E3*$77_=!%X-j)|m*J zF{H`Ag=E|^p*(v%1w$y_M&Wrx5aTa6NN_??nvi@u%}ECng-H_=Vei$_*InatCiBz? zZH;4&pN4wXbYfZwy4`7QYY5aTk71?nWCaMdzlHemb`r|U!ET*J>Tia z-;5;eRbD^r6^DMU<@dhEc*$D#UWfh=Gue1_$;rw9^xOjaFvHZsIpjyJVN4085M+^P z3fm*8Wez%eUVE^uk9?=FjGCp*ZDX4&b*G4S-0lU91uVX=Uh|2mNJRS}zL1}3$=*5! z8;(65Pjo&yeDP`}LD^{^PK2C5PkHa=Gjokv6m`>#lE-#fqM3^^9nU?;KS;H9Nw75? z_D(!6t(J8!pknp%-yL|05qHs9N^HP7s-ytcA_5KpcO%6pkHr^iR%zIAwm)A>3owBl z9t5wf2~Rk#i3PH@SVpY9z2YS>I>DSaepsQ9XS?^XSelBi=JI8d!FmWelCMem$~dJN z-&*s&i-&&wv(U~;husI~&tA(L98QWfBg|=|_JiPe?H>f<+pc!D%@PcjxiBCHCfWy% z?REmdlYt%QVGykzFfy-RtowZEok>(~;3O>41X%4R36)BCyE5}j21HtLHxChxyAPE( z_q$6Fe2RRAFI3m`by=gH`eP{N{RgXj0(_@}DNx#*gQ3Dc7S$V@M7-Ae^{-(?0hNg! zWNupwG1aOi_-kvz+E9PZSPTpmhzw(|H^O%|(?m_sB-F2_VtDLE7VN(ykB+_*m6cS8 z>5gk0%{;VjF-#knbt$|b)qkd0As&Ag4C!f5i5XYrmM|FLI%yeIq}@k-yI-_9HI!xm z7!R-@z!2m}bi}s;Sjs}&=$J^=rrOeaKA7)>JP`cOK`-5d!rmiBHPL>JCMH=VS^HtZhB<^h?xYyy#55Yxdta%js^j(>8`PcLn&W;A5vz?J zit$D}zLoLTX*rtt!7xj#ljmG!MI!rVm(i^=iSRUGvSo9*IK17|{M0;TB=cfIi8?jc z8?TzJev;r^lkHnbtDYu@(KSc9E6FIrC_7=AUdv=$TYe;ohAc-!bo$lFz|f~?B%o{P$gf7bk>n-y_XGnQjk}*n4B~ox-6!wX z=^{$8kMv*4=uRW;ubMpar9DttI_yrA$Hb2pekoM)7%tC3R3vuxAC~ zIYWA#NAlZY%Vb0nwA@g;(+)BHVT2m#W7I>1wBlnp(*RUV5C~E=1S|v-ba>svJM2&7 z6n2@SRos~8 zN{!`()#0C-)NY&O7CYXhMlC;iav?b5_1-iWuwB5y>bX zB+o&H23p67reNmG7hcGRcQ%j40ZiXNkw21lnbC8nyA7|F8H zfEv5B8Eov-b$ib#$B>yi71PnKBfVEfu)vl>@L1sCVR&Z5K>ZkrX|+O8ti{Up`9iy> zt4B*vDxAGWfCs6vdd(TByZGpg`YKiCf?hb^`fLLh~-><#RFnZ~`P$Y4K z)e9W5xYIfR{*kE0L}DBmrt2AF7~jc%A?438&uKXE`1)ISyo2t{pH`ZXxCHpB>H8^6 zO8A=zGm*h+)ttx!)&cpS9u|65iYZOWua4UJ<}FHVl=sa2R!WPy#mr7db6lxkC~Mzy z$?9Lhq1#1^z)2wq8xF>UoJkYn!x!_7F^OR=uV!Gu^o6(p2VGfy?%p zN6iMEgb3xz(Mr*7Rk|}Bfsa>+o|nJ!!d%mzFnkV)+uPhzz_P%&EklM+eAC~$uI|wK zOV~y2i>ePf+&Km|>(v})?umj+zN%G4W(GVsQ9-9*nfl|P+6;xCO1u(s8(TCz#5aK1-YAz5nG&|GFtdHnt!LU?(ekWGm?l||ocX$=?LDS&{W59JH3ZthRhyyc`lMyg zrT{*U@p#Oy-?egKj^a#1A-70S($NqA9UWXj8~XFOVxgldha1JzGdNVgRBl3Op+c;qtXzv&l;ffLU)6t$ve7@$KqzUfX6>uH&JyA`n zyfU{@7lq)EmDT~mB+{^Os^w|WHivfH_^stcYk)Opq%<_QDHlWR<&MYy9M z9sUbjepYsy31V4oeqYh=l~5@IqcD+I6sF<@ic+_RX}rtXb5bIJ$Rfj71#j;#V;%Fo z2oh-|PuPN!nJX8VS#b$V#NFQUuKK=c?gnvYcJc>@VvL3- z5&VCpSX2#lN!+F|^0mI=3jdZg|Kow}d0$7=>}R?&B_+ueOwwXYwt=j~BA5%bi=o}{ zQ60$i4kp^t;Y`EB^o(?uIobjv5n#d?K{n9GDSNFWQt!fW`PWubOzEU#< z(brxQJJUqt5p3KC*u_xtS2EiMq>u*xa^WvDkO5#<+Z}<3$A3YX2_S`Sf$g(>d*YTf zfL&fK3+jJCST7kMg~`_pe<52hN`PGvBch~#L6{F9gV?+HUUi&9@;b+T+IU}j3)gYXtjsKRy}dM z{YPK_t_D6R>uz5L)Shrv8Gmby<79FYG9~61{wH>hV+iUdCnr4*L^cD6$F&JeOiX5` zkk!lV^A>+z3x&kH38puIWb(C$pgqsnKt~D$u2tdB`QqnXlKbvm1vf(fG^2k+;zS21 z`IL-N=3iv--c|yd``M7^+Sw{LEdbb$y6_66KQiT?DO_;{)R71N{O;LisR0aVxj&tA zJnh+2U|IlHx|u_(+#mJlS3ki>zJx1K42Eoo_PNc+8eX`dZ1L zX(F*jwq4)9@Qx1AgM6elvk)3d7jpA-x^okR>of06W|;$oD(akUP=aeaC(QTK#_RROlYFj$^4OdT{M$+4dVRaKBRW^JqY zCoDRn2QJiBv)_NDcO=f3-j*O*aBZI9N14QNsTmwRWg+2ej-XvKffjfcCXU8%=<|Xn zs+zI$?}{;So9~!yNU1wg)bxC}M`@nMFjN?@iBg4-}6=v8Z^I zu7R{0K8N8!_O|)OX`-o&#PBX!74kO`&0k5L{_FRzrleGsE;LK7~hkISk z&m(3!QO8Lm5A^zpPJZ7g6qUGwUQhLCp_A}A;ndDCniSaEmkD@EVJ+deojp`Ik)4`q zdcvZ`dq(I$LDY#bqH^YPJGsw@1&-(XSlNjZJ|&gAHr$*l}+$z3SKE z2W9YOAwwU~WzxPzX<4lX5+4W$x*o+noq9E%(#@rrX>cqs97jh!;5TJpGtR>J4A z&(5MPl0_x?YEH`EnWrm4VtXC5N;0b1lpw6!Q*DmE8l6?)h&FUg0z?^e!LkF8!tPaLt@S&SipvX6)z!MD0=Vz+}FUn9gg~xE={mOzeopnPTV-<=ghIC#5 z>6#b8AZE!|d&k|R@te;+fLkM zHy^nv;4dAmSrAOp|Iy2v=AwEF#lspeH{0F%IDJ}7uPAy+^ylch2)vFKi(H|}~LyLxsq7!tZl_Vh{XSw|wr{3FS zySHh`)dz;JJ^hq~YfhFUm5$nJ`?{QUk=cLdArNNO0Dy!K)Rqj9OhiLPA3f~fRXwB_ z3CMW0jgeJ9us$mh5R7C7CJ*c7bq=Avk4p3wdtMjKYB-Sb`jtFr`{SgS3~ANP@|5dm zvHk67+~BOz@iJ5)RZqxfMI*6J_*0qEdUU{)w2h=(fP zp_U`(-#8@gq*mx=S1=s*UCpAxCtS4+{_#VNUers^5aysOCujZDdss1!YpDy^HCXOH zdeoZ_dG*_Y#*u)G*Dz}-a8HuEs;vHEDz;M-gV*+4*Dfz@u=O>?e?nG1#tW|2F+FZ- zwM8CN&9kcMSg;N0gpXa)F1CKk?{J(izPrdrFXC}qs{X)G>>yjMw*zZ6wyjU%Q^0Zg z_X{L0s3@{|4GEn=kKod@S<#_@L{LQ)c zZMCF?<)L|iW<6CJzLzJC&6EBIJ9<$p<%=m9aQkBaHm-0wiNRwIP|0#E%8cOm`f)7} z7&>$ZVm1NSO?`Z633soL>{2?0E=}C7MX;~1pf4^hL(AqXwjWq2p&F*x#64PmpAcUR zCq%F>ixH>Mmo7g6W>HPn$m*Hc!HvHa-i zL|d!pQ=U=wy?L)>L3Bk&JHs(cPH1ZaLtDd0fP2}{(AYe_reFG`_kN>Yf4l&g*8c=U z%?6skmGsD2eqSo1QY zP%h|AL~lYl-Aeghxg|!%e}S;I`!iS3F=E1j%@B_H(ezZY%;AU`a7>@PBBN5{v6{SK zH>}nX&3Ze$wzqY@Gp_u(MQRszKDcL#jJl(UEv6&Sud=VV2S6h%i29~2JZe0M$s1zx zEWBykyUkPmTEenxX#Wyq#f(lUewkgWWmms=dNdo9=NfW2h@ZXfNH$t#iowr?#P5ghlh`C)#?k+`)z#c8k$27 zfd^jfB!EO(OniNP?WTGpJyV3Ds&N;N%n1;~vA185EoU*-!SF3~L2(Xi70~tzc?l+&gg8KJ86jzTtRQJdao zhWnQp4SsT`*kzE`bA1efP{mQP`c0I>16NtQKMRi?SA+~Nyf#_$KP_qJFJ7?KhBlf~ zd=#))-j>+$!Fhrw2*WyKS#ykpph&wdb|$7IFuP&q%WCk#D5 zlO8>mAg9YNXQ#ez_8L!QwINvg6YRFRux0)s6_Xe+lDtP_G_7YH8X)#JQ0#IAXZ7DzVynf>Zat{0|(m}OGT&Q%2BDtMuT#n0*{sP z0zRvr<$+Cv!i;Gf&Y~^*w{$x>2f(5Uy1?&#`pUig-r|>y- zpC>Z*b_jirV~we=KQPhc(MM6SNB08x0`S4Rm|(0C#vNVcKyCt+(f0QCep-dF4^EZ< znUoga$#ME^cG!vUG+`wZ?t4WpMSb7m!!~xSFFFr-SoLg3NdF_?8N5hh@+c`?wPXWm zaw6ij=$bZ39KDRR-@wdL9E2+&i_V*Olx%n`0D$54|UpnYXG!qkh&}D0)dE-6*@(_Qazqy9H((gn>bRlZ_T+ z1@;=|pB0zz@5!_6Fmlbi^4__y{muuwbBpE0R{OGsgjJWcGM+Sm3guEOHCM-xa+}no z7a(DIPG1OCVRr0MSv> zaVdt`-F62f*Z^x=(6zSCrsemQDFoLX9ckwJly`J|5`*wru^p}V%RL=GKJ;<5>RCD5 z=#IHIA;zMT=yK`PD8qPkqRQ*?ycG$jAKKyD-qWVLm1Cc1D}N6WW{L%5U`F!IiSR42 z+wu}&37O(VN(`6D+i`GDQ$S_>!2F$@X2_?53cz_Hyk|<#1mp;!M+K14@TomDGnwOQ z9x|kT^U>--%Hnimvxof~55x$9wcoPp#jq;OAv3_=S9Z+dAR-<*5p3-%eK8=OFVDCU z{g`MAT|{Fxk3ym9w#N6iXhr8(PJw(Dig9k9vT>ZX-kk!t&%7C7NS_UM!_N@1VT17( ziSI~u9pARbPhMTi`0!iLTk=Wp$XYn<#%TzQvmZ->yyL&)$&8ASNy5(hbzx}9#U>R!pXm4HT@Gu@jtUA^gZJ~D zS#Y0SKy=t&Sj{m<1nfkB7PyV_>leC)zckCP{CMm7fnMS%1+#LTkQFkq0+ zjjAgMIkdW$Wv}^ptBpSi5<0<0%9CdRa!e#Kdc@-H zuaO|uz7;LBB`=++uvcXH(1&5Ma;M>oCaK)oT4j_D-~?OXN68;5#4#iYA0f~^F=Il3 zKHmk8wDT5@R-JvZtC~k`2I$3-*;N7ER&!fOLA`E)i5&#k`Z9Pk6i4=f9JN-4j6b~u zLx2a&=3(Q8zsNc8kLqXrS>=AMwju&EMOw$lKB+@TyeMZ#-&O&a&qg3()Ccf(tOpiJ zVB%h;67kbDdE3XSDN0V_Reh-e#{TFU!gi|_F- zAIJ6B^v&;g21yR0?+qXB-DtjA@kMeoy02kFquL?)&FUzZn8{Ovhn@duge;Lpx?JIx z7ZUvq+y`TPB}K+cKnibgu|#(J4Mot08#My6E(_laSt(?*pT8I#G2WWu^n1x>0R`IIhhje~Hm9^;EcLoc$l@A}f-+u5q@U4OK+wspW}Tyyhl zGN&TDzNi?V%JrVRB(kRC4{~&6Ss&eBPVh^_Q$-Y|vj{)MRI8BDj0`t^Aqz$_nU?0@ zRws)1tPr`@pPERC<*3uLJ{MGYVkYx$jzTNpGj+Y;mYS4XHPUY`vwN4$b)-nBrWZdix6D$yY?$n<-QRZUWC9JWyuW)FO@BNymCvx zRn%#(=7z}A#5cmf4+7!Qx2bMk%hYN=dI(oNl8bEXG14gXsJA)z7~7F3uo-v}(f_Qh z%b$mHYlwaT*?iJp$|*}lc`f&D-DIxuZOH3dBW3;mjJLfH->8`U;C6+xnJt^!YKknx z+omWRTz-jQtE^WLWX+_UEH+;TEgz#u}!xc`+T_-kb(-1{UhvW{e8OXo=nPC()7+LQ0A55En8!; zl#V&FALHd09`4kOvGrR-3iwTEEgd$)#cL;D`bH%6(@Ahc^?#O-n1UQt_OHAxk!(%q zTT@J@rj-*Bcv_1YF3LzUOy`zWJkCk`73`kkY`2&CbG8&QI~y#Z(SjzV=gM>V4b>=S z<#g9-<@H+6BEi*lTkqe-^^(u8zm4K6CQq(Novbe?lc0!ODP<_UY3GVr=9_)4S#`3R z(lzu`%pkgNeb_b^K=&o|&EDcKN|0sF^V$AN?;#u&KVdgOO6BieqfvgWO;x2l^nDL$ zpF-jRU%|l(9LGErT0!xt?TVgAbaNKh@)9?S)$if@Irqi=`L&M;7X zHgMfT9LHkhay<9)tJ)vP3}*^w$>;pZgvO_+@V{v|H$2n>n1CoNZGbsS=W{ zmMLdT5CXqvi)QzKqucTO!&=v%l8NS~kga?>DugY)61JRm;ijr)*G_Bd6~l<`%HdmI zp7qd-wXOJb4|3Z|7}wW%6-Fip7Jn=?9(`PcdON@G)B5Z^Yw`8u8%PZrI}drqvHn9uAp8Q_C=P?p~>F?>A|mnXO8XJXcp8+?Ax_=axKK1$u(a6lpy`=QGis2c_g6 z>TB3w4|Z0-077}NQc69;C1mXq`)jKx?Lgmz>kg015y(Q5hfq7818)F{t90GH!@O?4 zC{X&qFUoi#;K$<~dPeJWBhn}1<}Zc;*tyoZF>M%HaCEw_QqI-cnVf9*(Md-wt{@sA zk-yicD z2By?g+QUyiEY^GANG|Q0y;#T>GKHkLgdi3~m#3~fc$Ox=xN|ui7O?O4QLJ-}u<&Hm z>(Q8V;fJlbCb$%USLC-5TZ+MGa1*^5nTFZfZHB2VROCI$uO8cd(m*1$SV>O?Qj4j=pB_bjW#=p<={i=js%WD|4Ug4~figjxrtk#Z~>k!%1L+@ewnr6wiyTkcg!Rz)-FLTH?f;8 zFjCcmh;M}-Hszp~D)PGYp&&YJvQ}8GH-9Gb9Bec(ir)A^wb3!2h~?l1Ghwtj7_wDk zOoPnWA{;@*w$r8FgG4NL=AgB{n4YH>_Ex{M;OHtAsY>{jl#=aMxG|f%?cIWXLEDqA zlD@hm6&MUk<^OHnbs_EY*E3Fx23Jc@#}bUxiJJ(!EPu7#No0_3Hdg_8ltx0ZN#Ju` zS4FzLTtP}54VSgG_QF|d;a*t^HM~;Vq*kR;W)xmM^XArq&M=gKK7uuJe|fr{Y?;Te zk`E3SPbm}V+Xg`4n!s5$fvD<1tH3xPNa_(3&Qx9 z0hB4KQdlGG@UN+j7Ky62yujcTfJFxFMFB_BOx*@=$DbaV*%OiiNAZ9O+5?M(vJ+aN z*~zXBuz0&qQ2*VFRs}?*nL3U3IpsD}tYYeS>PamW(|{9zV|*1;_6B|DJLp8#s%%bJ zIVasl96%03!_cQTwOaMr{wWVxBeO%Jzz!i33-nX|HSbH)6~6#>JI|+=!>3pacB5AC z#i|rO2<0fhED%+bWPB9Y6GrNUEqiEFp;i33$Fd`hvOVevy)@bHtjxchkWixr_Ab`Y zpY&a@2}5j(&ZnC;G2`u3b+FIyN6xE}eIiox=omGt)KSZE?XK9lxRA&8uVHx@nG|4$ z5_Z}DIsp@%(SuG@wl4}aE}x%w9lN;lW(u-I*iCNjhZ7bs6P@u|CibHIEN35 zKH$L8;J@(7GiJM$;p_qs(>}u?*Yb-RsNKj}iS;S~t7#}YwheWsoVi^edoPavabHV zxN>;0liM_5oD)oECTQg{2QZ3-S81vX}K+~!IlSYTuU-0A$ zsndCn$48cW)C9f6gsAUDsp?^r221!6cWO{4&k(Ix;o{D}n2pxyY<3{ejERj@ncRhm z$m0utEMP=GY>ri_)D`4@w;Q~slpyi%?*gd*i;3L=K#eMIr%3G{Gcgm?1(2>Dfq`S8 zljoHsk?g}NbQweCHBVh6On&r%2D$JYJH7QbfMa{+@FQcm*wt$HS4!;d^yYXlre zGe3U(fy7=MZduTux_l%L6n>oeH+~BN{fKv3F%RMnzQ^R0NARVbLHox#5ou>a=d70a z6!y~^T2+pk`=3>iP84>mJ!I56A@S;+jt)8t^h5VteHdlF$t+=UmJ%cfaFZuB?E}Qc zh26F*#2I;IvQ*o^R}QA`o#d!Pt=vGNxw-mTpGdD4WEVPaN0RWim31YEsREgrh$SZ! zea|V<1}Iy-zA@D-`MdQTj65x@Vd=IA31^-%<*ShpMHu84M^cH2BYYRuHth@zO#tKY zYt1$h)g9(XEF20+Nd!np4z3mDJDxvEyaQR=r@(Xulc z)6%;W;8MulLq?pVLu-L*qt8tI2Za>zq)Zjs9A)(JAZ{w)3lUjd_Kqg~b9>QE_y+AZ zCW40n@%#C{1d_8N&jPsfNrNHRh&w;(OG)&oTi3RUO|F$&#`_s+e;Uq|j5vCDJ18g` zfU-^Krl+nJ8K@@-1291e|Fn7bb30o_X`G03Rz59E@Oj}taX;A?wFg-Al0cFhsQo~@ zT*iOr;1D8bXbRzMOF^%{dl#FVDNHUn=-K>Q_Ia|Xdu9UMr)ScUx9%jl`Ulo=s;*zW z&HQ@xX*okX%|klgw15>TarU7nrnE;D+_$IibU&PitQkr3I~;2Hp41S9fv5PuAUE8E z(mm~5N}pOYc8iXWT%vEmyd|?tZ;u9trIRGifB)JD3e1hX_m0h-EpRX(wMu-sU;4sj zhM~-ELyQYKgK$2UzB>C!JT2D0+Ray%n)|imtOLO`*>x@$G6J&p?Q?=lt?x>ZUBFYE zamDNIJ>TFXv-4ZVb=%931Ofk8e(}ZpsNW`;t_T7~YxdhG{VQ^h2;`$!E2fBFxh>B- zE1O)veP3Im-Aoo~{beVv=%;G5x^zUb#1RY^!s)YAl7?Vl5h_~R0F|wNu*rZki-_;{ z)MKAIOcd<{r|bY428I=ZMhr{R^m6dIHv_ZX!&)Ve^>>yhbem<59Za96)u^lqNvgYig3f&v7MqP` zKj}BS#GrnHxKIiGsG2NnF+2(#md(}P3gEZf|LmI#DfrCf5qFt0M##*EuI1Qgqym!E z;XgIDL#N%nXBKSU9to5n=NrfP%j`E&*o?A+z>ZTJ`~_1L`i>$Wz{xfiaI%x>G=%+B zR6zo(WAb>%XC6sz4?mOERd&B-fY-$Jg*fBS&*%if>LON`79xnN+`ZM?Bbf(9)^^Ij zNi|AcwfqWHqW*Ui=EP1=2Y2Da-42p$qI!V8Qe5+D9=YYc)Ytl*Oe|2RE(yXqR~|vt z2eX?KF9g1c+RX`sfa|!xqk8efX>c{yu)C3;PdmF` zLUFNSLXWu|q+pbc^1J7RcT*zDZ#RJ40uif?kH54s0w5TH>P@Hp(P=escM=-}?&{_ZmTr*sTZwf9AJ7S&~x%@H&88?|iBB zi*bgb7c4sOOz9>FTY(tg)u^%f4xpf`n`0&NjkR^3{F=`>e7fKa9KDfgFgJ!YY?Zf~ zUy{(u$`n7cPrZ~mlx;G2J_%}tuzgc#4DTKNQ1em53rwqwEzHZ;2Ldf2D_h8PIcq>b z02`>VOsCMmtcZ?3zo_VZK$dpiaIRa9AY%Bo0$gh4=nUV~M`yZ%}*aw`G{X3qWsqgZKEd5JsL1 zvzk9hTp%1a(0kSGUV?^|bVZ8__G^{Bo+UkdTwzq~rzL9CP`-K$o`)L<5A(lkR#1a7 zY4NLF6N3Yu)>0;zL@+xJG>sAM61~LPLMh<4(OHTvbr}oH6`a)H~{G#GO{0 zbls1JqJ1{^l5r+&Y@iDUpanR)OD;&LPmYLjdr7BxvVrrDpkBgH(Zg=^)F8BmD&> z7tOBt0lQ%bw+O+Q)YLpHb#B8tUK!ly1EuS`;dNme_udH`Rv_H1nju!VdvNw#jfZ22l>OShKwrQ;2=;wyIvLVRE8(0_ zN53DHY}+pn@)y%m6-N3&g0{-%*MFvUfYL*%YIl;myn94EF}*qcS=tq9_#y*@CEUhU z={-fY1%tt8`vxcgM;e=d&zJEODw7~)RX4#rPG~)KQd~du$nXW+dh7=l0$R9f?>f1) zIK`6tg`&%Y3OZOJM276D16SMD$w`xt$(}YEuQw9s} zE#*7Qz1lW?={gV(ZaV-toP+~8Vy4jjs^yH?g?@XR_nG{Cd^^jQpk=^BjtVLTqj(89(?LB0$bm><7eTR`VJwfnS(qnt+vbHaYJVaUsiSfQ5`HFbUV<>a0w{* z#gf1hFoj2nm?rc<;TOa~ZIRnj-&mz(S7HJAL4Xb4dmuTTYpKkjJw-m{oH8|j5++3} zKI2I*?AKzc3$ZG9vjtFy=U=m02@34bJfO$)^(mN>m@Ky=~Fh-+#6 z{-Ja=W|v&zgBrq9VyLiy{j0s^YBE!>mXgy+(xiV9wEi5%_cOFWS>}L+amU4~5VyDM z>W^!7s?Mn3=}BaLah=2HYsN`enPZ6=%E8?~E$-N`&VVuSNAq!SFLslr)1k4r+X=Bi8y9Or%$UdoN1hGIBe+wz)J za0Rg`oj{Zg=DUDZWYw=|CHOl5Gg>el>JBHV^I-$LITwP-Cb2FuEdK$(xQBaMe|ttsas`Me+Iqrz ziGld0g47g3y)jmmZS3FR)J~f4xG0By2HeQ~;v5-tEr$?|@S)y(^9T3g%27z^bmn-~0;9F}JTcTXz z`KHc9Lsp!gG>uE>devZj`-)CQdPtyQe(^Ob(YjB-7f=*| z!SMyHtiRdg|Ls<`!~oo_h%{#)T;&ZezNk;RJ$v(&_;}MS#G8mK#u3f7Iac%S>=3_2 z2RJTf-+CjWq4w@aj>?dO2rap`WQM6Rbc4g5n6~kxYnJ!fd7P0`j)Y$~yIMg_R8vE_ zso_WzxS1Dy*G4ON%W5838R{2seA|{00H*y0i1W{bmdC(kIErt)YpCV8vTtoibO};W z9HgX9^H_SmzX;;z>lq#L;-85APd!OqJY7Y2p|?(PB3E>(N<(Ci(uxUMMI*f;j!f#f z2jWyx*3Zrf4O3Kb;;)3oaoKHbx>vcyD|MlN_P>#QPD$JuD=T&9I$N2HSVSkzWD|a9 zFvVRoVfe4L@&_6v-3Uycse~5t!7!G&uM~%^XD+f-%-gfB0A6_Jj$O9x-i*tK-c#hm zP2zun_-9Qs4HIwQZE>Jm(2~%hT1y}+38O^n_i6CXk-jfC^KpWi;fm~i^c)WG7Ki9Xs9c7TI-dbJLqLU-I#PY zb~M*T&QXo6>}C4{(3*d%-~W2$6yCsjp%@6r@<46fef!-aT2*@Z;Hh#Di)xA{#@1qR z@#g_%HnYbdzyA7R*7H|eOYzs;EeOVVSW_<3W)z5EN53$?5K;VwH;;fQYj;xV2G{VA zzrNrwk{L$*LaRjS(`Qj^Y+It3r<9_ugIegpCcBwrf?;w5$(6VFKmH&Xu>?w3NL$9SL)YfK>NV7`VyR$?kPFqp2~9TlKmq<32;!l=x?KtrT) zRd=0LfRO`R_nup%ff!!>2-TH zUsu^b8tU_A)DJFIFb2yJSRsrx-p$G1E}vKmD^A>_G^qYkL){ZSyhNcMJ6mg8QX`PB zWnFMS64Yei8{K*e3jV`_aB3rT5ITo6muFFqd{T{NaON!&!*L{t=t4 z?X`D1o6el`Pgf7TmqK715OSrC?X`-I*Ph0!B#w>6 zH6C(gg$10sOE2}@n+R63{jyw8R%AyE$BIc?V4mP8-chi0o7Mx+6uve_d% z@quBRN}|Tt!(;5ELy`gO{rh@mnTG`pJ4mXT8tG3bP*28nbt*f?wi9IJ72z+q+f3O( zdid&US4B*vij6kLN=&M8Yht? zLZW`mj&y|u9ns{?FHV^A`gwcr|0s>1pgU^QJAM<)))VQ^=*70CcZ6Hbb;xPNRSf z!3aZPgNyg}$gSf2CAM9bK9cFuo;k;SB-8jRq1yYn9{-d(M^s3TOP1pFU&R~2z)B@< zt@d(He_RjQqMS*y*4rK4 zw7f4*Iz0=f+FM*VA1CGZu~Ji{IHHng72O6s6S_B+pMJo))p@H{UBmu@>boW){K;vo zeFMdT_SS*k3eIo*%Hn%e^^s+YM^cnJlLR5g;Mg;;sxkRzh;{15Du5`CsdG+(9eDah3j_wX#+()~35Erez@ZX0i|~*p<#S zPs5Hep0q@+DMb04W+Cz7;Y z;$Z^>d1ryy9lKOXLHRXj)zywxrJ1&T*RcCw=X;x3yVvjJeq~{z1;W0?TDC!G>Yw_P z7U9X+B1F|xi7m`yX3x;;5Pq${zzP65j;6UyII+EJz00Y&QOiheRg_W->#MM}>G*AOCDG-hIj5?7A6)mf z0tVi^-9~tWS{kS@U#4#RDQ^Z;rji|9T_Y!DXLjBf*z%XY$G?e}Q(ZVNCdc@`57MUo zFQY+KJ830`&pKq`Zud<$pk2A z1ofpes-=8_%@rL9r*g-?7;ov;v?vVB*oFMUymYGv1IZw zrf2C(erS(6_ZoH|oX}S8BYU}dOyEMu4YNR%sA)2b3^A62W$NN_j{&_1bbdR;O&@V` z@8rOMYEWS?!BlKz*y}~2>zyj2eP!5x%z}X*6WbZZs?O(Ta_MaxsB84~)a)c;#RFq(zm5|lPxE(=SsR2C3eyqrC8Ma267sC9)+gBUy7lr)e zs2IpIsl=xnzO}5ksM>tA zV(}AF*%)5NafWCCB2`sKOa#WHT#_7xnRfFRlV22++!zf>&q(e%#piTyh1F>G$%sSZ zsEg^A$6!r)0(_}I9U2dQ34}=rgQfTnIicxgr|+3$sTQs)73g)l>IsEzY}sy(Zp~-V zT7AG}T>Vv(U!2gO)YA%uAjaWG&Pbx@eN2L5i7#qibpDOeu<~S}s(`aVqx4>9`|z^g z@T%S*$#Z?LA8ucew(fLkY_TB38o%x^tAAr$gNgL%lf;*ihTS2KDdf#D48f?7deKl! zjO>~CF@JKn(kT1EO>PgY>BODxkHba(1*~=%r7E*F8+4&ZCTu{}n=3>SCG(zyPA2Sc z-?8+wPc5SSqGkEoZ<{arjPmg@ICqWw{G#)$ZZu33I_n>o_k|DVXA9zj$C>*rRWD6v zHTjhuYqk@^aZdOZdEfj9c$@h`URN0T<(G^NtJn^MU0*A(F{-l%XTC88q;UVXKpBC z%JLPRXiprc(Zzo1A?7`zZ@bY~+tAmF*OUK_bWyi*?=lWWP3fKDj*vNTV8J*<@S|q^E$VM{h)LV%04~r9;@1w* zw?%|e&du~4QSc~gvJ~d_2)NbdCw@ZAgQ2eeIi6_N<8J-P)(;Y`ITHJ^#xrX5AE))- z_D}2qz<=oUPuj__Oi3Fo0PmWjd%S1;+vwU+zT^D4K5`V>UBd}3z1UGbNyZi-yJv&% zntUU%0>Y@-#Ma4_PLNH@6}6lH>f-+cDJOvdEA>S|muiZ5gdtzk9-hl5j8u(8?{zYL zJ=lxxA{dSL!nqfGb)WLfv2ec+@BXZ(qm%s2kh1oAjWU#4&w@Z)+i!_9_;|fiSE;k4 z6B@Zptk1VcN}F&WKSd{hbmm#|#7)Fc zAf*`XrS^vc4O1YYZ7#P3cxX{pLj9}vDN#Egyms@i&i>}xNbxnpGw$0?tF&>qza(|-=qP4=qlBETl?*JtBL7qYj>pz~>q~KNb zQ^{;mx~H|PCgG%<%yOnQ+*)3Ro2}SzI@;&#;_d5y>-c+28z`f?@x_~yk%c=ZTv{)p z;IMeWY+r(eQqtUT#f^qg>uCY1s#KLXRBz4v%Pp0!F@7s5M z`v9v46M^e-`9#0Q|Uy)}2S6`($kz9lrW{g7ELC*O-ex(Xu-$lYoP%f1A{anfB^ zA1;CbEC18SYw?lnytuEZ5^2h7}T z=e0-wR;`<=uZmK+d5HU0xK;jFwxLCWhEVQS&8bGMyv=-s^!});T?l+Q=eAwiNk*2% z9F4heB~!FXWIj+bXf!Xy&W1^nPkr8u#uE)1>!mZUt2%F=7b5)`q0_XBv=z*j0 z2N;=oS>VJAw4Ne11-G;7kC)N-cjTG%yisMkrPmPSPU!5;xfRN_KLlRyXWVhyeILsB z26)=;J8=Cz6Edn@C0ztKxn3HK&7GbPY94?CiOa%E z*yLTSu$M><>yq*4i)>?*uTwsbp0g|w=Q-OXo!j7c@Yq*2nn>394N~*56iJekF(FveP9JGF+jxw*hC$;#)HG3g&7E? zL=t#vXu)aMsNFk2t0(;ih-%=Ub6~Id>`abC*}p zU7x}RygGB(n`ObMPAW0faA9mN24TfEMtUBppmJ*Tj&2dRSTxYxh~+G+9`0&nb1v7{ zIHWVXlh$^!ww=fRJq;rc0-zXj;NjETxfcK{CY4n%ZgI_W%rdB>$}yzt$V;gj!wAu_ zj!PW+5CbgdTy0nF)k6uxhZdA_=SCr;FjvkIj z|K$?UJEi5V7WwGsSpcN(gsKf@##iLk=*@EVnV-lfH6fxDTdH=kg(?7Zc{g)E9~^pT zR~dpnjXcK0i1L2H#*@|LtEbxNqL0nYuP<`Z26zNyAmx5IjfvBTgB~fTf`(8 zmw)*PkI>thdgU@sWNc0eUV8x8n4c;Ga**iY5T&-N;0JW)t4&uZAp|P>3Tn9$gvsUx zjaD1k#A{W#i4<8RYm3`T-SAeEZYGSpE!wwsUo4sKi%r{4=O5RwYh><7HX9#!#AXAr z?J}|=n6~-10AS9?|Buai#RL;3zPtFnk_0!$SXKkBYD|=I3I2vQ1T8Qj|vH0;eal2;&<~kPwK&hN? zhQ-pBWiZseqMVD1%ecztHY3K|o9-R``^FhK(TzM-3mq#QuAvuUfG(L1BOWf&HbjY} zbDIZdBW`9Fc>1ep`R5*rXk>ODS0Z#C`dsg%PPqFe9fR{*Gz2)Eth{f+n}0j-gUrY7 z9e@x>))mt9K5+)Wn7*|FO&jNoUu2%)1G{Fw_f*6V4cE*5WB*<;RalGksT%^-&mXmU zI!mlHgFi*@m-V89;^NtG;yrRTJ;htq~+gT--Y5BI#KZ0GD zw4<6{>MAE2mub$|q$dRP*7>zT^aT+GaWRUWUX_DvNJ{Lt&CH+f1#2rOK4W{^+uMt6 zVR{jwXIV{gH7U{wFi$Onlm4Hm!<_j% zo~KeLia45?-{Ca>*WbEzgxl=^WO4?CItp-t1tRQZ$665Xi*k@@Ki$K-c%y03WPE~w zO>HH5YV{WS38W$zt%9L+GVOG^>r7SdN&2PW+Fa_xr;OL%Zb}76>Wdb!+b4 zw&PDm=bDI{jo`5m8`$tyS3d)z73#s^B&78~iK(fkrd74ukat3{sbR@XY{dYWZY|He z(OBugaeMSzjX|VSNsAq!tbp;NHQZ_D(cwn!-mAR&9Zx;uOl*5#&hyH_7MIsS&d)FM z>;6=s-5j#-eGz&K(|C92^OE|oewMtxZG5@|iGjVS6OZ8(}HVi5MGHf6Scb_$qq(^M&_GtEhlxrJ1}!=7(luYgfZ{+HeUfBq@N5utg+ z4i}b21MTIY)Vl=n<$0!M*iQiWI#3(iu2imj#CmY@sR;$2owFO118q%O^QdShZ1Tew z@NnC_+N#7PB&a}b?>D5LGJy%&8FO1xO9zT&HF6IyP6%6c(y-Sk9*uVaC-p=5lmNLZ zm|%8kWk!JwQ^-G{cN=^1bC~F)?t#CyLP8wj);<97bgj(}1-%8znC9PX4ES?Zfz6^_ zO<=`!9*bqd@lVpIM~{7W#76tN`Wu7gO3nHdEB#_!Ygapt=;j8;>_mhwR!qHHTN=8A zs+gYsJ?TrD7cKtot)-|Np<#dzrp3(c>=l@!ixSt}Sh(bik5S=uvgc+I!(d?aZ4QS94;Msm!H1{cz=d4Z`&^ zOd~I@wx|Dd$@N`e<x{DI&5EpU zXjQo@fHR(dIkVgAA5_jt zn-GuG700*B+g3j=ONP2Q@r&-v9?q}h=1W>(QoTz$ zU!S}|2(>EpI>a3p6YP+3$#VetC9wz;kE>GCB&)1eC%z9^Xa`mKbl(|(S$;Q{8m(6F zG_<``R74U6Vs`B!jg@?wQH_gEAPrP4eYbNpj93Jju3tA~CI)CX6PBg(7)J&pSe|za z^7~J5%!FnKP&(BKg!vNVtIY+Na%FStxbh_jTiDQ7t?&8eJ(D@;UJ!9tJRVn;iB|Jb zhn*gkl$5jv+6)-JG@n5NS+C-UUo@W>O`=Hb%*lCJn(K z63;b+P>(^qcD^i(mFdjj`{%Gcpze$+LREKZoaTYLCs4$GRoDQz!3H#=eJEuUKN=G2 z)NOegh9)?i!yQ;3hlTb_5Rb`1OaJk`cCk+0Imct&@FTXrHRH_KH%L}gPOxEh) zgW^hDzSp82!Hwb-s6LoqU5K#j5#Ibg@XjJ!$Y($xVo=NcO-m5gUQ5Dy#qM+JDG~19)df2;i2hYG-h+KH)hjQB_}1i;@Iq* zRq>98T!stdTt!RzUv6^DCd zrJD`|U@ylwVX-+)b4WmvtuF%X+{fk4O`J3k!50FgYgff&*$29TE@%R3)}h5QO4m@> zq@}H2db(K$s+YoY85RfJ28*o_KIzSFkO>Ppx4DEEltRhdom~YvVd0yN(pDb;g|OJA zqKr7#QNw!!#ZD-DT=mj6h!ngugwPq#rFt*n3Jvq3^{A0}n%CIm8cF`JG$Xj`W(w0@Q8IeV!IH!f z;WNz>u%yFG3)Jt*^i99)j^`<8Q}wm_6K{!s2E%N5IFZHXis#&X`)B22OB8)$Fw3u8 zJ7FLE$}+TdbqD%gWO=UG{)kR;(&aC4Nesb-J=Z)JqPA$+ovmzJO&cu3$*p{RU!fC= zd;APwWt8t0xwyCvxgvHpqx01Ew~w~%R~s6ONJzL`9$fko=FG$aK#U>a_eA@lT53BTGPhdYNP9% z!X$M12U>aE0Xou91s<*nLCf8s5I5Um4npfI2?Is%3DWB7Fr8m74>0CEXj(E|DWB!` z_+>cOO4W%7xqrJ`c%Dl61X*QBI! zUly9ZI2B!r!*f)*4)g@hKJBZ?5pnrF7*@0dj4tEIp?(bgs8PanTKE09O3)y;XI1 z;K%K%%^}rYhg2T8M7n5No*^Bi{g^fD%ilGI%2Jk*w}ugt%D1iv5sl!NY97CiB=2g8 z6sOihg_+)HM5V|9y()v)X})>eIf>MYb-_4V->T9VN<-t9!_odb-XNey_k-;|rYN&g ztB*OMdo6+1Sn}fm1qM*&jrx$*W8F~rmGxh^YEMjxq$PCHb)dNIP#w+UO9xY}e?}vE zUhmGP&ANiTp}U<5C$id?Fz9KV_>*1s8K!!dxGqlwY4XSepK#lu`&fXpd ziTGUzI9r6nleKxcDw$!G*{N@jYpp0ru;iQ&`_2etqmt<{K7Xr?<2PA{a3tJHZ0Ves z*~>6ppZZPyI>Gs`s#l(*n1ZlemG}~2-i0zEuSD}~@2G0rYpipaI4A||R@u4{IGa^e zw_MY1UJdy@WeYX(C*JcOTQZz@XEq>il2u;{de)s03TlGr^*|=`yJupo=JjZ$>J`fc zAcB!m-~AOOYAP@U4xUqa2nn^XtYz3YJCnNsgwKbnrx!6)cWW=F!+}TvlOp5y8%MxV zz?SDTe`Ak-OY6I|Ha1|nY#SC`;YC|}7HpRNp(#_CyBu@jPekE$ul47`Sb276TAg0& z9)Z8!XX&0&l`qHymXw=w(!D3VHzw;SNWy{KPO9lvs66($E1gH0s}+ zAaY|lAYm=V#^nw&1qIhTpHX*1vGv7f8IC_@QPk1J7o+`%H|%;a^Ey3Q=WgGWLwI|c zim1@Nss@VRn?9RztH|mLp1zC|^YeVC6+#o{dE3BjqzpgSHQRiY!JU`3mb!lAx9FFI z_!gaYmH2%NoFjfo8!Yk-<>e&(VWl6l1R&W|)>2e-EjreJ*C(_acAHj%-Vt-0#aDjR zu|dObSBo6$DAz!mpAMd)`SwLkrn)xy$6T9*mFeaCK3kafb?>{NI#^I&Z2HP*HY|Sd zo1F5~pThRnCW^qx##f2c2;mRFtQ6z;BeiZ_9O^DV+KAm1qaKyFUs{Uh4B5OZT|7OI z*iTJ3vN>7vT2K8_sj#Iy2I~x6w#x4;f^JY!g*Se8dMZLpb9$>P#Z8J&@tvQ67*-W8 z^wkxFZml}&UV(Vjb+3(=#ks$i)gzv%RNp_P?Won{SW))Pan=uE#B?kyf<4nOW7owz zl;#zhuzb&cs-Em~$zL66ZA`_rZaXpvXeAoXWM?+8mHh|c!UdfLTK zp_`9s%h=trdZ#1D>zw^ikI7Zlo$<3HbxO{SS*`Q)^J|n~z2nNx{H^=OiH`c?Z!e#- zA*CVg0ajz&Goq(xwoN^t;+ya3UF-De#Mwr4nrbEWu1k@*DWs&0VHb^vZ#@^T*X@n3&Zv^SwId&0T4Gb9>vulyaif z($Kd5#hhdO5o@nmhZ8GOFE4(dd42W4evgg#4dk1wM}EJdCwZrYkC%^X?CFbK>Yv_8 zQ?-^A{gZq&y&MO?W;@p_heuST&BY8M63QB)J$50T&hpYpkbn8(q6V4DfQ z&by_#O@!|}i~eTDiDh18HX?r5xItjfO_!pHz45t zmk0m(zY{fY?B&m{qbbqueo@i zzUL63`}A>ZZAQ60V&?~%&Z`YE>m&)#a{kMZsaAYZOTRYBj{)5ZYg^Bu<{5}>n@$3>;9AHF6oDT|LCQzGUDeUkGu;gWDinFA zn)X~`k&BzpM6N(Ld3bq6scRWW-TCKG7Vfl-qmAopnFp%bUDpegN{;93i+B` zOYchE>ym1$4Mz@@2uCcBMD`0nWa6bY+xEQ!8kcy54%Q{9+j+n?Sl>oiZ)dyQAhvDJ zG6s6ipToQyxGK%F5L(2j&ymF0(c&&mNWT3p0;DU3EIF2h2TRReodAHuN4W8KB z_j@|>0l=xCj35Z#>3WApJ1fy%3*}R~Yhz{Tsx zj7Kir3-!Q?I6=(IE_WQLmWyR7sBF+;#GY8cYdMv+FAy^@brjRzetQZ*{BBBrd+J;? z=yx_e`)x?e<<~si0TWy=YORh}A}*Vr^gV#faAG%@B_S>kgVFmQG(f`w-m&z|4Dl8hu^>wYj^|gRiyMlKk4%pkG;^KM6)6Hsv>DMvNLn#13FNlYRLBUv?b&H z<+pAm!PM?&> zlb7@mLpxGq?iYb4!2gYLk?Y3ONQOYcM)Pdm<#(Fz>GGicj5B@f&eKilk0vYn2x~DH z#`lS}9qLb`0kCb&%5d%}SsNQP(#D?sFXaZgg@B5JH~BK=HvMHjYt%eABKqpA(!|%a z%BT7}dJPiFomG!~=>*i@UgiH$kI`+5xS7#-J&~t&F6XKYjkfwoO?&piXq}M zV>Sm(7%jo^bBwB_b|a!d&0sF8vm)z3klM>Ge8tq1!vM^zU}J>ae}8YU>5=%jWE--t zZ`Y@8G>F^+q1!nS{)?q9|G+>NK6OEzw)?^0+0dSbMrNWvy_RGxNEMr3KZj0s+EHD2 z`mGncpwrQ;fY6_K+huvf<8w!zm-Dd#wZDdCG~CmQqCb{XG%#Jh>(h_GB*b1 zURyNy)Vm+Y9qO`_^DLB*Ue5nioDB5_Ncj(W5`!si0Gg#M`oCt3cnb__4Yd!@0=yZq z;|o3!J303g=xSY%6_?y?w55KVW8{!Lzom%8Uo)I6+|?TI7bBqWCd`I*V57ZSPbO!| zP-o&*YZ2SlesS){A-g}Po@KzA5YNsz6{P3Sksx3595zCmPYqXWd^*Ea-u#O1EWJ#H=<^Q*9%6vjB z>F6Thg3WyZ>kX`#5PVHj8=nb)EabY6KBf^~>I~$1bRWzh6nggotydIB0|s71$FD2S z3b<6jmVnNsaRa}nO9qw;g+G+L_-_h;P*pnV#1ZI+lsyT``-P(WSK`ygM^((Ep#n0?!418o66 zXKo^HVxU#&9!RE*t^+ED`8w~$;&?>Ll2Mt@#nElFP0&R5d)L0&bkuUt2id&^-%LOd z@3OrPs{(SiFHzU?>bZ9OPj|;7f5vZ2(B~M5iAQ*C4zGo6B_e5LeMH!)lX7p|_KpTp z{S3ytPq4wSixflI{&v#F?U>n;BF^&8%3*swu;HcbQ#QWs=EZLxO5v>Bk5d=MoC(SP zQHr}2ax>u1L8BsERvt-w$hfC4^ZMxaw&k<30U+v|tw$AiVl#_B#=CzwQtR74%x<}{ zec1Mrqh|*AwRCsF)PFLl8RHxC7EURGf;$5b3qYhu_01MI*VBc2Am3e{*-WKWn?TPr zO_82@1-b5amiYLXzUg|D@p}Fybh>*y#4znLO%Li(OLSsL51o^Mrm9#{lT+nX81qapX7xMSYdG^i^;MN1ox1>Wk{JIW3tiw8O8^@GoD~T_n}VAj ztly=ksn#b>tq1x3{!(_$vsY#p5nMJbSV^=XotMw7Gg-fb+Vt5=lbQ5)R$sI%pPy!$ z(f7a)U#@G=<;w5sJ>gWU(kk79VfR4+eg+^=7Gy}(X|@zJs=22VDA=IaaTgu>ZA_K! zf;HFWn5`^?IeJdA04Hu=YjB+tOA8Rk8>Hg zr3H5vhvTLfTR^GofGzq`34=qQv41VdbH>NinNQZH+XGc#vSmi3{Dt)s>W=c*T2~Ws z#n!;soIplF`gs9LnxPo8y&&DG`pNT%Y7dlJg*o&aK!W*{J^avg)AR0F2u{_3_(y=W zPiV>_^f`=?`IsH8SG(ih^WwLylEp7{EVo$K zTTHv#-#X@=@8{97+z5&pRZuZR&5hV3ODxx=0^q{5DLlJMcO0(w% z%Tsct)K2oWb){8=Sp!hm5$jq2^zhjKPz(u1XtLVjA{Hyg;a2uCU%GAj;5Og~)k4+m zHestv`nBYl20eqIFcBx}ko(lUNYe;VY9w+K@p#51Y_IAk7F~N|bnap&0aLc@paZjT zBcsPsUw~xu5`l7}d6B!InC^w@&X;ia!6v5f-%nq2FBREU(yy1EEB;K$VZV=?Ze4QA zXg@_;S--m7=@2GuQ>`6gr@=8AnCyN9o2~4zw%8T8gg(rlTMhmK0oQe{A*&s>cG;M9 zjmMHSuA~vR{2G9HQX1n1tj_^QIjl{3Z481KN&Ii_`9PU6hcbm%*DKmupum()jwWN+p`ptK+7<>vRX# z4H6~mhs+sA4rSo?0-i6Vl@htSIDad~jKa5T>@8e3wp=pgJYQpFAQ-{swodw`kQ%6~3OuX{xDYrf7opdE!Q^sI;l@)S4U<0Q zhhG4y2+dqAEKrxG0)vBbCsAW#fG|WX)4IW{U0Zc$MAAqTqrZS^-_fTg9Q9YdYHBl7VWN7O z1(0oWd&-To^O^X%QQqxl9IU75Jw9D%qp)ikQ2TrUyqg)OELn-l;5mOR_VgC^RHFIr zGeBu!4D(~(Bw~cY?L;?fb_s_%)g~T!y@#oQ>= zyMB#fti7`X^^IF6;|Ga4rfF{$iCuvnP#~YBXQ$lRLkazQW6w=mT^}E;j&%q@`$tX! zDvkGJynfyOJHgU=KT>)_6H-#nr5~v7Mxo5a^BLm(UKK=ONq zwc!+B!bktdmA-I4N^$@22FUP4UkJN&57SW^UpZF${t?+BZM~>Sl=;7 zUFQjS^f~FFOk=v#u zBg1)w!n=uos4tBPmVgj86-omTiel3sHgyRK9T-^2i26~9tks%*8F4yUqXf_pdCTv7 zZUP6Q={*n2-ntF5jogg|pXraH34iL0JJ(5xy`VpG(|rz&MmjKj+j=I9`2gJ%v)Kwg z4dS32)-|p%-JOex`o4yw)F8>W7t{Ys%avCwHQ(}Y9s3gu{7<=s!J25t(Gyn~%O&}N z3YY?`BVjS~Cx8yzj4*by>qSmoq~C={UubIU>7}%0K0NdN>b`Bsfp48U2ehi>IFoT) z>@{8O{oCk~ULf12ybh|JIwEXG+zIXly~Bo-)0~*mYIT=h=(u~J4yfX|t;&trS0)IU zLos{wv1Ia3aGtgD#bEfNc16o`-HXeg%pT>#^r11^biz4zc!~sN}h#K|Ev@9n7~Do(la4B42^WLE08+5 zCCR=_+0ezBp&q9S#XC66x=)_^i<6^WPG1MAdm0~o9rBqp&!Uq6SAh-Vd3wD;^`LD6 zIZo$OKX<{X>a-SikuVbN+!j8P@%KFwA7{%n)SUhK74Xbo{*UVZ&B@~9Viy^K?WtSm zM1)c=&al6TcP|+apQh3x89syZOmJknwxtpX~4+=ti60h@xXLgSgEG! z-n%j-pK%Kn{V_uA>{(>|cB^xjL;*ZI$4 z|Nnpd?^kG|3$i(EBwuiZCc2_UVMM&$2A$*F#~F{fDGpqzw`;Q3|Lmm=V|h0LkVqCJ z)hfU|DAkBYe(|ND3{Q2XeP7^@$pY%4p6v4d8KEqsz`*sDG&XEhE=d3rzR))3UDl35 zJZaQEpq6x>w*Y|hHE>&QenaK{`O-kPwCQh46%*yR!E1|tLb1!}v3HRX2Nhp5?7t8~ z23>$fiQ&td`12!cyeml3+mXozRO2MWh8M`fat@;sKGA86`AlKdbal1pR|RT6PMc`m zUOn<7=op}&4{dDR68-*apI^{825hyW#`Qlg#r3a@%O{>q1=1+z)1N!9@H5vgAEEK( z9u^D|pCJ^mCLVdZl;E{iN96d$V}{Qn8q0f(lq#{un`&z>*0XC$Wf}2y%9vWuFh35S3s^vGd++=>B}pw_ z%djsOJ$vhBP*Cm3-Bssu=VAPWda4w<3VP_@cSS4|_}~^#)ISS?U}f6zLFc^p`aXl$ z6f>xIL-jLC>e!T7m<$wVPazuwsfmD^@NHmL+QV`Uu!OFttmTx6o?%Gl4V$Q_2O#5rKc!9Y zxqt&Yw+QrI0KQeIARJTB^!?xzZJC1-W>eA>_ELNZ-uO*2?wwV6Rz1hUknGmxGbMEP z(@{CIxpHMsKO0|H%&&Cktdv0agI_ySVO@Tp%%VDX3Y)Xb3{=_QWp_JPj|$Aa&DwT{ z(){h7xmM10rFNfDeY=KLoaXXO`=>F4gn*d%QpiQ?PqPN<3KP%(gMkwA3ok?#d@XGTR|#4{EJe zGnf6co)N$K^{4!)bU7++tWp(i(`O@1;KcIFyZ_qYYjn|B8*JNkA6BLI-*j?}$gE)g0+c~g^OAUT!Y;>4^gRFnVT`_UEkL8AWd^=~D)J+CPq3K5 z%Dl)r7uVT_xqxg6gv5<-qMav~-t&>nl4L$e1sA!8jNrr0VMfssS;n%KAvZXF{rc5k zWvRcrF^N(7V9qt`)2K(&#o&WeXHXfrum*v=2l!Z%$B#dlW*#VKFB~i})B3JXGe{OU zdAhAm`^A6yNyQ`nYlY6+rF~rSqcF94vSf>@_u91(r460>&7U!A0UsK}{6f(Z{p;Vr z8`EaO0~1q|o2yL>C{7f7l#;tJP*zqYay+D&GP?N-9Pc=`P|u-K{>V0@L^$rr2UU@t zq3N$7=7{QN?AgO$=dP@ecVZXZnu%d^U!sUc_|83>(<4$mYBN!*73N59wVVcu>)VWL z9)<5dhW31(5Z>%g6(pRfyu2C79OH0s(I_9)!<*9p6U`327sD$(00{Iq2pi_xep{k? z$K_y@p#$5=yW4J~+w2t#KKyq>XS;cQN#+G^bF;Pt+ylIXBid%vhq@cIuzJ|{+iL4V z_F;j(ws-hUibB6&OzPYWe|c}CU`-z)jNiDP^ip}?!);ltko$B;^2U6wzj2_Gt|lc)&D8hL@B`v$z-~MVTjQOGQkpfKg$R-?6h?dW;*4$ox=KME`(qBu*4Zkh3PfTc=oyCCuq#MG?lgWs{QI8mzv5uD zMR?d33D-yEKy^Ie$6aSkE*9^f4sJ(gh5NZikF4hdns^7qeGOc_-OHqu4BA7!c^?jl zS#zd9MCi8%O6VQzQG0MF& zrOYXP`4W(Q5(!6`!^c*`)q;t>zKdRwiL8*Z7a>qP7`rA1&FO1{Li219msUwRs~60s zQg0MZC?mC2dzY(1P>iuumxP(_Z7kD+NoeUZtXt7s2WUT%q4MYx*Ma&^=qkOH-FsXr zC<`^poTT+G+S2#e>((ORT3y!_+##E6BGwK$+raTY^+u`q;F)xxfT+Yc%ri3n92{3h zK6Gp_#!26Yzo}tzkO0+K0u8#fPz4@;jiK{B0wNqG)yzWoSe#?2al%Js$=mm9H zLm8pG-q0^NlVNXh9i|AmXjvkf6Np9p97$JKPRTh+(cHbS0r}Z4$nCbQHya$KoD`4>|t#J*OT0=*%I7-w88ssK}?70c%bgUw}`Fbm{`h$ zsO}kB8RgpzX3<3C>_wVE!7)*%)3*+F5&h+U!GwtB&xS}kCxPbRA_3ON4N&wD@c(mp za#@%^7}Z33U6G3YgM%9HS(7ASJ?#Y&0i7S&g0I`~^;OeT+L8WhWq?laE|0{lQWABY zrtQ?Y^i3+&+ULD{&+y62=AF?r@7j&uM`WX1`ad^tA**@hW434bVZBM0L{>aH$Rb0S zg|?G=xk2qYol~2ECJmY&xL$o-lCRsY^Nh;K%eFrZ1La7-YWi7ghS7dRTji)vpNcCm zxX+J1TEJc3=ZM^|?iM+vc$0Ti3D0VSn|vukz#YN~=M}f#($m%Ls}nrxQvn6pDLZ@B zk}s-eEvqGlgv{_2xXxEJo-Ytw0ZfQu8Tjxn{u%9;N8+XBtpF9hCPjF}LR!)87w01^wKX+@+yRt8Z+V(lz+bTip+%*9HBwIRqWNrB z9zeI+h`P0-F{JvLg$BKq;ZP5^Wqii4Pyi|cPjp4?9fr6cBvrW$JdK>k(AGP;q*Kl; zZtm9_Ci+fpkId)PGOGghlyVu`bz~SwnyBA!!ENtZz$7Voz*- z?aD`9#w1XDXih2ov?X5Wd2h^MH;Tu~Qoe2Xdny|gqX3f-@XG9NY9KUdK||6&@?Wjv zh7T>DZ;|55uIh(bYWZDG*U;q5hkYu&PhwQV3RcdjxpkF|gJ z%_!XmtwbI2LCf4wv0UVwmY>V2>X%*rq65Y~u53`>ojMz`GEs1PW#(|Pc}cB64cQMG zwrrkWa4SU(&f^DEWioWht)Hh+-{ON8WrpBm-i--~@S=N(cj8P?ZVsx|I=*;s49z9O z`~#A5LbuXU02hi@-Tgck?3|m3MY?XDhC)c`L4*A!r3PczkK1LmW7qiRxMZcxRf{s# zrx`QrAy-$N`?toKZJgZJB)psL z@Y1mvpR9fQ5ZxA|m-_`CNuBSGZ%`a}i94fg;y*fMsU_g;MLQMTbkK+KPcVc%ai#Nq zlx3As5Ax~s5-Oz5^s-+hcG(=@LDWC=931kKw$5yEPdx#LSlPPDR8*!k?pY*n8g$-& z3F{87=Ia`*^S#=6t*)y9!{I;xe?CmF`XIRr?6qiJm3~C7x7ovVxP#;;ue*KWt0eJU z(eV!3X?L!r3_=DR_wZB)=OxP?G^KmC$l2DkHBsLyxHOS{%XTk5M5n6tG-Rc~))f%u zTU>$sANIccp~+wbGc#vqPWha3QX)zc!@@qzpitmH}IsxNB8ljx`j!_nIKDHf5~Jp?h$&vuPRpkz;w+UfjpQ+-|rO5bBnleFN<> zN^W8?j&8zJT=*skHB9b4DG?ZLm|^g^5Si?UHYC?7gh3rh6qMBp?Dr%tAUF6)+x+bp1cO-2TpY9SH6*yzA4x1HWib5tLT)7ir}4(ysHr!ysxBL6@e~$+Q2^y9?c^$a>zYhlDF#IEBSxv4o7g@42)jPU(x%^f>XMwQ+e|gcQvS)5j$!$>giUW{1-okG ziyFOimZ$M=^Cn94x~ud(yyo5>18OeC+^>6OC@}cf<_%7ChtJgG(9FIGEC=LTX%4R0&8$P8*PQV*!yGb%B&Y6r(1z1dB7u>3^n7a}JO z)xVShSr1dNbXD3SA}2`bymt{8EjzN&(o+EUSL z8Rq3Um~T@gt8WUCHt>5rBJ$9x(~wgaA{K!kB8H03Ut>QpR-kz4l0_b-yoTX6xEmS6 z%&()6g|Xo)St=>*t&r}8K=vFeGLufhAs_pG7c|OHp1j+GTcV4X#+4h!iQ8OXktUW> zs)+u)GgR`?L7SSA9FK7V?FouwrM5e6EHzM3_3M!59wNpv;zTkg%Og?Lc1&xi#Qs`^ z>+D7!+vmMR_2!Ya(mva2;t_nmFl`$vPGVeYfK?7ZlD#q1syPfvYaHPlfb=6IMpl6E zFcqMJ&TLKDUW`RMg!c`l;brrro|^Cfm0|W*xAJ{|b*nzzH`#h*T!X$9|622Sdsri` zLT`+1JxWG=+bEt?6BaS^BDnopd@L(;8>xLxx2udu+E@sxPbZVw(*v8&*?P|r!V0&> zZ*DA@QqnBe@2b3$CGT7}#N({IHpZxrik+z3jWr(2@=nSZb}LN)HRJj#`ZS3;CdjPzOB;(%tLjro5gr9eHzvk_>Q~Pw5U)qR5Y_O_!h7Ai2h&%+-0!pZ97v0*g9_ zAGLbp=;yL6Me{k9u)JLmU91aonBDXKYdKdWOh3!Px^;=nnr54-^Opcng;OUJNc4^; zL1QH2+}GbmC!N?#;VnLFw|YHLCN)>I=qu$Vn@O~&qtAuvuCEV8UJ|ER2Vf@qs$iYI zB)2KXN5A`xF(1jVx6#J?-hyU`I_iiF9=1cuGR#zIcO=vXTv?T|J20H41%JsI#9M4P znyV{_g8-jvvm=+J%XhMD#Xak)w0c&j6C;NA0?kAxmV`WW2}^K^z6tYu-)*VY z(`MN9$CU2wO8;;V&LP>QA^i%4dDIvc^$I<^NlEfUt74%j63kZj@Hf6d5E12kt&JeIx#VX(jrlqi{bOFuE~)-d)^&S;BG z^9*~jF%}eXPQ_uYl&c%>l(c($UcaK8>?N)|5s8rWds`H{;5-?AUf8_Dv2bt``RLUn zcOB2>r>|y+v)PuLFBipepHBeQOXMk6iKmo5%DHU`)wL3fE;I)tVD@`3H(NomtVm*? zG#vf3TSn?dl?L8Bk<#%4z<61XL|!a(#=AGi@Rl*?dD!+g&G}8X-*Q<141V}lVUjtC zwPO19nE3P6y!YBjVyZWp_0{T3FP>_%dUi11D?U=dR9&jrc0w}HD`+n=(~8a`DRISK zp8g{cDq!jnws3swH8iWq-IdLcv?9c3!kM&Lmy*3(W0e|v!8h2naiiJ_nr0kmRT^vF z7~DD^;TxImhl)ODm1flM+S)Xm(P1J)nEl@Tb7y4>{A5p}o4YX^-W` zwZk*gGBXI-t&&!iov+mNJ+mZjGdK}-o)vD-M!ytkN<{C~faHFYHGFrTk27ZT85jBV z<;YJQzE3!UV!wFfABfpecfmIq;9 z*fC#Lt-%z|BW)E>2aG{ z@*-T$)K*7ONP|_Uh+MWZaIIIJQ$FY-6kP(>9^4&2?FAoTN#Po+Ds{YSsd^#mZLd{p zR>>uMs?yTg~GiDkCD*2B8%p$?X2ifLwvMq(a{r!7r?&8Pmq$i+7uI# z@7z_*m|CiHtxmQM2qg+}fMh{}8GWbhFF84k76n1&=SqhL%Tx|)%LRrzwp6!kWk%Dwzg1-+c+qi)=S@=T||q>XHn~ke*~p@kRQX z!D9~jsoyX4p{{z!N$H>+2l(fs1#B=}`pBat0>itN8AN}@z-95hzqTd+yXkWB_&u5D zlpp!)?v=JHFF{vOcMK7CWqLAoBZf9c+rZ1k6AeKZA`S5|s`%Gp*E;CRMi=wyFvCc$ zA0YfPx_byK;eeMRjy1(dl%4p-UaI}ZalAsQ)PCHu=(40spPa);q3MulHY5O3si>rz zWL%rZ2G8l7o-P`+sb|^UiLn#*f)*DYeZiO{nCDfk?b7m$ZGNUB>@&Z0i;=9nSkFWW z4>Z%D)FNE$n?STcSm;+m-cg`jtF}Lct@1&6#>@HGna{COCJ`VB)Yt9(gd?`PxsPdg zS#R?mIHUfy|C1;0aX(+7Q-R*gKPq)>JUl;mQ<|$bT$@*OP@y!K3Pm=quFm_iZn<}V zBc(qg^`v0U%ItK8)j!mzps>C7w^rmuc8Gn84HaTva_-phmN@Ey`6E?W%b~$S+t3Q1 z?M00H%Yxuq^r31{bFKJS6q*3{j0RmgTPBvSs6+!{CLKX)i5AP&5yvW2MXYMt z^ql!o`5GU_)u>KMPgnl5`<7-PR^6IE@}}T@pb8wjm8k>oqT6U}5x2wM_SKrb*6ss$52NfxkIUtb={e z7yY!;*;XsIgfVQa}wW0jT6(3k0i|JW0Zw!fNJR2#DeHBwWFZp!2 z%)Mq=P3W0G$FsG_(mP(jPRx0eZnLJBG@)%&taRx(XQ(gTCdL03#(5hqpzEbo*;2Dx zYL0%k9*fLVEN*rV4=m@`-?zAL0H>v8DB>*u= zcpoprr8W9tNiS?&+o~mIye*tnx21LDe(SwXX%CcVyk;xpA-uaM%3TU-Dnjm>tbe<7 z-LN|UhH=FMs!2r$-E*}e@qj25ojakt-eW+spbSuwkXUwfS!$}-^U)G`FXy#->D?It zE^axPxb#^Q4v&>Vh`h4Gnv{%^3)k~6gDhR0x`^LJ-iGe$w~qeDeO7y_R1^Qo70mhk zIfwrnx_pHE(&F_Q;1J`rwZ+v2q=3h48c{XwG1_Rd=k-pp@)1BFjRg)bQ`n$>EWXXC zzp8zwS39G#=&J()RBarXA?}$=B6wlkHQHH+)Mi#fcv|Qg$8X416-SoI?K}cfHNBr{ zJ0ry6A+M>oi_b&u1kZ~_@3}8WFUkv*9-evt%~maX-9HNmANK5~LFAD05Q}YV?e@=` zZ9VCx5!~449(JS3JRq{68ToOJjI*X+6;R(=IPvt$d}p&FsUMW*ySJ?i7>Ze%Vw422 z-JqrZ9Ok==T}7L9)!C=^HZOV2G%&6l_hD!opO~+w`-D*i?eo#fk+X81u8-PUSl)jJ z!F-MGaoYKR>KwV~9_vKE&;+3vMlsI45>WbUMIu}%v{^kSZff1C?xwLNZEf@74|@zD ze5jwF8~JR&QZ&>Tw0fDRYYE2MbdDFqvqL-U9}vi`NGL zGgZ;VniKmZU4JD={flt_XF&3FHVyrN+P~e&5B%M?fV{`juZ850f2k$>`Cky?;|Nbu;6ixxP$$}??Iy3)z z9scXdLp0soOe`9RPk($g;pYCdC*)?>u>5P7{?9KE@cFs)pVRRC%ylzSq0@gulT-AO zk9T)(fDgs}4ch7-Z72f?WZMOPogC^P&na;7?+-_VW%9YdY5E_WLYMEw@ZYES_`O%a z#C`{gaq~&gZ`l!asibe+D|lc0R@*^gpx@jH=i_NdB8%F`Wls z9H~>nT_^r4(;NcWtNQ3)njZg5YRX*z^P^*ORO;`tYX3nKke~qb?=18SQWbOnoL}&} zRt4Vwq5b2J@vMKQ=r3P-v!A$F%lYEMfdTBl5OLVfjP@6_{rj6*`+!S+L0ZKB&_2MN zkY7*sKl$PRGw1)roc`R0mtQnwzs2jO*s(44OrMMel9MTAdBzU))Z(ut&ew{wdv8h_ zciGfA|05TGQu78uCXiQ?(y_X4^OGfu+mBr}0>__bY0lI}%8&>Dhe>=R3p8vO__#@y zcJ{?8o8=;|HN7)RqP5h17@>HFgI9xuo|E+1&fl%@NgrJuBlu)$SG|6JSqxO_KCqkuXnz~arcH%h(o^QViGf&s5uk2ae z6;G70`)_RmO#VGXA^cFOgd%m9w2TTk#^}YdK^i$>0PZI~%`{BSx}91e=1MNjO#>== zZ>%?U&UW*HBe|4cB&ywk&NDoS+3L1 z-HL>Nq03=ple&=!-}84R+bHoFRL6DZT}`*O>gxsd;wver zK%X6{Rs02RI-8zi?Teoa7UersXN=1&7;Mm$RU>38N z*iYE*q)Y^+JWq+iHeD15j_oyxNH2Ukn-!^dUS!s~lXAauYeC?AmUwiuJxqB}m0`B> z5{{WcRBDk>_PQCy;WH(pQKAIK;1bCkF^9_-!$>@yHN$lG#FA?sPv#YN`QYyJGhC80 zlH=HmLIR_>cG;pn?@KVEY8irjM6l{fX+M$@!VvFq7Ov^ugF;lz#?FId9BV1vgAH8& z$+3$@oE>1C5Ed388!6E#x$#3lQ|;ABONu37c@I7aF8s0EtrbDN<%%NJf8b$z1;?;S z4BIojEPIAl-VBinz+HY!Txb0G(Tk=N>q@I(w8u^l_4-W3#@yc<*lkhM9GH(4wtP3# z>)4$Um~h+Kr1mngfLXxkww8RE9Ys@c8D28e9-&l=*fC5ox1Mf}iXoQDn?D;)3Z^`= z>WJedGSq4SRbnlxTpeDyY~6~Zs%X{*8+Wpsrs;R0T-Lg-kXFe_c845tNhHTMUfgZN zN1L9|akYDSmUC??a@Mga-t~M5i72({2ZWhiOi~fDYyp#=a!0X7j%}!F$RE}zyZ>c8H&(31TBGOF-qr8eTR835x zBh8{iTgjEay?)z<9k~W(Jbscr+MPnKwQm>1(A}f6ZDd?}4QxQ%hfv?^$!ecghUxL! zTM12!;cioQo?nrOWsH&tFTw6b5d%L&s^yhyJ%Dd!xUKdHe%MUOi`{gWP1Ou#|FewT zEf6{*6tL5Hm(5vrntVdoW6r{`#3#|jz4_G@#MiXuaqkVvZS&G)c}n0;9uLCsn6XIY z4Xu$m0mGD!yz+n|yDw!}Sop7+c9s#fYmiHU^;3mEyb{6Q&Wxl@ywJ)sv`}rr(i4M1 zx7bnQP#2@cV3NRcX)qerL-z&JC#@;vUey+jXa4+`G3!cx3H!eLU1eN3 zuN4*XPB(sFv0*e-N-3D#ak#ttjkkSPpDmxq2<73s3{Fi=OuETnPa>w=S6N4UR7y;i zY^#%Zb!Vpro2ZojqzLpV&-qyQ;K@?Q@hA8tdHYV>H7WS!%eUYlUq4aX?!ns5g~*0D zy`0@fvxu^BGGG_hmAaCGGOg5fby(2LQ)axcvP9-7pwC%>7T1U4irr<_>Gg!Qx z7zeXUxbJl&{z#0mHrre2%@xMkzD(_{eBZrMk(m=PIDrC|f4}ULKLDqQI}AOo1D86G zHO1{l?8@qPmmtQCBvYZH73q~DRX?P5z+h>q%H3+<1YSFnG?cP4)Ps5H`wTKWp1ra) zlQ~ZEVOu6@cm zf-A7p-JM~ai)mf!Y{E!|J*QT{sb&puFj=`JM!=l*3M&)lONsAdDfNs|h)v>VXrjoS zbbYX2CmqpNxh`8U!VjGj5hPdv+FBj8uFCU!<~OytcOXPmquXcL&ON^*|KuH1-g)X} zd+K3*gsP#EJN7z8^Fc@incatf5ScUv7xQ$VSYUi(HZWrVEOd@To^rXUg ztLWO}ai?OwDzXf=IH!C@NU9o}$MwbgTY zuDGp%zR^cwaA(`8BXCq@g9w3q@|;Cqi7SWCreP+yEIL8TOVtcM4fmp^e=5!5QaU^4 zmyldmOMLd+ZMFJU4>rZ&QMKn8ul3oonZ^0DZG?c^j4~TJrg{tAfvcq)j~85L+Y22i zM?Eli$3U7G#X4TqvLJO$T%< zp$?8#w?AINnD|x6qU!uieMkiK##<#^le8vwGRJ{iwO?)~1{ixH~Zc|aY_*JAC< zn;vB8c;H=?IGJ$C>rW5{e*=~^=~tedzfr!IP!A8Nl#O_Ph~zWvdEaGplf@1D@tJBh zzFlfS%Ju=~M=b?S1)X94LF3|eS+-e3f=;pW zlUQNrw2S`ms2uUbU^XcH+xwQ0XD?=1lVf*hc~iW46qkB3YlDuFlGJzuj$-^*4Km2WO;IlrBJ?BZE%dAk=N0tTGNL<^^%Te+1ol zh5yJ7C(PI6)x|nwFv;5mH0{Lob`MAebaoc83|Kx*^qumpAid7Mc|ZC_tmS}``3wMA zF5oJG>MVRYOlik|-P)$#gY}-fPOv1#ok;u9XdRRH!_O|SH5nnHIz5M2=}eJAR78lD z=W;QNiP;SHAGHumPHd+`*J~`US8hu;df_h&YOT^bEb(f}xhJ(}99Cmnm#e3{L?GnY z5EEsEr>jmp%C)^VXfF4xYqxsUJ#LDO(>R_yq>kJJ5FQDXshdIf>=#a5S>0^@?7WpIwlrOq=Gs^)J}{Pw>EHO|Rp;r{#3^n3b`FD^ zRyikE&?%OmmD-1lElDJlusWz}=3SF5OSj^Q-X(3QPJTPGlDVWz)-tbEb{p!TG}VZF z%nf#7bd#swl)b!Mk|m$?OzN>&+0G|-inKou;>6S{nZ1ZZxl0Z=?x%3!qv69!_tnSp zZ5AT0NSeUHc#_EeXKauE#|wa#H&*RyqY$dl=wWA;n6^9{W6HfV3vy(Hn{5XD!*yUy z=SCM7{JHme7AiLDa1bPKG2)qcq`SS*&_qczQ2eEot$*(QydyDCqO zP2`<##|U_N!I3x549p8;5K@!lDEkqNc7G5f)p!@K?ucm^_o7sCPu2_VTwwtGS(u)q z`2=st!^gSu6S^E5t^5umu<87OPDk16k6pqLJCFNCd zv8+SI4h{hoEU_2qPoBRq(R^<8fp-PF)RaLlmG;;-srv-Gp>ltOvx0Sd7h~7$B9ldL z{D-#pM|Ki7*UURxnMDHbv|i9yzQI%(T*5<1^qwv8NH>eX+aEH-DBy-F5Eh-$H*`$FW!?+D0E+`+al`#FcF*2ixT*uzS-=dM9j#A=19H>wp`i9_sf_s_SwB0 zG+mbTn_`(Nb!B3?0McBJXFh3j!>Gr#HCi^FVOMIt!g2g?1=0T{(bzhvqkIZ+w}1iQ zye-+w3nfc*`A`xKuV*f$)jE2;i&3IYxc3#djcMmeAb>4U>tsjNRB@p3n{Kl8Qn!Tv zY}LIb7;15H{Ws#o=Fd&`HiSkhPG|2qAp9q-DC@FaN&kAsqs4*xaRnqLtczs9xUEgx zAsZClyCq_3{VfK>3&XZ!h6n~LUoEH+YsaR-TpSu)wjdiZT)pj0koibxB@_X?XM%Yg zc8;lk+S%D~C9*P5J-G=X>NEo~SE_SVx^RJC=b_toSjZS=pybu4S9lR3(Z{ix3b+dP zq`g)%kF8|dKD?{sW9woTaK0sqP<@naGSpjpl%BbXw*nN><|-|%{c0Gy8fa zTdS46Cx5T2OTA$?H`aY`CmtsZ2_Y76bT}^^pT9LA#*QDPv%wUUz5h)TeUvK#f9DL` ze(4m0v$M6F_KHs)#A!sOV7De0mtGlNUgS_5{C%u+l98-i(o(S{mmx3ViF{~BJK9MD zXT-wX0mxb}3%CfpaLll{y5rO>N@LPW6Ba+5G|#NEW$x|isJzvz#q>|Z>jho;YgCapM9O1wCpvu^PeFN?#oVz>J;0^>doC$m--U8 zERu;O=Du6;$Ka>n@@H>H>o!AXtv-z3Pn3~*svbatF@a{PUnYj_u47MS8hlFd*&)Ta z+k!QJSU9AyfEf(1n_n?zt`(-V@IK_U?ANGDBsf5-y#T)hn~V)yiNs31D|F9Y(wnaj zkuS+Jhu_39Z&SmM8fC`~9(UVWRJ3Yw(eP&T-J2GYeg$70sn|XLVSu{nV!DfPLiElB zUEr-oi6xB)-n@!(;XpwB2Kk zn*=16)2Mckbe_gM6l=;8-q~9ZX^zdE0utbFB~HL#`cbIM$aPe$8)}Q(5VdycL zxGHkeIN-BX<;n{OwsRUBC`7lIKwhOovMFY#uvTJ-Gg(BnO25;=y>h@8Gk!(8mTD%q zGb19sv>rXYs)onEDLv}?@rx!3a9xMRMw=q*sGc+P=&sRDB)g{5($frChrW~|Ln2u< z^XUr|Xs8yB)XDBOs@zq=n!CQMWkdk>QO6;-gMj}b*PCO=C8%)TSN`qql_I_YX63*>;Ys%mXq(AibPvQw9z zf|WvKN#QGXAd!{CEA>?-H)Jt{4rrx2C3fOnwqpSi3b)^^E>EgiRa~uT=T-WB_%X3a zVZ8pUS+<P|vF#gF@fGk%;9sghz9Sia=bUpQ_-3SQ72MYZ)t~Jc}9k5u6rb0k> zhg-5#db!8aIPPSX8m48e+AI51d1jIcV3w}RyF(e;7#kL9ULA$a+Mb)KC66`U! z7R9=42FJapB`?X;bkQ;Hn0OUM-r@=yhhZD;5x)0Cs0r0RY>B#g)4Wl$u$LVxRgx6q z+j+D=%*jJzZ+PXn8k<%Y|^y3QCY7Af#CmUdIB0+WU^ zEvj@A!Q2bz2J+I2-N`_^XV7rys@5Nc&LAYf`5ejJnIy4=Tu7`ugr+Qx{jy7-n>a*R zo-!iPgX(P%rnd6ATNLl>aOSK4)^ zXveqKZ82$!mQLy$nr)<)>|eXet3g4lGx)}i>`nB#zjLRIb#2yq;e<@HUYfw_IblA% z88sQ_Hj-Gb^z~MU~$Oo={FSEJey0wd{*y!Qb9ruO!Rap`C%;3YmS*W4(!xE{O<{^K6%fw8?eGiGgYpEzl7X(dt1h6fw8pW$%CZvz$2$eWGq2-Xq>s*lQXx0{1dtay`#)dy>Yiz(6| z7gHW!A%-myG~8B9*&S|otC4h_`63afI>lS*kj+||D-oAG^!e8GN?$+gMBgSgKg|8Z zjD(q&5o)1V!1vSDPTJyygC3Dfw5&D$!= zXDX7`BH{qWoA+E2&4o zanQyWIy5@&OIAF6S>}3P_4Z5Y_)+%|6AhP8Ha&%av@!ojrl~r}yJ&(5wm+9oDTF5{ zH7E5*Ra|%G*Rx--kMH`2VBa)8=8NRat_oJbiLv$t&rXy`EfN*lS!*$T?$T1jwsY9} zLmkd=Mgg;&&v?=1R1|%Z@zpAEpJYgmhyb11*B8L{KTdYZuQXrutR_8-16|~BIB9ih z!S})f>^1=RuS(i^5-iZRL05NUx7`dU-F}w&|A3=+fwZ(+y!C&KPLDzI zF~KX#%r&cX(Bdf2;$WIHEzzNr>w4F|c@4c#Hr~#}#+QQ?E3+9j0nEf_zv?}$;%Bf} z6kVC-RgbpxL*=Im9~&9b?2{Y$Vq>TFU~3t7$tQjxkX{)u+$-3gSU7tYu&agRjl`l_ z1s82%W|ebGKmP|_gOfu4`zz0#y4MMJ-k$(|y*G6NN%S8{u|K)4Bmd-YT3v6Xpv~U9zZ60iN2fvkTbImHm@mnfKRXFvV;-}`RAhXO#9-zoP>tB!my#iq9uh-soW7y|DPJ24h=WIz_fy*N$()O%r=YPt>f5{hX zd;oB()saFd zR!`D-YG!chl z%dkp_I}Ts*y8-6PjqeXz9xQy_-ypA#iZX?5sRca{tLIm;I+*8$b6uS79SM@N+w0SX zKpbQcGoLz>^p4;;*kNZ0OY-dFcN;Ym)|SB~R;dZbV>2N^3(s9N zDb}!Q0P@>fCV%tx@Mto8pSgJG5;)xxWxU$p*W+`53Pq>cWth*+cc}b&ww+3kTxDG! zt?{U1Zt?)7xB}x+my-~yC!=*#UUO=yP&s`g-J*YpA@Q;wwMGvBRbSb27~;vs*oU{A zS8eS!Z?qWwk=s+`suqu%_*5_K(4txBGwb~}sP%>ze@x8SsL}A_ax2d*f>uv5$Z~LF z97G}z>t?s8HL?WhOGbP7-P*I&bI>$dH7memdr+Jhnbvb|6zOk%l{+p1WY4NLCR1@1su9qi$9PG|QjH}_ynSiV zTv2}a?iR;wZa^^fFBTzy5OQGOIAT0w+; zarQoa^Yd(&YJVA!{p}{o$Nx!?Ue(2Ic5UV z?yJJBpvwhBws~rJA^Q5y{0o15An-F4oEea6@m{Gjwos@`)D!Q>xf0j=UJs>Jk>De| zYTV74=aGMV;96Jmrl&}p5%#8O^&4Q3+!w?R-r0}(soW|Ku0$`^Lv`FPp1W;U;+~2y z^Le~y_9)x-h%rU7!nLI_Ni$+keWLQs2|5VBUfT1EUho3zm&KztR7t0W&}xw>fy{>) zFHKxktYNzY1=Hfc`#eELiz}nxS%&G=rd<7e$kZ>66&Zp1aPXTNUq~HFuZL>k_lNA%`+8PxJ z1i=(w-_OhPI{!Yl$Psd|SvQ|^dNHu`Q9xf%WJk&@m_yzny6E=RVd}78V;i}`_n}JN zzRdR5;|GKjxcI+0k`LW12`)v;Z$Nq;uY{#qdE*$2(@YkhZs3LL)XKIr>X)1s&)(Oymx)u@Ha#X!(mC^m!XBo#ZC1u&V{MH%A^PXm?c24sd z|L(_rsT$43S}vrO6S_Q}lyA1=-HXadniC8&{Gr?%F25HBCo{%{^&R6LSeKD|(PNu! zUu*T?31l1yUVtDOffd+}?vy|1b=Y~Q4Cc5W}> z->(HBh2;}K^h~Z_ImYH&UR_Gn`H=$G5FZ@j`T69XJo zM`N=Q#%R>x8tZXiX&NJ9)D1J`jf99^5EqIoL1@)CF?VWU-CR5ran1FDW>jT#DG!^< zN}9SAU0Gi7-s8JnUM-syJ=qY5W^_Di^-53-^=2J)z08MFFB7{)P=}!^FO={w*p)}X z?Clt)ApD_wZ9@|uu)0x~-5L7T#hW-5%5N?cLV`DapLOX9drT&6G`{P%dP(-MO50Jd zAfj8-4JK*KD!dMo1u~sDJWp%H`d!Y_!Dr{QN}0;va0t`I{fG&uDmGOqWEdJt&(da{ zp*w1cf%%dOhSihBpXjXN6_r{y>M(KL-)6rpRe%O%-8W7R+Ab}lC)0+0x8Q6&li>+v)%8 zpxgarKTc<+;!~={kA(5>CmtUI0<+5u16WhUtID)9CA0oUEV7~l z!sF4I1yE+UY43iE`sls1dtooaZyKZTy}23RSE~IiknIb~xV`}t9P*&HZn1^lZVP_sdhdJ*c_$qQ{=3~dcSS` zet6>iUQP_7JmPA|$Y3YvjPy*b$9+r^dLkdh;Jem!1}MfDIqp4jj6Yg!p?6KQPW*v= z+nbs;VfUU>-D34g)kLWi?jtWBEMMPBw;FObB^o1@_F6Y_l(2}|ma+Nx%zA-%u}Y5t z-{|WXb}x^@&41eE|3>^`dc(6n@A`S;7PN(~7pRlOk>EJKYH0hsllIqL*5nRr^yT)e zq>Z^PX3XPK#M6=YUGCwi!*JN%7|-@@N%h9q?W$lX5N|R2x^^^N9lsK}?%TKc#c^TS z6sR3;uHC6qF})Ks8>c4STCO5Lc&PelGDJ6*lf~V3(zI{hb*1+U*1L7BGoyvx@k4>X zmFc-%w6E;S=bFcjB|RAgNK=cScvGNxM$0TqiNx2@tEv54XI;YJ(W$=^`ywcP%p6h zg0q5khRXJmXPUxHr$BiyR)-oXO1Vp8Qlj2yl~4Y(6to;xW1p)=b_1=Nh=0VHa&(Gh ze3{FIr9Ji+;h1asXx(i1XAIqcuDb6j3ioIR3XV5QaygX(5_!^1uc2Ra=e}mAZ13Ne zIeLijXLsCxe)nfDnce|v#ly&^UnE@l_m@JK0F6!?@$r9w?cY5EsB!Pkdi`2l{ilTg z$P`efvd;DX>M;7ZQ%d1FK!Kvx)jt58|4!V$J$3LQg)BfN1VNwvjYZ*~O7QXf00q}o zXa0=I`b*N4p@3qa2~z)G@cW;DFoV1NkIhG3idHlU$(QkD<) zr8oBe>aoHN;tDT263KQiIWvy}bKLZpX2e=#;K;1oA9Qjm0*Y)$XiQYZfeQ2H!C`7B z`v?73a{JuX%{u|Fn_yh|WXk1O)}EXN6Q z5n8w+Z_-^c<@uPn)dL1h`=oH282#QSL_=}o6owh{*t%S;<-`Hcr==_0mVcjaS@-NG zL0fdfQ?h(qiQ3CG!jcC?EXleb8B*@0+)tJ+_|Q%zh3tZ zN)9j`ps;rw58my0dkFAGM9|-t0KV)08*|ff;^+5Hr*CcdOh@it`N-6C9k}Acerr8t zn)~3HGZSOXTr5)GdjWc`G7lbnhRKO;`$MpjE?l+Yxre}vPNLW&7VCjq*7Q)Smz6wdOnwEIDfC2j9s2TX!(%;vvW@4MJW_2tG)ZhOnJI|k)Hk; zlLHbT-I$;r=4*)3`lI@v7WV{}JqGP}YOO!;`qdPHpIpmr`~@Q`n2Re~?I16OkZ%wF zyqtFIFpfMpSY4KJEbo1v63xKHMOzoagL};v)~HXe51vQ7da+o6v-S_-*&ijHbIKug z%F@KpzSXK;P}U^!X#;RKv*~U>@RC9tecDzHzZj^gA}~#N9I^Fi+T`=kl(YWNn4HG3 zJxf$phIzIiIIyV%=_6bp9PD!36V$J~-TtDUF5<(WfZo*os3Xn{x~uDnzNNm0F||m& z;V>taRr*D{QpAXy_UZk(_)@08J=Uv@HJh($wBE{?gX_hoiz~~dtiz3n21sA_&R}4BE}8~qAACcLGjxRG+uap!TMUP-eA7?s zQ|*yz9B(G6@wqZ}3O9;V2EXb<$@fsw<$&%U@?T(Ht4&IaA?Mh76J<+Y_GTgamgETs zihNq`b0VBe442yxYZGtN9o)+vk|_jOLkS;j4h&|TCy!M7g}$?3(JpfEqsUyc-@($8 z_b1bUS-BM)i6HLw*=l1oZAL*H+S4VWaZoZAH~6d<3?A4|xCk6usyMaDkCHf2W`72n z<839v_qD6TYNPvBlp*>iH@*|)G{`47sY=9KT*IfMNQC*> z79$DB2Q{A(IY?J|fw6Fj?mK`+G0g&$ggzSTpXrNA5awIqojq8ODTM~K(imJ$s$aCWMYDnAe_D?wj5)*WuEXl)10R)Dsb43-lkR^r^DwP!%+c4m zlUr8|sC%Wj&_E8jo>bzvxIyoo5QuU8>yStQg>I0go6CKKeumMAC;TG2=eA9zPG-tX zdpxgJNjBAxi*eA^&b;Ov+o|=pW@UST#(RYR!dm2Qr-|gY*eZp&4zR_TgsZYY4N0bP zU|$GH(d8Tg=hQcIfXu*h9kOa12>W)HOmBF}Vom2Lig*j$S>KM!KD~9Y_AM^^JK+o` zXBc@MIko2HurfzmE_D<*t-hU{VJKnD)Uy6;A90Wcmy<*jR#{g8V*(*2XP{+g?4(PU z7|?=^iY!f+z4csvTGE&hG+{dp)B+&5DTurolUGL?qti)>Se4C-Tp9K_DrXX{AF;1FYFug;0YLSx;26pGfE=*gESr^&9(=es zFWIqQ0D>u(ri1d8^4sUUPjkIeqK+=%y|3#EzXp>9kYvTh2yMUo>Q$c(_vBK^pNkas z^Ks=XeLhBka~cjO`+{9>q(hGh;EK;Jd6nY>3)ynuKbOHhq{4OF`l`&Qg!{Kii0V&$ zmq6@DGdTBsbAk!1wYod6Dbqc$$|lYIAEQy3WirNA%#QATvQi zysZqByp6$2Nc;A9N!Omvmy(U}3#Xltx%C9szAW8r%U1NBOnSYIc|(hCPl}iMVi&69 zCI`q+GvLg?nnT&$SA`op0-fC1n)+amY&MdIX(PAwh7 zWpsvC;o#~!Cf;G4kn{e%Df^|@zMM?^fh?~Xm!OnP&fq;vq<>RoC#Jh?R1rzT=xYBV z_Za&0vBzF7*gVQ&!dHrId9T6K_9Y}HdYVsT=HE)ze3OWn;E2v~XM2fAnK6oMizklw z|JeHKuqNLxZb?B@R1^gyBt=rXL%OA#p~R#mMvo9hRJv;*(mA@>u;`E+4N8pMV8nnC z@4&CW_xa6k8b?h~JL&gTSG91+%Salx@NXyotOEz4x&U7+?tws1ksK^^ulCrg{ zUZb5c*{XVV3~-lUr?bjnz zJm1*nJkh9IJBQD?vfs$a;sepuCE*w)^r3~%YIYV_bnx+}Y&<6*7>L`(&Yw?wm-y1+ z6w{mUSiUk`h>oh>!^&=*;fo3<10{V>7=zupt1Oy~R@H+kr$;GXsG#CNfpt#@+W~n0 z(fuiyc-oj2POtEVd4R?APKr@_yMIgceZQLxV$h7hr!PL%qDOnPMsj0h`QG28KX~Zl zW--y05PA5z=vUcpJ}{hF1y+k(IUY^g_buw>@>2ax?yyv^(pm*uA zCNk0tj#<`6nXq@qtF`?$tFnSG-`#@}SP=mig>S9n{2w39oKhyvci-pM`MlUIUEq@N zMI+?)#1Ke&^~R<19YGj(mctBywSEDVBFYl>H$=Pe^@Fwz=l*>l!ar!Isk7gkT9ECq zv!I+u0Jw739E~sic)1RN*!FLBGSV>P8PZaC%vMRUJ_UA{#YEPu=k;Ac~>E6bjrj@Db zya2>*KAw9I^X+^t7GDtDokz~X1{`>Zc}ot%)2&V?gRaw0*sxEWW~Y_RPQv?ZB|%eO zG}yKG_UAX7+}kaOKg(M-eK!Agl_b;S*w-D+fGW(AFspm@5-SOcK5~9j>pE-Uu@uqZ zR~v;V@}H*UdBqQJNRxm?iObmic{S-&-~z8i7z%74n}%0fsaK}Ju8|G2i`^ZEsfU8v zqqnp0?yV+S-d@7|KtQ6XQPF;LFYZZhCwR+eio$EgvLQisv@>yZ18NzJBiiQ_w<8=w zKGZ1phaCI;#iVYLc~Mf>-(78!81wJyN;NId zfGRJ6@mrRJzgruwHZ%HXC$(4wFAK%MZOj0bi*qjF$5MDZR0qbe;YZFwCc=Q1TIMPD zXW6_y2<}rLzO}2`epaHX>U=C~tzbXZXWesBY4~%HON%*Cc@1(Pg>nw8RBhk;1es-S zb$qbKrVl@xBdr82p?RtHtXfcjVlP(`zw@n>K?7jPfgv2_d9aatwvf!`nf$hsJ8i3q zMdjwST#G(B!0i;R*;Y}`%^tkcXJ6-_|DF^ktd(}$c2R4EZ|lhd2PtLG37|f83v@p4 zS{ofec}_LxDB>2KKiCf3;b@o%EVmVw-%sw(P~Dmu>wmm5=`qQ6e+u*?+y9R|C%#^Y zXM5s1wkL%OuKoDoH@K(;0ul6CPS)U8zD+>d*>}xsJl9>x+aUHfW&aa8s_W;0n<)Y> zHdVB}alTt)DH`~CzU8gw9@zZwUbTXzrc%#@15Qv&`el?m=V*}_(^j0VO% zL0VG&Ep24xi_OFyJV!ae)^8XMa4tdy=Yv!fVggczY_!EW0C@~VV;M6xFud!^3pfhf z`s4-vI<@$BlQM*-AQ@BGJ{7iVFM<~qw z*?F2LuWf;w59S`X!E>Y2nvUHW&XlF0yFNW)oh$tSR;=tvVxZKf7N=>o;+I9gf$lB8 ztjR!rCYgY5tIj-hDZ-_~_f9^%FY1 znMlZZ!yw+~@``oeR`tKXU-EN9hHmq0A@RT`d(UTP5LkcmTE&rwn7d?v#Z zvo1~3+lJ!^cL44gPeyzotcN`S5R3D!-pFUdpJA*ONh|78PL^^JmKd<#gjN}F2kam9 zAi3ap((&GaY#;I9PDtQy8B#~VndYwSz)&FyYxv#(aE0>wD9`Ffx-lRS@*q@@bsApk3+x(GigIz>2Qm*VfI%K`2>SgStX_> zA+?(I&XY@VSJCx=U~Y5Q@$#T=#KDV8umIBZ6ZdN1AOju$mNsh0w`T(*N7C?#?BbfhCOr%~Tq{dN2-%^Pk*BoVVc#1$ zK9FhZjhB$Fe5ph?c>Iy0Bt-m8oLio z3rmjem(%plZeRmAS>y56=VNWftD`tikI5$^I(qE zfO`P0Ps<$fBDFdVT3NJ-}?=_pxxR1Cq6l4(GXADLyqN-7++TzGYsEsxQ!$`K=A9y84?m0fkA1e+&d0~}D z{x0S0C?@jkPk`T6n7e@U-rXbDm1p9=y!#~|YL zoU$1we}v4gJGjbciT3-JqMxsp`*y9aE)wc7aCV37quM)+-O_#zy4$^`VE3uu8(bBK z6+glDP<e48FpCX01AQnzp3ahN}Qj5}bA#WOv1rRu=>uio)T z)~?m+*S>mTT7_}DV71`c7%lBAH6HQTNGtwEwGQeL1HGDF3D$9(udj=w71SOtvvk9P zai`bujL_;1Q;jf)eQW00;tw@I?*}RlyNz)d?t>q(zh_yNYb=Q%Ccdai6{N~S2 zy@hbQe6SZ`kFsFC9%gqCg0q@>RoP(RNAXjSgR-Y1!GNGKEli(2rCNFVSQO$mE<8Rw#eH>aB_dmrICd zn?w)8u*tjOI(a(h)?kUfiVTW-497KYgusu5KY8{g&AQ^-a+gLHIn_efv3P+A+IsJ) z$vE5HHjhi~{I$FSnU_Hvg9DqUhg`Dl!p8dDXMAsL(=G_d{z1saV{O1X2mANhr@Wrc zcTvGC?)k$TT5htfHw3_Iwh}>Ek}+oo8#{8HnHZ@8#?ZSl?J{`6zLPfZ+|eREtMHrW z&&FLQ(pNW;=gk(dbP;nr`y8XJC{BRfB`z z#Bno7u){}|m9Z%jx`9B9B$r19UqD`02vItrE%QEs_uMh-E$Ldv46ovm`rC!F`>2Xe z&fKHSQxy33rcaNgUF*isX=pqggE~cFes5yau(dIry_QXr2c{idF}p&Ut=cqyyIu!i zAvmjhn{6}Q8%=I`JK*v1d@$&EagNb>T3iK<83;mS&JLVp0G)wbH6YR^Wb^dC`FlzI z2h(vCe31p+7dc~FvQRl}#!_piKLXhVElJJ}aQc=bC_W1k1HVRlE}YWuHq1M88e3{Z zqzWiQHCLFk{eH66465{-r3_Ni^WdYeB#eC?DDK&j^DiGf=U(+b+_KtX!#hpbt=M8X zH)>QU6!m-rpX`gnvuStP_+S$<#s5hE9Cw>}qSJQ#;d=A$m&I01nZV%BH*P53=QDf$ zB#H0d;|x5ld`;FWSf`B(0T{BRMU<{jGImGRzG8_#&97L!HPH%+xyv0ZDIuZ2cT0?d zkh96Pt!sR=eaB$EI z)KvaR3tCUyT$5fa3JgZ@wq?_us$2=(COPTLS}EzG^6=i;ZKGMe?*!$C9|4htT&+!!6DSLd`DL5WXa2Arq3M~x_jc%%j%w0cm@@T|P=Iz&9 zy-YjAhGb8tltv(3SErBxg1^9hh^IRJR*>y91Xs)mQLrC)_EX?8XniMWj~AV|KL=e7 z-11!Cm03BR=`Mtu9JjC>^DJ^^R^E1$fxeWw%s55}5FoRt%FNF&lQ^dctX42yL&Ktv zrjUGYm1iw6xKae<{njXz>JFLn)>Mfwo!tVcjTJEWL%#0K(QfLHk)LL4Q(3Kxt`43p zp7tPZbFK!U9DT0s+KPEo+1pGJ_#Y4T5}vJ+`){UU4bVQ%*AF|`P_+egOG2@p9FCda z_j9<)J0X0=6`A#pSee3dDZc^nHop}e;|(@kwv?rU|Nqi>K@@XffUv%OK1-iC+(*JeWlYqL)#NAA$io zhg3~atZE@8$|eh3$R(7mtUV!NS)73AF1!lL#vQGFk-tw937)QFS7|>B0rMR>^ z3XKZ*RHL&yAsOPgh#g&Z?BiTq!UmygUu+CXSlFFzQPj>`GENV1;fW8u@$Ap3Loc&Z zAcHmiFO|R4IT#@-a?{u}RyEv!!nvc=yrz%pN(~bWZj|84%zYfQE^2FTWHe0H)l1eo z;uYk4@Iq|s_R0fsufrnK(txy+s=%ljcLg^plR>9~_tO8rLb?xAV*Z;G=aZ5YVx=Ds zVq`11XJ==5WVY>E)>@l-QJq%+O-15|lih_VdK2JU`4uwLQG&_AbKUvw#3_wld zN2Y8w!jBpQR{Es$=UXr{X}~NRniJ$*(-w#KceyeFQ!{!1JSnqN@1YZdY*YHRBKx2P z>$EpR?8%Xb8lKaX1iX8Xw*)5+XOyzSAp1Gnn&&Fe&*{b8>&s>v^(%@cCBHV|X3JU4 zjbcQbq5i4LgsgIetP5K0fonV3QLrnwfa0=Lfj(fAPpRxUu}r~-7IZc0_6~$tHH27| z=@A)g2fWGt&DJTp4R{+NcpmLKdXQMRw1qAD+F{!zviNlQItyS;)w5TA4$#~!2$IM~ z2^2^dMnW+|OGUuhu0!pM|5uzYR~w9^vKCVI$ybu5kbWUQ37LaR$|XU~npY{B`a zjJe2`C@k>Ba>qf#x%W$Rs%16&0z!!8+E+D#g}&gsf{uJ<6L0`w018F+EJ9~@c^n@;n5VY zS7kwdWHWQU_<4Qf!K(N8`@`e@mZcO~cC}gBq&$uH=C;dIARc9=<)4wCon z4kt`|DlJv%Vr%TWnGs3yhn+c8ON|m=S`{`rJPu}*(!^YHWa{_5?eatjus*q`2j#TA zU+!%z7tV9^I1SG7;R$vrCU~RuWZl;z1EpWrF7-ncBZnaa8si{`;~^<^Aia z?0dWGbxtLNi?zC^-B;1W=dqE;0nxO*B5OlOBB!$RMQZ0y-1ZzWheY&kJ(zcwN7OD$ zu)F+|=eM>GTwx9p?z7tZ8l)n!NAu@|aEZOw=MEFW9j4GF)+?5v)8iX$?uYAjr4p`Q zNkdL6vwKu)147sqS@FCKiKs}w=8;)6tmoOvX1?kXaQRVM1Lw2xO_@h6FfP%05Z_1ZT*(2iUf%JEx7wwy~c3`ov6tq ze|_SEbi0TsBEfK@p&R<0gCcSm#qTm8z-ic8DK%UZcKqz|aHaM=KU|HxfajSy=shUF z!3-XLBD@3OERia@tG8pHEZDrW z95v@-^6@?o6UfO(argLeclSQux>#`B74lfQ$9LLOq9%v|7LtGUhhX4{HWJbJTmCFrHuFitG_={eba&%b|FUGR!e z`cT-{o;3e$Av>*yAhD6iGQk`36yF3*!krQZIml!2E4@OVCq($m0d?fOG*;>_t=!S5v?RuDKi{l$4Ph zTO{(4y2p(Us#_3`c?@WMnd`VnXa#y8Vc%?_r;-UjSpvrkz6Xgu5m+B9$-99@2Z<{( znp+hrleiQ$sPBkgE? z()RWhQ$|C_-zV~S*@kHG3UHpyrxBrR#>&-s4N&oFg?m2(Og0dOD5yZpMaA#+jKTN?8KaJju zV4qt%O!4)G5>gVA!xgtOp2kk81B_7P)$e#c0EDzZ;JCa&s=~zl**7S9i;y)bP{s8i zI_b5Cih;wK`;CjRbx`lN^bQ$o1VO;y85yT;t#u^UTH&UO|6&Ypea`F9*5P6oPcRU4 z@Yv0MG*tF;sWDUu$4siAV7p`p?@yIIX!Y}$5ZJC9h^Ltw)J=YUkHWZfU5v<^OIg{9 zqQtTmE#muDg+`7Us=U6~qbnMT;D^PW0<$pu@WGXdW+iD()3R7@^ES2QiYeCfJ~L*X zjJZ7YSMP%l?iZUtMnZUqm6^B|S;j{Lr2X^DI8D$FV`fcOPnpQ_pK?f4ys{hb{34A+ z*%>f5;Yz=1rRfv>vx}4^%p=x^?+42bD}>HTqe(!uJgU1sX}RgWcCIL1$TGq%}S81m`Xq*p> z&J;+yQp0bRA*CO!bNL#AJE|`DO@3z;W=Xkgnv2eq7yzW}lP-p5O7hh0kR_dU%*Ahp zU6)G0Q9j_MYe4BT26++8kep5f^zBCKrQHRrGHA_(p}8?QWlQ!2${U@|Xu}S7V90yn zNch0(t&+Nt+Yand_gTl`DlPrfk^EC05A)sTH#@17o@jZhdk+mO&lhw#jacDlL@~vd zweI|XQh9+-LT}4DCHJlKx($BmBeI<8@{I9Hq7S&)_11wRvWV9>N7KFOJWB-gyEJBf zaS+LCm3w}*?%jh&7u#}+$r=_yENBp1J>UhL8C}yP$EFPI8T{o}YPpt(97l>FPxUvD%fur)U;8yY|1nGnSR0?O- z6%h-0ANlw4DZgL2uZpaSHK4p;Hr4|^z?n3prcVb%AcBQyo|CFTyYPqF%gjNuz{8Bc zF2X)lh<2E3ShV2RV%$kS35!k7vH$TCv_`Z8xen8&%e_D5Jk;_Z@#UcNClbo`d?uVu zW4bdGDNuy0AQBq;Gy$pRXBW}d;!9ZYi*9hI@X`eFFRNecr z&fGRZp!vRTXJEFj%6m!!A7`EHmS?VpRs-9bsX2dccWPgYW>pEWIm;@Hz7Z1}FxBvj z^ws7b*{ExMnJFRGF}-S^~Kffwt94&#;K22g_z*IfCnCweXZeoY?BB{Ixy zFDL(~%cQjK9$A~VdgQ`zv@SeWP4Y22QAjOS`M-~~h{_D^Gbav~NzFngw8TQR9fHwQh*@l$WQ zN?rN-vb25PPy6QHlcbx&Y}fFE*SW2DMv&abTUiM$u5M4X)(sn``zj*4r+w(3ldjv9 zSO~lPs3?f+;`ch2_N)>S`o4Qyg+q@rOmu{R2kAw7hsQGZcV>}%R`J?f>BTL@TpRv2 zj-ti`&U%_OohfBgMZIp*O*-p{in8b{aIN#fms3UhxnB;}D-0^$I!`p4Q}a$U;fu!; zdX_bMJ_?)H86QOY^^$ZPsWdkjV{JX%JI|~Y_@5DZlLf6llCl*fr=$+$^8+{x9A_S} zX9-hCLm`p>b}4|kQVpv2AuLt=Mz1}d*)qr^5MZz6pqq#59D|qQR zU--^ZAz6bZT!E0|0UFUo_rjlhu016F%^PH_y{(70RSRJgVh5Z*%BulMNCByLjKQCC zN6SrhjXf5A>2^a~bKMc@df~hGd7rTOP{XypCD3Gn2Cn2v^4s35l-xOar=bhD0%4Qh zNu8?e>Fj5EBU$avBO0w@%@nF|yO0eqw@EBd=#V96F`Ce#={y(3eOCTcTZZ(Xj_oD> zjIFS0E6{oOO$?Io8m}vWUisZvtZQRhU~9(V`Dv5U?EPk4#=7RRV3q%87ib9g0a>4= ztFqD04d=Fu^kaHgwOhp&2Yhn5AV;d6@QrJ^L1_ZMN>VivY=W71my!8DmvQ(pfnYXh zT@Co~d-U3Dil%1c45)*3@T8GyyMC#oDyyuAi4s(%EMPhe~eZb%E*xfIT?jJ*_rrM-(c$DzW63pD&ow9ZR@K`yi^%JEEM$e zi=fIMoGSm*uE?~bxS@9s5(Hi6APx~%{YCAz75S^_u-QW$PI=({*DO*GF2bgZ$f^G} zzXU4S@%uPC$c6OH&^wgxXCM8JQ$-r$1lK=}REZrXWUfH{u zkAbic8HF^mbKv|(^J%Ea>?Ztxu)evRQr`*%Vf}mm^LW|GrKVve42Xrv>E%8Wkg&DE z>vd(|%u+_7Af-FD#r!6R4Mymx!n?obKlJ&d&&V2GDzo6`JKULmIp5fMA`?hAYqvQ) zu3vo2t#8CL0J)d`qD7e=5gGIW?Aia^2C{pEzd~KxUUi_fW7cK?O`N5a8)f5lAJy|; zHbwrkmaMS_WDlgtEw4h}U!i|Byn~9AoY!jJb@-z^a2oCP_O(C2oavu=Tq1i5+|Ddo z)6pSRuk`y$=rw-dnWpDw^pzX<&M75_|C}C0rUJfesK8y`0Y=su0LaP3;IG6MSKr_)eJDQd>Yh?)prz!5pTtrArvu0c2$iooLRL*IL={9O zMmK2KkV*E}CUhQrEl&|{(OFl`{n(0|>iACf*KJQ{|5fyiKpG|-puJjXK6pHm!%nY0 z8eK}OIU}W8{9!s{$V=ly=~Bey2y+zLvj)?<3u&8&VpbepHR3nfuOrcI=}?oFP{^9& z2C)9w<&(FFLni{&BBIJ_99kYy6MYeg4VV1>znjQIRSEj+6#FZbeUQ6iaW=2%$Ch!f z$`{9@!*MCVW zJ$2VqA?}};u`J{hC7pR)jhUJ3dQ01ebPHK&R_Q|i3V zGSfy_C2xMb)GQ&ykpqIPkpq%6`9xYWLQ7E_h`LnBirH&ypNW>s_y|kzY>}f28PeO? zO*`aqR%T*{dH7@#tpxT0lN!ye^2HK+X9**4C+;Le{d-c z_=H}fMeDy~*kQN!$~pBKi||T7_FNSxm^#2eZ!R$O-nr=kD+fuiZ$_`L3O`M&eiP+W%MHLdk#Z zk$eNdASerR)dg6U#6MHBMeGdz5ZcIoIzA!wX&qndhA)sut7+h~Ey4dDAtt;jy`ceQ z?)PaPOIZ!yQe0&z{fAi?T;NE!wcJ7WLC7-SEKeskk3){gdsqF+Vgko`dRzJXW6 zhWo4WK$Z@p<;y#l8-ov&X$ZfrO0w9<<|@0*?a=DaY*Gn&tfbk?c`*GaFt=0)e|=cF zYM9zoT+>V^Dy0%8ITBSh<-=LX`cJ0h2-8Dsa#Q)3pY|Kt^k5A+M(!lz1%dkiiWs7>t_ zwLARxiM7g1?3O^xtj?->UYZxjeV^uiSG5OzyI#pQ|2u>@{2?5STqRCG4q#GH$-Dau z+10RhoAmc`q&kUD|7|1#;nyd}*310Y0M#(>Mvl>&2ZLyB2Jf%+$HR@*Z2#=xIN9Ow z2UrIglrPT9%JdgxjuQsrzLo>=T9XhC zt=n%_kFm0uY4?z!6LsbOd*fpT$Woh%aK-G!j?Xf9r!2n~;Qkul!A3r(3KoG4AA{}VMm5rSMS;r?)!Ny+dci9Mq+ZN35& z5K~d3WvUP7v>EOnS=#;UZp#rmM9Eb)53K64xMlgfTgtm@M{P-6<<6U2i;%=TVEY@B z65Od2$}Q)*cMH%woW@91V{I3f^r={SC4lPl)p}7%*nj8uDDK-Dq6Dy;s()a8+xD6PXl!|6XL~e#iVj>1!q~YbpaCIBs+m zsa2dZT+!thIQ!UHSO%9+kcNim+fyd&MZeHa(?IU5A;YvzdQ%0~*N*}lK zAo(!Qp}3_Qow@3o(=i}LQ5Sw3RK9UG&~`t4f57(i=g|?6F#&Nb&9ydS-cXNcb;%LUnN_1wHH{64k+OFO zCf*T${yY8HH{@db7SCsedJM_Ubu|FA(i@pI>Bp_08WqCjT!VT*SVM8x;1b(5BK3m+ zZk}Yg=!NClSdA0LJG}ft(Bx=2tXB%P6Y3z;`BGchE8K75$e+*jiZQ50`#q)lOdx5m zocI@>Ldp&Vx^Do??-YXS^%>H9Y3CEtikS#(>iH?}(<6qIr zvm+c5edC9Zz09L}My+hGMGW;bh$O!qsxoTkT#kFmZFkG0&cE&C2;tlID3)|HaVM?v zK7QXF66F#@X>$d2%gy`QU6N4gv;H*ckZRXwp_rNKKpm3{?}S@t{BN!$mYBGeV+kLGph|KcS6OCJXOtDV0>|J!yKPA+T30Ij9(T)NcH46V z{CYIOiN51yrg^?q%ovpUsh3R9BSzBAFYhS)^QQ@)+$oY_xr%mr0Ih1@Lsl|g6r@UQ z)SH{XT0G1^2R@-<*NU=lhwUfZV=$kN!n3%ZL%DQEh~nsI=QOOyA8)Ch#!Apy;_#fSCgF&n}Iu`^U|R zDsw~?o-dY0^fx0Xeljc~$*?mzJNBoBQIXaZF0Z2bP04_kaO=viB1XDWJgrI|?xXnT z6euIlsJ~YLmp*`1^Ar&UWEX4?wNAk${e5Dbp9HOR=%;7W^U8~vkT zKxSXzW_y`a2~AX&D>WGt7vzi5Yo42Z_boCVolf<wWLW0*!TU=y!eoRO zCDdW_9}_X3{v~jaqn{;rcaU8d>+qKp)qNx8+tW$9{>5GONLU{{t74W4eh z#hNB=YD;lSimlqUxvOU%-7abzA1-@Kd~k7A8CRSl17o%LfYMpZN0%&5s|=z)vYVI^BF%8!E~LsuJ^1&H0+@bJWlYF{PL`AlU1i+CYc%Tks{18|pt?p}+hbrp zT*XCyUXVuKHUycXy1w=x;+VuQ?|0ADm@pLN4Z$G|e*dK@7gnS~@Jsw%Ba$z&~oRxE5VpCF$+BJPWS>pq*g>M9j zdx?Fc82L`QA4@q8)*9sb&2xGh6Sf?hWw{i5lSo8_EqLafu4!YSzMg;%p|F4cCjhzu zwQfE0Yex>3IS@$)i`?Kbsny&bL4HN8tCxv_1hhB&&lk^WZlB^c`1?pk;Rz8Boh$*3 zxzhzthv|ZR+nz)lpCvQ-i;K$cC= zzF+v~UX3}TWvK-!Gd%yBuz$bb9t8asc!~esRa*#`R#C!!87)Q?dj`=tBNp}8Cz?6$ zOA*jkh5?n-E`7I9A^CQ}9mKr-p2%Syok<5bGZxHR4a(`#iTP+DLD%T=pmwLm4bt_I zoY~a#)6A$<9*%?gJ3!6f&G{knbXin(?Sm+LO%hj9N?b0-t3?pLUTlx`0RY3_bdJlW z!AzzQEp714QA%~0EX{d4dGdhQhS?@t?J^9El|9}nIU*!lbKKFw$D_Za$EQN1{rmF7 zXez_Xq3X-m-Yj;rFh{F*4z%TUf*~YxW1x-E(T<>5aYndyrWBjWajHoN-!&WZ%jkoHA_JEeTB#5 z34RuR;=z_#_w6wTZN;z8q@|iNUm#Fz)z5i`0nJ{fw516KpSk+kuXf3IDl0yWqa7<% z<&&oM+K&?e{NEL-ihU;D%|9YDKpH zLxxiaOxf>8(&~Ip`E*Gieeb**mB^L`uawPnvv6su&I$9I1F#1B zmT|IgoK-WuEsSUor1>kL+U;4NN+QOS4?b|r(fu4&BBwod%zBU|nDy;Foxp4^fuyaB zfL@BFH1seexu#BUQi1l+H1GyejSb6X))<@{Kc&J(d%x1;I%?FM(}j=j}hu%m}_2Q%e(iTolXHYwnV# z)-klwx*Btnu)3g^za_c3HSGsYnZ%O&xmQ|Bc5$@M;I)y$6y5K^aRI0RlMC`F6UBBN zUtdyi9vuqi&G#*LC_CuL@?18YSRN}K9PuYgi~Ct)Hl{A{qR(yWFv`a_^TngHcSwem-@(yi67=B? z4{F_~D84l()#Sg5`z8?$&w0-P)}~u~Dw2x>vHwk1KVkknmYZU=Uk=Pw{1SD2*`+Pg zqC7G81DoSBN5~+rMWaFG*AkPVZvtMwe2yDkLY|aI{x}^g*wD%tWtFCW5taUl`L5yq ziyG>cV17lPwNd$s`Nj(P`OG9NYA%GWCnPH2`L^q~&-2`~d|tDPMU;ws90 z#TGa6-o{dBj^uTruv8?304seiVgkPq#+DA}Z?kg`-z{^032wW^S?u z=_Q={nZ@EmWNnOI7*d!}>RV;(6?DxGRRLM_I|`8>^{^7dCq3!QHMZeqsj2+#B`~^& z6qI7$9?CMdVbiTlUf0L`^x+-MR=JyYx1>Wt@QtY5xCw2S;kg@oo~2jKR;XUu7L)g?Nx>QrY0&pmMA_7rGjm?Wc*Kx>geN!m`dE;>?ITZjnn0s?(mu2WF#AGs?hLARn64DnB+xR#(^Gi zB~5YVsmOi!QcY~o$J?+1-y*-C-!=S{Su!~yQ+z#X3(IEwC=PQ&Y28P!11%Wz^Nui! zO+n~d$b0a=KJ^M==$#)gQzJqs<|6ZNPgov>(;_L@mYHh+lMg5KJ{74c|Nkvw%(Tp*_r+MNU(GIf;WxC%b z1b`hToMqINFHV#~cJ7mIg4Rvkoe#d9rWEGx+2Ciev`N90qtic2*JK55%KM#7c6#~w zy4Vm=V=4(K3L_#Ja18?ixbricjp~3Fuf!IV-!IIQk*4Gn#ADDN=QpSrR}g0#jLxpr=kW& zE!+y40kjNbhoM>DNUIC8Hy0boGiTmujgXOCGm)4f`#wVZ;yg5rT}^hRbmV8?JGuFq z*UahU`i1=>y0{N4J(TnkFX6cKjp?+=i@;K@CGw3&iD?)iaoeZKDl z!`=K!8U5I@*0)JUIbf~Y5Od+PPu;5tD`9z%Lm+!|=%twQ!D%1S&HEYU6ET8*!N zzgegde2`GZgl<*n>pJxBD3F!u)Yr?Z&cXp7q!B7_sl|L_*G;V#5*n{ zJkI10Jt_5lUy@wGt)^guisaoKNgltYbUVL$V;-pVwsf_`lv>oI@Wr|+GPvt3d)jBI zFER9zIjE$1?;pQC+h@lc(Nlo-(=jr!FMH{jK7kiAhrwQVk0zYo;pA^m6>FKXFMPb| zTl$;ViOL9S3YBhMSi1prq`FojDehFHufo*wY;3L1X}08D$_}j^O1JaNw-9OI+)Hq+ zIEoZff;v`gk1M`R{KPtvi|v&?m5|sk`(P8Ot>rj8>v(_duu8~vcztqIEc+cVZN&s? zqKYnJE2LC_-#82_xDxNn{7^DzI9dKjCgF99;O{6mv?~?#GL4wRD?;(A3l$Uw+WM@4rw==qTQKzl!KGSOpr|vtB z4e|!P*EKlj~@qKfZODuul)HUjB+T-m0pvTib57tb(^UuQ1u^`eju0TC27Vc z?4E<}gx799s+XsiK3@1fxQ>(BXL>!M`Q0OL6F=6_51uIaip~zpOJTx6pN4>L})j zq8*Kc7xw+atPm%bnU*_!@m8iO&}Hza>p)L>QWxp>k@oV*2IiE$1J;Wl<>65UO?~$u zqhbU3*Mz+&X&mvQ>s(n}1qCVYEIYUmwGMma20M6`xdD{F3@+4&zc{EQg$V6KE6gEg zPsG?jS>PRw5K?FOt5o^R#7*oSvP1K?*c8-eO+(~<9m!F|i>I@a^QHn0izx#iH!WOG z51qszQ)D;!Hf;h<)K~!$sJUYdo=vRFEw~4aohz6ArW{QRmGnYD8agL^XOUIN{oBqa z{Bm^cC&+gkTQ-`%#l7(X;4C}!^%(-md3WbEKyH|zHC`YxGDOF*(Z5kO?4mxg)Q-AW zK4I|y;Jum24?jP=ADzuYZR6waB>A93NmD+n_JE8_N9RsPh%Ei9{8AE7SuvO0hu}`` zeusUsBct@Bn6WERp`^$b>fF3BqU8jRJUhxN#Qd=d9TX=uVQIC7jfB+`WmzmgDQ!`H zL$=*B)q)PWez-#QHE!XIu(dU&xZiAd?3s+V+0z#TQcelUexl(amMvH%Tmb*4gR!tZ z_6`3*2tHudqPcpLQRd6Wh8Kdq-Z;}C;WEvq%1e0W^@{)0ecd!Be6P>2-;m*Ky?Uhz zA>BNYZGESpF#O0l%wJRu>k6?w%(ht`z{j|Tz4nA*JAd-I_8pjF_ST9&2$um=;NQE< z>%1xI{7Q1lbg{q;T;YxJ&7R6Aaek@#7ZDW}#jPTDY*5!&8pYl76k4WhABx!5IZhig ztWGMuR_bVR+fR^`lxDIS>*m1Ig~s*V>+RiaqNp8k8ETE28EFc0cru`~cl1eTJ`Oer zW0uBa3NF*NiGhv@Q%k}2t5inKpf(KweCIgw*fjRSvD6bFcx4omRW}~8<;N{?^IZwD z`Gep!>_c&PGc{b@a0ui;)+YM$$!FmqrmEYT=V1>dV3mqn-4xFxOcg!uQ8%H9dg&zf zMdEV!*fc~>M2?4dbymqwv9i~xAK2f1eKI8oW=uu^{H)-e%Lx3eOwdzbH$<7PA?*_) zkY`=UFDo9x)DT?xZPas>wDiR}O@=IfYxwCLuo^Ud)3j8o(b0%9@UFSVdd2}Zdl+4Z zwT+bMnR)2>vHthFvz@EZ4Vi^mnt>vc+b50RlepI3c>Tqcs0q~>NsHy8U}FU?JD*K!OtJuCRx`fw@{JXklVcUX zgwq^qjO6_6oK-45TKj0#_a4@!Ku8v^hMi&i>|yt3oX)X1npqP10D?E)EG6m?pzZq?;ba~)p|Y{R zmy?$?-79yxDM5%{-tn4E=xm9sAIP~fTS+~2@Y}1MF(i6zL%2W_l7FL9l?$J9*gId< z!b1-g3^%V20l;Ul)}w*KV}EYvg7uM>78%IW;@SL!g6mXX=ym$N^46UL4oqjnQwjPG zYm25G_!)Y_qt3}NXDgKs%L!zf5h+*J<`Ojz)~kresEk7DK2#nqiP)YKfIODwm{>lTwm z(JKzhZ+sF~0+l~)C|&6?Ye8!^z3Fihk@>yb62>*l+C$^>J7Qt!(O6NbYO2INudj^E zkkL~_DF@f$E2YxF%KcU$-ot}GEabVKOJk~EXEWLH4B#fbmU|Bs@J4(P8n;sRvKVO0OtcS`d+|ph}BFn$rVsQ7i56Y6#phgA$ ztfw{<7{|fB{zkOpfZRYn((gmD+mM*HRJZXr&p&F;``&^3JSNh+-!`Tcxbc_Fis9wq zgN`WLFaL+Nw~C5mZM#JSAwuww1PJcICAbH7cW59;2(FDg3GVLh?oLB+3GVLh?r;iN z>l^=f#@_$AIX8@=s=KS|)ko%>58BiX$GJ!IqqP?+Dxy z%lihyzV&M&RCTMNtTU?P?l)$e^&IT;CqPXDtP78pR^yBLI}ZV8EM~tx6$Nso!R!R< z%~7#rat{X-bE?;pXjco&++vM&mAczRJ7RrZGN={NO3KO(AWbGP|0NKq+F9w+bhsC> z-)kD@y=vsd36Cw`=)O5j6EB#um|8p!L2YT=HnDYcWMe9^81qVI0 zq~Eh*G8LD7`kH}+)88q=`}{Y#AgzHgGnhU3cO;jOl(6_+-207kZ$u&CbK|LsZ!>7j zCG8@_lSEOR_0s}4c#EIO)u~=_Vs361^ct3z-H0N}!+{XY%x41=W1uwFYI^H`hVpVT zyORExDR=^u0=q!$fGXQ~T&u(K&$+L~V_R(9aT}jm^>IUg_$o_<>ks!irsx~%z8pjC zu|I7_T$4)Hd4yBAGw?Qx&w64YetI#gJ{osQs7(V4Bgba1D~bIncR}S$KCw%+rlBh~ z9p|OZ@oAT9K4c%_w4CeWAT#GmM)8LI&xNTbO1QFLUnh#mM~a9MZnCQIUG&GX4MX(e zl>vj!=r2$=-#`b$6;quucdBON#ub#B1X*luH{b4w)WW#`pw$MAtcHT?X1drC?D)B4 z@5vNxA36^8!^O4#ac?T^%+hD*5IMk{4 z4|Bb0hg7N4hEgXUR3J)a!Fn>XuOE`+v(|MCW=on}%?U`8d3y}y@0aNv$r zAZovr^gU5Yi2C?t(NPMB3%>N7w5K)i)Lr!|p;=)ZPR&Q1u?w^*fkNPZhD?2iDex^E zsvS%nbUWv){8tO0_=kqSwI&-2{uIlMSeFA|F7@XUzO9jU<);i>BnmC6?TE=my~u@w z_K^B3GZl(HF+_UReyW`)(ffhI0L573mm?_Q=#3|;%Diyfh2 z*elq3k)fUB02|VqhvUe5j*Bk`JJ8$M@!bhfUfZao09csEdCX!ohfZsv2sB4V%~`*Y z?rJXax~QE8bDvfgqhIG8aAAaC5^KD?e!9K$$u-JNa2qOz$fp%5rGLmeD@jxovND%Z&QAU2Y^-H zT_R7udXDqA5xZSEiz2cVRal#Z7Ssw<{Y9&FXs@qkq2@Ra>)O?97?JD6+(*{=Cvgjc znMJ*v+>|Y}DK$@d7i(vT?reC9+-k9K2}|g50Lef!Z}cY}HF?w09D zbxe{)0vm5pBLc)@ICIxzyIC z$|N=5);28gW!o$NNsL07Fi|VFdV!WEnsXox9&`LH*h6S6C|*gM{CKCwo5j6Q?4;^5 z_%s@53NDIPGe~;n{%c=Ac1#GVbTi|I>ncRO!CC}ze~xyw+Y43oLQ?5!KR-Cbg|qS{ z4ODAJ_sH4Ybk1@AxykBFuoTmC+yn%T!?~j_A8gPtSVOW|^YxD|(Ng%y6w$A~tmm5w z<)LbkSCw_bcb=1gj#3dO`l{IJOCTP;n-hm8(Mm> zPb~&`r%I1Wl}Pd^00?i{0V%@+N)e^|&yH{Z$dxXt7+C4_%<&+23S_mwDvO@i4QFqS z++17_I~J!4E*qsQr?6VczFc%-%JnVhd>(L%Z|&BrCck*8u_l~MEpDgCTfP_m@bWyf zS4ns5+C(;6P@p@4j)S$cv+8-a4zoagwO}6DY*o-yOoP_$|NVkUZHW)C4fdAYKd8%C1URUW8nTpt|BlrTmZcK0ip#ju}i1t2V{sUekgHB>E>MNm2%(c#N ze#kO&HlTv`QCGSE32FKX#ct+i1!g!6^HJ_sSg6|p(hVyb-$ICcBdEzPzdtR56++Fy zNoTU5LwXEvzUUHfxc0|4RInsVXxtk=V;q}Bc(%kjU!BR8NJ6pW{LC`!v(PDOEeZ(b z#}7$)ZS0hD5?vH-A-BHM?k^L*F1*36Dje=G#%YA(OAoL3JSs!R-x8g#Vrk0GcI>Wd z`_vZ`+9=~p&U{j7RA!ebl*y?tHFFgu;uF-H)JRru)Tw`lZlv<_>~!F5Z1syY%4HK2 zoyelIIQV3iApM$qrhE_~OAHYFng6nm>7$}`v8k95qh;CWILytOEa9+j9Qrh-n%sn6Fx93(h={ON$Jq*Ryj~u@$B=QdxZ<5-PDks zWB}DjWXnZs`F{o~JTeY=exjB@GGGRpYd3M6a({*X)fCOpMh$hB@=<5o0BuAR7v2;{ z^2P6}uP1ggKMf-wDJBdph}Kc!g)^2>$+DR5d=XZsQ2cdFDHi}Lcq4kU->9&l%D${@Xu2TNpd$l)F?vb^ZjDU{+$jsLO%?KA^ZBvfowRmeH zMb6zI_NvjGM`;Tj3sD>mO|(7|+m1DwyfdZUIp|%sonkqxN^dW>T+;xSB8%g_$L;xq zyh^n}_Az=V$dq6$BDC?MaW6y5WeqVKx})4=!^L2zCQA1$+=+sOv;m8(bD!7Vw43wZ zG+3p|!C$@60YGM@Y|8jNcB2Q8mf`~TGFKQ@Z8zp#R?w?~5S2MAXAPo8q(CP=jG}64 z@p-N?@IP%x3*)pc|0Vx}C4bFUb`vRQ+imD~wns}Pghv+H4F{n@=5M+__PC)`+CG70 zf{5ZQe)5NxzJ{Lvb5VkR@5Tk6p)>b;WyJ(LxoqF%kdqb)w|C7QuEwefmtGPxG(JzK zrG9QqbiuyS{K_Gg)iv{Ub5!(m{%Nlg0rAOYK$+GR+m%a~fc@DP&c2}&M88W5BLE;R z5zZ-q`XA{}b46dNsw~ipk#M-Ei#c!HK2Rk{1tqdj@d-+X9=r~WwAFACR;mVfx?EYc zP&&gqIKfZ$Lw^6xj7HM1Z;NeXd43~kR9g0N)S79S{30HV&;Ud3i31v+(K=AZ5+_0V z8xrNSf~OV)8qw+fTS0C%(pBa6N;ghtp^I6(8!fdWVp~$cq&k)IxqDttXki-83WnN9 zCQih0$}7jXHp-I*+@Fz;?xWwDvqNX}wYSlwzMRs}zcxmX&8HaHuI%x*pIZl62G^a` z8QgsyF8GGfNQm6A3vidVUmiRV5#2~g=%B7{G{eDmx$@p0fobdvf$39Rg zB&_}2c0tRlvU)&aUKmd2h{qg1yh4hNPLZ-$=xC3Ig`)6KkkTJ(0#PLR%m9Fs$lSi3q& z81m#4EOmRydnZgw{XxC~5yTYC-6mAa`ioR@Wj>TDl`>fX$5+2U??g?ZE0Lm}ZMz}h zmwp%C7wKVwP82;0Ar_YGYR+9ab(NMlxT}Sap)O zGBPti&BJ6oMVvowQoe@5YI&QHz-jv}JCOw}2*F`dl}uoxNStOwJ2hJUHAOFGU;6cN z_Pv0;Bt_2mbr@x`0d-(pXga5@t8-8tU!W0;jX@CtJA6T0L{4AkWRJziE-$Kjon2h( zy(T!N-nB2F9cuHf{7Tf-?HRLey-G_Al2pKcWG**?VgYAe20xsitnl&$A+ah0_X2gb1vyEhm?^)vp!t|Wr zC;b!wh0*zN58sAmp3tJt07Sj({{CM9s36_f7}0>jtsC<%zm`kt?lvz&Gb}n*BmyH+~>OjL|__(9r+=ht_0Tf zI;8p>h^OOLUf*zyB;z+#+VA5Yk+OMq-#O1uw?+(tPphwyWCao*R_qK_0k*bkNE5*T z$E*tGPN>z=GI1=uWA5y9L6A_$KR9NiGF*l?3lIBgHCBPm7)W*7Fvzo+^5`zIe3MmH zO{ciDyu;bm=aApI`bTN6R@XZ!PZ=>Suv_C0*iSo33?oI~6hM>K+|t>2aWxXjWgY%3 zV?oecZ}=$NXo>MiIqZKhZcYyS>d0hZC-?CV@-Qefr`V_(nHI?moBTj4E7h~497CP> zStk@)7Gg~Y>;+kij=Uw`@58{dnc5=V(WFWx0?U+We`}W2S>b?5_X}Xd^RCG61qi)a z)U0;s)pnoHm_!K=(FN8oVhlqj{wMnv+09L^+F^Mxct29sEHM|Ht45TUxT+xy(CCSX z`}Cs$+U`s52a|`74)^^987|I_o0X<&%_zPG5QHH;Bc|R+3Z=afA?$XHCqMrKZ*!cd z;ep`>w@1GnJm+uIOj{fHkT6>I`PaL=+mm};`Ju;s#X6_Z2dItvVUFw-@;IF{XBIPC zW6KAm3wQYJHnzn@lbb)9%vm+bS;e05anZl_~^k&`DFty=q0738g+UlY= z=?LGf*6@8*$2EEr9}21N+I8XaQMGGV zIw!kuV9y_CyL8fl(0SHrVqYlsNsB4-C)O?$H%!8bLypkj9}UB&y7ToVq2;nvncI~q zNuz$_^^UwqbZ~Du+5nVAfg~oy9>MC}JEVduv5Bp|6$n$nQXA^uPBn(S%rkD$l{Qpk zFhWB{~V7w4v4Oc|6$eL@_6RlT$$Juzx>T3ejR<}qUxP;Ed%Js{f-M;5%rYbli9aXgVR zHJ$Ic@P}~PpRMX_DfoJN42Yi1sxYbB2i(AghAQ3l=vcjY^0GpBZefY$BDl;oCkEbc z4GCt5*oG3P^B1)rCttzG@_)7kV*NQ^UEj?rYOlBa1m&x;=Bk!P7*AJqGHK~3o$tQN zCtB_j*>j%-nA+D4h$GRg{))X#+Z&@>C)<9ZpU;2Lga;dOu2ZTKZuDzLywmd+8R#!O z6QL%-ov^#*FivBVjHUsp9}7;2M;yhgo8=*Li61Rd=TUWf-FvNu{*33I-%T zA61^Z2QWe926~Tgat!EIK%~dp<(%M)p?h&KXIJjXMh5?o$8h?IiEKg1+8Bc8&EU|8 z-bNB%7=;iMSVELj4=cyOtI)RoW|_@p8@ipsW~Gcm@7J?oxhUq%Mtb6N^G;Pz@3Q+` zfke$#JM+l}iFAh47fYcWR`>5RdBlYO+}bY>8C8m@&vDN^+@SQ#ICz7Q?rUVK zKQ=rV7i-l2=>5K-+BOt^esdJAzsu4vvPcXuI>2W~(B!e*<1}unCnWa&80Lx689{oZ zzz(Oeq*AUM^p&QbK=9d7m;K@-$-Nm=yQ{gO`VJZ|FW|$PsX?9w)PKhU* zS0&t7FR(A&KhW6pUhniHM(TEr196>`Y!=TNu6%aThd}xk)2UJ^mm8xzF5t54g ztDfcjjId9Ai>^~;q#7eV_6CH+(N?C$ED8hah{luTV0G?U zK68}A(zRaVKNF)oc=I@uAokfbwETt3RkTJqeA&H4OD_sTTQnOxd~T(n-QjOkvmL~v zxhmi6+4@F1V>yS@Jr~GJq&?WV6QKOZ^u+9?JgjsF$Tw$7=tjowutR0jl)p97a;_iL zdZf3D<=OsP7N8o)!8nP^e|7b_$2>{RF-9lU*`hWujM)|ugBuJfXU)~D4+~H{3y7ze zq6&$Yft$vJv9^72hOs^0|HoA_6wt|$!`bPqxR~yfFvLK4?wpLbM4kK` zWKcpHWewR&5}?#jVLEV+QtdT?yq-b^`D~aWCN>?c-!OSOL@jF!vBhH(|u(FxD zLO^q8i@ZLW-3 z=o$dg7w}yTA=YaHJ9EMaG8KLT_0_HNIvjQG;am{hStCLA{nh1J zClSZ&b=)V^iOT?r!I;>mSZgWqV(-sHb+|XD$m!lOS2vm7G5CJ~o<5HuiPm~oQno$= zAPaIudH+t8F`r`3)Z`~F*}Q6BpG8{q*GF@cAx}+#^i1aDYJ&S(0B{)! zCDrpcKgi)sqm=0kKwa(jLB=BqG6fR-Y$ShBsgqUatL?nhcy;-NLFg8KVI^y3JEpq} zA0PA)%1DnvQJ~@X_qSfrV?AKCvwjNn*qPjRqhEU4l3QdC)FT>Gb8PeEePc2)hl+k; zZvji3Vi0hFL=r!LgjPK2#dURDV=hvoii5(0mdbbGI|o#)raGsWga@*3tQFxl#*-O> zsJ+APZI=x7esQIvjnvy3W**$$gD-WRjSYmrN?BG=kiI^I3OcOLUy@0+{1_D!Vk-^` zdUIKc8h7+G%EGSl7;BxkUzNBn4Rg5sK4^Zb%d2mD!di8{tF5~n@UJvGBF@Ir=gmJ47P;fBuVfyX&>AYqn@{1x5E~Dx3`x9Tf@3)upo^IiK zwDX*X%Rwvs7PvqA$k%RdpgPO2{aC2Ql+40bwr^l;@(9%-SY%sPnc;%qyl$kX;0c`~ zjoN_b70d-^WbNg=-*(t#DogFAVI9(jwpXM{T7)X@ z!vwE-{XQt{RLp$JEbfm_17|Dk+3g=>if4 zDa#QI8@+hnMR8tuyZJB%Q<6@rt+D3_AH4qcQjMIQ59erMBIqMW+jKrfGh1bEVJ8w& zDRYu*vql87$Kc!{vRJXCe=95*sbo@Qs!rCHg_Zl9^fJIh#A8GiE(+Av>bNpy6QMd$ zanbCg{Z}OyTivS6?I%+BvxDpl*DUdRy#!VVt<9Tn}^X z|HEfomcRo7BqJ{=>0OV`N9cbXV_{^vlw^PJX%fr4GYPEBR_ORbLqLf8w_I~!UqhP( zaTE*I58g@SGWWsNI2O?V$l6af{?XL=!9Dv-Olmg&qiI`d__eaktj-qvk2E7276K%} zeW?XIUYeTL{Li+!RmPU#Ao!|-n*#&Fi@7;biTPrIcz!-)_R$2WaQ#~?Tb64r_|1RG z1M;ve4+udBo{KhVq#F_3Oz9#nDw|ms4>u+IT~XMMYrV;W-FlTJd+;o|L{iiP+GmL- zahr0IcrO!U@c-WA3wgmO1)3=TdRUAUf{7m+H=EBz8(120mb!`GBN@(=+sGFBoiQ3o z+p?l;uKwMFa0rkQO8sIUFw}Q}Z6?3&7Dn zMTR@%{#p(gDzZdSW}G{7?L7ALVNNFkco7@ri|&0|ECLAe?G~!a?UwChXGCg^(t2+% z{tkq?U$IGotls?njgnyX5TB6L)G{I2|w!(7kdCGGE zmLypsPo^btrpIw!Qc4h(qdazYpmeD*Y_4o+#O(Cwie8{VR1TlSDQM~jQE*boE&cEO zozSjM%%(7;~ zS%j`4Fmum$xhW^c5*PXxjp1x{7t)yO!I1RYPpp=^fNIzGD5@X_ifEc#*ZsXoS+4ta zBFfv97bhC6&+0C@ zbpxOX9zUW*_3QwNHwGm^2!+4G&ko2x1T%?7e<5;qm<=Tlm^eZw@qZ4sWgtUezDFrW zUN}B7CaZ|S*b1~- zIj%QE+TirGrrdPfx^9jLAG+MG8aSWkjEG@wSs(z)gW-UTQ4Zl?&?|<^B)QHcTp7}G z9#cSA>9|Q#u)7uxEyK3Ds?I=sbV(wpo2$cDM|Q&W6hZ=HQYfdfibj)bwXDE{fnIB2 zd#M7xy+#LP<-xM>-fc}lhH<7YNt}eIE zX-@1v#Tisco}83n6rYW2^I>oV)hj^gh_l4gI9&TV89@~C7v?Y8=M(Yu{fyyti(>Fc z##ro&0Vn(QrT(XA@Fd4#^%0;1`3g)d_`{tUC>;Fz>@6ULq=tygiLd#D3ymfhK1T^)!8}muC!vON@bQJT#^Y%F-q?0b0|~ycFt?%N_1FlLaw<~y z3btf$&=5wGW?~$h-RcJ*4i{S|_%)jg-?(R&SQ4cXe}6`^Gq2A|KU4a?!GSC3s}K_n zMuRRqQgk-%HWs5RZVI!F61Ao%&i*`C93|?bFNP=bRx3S*6`CFqVYrnIaWE`JnCo|oENA#yVy1W@{0gluh5%7LrHSjNM`${g4<$^}WVZDF?hopT>#dsZu+!M4iWBo0TXMghZ}!8`$6555 zP9=eF*_mMHdLUbLwd>8j)+wb~7Q46_cK_0=7jxiZ7&G6Tt!uLT+J|OkQ+kp(kSq0qJ9;b zG=63zjf}R-sd~Cm+In1UzHWsPqv#djg40KEa zF~6|kOAFppR=S<$(5ZV~0ASVqetm%jI|<)&k+hUI<@f1i1#GLe7v*;-f0n=rB z6l5RFo>x6mITo+BaZi9zJy8)D) zv@l+yY7CITtMuzPvc8V9&0GgOk9+7qgb#SABMoCB6mnVS8x;S_f`n)RkD93UMFjjk18;_{B4Dylj`?;wZK_{c6*);(MBQblQB*h?w>KazMfm zfV~ZB)>1sayXB@1-+v&q3lufGTa#P;~VfBe5s}*dZ_uh zX)1d>$dvK|Spz_hCh3H9wcpl3tCc=R*?|dyGkM?9YW+{HQWybd(cR>fay@6<=~Fh% z^?40b(hv!*j&)WnT|9$6q?jXo-G!~U{^Szpt9zT3nP07m=yNXRfBwy|fZlJvy@Zd( z(VjnrwwD>=`y2m}v#r7YFc4TQ3}Ef5oQO^8je&ojU>>|tFKlF2lwrN(#hNc(1?1YW z>^^4`0Wg;oUXKdpC3M8UswoVT&AFI~M>PmD$2~!6Dp3SLD&#R6QXz!LRLA&3MQng% zRj{-|D1q?#3Lt^`V|`1_HcwsYHCTW9G9OS#06R(U691EU`Ja#d&oNIIDsAs6K9a|a z=f@LnCWVS_oX&gd?d>mMer6)*We=z+cwv+~wqtAEhxl!_r^Z-6(4Co!qe0dIe z|I_b}ZTOV!=a^=|Hz=e2uhY*L-y#5C^X}OAEA#yFJ{vA{)LAD3&v`F57--bP@kku( zZOS#OmBun<7q!$#P7_PLpUeSta{b4UK&{QX}& zSdO>S(H$>w{xP{ic;JE8(0S2j{O^;wOA`V=kmJ0JMe~2}%BL*ff4VqB8hC^3K_sua ze@4yoqx>&_|9`lNupKnBU9oZtpI+c|w;RO00PDxy+p)4dy^1^FIB>@Q#eEU~kIEF# z4W*BRq7)Z_{a+-}e+Eo$_zSdExs8nujepwdKX1sRir;K+uzgQt&@4HZjO+NUJNK`# z|DPXtJV54!slmhj55NgHg)a&)oRIGpS^v|#|4XAhT@p5Ud`5%hw>NxGiLU?SjsE-O z|NSPy;?T^dL_hYPA*KKCVUJh%9+Z^S=&w;)t39wGEDS)>8iS{WJi_ z)yMq|!TbMupQlCS!#AKAJ{-}Npms}YwL69SqlGnM?*6BV|JQ?G^uXG{cQvvxNd=9m z=)>VuFC6@X0Obv!!t$R7`ri%!u^)i@D!w>n{0{$x=NT$C)xl0+K7SnpvirAZ!o~mg z?dSCZuNxNljn%FxEkArW!q(&(xz(<3QqjloL~p_g^=}qlRHg4uoTj!gn7Pa66eAJ+m*Z zCPID(3Pn%wTmea)A0CIe523sB8$#WdiYp7sK5bY5 zEr7EBNDs)^OPtHp2%pJ3!=77>WabLNC|@U$M=c-~h7P{C5eJg?m>Jf~eu+)yGCu&c z1_0I!R^kH$Nuvwd&)b#X1Pl)}97S@RAM0Bl4eK=>hwD>D0XeR#KK+@eE_Wb=(rBV> zO^6X4i=H}VJ&&{uHt2;rT49INZHm5lrijp1m#{Us?4BHyCgD!RYOx0zNc02b9>OoE zApu^|_Fj=%1kzRXPP^j14RM#r-1i-T2jek2T_JhP-v1eB+ccCEZ)FA|aR3V~1o*ZF z`-E$5z-bS><|||55MKFTCsWT;642}eR^Ddszxc25qzj9>axw`N%#NuT?rlTgsQD&{ z*R1e3Gq=eDyP!0F$@gAU`}_wy`>n(SJs_H4d1aY_bFCSEA4wP9*yyHDrA*co6tj!k zx6~@MnktkWEy@@t639liHifnjA{I?;Fon%-E7tnMwrh0jK@i>MJ8fJ6_W{ zFVpv^s=;C8m2ti4QV=4bFlOn=QsiwHDoszaYhd(ii5Y`hO>g*#t9qNgu`{U{hOwxo z_ZVbUs&iB?T|TFcEKUW$G6l4J%m)-_`g0zFQFJmC8`UzWC765lH4#gC3F%E+xGj~U z=Vc+Hgj>^hGO?_VNr~L%gSd4_HXeQrN8_Ex0M%?-#A<^o3gE$sZ26s4?q2%J?KVW_ zkM~S0AVhSddUYr6&2$~Dkm?-`e+;AJPzQ3uVmB zI-Q=;PL)5DL^lsB_>Ei;uKuouL_R{kKsOvXGfj7l3P7fHj~FQ{zDnhxSVufupL%FE z>8`1GuMEHsL^E??@j4|KwSCD)D-g2&0!=EICRml55P6Vvs=Yq`gH^C%E_SnwrQ5%vQ) z$+0(mSjGOT<1Y$;)d%|QW4z&!XT~EAz$o5EHBVWgResx@52_YUzM1aczw=(LmWe{C z;oVv;GrxN6KJ@n&F$I&zR2Y|}uQYTcuCpYQ@hkyA=kwqI3h6vDq8rZU_3Jj*05t7Q z5a?JFEPpOhX(U{n1X?@j9$9NdYGP36eUt2zi7;8HS{dR(!?J1WvH?7t^+SwjwcK6VUYGdEl z=zrt+^9CiK*WV`AIjvyD16;G%Y z6)EQ)0k<9A4xa?(LX0^S;anOm+w*dUUrFinLm*Jg*a8 z+ZZ9TtFh}XoE+47W@CYX{&^g%r^wEB0rG0-a!2<4gEe*UnssUt5kvZQE@=-ddXG_tE zI`}xh+vXsF<;MZGX;z@jA3QL*-J0|h2Ch#QoyL=2RReRoMY5S|S7OowMjOw)=Exnk z=f?0ap4K(ZH>tyO#uO0?tpg21T#6@xZ)hGVnVPyG0rda`3>9 zGjakY8zm}Dsw2~{bu5O#o$=(RHq{N^&?bD2E~AsZ@Jv*NGK7=FFTmHk_PcYoUz)$D zGMV|9Il88w%s1G-JX(*mRnrTJBDv-Ezf!d(%5K8#<|ekno3 z2bC1@GgD3`Cz#oI+ABd*m(SCIu>xOtH3S=Lx74B+QP*4~8)3b!)S)|>8O`N$(S1?g zYEeMnGL-Y~;-?I$=ucoHrIDm@QptpGLoKf&N*$Sw*ZO?7lxFQcby8X%v0tDMa43j6XJJOTE4IAzZgM-RLP z=kHuj0A$oLkUvWGp6`fVW4^cCw}7MeTnk%bLte7c`@pi?4MyPmyJAb4O_imwoSqvNl_Iq4G6r#AKSO zC`gm!E;C?GZw!K9v&$JoZL&k4&!hy}&*3t9=@OS$UD!woD#upn`5;(EX+XSYUpg|p>j5!a)yZ%MdP1ZzOt_MxB9%6x>tm7z)1dS#2&w~Cd;-h znsF`Rc6hJ;VvIM8sH@=9SdONE^-m4d0ZoU`?NIZXdk>JEjN-r#M1`@)cS7R7(X&wV z+HtiD4n}h6%5<&A_lC(Jck;ENh&b%ojYIL{XJ0qQhik5{{3t`gdV_EONQyB02AGxo$>e{2umsou|R*JBj7@9@gehrhnp-<@++ z&bNu6QF@>5ijxKuIv*6~mFsHBw>N|u{9d`4XSim$IiJZ{rh9$^-@D){gBAK)cOMBS zP2QIPeYE%u{SSa?NaRO~gv-Ud=BF3=u1mhnAM*`RBT?{%sjq@wST1uL|KcO8Ext&D zGP#1$uOAZIEAf&h6)hr-Y-6V$MGE;7tpaoY*%DZV3W6?ICItMjsi2*#tb>=s-d~LW zCRM}e_a{tT>=mQIJ?QoSlGN3bUHkQ6&>lE#IjRise?DRi zv+w*iu+)s!{gSl1&?rgs85JB}zCn}s+lW=dkF;>+V$hHD<(RWd*q0=D%=`SJXc90v zgPE!(-K}VJH*X!CPPX=J49cZsX`S;%k%sbw;M|JiDF(a@Z+9ps9LWRSyCRI?9i~5^ zuK;+L<&qRMa4UfRHrq#?=H&iwwZIX7(H_?shNZQ5;3o;pO)J`M7+cO3t9!wwRA)3K zy4viy+M5?!39_j&dzQkh&|ZjRlD5XG;{mui)wCOIRa9t zRkSHVr7H4x!#9C0=P}_lJAynyOO4pC83KW#?cxi3{6}r=td(0XlqUQ~8H$<9U7_s) z`8939Xi5t=!3lM4^NF9gs*auYHz25XN5_$MN_ht!2;>x5umOCp?V@#nirQb292y2E zL_T?EN~~OPD!B|q7s|k0jJB{Xji>xDz~TmDSkh1_9>UE9J8>iTM;FfxEjadk7|3sW z`HJPOtuP+Ulf7rOhXJ!u4&`dkl6axnSIkuQ(XmX!qJWFL(Ke)H~GOB_0Pt)WiC5^>jPm*v(@Vki z!M``U_*G7vkUcA=NI*f-HvYY*cd*6Mvfi5e)u&9+Pjr4~d~5_|S7|*)QCZF@Zu#700qAJQ^8RHp9a!1m4uLYej|)-4Po#=u_=- z?BV(TpC2Sl+GynJVz?9o^FB&&k_aPfitsz`cu&BhlDKj3qYa!NxLyi~Rn*sWH^Z%! z8YTr;eULJF!}#O7E|H45R)Xfw;#dxrhpd?wEUa07LN5H_2v!_0bm-@$lDNESEOi+% ziitJhVZG?^D<%jlHq5Y?D-M_sW|=WKGXrPS+GkX8axlBM?v`PuqOS=$n;cqADOJiP z9(LIsUT=)?{S-kwKc5b_OO|C-E;WrlKW=(V>+qv0IKDLjInk$t^Jly+XT=u9uYdZoT}_GI2bfRXl8KbVG$u zho>^lsd>>~lCUM_)|q3vg)wowNs>0%z=+bp z%1<$fz2j7L>1Pr6&1GLIi>mf`VQtWOG3KBZRmFvqF9qdmaOe?}6g?MVQMElJbC1Xu z_4`cLN46i;U78nL-0<8%Sm`<%`u(eU2vZYgvmXA(AHpqst*g*uXebU?34M1Rw&lqf zg+g(PK~0fNhkm7M(<Se4|8~`AxOd(w=0f?%Ovt_) zIeWWyrN$;{Za=^6LNPp+Dq*(Zu$8y&HGW%L_H%$hMSZL2lc{jRWoH6^S<)CI&?0xrAtDnrRJ_ltaky?vEFS$M)#(@#*_*+crlE!?8-pv4Hk<7Vs>Qp zY@CFnbf)pr3yo>P8$wc=&C4l*KI-|M<&V@jhGA_rR8}xob5+$B4>PM*J!V6GqxKZ< z5ZzR!!2A=f}^qG$h=Tfyn(zD;OW+BS~~b#S*3Z$Jg#$YjL_~I-m<|bDmeo2 zfDl$P1~8a}0ms*g;KlzKR?u8W?;IWX!1!gd7@&m14Ufv{k(`5xKnY8?l`NVGq!P;? zy>3m4Cf}0#B_b%}l23J55YaMx?WVg*1zgDKhh5)DZCyGOoDjViTQ(tluR4x%EZ9Le zCG>$vT3O^BwH&=pq7jtR9ZuV8^h~?&3pMZoYS2XDSSdd2j}b+!z~--&&AlsAVrzX^ zno20KAm1$tK}M0Ouk}A$WAMFab2G0ob@8z|tg)8A)hmjqKbFRwK=$30Bd1{yfgdn~`_#1nsH*%7O!ByVEPvsF%rNmb42eP-N?QItpX^xl2#`wPo3} zr8bly&{!S?eIhKGnRA?GSK0PW$PMM^Qg28RkW_F1>fE@$Uo$j7GV~Qnq%tDGVzX4o zoTJFES(tNl_U?)7*=AWFK;hCE=QW;ez)obV7zP!|(-&yl%|Hxl&v~Q0-;c=e?jB|h zs+Zrr3C>}eUa1VItNp`KRup|T320}#vs$4UWqC#4c?Hfy=oe>4`6F#P#9W-=SB;SQ znq6^*90UupIcreS3dfF4A{6Svn*rW-)=IF67rKnZl>rl@SYGcf_wu;qcyp&~UV~w9z^Rv8MN6 z?SHiZUa5={lx44pt}4m?%>+kZ;Bt-O?3599JX{_ve_=hb%2BR!qeh#OJu+pMbs(+0 z6rl28lybNY%Kh2EoPkdAYz8w{I3gvS^F6SaqHx+WKVlv+)~#sKUxH75GILWU1gK{)JsE~1LneIKRxsX@FU zK29~W*?h7bp^k+_Mt-EnAVEklzt^&e@C2ngj&>@rF8ooE6vM;qf4O-D`i%InxhY9r~{s>I~fsUb%#d zLH97j`2r|n=TO8HYFyC|OwbZyU*LKade{Cw@rQU|blb0Q*W#^r*?cvb&8A4O`34R@ zS5{VjOXZlNHNAeP_gAtQ&F$4T?*WO_zJA+{{v3%(P9mc%N|o`9Np4gPg-Fw@p-I$y|A9v=9a-E zAzC?xbc_$w9UTEcO75sN#=H@6y$g1kqS?_tNmAR>>EFNSa5Ims!{U+-5;nKZT-2T250W=D3wmp*H$!sKr+ijN z+EI3ia7w0%ua%JQ4xLtlJU4Gvh&XYsK%bBf1oEr4EqzfMwXS}A#F$xNpLTL8F*Vf$Ef_!TT6=_W+k=Ex(wWn>63J#$yUlrXax;C`! z?eK9gxoDYlHX;Rse)sFf7zOR$m?En^G#ZVW%c04m>cx36tCl7Kc8P+Vfaj?U`>TUb zJVKJ_x8PC60x#ym9erwGitXc47<`X-f{p@Fp&{C8Dxz@p|@T$Ei z_`Be*!PqLU4|D05@)SrR-#o}N0+o4bRojrMWU}&~`O}%!;@t``r6gYpgDJjSn|Xwe zq;dy`Q?IM=#+_E2lizd&*9{(s>fI3W_Qtf21q6XZv4-?Yom0!deR<>DgOMlDNR1y( z?Q|L*x)Ihr!tcD^#9s|0innF?^4p|TH@so^PhF|=zq2eYea<5f{4uaM2H82UGO5b7 zcz22UyLG_bEw&n%^23Xc>9C*4JMPL{xk*Q|foj*>1v~_k+V+|Gy-J)MD=0&SYKU?~ zkC(}84fbl4nu%59^}j3NcrsIn-+;gi4_lxeS2ZiDWM7~;KeRqV9O%B-ZL_Hwn;>?;e7M^mp}U%Vj_j`QJy-bz0W6}O8i z*QbqHyIXjt!5fb6tBKg`cFI|SeRSRJC}6#5I@Y#oE&QWfIE&Le*R|LNu{G>lo!}EM zFcjMa_09otI&j2lwyBr{Sth#`m0Ub3&{<3Tf!7DsO0DAiViJQgfi2Lusz12teK%NF zq?*T4qWZ&trD3LA6Hb>K)U)<2ZyfZDvVh-g4nl6qav5*4Wu;dVTd3E+>R8gmc<*5# zKk3oU)7-|=n_dXO0>+2e&zN}uzwgB=PBK-Nz>zzuowbA$?2B#2G1rVZC>Q6dZERP| zrQ*~+6-I{QmtJA!S8uirnI`t*o!-UV>?`|qon`xp_gF=d=+$S6t73akJA z#B~1t20Xc&dN=EJY?}C9h}XqNQMz;sm&kA@1P7(l?)a_2b^O(>+bt%;CUy8refHAg zQml7paB^AApMU0=?Hy_syO2(PmM%u+sfVFUVF*$^bU%b&27um~2&QeGld~#k67=nj z$K^U(--K^@u6c9|68x95Uw^NAjfA7;EskBx``8dWHJhw2d7NLu6)1WsU3B@Poecq;h|oLIca9AVnK{GcnIDuW&~3K>*&&xUQ$ zuST9xbUxGp4nUDH)zk(^R5pSB#pf}2Kz=|I79@&N1$d+*XENZlUzHM0JcM1$hw}MD zN~4+x%)P*y?LzdV0jW|QVv^=xP!Yy{7e~PN4b-St`W(w0%aXm^g?pFCnR=epUt;v2 zs}Ov|RBa{*Kz4PYzVTl*wFK@b1bA1%^oM-+Ns(DC5&||Dl1}80?rWGk46C6+d|DO* zy}uH$X^jP`C|fmP?_;uhyteDWsuyW=!Fy^9o=N1=UW7IBL|KyYHM$^E;%ESFP_I}a zQ@=*Cs&n9a9G4y3{#j6q7855-J-V44<;~on{;oTE`_uDd73!CBv#v>VrdpQ-8KW(z zqDGrdLrTR)<5Ne5Q;J?+O)h$rU5YUC;R*lxcV_DBDByBywTj$i^(m}d^g4v$dl=kl zaki1q(UYXu@12^QEUgJ^>EoSGn!HIotJjG6#m`CS2@yo-0>+ozpl6v^LAAD91I=La zKn`2!w%@y(d3MlNi+yETihZHvgvHd>`K*elao!&Zu%tO1&|@ZPoo5X$Z!*y|a@ibo zu2=rcagPtz|#A--r!S&=B|LH~-kXypn z5!gVWSDN}JOIAp0n8%P=>f?pS&925TivP4Z@)2*rGy^iUTjXpq_fcP?o3VDm&I>uwcHbtQt{qk zi|ul6T(Ad5o;YW5t(Q25%>5$;iGO;abn+mjJa$9>s_dqH;YxC}O4h?l(PGg9XA=G+ z?p2g;yL-ELxu@Rm6a33cAN9J~Q{n?rY{lVQYr?kvc%hN~hr~pn4id_FaMR#FYgW(| z{<-t#=58FNv6hRa@>rsMo8!(ATw<{XN+wUeSV;XymGO<9EAbs%aZ-FoRiL&5FeW~+ zTmfeYTUPvwlV60U==>G{i#u$bakS!=cFp?MN)0xw2ABF$M-s6jh(~92)XToR%&p?E zGMwhSxu0urtJ)v$8Jha|?XxGd;gLMI{1o$R?9yD&{nh^GfXAlv1G7;@BwH=^-ka58 z&v2;?P2P>&Rq(hhL#=PNQo%?VsTFe~{ZSg9J#!o38F?_$(U)*5sHN9+G&U1c^Qk-+ zD6JMYyXC$XbTZ{R%^9N z$XfVVp5HA>rPJw9rp1q+bztAMRqX7bzHHv?ekXOI)n>&om`EQUtzS3g&-#?XOdQzu zjHjH)E%oHn_}+I1I=`SAGYWs^R|Lq!e=Rn9&22L%E#cnR-f1uvrF9yb$&hp(RHb~@ ztmNR>>_Q`-ijHE| zUBw@2tf5Oy^!&U4+Uw=dgX!z-A80=<57gz#cI~-IYogXpKmhJIeSoXGI4#_JDfb(% zpZDsX3>n7h8UK6;Nd|Xbndvf~al5%YwCdvWRGqLcRC3}ombQ!E&Gj3SZB0C*E^Ut;HuYIdGlqrnvRp&Xxq2QQ?bt)W48vHE6Ku7cJ# zwZwhHLeoy7&@`W1P6S>Cde=|gyhmUF9c2@GRb@mtTRnn=KW@D_n$cl;tKEL}!tIEs z;5k{sBBw6>X5aa?$(3+x=&R;C1S%<9;;5+_YH}dAp?Nz9&3hMJB{>i_RP#L>-j%H+ zb)~S>!Ix?3RC!m;b*hHKo?c~m+kW}X?>LT1m4)!cxZrm)^;j>3PiPUsV2gMvVjj;8 zkx}CLTC%xwr!K`W>S3)fzo(@gf2D>w?QuqWr`KTz3?086R#WwLbT*1Y@yeFnJv#kr zZ)+2mGXC73BPZ)56?d|a!CNf~I%H(5!^ciMrIC%KfbqQ7J{Ue{_6@c4Xfl}qZ++vD*L z%o}oLYhChqxYaXwxKR?Wn2C0rrZSsAewWK&+nHc<{6HjDY97J8tnPRjso{sNFG=yu z1X@MV(~xnm829i{Sbwa$?I&7vgw4Ecf9G;@?)G$0-HmH z1lED^F~g-)aH@mYy+DC=sw=Jzm$fY7Ng=!0Mffy@E*?HVd}qcf6vO;Sx4YE@IeNrU zQqab)gp~0XAxc{n%{I3Xj@u!MAlkR67RxaGv2c6Km>yvIwNI<9a4&1Y5h=^sd={@C z3}0)cdjlXzHWw7L+x$Enn_k4a>WL=L4Y7Je^=obR%CC7C-k&&Sv=ddVqC@)jdB7TzsI$e4M5SFZpI z;hAQ$@`3b+PC+a}SXsuE5)lCzm_)Lr-rH9I3d0YWhRCLhT#GgbqpcP;Xl1~x6!Tbx zPr<(q>Y~oGcw(wGzp3XFzY?zIh${VNvaZtv3hW!*$GWX%QKJ}XMtKtU7LDkur(oue zd344LzEOXtu1tlv7Qj#%LV3MTOzypRalmJj3rJ2C)?|w}^pnb|l&amkTLur8TY~Si zrR(}U#*qCcvNw*&Sdya-6DLcxD9z%|_Lqy}`0M*>QatVslFntoF>pnQkf1_`J8!Ai z3d+4)o5(!rWyju~;F3r35P7OJ%F!!mlM8vd4h>AqCBgq3PCTa9Q|doP&=JigkLs#b zMMT=Y+-0MQ7YNCxQ>2qOl9N8#DoGm3lUR>!)z6(;<4UCw5^N(6H&>8IIHO_KKqgy) zrRcrtc?WWxgN@Tj(I^h!tLs|k!q=iOSi)eyE|HPmjyG>J(p@;1-t)uvs;X|#7l%i& z!K;qjBQ=Yye2_z79@3#mf$ShIC9s_mx9!T{?rc$+m1-Aac7fFn0GWnaeDH~~9W{T0 z?(?kk%7OphQ^#`DJa5dEBYW(ivFuzS2j1D(o_c;)t)SrxA}2a zShr=qOE0xlZ>gkQZo5aVN!5&9_vv2xkw;?ao(btC_L5`*jMd6reWRi$M|g@P?$`}9!f?uLPBfaQ zfg(Yc9B*+0?&u)q<_kyjMb2*ZmneQvPM#yWEX1)O0miuggwiD*3L z0sl@}|8SfCkZy1HV5i<%@_JqqxRxYFVuw@fS@G)vA_YhXv*Zi3Stdhi2>lZL7*mHhH!oi|Ke`1` z@PA?tujQeIR!(1@yK)lZXhqJ(cgMb~US^RT{1!P)_J&fD_uC|QK{uAE&eOQ%T~p=< zuLJbx?8Y)oXE#u5*Q)I?(>SqE%-;<%56$2mi&221E9 za!Waz9@_{m>de2M39xD-A(!Nzyr5o*^uuU-Nu6fAj>+;cn8=v+INPJ;<2H;Y)Zc$)Sum5hSvTgNEmeDsm~7vBk&@-0CU(KWP|_JXHdQalKCJh^ zRKTPY!D+ujYPk`#H&tE#R)3G88)h7_mb|JhyTn-s(b(KsOmxPS0^K$t6<8wqfUc|;U$rqm5p0Y$LLWq)vn zvVFVbn$35k;@dY(w7+v#%}~9ekhSkl0r-pQ?}1*I8#A#i@9TQ!nY(#f1`v#xHGSDNcFBd2LmvHz)36>|@fa zzJY9krzO|FGygrG9+eOQ_lCpT7)8f!)}X%RAR-;Z+GqUUhTELlTG)vHUw5S21A6B| zlP@L7vuxOQbo+ z8RcSA=ir>og@C#rgdHG}@xE;(#b@@Cc*cY9R>f3iCURD3RxN5@7znPOMG!VE8LJ6D z^n_tV^d5F77!CTpH8=R>FDSYlW=l)B@`jD>wGNkgaiZrxIocFwni!##K@F5%tF=`| zEj21!=ob+FU*OyPI!A8wW>a+vR1Rpz&3jMH7`#`*x9k>++UfyRJptgMPw`2C$*g|| zNd8}^i(eT!ZX;`2o`H@V~xpWe~b)V6M%*-gqu3e(gv(4wz35=pOhSJ+X**TlMaJHT>E!VQt1g zyXj|N(Q=^fS)12*m*oX>Bs2}?p*q;pw*$wrU$~URwRo5{W;Fh@Mg58jc~Ijx?})ri z2PJEzi-1B)?smY@$_q9IsHH}`fBYc4KM!i?=k1~SNTP^tP=H&)qfIoP&nnnO)=|}( zJoHuiADJ-b3}EaF^8@t7WiBohk2lth7v0&iM#oHN#p))!;Nk0zG&n_@H3H=SYViMu zMiL(nXl!~5;-?&5Xat{Y*o8~zf+v`6d0fn%MNYwXwT=eTPZjq6;yC^fkNAIkVg!*W z0X{TRYbEaw3&9+lHwIv$j)9(YgTe>cOBQVQ=z@e!sTV>OhI~6=MhbcI zVAMTs%v)bHl9$IF`_s}n+AtIvZ2S%gH~-N%_rF|MBLrQ30FB*5*Org+vuA-qWH7EPB@LhU7wd8cayEYCvHO zeKPC6XO;hN9}8$RAqN_h@-|gBQw30oP=NT~HX5 z`pLpSyo}61p5uWvJv*X3YA;7vq@4Vm%>2*nU@jWuJO1j~P!Mp2j^ch%!_i4?IFUor z(rO@(`|e2W3aX{`9~;$ND5!gj_hQI^Vsi(HLM<IgX%DQmRD$JcAZ;I3d3j3R6kSoFue#mwLphorZ@ko4xSg;qzQY?D z(6;&6Df;gHMhH|WArD6*#7uRVL%N=_mnnA<{`NA8Kt3Zm9!)bMJMe>WR5%voi;(m} z4oa`CQr5V+aK{Rio`B4kOlyw0D7+W9x3C{v)5UMr$J@wS#D+h~kC;IXHURyIXJCYG zMKNn~z?UP^##3^*B`N-bN|M47p~9iQ#N$BlbT$=B7gLqp-oYn__c2|_3K2(p7`{w|&tVfdpKIGPf zs=;;(AMMxR6ls*a0LT!VumEvVk^vjh@@J}I_MiEKf5KrP&wIesfD~LP>4yJ`8;8;Z zja}l{lGnn}*`c4@(^t-12VUPlF}xVVff5H_zd3@h{d`l0cy_{#^nQsAW@ZCO96H2F zV!2I~9>zfoD=oh8vzO7oLyyzc`T!P^B1lRygV!DI-OO<(;+XoJ|1FYFl6Rf*!B&w{ zy+f+l&BO(Ja>a7kBu+V*WNr|RGChhE&WQ2B=0x3M)6&QzsS=g^=L4+pTnD}Oxy7NU z`2bk(<_1tl`{1*|YcfojHrrWzp$|YA(f1hH;^~w& zXiEk@bv?w6A`y^*`1CU_)SQsHU5BK+6)r~YJCvoRrC&ALAw`@YqW=g%lLY|l68D1n zrTfo28>F@d-akX4Z-ZcQVeT5^zeTSMdy zTPh=EB3Cvvcfb#D+@O-cLDScU^9zI@{C-!T^j=I`KQJ2uf#X=H-zuB%uLrL8#_QaK zf!cJu-e9GkJ^tJ`yJVs#If+EQPmM@86-ysy-LC4YytjX6MotqZN1zWjF*5F-iAI+d zWE0HS>?Nz0>xutTVy|?(K(4izgqwFt`5415452J2k5%Zmi#-c<#eo#yFyHB7q=QaA zUd*f-bdR+ka+f|mso$&@V~b0a=;R?#$!10YtW7xmt#^S`4BW=RZ04q656#vc{VB`w zxARU(B8$j;jwcV4c@pjL>iiD<@_T2l#KWm|3Ne?PmyoOuIs z>0GYK&$0H0fURh*&ks}9m?}_|E!361eMAp6cFG>Lc;fc9hnh!`&b|(ybjV z&>T{Pv^4+TdQ{)z_Y};9nd~^s-m*QeTDe|`J$Iex!4xg?xxcaF?x-$>Y??@lz}4Bf z?`;bTyW{b~n+Ik~suES&5WCgdz6?+4@!}!S2mb?sP?x(=-TNs&fm)?L>-k*L9VU%n zvmb4}$!~^Y$vmr3hfY^q`~1C;X~^%{Yn8HAMPKjEqFlkFJQDj6@xS`Y+I+C-KY#fy zgS#5$`r3_{h$04Z2j?Mo(A>GW%O|%P^hlT^`)~_}J`y)EKPS#3o5-;JV`m33fC&Sk(y)y64or}&;hfcKT@rwld-Rith~G@)&F_DN-6YqE`uBPzMyBF zec%4p>>>pdSt$+=xb|^!IWko(4$l6t%&%jzt8~8nxM3$G4`ZRpZgkKsePGh8A-p*e zm@oyp6V%byJY}ywE;M-V@&jEqA=CJ7=_Ps!E0dsQqCH=DZ|}MJ1;gxknv|+g@$1JB zc^CXVp%P5VDA{h+s-|OAd}cj-TD_$YXI{IuN9TO;uh7Jl`@ z*}MX^w*R`fUupRX$U{xLdI!3nwp7~m2<%N>So?71gfLd9HS)erDKoROwiM=V>5IWD zj$knz&f%*E#PEZSL|+>%bqgq#%OFJJJq9vX=;cE@Z81dE9dhQ`mQs->OXq=3SJtzW zE@CAH=A_>~P2y6>q`m<7ZDKlCcyw9~FUpr2;OvR*i{$gmyZ+1?4@H9BAg#aekX%mk z&{kKy(G>=Zd^Dlgs6wdzB!ekmzT8rZ6KSd{MPrCCZ%C6hx3FN*lh7xx(*BN<^czd) z;AduG@OP_5GK*h1ETgnvuoQU*)-uGHa4~ukVERVs?9Vn(?N7F?-7NuDo(5GowYq(i zA^6}&f6{UiVlUaI@VDQw;{>@bMzjpNRWFTu<-YW1BNJTx8G;_|uw(MB>_6he~yZM9eKXIdRT_-Ni)gCHajwxUaCvK82-(K@6q`URDPVT*?u=HQM}mtL@)t+} zJ6G@aqkFvPmpmB0QjhA16_Yhy2_LIIpNMS)fq#|h^}I*fI@V@d?meqa&ICxtIT`^> zDl)bmkL$({+@8!6+y#OF`bQz1#xiFtk)AVPWHxR!jDQhfr`z^%<_4uM->@W+7P@vU z;U00at$Prg>kR(DYo%?oU^733R&`3{^x_tTG zH6hD4BsHx~DS}Wgle_Rnm@Y*M*Z>Z^3e$G4>G0IwyS$i;in6xqg8AX53dJ8S=jMNT zF!-bb-;68~oC|YQ=W6Nc?ep>C5S1loz{8cRc&UeiASAD5c zoo6tkKB%iyy<+^wtb0=wZZ_qzb9)Tnh4zleJ<_9q+V&>(XvZh}X4;;_?!iy|aPFs# zn-!kQwN-rIoqiPLE)2PUKGEf|fJ-(c_nQo-ZjXLj(q{eJU@s=`mw0jQa2CH@OvE3+ z2NezC5rXuF?T7AchTD62g(1PyEhdmrJYi0G%AnuAf^BI=`clDS6v4@{(t_+EGKM2% z^&stW^F-XTc=bl37np4mfFeawckVEn_!B|By!mT%jqez9B4e8PcA;n^`kjl-Xzt)1 z!OYfCqLR12)Jwqob?JJVHJK@;`8x_+V<^v=HYg9BUko#p1=_FfkHLe&=96T&iM!jn!XD94cK< z=ad(4hf7)E@Xcqg_0j&J&IF4>Zm+B{LV?7eXgi+|$8qD<`xgKB@4W1F!1Gm|#YfB^ zcW=%QQ0A1#`kV5eOtYVUBjgcW1Fcs^hvFx0flGKa(Ncdw}+EGtvIU z=DW+|_JHZMGaSraS8{N^A&R&j_L{5nk1~CnB%tBY{~gcy_l6J0j*fH|!XLLy2?>!W*(K@T>=?oz8S428l(!M_-i6jHb->Fz`U z{i!UX`p_Hu^e@-GM5q;|&TLrsHIPRZAMbu|M5)2WiC=h)5|Ho6QPz5E&>*rdOm;usw-~gdDdBK&$D)k&)Ms zqp=w5haMfS8u&SsGP!EwSv_69-@{z3XQd7EA8VXUrC(ZDTlS@Sg@^R9623Hv)0%Px zW-BgV_8_)@v7k;`2=j1|PDQoe4u;ak4*ANYQKnwV-S)hWllVhL|6S%(xgy@(`A#(( z+YTh@6Kp^L8%+b&!Bc3r^TA zH#jT8lWLmB2HFun{;qw}tN*ntW4t2aezb(h3Gyz$NPwTvpSfwaE096NM@GKBUF|;| zzhC@Dqt;ZAjN0n|Oxn##-%>1@*MxhvEP+WM3%@;-)D0M*ar?EH)EuKgj;Ctmk8~iH zrPJVt$fVL)!>0^M?w9-d?`CV6d99OWl1o@)AZD0M2FT~o#BlStWACjtgIz!KQS*2| zS7PswGKw5`4-Mf1v2JjnF!XX?gaZAG+5$H+LqUp0GYK4#V+!AR#-Kj z{fS0E3!vR-n!8M+5qtCL7K3mB)WJlD%z^Rel)^(yNl2-QXC%P3-s$`cKLvzB5=Enj zxir{ZI4J$TOAn9%Cy+q}9Y?zg_1bt_P!psj1 zlZAAoIx0iEP-KmMV>Xb^n_+nSbDEM6U`zjKsWQ$JZpJQJZP5Mn)LA{*Cd=9YbX(zK zJv(=-#c46N*jL!sg0+4l6faFwQS=seAC|8c5w^6p#?h(1e&D*}{4Vo#Ny+u^VG4pA z;?7s|KfR$nFLtK15pgQIXX(BNe{V!gKDaq+3Ec%P?E*Bm$mEgsDc#WS#*pwr22$>p zq$*%dt@|)5j*X?pujcfjr%gF^6Ogx#PHnk6nZxY72X8^OofDg!W|b5^4m-PhT@bj%PO zWC0b`xULS9+Kt{?bojX+mLhp4uX(qO=qiFhGcYkir04GSPFAKHRBx_^sWaf#MQbyv2U8b}KXu=Ro)8 z`-&1!k3y@*Pqr4%du%fCEHW-EfzN_Q07@ZP3*Z`67S6>oFjz2Pr|l%0ETz&Om3-;D zo?4DElos7G2_ZHs1??f{iaYbX^Vn;V2@^?Zb;K*br3Ocrj03c1{8Ai1i(&8cehs#j z@x{~fVVn?yRKkaupGn%>8uLEn4bfBOpZq#Vp{aD?Xv` zLpkx|^Oa+WOF|&zUr7K${OfAaaft$z2-+&Y-TirW?J(`lHMy#dvVFy;R$g!Dd%5X# zb`xlyx2{Nkyc__{2hd1%=t>5o03ExD>fjF;lu|F^?1wUFVct&tKwAd~Z;=uzd9Fcq zM`IyYS+*cYez}Ky0!VjS?k(Kw?K5uoEA2f~6`W013#2(E|A$j@g*qwEBOV7_O_s)7 zw-LJjukB^OR8v=}ODYL;y^uuu?0;`;OUpz0{e~?8nO7}tMBrpX70Nxp>3Snikcx`1 z@a^Kv*Di$RH~kB~0JJJf1Y}cMaQ9oHl8;;7Z59kRo_XZ(I&(u%z4QF>jx zq=c`?9k(hC?llAC#6o?bds|1e#{N5b%EVS;m^y$)9#|$3VYNv zZf5yD#^Lu8dm?QXPL;7{igDfChj`Xg0iVwp=H)pmzm`HvjdWPz1Vvtj%G@@KdK)~; z>W2DwtWmIRa&R(sT3>z?9Ef54i%g2>LX$01{e^1&pj2_vB$n~ra}Aa}z0ujhueYVw z=WB3o?N5cUx|-q#atK$*7Zw*a+4ZEeNrC%d*BOMSe`Hgv|Hn*0K)nzkLO%*28}j>; zQ+i?C7QH;;aVI9Jim#VJ6|gHRippwv1?lv4HANG7izUFEP>LaiIs646)(B6FOC%v@ zH++(wwbN!dSZz3tHnn!ok$57=Ui###4Nj=q8cO=|@+g*(en?ofW0tZs8?9NLe2!=V z?|ano=#_(o=3Bjl*^XIe-@m>Sf-?Tc3n1^4=wXzmjP;bTA3E*~!*!41A|7jT3e}Zh z)y|5^@VjRLV_E*=*Z=(BLkCSf^67DJfHg9+4Jl~|Q*7Gli?DAS-bB7oy4ZB$QYp$w zlR)QB<6WSJi(YG|g4Kh#gXAhuCIK|XeG%L+IZJDUy6$T3blWZ?NwQ(g4EC-03#xiX zy!->I{@4H4Z34Z4uv{c$`-qV+mazNZ)ZY}pbciz>c(-{)fhSYQt$SSzS@aOU&s7izT-$@_^HeZwIXd%_^0knl2no)*R2ra0iDo zp4N*LJEQ5~WmK-S#DVx6v7TI-RBG){)()3blx6b`@GLW(chz}@Kb*+I?4@pq`F;Ye zNF;jWPDEFwDPjkSlCs+y09kSsLDi4g$fZK1iNwjwnLX*0%jLDU8}ZM)zOl7bI<5m1 z217di7BBp)_OmIyZG3lvk9YBR?1ij25Has6k zhY;-s$+ah@JgsZvKtfRyH0or;$V37m+lLQZu|Va$y8&-#J&_x(skS^s1~211&19YV(7^#*u35rj*z3Bd*aRjiqLk zED=krRjpncaCzZ~ejpB$K5d{kGogv!bbGU_@22TSSyEGr^3Xz&LdlC6d%jPZ_c8cA zKvTebj5E7g96kTC7aN+P>DN2#NB4D~fNa_DB;^ed$o=0h5;j<}5g6^r*^6ZR?r)pB zRo2f4E#ABNd|~GFI;BXhdVAAVXh%n6eR?NHTf1?-L&y9R1(IP92^P(XAPHQ7EdJd^ zJCsDuYlc?ep%GoKgx@(PXjq&)!dfOn8G3kO7bK3Iw^aN_p-%;}gb;y={6wh6oAIy) zpGRaV%t6x<@?bCk+V1<}>`pDv_^+QcY>mdDrMnS*2DCU_EEJ`^ZE+Z4VFVsH@PTSc zIP!>f33EZm_=@cskQ#z;P>#Q~k9J~hbLj%yugu*aNRN+gmR8}mty;h+qubkD^N?UV zyM|Sb!qI#D4O&LY+ibl_649#LAWUW$EZN77LLJ+d^mfE+-NVkEtku&v zPk*D1`bIY)Z{yNw+#S&+$fUOa^A+$4Eff=`zM@)BUOo5#i0E@uSQ@-|{lf%s%6_gV z;MAI219&7|mrdELH&ZQDg}eBz=_GzSw(s3!GLbgme1S@ko>yDvH;mo7#0C{7+0)Q1 zNetS+3#YAtILU#CW{bPC4^@wS^}n4H_EwiR2XHj@tNm2&#sL62 zaX;aon%EBpYn_Y4FTFR2;BCqnTa~)jiM-;fHc^<^osXrLBr6^ifkq=+OJ_i7!9ET2 zz4=|qCNX%y)nEEb^LfD-VkS;X7>-k>^ulHYOXwbwhQ zL%@F|1$=ndW~Yl|cSDrxUMNO|vT=qqu9TiWSgNJuRXDYP;d%L8lpFh!)%1gWYR8y1 zml{31t~k=9uvgv3WxD)YNAI@q%*W;Dg3Xn{z9t<#k>n-bFh_2OYS0DfDng{8*7Igm zd!XRH6G&yQuc7#|P4!#8QxfvJAwwuqfJLqg&@nQAmkWrYMc+^U&1OH_=t{^iM8qja z0O{1@XA0{X5rK{q>fjW8+mhb;hF=w5^JsKuOK6Vs9ddd^;XkhEc1m@u(&5h}pB`4I z2TuZq^qYKPFSlFGFWDy@%~;(5*S;u>#s2Wbn?CvMcgDw1-=*SI@O#Jfn-IXCPG<9I zs~flvjYHRU&MCrtJdQM~6pCep9?7fnLufruh5JVH+>+3naw37jiYLo1=0t>!!XGx^9V%AMCR@p=!< zne?ns%)pmze)n0|M%ZI!%&F2+u_Wbw0$vBX(bm2v6K@!(v-W%=56S8Le}AsCxHC09 z#slP6B=GApCt$BW&k$;QYUX`!q6`K}!~k_q#4z+;WwCviCO7bBt}2IZv$9pM7l11} z0Ea_0i}e^a=@>an%h=vIR)YG@>v+ltdIXvUPs-?muhE7z8j!K1ak?2yV+9;8%Zfh( zgkjv<3${f13~l@k(etH?X?zpKU?(c{P!(vaxL|h>@mgu*-1VyaiFG?&hlaG);crVHB(H|es^>|TuJm? z&`3<$$xSA#WINo#_;hAjypFlmB7opSA#V*OmP+v2Ay6nANITZ3G-5UCb5ppAAoDLT zYvQeCy0T8}RhkaLjTVK5c$`?=rT9VYF~m5g)wUZNHT$_An+lx8%0h(X5sVe;t(a6} zns4H`aU?H**3OO2B<-f*1?d7LISaK4^cmav5N72R8v7F!NF^QnxmA`ku3-TXLhCyB zcQd*PNLXlKL_|1HW3c=oy^|mq^y+rXCfMCl*KoB4%7*BUmLQc|MGD@n{W@?2sGYuL z5rRv&QGWA22~w&52hQ!IP>0xn!hLYAUSh?@_Hh)*zBMsmuG*wAW9I@Vi(9PTiRO(u zx>AK+`;3@{HDSx8&zD>91JYu^p~TnjQe=WtZim*6dnP{pQvOZYQI6vw&mPrXTYH@M z$e?0qP9w~}NfG@|Y94BQ&|&4N5)Mbom zV69O>ej2iOjM?*NRF?0ErhZad_gY($n;Np~-Pa*Lr6OQ-=YhE!B08%jDAx`Xp-!=% z;Imn#8Lq9p4R|0p&d7)~_R!Zq88(pk{_n4uSKYWU^>r8~0H?46o&;5Zw1uiH*nNly zn+MeBsEA)>i*i!=PdPA^A|##6l?<+fynwA4`}9eP?~Le{$49s3=hJT1Cy;ta!nFqy zB%!~06uI@eQ|(|miR&ErKN3p*$OGqd@xi3>e| zXzd=Thi?Am36KP&LX?S99SJ?LDb5C7-LmZ?Ra|~GTm>PV9a(lbdb9>UR*s&vxk0V? ziV0cn!PD;&A@~Ht+AX>D%?YG@9en^Q{ISG0A@Zn0KZyW^kXXJN>4uMTsoZaNdk;D7 zAt7)gZ8DHeas}1kaQy3^{-?MlGz{{A!qk&?|9##R698C4@uJB=g#z`*t6R*9qD`Yk z_hQ6!ZS~KQ%XXuum5qLAdU-fSg69aI6Ilac`Kh6SY9Gj>3BR70ZCjmI8~2TM68mww zy-t%Ce!H9|50vJOWwCYbB8;zQ29~0gG>@{}prk<@{apur6?>=}=UgO;do`P;b z;h}4RUTW6=0E`}?W-AJ~izFx>wM4>0KnV8zW#2ELIx_=gbusB@)Psq1VlZxrk0K5R zz==kKlng@AO}zhQ-d{-o5W**3{$3(LV2IY4-})<}^Peoc00Mj#=qhHRAoxf@OU7?5 zN6J<{gYoCe(=bdZIB?`T+bkVDWHsPcm%ao-_QHrIzqTe3;{~L17ogYji<;c>MD?rKH5>GP4`=UYec!ZqARH+E5Fzh~aZp4;=fErN4s{dyK&B;8&5hscGIr$NxUX4Z@(g*i5 zOrVw;!OO++&FZdmAyDVHPJ>Ym|H;|v?m>0I6O$$VF9>D*r74_yzEL*?a&o2~v6VM|kzuldR=ogf?lV5fj3p069M@E$k8D z8oN<&xaXrl1apNg(Mq83;(6ur9x==ZrRX6!36gM(RFF?zv@>CvVVma#vNgwX&u`o0 z?cTt{&8tIDgTo#6sBYW0s0m8M-C*1(ARdn~kwhnTvw_d};5|RpGatcub})kf-B}93 zo|u@|<5C5$*w^K*i<$^f(!zPYJraC!{77_NK7UDkO~@YsD876%9@6qCK$-^9%{TV; z?HoYAO?R@ccr2tT-d3F$P?zfklFy%g;+k!$@#jCD2?GGW5Rkr+5=^Zkg(3KX2N`tR zy}smXH2P7WEO{3l>MPt`B-@IFeQb1T1c55}vr<4H#uR2o{bprv4RvEgr8x^JC%e{D?X{i7}0w&Ta>402(Wn%AER$r&pi@f6uV93O9>(>J? zy{JNso%GSd@w2Dr#Wh3ln`bPz2vwmSf}Zh8OZcS*PaeVh@uU6^5aGbV5=WCERdj|0 zm!HQx?!uFat`P6FmVovuB1FR>@KTxgPOUiW_F05YCxl>3fj5kHoqH<-38l(iPp=xE za`J%v*=Q+fpV-tUxO&jJjwUV)5+4{r|Jma=L%XRL^OfU9x_@tA$URrY3rCXtU&x^O$s~jQAiD*JYslw3Ai5*{tIJh3P8_pvxm{ zHd{Mbd0ZMb2}s3=wds6~>zT&OOhmh{Uxd+V-nO5TN#UUEMrG);*D2&(X}jv&K78s` z1{h%rHH$r5Z%P0zOGr$1?skgm+D69PZRss_a7%(kj6GgoL1qXE^G|84fght?Xn^`b z!2Mvq-{TJ7}rv39@##Dwo8SQ7P z%{#c~y7oPX$sGJ4R}bP34?Mk*>ETkReU8V!Wlibrp_q}G|5VRZC`gEm1fsuUQ1xKA zdLufc_aqEBtCx!En!n#l!Mg?DaA`4!a0BlGY7K(DMih-qZ|+^|^%SVA=#@_H4x$*b z+2e%!#x_B;(&HER2;B0$wPuqR4+2|v%$7e$(CaY6)0wS7gyTSe5{zP7A1h9+>epdq=sod^~n~(u3@Vu63 z;x%X6AZ|=%TM$BxTJ9K1!h1kIWvTU90)*3(0KBzltH`U_;+4L#gZKwu6dWe)xC5s4 z8s4!v^W$S{mHlO!8$`XJ?EVpF2*fCYK?t`hMG@{7Zk=t~d~*%={`0ehrG-vz34TE% zR}p7#%XvwS`ohk@b5IB(rqE>bk85$+VCLG*+Pb=yQ5oLO-!66pIq9&clr5C3s^Q=1 zR%-mUnOFFI{Eq-Y?;XNftH;GPp%JYo;DIV~#NiK>(xL~I7bGAGP{-XQcHbKujk;)M zUoR;UtpIY6)AMr0%D6p)T?=|cK|_t^BdKz`L${HboO1MYrQG1nyXQBdIGo5WD|dJj z@|n#geZU6P{SuK(X`gs$$6O-qB(*6Z2ByFv59qr{`88-@%gt3sx|#i-WOPOUC8K*b z)+B4OoQp;!_w|d9r?XM-6tfptD38hdn|byrX?#9cwYkuwnCq_+Phk@WurXr<3eX&% z$MK0;7M)wTEz)?fwh^jVvBX62fz67bT&FeKMw9g`O8O$i#G_Ka3hEOc7F)KrR-?x* z00W9Kjz)bG05_(**)q?O%9TkbnG?pG)6`-mTxVW4PHnmGO-}-#MM{&Dh&k7CSjn%~UM_2BZw?QTd;G2@ ztPC|tu?|ey)p++8>iLm+5(ID_U=(?oJAHx>_Na> zAb*qkUi#^hju47g306eVS4v!kK8NhpYbDt4bYz72p`Tq8i^)hty^>bE$0%=h1Po)O z?Gki;>z+rQI(f6!G}p8b8Q1XeJmc{~`#;bsm*0MK`%!XhA}DZsAMzwiwkzjJax{x& z?fCQ{n)pupr9Kj2D8TyMpRrqPlNRThcV9zw+UYOft&qY#b=CU*Q*`B<8KH69A2wBj|&0=9N5KbMj;d_L|Y9oymIvMZaR>tx2mz~eFkV_y%2y!Ic7EFv*EaN}Xi3BMgdhcL ztGC{{UqQOzaflm@63=iat<%hGEDh}|%XeoLYo!X7^J4rnF(>|&{%g~zo6DQPkmw?K zIHFvuBy&Pp1`U!Io=&^nC(HMrt~=VFPsDfSYzfJCx2bNvSA_5!2q=C>ow1+${3Rk~ zqw|Y&Dzmm|x59q?!P%?T0KVhwU*&WKk&j4!=T+E<@X(IOniNdQ$%Wruw znTO6_fra{1_^R6_C{+`_9u3@mH%FJu5OB?Kut!h65te~NdC))VAF~%qJt1i$!pqEE zxg6y|hR;Ek)iPg<2QW)=ZmzsSZ1x09s-r!Oc;B0e@W#DHPxhHy^>*#X*bHC>9+D`% zdpl>3vlggFcqwd*ekD@y@WJ&u_oTxu+Jo$ha$|tU>U%x#Y$9A%vMdQM1I0yci??7A z?khgNfmJpp_mcqfg8=${7r(PLQlM~DvfH2aG@}0dflg7Pw-kQR%k8v;D0%1`dAbB< z{IRy$=5;2I$9j*tLZgu<5-|s=cD;>y=DPj?d|w({`R?`lkf+*$qm1Z>IJYImyd!`; zUM|+Y+MS4?-_%N|_8mAQsH@N|S?vE0V{aW7<+i>LO9_HBhzLU?($X@dG=g+@2uOFg zQc5F&v`BYJcS&~)NDN4K4h;Q!#=Xxud%x#B-*f(QoDcInYu)Q!cU{-L7RfrSxCpDv zLjUy_aU@Ko0AvnABXqaH`MO8IUtlA7*XUtf-nwf+{n3Pr#5=LTWp=amXwx;HjZ(@{ z&lp~TNgR`qWu=zt3rF%jzltBug@C-$*L!i~!8T-5rD3nE7B}EBnS4{YML4_MG5E9l zPe~*9ilhqC_}xj-j)UF22Ie6a?0Qlw;AjEZCifds3;l%}QxaagTQY!r zI!&8ymIfHSEQl_O!!=xXbs&*p{25)n^IBVFhWT<|8;w`COVRp>=|v&*ls9W4@aDWG zZRQ$s_I&S|O5MGL+Xfv)h;j90gY%1GgfyuZ(L996xJ(R2gxywPyQWxd$^i&X^hR!? z-AX642L4w;e5i;vm+yH9y5sO+z;&HXUYqwn+)=`=!FR?}Y0i}6=Xw@Hgu1Q4j_%nl z+2C=Z^JPe;&e46tgH0E#6nr}$LBx1HT4dd|+}XJ+>KlV^zLt*JHQ#N0WOen!D$3HI zMZ5mx2#@}=B}c8J!=3JR=kChx3OEGTo58?=D42)I@=)7Y2F6_9j~<0hw$ z{m=6gr6w(9!4k3Xk>tjE_UC)K2KL+FPgTQVKM?`IXR`~E^W zC+3GBY{NPa(lg2z#nSR}U4$Q8OcEA%XDR&)d!I?gJzr%`9PXqbR+b#znM(au+BEu| zdbRuanopntt8rr=1gUCDkG!?VhI~bsN+j_B&`by_6tI+V5+%M5@4Wpmz1u~#M7%&A zkHP(;6)OU@Mtc{?@1PV>OHs|BSv}xq9hfo}YXR&n*q<0d)#6ZpR(S&n$~P{_gWcDfTv`C}$2*1H;-p-)De3ok~m==@N$f>x5Jo`iJLOaeoOSR7~V8X;EIRGX|v! zxf_IvM(zjpk$)XZp6tmldrIvuY9OQALN0`)TeB~^kvJ#i?p&;h(A}574q-7L?6VD; z5hC7`07s=|B|VN++%I~|fU7R!D2p#i&F^rCk<5J%R;*pMS-`t0NUB|^-OPC`m@J^X zZ8jKVpqV(jHXgg5MWJW<4G?vV9Vq5bD^eFF^acb#E-%<;u_lsgO5%6!)j^YgZH8)1Oavl~6WEj#zqG?1DB@ta3BY@MvjS zyjZvT-f>%^ygH}nb_B-qT+__p_hOdsD*S88pjpJ1&+w!Igv5PU;kcrg5o~LNh%sx5O0nk1Z+-e2DFd7jA92o*w)jY{qlOP0X}eI# zxN1gMPbzHN|5oU3Ev?Z#mf9Db)qAvfw?`3^7z7(mrmvzke3UF~Xc&6Y;wKF5Y5f zV0$ULOZh){c-9}!7TESp(xu1ojj~Lod0#f=?xp7z(-e{cfof}7Fd3h{kmPFwcTYy2j1cx;hE6Cn*zq;o)bchWyKRs;W(67BppaT20W^;Fns&_i zX!HDgL1in~vo^E6pWIjILpQa6PH{t-Fz{Nz8eX24RN8#K6WupV_t(HI0hbX*hQwbc znK0N-f3RDR1&*%>;z|HI#bukX;Q93Y!NUECPNo7F{7}k02i$BH>h$>bW-9JROU}LF z78?}sOZYdRi#!h3j>O({p(3_KrC$WtW<&P=;BPSzcUE7b+?;l%ZJREoM2hum4I(Gc zUS_11na&>bcofRZ$`E~~d~_SZ=Y87KlIBk%9c2@%@}gG!R-=S!?+Z6Uz03Jz<}E`|txbbpeGad!n)p?WFzC4}hEeZ86YN%Pe5k#d^~wk^{9oEn!w+3kMN(K1_(0Q}#wfEs&ASSeIr$XNKi(dX z8sTgr(ep-w&2yOKy0TR7Z54_DjpRB5eIT%@wiGtw8C8=h5{4c{gnf&dZ}F9mo=ym( zuXyb~sm3^dl)E zk3eS4wr8{?!(^iqr2GU8?0}BK7v{rcKmE4b~uQ#c#ik~bxc=)#P@umq`LBfZy4~dt^8+xTw`Rv+Vk2y zKWP712J&GjP_TRYe@h4$ZP_Cu^cqcnUmHQRxMgk-Wvm|+3U@QLyvXz^kO2ilP~n9NUq`<^Cy(*GjvDulRa zp}4xzNSHx{)MAel@)(`C1uvAcIhYRY->vVEgwmgShv?zS?V|Bvm$) z5|BTH8v7c7=20+e>Jc*kK!-<8@U9tMk&3P>s$Qg|yNSMaYt1)Q?1Z2|d!F^*Mop!H zWH2Jt-zoNwmH!1$Kc(lE%@Iai1&ldmVqyBJJ3wD!*AO76((}ScAx4+a`^v)Q(+-w6Qwk8N7{!Js6 zIDkwL_ND9{_Mbwa^F)ejQ#dx{z>Puf6K_ke#d~L70x%03a?y9IEU~W*3Xum2vJiVm zR18C}&IcQyJai>FCn~{a$F(l5GZNix8&th#W@hW0_Hwf#u>N7NBn%Oejr|Xv zKNSEUC|~f>kglu#X9$oGaHt>lz#hUS0HX;0*is zt9`KK(_mP3iw)tE1=q$^vkn{kzCCQf)k;|jtTIXCxDdPfj?;?)klBM~hud*=o0$fN zO!tAC-<}(=nDU}hVc4WxgpKEv-Gw5z)A)*hbLA+lw)24?Z=98?GV@=TLvxNbB6eYa z2rOn2Naj)|Ta76w|5(4aD%8hf^HnXlH6eg*l?0RleUIc=L=S@wNbC#h%ied|9bFQ` zn{{w&q8VsbgB6Si;2)5Wo>8Su<%E-ru|FWOtJXR4S?D)Dds}hOHf8z;vFn8X_glsV zL~xEUfm8;-9tM>)&A$MGbuHv}cGpm$JHqlaYpi)3l8^kG)Ws+bG;sJ!)bk5@Y%eoh zeG^~BKFiit`^699(u&*S!!f0gaX zcJyRKwMC}XI&2LZNRyKM-V_OV(8wCjMp0p3yLrfE|;+{Y`ZH@5*v}a3e$kgiF)Njx3Yc=w`UmJ8x%sRSpd%?nh z(|&gGkV@Su(aBtiiVf`yBpBG)qqy_>5i5B>5yZYwVRv-oho6)A$UE+W8_-1y)3*Si zs-$eVm^0BJ|DofV0k_B*;VDg6*ZI=-!L%f#6pEpiu? z<{iBmJI@NRGKPhul?t_})mU`N1@462!Tk56MoL+MyZC{aP&Gf(@A4@J$S^rYe?yZ_TB4gqW7tLti_~0a{_lQ9*!E zifDo`2b^6US6wQ(QWKAzwCGN5_<^l}YfF6JPT#otSb;S=09y)ew2BE`j?XuX@IN^M!$xGJ4r}%YaDTyKW>N@b%)&sPowkI<6~v z<0Q7S?HBG93nBJ%Yj&aNb?l<$gEaICj|(rx>8;~xGOhAcTs0l3LjAh6Ta*(CPw*A#w)^s5E{x^7NxJ&!2k$lFCQnD(AW?42>b(w1uPD-jNh$GR|zdm0osIt>+#3cP9tNz1AzxJCog7 ztf|+RM)AtdHgYERcJe|;N}_8DfWoAj*COD z&<*OeY4fdCE)uG&!W`4f2UE9suZY?Q*rz*x!USA4YAT`z6ZK2wzy34`NS(+!@1(<-z&aSk*s8o2m2v)^6{oI zauPJoI_Eak$_1LM6>CEGVb83+%DQggPK)90jO z{Tyuee^mn&Zq7wYFtLjJc5%*3rEf+lExzIp-^N~LL#b%Rj8^0WoTQ-W)@vM*5-nWM zx*-{YBZ=Xgm0Z>i-3*_So%BYJ?q}=X1bA?lUKy4v*Xk9SM{EYUlq@Ib=kBYHzwrta z48Y-YObYpDDC?UZdrhCTir2&->;VJTmk_)}vM+I$tqUlIKKv9ZQ=8j`>P$iWQC8b0 zU!xbtJWu@K4;H*zqm4UzOxE33Iww;&cBHv|TUv&%Y!~kLU{62)EHA9r><03M-aM|# z^S4#$XF-HiV?;8s1U1GJ%ev3;T2|ChG4fIZE9nPvst$M52x~GY@W0V0Jy)hGMcYl(wjI@KU2ZNS4F~x1zPseojO-cLPoi2 z*~P$bvAE;VYjHwxKUi=tcHY<*@+A}r#^k3UFp+K#(2J@BVwBj8u}xd)^{il33pQ%a zsKFSp6cbU5E;L@m{ix8id7hs#6l)|=AZ5QPA?kf`64&FRqXh}0GeOv4U~-So@Ht@& z*p=zK-7HZkE@cnjgn5?Og@ybyMv8i~4!sZe+ZQ`~|e> zz4cxf_WoPWj*}!$iT$z{*GoN-J2Dk3!KBWTci`IF36E=lc`4qoekRD0dg#Pmp*(SxZ&>!| z$#hvT;5$t^W=53HlEyCs-)%f;3M>4a(Va)xTC@{Q%BL>LI2+V0;*&RE7JoV-r}=Ar zNY|rOgGZm;7C6qdR6-^;6h=>=|3jX1wD97@W23|lT=-%4B;jK!r~9o*vB4FCU#bAH z_hj2U$1D-?toyE1J%?}49!U$-|BjL}fl^S4()eOEC152X=iSqYh~tnKX#!_ABe7Jh z{T-4=wVZdvV;&@tBAmTL(9AIUPoP43xxTe8l&Kg;W;T?!?5Fk6+3q>}nr`!`@}%SZmC2Ju5k8)kJN(5tDA(opb-@RsGRxDF1A#{MPvkx7q!E zO}nplGY~1z6uv>88&9v^?(Zr`lO$l%NYi`>j({UT)WDS=faXT@UOMED+4%sD2I5z= zn{$2M5yqe*4WM;g9&rHLhMOrHA75)=Uqbsure1J~e$Biu%!AWs>5d#XGUr$^umZ}` zfrVYT?OaxDAtCr+A!JRN=n>iVwLJUYklW|o<6F2hm%+gq4!C6!6Qm{)o3u@RI#SSJj|;4Kt%L^=q&{Swh@@j(m5B5v!JOPq?g^xwhRZN9=Wf$TTeIjt3Dp?DAd z6v6vSLG+2+XB7gsy5?(mFZgNuD@6ggY9y^SfS>E>cJI?lLr8I2RTKjFImtX?xe=s?M*)6bLKofp)qx|Dq#`aHa37-hGBinbHhRyDn?1t2iKu4KsDsHH+y@0~m*_bLT7dR+($kQ5o$(@3g!-;a708zjm{7bX~&Oo48>EjI>{!j~VS6 zXt)*#>ik7q;(ba}`N?5-dAV=<(pg=Eou$oDv5w0F1m8TPt=}(HJ_CpeqbJIS^zF2&g=b;h>Um1Q_QBThl(z`Po|3^P0R|nuE@(=YzQr{R;f#wtiD%EaL0akoY0ue zH+Yc3Xa8QlIe|~n?z+mF9h^Vxn3UVS*|fi~qOLFE-_rDUEEfy7(kpX&eH>p^coQmT zFJ41?E`P1&Le4+(D(F*ShEJeLpyH-kGtw=hOu9skh}~n@J35o`r+CcOhSp#M#GeQ0ySSER6O9>ZVW$&g`a-hMFX zi0WI7r{w&WOPPud^^KbA0YvAQ08i`MwEtPAS2w3t?Ga_O<(AFj_dUbj-mPKVCk0B` z(c(_h)dv8uV$#)B|JLD5o2P+U0D$GAx?4-7Zw2|)^AA&*e6|>g$4?nfy|b|2NN9y7 zzz+9P&0hFif5#E=QyFqjlamzYkh?fp6ZPU@uMK+nIVQ*bK&UIV+gho{MHyZ&)*@d) z7^AQPO!Y_OO@n|GWI@%~G;(Z@z)8&x6M=^f@u#UC$ah488Ay$V)>5>+=-l5oRL5{i zVyYD?J*rw~QOaB`D^%DUMMui|nJ5_a_^aJ_T%Xo5KT_4MUX+hcCkAmR?>`RPF8!|Q zD&j9;a423p70d(qmqNdhO*BI9NoTF)KP6iN(yof$U-Ai?xxeW zho)q#w`Rzm=0VChL_ZD3q-2v_H;o_TlZsQG z#LuB`EgoI2Uj4=DV>MOzfVUvL>H%SE=Sk!?O-{0I{{r3IC$a`krqtg?Mh|PIYUAZ- zgb3bo>IFAi0*GuGQbWKZ-Kh|b2iaRXi%SfMh@v>Q(X;z1#QYcWuVkXIJ+Hb#pRt7@1O-lv$MQ9YJSczd+n@1X2(|vrW!E z5&Retaw|&;^1Cm81lS{!7F~qmH0uY{)S0n%bT+jT0vrYedtDwcmMhGP_#mcb_lI_n=m7^!=p&_OQtFbo8CBW z$xb0Z?#57ZakQ+IDcN$h@YShrkE7kKHQ9Y!P>y{~KlX&n*7&a*cW?gwNHkI;;PyE; z;6$T)l(;@~y>3^{iI~mRK2!E!)Z97d3L1oL+|g8W0&NGQ4?!o?KCPhr$^^;Cjx%dR zVxVM+r;?M7pf%tTB0T`HfrjIL*5>cb1jTOjKG*gT8-nnAdWa;(370iLep+VP%oGDD z5pa*?b=`ix+*`XllPB#lkeVE42dxh!%p1ZhL zZ-d*Xjck|_COD@mC2^NZX-?a>D!!%C&0*Go@sO1FK6K>rrTb$(OFi5SY|NV!xsGtR z?NOazm_ZO)c*1rl5?TI50liH@EGBV(nO*9J(n-c8zg-MOZ3p|waZXFS-DJ3x;SF>@ za~(-2e4X7*BXjS4tbSyF2IsQeW6%~mPob1U=!5e= zq1B+RHiHHq?A338_1lgzjjw<9#^C7#+WM7@g(#l~42unm=z5vnLyTEcBFI6$6poJf{ zJPeMtPcimIFoAL-uI>*-qCvF@`e4*oWbnwXKc8a(pkopCNx$9H9zAljE=r#MPN(c4=yeRYNHcQLD2UuDspcKlW1O#Pbhxw zD4DCRaJjJZxtV&NmiWr|PDR*b=Iza)rZFsFcG9v+UHaU|M*FVlqf{cYS-()|nXRrU z#gk8#!glj@!TrPoTd=iI34z$RESxf5O@b{>=VzkC*bsFYnGl5CxMmlsw3fFN0?fvp zz#A+Cc;`_VASr}zb3XZ_LLW%li`we3_+sdtbs)&=T^|C>=DgrAOEf(`+-S1-QnGjI zGUhy}JPK!t=mvoz-3?TbP{RDlTKl(z~Sf-Mz0lQ?KUaF zUQb@~k|7_z>6xI<7|jZa`-Bwz84>ZS5XGG6yy+{}J04DN{QAvR>r`$UGLVUt32Ju2 z^o?hq{o$6KezGxoJ?dPlEWL>0RfpYGsDXZB`>NFA2MXb@7LyHLGWt+Y)y|!|NexNxfC1T?YqTdH#m4W zV<;g~(38)gQopBiwF+e}BKc1gz3VrM9%}Y46n&?3OPb_*+K_Y_Ai1w45_-*(I_>Y zk^`5_27*M^A5=`0f6{u|MNyB7kQ4=*(TL{bmsNaJ*-o1>9}b6Lvvrt$pu%>iOD#B! zUoP+zL-8tS{40c>6s~LV|78Op##qO0bh}w`wNr(_NCUH(m#l+r zm*8O=O)YMuen7AN#zvAXBtTl~uh07Di2gB0prWV*!0`{lhV%icE;8cHXENBVB;K=} zXrvGw71t8kdSRs$-XfZ$$U^D7p5`Z~tUDe#* zU*P#4FkR6}1VZ>T>^Fk=7RfvI7e;a|=~*6A(nol)_QO^M9^-nK>Hh_0j>RfR5pbeR zK-6zAm}B_K-sP6OlvzpaSQoi`Gh2%?&HLGC_B{H3p)Jq=h`d`DFAD-eHDZgQp|>#{ z6m^Jx8PNSprN`+g;>ibn6k%(BCq~o1b1?oT>3=E~paH=AWTIlg)r0}HZ*gEX#rc;m{zWbS@-d(Qz`9;*e*u7fr8c3!7_SmMZeP&utW$ld zQEjLDU}(AD3>t>lrp_?=|If<*b3BMA20jPIgwxsnyUP5H-H2Tqr^YkI*uOGjt6x~o zyzOAhtF3zAe_>N#5F4TM`V%6a-W3=iByE5?bWKQIot$hpROyRy{Zl<;ZN?9!VZF{3(PnXZg_rw!En6e4n`tV<56f+2br)h)!NFH!t7hhup zaUVo{Enp6On56HHXY<}wMiGv)gMy0Q_}@txbgBT=fMJ3?Jrv-7b+raG`?#VGEueY_ zicX|m3{&7*yYpC_?WOz=;_iD5?76-@vW+7^o)4IeaG$;V%1?%`Qc<(z=gV6hWEfgl zp2}~B09$?=wZCZ3-#^BrBDg}SEw&WQ!1jId+eTez27UKiaJfsM{cWIF1o-|3UJe}z zVs44{$vuEt(v=335!XaNrK-D=Y3o_dSS(6hg5==%Bn&IeyE*+1m;bW@C{f{~$$Kdi zRPfC6Ak=`44R5}J@3(mxucz4RL@#fFJZM=FM&5OUIIaKR(?k3kaCLOIXeWoj8%GE+ z3KsERR!w)NGq+l<0L1KISV>LWjrac`a#?jiGn5D#^)L`IC zRq?jT#XLMvt4sa(5d{9?td4Wl?LTWH9VSk@@;}Z3_%50nf+unY)n?IYS)@lTbyVW7 zvUnMq;2IhI2l*n<0r^a2%{Zl&bb22MtLg;w7?-L%z}E_t;-j0Cff3q(n_t#P{;|0P zf9$!dPY|tpwbU*S5*Bi0@&}n*JASy5Tikv^(zD+}VEvyh<)M7w3s7LQ@eTzs=Be<< zM>r0iYXfN@f4kXWvfBMF8L@R_A)qLcj5X=Jj&yTyiZ-a-BsHS`BA5o(P z2e8{^kk3*t@VHMDgC>0zzoR9z-UUJB)DgiT;A9u6jZ{zcpe@dP1|8Bh=W?>K90)HWuAN>1Lm6KocRc~Zo$z8BO@gYr3&(vwxacy|-@3sVxK!wC( z)CmEcfRcZa31cz3wlHi=MS!cc+IwYBs1FAGujE=IDmR-b`5o`mGK_>qN2B=~`s14l z?*-bGH3a|)ZweGbU-)lXx$u%~xE85Di;T^133uJ7=H3NT;V-qTe5peIvtz?`^DU-X zh%SUC>9!v9c6;1V+tD|GzxuhK0x|Z@;_z87a(Y@uQ0ILhEKs%p|B+3rSv>z*wvVTw zXTKEx59;#Yx96Wx$e{~DUu?;35(Y`1n{~}ynr_r!!>)kUh%l*zCYH=bxLB=Dk+Jhl z(3Y8XGlZjll}>yFUmZ9oce`=>Zm!lvH|fwKOvQ&5O zgPFhi?#=qk2h$i9?FJbvmkD=BPC;5^|x{LD=pJq!W3Pfj<0>z*Tc;tS6=e zZ*7vI!9|$Ni<|YBVE^?Fb*sg_g=cqaRE3()-ggf`ij-C@)HV)m^;^!D9{AjKzCtbJ zZ#1+rKxe$Ud2Zku1XZH#q1SKq#PY^XYcmu$TdprOi+x%xV$QDfeqw`d>lir5eDkLN zSpkus#$=iL;!&YqOAy<@7wVEyve_1=!YJng_N}BiN#!c1x9IgJXE`=~{V=TtbHZ1` z+IX+GHKz9-U+swzoA9`}=&0>2RBYh+!9CMzJW84eORU>B3q%S%yT#v}0I5p=I#!UN zF5ydOzK-9IE%9{l zA2c>ZHuiUYUMfMZ*l$Z1g>Zh;lsf6}edF18oT2NsrQ8A7;gF_pDcOYDQX(6}#=_ti zno%q-d~f3@KHJzdZdc_TITc+3#1X;$qLhX4BbF1#S{pqS*TTeZGEhqJ1Ic9R$gbOb zdj=lNdR_!pk!X;gC9N{xGbe?K^FZocGkHhBjPwE9@}T>kkQI@@Vu@AM0n?h?mgbsM zj>A$fBM-WV-NG2lXPUXh!L=Kg4-BU@ABAEKUF$@)W=bolXqz-|DzIIP62(tKrsADR zPdDeu6HE0%UF69aE6>tjxKiBSGAfmrFbeepv?r3$tEq%S6kY5+1QH-<&_;0>wBLnO zpfvEkMA)AVa$=%8d;>%pgIy#ZhtHoKkuB%2h7Gb+ax zfu~7EDc8)!;$9sV?R;#u)#S5S)^o4QeXB8m%&{S!i}nbWPN%0c)RFJ<655P@xYA*G z`0{R1hLlZ3_7}+PdQW>-U? z(30%I(lzogyl*QlOSm@JXsO(zo|_3L^q}-dmam*s27&h0uRV7}t~hKLoroA?q(kWv zhtK?R$#JV*8$!$Z`qR$wbAM&w0w}3+W((ghpam+1Ue!yQ*!^rR-=^|VN$4S!tdy4k z!-Y+}tlyix&-lxftuRbp+bfbQwYR4tyay8PKJ|xZDYoQkr^9pW0I;=`iL4qtan7Cm?c8v|hq*$sya6d5My}`P1pI>-n^YfYy?6$wGBBWVL zK2yGLA%lJf(B*y&K?JBRhIiRuaV8;;`=RK=j18q5BZd;6lV7Lu;hWbFg%3SgnuykwtDyuU`9Qp0Ap&F1_|FweEQnzbo+>@q2)MkzqeGqj2`Go z+^fXyiy7XBYOr#%at&|`xK()#{_ckUTi*B&=e@Lt?D#Wqq25+}&rvecoHtH8UHQ?J zcV@u+OoOwCLRxcvXB-*K{XnGfm~CmxOFe=m(ft7j8*LunZL@SFFI(||`>nS`C_Nw3 zT`AZh9AI77-a>RN`ttXt{O!0tX5IK*4GYPqH52hLCA4$ph>5==BXe{&tif0Z@=1Xr z3dS4g7M7QR!|c93kC&cQ6r}X{dqs*2)NGCuSzjz>!1|=78E$v$L@wZ|5V<={vem!> zL>GdJRCTI`LJT#qg|ltSpgChQ_#sm9jlgeOuKS(VYfs8E0IJ<*ByhT%0FIy~pT7NWu*%_!lbNXpF zV0M2bmQ2+AnQ66V0ka|q@tXW1t5tF7KHuPpmGkOR=hDjqYQx3RExvC$hP;(7vsQyi ztr%ChQhHoFT6gMKJLTi60d5K;mxE;(gLNAo6C+D*qXB#hYTK@rP&I& z^^yJjZUvx?6I*K}y1Xw%MJe9&KL+c|wj)R9-NZ!MhhMUP+uOpHIHqmrA??f6LNwq0 zyN^a##kMT8`BrQ4ZsT6Tagnm0*@l%YeJt!Bhk_UtQl1ifxmcD;W3y{rqK8DLMVeXH ze08`L+$;qf=S=Wds+EXY3Nsv zl!<_YbjYF3OJBC>TEjr_J}j=X+F36tgHH|W-xu=xM7|#MtW0g5`XhR*Wir^lJGbZe zxC66kMBSB?Yv*<6+RYIcVCt-0v{;Ki+|eUT7})3}IdVqE3<|=6QOxN>mC{CgqVCYW zW!^IE`roB>#M_$}4zJ81Xk(xT9Vra5E0Dk~*`?VGRgftJRIbLd_$uuZd0tbH8-{!nuy(D(cPgKBP;_NV)sx8@et^?q1h=VV_u z@)I!2ZVy=X8r?vq(*7Zu26pcse9AQ)Zjy|;X{<6L4|mqD65Ke3>#*q;1}(a@x{I_M z`X2<0wd-YGa}_#6VS(>wYG^B>xN7#+FM&+zn0QIgwC}ueBNpNB{=TVAn2nUPqQwq; zdK~1=DFuP^$m|vaG-#8&TlemScZcia#1}MEEn6Ycw4*b1Jnwz2yp$>{P&pS`(_9h5-^5X6WDI;^(c}ls}?sdFZZZ1Xa zO)JD;dJbA=$!xGc4xG7t7XZ+GzpYO2jMkptjRKvi4c9^24(F<4lE2{av|l{TaJp+@5HIvYnG+d~N1$ZX6kZXi`l4zuG=|_OecjTN*x(L>rhGvyef) zF9SCghomS|j9Jh^FNCha!)AI>I#kEhgUV%P0$EVMsuD6DQ%y-J-HpB^9v!k+;Ffg7hg@x^P`pS$;>sD|A13fwHyoVhzLWs>%~^ zdW(r&0`dojm~l#=RP~!WOepLM+!x)n{d`voRI|*5uTu2^U@{1*QZ*+d)5@(!ME&SP z(ZtV*>qY@d(#r*{ELLKRuIR8zua`foyf)^r>Y{3nL_v=RIGdqbz%d8eraEypn&U0Lp-TBiev_rz#K2`!?b9U! zz-0tzJkliw=rl8B93d7AP z-z*B?oP)oad3-9pTu}0%X#MX%R@T^2Mas%g=)NMM`W1OLSDnsHd5d?-q&(yij} z9dRAy3HlXOX#4%)GjItkGd(BuOd>aQL zhULutm-Sd}KXoI&H2YBRN~u|7AN1b-KDt2Ku&Df@pYgy2qX8&s}n?e_bh>8@Sj03^ywZHxPm<=uh;XmOlW#Cu;1^%3j4IQopq3Gc}w zRl*Woo~e}B;}k35eSlOB6Pzb#xw!z2bjo%VnpanK|86ruTs4(CKepAzn<7S6p~vw0 zf}-(!wYl5U+e!&U_|2xWsZU3_CDDP5`vrTpxS1Ti)`b}*ZH%AktOubReQiNOyFcn6-K4=)hV})arB;BC1m&-Ko zrpg07wXXAmC2!BStey2bWo4Q?7Vgd~n)ir{*%@Zkoo2~bt4Q6iqvWu9myX_KyF(Jg zY4+;6(uVkKPbA3AHd&yIfMLMAhk}7@T?#Q*x^mzc68h&a+<{J3KsJs{c~~v`G&t>ZJC^;d6!O`6|B26v|>>{f|qJJFZ7`oF6Be=k0GxO#+_B%Jqn0h)IjC? zPq*TmJ+?T_3zR3aru3#s$MZUSP@qy5PKsNveK>5W7Pmw&nxRj=N^5NlCV^I@{6l;$ zj)M~XdGW+Uqohjc2}BS4Wne&F{5|hxa~SN0$4}JOanHH63s0v^32eaJSiXNv=dTGGAeM3GzQ28gb{}4?Z8Ct}No`fx~;r`q& z0rjb{3HGK>KT@6K4e~EQyVH9X0y`pksoJk3l|8w#(r3Gm(L&Jv1lBLLreN+ z=R8NiFIwWSaqsvH^9+{&M-!m-@YN!XgT=OL5pFN{omWUA&vgQ%i9hfwG(%d{+axq@aeV z{1cu29G0hP5EF|tX+wmN%;G(l#n670oPfWXk|_SY5uM5sBS@Iwkr#_oTIMZ@BxZ?` zTN+XKN0vWPA38>)m3T|PeYKorOppE3sIm;8kN-%h;xl4|za*$uyCFs?mE=marTQvB z{q&`MhdX>uN&K_^$0U63z<9=QBHJ&{yk9@jMO3INvmH)lZ{Tqq?p>yTk1hYP@eZj1 z9nz*LCOLV#Ujv9@V?L3t*7PmFvoDkaj5Ac9JWN=Paw9g?F51_&brM5Mc=q-%i0$PuG!^hQn?+hBw3H&DOV z?{i)Ihl}lbwv+cc=YE}M_T5BYBzjNlYHG^8w@XpKun$$mm>WMod*&6nG0AuDwbK7N z^vT^87Ad>liDf5>H4JkH@^y6`==^ndbILBeui3?MP#lzgD+g`1r+M;q$fW2&ix&XP z(642$8=?kzT7H$ONg6>@C4_CP`_DZ)Bxp=u8~0~Del$EbXBFKWvU;k! z|4qk#3#Fz<iKZoG#a6_cWU&oVsSa!4Z7n}_=hQboYXmPqk6&># zGHRxddx|pbwBvRB4s;Git0QE^Sjvq{G?V!~tK@90n#4s-^yIQSA4X&)H_b^(LAcEX z$N#rae91gWx`%l_#qac61h4S6LORJ5)PAx;v5|Y;CkpL&%9~@&d_qhh55BZ&dATM> zV(7*)2QEufj=W41abhPwSnRs9)OV_y>nxVnrNp#PXK~!m#Y;~z1}~AyoB0~iv7WpO zgPbIP(^G(=z*mmjUMqz9LU4Tsr}7V~rG7v%<@9~ye<0)veoY>UN6F(JlRw?ccWx^< z_hd3i9uR8J2xN8~%T0uQWU&dC4}L);Ho&CR!&hcvgvkeLCM=l@drVB1$-~#)FEjtU zz~GVw@6o{C_jwQ9lyUd6KZZtT0WlIeQ$3<3T%#knCc`!dn@@X{G8BH}Db)BK>5rqp z;VP$Zb0)8y3~9cp`DyhfUKOXfDw!e|uY7V+Y1DqlW_|Q)Q_jJK7|uA(WX^2PVkK+O ztytEH9+)Zf-sJLh?9Bgm+{mS1M3L0IRc&+K)Z?w`*6RO*pDO;;4}fkx2e#*GPY5bx z($>v|^oup3h}POyy#4}ou6D_*vyTou3(n8{o}w*ec z$APkxGkz`dH7O_Q?&xAc@xlUkdMmb5i&y>eM8I4#okQ8$@8iHKhpX=YBG3O9kKSE+ zM`CGE2y(cAc-tec#DRL)T;~t8rEP;Q8)5`Ch5z-@n;tFfz8p<99;gXnU7+6jef>!5 z^e4ZjB6m*Jo~FGo$2wE=#e-h=GG3yDGoe~fPSTw1qA+MFUp@NQJ_&-*cGLa-K1YRc zqKGEBO{x4bFZSRe_lh~OpVQTgZu4}~;U;nok(raFf*rSP+VYr@_nZ}-=NLvd^U=8W zA7II${iz@}r)a?w_(uLAmsDHVr$iw;{d=6B?1K%fpzLY2{Y;Z-xYY8~rk#RLEAfT; zW@pg%hs$QMjQT%!1UTyYNxuj9$rsI|r^q)2C-dLE`a}r8c&eoMekICAy*V_m@~)0{lEd(IK=U=nvk<0=Pe>NH+f_8X1cYWpjFY(R`>O+O12&rbbM4t87u5OM2=;wcq)-1mR)64lH^5 zu?qxB_qXkH{n8irbVYXeXMM8I;MUR6ac>_)M(`?IC0#BT-LW)I5_Mot1s?qp{z~2b z##rEI{}oco!**Rm*`kAjWxD=23eUckuJWkWFLJrK*({>(Vc;9hR7x)U%U+zi4`{Q2 z^PpNV;R)*nVefMW7Ew1r-QkC)cKdi?7vrG19YY8!48k3GGQ#*)PLtg&Mp4RZPQ(i) zDojR%YCU%g3x-Ap6UHArB!)H!!}WubK?)x8oKNSL1WvstBZ&3l10Q!Y=Qi?~6*l1a zQh;50Z%$9_;pc$aH9HMN^$(i}MuO$8v!ZH$vU5nI`|RmrM=}>uc)_22EOmV2T?FoP zl-4;leH#Pxn-t6J>5#+e*Y2Wob0#Rsr(0k7Qcbuf-N$)6tGu>%+zUt^ z+z^{TdRO^%Q6@c<%TH>+XtCJ}cIIb`0a|xDI=L^(5ne zyz+&xoXOzb(>Pu08t!5Da0Q{YtkkH$!Jj%)KDjz9mQeCQU^z4rGVI#V<84bD=2mUk zRjP5Zn1Q9qghRXc!h@H}{+}#;#It-lkK`K7s#Pbw7p@zi& zE?u$R{WfCf8N~&&(HBe%?oiSyMF=$jN5)XHTTu{2U=Wgi5h!N@TJ+3 zMc0!bM(|gi6sRkocOu_Ua^KeYTrb+qWVvHfaZ3LEcd2GA z*cUOKLrhbd!#W;q*>268?K~qff~gam=cUO^iR$wrkXa1Gax{3m>8u_8L&hsEB~!W1 zTsmPT3s6a@=;FZn&UYFEwTf;%+@{Y{r{NxD;qpbyHT8GkKzzeR#k30sSJt<4^?)kB zlF}Q!3|;V9?2klNar%go7#%ZkHacQxhX*;#$l;w>=_0FRM z#KD!L{Rv=QS=0o4&=7$;#)>LZ9@mf5>#g>1es5W1D+(;Xticcd>}dbd@5QPfmj>Jp z_W%v5pC(w)qhBTfGE z>v8+DB=HnPwE9u4gfzG^%Um-VV6x=A#-F`T-nDs+WB~~v=Ve!c1%LTDyQxcZa|Uk^ z2H9S=p|$ogJ23j~$#Jvkho9J_q-1V*n2=AdxcSlEca9jBnwbn1pQs?`TE(%@lnGJO zmQd^%ZTke|y{8{^F}fLn`Mj#6{TMlR6Zk&K-Pb#RZ?cZ`e&=&wvpFw+%S-hHhNr2+ z>B5t5YXo5m>nhy4Fm4GysWa|`u~E-AHvpSVo8`WUm!r25neX+Q^fpQh<@K2q4$oPB zRjTIc@+b*H1A`BD#Feep9+&|BMbbGYV%ENhIwMsfMb5b!H-f(mU3x}+O|gDk zxh3&kPc@2W8py|W?&;pGZggiaC@3=?yiS1-i+Wxkc*Qh$0Z;T6V`UO5Z zo8|EYGdig3TLg|vjgA2wcppCoyIhuIJQKXZ&kJO;w(gM?ul=5ya`$FSFSsGPl6->U z+|~{zVA=Nm87h?wH>wTtu`vO|XLBEWUf_~Zm#VvXlnpA66zyd&XYBFm#RZrlD?w?7 z2j?jm&z!zAZ?>|oehMEXev-G?N9P@DRkka+hO+H2F3b143pENo)@3~V;S9CodCJ%i zw5uC#I=Kc{!s4U?H)u%on!a$)B;9A67GBHCw4qO57ITKU^yjFFwMg1= zaYPcOAZxvk6&I_K51MBxAYxB6FG$g$?V`N_;JG`~v3QHW5yYhG*KG3u3b*zPHUB)s z;TUTJ*SSyx0aZHUy{13}&izl)^ZBwxjKo#7eB|}xsO3;(#X+ef`K*L--TMQk#S172 zW7e{lK0{I2V=a8uT&&;G>*)s3(xM)mN1t)&MN7mE(YYTe7G?hgVPt_~*E8}Go&!jp z)BS{EN;&xM0H6|WH5zRQutKN8Csj@)>CXH#?1_jaEvKd%R$M1Gn)YK*!!N3*t)+Kg zeY`-HT=34rjMXZaXEO(nUI5!}KiHh;VgN3mw?9}58*O?eQtf}}=gQ^FdxrAQEA@*C zxG&IM=9BPGE~y>Hb}q|0HK7@j!K-tWyibp*Vp+P5FfO1qqj{S^X-oz<5*ssp)ctP0hI=f%hSQ#V;JE&5jo!I^ zZiyTV-QxqNaoh`3@3#RLPy|ltHYu9o&3}RLng}t=SE5NjJI@3N+#}56KB%o10iiJU zEx}P99W%EO)4p`ePfIKD9^b>N-ji2R%FfR zwMwpUbI2Ga2i_TsPk?-i;<6(OrbaLl&G@3g7a#V;nJ^7goHu|@RHvXG| zN^G)vzy0Bt=4a9pmqaj~{f~C?k1e>``gfQ!T_wqd6wU*yR18C!l?EC43>^Ia-Ra z9bX0V^_O-*!%a$XN7sJF<+*6LD0l*d5%P(L!_#NS{IcrbHJLXn6F{L_nU%_5uI94& zPtCa6o$*dMJiy20xWL`ZGPx?UMOuU%jZJXRGpSTox|_hQAFYYFjupVM<*(`vm|0_v zkZvMgKx0K{GLItEBndp^`kV7x$+Svnkwzp>?I6{$Ss-x)f|SD;p=~TIO2bFb+Hqh) zDUY08=S2(w%|J|eqP??AR!~XU!r4>tX0TId1ewvnDc4SI+w6&aZ5A%hog4MvEg6;a_KxDF{2OXcV%P#}(|~HDv9Nyf%bbKy0KVeUm<4*V*=q)c zq#8!nlN&s~xq#^Kj>y5e%7MIxr@t1$ET>F2XP-FlvMqXbR0*$7YpgMoc8!dhtY>bd z-+c%U3@{T8zZ~C2yY)U@H)FzUF$KrtKhy_V9 z9h|%KYu*bKypKcisOFpRv8C?L2<*$J)yw!#02uPxHlR-P&Ier-c%4Oy+1-1QFQSRW z)xt(Qzr+Oyfa^&<*!}f))QXbU+^2q2)3@zu_k7rGR^`XajhLGOq0$iW5y)>H zaKCau60xOWVW_@;Rr#P%BxI`wbGKn_>$oEos_c8gIG-C3xHwR0J6jHxJ?9ASORUZI z;&BM5YeUajB`!AL7y2{5a9TkEQ;v($XNeJQEH}So?&0KkO$s0Rxl;=v=8Z2_qRT2ncMc9);5W$wTN%Pkmmj zzJMl6L97+nux$nbCrJp5q7tV($wH;-88)K!#4)-TfGLK;9R}qA*_xzImuJg81U;B& zY3_J5cUpGnX;eH-YgRM|342o_TXC!lGk%vJSuN97wBeZw>ePNTlRVpaP8{$j(}L;O z{R{e2O^49CwRJnJl>xvWK#{o<>4w&u>vkxGqg`W@xZ=elXJnP|fWQE;Jhe8XW=0oO zc<8)v*rF`Ozx*E4pAIx-^^lgTE&^CUKnQU!HuXx;|710#9&{$v3 z+gw;b#sUt=o>$yh|Aw|fQpze@`>nLjHw;~q5-7@&CRv%Gx_mca;$VL$Z2s%T3q6 zV6&hX2miRlMUp_s?-K`ldY{tSbxu?(^laXh;(_=6&J>dSqN54dg_K$3H~E!bZiA{f zXDWm74ZaRh@^JMO7b}t~2kX#bDWWQp$1u%Bko9buhEWq1GLSV0;5;&a=ObOmlQ0vB zslH_%`josRgc13bN=D#YER)qlb?RPsBR0oj)PjzmlxQ}g5Z9YRU9i4=>%s>p5)ovhLz}Y8@QL zRL@x4dzfxroiebsCi=tO(Ol+BQ(sR4$z?wgXG{3KBgk<>ZFv&Jon>Mz(qI2UaG-h( zS&aPN+yxuh5Gj7_w&Dfj$7$oq2DKer@njy z_#CFRO)oZ_KX;8E|ASB^-_fBAQi8kQApc#F$h5=A%sxqmvmO$`ISNS<0yV{i{jmnA zW+X1Xyk1|@vGlESrMI(N2@hoDd3J)B&midrF5JK4cP7|DZ##WX4g^L|Aj0?RHJjxR zlQ;CHxtdFiCmtls%bT>Qu}8P;AYINblP@2n0%0<$@&81APD1S1s&Sl+wo$$>G;AL5=K>x63H<~aBFbr68N2twhWi7kNVWjR;9D7DRxL>#?X01=E3G;qZD;rd-cD= z?=!&)ZKAu1)O;ZU(Ze0C*>)Q>Ci-);cdwlY1=&kA-4&6q4fKg%2fI>^DY*innd3^w zjFM?pqD~E4I`$kU2b^Y=URN**1lWtpy#V{Bb%v^4ahpqp@?A?DBo8rG63ynB4qfTi z^Z&4Ts!9dzh8-5~Yd+rZ@GB+hNl!_>#*=f?(!GuKYd0TxrQH4Q>~BfI_4~NR28+Nc z8?;Mh0Qk(jmm~s0jU@Xoxc@1gki3+4+V--f5HA6rlH^%m9z^{tx*aGe{+#rUiYxwS z=PhY1{zoOg(P*WarLZ@NuiB{p0H`}O9nUj2d=8~j-pxvlW?5)c^%}IAH|+;B>`nV2 z3)-={gIs>(B4r9apYx=&DIVfdD&+)z6YSFv#&q~-EZO7Dpgd`9+XyUTn1u;ZXZ{yNu24V=@fKfQnE847 zQq#aj^@womPc&b1gXXg41@Mi^@JAMM>&z0?qvexdmG9YcN)|O%07(h*>qjKKqgFz$ zcwk>l5pSSTf7PU_cfah$=-Ai@$$yjfQIU?Q-%(#5t@Ei1Js2V7O8|3VX zSeF8)UzdwWaQ86dB&!Q%=*5fnM@x%U>x2ZoJ^|gx^&HqipUbnk{tLOqxJYSY4U*DJ z=#1Q7Omv2_kZSf^AU?eQWsWYLUMwZxbNoj-oj?EO(pHJJd=Y`ow{o+0R(i|&?dSZ_ zaH6Ki+zi9(ofU&Fnnf!wC6Qj)On_+q=?t%28}RjA>~f+c=s>~@Gech;E0 z_%L=xC&Q0)`1Q_L>7hVBo!oW5?FUc31*jxg1juut!`89%n{*sf!-FEt-{{l8g4>M* zdXM4N3D{_~qk1S;xx6Cg$gu&}mXAEpX4H3=i7)*85 zTn^1f43e;}k%Oi<+KP3so8S_F_3Aqy6Im^Cg*6!RKPWW_x-QO7h>{l6JRvwvb}4V( z)WBa5q@<_Kp&7|L)>wZRh&Pw-+PMYXoXg$twjODcp3fBH3mpz7?5N5+wNyt5pcOFU zp~I0tzwb&fmUpT*y*z#gHtM0w6_J*nwS-Mt_;9ofsZHH*IA+7yGYy_HF`qRv#s@pp z@kwik(9eFz(@y!X2E%f#+$U!-2m5Uq z|GY%xA@A*I_Ls>x76&EUI9<;tqD942MYJO#gBRJCMb)=&r3=0_F)8kae6l#a=30Kz zSs=fHOI0(f^;h-dm5&=dpQT4nyqzs|+czV~Ok?^&XiHiSw&^6iKur6Id<@-B>{EUo zwp$P%4nmWXCra5?d-aRg<9%q??ezVX$dsqie1L8Pw&ucmYG|l7Ku@1x{{IWFQH^oV~A5+QjEc;*!v*5|E5$3<4lTRcahqDjLN7)`5mz4SK-Ct@f zgVk_LC;h6aZ^ivMvJg*W)Bc-{k$0%v+$;(&u&iiRQhy=ED!&^BQNK;rErd`g|9i_T z%H6F(-}}G%d*XxB@=+j}G*o-pddyvuStQ44e;%pTwql(IqP zv(9!-nPn-yRbW0}fc}soN`t(e+HeiVvZ1%uxGj;$?T3GBrnSc7DO#v1!8#Jkz|~zE zHe*AkdAcc-343eIojaBa*xuJ2rhm?FPY4X~gQdGPSX?Pme(HMOZt8oC+WJ>yGu%|B zWvgh$j`&Nx1CWN63IxS8unlZ87?$J`^xFtFaM=$b|FLJF-Yelk6NXJtLYXCy=uCmM z!{|U!oS_m>0%Pl#p$IsnZm#t>r+CysYdk3CO(5rayJQ*@Bvu}jFaoNy$iKRwvu)<} zJqN{a)2YtUv$_TT~K0ym$h)L`0G^^jJKlB zSXk`xXY);70<7ZTmdV2PFs(YxbJ+ zZPh}nEf1C7`|7DXub*~q|#Vv6z<}SAs~1bPd+qS8UYE#Z4D!nGwDv8 zO8&m0<7A)|oKyq1F<+lCM7;Jx*ZW}JnO{w@#!tbeM z5W7;Et1446gZOjyJ3V>s`NEGI9rSxD*32fGup+<**8VS{x*=P0jR_xrasLGo4Rpbg z9MXkWk)%vEgvr#6=*P-^;LGVkuCJeS276s8Clt$jA99Tz6EIK(dvf})TMc!%H-l#L z(;;XU1(>DcEV6zUVdinaP*843%g+sHUoh69(m53@C@*QW0MD6k>?LK6kBz@f!280S z!!JUAEXeo1EiQ>1gmlNfSz>}enGHURH|`APnY)Q_whO#LX6etnw)eLHpgj`ksj2<+ zdY2&!XP+SFW`v#`NiaP(rv3aAwm)U5FSUfkGuS6!mK2756aNH^DxG~BaxQ$ra(sDB z&~}-|VwJi2^S^9CwriD)Nl*ZIdKWadg(3yBSv;>lz$O0M1rW(Io^1Z&+?Ef>AT!7; zNO|;+xto1BgHV|7qT9}%U>(paym9r$V`$v7lyRvah9*@or^5wLjh>1n0Wa-=fzhY% z(p>Ya=l%Za`NtchiLVZN{0mi4 z8d|7Bd0N=swkj7s{^n4ra-aMwRI1$}8QgIw6Sgk*Z`9<1s?239^5X zD?Uf(Yl(5?w=|!{vG2|izAch10J*-J&8X){7n1k;@gHWop)B71-fYpJo};=w2j}{9 zCHEBy-<=~{m%wPOt)~s(W{nvj@S6RUEKI z!cR$2-l5cY@Dx8$9{+b+syk-eP<8+rmIK-&&&>RVMpiuikL3{lOG-RO1<@<$G-n-QNWi^hn}b& zHDr>;d3XicGwlv`ug1fN@PDteaF>>~V$L$Z|H zcV3~b9F*Kg|C8Gr3Rs`RebWQod5V|`DZ<@lxav56oH7WV5H{!>7c2w86#?Wz>y5~( zXf~U5kR!JZIb!wr%H+0LY?ERPG>m0Pl9?47TcBi`jZt zi=q~=8AGu#oPGZa8kdn;oBmbu#@1>7PK{<%$T!Y@yi~-F9y6${<5||CI$#oza|0-I zGEF%tAOHfqtiPKQC?&<2>YWiPOXuE8Ik*pD+p9azRkUp(=hv%6lrH$T=OcksdvLZ5;O28z2iQ-NEq;rq{& zk5Y0YG>X)4FX+*=a@Xf^#NAq1_{~akIyy$W_@KOcN1t^bA>a8>F>&k~4xofk6AAF< zxQ+Ab@ytd|D{7cf-W{%WeI+w31}Zo5xeR%*_VyN{a2GB9dAzJIEMC8SmstQdjWRD9 z{J<$sEQ_BWjZV|ce)xv&!oQ?l;7b`OG9dl3!lcQYW~@MYvZSzZjFp6UyKg4(`&^yr zM|9eDz)NFC<^)m6NCsSs&vqYPWb0(~({emAZ&&)|q{VY0>ip}x^`q(ghQ!}Dj(3Q% z`}ON4!=k$L!)woK#C%@VR)Gd8i&#ZQ9`B5W42MEH(@Hqf%RIx_**6L;TEJnn*g(#z zlP)Crl~H-gs3dK+AMgrNW^!n&wb<8UUF|b27#^nOm(%?z(nauRPJlt<4U6trnyO9m zMx|?wc~u%#AABG9HaZ)LvTLQ!Hy4a9NiwXlmemiE&ThaNIvuQo=}sn@j0GVxTA}0U~smZ;aO(@KMHuW@?AD6Y# zU4O4XVZ`S02zJ}Qo+=#PYWd#fnQrU~Bn-`GQ1Q>T40(B@>EKm%adIhlYm<%;2%Ug_ zy^$+E-E9ek?IHT(sB1x#UXXW?f(e4oE)@-OSW3hAi@MP6tAQx8L{h z_-8Wim%eZwOj#U1LDZ4ok%tPfH!-vN=6GAmcUVzQ>zkd=SJ7k6jV&(b3f9yag3n~c zc4+qp|bX6I>&!i+}kw>7pAS9J}N1J>4CT3N6*SD2jPpFmY=Ng8rE8?1yV8Fymqq<nis#?)W#st94R#elPsde~-qDNGmM(C3rD=EG3D%y1e2xxb>CVQocqn~B7jTqn`o$~B$Ya!4~;Rp^9f05Op*+WVgnD$W#yF0rIN5Jfd^rD;I$w?-5*cn03{_Pr0O*+g$ za>Y-|hj&jzRB(xMKv?*Ng`wfi%17xB=Z}hKSz2l(YN#__|s+Uy>y^P0A&5ceeJ+0*m~;M5up zb_|i^NHgrd0tvD3!iz}wyiktEdDN`v?-~WZRqF|pt7Q+yCNO+suJ^x<&64)Z#(BO@ zqa$qPzx5Xu+D-|Oa1M`5PDthvz}~8MmqkxW<3(ISvQc}K{sQ36{-HM24|H!rDD!bj#^Ka&x7H_sUAv~ z1P!n*6ICh7&i#M+*2DI@SRfx!jSle*H_zY6{+vVUI}>lcBV@5LnLe zv7Id`O@DwT?$6Kw$xZdGY+41)Qj(RwCY*bM#kjv$cXJ<1X=r7l$a9XJWJ&kub>BD> zs}fRrbYfX^g*z>F(N6VFQuCWaPUzC%`s+XUr*w{%{Hz4;U7f&=87YMCza3m|tl@}W zeas|it8u;L9#3#{{;;;6zaRJ(Tv9$5s4OB{<%->dnOUQRW;Ujys-R#0S zO0I`z&TY}FMF;miXf<0|WB6`WYyatvwellLQ3V}O)6ukJNFTUoBe^xT$wx(`U{u<}A7u~xr-ML9arTz0}=x&Zc>i@$8MKmct$4Ir#H(R`mIdPN2Nl1B25nX(9Nd!+)<``ad&Rnl^Bt) zp90|0`*DHbfLNfCA2R$z8LmyQ=*Z#cL>Z)ucZ0nyeYRN1yFj~r1a>a7cv3B@SQ0+v zpHOqhzGcrPi*6Hk);G!1#y@#H4Ua*lTKK!pJ>=8)ieOr@YI(<3UF5B6;c+AK>WE1+ ze(k5E#P%j&13LuKj}6#Cdi^`?NC}uYG`yj@5OQELA^xEmfw>VrX}l4 z6;Ymo&JVMcH7}pO0tQq-1$%mBlqS1%O)yrI&pucS&v{{ zeFz1_o_!lL15Zw|b;~*EGvE6G&EkJ5~E-*`1NOen`0P?bD61%*|1j5=awc?jqSF)6fd+MDC#)7=`*8Wh0Uof z$SZ9#?-pQZxoukS#oT;MG{!I5c-3?|(2F@6S>S)&k6TAvk@ zqh16%SvMBPLgKUZ+H+3~U|v=i*1g1daLvEzxrlI5xyX_21UY*naUY3WD`xWgdPjRL zEsxLoN{>8()&7LUjUQm(=9%cyK;z{mP<1zlQo91g}9AFoT`$K7x-SeD=BeDJ7Mxt>W`cWZbvcI2W%$9 z7o8Nu%fONahW2hRK41xrK9u?|dQCywaE8g_Ai8-qi2tgx*NvUN%4=BwA7W#Z{r$c@ zvT$^QOMIQL+t6Q|Q=$qRpy^m^J(^`HKM3MN7HsZas1hk!BP3!-%C%EiLA1duN5P%R6{iG@sM31H4-_85+S~ zLsW=+12(6>HXzbt;J>$h?0vYEA((pR;$&{+2Z2*iuX2UCps+amTaWxRbWY*PD13vK zF#XA0Tg>E2m7jvI%ZpZ#!TUmlcW0aTuonv3%z=Zmbi}QrRS7aRl)Z>sz`WNh#kUN* zOVG*jOio%)vw`P5*-6wUQx&xVK-9vsU!I=_0YtozHs`SDa|%KOWNk*4h|cZwKtin? zdFW2!8#cL!j|J6zpLfx+MC=-G7 zueu5BklK9Bk+mjc9g{qvw!fdExvn*wRKh2y7`SzJU-j{`is^p6V$U-QCtyLr=E zWKt@}_(i^qRosH}i*<$otu&Qzo(h){;#cFGI>x(YToMl_4V>HKbD2HvU8qDXHL?Y8)I1OG!W|TSzX~B(W z{5!g`VAI`td-^P?Vb_+ut&oY|8Nv`V;nNdg{}DD$Y8MPpw|Pa({zqA^2{iqF`lQp3 z=WiUH8aq|wdK}5wScCd%->) zo9DzoLzcFG2&QLUuo2Ee5K*@j&s!0C$Sgl6an_Na`W&`h^x2^?m+}Ba-{o z%FrA#4u!ePyvY~aFNS#;M(es{9=8BQOY~6E0hm;Vbv}#6ND&2BR{Ut%vd{OFZ8B*S zIW>_0E7P6%5a9`bB z2t0rl3XesX(#)x{=0}ZN<&lw7F?4}EQt9$m$+ZW(pmnf0%SG=&Uvv8f#@L^crg(qE zx0ew^HAN+Ua?KoE(S!U;Wmc|Dx12AVVZ52`GS7L93!;$={nvg5LBtfD^SR`s?S4%4 zI>};nKCzs}6$eUuO0p*Jx}!bx5IQ?GX}~z-8To1b$&7EJdyCu$hes-?Rhg_;z*lj}ZsqZV4~l<`RF=BCP?kloS3@juL#6`#IJP2v zg&Q`WeiReuP^}dTato%lwPMpVl|D%Uxj#8(ivDk8i@#LPx_lLZ zIDXiRWRhN16=5yoA@(e~sy{{rp-8Evz^%yGi<5zx=9ecYN3(c%pz5w^?fFDp`hLGd zAF{u_CbxPcV1@)h^z8@Vv9~yk53nn_^NYJ=zYJXYOwrf>zp>($S>;8;Xe1;_l=v!@ zzWK%6BPgD($Xjq`rf z!084*<_kc}TYfRVI6&N;BU68TT1V&B;fC`*v6)pJbBJ}T=`nKTH;(5!_yPgv-=!DI{ zzk2UXY4(0P6zNq*AZBkQD%&^}Q{gLe?P=6@reoQNN^3Uq&cn09RUEmn->OXw99p2% zQK3XOyDEQ6NbTa=RJHyp)sMZP`Z&UK*4#1HftI3^Lk(Rqasn8roy!iRCQ-PI^AU57v9 z0N$sMDC-f9(n;jUyd=82Um>uY9IsP;H*Gi09{O+~b*XP+(^l`lVTVM$?`$+ywx967 z10q0)$;c;Dp<++MDAFCtR9t8mjlmy4ot$`v#P$WW`}jZMmiQyk$}@?+1JUH|GxfO*Wj@te50l5`LKK3hdNg87sUFX%`jE(=hkZg;)4P1!`bB zLZlL3#J+m^Ok|q3XPC$X;O>{6{ZMh-FdkKCxlfwCCumpj;414Epev-$V|2%A9bbkj zb2`x3Sq|L2tN45AdJ_0pbE&cEB`LnWb_{PdIycu}07RX~53KtQjWG;li>di;dM)wB z{Kjh_U{L1Jp~=?)o=pzifvG!0+>A&6{IaJQ@u#0fuA%^4KJWI2FR=mx#SE|nn=K={t(Ieet)2~l8OkuLl-9%ujGJefiL?>JNQ zm>KG%b|x3jcS#?QEu-#&P$R26Pu0|#eOK!InyFaJ2)IqPC*N{g(z3q$ys2Jw0Fq*r znq(LVoV8zs`qw2l7z(_XIs2Ez_$tIIEQ^;7P~+3fzEN+NkOkJesmU9freZU-!;ecQ zXb~gvpIGQxSFkB?8ig8D4V)yOmR{nE1*RZ%XvhP}7A$^amd*p1U z`zO5zyL>a6YlL@EvEG>}soM1JekAE2q`$mk2JTukfrW|iQS1oZaVfD<8vWnuy$gIc z9OwfVK|>0RYvD@5i|(~u%d0ZuV#eYZoFURZ`P{_rAdLvOB5s8p0ma<}CF~z_>166w zB=H~Sr+>a_cwjD)hlUB~m)FM}M@&xQy#lwsYuj_WG+pKZrX5ZbC&?ghla12o?KayE z+m%1SUyG{$+)tAOC|#ejeHN{yK~X7i*Wt*$IXvcF%r(1ZoFy7nkb^VJKfKYo`&L>B ztTJcU)EXW&=SOLFI2PbZlEnl%&DXtBbT7SK?iQ0QJ?gWMunUYx9C`H^Am zDJ{u5tc>mp^=wiX?4O%C3Um=U+EIL4H|_$&ZhK_-Hp%qmxg<2#4c@o#UJgjgzPMiC);y3DgMH?jPbGjvl-W5*>s{E#v82)X^ZwI z72es=JsKInJMXpwrrt+QTM1#F0)l{!(<~nKcQVjiaDQoe<%h@Kp3+kA!~aLxd&jfg zzWu|c+EOiTDOG!`S+w?QRn=Cbs1cjiYU~lKiV|BCpHRAd+XAOYJ4}{{WvmKu@5Oe2MP23cNSTmt^#qg;mbeeT#;~ zQe5+1xkOyPn z@7BChvq9a^{gXM>nzdA<{jsM#*cx)UH33)=O#M;`Es0P=EBe zeOFRkD4a&k1&Unk@&0gv+&xeUPupxwaQVR6L&$e-)IDpE+(v|8NGfAaHhgrLIW_zE zK~v!E0h2tv@&HVROra*Fpg_OK9&Gcjyw(;MfMz%s#@=gQEhMOLM@&@xNvzu;)JRvm zlggBb*A$qvsSPI+65@})s}DY6F+sTd8-Oi>?g1r%B-KE$;9t_;&bZUR>Z~n8;9rB=<4c)l+Um zqEkSDqKVkG*THVxMXfXhoM?n2+R?VJVnw_*DP3=Z?r!?t*WyzD?Pg11|FzTvd6Hp| zxNMuJ8nww!JUK+3iN8szd`g+{c^i*b_(!GJ{*$iLz0{Vqu+_+^%s_*;nfp8aDv-p4 z%5l5GO#Pw7TDQcrnfDMlaU|w(t3ym3kd^RkM|b!L&5s$99{r6U64K z=N|V4q~58L`}B0H%VS+Oxs+rw)28l0qm0SSsXffm3e|RFWguhi?r**3(OGrEq(x8ff-u3N$G-E@H!N^@%`=6)dlSS{iN-uEHk)i_ zUWPvwnI7MuU1I<&tDPC^Pq@?SiVJ{e89F-}BcC6mRhwU;>J(vC#7T@M&enObF7xFk z0b^$>gAp#pTh0riOw;Fq&^H zNU^og(=1n3wHoXYQ;3{Q;_u;YBOIsFJpxKs;Q7W!KWN^MVqBD6o6NKVaX9tWSglYD zreWiB5iimdSrt3T=kIXWiH5Jos$0hO&HfOl?VYK-ZGsjdqC!QR>R9hGsY^s1t1HrT z^J5|_UAIW*u>p{u;aASC2NyVS@KtBh^2sVrMiqFPLf`)Q(ecOt$rJ?&j@N_KWNg>A zZM?|VM?E+>XeD3mwb;xC50GfkAJyfi_FvQTg6|R+di&1kRRoY30F%5z1SJ;|Xu%L? z=~6G!3U3$wa7m}6>cMamZmnxm7!3GXA(w$!cB{;LZW<)@$YS8Wri(stItOi%LS^nR zu6nS0=U3k+r(nU~wZ+v9J=@)sFqNlJ~oXEbb@2if+4Ags4VTxoZiM zH`jmP5`Y`mSs#D?)1R$h7~F2xm&0E{@727of93^-LDt@h&)98YM8?|#9EARwSnu;g z5Jpd4J6mJR6EGd!KOff{zaH{P1eUD&&Z@zC{D&(M!*bM|e*OTsPUepPobN0YS(hS#zA0v@?gP$&lF@dLa zK+*O&VRs!?{Ow9tdyKt9ih300lM-cM9y6}W->FAAjLHsRzU5g@#AvCdWMZ!!R8jA{ zM$h8)N4)&umr&aTN__Qu^BeO)RjDvp@6F5T!U8^Cwr216(hZfgMBver#Hy(Sp?F(2 zUncS(eR^?~7ocP3gj72W<%7KIdv_kI1o9#FHnmqK(Kc}knqhmb&ed@ihC7)}3p>UA z33@grIz~euTxBv)ER_nUd!#Lb)6IE>-p6k~W1%!@+$i!+&(*D=M31P-dlsgF#BdYE zJlXd|OIIe?KmTq+PVyOgnBKd3w8nseQ=B|$zuvy^RDEQ9yj>5-GmK{Wos>?2BwSvi zfYWgjE+Nsb)wVl?Q{k*C(*-NVYX#FML;A4WKj(z20O8Ip@(vPiXZfqY5&@a@r&bc4 z3e*0OO|q-Mw`V0kDPtfPk;O`tRTnV_;6cGQjiTRh@?_mKrdoM7`B#0_qS?b7nv;_* zb(cXDU+e#$nnlq#)RvQ>i(i z2#TB-D5T#ERce9P&hdx=A3`ea#XT{;um*2!%t81yFZ*BI&E8c$7~AX$-q(iD^DWcD zp2x5GSBbr=!Q8cn0{XY6-yd6wpubA9-yH1Comz2lc7N$8V^lFrdBoJMI+Q10zZkMu zEd%Trw^goQd`C&4URa03uV_q8i{pH3Vu_q z(M34I9B+`NSR}LLm^rAWIhs_t)-01wH0=xiWUF*@22%1Ed{hz&*j|S>8`cOr82N5< zpg5zG;+aTjXO&GyR9gCw8bR_FueXK9UTz3W!1+{q?(OyR8dACskNaoa`09uWTS=~H-JX7}e%>|SQNdJ6#%Rw+FOOIM zgev8)O^BEI)K z{&?S>E8hlHu#tJ7V=9H2=g()-{umPCI5QHAqh$PgUkm}bdslxB)>(r*a)g7j7-Cd6! zEl84w`6&%iVV$W$x zz$A0>!*dtHd7x<6@3uh`HV>}R)YCxnmZzS6-J40g{2sq93J`0^aXJ{YXq>(nGq}WM zYa4n1GuR5N?uJfiudDRVqyoCRdtMS-%Z7zA7avp6^DV9%Pi+X@4s;u|JQ0F=s)?4} zK0@dv&`7qaB(AK?d?4!ZO4kfJVJnPVy?v3Xvg(dkN2R&theW z^%lzsSM+gr2r9MifOOS1K&ZZ$IH{drd$%^JCl_`R&YdDWA%xa0?ns#FL%x*b&jVHi zTTPtSOojLHA_r=n)_CXZ5GKW?whPh2Q0-a_lJvvQ7BU<#U;7zpvjMPNY?NSZ0s>-_p9hl)At|F$s9OlR?Xzm&2*@U34ue`(n+m&t_)g-#D zcTTsIpYlsW>%pTrW;7FF@b)lwoJ6>_c|(PHDekmVY>E8140x{l`G#T$XDUp3C9Z`~ z0PER4r}Ki6y_=9Q?_u5g!X?Hks=jCw#E=EWPXxnPqRGNrRA_Ks_`dDp7mrQk zB9-&;PWy9>`^?ckuIJjvKjE3(tsTYxS@y?D$@B^>-Zxxydv*E;Z6G9C_bd2!?bJlDXeyD7i~^ z`ut;A&#y90uQtM=4OZu=l@GQye$kbbx@y%iOZbj>)I49wIJ(JB!sfz4Npfy(tBI-I z;GnuocD|#1%mh^=ZaPH0y(C6bf?q^sCu7y$3rdE)*6GsbHeURie|PmkI(JSgODWE` z0Lg%ZPc2h@FE?CM%{lB5F%m}~qK0Lum$?(=#ork7oNlo2*&b00IqDz8x~Qe$G~B>am0kT;~injU*yuJ8jXcxd!mj9ms-X;Ns9_?aa}*TI(bWerN&>n z)48(hsJQIWrA9;s)#`ADGbr>s$LQtg)nzNwft z*~yIbu=DOXqc@8F%Bj=5b6zQ%as#mI;5DEyR@37dT@=Fop2G@O4h_5d!Qei{el?fd zSR7apq&=S-o_z;~t(1)pJ?f26&~f05IXsIt`(6SMTN z&HnxkUX~H*wmoF*><9`bH?rZW7|h6gc}QAvoc2TNTLIy%(F{PpDUZs_OWh|2dA2+vg|J|TUCxq0<2eWk~C0{ z`BOCFVv(6{JR!6NWQ^;bS%IAAb^5&O2QkLw zsw@VnPljz|%o5*I0p(FV#12L+PY2)NX5A1g-9ZL?rKn7@6p;+Ny)6ycyc-g4Lb7@y zWZi}4-i_oPT!PLlD+o#kaX6oTg+f-%sQTqn_ZS8%-a}*6zA!Qi9!lKPLV1ONoQ(mN z+ie`CgqLVOx37H?_~eJq!uWAy1iA1VwGgKGki_pCZ@3XRHwPEUcKo0q3@pk`tMKBy zK>;Rzi~$p&mgCMdd%Lo)R_6+neED3oxb1(cG;j>kR+1iYDI=n3ivrKFVXT8 zv0!A!SEJM$qXsh{tH(ZYq6m-7Z+XwKbUEP93M7HM>BZ)zbOKXWu@JJxRbLR?H6>L+ zy4nKOCz#E1WA&q@T$p~Ei!Fjzy8el1WS|GC(ydEfeo8ft#bT5xxm}wUe4iTAH*i}} z+Er<@ZB9t1Vocjt`Vr#eomH$Oo_U9@O?YJGIt?Q;?L*D(0T|mX)qvx>9nj(!PX8(? zW|do{01_4~@6h2Lw8;(l+Xx7sz2b`-IfO?Y{wb(7!~Z+kZSvk+`SoN*E}T&XUAnn_ zKi1_HRqoSt8#cJaS*f$wqw<`6z;6g=6f64O)jiB5dKp2_U%U^R^Sbeh6T#Cq)00ls zf9C?ctReE1Pjc{AJ_c>ue_b_8eG;f@4q1F=(=Q0%9PvlIi2XtvWzFn0Adw1L{RJFY z;^U!c+b2n7N(Q7ACu>n^)@@De0V-rzwD7TUNW9I4&(Rq zY|N85NT@6?*Sue}-uamQ`FY0Yc_KKRp+Pu8Fqtu9GF`|eA?aP13>n@ImjE~v@gY^t zK2pw$%qmhLb)TWMqQ7}p@037)Yg2pgubW{g#YY9mcP_#oL6?gXXYcT*@)Dd8XS zmyBMxk5VHenAKvDe1Mg)&G=<-DjGskr{K`IUZ{rtKwU}aPH6no>l+j2*bR#R#bqw6 zvW!n0%f=dL$T~wwNl60`j_aI#$j+;SMRrQ=%u!hiXqLTEVFZHPorNWlLZI~RQA7A#xz zDBWi|x!#jX^x`aWaE~*dbH`?Jd7O-n%`mp)=}}jf?fvpU9IFB{ViJ!^3GXysq~@L< z6cA77#?B#xbHyR-OOKtEP9{n9h7POEjDl^fPziaWD&Q6D6dFDjXzxiUzZxbbS`t6K zWNSlq0L*(vaNFCKxvJ^fxsb0B_q9(B_lzjkYq-f%k9HnVPLxiV`qWJ!6W9e`Jkn(F z{xgPNSQ$J*!pNn+cFgRP=uAMrR=wk;!zTCs5c4&LZMJl?C`>&U@ZW9eZmZ1K(DS}k zR!Sm;BPz$e1URR>k$d0b;z(T6C-&!^2z5tCsJ%Y9Qa%-|oa5eLM~CrV^gjdrImgFKmleghrExn_G*T8jcM&5L< zG7n~Wyp9qwg%8~Sf|MB}_LF+(Pd;fj-|>e{X03tuOpdf+>m(Jkllh6V}FFu z8#_IWa_}~#0cmW)ci$eqsrbG{ahI|B%|`haE;H^wycqG=>P>)^8v0RJ&Q|-#$LrD} zOCR)f(b-h|$S0Q>YOC2>&+)E@>POumx_O~Hui!=Df7n{o$Z<&LYxn4f1^8Q+`5#5N z3h;==*ak`HJy3}T*RE!zuJ9a|d9G^xxWkY%u<(osTP#qF_v<*qNkHdhU}IoO43iwX z>ag?LH;6p=5zsA_r-GI>H(8M@6*6Xs%{=Wp!9S>G?&`NF?|mO<*4_6#s<^4RulGD- zaU;(VE7kja@eTrCOk69$pj>?V2G+5n-(S$?TCEekR#z`Q9qsekW!tzc!&|MvW7-DV z?h;l;F_w#o9B2NrQS4QIlsJZv0B~FEtMWk8#i-;rKyLK36-qlu6Q=UgW~Cj!TUeVx z2sbM!qclWSe(Fi;lj`n_2#Jn@DYus^s%!;gh@_k2C82h`C(m_bzxo?XVW(e&CLr~I z_VP6u8Eh%?I>-4+W%ulk+@as|xcDF& z1rl%a4W#|96QxZ|?D`+vBO>Si%N)_fJ1Cw{LJG;qw=O1GRy@@0ttfeAapV@pl6rf6 zXZh?20Fcr~g@9x|mEA@G^$# z!k5=iD#l7U!I1655tPaIajDBwb0Q#3yb)a9D_f9Myc2p=-;Ds%Ud$lnGnTSc@o-KN zsxYuoPz-5Y+|uCIuMw1(olW0MtC511jArlwjnQSP2pa!G0Y9ZyQMI8>@Mu2_HU6@5 zBGPXr2r>eWwu{J4{*v7?70%(N?}%aZCy=q_Nre!Qz&ER2p?g=cWsSZl61J78>6HGP zq3W-CO)QEZnTIWhkhijbfj{@~p795H>Rxh5jRfW%)QrCV$~HkRXJ+H?q1W8d=d zVxl*2V8EnxA@akPcgit(1?JVZG9J@LN`2(j^}WVTC}a59^*iy+(NH@^5y^n|fsGe{ zHG`GcKP8W`O5AwyD47SmT`Ye z^L-tLQ9&htNehH6%%^XT%R^xn z@b#S&gFl<5Ug(XM%R*A$Eor((T1%pb#v9<`9zpXT3c+0^@=HSAdGgJ@_SWgQ4==?B z*eBJB9cUU81_%;nH2-IbkR1L2`IgsYDl`W9(F3MG)~G+e(f-uh$wGkVPvL;ehLNzx3Rf~-afz7ekpA8|%XgR$6(Z4PIh zeRJh;vV{{w31{9BN(bKLtYb`0LR^8J)iSf{8d|)IGdNT~&of=vG_=h*rd#V&j9pln zo~93LmpXdkdMW2D^;;JJ+1+k^-o&)d+tg0O^n5&b>wNJh91zJXiA?ZiHz=X5qivzp zWP(p*acIR5;i+E3)^siF(;-GD=Q(ed2M@9A{0bLSjaz0reSJ?>M@eKq9+U1rT3%qX z{v+wkwbWx8?EP7JBeVBNjlA;Y0pHtL?FFrn@G-K9z+%F2=}W2SM)1WR#?!(Ys_J1} zY!{mpFW~&fO{lGh*LkAoTfT@$8$wK2(EhEd&Vu=u6uYV5lM|)Gk{?{2 zvn*Dk9a;sRjs8;RANb)P8FQc(!%6PO<{Zd zzENV!l}I4H;bx7~P(>_wdgpV$fIdka7+4zKbpW+f7mR}()Idu6({=9FmFl*J?7CZ+ z8b8DCi$?wgX91 z{ystl@sV_srHvbeH+U?jasJ}XkT|-Yhz#O*F1*jo+R8OK8VzKp5VZ-2dBAVO*^XV7 zJ;5uY_F)ZWwGQ4cYTX4*4``Izn=M^wQ>>}B_2P_&d>jDD2qSeK-<2HUWLd2C-P|*k#M(ziq=>((Gv(muW&_C-w%K z|3%L+&(PH-+IN&pnBErOHFPfsrqz%B2|kQ!<)?%V{g-AUKaS+6 zCQ^*I5=ElAzGJIXcQStmqX5$e@D9S218!~U{x-TpizgBy#ry72+1`;?B5~{XWQDx1 zTIc=v@!D_2Te_l*y;hX>lUf3Dd&L4a+a~zJHr&3y2dkBKhY}7(wy%apq8(qRaKCp~ zMt9p&(_`Da;1e`=mb(R4Vvp2Eh~Lff?u$XBLD2HIu!LmSAVTeOai1>6m} zKPXu9lZ=KhMJA6^=!_8^-Sb<0R)$&yZ{L5Id+_~}0@dtLA@C6e$D0e-E`f=6=V+hUzuu~(kRBVg{Nm}# zTJfxv@c6rB-pLpsN`aK>%9Y1?axb1~oGiM3*bpDr!<*}Ty!~Y$q)}jnc2f5JVxb@S zlc>ngnJ(9fPc3!DIWw*jKkwep3>|wAkA9H*%0}ckC%MXKt9vE3etGOj{z4I^QIZs8 z_flQA{}{%xfVwE7+S<)S`Xm)B*V#fCL}RYHR6QH2I8eD>~>!M#=BqDt(tC zL<~pL!s*!hv0vDE{6;pitqLoUH(44a&3E)&1Kodj8L0S>?`6nyce(NN`Y}|L@Oo7Q z7+Mc!BL-3`+UPSr_)?QIXaL0`64=y=V{xTFz{_tjnTrJAXCOZQEaP<&m|#Bq1BZ9@ zWBVk(VvTTk+2g?H#11zzE$C&GJLR=Gq2PG?&kVIz1LNS7Bd>*f)f?poiOq0s`|&^& zr-cp_#08BRW9`Wv1B$%gYJriUF68Ji!I#CPnb#pdZMLZ66GhiV8!p$8>?c*e+zoq{ zZw0%D5mso(!jDT~h0jw*xOXkY4qmCVeYnCcXi$Yosc>r4CBIoEW=*yns^>Bs7?~R| z-5lx!l62H~V`yj7699WTHP%`9M%KXHV(A%V0(I@M`Brb5kq&c)J2VMgM% z_{-|yK3+T#6PnEjYSR`Pq(!y8E}@Lq&c%|g0$m;3{*nKL^7hSMhDAuO@#N2P4qegL zArKDpw&w2{&+RE1@8>DK_9dJwseZHcEtdkAgCytiwlhAwcWF@uGaBCPfU0a&KV>1H z(i_#Gh@b7X!Q|%VAtMq#9xM+c6q7w|^#HUL(TAKIqb$fMSM68i_s%;RVt7J>-}kY% zCQ=XC6B>TCT9B6hLbqMPV^>PcT^f>iShGdEZrH-y5EpgR2=NmCC3wa@gH$2R(a}@Q*=?8x6>#dR3>1>A2d0ZZJM5xp; zXD;ZQm}>iEd<)|PH#Wi}s_Ay7ZA&>)4P#3}4hP;S&z<#?gQ=CC@aU|<?2ivw>_@yr%i#*ih4JKPS%3{CM8zP8`~3F`byoySf$ZFq%Qr-dA!bI zSL)XG(S4_>75QTBr?TMHx8HwMEtI?6s@hX`*1Okt&0L?dZzdrFX>@h3cbF&&&*0W3 z&C%!Y7!fS`Iw#?F1{Y+Ni|lgCOzG#6-->MTDON_15mJ;#JbjU76^_D9q3`NyN^Jv!bPbN&`Og);tLtrieXnp(6Cb-x_m$Vq!{|Rf>89I=#v4q=fRU3(2 z>@-%@$e-hw^0O>qSYU(B*Phehi1)Z+ZpX|^l+(Br;w@NiRa;vuo#^T-lKqxi%gTZ~ zDzQeuWtyeM(xBUA;FwFR?~dprJfVw)F7r6^re}kWDN~^~7V-Q%7%ywPS1=dA$z$R4@vlY_8a`5w-12Y-rC$BVM9I!4 zN(SI3x_7>gSth{G>OwU=s#USyTw?3!2xATyu z#c)aam7M3gIJ&<-3T!V9yt=1ZP~A#5lh;vEjq57lp?!&y5iF&|FCMz`m?x`Jky*i* zPgiPQ+LkNd`?T)3VpXY1PZAR?8#F!;c(<7c-I0C!4tR;~ zT=8YX)j=vo@%+^?24n4C!Hqd@4q#S=3IATue>}mTZ_h{ke{)vI2|z<8>-=Rbxvw6H zyra~u7f9pM$rF4eG?{fug_9UB8<9O@w8>ipR6Mwq`iLgS&kUb{vcLw#(BM{%s&D`0`G9rk=)~CCv)*`eUP#AVkW`fD5}d~D{i~tH|K9zKc;6HEQc!jy4faIN|H!L`;-{cOnbk?jRqQ8rekY-&|=MHMr_+$(fqBV z{PRYJ==ZGa^b#YtF7Y!W<_HJpI1=X+9kiQtcZja?lSI2D{i&DxA9>Ld;%>WFM(GmIgw&+GiB;6HH}aMU0FKg7~PjfvjX) zVpf0rE$#i(YS+#8gx~Rc*n@g2=2;y6P?gKoS>JU}$GT~%TzEUli*8}uJWDC#(z8iW zs!YOf%)-vTGu16^w=f9Ti!f|J2K&1I`1}%$LF|_^gS4@mr77n_zF>nhmT1HlckQT8 z05h8$k)apY-dA&oltoLZG=>@lUq>W-d|@ccZ!|k9`pNm}G}XlY>#+03F%E;qLJ~*B z0{qBzUfbIBuULZvNLrGDRW5}|Au+tU@vm487C`v>vr`U(q}dO=;Ji3{-=EA4ggbKA zCYju#LWnuPIHU?v3a(|}FY(kx4C8zwrfl=5b5)K0)2$ylNiy-B6q-+$9{D5?kN-1v zzeTx5&|dzh*@Hv&;|J5)LvoPE~_)?cZ;`g1gLw;dSA63>P&xK2j|Ne|~w? zMd(gNygMyPqiyAW$z37FNZH0?PU)XgG$pxtWGVB#oerY#8qae1djSfK4MlEX6Aoz;|c>6kJr8g_vc)I7y8P~9hNlDMT~O}yv7 zMAfu^_eiyXoyc8C_v_>9Z&_&7rdFV|vb$LuC)F_v#I)zbtZw0TI!T~}TkUZ;zERCj z9&DBgXLcyHC%txT2T7ohkI`xWWw|kQnB_A6U|_-W<1k5t|54d5+XM+E*bPn*+asW- z@VYB<&!~~1ddTqji^)*?be7eEL)YFXJgkZo$JToK}LuGqG*oj&(cQ|u3{c~Y$?vpb-IB=;PU*zFf^yGidx z$R>C7FJpop?-y01**zW43!Kp(U@?fgG8*(eG1Du(N>1W(BvO^MA*5q^qggUp~9Yj$-TL2`|_mk30sr~kFNRTA$L4MLOLg&wDrkkqm|FF zwno|_LD@b?zr7xEs77%AVdYTOpZ_;`(43P8%`AV|h4QRn!ZDz;vnv)PP)x5Xd7LWX zOz%1H6{>iQ>3Sq;L-Y=H+2KedR*Dz?N6kXbGUT~CjUZU*5i(a}N^J%Af?lrphOw#w zv=qwAlh4d#^Yd*moe~nrSI52G6AC;XCGrhszl;{>b$US_t~Q@kd;_b@GTOBl>`?!C zW{#%W`Q>vlm2>V+8@z)#(Ls>rS2ipG-NP|pD|~TRi);?r!fndv9`6FxHdfz|pvutp z{>$i<^v#1Gaysi+%QLHWjAg+Hys&IYEt|%1U%46|pi-VAW6f=Fc6utDcwd0L)2zFU z!CC8&=z(qewo$1U&I7C&cmDowc<(tLQa4^U*1@D>&0Ryvb75{-;8-Lt+1t#7Q2a5( z#~zFF3#lEy`d-14JZCCD8;;@*D)zgSyx1p2czg>mo}`N8EaFe{D0TTVrRZ#u=zHiU zbtMOlx<`D&MSp$Fifb5frhKRG*K1OdoG;i>9e4g0sCvsawn}Fqh|Bw0%LF;H+$>06 zQS731^A-FraXzWUos`uF&mF7bYFn<$D}Jt*Qm3ezz`CFW&dg=^p8RRr9&Ja;?_w4Iv5o=oh71?j5{n#XVj^%0$C~nQo zPA!aD5qTN%|DMwcX3GjrxAFP$F3gZ0k9~V|nu&N3<;GJHO9`qTuso9Hj#vV=G#4UhkR`rLb4T2H(?e;?o6cG{*Tn!tQ4? zejcD6lhUV~Q&6CM=BpV_BW`?HFcvTLjW%DqH1bWsw8s6wO5ozlpM`~^v%Zq)n6{}W z$wfq1U*=*08c|X<%zlhmXAr{z0=RV%w5RLVZ9Zsh?9)f;p6}!Obl2n;1ef?<7|UZ1 zlyw5X1yN5b#`Fe&5G`l3GmwUH&Eb9AGyaaHr_uXh3mPW+J9jil*hWKFa`P=*q0vhgbO&6PW z#nL+qCJ|xA#J@xLcnFWksxHn1=sKK!eH-*pMT$7KwKlupvy?aP_{<5{hDw|J`41o5 z#GOeb@~@qv!aO9EMuWT979I`~!@RwJV&Y-0R$&-$v9)ETC(&ek1|ri3@jOC()3TG5 zl`ShPYnEe8)|fV*tgzvA*_v9*$DwKW;Vtg!G!T{%cDnk7b4_ul#LVwU?8_v+1}E%PT&8oq#pzgDb0A8)U@RIvi7E90j;1bb7F8GW=5$c=$Ve|FDkZ>e>cHD!mg- zJ;lg{NEB+=`0=ZRr#tVEE0LfCaG`mj>sofQ^V?#5s7lAl&Z%oJpT;&6$#AhmKb{Y- zaGWXh;FQhAU*jyCn~7tsLuzTqNs04j?&S)WwT*;L_iGZA+{X>&?$dC~5YI8w=#KAy z2=9)kBIiyb=eiiew4te;LJs~lX5ZCS(<%wY9-rcc%|Ck*+CSokjkmA+dpuXwS zD11)0Qe3zc0v3h8Imdx4SK-G;vCk}Z_~?3O#&mY}ZmDJ~C%-*T>cX_&eTiy?d6rmw zK%Mr`jOy5-`e40wU;GG7eUi;7lr0KTTg=l)iA;;wXcY-zd+1J`#rQm<2ZRRztt(0u zb}%m|cR?FuZQu_;lzXxKf`gmYfOBtH zhQ_9#xvs|`3~W|D`Q}Bygk6oRLET=K!=i90E4f`Kvd2AkClp=eXWxhy5F}NB*x6ow zTx}XBcTOUcDXoaW|jG zRd~dZS%)Vwk~uIRcF5NNtB&hRtDPFzX~3m;A-UTpedOs&x8H8mh&=Njtl&gD5V58} zD%--SbvL2`G;D$Qcq&Vou!M?Fr8qb4;w4_uEl7oK7xWMg?{2FHmc_-x zT*1D1s|1Od1vtF~9qjnGB<}4{LL?M-J)Wl(Un43Hh0kjGpOZZPEsZ(VGuW*%gUNHD za>X~DEdt49VK*zCOeyREuuxe?BjNjQ!aBW+;gSZo#8aNR1k87)6E0ck3TrtLG0%8% zZyXy-1q_YX))YpiKEmWX-G?mlFTrLeZk`X1A%Hp6Ybd3ONt1QHx|w1V*<(;kK-E&T z%gsWM2k1zQ6hX^`Tl0@Qm)wro%&FhZXO%KMz&E|pf5HnYn2I@P%?2sFnzQ^n2E;F5 z6&E6j>RM|!E#MY;%DiK25-u;i0oH3;vNStztJr~i<5taWef^?atEn61DUhH15!?!I zS5!C6RQ6FQl_$S837u#}U#I7QGvs6rbVZohhilCY&beYam|KRm3&B zG`;uduxhP_mRy>7U(0t74}X`eJ-r2RLhjP4wC(nqQ^Ld?5jr&0c_RXnpGW^V>DsZN zkx!_$2;MUitR&NmFqXD-mzvbrUPOQ7PhEPQMqJH@k=1PNk^lP4! z!1842FDYV|RH$I*dWJ~KJBc1yFGg;UaOldQ3qherFgm{B3f}j!urTjBXP}t(X^3%q z=B?cKxAR8wXUWvF%ZTPUt>yn`z86$+N2mrjBSDsG`s$mo3YYB}hFAG}rE#aqp#2nx zC-li-C*_fzciEe*!&<>Tw;vf!#3h1G`@)?^V(~N_NdDC(h|0-yAWh&OMl20{xJ9TD zc!#HH9n{p{-+y--IzQ__+V&^ZX-!(%(BY`y8<$yPXN6`(X*$pu_7OXSb85ss-6w?0 z_%cLjL$wS@8g?3U>q#AqUu^2n;VK}R@ltgA(W~ArLe5bXEceZ)9>6jprRg~E@Q1h~ zY#vQ&2-7-mKK<$Y?_vKQA9F?~H%W1v$2lC&^`B`^Y}J-W*F)rc{rkSp?zIcV*l&8=3ue@;$+Kk=_GmUO;rcNT=p z5X7_~ks5ZS;raRj7mwRNz+9{JEcAjI|I71XHootPH()T>0b-}84K*y}fh(;?H>q7w zUUI{k`#zSD|KnL-6D`Bzv6W|{=tePAnts{U3*mu-dz(jf(-&gVn{v>Skbm2|G1T4H zBtf=$+~Irk*lWh?prAIDhm?}Xt7brSVb7M!tOMqH>D6F(>o;|lz1mQ6BFuqtPA1G9 z&b_Jl_gcgBeG3X&4+lmCeMRu|fB7#`lbK$GdS=sO6)uq#>-wtpka5!M^*cG%!_%PCK3Kge7OZe*XqO@sNfW?|gOJIF)Cd z_N#04n+`ms%EL|`FHGDw(yeox@`-eLK6Pz4gyTW01*q{i|3a!H=v~?N6p1%zQN`r< z1XtuU*3K)nsEMKfMK}*? zaAj6&T~<>7;=P=HOIQ6n_QXb{)*dSF8`5!CFk^ooP$A`nk6>sPptYOc8cCwaM@$nN z+@rLsV}AqiHq$$U5oS1bmm=rI&W3V;$Z{SogZiUhzNxIgj z(9tB#A(xkxG$Vk669C7^a>SxA=fMDv9?iCAPyFy2;N+K%Oz#%JYtv=%47&L1!L;7- zPYpmXYau{P(DrDI!+3DCFicm%QLb*OdvV`mniz7ehW(tt=$kzzwWa@qo-b9^-~TZ* zrO1p?VA{J|wb#oX`e;$M?d)LX1lU;?TZP&w&2W36emq0I9ilU+yO=6*yfapAVF&s> zVg{V~_)ew)f=Q?c%oa0zS9(A~A>fVPByV0!6bUx0f$LDa=rtqR=?`|CY=GMtlqe7M z*>oxU&g)o;82VqOP~Pd4Hkd=FQ=2AxC%P1g4hb>=>)U_*V+T1~U@(O&&(egGcc+pG zgWUI{FgHI#$Xirm?KpoSIk>-)%$^J?EPN!Mx<~xR{UgT-;TM~HJyd;`*1zcTA1l4Z z<7h@G6%gpJrMf~7npcrsQ@Q(yAz69MqI zgUZj-V-2%|KX$XV-w%=L5*;*ihwl<^P>0O;ljiWQfvQBCGyk1gx^0n4+l4povuMbBL~O2vf5K?s?=J# z4ppa9yj#cfwJAa0zE%0{ z-zBDyvm+ZGcJDl@?YO}EhN(}j>^C+KHIJJ-kHS)W`4xMGD@&hfy4wI;54#u8qo;pb zTKLX7d`_>$2v_}YnfZ^Mrwa4A;&J7@sPi^qC~F91`K$p2L-@mS(#bRA9tcqq?kPEQ zTrwDZN7O^F{z#C#MeFp8vE_J(D`UUMKe@>-Zh5`3@N=k*D94@{<*V(j4R*j*Ip{qS z)sE~a627{eq>J9(GPo}|TUztrqZqsZW>XXAc~ZZh-;v&Q#34N78ZhF4lJGdD+N$I1 ziLv5R=(Tb^2+Chpi2c8`1jfsYXz;@L51)vB1Q?YeRO0M{Ve&tYN=j8YS4z3B&cr2q zJ`ce(xANR(JX-mN$>{M=1DyGp0jIf$TZcOJ#`ZyLnuzaU@@7$X>5pd{#Y%_;8U96w zS^bA95)dBK6odHv8YgQ9>q+QQ#0w5Lr>Pw~tHof#l~zig1X{rvXdR!0Q}axxq?UnD z<&Q<*;Y9Eikv4bH>z#U=MIfA_#ZEB@^8Y^uiYbQ7R~`Bko`x&6PhebRCb!X~&U`SCdWGA`+vCY!8~^nk%;qbSMl!=Aa@z z9u%vc7oEgzXzFHVK5feVb^+(KneATN-xU8K+<$4gdDbF;kGRFl+$%?P^;fmLx5CCS zv(tVqUQ2CU zK2HF<-6XUS?t~hG(RUV}?zthV1ygASPgaYo_D)&B^F6tuP99P49a+ICa&LR|I07DH zDBioDF-$j3JFWb$$!wzcc$^w)}rc$FzC8 zV4AUUM#rW0NZ@ImT+Ef)`2xgeJyn>0vV#n5p0)L)TZ57S_0rzet*OnHTUo?pitszD zS04#yqZ)s$W16${9IYT|UQIVSO=UDX7OONc`{ecuope32hwkZk%%Wn?Fg$ zquOb9jA5#OY1iUz)F6LG{P(BRaPZjUCx9|v1&o_Nf7PboJ`AmwsKnv!V!rdh9e2E< zB-BioV{*DrRKeoKKREWE$7c8k@27YXzbd7;yJOwFOdIjcxDcQ3b+Yz~7#l^`=?1~^ zth@iQOaB^ahzVm)P7e)fe6q4gdLl97H2yJxy__Eh_lVFG@$I9HVOHN&$0PXoU} z;@rZ%HN3;?yfNmw&CJ?@Tv0Z9;Uh(jS90n7@HaY98)`oL*W3St;rc${4%3WL{8*l< z%Xk?Y92*;ZFcg#B@@1s|wo4=T=Z1dLc7ZSF9#2L777{>M9KMqLf%AXa?tinhugSBt zRo`URx2Rh^K3pEbDQ=z32c6rgT+I?>Ti+b0qHrk;EGRoGzSyu&z8QxFED?x4`tPIR z;QDc@Qa=~-@H4N9rJrn%WCYV>zkkw6wDe=b1uv z9dvCM3hh`d;p2q?eI=_Lz3Ps#+GMS)tU@RSxiL`H`a{D@1`%(KNs{<`6aM!X-x=KD zE24lkp5_^dhl``5V>9Er$inv{fo8!iJreyR`|X*hZ>0?%+|*!+4$lRMi56gbTyu)0 zXNka_AWiF;_YH}g0FUDo|LZwEV8K1QHs;nNF1=AA=!|NgsdlhHjExj?Y`Nz#de!{o zij|llvl4J_#(;6pH;r}__@{XIo7UvGGK^8Xu|n%#2oS%jNsJM7v0umdL@=O$x|n_Y zAN#RC?!?sG4K!Qzz6GiOm8JTsa3Q!GbwgY9&cd0l6sB=q8!^f0&Jy;C_NlE|_GWk} zf-er*@Fawps`&e%AMXvP`Kw@?ot|q(Yz+m0-$ecob28vtLpxNNy{Uq8+VB6{_L_P9 zJgbctoIbFwxCQLz>Q0$m?T}m7iPNRPZuwr8UpyN& ze=;i2cHR{;jj@caL^9$#&xY5fL9Y}IuCP{Z>)up5Wnt;gGp|ov7r~b_S@`rW4Ju8kpXEI?%K$=+GoQrh}wjsa^%hB0 z@P-?33}SWz!|uE(T95%`oT1Yg#lmu9>x-My3As*9;lMiSrCoT^5lCu*7$akuZq+wv zM--Rp#$B8o8(zDuR3hXFSBHk!?s>JafnglpSdhmAtdRm&brA5xXwYE<&}h)XD=au; i#b~NS&uG-ou>TnYeikV-28cdq00K`}KbLh*2~7aCy4_0v literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/shares/redshift_share_request_form.png b/documentation/userguide/docs/pictures/shares/redshift_share_request_form.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cafaf2250820b4a09d865672df8e9dc040b0b6 GIT binary patch literal 78016 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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/redshift_datasets.md b/documentation/userguide/docs/redshift_datasets.md index de9914327..f88014ae7 100644 --- a/documentation/userguide/docs/redshift_datasets.md +++ b/documentation/userguide/docs/redshift_datasets.md @@ -4,6 +4,7 @@ Data producers can import their Redshift tables into data.all and make them disc and secure manner. In data.all we will work with 2 main constructs: + - **Redshift Connections**, which store the necessary metadata to connect to a Redshift namespace - **Redshift Datasets**, group of tables imported into data.all Catalog using a data.all Redshift Connection. @@ -11,18 +12,74 @@ In data.all we will work with 2 main constructs: ## **Redshift Connections** Data.all Redshift Connections are metadata used by data.all and by data.all users to connect to Redshift namespaces. + 1) Both Redshift Serverless and Provisioned clusters are supported 2) Connections use AWS Secrets Manager secrets or Redshift users to connect to the namespace. Check the [documentation](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-using.html#query-editor-v2-connecting) to understand each mechanism. Additional connection mechanisms might be considered in the future. -3) There are 2 types of Redshift Connections, `ADMIN` and `DATA_USER` - - `ADMIN` - the user whose credentials are provided has permissions to all namespace tables that can be managed in data.all and can create and manage Redshift datashares and redshift role permissions. In data.all it will be used to process share requests. - - `DATA_USER` - the user whose credentials are provided has permissions to read the tables that the data user wants to import. In data.all it will be used to import datasets. +### Connection Types + +Here is a table to summarize the 2 different types of connections, keep reading to understand each type in depth. + +| Connection type | Purpose in data.all | Redshift permissions required | Grantable permissions +|-----------------|---------------------------------|-------------------------------|-------------------- +| `DATA_USER` | Import Redshift Datasets | READ Redshift tables | None +| `ADMIN` | Process Redshift share requests | MANAGE Redshift datashares | `Use Connection in share request` + + +#### DATA USER Connections + +`DATA_USER` connections are used to IMPORT Redshift dataset into data.all. The Redshift user used in the connection should have READ +permissions to the tables to be imported. + +**Recommendations** + +In the following example there are 2 teams, `ClusterAdminTeam` and `MarketingTeam`. Both have been onboarded to data.all +and can log in to the UI. The `ClusterAdminTeamA` is a team that administrates a Redshift cluster `RedshiftClusterA` in +the AWS Account of a data.all environment `EnvironmentA`. The `MarketingTeam` works in this cluster creating some tables `marketingTables` + +It has been agreed that `marketingTables` should be imported to data.all. **Which type of connection should we use?** We need +to create a `DATA_USER` connection with a user that can read `marketingTables`. + +**And, which team should own the connection?** This depends on the data ownership requirements of your teams. The connection +owners will be able to import the Redshift dataset, becoming the dataset owners. The Redshift dataset +owners are in charge of managing the metadata of the dataset, editing/deleting and approving/revoking share requests. +If in your organization the `ClusterAdminTeamA` is in charge of managing all operations on the datasets then they should be +the owners of the connection. If on the contrary, your organization has more distributed control over the operations on the +data.all dataset, then the `MarketingTeam` should own the connection. + +#### ADMIN Connections + +`ADMIN` connections are used by data.all to process Redshift data share requests. The Redshift user used in the connection +should have enough permissions to MANAGE DATASHARES in the cluster. + +**Recommendations** + +We will continue the example of DATA_USER connections. Let's imagine that the `MarketingTeam` has happily imported the +`marketingTables` Dataset and it is now published in the data.all Catalog. In another AWS Account `AccountB`, linked to +data.all as `EnvironmentB`, the `ResearchTeam` works in a Redshift cluster `RedshiftClusterB` managed by `ClusterAdminTeamB`. The +`ResearchTeam` wants to request access to `marketingTables`. + +**Which type of connection should we use?** We need to create an `ADMIN` connection with a user that can manage Redshift +datashares in both the `RedshiftClusterA` and `RedshiftClusterB`. + +**And, which team should own the connection?** The Connection owners should be teams with administrative +rights over the clusters. In this case the `ClusterAdminTeamA` +and `ClusterAdminTeamB` should own the `AdminConnectionA` and `AdminConnectionB` respectively. + +**How can the `ResearchTeam` use the `AdminConnectionB`?** The `ClusterAdminTeamB` needs to grant "Use Connection in share request" +permissions for the connection `AdminConnectionB` to the `ResearchTeam`. After that the `ResearchTeam` will be able to +open share requests, but they won't be able to edit/delete the `AdminConnectionB`. The steps to grant these permissions +are explained in the Update Connection permissions subsection. + + + +### Create a Redshift Connection -**Pre-requisites** data.all requires Redshift clusters and users to be managed by a dedicated team and infrastructure created outside of data.all. For this reason, data.all will work "importing" existing infrastructure and users, requiring the following information on import: + - Redshift Serverless namespace/workgroup or Provisioned cluster: the user creating the connection must know the `namespace ID` and the `workgroup` for Redshift Serverless or the `cluster ID` for the case of Redshift Provisioned clusters. -- Redshift user: Redshift administrators manage Redshift users outside of data.all. Our recommendation is to create a dedicated `ADMIN` user for data.all in each onboarded cluster. Data users can be reused. +- Redshift user: Redshift administrators manage Redshift users outside of data.all. - Connection details: - Redshift user (only valid for Provisioned clusters): data.all will generate a temporary password to connect to the database. In this case no password or secret needs to be provided to data.all. - AWS Secrets Manager Secret (recommended): the username and password for the Redshift user can be stored in a Secret that **MUST** be tagged with 2 tags. Check the pictures below to see how it should look in the AWS Console. @@ -60,7 +117,24 @@ Then, fill in the following form: Data.all will verify the connection upon creation. If the database does not exist or if the connection details are not accessible or do not correspond to cluster it will notify the user in the error banner. -**Delete a Connection** +### Update Connection permissions +The owners of an `ADMIN` connection can grant other teams permissions to use the Connection in a share request. At the +moment this is the only type of permission that can be granted and it is only available for `ADMIN` connections. +Check the section on Connection types to understand the usage of this permission. + +To update the permissions, select your environment and navigate to the Connections tab. You will see that the `ADMIN` +connections have a button in the Permissions tab called `View and Edit` (it is disabled for `DATA_USER` connections). + +![](pictures/redshift_datasets/redshift_connection_menu.png#zoom#shadow) + +If you click on the button the following window will open. Here you can press the `Add group` and select a group +that will get "Use Connection in share request" permissions to the connection. Do not forget to click on the save +icon to save the permissions. + +![](pictures/redshift_datasets/redshift_connection_permissions.png#zoom#shadow) + + +### Delete a Connection To delete a connection, click on the trash icon next to the item in the Actions column. If the Connection has been used to import datasets it cannot be removed until all associated datasets are deleted. @@ -71,7 +145,8 @@ Redshift Dataset option. ![](pictures/redshift_datasets/redshift_dataset_creation.png#zoom#shadow) -Next, fill in the creation form with the Dataset details. Data.all will list the Redshift connections owned by the selected team in the environment +Next, fill in the creation form with the Dataset details. To import Redshift Datasets, only connections of the type `DATA_USER` +can be used. Therefore, data.all will list the Redshift `DATA_USER` connections owned by the selected team in the environment and fetch the schemas and tables from Redshift. It is possible to select all tables or a subset of tables as appears in the picture. ![](pictures/redshift_datasets/redshift_dataset_creation_form.png#zoom#shadow) @@ -94,11 +169,11 @@ and fetch the schemas and tables from Redshift. It is possible to select all tab **Redshift Dataset fields** -| Field | Description | Required | Editable |Example -|----------------------------|-------------------------------------------------------------------|----------|----------|------------- -| Redshift Connection | Name of the Redshift connection used to read the Redshift tables | Yes | No | main-cluster-userA -| Redshift database schema | Name of the Redshift schema where the tables are stored | Yes | No | public -| Redshift tables | List of tables to be imported. They can be added at a later stage | No | Yes | customer, orders +| Field | Description | Required | Editable |Example +|----------------------------|--------------------------------------------------------------------------------------------------------------------------------|----------|----------|------------- +| Redshift Connection | Name of the Redshift connection used to read the Redshift tables. Only `DATA_USER` connections can be used to import Datasets. | Yes | No | main-cluster-userA +| Redshift database schema | Name of the Redshift schema where the tables are stored | Yes | No | public +| Redshift tables | List of tables to be imported. They can be added at a later stage | No | Yes | customer, orders Once a Redshift dataset has been imported, the dataset and its imported tables can be searched by any user in the Catalog. diff --git a/documentation/userguide/docs/shares.md b/documentation/userguide/docs/shares.md index 946e7b6da..beca22850 100644 --- a/documentation/userguide/docs/shares.md +++ b/documentation/userguide/docs/shares.md @@ -49,6 +49,7 @@ However, the request cannot contain any shared items. Users must revoke all shar ## **Create a share request (requester)** +### S3/Glue share request On left pane choose **Catalog** then **Search** for the table you want to access. Click on the lock icon of the selected data asset. @@ -79,6 +80,34 @@ When you are happy with the share request form, click **Submit Request** or clic The share needs to be submitted for the request to be sent to the approvers. +### Redshift share request + +Navigate to the Catalog, on top of other filters, you can use the Redshift dataset and table filters to list only Redshift data items. +Once you have found the item you want, click on Request access to open a share request. + +![catalog_search](pictures/shares/redshift_catalog.png#zoom#shadow) + +**Pre-requisites** +To be able to open a share request to a Redshift Dataset, a data.all Redshift Connection of type `ADMIN` in +the namespace of the Redshift Dataset is required. + +Similarly, the namespace that we want to use as target MUST have a data.all `ADMIN` connection that allows data.all +to manage datashares in it. In addition, the group that we use as requester MUST have permissions to use that +connection in a share request. + +Taking the request in the picture as example. `rs_Dataset` is stored in `cluster-1` and the requester team `Scientists` wants to access the data from `cluster-2`. + +- **Source connection**: the admin team of `cluster-1` has created a connection `connection1` of type `ADMIN` for this cluster. +- **Target connection**: the admin team of `cluster-2` has created a connection `connection2` of type `ADMIN` for this cluster. The `Administrators2` team has granted permissions to `Use Connection in share request` to the `Scientists` team. + +Check out the Redshift Datasets documentation for more information about `ADMIN` connections and how admins can update Connection permissions. + +Once the pre-requisites are fulfilled, you will be able to open a share request specifying the target namespace and +the Redshift role that will get access to the data. + +![catalog_search](pictures/shares/redshift_share_request_form.png#zoom#shadow) + + ## **Check your sent/received share requests** Anyone can go to the Shares menu on the left side pane and look up the share requests that they have received and that they have sent. Click on **Learn More** diff --git a/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js b/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js index 9cbea973f..716a7669f 100644 --- a/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js +++ b/frontend/src/modules/Catalog/components/RequestRedshiftAccessModal.js @@ -170,7 +170,8 @@ export const RequestRedshiftAccessModal = (props) => { principalId: values.connection, principalRoleName: values.rsRole, principalType: 'RedshiftRole', - requestPurpose: values.comment + requestPurpose: values.comment, + permissions: ['Read'] }; if (hit.resourceKind === 'redshiftdataset') { diff --git a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js index bdc1f3338..b210e5d38 100644 --- a/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js +++ b/frontend/src/modules/Environments/components/EnvironmentRedshiftConnections.js @@ -29,10 +29,12 @@ import { } from 'design'; import { EnvironmentRedshiftConnectionAddForm } from './EnvironmentRedshiftConnectionAddForm'; +import { RedshiftConnectionsPermissionsDialog } from './RedshiftConnectionsPermissionsDialog'; import { deleteRedshiftConnection } from '../services'; import SaveIcon from '@mui/icons-material/Save'; import CancelIcon from '@mui/icons-material/Close'; import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import PermContactCalendarIcon from '@mui/icons-material/PermContactCalendar'; import { useSnackbar } from 'notistack'; export const EnvironmentRedshiftConnections = ({ environment }) => { @@ -46,6 +48,8 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [rowModesModel, setRowModesModel] = useState({}); const [isDeleteModalOpenId, setIsDeleteModalOpen] = useState(0); + const [openPermissionsDialog, setOpenPermissionsDialog] = useState(false); + const [selectedConnection, setSelectedConnection] = useState(false); const handleInputChange = (event) => { setInputValue(event.target.value); @@ -274,6 +278,27 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { flex: 1, editable: false }, + { + field: 'permissions', + headerName: 'Permissions', + flex: 0.8, + renderCell: (params) => { + return ( + + ); + } + }, { field: 'redshiftType', headerName: 'Redshift Type', @@ -376,6 +401,14 @@ export const EnvironmentRedshiftConnections = ({ environment }) => { + {openPermissionsDialog && ( + setOpenPermissionsDialog(false)} + connection={selectedConnection} + environment={environment} + /> + )} ); }; diff --git a/frontend/src/modules/Environments/components/RedshiftConnectionsPermissionsDialog.js b/frontend/src/modules/Environments/components/RedshiftConnectionsPermissionsDialog.js new file mode 100644 index 000000000..28f4b38ac --- /dev/null +++ b/frontend/src/modules/Environments/components/RedshiftConnectionsPermissionsDialog.js @@ -0,0 +1,361 @@ +import { + Button, + CardContent, + CardHeader, + CircularProgress, + Chip, + Dialog, + Divider +} from '@mui/material'; +import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useState } from 'react'; +import { + GridRowModes, + DataGrid, + GridToolbarContainer, + GridActionsCellItem, + GridRowEditStopReasons +} from '@mui/x-data-grid'; +import AddIcon from '@mui/icons-material/Add'; +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import SaveIcon from '@mui/icons-material/Save'; +import CancelIcon from '@mui/icons-material/Close'; +import { SET_ERROR, useDispatch } from 'globalErrors'; +import { useClient } from 'services'; +import { Defaults } from 'design'; + +import { + listConnectionGroupNoPermissions, + listConnectionGroupPermissions, + addConnectionGroupPermission, + deleteConnectionGroupPermission +} from '../services'; + +const grantablePermissions = [ + { + value: 'CREATE_SHARE_REQUEST_WITH_CONNECTION', + description: 'Use Connection in share request' + } +]; + +function GridToolbar(props) { + const { + loading, + editing, + setEditing, + setRows, + setRowModesModel, + groupOptions + } = props; + + const handleAddGroup = () => { + const id = Date.now(); + const groupUri = groupOptions[0]; + setRows((oldRows) => [ + ...oldRows, + { + id: id, + groupUri: groupUri, + permissions: grantablePermissions, + isNew: true + } + ]); + setRowModesModel((oldModel) => ({ + ...oldModel, + [id]: { mode: GridRowModes.Edit, fieldToFocus: 'groupUri' } + })); + setEditing(true); + }; + + return ( + + + + ); +} +export const RedshiftConnectionsPermissionsDialog = (props) => { + const { connection, environment, onClose, open, ...other } = props; + const dispatch = useDispatch(); + const client = useClient(); + const [loading, setLoading] = useState(false); + const [editing, setEditing] = useState(false); + const [rows, setRows] = useState([]); + const [rowModesModel, setRowModesModel] = useState({}); + const [groupOptions, setGroupOptions] = useState([]); + + const fetchConnectionPermissions = useCallback(async () => { + setLoading(true); + const response = await client.query( + listConnectionGroupPermissions({ + connectionUri: connection.connectionUri, + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setRows( + response.data.listConnectionGroupPermissions.nodes.map((c) => ({ + id: c.groupUri, + groupUri: c.groupUri, + permissions: c.permissions + })) + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, [client, dispatch, connection]); + + const fetchGroupsNoPermission = useCallback(async () => { + setLoading(true); + const response = await client.query( + listConnectionGroupNoPermissions({ + connectionUri: connection.connectionUri, + filter: Defaults.selectListFilter + }) + ); + if (!response.errors) { + setGroupOptions( + response.data.listConnectionGroupNoPermissions + ? response.data.listConnectionGroupNoPermissions + : [] + ); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, [client, dispatch, connection]); + + useEffect(() => { + if (client) { + fetchConnectionPermissions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + fetchGroupsNoPermission().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [ + client, + dispatch, + connection, + fetchConnectionPermissions, + fetchGroupsNoPermission + ]); + const handleRowEditStop = (params, event) => { + if (params.reason === GridRowEditStopReasons.rowFocusOut) { + event.defaultMuiPrevented = true; + } + }; + + const handleSaveClick = (id) => () => { + setRowModesModel({ + ...rowModesModel, + [id]: { mode: GridRowModes.View } + }); + setEditing(false); + }; + + const savePermission = useCallback( + async (row) => { + setLoading(true); + + const response = await client.mutate( + addConnectionGroupPermission( + connection.connectionUri, + row.groupUri, + row.permissions.map((permission) => permission.value) + ) + ); + if (!response.errors) { + setGroupOptions(groupOptions.filter((g) => g !== row.groupUri)); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, + [client, dispatch, connection, rowModesModel, groupOptions] + ); + + const deletePermission = useCallback( + async (id, row) => { + setLoading(true); + const response = await client.mutate( + deleteConnectionGroupPermission(connection.connectionUri, row.groupUri) + ); + if (!response.errors) { + setRows(rows.filter((row) => row.id !== id)); + setGroupOptions([...groupOptions, row.groupUri]); + } else { + dispatch({ type: SET_ERROR, error: response.errors[0].message }); + } + setLoading(false); + }, + [client, dispatch, connection, rows, groupOptions] + ); + const handleDeleteClick = (id, row) => () => { + setRows(rows.filter((row) => row.id !== id)); + deletePermission(id, row); + }; + + const handleCancelClick = (id) => () => { + setRowModesModel({ + ...rowModesModel, + [id]: { mode: GridRowModes.View, ignoreModifications: true } + }); + setEditing(false); + + const editedRow = rows.find((row) => row.id === id); + if (editedRow.isNew) { + setRows(rows.filter((row) => row.id !== id)); + } + }; + + const handleRowEditStart = (params, event) => { + event.defaultMuiPrevented = true; + }; + + const processRowUpdate = async (newRow) => { + await savePermission(newRow); + fetchConnectionPermissions(); + return newRow; + }; + + function renderArrayType(params) { + return params.value.map((value) => { + return ; + }); + } + + const columns = [ + { field: 'id', hide: true }, + { + field: 'groupUri', + headerName: 'Team', + flex: 3, + editable: true, + type: 'singleSelect', + valueOptions: groupOptions + }, + { + field: 'permissions', + headerName: 'Permissions', + flex: 2, + editable: false, + type: 'string', + renderCell: renderArrayType + }, + { + field: 'actions', + type: 'actions', + headerName: 'Actions', + flex: 2, + cellClassName: 'actions', + getActions: ({ id, row }) => { + const isInEditMode = rowModesModel[id]?.mode === GridRowModes.Edit; + + if (isInEditMode) { + return [ + } + label="Save" + sx={{ + color: 'primary.main' + }} + onClick={handleSaveClick(id)} + />, + } + label="Cancel" + className="textPrimary" + onClick={handleCancelClick(id)} + color="inherit" + /> + ]; + } + return [ + } + label="Delete" + onClick={handleDeleteClick(id, row)} + color="inherit" + /> + ]; + } + } + ]; + + return ( + + {loading ? ( + + ) : ( + <> + + + + + dispatch({ type: SET_ERROR, error: error.message }) + } + experimentalFeatures={{ newEditingApi: true }} + // rowCount={roles.count} + // page={roles.page - 1} + // pageSize={filterRoles.pageSize} + // paginationMode="server" + // onPageChange={handlePageChangeRoles} + loading={loading} + // onPageSizeChange={(pageSize) => { + // setFilterRoles({ ...filterRoles, pageSize: pageSize }); + // }} + getRowHeight={() => 'auto'} + disableSelectionOnClick + sx={{ wordWrap: 'break-word' }} + components={{ + Toolbar: GridToolbar + }} + componentsProps={{ + toolbar: { + loading, + editing, + setEditing, + setRows, + setRowModesModel, + groupOptions + } + }} + /> + + + )} + + ); +}; + +RedshiftConnectionsPermissionsDialog.propTypes = { + connection: PropTypes.object.isRequired, + onClose: PropTypes.func, + open: PropTypes.bool.isRequired, + environment: PropTypes.object.isRequired +}; diff --git a/frontend/src/modules/Environments/services/addConnectionGroupPermission.js b/frontend/src/modules/Environments/services/addConnectionGroupPermission.js new file mode 100644 index 000000000..8215ccf23 --- /dev/null +++ b/frontend/src/modules/Environments/services/addConnectionGroupPermission.js @@ -0,0 +1,26 @@ +import { gql } from 'apollo-boost'; + +export const addConnectionGroupPermission = ( + connectionUri, + groupUri, + permissions +) => ({ + variables: { + connectionUri, + groupUri, + permissions + }, + mutation: gql` + mutation addConnectionGroupPermission( + $connectionUri: String! + $groupUri: String! + $permissions: [String]! + ) { + addConnectionGroupPermission( + connectionUri: $connectionUri + groupUri: $groupUri + permissions: $permissions + ) + } + ` +}); diff --git a/frontend/src/modules/Environments/services/deleteConnectionGroupPermission.js b/frontend/src/modules/Environments/services/deleteConnectionGroupPermission.js new file mode 100644 index 000000000..85e62b0a3 --- /dev/null +++ b/frontend/src/modules/Environments/services/deleteConnectionGroupPermission.js @@ -0,0 +1,19 @@ +import { gql } from 'apollo-boost'; + +export const deleteConnectionGroupPermission = (connectionUri, groupUri) => ({ + variables: { + connectionUri, + groupUri + }, + mutation: gql` + mutation deleteConnectionGroupPermission( + $connectionUri: String! + $groupUri: String! + ) { + deleteConnectionGroupPermission( + connectionUri: $connectionUri + groupUri: $groupUri + ) + } + ` +}); diff --git a/frontend/src/modules/Environments/services/index.js b/frontend/src/modules/Environments/services/index.js index 4151f0d7c..c83178c4d 100644 --- a/frontend/src/modules/Environments/services/index.js +++ b/frontend/src/modules/Environments/services/index.js @@ -1,8 +1,10 @@ +export * from './addConnectionGroupPermission'; export * from './addConsumptionRoleToEnvironment'; export * from './archiveEnvironment'; export * from './createEnvironment'; export * from './createNetwork'; export * from './createRedshiftConnection'; +export * from './deleteConnectionGroupPermission'; export * from './deleteRedshiftConnection'; export * from './deleteNetwork'; export * from './disableDataSubscriptions'; @@ -17,6 +19,8 @@ export * from './getCDKExecPolicyPresignedUrl.js'; export * from './inviteGroup'; export * from './listAllEnvironmentConsumptionRoles'; export * from './listAllEnvironmentGroups'; +export * from './listConnectionGroupNoPermissions'; +export * from './listConnectionGroupPermissions'; export * from './listDatasetsCreatedInEnvironment'; export * from './listEnvironmentNetworks'; export * from './listEnvironmentPermissions'; diff --git a/frontend/src/modules/Environments/services/listConnectionGroupNoPermissions.js b/frontend/src/modules/Environments/services/listConnectionGroupNoPermissions.js new file mode 100644 index 000000000..f7b53a114 --- /dev/null +++ b/frontend/src/modules/Environments/services/listConnectionGroupNoPermissions.js @@ -0,0 +1,22 @@ +import { gql } from 'apollo-boost'; + +export const listConnectionGroupNoPermissions = ({ + filter, + connectionUri +}) => ({ + variables: { + connectionUri, + filter + }, + query: gql` + query listConnectionGroupNoPermissions( + $filter: GroupFilter + $connectionUri: String! + ) { + listConnectionGroupNoPermissions( + connectionUri: $connectionUri + filter: $filter + ) + } + ` +}); diff --git a/frontend/src/modules/Environments/services/listConnectionGroupPermissions.js b/frontend/src/modules/Environments/services/listConnectionGroupPermissions.js new file mode 100644 index 000000000..6f5e57636 --- /dev/null +++ b/frontend/src/modules/Environments/services/listConnectionGroupPermissions.js @@ -0,0 +1,32 @@ +import { gql } from 'apollo-boost'; + +export const listConnectionGroupPermissions = ({ filter, connectionUri }) => ({ + variables: { + connectionUri, + filter + }, + query: gql` + query listConnectionGroupPermissions( + $filter: GroupFilter + $connectionUri: String! + ) { + listConnectionGroupPermissions( + connectionUri: $connectionUri + filter: $filter + ) { + count + page + pages + hasNext + hasPrevious + nodes { + groupUri + permissions { + name + description + } + } + } + } + ` +}); diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index bf67515d5..fae876c01 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -6,6 +6,7 @@ from dataall.base.context import set_context, dispose_context, RequestContext from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService +from dataall.modules.redshift_datasets.services.redshift_connection_permissions import REDSHIFT_GRANTABLE_PERMISSIONS ENVNAME = os.environ.get('envname', 'pytest') @@ -110,6 +111,7 @@ def connection1_serverless(db, user, group, env_fixture, mock_redshift_serverles 'database': 'database_1', 'redshiftUser': None, 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-1', + 'connectionType': 'DATA_USER', }, ) yield connection @@ -134,6 +136,7 @@ def connection2_cluster( 'database': 'database_1', 'redshiftUser': None, 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-2', + 'connectionType': 'DATA_USER', }, ) yield connection @@ -142,6 +145,42 @@ def connection2_cluster( dispose_context() +@pytest.fixture(scope='function') +def connection3_admin( + db, user, group, env_fixture, mock_redshift, mock_redshift_data, mock_redshift_kms, api_context_1 +): + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture.environmentUri, + admin_group=group.name, + data={ + 'connectionName': 'connection3', + 'redshiftType': 'cluster', + 'clusterId': 'cluster-id', + 'nameSpaceId': None, + 'workgroup': None, + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:111111111111:secret:secret-3', + 'connectionType': 'ADMIN', + }, + ) + yield connection + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def connection3_admin_permissions(db, connection3_admin, user, group, group2, api_context_1): + RedshiftConnectionService.add_group_permissions( + uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ) + yield RedshiftConnectionService.list_connection_group_permissions(uri=connection3_admin.connectionUri, filter={}) + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + RedshiftConnectionService.delete_group_permissions(uri=connection3_admin.connectionUri, group=group2.groupUri) + dispose_context() + + @pytest.fixture(scope='function') def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connection1_serverless, api_context_1): dataset = RedshiftDatasetService.import_redshift_dataset( diff --git a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py index a3274fa05..ad12e9b85 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py @@ -1,8 +1,7 @@ -from unittest.mock import MagicMock - from assertpy import assert_that from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService +from dataall.modules.redshift_datasets.services.redshift_connection_permissions import REDSHIFT_GRANTABLE_PERMISSIONS def test_create_redshift_connection_namespace_not_found(env_fixture, api_context_1, group, mock_redshift_serverless): @@ -124,6 +123,7 @@ def test_create_redshift_serverless_connection(connection1_serverless): assert_that(connection1_serverless).is_not_none() assert_that(connection1_serverless.connectionUri).is_not_none() assert_that(connection1_serverless.redshiftType).is_equal_to('serverless') + assert_that(connection1_serverless.connectionType).is_equal_to('DATA_USER') def test_create_redshift_cluster_connection(connection2_cluster): @@ -132,6 +132,26 @@ def test_create_redshift_cluster_connection(connection2_cluster): assert_that(connection2_cluster).is_not_none() assert_that(connection2_cluster.connectionUri).is_not_none() assert_that(connection2_cluster.redshiftType).is_equal_to('cluster') + assert_that(connection2_cluster.connectionType).is_equal_to('DATA_USER') + # Then no grantable permissions are added to the DATA_USER connection + response = RedshiftConnectionService.list_connection_group_permissions( + uri=connection2_cluster.connectionUri, filter={} + ) + assert_that(response.get('count', False)).is_equal_to(0) + + +def test_create_redshift_admin_connection(connection3_admin): + # When connection is created + # Then + assert_that(connection3_admin).is_not_none() + assert_that(connection3_admin.connectionUri).is_not_none() + assert_that(connection3_admin.redshiftType).is_equal_to('cluster') + assert_that(connection3_admin.connectionType).is_equal_to('ADMIN') + # Then all grantable permissions are added to the ADMIN connection + response = RedshiftConnectionService.list_connection_group_permissions( + uri=connection3_admin.connectionUri, filter={} + ) + assert_that(response.get('count', False)).is_equal_to(1) def test_get_redshift_connection(connection1_serverless, api_context_1): @@ -238,3 +258,128 @@ def test_list_schema_tables_unauthorized(connection1_serverless, api_context_2): assert_that(RedshiftConnectionService.list_schema_tables).raises(Exception).when_called_with( uri=connection1_serverless.connectionUri ).contains('UnauthorizedOperation', 'GET_REDSHIFT_CONNECTION', connection1_serverless.connectionUri) + + +def test_add_group_permissions( + connection3_admin, connection3_admin_permissions, group2, api_context_1, mock_redshift_data +): + # Given an ADMIN connection and another group + # When + assert_that(connection3_admin_permissions.get('count', 0)).is_equal_to(2) + groups = [g.groupUri for g in connection3_admin_permissions.get('nodes', [])] + assert_that(groups).contains(connection3_admin.SamlGroupName) + assert_that(groups).contains(group2.groupUri) + + +def test_add_group_permissions_unauthorized(connection3_admin, group2, api_context_2): + # Given that an unauthorized user tries to add permissions to a connection + # When/Then + assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + + +def test_add_group_permissions_non_admin_connection(connection2_cluster, group2, api_context_1, mock_redshift_data): + # Given a DATA_USER connection and another group + # When/Then + assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( + uri=connection2_cluster.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ).contains('InvalidInput', connection2_cluster.connectionType, 'Only ADMIN connections') + + +def test_add_group_permissions_invalid_permissions(connection3_admin, group2, api_context_1): + # Given an invalid set of permissions + invalid_permissions = ['INVALID_PERMISSION'] + # When/Then + assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=invalid_permissions + ).contains('InvalidInput', invalid_permissions[0], 'grantable permissions') + + +def test_delete_group_permissions(connection3_admin, group2, api_context_1, mock_redshift_data): + # Given + RedshiftConnectionService.add_group_permissions( + uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ) + # When + response = RedshiftConnectionService.delete_group_permissions( + uri=connection3_admin.connectionUri, group=group2.groupUri + ) + # Then + assert_that(response).is_true() + # When + response = RedshiftConnectionService.list_connection_group_permissions( + uri=connection3_admin.connectionUri, filter={} + ) + assert_that(response).contains_entry(count=1) + + +def test_delete_group_permissions_unauthorized(connection3_admin, connection3_admin_permissions, group2, api_context_2): + # When/Then + assert_that(RedshiftConnectionService.delete_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, group=group2.groupUri + ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + + +def test_delete_group_permissions_owner_team(connection3_admin, api_context_1): + # When/Then + assert_that(RedshiftConnectionService.delete_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, group=connection3_admin.SamlGroupName + ).contains('InvalidInput', connection3_admin.SamlGroupName, 'EXCEPT the connection owners') + + +def test_delete_group_permissions_non_admin_connection(connection1_serverless, group2, api_context_1): + # When/Then + assert_that(RedshiftConnectionService.delete_group_permissions).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri, group=group2.groupUri + ).contains('InvalidInput', connection1_serverless.connectionType, 'Only ADMIN connections') + + +def test_list_connection_group_permissions( + connection3_admin, connection3_admin_permissions, api_context_1, mock_redshift_data +): + # When + response = RedshiftConnectionService.list_connection_group_permissions( + uri=connection3_admin.connectionUri, filter={} + ) + # Then + assert_that(response).contains_entry(count=2) + + +def test_list_connection_group_permissions_unauthorized(connection3_admin, api_context_2): + # When/Then + assert_that(RedshiftConnectionService.list_connection_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, filter={} + ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + + +def test_list_connection_group_no_permissions( + connection3_admin, env_fixture, environment_group, api_context_1, mock_redshift_data, group, group2, group3, group4 +): + # Given group1=connection3_admin.SamlGroupName + # group2 and group3 are part of the environment + # group4 is not part of the environment + env_g2 = environment_group(env_fixture, group2.groupUri) + env_g3 = environment_group(env_fixture, group3.groupUri) + + # When + response = RedshiftConnectionService.list_connection_group_no_permissions( + uri=connection3_admin.connectionUri, filter={} + ) + # Then only group2 and group3 are part of the environment but do not have permissions + assert_that(len(response)).is_equal_to(2) + assert_that(response).contains_only(group2.groupUri, group3.groupUri) + + +def test_list_connection_group_no_permissions_unauthorized(connection3_admin, api_context_2): + # When/Then + assert_that(RedshiftConnectionService.list_connection_group_no_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, filter={} + ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + + +def test_list_connection_group_no_permissions_non_admin_connection(connection1_serverless, api_context_1): + # When/Then + assert_that(RedshiftConnectionService.list_connection_group_no_permissions).raises(Exception).when_called_with( + uri=connection1_serverless.connectionUri, filter={} + ).contains('InvalidInput', connection1_serverless.connectionType, 'Only ADMIN connections') diff --git a/tests/modules/redshift_datasets_shares/conftest.py b/tests/modules/redshift_datasets_shares/conftest.py index 6c133fb1a..3b0934f84 100644 --- a/tests/modules/redshift_datasets_shares/conftest.py +++ b/tests/modules/redshift_datasets_shares/conftest.py @@ -97,6 +97,14 @@ def api_context_2(db, user2, group2): dispose_context() +@pytest.fixture(scope='function') +def api_context_3(db, user3, group3): + yield set_context( + RequestContext(db_engine=db, username=user3.username, groups=[group3.name], user_id=user3.username) + ) + dispose_context() + + @pytest.fixture(scope='module') def env_fixture_2(env, environment_group, org_fixture, user2, group2, tenant, env_params): env2 = env(org_fixture, 'dev', 'bob', 'testadmins', '2222222222', parameters=env_params) @@ -112,7 +120,7 @@ def env_fixture_same_1(env, environment_group, org_fixture, user2, group2, tenan @pytest.fixture(scope='function') -def source_connection(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data, api_context_1): +def source_connection_data_user(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data): set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, @@ -137,7 +145,7 @@ def source_connection(db, user, group, env_fixture, mock_redshift_serverless, mo @pytest.fixture(scope='function') -def source_connection_admin(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data, api_context_1): +def source_connection_admin(db, user, group, env_fixture, mock_redshift_serverless, mock_redshift_data): set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) connection = RedshiftConnectionService.create_redshift_connection( uri=env_fixture.environmentUri, @@ -162,7 +170,33 @@ def source_connection_admin(db, user, group, env_fixture, mock_redshift_serverle @pytest.fixture(scope='function') -def target_connection(db, user2, group2, env_fixture_2, mock_redshift_serverless, mock_redshift_data): +def target_connection_data_user(db, user2, group2, env_fixture_2, mock_redshift_serverless, mock_redshift_data): + """Cross-account connection""" + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + connection = RedshiftConnectionService.create_redshift_connection( + uri=env_fixture_2.environmentUri, + admin_group=group2.name, + data={ + 'connectionName': 'connection2', + 'redshiftType': 'serverless', + 'clusterId': None, + 'nameSpaceId': 'YYYYYYYYYYYYYY', + 'workgroup': 'workgroup_name_1', + 'database': 'database_1', + 'redshiftUser': None, + 'secretArn': 'arn:aws:secretsmanager:*:222222222222:secret:secret-2', + 'connectionType': 'DATA_USER', + }, + ) + dispose_context() + yield connection + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) + RedshiftConnectionService.delete_redshift_connection(uri=connection.connectionUri) + dispose_context() + + +@pytest.fixture(scope='function') +def target_connection_admin(db, user2, group2, env_fixture_2, mock_redshift_serverless, mock_redshift_data): """Cross-account connection""" set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) connection = RedshiftConnectionService.create_redshift_connection( @@ -214,7 +248,7 @@ def target_connection_same_account(db, user2, group2, env_fixture_same_1, mock_r @pytest.fixture(scope='function') -def dataset_1(db, user, group, env_fixture, source_connection): +def dataset_1(db, user, group, env_fixture, source_connection_data_user): set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) dataset = RedshiftDatasetService.import_redshift_dataset( uri=env_fixture.environmentUri, @@ -222,7 +256,7 @@ def dataset_1(db, user, group, env_fixture, source_connection): data={ 'label': 'dataset_1', 'SamlAdminGroupName': group.name, - 'connectionUri': source_connection.connectionUri, + 'connectionUri': source_connection_data_user.connectionUri, 'schema': 'public', 'tables': [], }, @@ -246,7 +280,14 @@ def table1(db, user, group, dataset_1): @pytest.fixture(scope='function') def redshift_share_request_cross_account( - db, user2, group2, env_fixture_2, target_connection, dataset_1, mock_redshift_data_shares, source_connection_admin + db, + user2, + group2, + env_fixture_2, + target_connection_admin, + dataset_1, + mock_redshift_data_shares, + source_connection_admin, ): set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) share = ShareObjectService.create_share_object( @@ -255,7 +296,7 @@ def redshift_share_request_cross_account( item_type=None, item_uri=None, group_uri=group2.name, - principal_id=target_connection.connectionUri, + principal_id=target_connection_admin.connectionUri, principal_role_name='rs_role_1', principal_type='Redshift_Role', requestPurpose=None, diff --git a/tests/modules/redshift_datasets_shares/test_redshift_share.py b/tests/modules/redshift_datasets_shares/test_redshift_share.py index a1ee64e67..0a005f562 100644 --- a/tests/modules/redshift_datasets_shares/test_redshift_share.py +++ b/tests/modules/redshift_datasets_shares/test_redshift_share.py @@ -1,11 +1,10 @@ -import pytest from assertpy import assert_that -def test_create_redshift_share(redshift_share_request_cross_account, target_connection, dataset_1): +def test_create_redshift_share(redshift_share_request_cross_account, target_connection_admin, dataset_1): # Given redshift_share_request_1 # When - assert redshift_share_request_cross_account - assert redshift_share_request_cross_account.principalId == target_connection.connectionUri - assert redshift_share_request_cross_account.principalRoleName == 'rs_role_1' - assert redshift_share_request_cross_account.principalType == 'Redshift_Role' + assert_that(redshift_share_request_cross_account).is_not_none() + assert_that(redshift_share_request_cross_account.principalId).is_equal_to(target_connection_admin.connectionUri) + assert_that(redshift_share_request_cross_account.principalRoleName).is_equal_to('rs_role_1') + assert_that(redshift_share_request_cross_account.principalType).is_equal_to('Redshift_Role') diff --git a/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py b/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py index 6f7ff15f8..d49009ec8 100644 --- a/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py +++ b/tests/modules/redshift_datasets_shares/test_redshift_table_processor.py @@ -7,7 +7,7 @@ def test_approve_redshift_cross_account_share_all_mocked( dataset_1, table1, - target_connection, + target_connection_admin, approved_share_data_cross_account, redshift_processor_cross_account, mock_redshift_data_shares, @@ -34,7 +34,7 @@ def test_approve_redshift_cross_account_share_all_mocked( ) mock_redshift_shares.return_value.associate_datashare.assert_called_with( datashare_arn=redshift_processor_cross_account.datashare_arn, - consumer_arn=f'arn:aws:redshift-serverless:{approved_share_data_cross_account.target_environment.region}:{approved_share_data_cross_account.target_environment.AwsAccountId}:namespace/{target_connection.nameSpaceId}', + consumer_arn=f'arn:aws:redshift-serverless:{approved_share_data_cross_account.target_environment.region}:{approved_share_data_cross_account.target_environment.AwsAccountId}:namespace/{target_connection_admin.nameSpaceId}', ) mock_redshift_data_shares.return_value.drop_database.assert_called_with( database=redshift_processor_cross_account._build_local_db_name() @@ -220,7 +220,7 @@ def test_revoke_redshift_cross_account_share_all_mocked( def test_verify_redshift_cross_account_share_all_successful( dataset_1, table1, - target_connection, + target_connection_admin, redshift_processor_cross_account, mock_redshift_data_shares, mock_redshift_shares, @@ -243,7 +243,7 @@ def test_verify_redshift_cross_account_share_all_successful( ), call( datashare_arn=redshift_processor_cross_account.datashare_arn, - consumer_id=f'arn:aws:redshift-serverless:{redshift_processor_cross_account.share_data.target_environment.region}:{redshift_processor_cross_account.share_data.target_environment.AwsAccountId}:namespace/{target_connection.nameSpaceId}', + consumer_id=f'arn:aws:redshift-serverless:{redshift_processor_cross_account.share_data.target_environment.region}:{redshift_processor_cross_account.share_data.target_environment.AwsAccountId}:namespace/{target_connection_admin.nameSpaceId}', ), ] ) diff --git a/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py b/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py index 63e45c379..26319f184 100644 --- a/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py +++ b/tests/modules/redshift_datasets_shares/test_redshift_table_validator.py @@ -1,32 +1,68 @@ from assertpy import assert_that +from dataall.base.context import set_context, dispose_context, RequestContext from dataall.modules.redshift_datasets_shares.services.redshift_table_share_validator import RedshiftTableValidator def test_redshift_validator_create( - db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares, source_connection_admin + db, + user2, + dataset_1, + group2, + env_fixture_2, + target_connection_admin, + mock_redshift_data_shares, + source_connection_admin, ): # Given validator = RedshiftTableValidator() # When with db.scoped_session() as session: + set_context(RequestContext(db_engine=db, username=user2.username, groups=[group2.name], user_id=user2.username)) response = validator.validate_share_object_create( session=session, dataset=dataset_1, environment=env_fixture_2, group_uri=group2.name, - principal_id=target_connection.connectionUri, + principal_id=target_connection_admin.connectionUri, principal_role_name='rs_role_1', principal_type='Redshift_Role', attachMissingPolicies=False, permissions=[], ) + dispose_context() # Then assert_that(response).is_true() mock_redshift_data_shares.return_value.check_redshift_role_in_namespace.assert_called_with(role='rs_role_1') -def test_redshift_validator_create_same_clusters(db, dataset_1, group, env_fixture, source_connection): +def test_redshift_validator_not_admin_target_connection( + db, dataset_1, group2, env_fixture_2, target_connection_data_user, mock_redshift_data_shares, api_context_2 +): # Given + # A target connection of type DATA_USER + validator = RedshiftTableValidator() + # When + with db.scoped_session() as session: + # Then because it is a DATA_USER connection no user has permissions to CREATE_SHARE_REQUEST (even the admins) + assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( + session=session, + dataset=dataset_1, + environment=env_fixture_2, + group_uri=group2.name, + principal_id=target_connection_data_user.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ).contains( + 'UnauthorizedOperation', 'CREATE_SHARE_REQUEST_WITH_CONNECTION', target_connection_data_user.connectionUri + ) + + +def test_redshift_validator_no_permissions_to_admin_connection( + db, dataset_1, group3, env_fixture_2, target_connection_admin, mock_redshift_data_shares, api_context_3 +): + # Given user in another team without permissions to create request for this target connection validator = RedshiftTableValidator() # When with db.scoped_session() as session: @@ -34,23 +70,25 @@ def test_redshift_validator_create_same_clusters(db, dataset_1, group, env_fixtu assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( session=session, dataset=dataset_1, - environment=env_fixture, - group_uri=group.name, - principal_id=source_connection.connectionUri, + environment=env_fixture_2, + group_uri=group3.name, + principal_id=target_connection_admin.connectionUri, principal_role_name='rs_role_1', principal_type='Redshift_Role', attachMissingPolicies=False, permissions=[], - ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'only possible between different namespaces') + ).contains( + 'UnauthorizedOperation', 'CREATE_SHARE_REQUEST_WITH_CONNECTION', target_connection_admin.connectionUri + ) -def test_redshift_validator_role_does_not_exist( - db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares +def test_redshift_validator_not_admin_source_connection( + db, dataset_1, group2, env_fixture_2, target_connection_admin, mock_redshift_data_shares, api_context_2 ): # Given validator = RedshiftTableValidator() + # Since fixture source_connection_admin is not used, an ADMIN connection does not exist for dataset_1 # When - mock_redshift_data_shares.return_value.check_redshift_role_in_namespace.return_value = False with db.scoped_session() as session: # Then assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( @@ -58,21 +96,50 @@ def test_redshift_validator_role_does_not_exist( dataset=dataset_1, environment=env_fixture_2, group_uri=group2.name, - principal_id=target_connection.connectionUri, + principal_id=target_connection_admin.connectionUri, principal_role_name='rs_role_1', principal_type='Redshift_Role', attachMissingPolicies=False, permissions=[], - ).contains('PrincipalRoleNotFound', 'CREATE_SHARE_OBJECT', 'Redshift role rs_role_1 does not exist') + ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'datashares require an ADMIN connection') -def test_redshift_validator_not_admin_connection( - db, dataset_1, group2, env_fixture_2, target_connection, mock_redshift_data_shares +def test_redshift_validator_create_same_clusters( + db, dataset_1, group, env_fixture, source_connection_admin, api_context_1 ): # Given + # that the target is the source_connection_admin = same namespace as source_connection_data_user validator = RedshiftTableValidator() - # Since fixture source_connection_admin is not used, an ADMIN connection does not exist for dataset_1 # When + with db.scoped_session() as session: + # Then + assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( + session=session, + dataset=dataset_1, + environment=env_fixture, + group_uri=group.name, + principal_id=source_connection_admin.connectionUri, + principal_role_name='rs_role_1', + principal_type='Redshift_Role', + attachMissingPolicies=False, + permissions=[], + ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'only possible between different namespaces') + + +def test_redshift_validator_role_does_not_exist( + db, + dataset_1, + source_connection_admin, + group2, + env_fixture_2, + target_connection_admin, + mock_redshift_data_shares, + api_context_2, +): + # Given + validator = RedshiftTableValidator() + # When + mock_redshift_data_shares.return_value.check_redshift_role_in_namespace.return_value = False with db.scoped_session() as session: # Then assert_that(validator.validate_share_object_create).raises(Exception).when_called_with( @@ -80,9 +147,9 @@ def test_redshift_validator_not_admin_connection( dataset=dataset_1, environment=env_fixture_2, group_uri=group2.name, - principal_id=target_connection.connectionUri, + principal_id=target_connection_admin.connectionUri, principal_role_name='rs_role_1', principal_type='Redshift_Role', attachMissingPolicies=False, permissions=[], - ).contains('InvalidConfiguration', 'CREATE_SHARE_OBJECT', 'datashares require an ADMIN connection') + ).contains('PrincipalRoleNotFound', 'CREATE_SHARE_OBJECT', 'Redshift role rs_role_1 does not exist') From b177279bd1ebb635fb80e24e746465dbe9f94e91 Mon Sep 17 00:00:00 2001 From: Petros Kalos Date: Wed, 2 Oct 2024 11:55:26 +0300 Subject: [PATCH 105/188] warn users when evaluating a non-readonly share request (#1568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Feature ### Detail If and only if the request permissions include Write/Modify * when then approver clicks on `Approve` they get a confirmation pop-up ![image](https://github.com/user-attachments/assets/11f9d27f-e518-481e-9a13-87dafd18b9d2) * In the shareview page a warning triangle ⚠️ is added next to the `Permissions` row ![image](https://github.com/user-attachments/assets/9b07e0d3-e92f-498d-9415-533d3e2db1be) ### Relates Solves #1566 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../src/modules/Shares/views/ShareView.js | 63 +++++++++++++++++-- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/frontend/src/modules/Shares/views/ShareView.js b/frontend/src/modules/Shares/views/ShareView.js index 00cb8121d..ee947a7d8 100644 --- a/frontend/src/modules/Shares/views/ShareView.js +++ b/frontend/src/modules/Shares/views/ShareView.js @@ -3,6 +3,7 @@ import { BlockOutlined, CheckCircleOutlined, DeleteOutlined, + Warning, RefreshRounded } from '@mui/icons-material'; import OpenInNewIcon from '@mui/icons-material/OpenInNew'; @@ -18,6 +19,9 @@ import { Chip, Container, Divider, + Dialog, + DialogTitle, + DialogActions, Grid, Link, List, @@ -28,6 +32,7 @@ import { TableHead, TableRow, Tooltip, + Stack, Typography } from '@mui/material'; import CircularProgress from '@mui/material/CircularProgress'; @@ -83,6 +88,8 @@ import { useTheme } from '@mui/styles'; import { UpdateExtensionReason } from '../components/ShareUpdateExtension'; import CancelIcon from '@mui/icons-material/Close'; +const isReadOnlyShare = (share) => share.permissions.every((p) => p === 'Read'); + function ShareViewHeader(props) { const { share, @@ -96,6 +103,7 @@ function ShareViewHeader(props) { loading } = props; const [accepting, setAccepting] = useState(false); + const [acceptingWarning, setAcceptingWarning] = useState(false); const [rejecting, setRejecting] = useState(false); const [submitting, setSubmitting] = useState(false); const [cancellingExtension, setCancellingExtension] = useState(false); @@ -361,7 +369,11 @@ function ShareViewHeader(props) { color="success" startIcon={} sx={{ m: 1 }} - onClick={handleApproveShare} + onClick={async () => + isReadOnlyShare(share) + ? handleApproveShare() + : setAcceptingWarning(true) + } ref={anchorRef} type="button" variant="outlined" @@ -379,6 +391,31 @@ function ShareViewHeader(props) { > Reject
      + setAcceptingWarning(false)} + > + + Write or Modify permissions requested, do you want to + proceed with the Approval? + + + + + + )} {share.status === 'Submitted_For_Extension' && ( @@ -1362,12 +1399,26 @@ const ShareView = () => { padding: 2 }} > - - Permissions - + + Permissions + + {!isReadOnlyShare(share) && ( + + + + )} + {share.permissions.map((perm) => ( From 87a6e7b10eb8d37ab7dfdd9b39d1f8732e97935a Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 2 Oct 2024 13:30:41 +0100 Subject: [PATCH 106/188] CICD Integration tests: s3 dataset shares, persistent shares (#1580) ### Feature or Bugfix - Feature ### Detail - test for persistent shares - common test functions are places in separate file - updated envs/dataset fixtures ### Relates - #1376 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: dlpzx Co-authored-by: Noah Paige Co-authored-by: Sofia Sazonova --- .../db/environment_repositories.py | 13 ++ .../services/environment_service.py | 6 + backend/dataall/core/stacks/api/types.py | 1 + .../integration_tests/aws_clients/iam.py | 30 +-- .../integration_tests/aws_clients/utils.py | 18 ++ .../core/environment/global_conftest.py | 30 +++ .../core/environment/queries.py | 28 +++ .../core/environment/test_environment.py | 28 ++- .../core/environment/utils.py | 12 ++ .../integration_tests/core/stack/queries.py | 1 + .../modules/s3_datasets/aws_clients.py | 2 +- .../modules/s3_datasets/global_conftest.py | 32 ++- .../modules/share_base/conftest.py | 159 ++++++++++++-- .../modules/share_base/queries.py | 15 ++ .../share_base/shared_test_functions.py | 203 ++++++++++++++++++ .../share_base/test_new_crossacc_s3_share.py | 141 +++--------- .../test_persistent_crossacc_share.py | 99 +++++++++ .../modules/share_base/utils.py | 21 -- 18 files changed, 651 insertions(+), 188 deletions(-) create mode 100644 tests_new/integration_tests/aws_clients/utils.py create mode 100644 tests_new/integration_tests/modules/share_base/shared_test_functions.py create mode 100644 tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py diff --git a/backend/dataall/core/environment/db/environment_repositories.py b/backend/dataall/core/environment/db/environment_repositories.py index 7aca43b40..d5836203f 100644 --- a/backend/dataall/core/environment/db/environment_repositories.py +++ b/backend/dataall/core/environment/db/environment_repositories.py @@ -310,3 +310,16 @@ def query_all_active_environments(session) -> List[Environment]: @staticmethod def query_environment_groups(session, uri): return session.query(EnvironmentGroup).filter(EnvironmentGroup.environmentUri == uri).all() + + @staticmethod + def get_environment_consumption_role_by_name(session, uri, IAMRoleName): + return ( + session.query(ConsumptionRole) + .filter( + and_( + ConsumptionRole.environmentUri == uri, + ConsumptionRole.IAMRoleName == IAMRoleName, + ) + ) + .first() + ) diff --git a/backend/dataall/core/environment/services/environment_service.py b/backend/dataall/core/environment/services/environment_service.py index f49302ae4..d61d65d29 100644 --- a/backend/dataall/core/environment/services/environment_service.py +++ b/backend/dataall/core/environment/services/environment_service.py @@ -1147,3 +1147,9 @@ def resolve_consumption_role_policies(uri, IAMRoleName): region=environment.region, resource_prefix=environment.resourcePrefix, ).get_all_policies() + + @staticmethod + @ResourcePolicyService.has_resource_permission(environment_permissions.GET_ENVIRONMENT) + def get_consumption_role_by_name(uri, IAMRoleName): + with get_context().db_engine.scoped_session() as session: + return EnvironmentRepository.get_environment_consumption_role_by_name(session, uri, IAMRoleName) diff --git a/backend/dataall/core/stacks/api/types.py b/backend/dataall/core/stacks/api/types.py index 4cd624de4..979de769e 100644 --- a/backend/dataall/core/stacks/api/types.py +++ b/backend/dataall/core/stacks/api/types.py @@ -21,6 +21,7 @@ gql.Field(name='region', type=gql.NonNullableType(gql.String)), gql.Field(name='status', type=gql.String), gql.Field(name='stackid', type=gql.String), + gql.Field(name='updated', type=gql.AWSDateTime), gql.Field(name='link', type=gql.String, resolver=resolve_link), gql.Field(name='outputs', type=gql.String, resolver=resolve_outputs), gql.Field(name='resources', type=gql.String, resolver=resolve_resources), diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py index eb0e1b885..73050c748 100644 --- a/tests_new/integration_tests/aws_clients/iam.py +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -16,19 +16,11 @@ def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', self._region = region def get_role(self, role_name): - try: - role = self._client.get_role(RoleName=role_name) - return role - except Exception as e: - log.info(f'Error occurred: {e}') - return None + role = self._client.get_role(RoleName=role_name) + return role def delete_role(self, role_name): - try: - self._client.delete_role(RoleName=role_name) - except Exception as e: - log.error(e) - raise e + self._client.delete_role(RoleName=role_name) def create_role(self, account_id, role_name, test_role_name): policy_doc = { @@ -47,16 +39,12 @@ def create_role(self, account_id, role_name, test_role_name): } ], } - try: - role = self._client.create_role( - RoleName=role_name, - AssumeRolePolicyDocument=json.dumps(policy_doc), - Description='Role for Lambda function', - ) - return role - except Exception as e: - log.error(e) - raise e + role = self._client.create_role( + RoleName=role_name, + AssumeRolePolicyDocument=json.dumps(policy_doc), + Description='Role for Lambda function', + ) + return role def get_consumption_role(self, account_id, role_name, test_role_name): role = self.get_role(role_name) diff --git a/tests_new/integration_tests/aws_clients/utils.py b/tests_new/integration_tests/aws_clients/utils.py new file mode 100644 index 000000000..3a6d0dffd --- /dev/null +++ b/tests_new/integration_tests/aws_clients/utils.py @@ -0,0 +1,18 @@ +import json +import boto3 + +from tests_new.integration_tests.aws_clients.sts import StsClient + + +def get_group_session(credentials_str): + credentials = json.loads(credentials_str) + return boto3.Session( + aws_access_key_id=credentials['AccessKey'], + aws_secret_access_key=credentials['SessionKey'], + aws_session_token=credentials['sessionToken'], + ) + + +def get_role_session(session, role_arn, region): + sts_client = StsClient(session=session, region=region) + return sts_client.get_role_session(role_arn) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index fcc1db311..79bb9c1b6 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -1,4 +1,6 @@ import logging +from datetime import datetime + import pytest import boto3 @@ -12,6 +14,7 @@ ) from integration_tests.core.organizations.queries import create_organization from integration_tests.core.stack.utils import check_stack_ready +from tests_new.integration_tests.core.environment.utils import update_env_stack log = logging.getLogger(__name__) @@ -178,3 +181,30 @@ def get_or_create_persistent_env(env_name, client, group, testdata): @pytest.fixture(scope='session') def persistent_env1(client1, group1, testdata): return get_or_create_persistent_env('persistent_env1', client1, group1, testdata) + + +@pytest.fixture(scope='session') +def updated_persistent_env1(client1, group1, persistent_env1): + update_env_stack(client1, persistent_env1) + return get_environment(client1, persistent_env1.environmentUri) + + +@pytest.fixture(scope='session') +def persistent_cross_acc_env_1(client5, group5, testdata): + return get_or_create_persistent_env('persistent_cross_acc_env_1', client5, group5, testdata) + + +@pytest.fixture(scope='session') +def updated_persistent_cross_acc_env_1(client5, group5, persistent_cross_acc_env_1): + update_env_stack(client5, persistent_cross_acc_env_1) + return get_environment(client5, persistent_cross_acc_env_1.environmentUri) + + +@pytest.fixture(scope='session') +def persistent_cross_acc_env_1_integration_role_arn(persistent_cross_acc_env_1): + return f'arn:aws:iam::{persistent_cross_acc_env_1.AwsAccountId}:role/dataall-integration-tests-role-{persistent_cross_acc_env_1.region}' + + +@pytest.fixture(scope='session') +def persistent_cross_acc_env_1_aws_client(persistent_cross_acc_env_1, persistent_cross_acc_env_1_integration_role_arn): + return get_environment_aws_session(persistent_cross_acc_env_1_integration_role_arn, persistent_cross_acc_env_1) diff --git a/tests_new/integration_tests/core/environment/queries.py b/tests_new/integration_tests/core/environment/queries.py index acdf2ca79..7a1e3eba2 100644 --- a/tests_new/integration_tests/core/environment/queries.py +++ b/tests_new/integration_tests/core/environment/queries.py @@ -33,6 +33,7 @@ accountid region stackid + updated link outputs resources @@ -244,6 +245,33 @@ def add_consumption_role(client, env_uri, group_uri, consumption_role_name, iam_ return response.data.addConsumptionRoleToEnvironment +def list_environment_consumption_roles(client, env_uri, filter): + query = { + 'operationName': 'listEnvironmentConsumptionRoles', + 'variables': {'environmentUri': env_uri, 'filter': filter}, + 'query': """ + query listEnvironmentConsumptionRoles($environmentUri: String!, $filter: ConsumptionRoleFilter) { + listEnvironmentConsumptionRoles(environmentUri: $environmentUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + consumptionRoleUri + consumptionRoleName + environmentUri + groupUri + IAMRoleArn + } + } + } + """, + } + response = client.query(query=query) + return response.data.listEnvironmentConsumptionRoles + + def remove_consumption_role(client, env_uri, consumption_role_uri): query = { 'operationName': 'removeConsumptionRoleFromEnvironment', diff --git a/tests_new/integration_tests/core/environment/test_environment.py b/tests_new/integration_tests/core/environment/test_environment.py index 256fd3327..a3bf50497 100644 --- a/tests_new/integration_tests/core/environment/test_environment.py +++ b/tests_new/integration_tests/core/environment/test_environment.py @@ -12,10 +12,13 @@ remove_consumption_role, remove_group_from_env, ) -from integration_tests.core.stack.queries import update_stack -from integration_tests.core.stack.utils import check_stack_in_progress, check_stack_ready + from integration_tests.errors import GqlError +from integration_tests.core.environment.utils import update_env_stack +from integration_tests.core.stack.queries import get_stack + + log = logging.getLogger(__name__) @@ -51,15 +54,18 @@ def test_list_envs_invited(client2, session_env1, session_env2, session_id): def test_persistent_env_update(client1, persistent_env1): - # wait for stack to get to a final state before triggering an update - stack_uri = persistent_env1.stack.stackUri - env_uri = persistent_env1.environmentUri - check_stack_ready(client1, env_uri, stack_uri) - update_stack(client1, env_uri, 'environment') - # wait for stack to move to "in_progress" state - check_stack_in_progress(client1, env_uri, stack_uri) - stack = check_stack_ready(client1, env_uri, stack_uri) - assert_that(stack.status).is_equal_to('UPDATE_COMPLETE') + stack = get_stack( + client1, + persistent_env1.environmentUri, + persistent_env1.stack.stackUri, + persistent_env1.environmentUri, + target_type='environment', + ) + updated_before = datetime.fromisoformat(stack.updated) + stack = update_env_stack(client1, persistent_env1) + assert_that(stack).contains_entry(status='UPDATE_COMPLETE') + updated = datetime.fromisoformat(stack.updated) + assert_that(updated).is_greater_than_or_equal_to(updated_before) def test_invite_group_on_env_no_org(client1, session_env2, group4): diff --git a/tests_new/integration_tests/core/environment/utils.py b/tests_new/integration_tests/core/environment/utils.py index 99e55c959..e84ddf0ce 100644 --- a/tests_new/integration_tests/core/environment/utils.py +++ b/tests_new/integration_tests/core/environment/utils.py @@ -1,5 +1,6 @@ from integration_tests.core.environment.queries import update_environment from integration_tests.core.stack.utils import check_stack_ready, check_stack_in_progress +from integration_tests.core.stack.queries import update_stack def set_env_params(client, env, **new_params): @@ -34,3 +35,14 @@ def set_env_params(client, env, **new_params): ) check_stack_in_progress(client, env_uri, stack_uri) check_stack_ready(client, env_uri, stack_uri) + + +def update_env_stack(client, env): + stack_uri = env.stack.stackUri + env_uri = env.environmentUri + # wait for stack to get to a final state before triggering an update + check_stack_ready(client, env_uri, stack_uri) + update_stack(client, env_uri, 'environment') + # wait for stack to move to "in_progress" state + check_stack_in_progress(client, env_uri, stack_uri) + return check_stack_ready(client, env_uri, stack_uri) diff --git a/tests_new/integration_tests/core/stack/queries.py b/tests_new/integration_tests/core/stack/queries.py index ef4910a11..9757bf693 100644 --- a/tests_new/integration_tests/core/stack/queries.py +++ b/tests_new/integration_tests/core/stack/queries.py @@ -44,6 +44,7 @@ def get_stack(client, env_uri, stack_uri, target_uri, target_type): accountid region stackid + updated link outputs resources diff --git a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py index a7b883d32..020d74d2d 100644 --- a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py +++ b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py @@ -104,7 +104,7 @@ def list_bucket_objects(self, bucket_name): return self._client.list_objects(Bucket=bucket_name) except ClientError as e: logging.error(f'Error listing objects in S3: {e}') - raise + raise e def list_accesspoint_folder_objects(self, access_point, folder_name): try: diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index 8de97095d..4153ad9b3 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -1,4 +1,6 @@ import logging +import time + import pytest import boto3 import json @@ -19,6 +21,7 @@ from tests_new.integration_tests.modules.datasets_base.queries import list_datasets from integration_tests.modules.s3_datasets.aws_clients import S3Client, KMSClient, GlueClient, LakeFormationClient +from integration_tests.core.stack.queries import update_stack log = logging.getLogger(__name__) @@ -398,7 +401,15 @@ def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): def get_or_create_persistent_s3_dataset( - dataset_name, client, group, env, autoApprovalEnabled=False, bucket=None, kms_alias='', glue_database='' + dataset_name, + client, + group, + env, + autoApprovalEnabled=False, + bucket=None, + kms_alias='', + glue_database='', + withContent=False, ): dataset_name = dataset_name or 'persistent_s3_dataset1' s3_datasets = list_datasets(client, term=dataset_name).nodes @@ -431,6 +442,9 @@ def get_or_create_persistent_s3_dataset( tags=[dataset_name], autoApprovalEnabled=autoApprovalEnabled, ) + if withContent: + create_tables(client, s3_dataset) + create_folders(client, s3_dataset) if s3_dataset.stack.status in ['CREATE_COMPLETE', 'UPDATE_COMPLETE']: return s3_dataset @@ -441,7 +455,21 @@ def get_or_create_persistent_s3_dataset( @pytest.fixture(scope='session') def persistent_s3_dataset1(client1, group1, persistent_env1, testdata): - return get_or_create_persistent_s3_dataset('persistent_s3_dataset1', client1, group1, persistent_env1) + return get_or_create_persistent_s3_dataset( + 'persistent_s3_dataset1', client1, group1, persistent_env1, withContent=True + ) + + +@pytest.fixture(scope='session') +def updated_persistent_s3_dataset1(client1, persistent_s3_dataset1): + target_type = 'dataset' + stack_uri = persistent_s3_dataset1.stack.stackUri + env_uri = persistent_s3_dataset1.environment.environmentUri + dataset_uri = persistent_s3_dataset1.datasetUri + update_stack(client1, dataset_uri, target_type) + time.sleep(120) + check_stack_ready(client1, env_uri=env_uri, stack_uri=stack_uri, target_uri=dataset_uri, target_type=target_type) + return get_dataset(client1, dataset_uri) @pytest.fixture(scope='session') diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/share_base/conftest.py index a44ebe722..af0935f51 100644 --- a/tests_new/integration_tests/modules/share_base/conftest.py +++ b/tests_new/integration_tests/modules/share_base/conftest.py @@ -1,16 +1,24 @@ import pytest from tests_new.integration_tests.aws_clients.iam import IAMClient -from tests_new.integration_tests.core.environment.queries import add_consumption_role, remove_consumption_role +from tests_new.integration_tests.core.environment.queries import ( + add_consumption_role, + remove_consumption_role, + list_environment_consumption_roles, +) from tests_new.integration_tests.modules.share_base.queries import ( create_share_object, delete_share_object, get_share_object, revoke_share_items, + submit_share_object, + approve_share_object, + add_share_item, ) from tests_new.integration_tests.modules.share_base.utils import check_share_ready -test_cons_role_name = 'dataall-test-ShareTestConsumptionRole' +test_session_cons_role_name = 'dataall-test-ShareTestConsumptionRole' +test_persistent_cons_role_name = 'dataall-test-PersistentConsumptionRole' def revoke_all_possible(client, shareUri): @@ -34,24 +42,39 @@ def clean_up_share(client, shareUri): delete_share_object(client, shareUri) -@pytest.fixture(scope='session') -def consumption_role_1(client5, group5, session_cross_acc_env_1, session_cross_acc_env_1_aws_client): - iam_client = IAMClient(session=session_cross_acc_env_1_aws_client, region=session_cross_acc_env_1['region']) +def create_consumption_role(client, group, environment, environment_client, iam_role_name, cons_role_name): + iam_client = IAMClient(session=environment_client, region=environment['region']) role = iam_client.get_consumption_role( - session_cross_acc_env_1.AwsAccountId, - test_cons_role_name, - f'dataall-integration-tests-role-{session_cross_acc_env_1.region}', + environment.AwsAccountId, + iam_role_name, + f'dataall-integration-tests-role-{environment.region}', + ) + return add_consumption_role( + client, + environment.environmentUri, + group, + cons_role_name, + role['Role']['Arn'], ) - consumption_role = add_consumption_role( + + +# --------------SESSION PARAM FIXTURES---------------------------- + + +@pytest.fixture(scope='session') +def session_consumption_role_1(client5, group5, session_cross_acc_env_1, session_cross_acc_env_1_aws_client): + consumption_role = create_consumption_role( client5, - session_cross_acc_env_1.environmentUri, group5, - 'ShareTestConsumptionRole', - role['Role']['Arn'], + session_cross_acc_env_1, + session_cross_acc_env_1_aws_client, + test_session_cons_role_name, + 'SessionConsRole1', ) yield consumption_role remove_consumption_role(client5, session_cross_acc_env_1.environmentUri, consumption_role.consumptionRoleUri) - iam_client.delete_consumption_role(role['Role']['RoleName']) + iam_client = IAMClient(session=session_cross_acc_env_1_aws_client, region=session_cross_acc_env_1['region']) + iam_client.delete_consumption_role(consumption_role['Role']['RoleName']) @pytest.fixture(scope='session') @@ -116,14 +139,14 @@ def session_share_consrole_1( session_s3_dataset1_tables, session_s3_dataset1_folders, group5, - consumption_role_1, + session_consumption_role_1, ): share1cr = create_share_object( client=client5, dataset_or_item_params={'datasetUri': session_s3_dataset1.datasetUri}, environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, - principalId=consumption_role_1.consumptionRoleUri, + principalId=session_consumption_role_1.consumptionRoleUri, principalType='ConsumptionRole', requestPurpose='test create share object', attachMissingPolicies=True, @@ -143,14 +166,14 @@ def session_share_consrole_2( session_imported_sse_s3_dataset1_tables, session_imported_sse_s3_dataset1_folders, group5, - consumption_role_1, + session_consumption_role_1, ): share2cr = create_share_object( client=client5, dataset_or_item_params={'datasetUri': session_imported_sse_s3_dataset1.datasetUri}, environmentUri=session_cross_acc_env_1.environmentUri, groupUri=group5, - principalId=consumption_role_1.consumptionRoleUri, + principalId=session_consumption_role_1.consumptionRoleUri, principalType='ConsumptionRole', requestPurpose='test create share object', attachMissingPolicies=True, @@ -163,11 +186,11 @@ def session_share_consrole_2( @pytest.fixture(params=['Group', 'ConsumptionRole']) -def principal1(request, group5, consumption_role_1): +def principal1(request, group5, session_consumption_role_1): if request.param == 'Group': yield group5, request.param else: - yield consumption_role_1.consumptionRoleUri, request.param + yield session_consumption_role_1.consumptionRoleUri, request.param @pytest.fixture(params=['Group', 'ConsumptionRole']) @@ -199,3 +222,101 @@ def share_params_all( yield session_share_1, session_s3_dataset1 else: yield session_share_consrole_1, session_s3_dataset1 + + +# --------------PERSISTENT FIXTURES---------------------------- + + +@pytest.fixture(scope='session') +def persistent_consumption_role_1(client5, group5, persistent_cross_acc_env_1, persistent_cross_acc_env_1_aws_client): + consumption_roles_result = list_environment_consumption_roles( + client5, + persistent_cross_acc_env_1.environmentUri, + {'term': 'PersistentConsRole1'}, + ) + + if consumption_roles_result.count == 0: + consumption_role = create_consumption_role( + client5, + group5, + persistent_cross_acc_env_1, + persistent_cross_acc_env_1_aws_client, + test_persistent_cons_role_name, + 'PersistentConsRole1', + ) + yield consumption_role + else: + yield consumption_roles_result.nodes[0] + + +@pytest.fixture(scope='session') +def persistent_group_share_1( + client5, + client1, + updated_persistent_env1, + updated_persistent_cross_acc_env_1, + updated_persistent_s3_dataset1, + group5, +): + share1 = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': updated_persistent_s3_dataset1.datasetUri}, + environmentUri=updated_persistent_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=group5, + principalType='Group', + requestPurpose='create persistent share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share1 = get_share_object(client5, share1.shareUri) + + if share1.status == 'Draft': + items = share1['items'].nodes + for item in items: + add_share_item(client5, share1.shareUri, item.itemUri, item.itemType) + submit_share_object(client5, share1.shareUri) + approve_share_object(client1, share1.shareUri) + check_share_ready(client5, share1.shareUri) + yield get_share_object(client5, share1.shareUri) + + +@pytest.fixture(scope='session') +def persistent_role_share_1( + client5, + client1, + updated_persistent_env1, + updated_persistent_cross_acc_env_1, + updated_persistent_s3_dataset1, + group5, + persistent_consumption_role_1, +): + share1 = create_share_object( + client=client5, + dataset_or_item_params={'datasetUri': updated_persistent_s3_dataset1.datasetUri}, + environmentUri=updated_persistent_cross_acc_env_1.environmentUri, + groupUri=group5, + principalId=persistent_consumption_role_1.consumptionRoleUri, + principalType='ConsumptionRole', + requestPurpose='create persistent share object', + attachMissingPolicies=True, + permissions=['Read'], + ) + share1 = get_share_object(client5, share1.shareUri) + + if share1.status == 'Draft': + items = share1['items'].nodes + for item in items: + add_share_item(client5, share1.shareUri, item.itemUri, item.itemType) + submit_share_object(client5, share1.shareUri) + approve_share_object(client1, share1.shareUri) + check_share_ready(client5, share1.shareUri) + yield get_share_object(client5, share1.shareUri) + + +@pytest.fixture(params=['Group', 'ConsumptionRole']) +def persistent_share_params_main(request, persistent_role_share_1, persistent_group_share_1): + if request.param == 'Group': + yield persistent_group_share_1 + else: + yield persistent_role_share_1 diff --git a/tests_new/integration_tests/modules/share_base/queries.py b/tests_new/integration_tests/modules/share_base/queries.py index 5e69543fc..cbde3a598 100644 --- a/tests_new/integration_tests/modules/share_base/queries.py +++ b/tests_new/integration_tests/modules/share_base/queries.py @@ -176,6 +176,21 @@ def add_share_item(client, shareUri: str, itemUri: str, itemType: str): return response.data.addSharedItem.shareItemUri +def remove_share_item(client, shareItemUri: str): + query = { + 'operationName': 'removeSharedItem', + 'variables': {'shareItemUri': shareItemUri}, + 'query': f""" + mutation removeSharedItem($shareItemUri: String!) {{ + removeSharedItem(shareItemUri: $shareItemUri) + }} + """, + } + + response = client.query(query=query) + return response.data.removeSharedItem + + def verify_share_items(client, shareUri: str, shareItemsUris: List[str]): query = { 'operationName': 'verifyItemsShareObject', diff --git a/tests_new/integration_tests/modules/share_base/shared_test_functions.py b/tests_new/integration_tests/modules/share_base/shared_test_functions.py new file mode 100644 index 000000000..25f8de1da --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/shared_test_functions.py @@ -0,0 +1,203 @@ +from assertpy import assert_that +from botocore.exceptions import ClientError + +from tests_new.integration_tests.aws_clients.utils import get_group_session, get_role_session +from tests_new.integration_tests.core.environment.queries import get_environment_access_token +from tests_new.integration_tests.modules.share_base.queries import ( + get_share_object, + get_s3_consumption_data, + verify_share_items, + revoke_share_items, + add_share_item, + submit_share_object, + approve_share_object, + remove_share_item, +) +from tests_new.integration_tests.modules.share_base.utils import ( + check_share_items_verified, + check_share_ready, +) +from tests_new.integration_tests.aws_clients.athena import AthenaClient +from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client +from tests_new.integration_tests.modules.s3_datasets.queries import get_folder + +ALL_S3_SHARABLE_TYPES_NAMES = [ + 'Table', + 'StorageLocation', + 'S3Bucket', +] + + +def add_all_items_to_share(client, shareUri): + updated_share = get_share_object(client, shareUri) + items = updated_share['items'].nodes + for item in items: + assert_that(add_share_item(client, shareUri, item.itemUri, item.itemType)).is_not_none() + updated_share = get_share_object(client, shareUri) + items = updated_share['items'].nodes + assert_that(items).extracting('status').contains_only('PendingApproval') + + +def delete_all_non_shared_items(client, shareUri): + updated_share = get_share_object(client, shareUri) + items = updated_share['items'].nodes + for item in items: + if item.status in [ + 'Revoke_Succeeded', + 'PendingApproval', + 'Share_Rejected', + 'Share_Failed', + ]: + assert_that(remove_share_item(client, item.shareItemUri)).is_true() + + +def check_submit_share_object(client, shareUri, dataset): + submit_share_object(client, shareUri) + updated_share = get_share_object(client, shareUri) + if dataset.autoApprovalEnabled: + assert_that(updated_share.status).is_equal_to('Approved') + else: + assert_that(updated_share.status).is_equal_to('Submitted') + + +def check_approve_share_object(client, shareUri): + approve_share_object(client, shareUri) + updated_share = get_share_object(client, shareUri, {'isShared': True}) + assert_that(updated_share.status).is_equal_to('Approved') + items = updated_share['items'].nodes + assert_that(items).extracting('status').contains_only('Share_Approved') + + +def check_share_succeeded(client, shareUri, check_contains_all_item_types=False): + check_share_ready(client, shareUri) + updated_share = get_share_object(client, shareUri, {'isShared': True}) + items = updated_share['items'].nodes + + assert_that(updated_share.status).is_equal_to('Processed') + for item in items: + assert_that(item.status).is_equal_to('Share_Succeeded') + assert_that(item.healthStatus).is_equal_to('Healthy') + if check_contains_all_item_types: + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + + +def check_verify_share_items(client, shareUri): + share = get_share_object(client, shareUri, {'isShared': True}) + items = share['items'].nodes + times = [item.lastVerificationTime for item in items] + verify_share_items(client, shareUri, [item.shareItemUri for item in items]) + check_share_items_verified(client, shareUri) + updated_share = get_share_object(client, shareUri, {'isShared': True}) + items = updated_share['items'].nodes + assert_that(items).extracting('status').contains_only('Share_Succeeded') + assert_that(items).extracting('healthStatus').contains_only('Healthy') + assert_that(items).extracting('lastVerificationTime').does_not_contain(*times) + + +def check_table_access( + athena_client, glue_db, table_name, workgroup, athena_workgroup_output_location, should_have_access +): + query = 'SELECT * FROM {}.{}'.format(glue_db, table_name) + if should_have_access: + state = athena_client.execute_query(query, workgroup, athena_workgroup_output_location) + assert_that(state).is_equal_to('SUCCEEDED') + else: + state = athena_client.execute_query(query, workgroup, athena_workgroup_output_location) + assert_that(state).is_equal_to('FAILED') + + +def check_bucket_access(client, s3_client, bucket_name, should_have_access): + if should_have_access: + assert_that(s3_client.bucket_exists(bucket_name)).is_true() + assert_that(s3_client.list_bucket_objects(bucket_name)).is_not_none() + else: + assert_that(s3_client.bucket_exists(bucket_name)).is_false() + assert_that(s3_client.list_bucket_objects).raises(ClientError).when_called_with(bucket_name).contains( + 'AccessDenied' + ) + + +def check_accesspoint_access(client, s3_client, access_point_arn, item_uri, should_have_access): + if should_have_access: + folder = get_folder(client, item_uri) + assert_that(s3_client.list_accesspoint_folder_objects(access_point_arn, folder.S3Prefix + '/')).is_not_none() + else: + assert_that(get_folder).raises(Exception).when_called_with(client, item_uri).contains( + 'is not authorized to perform: GET_DATASET_FOLDER' + ) + + +def check_share_items_access( + client, + group, + shareUri, + consumption_role, + env_client, +): + share = get_share_object(client, shareUri) + dataset = share.dataset + principal_type = share.principal.principalType + if principal_type == 'Group': + credentials_str = get_environment_access_token(client, share.environment.environmentUri, group) + session = get_group_session(credentials_str) + elif principal_type == 'ConsumptionRole': + session = get_role_session(env_client, consumption_role.IAMRoleArn, dataset.region) + else: + raise Exception('wrong principal type') + + s3_client = S3Client(session, dataset.region) + athena_client = AthenaClient(session, dataset.region) + + consumption_data = get_s3_consumption_data(client, shareUri) + items = share['items'].nodes + + glue_db = consumption_data.sharedGlueDatabase + access_point_arn = ( + f'arn:aws:s3:{dataset.region}:{dataset.AwsAccountId}:accesspoint/{consumption_data.s3AccessPointName}' + ) + if principal_type == 'Group': + workgroup = athena_client.get_env_work_group(share.environment.name) + athena_workgroup_output_location = None + else: + workgroup = 'primary' + athena_workgroup_output_location = ( + f's3://dataset-{dataset.datasetUri}-session-query-results/athenaqueries/primary/' + ) + + for item in items: + should_have_access = item.status == 'Share_Succeeded' + if item.itemType == 'Table': + check_table_access( + athena_client, glue_db, item.itemName, workgroup, athena_workgroup_output_location, should_have_access + ) + elif item.itemType == 'S3Bucket': + check_bucket_access(client, s3_client, item.itemName, should_have_access) + elif item.itemType == 'StorageLocation': + check_accesspoint_access(client, s3_client, access_point_arn, item.itemUri, should_have_access) + + +def revoke_and_check_all_shared_items(client, shareUri, check_contains_all_item_types=False): + share = get_share_object(client, shareUri, {'isShared': True}) + items = share['items'].nodes + + shareItemUris = [item.shareItemUri for item in items] + revoke_share_items(client, shareUri, shareItemUris) + + updated_share = get_share_object(client, shareUri, {'isShared': True}) + assert_that(updated_share.status).is_equal_to('Revoked') + items = updated_share['items'].nodes + + assert_that(items).extracting('status').contains_only('Revoke_Approved') + if check_contains_all_item_types: + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + + +def check_all_items_revoke_job_succeeded(client, shareUri, check_contains_all_item_types=False): + check_share_ready(client, shareUri) + updated_share = get_share_object(client, shareUri) + items = updated_share['items'].nodes + + assert_that(updated_share.status).is_equal_to('Processed') + assert_that(items).extracting('status').contains_only('Revoke_Succeeded') + if check_contains_all_item_types: + assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) diff --git a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py index 035d2e254..fb0eb40e4 100644 --- a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py +++ b/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py @@ -1,9 +1,6 @@ import pytest from assertpy import assert_that -from tests_new.integration_tests.aws_clients.athena import AthenaClient -from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client -from tests_new.integration_tests.modules.s3_datasets.queries import get_folder from tests_new.integration_tests.modules.share_base.conftest import clean_up_share from tests_new.integration_tests.modules.share_base.queries import ( create_share_object, @@ -11,26 +8,24 @@ add_share_item, get_share_object, reject_share_object, - approve_share_object, - revoke_share_items, delete_share_object, - verify_share_items, update_share_request_reason, update_share_reject_reason, - get_s3_consumption_data, ) from tests_new.integration_tests.modules.share_base.utils import ( check_share_ready, - check_share_items_verified, - get_group_session, - get_role_session, ) -ALL_S3_SHARABLE_TYPES_NAMES = [ - 'Table', - 'StorageLocation', - 'S3Bucket', -] +from tests_new.integration_tests.modules.share_base.shared_test_functions import ( + check_share_items_access, + check_verify_share_items, + revoke_and_check_all_shared_items, + check_all_items_revoke_job_succeeded, + add_all_items_to_share, + check_submit_share_object, + check_approve_share_object, + check_share_succeeded, +) def test_create_and_delete_share_object(client5, session_cross_acc_env_1, session_s3_dataset1, principal1, group5): @@ -149,131 +144,51 @@ def test_change_share_purpose(client5, share_params_main): @pytest.mark.dependency(name='share_submitted') def test_submit_object(client5, share_params_all): share, dataset = share_params_all - updated_share = get_share_object(client5, share.shareUri) - items = updated_share['items'].nodes - for item in items: - add_share_item(client5, share.shareUri, item.itemUri, item.itemType) - - submit_share_object(client5, share.shareUri) - updated_share = get_share_object(client5, share.shareUri) - if dataset.autoApprovalEnabled: - assert_that(updated_share.status).is_equal_to('Approved') - else: - assert_that(updated_share.status).is_equal_to('Submitted') + add_all_items_to_share(client5, share.shareUri) + check_submit_share_object(client5, share.shareUri, dataset) @pytest.mark.dependency(name='share_approved', depends=['share_submitted']) def test_approve_share(client1, share_params_main): share, dataset = share_params_main - approve_share_object(client1, share.shareUri) - - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - assert_that(updated_share.status).is_equal_to('Approved') - items = updated_share['items'].nodes - assert_that(items).extracting('status').contains_only('Share_Approved') + check_approve_share_object(client1, share.shareUri) @pytest.mark.dependency(name='share_succeeded', depends=['share_approved']) def test_share_succeeded(client1, share_params_main): share, dataset = share_params_main - check_share_ready(client1, share.shareUri) - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - - assert_that(updated_share.status).is_equal_to('Processed') - for item in items: - assert_that(item.status).is_equal_to('Share_Succeeded') - assert_that(item.healthStatus).is_equal_to('Healthy') - assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + check_share_succeeded(client1, share.shareUri, check_contains_all_item_types=True) @pytest.mark.dependency(name='share_verified', depends=['share_succeeded']) def test_verify_share_items(client1, share_params_main): share, dataset = share_params_main - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - times = [item.lastVerificationTime for item in items] - verify_share_items(client1, share.shareUri, [item.shareItemUri for item in items]) - check_share_items_verified(client1, share.shareUri) - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - assert_that(items).extracting('status').contains_only('Share_Succeeded') - assert_that(items).extracting('healthStatus').contains_only('Healthy') - assert_that(items).extracting('lastVerificationTime').does_not_contain(*times) + check_verify_share_items(client1, share.shareUri) @pytest.mark.dependency(depends=['share_verified']) -def test_check_item_access(client5, session_cross_acc_env_1_aws_client, share_params_main, group5, consumption_role_1): +def test_check_item_access( + client5, session_cross_acc_env_1_aws_client, share_params_main, group5, session_consumption_role_1 +): share, dataset = share_params_main - principal_type = share.principal.principalType - if principal_type == 'Group': - session = get_group_session(client5, share.environment.environmentUri, group5) - elif principal_type == 'ConsumptionRole': - session = get_role_session(session_cross_acc_env_1_aws_client, consumption_role_1.IAMRoleArn, dataset.region) - else: - raise Exception('wrong principal type') - - s3_client = S3Client(session, dataset.region) - athena_client = AthenaClient(session, dataset.region) - - consumption_data = get_s3_consumption_data(client5, share.shareUri) - updated_share = get_share_object(client5, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - - glue_db = consumption_data.sharedGlueDatabase - access_point_arn = ( - f'arn:aws:s3:{dataset.region}:{dataset.AwsAccountId}:accesspoint/{consumption_data.s3AccessPointName}' + check_share_items_access( + client5, group5, share.shareUri, session_consumption_role_1, session_cross_acc_env_1_aws_client ) - if principal_type == 'Group': - workgroup = athena_client.get_env_work_group(updated_share.environment.name) - athena_workgroup_output_location = None - else: - workgroup = 'primary' - athena_workgroup_output_location = ( - f's3://dataset-{dataset.datasetUri}-session-query-results/athenaqueries/primary/' - ) - - for item in items: - if item.itemType == 'Table': - # nosemgrep-next-line:noexec - query = 'SELECT * FROM {}.{}'.format(glue_db, item.itemName) - state = athena_client.execute_query(query, workgroup, athena_workgroup_output_location) - assert_that(state).is_equal_to('SUCCEEDED') - elif item.itemType == 'S3Bucket': - assert_that(s3_client.bucket_exists(item.itemName)).is_not_none() - assert_that(s3_client.list_bucket_objects(item.itemName)).is_not_none() - elif item.itemType == 'StorageLocation': - folder = get_folder(client5, item.itemUri) - assert_that( - s3_client.list_accesspoint_folder_objects(access_point_arn, folder.S3Prefix + '/') - ).is_not_none() @pytest.mark.dependency(name='share_revoked', depends=['share_succeeded']) def test_revoke_share(client1, share_params_main): share, dataset = share_params_main check_share_ready(client1, share.shareUri) - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - - shareItemUris = [item.shareItemUri for item in items] - revoke_share_items(client1, share.shareUri, shareItemUris) - - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - assert_that(updated_share.status).is_equal_to('Revoked') - items = updated_share['items'].nodes - - assert_that(items).extracting('status').contains_only('Revoke_Approved') - assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + revoke_and_check_all_shared_items(client1, share.shareUri, check_contains_all_item_types=True) @pytest.mark.dependency(name='share_revoke_succeeded', depends=['share_revoked']) -def test_revoke_succeeded(client1, share_params_main): +def test_revoke_succeeded( + client1, client5, session_cross_acc_env_1_aws_client, share_params_main, group5, session_consumption_role_1 +): share, dataset = share_params_main - check_share_ready(client1, share.shareUri) - updated_share = get_share_object(client1, share.shareUri, {'isShared': True}) - items = updated_share['items'].nodes - - assert_that(updated_share.status).is_equal_to('Processed') - assert_that(items).extracting('status').contains_only('Revoke_Succeeded') - assert_that(items).extracting('itemType').contains(*ALL_S3_SHARABLE_TYPES_NAMES) + check_all_items_revoke_job_succeeded(client1, share.shareUri, check_contains_all_item_types=True) + check_share_items_access( + client5, group5, share.shareUri, session_consumption_role_1, session_cross_acc_env_1_aws_client + ) diff --git a/tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py b/tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py new file mode 100644 index 000000000..737586f16 --- /dev/null +++ b/tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py @@ -0,0 +1,99 @@ +from tests_new.integration_tests.modules.share_base.utils import check_share_ready +from tests_new.integration_tests.modules.share_base.shared_test_functions import ( + check_share_items_access, + check_verify_share_items, + revoke_and_check_all_shared_items, + check_all_items_revoke_job_succeeded, + add_all_items_to_share, + check_submit_share_object, + check_approve_share_object, + check_share_succeeded, + delete_all_non_shared_items, +) + +""" +1. Update persistent envs and datasets used for shares (made in fixtures) +2. Share verification test +3. Check item access test +4. Revoke share test +5. Check no access left +6. Add all items back to share +7. Share approved/processed successfully +8. Share verification test +9. Check item access test +""" + + +def test_verify_share_items(client5, persistent_share_params_main): + check_verify_share_items(client5, persistent_share_params_main.shareUri) + + +def test_check_share_items_access( + client5, group5, persistent_share_params_main, persistent_consumption_role_1, persistent_cross_acc_env_1_aws_client +): + check_share_items_access( + client5, + group5, + persistent_share_params_main.shareUri, + persistent_consumption_role_1, + persistent_cross_acc_env_1_aws_client, + ) + + +def test_revoke_share(client1, persistent_share_params_main): + check_share_ready(client1, persistent_share_params_main.shareUri) + revoke_and_check_all_shared_items( + client1, persistent_share_params_main.shareUri, check_contains_all_item_types=True + ) + + +def test_revoke_succeeded( + client1, + client5, + group5, + persistent_share_params_main, + persistent_consumption_role_1, + persistent_cross_acc_env_1_aws_client, +): + check_all_items_revoke_job_succeeded( + client1, persistent_share_params_main.shareUri, check_contains_all_item_types=True + ) + check_share_items_access( + client5, + group5, + persistent_share_params_main.shareUri, + persistent_consumption_role_1, + persistent_cross_acc_env_1_aws_client, + ) + + +def test_delete_all_nonshared_items(client5, persistent_share_params_main): + check_share_ready(client5, persistent_share_params_main.shareUri) + delete_all_non_shared_items(client5, persistent_share_params_main.shareUri) + + +def test_add_items_back_to_share(client5, persistent_share_params_main): + check_share_ready(client5, persistent_share_params_main.shareUri) + add_all_items_to_share(client5, persistent_share_params_main.shareUri) + + +def test_submit_share(client5, persistent_share_params_main, persistent_s3_dataset1): + check_submit_share_object(client5, persistent_share_params_main.shareUri, persistent_s3_dataset1) + + +def test_approve_share(client1, persistent_share_params_main): + check_approve_share_object(client1, persistent_share_params_main.shareUri) + + +def test_re_share_succeeded( + client5, persistent_share_params_main, persistent_consumption_role_1, persistent_cross_acc_env_1_aws_client +): + check_share_succeeded(client5, persistent_share_params_main.shareUri, check_contains_all_item_types=True) + check_verify_share_items(client5, persistent_share_params_main.shareUri) + check_share_items_access( + client5, + persistent_share_params_main.group, + persistent_share_params_main.shareUri, + persistent_consumption_role_1, + persistent_cross_acc_env_1_aws_client, + ) diff --git a/tests_new/integration_tests/modules/share_base/utils.py b/tests_new/integration_tests/modules/share_base/utils.py index e1eaee334..91887bedc 100644 --- a/tests_new/integration_tests/modules/share_base/utils.py +++ b/tests_new/integration_tests/modules/share_base/utils.py @@ -1,9 +1,3 @@ -import json - -import boto3 - -from tests_new.integration_tests.aws_clients.sts import StsClient -from tests_new.integration_tests.core.environment.queries import get_environment_access_token from tests_new.integration_tests.modules.share_base.queries import get_share_object from tests_new.integration_tests.utils import poller @@ -31,18 +25,3 @@ def check_share_ready(client, shareUri): @poller(check_success=lambda share: is_all_items_verified(share), timeout=600) def check_share_items_verified(client, shareUri): return get_share_object(client, shareUri) - - -def get_group_session(client, env_uri, group): - credentials = json.loads(get_environment_access_token(client, env_uri, group)) - - return boto3.Session( - aws_access_key_id=credentials['AccessKey'], - aws_secret_access_key=credentials['SessionKey'], - aws_session_token=credentials['sessionToken'], - ) - - -def get_role_session(session, role_arn, region): - sts_client = StsClient(session=session, region=region) - return sts_client.get_role_session(role_arn) From 4fd6caae344a11b93376f1c445fffcfbe420c87c Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 2 Oct 2024 15:41:04 +0100 Subject: [PATCH 107/188] CICD Integration test: table test fix (#1605) ### Feature or Bugfix - Bugfix ### Detail - More general assertion - No ordering expected ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../modules/s3_datasets/test_s3_tables_columns.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py index 58ae9140b..7722f67f5 100644 --- a/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py +++ b/tests_new/integration_tests/modules/s3_datasets/test_s3_tables_columns.py @@ -21,8 +21,8 @@ def test_sync_dataset_table_columns(client1, tables_fixture_name, request): tables = request.getfixturevalue(tables_fixture_name) response = sync_dataset_table_columns(client1, tables[0].tableUri) assert_that(response.count).is_equal_to(3) - assert_that(response.nodes[0].name).is_equal_to('column1') - assert_that(response.nodes[0].typeName).is_equal_to('int') + assert_that(response.nodes).extracting('name').contains('column1', 'column2', 'column3') + assert_that(response.nodes).extracting('typeName').contains('int', 'string', 'string') @pytest.mark.parametrize( @@ -44,8 +44,8 @@ def test_list_dataset_table_columns(client1, tables_fixture_name, request): table_uri = tables[0].tableUri response = list_dataset_table_columns(client1, table_uri) assert_that(response.count).is_equal_to(3) - assert_that(response.nodes[0].name).is_equal_to('column1') - assert_that(response.nodes[0].columnUri).is_not_none() + assert_that(response.nodes).extracting('name').contains('column1', 'column2', 'column3') + assert_that(response.nodes).extracting('columnUri').does_not_contain(None) @pytest.mark.parametrize(*TABLES_CONFIDENTIALITY_FIXTURES_PARAMS) From c5f3f9e077751a69555b0c535d2649f6e17aa63f Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 2 Oct 2024 15:41:16 +0100 Subject: [PATCH 108/188] CICD Integration test: iam client fix (#1604) ### Feature or Bugfix - Bugfix ### Detail - iam client tries to get_role and creates one if it's none. ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- tests_new/integration_tests/aws_clients/iam.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py index 73050c748..1006d3871 100644 --- a/tests_new/integration_tests/aws_clients/iam.py +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -16,8 +16,12 @@ def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', self._region = region def get_role(self, role_name): - role = self._client.get_role(RoleName=role_name) - return role + try: + role = self._client.get_role(RoleName=role_name) + return role + except self._client.exceptions.NoSuchEntityException as e: + log.info(f'Error occurred: {e}') + return None def delete_role(self, role_name): self._client.delete_role(RoleName=role_name) From 8f4c306e928d51e075e013b8f81b6578fac7de9b Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:33:24 -0400 Subject: [PATCH 109/188] Extend id token duration if tests included as part of pipeline (#1606) ### Feature or Bugfix - Feature ### Detail - Extend ID Token Validity to 120 if enabling integration tests to allow integration test suite to run fully (note: runs take ~70-80 minutes currently) ### Relates - NA ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/stacks/cognito.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/stacks/cognito.py b/deploy/stacks/cognito.py index e0123a9f6..78bd4d20c 100644 --- a/deploy/stacks/cognito.py +++ b/deploy/stacks/cognito.py @@ -100,6 +100,7 @@ def __init__( domain_prefix=f"{resource_prefix.replace('-', '')}{envname}{self.region.replace('-', '')}{self.account}" ), ) + id_token_duration = 120 if with_approval_tests else 60 self.client = cognito.UserPoolClient( self, f'AppClient-{envname}', @@ -107,6 +108,7 @@ def __init__( auth_flows=AuthFlow(user_password=with_approval_tests, user_srp=True, custom=True), prevent_user_existence_errors=True, refresh_token_validity=Duration.minutes(cognito_user_session_timeout_inmins), + id_token_validity=Duration.minutes(id_token_duration), ) if enable_cw_rum: From 06190362fb073c17eb4a342a93e4501b8920a4d1 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Tue, 8 Oct 2024 09:19:55 -0400 Subject: [PATCH 110/188] Pipeline Module Updates (#1616) ### Feature or Bugfix - Refactoring ### Detail - Change default datapipeline active flag to `false` - Remove Pipeline userguide documentation ### Relates - N/A ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .checkov.baseline | 29 +-- config.json | 2 +- documentation/userguide/docs/components.md | 12 +- documentation/userguide/docs/environments.md | 1 - .../docs/pictures/pipelines/env_vars.png | Bin 62953 -> 0 bytes .../pipelines/github_template_create.png | Bin 88908 -> 0 bytes .../docs/pictures/pipelines/pip_cdk_trunk.png | Bin 101337 -> 0 bytes .../pictures/pipelines/pip_codepipeline.png | Bin 287882 -> 0 bytes .../pictures/pipelines/pip_cp_gitflow.png | Bin 61667 -> 0 bytes .../pictures/pipelines/pip_cp_gitflow2.png | Bin 65295 -> 0 bytes .../docs/pictures/pipelines/pip_cp_init2.png | Bin 58571 -> 0 bytes .../docs/pictures/pipelines/pip_cp_trunk.png | Bin 101337 -> 0 bytes .../pictures/pipelines/pip_create_form.png | Bin 160534 -> 0 bytes .../docs/pictures/pipelines/pip_edit_form.png | Bin 102078 -> 0 bytes .../docs/pictures/pipelines/pip_overview.png | Bin 109321 -> 0 bytes documentation/userguide/docs/pipelines.md | 241 ------------------ documentation/userguide/mkdocs.yml | 1 - 17 files changed, 9 insertions(+), 277 deletions(-) delete mode 100644 documentation/userguide/docs/pictures/pipelines/env_vars.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/github_template_create.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_cdk_trunk.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_codepipeline.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow2.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_cp_init2.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_cp_trunk.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_create_form.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_edit_form.png delete mode 100644 documentation/userguide/docs/pictures/pipelines/pip_overview.png delete mode 100644 documentation/userguide/docs/pipelines.md diff --git a/.checkov.baseline b/.checkov.baseline index 0dafe9c5b..f80fb4c43 100644 --- a/.checkov.baseline +++ b/.checkov.baseline @@ -430,12 +430,6 @@ "CKV_AWS_111" ] }, - { - "resource": "AWS::IAM::Policy.dataallmaincdkpipelinePipelineRoleDefaultPolicy98FFDB2A", - "check_ids": [ - "CKV_AWS_111" - ] - }, { "resource": "AWS::Lambda::Function.CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", "check_ids": [ @@ -502,7 +496,7 @@ ] }, { - "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy7BF536CC5", + "resource": "AWS::IAM::ManagedPolicy.dataallanothergroup111111servicespolicy5A19E75CA", "check_ids": [ "CKV_AWS_109" ] @@ -538,7 +532,7 @@ ] }, { - "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy7DCF428B2", + "resource": "AWS::IAM::ManagedPolicy.dataalltestadmins111111servicespolicy56D7DC525", "check_ids": [ "CKV_AWS_109" ] @@ -606,25 +600,6 @@ } ] }, - { - "file": "/checkov_pipeline_synth.json", - "findings": [ - { - "resource": "AWS::IAM::Role.PipelineRoleDCFDBB91", - "check_ids": [ - "CKV_AWS_107", - "CKV_AWS_108", - "CKV_AWS_111" - ] - }, - { - "resource": "AWS::S3::Bucket.thistableartifactsbucketDB1C8C64", - "check_ids": [ - "CKV_AWS_18" - ] - } - ] - }, { "file": "/checkov_smstudio_extension_synth.json", "findings": [ diff --git a/config.json b/config.json index 26d0891b4..e3af66063 100644 --- a/config.json +++ b/config.json @@ -13,7 +13,7 @@ } }, "datapipelines": { - "active": true, + "active": false, "features": { "show_stack_logs": "enabled" } diff --git a/documentation/userguide/docs/components.md b/documentation/userguide/docs/components.md index 1129a2d44..7bee7e7f4 100644 --- a/documentation/userguide/docs/components.md +++ b/documentation/userguide/docs/components.md @@ -41,7 +41,7 @@ belong to multiple teams. ## **Discover** ### Datasets A dataset is a representation of multiple AWS resources that helps users store data. -When data owners create a dataset on data.all the following resources are created: +When data owners create a **S3 dataset** on data.all the following resources are created: - Amazon S3 Bucket to store the data on AWS. - AWS KMS key to encrypt the data on AWS. @@ -50,6 +50,8 @@ When data owners create a dataset on data.all the following resources are create *Inside the dataset we can store structured data as tables or unstructured data in folders.* +Alternatively, when data owners import a **Redshift dataset** on data.all a subset of the tables can be imported from a specific Redshift database schema. + ### Catalog data.all centralized Catalog is an inventory of datasets, tables, folders and dashboards. It contains metadata for each of the mentioned data assets and thanks to its search capabilities, users can filter based on type of data, type of @@ -84,10 +86,8 @@ Amazon SageMaker instance to access Jupyter notebooks. ### ML Studio With ML Studio Notebooks we can add users to our SageMaker domain and open Amazon SageMaker Studio -### Pipelines -In order to distribute data processing, data.all introduces data.all pipelines where: -- data.all takes care of CI/CD infrastructure -- data.all offers flexible pipeline blueprints to deploy AWS resources and a Step Function - ### Dashboards In the Dashboard window we can start Quicksight sessions, create visual analysis and dashboards. + +### Omics +Provides the capability to view and instantiate HealthOmics Ready2Run workflows against data.all datasets and save omics data from workflow output. \ No newline at end of file diff --git a/documentation/userguide/docs/environments.md b/documentation/userguide/docs/environments.md index 8a4c41cb3..0fd16f380 100644 --- a/documentation/userguide/docs/environments.md +++ b/documentation/userguide/docs/environments.md @@ -316,7 +316,6 @@ clipboard. Both options are under the "Actions" column in the Teams table (these - Assumed by Team members from *data.all* UI to explore and work with data - Credentials can be copied in *data.all* UI to explore and work with data - Assumed by *data.all* Worksheets to query data using Athena -- Credentials can be copied in *data.all* Pipelines to develop the pipeline **IAM Permissions** diff --git a/documentation/userguide/docs/pictures/pipelines/env_vars.png b/documentation/userguide/docs/pictures/pipelines/env_vars.png deleted file mode 100644 index a3181a4da89ab648592b11523e7335c59912bcbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62953 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

      SkMqHXbIx^q}$1Zly?alORhd6KXML;_2EZJO1) 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 CTZVA} diff --git a/documentation/userguide/docs/pictures/pipelines/github_template_create.png b/documentation/userguide/docs/pictures/pipelines/github_template_create.png deleted file mode 100644 index 83ad6d85d474056f65da341df55516d065f266e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88908 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 tr$z?S$#WHVV?)v(r&8eC7%?^lA8TbdxR_i) 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 diff --git a/documentation/userguide/docs/pictures/pipelines/pip_cdk_trunk.png b/documentation/userguide/docs/pictures/pipelines/pip_cdk_trunk.png deleted file mode 100644 index 3a3562b6a17c679928996ea5d546ac7bd6b6ba60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101337 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

      8~HUYh11 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�^uqVU1$c?RY_ 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 LQI#&0G<*AB0cBTG diff --git a/documentation/userguide/docs/pictures/pipelines/pip_codepipeline.png b/documentation/userguide/docs/pictures/pipelines/pip_codepipeline.png deleted file mode 100644 index 73d962a6bee1e5873587acc3063876d2363ba569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287882 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 z z^?fcUBI57wFYGTN4Dfam5tEgb6%iE|5f>MtJR#&0=;>=0Amr(DKW^xspFe-6Lx9V_TJrSyt6P)~iX7h&5fc^_`Dfjfq6)`X ziWi% zBW0Q$e@@y^cDMgLQqHL@_3qI;M^T($DlPSU#sMcb;r?l3>g4_H=x-H!h~leUkJN)` zDxYHLzEFRWyni9_`pb(a?zvpQ|1s}6u<~jXKXuez+@4L+H>hN0iaCq^C&danrEfS) z0>RJcL+{O$#)K-8Pap1Pv|P|0W98KsRMcmGW5;xTtCJ`4?dMdbg`iu$AxEHX$UvHG zj(ulNjl+zzN$KO3Sl;S*2pTkf9)VXr)X~UNT8gZS`n|^HPc^>42g;ru%}k2WIK`ww zb>eUD!fxJH$x@NlMh}}1~6e>&Hm?ac7RPpC5!ZnLH6WtEtnT7%ond3WS-*T zP}BI0`Ag|QT>xbUu>pRv|JDLHaq2@BWdLs;3|OE9k!};J+&1{{s~OxNLEUK$geba_$#sd0Yzj$oV~$ zd?0e_!>xy9&$>SFJ9J+}kCavYTy7Ovd*ZWXCwJ@O&v=*!X+K56$#*lLy4HOruZUH! zP9kD|d%Q`1rp1!Xm)Z3tj+;S-Bnt6Edj{LdZ!PkD8FLQk^N~NQcN&(UZ>=5ry@h&| zL|rLXshuPpYxwmo{Wv+vzWz!X>h$P<{3U9vS0ssLWqAq$hE0czik3`__80%ZX~<35 z-8gP@Dp6Xzrr4Nl8@KFTCmn`YS9)FLG=Q9pWSOqD&$q!NNfnwG3K$=%{g&!I>ZFF< zu`HuL+z|jxS8Hb|9D)@-lSwLVy1^y;DDRc9e$aVi-P4b5e*JYvIsD=dG1 zHfX6+(9YI9N`HdF;S^DSdh=UW>%nyjXnDmLr2-nfv3V&BUm+>^JNQ$D`NCBLo)7~{ zUEFq%v!fBY*}tW;KD<4iIa| zqA@jAo)Itx>EU%<|8#n~F*xVxQ+v2#;vHj)dhunW(ho9)rrVZ35UX=8lWa8)i-E+V zQW|LiqtEUF?@HfluL_lq^4}o$yR1e34iP}kJhpn-w0~GDYjhaCAo&Kzo*G-9jkMIJ zVgSRT&x+XwXG4+d0tccDhLv?0f^tZ>RXio1+vrrj>y~#X=&=7pL!L_Ffv)@SIO5;I z$2`Vc{XfjyhWGi=a(I&!s#9vecqmxr{VjXP<=zjPojLKY1Oy7L4GBVT}w)N6Fbrg`RVPa`p!Nc{RbyfJu87h05nx8{M+;#_+c(|4E-j9w0~%tSBkd+DQyHa3x{%s1!cZu z{S9wUnDf}!Yu@`y3g<>K3XLX08VIymUb#WZ2RVe;TH006Q7ZmDmaE|+dt$dG0@FkH zJFfB(?$~G#PyhhMXpb*nE&!v7r9W4>f99-W7=e+#Cs!=S&xr=3WRPNoO*0p;tNrjK@~xn}WuW46fXb}#P0 zZx@X_-vGKycQdP1p zZHt)IP7z;*1s0M;R%>zMNaD5tSXUN4nuS(wUdfdkQ0Athx&C*Nc2fN@06F<50P(9o zjr8!t^Qw9JF6z2pMF8WXWPj1D+J2r?hn3i_^>3?`c8-;pT3v>t9?WNIBFb``XmE!@ z?8CVuTY0vEnjH$H=I4S=2Xi>CG=QWr24$C!5Y#4uy`OrFg4Jk@RCT&xto)xe4-0 zn`YbjmV=K5gfkTjPZzIr%$2^Zr$dqi^pPFKXxaR}8L=nYnjpxU4?tqm3GH4liC#Ak zCFIhL68MgM+UZBj=c){aG!dLI*$UKYB%Ax^LSdfCsDoA8>Dg&5ND{!8q({z@l9SWu zvsC0GTT7O3H2ZUb+yPq{erCElkGkOq?Ki z*)OO9X=JfSxB?Ofl*~<(Rl{;3c=}rLsWb&bx+Z;<3K;8dJez9*(?topcL;BzHb@ zeYtmMl>0g5i&&5@q%oVR>sd{FILGvWECi-=r})Al7Io&oDP%@YE=*PAdrV|U?=1Bfo*$^$Cd35zmzb7Vi4B**m@SuRpGelF!V>?Xw++z{_-K2?}@oLzakh>xF*CKy{Pulwy;moL`DVf1KQ zqdQGD0gP-rg|uCp>@!J*5yv_G2GSW4#T~TC2fH<~+!FUjocarlEB6i_F!HVEo$<4-A+)7+!uU=9qip|2iYkqY75Pep z`Y&87WH1*r3%7te)No=(`@J%OH$n>#XnM9hh=+)-`xo1Bk?LZO;Z6I*pP)obGL-B- z3$@UXt&@K~d9o(Mpvpp|pj9)r=9!vRP0-9jGl%Zpv-G5+X8H3TL-uNb9mq(oZm~!P zq1}U=8ip4M<;u^VBbo5So}g8OAX7NfT~#w)@_zOiJv153ofD__|?P>v^n*)^UB7@Ia4S2jluuM!6f^P!wehI2DHsyAt?DCLgH{u+JP$+icES z&-iZ|Zse!(yM5|KPaZ0h+*S8|u<8jBiORM%W^lxt)zp+M7-SDEV^C;#-?{A_$#u9f zcJtW_oaVWm&oy=4jv#GiPcTdw3}rgik?s(G++>;qNxQ=|^GvCY*id(tWWqp$>vQ)GL|0p zx{2H-IXgtQNPio*4@FouRa%Uq3Kk@S*AouGr+a&B9_ay;#D_4rDG`j@q(A5gb&Ocx zD@L=xBNZZ>$We)Jp+rONX-=nto(Ql>17qp<+~LRyJ`k%wPGcN*Ey}BzCd>eDk#4@& zHTgsa%~>eQDwJJ^D%SRo$rOxuoJ1kPwVM>R4Pam|qo^K!`;K!Q(iP>LJ+G;;?BZX| ze2nfZ8t%}RC+NIpSGma*1TiU(-FnRKEEXBG&1h-P!jfcQFxMEkl zFZ6qWNB%)rP_S)usMZ0f#5DKI=g(WAPy1OeQ*r)Xz(++*fyyDY|H6AyZm>u3T3#o% zKfKm+0rPv2!rcsJqIoTu74e0$$f(KZ}0K6Yx z)lligP7Z(?)*CbU!Gh~P@I6HDYqnpJ-st+MU-65*o%6{H>G%El@wUrEh|>RY1q)xXwlJzDC|SwDnh7)4ge&f>kPN zcauKd;nfjWhTEc90WPkOVmwUCY>H(N97U?9cQ@8o;)8Y3BQ_$zwI%2yU?*io=_DTA zT|J zmy*(#uv!cp{pP3*>wz^$%s<&0A0_+c*uf?=#->L=irRn9Sl{=80(3U`yHo44Cer4e ziYxtH;o~)-mQfe^KmIuNML$Ds8MA9TtgeA9-hbGrtGEO7Kq=Nu%+(4~T%n1`Wao5Q zpN=`e$?;4@a)Rw^L~$0zUsP~?`0LR2JM9A-%jPSGd!f;FMa0NL13-K*HacGl+PLN6zdYpp0af+)^wnmqHw>AuD1gPtiRRC zcfN^*6}!bZ3m6rJ%K-yS=k(JHy?8=Oo|;`6Do(e#yDA6NeA=HdAGWFfcP%uDk=`I% z>0s+G7AP(ZZ!0}8@^CQ~DyEsISGo_u8KamXZ<=VzTi&e8gJwq=7v~JuJ!_!Z`4d<6 zB|@{5tTZ_v@a(l|hIJos;>t{W9^o2Z1l28Wk`7o-27yQPBtC_Jo7IkL!OR7aL^LM2 zxQIT9z!wGiMe%s&g3lNO?-2s5sZ+BPcTO^})r*nyU*nyJS9z&2ZSO~49L`qL+}r(S z>vwcOJ63LFq%RpbX`O8yAv_HQz>18EvVOIfjg~+B)WFo}u}6)~4Bf6#BJ5bQwLz}! zGq*=Kd?(t+@(lM*`LxzfeGh?T5NExXyFVG`Zj_Cc!Go(ki5fNT+u`n5LY#H5YtJ~U z>?NoVY4TCl$FbBJg78q@nQvN|O~9_R&DHrBQ|xxJg|Z*seHD2ci7IE71YjGB8*S?h zPK=e(^FK#tnS$6SKS4i-i4*5&!SMvIcf9>PrIVA7$wAv@+Lr`MlQ_;BG~aps zOU4B-s;8*DZ~>)MK}f3|byWQ>h&ykbE9goyt(U2o%ZsrB>-hy+o`9i*%AJ??LgfOM z-pTV;i-#Q1VdKYxEntUk?@JhE?b zUJ8z&QMz&cy02NHhN}%!?Fl(|vLbOI;yh1jK|xN~$dmwDL~%~zeMg&c)k^QgS|v}i z>!A}ISX*NLQOy1fu{p4qr$E_W00UFrSL>4mH3i4T=#)-C{U43HoBya?{`p>ajwq_e zqJ(c#?zg%5a770>y?uHLXekBLC*PZHwoigK6FVD5i>;r>UYuU|5yw4?-HlVgUoRL&XKsnDdT|}n{OxR>@5h7HeAecZ zbe#-hoCmxX9{_Fa3y=Fx0dJ$%|3|<(6r&`35LkZ(iTXZwl%3FQeUJiXthE3w%-%PV zG~>5UDUJd1OqF4wrfWFG4d2_yin)O|>oiJut;wyXIWa_coSJ3zQ^He}LZdk$9`&d! z=Fs?#zjW|Z>K$+{(dy=$N5nNfIc{iPZ<$#-YWp^wd^Bd)zQyeXwsTG>36*TL=Qbq?lIuDGI_eYyjy#8l= z!r_+gCP(n#{h|j8s@kd2eX?-o;0&Mh&uIQGow)@*&f40_4nBdMM+8vfp}9S>1^}Lk z2^c7gf*SCNtBZ<1e53(|zL077;BFdm^M3@`|2L34jBI_(=Q=(73;Z#T&V*5n{ZJ=; zgd6E|A;n=Q$l{&~PM8TiGSYQx+A22*P+tA=drkFd9CzpuWeQRPv)Ys}dc~{!--?AY zi5|1OauKoWxbwZGz1}OuW%A@e!g$IfEe<0?RT`o)dh8yPV zm0s%mT-U0fp-{LiXjW|8^-DXIw@+DinH*{VN!T`bw%+?TMH!KOaKU%+AIH&3c~q$}S+iSk-SDPS>hVR7Y#TGgIXTC*fxaO&&B9t-O#f_0 z@BP|9TjPxdJ;%9JHYJNPf%dBP_SC4?8$d1G4CWoElkS;T4z)QM4$Ik>ul3gaND$7z z5I!gSFNe%c2-}v7N0n+y7OmINhL#KS&%=Db)j;C~bk((4d-pL)31F9lv`c@(Hl97s zJ9+;0pD`mI*`PGXKBAcD%4nfs;jBq6_SuN0bpbq%FyvSYf5lDlGsPWynbyE!obl3b zxgYrrUH7)a(318Y`lE~^PKBz6-a%!k5jGzrWq5F#@cfz$=>o%cH&z#3?n#ICA}J&s zkTsn9u=s)+p1gr$C$qPMohbQedFR$g3V*V`9{bTKLEa<2jgrlcn6vrX#QS1Xh+=mJ zdvJ-v9%ifC!1XS%htgse@XJb9ThtF_?$*sK`YHaJy#xXDv|FS)Ng~=`D zb70B+YBX1!O2l~$0!aK>%;@AN)N>wQA$7zZ6)_ehh`#aA_ z&Dj#*i368ZY9ifIPl5i7@jjtCqe3UzbW_Yee#QaiS@_x38X&TcV;6IZMx^dcVBIqb z8<)m+Wvte5hY(W%n1XIspCWOziWDf~#orm=13Q#^J|B)QFgHl|6!JoBypiSwmQ;>f8JSD^?Dr~qAmcO{T5AImsDMkP+ zT2QG_(u;=BM#Ijy4m`*(g_a+n6dEgVss9(|VK4MUGNu@p5fhjfrJd3x5@~)u<8Gm4 zaKGPNm)C$Pt&U#h0?}r!WTe*?xW2b8(a>zDgl&LUgQutAPJ+`{G6$c|WoHJ5Us7 zKU(fdu+;qWrP}vUn@y#9Yz+zwYJm^P-ivd1ioE;DN07*AWo! zGg8k=D?V_FdrIXn#?#N5iGpzjC08e`9TmDvYOI90MC}k`oaa9)4SzI4-uC%?*1wA) z!xYg?eg_#=wBV(lyn4a?hIxRVkyPl8&zM!_neu^=_pL+P3DT;5lJ zVvJsmRi+28J2;+JZbod@KsIwHC2Edk)pKaup3h`sS|MnWRA;dN-Gx)CC7i;jcbhF6 zi?L(?S?hJ3{eRwAo~?Hm1-C8veal`XxUr7fNi<_FZ9bo?$%wbfIg{(-yz>o?B(-?^ zE8mKG_K4f3$((n~jr9H1+Sh$B4 zlE-O6BhLU|wuZ12Fs3&yU}=ffuy2DQYpVX`?R`+6^h5H6-MG@pOSxK(*CVZ&ePa6v z`fD}i6X6*ag5zAin0bc8-QrH`Tr10_44+=yRnylx6z69}9{L=sgiC+u7Mf^hnlxRe z|8y>~EyR|rl|@ootaO;UAoJ-_sbIZrQ3a=c=xiPYX0w6rlKKo*g$)30A?4%Am@V4! zDNu$uOt`Y+DE1o|EG)U+Cjb2Cr3c4eI|mMu-Eb(+;>HWSV^cq&nBO8)X0$9w`W!OP z)ynrbAn&`2$H^U;%zqKUvIcYb!n`7jLphoKk?P5$?{6Xp zAU8+(LbFIAoxvWo>78y>nQX3%sEtx`f_Dnu4tZd0P16rAbUBj5%hMuQ}-efcX075)Z@0FBwE6dLjAyM3drT9wQOLIc7a zMV_Ni0|+urrc$~F2w@v0@=DR^QB>TAZ;4fzV4T_16HH8hjYIU$8P`z;opu+?Nc?V+ ztAPFIk41BSdBIL#q+ip9&$w}Hx&6xnv7vm)y}}KvL{y7}w970br^y%ROR;X;IAXHh zOPoj(Or2fgzUy?47tXddt;h5!tcghTUHE*yqs{f-l+s=H5YgFALo$pRaQE>XZX7^(@@Kc@r!VB*R}Gbc>9~z8(zC z-az24O73w_bAuHtC)Pw=a#Kbtjj|ISZPv?ynk{sTSdF)>yvU%6fn8yVz!u@%V4L!{ z7rU6TN_;B>SFqT1$|$S8N$5=`q*Mk!bj~78#edpZT@E%G3Bed@-kkV&dS-xjG`RD1 z=spRUt|SAydcmSlxmqz>ED%PwwF%GNd!Bn#24&a)+p7}W%YK&73JJW)cV)gNbPExe~J&^NF3bW#48fT^ zp+_l2srxkOCZkn(1m`G)@pD@WUaWS)gyu?`Afl}vJs42jt#<7FoR0w~qtPw+X@?1P z6B3RQ^67K)%daQ5@an+EjYA}54 z&+c<({0Ib05s><+?_!FaaGKIDc;$43OBJ^S?f@~#*q6NDU@vHTyZn>B61r%Rz(;Sc zrIUpK##3UKLYeFH8M_6LIpfcg?>Xc`szWUsRLlK9{97fedYJNY(J*`huK}4TSd%E_ zApn6jmA(^(gT-*)|b!9c23Sr-yju7mpEet;4E|NyxFX;;+6R-k)4yLg#mv9j)^N|S+ zUE#Y`4iAelHU+{WqUl}6%9(gW2EgOh5G7~T*;Jim=ospjE>ryrHy)QFc>IxLI?|*! ze*(iVWQipt7d9wwu16Ia+^*WNSDPM_)0M$gQsY4Vr+ecTe55ySupB6Q9eoTwU;ANS z>Q2T4kaXt6~X6C7ROHSA9AH@7Y%u`H;$v|w(T zG~7_BBkUg+&6Okb&XPbb01@J#6@(~1n*Krqn77l%4E8Ex&77ybO+RC+;tTg}*9W2y zk?d}8ZZDJ3CR%1hjhkO|>RmDPlz_l{`BxD6twZdvb!3p{<}PM`UEn@fq@T^cEG0;L zPpz-~{E}FLuIdC#9yNe{gi%#I3lw0 zw*Q=Syj9r8rZ}JC!9;AV?DOq&EQU_!wb+(2bLcA`pCy1O`F%0}jpm-6CALyfDFUxO4HP#_~M&;F}pVx^9jw%#XKhD?+# z8dPawAkS#YOYdP`FCB*``dRVox@m#s9uA3JsY6ot+tUn3{F9ss{W<7EP4%yXi!zt| z5*#=EA+DV+t4Do1q&G+D+PLh+CtQES7pc4QhaG&$X26J!h1}1w5uWwmo22!as?<&A zRlcadR^C^bZbq)z7Aa@ok<##45ixLn9TeQ_AenA{R`aVQnZ$YTZ?TJOCqnpl>QI(WdH8yPdY zl}*&eZZ1Xf6p+yo>>T8Un{Z$cL(o<;RC2va1lv9_2i;KD$TQ8Dt*-`k3bToqQzB&+ zH32_rV%e34!sne*3ec$r^dFzcYV0wJ2d^K0R*V4 zIMSRzcj;$70xl1=?*t!2HcOl!e&qGF{YpW$qAZu=c$BYgD9vNhW%{e0O<2N8siz`^ zvh99%t*O>yZXG?P7hYf`R`wFI!L+0Q^dxqlNq*=@MwR92`G#+6tfb)4AG1!S${2~I z(XcU1P2q74mYx2m)EzmQje75S8-pz|b#yDr*b)rhR5~n(vn*rZmCGR}<~iYue!2-t zc*J@>D6jAVcp~fcwB3(VI7i}0pTnZ+eC^^fe6^eAwKkK^_moI1gvQxAzWh-rIdkfu z$swkYLvhqNzPaO6w`OwpJVB?9Xv*RZxwfvs5LKkxbiGU*H<}6AFlAB2xc=By(_tl4 z=0$;GcLGOe!hf*=luD`#4GThAbPz7^)wM%QZ2yE?-?R9ONS6-Ne03oFs3U}H60F*4 zX(~ySC=M;J7gpi6=$q!=JpG+*&-1xn`@vwefpH2O+<9$4u@9Pe*g-DB{kt;CUR1 zK(^+0t6V?!F7OJ4n-(ZPKlZGa^O#vAAOC1;EiA@|nWVrnc_*&UCZ z_Nu(-t#;Kdv#jKMgn3&kO)90$(9F}y)nPYufr&w2;q#}f zn^cE_#El06^1 z{O-*?!PAlT9bft)MuQHXvYgQ`i=Qzw3cJ%X4?fxsfXzOcQzR%>KYWT<4L)OgK)?fY zicexnL5zlLO$=D5rSMlYl$UD>*w?*;-ZhGKjKB zOax5~it|4=d~aqLg-zB&hx7IG7hcU7#L$vt+z!*|(_r$Ox-w`=%IezG`Se5?eNXJh z*qDu6#U1NrLlDh5uf&~Tzm28oMp3dZ1G1rezt)131<~x*yIf&{TO}P-p<%1%;X_-z zw^k0=UwK;D)^fK`V=aB+owe9x~5mMj^iTo)_0Y8@n7jjrkjDx_aPDG z!we4I)4C9a-34!AwJ*dHVuwt~`>+qMp`=(fV!a_OCwWt%4))V)P8M(DaI2oLpXPm*4B) z^TJpN?8fXYY3H9<;c75Q2G!OlvGpoW89>snF6aWkv0U&hek-l znwRJ!K#G<)PqLOcaHq3G*y|dps|Q$2py^5M(;*#{f&2nt=e#IMW%A|@7{sFMP(}FX z@wZSC+e2XCL>sFo^WewxUNF6(&Z95w`7236MIU<{c+pFb_;#b&WqtBSmR5^SuQkFP zY@4i%>icl%r~d~0c;I>*S<#RAiwnI{5U=da39K2LD>iNJm%4SaKtJVru14zjCWt${ zR!syptaf^5b!?;D&nw%XGZaAdl`yMB?56@$*D3jCi40p4r=M4u^Cl<>t1RM>6$;14A{_-5*hEZ?t>tTR z~Sj5eb~{8@?3a7 zo9Eo#7-4kEI2MAjLH_(G7kX#>^aiFp_;m(sLEC@wCW{ruiF%V($Yod~*>%_NsAw{0 z#@LjC{fT8ZqKG#Od^JTS(mZ!Y272}nP}zbG(M}_4d}WCYbTi$DoVsI&?o-3a`IfpU z47+&VI6>dc_ulFXMr3GMiU6;RzS#XWB<~0514D#WZXl;KY20|D_8O8a!hY2G=Ya56 z_W=jNu9@7?L~|+Rwwv`B)|xj4WR@8ye346z8vqI&*r@4ATXiy0RPg0b6Z(_n{ARax zgHI3YVR=pdFEZ7YyiM14=$BMh{!zaPEsVn9Ox+*Ao2#-<_*xb=j>$(8k*ksHi$&>= zES!FHW@xV((=Fnsz0+?k(`Z66FMbt9|`W#Qyo^dy^d8D zv-6RkYSDY)YzZr%C)+xgEKp++62X(!h`CsrHkl8p&w&+8>M8S%ngtZ@N zW6h)hmk~Ar>tQRFa%chKdd{5WzP$mQ5j~j4$Ru|!JL$3#9zzC9?K3@J9s<9#85-3q zWml3Y6tMDo>l?_!)X2+jx`}vra9lktw@9)UEiR>t7Fa(hWyQA}&+vsu%mf{OCDJcJ zc9TT$)P{Q?ZMvi_{M5iD`%lgk|EJqib#v}B6BKfD#k#($5kv8De6umdYy~{KI;@G^ z2`$j@BHy%?5>z?UB<-z_aHCNFla@GU23mX z$#p2NDUOT&jcXH2t;f`?Nt?d=Yy5HYo0YnHI3)wh6@LT4wUI8jm2%66mmzQ$`&|jT za2ht?A}U{GQn<#;GAUg?++_0l z&#=Uy?5OA9Fq@pNT}a`yR6Tb5m06dm89*YmP})QGm%#8qXl`vI9hPyFAb0>6u!c=o zv0dC3a1CZHYoen>c1XX%mxb@5P9LDWqyxxBw3Yy=u)TARA5=Uf5R6Xl($@%87K0l> z*gv?b#q-uX%Y9h`Gp1gwYcx7Gt3TGVQ8vkhZ2wF3T_^egLS-vb^sj+l8?>j9jHyva zGQO$HW>yd`5y=jD1YQdYeYnz;!0+Gthkgc(ES(iJZc2`(-cB*W;afJ;M=pII~+3#p1%y&E_>WXk1Fxx&a*SNOtrBLmQsN~hXBzC8R(Za4Z|3cQU%!UfOeTTuR}jdR6JgxSL4Gv??QYp}_Bkrl_z z16f!!4z%MRUNUL>dTp}eD@W5|4xv5LC65`jW(aRw%U07PRW7zapI z=6$jXv6)D-M@fZD6ajE!QHN2M5Q2NMJSA5+Y-E~ly*B75_w1;Md4npTQOfu=-O9vB z9}lAypSXC9_cOBF(-#wWkxkp5Wu2NmT@B3qT*tP6&;cDs)fWsuW^PH|1+*T%qS*r` z{uJ>I!T&GzzB{bREqiy=qa0L3ML|HoLQz2wrAQ4nI7n3lq$@}-5$S;>VnakgL3#-a z0!oSW5|XHtNSEG;5IP|NLI|YZFP?H|=FFXOe$V~q-sk+o13d8M+iS1(uJx|H{oVTj z8s^aA$SL|tl7VnO$9w21HPr8ytWpemd~_2upK;Bped=ioEYK~5XEtp=HuX>t%Q}qQM$={ zYlNElRi%=&$j;uew+XZMv6l1VJ1-TXX%(IfGDB2~kKkH7;ynvx11;o0x5LciR| zV;39PCWIj2OQf=c(8(Na74r{R>skXsp3n8iXVsJneQizg>y*!J0fx@Y1LV`$?{nh< zfgWi4qWyqI^qy3|QLl?Vl{-V2S)~K+NZu7yq8jd}4Z^8q1;vSPCPr`BU#Haxfv%gH zu)SkD;7HW5GK;12@2zr?Liw~)k+`arjs(+R#&$H-KYoBFOvbJ_nHj-`Do+3nkntcp zd$ePwGjkc@Cc{|#2}Hx#2ZXk%U`_8{&k&dMJk^`WyYwb5S3RWm#!0}n;Uo%Z=}lDy zxsx?)h{U3>iOm++jm4|hP7gS|(Nqt!+nTSXMm6FFo)_GHtf}q=6T8)2cpCPWbNAo^ zBl$fOk-ESfzZ3nanA$stUt4?+eScFW?}V2yw)Ujt; z#TOwiP8$#3J<9yLpCiIcE$O2b1f|ZT3S!s;Q;$x{(&i4Dh1*@ttwPiqAKbZ}(;?$u zyg|O|h(!XCxlg_G4BW4yT3;Y=>thx}z^B;}rsa4wBC8%?Q?HMEq8*XG7ApnKfVG{P zzV}X_`XIb@=3Km9>06VfQ6i0j6NejJ{vaT{P$cFIs>hQYmZa| z#ixMz_1ddRa>d39m3}O5YOu`}c15wmyI&@%pG}UlhW&>9Bz|M!x*t2P>@k?e4)6+q z*t})G$Vo;_Po@bsOo1bis)gf%VoZ)m=nj&tVKX33>p0fvKPnT#uD z&CEt6Yzv{<8Zbp8 z&!6fC*AEA-NDFGZNIxl861dz^HRzeC4b^=e&y$%}{h2lSc{9__v3O-3snIt}NO0MI z<0|~(Q`Y0h{q=CgOY}=xZI|P|Iy^j&KTp8QMzS!#(KKDTTj5q_k$CyQ-9_V8g*V={ zSJ(C>WE{RFqx49ABuFgCoV}D2w{u1eHeLCR;s06(O=}h8HrZ7>d9df!q3qxp7mBC+ zY-Na3^|+z`2QsZ7x0H3-oaXH?UV~FyH*btl>5|62a#D0^`*RNel6kYoU4NAGsPNGjPlBr)=K?M`-aC6icJk6Ev!* z%6r|4Q}0dL9u;A^4}l{IsJdj!1Ql=V3Ln~=lmjaf1sL$Q$yp7I$MoXbypRL8KNdi9 z$i2avaKipZT9sE1mvmjZq+xgy4kVuV5XNbB-^oY0hH36idqsclHDONef>PTL9Q=Z? zoJL}<0=4Ua@BoeQk3eP=TGr9e0dj70r15F*;qvAi-#A^u(TBS6ED@dGD#;=Mg|S)K{`daj$t-9N{}~if%(-56N_c(+k?$NuUl@}BYr-oqG@SkMZo9!C4{)$ zD5YxF9Tp!xcH^AJ4noI3A$9AP4{l!Vkt~-cR6^2b=8T@ z-oFG?Z4b89^3`=Ry<-awNPxatqZo2!oL9SQ?L9A+gNlcd+1C`qzb*1XXHGiR{%o!^ zJ1lgtVAFtB?fGj@tL&Ai$0BcQ`Q1%%%M0wFH~yWL`S3z77Im+9A3m)2+GhG$=ZRm1jWsEi;w@wxFO zc|hBy=(!!aFNLJ-{d3Lr`NPjt;&=ZUs|c`4hf*_PE1}#q4`mD1C^yM zQ|vPIQ#@&ljkLsS-k-M{2G`mT*$$V}lKZ`4yYK522lmZ) z16^jPG3N(uL8*~^Gl`=Lho+QhYOc*bLYlNT0g?DB1x50g)8MuN7{z$_D#e-N+UvTj z66Fn!dt~`~JhKNgVtKG7N3C_emey|}kMM+*e8jX;L)*>YKb<<2s`{{7FSqv?MRwPE z2KDpgc=Bf`=FWRg=NatWtxl`X8!h-+PIbSJI`KJO+ulCl>K&6_nvo};=kGi&L zKWpdZxtiEivc*H6vh?U882;OWEpR}Au56W9SJ8~naq$8RQ-Y9JPnJS|wS!!KV1Q4C zQhcajio>1{gmrfD zxXbXmzt$`x4q&Sm%qQ;9;iFh>-`B=q*TlAz-U`Al>Cto}2RP%Qm)j`ja^+4&Ej7({ zIvBaXPUtGu6e#(+lY8JVD#?S>c1@3)7yF8f^&~<*;)QBUJ=)dLYI9=TNw%Ooqj+6l zX5*$oQqk8@33%WIP7^<#Je+5k_O?VoI@Q#RTcS1xI^H`LI+J-1kYib2e;S!(&?JOY ztdT+FH^iZ`_pDZ=2hgx5jW!$3uc|8-)b0%fT68wi7~JBvFhXk6I?U`S-Xf>!_PYI; zdJQ2vM%<4E-o_YrBu_sMEaFnUs#-0uRp!gU^zJw+hGmG*&Ult~AIk0DYul+~n}Gp6 z=I3*#Y}9WG50lqsTdJh1wKo`i>cPv8cBKuE^-n)(*<{`ir6C9A7>J-+o${cti3cf4 zudiIeo~;|hj{NjaLZr?V7uyIKdmdtKq|{e*F8N4}op^BQYZY+RDk8c_9RC4wAwcn9 zJ-Ts61VWsaX5p<#d~X}d@czaW6IfNqlqK0OJ-Q$9M6UO?+4Q*0F+*jtc&zQ)TInxd zLN=!{V?3?pel$g)%j@)mr(Rr>(6VcO{J!YZBBChpXee@Q$1*N;fwA527VV+|Krxyd zK~yqmcVusY6({U%G8nC{gj38;JGhQQti#NM_4TlIOlyi_Oju#vu3o*ItG6*4&CzzY zZ^4Y+sbkj-+dT#EC1D2@o3K0zrf|LX2Mhj-4(m|EFYL0RG*-|jaiLAlAc`EUF~fv^ z1HX&gn{&kLGGFP{XGb7pXCcoLkMh3I)>DyvZ;+)Bn?P#C&8UNyADp=GO3M1_k*j-O z9*bK}O9|`T9MeC0^7t_tBopUE&Y;zS5S=L@9iP}M>WDNV5xyjWve-sFSKIGzEYd+< zsY>#jQ4T6J!5u)m%$$pZq^A(aGue#~))HVUO){?+$nhUSYA>m)mUJa@s~E z`sHzKk-Z*$v${GIH&;7#ai|V&$M)LIm`fw#3x*=6^x|{*2+!>-V*-*qt<=mnG&b{_ z!d1}+6l5Ge=ht<+RxLIeG`>tTWCwk0tHZGr_+!U8hizG5Ii7D3FJolOpB1bxygHr1 zZj4w{kUxMvrGe}ux;neCL&nZ-PJT{ucpmK_<*;yQy(@pgCde3b;NEnmSON7F&$*qw zd5AI;10%5*;3F_guDk97apqyJS!pGNt=zUoMsR5E>97$FoIRhshLj*;r%SD}w2OK& zh-Aa@<9uCt$hDfom8{j0(A6Z_x}WzR(YgP(En9#3_urV>Z2xJ2Vq%=7O}=)sJvyBJ zIV$7AalT&FeEgAO?1I9}CpB1ocGZSsl(C-$1TVqQQ5uPa4LK*a1u7!d&WuTELzUgm zsLk1ysTSboeQ1{=pvg-gGoP?rXA++D_uOK18&nzuzCrl9g|sNUDuGx$l4B_#zEoAP zHr$7vhk%MZ#f{C6obFQLy)n>A^$^U)J#P*yGYNWz7%#ZTnMYd&zDA61AZn9f?{2Nl zb(QE)X3hca*SL%k2?=J1+$*9uf^=f6`ctnw7^*I+M5Q7V zi5uf@+_PKeN6G#?E7JP+>w5O@n&~jH+PxX(Rkt~>T5`SA2{Q6Hm!+ovkh(37nrKsP zC5LrmTMgJM@L9z&e6AP9J(|x8u$x!!lya(-qE+46e+-dexj<`sp^)vgdgWnD5>Ku& z2pUU^&*;;Te$DWYSUc%}kkPmgPygwor4hXc!bGL7 zGat%1#-*a1mibvPY0PEC>0|DLtmY{Lfq8jaMtrA#J>3j6k`fZTh7?|ddtR1Henju- z{8*UUS67_EDr{>5A?ItI;^2YyoZuT1SP2gdEnOWZvuUvBA!t*Y5mw=)LdAM^cdq(1 zyXIV5Z7h>t%H@z#)dJebBmT2OeOEe=E->SalrcrnP82S9WMP({DF1sk{FAEY`)%Dy z-PAkv{SiMc>~dH7ZyzAVeE^TtukUaj;Ihp+JP(;kk+EX>Ya_>t0e;JC8oN?Wr34vwlK>6;4(?t&TXdK8#WX6d9$K>>n===SfiVHwe z!FdIQK=H>3I?$uhJO0}TT;@I?>#qm=C4;~8;4fR)TJe8V27RM~`5b1e!Y-uw?~d0r z?I-Ihw`*zg0~Py!1dQkRaUl!tSJ*Vuq=R0znjm!l_MaY+I&`TE97JxSrd*Q#k05&) zZiWaL%AlXB0!{E_&ea}pT-*G$uaj%R<^pRbV9_4`6z3GU5TFmgTiBR)9% zIky`0f2qoIYaeklJziKUFEd`~SDx^>_gfiv4^w3-dzv4>4Qo zWMPytBL9eE|L&Wsz&TN~Lw^ndS>?bWsJprV?~h=zSNr$ocb4(?&T8$H1#T=5;rs3V zb=(1Ab^A;I&~BfQ0ugiZa%AZx|FGcwmR`~z9qPVWvKR3Kp`+`)d28@ef>5h`e446Eu?FplU;YN9H@}+Nui@A% zHPR@U23C(4?;H88hkYhDB``L6%BG-#&)8Eu+kYp`|5z#t%WKs zdcc%wHOUIyIi$!=aYaOdh$TUC=-%#?TdR#vcJPVZX|;zF@Ne{D%_g6pgEYd%XqjSQ z=U?O3av2aCIbLhy$v==7d=okagfIB=_i+5ac>98kVe+9xaJBnx;j@y!;obtXh#+IH zx~?5H43nUX2snE)8^)s7P(ZmGC4eLrYvFBLoaCB#X`|E@5G!hHlKr}6I9+0!r#yE9 z+mwMA=+~Zo_vjC7=2q-pK)B3@g5N`Fz-d!>eY7f0U(2|I1YF^SbF6VrI$1|cjb@u@ zA5@Um7~zM)-IxoOQMgmG$OEF@!O*heIDbd$LL>w}W<+QkOSHixIKh)`{9wp(x@ zas*suB!}5>T-lsGKG}t%H!XteUbb_V)<<+1>+wPBCPHa;i#g(*+KjOEw@;!~Y(cs( zRzMx18WFG_(uH)u4*HC$r@aJlRS{N zGX9l6j$J;Ui^fp`t^P~ys9$ZW=BT$Doc(F-CmAo`#HVLX(a=0V&cS||ZW6DQre z-dw3jdh$ti$iMZF;$+l9&Ds&Z?pR?hm-jj>xWv2wkJ!E7{sOh5V_F;#KT~#CuGTFO zVu94i@NaguY_M|8F!LKCR@IESB9AU1z!Y0t$PCcmk;-a$5+ksUS ze(6w>?LDjZo}raSA-laOCM<8L)|h_fkzL@JmbKJT+<<+EqVZyYu5Cb{vKcxE@`qKq zbn0`Zwc)($xjyDhU{8D16}+S&D0?8TIjL-Y*eU6kOY43MQl_B195nxr_^j||E;ul` zD3zQE(zqgJDsgRKD>b9GP`EyVKei_{Ly(7vhdz_h4hZR}5o%}@a)?vzSb_$Yo?{^i z89@;ZyfUnlyFQU?7s-S-yE@wG0@8-h#RBP2O%C&;*X+8P3F+nI&m0`{5g?+V25C9%PJ5Rx`$|$n>%$$5WH<-4(RyXpm1Tt{T|J?d5jJ;} zM+(&q&Rkl98Ivi5K1+var5l_(SiS7q^-lmFn&)Im{NPB$I?!&yYNjWr@7TtQ=jG&; z4FKCKoaSAte>U$zAPCTI+rp}Gh%e4t)s;0=VLUwyB-ujt!6(PV7)#Z1n-4y|IC`m6 zY(aJK7MiG~QB-@iuzGT5yuw$L@A|n6-%92e6V&R|tg01-ZqGGu6)d^CXz}vNQUq-I z_Ow5hW{)E8w*i;vSFlg=|Fi(VYUlY|MEm#7CKB+ck4rF`=BNB z5~_vGf$^Z>Lz~orlF!cy?l=|KO_px7ua8*ZKw96125;js${-(mOd75m$P2qKhc0@< z<1<3%8(j-ft$8w;FnWrdm%}+z_>2{r(A~-wv8(lu;UQsV(vsN8XHB&W1~Q6EsFhfw z;@QSQzs@njs9%Sni8B(Z7yWG7@}`;wW=cV*siV1rqWp0AAwF12(Dqh1M^vn2(_+MR zf?dzAAqh$M52J?Fma#KKm(u#`pJ37+6I}T!#Vnu4CX>Xz%v)4w3!(uIa-y_fdY<%<-wY3Vf$u8apR#x>mvC3ZGcn1+F$$c zCHNb5%mq*%B52=tca5FWVHqf(58L>l?Oe=wqX!;YyC-xgIyMOT_Cyaf&ZK$ohjVb= zzHKEkQ-R*d=g6OyJ$EbwjX=r4#1dRKLpv0g8A`Me7Qst@;+(EbKRhm>vX((a{?yhY zv;_z*2coL%)NRO^P;yKks@TF#L+d>Ai_>I`2I<*0{!tJlBXHG!8&&UcfY&IDk>R^B z5uqC^5L-}8S=S&p)h>F!>brywl@(F-(H!aDmybNF!CgbR)qxEnWuGq-0WlBCB@fp) z9cJQ4X4~iUY}dmh=nY0yqZV4wuUi-mPZo>pir~+<(z)1|`a{xr#_bZS{2Eu~w=eXh z5qq864{3)5uPual91i|CCDtG1!yad_#dz2&FWh=^jq27upEKhtAa3Q%_JlUE8A}2( zh;G?pG>JawJzzKac^721$wbx^t6N2NocsE^#@9>`5vExKk{!@u#+$q`n^i7-3!LuX zeA6+qvc@?S5p>(uzstdq(ykhn=2PubxqTw9>JqE)C(8B(zgUCs*uCt?-A(g>MgbPj zopar1SiX7^scBIBHh!E2c~5hP7M$ou3aB3yefmlu0q_=mE>z5GU+;@S0u=lHi85r-0-lP&!KR} zQjp^qRkefu&>kW$Xm{u3!XP)}=x!}e?hC?)*c74ztE$Otp2_>$_+tW>h8yqa(RI-f z>U%=o!FCBb2ab$M%K3XPI&=mWCt=j9CD!%ht5F^ZGqEzoKW6X9j9vm zFVJWPBvd%DQ2)bzYx@H8JLgYuWsz06bJUlH_8rioxhBDXvjMHXqP7#JAn8pqJ~@zL3Kbx8^6B3 zzkS9wgv>f5FWGatKe}dzP&Nr@8a~#id3b(tbljEeUJ}Jj00bnDVz!*mqlMIrkvM@A z(By`IaZ3l4%y5&dyqV?|HjVp&#KvqFx_Ly_b-K34Q*9xcKh0-LUYx)gB;^noGY~9Z-Hl~v6oox<0JP`Fl7W>z%@G4T4pu3f?F(Hpq&BV)1q zt>1oAhm+&5*)gvO+S*jeY^GQ!QCsaiqCX)E3Q3P~@G5C^{Pt0(^lxxTvDJPrIIU=) zr#|`2ZO20FM6TkUFE0wm-SfnpUOu*QUBqroMs?-3JFa}G=X5~kV*wMKK!okjP)ELO z_Xd2NSKW%PqDODOmmYI%YJCJOWNGK?-p`rKj?Fe0@EKb9rfUE0$wrUBKYQ}lrX0}q zhXL^lqB+RdWc0ykQPoWEPfU!-S}Zq*V|=dnMAjvv_2`685o}S0KOR(IxiqLKqU`lz z6jxc|Ktq@L!MG6fqk_#XGK;@8FcI8WdWA_w*+ifiV=W)FLf!$DbSr5qj& zrWCCpA|%?4-#Wq2ldH-jWlJ}+V3pUbpZ)-OftZd{H0sEQyD&rO0>Vc0@x7?yzvQh;mEEz-~O2HN$aaZ_X9~$$7HCq(s%Y z%9sx8!)x;8`X_u&fkkEq@+DM#Y}0*R$kj_R8l?)Cayl2v&5VoLQui0G{2D`&iGhFOI9~hiBvsp^r154_p<`_gHA@XQ)wpJ;^re~8 z6Lha-v15RQ3Pq{`iAtL~bgicSh@R*y2?5anbm@CZooeuNuh4kiZ|zW1&;RW+AW@%J z&z+m8+ocdS>yXYIu{9H-c#RMw!|LE^?hT2m&>y*}VFZ5B;cM%59*2-Tu!V z*fT=Bwy?f{mCKwhLkEpKT{olT(P!;Lp?9CtUHnyCij*y)imFECh80l$B>6qslN*Ot z8k4$|Ha!(p?fu+~RW){n(}&)YVT;(8d|mdvqXPs&d>he&Jxp2~*AxfaW(q)Mr2_cJ}+- zS1&M!pg_qAb)`t}hr%A6`>_)L>SH;fg!Z|BnUEoKW$$6hJ=$5Jg&6BRVS8thToC6? zD}lxT#M!B8IE*kD8f)izo{ZbQH=m;jnfakEMREX8Td7O=Q~zh?VmOcZf`IDSJsWCE zZQ%SN9*IG%RAp~#ElbJ~G59QqTtqU&`$Rf4hPYA-)uv?BfcBXF&C|b@!~R2IA&aYL zCddD|s}Wvv<6Bc2IGUr$bfYeGk1Zs5R9%)ED)ufnfWb3~zi`;xng(A~r(W1Kv7{&S zp_yS}w>L2AcU2Dm+}pY1vcW&A(!b2dleYsa)=d2KiXFpo46TDe=4kU=Ow}j1_+CM~ zY7Ck-7?9i45p!WHwd_*Y?>(G<@1R`lxj^z)X5!yb8^ddCZ?z4UtbBYJ+dxsMI{>KC z-S-9F00i^5D{^A`L@YT?^cUqWa9+v$4^ivif0(u8GFLAt`y6f{tF3x+OYWd5`yj>= zfTY}g$v>i#%LZH@1P9Ks_-8`KU(K|?nrZ(KQ2syfk^I3;{;TWy9ZYcB^Dec~D+1Wq z3lh(tI}4>KSgUv{jg|Cxz|(ENv6pup1OnJ&?cge-ABddayBf3e-*Xmo zJHB50Y8#L5rwpVsjfKw?)mz*Yb;U98%NKWtE%n@Ver(~}!!EG2^MMB5v}JwK=*o5O z*}z@!ywRC=l!DJ3Qx#G1*xQ+bwhG(ms~)5(nBeBXO_n$yZ&ZMxZKFmZeJ;@t!^!Z2 zxN*%Bx=@z)4ec!ILc4%xVW}H4Al6t}w}XCr)=A>|ntCP~y(wpeS$X%`x9=giaRV$P zIiM8cQQPrS!~f~nfURRK@W^ zvE41EB3B!*6lYYVmV3{3Gh&Kx>RpE0T|&c_2f`j@5IfVa93= zbdh-fFEM1%HQ)5aN5g5-s21R69BK13{|H(Yo^c9b;7@M)RXwNcf7OE8r9UEqA#+7H z??rB(%sk#7Q(>|s;DiekYM=2uY!|n@o-FxA>(0j9&082T^f z^l%8FhI(F3htW83p@-rhF=ivz4HOPM#BZJrvdfOkpwMa;Ho0S1#LRBmI5=v0@;)`G zB~k6fPzF2YP7u8kYkh>I;jz@x-NV$%_8guao+Y5~B(b3?_Ugs3xurv@>nLKaie0w1 zSNY^;-+mBBC>z68VH~@dchCk`F(w0l{jFOMA8o_H2r;}dUZcZsx3HI*c~h|}4UzqI5 z^(w6EwNdE^dn`hT(|F%&ALx4~{m}&21&+X^b?Ogn+5L}7+_KM!KekL&V>WVwNm29# z$MQ`kx@tewkPzK3iewj@=grOhy)PSw%gxggF-lc=mdB~nR|$$1kCoiQ;O(jnD60zV01?=_qStCtdS5z1NZi97~Z{&8T0t#K` zHWfVi0oY7Z&rk-;rPw{b4DnP!_jxl(makmZyZ=Nexg|RHHD^t{8!PyN^c3EB)Uzqo zpz0}s6s%0w)Q}TR^l8F}g-h!%!)#S@&#Gpqs?^Mqv7DnSi$|26H`%J z<0l&_RnOK~dN5^q#-t9N%_q_yYjHZY0UK+TSNa_P9cBXphwe#73&GK}=sD)%V?r%w#GJK$XEY=TllZu* zr%}+OOUZbAVxZZWShOpeRy$J@?7aMR(5t<&ixDJi;%8f%&DYfa zH^~aF1M7nbl`l={)Q{hYQQODVDf_{4ge)LnNyTX zo1o@7YTBNmL%$hV=Sjf8{1!sNKTx6wcX-34Z@l}Bz9EdNb$JVA!=Pf2(oh$>=%|B5keSItLK5?}Q-ERnLpx-!^bRb=*{jSLwLt;H z?aIuxNEEuO?`Xg_r;xzYQ%e=L9?pC;&yaadkJ0}Euc{b!cG70v^Rm6yxma?iRD-3}EKl`h&%Zo`c(j4k z2rHT!_4%}*uFUVUo(hCMtc=EI%RnNYMh{<^QK3X{rKsB<2> zg<=qtZ{h%4J^E0BYfwPt39zRt{Pk~t1lu!@aXnuwFg43%{s1J09dMW?MqEvPBm;eg z(li8xZ#2)zX^wmM-3eOPl8GR~8A*9S{Y1AZgi$OgGrr-d1h@>k)KNM`0w&95jpz&AV1S2r~xE1bOCEOvVGD)uUO1;Em#tWgGV#9T`6we zA7BBt?K&*7yy#wX9nHMLlJad}$)@QvPw~ElyXK;;&K?%c(<~Tbt@6Fh;|Z^>lRp;o;{nLL}j3k`1Ig+*L(!%uhB02)}sC% zR{xK|6qsiL^l1DKDVWsE!dJ*L5lyFn>F>042d$vaF=LqIkT>k2t?!rAl9}$)lTnKJ zM(MoucQNm3%orXx(1CZYKo`fWrhmULaMrdt&S>#gv^d8oFdA_vkA1su!+W+dPvk6Y zl2#IU)}=d#>@*vl7!zM^K zebFdC#52DyPdtr z5lYt~R{KWvT~2Yy#Lgl=T37?fJ_e=`_G;G%GT znYb~NJrJ272+kDC)A$AsGRC^45LYoo$M)=N4?`wvJ{_M-n__Zv2ey`KN0ZSaZaY8r zU=@>=QK$^3gg8ZBNo!;pi8O{H!UUp4`lA>z)-sjns~p1U^K))P@2$KBsFsRubCxUJ ziwLO;n~;?TgleQq^Bx8?j$XaE!(}lieABqK{HcrsOR4F(xC0*nPFZ?1c%-I^n-h%O zhL;(8JFZm;5GnwtQE4X_OInmmX~!SsUBo6mqV`xW_P0AmK2B?-HCO#SE~>5G{|mEY z2)L%BHn--eDV|)k&$q$6^GdxgpW~RhQ1lbN1?K_8So(KYr}NEqFMxZ6zoMo7BM{-X ztGH|x&c<)Jm$w(r1+44OaRskePl7kvO>}X9DYjC7^%F~FZoSpF0rSo6JBb@zzpA;; zjHoGbr?g6jVeQCl#lW@=FB-k&QAnE7^QhXO=0FTGJ*}S{YR^2;QL{+BqsrjzTh|0S z?@Pn-dufMDEOv9~BZFE)%IsE!CJTnU4zo~8y-8Y3usGA8ezQtjU2-0u24WMPC+CGxeW|a%nY55KYwJ%oRf7Yh_x0#6(Bbrq@nlO!O(YY zN1zqwSBeKFC$>m5>=BhanCFFZRGAr1(vHcj+Wl-g(fS1Ge7Q}aJnO+n2pl3wd;7Rp zMl;=x5;Y4>iPndEL1COjnPC@>vRb!t@u|uBDfWX)0dd=Yr5y=y*^`$)Buf1VQZzjR z_|b@8DKG)RNJQ{M(1qh;jnHolhsMz3O-(J$Bx=Im%{ENmMkF4Wb*E}WuwA6_UR0ZE zU%9^w)1T#R-6ZT4nebiai#5e(u5sSP9+uNH9n*TH_+5D*Hm#91=wN2VZV>VPa~ z-1e`jfxoxLzY3jyE|dHMS2xQ~TEVX^al^2)zh<)8CySUNYn znEVRWrgd2PV7;a*{OptB5^HxSSe7E*Lhhn^ULlae%HG-pGuZD8-v8-r<9i^}_*Cx@ zc^o`g!KDpnHE!M2_<2`lq#_DhnQabqjriX~C#yqS%e^Q0`!AJ=a^eMgZBaM!$h(!oJjKJ7yVcSzR8cS?4 z&5Fc+hqo@~I$1D_#^*mqpCoYcF6>vF0?cTD=pJsw&_;{CjCo5NSo`^ah}PVl-6p)N zv^<4aPjO5>gr2_?+O(b#gzP`3zTrU>T4B$Ebt4)z^awjB9c~-8c!|}aZ*w8Eqa`j3 zzR7RVCMTh24rBtn(mCt%j3g>9CR+F*U_Rit;l&CgU_z);OL4&9&&K|z-@G6^~WN1qh0X!;!_R%<{kwNl+K6`UzZyXoWJQ==~Qq++ArJLU(u_(H7HO7iMJSH+m+$4~Cd{*d7Qlr&hwOfY@zJIQB!Qc*M}Mcev)|)7V{91qNn?xGMrhBM zG|2YB_ypbBY!<2>|Fji_kAJ+-bC=a2R4j&%k&xh;rK$uo*m>>-77Slct)2v-ojz>} zJ%x)gKHp%eK_?j!m{(iq+xwN?K6^y_!C{3j2ivjpr|CkVJh z1{gp#Pufa_*TGPSG}ov^d$NZ6t$=~eRE@6#kAA6NgYvLcH7YKm_V_x}7^Q^N#kD1> zar?;{f~>gKaUXJ!lU&K%{*|hS;;mHRDrNF|bPrimuHVkR?7VNjgeR1y zq6jK76SW>mnap(ci76p8amU-<^px5W(lfwq^q$2r#$>zibUoT>vvxJQix$yDRb`)MZ+3?6Ptq+R)q3J?M;tyt-V>rg+8luTlF_s)Wt*v22Kp>o zZGCDdQu7_KFw!bRy9-oYw~#vL+r8q86AQu}hl)qPz7)}v8A=k@lL!cwtNn7UZzX69 zYGNBe4Om$yKh!A1$S5!2~9;dtIcj`Wo;`J5lufIh`ELKvYnl_h|1Kkv*KHEm5G<&$J}#W!!UB( zunjwXsTfXidJJEvybyJvFG|k@dQKx~2CCO|T)~i}3RHb~M^szrGzrcqgeNM7HOLHwvZ?nq-qcTK5SpvlqB0!ly=vHm z;4a*wNWA$aN`k_!Fg2IU#9;fXUpSvUwDC-8{IGlb($W!R|X%!TH4L6}D9{*^Z{LFF(-}C+=o5n!w(8)|V z>=v7Ct69{5J(!}q9k*!qJz*Usb$<(n{+>q+kDHe_Nni0p4JS80kWPk*Pw zO1{Ih>D@t!d)#L-xI!GfmwyhYLe9Q9gTuLUM0;zY56BgzwiMsRe2B$h(aSf62 zrJl&2NH+3=XGz)%Lxu49-jD`kJCv&vTWz_i zdWwDS{U;{DXG|+of@$d0>mGHUs+#2Nv|i_!z40xcfASUH;gD!?wUJkE88nbh)?1Hk z6tX_6p*=a1L6{D*PnX?B#dDUS{={+!vAie7cSuUeWx$4lIO$rJryT{IMMcMOJ)ku@WF{^}^AUX*A|J6J3CB8;2Dyy zl`|JlbmM$vah`F9F~-;*T+{E}i#QZ&nGpp?f1oUr&-fnuIS$8u!IL{tMtf@VX5}H@UTru| zCHXSCOd6)4#<4J@rpWvrx<(~w_Lk+;KSY*uXfDu*(a5=?=tVfeLw9ptwousCz5Uo3JNB&GW_l~X#|l! z-rElUNK=l*jcMdbXP%>dmLRLC`dPUvVq$XiGj(B1|HtSIZLD(A+mRWNk|}()!)^#T zv|7s;+3-~O(!D#KGx>h9b9W)BJ$ntfkFl zW0WU(^4c~k0T=yp0cl==bG0aI&C}1Ywvcy_)k+`u)cr_>u_*{-a~jAZvVn!Wxpfm1=|uwOeP2CDL|(4vkn) zeqxhsUsb`G-!@bSN83Z^c2jeE@bH*)yo?x}epBAI<^)jBezDzd{W35Z<4!%Z3G4c~ zIa4w3`Q`@f(C9Gf;c)S2ouu*(!IIi1p$=c6RprSy%=R3{3l$q#PIbJpqz}+7>?KUU zYTFlN2W4UIaSq?pkZkY(x=_|dWuvuzX3}zp1xbgGiR6Re><4w}Ras6b1x#|^qb{)o z`R(wn)aH1Z_|rC(&8UF!B+(11ZHb}&Q#%%w&R|BaK4#|t~ zoDbRAOH1uDOawc)bp(9H;SD}Le@mpS@9qPgFhug)EGt=rQOr-UuO)`wrsZ5jc)hWM zyH{PWJZy7(8+=JlA-7eUAktQ$YF=z<5qVgxH1!}1+cvUN7N%U5rX^Z8reCC)e_BcI zMhgwn>@~YcH@g8=ZfD{Ra(;O!MccLg?U)I!3iCA%Z!X6;_M^8^`><`t2f(8*jFowQS$H%rHqsn-ETRxpcZ1Fxwb8vGbt4Z*R>(pYghrDW!LkEGFax>OMyOkIdxNH(zkE7QZ&dWn~=eu)xtKO`Y#S!rNW1&N&tsI96Xs& zaKm!M`+X(8Sv%9bp#O_T#dy5Dow|POjL~$}kYA2|&&*l($)Daae76ZJ-%D1HsJmVm zEWF7^t#sEpdxm5~0))>7XQBCiGZ$m7xy%Mkj) zDkCrUGWLn3%FudEMpeu3!>DP>yqKi^XUVhK?GS;Gf#U#!Zf7r#t)^svUfro{Z!W*w zv70_g1LacSQpEwdoep{E#ASx_|+?Y zvzA`Lf*a9;dW9p@>&`mzyqEw3NWb_g=Q6CzLch56F}pmal1uCW+^eMfWm~RSEZeMF zRfK!w_<>Y?c&=7-Qn)H}2jDEMtF5K<*(Q2B904aWO|5Sb-78s=>_RJ)@p!S7&3G7v zPgny|J@j}_uZ&UZ;pPorryRPc`4TMiT(1KfVqQA^<@ivUYy8`&Sy7p> z63%@E=Z2@(&Q6SgbFBL;rxz+b<4!YLX(V?6*KZ(c^k&V% zubTF5vFXdJgV|E%aY}K@=EgOLf{g>khmIW$BKz={9YC-eqyhF2q3*C=1%B>8t(CuZJR~)qTo;BxuiIdGP zYfs%`AF<-l@ycX1N8uRC#OviQ4`PmV)D@nw0{FGBZOI6wYu7`hf|SjLBtuPn;#)#I zt`;4Oo{Fkjy2H->U+leSR8wmnFRUV>C}2Y@6h%Pk3IftmRGJh)dWlFAX;MN71VjW> zr1xH=R{`lHQ4x?X5C}C<=?M@Zgg`>b-JCXaX3os$yVm`1-*rB?mMDAgr~G^Sjm}=L zvg_vOKb{+{-;|*G=usg@A;|qv<)IOr))_s!I5Fws&dM+b8(N3?0Akp?BTg9$u6`&N2YFo`*mAc-x#hK<{ zWXpjM1DZYO1Mn6}qn<~IUGy0mxAqYm1KPDFtp}$0`LbxUxFH)%ART}r8=#h{04ud< zxRrCeiFUrVsYWp_UeGXw%!D&YF|Tn#-SbZ&R~st=!vE7N)~-?l!>%O%y1)t)%dA_R zi#YN>1^ch^;p^7P^E&wE^8MI!&horDVI9QQynwx8Wrj2+Nnmp#yKN7DBCIj_-X!Y{ ziTNwgxgz4?6@Ow5UbRVpj`P~BQ%lLbL3Uo%bejfq_to?|q?qPLK2V4C9(Qago0i(D zrGBTE4wz}4&<_L)>I5v0@!Lx@B&5N-hnEx2TlghU`jV1p#^(3TfLT9rNqOc@CbI78>%aoTr%Kd8U#IJ0|4V)UrUe4$^qwlg z2#pY1|8!x_yesKE8?eo@c=I{);S&&s$%6?`Ph841%HC(&k^wCRz*Ac+@YUVv7{_X`4c-EQ|EYW-x(pFa=+)B=z2^17zwej`u7 zyi|5%YBa0zdN20Bxo&4!CleYHoT6apY!=0x+@;>IPHW* zZzkgWCGGSWAmXU;YPzFkNi*Ow3%eXokzN5K+w(dZTrxJ2U7jyl%=RdLbPmi#{nlJ= z`!SMBG(%z<1Y@9|jGDq~aNEc5@O`CKNVYxr^*RiI>(KMHzkcP1ujBsib$m403$`mW ze5nNcOgLSLO7!`XnQpyIKC{7!svfetn`~T_+sSXNHya~vsQvkac+<@1QL5V({>%{A zjw7E-KOjNAsTsESSG!=BEL4Djw6udp9=HFuS@#?FUj=|kytt1SdO_+FGEhn|g>R## z0Z~^83?t%wP2Ag)D<=IZ1Mp5Z7Tg`#-&M|v4q#8P@aE9{{ty3C5k=|)yN!)if(^FR ztjjTAiE0e!Mgcukc=V7jTPL84K1$Cghj;)3XGu)(cm4T(3IKzm z)$@!p|L}H>0q}@;4{ja&`V(QQC_UEv*rPwz#aX>4klcQxbN0V1@Xxp7{bElb}!A$1eutAU)oa)(BMVQw>tmBEAt1CQoX8<{c@cLkxc_%{kvYKq$G`j! z`{8Ti?y}DPy{zAFMj-2Jof( zRe7&S6)ZTdM@f!M_1uRZ-WES_k6VR|8n>qV?Ff##0*rO6F6Yt@(_^GEz`J_UzcPL^ zF#CfOCRE1f7;XB&YtcP|O)>xOV}n~_d|_7DwK|%f-{kqqsauH>P=O?crGlk6-gDYx z<11$N#ur18g2^AM1#aSoCH0ElZ*whaj9RscC~{+VT$OGr)+xFI*6ra1qU|e0^@Cw*%W=*px6^&kL3(mD3&h_N@T@I{R18%OO zF{n1;zuxmdanI8_fI$jgR5ZV<4iyLvRx_&aq_D!T^LO6vPrH7hm67$z zxwS>BGE;nGP|b3mZ|-{>YBGYhV|?o?o^YyAbPOCl0SBuvPTv*b1*!9i1K#te4u_a4 z_k@gx%hHb7%lM>DG*h*|`eXVXj^}g&;A{St1!DPqi%tbLv$H@jp$# z-&}Jkdb>URv_#DD+ulJ8p)c^M!|Vs9^^-2Y&jJWUsplucCEPmYYgTj2Pj#e6HN{+Z zb>t_xF}^$|QROJ-VLWE&tMSX`SdsPd=@0Q&oIdtQxdN#N=0{`Der3$P$!yj-*~*?4f8&LRb;Qb z=ZQyLo;i#-AM_aJIM!YvC-BA&A3xnO)%h%f6hzAZFcqng|B-_&$#{uvL%=0s{OsJ; zgQx9B4UYY$I~4)Tna1_7TJQ&z{@(p@zy{}>073j)+{*5L7QC1d+5VbUbC}q~RfxJ| zF^xAKuVXI${$wOTQWbr!xwHE$4O;Rr=91G*l_mf>e2H%qPI}fHCtbNcQCg_)ga$uA zj7|$z5x%mDi~FV3_s>k~p2@wv)$NIJ7AJjfme?C3sv@NhP0!r&J!6B%YRHkD+^FUl`Q)K^ zuiy5$8L(?+(4O{+{B{!m^MZE@c4J7QihsnAaIr$ePSF#L@QYjSe2M*BGl?~!B5LES zsq7a#C-LMmS>5bDw?hq36-aZY%HwJ6Hzh5?L2T?%T&Fl=p1*w95mRo%>z1n;phTECn-zat{?4`J$;!Cq;(hCYJDzxtWzYU%hP`93SPg~C zDZS`gFsCU}c@LU`OfPk%!?DGwW6g-V^@N)ZzH{ZtFKL^3sa10xS#jMdx4svhp&0*0 ztzQwl4i*MdE%n2f4(uGiYmn?3Bc}>6UbBsUS3JU>hoEDDXkQZP^wl?=-F@n6#rv;1 zg_2K5CXapx-!2{L=Z$2{2%uVU?sC|qO6anNm$`K(5Kc+hf5=L`uFg%p!I5MakXc7~ z?UDLUGv{`sfK}?rgzbfvz9*nsyjX*$gi**fA)W@%3sF{I5m#X9=dUDRSj(XSFHhB8 z%h$NvwP7B`jB$x?@=~_Zs&iX=#z^oLF{LY44f=-T31RH4z|;EfZf}j#iW-BH2@O6M zKXJwwERpJldHoI$mb6NLGa=qv?H-De^yujyRtzk_6L_9qO(=PnK=NL~Mu(_Iq-t9I z)#;70Cce0G01oQD5$t9JMZCe`^)4wxSgjG+&*mU^d||m-tlG0RqBg@sE{?*AouS7- zEHTCmc3fy!Q(|Ke?`y;H^GKMTCm?fy2`CX)6BBC*goaJx%fIz^a|F2*e-n2+jJ#I&5}P^ zqR6WzO;5ZFG3HzJ=@p0h@J89!NBEp)q=0gH5o0mFn1!A&=`ltxi_2d4iFh!mS>S5U zo!arWI)tJ-b@+z$*xdFk$^n?qVHPW;ZWm?YGW`};7GLt=!kRj%)%Fx6IlWW0&Dyn;uf2&i zt1s0SC?LN<^QPWIl6KIAdZ(e|4_Nr$Rle| z;7>I7OY5$*Td%A&xg7v07^G668h1I`COBn@s;lz?$^OnHhVLb>^dN6siIj6!Z%`ud z^oDsy0&nGACljR6f)1rp{6>s|zF9}szKv97ix|RO(B1KFEgN3tfsx~Wm+q^B&3Ur3 zNp~N>UNEjj|Y}zBhW) z8l1UY(oWx7TDptz(^bf9)cf8RcA*3kUkBVwJcEdOiHl?kLA1zr6mjk>Un=ql*$W?{ zo|j{9^HsK?ti1W+uNLb26Q=+<^gM7>?uX@&#V)O!|1A#4uT!DzmX#vmzZ?>K+=E&R z?SY@U}VCeLEM5n0c+99Ya_x*yAq4teI>+Tc(}cwD>{ zQT*0dK>`OeUnO>?W;R-Em*i z_&uT`cLp#RwA&|6vP_>coXyqAB{(%yG~@)TLolYgOie$*S-{k@gfyJ-yzV9o~MbsrCe7@j@* zPapZu5vYGL55Ar`wwoK(`Nbvz{EG5x*ZxP){4Y=bz4-1C`(y(<19I^DvF7&wNEiIX zvI6Y@vj#@E`B%~XpIKJlZoXkI_*dT>cv)Wd-rrL#KYTL4L1i4JM%9e?wJ4Qs{t`89G+JU>~nZoNA1)z8_&3!mWL; zCE|o3ug`W;jKGcV0O)CyEbC%^q!-*NLO!rxBGh>Idmx6ylF!T$@Rd1N4(Rl<@6OeFRtbWkh8o7?;qUPAU*GX}-U%c&Y|n#yoy>wL0beO1jAKsoB>SU!6H#os`d-t~UPWN&ErNGr^ z$hdBdb$hS*K#{WSOOA1>taDpMwKZy4J|7di!>)jpme-&{eee@Crn>p67l4vv-<*Q) z(51}z-jVA+94I)rtmG66Pn%NNw@qTnSFXU<3cMq)D7`^&2g!*bV2V!6FGaPOG-Icw<7QOS%`Lit!Un} zoz=yw#7m9|OTMBbl(19s#eS>z6nuCo)ToE6%VE4m;iQ`RG|FzMG=DdRl!~ua|GXsY znT|%c?Tuet3o=*-Q+F$}6u#QoP1Nhy-pAvs9myKn|$u7 zTcbX6kR>3d{p7cxl{ZsfCoX9uicIF&bj=Rr4cgfrW?*KID?yd3eY;7|Wgo`ncOP_0 z)Z)8)chL!z>DW6x(|w9_U4421QB^kTTZ?Sbo#CmH8Xxx`nr>yQR(MD0h%Ly~M(nNf zTrz3!UX5AE6wnv2AN{UZL|P4H;h@omvMqwzzLj!A&@yS0&9@!+O>1ADyc`8uo9m(= zfz-L<1P>j8z4YU(>`Vyc%MHGIxt~rhRi9KMRNxq)(GtzQ%B2*sysT^7`wy#IYl^8I+Kp#sR5wq z#1p>CbQaO*89_&={<;KHp;C0zdiPC*1D^f%q5mTD|J6R;B<=bcA-`JW9BxgV9(wz<(xb}VarGOfXiAjB_>}YM zy6=Urx1hUS51Nk?doCL~KmXiZ)2{gf`hfaOm*37!8uBe94@UD7zEa>`R+>NHpM&2USHnUU3!eB7tuR$lF~=eDpOBuAAW zfnU7I>t%D%^uw>hTez>h5*M3455QS@EKBDHtcE!c)q5+Rc38soPF@);`AC2mtn`53 zkBf;%NJOOnddq%M8!e$=ByOxnwhFf?kvvpfFR>noXF3-k;Eohpli4KSA!1_`lp(AM z@XNbh7p_(+$>(u&QY%mI1ke$+*OEA&)YBRlzGkf0&nYfuXGTT`P(wuJkb2%Hi& zIo>OfGiP3Bp=|v2K{mU>X5y!pC+6&>c`4URL$7<>CSohpY7;Hu#_L>4qSkKM57cL$ z6f_xGrW6Y9?8lZ-Jii!%3U&OFN=*?rYN_$}Q6E!J->rxn~@?=KF$2aG|r zZu4eno|Ig#2g*F-FpXf1euTkW7tG!h!zjw~im|Nyczz!Aw2Tf{KRh9pwGf3Woo&K* z@DZPOMO^?TgNSdXwrTIaFLAK53(5PE#51WWE+}sy6=F-IULMsh-FkeODMr9X-8U7D zLOVa8{|S=xzPn43QNNI6Ucprz+VDz^+qJL7*P!xE*92nw*?mhgJwJB}7v$dGL5git zo4@rIO!mpzEab;N4wHz$JPK zANG_4+(M(uFqb9JkoIm{dGnq-nS7eqQ076d(^SDdEGDH2EQgV%RJl50ZiE`X1-0Wh zm&`vzQY7U1fSp2v9_UOY}@A>F#=P!=X6j$qW}nZCZ* z4~(6(-~6JyQlnUR15PFv6FBiDkrgs{*GM|_mtzqs|L8U?m0j9xngP7(w*KIRgwDsaq!{O=pW8DDSZvtt#~5H;F^b&*@oK75-V2GVD!wFFFJ=Bj|uI)q@`MU zlfHXdo??U>Zd!g&Mj>$WuaLoYQvvf0rW_ew=~D7W-0IZeQaBB{j0vV zJ|$Bff*%IfDZ*|W6HF3x1bMZ%>$U6NvIQIw2!C8e^MHGiy+*uPMw$%AWrM7pjIl?7 z8v(^ft$9Y*^jRHZtJdD%wkP)7QOl4k7n+}!od&(baW|CJ%I7($b;R?*&!mE!G(>Um zLZPcU3fGP7WgyfdR95Bo)|_9moc*)=#YP`Wh?zOe=UEIsv>R93Y5*GIP`IRycnqps zpOC5bShFud9*h;OazKgj->Z6_tDS1FTh#6+Wtn!rOm}o$-gh}|eSXw1LCE~^z9LqE zxWqmRF~MVDAZ4T7=Ptx^Gtr{^msW{3?WD`HwJwQ^(p6n66%1Vs)pOSCBd&Zr7KJ)D z>?ezZ;{x(Zr94Uc0wC#Amay{h?zI5W}kx^=9^0ce$)w>|Yl z-m2L`5<8j~uh*iD)xh58pP{JfO{0>lyL}RbP1^uXSkjcdupQJ$oS95k3? zY8SVXr`=6k59&4)FJL)y?MpWq=GQ84hSKA`fT~OE-UKI<8dn>b6g_cH049@xlZzsh zxm=2Ld2?F}G-p<#--zMrFg6>Dn4ZON!HlQkcALR+@$Ds`8&CX2HnwXFI}N>u%t*n6 zIk}ZU#-(8u`a)Exg_SK%1h8e+7beXCJI<0BBhzajoZ2NiX!kkiHeew2Y*Tl9!QHFO z=dP;v97L#!STsJuj@3Ci(bS(IP=kYy=gKFK$>86#NAUN##LwJqCk~1xO6=p7loaIQ&^ylb{Yn_5K z-O#OZyu0<-yEC)mxpryzFYs{do|IO?z&LJraa}XzT8xE!;}{Vwc#OJ@bpS@V;fE@? zgsx`B3RD;vRObZh>gwya%2+$&Q6*9>v0NT0 zdJ%a=6z6?T%IU(PN$B9K|srvjK<9@UUXQ#&Nj zRD&Ly&!~&mla1hfIJzC2r{AUBLrN|B%JSo;|M{%lV66+CVAgUeQQ%l1+lixyf7oN* zhp2jHXv!DG;7iRLOT|`V*g8b_-8DMgY^>X8j9Tknna>bqzIQ@=TZ5OXA|FikcMVu0 zAt!**ayM}cF`sJ3OIbNWD!$k?JfDDHlt=enlvpdMOzHN`V(uataqp(qrL`tb3rzbP zp1t28pxJ3F2Ch-5NCYY&HQu1AI$|d0?taBEB5}+>`I6;FvLM+oZu9D!NyeWL| ze=C8zRXz3T_RFU&0*)L*VAYGPIosy+P~u|O*4oUy3-i2gv)yMF#tRY;sbB+T7DoUp zUM*fA{(kZO8xfpLQM>&+P9}j64u4^@ce#fQ4a&_r_OpYN^g<`tM3d}3W<(N_++b-K zU?TN%W=HImq70i!6N~$n6hP!9@2ON+E=xrvzpZEG8KR2Wbn*bLW#ZX-4r$DVr}%Ym zC6s)5myri)Y19`GO3~U$L+D_KTprne*DB!T+kCvDb7FC5YJG>8Lx;EPON(dG&$0-$ zoa^2hLi*BHk4%t(zRvj}!?tjWfkA}{pRt%-Os4+9CUB}JAA3b4zt+Tcv8(`4@>+{_ zl^Q)2Q=(@I)ynDE;AqN)rY5*;Pph#$%CzSc`!e??=q+RmOh!KWFo>D!j=d9}D*dqq z-CojVuwqex(hXdF{~k9R$ONMj9SqgXz;}mTu?pnVf^njvVTnRlBO0|t$>@;=_r!+w zJ4d(#@JPQdB*j-=zRaN1j5V8pu5}7!Y$F}^qMnr^e@aWNBeG?Z^emSJbepZE-6!G& z^y6;5JYM`{+rxb^pqDb~=jow?Fj}R2vzye(>ny1XpzS?TEX6UzMZNNhnH|TVge^QX z8Csk?2^CIn^hkV(y^vrmUZ7E#vs^u>GEMMZ`Feq0e|Ef&b?rvc0`8om|32d;NOF;&dF?aE z`Gt4v3M+~HrkPzFGd&ldaOe-Lrrr9b(&vMEi@v%2O$cyFB+1*I1{$MU|7i)&i73X z;mG2-T;G!s4+2NwV0?1K_78V<0BMI`OK4XRM+*(bNfs=Wx(dJ}4^F=h=5r*rg>RtWis`+Y?cYZIKQKu#MNFd z?Z_>&tXqCQMorm)RdmuBK2L|Abwrs8R@bGAO$qwJC+@@K{mS@V6#ZMV$Mfq-B1u6m zlF!p&r`SEE)-6Uh<5e`xv$YN{`ez6N<14%CSydLXHk96RD@MPK0%H_(ttORi7&`0R zlsWz?rA9{RcCm-0!1;yYR%FQ;m?pyOG4yDD`}|DjP>HQse(7k7^F;lzd|NEbAdZ|j zUTU-Xx!-oNS#dU1K%(g_KkYg=Wr(-bG!mV!6u|%N^wPFj}JF4+2uPAOmnp?qhSu%cI{0xvgk`AKW%kxpWe=D zLFSUH4}tBFpxL`P^I^d{7YuW%+>A>5)$1~aH_K$WQk;f-5Y9;o3OJi|4N?a5F6D!A zXwR1-MQy2>kZ{GCK2rB+b^h|;DW_&BmrfuQrP;&?Cp*>&sJuRFMb@O)gy_!@s8i(d zy9fz~;nAhxk?1#VDKfb0LyiL*)ZCj5wrQS*dmRV+8u2OD9PC}XFt`OL)_%gUY&m%> zb#`PiNJns3+S>%T;etqgL}os_T{8(K%$DVAfmC2X8$2=&7clS%VEOcvdy`03!F!T- z=_A1L4eh0UaYZYu?TsoCobt18i2m_2n^}Do%Uf!1Y-dkPI!;)-XkcjM>Kw&45TB7b zLsDhLLJbO2wX`mYRA!p>y-6B{TNR8hvw@h0Z~OM649^*bF>a>fPnI}BMfx)2?TXj! zj9g6dgXFtdFQ+oxPzAk_GSwe7UZhiGQoo9|JXQ_ho*Q+&SqFTQ(@^v=`QfN23g*MG zLQOWhjm&gTGal?xd}iG#_QWNvF-+fw4<9z<3lVzjq&kao5DTL(E?vgfl$Pkrfw{6wsuU$-rNl34hGh-OOY)DqC}tVJjo_(tkNo=xkKrB& zJw1K!0ty@-j;c@sPmsZy9Etws`t8{uLnNGts~RitU)UaXKUb*ex@Bwhk~2*6Mf3Nk zGoFRpu&cP1o6Bf-zt7-$STkcI+u{|>GHQ;5V23vDG>)(Hj}iT^fEbV^{xt*3dbN06 zanGI)D>r&lFL9P>)9n>uANf z^+EE~h7m`-i!4~hh!tE4*no9KBtq8h&nWTwa9=>wioYS zBQYaOMyHp0unZif?@JW?IreRsai0}J?RABkdt4{p2xETgi_tbXXc)Rgd`RyvAL%|` zyJSnDL!5o+VgcfU^|9b2-{Q7m8EAuJ@-DC`270V~-wo2xw*YAOV*{}HJ2npHVIrgw zfH-eje>+Zm<&3)E(btNC%a4Nss%NQGDpcFM));qeYa0t6hS~yixX9>%b{l#u*T&Y6 zRVl?l@k$nmoVG5xUQ^Ba&f6@IoLp_2>eRObEl1bD<{4Di6`;XL@MmA#@KQwLT#LlU zogIt*@m1Esx@GOYT9pL{>4mH0JOqu?rl0m1M>|>wYP~Ww*G+8!B4=9zOa@QP6|YTu zvS?*q9dzu1D9u|2lIa*&l6M+0L8qMZXcu!pWV0rZC3~;B2;2?8d+3Iwk%AP5NoD>~ zw?zS41h*mnU{TX4_J^Gr0SfoUdvR1xz3LX+6PW+d>Do4AnWA6Eu@zKx7mB@7veXP=V_9>j zOk5m*03c`Y!RPgV61F`DsrBn?P05CnqlPkuEP-Nba`v-OVS^EwYwMZDo3M5xOLvZE zB(pn_XY8K6I?N`*Y})X+#+a0rY)T?BBTe^Oay(i0Hx?ICEVmkaY;u z8}l7~qrF!0T{Wbf_5@+j=zWTemf(Y>GleK^wgp!p)}%5GftcQ2Zzk?FC6&%eZ^ozsrW13I-J`r1w=v(^SrMJ@PA!5xk^Y~ zdd9Im3Ke^0a*4lw}}f{P7Y5<@<%K za8AxTX%tacM||>HLKy~L1Tk@90c74F#$n~t8SUi4K!}5)GJ^BlNTmOjn=W-;m_8_H zMfo~Bl;d31UzUUXbs-CF5QrikLQ;r>`^gJ?se=cAvg0FygBPoDI0V^aVRVe>xFR#X z++fz|I^I37ll8Va17^W6Ld4w&W9_9m;rItN`$8((7iFi?7EGnEXQs=X$dG_Mnpiax zC;)Ek|LOHmwqM_Eu7VnKc|F*i8}{+rGjAgM-TPVC=Bc>1J1q%kT~K0ypMX$ZgXfT? zD~E~MyGJkIM6!OFsJC}dV%EYcWL|qbJ3qxySof?|<~rp2C$)A#p6MNB#zf2;rvjab~o+K%73cjvrSs5no)CH39@Jz>E5W-i41@Hqw zvtPt3ec{cBak;t~T*mNHY{B-UjU}Hx1t5{3rg){=yF;v6my9o(DjnAsqA zR8hrxE29cb|MG|>+@5q~vu@L}si;IAl0MW!gwB?Z@)Z^;FFK27I* z;_@x}HcOR@8zY&g(J)`s^2U_5Vk(3Ki40@iK~lh`oPedeq$muCWOj5HFh+yJ0KJqE zXo{CKuN4A6xGxHSh6UR0`pQh}x`}UXqfsmp^SJz=LKYK`qZ5o%wABK_-cx<9GIuNL z3h;*4|@!?Ea`NPc>yxf@}`CdrWj3~h6HQu4oWxmTdGC??aO>H)Y z2(_c%2zvJHqv!INQ-mo4MxG7dS2BKtXxEz|(NfAF-^?}LFJ9>2PCY}Z3qwbcl)1@g zu~tJ)WQ(eVU1esBX)+iw!(1{%_Kj_ttSj$Ye2&Xg;nA-eiMi;sZ`4abCt|-@yf5iv?gDN!?_Tn2x9tJVBI!pp zJetQf+<=}mLzjt!bOuq4&r3})!Ws{g$KDl6uMaVZs)tpc>w!FbUYYx7!`f|afT<`$ zF&rtdezShCMEYSmyMpI!zFH9xp8>vWOF+UnCYH@v{X?l5kNUJ~l{N0nA@~{Yj+oZy z;PlSxwfCy#jyD|hFl|I+s-Sf#D;5eAn?xb>lbbnr!ntP-=S5GkIe&(?B;JPhbVP*& z=bF`8qm|ihB+k_|@7QXNR@s#B0K83+dxsT&Jb3TUa7Ox8)zvRqbMClLJZM?4rWMbk9&*1WuDYdhwIp?m<029JKMP@1u zms{9ol2o_?xB=}R^Cpy}R%%pvmueV&>eL;kTl7VF7Ss@6rb*(OMY@Tt86m;R zrtLLoMjY(FJG<;S@2jqw64dTAvYFl3Xno~HO+~!o@2N(HjU|J*qkT=rkaeseFds*- z#85a^C|SItZ_rj1C%I(3U4K=VT2q{lV5D@`VKn2?q^mT5VUX5?`N9JQE&=w#r7zd# zhmD~JmOHw94y&(}nGTeN34~6@vY<b>kzGBiJc5wL*hjJ;^xO`-;1Wk0HAf( z#mVZ_ZAssVYxZMij3+;f3Y+=~2%Hq1Y$Tmz{RI8$ip7C;BQ#Fq!&rq!RvXzjM`A7v zYUmc}-cFWVHPxHL6W41YafEUMSjd)NnmosY)Xl2l@W-C6{6N62A<`F^kay^Nd*Zi? zDuSe*HR6{Kx=jX}(vZcZlY$m^uqcX=0v@H8h%p(U;4NlsEb zu$-H%VmFtRMFGH)jOIdx3bOb+2NEYgP2Jds5RN@Y-Y!1Vm**2UJX<|ls%E8@EEZh& zwRUSl>VD=N5D>pLzZ-V~L8afb56*NMPS;`PKBEyE>WL!hxi*CS9L_IMj?#pr4Fzm< z?B#ph$s1iqc2lxjJ8u;#^12MJU~Y%9Y}=5F8APn-zgP}z59aGOZ8XL3fdz`p@*3H% zKhfz-5WeVwAm%$_;Cg(1B-jGNcaDme&|4uy!bQkUm4H9#Mj3XJezKCa<@_ae5ECkl zto+rnl~cq7g&v8mIKULmeVeiCU6CG-ZFkaeeoqrPV1bhB-rmRa_0yrPwXP4lG14v1 zZ6lvD6IP0^Qb2p{37kj+I;F*$+BbS-5sMsAUBzaYDh~#*V2sM4vma5z6p{7Rqco-{N zmDFgLj)E%}l#BVSvCLx9q>!Zi9a523roSzs#84#qQGd?XHd?`B^F^GHzE-L4$YPx0 z|Ejb8C$anVxY3&`=)z$0`PJ`jlF3Ch@X2&}|M?tpJ#kF}-PGGuN{F~2^-Pnqe0L%b z5NY{iB2R!b9kE>m9hab2+p!>y(toj@0p$?S)i^J1a#AXgI6AJ?_4JJI{nKj^lbrl9 zs&MuWo14^U`O7(sWhfmW@N7Y9=F-i5AsCx-GU4PZ?T}=Ik(&`;ui}G!TaYK#tgl>* zmU!)TC1YVwhgQQZ_?$~X2NzCju4XCi_gMg+fw^r4QXNSO*>@@Ll5U0NFfZb5c7ylc z(~y@yd5$ByPDin4Ge(br(gE~Gj)T}1$*S0CbVZW!n7)61x$hTsRn-@a(-G15OIl(d z>`E$_4I<9Ts#n=|2m$e#*!;}e7>@Be(;mJ((q9P*F;{Nv(<`toN<39I)`1t0D`6AN zs!+xN!BC<+hTlxDnotQ??o5E`8H_EAZmya zX?o#apAw8Y-wQW9cnk<0N_UOpk+pQh!>2?N8o8u&vN1PwRpcGB5&;WXtw3bb232m( zS1PwfIdojsbMYVpmZj*5s~Kwq(E_rudO=s zzqthO{UCz@SX)&C9DoZwSeoZP7ctOmZ1oZl(1poOd8(DV#~6`_ds7@Il>BwFEbz)b zcSPv)-vt2P$KKo-&+L(OGD+UkWOsVYG7}_t*_k8M zAH_0?^lJ*a<}mh|`6VzO$$$(@D`-SP*Xa((dM?Ka8kUc-ypJncDK@(vVBvAaLR99K zdBqJY_l%1weonPT_*LzppgrX5^RVfTRKtM+4F`BAr(qV_aTBjtq?;F$2P%|Vx=@rF(IPB1oE?f7SbF0Q@UIVp7M)T>o*suQZAdx-$ zero|&ngm+FxphSOgedQNbnrgO!(0tQA1-9as01&ZXpdMPwH^+_Kks}+W#fr{+*M+m z9eGT`tzJPU3vSV~;;-j)DU-3`(#sS6vcu;&W)WxH4Bc`gT=eA!C_B|R+_36z<8;J_ zC^88uqa#aABLu;Ze(_xYm~qAw=VE{`{yI(=E@>*h1acRpZX=(iAT)XLUjHlDJS z+t-2o^0zT?aE9?V5TV{JlgV6a)McpXOOqD7apOjeaZfp?#N$ngq#Q(L^`B~Q0?m6biR+%|mp+XU@9`%=2%$IdqyUbm#m@OVJdr}o_>uP^XG zJV^NH7tZ3`)O9;N5Py#0_HiS82_YrD@bf1QT9B)Y>rXumU1RFdd{{je9`moQgx>3#{hxFG?6H>e5- zR~|PCgy0O1ufJZ~9mMeIWlKN;H~@rhM7#H64w2#gi1}|m2pol9iR#vJ*j`r_E8mVK zo|AG;@_oOQQB7tj0?A32+sU1ZW@g zKi2Wb-!>IDmSuZiVVCJvA}v^TZoN8qs`TmxI-IxdxI|m|NTmZ3b=nj;a$KTz#CP#d zxEk_P1g!12?~U8HPPX2}H;XGT&-7NcJlpGuU+bQWg}Ha8NfXk-w&rB#{t_!8OMMqm z<1p{;fM}sZNVb7TzoI}8MOJ1Km8W1NOr%YMg-oM|apCaR>vK{f7T&9Q^TRa`>kHM^ zWzhS7`O>HVHflVp62R7*Gc@`I3gdX8Xl}pKzyH#I`xmA7gTM>e)c=0L-)HbQ9sJD; zf6D`AXS+c@nBMkJU@&fKuHOg-=eFvfp^3_=#XuNH-|hiw?~%sOBs zQvlB+Q_ub==~Q86hm9&75vcTwxDlinIYoo(eFIR)gRhYoyeEb zZ|(q??PiLu-*cxQyONW6km3LHD}O@03WOY0U0d&eXI#y53nMdD=fDP(_`I}LlV%$0 z!-XnQh5YDrOV%N3JblU^^fa%s2f>ue|Y4w`oHe} zPwV>A{r-lWMie@)1L`|`Mb?EDs<^|C_NBE}mvd+)0Fo%9M)uhMT>qcQL5B(el?)+5W-c8q6xF-_BiJVY z`~jtO;BoMAeQkz7GS*m7{D&ZG|6zh=?Epw^xBw>G@gw`OcIWZ}f07@P7yv8!TtD|= zq*PAp`sF|E>>pqGPdD7{3Lt+;YsrzEfg>c9PQLufqsOux1;({W2q^|CL6bio`YT%b zZ!5x{1RjqqgvcC38upna^Z(@YL{WeYX%1J$ZGqK~UuL@XpSJls;NPFm_Prbc9E^E! z$~X&tOgLZVCold%#4cvH>-PpPxLu0bep23CVF7Gtshr!V0Ff8AaPOZk z<)6jMe>#t(DL~w~r+F_=?t*I>H=X#2bK50I}RbJ*e#gR$qJX?2G@j&A&d1K%ir7mszWnpchTZs;fAZ)H{Q;WCf?C#297HDar~Oy<{0oB4+C^EEd0AW#1n_-neDV** zFMcO(9U5@)M8tt=rvps5E(e ztQ_z4)k{<9By=Qo0}boUY+L^s3G@%i{UvH2QH9<8rWtgB{^NSJ6PW4NgJPw##fo3Q zfLdGUGJ~K042gUV05l4XYwx*%8DRMc%ng;+bScnaly`Tq(wk!=_L0=7F+mZ>YkgBU ze&+Itya3gM*4)3s0m9ic6t(|s79f4;%uee4gybsL1!z|wv1~)_FcP(#lb~dE0R0Krxvx+VPt1nBLjk5%_E=>TutEAoo}C!~=6E)&Oh8BlV8@@}tt8d;Tx z0Etw~N|gI?N>PFW&!7^w+3PEmsO(A-Jb?!;1KM;CTWj1;Y^QkF0O+(Sfe!2=)-)CJ zei_-dX2xGZfO&O4`kE{_@C;7FpLxPC%bz*xY>W~e@K%?nVGq@R_#ID`^a1!m!Jkt4uv;ZC>ZS$VS4xlvj~qSx|@8q66R$vA3waexb!7yZv^r?f2r< zsY}+d6bXm3Jt-0;gjdE(pt+~vSuJl};NkRa^Vc-A#efWJX+Wx^lkGxd2pX_UvMZvt ze&S+>0Okb=3rd_Iq@n1DAgH|1o!9K~v5!%;nnDvc*=FW8mMe40-$yWMX8~8>6&Ph9 zA0hV+WJ7S24p>W`o6=4M#fH~R9}jCaE=a%L;%ZkzJHp_wKO6vli|`NSIDui|I(FCt zd)m;<4SiRBC@6A0(!r%(8t40E2Wk}?KAc&EE6$Epf=ZOeNdJU*8v^Vw5L3yuSohs! z7i6r4dQ&Dz1%r+7UX~lC z71e)FIai%c<_RQ=;{dh%m}Z)xWRvX-NpbtK0@?dP6)qrl#4$F!6FLwZt1T;wraVwGsO#3%Xj>>?&vdAmeFki; zBBSAVeC!{fP$o5iJuj5C(XInUUSo8`_|lTncQ@Gs7Ncj1@dz%?_H+-(5p7RJjAx1P zLsYuw<+`5oSYxKozieP`nZnL~g75ANXLGiQuwGer1CcTme4*<&zL|7GsL3PqIx%;u z)4k|O55|Xp1ns>n0bd&n`2H-c;su{(>Zg05#4vpWvTIQhR*@cC;(ti~Cq(HNrCm<^ ze6u^k{vcBOFtVbit+=xP0IqFL8UA`lTY)2!`K%eAR?85svJ%~4`D<>@qt|2Ph%>U1lOG*#8@^$Ju?W0CDAuqv9 zE<#}~YEh0F>WWv~InxJQ(LJ)gUR~<^P2_NEq@j_>2F5qCbQ@VM`iV;OyLv?Fh8|W-dcNA4%M`^Ko{0iI`9S~h1HDY^(?|uik1Mg<=^7Y$&j_YrQ(0W< zPSGO9?q%!u?m;b~y1YxkhukK-2}`R>UYJYS8~i{BqHDw>mg!-nxtG9^dc{pun)iHk zdsRce)iq$8gA8~vDx>XKDCg-e;p+Qop0f>Cr^7_8R$C#hdnwDTh8FJ1ekO) z&_fFm=>!NZ1QL?mg=g<`zk9xY$CfkBAK&=K{zo$gu(H-%^Ec-+>%*#ZZ5j(%;#C;+ zwX9!WEsR^5M_^Un@&lbi)h!WaYcV4ar`GXerI=%8)*<$$YO_x;6G>)}*gjx6N%xQy z!3vtB_yC6~U#q;QJO*Kh!RohL$>>D2S8b@M3P+2aGtf(u7Ro`;MOgRn((VZ3s zy}X8!2u%R6;hT%vm#^8}U{6bj#aTv~Lz7nzPcOd${LMajmESkZSMk39cMibKaHJ2Z zu_&8pt?Yprf9K`_ePP=@8vR|9nh5)Q|)QCs@H8FwU zzS4=p(#WI{QG?|9ikoRGBP0itq(8P=)ski+&(#=IXN6gq4dEO!SyHrZ)gE@gzgziu zaNNE@S5ORSrE=5ZN9OSRpP!!5Vh;~ki*0~r^G-{9I}8XPo{K#TRs%uYlTJ<4WO2pH zHdy;+htnZ$D8B(KCH6-aV}qy~RyWjS?$bTm^MI{{11XX31yOv3>6VllP{{a)>J@^P z%_GJ6`SrWBtNZZTRA)zdS;ZD-)2>uhq@CyYqx~T@HXg&dKGl>s%Qn_c_2;l zyg>T*@mhG$-5uCnT&E88%2czSPN%7yAL&+AWq*5ziv~K(9MSm%U=hAMc{earrIFxjHpiq>>d0wmEL!939mdLep-tkR4(|A1ggaECq%&>zN@@tsIj8wHiOU zq$=1~%O4H<@kO)TdZbs)eWd!;*^;`;svXqQLw!h4tw7+Q^pH$8sEU%jkUMr^=mM+N z)ua6@Wlq(Ty=F4xK^{^+1>@KD&x5gY;BBBfB*C+0%)&fY0yQWeEZL*VlP6{UenV#_ zQNsyKx+ouTo};y|6&l(B2{I!Z@#pK9uc_k3R!`j+wOrMP}3jS=+$^u zQMZo2HIsgZSSOig8C92&6S`uhcq|XW`Q1a~ACbU6i7o!ikJ?Y{fR{(_IOd(s<&k_y zH(Jpp0s-ygWy7sv-23La6erDAn9Ik8Q1-og@-M9ehA#lwT5PAM&Xk`5Bp|5LZRjFT zYssPSv4ExCQ2Vj${hhrUh2H@w#)ItfW_oi!ftc3u!JCKLR#GoX2UFclVckJaf*Q+` zRh?^7fY|`2f#oU@5skfFfm3&DZ$Rtp0RvQe%sCS~ds@a(cU^B9!SDQuJ>Mqzy%Qil zPQo)rIi;F8;8t48ibBV#M!zzenr8t6<8)uM&Gjn>J9+w%gg)*(1NJj`7?*Z4LQ+w< zPP|V^%qDcGzompBHE*SqWDIbJjCNOfi!w>-e(`@0DGYUwWrgVsq%o}kbH%0UA<^x!A|>7eC{{`a}_C5@GD6Pbd0{ z<#GvUz^f=cSPZo}$Fr30Kv*TSLtWqS$|<{o9^)_{EeS6sDrN8;tvh%f$5`~d$W)nU z>x)J%>?kDr=*A%J?HzFML^4?lzlRY^g^8BbOg9yIv0dkF;b zp_=?mxy04d>9k?+FcVwtM5JV9*)@ER8+t4kkcS)39hnH1L6hp_x%LzAuGbb)kb{}lId`npZXBJ9x{K9D4OF|I}G zND+F2cW6tx8DYeV*#QJ)ge4GXpVKwgZjvp$rRpM?YTtxU<{>T^JaY#Azb)n}=mVq9T zFKnc^`sLPis+319v&8L<0Q=F9;@qbFPqHnkK^mtf$Qgk={J*WHen2cKsCn_y;Yz?# z5La40YYd%UtMU|>^O&1kX?105U1#w)&A3~jVlHu!dBjRSS#fWuEj9F((|sf9d?=F8 zfQ5b4BVwJ&q0PVthj`b`x4k3XD>jB%#!CemHYBMaX`mdX-|gCcs~rA^O`pqM*+5e?EfD+wSvYth)pKH8lhGXi$_F9H9b4^g;Upy(N~L~s8||?;wRjV^ zma#vPRIN2rxvDKD1nNXZ`35kC{qqd=>p`9elGADBE4@LKkpSA}k8gi?v2pw&v3{)w znww&iErn42(0KUS&TUHD;iTmBcpj0G`pJ5?`dX?m^$HX+J)laA{C#74z6&6O07@7D zZ;}Bglt+TRF~Sn}Cpt%Z``pdMUi)mll$IvzIv`$Bx4wNj4=k&%>^JPO0T_ulUK7n` z{?WiaT~_RahF)XsamzPQT&&7HET%=)7Z7 zcPF+L0!$i89oV}3uRZsF>bWdGkS%PgNR}?$KW_jg*8>qj0MfGCmqy!x+hZY%+)=_H zxEX&^IDLs&*Ysj0BTfzxIy^MAw32jTYq}$~IlQH0>1;7he_#fW8a>7i-dssh^s+P6 zzd;4~kFCc1SisSb<(60l^_5n)zFuicr6hi%0pbHO?a<;~HcF+q(KXs81Ilit=b&5I zb5DKB(^rLcQ;wQJ0`3K&wp(3yya?IM+-z;T#VI4!G9jIc+uA@Ei9j`eECX2AZ@>Zo zU0`-vZ`RC3VjCQZPl?#-wVu;qci-7dv2Tir9{;9!v-t>LInUu9PSG2)b5eg~quY_q zk$cr*PK1Rx`r8cmLw6Du^_)_A*H<79rH(s9w;;9>(kBeII?Bobv}SGsNPWUUExN4~ zi*?JeU^-+`)5vq^QF!c9rdw7$iVQW+8vJz7Fl?Vr)3mWTa-QivL2MuUqwfm8&QMNH(=y=I& zLnIxp)_WvpO<;A%Ve{p&TWeB*Me{`&K#If1t{=<4p;yoT^5p)5aQ(6dJ52eL&?#t- z)TAprNDKgDlH3NvKpx0q$SP0`2(s+IK7VE2h5K}`=j|A7?J1`&L6E5_`?%}J=Cz@8 z%)REA?kr7$!;wWG<~ELtNsX8T`7Ids;PjbW=C2!+Zfuy??Do9TpLv3H^x>maagt722YMtYyiy}~Ju}x}^`~3r* zw=djC9U9?t>L2#k^Qw;R#XqO>01}ULQ*w&CKowj&iOG+R|0tET1L^;;eTwgY|6TpD zrvgYWfjRFV#uTbUZ$K`rUAh_qWHy{)vvyT^0pRp3=vTF{H|uChIPfHg9?R|~3*o2% z+&cFs-e9wEdIa|RwB~~i05ReDHM9Qn$p6NN9XlDY6N~NCE3fVaOvITVk9LuR{;T~d zaO>g^tau}_8ciSyMu4%13F&Zr_}f?) zu;St7K#Cc0>r=!i<^spOW;E{!6niQokQt4#1JWgj-*t@sWgPuqYcaVl)9xSt6CeKT z58)A_fW{e`P490n1il6KdEI)K6|cXA*8-OSo7K)NbO1qrQEB(@2mQZJ=_9LOfsiT( zpm%n`CwC(v;P0nvc22x-Mu-9+tdN1F-Dn6<092;}g;p~*Z!!YVc-`?`6@qpGVm~0I zPtY<}vje71MWm8`yFw?lQpLyC?43%`pRx@&o>(J54Q7;yWz{fYJEp z70v&fExg(c=4Z<)f9|0^JShCHmF@q$k-U4rpX+~& z=(hcttu=J>y@IQ$;s=4_d5CvjoSu2%yOZP}drWrvg#@DlfaF>OkZf%n0FQip+yuUC z2qW#~YRUuL<_yHcOtECw{bsVa0Xwn}TQJcS9fhV~r1+uR`EI$O?a;!((2D4+TWiz3 z9igUss3(N<-$e3m! zotMcj)j>T|8c=41WfKe=!PN-mQaLvvta}AtxznN+5SwnFUS*1Zx||d7?m!>%%QiA2 z=z<4!QR;5(ri5kXOCY;y?p8H5oiiS~i=xagmC3xzY3x|QDd5|hm}1m*e}pPWc1iBl z{T-weaZgoxNQ0FTLW$ZhFo#GrE;N;}N2mt8>Nm5@u>u1b47g30U1x*`TGj~%&CoIEuFL@yF7J& zwTl7v(xkj+qS@eOswY||BWNjS^vy`M`-%O0p8~{j3q3N2`fytVXs@X%g{IkVdvAdC zabv!$xde0z&_-|S!QDRiqlKMsto%ABxkj*p`P8pd2p3hQ_}qspV*s3cmPTYhsHc5- zV&u0`Ym5-IO9f(CozfclrWigm51oKY2(&-Rjt$-T?vIjE*mdvQXO*3T<3mnW$M(S* zdL6hKNZO~T21OoOYtGh6u$%mTx0dd|IDEUpvBPe2`B*Le6i_!gG8j;L=iBD)WgE5g zq&4%vS&tPf!K#e~l8Gt#97Tamxq9y#Vv`|4N0c8R9`zSIycM`3Q(=Xv6oKg;w&9!~53H=a4Co?QUg*u?<-IrH0S?+50Srd^+QoQnBH^IS)F33&cixen_ReBOi@=}9$ zt)((MlEn6rLf7263)t%wUt~h#Z}H5^p|Py{o@6= zSp&1CA9!3I)frgu$*ajfAjN$$x3phVaF>R5Eq4cEn$s>o4n;>vVMHUssD4YYc7o0r z#r4m?B#=&t&8}V1THVe?>H7}R-5y&7H~Ovg6TX!rE%Mf$dd+GuZsTtS%YH=ex{vZ` ziYg$|isrH}Z&rbn&k9nkq+{A=P=j%cVxxMteN=bX;N>5MW4HIfSZh5Zx^lE!rz7{+ z;T!)Y)&H*?NqCbm@Mbm#`cCX7TKN@Veb(KHQ2vaU+^r6u@7mlc9+Tb&U)-%~9!)s_ zc=UJbJ-ciI22_g|u@l-9IloR~c>*?nXeLo4!D-yZdY6zFz{`7powm_HWA{yy=;xnNy4A68*+z@}%%4dD`#!Q5S| zEmh>I$3o2`ppiq?RbK8s1mWZS7fq6*&uOQxApaGsy9GY8)BTPq*~;r8H~Pqnx%KWM z+w@C|!s#aiY2W?;vY(yZ)qaI;NIE@D=SB@movB;$6>ygJle68@kCtb=mWv@LZ3GP= zcd~Z*9O1#-n>5(i%M8^zO-8l*PQL(EC6$iD?0kg=Z=Qg(w{NKOW`*MV#)lVX|Bso# z-`2p)3=W&%Me6;^=8Mvh5TKGG0>t{OoaP7nxX!6uIf7;uel7fSp3_pg_-3t~t zGts2~J;OP_5p)X`Q*2)`g>IN`VNWO7_e_dNyKFbCPE@;$iCf5dT1bK}TvgzRFSUPj zPJv2t2qtlNyuX#ojg9s3IXoKm+ew^u@{Z5(1aR|M)~CL%y;M@{yQ5Cq6PUoCNf%z= z4P9o(ilOIF)Sj}=3GlbPI=z|Z~bJHtA5dHA zPD%5qu%37{T&Y#*JaUoS=96Ag-Th|8;5D^4<9^27;&A#|1m8(B@TTn>0R{H}=5fb_ z20zvj_n+mQ_Y~OZ&cg9s6xtM3Q}04ha6*hgkv8-LeCrceaTliK2Hn7ui%IAOLW(7iKQdcI$Zj>t_ZRuk1eB(|Vfy>1o zyjJx}ort~GixdX6&TrpJZzoV$m7RpHgcmk8Xx;nS0Vq=ig)1sRZCgm;h5w>u(}b{l zN?~g13!sC9z1qWL|09#qcC$DEaz@c9R-oA;N(x{QLNFa95Xa_ssl==7~BL z;(vukq`rpReHQKwgYIOudmrcn(Neon%3uElbpGD~e2Np09$wRt`n5Ylu2LOZ2VzQv zv5nS$Oha|5cg__hd#wKTk6n+!0`n=A0~eYjjYIuF!S+) zqV8WiqW6^~7mLHlU-k&5_ioOomPv<=HazMsH}{?I64l?_x>h!Am+nnu*sM`5*MOA@ zLEdYE6K&)66T_^%6J%R^J0l}fnLT;4B^KRKX1U&Ctxyq8H^B1qAz6#*n{KnSr{%mu zW!;A_Pa|+9;^;?_iawE3AN8VghiWKL>5Ka85%g4uFS$>sb7W3)$~(A+jVYa&X9>W` zrb|Sxx}c=9u4!)G(+Sev4K?12ovGs7&6n|@tcl{uhY>K0lI&8@d~eECTccW6M5A&t zo{Q-F>b}z}4!fH_L)}+7IShozEaLJ?OX*qN_HAG$nO7B!iVaH@=T8;C$B;Uh#{A6a z2G`=3Db2SkruDLPX5_ts?R=Vbo=s#)X*$w|9kyQB4yWehhmgkEn)Z0 zhVSQ7hi%gqE3w#CO3&Sv0H1!F^oz{?2$m;TG$pMeNsF9=TAk<8?PC!ztd7`h3Ue zkA_SR-?DC_`f<$n#-Ig3Ik5X>_kw92Yl8NrCj2`NDK6qYi9I{wZQYUZUSqYDA@4aR zE~KBveXg|LKaPK`(K@pDlor1l$Wh1;)_rO3&w+;WS%Di-+#NsPIKVff;Y;Vf-Hwh$ zq_5oU2^h9!`?W@tsgER2y(X51im2W3kCWoFEFF>2A98$W`-Xt6;)-maY4%9o=9noqG1CviMZbbbFR)el5KeeA`>jxm1~^DNP3YJ@5Hw`mAAQ(Dm}H45Wu|aR$+%a zy~-S%4QXs!A)18PR|oOiG4YenD!_y^g1zVD!XyaiH~0AmXP!8hNl#)XlS)vueQuFHakt6k494aPnhzd5lK1mX|! zdR%KYqQ%>X6@F(B>oBvmo>%Yb&J-j257z_)X>Qi-q2i(Idgp@rabi-XR28D_c3eZP zb$JvEFBK{o5i0Gcxly^6kt%g8QW%7W$M_k9iKFg?c6^5BL);OOBswB+91NL$Zxpqj z^Bha2y)Wn%{N;I=CIr)JylBZk2v z=GYs@6=9p3)QVFerU0dhaU*vh##8NaRbFA5P2xr^<(VDb=svP^?f$bs%%v>_>OW7e}V_g?1< z>|)rcT(a(TJhpw=cJBA7-+a%+z8@q%G6hV)EC;iG_4H{wY0D zNXn{S;lZ%fNh|omMRped8k{lUXXHZ+rY;<{EFP5`uqwJ|MO#O%G~mGa!(Pl|u1%{% zWDI1>x?mx3IG5dtCj}&J22a)~u5CEGreXV*+oFS;>!93k$Ozukr6zw)_rmtm(m#cX z%R&lM=uCZr=kRy3AgOn+{Ol>I&~5io_B>BZ>P-^-EE!~o2!r$hC}`zIiAXerP~}$z zZxW%WbyLBW#j`f^znz0puL6pQGiH(RRV+1z=SaJ9WPH%}Jy8Q0MOFY~{?%t!xja-ij}bboMzz2iU5Xm6h^H6L81uD!R z%BonE)AYc(EnufFPOY}5ZHN2_@Y?JzoxHvvSE@7P{q2LR1OC2?B_*-hetYv(j$Jk> z{GDn^$aHVbPXS62+7t2TXV_Xr&d;pU+s%?Q;Cm&W>D$M@CbZ}?b0$1X54UjOftK_T z8>Y9UER4V|=82LV6hc={N9~VvL;EgZIzQ&vlDCV_jkM+nhkBx1ml|*rw=okn zh>ez};%&(soXTUnseBV!1jjQZfUQOnbmZ0W{}fT>;1 zfUS_EgWFSP%ME7+eNgFkNlB(x@P(_B1+MIKd(~K%<%tein{BGFsJmIWHOT|Tb_{pa z>ta+Iolh(pV{Js6frlzib zQ{D2YOnEhEsZN1EZ2i?~8GpA*U}R5z=rM8OT@Nf(fa}~z6e-A{er=4=(zaL6K8~OG zk+KA8Hi9On*jfg8|Nce<^-I7YEnX_`@A0XBp45w{=m1v%8o!cXzKD2A|wbkC-Q(nDIFa6b2us`fpVIjebb6K&{<0E#?h)y?&x zUe1gjr`%quGx3)bx(q6X$DD{?Uh~)bD;Q8?Unkmx=$^HzMIp$UWdnuPunR%b=T*b} z7-v`7T_K4cJjjLW>)Ghfo-2{ai4o7-rS*)6DumL6uz42?4#yrvgvq<}Fjrr&Rh8_} z552!I4kY9@D6vDqEb7l0=?@n#LxKR#X^DxI1bK0@4!2CTAoh71*5t??1ne{XQkG8S zz|iR=sXcC}uu{bfLoZlkW|0l%0lFjk(3Ua2iGgRi*w1k`vRMENWmgcxVLz?a-eJ|1 zBga1Sa7g2drR1qO8Qqkt`Npb5Cw8yGD|w0cx2?nJ6-zMilAeFO6knk@%FwEeplx1O zLNOY4UL%3|NKlY_GfRxi{F13nat#Jm!tUzDNWuH9@( zUVlRp!UY;C&&wFHyM^~oO!juR|7@XU3q?sPzMzoqn*-PoRcn(v-do2+J_ytn|& z4j5F}r4AHVTxFuP{-&mSMC~!+zUQLcM_GT~2U1LgHbRgmb|OYi{D|7mn#rlRugo9g ztkKm|Wid*tZ@pi#e_UcoMZ}&yGglu>vyfHelU3Z}*ZuB~$8FWMm4_@=u|Kp({iQ1s zO9BS#YL;4~egd7ZFC+OE5!R_=Yv2ArIM7Dy36LfOg%QOgN~<+)3qZ9secd^kgAp(q zHUi9t9zHlC&u*!NnGJO?f4^%k`p!tP^z6%+cn>sTm7IscSZPRwEBnhx7q68iPPXdSq z2Z%C@l}gQWJ+3a0_`Dbv_q;@>c@@h2QjA`5?rhrjqvM$DbD-5l5YV{2OZF0vqpThrW-MdY5z#*uw!p^S8wDO#G z+0bf>6%MESOQiOn$-`~T8BDY?au;hzg-(&1I^|ig;6AFgHlr_%aigVVn=gU5rK8ya zv6xMNzDUu%PLsot7{cgnfs};}h%zs*9qL0TXVVZ8angNQ7aC_r*&F-)E7{D(+osZ! zR3h8I>IAGg01CB@!>%RC{ow7v1g~#;s9Q4}JTHNX+X?_M29$v5FQ3_OJ%o4Ci9j2+ z)*$oMeb;D{3gUckD;yG}Dp@o6dbJ8K2%2Kgt-9KU>+?;FRv1JN6k7=5DzB;?QQl_T zg&r^XHN`ecBih3^TW*sdj&GK=#H=#}ynX${7N>Z2YK;|qE3wK;*+69Fdd_F^i&y&! zF4`ta^0-sFznwg?2Lbe&TMU}cPbBh4#6)HcvrKcjk3=dgPuy)}Kz$7OB#9ueA9<6F;p=%~hG3B)VhAQdAWAmTDo7Rx zE%Q?o&!SG|v75;^eg>fQMm}J#rDVkHH2d7fgOEP!w;z|6Kj(3iG`C#aF(ECl4PWzhNG&#Pu0+rf-HCcn0yx;zS}?bqiheV*U-#$bjK4?jYciqX5LIrUv{8zlNP+$yF^I{T+a(f)Y=i?3 zb+05;8Zc);35`EfI^ga5=uDj2OEd#!#9!$hN%ejxA)G`jmN3MP&oO<_C2;?1I0_ij zFvrG^K_fNqRzc6CUDUn*Bj#W3gh|0|pJv4Uv#n)o3{do8x7iWo9q>g`Eia@7{hLrIYB=R7Jh7F5V zyI{WkxxbppF^~C1X^fgmZb>I=Z+t2$cVI}*vAQW4-vFXe z>uy%Yu^G{o$mb48jV^{70I!TjAf@7UK`VQXWU@su9A`rrC)(Ah73B_(#SWCoub*pC zlCdXhD82JtivHV%DaL)o;#NmN@-v=0cGq7cw?^QpcgpI|oFY)QDH?qE(Ysp1{jt(a zrm9X|Z#qRX0mHb~X)P6i#>A_Pp0^LdY;QK>+UUj2>qYODoNcs&S;+d(Z0tP&CNsU~ z@Ts=x1iW$v!^7rPINglSl{`ocVR>b;@||oFH=p0!TK^Ux=s{7N13gFy+&>TU3(+`! z!l0$WD@*s()**?wC8>?LZ<;Z!v#5xc%~z1`ltNRTkW;yy`PZofC+}p2u|DRkjyInu z);ovTTAhx&>%y+P$QsFNDj;RQG1HXw>@nn^3CPa)e2{PMys!SBYl(m7(+|<(=M5?K z?@XJzY6o1krjE+QzqBFue=J?Z5Q3!0c7v~w@x~e}iq3|}Z>~W2oaR zgFBBwFrQ_0mX$L=W7CPkVT?Bf?#Lq9lO3nBZzRNrTfLq;5ujquZyY|8I4N7P-Jzp* zS%_4tUOp1DVC%pa&tgqA#h3W{y$$PZx>Wun78-LE6YwcCra+%vUSQ;@S9hIBP@PBc z2$5jd%vY!XQn2+T62h$b=J^R#F~$P1+52F1PTlmgg zsDL=no0kw=lV`?z#1_9eQw;sF+d~f>@jl@Y)N4vGSYbd)vXpq&9M8&fZheg@r#|>N znpZ$3NTlB-+EC7mEEa{_2Js2kmXJ0pqePQQmU5#C z6T!4A7Pp3euGqery4q7~E>cnSY=J49?o+;pTGtKAgJh~73A*VHPw~Euy?<2fz{5QN~5{wof{pOj@39HPB$qew4C*fO^ydhQtt5y(A)~0${$888;^q16EDj+ zcE%$d+v5}ajGc$`u)g!ld2=v8gO8a1j^6%nCI2CMY)6CROx1~i2ES6rm5TDmN$Aomi|w8cvW^sfTPF&Y81;XX`MQaceH|Bu zGF?Tzb4EqR?H&5jA6b%=S|YLlY`*V$alCZT+CaAV*70}3=*jQg7lnV`)4O5?PBHEG zB;pBPevO-kryf^Fe)offq*zB*QJ@o6r-F$kd$$M#5tls_D3*8yCr-*T3&}lKV6^>C z#!1kGqiHdr)P>I1|Kmx&%iAZk^?Q_DqpJbWX)d@nuCPzn0d5>yx-%T0(a|>b!#d}8 z`gHTv?-v_gojz{xB9yF7x1jn$qKrQ7|C?@lMXxv+Jbvs$&&S)93#!T41;qk>hn|1h zKi@1lC@5e6=GjAA_}u(P)v#1-o1_vLekrg7FI-x18DV0Q3eJDJNw4cGPR1i#uS^-g zV5f>pO_*g_sdB4E=EY z_wS>tEKn&rf~r|BXTh?n(B}_Zw%IZub32aMHyhkR%>--R46J!0z=*m3VbiMCyLFjB zFPOO$+pst!4BdCggf%DhsZ=2}`-a(p!w2L>Quy-0JG2>2kXeZjA3l8iw#CYwOg!mK zszu-LCoeLk`Wz|ED!btH253sYNUCR!1?|VIrFRbC;Ku&zR>6Hk-v}FHdI&kA|h4vq3#;V^>-u+?+Nmv5gZs;34q+jf=on$N>4)vqfcJkle7#gP} zDd&x{SuWns3M!XWfqK&Qy1XAX5(x{$MsZSqQFi@k?$dW%>owgkd|J3v(+CsRw$_wS zru|P>S>O8gzSk!mgd$AGDV%yHCVo_dVW)ciFJqoeY+#U;i5SY@Zo&NKo2VjX53aru z+MH_X-Z=rVHQ`0u4=sW@k&*a)K!%Q+nLP`(>nbtz-$SCdsxfrTAqu%Wn)UZfJ= z`!AuVT-nME>^T`~ws+iU#x!4~LEEzeZ4Blq2HEW@lmZyTpA4$R``1Srq^z+$Dw>P@ zkHp+P9?kLQ#S$@^z8s;dr!~x4@JV8*PzF;L@Giz}?7RJIo(hbhT8eAAlV{V&A>U7G z(kqE^J=lb%Sm`xjr&!&Wf=>uA#KvR_i#<3wlhk2Zt=;6kcPn&W!KlQ|*`!hJHp>cQ zIxS&!kzk!QHrBNvNvO`i`^hv;x|#Xw(q|7@sjT~^iwm)&zGEMuG^tKS7< z!u$?@jeHTQo$>u~{>cQ*eI%1x<%RPr9tkDqNViM^z#rA1dUZX4?2tn3!d4Ew3e`W0 zZ&WM44BdQudv;(L`?laQD+sQ9Jimmb)ST$_r;d1m6)3YtF6_Lz> zt1udQ&1;w5LS`YO!;<9+0$6nVyuqM+w70? zP!!*rTjGPs{jM_PP;f9uGhbovpUOe0aM3tTy9s^e5>QCYP&We>VUYY z&cL~KMY5Cs`+`oGQtsb9Twxd8U8o%^Ca)iiQ@$x`A}$PtgpK*!5qrzpc&TCZNj=dC zBbO!CNExlN)NVK_lQdUMl}MFK-iTFo;3jSqpPgxkhy$xnYO{u66Z`z8T8_kOzYN~{ zEJI&dumvc3KU}0oi-rnZj5cPxflTMk$XW}w`gYfXr+h;2_huyv24;)Y2V%62F;rgdV*eVKMJq{edpG7pza&eN}IM}AcA z6(CQ<2)-(r#4!e)mD1jdc8gY8-#Q#qBPnFGT9~={Ldfq`xoOZm{-8_O&CcbcngNUQ z_e@er!RPN5aJNYi%tU-`1e*8p+z*^1Q?CU~sTsryd*+|#gV>OA{5TT+wzm`4dCl;M3sBoXv=6gQZKoT~d7XCzIx>JLOQ|E#k? zFfN`d0cWa-6`;-o3w9%DpASPA+S(v783Lc|GXa;x@8q@GwJKs#WhX!?q!gMt*_Nt# z{RkbhVK+T*yP~%isCjcT{Wi%L^LI-dO^$(CYUzy9a7!Wrvy?(8fkG93;P!> znqzq#caS5vcu4AS+byld_#oA190QBd@EChjMbTK;046MV-w<&-6bRh*+t#?Z(P2Ul z0MGG>K9z!HcttdvloFk4OO9I<-BhEJJq11RYR+TXAACc9j<n_%~_jiQ zocidneL@azDX<_`zn6+F5f)c54hzhWyE%1;)}J;9?BH`!&LSTtFwdv|yEw>>;k0H|@+%p98=ue+H!mNX4< z&SSTVm+=p{4SjP6!%eeWy`X#!lTsrN^J(cZx!MocT9AA$Is@V{{br3{m$J03{fLY% zw;l01<*!Dr$t{|H>S`=`-V^+|_~vs*ze?-Q7xJFs$@ZECAxES!1{E-gc8by!nO#Wn zm&nzR9t1==CM%Y;U`4K4CqP!=1X0)S{{UZpfBbB?r*-@+kMQC7zH7irin8fq1LBwW zxD>qj%7FtOGoIFwB!fNFuvaXkayCHDglo=to89M|fA?DKB;G4XGyr&LO@o})2kDOAHxFL$LjfB$6-;T^cy z_KVmE{#PHmr)#(G_Lq<~F78|=>))68Cuj8k!?Jm*WQYS0iBWG)_VwCpC4>O!!;~17 z;l+y=v+qS}c1-8z=a>64Z|7U(Kb`!Z!L;+=0+)5nSDn3F_gDk)BR@<6Fv9UY4r}2z zMbbdmwNHH?4~DvKq$OT2F!0TAD}n0gFTc|` zJ375qukX?bScLdQ|EBeo{xGG1D#qiSo6jF6#R`<3=~`lgJG+(3V8JE(^@ZBLY@V!@ z6pF2idIH`XbbHi47m>t zFR-QIDq=iz>;}^#t7rsj)KpbEw-%C={{-&rl*)Da&c-K0kz;;Al$M9eQ2(f1oIS-I zz@+$mhwsa8PWwCL3%(~T3P^wOhmOVi1`dzT(nvwp7ccpM z=#bX0m-y3QRqd0i(fJx)b1+Lm z0|XaOL#wb1p3i_*i@GHe#ES6FP=mYX+LW5dn^^bud?}U;eA%wjEPsi+tsB5t8$yEF zw2o6!fmR{*nKR0sYscnPoujjJa#A}^A!Q3}ZjRNLzJ~^=&FqEV4)xfkwF-{JYSCiD z;C~OIt>d4aEq5T-XTH2{@O)BV3ehOm(wNV1P=ez^)$ zss+B$7FoT~Kj}l(|S*X&})SsNd_Y1-$m3M}Hg1pFh2$l$7KDf#Q=+ z=Lvv3o{HbE*A-2a5^H>Yv#n(_&>Z8BIdFd7Wt|yELJV)`Ark&T1_(o8J)6^ z@@XU49pvyeTg02jhtlqtCs?&hmKM0HA?VTD>ucg?q_c4+O=y}1$b@)@hSaQVi~iQu zx#YGm%wopu#S0fMTpQ1#wU-q+<+{By0$7(1D0xq&xDC}2)65<{$~$zX%kuT94n+dY z+nWnkX(aCnmgL}^POKJnU@=Ngl!ta`bce4h?X^fbzs(6LN#KAjn9U@Z@LE~kk14oH zX>xBi7KnSte6KUMU_1R5km5btL0OSZ(NThkfFLJ<@7fpA^#Yge${F7GYQ>Qf@d?85 zmw_~s^IcVoWDjM#Jsq_`Te%V@^}U*xs2dD*P?_vg^T9@1Bv&-d!1}Zp^7y?R=Z=f3 zO_(zu76KgI;Vq)NrHp=b?%PDOap!w+mM{D@Reg(x;76umitbUfT`L$po$m+y!eo*c zKs`tkZJ=htY%v-&TQ`;|im~j)Uea>R4Cnvx=|0E&;xmOJwG9Ji@{5=(m<+)}Llsoj z4-@W}0cgE#uts~e)=z$y_UBWQC}q~PU|r2oQz=3FJoC(~_7Tm8Dyz-`4N6=_+1Uk~ z5F@A)Y$R|nbjCXmb*-H|(!PFR-Tc5LBUn0|Ufp_0ekofC?qxub^DOA%Jdxbck|Lmx z>Uu4DK9ILKghV0HE2Y9>FG;x?Zw}R9;%8fj z@UZR3*$0#~wT_!SafJRn%fi>ab;qf|UVymo3mBnIUiG#XwQ%H-lt7aekZPUA@~z2=m@}kUCDB0kDzfnMH3Ru~{bCdJvxU&Pf*%`e*MyxI zK9m%a17Rs)by5N-uuR0~PSxg<9l8sc1$M!e^?q!*)xX!MvTrSZytbWDkc)4Q@^2e- zPVG>ChRDF5KJ;LunCw{T`+C>fW>5`Qf}krb=JnyNn%a3|?ERjwvOVQJiqR ze?2CUqi(TNrPsT8d&+xiQBs49p_yVzxazuxCoO|({j@61qI93%!U@KMlbF&ml1HNE z+2pqeU&yeaU9>fQxj+qrsQnNr+Y9D5s{R)pH)iz_TwxsR%uEBQtT z=NrPddV(H$Bb7I-ug2~IBm5ctEA;GnXN60cpBQNSj}WA{w^wk*I9^ok?5`Lk67~Oz zK`6B0;v-*<=MiQ`vYa4F07v$L+vF$fh0ip<&-H4p(tm_ad)q8A-tPp;339WDwD^mZ=rh7(1rK>fdz>m-g}%(}snM|By0z#uy#CGz<$u_j zrf%tT2$~KF-GVr04^z-HM{2t^2DIEqu=mvHlQK$yvoD_)h*BPE!xLvRpxV>zmY2co zYa>?AHu`&6dm|lYU!wY@U0eC)>7;wM^p1j6G}gxbY;FM#kIYfQ`3klm?xj9sA4_C=8SxI;W$@5Wms4l)& z7~vbV>UHnMScS}p?)mUwqN>`3yLBofy`wW;_G9r2LlrFm)!7ujpFCN`k^(IyxzjR+ znnVo|1$(Gqnyb*3&+}C3qMDV6rT;lN3N#Q;f4Hi{w86bD8N}$m_+RY32T+si);7Eq z5JdqMQE7r=14NV}N-s*2CJ?HC1wm?*P9Q`?M6rNK???*?5CH)xNkjysMj;{eB0T{@ z3nd}pf3WQHo%cQG+n)FP{+WN~-_GDL!$WxP`(F1d*SgkP!-Y*8W2EL4g?obm-_jQw zAJ=)_W_(-h72+ej^BHP1vxJ6nAcuP1Wt&OF+1Sx<4FnwZk$B)9w$#|#cOsox0}_vK zk>XKs*!Uu-m@2+`ZDa!u7nB~Y*Sf`)y96gqVln;Q3WZB56pN#CLgK9h)N(!XCxW+o zRZR$Usx;?k?+Q%y9}n1G@g`6%gM2m_c_f{}=l}y@p$?Dkz;ejT`uhWuLTZJFt8c{X zUke%P%>ELl~xBT+pL0FEOU)rx7pJSf8)U!_4eg}w_3x8r?@I&e8ktvLc&X&umy#CitpB^YHhXCM?n=Eo-M-b@iDuFGopq zuevW`ximVDd-K&v#~i^~kKMhRM!W4?#r9=d4OAskLynA==G9SYXa)Et}GQ4hGJeAvvc%IVs@ z@|f}udvu z(_v6CraC)2yE%K|b}QesNDzc(C1Woljy(=PSH?vki&H5t1&^&SjmvG@Xvfvupz)r) zZVakwM`(<)p9m~>llEQK0VyjY0oCiYA+3E9x)9qB>E!f;^(l@cH-n{y7;B}M49ng2 znH;ZrJJVA=^r%&!3ngl+sC={cq<#`YV}8l(v=TDL;wIg_&oAF)%t`++rj1k5K$xP6 z!}brcGJT>jmc_?hl2cFaq0xq!;%8Egs+2lAufM)<+C2NM_uR^xY{Wgf4GMb_a^pi- zxsg@JWQnrf4P=m^6Zj$__rNjhyoOkT8 z47odyE3uJxJbmHOr#zJ*9RRYp-!utdWn^+NB25XHme^*A7ZSX(p$7pGk4)2xO*T7h zr%JCho42B$`jiKsRJ=TaL@X-o6#86wVMazf6;^e|!eb?Wc52*3*1TpJnvt{>F$cbO z3T~(h-KH#B)w|}+tAvYFzP>od6))O+9lNWRu*{8sw_FNTX#j`Mr{|Zw^POQ>>Kz z-P7mSQ)*$9rQ*To2B_$r3t^Cr`B1 zFmH2ya)y}(Bvv!u@_oL=jSo~nB&xAcJBdePEKZ^B*Cc9C8u?{2u*3k+35KY)Vd4-x zvZ^b#pCnIWzIt|LXsHL~P}BBN!8Z%zg~#5WUIa4(!9vMK|4GCtvlVgj?)vF|b9{G^ zcbTPM+$YruV}d56tX)3#q(6r?vWi35NYpUWd}YyoApccR!x&^=Y)p4GP`l1v-)NNJ zrZHME5R{caRYd0wV7Qy^W5%Wp7_d=+^>C89qKi`dl0RU$@L0T4##nQ#X#-~U@p0rZ zEc`4k@xyu}1$(ERK0lJxfp!uWvp#OEwPzZ|J)2;TvXw$%FEyJr3rlBIIG29h*mNHF zXjV=nEDi}Ry_(v_Qbl5ZJkc^fSPhQv1FuK2mN1^7_MD4dr&5QYjgk{J1+RhT&D*JH zd(zFSl|c9RZWf?%s@#<8*Und2je-EXOw6A9!I#cH(H)6Pgw@gYcv{nls5XG(C|oV% zCqCtc!}LH|M9>;_c_2~-pAjaUZCFU^U`!i2rmm*L_QQqOR}Qb=rds3FLgdI7nyaV+ z*|WA4i4{BiDSeoN(1nV8#P}(rdo#F-8&wyh=1E67L7W&#fmqR zJ6Fm+aXbYQ-OX?=IUyBDx_Ru3WqrWOTpt@MXVRG)ZXKEF@u(G-4S*jpaB+Q1O z+z|?PTyYnF9XG2iWef&Mg6)v-n!$2JWxwK}m819z8FIg!6p~?QSa2sD-AJ6FK zUR&PH5drBPx|ZbGbOk&Rm_&O{6l5LS*hZZh$SpEbmDo*_Up0dhSy(V8ybDwrB+LA2 zO(kCGDh{cBcr{=Cz|?e0Y~c6{luTOLJ)g*k1MOm9gwtpH1SqB|?hrw4+PLC~$W2b) z4wii$E>Y*_>#EAtBEMdTsv1hLC{KG~k?QvYtT|6F$W2dX6EfB(AV;b&&y@n9R-KYj zPUF|86FXo-L@9z_5C6`N@$!g8%ewuJn_#56bUN?_nQyGY@Ev73yK;U0fFtU~@Nb+S z4b!@X=KE&CLWR6-&eY7y?v&)sfsQ^Og;ls<_as)e@7bQzBQrXCppGCQiMa+Yhr`@& z%H7L*vTP1+Jq?g8^#hACL)&SR^h^t$r{+U`C;t<5(ES~NI{XuW5`?d+I1Bj_2txvR zqJF{7=j6svfwO2St$Tq-n#8zo!svBbycJpGIN(~R)tuYb*II+_4HW4kd$j^X zXY>W-dld>MWn@^WHsv1i+YtMM!xr!4Y)VM^zr4x0_kAWvCg9xw1IYU&*Rku3Xs{Vz z+gxmHuV7uqBi^uIT1#T;W-w>3-M&*#fkEa_C`M&rGJ4_d@-@&Xwe-*{Ni)L}xd}HI zXi2@6CHWYcWN6MqvZ&dE0b-1@b^_wUP`@c}U{D3bq|h=u56SzScykR^)%DsV9rbG5 zl?&24D?<>!+_ZMeC4!5C+`QfgBCG>Jfai>*R{d)Kt9^^prat;#Do68>4%A%HiJF#} zR?&L1Fb1gaWwPFq!WSi55V`9p2?*A62H@i-vkO*pB$~+io|PNYa|=niBw8?U1IBCZ z7*9lbdZZlIf1X-mKkHP9IO376cjeA^w9|b0+*(toQ)@|4ly6v0T2AK&ANhRAqx+DQjoDha3c+;JLL)Vg_c?5( zy?N0X{Y_dcEK(J8)FCj8)>U^95yIQl0YY!f@W(uVyFe6oD`Hoi+O`+>PTck5CbOL& zX$&4HWe2U+Sa!)b^h?=N{b>|`XR?7j<@P@WBW!FN}HwxW_jdV)M#$NnTle>@x2`k-VNv_yCwe18E zsV?t?7YRq<1EwY=WwulAlLBF@xb5ACPj<@$XTC`uC)+ z_X&2=)p+rvU&S3#uY@^2yR3cn^{IfNa@^q zBV*<|JD+$~$l%I`ngl+OokaD$dGqE;V-#|FE82D?zQhFuEPaMoJigR5%_gx1wF|ZW z`ZicdCPA&jDt3-qbL4P_#5lQWXeCm0@qxD)Xi3y-GJ17L=w^BGW>c#g+K0hOCYnzU z40;`Als|YydH#xAlz&V)ojf69j5PpZDJaCSlX(Va6{+c9;g+%tT@T1NJ1@#gxpY)j zh7*Fjpo|I1%-od_oGXsQZg!gUOq6{jR)rQdFltkTJkO|H;Xt^|N+J$K7k6F={8(dt zBXC}nkmD2kJcI>Oea$8LDb_7M$z^~YVPGVD_DL)sY%YEb?=5!iT=-b)LC5VS^6+~z zBD`xy)<#bzmR~gFH;;^~pkTGUeW)I<&0Ah}zs^0z*a&X>gfNELw|LdU&=hmcgGm{0 zLD%{a_uN62M0INXNt9fzv&08fMQ1JD0@Mwu;K-gd4`oftUt-*9Kg(O9D$(-zx|C)f z_!XEC(3f}XidRbo4lmC;HI!0b|LE)Nta$=Ggxfr!cAF5mNJJ<(=AGYnmfI<_D@=hM ztxIOti9(Fj(OIxmEQ5W&5FMKrASQ;GBUTT&OY>G^N#;ZEU>9L|`sSbpaDn}G8k{r) zgvdF?9NBrfj(c|Ao4G9My+vp*Koqfi7SR$rJQUpA)8_=1lJl!J7tx?Q4@;JPij+4^ z2i?9=_z! z6V@pGVAD($El!bjEzaY`xlZ_uS9e^#JUR02e5PgtI3B=gp+a?o9&K1E`NI0G6+_c) z_E@%$Dpp|iFGRXKPHPfmv$|TqN`v|UGr8wbX}r|j@Jbe&BuZ}Z(gy?1+haM{A=*5g ze{bnk^v#=QdA+0;dji@%@Y2_9hVpXdo_!V|6&}Lmo+T+_JqM2F2O8Yuqkbt%JKMF| zRQmBk))2=+vt(@cfX&rbfm4q8ddn;MuOJPbco~eoaxy91_CKZJK#YSj_z0lNy!x>4`+LcY-1eQ}c3w#4%k3336m5Srpox0@o;8 z>&2ZuYvdEue?J8nIF)@P#EXTcpy7VHestyTgDo)Yil_+#0UKnS(-AolHTDsz19v<5 z9uO38$;EzVxTi}vaRt1GT6}FJf|k*Ft$XmBm5%7={;n}uB|vl7kM&o_L+|qthMzz> zDo1a}D;uXLC5a1FEk`XcmrDEM1)?RK3@I(Xws!BSaHY)!VUuz*yY)9-LPl6IiIwK$ zA-BCqL``1p1sRWP1wn9)G4s=C#wpn6-Zt%V58mP6X^Qc?IVRo-mc%i+qBm7OkkAtj zTJv368NJ1}1~vobMj$I%RHo2 zrSm#^6p4p&SLY#Qjbq;d5RAju4+pzE#u9q91$dLXK%dc}&E|QU;-6qG!))Ro(yxWU zVma7hS>n{byx!*7m;6_h)V+l^3T+ioZr#ZuOJ?>GfWx_ewY+#`Tq3)OWz-|{hN~jQ zYr_Qe+MeeSSS}e?UiM5+)kg|lM_w_c&9b(H+eu08XtMyH)`=ZlwJ_x+mG)KZoB*XN zIr%@qsi9XZtyh2YXDcU*a~AQu!;Q+e763IAi}FGnf)20BRVs^KAp{JVAfKcdgW1}QB$-JZ&+4;1V73Bu0zQ=DEpu0cJL3yh)x%VUy7DAZIhBjKol5IXUg>PSC^1MF zE2Nk*Tz9u*z0kYJWuwn|uKHzUvP?&^7z~MFO^pUZ!Glpw#dl)_On{O^-sL6pP}N~wRfww zM)}kV5SNW1H<=<-5bvr7B8mQGALVluXYy7U)+AI>zOY=1a{yRgpTFMT0)jxNFPWVL zsurNDMN6ui3KlB#jjI5o>Um8s{YpB+95o<P($ynJgV2VDk*7-$D?Ky z;Vukagv;ia5NI}lCN-W1@UCOn)-*~_x<`MpggK4t@JWz3C~8oOdXC{k^|!sk1iEiKArg?fyvGFliS zJ6}-Y=-pjLjbih(4ohhC&A%;fyouQU84cQd$n)4<2? zn8`sXVgS*jKWqE4!dR6KXoTz9ovdW!+v>s9tBC0J0l8<83(k1Ims`1dHQ(~L#yl5^ zH`fDD<@07AJe1us^ABtSIjOM`+WC%boSWQXO$SHpM6`ThLQg#J9~FqiK&~6f0k<}U z-yl8g?}|K_WA?R=E-rV+MvFSVZ#8B4WBDB&UX{D=nNkSt71r%_zL#$j$3kbC>s?y+ z<{Afnbu;*Nt1);t94?*@o5+f;8dUk>6?A*T+^TZ)JtN9<>~h4Xbo~pHwurlD*WW=U zE0+fDl=#^{e0ME&iX9%YjLB7NFAGNqV%KmiCPr*&LxJbAO5WcoqQv)!0Lj=+a*(p9 z`IEqr4D;M7%v_%4AWc{+FbqO*TAO%v6)$kkQ1=ul77M-Ybl8TXY1H-MVI%%S)LEAY zp8=4$RmQ2KUd4YHNX4}Z96IYw*?y@(9yarO#JISwL%WoA&Ot; z7EIt%SbHbkYS;3XOWBCz*dUml2nK@4DO#=Gu1Moaxs0%>+HDZEP-t)IW=#Gfiai!@ zg1d*cNyWX!s-dZl&mOXQH5=g+u`;v(rsv#Q>V^2Fz5=iJcAVZ{aH~i}3B$l8<5}8Z zV%b1VY-Tq9y9I#nXm0VJaEU`QzL$mB{veYocn8S=)aCj?4Yu7nueGRmW~(?$?(}ha z&5DL|MooPTYh8R$E2@8G)fEYft15FvknrqxTDoRCayof(J%he`nBT-q#h5EL;OP3R zu-CfwK_@B(y+iwlRt$N+Y}#Sy3r+#UgVkek7be9;$s)m)mI-+@x&(v$>dc&S?tY9) zdQHGm^Ms^LTM1W8pixy4q_GHx{DZ_N1~Lgt6_AT^;0+$Ca<7*4u(Wp}yf*~WKBm#8 zCSxx$QF<>0FO5wfk;+%!2TLT;6-0tFXMs3YawupuYh#r@JwZd77oFynh>5i=zQ5RA z$F0+!h88bSZGJRNc|Uvd5|s9?HAT)MRWkyZhDaq-#=_Gb_4F6sn2c7rW?L4&Ir+AT zeXk`@0q5RpMUOuV(y+b&7FYD0G3H&1Kb!@Sd}P5aQ$G-8n?XSp<7I*E%h`1_g?A_% z1pvp|6ey}cITvZQ99<%NfHDXy?{N3m(Gsi5RA6G)9+$%^a8%_cL{%BG5~~>=nE)l< zes7=++PRXezFU8%l?BbC2!RFjG%7TbQ70yeU#@nj+o$`)$d}a~d>Es1%t zoP)a=Qm30-$12L$4cOLuK^!_y;WN^H12=gdoi!E-*S7$Y4-R2apC?%7vWF$N`p#eS zo{I5o5tpG~hy@_+Tc9hre1y3?wmd2uQTxYkqF~Hewrugs^^u2`i6!UE5&5LWdXU^~ zee%nMh&hOADNSBJwx?|ybVJty=P1hCOH}>LT`n%_gkP+9HhNrc{P`)MhUs=ikWW#i zp^!$AO-{z~eDxh+OAfCsz(@xKhCJ(&v!q2jQeZOT2NiT7jwwJDNi*--EqbA3G(Hym3O|`|ot7`3EdzlJ(01gy5@wMRZWqI+xsA zb=&BGQ1zoesk_aE&eeLg^b;>xk+%nEc|dL#3tq!z7s=We`e$$W^&Ba6=UA=@ON>?EZqm!wUe8CGBjLQbQj&xzzCRG4aY(1b=_22Ktg(dIh!G zap=_2e?a?Hd%JUs@hi5SYRFB@xxs}eyO8sp^QG_i-}Qnjd?{jyQ?LvMyyQ|tcAfN~ zZ~J(4P?P5q7Fq-omBw9pNbk%ifP4)NyZDAfUb`u>6Shx?pUC~H=p*J1nalLjAc7Sf z)&W!*`^2t{hz`Xn2d>(LpTD^n*T&x@$~`b?<&@s@*7;ctb&lOrL9D4%L3?Fp@lzIe zGf9r@FcLj}a%vNp&6c#1SUS=4smT;{`ob1IEp@2Zj-Av=_#?vTRB-0Q*=NecbV-{> zdjz^II1YT4l3IpRFq7)N#wwbMjzUO%Bv@=j- zina?fM}Y2|KVI>s1v*x76k%7FE?n}RdABQ>MCcuV45?Szwi=@95uF}SkqNo$N;f&N z_<79GM=5rMN@Ee%VSEV0HsyahfJ~Og9W@2{ko(1Tit^|U8z-y3eN$f5vWUdyT-!B` z6n|{eyw|nIEtON z#Z7e2+HqD;5n>&IR2RA*II0|8l)ob^XkNz$SF-vX@Cbt2F^Lsdle*3v1NYms6<30` z*$*M>U4}zZ&J(my>3hwUbQFE6LfG5Qw4IeiEh%!?j8%Bd^_8qU6z@@C5#vj0Y^t?CSmg1hf9=F1gi)U>(@(xE*>2Ue1R5RJtt(lFmfNs*st?E^5CQI>1!dUF zd#+`prWSi~Mcc>Z^u~M&R_(fhCI@aR2_giu`sIWmOgfKHfjwfy0%L5Le|WZrxWbr@ z@-YDlVv!%0G3{3=lk$YTkSa`#_+_Ti$=M3G#`F0_JNPX_*@N6sk;PX*=BOf#)hdmu zRc}ksA47TDhl%;V_MJH?St!Q3bsoFyR^1hlU(_`PQTvId85K)@MO8R0px`5vWWd^s zcUP@SM~Ou_T@FW4z4jF%hVAcm;5^`qXHCzA<2LxSOI+Ji`~- z)=?qOzfINs^TpKu2tgVFg&<35`@h%z*cyaDh|jXO{fj^Tzx>X>{%MiR7MR<2_0I~O z$N!_f+PQ!0V+5}J{W1T2oB!UMe}8TM-kZPo=D(}VztmcL|CXEoKg-R5yBW;*L8|Sl zI?I1jF#9JBdwx^w?HxLom{r01vG!Qa62~^$W`MZGr{Z0Bc7K8GoOl#}fa!z4Y=QsT zr&Bo2*cC^sprW!reGtPC}T8A#j3<%9~lcY zt4a!ho}*v}Tc)R{qy5EoZ;gJ-R!_B_*qDJ91duy1My>;@>#h6Kqvqo;HJ{k1?AT5X zj})qYguH3`%jXzw-gi1dbu-pWI%U^yuhgRQ`+MzF0{UpY+09#pcvNtM7IwC|FtUvK zAyYG2@|XtjuhpY~+NFYy--Wl4j-StGp+3T$-4~ zb=@t4*_tThxi)n^-?+RLlrt{myXte_16lxZ&?r$4udSbumBqVx6jrQ^qxCZeqbna7 zeRPU{(3tyEknh#+oZpnSXe}JR{O=uze~w6*+N@_Ue9y}Vatp?|BF!*}?3%hc%-MEe zy}`4OUzo^Ny?qoOp4?VQ?ZVXjT(9oh%>McA13#moqQl#m=@Su^yeT_>bC*ACKH1u2 zQxg*h9FxTaZB0PxH7m}{k-zoREXfwAA(48s43%TYKK|cd>m=?|Y4JAk{ndS8lY9GyYTG7@Liq2Jsn*gDZgrDmn4cc3 z?5Z5=YP2@W7@PoN=*P8Zer?nDjt{~jNx$8j=d%M4i5nVA9H3k$U-u;62D+GlmyQ{O z>uwzU6`IbA0ssm3-nM_Q-2RJ5I+OtZ!znm#gkO=**-C107Z1E5U?05V=D9!1-`BQM z>g-P(e_gDIqDUO3h`TKx(nY|vlHKUF5$|r-`xNp`c;<8GQalXUs&&d ze$m7;z`}O9gndhOO})BxDOgGFcEH!+)<5e*g8?vxzU>X)uf6zZS^w{MB1C`dj9AMw z7TU|&PgJOMLAFybNC97a9REBL)$Ob##vfmw|LI@;#fz$)+zsR&9$IJmPg+k#+X%ZV zhd`1Kg+K&$l>R!B2g1N920yr~^=mKw`soT93ltmt37-k-~eY62FPn(?=I{w<#W{}IoS8+-7=iawSrjg+{oJTBc^ z9lLZ5jP?mR;sD6@QTSz@qM3jb;!a1!_FHKzPM%qd{8V7P5q9CHrtK8{Kh?Bq=h#Tx zDbHU^h7+5ae4e@90wax*E=oYL3y#p!XeVk4@;2?K-~XlmLlZFE<7s2=2-Ph zH_Q}L3Y75%|HOI9FHqtDEc4}0{R#O$)}QY?Sg85aVkK^qDKN9x!52CfNR)k54zQQ+ zef9x%s#jg^{STWmZOa)#!{g1ou8fR~luJ}Al{&QpjkcU{dR+xpfM>J3D0uwyDh)gs zDU$bX`MdsoXbcSI+dC+0_`4ci1kP5ptj2igE+c(HA3She2m!V(dQs*-n8zETimEOD z_(OMcN&t;2ot>SI=Q>znS?B1ho8IkI+w&wW{)+J_DsMH*c`8t{>T) zrSBWNo}#j4s=haq;{KT2AojbOmbL6dtRUQ;cNI1>;1_g&z~8VCzF*|gACLF$Lh~TJ zvn|Aqoj&*}g00wMFYh&VHrBvQpmOo)>5shA=%*qgB98_Gjdrr`pKsSs@j2P#$YUk@ z49f`e@SISlq@*s{QqatWnWp`-7fZfUFemCH;9A8y@{3%Xop(8OsWC!cSC@JB z6}&s5+*TP>Sr;R3k>D%b7wuxt=qNNhZC`xA%lEWO{iCemAMbJl=w)^z`}Wo=9N$iL zrvGp<_O1cOh-Fj8f&G__{L@bT8+#UVBFc(|y1QJT@U@!-wp-@34OiI{61@MCM%mKT z!NUHsbM*>r8oTp#dwj)6|8Knk9}Bhd8<#6HS9tS+1K|zTto+6aGLy&YrL)I!wi(gI znyC;LcEG!>C)3~Jd{0=#k!r(?!EFb1LTH~pT`sg{Bu})aq7q)8N0^D}&GuE8n$^2> zy*${OoU=II65xACSQwSx>3Ekx<5U2se$6pwbGV4M$XoRh5Qupp&7j(sV$ML4#pb+I z9C3+xQ&R>JXS{RxW#M2v83Jijw+^9sO}1N6Dvm<3xP(>Sc;0E5B0+r2&@@n*9CLNl zsOsLxLxg$Zn~oek2x&s(aI4gVsw$U;ZwNmz_+Kc_PfXIWuZWU0wp} z4uQzjK*_Uyt_yGKU*^Sse4#e*N>sZr38*9pXfYocnpKxLJXclw{_tkoT{-9e&*FXC z)*)1qOHYY?bOk9tFYU_`8sbm#-OP$q%8sYi4CjM~iZxe#0(AtQ&j&9OHMxC=SEW=? zZapRWWHk3(+A<#rKfQxfU=f4#>6hnO#&;?o;N#2Z#hxjr*>X0WopI8oloH`SWh;~+ z6w#iNrvkNGC|GI1Ju|EEKM$S%dXDq({Np?iZoQb(nMT@sObOz#v(eJD0DljMA2;Oz zcgXwBJSu@WDvR6MNr%MBGB=TATU&?6Gn@Iqq+;>qeN5rCh8tuIx2nHIMSoD1V_Q;|A_YT4xDT#XYiKT6 z-d@r^G`gE*={XN6olGz_Ql-Ann{&UR`s`AAno|V})e*a%Vj+-6ncUTsbp)rBDd!5a zi0_+|&0Fry;ugs3sQ9{TbeSf<1D#XmO0;G?JJ`CCl9c`mS7#j~{6l)PHE%Sw50Ls` zZzp9T^tk!$HzQ6T_Sle1?Ch;{jkI0an1eVSDg*a5dqKt60W>-1tn2TZ7Lh2Et@D9d zE1Em;jGC$xMCzG2_<+us)sYmSb1@T_jZ8kSd)ZN%6P4qO3L(j^gIx915lv@nsNFu> zsa$W>cH)!sG7m}GH9$y!FcE!bH)(NKG&CMY#GZC->j|M<@|q;CD9)9;2xJk(?FVbR zE&@toJPTntnsapmY1R}C1R?}*9gdHrl97c zoYJ!s0^PXi!L38UDJ{i7lo*f5tQ#vr3e!Y;3({OQ1wSlL3mlww(0?v|8B|uJ>c1)E zgBd^R%FVZ~r1b3kkKj*)Gi2;0t-rRmYkJAYm1wLp*I%Rv8+ve_DAWk}%9hi@^6j$idpB+ZU2l~2~8OBvq zL`6m2WhL>y@O$v97r^U}E4~@QQ*VuyNv;eZ5S0YkOwH!`Hp>hb4m1(y0)JWM!CVX7 zVG#&q>L1h$D9$DCf{><r;S=`C?Y{)eA2$jZfMe}+uGrHX4>_Hi*M0t~wNV>;;@OtDVKY2>w0rSb6U zA)xM)A5tV${{Wb$WPHcqw~wc0H>-69#y_M40jeoBOu3YMB{>hGL2b(_vS1FMbIr2h zLJ@nFTWY{G9N%`T%F`P8>+kQW7v~weP7V%0-1={#UWDw0r!RKOZrOq>T3Rjylxp=# zv~>ov@(^tbiR!QQB^or;xALjxyTmp-Kki69g%j?s=(IjowzrxQTrt#jg;JyZnQ9Ig z(QEnA*Ua4;mc3MoK_FQhhW1GT<`@>Xq=R)l*z)k`sO^#SU z-~D5IO!ggKTyRRl-piM}{dhVZI&t2DI40Ivc87ccxzftRT|E(ORjda_$1le_cusP4 zMXl~w-}9~d;OAks5Za!HUtj)}3--%6f4IWo(4fXJa&08J-D(akZ7a01nB`)-({gjR zmx~bp6rLRs=3-gaIcex@xP08`%b+-9{gq7MSz8E5sHEZ9!FEuOwC<_eA*hjj zTf%wMPs+Yv4O6qiw&;es^x1#iuu$89lKA35g>a&

      &JEjc3^*0 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 diff --git a/documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow.png b/documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow.png deleted file mode 100644 index b929695fcc5ecf653c565375ba547b733316ac10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61667 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 T^(5CzG5~?6tDnm{r-UW|g=zAp diff --git a/documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow2.png b/documentation/userguide/docs/pictures/pipelines/pip_cp_gitflow2.png deleted file mode 100644 index c6240cc0f84f4d342598f0c34f42e754279af7e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65295 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 akU78M++Y*S>e3nDr=p<#ut@IdhyMk&L8eXs diff --git a/documentation/userguide/docs/pictures/pipelines/pip_cp_init2.png b/documentation/userguide/docs/pictures/pipelines/pip_cp_init2.png deleted file mode 100644 index 00d752f2a212937ce0f62281c10e63d3d134f437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58571 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

      8~HUYh11 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�^uqVU1$c?RY_ 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 LQI#&0G<*AB0cBTG diff --git a/documentation/userguide/docs/pictures/pipelines/pip_create_form.png b/documentation/userguide/docs/pictures/pipelines/pip_create_form.png deleted file mode 100644 index 85f43753fd9e6aea7ea06d61f211af2f81f3a41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160534 zcmeFZWmH_tx;Bav+#xu@-66QUyIYV3g1cLQ5G1&}1Pj64Ex1E~H16)!IJdL*K6|fo zzq41?_wSB7PLI*u)w5()y|Z3_s>4;3q)`wF5FsESP-JB!)F2>UX+S{0WW0g{U#Zdc zx`BW|EVdRGSCJJLCsT2D09e~vKtRZZCndwHBmi*(PhX0|LLl!^Kn>7 zYvx_e%=8(~@_FHfh?QjwBEwIHA`8u7M!s;(la!E}a-4v~h=n9U4$ zVazo$2x66F67uAhH)M3P(xZ<$FM(b=PJky%UePTazKJ8w`4X?4swLm=J_%2LyS&l6 z-Pi-NmLEqs-i`@+W`~xFZWuU;Y4;1%h9G%K%I2B+K&8+{=OmzG3Qgd*vA%dI$s^wA zo;l$xhUSwwJsETqkBAweIi1p3uU?OsMSzNELOjELESY{xY;)k67D;}x*>qf9!t)jD zd;Z{x=fo`Pocl8;Kwb8RDk_^d(^H`{j65R(_p|V8D+q`?qqND<{qrUjGrAQ zkxbCJrRWfS(n#FL?GP%65LUKkksVfFy9|Wo(u|Jqrp&Y>^nUL~8LIHNiE) zXG!%b&N{XQlH*WR$=a#1DVr&(J-I6kSBe&5KQzHlB;o5m8r8D#et(T!!k#EhT)?LCy`$Z0p2F`0lgU~U=YeWwmY8*T| zJ_cu;NNhrEA8cWUsl=tE_{0VVE;>O~DF#A%7WHwBl`>z+yK8cw;iPA*uR5zrGD5s-g=A}}OSPxnsGOTSA;Nms7>q~}`BQ_fz_UCw6bW+!|saLjis z%?Cr=qV!>$ISVyQ)=+TSaaplNv4z4r!ds!8sGYBU;NIMi=4tkx>mGzs1?L(}87v6r zf&5OKp%4o$yw^ zE=7U~*zv_|=&d@#jQLD((G!3jumZRPFab_SQO1BfnmZt-L0l5tL&kKb6+Hr7XC{!I zP*uL(ovvNY``Y{Wc4ka<6^$hIQw`zOr49Q9Bh%3PR97|)ul4a3-5Pdng@L+@g^O8r z4o(9$03zrJvQ&4%W_^OC*_>p<0iOh%s+=(2g9Zh*>c?4bNoOgIgo&CF6 zO(@x;*;blTTV5HCHz~9%G*>v;xrsM>wcs?nHIFofwP?2pUr%0r0+n38zO1_#y|%sX z@x1f2109%sWe1Mx?W8t-1`(XPlg2AoDHl#~7>gU{IYg2k?H)Jwo>q583$J$4LBOy= zyTb?|{6I1wzFlNLs_C-O9La`HgWZO8gHaFGh9yPGe&vJ!B$y`sN=lDthg1+E88-V- z@ndUf%11N_#&8`hCk{28FLw{#hb zLNw3Bq<;Azt85@ds7KsdWg((&$5q#y_5gc7(jOfKzyr{*@Et`S5lEuS>YF$itFN|MoU<-x(0SXo;_?)S@*PE%(0)5(CuJw# z=j)E@LXmnCzwSx2Y~dd`a=3^{58Ob91rWu(^h%6j1{3$`%47K_b=QKQbxm!z@(8V4 z{mKAg%}365Dtq~Pt;2Gk#&?b9jo0=b3;tg;S~!bct-@BL``Pt$Re@nyW$s2Sjf|^} zkxlY-Hn}~G`Cg4TCw8r!8q^v$8qFG98f6*|71>L@Ko^h7%awb-uMZI*zvnd2W$;t> z1EGzp%`ln?nmLiDKkJdn0Lzu}do(&ydZDXp)|a!cxLk_kdhYsqY0YT+^58=Ww}OHE zm}TA*_qOJhCjWq7U-5GUM={rp?Mk-Jo9ruIpnHV>*XO$N{R5649Fm_^%-lD1)Wv2* zT+CfSx~H{vOgBuH{v3D5XS|QDJVx@8eX=sS0`E8F2aU#qCPhLm?E65wIi>M(Kae^g zsr)57QCQPU@3OV~6a{(?dKZ2fjz0%h_>j~Tt^JdwIy&OKFumFFyq&rwp;YL~ae6oYkDv5Hjf-;hh*xV6qpcpO@9(-48FGMT_ zWbO)NV3V(XayE{Y{c{f0S&pauN;ZxS1nLzedOT9#DHDXdHhBRfW)3Eb2pMekBJ|H5 zv9_Jv6(GK!l)@pT$>(vEfaTY>#iL`VtFuqaD1dyu4*>@OkPWVI=D;A{2e9R;WuYSr zP*jAV2bW(#K!#aEz<^7T;5PyI4FLfi{}BQn{EZ2IOXNcRSM4i}TbIuy?U?a22+2p#%^0(^^BvRYy^Q&&pL<}J6n4fK2JgNKU(mC%fBwOkdyt<#MMTSTt`ubOx(fQf{dG)m6?@X2$778Ou*S3 zz^5i5_0R6$UxMUTuC9)JEG!-#9?Tvb%nr_$ENr~IyezEjEbQz|;1*0SUiPlpJM{Bv301+x6A zVPRutW%<|G;I0C{uJWl^ds^7)N?6;0$pgNJ5F6WDUV%S4{2x{SzU7~~>ioMaI~xc4 zpS%94>i^wU)5XGB+`$ffQ&*vXKbwDc{&VF&I|{J;TKk`9@ee}(aTQEyAw&U|e?2uJ z!~%B?Q3wbT2w4eH4Nu6UWq42QS=_Gkgq6K^PzBkvhDro2Eff?zqB|@$l1>!^J#DUu zc-O~#p^;hvjR-?kYz(?-pHpX5WoNEqFOsmH--9r!#~FALPS^T{u~Ga^@{BGAD#&4D(kR4jDM>!nTQB1 z=PhF zSR?=53c*Ac{CiV)^}j^^_oMw^BL9ok{&y$;n}7blA})f^|BkRwA%Y=?QvV{S6R*Kl zdGSV8jgMBcXN+BM9A+c_aa-m?Cy~OdM8N?li%PG)bPLIH3>DQMQi+G6znArA=p`80 zw4dduWI|)j!O0k)Y=oCw zHobrR`_)<>&IT8l$I+0SJ2RNR)wVGBBDv#FFs0T|+L&sO<`x{&%OoG-5SUL6%MzJ+dL3$tTT9i)}fI1yW+j#L+b9 z5=%fcKq;C?>Z&7t(cRyS&pe=sMEy8aZEm>fGqwt9QHc3FgyYc^38q`nj^aYQ=mSXe zI0~p>A{6o9(B~vu-Jo4-fwqf|!lHwt!=fWuxS{BMoqp_b{EPGdqlW3CgGx`^(5dPC z#+F8xj|olL_cmuU$Jwx>L1ei=0f0^nPmD&4XKV|m^+w5*Wezs2am6>~t5(-iHO$wq z_ptm56aFn~|Hl#!6w`43B0H(gnD`?Fj5-ga<&j}9y(`h2RM=0asq^#tomyo@adGkO z8hbqX8S2kp-X{%XlHgLqqmm?|5WXEj6CR7pYIT2D(3xB%r$@&iVb1ZrZTL}YsNRu% zS1urU5X#|SNI^>a=K0zBT;tU5Hr#f#W9G(M1ogA5?CjSX!otG% zzKfroFHz=YhvKQGi4WF6OK(X1EIYDk5{`i4(woUdwE=Ty*mV*9vyCsjm&r&kws`!!*@#`& z(ErgZnuy0yV-tx+XF*uqt$#`QElxqy2_tu*~QfspL3f@fPQKtg_<;N7z)sYFl}L zxSQ0~BU;V1c?}KalFeEsZkhDdKt$rkpI>^6ReCL<=%pdI$qATW5!4WZvDe)F__=H>8{v@u56d%^Ee=Ls&=|~M5=5`K9tbW zDQPdNC|aE@)2cpnKL#>%KHr3m-rvB7NAmAf`)P6DFlfaZ3AV_CZ}7#b04_c@meyvJ z>%h%l@KRs9Ibt+got#{Z#Ai!ro|>hduTRN%rM;}qW=8H{zKnt2{V35Z;DsXR5fqS5 zMKx`cM6a1>bAO%OP(G0~oWvmat@-(Q(PKCYxH_^Vyz6u1q1za_osYy)6*g6UdppA- zhzgwgc4*%))!?#g@3nbsO>(HuDJ);nUKC^4;9&ekA@i|ez#EkIaMCXRLw511(sF2n zYUIdo<}l(!ty0O3mw=Fg;M3U@jqzY~R_l@n*SwLmee1S&tHSAWv2?ph@eBvQH>Xqu zsbhVeaA&zjrIsc+1=?^IEvOZHO3vLXqIkVvD6d@A|v z$QM6~ha2glM*Wr%xK;OrAEoLu6%XgdycZAQm}J^FEd~qqb`~ithAllSFAD=m{03xp zdN~wyLv;C&iZeow65I~Jlnwh|=BD zMCwAt(2(hYLNX}&E4n5Y^EoT^=hTvkwx{*@*vK`U_I@5LiM-9i&4&HGq20~U>;CKT zz=+s26GDSEGJlRse%<%OzUFf)oM;oLEt~GG;X>b0U%iUm+A_b4ZHYi3nZ)q{9jCxX zCJ&CVM7tBqkxKC^l9I>x-?LfHb!c-yB3ovdgo7pLu=+%F5`Jw5NT*Vi^zEu=7ILT0 zC&A*{8m+N|=^{;ejLWLWjd9}Rj)54`#Cjw8w@!dJzsS;q_&pFn@VFT_n5vj|8;_Tl|=@3~p=l-O7VS`HzCP zsYfgA^JeX!D7auNm5(#em*=||kG0C50I!_V30$oLvJIvS6OakKSLrNtIBzB7>k?@( z){jhA-R`Ii`G>SQ0IeS|TqR9S;}0_l1U89P@-{t6=^zUf<$Ky5o~5~UzB981)cHou zSfa!aeskM*jr&oqK4M>EHKj(_HrWWmA!*(7bF!Ei*}m65iB-&KY?(`9F&=j#LD6!8 zqHi0k^Br4EFy;#0AYWn#Ie-f*kDJLq@za%Q@lI)~37js;K;ei>1A+nziRG{_PgkR6a87{dccM*>h$ zIFPRo=aW92B?O_`%vDS{JMOUPP`+K^{?Tz2R0F5(**H0g?q&Pku~mnIy2(;;()jTZ z+N5~D@-g6f+XL8a(`fi52x~&<`jcx*NqcR$U*`f0nN>3e%G#v+PxHFew=bl;n8bFw zU`eRuDBM7zUd#HWDEm>nf=ba97>%_%^YkG&cxyJLzv%-Vr;0=^`s33CIU#HABB%8a z6(b+7sAa8P4x8(Px#YLh(H^ks-v;6>sXXnLz4$@{Z0fjV87$zp_sh(pCBG*t}$6Roll)DF&c9t zZV8Hx0W>?N!)<5IJlcX8#O5Pn@tASdWZLLOyYlHsAJ}B{+>0G(#~~r1u2g)z*%Hl& zw$sqPiMG0nSoHHWNmC43y$$-c>%7k?!4ZZ+UJzD#DdoW+hR;?!mHZ%KrE(P{u6;3I zxvZP-eR$Xr8z=2hd+8-s%#uTGNfV1O)|0ES@XTKe5lQu2UzvEY$HIzF!Z{&+lHtMH zmwPvBQI6m|7^B5Ou3BVNC2#)?kIF(hk)hNqd3pIZR>8VazekZbDu2N>)3wcY$v5v# zLPQew5-9+byllMKdYZ7}nl@c{9DKTtCd7>A-Ylk<6;Mq#RINv!QGV;nG$?qXf6LM+OG>1D@J7D-hc=-5oMPeQ(I(9t8$a>@r z&tV-=D3+^JZ@GA(WoHlx5WfF&z!-Du^G*UJ3@Ah7v%B5&2be2ScaYK3cEg)q^Fc$j z!NL?!!ZH7}oT3$3x1a~Avr^K!4=GmeTB7PyZWL<22#53@*UCfJ&?wPC9uVGn`u+UZ zH!(uI!$h@V2EMwaUVGKWf^v0N``c-%?>0uv45_$wp6W&TjHX9!)>{bSGjdZ~zYpy= zwbEtfbu%w;?wR%tb5+_{=SEvnJuH%$aZj$GV72J;XMhsfvX1D70ohX6E#!EDfe)>$Xn}NbiaQ9f%TgmqLo`mCyJ3}1x2s)>@GMkuNT{m z-Thq3ZI!R!Sfik8ti=3O8jWnIqUimor@tfpaRe4;^NXe11nIZKhVl{OgdK|wD$cG; zF^1H@C_XC8qYHGGqvY)kJKg9jbk40W*+WrN!$b_^!MUF?0nN!blP){bGfvaz(@vM6 zJ6Mo7+aq3Z8n#PyR1>z>c`uo(FLhMxSKZ#Grujp;j?ssBH!q9^{Ms&!;ID zyT$>F7H{6X*$@~+Lqv>c=}f1a5E5QVcJs73fUo$5mHtM2#DoWk%jwdkOGC2fLnM%p zhQz`%QGZiiEG2Kg1v&5gBhHGjYmLznjl?n8tCPjJdiqB5;o?r}Z;qLuq6#SCS> zoYji@T6+D{(~g&F--o9OZlB=f=G*mR-ks|*8)HA(Qy7;$=z!wUP&nBr&nxQ~XEFw@ ziex$mMVI5n21SPXIv+qdZV_YXOy&`GwUbkYNw~ZHgLPLZAYrn>eHkuc>dgX>YsBMt z6B

      ;sZVRf*lw10RO3bQw!c1=zWDubokHlD@p9Yc<^rH8J9iU)_q8{&&;8+8Lv z14*sc7(s=2PN{zjUl+_@+QA}mIFq)h(wL8mA0w9PKOh%Pl5jI7k<}}3M`)_PxoAKr zal9wa*kWO+_)1n56Cz`#t|guUC$hA9l{?z(8re4QpW^Gfu9UXuSL<4dYc_wF^G*?U z_-$6Bys^5_7GCW#{ISOZ$WqS}kltCPmiahm7wJ1|-KxMba6dz2Dbp)nu?cfqID9+j zvyE2!XqX@<-spGuxQvM#+ZcrA-41qL;zKDWsWd*(Y{V2Vvnt`qXGEd1RacMOR;+Rj zzFW@^PzHA1=_(qIph`>1K6$$tUXFjCDxjGNXaM@3pDgnA$$A#tU#%E{1y zZKgDgOf7QqrC*|3qclE04J{MbhUCBpBp)oASp+79AzTddeotr}lWs%jOq+V<7)SI-XhPIGYWZcGd zzx%m}WHj!SIHsM{&kE=R^5q~IwXZn>t!?orR!!~Q@AOU0d#BLT%%ZO)E@k$$xTJ&@ z_4ELz^mMzLpK1>WGFz2Tj5TI?6{~$fV9OU89@QH;N=Rd+-X~_DW@(g&$5SRc1O9ep z>^!ugx7bwv%hbubU`bj)voyFdwmCgQl^}y zrH+C=$%yRjmmVrs%aZA)g{9pkmodk5>>rS!Mxx{xmj27Xow}et0WvPt8e}@xxZ-}} zk4x+Enf>@V!!WWgGZK!+>P*yqvE@2rdilpw6Utb7r6RN%!Cd9;!t;#y{eQ$;kA?-6P`0o1eYc6)~ z6NI_PUCnB1g6Nv_?DTD8{U(kk9tT-@Ph0QfO`vGhl)lvLsqtztvjw4j9(B@6v&B{N zu@Tq3^VMIdU6~dgVsBc1H)Y3_oA0vyS|8K=Xc&>*&xfvc#2ZV-$#0o->~z@v4jo<)8XcGy)Jz;RgMDDT4pUz+k=Ei--%#0+AdeF*odq7oY;rp zLcMzW3dIJy)qT}?5$!Jk6`5j#H1>)oS8_VKAu}UODCn6zS3~>+wqEObv?e_gBL5Vd z_F98gE)FsKV20u3u@+@-)Z>(yRcE7zJ#Wxl#aQ#jMyjPm@awh=KR3PdN6sBc7)mz=eD=h{Z66db6|$z(QWHyQaC1<%*1P`0t?azuqXUYmsp)E)$|!C@i@UE}Hip|= z*#YY~cSn(xN=*%_(fWhPeU7c-oPdOD!nZ?H1#AtJgT|c!G*r$yLgHvm z@2~mhozOBaP_vkikJBf{LWH6M+J)(mFv=IUn>&kkOpK^P>}fXNf&3nfW)+g>l4G0b*6Bw*-fojLmN63b>~}L&-9w}3CmFNl`im5igWio%I46r1oaF;<6H@E8+MV{q zmTC?5i}t4!?F}*s&3$y`Q;jc*HP)9}^X{P*J=*uWI&FLKf30l05!#x*<|iU6#I10} zEF?r5XvuZ}oh}Bh?xqrERjnakD=Nf(@IZR&x39`16`iU^E__V)Mmw#Bm_q+31%+D2 zbbJN#SDHY;TkFeh&bO;|K8dfH27CDL-}&F>WHvDWWO&sJ)a5YYITlpc`)-{FNr&mc zu71Re0kgr#qI6nJ>Z~rJC;Z4c;6}|5NMcWI~f8irA+qs_Q!yKz?kD8BfqPt*LO#rXm_H(hf-IK+r` z@&Mp&zmNb#+~8~)WLVFIYcCwd`BPh&mC+$#n%&oNFv|c=7_CP>SXswfFp~B-N@sJV*+P6*6IrQ(RKH%EsyPJ zLQYzihko0`36MD22JYcjbI_+ZJ(tQO@tpznm2VnX&9zhbQ~_d^(+nw2n_bT7>P-Uhr-fOG8%q5(|YfvbA63WRy?FVyvTddlo_MUW+dIg8nqNx$*gTqM+IZ6Yh!o{dUSY2~s-+|x64^!@-VWwDtl zqcvJR7OP`=;sfWp!CzZBUKEbs1&&xOp%`}o{=a~>ZUE8mU?{Oj|%TgP z!>PNT4EcsXrOCFBKJD%pZMsa_1C0EQ8>(z4GoH9rN`7orkV~Sc6J$B1R^o;nJ2~sD z1T6G2v+APT^I#z7>T>o+`^)V-J{P0d?k$~*HE)?tgl(_*0jph7#)R@lDi3DVuhQ#b zLJ|zuXXjVrcP!u5>M}F$FUYQBa*Fyt9istjEpvV)2khHAIu92*GlkTniRB{=E`(yn zUuvzw!5JH!k;zFFFSkdRo%8@~CYpRm1n7!m%UW;q7(tw?GcWO@7{2XABRyn~qc}fQJzfGh1XCZW3pb%3d<*)dPfd_&UcgH6zn3PbgAhxvZZ_mp&WvMc_eUWMq` zXL`XCaFk*gQ{7$ibYF`aVj~mRvXy%-H*SA*)OidXznXXUYOKgF6uW9!4X}&{dxy$3 zfMajMRQ9u$vO=lr_wEmxW%I+P>ML6coW}dRX;tf)f4$?1X&hPKs0_o?jGXZJU1dF# zAfkMoEZP?4R1a-*!VK*RoX{=e&IIVIm$D~Nn`W%OiHG6iNr{d*nZQ;UX9fX}Q zpOn%PuXkw_ho1XQcVd^H zjk05ZOrwgQ62I9T5VC_Eduw20eDbgteEA?PU_HXWchUKx%lMKWw!Yh7`|fS)#)Z73v69ba7RZhclSww- z=wUo@$+70020N7?iT4_bK6m~mRr}G-eXj4%rR570o}WVB=i%>G6tj#nu988f zF$c>T7E5+%22)j)Wftdl7g8Rc30PfMKhX#bf0B?UP2xZGQW5g>s6ojr z(Qa&5;&6?9uy@zvXhnYekX^dN@Fbuv1UB9O%DN*1K@l)cR+)eJ#$L!7@AAAivH2Yq zU*o(TA!<^4C>OgFCyq8F8cyD~#&WGEXcN+T#F*=ggh>R-d&fCpzz4QWZf9MpsT7}? zDD2(Q_iG(8+^L(Z0+k;_V7|zO@UFaZu|4G;f^pm{Gqs8*;!0!ByyRU(`Q^K%9eM<~ zglqQ1+XguM#X>Djy}ht%3fdDtFN0sA2j?=rZ?4zWhQskb-p#K%&m4Q~(x>+DMgtUI zpYP3FaD>M zBBsiGw9|z6c*7AS(+#kiOWy5oXI%6+y5KR?Yfh+l9#}^E1XuWF{+SyT3RrSn@NIM^ z9cLdS+gRDjAd6b6+uM8H>^9iW{qX7GnQy03!B<`AVS@qG2h28Ve*byNf7h?ZzjvsH zq~$WXd~v%wET<-orVS0(Yb_U<#JjV3K7b1-fGMbDbA$clk^f?Ja~gA{qdm#-OUt;g z`~HsStL9-e64^x&)`Lom<8n64NtZ?ft}0IMGH(Ja$Q{;J6! z@2Qje%k2fbOK+rO`nRl$KYaLb#7m#ZVmVQ5Gfy%V82L@FJbiY|ovy}bVui>;Z1PgG z)IfGPk&fy9(7(OtD!rmot3Cn-24?W)m|q#;QN|%BDmjTodoEi!7{85l)Ur<5pJ|?* zB1!QhDi;sngM34p%?RTlW#|36|B^$;qs*`LJD#B60qouTep~)>pwvO?wiC7IyMgg# z-Wv5wUSa=DKE)V@$^V9~36zRqCa85-VJHs#2C`V|^lEl3=k@VA&h5o{Qhb-!_O z%MGOVEzE)a-fjKY2umgPHB)s=@mk(*+`9DfY67(aTQ`$$e|(Ow-|>t@4c)#$KiZ{2 zx03tJ$>3)|A3`}&=`&M#uvR~UpL6}WDh4@~6R8)RLOfy!R=hB;hI?(*^`XOgx{ZU$ z+{0MV*u8>*{y?Thm#@Z$1ayo_!pC?|kE|FBQKt~vf#?$%{uyVCF>YQlIQS|l0T<6h zf!lr|KEZH&umQY1I6m~s{&nKUnXyWUPiLIY#=nG^kZ}sZKOPSsR%k(udf>?V|JCo3L=i%H$K>`xwFx;sQKJKCZrLXY^G^Gn4`zJmgB?2`E7=we5uZwOKsw^@f zIUo(r?~G^@K;m?;t6gFJrA+$6S|&3LN>a_^eh>w&nV(N&d?nq_4h!YQn>?R%nmWSf zQ|kEP+p-nLB08hJihFyyJ5#8THhn`r_f0>C1`o^QDD{_(GGCn^L*k~$5%eEHGykjr z;{9}CoJ@Rt6%Qzk8M&Yp4wrisiyg0NPRg3o@WUj6ojO(Qk2MUXq#IvL*)@Omwf?@x z@Ox^Av_Ro$MkJVD!uXEGq4UPes7SWRz}Be*)5*b8$*W^2V3-uW{3JCJu^exmQMsTv zW#q;D{it9X>$tKi^gyW{iTjR4iQL6-aJ*ImAfgn#LXpAw6UgVUB>z8rk|1@MXsU-H z<2Vd%3b9D`bG0{=vL7DR`zU2{aRLMR${JhBIsrwgr1;Ey%pE^z@75y=q;mdxZ~ehF z>^N4c+(z%EDTkw*$bgtwjMcLK@tGSmMdYuTVqiH9$h%D*>(BQB1l!y}^S#EyQDx`t%?{__zS2M{)MEd9`8UF_Lz$@Kg77>wj>V$6c|2-do z*Ty3m7#N{0qx0|m^;e}nLvZU2e|X2IzgpnG1dn3`7<~N|!EYsx2D&ENiVw*(OAoKx#J6RDn zELx&Cc->rWu$K1Ed@5XiKh!yL{Lu0AU~wLA!Tyv1j89B7Pq}W%Z(ZWO#oY%V5aIRZ zp^q%sIX!5(J{ZAi_m+RGHeU89O4TEQ0BCVO)PWXgN@j@{}k>n^@jELb|3C7l6` zJsav+NxO(Z?%YMSo^Hx3W2m>8O&lQYFos+94z|%XQn1SH*H17`4w^TzK=at|%QFA| zC?ies7E1!1$8q z_B1EbIkeL#3kgb*cx~wJd+Q3{t!i@=x(uK?8@0}jQ}1`A&}*uVzn_yBPGsKJBgMw1 z#2HRWsH#$#XU}?tfZ8x}{p7m%qfrqM;fwsWM87!sI3F%;PhLK2$$JLk?reEz8XS#w zU!JpD+*nh6=e32#bf7HF3YkN=|Ib}OAKberN>@b0*-FfCU?nt|C z2g5Ywixh}hpzlEp=wHF`i?pZfVrLL>BhKI*55jL(sDcgSOP||AEI>si*}(~kv!GXR zd(tt?WtcA!(stEDdv`exyx0$O7+Ep~41uu;=!PU1BmfRLf$N{I=5P4e%qPb#4$+L| zLlL(HlXn6A$q$3Oxe-5pXb_s`2T?boHfwv|5L-brfPGr-F{LWoJGt;^q4&F4ffy*X z2w)7-{q;cvT&DRCFs|c^YVUpiqUBuO(Qtm>iySxzu>1{-!9r1(!WS&gmVSsgn%QnK z8lWoBYS){!y{0I5;?T>^G1Dm1Lh(AkE4J7jUv}P}eLL)8W*nbloIyTs5YP$^$E%UN z7SfPQW_;JWbAkiLwkl?DUhFw*ZLXc3vZQ~OAa+}@ZZW=d-aY~+@2pz7#TLTAb28@< z8n5=0{>%8_FJTvv&^1I;Ddag@KL%}M_dtPGwD_QJPef+OXGj|p%70 zl$*80Q`IR!9G)!vqDMx|($)os%LBg$PWC^x+J+u2v=8XI>YeTjR?V}M-Oak6EHDK; zwX39a+1WzlU#+*neM0VdlJXgj#;b3<{DnB{xZ4oEnB65ET*|RrU_?C8<-N*#oKY4q z4_57XbWI=4;Ls=Wv-147Y#-py@3Yikrw6qAxGea6+@rHDa`fSt--l!@ezI2jZH$@0 zOl9LJ+tZA{)mmgSlM~vv$qTBMRSym!tYXrq`>QLS{{8W-`PXi&)aj5GKYk)$Vi6u5 z0DOJhq5>@9AK5J{epKoYFnhFJEj)A1kt$@Fr&wANU6E+_rp*X9L|+EH7%}szdKdP> z?hZAsKF*WK4;Y+=MluVmj@$GngI2O>15!l_DurGqNebq1mXGncUq_KKUAp{|JutpS4p3@lb>fj4h@ zX9PS~4KMcbW-PiC#kastXLS%&jG%9h&BHnfIj%$7=*^~aHf0K^L(3@bwuniUZLguO z3wi#duEJGkOAOd=%n>*{Q_lx-p5XHh)`!8>3Y_mjU(B#{%1-!0Z=XDn#PxqB{P~T1 zT^h(%c8n3sF!6LoV{RwIhEv&?E9|WAD;ZV+2*JCblK|l#p03|`}?heU*J9vGu!8X zsm=eSfwAR-M2uVB`~CdJQr!3b`|ue?%m~&CGL()hoaWfKV!P#CrvPzJoz4z_tDe*Z3U2L@df6VWsxebp+X4u)H$OHb+nhwGo}xNm>T__z_kv9+n(Syy}S*!eEl+gZ1<;^OFX z(+)ilAb0D%<8jeH_;zA z{fq!H8Hhq0$;Q(0exh{qwqJin0-Ap~g@FMcjksaH&f?IWm&i?mv$i*3BC5KQQ8_ah z<-#WFV7`(eE)JfOnfU>dGhNYQ863J^vE)MaerY)MZMH%nD)xKsbTGe~iAh^a{8;1L zM-QxV%P_iuFcE#`EIM@;dKeQ5jyJdzZx4I&@)k+!=w>nmNS`b5$RBibd3oFUEe>7KIqq?h$?BqlCKy+6x zfTFxnQ~E=l?rSVU1}bv$X~BUVCTm?Bq1%ao?G)qP;X*@x`Bv`T;ZF}I$@&fiw9tyB z@qP~!hGFAl68q(kmZjC4OTb|)YYp5wYOKJNnY-F2Q~W31 z|CiM6AX`(1#NmaUh3{`w{20hxuD8GrCv9fBwL@6JA&L`JfsEtb7LZaAyW9#IF2l;k zV|v35is^KAPDgHJ(r@@Cofh+mSTq?JdIXo&=agsO~ z;s-{P4Mj6Ywr`uO_BXDj=--ztl1W|H=euRA{K85($_?o6u{~ zvV@_MCR>yGn;H}3vc6lY{bjw8_>CwUU-(2NKV~GuZUwD-3>o&4T+og<4diBQH)K?% z*ubqMzY_^vNzwf*o}z^J>ln&b(c-Clk`|o5noyWlq7eq*nrbki4(j3D95i%HutNwq;Q7?cEoXLz_JuHCcqC= zfZY5&fc z)tJBM-vcNi43+9Jb2+Q2BC}*Ow(W9|gt5|0*a;YG$zm~*%+?Lf#*NfdoTKca)w)tI z@TpSLvTc3tB>vS;I-L6Cp|cQX;w>V1&FQ$j3#SScdYY0>Z=RKuC0;% zIwU}7n~yK-&kjjbFwn8Ju;WStK6fHP;^$mv)$q|{#dFpi^*jNmY;G{Nl{EHe6OYgB zJ2W9`3eo@>p;W%1aU0o4cv5_8D5!>{C)Oa3F*7fT#588zG# zith2v&M)H1!zFPs3nFQlROFP*C#ecqH*sSy@u~qj(Z5&Zc#wY_Xva;7yzUsM-kE<) z@i?W2u58u& zGBTr%88e1?Pcm|H&ai5pq?KTs9tI9h1`NkM)fD0|F4x0BKtYHrUv%I4`b`S3ncK~> zzP{cdAp;;2rACr5&EMsD-z5#p(GQPGG^*Lj&QE&y`v8eC&M(*VE_AWVU(kB7C}~XL zeBn#u#UW?tJxb_Q!+-r3KobFNoMt2^+QMb4#Vi`i{n>Sc4`^kkC1kW;G}sUmGuqtC z_tXS&S+q9hXq7Z=yTkUk!tWI}O^_+E3ftu(sf2M~sWtA0)!p$C_5@KU_I16#6E!%) zrJbV^ZevURz4!449W=T~;r><}1?;aVLqgFD2&Rhv*01?v3B z4V6=|O1*`L$whXIhL z7t`?hpC$L20z&4{gqGz&di%s-EhLT-r-HNEhmemc$!n9ZPHoIc{?CmGRz?q-gec!8 zwZ(kD5ykM6LyC5rk~3Uz*3zwNJN>sTlZYzrWK9I@Iq)kh{=JDvXfjA9$vmM(mBLgm zv6S-pS;!MVbe}nwl!fphlYfpeQixCD-{@i}e z4C?L@`1R~f=1FlMR3|y1!n+zZaPC`Hq7)HE9sBl`qu8G})UVJVx=2?e?9~A8`hB~a zN$%5>(tEjKYeV!^?JQhU{y%Ssz!=1>Ys<2p!CzicI=3pv|HIx}21L1af1n2x5KvH3 zLBOC>>29P$Qd*?DyF^5!bATDT8>Bl7y1To(bBOzJ-lGoZaNhggZ}-Fh+r!MBhrQQc zd*yGfEqD7iqWBx1La&}M?witS$DeuM2rBP!$pr&E@JT%`-!S>HcsXO!*KD{LbhNBBFQvVT0Ap#tuEkox5lZJnN#x zU|ELIM%pE4mW1OQA6WamLG{U4e6Gv;ObaCWC<}MVqK8j&BZN8Yam+rN3@6&k|<8wL7XsfNg*c15Ok%QlH*PJ3D;%e|YeS%%aU%!&k zxqWu)gCxS}yhNV&RyO@tE$nMEdy7zbVX}ZPUF?H8*aCA>273w1OYFaWT$_~6n)sQT*3d|4kvpAbao=$nfP{g3C!* z$!_=w?<;sGM%=NsUqxpCy=HSF9yXa!e=nq|@l@H+Pa%k>V!h zF5^B~y#9PD;iP2ULHjy~oIddQ6QmphD5tlgMUm)XA!VKyW;uV#Mr?K{6Z?$F{mj#ch{X!9-a`NXF9A~>|p);x9E zaPFE)AVtg}g`Cm6Q4phDRY$}V_tuj=&RHu7$Yl+=VqdRN<_*CmSA@gfOa>sy*7L_Z zbBh8-QN;$6Kf?Pmr~~i@!z`1D!k|QM%tK%ADo`qgOX0?Dxn(_;mS#~V*Sp-#UeV+a zJkmviRV_a`V+tcfv81q?-Yn%_+GlP&ZTIyeofVW!g=ENn^%+Lyo5YxEF2k7dy?PPl zN*9GRTzmE=c05cfp375jF1M3i-BjH@z0xz2HS6fMaHaULul78YKps!W$xZS4=@Jr6 z7)F$@WKN`k?jv6e{nkgSrhpa! z@;PrN({%lVcxXB7HV@xKPD-TuVy{=6ou8XT1k^yEkuWha)krGeC|;XyYcPMsT4)7@ z0PS$-m-D=Z>cp)^_51W&R56>x0#+4t-(FG`-OXT))h2iWelafIv3m3-Qo|+0-^u9X z`ODsUrMR#)b9_=2w2#-{kA>v%4qs-5s~n%j90VnNM6xC2`1%{az(Nw*1}8ivyL~n9 ztGh(c@T#Ya391g8F}teCfvzUSev|G{5@a+qJH@u9Ey?1(bHuwLv3g^x16j?@O`qB- zmSQ$WUy()7YSI9uK2M}*+M|&)NY3+Db^9nL?UwEYnNH{f$=j!0+(0ve;o4m2J7p8G zPyUa&zNUHZzxjIiCb5)=(QT4``W@diU(&4$h`>h*y&?=h;yLAybJ2-9N6Rn)_Y(48 z^qR&*L^kzmucF(zo$2PCz{wgqS`6O@I)79$GC$H#%28R13AMk*aS0-*$G9umZ8HtI z%2j;KCgbmpjPzC&*>iRMismaqo}0XAm_oe-0Rd(+&nHF@O~h*Ei$|G;y>v#<&88_% z01tI>q12-UWGmEp+}bgjquw3Gx$cfcGAuyj-NJy#nc+whnDb~~z%DxG?9s`x1(Z)^ zO{tb~#}s@vh*ap>MBBsYpDet1=D^0rGIpIk|0C;TYI%VUK59tdy0-2baW@{fI$}Jx{I#M6)b)6mRD>3)$NlLrvFV^1s+ev+m^+dpHC?ik3P80%pi*khS z9mHc3)WP}E6%co3-*l?HBZeFd*X6DxCjI=N$8LDbot-nkeDN(RTF|0CQ^6P~$0GJn zPaBXa^TVNw^zw^rapwlp0^Ozx*G>;=B?t*D%kCB5K}L?4YbuJQfBE8t41mUOCDiVX z-fE+(>nQ5u={k`+-Cs51nMXuI5aoZDl#MR&OI^SyH7r_>w18fC%GudKp9o8?SYSV` zw!9A|+j@;C)Q*UrR+xWhyv86hSO|AAw($l8ypz{MdsD@H27UbRphvQo7!T_LfMxG+ zT7}+{CZfHI0yyjr2on$zHkh4G{Jy)pw&jp>cyttLN}Bw!G$DaEQ!O*8lP6*O~>jcnT8 z^mNltgTq#_`um~71tNCUuPXV@EA3iN1EM#)htni`-AEEpryMpM^K<+3O7?|YFdkSj zk}^*mbbj;2Zfonfl}|rHhbIbDRS|P?wkw0Ok0K?(=rq_?5p0uGblfx)6ckC1n2Spn zh8W!MpC9~j^DI$vcwW1eTBVAGhOMWrsK3@AY=a&jtPK?S?N^aqht9~T-M*7yfp6F$ z(v$MqwMwUB^xh#?Pp(cQ5|O*1nAKzZjR!b5q<~HX+H+A;WM<|qtVs6fyp~Lpa^q`_ zpm`pGgw|s2enx{NITCc$D+o}xePbkTx+;s>3#+!h$V04#xew`KK{x6SiKBfh>yJPTIJMXrsbD-PtYrmo{8vAHR=p;eGF0_kyWPNwY1l*JhphB^>xLzH5Vukx?+Ot~7t#5_-_v ze_J8ORZ&~H&?eRF)lGp|@{jNkl7W*=!{*#u^B%&&@v^6Lq+vVzgZR+4kmte+zHTh~ z4%om!ULyYb_3Q5b+!0$*5*z{JbxBoz=NLB<6$sq}7$jAzWS5G<-c)U8$JL%0`t4C} zyCTOu+*Wj+u9Ci;ohH*q_hKuoyYFE&$-CUx-=kFmX?-K2Kbqz%@)ixo%zq3M#Azu3^S#B5!A{E3L94Hs;KJ zM9k4d7ES)IXZUwk)^V#rcs%vyIavQK9LVk=u>MPfLdkayltFB~srPw@8q6V0L$ zLgwMEt&~XNHUI^_Fo`7Wi)eUv-91(QB?))!#X13gO5%c0C{TU?UDSC84O9oJdp|N7 zy^$uZp;y5<+siljL#PS0tH`@&KN!H&b+kMk!MSF<{l{>bzI&&d?cn)d>}wLa!4ki5 z3w2F=-U3^w6qHN$jX}mnNQCQocX)C~R%~a%YJc9-I@e3b%Jk!)lZ!S0i*J7m=eqb8 zlDV=@ShX|1qDPmRgr&AAwH0D#F9bQF0@l`T{Sw!qX)i5Oa()K+n7$;i&3Z6S@fY1O zH1O^q(k?U}Rc*|isjabwQQ53w1`o;yq}7c|)tbLGw9QxGlD4XQnum&EQw!_`1wa(s>qW#Ix(!B67N#k{KEm6`tEU-%x;ofgvb9yK1i|9+?|j zheO>tSTSO#OV8=r+R82-e-*33l#)XMP2?FLDRJJSaBbfFP|c}m*VSToZN=}O2ao7e=|_LN zkOCTA5aei1 zWIfN_neWRj9IPMkAD-15NujK8olIGO_istL-z=d+TDL~lUTrt!JQaEFau^q5PkT+- z{pr_rXTaMcoO8y?^klHKw!p+P04_vF>1Qh4oi>~pEvZv=PG-0!L10|2Yb58bN4hPN zvF+jAO!I3$udVo}d-d11@0}4uGA#1RYHo_n{NoMp(eDJy%-li`QT=J&|My89p#Z}* zq@8XOr2l*a(fuch-;fBOmHnH`dwo8e*ue0bxc%#P@bxjjm(Kl!m){GWQ_u|VI=%jd zkmFRqaA&TSo0RWAf8xUX{v!&J!{>4Me{S&&iz!zEh95cg;{Q*hkKg}+jLp4$zXIXE z6Z@}kE%Jfkn+GW@|I_GgI5-SSm+7ZgsJ}_|U!JBlfZ^k7qUQf)%YS< z8rG@KF3#^#9iWVji_5`0;tf78E=;815BhAw}=6F$f=HdzS4 zbV}&sMc-cuQ`c}>AvvrCY9Xk!5)&~9FiED|>qHh^*}Cp>3IUM8A6;id-Gj;c=*lHl zART?(irlVG8kkM6sivQcd>jp*{3`WIVtR+-bAfH>v ze1iNU+uJ3SUtHoVml!Do+))V3EcTAG-x#$84fbDVbIh3@@MJq5Ntne^pPwFtjl_4_ znKxb6p8=%2{6burM_Xf>y4#uH(@0G>@H(UCz`+_zv-4I*j=uE4m?XpT#DxBNXS>Et zT43@?cbz-WN?&>z=iYu%C>Uf&SD}!tXw^c3JEnsips!%|^yyQp$&;m4U(JZN$VHN; zrl+CZDMh3$<(BC!Ra>23)_NJ}=e=+>Y|OTLOZ;+ERAgnT*9LRT*3>UEUHsQdla&v> zhTrH2URAO07?{Ot!yfqQhYy}4&XN=Tn5=Quoofu}1$y{K%e*u_E!pkl*b-AQf~eV_ z+ooAHMADlKzwin01LdlgwUWiVP*$*29GXDr3uE?A8p0 zkc?Obayjk4Sel}mqB)ZS`pmwwAJ`E16!YYPo=TW2^blwj<@ziW3GK69e-IImhTDlQ z_%1$sdrX-i_u2FB zg(iOgB&Mb1adtc>U1-ySF}79S*Cd(&=3iJ;H4E+HhN>y%tC&LPuH|622|ZRZ`JB2+ zE*F)ue2@dz-DBnG>+gz`2nh*8zE1eiTQ5>Oo@VN&WPB0n(pNq$+F6TzmNqMUeSB-ZY*UUfHKI+c27W!00YHQ#qOtW;{Ul$kQ z2}aTd!fl``D>rmBw3p_z`ym1N%p!j?sIBGsCvopU0vpVmOwd3( z##D}@&Azsi*&t(+9A^N%zZh)}xSZ_~hZ|!p!+njzYl9Dgrf6#mXQ-XH0X2r%8!?rV zbJ`H%f_DulJ=)fV*7I4}`Qacc#TM-#PCd;eJlj?BiGf-P1=VrMIbDeS11-weoJZq( ziz>C@1=_+Ry0NSC-_dzObK0pLS2NR1Wqmh--C@sreKz3lWGv001l@_uo2VR#p9|VD z4nv0b{1CGzU1_)1!Ga3J;}v#ycTGw@GwbnYdS+kE^{c;U;drLCltx)=SFTEX`@;s@ z8!TpzWZcibzNK_WI(qs8Rbj)!Z{%E`R!u^cCSUHoO>^xb9gQhVOB*0<^nawVAUtOn zsHm#87OANirQ_!t^*SnZv73@4bx;g#uTJ@G_IDg`xq`j5e{DvwE7Y!MfrN)PB*#;^ zw{#=_W$9>V=1{S9lhjD1ZZ?-45O_UAAPI;xMDSA})rbtfZ%%h^VOdrfDywXeRfhv+ zjV3JsV9!eI5JT=($zCyV=B8F{RBK+U-H6uLYk5kCpg-i?`uCKDAoI67)P^#tTO~_t z_4c}$`-}__oh50QXeKIDkZjrXD$ym?0DNjFv*}o~EsNULI3Yg%^EG3zdv8V9Ns=q8 zij-L#c=CBC?IBxUkU^unxt!y-p5oAtQY@jda_6U3l#&QZo;9*z_a9(kQ1g-U&G)}f zhX@8p&Cay?R5-YI@FpxO{B0OI8f0&fmRpOoqdvyFtU#d&8wJMD!;ypYAF&@%3ak^^alarIH@UoH`TS-KXv1aa3 zrVmaR=XvoX8Nw4+8uikw!_JWpKMkZ`PCPf&eIt$IZr`XGtwaoS4J^aB7@c=m2%&lx zZ{pQggfQa~SU=$RMQQ*?T3^$D#5l`S(d-<06y}+h^l`12sB$X!DcLaYCzN)1{J=Dj zI8y8jk=nCa@un=J_|s=yaTCrlbYt>kGvrDJwo1A5Jq2<|95l_(-7COp99fTy+-`V|n!c>Uf|A%I%ACX|8) ztw#ug@sVJ(gxg4D=$1Dc$LnwH(>zb=HKn*ublASQ*Dbq*kCmE*MbM~-qzA^DFnKqB z7GXQ8rjX5ti&_&!qsgE8qH%g}*_=xD7|f?4CMI4nAL{?iru{U3>?SSg)kY z#C*A|7Qtb}?3M3U(E=nTqZl>5egEF>_fq%pzI)iMgaMfnNM>WsE3j``jq_0`U~*V) z^j4SzA)_!hot@5YDb;n)?JiKIT-IOdDDvnIKam4Nm5q`*A8$hhrJ5}>y{t(+(UwBf zvC`AW8e6V-81{W{-rCrtWW0pYb{>rwZ`Bqw3@POwcIl<*Xi3kQDldWS|r!D6Vk zSgPG+@Ra5n1@Ay=)*DQVxxV*R&9*1(^@hpPTM!xaJ3?P33%8{-`{;dHqk}ls84uA` zO>`-OGL~CPq^kt(UFN74b>1bMTi9)*#lC$12L;m}LuV}4P&g%Zme$s&(z(uJY(E>J zyZhLdDRR?R9h9&A;h9XflY3?1yVIan`;B3x`P{O}2nI6ALUWeeQO2Xijzum91817{ z(>FwZWITC=suQ1WCiJ{vfKC!P5=r0P1Wa5~#bM&$lZa}oSP zs~TLdKukxcso_3%4>PDWMb=LIbT>Eq)wm3gTgj zGJMy?I%mV+)kK#xv}~a8PP;CzG(&}?$K|snn4OxI`zlxgA;AF=4pd+S|)(WQ85CH%KEAEu(GXZK64Sc(fspm>77g_-WTi z?Q5tQASP(g3J)Pqpi2cRg+yfERR>G~*?vvHvE=#|3aY(|FH09^mL&@458;;TP=!?zK`Cze@XK}TPr!e&b z^$H0EO$tsIm5qvdL-skeL;0JN1x^R|%4sFj3_!j7n)bo2P&v~R5qn~}VR6bKP2n-y z+!m}#^`$HueR{7$aD03|(LEz4^-YnqZa;EbT2gQlpR}jv-5in=K znXb^bm`2Zc@Da&;&`6}3l8P#OvIWaXUQv-UGc!{oULx_R_hAc`Q(SUD)rvf2Aj|C% zBG^P?ofog%Bc+P5(iT#A16|+VPz<)Wt*=%&={Fzuw>un7I7Q&v9L=Th{L@ycw?|-f zOSXI*u(TYWjyJWFy4d0XqGPkXh6%OUhp*+%V|M~Wf=oh@vDuMQrS=l7EsPMWIKn8x z9p@S)OX&qV=5u~a+uspnRu#Cb6$;O><4yIj2GKD}H)Xqg{p|dE1n_ip=XkZem5W`$ z+0Y6ZJLJI(1||Usl5F3E1~`e5M*JUw5{L%G-M6THtvkzsx76bh#KJPGFnP9LZU?i# zYPou#QC*x9iX?3!f6;kSp>;|^LiYxUg7YAF`KA_P30d#&U4V}R8y%}_#1M9}vbrKj zVBUA%;4z#go|2BhdfBlQ{9_9qyDl7c;`_5 zTqfS-PTH&L*628#A>ZF7!+Ud7hqdz7KIv3sfOaBgW^v(>ky!8a|8ti#iO}Rq@!dDAMM+a4(eW;`!zA57{?FD~& z>fh+fcrhn=ML8~-JZxCX;cO3Dg3{x~u3m(U#+*vzmmxE=GDQw67k=6ic*?v~p+@7v zb3Bv%z=rnq&BB%@ZJWZG6DR?WDQC?!b~zx4(02mPkxe|f5X4&+6)IK?+_!z>Qwt+4b1mNQNa43B=Y zg7`m;b`b{hB2$hLPYU==&2;kdTlR@-TI5 zYP@+voIPX~JU(7c={;rj9kg5Z_163>m3iog58o)q#tSUIR)p#7H_up&43v#-a=LQc zt1-C#GI)Q_x|X)PMpa+*b5O2TG!j}$%O^?I)SR50Rwqr><*{_{vz5}dg}|yy3f0n0 zi?$5}L`1QzxCtHJI&L83Mv|?VAIY@FtXN?419=Gia0U*O%Eq)K6hn8rzP6V#)hkE6 zOf({2?YZH~BLzEaSF?r&61}Mapx=$cq4u=|nVTw*@L64%DikW@JglFv+h(|k$z*Ox zOcUTJHK&s1I<&7c?B3pC+K}C{b?O{5t4$ld(A8boJ)cdr8qy>R2b`fQE>?1p51zLg zy3Uq-aES1qZ;TdO*=?-su}S~9(XmxQpsh0~^nb{mGJ1IS0p4+j$GmyXyeq4;LrL+Y zmzOBiE|&yoGf7isQ|VZ+f?lRZ1$YOcmM{8TJ^}TNU(U|j#KMYq-s|Y-jP9|{esr%m zdH{wtxGYsL^~`Dpok?C{moQ)S_R`Pq`lXA!ejReQ7oxuq#-_=Bl)F*^ii~V4-Ka7d z-^yIl$YZ)#UjKMaPfc3_6bTGweabEM>MjRg?Xi(ofN&guVN{QgjMSVvOjbVWp6hBE z@1jD~H&sb*ZVvNqWn1J7g4_-=WSKCma@j6e`q9-TZ8JUaFt?y<=;6^1HWl1YLVB$|qdX?%-G&D4zlc}>O?zKl+n4aRLbZi55 z7pQ3x;h547p9Gz+37r7VQcdW+HlyP#Wi}ZV^Z=+M6>hA1gzMAR9&f3ZB+!d};jZ(O zYV&!Z7g1>X<#}O@kw!-4CZz3g)$X;@gt`#kj^xCt<#*LH#rf6T0<;y|kE3(G*s2ax zJZcKW(-PakZi5nafGoA83(DkFR7j;c_mz})`>Z&Eb6tYU#w}7GyQ|TGS#^yT1`bXy zydJ%ksIX-JOohE14BCU4l+!Z$+70;G6KUPfvWY^c&xX zR&7l8SZXIrJEJtEkv5rqE_BlKoVxt;v0pHV;(e%}!tSW6M=7u_4T%>)~{` zjHS{u#er6v{(;2nF4s>9EOBkNYa- z6r17lTl~o0NLNNaK5e0?i!VR+4-zB~yWJSg4*LMmAk+ZfTjS_+ft-yT$eJ~9=(y*( zG^eI6yT2j@jRen;h?<%|mp5tXxW(E;q00i^Sl7(ON`GQ5&@QFLGl+|-qQY^&PIG^* z%WBH=G7DqMY9iCUj=Qko2a3Mii!s|U^$TyGB7&*1^qsq9Ep$wqHUA^B$<|%c$l>g3 z6$urGDs7BYGQpS0qiMM$>sK1i4MKV9gB3XnRIh>_(}vMONVQ4Th=X{}LtQ|ZNj6?s#HG(aSP|wUZ5FHQi~E+Zb@0nKZpWuMN{k~0A)#K{#PX6_x-Rx}iC2|o9HD98Ggs*T zmjR02UIra)f?GAg!EaBRzDtjJSbID=z5rAx!_n;X-ZWcZiXztfIK^xu1LcOX3!8X? z{T0{<0+=lkAIzdcV;F}u8n8X`f~0H0v#>CyU0P*j25I zcv*X%848J@mFCH>t&R9|SJ4EUheNj!B5YO{A)0!zRhiDWkhK~y5NS)+tt+50qq?)0qsOpm<)}}L>ZFm8kcjB%l}c2d zbh2lwF7wKWlPa1yxjLR8B!Q2t>!RptoNX~qWL>QWfi~s(Sk{R)9;-xL zRDY|5OWz?D&X#sb&&Uwj*M)3^*eM9GKoDh1Pgs+UNrF%IQe*gc-zK>m-X>2Zn-1i7Tsrq1-Mih%1?IgjSgL*wJ=qM0vM zUh<^}b=!4<)5oNT+#kEwyU%SLkSq>u+-sgtDdjSVA|3c` zEi;yvP1pov7P7x$oX+;Sr#!-TSnL!4QZ+PGUJ!Cd3lQC4L4I^#m{&l|rMZxHl!i^L z7Cjlw>?$gjE@)^zt7F`bDkD6)i;7}$mLum~D(qyC3pM^AZfPkRJ78$c6?N~od&EsA zqasUL#0@b{|KSG|3E1noQL~fW={Ucle`==G#?F*G&oc;3zU~85Ki`ESI^6!zv2nVk zHpwB$l0LU^P~_MTxZL{ye*?<6aDaHV$b7*ywBvCUdvk8ga>AaL5z}Y7+SA6(ENm*9 z`_7vreN;rNAzMxa?CC+BEGPBJT~70lZD7I=Kb>YqCJziuiCoU0-Mvdk^$V*e$x;k2 zMR0eiuCb89=PMUrQ7$h^@w-{Z3{imcN>J@F{l2}Y&Zz=!TVK$H`m3P2?ndyHF=9Mx zSUQ{4SYk8!K-gt<$NR!ab2@XTxKp7rU+Ot|>xK6WAY z;`|Kxnc)icXho|=!{;Q_jDVh^iFe|T)evms0`fOOTk6^?4Xschas?|-{v%_ix8dX4 z!TRX~QEmq$oxT`=uU(83w@!Z`6b{}M(B@V7%Ad_>K%JR=GFQi(d$zrxgt~B0rY8#Y znu`6TI5b37n~Z#$U9vgdy3UGJ?kd;|xXs0W-vQDbee`G&cTqC|xtdp<;GK-co97nh zC89#A69-sqe5a%cMith~t~~c9(;-m<5s?zpKx_yj1}^S%`?Cx7Cd#Gs#@Wq^Jshyb zX~uU_x#c#Q%km{V!=ciW>eEFDeIgf_O6e;SXFUNYkv=-gP39N6MXld{DtO@n4Y0!t zIGT)i9gbtfya4P5tt04M{H5jaIew*plv$n{*8#jwfKS8%)sRTgX6(W!6>XulrknO+ zLVud_4!eQd?o3^aI9(kDKC@X!U>fHPoR_5K2@JEf{d`XseNuQ zBo=6;O`TW0&gpnk@`&F2!hVyJ!1V^dNm7c}GfSH1^3M=})z@$z(#738lZjG+Nv49F zsVN7Lps-MDXncgYiAiy61XHT6HQUkbimaldS=#bL8m=n)f&n4Gi!n|Qh;=!9#LV~o zH9|7?PON4`K2Gkc#o9fk5!?_AjM@1@KT>f~E-KnHXzGxT%w_HFv8R2TF=?VewowfI ztRUDVjT*SRRDb+bqD_)%WNfoq`r_y;nN;sUiJ@T&cd;RZB#mGAa}2A_`xqX_4}d*a z(yn>zn!9v<2qjt=!PN*^%d3zFGWGM>CsTe>6WMex)!lZm4ErdBHp`*$3V}nt?Q>1B zMni^$ueu1;O-aTVTSRw*yyHt-s1?xOUW<$1slWf|ix|9yMZ}_R??r=9?%I_1{V+xJ zE@0%#nqBnqMWm|&3ioVbE2w$Ge%vG-zo!fyCwhh1hF4KV#Yj4zQu(fLUnow|i4p$dWduxpl`Ro;LS~?Ab`#v3QJ1FYM z;JsSk3s>jXUfpcGacKee?s<&VgZIVL32@*xNvL)1W~L8r{AK(?f*p#&WYxn6mWu9Jj}r z@_LOk0hnT-v8g|IhD^_$R!GME2M?YqX}WnVSBI;leJM~?acb0(&Qv~x9;Or8@z`(3 z$jcK00mX`Jj#C(c^fUH+KO_CUqH{*JA%>9atf05wmH`i7KxeGUdrv6Jt5FLDgi9pi zCJ$BXZG8H!p`^}Xuq&)h^1k1ezywBt{NeElIasFWMV%7?fSy5joLNCym&ZfrJT>t| z3OQh>;J87^{8sHhpXy(u2FqCX+Z^y%Oq@zu^L7xiEa;RFg``aR+C+($PRTmAH9f6tr=L5YIuN6gCl27ttJnu^_!N%;dl zfIMM`FaT zn>@jKQ!01v-Fv{pvnubf8|imL9uH0$*+5NrjzcAue~xQ%97sy-_05gKgyMizT;(lS zDHtn0`o@fNUZn*AhZtaG(#&sib;|oUv|w-$sYg8L=QnW?p5w&Z+F86x>BSQc!JL-& z_9(}r<*jnki7h1Zhn%qSK5TW(ja&WXe1`BG7&&y0F*2ulEUFH89Hq;biX1OZ#e zvcTyRmkx7=5uek;Slb7dpsImr6Mi94(aiPn8m0CaqR?^b*Fd8NlKQ$9t8(a(?*(kc z{4b$VhI|Z;V>CglEj?z9Gsj^DId{r7L6KFpWq9=;n3nXWBbeEdH zwgYfR+7NmMk~=UcnP1Xux(s`p#RrRz&jVl|8h|H(M3HH_^|@(&tF=Cv#sZtF6HJG# zgiI915=#(AymgpVh6V5HW00fc2{UjNDg8H6#pP)=OsbS>wbqWng~hPnLCN1jZCV+Q zh9}!x%21)_ZJ5Xd0s>u3iv0!LSd8anEL}yo7XJHE)vFI3@2ergFt7%BeR-=Zdca3t zfe7}8L-83IcSJw?fj%C;p`fIUP%EOPtE+dR3;poz*-=X$Cd?0iGB+=_M|bdBpq)Xf zoHHP4qPO@$&1dNW#V2MbWd?GM{szC3m9`yTAq*qP#;JgRS`!CU9y#dgFZo^=P_&3J zSOoch4#s);8si<}US;5o3w#8Zi=$$oVbBw)+RK188mVc5@VYCe)7XhbV}U8i7ZpY{ zPqW|xK&44x-cP(Vai@L}mM_{a`U_FBVb0HQy(ivs>A0xt58h`-MV4LHz_<` z1t3F}<@Du$>+f>s4l?!`2CP`T>79RlMtfDE_5RC0;g3Ie;M#A4Wxj4*`{3XI%k(oK zQH*-W@5cB1^Jl=6(f;}Ajr94yDZ`w~|D*D62Kzt8`2Qbc+~)s1r)y7>Bv)>YrKKg4 zhK(CvZAxm|KzYF5P2>aICy7ZHitE>spg%Xf{^ir|N=f5K+$K>q5!;_Fkde_M{QW)c z9M?)scSpv%0)5uzpIw)^<~Trw@!w36U-GP*7-29^nd&szbh_T7H&tBU@%(@Vl7hf; z{Tc=bF#x0@-O@{Uqi_N;w0nyky7SF)#Hk9t>l0PdiycrgyUk&({4~jEW_qV~15pXF z;C4^t-2)}fHVBjPdg)qTofJ;H<`V($d!Xj#JK)O$cu{HT$b$5MknL>?#uDHu5Q7 zv{_LAB^${1vq_j}Bu7iksdUo{e^BLD8&OK;gogHFj1)WiMS((xse2sZ{BY07y}Y~% zU7=`f4quYuf#!0e46eXEm8wANf*9y7!Y|Y4$`aewg`<@3-?j1l08c{yZ2U|xY8@&A zFbR&j@Qr4>KQ92II}vaTnP0#a0X&ae9i=4bsO|6LZnjnaG>e$& zNX?6Z+_Gg}RnqHr@3PWnBfQcNV}WF+_aQ9aq`>P`Tb;3^uD%T)&k(6C5w8I8V z)Muygk{6PzGPBr6STw;ls{jDjS(A*%OKqe532n20BES}jl>*Uc-=5F!@1(bVGsh7F zDwo0`S(re%DKj`}Ysa<2Pe@C+pXXZN&-#Kt4Zp5WA5rEqeX!VBhXj2+!OF}bN$q#3 zVRLl9?2G`aX@^W99^2EP{^Gk=4h{fJG3==ZpXd2t*G^J4We4tSFfcIaF6JoH>+KtW zvDkWQd5aBt-i?$PM;?PCeV9##pRi22c*btd0X1#RY2doJq}hpQOS_3m0Woc9&0dDI z9OsoF^J{dyd*?--)s(=t_zL}Y6agFv%=X9+)tZE~pai;EE-US!=O#k%87azR9&T?? zzyr)6%dmgr?3)7LODQHQ2mv5zlT?)7@MfzJ<&`R8a^iM*i#r*Eb!83N`~n@trCwgL zb{QzybDw~VN!y34pzlJo3F2WVHeCfDz?CQ40)Ut&pKWZ>;I3}2_3QWoPzW1Z^pP?i zh23_S7-G3{Rqzc?kH;s}X&?m5iz{U zcMQ&6&9UNjQ80ldnQG_60fZ(Um*ggl1n|%Xpu9~An~LTz;Nw-bs}(?pZuHx_?if54 zo@2us0%qRm=#uy#f7dI$88*N$O#olZp11qaElfP)v;UpQsAY1X3R+4R@G@WB=w)gF zUZw(RZL%d{z>$MB;AM752N}Zx$2kyOOw|@L)4S&}C>h6is5pcHa%D=)WKL0@!Z;j1 z!%>{nZ#~`re4lx~EMIl&_d05uYdB9Pl;hs=tVVpB@2x;|;Q==G(~C5$`71|~hRXUD zkva_Nf6?XlBT{+q{~LJuS8z*)U+Clf;-V;^B-15VZo2X@;U$7ZH2~2LdGH{> zaS$cG%t1CHiPltVZW%Cyz)?yL(O16yhdZ#FY4{Dn&rgmx5VDW z=>PcaeKauK0+V>+AK%<0b>43Q&2lV1cF}WlOP%hoJbx}6_w1@RZIMPrer+bFs4Kj$ zF(9|};*GlHL5WgJJ>RXs%(lIwy)df0YJLDQvRt}`$E8;+5zQ?L$l&ooGJ^jhYJQx? zn_xZ}p}%RgjqJGq)H#lJ7NO~h$;*cWU9FpYQ+Zl|TAiDxSYZz)sAQP=u*p5-W2Nj~KU zja{Nmh=_AOSbZuaBy>+KBO`Tf%Ene%8C<>n%}-WC!|lh=gZtBTo=E7SAI{Dwk+F+- zVrkqK!32`=!Y&UU|2$4GQ(*j1zkn+l@!-36ze8HgxEk9+@t)E6U@!U*<(9v1?;uy=8ChIPF1I}02qM5`)KYtb(Dbf#`j}}A{?lZy=?ZD`$(S>OHk&vW% zRk(-5a@a%4sAeT+#e8%irlXV`Kkz&O0PskWvpLAv@3VjKaFlNuJy5mWQ9~+jW|ucX z#?G$7&(A+!?{O=zZ%o?RRTO9i!YN_5F|He?OSyHQ0F&k`-`B-QX}*w@loSySzPNR! zrNJNQur)@1ZNj!H$~yf^-^`&&#SIKj?6PjkTwDz|?UILzC8%!^u6a_^3&4Tz--C+) zfgmf-;E9P@1$V`EvmPJJcoQiq+fn=Dxn{+@O`Grby>luI1+G+T&UwUO`m8Y@>K}S> z>lC~~1HZwIfPg^1)#hl2_n?V;Dc(KKWUO@J;%l9FWT&i7=#xp8HPedyUh&6O%>zoB zBx9xKVM-cq0~MVI;?c~e^Xt}~p(0@h2}3DMkdsO3p^0^TL^)FFh(m%=u<>r$7}M98 zT$U+2QUL?ozz69u)MRnT9MJ|zJ_HRy4ZAI5MY=#Y*iLTe!}X`y()h+{SjhJ5)asS; zi|rTf#LvUU!YgoU4zD^KAcC_n3SPb})S5taT-zuES`Aq1bk(}J-V&ZH|KkMwBu*e?UMyZhb$}x{(+k*sDHtjk2)!w*onNq8{7v* z)_?2?0#Y|kEKdozNq#%>Q7aCdSy{j?9+0P7Ui)hp0A|((tDFs4Ww(A&v3V@jtLdpY z{%K)ybI~CWz)Ia*?$zqa7 zR}@}s-sy>FJTiIZl%Gnaf^VuFJO?iD^oN>{R7qRgWHoNm?=<|=t6RcJ7>PQ)W3$ZY@rxHKFC1r<9NGmPVWb455o`Dz&uFA)o7v?j z+Sq6ZGx04W1soO!ZZJuO`4o2W^pHc;v|YCDMcaPPx1o)eT0>>y8Z`J2UU^Ed?MK0{ z-WUiG;;lqx*?Us= zpzts!G`w%IJJ*fZ#tpx1D=+lbIAc*~p-UhIYsW5Nwl&SfyM5(z3C*zR>XFJ@A1Oqa z9BeK349lEgbKQN`mGRIR!}R`hj@0HeuGR~Agrz|8E_--*aJwzibx6j7B93FqK93G# zSN%&`${JCgsDbbr*Th~xZT?C~$_H}6l@-U-WPQr26&W?y>cmvHi|~ypRHF ze^@s>2dzI9wJy0wXgU>UbBbT@$*XvD%%%tK*;_fqd?kbe+7(IKb&!H_L{Io*?W0Z8 zV(eZ^+vhIqvlSLh<&aW}Ig7Lx(tfdH9L~I;6iS(16L*gpYgqb~*Unh%V|wx3)|cM+ z$eq$r`hJ;8b>PgGLHDRx_A2tgT7%BV6vF}u@)5C)>7 z4^1@JjbGHpaN8K}NV1NPBE_Cc0=+XppP6BwvpfmCHlfisebx(nRsu4_=qYD* z$0}7>&fOzDSb66%P~0kI`Z!bE_+w)~O~(DahOT$FI74z%eLlfcA9&J;%yMszL0EUX z`;<(?IEIUh%?7*UT#ojAl5wwv&fo3iJIKyRkT=-rG6=e8Gpb%k&CfqNh6tvNXfm>a zL_B}~S7jg~eu{<;@rKg8B zt^KXSRE`0qdNEGR`>uywY4(|+u57g^lQ~%cK=~ScPJkvV=5xK%UU@^~bd!mxee8_@ zTXkArjykvf*B@-ne;q%r)YBrdtWpI9g@%juzEg`Aa)SbmJm~ag_{Bv6xVp3*o;~|; zT;KHMY9CkmS_!O0T%V>jtOtFYS{B@AT4~R-SbZ(mV`<`}O=l>m)d;4IKg#nXcZicJ zcdRfQ&zGcdn_%f?r0a^KX66u~@L08Q$sv}hmKX7hrP|@&4HZ8{O4qM#B_Fo%S^u~T zx2lfE8^0*WAhV$YX&G|XS{lU>8?-*_$B|FzY#k9!8?X@Ah*eTXz*Vg&N6g-Nt3*(& z*aqFkH;Ia<-oEbk@h3VirbNvI#V4*cID@LBzohXm$GPvT?ZMD44Jzz_QWO#*5_7XB zw_1e9e(_NXZ7fb=+f9D1cQkhv?}ZU2Ch0F`a)rFa(<|^QF&ms5XmEd;Sl?%^AwAbX zq-05$D0lQ{{@fzvoxj=|)$6`|_-RWySD4{GAL@%FO_{Tt{o)8yXZ5bnC{X%RpUya~ z6w?`;V{%tGB@x;nlZRj^6R-4WPJp*qB&_4-L&7qlY2X>)Op z-3V&N19;QP#t&YXu-A4mRM!&T_7GrZSpzGzI&KR$bf159J8L+NaczXYLu>I+g~7TCSWty zvo7|}=6ZU}1%JRJ?fBW}(*DL)|3->*bRX-~2;GwwZ#Lu_Jl=L&MO`UKX+raHO(=x~ z`)9j=Q>SxuzYf{P*5F;Hz_ZAbpS73PHWmX;KN}j6;hw7*a#QZ<^q_4~*{fHr{{~M0+n*dDYSOjeNXI`JBld?5JI%vXNzs(OjWNhFoZ=)P(ZJc;@ude!Fw-| zQ?nBhrdADOR4ftEkTMhQ7Io`L>nFw|HDT~7TV9!!jqh3(@@5RkBo5ojIpkx=oB6}l z7M~-r_OaRv0TX&D6fCG2vaMN*5#ez+$T*eV z=+atn-VovRdw|-PD}cwf+X8*DOn)sNY~XhO*Oq#9<@^U5aW;7nE7){;?K!G z4o}<|Lu4qKKr7u3rG+bknN{Xjn5?B)S-%m!zx1$y3)-yadxGktuY~6^3A|5)z}c)vJ6L~mn7_q4<}kk<(H2&`ul|@mIox zJw+;G@(es&>c+-i(&?WivT}1$^%n|dr%=VguQ_5LBnw@#qK6aYgLWqQ2h!C@&4amJ zQPACJL_FoFlA@?ru^|1U}$I|df(l|BK3i| zl-M258TOeQ{4U!c#&@DzzNDTsiM0@BaQ)J|y?D33|Gg)ZT2wsRv?N?0gbJTajQ7PU z|B8-J9KWL&wPdG&TVjmhAFZ?t)=|l}(zXUQt+sO`T}n>r>R&&W3-QCu1}jFFo%;E4 zn`bs^GPcsgvib)XxORf)ikEH5E-|R&5FV}V?1X?zK!)pmz)2Dkg|dra)Y)4AhZtoE zhUI*geSUWQ;k^v1S}9LeMTO0L=g~2HEm%0sY6*iSa^dK4m!7!Am?m>MQg3c3Ckxzl zG6-pueaGH)^Qvu_PB;_qB*Qy4mt0$R!$&kyj~s2&$uET-VQrw8_zv zaat5ayjM*0YR2bYsoHoLLNQcg%8(Yzp>hW2s&1zBV)~N8f@XY32vbNq0R#M6KU}6X zQPKY*$sIu=_d>aK+;*rMNWcu2T7+28&?P&>YhN)|7jqj6_qIfW~BW-an8 zN9GWI;<8b^4!NLeWR9y3!{z&qCDhzb@IJ#+4UhGxs;jS|&kT6|=1nud!zlgx8#gZ1 z7{*!)F}w}{_08%!NuoFr2xo`Vh5pD4@u4D_yK4nL5`+P|R?c9SZ~SRTyZYBdIHwV0_x!Va#1L zH`d-ROuwl6p}4p=xyRv}^*SBxu=%jmi;r1(RrA>&*G5anCErH1S~tDD0g{PlqeJt@ z+tl{f(b{(vlMauGreia9l&?{~)paMHg;3FXtA9x-xusTcOCwmdDwfMTHr2$YGPs0O z+GSY4p}5)2*)pU^df6s=^kSYPZ@yV`-v@)G>eAcG)%jlSE*+95t_y;;J!h$&cLvpt z^LDt5ZMbV6*4gYHxyhPZwb!u=qK5iwh&bIQQg@>W*cIfp@p9-G;7g_Bc(MX}Up~0V z*cu7Vi)ueXf+mB^tdhuW3MXXO?H8N@CdfK$3cnp~^w_SW`U@l!o5JV7`Wf7-fW@$U zH#*Oa-$J5uw^`OT(Q9ld_Jxc!I?ibydD1|H-7?~@6IiFtUOpD=?+pbg>Oxr@27B z@vYS)AyPHj0k05D@x`!iwRV)R&#L36-4OM-Dz{}@43C*6w5)W9$kQN`71)>@wxH#d zi$0Ule&HSBGgQbbed=>^QB=g2CezW)O$wOE)I$qU$aCeE$+-Z&v)A&JfNupgXwZFD z?>*1?rJs0VX>-$WG;ja)>)H85Km6Y2j3=2{nMu{vM-NMRzn1Huw{(0jk#RPfkHeTG zx;OgLYNiYo&xA{oE={_QqiRt2ea-z-&S8XMCU+o3n{eYLZjtXZ|IZS{)L@0&L-!PT zXecT5Chxr|Ku~PkM(6E!!j4u%+jrmcj)hM@w%A{t@ip2V>qj%jInI~wE}>^|U-S2H z!VX2(x*75s&}+kJ!&S!)39BhXVt8g4!(><}(_|NIoHt~56fMW7d=QA6dc7+PJ3u%1vcNd9bFX2j-s=leeP#5e&WZWGtCevzE?D$3;|@ti)TaV2rIT2- zF#n>ag4bzGCs!VZxTk3dHW<`wXJ)oMa#$Opx=_D;O=wV&?CLzC#1btWL^|n!TA-93 zVzQ~+lVoFJ5-p4k=zC^jBF<=R;ZuEpBQ@*$kb3yhXFk~3+S$d$t4=Kf7;j2Cdn^>E z8xZPtsQ?qM+B%}hm5E3Amn8$+NB8OJib|JBPWK~KMU~GLyVc`pgyT|93Wva2mqub{ z0sV6M&U^7CIc+_Is^CINaOssp)l>br@j?f5@C zU0H#c?Hnp;0&AMkpV(d!UEcU?>(C1$xKwn${3CWV}PmWm4y87)>H8a5N(2 ztl0@jEdLG)YIXXQlAmPq$2qFcy|?Zm=GK`vJ%4=t?RSw;SQ;f3fgYO+Xy&J;rg{wp zw}kDzJm084nf~NVkFjWH{iv@e=#gJfJBMLG{?X$$4roBYr?vS7%Z?KGb`_@hBs6k7 zW}P_y%JiQ<2!i`}B>%Nd|M>&S4IsxUFD*>j{t-#>#^;_MvR>sdMJtA#pC-Bt%gHqu zPS^7G`E#Ee7c?*>{O5P6QVCgEyr45xQgX6E%krEE=5I)(uLnx5@7@el483vU1fdX7 z38o$WM^>pQLHO5>^qh>if`f8A%z-vuX?i^NzYrj&nty)&sbP8~s}(2Jj~URFf`-1Q z3Y1;v5+=QJS?;dEW8Ys^5saZW^juM~Lvm;Zp}f4jfZ>iUHRc5Q(a1$L-uhpNke0@Y zlV)3CbCoQy=nMO3Xk8`dNIsofcTB$P|L;^#7ypOJRMH(sd3FuR=@?`*nG!Kz&Sj(o zlnv6C_=*#KD#3XBkHu@#gYu!8 z5N~5*sRAWK5n#WNTTY(ET)V%23#G$1HeK-&V#>)+aB^2tRX(2?$?Al$NOxRL`{?>) zX6lg#9}AU8&T>6r(h*@1n5l%+DNqkl*qX^zDmNfpTZ zE_#{>ae0ug5p@YHd5J$8<{bX3v%2t(QF#>=q6-RgucQbS8<#QE_DNW+?h_yOc23D=y_VAyKrhvn8JureL%^N zcYT*SP$)G2bPHTy>f-Nnb^=S0?kz1_so5yr1!DGw?pwZzDaA}U6i>b5;>KoWC12de z91@orw3`5Q#F3`}%PpcW!oixRX`HUy3Ch$LOU^!BDM`EbQF;#S(P`1h4;_hgr*c{rR>ib1W2 z;r?z{pX3Xgnz|t4V-iaRq`mt3dmDneFUg0|h;Q6|g=qjzVsU3_sh+RuxIb`!OV0SB z$XCkYB%y0u=ySY&ajT3!jtQ?RBmoN^>|Ebi!+u=Wa_`eJN<<(MEl0Sy6`Tspg>Q7BD<*Qrod{Asoru-qqvFePcC+3F4j~}F=Ai(ciW`P zaRHg|#>dBJc6m9VprC;2ugPLgj{0g`zN<$^qB2pbHzgEYQsfmBtXs^>-eQ_jw)=vD z4N{K2aZt>^emn7WRnGIR5A@`_Bf=*K$>tY87W7jgMGwTc)WKjbNThBvN6v&TPhQ@E^`C&m`fyBjX(_b*qUu4m%ZCf3p#T`RU6BZBPBC0X@O5jXe{ zXa=aFPD2Z!Bx2pp)YqACYRYPPFiXEDd}%Gr5~XD}Ue23ay0Q+0qpmzSF>h{+Ol*&mGNw+*1Oa{QyHrqLem#Sy2aB*+uCn zYHepbx0vF6zmM}E^FH|%9_Jn2SHk65#zx_YY!(xz31BFXZMYDP01ec@?Ngq=E~oQ)+?;sYYUO00sHLUl`4`4M!J&_-SVr&4U7erzk-EZtLD<~ft|-k= z@Qj3Z3pLu0abu=kdW$EK#W0=ZHWQP1!;!?8PwlMO3DT1(X=$ZRPk?WB_nGmRPSad< z&Uq_r4ApdW!P;BdilrmrLAya%E<}2W98{u)D_a-K)dd?Co%-WKf71fp*XID#Cuwt>Xq<&cN(EF*Mu;fKHc@xnORwhJV&E7988G*5q3y8iSWx%T^EX3A+HqNpA>t+|wfQkwe#>)lzSSa0m0<0uYteqfRnq zj5P@JhJ_JYH5d{TNxJ%Fo5uf`6sUvFb)&SV6Mfvf`~F*Gh+a+(0=1cNW^Fk?mUS+n zs4@_?dTV5e|G_{>oLXPM#t@!j84On4JNz2&PCeL;lk*JBbj*8S16O>fGW>N=4W0FQ zu3rng-U2AG`HNI_7MXyM3AbD8meeviy2~%Z3G>! zunXV%%ZvCYRRn%4c#H)WceG~5o&NrDN-ertz5Zpl{Kp$5daglmQm3l-Qc?*9gWReV zyaMkAloge-AUW*=J-rk*?^LUnc&CjI$({0kKh@f#pv~{lCWA00`pl<^$;pdc>CG{D zJh^MO35iuzXI}u7ln#k=K|C`u+T7X-RI&RAZ&8ePdQi;LUVJH3*@)41tO#Z|+%ft2 zMdq;x$*W@F*L;aM2uasD%!YV`;w;uF zg#;Ur(NBYZ=;rqss}(O=aNP-;e8GBbi29K_~l_<6A<=2K^I{_ zZ?$dsBrQt$r6hq!D{t#6up1E4I!V-MTf|8(v;&*{AfF<~;H|H0eHJ zY=fi0THRUl&Zc4A2KY3hvNj zbSCj4F$mH}K2dz1^B;mi>G0CCv%M;Y-f=zqAPk;^=YWqflOp&{YV_X_mH!43v480o zHd0mHOt$o-!x+$IN6ypE&dxq-;uLAOg^ocPMl(z~|C!-PRw$qR;7}ihXt&3COex2t zq0}ZzfqVjZa(54z&Zd(rKMwpM{r6wihMq;*R$ROGhB{9z`}^V_&)UQ&K@%dFPoNn= zU?>J0r?;<|Fh=)%UKMHNw6ww$=Izs-pT{Fqe2s~Aob{uB3;*9BT)>Ir;jK(vbjO5~ z{(|D4L;jbs|IqQjPl)pXGH}QHE*s`t{_;y|;J5kxmH*#E-^-WfzB+u@<^Li4zViS~ z(b>zD|HC`Ke+5Lu{$GjMBDy&I$B@6)@5(VIM8xtmz-N7ZAm3CLu#R{G$hldQ;<`Rz zEaII#pf)t)O1|IUjk$tSiGn63CYm` z!Cnk3mA8QdMC35Gp$j}Z=`tol46_&M2Hx;w92{|fctvWMAWnLj;}UmQZ?B!g3Bm}i z0*(%KH<6L;Bp2*F-h;LpXepgGNsNgW*DK53)#FY8_*l08o zva{L4nbZh2ra373ZKds$**V*JmmRk>;F8uuudO89+(xa;BhseWtSg;J{q@v3A zPMliN1G=-8s)dxNlySyk@v3o4|%QZbM-wj4$%&aTRLHG`D6lxQyM< z4?IP>Q=X!_y4p(T>CV;`nf{WK5pk<6k}R7ay*Np06z+JKF(bM#|3QD}a5E^hH_>Gv zzba&S1!9dXL*RU$>2Ids5!hGorvo&&!_yF2?r~CoR zv-7tttY1KI$j!Ky%{uJ!Ka|r^I86>BI=C^#h3cPX+_TDl{inmOM{L5!j<|7yrJ9JP z=Fr*J&OsFCdKqH*z&GJ#p~4yOW_p+HrNB>bD)r_jUkQhBXVtH#NKS%=;68?u#KIMqda3 znGZqGl`Sr5O|H?>BB6i3=TINlzp~nSYMsk;YwbRXlZih-$%6`o8MUg?n=a=+yRUdY z@wRuG;e;k=FF$WxU_SK&Yew7crHG=C_H))1oG3}Ee01%UWHFA{&Rv}QbG@yLS zK7+gE_Xh0)R|1lMhKpK1WfJC0tX!#4CY>&Hyvv8e*n*ydIm z=l9#`qkHB8J4YX}tV7>C;a!ih7(^U9HeZZXMs~W_(7SmAb2Id8InoefQMTLyz+sjh zaOHZ(toR^RN%CJlgeD&FT>gB6u8)qZU9`UY_)Futqb>+bk7o{=p;&Cpu+5KU)0uW% zLw$I%d`GTT>qF7P8u~{;p5h|m+W{>>Z+sGbW1^^7#Mi4SN5Y0IA-Mr3G3S_s4!{}7 zUT%Nd+k&9TTS%B?<*-?3tuZ>fad9n3Y{4Y?m^0w!rscUsPybr>5@;9sx(T8m7W1A; zrzeJ0C;L&!O>K8`H+j2_@FlCSr%inXl$4bTP7v+YKRk$7SeCj^xJPRg-89IYD+VRx z)b_9=my)yrAsMGCY4PFc(vF|AE3$3}wv$=(uz7M9bq(U}c7PkeXO0oIoWM#tPkxDo zax2smb1dIaznEMsCviWZ$W$!7cMD?Nrdu9W8Q-@mOG(Mu)hyVZMG1~VH%=ZP+$fe8 zB_yrLz1Vt=h?pZOx!+Pnv}=@#_8d9|twebe0{ns)PCEo6pMA@wi42Z7-yFrf?6GSc z?ptni)fWM3dK${-=QH)t1}LxwlD;)ZtMDD+j@R!ot%`0U)~8ROX`REI|0HVF0@e=X z@ZpGck6l-E_?V;HQR*zDn{p=JMg>HG$|K{Ck>JD!k*G^}^W*SOt&9z?` z=#mCQpAIq(|CBQ!kp{|cOds$kN9_#O0;gF({D=+(vDP!0n9Aw4A_I~7_u+lJU86hj zz9n8?+NKk@kcyc)$MIs-Mt@FCEpnG7fB&_`jlB9|RUKyq*>b~$fHK$7p}Iwalf*NE zzSF7Yo+mD!gwuAz(&AmX!ToMNg8t;2LBUD{C$5fHFLl%<_>YV!cGf7395gPBhm`2} z!Q-9XCph%obNM}_ttx$Dd*2 z*IK%p=F~8}tVJ=)zt`q#S$XXe=8FF9C&k2JQYa=~0t$sK>r7T|`BN>v!vQwCMf}3ss7=G~KX@FRJEc({^Sg)NtP~77VLS15{ zwoY{4+S-brEwaH>y-0Rwx45ae5a!>$Kj`OSLP@EBad=%N7I^=^`i4?*AQEXV{Bi}u zwfXZKKm-WT#J9wAcmJz<2yMm(VTn_?`X7>Tn5Q0i=MyjRe$sU+{xiP`P`h~rfT-SJ zr_S}7RAacBx{c@mo9hk2j*gDp^xRCp;NW1o%Cw(CC|!0aA9FJzgil8PH5k)HwShm# z2_nO#Yj2WDN@z|iNewcMdSM<9N#~JP;uP^nD<9UIV5*xw68$FqU&k3>bJM`r`}?=W z(Z5Dc)~|j3iCuL2PALHmBchXdO)>iWV``=Fnlel_4m)k>of27hDiaGHh&9+cTkT8y zyR-lqLtb71kh7jERf67bYwW!fga8|rS2K}r`I0i@ZdOzm`iVc4jKM^)*|t+ z_J)<5#%MdyQl$k(E2zlffwx!>6vEFlcu1A@r@?-xR%*2%#T(>WQw%#;3J?(2W}izp zHnj|_s2F0ubC2~Jib40cc<@g9>26oqxSi$=NKXz(_xg|3pduj-GNB;bKdK#%`hhA$ zZeuweC)VBE+=7nN{ZKUmxi0yKeW11!m-vI|zjOEf!=0Sd^gXV!C=q217kH6t0I2?| z2R^yHqSjKYV9)xcdG;T3GDr6|1P^H?MiB^3KL=-ldft%*HGH`)z$AI2I0TQ$d{~6$ zJ=92X!mtS6woEO-IiyouBl~#BjN3X`QAR*lu$s`71j+Fj8n!Hu*oQ}?cVbLYRBaca z2>f6O+%d(XUr$;Y_PBGEY@XUEAud2%JWO;FRB{tYsFfkUoJ*v=^!418@Cd5Zaj6U!rTa8gDI9?_nMXNn!8`H`+?wseN56K)kQF6Xcz>) z(K7Ju@oWI@$=mIFP`v4_k5=Il`d6HPK5(_4_OVn-*^324i_V?4m)$+XWYHX!Ea8Wb z3LGDQ>Fs-{re-n}e@=FW6vG?=Ok%x^DiA=R)PbDqkxv1N|IaI#6B2W(sd0*n8UeaO z=P#aej}DF+efIkMEPQ|eGxhTqlhfKac%9;C!Fxl4Y1ufoGPStFa;T;yai_$hx268RXAITGpJ#8b;nEH+b81fEFP`vm3D;x7elC$*gG&{#b9UUDraY@&d!1csgvOj6Ypbq@;UcUtHcahhGt3kpAB zn|}{z#ZORsrnG=HXG=rznw?#7gEi5co~kwwsra%Nue50u|2Sp7jZ5ShZv2>1T+F{N zD|1UN{><{0on5|xjF3`FovT3VZ-(e>6&n_}hOz4Y14)$iw~&klMnL*-JZjkFCkn}_ zvoUglFKbEooIbb%gSf^fLipwn{?gCShmz9E@d(AY>i@x;{nas&Q3H-IT~GN>8P^|{ z7GtF&Gmasn`RFapKYoq*;99y1XVbY1d5C|UJD6W%nie)?@O~+`!ni*W@i2b}-pOSM z7Bfw1=E1K!@t5BLUTNz2v+0o;mVGw=eFoAP0lh4APE+hB{ruAq+myij*|yr9nST*L z_W@RMaj_L@Z-x+Z@7_JQmZG*c#Y~)w45LmyUn~Rnva3LeUV{%8Z7&@I1KHGJJ&u<9 z-jvn$yFywOr!&3k%ezKyc&Q^tBO|2LphJJ%`Vmh#l zviYb54hB2xQ~jesik?+qy(_R@wdSyQpxnl&YbiA~bvMjobw?kx-;&oEzYI?PHDWY^ z#ivvA2DaRxr^hY>$hu!yGGAI-3q(sD213xj127M?IK+OrHP?0=M6`(Hyx7GH%oVdA z(=&4eXem7O3Zeyat5f%+^Y`0&*P5sUDI6@2(29zR-SYT@!7{`)WkbLcuTPKSV1Lk2 z{?A*VP2(6>aEHYO{IYIb&|0R_5psu7C)MN2+JLe>(y#mY zD#(*qrnLLZ2tiIx&KfdA7RP?cc4j~KIq;j=X1QhEPekP3+&L^ikStPZ`z+*Ht}M^*9Bd-f`;8S z>WJB0eFIS{>h0|%?BqYttmt>kKy|rjIer}~<6$c98X1XU)nD`(wuB`aBc`JvBoSKf zYC(30?7|L4R*RydqWZ4=6>q1FX(Cd7_uWs!fTCYrhK3vzdtAlk-<8AjE3jKA*&TC$ zsT#zV?M+83Lar)$;L@Z~HiWlp`0Uf}>#t2VtU+-{2wKBg7+7D8*mTP3f!kZ=P{fTn zlohu!O*0WXs7^GMyLD%E{%)=sjLUCC%VgdnjkbhoCt3H?7jepob_l)UrCeXD?cK+ zwet8QGvvfe$o?mY4C(c!h@SX8+ad?s`Xoyx2dlLP;s#FGS`L@(tlUV<3tEBg{J=&X z)RYck-K7HAbwz5zds4^54pTx|K;Vu=aIQ8{FFLWfzg_%i_95jDQ{Wj|Wz+ z)TEs)Z#t@6I)I3^MsE_|CoPARTe>JjbK{G;heM^v{r&xeJSA(kdtr2}Vg~V5p)I8f zsezX)E&Pg2I|IpbVFESlVR<-m{`+bg8f1{2y?FnF`o#8BKi1L18?Atq~A^ zVjb7JAW*3nRe+&aVQ6`fkt1g2=0gtD1Pp!n1$>$yI290plKuK1;-_tLyltNZ3wEI1 zwhBHI5^7=X>aubiptet*cvH|_ke-nte*a>zu&%Ixy;<|Y))t&4BB)R$#;TEY?Gxol z+|ZI3^qdQVK?n7;3N)ecjDQ`kGX$L^U*DsRcVs1E(pHLTC1phI=fMbAs#f({%({pd z`eCF;bB{Vy?#h9>=qRd_4~>kBtY$kX$4PgRC%nj?Spi&cpxV@dQQfwvy4aNE_Rx5l zl|FKja4!nB-^07WidN8px`Lk(E@Y4OfHCFa8_MG=J}$i-`WQD<6YJ)Auj zhfDLg;yo2xT3eG$+!gm3CF?G;_>)Nm4Xafk~ z)E?9Bga=8R_ezs~o+fDX<+tzkSP6=M1skMHp$oZ{C65xRj5M3-PL-33wJNc*Up##g zsekFxr3T1mX({EU#HLnzq(1js-2~*3>rzv9RYG}_jFnlVZ%o7FfE3XZoDn}ba3@~^_AR9-csFFl*-bF$@+^fnT3(51d zY^+J0ujMLP9H>DIj6NQY(6qMdittr9;|~o!DLLI9%{hS9Ux`0Sftt3g(Kaa9ooJ`@ zVxnVfJh=lQ0o_urmbrfEB)=Z)DdWD>j~<-ZE4P_xG|j6PDEpaTbLy;ASncO@*UaTv zfnQHlXph)+Y&y+?<>1`~*uKI=1Ba&3VNkE8E|HjfHqzMKoXNS$pm~yjFDPQS>4J1J zkIBJoe$oj-Ki-h)iEQIAWwp(r{$^XjmcqO@yx*PQ2v7$y+-v7Uy4cl_0ap$|+BtxJB1o zuiM;ez9`+f`Pmcq5(Sy1{-W8qYPaJM^21Z*{+(k{B>ae_^vwrqTP{oT} zbM0`0r5;#V+_6>2-U7@Xjeg?->8D<9%@C>GI1^W0oKpNq<|agunOo>#ZhWCIvcPt(dp8BP z)6mp;M?H$oNM_A!j}6-dX(%0#+(uc>LVH}cNgsZNdttHA=P7r>)J8nI{85SPU}S{< z;zA^0>@UtAE!}mY2JsgeKSJ%leXllhXrRZWkx#;Nk8M-5?SRlxpT{9M_(dHK)0;L| zSx{3D7AzWV$FHv(w+D@|7X&ui*o6NQ)CT(~cA(Hm)^&qy{3=M{P-9!T?z6@Fcx*+( zvIW3uAT(yQ+KmVvG%df>qX|35%ii1oMTdr7GrXqP?S;@O@ zO<|d8hIjH7w%CXV`Xt@#*9$?O_pDsGd!SiF{pZntctMD0L)Kp&x$ zM`MT;bPEeH^y;2kp>&N!k@f87_X7n^l7~qihY(>G7Z<$b^&{AUd%k9i@fLQ#)I!Zh z>`G%!>DU#!_Ud{17%nq3H<-yfaFqwoGkBhTBjA=J& zm5yUN3G#SWu<0P(@o2Ki^XJ=r$MhP4t%TN49eQ5H~rqkzDyR_A~XJErI&(nTtxcy|9dKk*+heNRo%=vt@n0(VW3Iv93tu}&C8wee7{1f>0kJLt3*8-~ zE>uR&>5@>ql=87dC;38iBUglr1MriPnjXhST-=?=i9Ch;lv1Q!R2X-mvT<%?V%pRYeouO}5|@miE^w@^top2UTah7l6V zYiX%%&IEx~d!TSQG zjsdQZ-BSa{_G=su=ZJj{W+wbK1Xjn6DZU_YZTGQ;kaHUwb6?0PBy8SX$olo%INsK^ zm5gsaZ%If<0yGm*7H8|Q^AOcsce#9Xdz+~4(o%*6K>D(^%lYCw=86ZRUfi@k<71>4 z{swwW$olAwLZ7cFg-0q^1e@$4z>wc5$~6i)ZTVjkt_8`@HH8+7eCvh+sG?^)V5<87 zhm#O;T$5Tv&c$Ht;9e+=p3RULWgBP-1D|Is5Vp0BgwuO zRC7tC1k(?MTAeaTC&6wq`Geg_i$12H<0;*-l+j-tEcJM_1L{dZWKV^Y%!qF@%}%go z{o$ivMqZvjXt8r?ktjaLTnI|q8o?Bh#azh+5O5z;GO`8zg}Yn43L;+6;6gw)@Z)cA zY)By%QEf3;(>xD&$%tZzoF#Ims@%VUl@d+?u}#0#7gO!L`nh@2d^NF@1LXZin}jg% zQz>33xn?X|PjT8`vwRj!kiAIjr&#)d_A)vAs=vB7$11ssa{>96H>eh_&kSn~xRBmN zdRtxLiFfYuvb;;a<#^qr3WLX0>-*6Sd*D*BM@0#AhHnRA!_U%rgU(in7Irswb&;KkF-2ZFaL)| z>6TnTE)qD+)l}7wlPz$HXcOgCCsF^+dp;9>CT2+n-_4zro`ycEhwt& zLH@z2Q#YS&3vZp>Mff)=QWZpQy>Qg2^CX=d!l!KQ_0B^bOC7$gMafTb zb_uz%Ki0HR?K*mt?nhK3&vCnjdnNJz8<2sx(BWYKr8lePAoGU~XJ zZ@M$a6~ihFNYj-4fkD_$71YOrZKXxkX`QONV+!~f#ULy&d)wx~n9<1y0kn4++i4@S zQG0erDwcM6dF{K?1ve0*`c)f<;`q*;oj`tbH8r)z*Jjt=#{O_ro&nrhoh6X%X=avw z*T?D2oh8)d3Yx#V8vfG`*ZopVy!~oG zLc!sD>MVVMh*UCE(;+bhP`))wmOpYiv`2My4-rX5F#5&PIqJg$Mm?pGy05|3tUGER zBgs3$Kdp$Yv2~!-N;D`qNa6o6=WNQ?jk25ShL-5g@&8qR zK@1iRquZ7_qj+(okTYd#w94+F7E^;xJqZ%T$!tOd0L-Q#n7}v|PR(n-6eWy>@A0ME zTU9ya_hS~g;zY*jdA?3IWIdeq+i_o5DMLnamoNRpczolL4Ly0S5j+(inc{5;=!v? zM1bV5^M|arpsvIzYo1ZiiXo_U{x(BeO8hxfD6H8K^AH{<9x5gl%0&&Kt08WlCqWbzrAM}CiEIeAks_6Sk zcM)UN?jTOJ7>(dNUB}e>f4(n#IFVFZ1py8+;jNTg$0d2#@%vj_(UZ9@lvhXcZnFex zKpfo|bt_Ke8O#S+#2-IqqnSbfO8&S4|=oc-`}Vz+iP5y6ryXIJSZK<2ewXFw-MAmBAU6b z$^{kbe5npQqB6=m4$-=TG>wJ>M!Wj^9VP>~F{=fjCd}6#=+<8_`zISrlfu6Us8rkR z&&Kl$@0mM@&S-S)Q#1de!r;z1tX>mtpOzxzL+t=P_jmDXfPzUbQ%88PP3Z?Z5Qvw3 zYBQt4j^o>%Rc!cVm?s+VSaLS~QPqd?v+2g~Ae<^WnncHiV&KN*!t_%8nYgkYlqe#p zv<3o7Y<>A%cHrSTyp!*;nEks$mjG>CEGFO81avtNvUS*2 zzo~?|Rk%ceRo5VK%4r5fmhR{I>>y*WCwi4}+ES35+d4V@?y8ettn_cX1QjP}(s?o` zq4Nx|E^p0I?%I@m=JvmofBW^aXH_7Bc_m~xzy2fx)MMWl8 z%#wBUAPsPdGY2|6fVn3a-gC9k-zd3e<+exITtT;PeVyA&Z=-L?#GO&$SwpZM_gnIq zpuFLj7c4*7@^A3V+@%>oA3m;5C;_NOB!Cidx4*|ED*SC)?i6F4)Op$*4~pcdSlF!6 zQ|?W7m`Fw85fKe@e|SK8g~WW$zeaz$WSad8aTp7qNBd`CxY;E}o8j*6aMxifmbrYE zau%(EI~4ARb6x~;$7Qj^Cz$s%aU7d%jDM=Xc~ViEjgx+xg@xhFq#+$c!}hhx#KJ;` zfNN$Qn-ME}nA_r;1x%|HM0HC#;AD%D5)5@ikTYiI85BxhUgLED<)Y(rV@ExS9tXG- zm)v)UDaW)J-&-fjOc_F~uQ!YxVRx^WYBg9hl)Gz77z_prH)UCHFXq|HE`^&pqBzCy#fSVq#=bf( z>UN1&5Ku}%Vg)3m8>Kr%X^>_~fu%#bOGE?|q!#J!?hd89yA&zu?zlhRbJWF`bMO6c z^|L(t#Pob;CZe)!m#5)ldvCtT5_`A6^fmj#!r_&H{Fo>mfkn+cvvR zHD*I;UIs~zlQbb&6_+k!qPW1Vb=$JKyt0QF7PE!fVpuev=hls?t_9Jqmf7048+o&M`oTH6aKf1Q~uVMZApKrMOUSsdw`SGD+R8nnver9xVGsz*tIl{ z!q>>A5I&SkhO2*UWy~e6XR_F$J?Jdg2PmFimI^+6LnE`KE$#L%+WElnX~}NqOeSur zeV4DJ2@$}Gqo#f4jEI6cB+%nW4M(oOPY#r7oEZdIuJZnk7iwn{eB6KQ|0^ivaV&3d z=#tA$P0(NLOsSxwjHt-k9j)$anwb8AyRrR@V&Gp0&u`NY+ID%lBt_#6UtVXr27Q#S zC{F;zwUZ&fYC;6S9o@%iD0dyi{?(1j%R!o?cX$3cj(0P3$>W;n0emGj_+rY0q`EwI zprBCL-oO21xF5Do=%0gs+rwzv<@*P?c?~cQfJ}-I3|9zGJ|61=I(fGe!8wf%;XeX5BUZLTV$h zRAdz_viXTTiLaxIq9QiXxfZ9)r(V0nEt=-6iI zStdP>!s4|u%}0PA0TjIcTwM+Le|TglR}BIHefd6WWo2*uiShqv-Nj1;46NUzhdw;* zM^yY^{^N#DR9+4mSC0e~ZTSJd_@KT)c!Ix!#uPdXsd3^bADFK-v7?Qsc_dr+P3JT%>pvss*A8{+iW?S2ebP88iPZ zf)h5K;-&Baz+MjjoNd@WO0KUL*l~P@rwQ0W%Z!bIJ<$RJ?i;%T9BX4nJlZD%5qdw~ zeN2wE{&yvlX9F@~nZ+a?U9W0X-Qy8#z~~8RjD15Zb9a#(W_MH!Pd-JG-cbmP2yaef zn3S#hIBx6Z>5p8q4z!hT-aOy%z{{z0JuV_`m~)vu*UHhpT>Q4(!`h|>xJ*)!v2THnHw*FUQS02B-Cm}ViY_56z_Z^5GObivF6;YWD0?(&x%rQO z%0A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≺vo+5c2DNkdBj;6pe*I&+BGz&Y)5+Y6;sye^ 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�YP7-S>Q7_NOgVyMABtpp)o@zkl1o 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%0DKjY_uXv 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%0DTGxIay==IQB0QRDfZ?TpSnh3MR# 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 YnzY{YOJv(o)`6d%mXT)85&O{p0r5G{bpQYW diff --git a/documentation/userguide/docs/pipelines.md b/documentation/userguide/docs/pipelines.md deleted file mode 100644 index 9e18bdcad..000000000 --- a/documentation/userguide/docs/pipelines.md +++ /dev/null @@ -1,241 +0,0 @@ -# **Pipelines** - -Different business units might have their own data lake and ingest and process the data with very different tools: -Scikit Learn, Spark, SparkML, AWS SageMaker, AmazonAthena… The diversity of tools and use-cases result in a -wide variety of CICD standards which discourages development collaboration. - -In order to distribute data ingestion and processing, data.all introduces data.all pipelines: - -- data.all takes care of CICD infrastructure -- data.all integrates with AWS DDK, a tool to help you build data workflows in AWS -- data.all allows you to define development environments directly from the UI and deploys data pipelines to those AWS accounts - -!!! success "Focus on value-added code" - data.all takes care of the CICD and multi-environment configuration and DDK provides reusable assets and data constructs that accelerate the deployment of AWS data workflows, - so you can focus on writing the actual transformation code and generating value from your data! - - -## Multi-environment Pipelines -In some cases, enterprises decide to separate CICD resources from data application resources, which at the same time, need to be deployed to multiple accounts. -Data.all allows users to easily define their CICD environment and other infrastructure environments in a flexible, robust way. - -Let's see it with an example. In your enterprise, the Research team has 3 AWS accounts: Research-CICD, Research-DEV and Research-PROD. They want to ingest data with a data pipeline that is written in Infrastructure as Code (IaC) -in the Research-CICD account. The actual data pipeline is deployed in 2 data accounts. First, in Research-DEV for development and testing and once it is ready it is deployed to Research-PROD. - - -### Pre-requisites -As a pre-requisite, Research-DEV and Research-PROD accounts need to be bootstrapped using AWS CDK, trusting the CICD account (`--trust` parameter). Assuming 111111111111 = CICD account the commands are as follows: - -- In Research-CICD (111111111111): `cdk bootstrap` -- In Research-DEV (222222222222): `cdk bootstrap --trust 111111111111` -- In Research-PROD (333333333333): `cdk bootstrap --trust 111111111111` - -In data.all we need to link the AWS accounts to the platform by creating 3 data.all Environments: Research-CICD Environment, Research-DEV Environment and Research-PROD Environment. - -NOTE: In practice, the cdk bootstrap command would already be run once when linking an environment. For example, if bootstrapping an environment with the default AdministratorAccess CDK execution policy, the command run before linking a new environment would look similar to: - -``` -cdk bootstrap --trust DATA.ALL_AWS_ACCOUNT_NUMBER -c @aws-cdk/core:newStyleStackSynthesis=true --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://YOUR_ENVIRONMENT_AWS_ACCOUNT_NUMBER/ENVIRONMENT_REGION -``` - -In order for the DEV and PROD accounts to also trust the CICD account without impacting the initial bootstrap requirements, the Research-DEV and Research-PROD accounts need to edit the aforementioned bootstrap command similar to the following: - -``` -cdk bootstrap --trust DATA.ALL_AWS_ACCOUNT_NUMBER --trust Research-CICD_AWS_ACCOUNT_NUMBER -c @aws-cdk/core:newStyleStackSynthesis=true --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://YOUR_ENVIRONMENT_AWS_ACCOUNT_NUMBER/ENVIRONMENT_REGION -``` - -### Creating a pipeline -data.all pipelines are created from the UI, under Pipelines. We need to fill the creation form with the following information: - -- Name, Description and tags -- CICD Environment: AWS account and region where the CICD resources will be deployed. -- Team, this is the Admin team of the pipeline. It belongs to the specified CICD Environment where the pipeline is defined as IaC -- CICD strategy: This is the development strategy that determines the type of CICD Pipeline that is created by data.all. Currently the following 4 types are supported depending on your use case: - 1. [**CDK Pipelines - Trunk-based**](#CDK-Pipelines-Overview) : A CICD pipeline based on [CDK Pipelines library](https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.pipelines/README.html). It defines a DDK Core construct which deploys Continuous Integration and Delivery for your app. Specifically, it provisions a stack containing a self-mutating CDK code pipeline to deploy one or more copies of your CDK applications using CloudFormation with a minimal amount of effort on your part. - 2. [**CodePipeline - Trunk-based**](#CodePipeline-pipelines---Trunk-based-or-GitFlow-Overview) : A CICD pipeline similar to CDK Pipelines and with a trunk-based approach but is not self-mutating. - 3. [**CodePipeline - Gitflow**](#CodePipeline-pipelines---Trunk-based-or-GitFlow-Overview): A Gitflow branching strategy where each branch of the source repository has a corresponding CICD Pipeline that deploys resources for that branches environment. - -Finally, we need to add **Development environments**. These are the AWS accounts and regions where the infrastructure defined in the CICD pipeline -is deployed. - -![create_pipeline](pictures/pipelines/pip_create_form.png#zoom#shadow) - ---- - -### CDK Pipelines Overview - -#### CodeCommit repository - -When a pipeline is created, an AWS CodeCommit repository with the code of an AWS DDK application is created in the CICD environment AWS account. It contains an set up for a multi-account deployment, as explained in its [documentation](https://awslabs.github.io/aws-ddk/release/latest/how-to/multi-account-deployment.html). - - -In the deployed repository, data.all pushes a `ddk.json` file with the details of the selected development environments: - -```json -{ - "tags": { - "dataall": "true", - "Target": "PIPELINE_NAME" - }, - "environments": { - "cicd": { - "account": "111111111111", - "region": "eu-west-1" - }, - "dev": { - "account": "222222222222", - "region": "eu-west-1", - "tags": { - "Team": "DATAALL_GROUP" - } - }, - "prod": { - "account": "333333333333", - "region": "eu-west-1", - "tags": { - "Team": "DATAALL_GROUP" - } - } - } -} -``` -In addition, the `app.py` file is also written accordingly to the development environments selected in data.all UI. It will look similar to the following: - -``` - -# !/usr/bin/env python3 - -import aws_cdk as cdk -import aws_ddk_core as ddk -from dataall_pipeline_app.dataall_pipeline_app_stack import DataallPipelineStack - -app = cdk.App() - -class ApplicationStage(cdk.Stage): - def __init__( - self, - scope, - environment_id: str, - **kwargs, - ) -> None: - super().__init__(scope, f"dataall-{environment_id.title()}", **kwargs) - DDKApplicationStack(self, "DataPipeline-PIPELINENAME-PIPELINEURI", environment_id) - -id = f"dataall-cdkpipeline-PIPELINEURI" -cicd_pipeline = ( - ddk.CICDPipelineStack( - app, - id="dataall-pipeline-PIPELINENAME-PIPELINEURI", - environment_id="cicd", - pipeline_name="PIPELINENAME", - cdk_language="python", - env=ddk.Configurator.get_environment( - config_path="./ddk.json", environment_id="cicd" - ), - ) - .add_source_action(repository_name="dataall-PIPELINENAME-PIPELINEURI") - .add_synth_action() - .build_pipeline() - .add_stage( - stage_id="dev", - stage=ApplicationStage( - app, - "dev", - env=ddk.Configurator.get_environment(config_path="./ddk.json", environment_id="dev") - ) - ) - .add_stage( - stage_id="prod", - stage=ApplicationStage( - app, - "prod", - env=ddk.Configurator.get_environment(config_path="./ddk.json", environment_id="prod") - ) - ) - .synth() -) - -app.synth() - - -``` -#### CICD deployment -data.all backend performs the first deployment of the CICD stack defined in the CodeCommit repository. The result is a CloudFormation template deploying a CICD pipeline having the aforementioned CodeCommit repository as source. This CodePipeline pipeline is based on the [CDK Pipelines library](https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.pipelines/README.html). - -![create_pipeline](pictures/pipelines/pip_cdk_trunk.png#zoom#shadow) - ---- - -### CodePipeline pipelines - Trunk-based or GitFlow Overview - -For cases in which we do not want to use [CDK Pipelines library](https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.pipelines/README.html) we can instead -use CodePipeline CICD Strategy which leverages the [aws-codepipeline](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline-readme.html) construct library. - - -#### CodeCommit repository and CICD deployment -When a pipeline is created, a CloudFormation stack is deployed in the CICD environment AWS account. It contains: - -- an AWS CodeCommit repository with the code of an AWS CDK application (by running `cdk init`) with some modifications to allow cross-account deployments. -- CICD CodePipeline(s) pipeline that deploy(s) the application - -The repository structure will look similar to: - -![created_pipeline](pictures/pipelines/pip_cp_init2.png#zoom#shadow) - -Trunk-based pipelines append one stage after the other and read from the main branch of our repository: - -![created_pipeline](pictures/pipelines/pip_cp_trunk.png#zoom#shadow) - -Gitflow strategy uses multiple CodePipeline pipelines for each of the stages. For example if you selected `dev` and `prod`: - -![created_pipeline](pictures/pipelines/pip_cp_gitflow.png#zoom#shadow) - -Using the Gitflow strategy, the `dev` pipeline reads from the `dev` branch of the repository: - -![created_pipeline](pictures/pipelines/pip_cp_gitflow2.png#zoom#shadow) - ---- -## Editing a Data All Pipeline - -For users who would like to promote their pipeline deployments to new environments managed by data all, you can do so by first bootstrapping the new environment(s) to be deployed to (as mentioned in the [Pre-requisites](#Pre-requisites)) and then adding and/or editing the development environments. - -![edit_pipeline](pictures/pipelines/pip_edit_form.png#zoom#shadow) - -Based on pipeline use case, editing a data all pipeline's development environments will: -- **CDK Pipelines**: On update, the `ddk.json` and `app.py` will be edited to update the new development environment information. The self-mutating, CICD Pipeline will trigger and deploy to the new environments based on the source CodeCommit repository changes. -- **CodePipelines - Trunk-based**: On update the `ddk.json` will be edited. A new `cdk deploy` will run to update the CICD CloudFormation Stack for the AWS CodePipeline to add the new stages required for the additional environment deployment(s) (as well as manual approval steps between stages in the code pipeline). You will see these updates to the CICD stack in CloudFormaiton of the CICD environment. -- **CodePipelines - Gitflow**: On update the `ddk.json` will be edited. A new `cdk deploy` will run to update the CICD CloudFormation Stack to add the new AWS CodePipelines required for the additional environment deployment(s). You will see these updates to the CICD stack in CloudFormaiton of the CICD environment. - -## Which development strategy should I choose? - -**CDK pipelines - Trunk-based** - -1. The `CDK-pipelines` construct handles cross-account deployments seamlessly and robustly. It synthesizes CDK stacks as CloudFormation stacks and performs the deployment cross-account. Which means that we don't manually assume IAM roles in the target accounts, all is handled by CDK :) -2. It also allows developers to modify the CICD stack as it is self-mutating. It is easy to customize having several typical CodePipeline stages out-of-the-bix. For example, developers can add monitoring, tests, manual approvals directly in the repository with single-line changes. - -**CodePipeline pipelines - Trunk-based or GitFlow** - -1. The `aws-codepipelines` construct uses AWS CodePipelines directly. We are able to define any type of CICD architecture, such as in this case Trunk-based and GitFlow. -2. Developers working on the pipeline cannot modify the CICD pipeline -3. Cross-account deployments require specific definition of the environment in the code. - - -**Summary** - -CDK pipelines are recommended for flexibility and for a robust cross-account application deployment, whereas CodePipeline pipelines are recommended if you need to provide an immutable pipeline architecture or if you want to implement a GitFlow strategy. - - -## Cloning the repository -Pre-requisites: - -1. Install git: `sudo yum install git` -2. Install pip: `sudo yum -y install python-pip` -3. Install git-remote-codecommit: `sudo pip install git-remote-codecommit` - -Clone the repo: - -4. Get the AWS Credentials from the AWS Credentials button in the Pipeline overview tab. -5. Clone the repository with the command in the overview tab. - -![created_pipeline](pictures/pipelines/pip_overview.png#zoom#shadow) - diff --git a/documentation/userguide/mkdocs.yml b/documentation/userguide/mkdocs.yml index 097ae71fa..e2a4878ca 100644 --- a/documentation/userguide/mkdocs.yml +++ b/documentation/userguide/mkdocs.yml @@ -16,7 +16,6 @@ nav: - Worksheets: worksheets.md - Notebooks: notebooks.md - ML Studio: mlstudio.md - - Pipelines: pipelines.md - Dashboards: dashboards.md - Security: security.md - Monitoring: monitoring.md From 4957f5b949c85602ec501e4e4130a61dd4ff70cb Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:33:22 +0200 Subject: [PATCH 111/188] Clean up S3 Buckets in integration test (#1603) ### Feature or Bugfix - Feature ### Detail Environment and Dataset stacks leave S3 Buckets to be deleted even when the CloudFormation stack is deleted. This PR deletes the S3 Buckets when the session and temp fixtures for datasets and environments are deleted. ### Testing Tested that environment and dataset buckets are all deleted - in real AWS CICD pipeline with NOT-empty buckets. Tested that dataset buckets with some manually created access points succeed. ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../core/environment/cdk/environment_stack.py | 12 ++++- tests_new/integration_tests/aws_clients/s3.py | 36 +++++++++++++++ .../core/environment/global_conftest.py | 6 +++ .../modules/s3_datasets/aws_clients.py | 46 +++++-------------- .../modules/s3_datasets/global_conftest.py | 19 ++++---- 5 files changed, 76 insertions(+), 43 deletions(-) create mode 100644 tests_new/integration_tests/aws_clients/s3.py diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index 451921ace..51d5feac5 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -583,9 +583,17 @@ def create_integration_tests_role(self): 's3:PutEncryptionConfiguration', 's3:GetObject*', 's3:DeleteObject', + 's3:DeleteObjectVersion', ], effect=iam.Effect.ALLOW, - resources=['arn:aws:s3:::dataalltesting*', 'arn:aws:s3:::dataalltesting*/*'], + resources=[ + 'arn:aws:s3:::dataalltesting*', + 'arn:aws:s3:::dataalltesting*/*', + 'arn:aws:s3:::dataall-session*', + 'arn:aws:s3:::dataall-session*/*', + 'arn:aws:s3:::dataall-temp*', + 'arn:aws:s3:::dataall-temp*/*', + ], ) ) self.test_role.add_to_policy( @@ -618,6 +626,8 @@ def create_integration_tests_role(self): 'kms:DescribeKey', 's3:GetBucketVersioning', 's3:List*', + 's3:ListAccessPoints', + 's3:DeleteAccessPoint', ], effect=iam.Effect.ALLOW, resources=['*'], diff --git a/tests_new/integration_tests/aws_clients/s3.py b/tests_new/integration_tests/aws_clients/s3.py new file mode 100644 index 000000000..080105edb --- /dev/null +++ b/tests_new/integration_tests/aws_clients/s3.py @@ -0,0 +1,36 @@ +import logging +from botocore.exceptions import ClientError + +log = logging.getLogger(__name__) + + +class S3Client: + def __init__(self, session, account, region): + self._client = session.client('s3', region_name=region) + self._control_client = session.client('s3control', region_name=region) + self._resource = session.resource('s3', region_name=region) + self._account = account + self._region = region + + def delete_bucket(self, bucket_name): + """ + Delete an S3 bucket. + :param bucket_name: Name of the S3 bucket to be deleted + :return: None + """ + try: + # Delete all objects in the bucket before deleting the bucket + bucket = self._resource.Bucket(bucket_name) + # Delete all object versions + bucket.object_versions.all().delete() + # Delete any remaining objects (if versioning was not enabled) + bucket.objects.all().delete() + # Delete any remaining access point + access_points = self._control_client.list_access_points(AccountId=self._account, Bucket=bucket_name)[ + 'AccessPointList' + ] + for access_point in access_points: + self._control_client.delete_access_point(AccountId=self._account, Name=access_point['Name']) + bucket.delete() + except ClientError as e: + log.exception(f'Error deleting S3 bucket: {e}') diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index 79bb9c1b6..176a9a5fb 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -15,6 +15,7 @@ from integration_tests.core.organizations.queries import create_organization from integration_tests.core.stack.utils import check_stack_ready from tests_new.integration_tests.core.environment.utils import update_env_stack +from tests_new.integration_tests.aws_clients.s3 import S3Client log = logging.getLogger(__name__) @@ -53,6 +54,11 @@ def session_env1(client1, group1, org1, session_id, testdata): yield env finally: if env: + role = f'arn:aws:iam::{env.AwsAccountId}:role/dataall-integration-tests-role-{env.region}' + session = get_environment_aws_session(role, env) + S3Client(session=session, account=env.AwsAccountId, region=env.region).delete_bucket( + env.EnvironmentDefaultBucketName + ) delete_env(client1, env) diff --git a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py index 020d74d2d..4435bb4cf 100644 --- a/tests_new/integration_tests/modules/s3_datasets/aws_clients.py +++ b/tests_new/integration_tests/modules/s3_datasets/aws_clients.py @@ -63,25 +63,7 @@ def create_bucket(self, bucket_name, kms_key_arn=None): ) return bucket_name except ClientError as e: - log.exception(f'Error creating S3 bucket: {e}') - - def delete_bucket(self, bucket_name): - """ - Delete an S3 bucket. - :param bucket_name: Name of the S3 bucket to be deleted - :return: None - """ - try: - # Delete all objects in the bucket before deleting the bucket - bucket = self._resource.Bucket(bucket_name) - bucket_versioning = self._resource.BucketVersioning(bucket_name) - if bucket_versioning.status == 'Enabled': - bucket.object_versions.delete() - else: - bucket.objects.all().delete() - self._client.delete_bucket(Bucket=bucket_name) - except ClientError as e: - log.exception(f'Error deleting S3 bucket: {e}') + log.exception('Error creating S3 bucket') def upload_file_to_prefix(self, local_file_path, s3_path): """ @@ -147,7 +129,7 @@ def create_key_with_alias(self, alias_name): return key_id, alias_name except ClientError as e: - log.exception(f'Error creating KMS key with alias: {e}') + log.exception('Error creating KMS key with alias') def _put_key_policy(self, key_id): response = self._client.get_key_policy(KeyId=key_id, PolicyName='default') @@ -178,11 +160,7 @@ def _put_key_policy(self, key_id): try: self._client.put_key_policy(KeyId=key_id, PolicyName='default', Policy=json.dumps(policy)) except ClientError as err: - log.exception( - "Couldn't set policy for key %s. Here's why %s", - key_id, - err, - ) + log.exception("Couldn't set policy for key.") def delete_key_by_alias(self, alias_name): """ @@ -197,7 +175,7 @@ def delete_key_by_alias(self, alias_name): self._client.schedule_key_deletion(KeyId=key_id) self._client.delete_alias(AliasName=f'alias/{alias_name}') except ClientError as e: - log.exception(f'Error deleting KMS key by alias: {e}') + log.exception('Error deleting KMS key by alias') def _get_key_by_alias(self, alias_name): try: @@ -211,7 +189,7 @@ def _get_key_by_alias(self, alias_name): return None except ClientError as e: - log.exception(f'Error getting KMS key by alias: {e}') + log.exception('Error getting KMS key by alias') class GlueClient: @@ -228,7 +206,7 @@ def get_database(self, database_name): database = self._client.get_database(Name=database_name) return database except ClientError as e: - log.exception(f'Database not found, exception: {e}') + log.exception('Database not found') return False def create_database(self, database_name, bucket): @@ -237,7 +215,7 @@ def create_database(self, database_name, bucket): self._client.create_database(DatabaseInput={'Name': database_name, 'LocationUri': f's3://{bucket}/'}) return database_name except ClientError as e: - log.exception(f'Error creating Glue database: {e}') + log.exception('Error creating Glue database') def create_table(self, database_name, bucket, table_name): try: @@ -265,7 +243,7 @@ def create_table(self, database_name, bucket, table_name): }, ) except ClientError as e: - log.exception(f'Error creating Glue table: {e}') + log.exception('Error creating Glue table') def delete_database(self, database_name): """ @@ -279,7 +257,7 @@ def delete_database(self, database_name): if e.response['Error']['Code'] == 'EntityNotFoundException': log.exception(f"Glue database '{database_name}' does not exist.") else: - log.exception(f'Error deleting Glue database: {e}') + log.exception('Error deleting Glue database') class LakeFormationClient: @@ -304,7 +282,7 @@ def add_role_to_datalake_admin(self, role_arn): ) return existing_admins except ClientError as e: - log.exception(f'Error granting lake formation permissions: {e}') + log.exception('Error granting lake formation permissions') def remove_role_from_datalake_admin(self, old_existing_principals): try: @@ -317,7 +295,7 @@ def remove_role_from_datalake_admin(self, old_existing_principals): ) return True except ClientError as e: - log.exception(f'Error granting lake formation permissions: {e}') + log.exception('Error granting lake formation permissions') def grant_create_database(self, role_arn): """ @@ -333,4 +311,4 @@ def grant_create_database(self, role_arn): ) return True except ClientError as e: - log.exception(f'Error granting permissions to create database: {e}') + log.exception('Error granting permissions to create database') diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index 4153ad9b3..cbb36c845 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -19,7 +19,7 @@ create_table_data_filter, ) from tests_new.integration_tests.modules.datasets_base.queries import list_datasets - +from integration_tests.aws_clients.s3 import S3Client as S3CommonClient from integration_tests.modules.s3_datasets.aws_clients import S3Client, KMSClient, GlueClient, LakeFormationClient from integration_tests.core.stack.queries import update_stack @@ -98,10 +98,10 @@ def create_aws_imported_resources( return bucket, kms_alias, database, existing_lf_admins -def delete_aws_imported_resources(aws_client, env, bucket=None, kms_alias=None, database=None, existing_lf_admins=None): +def delete_aws_dataset_resources(aws_client, env, bucket=None, kms_alias=None, database=None, existing_lf_admins=None): try: if bucket: - S3Client(session=aws_client, region=env['region']).delete_bucket(bucket) + S3CommonClient(session=aws_client, account=env.AwsAccountId, region=env.region).delete_bucket(bucket) if kms_alias: KMSClient( session=aws_client, @@ -221,7 +221,7 @@ def create_filters(client, tables): @pytest.fixture(scope='session') -def session_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): +def session_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata, session_env1_aws_client): ds = None try: ds = create_s3_dataset( @@ -238,6 +238,7 @@ def session_s3_dataset1(client1, group1, org1, session_env1, session_id, testdat finally: if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) + delete_aws_dataset_resources(aws_client=session_env1_aws_client, env=session_env1, bucket=ds.S3BucketName) @pytest.fixture(scope='session') @@ -279,7 +280,7 @@ def session_imported_sse_s3_dataset1( finally: if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) - delete_aws_imported_resources(aws_client=session_env1_aws_client, env=session_env1, bucket=bucket) + delete_aws_dataset_resources(aws_client=session_env1_aws_client, env=session_env1, bucket=bucket) @pytest.fixture(scope='session') @@ -334,7 +335,7 @@ def session_imported_kms_s3_dataset1( finally: if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) - delete_aws_imported_resources( + delete_aws_dataset_resources( aws_client=session_env1_aws_client, env=session_env1, bucket=bucket, @@ -376,7 +377,7 @@ def session_imported_kms_s3_dataset1_tables_data_filters(client1, session_import @pytest.fixture(scope='function') -def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): +def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata, session_env1_aws_client): ds = None try: ds = create_s3_dataset( @@ -393,6 +394,8 @@ def temp_s3_dataset1(client1, group1, org1, session_env1, session_id, testdata): if ds: delete_s3_dataset(client1, session_env1['environmentUri'], ds) + delete_aws_dataset_resources(aws_client=session_env1_aws_client, env=session_env1, bucket=ds.S3BucketName) + """ Persistent environments must always be present (if not i.e first run they will be created but won't be removed). @@ -523,7 +526,7 @@ def persistent_imported_kms_s3_dataset1( or (not kms_alias and not existing_kms_alias) or (not database and not existing_database) ): - delete_aws_imported_resources( + delete_aws_dataset_resources( aws_client=persistent_env1_aws_client, env=persistent_env1, bucket=bucket, From 3f97f9a6f87f9abfdd6a5e109f963261f2a04bd8 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:33:45 +0200 Subject: [PATCH 112/188] Integration tests - refresh tokens of AWS Clients (#1607) ### Feature or Bugfix - Feature ### Detail The new integration tests take quite some time (>1h) to get executed. For this reason the AWS clients passed as fixtures to perform different actions (e.g. create S3 Buckets) have expired STS tokens when we reach the teardown operations (e.g. delete S3 Buckets). This PR implements some logic similar to the one proposed in https://github.com/benkehoe/aws-assume-role-lib which was referenced by the boto3 maintainers in the [GitHub issue](https://github.com/boto/boto3/issues/443) for this topic. ### Relates - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../integration_tests/aws_clients/sts.py | 54 ++++++++++++++++--- .../integration_tests/aws_clients/utils.py | 18 ------- .../core/environment/global_conftest.py | 38 ++++++------- .../share_base/shared_test_functions.py | 15 ++++-- 4 files changed, 74 insertions(+), 51 deletions(-) delete mode 100644 tests_new/integration_tests/aws_clients/utils.py diff --git a/tests_new/integration_tests/aws_clients/sts.py b/tests_new/integration_tests/aws_clients/sts.py index f82cadf1f..c865db65e 100644 --- a/tests_new/integration_tests/aws_clients/sts.py +++ b/tests_new/integration_tests/aws_clients/sts.py @@ -1,15 +1,53 @@ -import os - +from uuid import uuid4 import boto3 +from boto3 import Session +from botocore.credentials import RefreshableCredentials +from botocore.session import get_session + +SESSION_EXPIRATION_TIME_IN_SECONDS = 3600 + + +class STSClient: + def __init__(self, role_arn, region, session_name=None): + self.role_arn = role_arn + self.region = region + self.session_name = session_name or uuid4().hex + def _refresh_credentials(self): + params = { + 'RoleArn': self.role_arn, + 'RoleSessionName': self.session_name, + 'DurationSeconds': SESSION_EXPIRATION_TIME_IN_SECONDS, + } + sts_client = boto3.client('sts', region_name=self.region) + + response = sts_client.assume_role(**params).get('Credentials') + credentials = { + 'access_key': response.get('AccessKeyId'), + 'secret_key': response.get('SecretAccessKey'), + 'token': response.get('SessionToken'), + 'expiry_time': response.get('Expiration').isoformat(), + } + return credentials + + def get_refreshable_session(self) -> Session: + """ + Get refreshable boto3 session. + """ + refreshable_credentials = RefreshableCredentials.create_from_metadata( + metadata=self._refresh_credentials(), + refresh_using=self._refresh_credentials, + method='sts-assume-role', + ) -class StsClient: - def __init__(self, session=boto3.Session(), region=os.environ.get('AWS_REGION', 'us-east-1')): - self._client = session.client('sts', region_name=region) - self._region = region + session = get_session() + session._credentials = refreshable_credentials + session.set_config_variable('region', self.region) + return Session(botocore_session=session) - def get_role_session(self, role_arn): - assumed_role_object = self._client.assume_role(RoleArn=role_arn, RoleSessionName='AssumeRole') + def get_role_session(self) -> Session: + sts_client = boto3.client('sts', region_name=self.region) + assumed_role_object = sts_client.assume_role(RoleArn=self.role_arn, RoleSessionName=self.session_name) credentials = assumed_role_object['Credentials'] return boto3.Session( diff --git a/tests_new/integration_tests/aws_clients/utils.py b/tests_new/integration_tests/aws_clients/utils.py deleted file mode 100644 index 3a6d0dffd..000000000 --- a/tests_new/integration_tests/aws_clients/utils.py +++ /dev/null @@ -1,18 +0,0 @@ -import json -import boto3 - -from tests_new.integration_tests.aws_clients.sts import StsClient - - -def get_group_session(credentials_str): - credentials = json.loads(credentials_str) - return boto3.Session( - aws_access_key_id=credentials['AccessKey'], - aws_secret_access_key=credentials['SessionKey'], - aws_session_token=credentials['sessionToken'], - ) - - -def get_role_session(session, role_arn, region): - sts_client = StsClient(session=session, region=region) - return sts_client.get_role_session(role_arn) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index 176a9a5fb..59293a024 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -1,9 +1,9 @@ import logging -from datetime import datetime import pytest import boto3 +from integration_tests.aws_clients.sts import STSClient from integration_tests.client import GqlError from integration_tests.core.environment.queries import ( create_environment, @@ -62,22 +62,6 @@ def session_env1(client1, group1, org1, session_id, testdata): delete_env(client1, env) -def get_environment_aws_session(role_arn, env): - try: - base_session = boto3.Session() - response = base_session.client('sts', region_name=env.region).assume_role( - RoleArn=role_arn, RoleSessionName=role_arn.split('/')[1] - ) - return boto3.Session( - aws_access_key_id=response['Credentials']['AccessKeyId'], - aws_secret_access_key=response['Credentials']['SecretAccessKey'], - aws_session_token=response['Credentials']['SessionToken'], - ) - except: - log.exception('Failed to assume environment integration test role') - raise - - @pytest.fixture(scope='session') def session_env1_integration_role_arn(session_env1): return f'arn:aws:iam::{session_env1.AwsAccountId}:role/dataall-integration-tests-role-{session_env1.region}' @@ -85,7 +69,9 @@ def session_env1_integration_role_arn(session_env1): @pytest.fixture(scope='session') def session_env1_aws_client(session_env1, session_env1_integration_role_arn): - return get_environment_aws_session(session_env1_integration_role_arn, session_env1) + return STSClient( + role_arn=session_env1_integration_role_arn, region=session_env1.get('region'), session_name='Session_1' + ).get_refreshable_session() @pytest.fixture(scope='session') @@ -115,7 +101,11 @@ def session_cross_acc_env_1_integration_role_arn(session_cross_acc_env_1): @pytest.fixture(scope='session') def session_cross_acc_env_1_aws_client(session_cross_acc_env_1, session_cross_acc_env_1_integration_role_arn): - return get_environment_aws_session(session_cross_acc_env_1_integration_role_arn, session_cross_acc_env_1) + return STSClient( + role_arn=session_cross_acc_env_1_integration_role_arn, + region=session_cross_acc_env_1.get('region'), + session_name='Session_cross_1', + ).get_refreshable_session() @pytest.fixture(scope='session') @@ -125,7 +115,9 @@ def persistent_env1_integration_role_arn(persistent_env1): @pytest.fixture(scope='session') def persistent_env1_aws_client(persistent_env1, persistent_env1_integration_role_arn): - return get_environment_aws_session(persistent_env1_integration_role_arn, persistent_env1) + return STSClient( + role_arn=persistent_env1_integration_role_arn, region=persistent_env1.get('region'), session_name='Persistent_1' + ).get_refreshable_session() @pytest.fixture(scope='session') @@ -213,4 +205,8 @@ def persistent_cross_acc_env_1_integration_role_arn(persistent_cross_acc_env_1): @pytest.fixture(scope='session') def persistent_cross_acc_env_1_aws_client(persistent_cross_acc_env_1, persistent_cross_acc_env_1_integration_role_arn): - return get_environment_aws_session(persistent_cross_acc_env_1_integration_role_arn, persistent_cross_acc_env_1) + return STSClient( + role_arn=persistent_cross_acc_env_1_integration_role_arn, + region=persistent_cross_acc_env_1.get('region'), + session_name='Persistent_cross_1', + ).get_refreshable_session() diff --git a/tests_new/integration_tests/modules/share_base/shared_test_functions.py b/tests_new/integration_tests/modules/share_base/shared_test_functions.py index 25f8de1da..aedc0c2a5 100644 --- a/tests_new/integration_tests/modules/share_base/shared_test_functions.py +++ b/tests_new/integration_tests/modules/share_base/shared_test_functions.py @@ -1,7 +1,7 @@ from assertpy import assert_that from botocore.exceptions import ClientError +import boto3 -from tests_new.integration_tests.aws_clients.utils import get_group_session, get_role_session from tests_new.integration_tests.core.environment.queries import get_environment_access_token from tests_new.integration_tests.modules.share_base.queries import ( get_share_object, @@ -17,6 +17,7 @@ check_share_items_verified, check_share_ready, ) +from tests_new.integration_tests.aws_clients.sts import STSClient from tests_new.integration_tests.aws_clients.athena import AthenaClient from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client from tests_new.integration_tests.modules.s3_datasets.queries import get_folder @@ -138,10 +139,16 @@ def check_share_items_access( dataset = share.dataset principal_type = share.principal.principalType if principal_type == 'Group': - credentials_str = get_environment_access_token(client, share.environment.environmentUri, group) - session = get_group_session(credentials_str) + credentials = get_environment_access_token(client, share.environment.environmentUri, group) + session = boto3.Session( + aws_access_key_id=credentials['AccessKey'], + aws_secret_access_key=credentials['SessionKey'], + aws_session_token=credentials['sessionToken'], + ) elif principal_type == 'ConsumptionRole': - session = get_role_session(env_client, consumption_role.IAMRoleArn, dataset.region) + session = STSClient( + role_arn=consumption_role.IAMRoleArn, region=dataset.region, session_name='ConsumptionRole' + ).get_role_session() else: raise Exception('wrong principal type') From 25c4202447db5b377ed8139ee8d5cbbc48fff824 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 8 Oct 2024 15:33:58 +0100 Subject: [PATCH 113/188] try to create AP every time, catch if already exists (#1609) ### Feature or Bugfix - Bugfix ### Detail - Try to create AP every time we process the share - Catch error if it already exists - Retry on put_access_point_policy ### Relates - #1608 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../cdk/pivot_role_core_policies/s3.py | 1 + .../s3_datasets_shares/aws/s3_client.py | 21 ++++++++++++--- .../s3_access_point_share_manager.py | 26 +++---------------- .../test_s3_access_point_share_manager.py | 4 +++ 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/backend/dataall/core/environment/cdk/pivot_role_core_policies/s3.py b/backend/dataall/core/environment/cdk/pivot_role_core_policies/s3.py index 638d7acf3..8067b879e 100644 --- a/backend/dataall/core/environment/cdk/pivot_role_core_policies/s3.py +++ b/backend/dataall/core/environment/cdk/pivot_role_core_policies/s3.py @@ -17,6 +17,7 @@ def get_statements(self): effect=iam.Effect.ALLOW, actions=[ 's3:ListAllMyBuckets', + 's3:ListAccessPoints', 's3:GetBucketLocation', 's3:PutBucketTagging', 's3:GetEncryptionConfiguration', diff --git a/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py b/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py index da68b1759..ff596c36a 100755 --- a/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py +++ b/backend/dataall/modules/s3_datasets_shares/aws/s3_client.py @@ -1,4 +1,5 @@ import logging +from retrying import retry from typing import List from dataall.base.aws.sts import SessionHelper @@ -43,16 +44,28 @@ def get_bucket_access_point_arn(self, access_point_name: str): def create_bucket_access_point(self, bucket_name: str, access_point_name: str): try: - access_point = self._client.create_access_point( + self._client.create_access_point( AccountId=self._account_id, Name=access_point_name, Bucket=bucket_name, ) except Exception as e: log.error(f'S3 bucket access point creation failed for location {bucket_name} : {e}') - raise e - else: - return access_point['AccessPointArn'] + if 'AccessPointAlreadyOwnedByYou' not in str(e): + raise e + + return self.try_get_bucket_access_point_arn(bucket_name, access_point_name) + + @retry(retry_on_result=lambda arn: arn is None, stop_max_attempt_number=10, wait_fixed=30000) + def try_get_bucket_access_point_arn(self, bucket_name: str, access_point_name: str): + log.info(f'Attempt to get access point arn for bucket {bucket_name} and accesspoint {access_point_name}') + all_access_points = self._client.list_access_points( + AccountId=self._account_id, Bucket=bucket_name, MaxResults=1000 + ) + for ap in all_access_points['AccessPointList']: + if ap['Name'] == access_point_name: + return ap['AccessPointArn'] + return None def delete_bucket_access_point(self, access_point_name: str): try: diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py index 542c4ad08..e32d6c3a7 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_managers/s3_access_point_share_manager.py @@ -1,8 +1,8 @@ import logging import json -import time from itertools import count + from dataall.core.environment.services.environment_service import EnvironmentService from dataall.base.db import utils from dataall.base.aws.sts import SessionHelper @@ -39,9 +39,6 @@ from dataall.modules.shares_base.services.sharing_service import ShareData logger = logging.getLogger(__name__) -ACCESS_POINT_CREATION_TIME = 30 -ACCESS_POINT_CREATION_RETRIES = 10 -ACCESS_POINT_BACKOFF_COEFFICIENT = 1.1 # every time increase retry delay by 10% class S3AccessPointShareManager: @@ -442,25 +439,9 @@ def manage_access_point_and_policy(self): """ s3_client = S3ControlClient(self.source_account_id, self.source_environment.region) - access_point_arn = s3_client.get_bucket_access_point_arn(self.access_point_name) + access_point_arn = s3_client.create_bucket_access_point(self.bucket_name, self.access_point_name) if not access_point_arn: - logger.info(f'Access point {self.access_point_name} does not exists, creating...') - access_point_arn = s3_client.create_bucket_access_point(self.bucket_name, self.access_point_name) - # Access point creation is slow - retries = 1 - sleep_coeff = 1 - while ( - not s3_client.get_bucket_access_point_arn(self.access_point_name) - and retries < ACCESS_POINT_CREATION_RETRIES - ): - logger.info( - f'Attempt {retries}. Waiting {ACCESS_POINT_CREATION_TIME * sleep_coeff}s for access point creation to complete..' - ) - time.sleep(ACCESS_POINT_CREATION_TIME * sleep_coeff) - sleep_coeff = sleep_coeff * ACCESS_POINT_BACKOFF_COEFFICIENT - retries += 1 - if not s3_client.get_bucket_access_point_arn(self.access_point_name): - raise Exception(f'Failed to create access point {self.access_point_name}') + raise Exception('Failed to create access point') existing_policy = s3_client.get_access_point_policy(self.access_point_name) # requester will use this role to access resources target_requester_id = SessionHelper.get_role_id( @@ -505,6 +486,7 @@ def manage_access_point_and_policy(self): self.s3_prefix, perms_to_actions(self.share.permissions, SidType.BucketPolicy), ) + s3_client.attach_access_point_policy( access_point_name=self.access_point_name, policy=json.dumps(access_point_policy) ) diff --git a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py index d93e2f6f2..8c0d1bb69 100644 --- a/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py +++ b/tests/modules/s3_datasets_shares/tasks/test_s3_access_point_share_manager.py @@ -670,6 +670,7 @@ def test_manage_access_point_and_policy_2( access_point_arn = 'existing-access-point-arn' s3_client = mock_s3_control_client(mocker) s3_client().get_bucket_access_point_arn.return_value = access_point_arn + s3_client().create_bucket_access_point.return_value = access_point_arn # target_env_admin is already in policy but current folder is NOT yet in prefix_list existing_ap_policy = _generate_ap_policy_object( @@ -690,6 +691,7 @@ def test_manage_access_point_and_policy_2( # Then s3_client().attach_access_point_policy.assert_called() policy = s3_client().attach_access_point_policy.call_args.kwargs.get('policy') + print(f'{policy=}') # Assert S3 Prefix of share folder in prefix_list new_ap_policy = json.loads(policy) @@ -700,6 +702,7 @@ def test_manage_access_point_and_policy_2( # Assert s3 prefix is in resource_list resource_list = statements[f'{target_environment.SamlGroupName}1']['Resource'] + print(f'{resource_list=}') assert f'{access_point_arn}/object/{location1.S3Prefix}/*' in resource_list @@ -716,6 +719,7 @@ def test_manage_access_point_and_policy_3( access_point_arn = 'existing-access-point-arn' s3_control_client = mock_s3_control_client(mocker) s3_control_client().get_bucket_access_point_arn.return_value = access_point_arn + s3_control_client().create_bucket_access_point.return_value = access_point_arn # New target env admin and prefix are not in existing ap policy existing_ap_policy = _generate_ap_policy_object(access_point_arn, [['another-env-admin', ['existing-prefix']]]) From 6f37f94002473f31d70f436cb99d880c9013b7e7 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Tue, 8 Oct 2024 15:34:08 +0100 Subject: [PATCH 114/188] CICD: S3 dataset bug, position arguments vs arguments by name (#1612) ### Feature or Bugfix - Bugfix ### Detail - pass arguments by name to avoid confusion ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. Co-authored-by: Sofia Sazonova --- .../modules/s3_datasets/global_conftest.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py index cbb36c845..e05861e73 100644 --- a/tests_new/integration_tests/modules/s3_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/s3_datasets/global_conftest.py @@ -493,7 +493,12 @@ def persistent_imported_sse_s3_dataset1(client1, group1, persistent_env1, persis except Exception as e: raise Exception(f'Error creating {bucket_name=} due to: {e}') return get_or_create_persistent_s3_dataset( - 'persistent_imported_sse_s3_dataset1', client1, group1, persistent_env1, bucket_name + 'persistent_imported_sse_s3_dataset1', + client1, + group1, + persistent_env1, + autoApprovalEnabled=False, + bucket=bucket_name, ) @@ -541,7 +546,8 @@ def persistent_imported_kms_s3_dataset1( client1, group1, persistent_env1, - resource_name, - resource_name, - resource_name, + autoApprovalEnabled=False, + bucket=resource_name, + kms_alias=resource_name, + glue_database=resource_name, ) From e76369dfc2f78e3d52131155566a975e2e02e6bb Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 9 Oct 2024 09:49:18 +0200 Subject: [PATCH 115/188] Fix - clean up buckets integration test - PR overwrite (#1622) ### Feature or Bugfix - Bugfix ### Detail This PR fixes a mismatch between the #1607 and #1603 where get_environment_aws_session is no longer used. In this PR we obtain the session from the new STSClient refreshable token functions introduced in #1607 ### Relates - #1603 - #1607 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- tests_new/integration_tests/core/environment/global_conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index 59293a024..b8f32ceec 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -55,7 +55,7 @@ def session_env1(client1, group1, org1, session_id, testdata): finally: if env: role = f'arn:aws:iam::{env.AwsAccountId}:role/dataall-integration-tests-role-{env.region}' - session = get_environment_aws_session(role, env) + session = STSClient(role_arn=role, region=env.region, session_name='Session_1').get_refreshable_session() S3Client(session=session, account=env.AwsAccountId, region=env.region).delete_bucket( env.EnvironmentDefaultBucketName ) From 3f9a9772ff5b0cd530408a3c69b3ac7ba8c3cc3f Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 9 Oct 2024 15:53:27 +0100 Subject: [PATCH 116/188] CICD: assume consumption role from environment client (#1624) ### Feature or Bugfix - Bugfix ### Detail - - ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- tests_new/integration_tests/aws_clients/sts.py | 4 ++-- tests_new/integration_tests/modules/share_base/conftest.py | 2 +- .../modules/share_base/shared_test_functions.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests_new/integration_tests/aws_clients/sts.py b/tests_new/integration_tests/aws_clients/sts.py index c865db65e..e0d77b0c6 100644 --- a/tests_new/integration_tests/aws_clients/sts.py +++ b/tests_new/integration_tests/aws_clients/sts.py @@ -45,8 +45,8 @@ def get_refreshable_session(self) -> Session: session.set_config_variable('region', self.region) return Session(botocore_session=session) - def get_role_session(self) -> Session: - sts_client = boto3.client('sts', region_name=self.region) + def get_role_session(self, session) -> Session: + sts_client = session.client('sts', region_name=self.region) assumed_role_object = sts_client.assume_role(RoleArn=self.role_arn, RoleSessionName=self.session_name) credentials = assumed_role_object['Credentials'] diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/share_base/conftest.py index af0935f51..7dffad7f6 100644 --- a/tests_new/integration_tests/modules/share_base/conftest.py +++ b/tests_new/integration_tests/modules/share_base/conftest.py @@ -74,7 +74,7 @@ def session_consumption_role_1(client5, group5, session_cross_acc_env_1, session yield consumption_role remove_consumption_role(client5, session_cross_acc_env_1.environmentUri, consumption_role.consumptionRoleUri) iam_client = IAMClient(session=session_cross_acc_env_1_aws_client, region=session_cross_acc_env_1['region']) - iam_client.delete_consumption_role(consumption_role['Role']['RoleName']) + iam_client.delete_consumption_role(test_session_cons_role_name) @pytest.fixture(scope='session') diff --git a/tests_new/integration_tests/modules/share_base/shared_test_functions.py b/tests_new/integration_tests/modules/share_base/shared_test_functions.py index aedc0c2a5..6484b7343 100644 --- a/tests_new/integration_tests/modules/share_base/shared_test_functions.py +++ b/tests_new/integration_tests/modules/share_base/shared_test_functions.py @@ -148,7 +148,7 @@ def check_share_items_access( elif principal_type == 'ConsumptionRole': session = STSClient( role_arn=consumption_role.IAMRoleArn, region=dataset.region, session_name='ConsumptionRole' - ).get_role_session() + ).get_role_session(env_client) else: raise Exception('wrong principal type') From abbb10a17cfd4b25c0125055d4cb279d0ec1c27a Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Thu, 10 Oct 2024 15:19:55 +0100 Subject: [PATCH 117/188] CICD: share tests fixes (#1625) ### Feature or Bugfix - Bugfix ### Detail - Add new role sessions to trust policy of consumption roles - Credentials need to be parsed from json string ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- tests_new/integration_tests/aws_clients/iam.py | 8 +------- .../modules/share_base/shared_test_functions.py | 5 ++++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/tests_new/integration_tests/aws_clients/iam.py b/tests_new/integration_tests/aws_clients/iam.py index 1006d3871..d85ae06b1 100644 --- a/tests_new/integration_tests/aws_clients/iam.py +++ b/tests_new/integration_tests/aws_clients/iam.py @@ -32,14 +32,8 @@ def create_role(self, account_id, role_name, test_role_name): 'Statement': [ { 'Effect': 'Allow', - 'Principal': { - 'AWS': [ - f'arn:aws:iam::{account_id}:root', - f'arn:aws:sts::{account_id}:assumed-role/{test_role_name}/{test_role_name}', - ] - }, + 'Principal': {'AWS': [f'arn:aws:iam::{account_id}:role/{test_role_name}']}, 'Action': 'sts:AssumeRole', - 'Condition': {}, } ], } diff --git a/tests_new/integration_tests/modules/share_base/shared_test_functions.py b/tests_new/integration_tests/modules/share_base/shared_test_functions.py index 6484b7343..f494d8921 100644 --- a/tests_new/integration_tests/modules/share_base/shared_test_functions.py +++ b/tests_new/integration_tests/modules/share_base/shared_test_functions.py @@ -22,6 +22,8 @@ from tests_new.integration_tests.modules.s3_datasets.aws_clients import S3Client from tests_new.integration_tests.modules.s3_datasets.queries import get_folder +import json + ALL_S3_SHARABLE_TYPES_NAMES = [ 'Table', 'StorageLocation', @@ -139,7 +141,8 @@ def check_share_items_access( dataset = share.dataset principal_type = share.principal.principalType if principal_type == 'Group': - credentials = get_environment_access_token(client, share.environment.environmentUri, group) + credentials_str = get_environment_access_token(client, share.environment.environmentUri, group) + credentials = json.loads(credentials_str) session = boto3.Session( aws_access_key_id=credentials['AccessKey'], aws_secret_access_key=credentials['SessionKey'], From 1a0c4b59eb5092c168fd58346c7b522040ee1084 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:25:47 -0400 Subject: [PATCH 118/188] Dashboard Integration Test Improvements (#1623) ### Feature or Bugfix - Test Enhancement ### Detail - Add documentation in README on how to set up dashboard tests - Add check for QS Account and skip if no Account exists in `session_env1` ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../core/environment/cdk/environment_stack.py | 10 +++++ tests_new/integration_tests/README.md | 12 ++++++ .../modules/dashboards/aws_clients.py | 37 +++++++++++++++++++ .../modules/dashboards/conftest.py | 9 +++++ .../modules/dashboards/test_dashboard.py | 32 ++++++++-------- 5 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 tests_new/integration_tests/modules/dashboards/aws_clients.py diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index 51d5feac5..c978f944c 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -678,3 +678,13 @@ def create_integration_tests_role(self): resources=[f'arn:aws:iam::{self.account}:role/dataall-test-*'], ), ) + + self.test_role.add_to_policy( + iam.PolicyStatement( + actions=[ + 'quicksight:DescribeAccountSubscription', + ], + effect=iam.Effect.ALLOW, + resources=[f'arn:aws:quicksight:*:{self.account}:*'], + ), + ) diff --git a/tests_new/integration_tests/README.md b/tests_new/integration_tests/README.md index 157508dd8..6e21b25b5 100644 --- a/tests_new/integration_tests/README.md +++ b/tests_new/integration_tests/README.md @@ -83,6 +83,18 @@ Currently **we support only Cognito based deployments** but support for any IdP - The pipeline will create the users/groups +### Dashboard Tests Pre-Requisities + +In order to run the tests on the dashboards module the following steps are required: + +- Create Enterprise QuickSight Subscription in `session_env1` AWS Account +- Update QuickSight Account with a Reader Capacity Pricing Plan (required for generating embed URLs - `GenerateEmbedUrlForAnonymousUser`) +- Create / Publish a QuickSight Dashboard +- Create a QuickSight Group named `dataall` and give owner access of the published dashboard to the `dataall` group +- Provide the `dashboardId` in the `config.json` as shown above + +Rather than failing if the above pre-requisites are not completed, if ther eis no QuickSight Account is detected in `session_env1` the dashboard tests will be **skipped**. + ## Run tests The tests are executed in CodeBuild as part of the CICD pipeline if the cdk.json parameter `with_approval_tests` is set diff --git a/tests_new/integration_tests/modules/dashboards/aws_clients.py b/tests_new/integration_tests/modules/dashboards/aws_clients.py new file mode 100644 index 000000000..286c9e82e --- /dev/null +++ b/tests_new/integration_tests/modules/dashboards/aws_clients.py @@ -0,0 +1,37 @@ +import logging + +log = logging.getLogger(__name__) + + +class QuickSightClient: + def __init__(self, session, account_id, region): + self._client = session.client('quicksight', region_name=region) + self._region = region + self._account_id = account_id + + def check_enterprise_account_exists(self): + """ + Check if a QuickSight Account exists in the account. + :param + :return: True if the account exists, False otherwise + """ + try: + response = self._client.describe_account_subscription(AwsAccountId=self._account_id) + if not response['AccountInfo']: + log.info(f'Quicksight Enterprise Subscription not found in Account: {self._account_id}') + return False + else: + if response['AccountInfo']['Edition'] not in ['ENTERPRISE', 'ENTERPRISE_AND_Q']: + log.info( + f"Quicksight Subscription found in Account: {self._account_id} of incorrect type: {response['AccountInfo']['Edition']}" + ) + return False + else: + if response['AccountInfo']['AccountSubscriptionStatus'] == 'ACCOUNT_CREATED': + return True + log.info( + f"Quicksight Subscription found in Account: {self._account_id} not active. Status = {response['AccountInfo']['AccountSubscriptionStatus']}" + ) + return False + except self._client.exceptions.ResourceNotFoundException: + return False diff --git a/tests_new/integration_tests/modules/dashboards/conftest.py b/tests_new/integration_tests/modules/dashboards/conftest.py index d2f773f8a..3cca4cdc5 100644 --- a/tests_new/integration_tests/modules/dashboards/conftest.py +++ b/tests_new/integration_tests/modules/dashboards/conftest.py @@ -7,6 +7,15 @@ ) from integration_tests.modules.dashboards.queries import get_dashboard from integration_tests.core.environment.utils import set_env_params +from integration_tests.modules.dashboards.aws_clients import QuickSightClient + + +@pytest.fixture(scope='session') +def quicksight_account_exists(session_env1, session_env1_aws_client): + if not QuickSightClient( + session_env1_aws_client, session_env1.AwsAccountId, session_env1.region + ).check_enterprise_account_exists(): + pytest.skip('Skipping QuickSight tests because QuickSight account does not exist') def create_dataall_dashboard(client, session_id, dashboard_id, env): diff --git a/tests_new/integration_tests/modules/dashboards/test_dashboard.py b/tests_new/integration_tests/modules/dashboards/test_dashboard.py index ee3a255e3..f453cb28b 100644 --- a/tests_new/integration_tests/modules/dashboards/test_dashboard.py +++ b/tests_new/integration_tests/modules/dashboards/test_dashboard.py @@ -20,61 +20,61 @@ UPDATED_DESC = 'new description' -def test_get_author_session(client1, session_env1): +def test_get_author_session(quicksight_account_exists, client1, session_env1): set_env_params(client1, session_env1, dashboardsEnabled='true') assert_that(get_author_session(client1, session_env1.environmentUri)).starts_with('https://') -def test_get_author_session_unauthorized(client2, session_env1): +def test_get_author_session_unauthorized(quicksight_account_exists, client2, session_env1): assert_that(get_author_session).raises(GqlError).when_called_with(client2, session_env1.environmentUri).contains( 'UnauthorizedOperation', 'CREATE_DASHBOARD', session_env1.environmentUri ) -def test_get_dashboard(session_id, dashboard1): +def test_get_dashboard(quicksight_account_exists, session_id, dashboard1): assert_that(dashboard1.label).is_equal_to(session_id) -def test_list_dashboards(client1, client2, session_id, dashboard1): +def test_list_dashboards(quicksight_account_exists, client1, client2, session_id, dashboard1): filter = {'term': session_id} assert_that(search_dashboards(client1, filter).nodes).is_length(1) assert_that(search_dashboards(client2, filter).nodes).is_length(0) -def test_get_dashboard_unauthorized(client2, dashboard1): +def test_get_dashboard_unauthorized(quicksight_account_exists, client2, dashboard1): assert_that(get_dashboard).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( 'UnauthorizedOperation', 'GET_DASHBOARD', dashboard1.dashboardUri ) -def test_update_dashboard(client1, dashboard1): +def test_update_dashboard(quicksight_account_exists, client1, dashboard1): update_dashboard(client1, {'dashboardUri': dashboard1.dashboardUri, 'description': UPDATED_DESC}) ds = get_dashboard(client1, dashboard1.dashboardUri) assert_that(ds.description).is_equal_to(UPDATED_DESC) -def test_update_dashboard_unauthorized(client2, dashboard1): +def test_update_dashboard_unauthorized(quicksight_account_exists, client2, dashboard1): assert_that(update_dashboard).raises(GqlError).when_called_with( client2, {'dashboardUri': dashboard1.dashboardUri, 'description': UPDATED_DESC} ).contains('UnauthorizedOperation', 'UPDATE_DASHBOARD', dashboard1.dashboardUri) -def test_request_dashboard_share(dashboard1_share): +def test_request_dashboard_share(quicksight_account_exists, dashboard1_share): assert_that(dashboard1_share.shareUri).is_not_none() assert_that(dashboard1_share.status).is_equal_to('REQUESTED') -def test_list_dashboard_shares(client1, session_id, dashboard1, dashboard1_share): +def test_list_dashboard_shares(quicksight_account_exists, client1, session_id, dashboard1, dashboard1_share): assert_that(list_dashboard_shares(client1, dashboard1.dashboardUri, {'term': session_id}).nodes).is_length(1) -def test_approve_dashboard_share_unauthorized(client2, dashboard1, dashboard1_share): +def test_approve_dashboard_share_unauthorized(quicksight_account_exists, client2, dashboard1, dashboard1_share): assert_that(approve_dashboard_share).raises(GqlError).when_called_with(client2, dashboard1_share.shareUri).contains( 'UnauthorizedOperation', 'SHARE_DASHBOARD', dashboard1.dashboardUri ) -def test_approve_dashboard_share(client1, client2, session_id, dashboard1, dashboard1_share): +def test_approve_dashboard_share(quicksight_account_exists, client1, client2, session_id, dashboard1, dashboard1_share): filter = {'term': session_id} assert_that(search_dashboards(client2, filter).nodes).is_length(0) ds_share = approve_dashboard_share(client1, dashboard1_share.shareUri) @@ -83,23 +83,23 @@ def test_approve_dashboard_share(client1, client2, session_id, dashboard1, dashb assert_that(search_dashboards(client2, filter).nodes).is_length(1) -def test_reject_dashboard_share(client1, client2, session_id, dashboard1_share): +def test_reject_dashboard_share(quicksight_account_exists, client1, client2, session_id, dashboard1_share): ds_share = reject_dashboard_share(client1, dashboard1_share.shareUri) assert_that(ds_share.status).is_equal_to('REJECTED') assert_that(search_dashboards(client2, {'term': session_id}).nodes).is_length(0) -def test_get_reader_session(client1, dashboard1): +def test_get_reader_session(quicksight_account_exists, client1, dashboard1): assert_that(get_reader_session(client1, dashboard1.dashboardUri)).starts_with('https://') -def test_get_reader_session_unauthorized(client2, dashboard1): +def test_get_reader_session_unauthorized(quicksight_account_exists, client2, dashboard1): assert_that(get_reader_session).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( 'UnauthorizedOperation', 'GET_DASHBOARD', dashboard1.dashboardUri ) -def test_delete_dashboard(client1, session_id, session_env1, testdata): +def test_delete_dashboard(quicksight_account_exists, client1, session_id, session_env1, testdata): filter = {'term': session_id} dashboardId = testdata.dashboards['session_env1'].dashboardId dashboard2 = create_dataall_dashboard(client1, session_id, dashboardId, session_env1) @@ -109,7 +109,7 @@ def test_delete_dashboard(client1, session_id, session_env1, testdata): assert_that(search_dashboards(client1, filter).nodes).is_length(1) -def test_delete_dashboard_unauthorized(client2, dashboard1): +def test_delete_dashboard_unauthorized(quicksight_account_exists, client2, dashboard1): assert_that(delete_dashboard).raises(GqlError).when_called_with(client2, dashboard1.dashboardUri).contains( 'UnauthorizedOperation', 'DELETE_DASHBOARD', dashboard1.dashboardUri ) From 9863ff08878bea25fc1ee98b46a26e0af87b8d26 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Fri, 11 Oct 2024 03:01:29 -0400 Subject: [PATCH 119/188] set typeguard version 4.2.1 (#1634) ### Feature or Bugfix - Bugfix ### Detail - With latest bumps in dependency versions - `requirements.txt` had no set `typeguard` version installed so installing latst `4.3.0` which raised errors on `cdk synth` with the following: - `typeguard.TypeCheckError: aws_cdk.aws_ec2.Vpc is not compatible with the IVpc protocol because its 'add_client_vpn_endpoint' method has mandatory keyword-only arguments in its declaration: cidr, server_certificate_arn` - This looks like a bug coming from `jsii` similar to some other open issues like https://github.com/aws/jsii/issues/4531 and the subsequent issues linked to it - Fixing `typeguard` to version `4.2.1` resolves the issue for the time being ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- deploy/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/requirements.txt b/deploy/requirements.txt index d91bc5199..bf1d93556 100644 --- a/deploy/requirements.txt +++ b/deploy/requirements.txt @@ -2,3 +2,4 @@ aws-cdk-lib==2.160.0 boto3==1.35.26 boto3-stubs==1.35.26 cdk-nag==2.7.2 +typeguard==4.2.1 \ No newline at end of file From 0eed4cda6b862a9ac7a4ac285d6e06b2fc0ceb9d Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:10:07 +0200 Subject: [PATCH 120/188] Restrict invitation to Redshift Connections and edit permission name (#1638) ### Feature or Bugfix - Bugfix - Refactoring ### Detail - Rename MANAGE_REDSHIFT_CONNECTION_PERMISSIONS as EDIT_REDSHIFT_CONNECTION_PERMISSIONS to avoid confusion with Tenant permissions that are always defined as MANAGE.... - Limit the groups that can be granted connection permissions to those groups in the same Environment - Adjust unit tests accordingly ### Relates - #1628 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../services/environment_service.py | 5 ++ .../redshift_connection_permissions.py | 4 +- .../services/redshift_connection_service.py | 16 ++++--- tests/modules/conftest.py | 9 ++++ tests/modules/redshift_datasets/conftest.py | 28 +++++++++-- .../test_unit_redshift_connection_service.py | 46 +++++++++++-------- 6 files changed, 79 insertions(+), 29 deletions(-) diff --git a/backend/dataall/core/environment/services/environment_service.py b/backend/dataall/core/environment/services/environment_service.py index d61d65d29..455795952 100644 --- a/backend/dataall/core/environment/services/environment_service.py +++ b/backend/dataall/core/environment/services/environment_service.py @@ -729,6 +729,11 @@ def paginated_user_environment_groups(uri, data=None) -> dict: def get_all_environment_groups(session, uri, filter) -> Query: return EnvironmentRepository.query_all_environment_groups(session, uri, filter) + @staticmethod + def list_all_environment_groups(uri, data=None) -> [str]: + with get_context().db_engine.scoped_session() as session: + return [g.groupUri for g in EnvironmentRepository.query_all_environment_groups(session, uri, data).all()] + @staticmethod @ResourcePolicyService.has_resource_permission(environment_permissions.LIST_ENVIRONMENT_GROUPS) def paginated_all_environment_groups(uri, data=None) -> dict: diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py index 3dadd7c80..35816b2f4 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_permissions.py @@ -27,8 +27,8 @@ REDSHIFT_CONNECTION_READ = [GET_REDSHIFT_CONNECTION] DELETE_REDSHIFT_CONNECTION = 'DELETE_REDSHIFT_CONNECTION' -MANAGE_REDSHIFT_CONNECTION_PERMISSIONS = 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS' -REDSHIFT_CONNECTION_WRITE = [DELETE_REDSHIFT_CONNECTION, MANAGE_REDSHIFT_CONNECTION_PERMISSIONS] +EDIT_REDSHIFT_CONNECTION_PERMISSIONS = 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS' +REDSHIFT_CONNECTION_WRITE = [DELETE_REDSHIFT_CONNECTION, EDIT_REDSHIFT_CONNECTION_PERMISSIONS] CREATE_SHARE_REQUEST_WITH_CONNECTION = 'CREATE_SHARE_REQUEST_WITH_CONNECTION' REDSHIFT_GRANTABLE_PERMISSIONS = [CREATE_SHARE_REQUEST_WITH_CONNECTION] diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index 3f0578049..874dd106c 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -14,7 +14,7 @@ REDSHIFT_GRANTABLE_PERMISSIONS, DELETE_REDSHIFT_CONNECTION, GET_REDSHIFT_CONNECTION, - MANAGE_REDSHIFT_CONNECTION_PERMISSIONS, + EDIT_REDSHIFT_CONNECTION_PERMISSIONS, CREATE_REDSHIFT_CONNECTION, LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS, ) @@ -150,7 +150,7 @@ def list_schema_tables(uri, schema): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) - @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + @ResourcePolicyService.has_resource_permission(EDIT_REDSHIFT_CONNECTION_PERMISSIONS) def add_group_permissions(uri, group, permissions) -> bool: context = get_context() connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) @@ -161,8 +161,12 @@ def add_group_permissions(uri, group, permissions) -> bool: param_value=permissions, constraint=f'one of the possible grantable permissions {REDSHIFT_GRANTABLE_PERMISSIONS}', ) - + env_groups = EnvironmentService.list_all_environment_groups(uri=connection.environmentUri) with context.db_engine.scoped_session() as session: + if group not in env_groups: + raise exceptions.InvalidInput( + param_name='Team', param_value=group, constraint='a team invited to the Environment.' + ) ResourcePolicyService.attach_resource_policy( session=session, group=group, @@ -174,7 +178,7 @@ def add_group_permissions(uri, group, permissions) -> bool: @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) - @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + @ResourcePolicyService.has_resource_permission(EDIT_REDSHIFT_CONNECTION_PERMISSIONS) def delete_group_permissions(uri, group) -> bool: context = get_context() connection = RedshiftConnectionService.get_redshift_connection_by_uri(uri=uri) @@ -194,7 +198,7 @@ def delete_group_permissions(uri, group) -> bool: @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) - @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + @ResourcePolicyService.has_resource_permission(EDIT_REDSHIFT_CONNECTION_PERMISSIONS) def list_connection_group_permissions(uri, filter): context = get_context() permissions = REDSHIFT_GRANTABLE_PERMISSIONS @@ -205,7 +209,7 @@ def list_connection_group_permissions(uri, filter): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_CONNECTIONS) - @ResourcePolicyService.has_resource_permission(MANAGE_REDSHIFT_CONNECTION_PERMISSIONS) + @ResourcePolicyService.has_resource_permission(EDIT_REDSHIFT_CONNECTION_PERMISSIONS) def list_connection_group_no_permissions(uri, filter): context = get_context() with context.db_engine.scoped_session() as session: diff --git a/tests/modules/conftest.py b/tests/modules/conftest.py index 4e17c02e7..bf5a373f5 100644 --- a/tests/modules/conftest.py +++ b/tests/modules/conftest.py @@ -5,6 +5,7 @@ from dataall.core.environment.db.environment_models import Environment, EnvironmentGroup, EnvironmentParameter from dataall.core.organizations.db.organization_models import Organization from dataall.core.permissions.services.environment_permissions import ENVIRONMENT_ALL +from dataall.core.permissions.services.organization_permissions import ORGANIZATION_ALL from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.stacks.db.stack_repositories import StackRepository from dataall.core.stacks.db.stack_models import KeyValueTag @@ -128,6 +129,14 @@ def factory(name, group, user): ) session.add(org) session.commit() + ResourcePolicyService.attach_resource_policy( + session=session, + resource_uri=org.organizationUri, + group=group.name, + permissions=ORGANIZATION_ALL, + resource_type=Organization.__name__, + ) + session.commit() return org yield factory diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index fae876c01..f2d1f2676 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -2,8 +2,11 @@ import boto3 import pytest +from unittest.mock import MagicMock from dataall.base.context import set_context, dispose_context, RequestContext +from dataall.core.organizations.services.organization_service import OrganizationService +from dataall.core.environment.services.environment_service import EnvironmentService from dataall.modules.redshift_datasets.services.redshift_connection_service import RedshiftConnectionService from dataall.modules.redshift_datasets.services.redshift_dataset_service import RedshiftDatasetService from dataall.modules.redshift_datasets.services.redshift_connection_permissions import REDSHIFT_GRANTABLE_PERMISSIONS @@ -171,13 +174,32 @@ def connection3_admin( @pytest.fixture(scope='function') -def connection3_admin_permissions(db, connection3_admin, user, group, group2, api_context_1): +def invited_group_to_environment(db, user, group, group2, env_fixture, api_context_1, module_mocker): + module_mocker.patch('dataall.base.aws.iam.IAM', return_value=MagicMock()) + OrganizationService.invite_group( + uri=env_fixture.organizationUri, data={'groupUri': group2.name, 'permissions': ['LINK_ENVIRONMENT']} + ) + EnvironmentService.invite_group( + uri=env_fixture.environmentUri, data={'groupUri': group2.name, 'permissions': ['INVITE_ENVIRONMENT_GROUP']} + ) + yield group2 + set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) + EnvironmentService.remove_group(uri=env_fixture.environmentUri, group=group2.name) + OrganizationService.remove_group(uri=env_fixture.organizationUri, group=group2.name) + + +@pytest.fixture(scope='function') +def connection3_admin_permissions(db, connection3_admin, user, group, invited_group_to_environment, api_context_1): RedshiftConnectionService.add_group_permissions( - uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + uri=connection3_admin.connectionUri, + group=invited_group_to_environment.name, + permissions=REDSHIFT_GRANTABLE_PERMISSIONS, ) yield RedshiftConnectionService.list_connection_group_permissions(uri=connection3_admin.connectionUri, filter={}) set_context(RequestContext(db_engine=db, username=user.username, groups=[group.name], user_id=user.username)) - RedshiftConnectionService.delete_group_permissions(uri=connection3_admin.connectionUri, group=group2.groupUri) + RedshiftConnectionService.delete_group_permissions( + uri=connection3_admin.connectionUri, group=invited_group_to_environment.name + ) dispose_context() diff --git a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py index ad12e9b85..8ff7591e1 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_connection_service.py @@ -261,29 +261,29 @@ def test_list_schema_tables_unauthorized(connection1_serverless, api_context_2): def test_add_group_permissions( - connection3_admin, connection3_admin_permissions, group2, api_context_1, mock_redshift_data + connection3_admin, connection3_admin_permissions, invited_group_to_environment, api_context_1, mock_redshift_data ): - # Given an ADMIN connection and another group + # Given an ADMIN connection # When assert_that(connection3_admin_permissions.get('count', 0)).is_equal_to(2) groups = [g.groupUri for g in connection3_admin_permissions.get('nodes', [])] assert_that(groups).contains(connection3_admin.SamlGroupName) - assert_that(groups).contains(group2.groupUri) + assert_that(groups).contains(invited_group_to_environment.name) def test_add_group_permissions_unauthorized(connection3_admin, group2, api_context_2): # Given that an unauthorized user tries to add permissions to a connection # When/Then assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( - uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS - ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + uri=connection3_admin.connectionUri, group=group2.name, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ).contains('UnauthorizedOperation', 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) def test_add_group_permissions_non_admin_connection(connection2_cluster, group2, api_context_1, mock_redshift_data): # Given a DATA_USER connection and another group # When/Then assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( - uri=connection2_cluster.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + uri=connection2_cluster.connectionUri, group=group2.name, permissions=REDSHIFT_GRANTABLE_PERMISSIONS ).contains('InvalidInput', connection2_cluster.connectionType, 'Only ADMIN connections') @@ -292,18 +292,28 @@ def test_add_group_permissions_invalid_permissions(connection3_admin, group2, ap invalid_permissions = ['INVALID_PERMISSION'] # When/Then assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( - uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=invalid_permissions + uri=connection3_admin.connectionUri, group=group2.name, permissions=invalid_permissions ).contains('InvalidInput', invalid_permissions[0], 'grantable permissions') -def test_delete_group_permissions(connection3_admin, group2, api_context_1, mock_redshift_data): +def test_add_group_permissions_invalid_team(connection3_admin, group3, api_context_1): + # Given a Team that does not belong to environment, group3 + # When/Then + assert_that(RedshiftConnectionService.add_group_permissions).raises(Exception).when_called_with( + uri=connection3_admin.connectionUri, group=group3.name, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + ).contains('InvalidInput', group3.name, 'team invited') + + +def test_delete_group_permissions(connection3_admin, invited_group_to_environment, api_context_1, mock_redshift_data): # Given RedshiftConnectionService.add_group_permissions( - uri=connection3_admin.connectionUri, group=group2.groupUri, permissions=REDSHIFT_GRANTABLE_PERMISSIONS + uri=connection3_admin.connectionUri, + group=invited_group_to_environment.name, + permissions=REDSHIFT_GRANTABLE_PERMISSIONS, ) # When response = RedshiftConnectionService.delete_group_permissions( - uri=connection3_admin.connectionUri, group=group2.groupUri + uri=connection3_admin.connectionUri, group=invited_group_to_environment.name ) # Then assert_that(response).is_true() @@ -317,8 +327,8 @@ def test_delete_group_permissions(connection3_admin, group2, api_context_1, mock def test_delete_group_permissions_unauthorized(connection3_admin, connection3_admin_permissions, group2, api_context_2): # When/Then assert_that(RedshiftConnectionService.delete_group_permissions).raises(Exception).when_called_with( - uri=connection3_admin.connectionUri, group=group2.groupUri - ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + uri=connection3_admin.connectionUri, group=group2.name + ).contains('UnauthorizedOperation', 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) def test_delete_group_permissions_owner_team(connection3_admin, api_context_1): @@ -331,7 +341,7 @@ def test_delete_group_permissions_owner_team(connection3_admin, api_context_1): def test_delete_group_permissions_non_admin_connection(connection1_serverless, group2, api_context_1): # When/Then assert_that(RedshiftConnectionService.delete_group_permissions).raises(Exception).when_called_with( - uri=connection1_serverless.connectionUri, group=group2.groupUri + uri=connection1_serverless.connectionUri, group=group2.name ).contains('InvalidInput', connection1_serverless.connectionType, 'Only ADMIN connections') @@ -350,7 +360,7 @@ def test_list_connection_group_permissions_unauthorized(connection3_admin, api_c # When/Then assert_that(RedshiftConnectionService.list_connection_group_permissions).raises(Exception).when_called_with( uri=connection3_admin.connectionUri, filter={} - ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + ).contains('UnauthorizedOperation', 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) def test_list_connection_group_no_permissions( @@ -359,8 +369,8 @@ def test_list_connection_group_no_permissions( # Given group1=connection3_admin.SamlGroupName # group2 and group3 are part of the environment # group4 is not part of the environment - env_g2 = environment_group(env_fixture, group2.groupUri) - env_g3 = environment_group(env_fixture, group3.groupUri) + env_g2 = environment_group(env_fixture, group2.name) + env_g3 = environment_group(env_fixture, group3.name) # When response = RedshiftConnectionService.list_connection_group_no_permissions( @@ -368,14 +378,14 @@ def test_list_connection_group_no_permissions( ) # Then only group2 and group3 are part of the environment but do not have permissions assert_that(len(response)).is_equal_to(2) - assert_that(response).contains_only(group2.groupUri, group3.groupUri) + assert_that(response).contains_only(group2.name, group3.name) def test_list_connection_group_no_permissions_unauthorized(connection3_admin, api_context_2): # When/Then assert_that(RedshiftConnectionService.list_connection_group_no_permissions).raises(Exception).when_called_with( uri=connection3_admin.connectionUri, filter={} - ).contains('UnauthorizedOperation', 'MANAGE_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) + ).contains('UnauthorizedOperation', 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', connection3_admin.connectionUri) def test_list_connection_group_no_permissions_non_admin_connection(connection1_serverless, api_context_1): From 25dd41ac20744dccffc9ae6672176cb747929d83 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Mon, 14 Oct 2024 15:58:40 +0100 Subject: [PATCH 121/188] Metadata form versioning - 1 (#1637) ### Feature or Bugfix - Feature ### Detail - new db model - migration: -- create default version one -- backfill existing MF fields and attached MFs - when MF is created, service automatically create version 1 - fields and attached metadata forms automatically use the latest version (for now version === 1) ### Relates - #1621 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../metadata_forms/db/metadata_form_models.py | 31 ++++- .../db/metadata_form_repository.py | 35 ++++- .../services/metadata_form_service.py | 7 +- .../5a798acc6282_create_version_mf.py | 125 ++++++++++++++++++ 4 files changed, 193 insertions(+), 5 deletions(-) create mode 100644 backend/migrations/versions/5a798acc6282_create_version_mf.py diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py index 79bfde6f4..9d23aee6e 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_models.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_models.py @@ -17,17 +17,34 @@ class MetadataForm(Base): homeEntity = Column(String, nullable=True) +class MetadataFormVersion(Base): + __tablename__ = 'metadata_form_version' + metadataFormUri = Column(String, ForeignKey('metadata_form.uri'), nullable=False) + version = Column(Integer, nullable=False) + + __table_args__ = ( + PrimaryKeyConstraint('metadataFormUri', 'version'), + ForeignKeyConstraint( + ('metadataFormUri',), ('metadata_form.uri',), name='f_key_version_metadata', ondelete='CASCADE' + ), + ) + + class MetadataFormEnforcementRule(Base): __tablename__ = 'metadata_form_enforcement_rule' uri = Column(String, primary_key=True, default=utils.uuid('rule')) metadataFormUri = Column(String, ForeignKey('metadata_form.uri'), nullable=False) + version = Column(Integer, nullable=False) level = Column(String, nullable=False) # enum MetadataFormEnforcementScope entityTypes = Column(ARRAY(String), nullable=False) # enum MetadataFormEntityTypes severity = Column(String, nullable=False) # enum MetadataFormEnforcementSeverity __table_args__ = ( ForeignKeyConstraint( - ('metadataFormUri',), ('metadata_form.uri',), name='f_key_enforcement_metadata', ondelete='CASCADE' + ['metadataFormUri', 'version'], + ['metadata_form_version.metadataFormUri', 'metadata_form_version.version'], + name='f_key_enforcement_version_metadata', + ondelete='CASCADE', ), ) @@ -35,6 +52,7 @@ class MetadataFormEnforcementRule(Base): class MetadataFormField(Base): __tablename__ = 'metadata_form_field' metadataFormUri = Column(String) + version = Column(Integer, nullable=False) uri = Column(String, primary_key=True, default=utils.uuid('field')) displayNumber = Column(Integer, nullable=False) description = Column(String, nullable=True) @@ -46,7 +64,10 @@ class MetadataFormField(Base): __table_args__ = ( ForeignKeyConstraint( - ('metadataFormUri',), ('metadata_form.uri',), name='fk_mf_filed_form_uri', ondelete='CASCADE' + ['metadataFormUri', 'version'], + ['metadata_form_version.metadataFormUri', 'metadata_form_version.version'], + name='fk_version', + ondelete='CASCADE', ), ) @@ -54,13 +75,17 @@ class MetadataFormField(Base): class AttachedMetadataForm(Base): __tablename__ = 'attached_metadata_form' metadataFormUri = Column(String, nullable=False) + version = Column(Integer, nullable=False) uri = Column(String, primary_key=True, default=utils.uuid('attached_form')) entityUri = Column(String, nullable=False) entityType = Column(String, nullable=False) __table_args__ = ( ForeignKeyConstraint( - ('metadataFormUri',), ('metadata_form.uri',), name='fk_attached_mf_uri', ondelete='CASCADE' + ['metadataFormUri', 'version'], + ['metadata_form_version.metadataFormUri', 'metadata_form_version.version'], + name='fk_attached_mf_version_uri', + ondelete='CASCADE', ), ) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index 8dcf55f1b..a2581e166 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -1,5 +1,6 @@ from sqlalchemy import or_, and_ from sqlalchemy.orm import with_polymorphic +from sqlalchemy import func from dataall.modules.metadata_forms.db.enums import MetadataFormVisibility, MetadataFormFieldType from dataall.modules.metadata_forms.db.metadata_form_models import ( @@ -11,6 +12,7 @@ BooleanAttachedMetadataFormField, IntegerAttachedMetadataFormField, GlossaryTermAttachedMetadataFormField, + MetadataFormVersion, ) import json @@ -40,10 +42,39 @@ def create_metadata_form(session, data=None): session.commit() return mf + @staticmethod + def create_metadata_form_version(session, metadataFormUri, version_num): + version = MetadataFormVersion(metadataFormUri=metadataFormUri, version=version_num) + session.add(version) + session.commit() + return version + + @staticmethod + def create_metadata_form_version_next(session, metadataFormUri): + version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, metadataFormUri) + version = MetadataFormVersion(metadataFormUri=metadataFormUri, version=version_num + 1) + session.add(version) + session.commit() + return version + + @staticmethod + def get_metadata_form_version_number_latest(session, metadataFormUri): + return ( + session.query(func.max(MetadataFormVersion.version)) + .filter(MetadataFormVersion.metadataFormUri == metadataFormUri) + .scalar() + ) + + @staticmethod + def get_metadata_form_version_latest(session, metadataFormUri): + version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, metadataFormUri) + return session.query(MetadataFormVersion).get((metadataFormUri, version_num)) + @staticmethod def create_attached_metadata_form(session, uri, data=None): + version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) amf: AttachedMetadataForm = AttachedMetadataForm( - metadataFormUri=uri, entityUri=data.get('entityUri'), entityType=data.get('entityType') + metadataFormUri=uri, version=version_num, entityUri=data.get('entityUri'), entityType=data.get('entityType') ) session.add(amf) session.commit() @@ -175,8 +206,10 @@ def get_metadata_form_fields(session, form_uri): @staticmethod def create_metadata_form_field(session, uri, data): + version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) field: MetadataFormField = MetadataFormField( metadataFormUri=uri, + version=version_num, name=data.get('name'), description=data.get('description'), type=data.get('type'), diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index 5ac4af784..b38571c5a 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -115,7 +115,12 @@ def create_metadata_form(data): ) form = MetadataFormRepository.create_metadata_form(session, data) - return form + try: + MetadataFormRepository.create_metadata_form_version(session, form.uri, 1) + return form + except Exception as e: + session.delete(form) + raise e # toDo: add permission check @staticmethod diff --git a/backend/migrations/versions/5a798acc6282_create_version_mf.py b/backend/migrations/versions/5a798acc6282_create_version_mf.py new file mode 100644 index 000000000..2e1c49e18 --- /dev/null +++ b/backend/migrations/versions/5a798acc6282_create_version_mf.py @@ -0,0 +1,125 @@ +"""create_version_mf + +Revision ID: 5a798acc6282 +Revises: 075d344ae2cc +Create Date: 2024-10-10 17:25:09.687099 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy import orm + +from dataall.modules.metadata_forms.db.metadata_form_models import ( + MetadataForm, + MetadataFormVersion, + AttachedMetadataForm, + MetadataFormField, +) + +# revision identifiers, used by Alembic. +revision = '5a798acc6282' +down_revision = '075d344ae2cc' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + bind = op.get_bind() + session = orm.Session(bind=bind) + + op.create_table( + 'metadata_form_version', + sa.Column('metadataFormUri', sa.String(), nullable=False), + sa.Column('version', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint( + ['metadataFormUri'], ['metadata_form.uri'], name='f_key_version_metadata', ondelete='CASCADE' + ), + sa.PrimaryKeyConstraint('metadataFormUri', 'version'), + ) + for mf in session.query(MetadataForm).all(): + version = MetadataFormVersion(metadataFormUri=mf.uri, version=1) + session.add(version) + session.commit() + + op.add_column('attached_metadata_form', sa.Column('version', sa.Integer())) + for amf in session.query(AttachedMetadataForm).all(): + amf.version = 1 + session.commit() + op.alter_column('attached_metadata_form', 'version', nullable=False) + op.drop_constraint('fk_attached_mf_uri', 'attached_metadata_form', type_='foreignkey') + op.create_foreign_key( + 'fk_attached_mf_version_uri', + 'attached_metadata_form', + 'metadata_form_version', + ['metadataFormUri', 'version'], + ['metadataFormUri', 'version'], + ondelete='CASCADE', + ) + + op.add_column('metadata_form_enforcement_rule', sa.Column('version', sa.Integer(), nullable=False)) + op.create_foreign_key( + 'f_key_enforcement_version_metadata', + 'metadata_form_enforcement_rule', + 'metadata_form_version', + ['metadataFormUri', 'version'], + ['metadataFormUri', 'version'], + ondelete='CASCADE', + ) + op.drop_constraint('f_key_enforcement_metadata', 'metadata_form_enforcement_rule', type_='foreignkey') + + op.add_column('metadata_form_field', sa.Column('version', sa.Integer())) + for field in session.query(MetadataFormField).all(): + field.version = 1 + session.commit() + op.alter_column('metadata_form_field', 'version', nullable=False) + op.drop_constraint('fk_mf_filed_form_uri', 'metadata_form_field', type_='foreignkey') + op.create_foreign_key( + 'fk_version', + 'metadata_form_field', + 'metadata_form_version', + ['metadataFormUri', 'version'], + ['metadataFormUri', 'version'], + ondelete='CASCADE', + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('fk_version', 'metadata_form_field', type_='foreignkey') + op.drop_column('metadata_form_field', 'version') + op.drop_constraint('f_key_enforcement_version_metadata', 'metadata_form_enforcement_rule', type_='foreignkey') + op.drop_column('metadata_form_enforcement_rule', 'version') + op.drop_constraint('fk_attached_mf_version_uri', 'attached_metadata_form', type_='foreignkey') + op.drop_column('attached_metadata_form', 'version') + op.drop_table('metadata_form_version') + + op.create_foreign_key( + 'fk_mf_filed_form_uri', + 'metadata_form_field', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + + op.create_foreign_key( + 'f_key_enforcement_metadata', + 'metadata_form_enforcement_rule', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + + op.create_foreign_key( + 'fk_attached_mf_uri', + 'attached_metadata_form', + 'metadata_form', + ['metadataFormUri'], + ['uri'], + ondelete='CASCADE', + ) + # ### end Alembic commands ### From 8dfd9ba285bf5452d7944ea846f431c58c4fe2e9 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 15 Oct 2024 16:14:59 +0200 Subject: [PATCH 122/188] Integration tests executed on a real deployment as part of the CICD - Redshift Connections (#1628) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ NEEDS SOME CHANGES AFTER #1638 is merged ### Feature or Bugfix - Feature: Testing ### Detail Add integration tests for Redshift connections It also includes the global conftest fixtures that will be used for redshift-datasets and redshift dataset sharing At the moment it assumes Redshift infrastructure is already provided; we might want to implement the deployment of this pre-required infra, but that can be done on a separate PR. +++ Additional fixes found during testing and fixed in this PR - Fixed Pivot role permissions in CDK when no workgroups are defined (it handled None wrong) - Add update environment stack on Connection delete to ensure permissions to pivot role are removed ### Testing - Fixes deployed in CICD pipeline in AWS - Tests executed locally (in this case we can be sure it will work as in AWS as there are no AWS Clients, just API calls) ![image](https://github.com/user-attachments/assets/4968ec38-48c1-4314-b9b3-32992c692eb6) ### Relates - #1619 - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/redshift_datasets/aws/redshift.py | 9 +- .../cdk/pivot_role_redshift_policy.py | 6 +- .../db/redshift_connection_repositories.py | 2 - .../services/redshift_connection_service.py | 1 + tests_new/integration_tests/README.md | 80 +++- tests_new/integration_tests/conftest.py | 11 + .../core/environment/global_conftest.py | 3 +- .../redshift_datasets/connection_queries.py | 226 +++++++++++ .../redshift_datasets/dataset_queries.py | 346 ++++++++++++++++ .../redshift_datasets/global_conftest.py | 142 +++++++ .../test_redshift_connection.py | 372 ++++++++++++++++++ 11 files changed, 1182 insertions(+), 16 deletions(-) create mode 100644 tests_new/integration_tests/modules/redshift_datasets/connection_queries.py create mode 100644 tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py create mode 100644 tests_new/integration_tests/modules/redshift_datasets/global_conftest.py create mode 100644 tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py diff --git a/backend/dataall/modules/redshift_datasets/aws/redshift.py b/backend/dataall/modules/redshift_datasets/aws/redshift.py index 7a6c808cf..f523fe477 100644 --- a/backend/dataall/modules/redshift_datasets/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets/aws/redshift.py @@ -14,7 +14,14 @@ def __init__(self, account_id: str, region: str) -> None: def describe_cluster(self, clusterId: str): log.info(f'Describing cluster {clusterId=}') - return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0] + try: + return self.client.describe_clusters(ClusterIdentifier=clusterId)['Clusters'][0] + except ClientError as e: + if e.response['Error']['Code'] == 'ClusterNotFound': + log.error(f'Redshift cluster {clusterId} does not exist') + return None + else: + raise e def get_cluster_namespaceId(self, clusterId: str): log.info(f'Describing cluster {clusterId=}') diff --git a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py index 8eb7c7712..66c52b89c 100644 --- a/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py +++ b/backend/dataall/modules/redshift_datasets/cdk/pivot_role_redshift_policy.py @@ -76,12 +76,10 @@ def get_statements(self): cluster_arns = [ f'arn:aws:redshift:{self.region}:{self.account}:cluster:{conn.clusterId}' for conn in connections - if conn.clusterId != '' + if conn.clusterId ] workgroup_arns = [ - rs_client.get_workgroup_arn(workgroup_name=conn.workgroup) - for conn in connections - if conn.workgroup != '' + rs_client.get_workgroup_arn(workgroup_name=conn.workgroup) for conn in connections if conn.workgroup ] additional_statements.extend( split_policy_with_resources_in_statements( diff --git a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py index 110d6e0ef..37751d7f2 100644 --- a/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py +++ b/backend/dataall/modules/redshift_datasets/db/redshift_connection_repositories.py @@ -128,8 +128,6 @@ def _query_redshift_connection_group_permissions(session, connection_uri, permis .group_by(ResourcePolicy.principalId) ) - if filter and filter.get('groupUri'): - query = query.filter(ResourcePolicy.principalId == filter.get('groupUri')) if filter and filter.get('term'): query = query.filter( ResourcePolicy.principalId.ilike(filter.get('term') + '%%'), diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py index 874dd106c..10d1b3711 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_connection_service.py @@ -113,6 +113,7 @@ def delete_redshift_connection(uri) -> bool: ) session.delete(connection) session.commit() + StackService.deploy_stack(targetUri=connection.environmentUri) return True @staticmethod diff --git a/tests_new/integration_tests/README.md b/tests_new/integration_tests/README.md index 6e21b25b5..63493bc16 100644 --- a/tests_new/integration_tests/README.md +++ b/tests_new/integration_tests/README.md @@ -55,7 +55,7 @@ Currently **we support only Cognito based deployments** but support for any IdP ] } }, - "envs": { + "envs": { "session_env1": { "accountId": "...", "region": "eu-central-1" @@ -64,24 +64,88 @@ Currently **we support only Cognito based deployments** but support for any IdP "accountId": "...", "region": "eu-west-1" }, - "persistent_env1": { - "accountId": "...", - "region": "us-east-1" - }, + "persistent_env1": { + "accountId": "...", + "region": "us-east-1" + }, + "persistent_cross_acc_env_1": { + "accountId": "...", + "region": "us-east-1" + }, "session_cross_acc_env_1": { - "accountId": "another acc", - "region": "same as session_env1" - }, + "accountId": "...", + "region": "eu-central-1" + } }, "dashboards": { "session_env1": { "dashboardId": "..." }, + }, + "redshift_connections": { + "connection_serverless_admin_session_env1": { + "namespace_id": "...", + "workgroup": "...", + "secret_arn": "..." + }, + "connection_serverless_data_user_session_env1": { + "namespace_id": "...", + "workgroup": "...", + "secret_arn": "..." + }, + "connection_cluster_admin_session_cross_acc_env_1": { + "cluster_id": "...", + "secret_arn": "..." + }, + "connection_cluster_data_user_session_cross_acc_env_1": { + "cluster_id": "...", + "secret_arn": "..." } + } } ``` - The pipeline will create the users/groups +- For Redshift testing we require some pre-existing infrastructure: + - One Redshift serverless namespace+workgroup deployed in `session_env1` and one Redshift provisioned cluster in `session_cross_acc_env_1` + - The provisioned cluster MUST be encrypted and use RA3 cluster type (Check the [docs](https://docs.aws.amazon.com/redshift/latest/dg/datashare-overview.html) for other data sharing limitations) + - Both clusters must host the default `dev` database with the `public` schema. + - For each we need to ensure that the admin credentials are stored in Secrets Manager. The secrets MUST be tagged with the tag {key:dataall, value:True}. If you are going to use the Redshift Query Editor, then you will also need the tag {key:Redshift, value:any} + - For each we need to create a Redshift user (see SQL commands below) and store the credentials in Secrets Manager. The secrets MUST be tagged with the tag {key:dataall, value:True}. If you are going to use the Redshift Query Editor, then you will also need the tag {key:Redshift, value:any} + - For each we need to create a set of tables using the commands below + - For each we need to create a Redshift role as in the commands below + +Create User and grant basic permissions using admin connection +```sql +CREATE USER testuser PASSWORD 'Pass1Word!'; +GRANT USAGE ON SCHEMA public TO testuser; +GRANT SELECT ON ALL TABLES IN SCHEMA public TO testuser; +``` + +Create and attach role using admin connection +```sql +CREATE ROLE testrole; +GRANT ROLE testrole TO testuser; +``` + +Create tables using testuser connection +```sql +DROP TABLE IF EXISTS nation; +DROP TABLE IF EXISTS region; + +CREATE TABLE region ( + R_REGIONKEY bigint NOT NULL, + R_NAME varchar(25), + R_COMMENT varchar(152)) +diststyle all; + +CREATE TABLE nation ( + N_NATIONKEY bigint NOT NULL, + N_NAME varchar(25), + N_REGIONKEY bigint, + N_COMMENT varchar(152)) +diststyle all; +``` ### Dashboard Tests Pre-Requisities diff --git a/tests_new/integration_tests/conftest.py b/tests_new/integration_tests/conftest.py index 89464e029..fa7f78e8e 100644 --- a/tests_new/integration_tests/conftest.py +++ b/tests_new/integration_tests/conftest.py @@ -16,6 +16,7 @@ 'integration_tests.core.organizations.global_conftest', 'integration_tests.core.environment.global_conftest', 'integration_tests.modules.s3_datasets.global_conftest', + 'integration_tests.modules.redshift_datasets.global_conftest', ] @@ -39,12 +40,22 @@ class Dashboard: dashboardId: str +@dataclass_json +@dataclass +class RedshiftConnection: + secret_arn: str + namespace_id: str = None + workgroup: str = None + cluster_id: str = None + + @dataclass_json @dataclass class TestData: users: dict[str, User] envs: dict[str, Env] dashboards: dict[str, Dashboard] + redshift_connections: dict[str, RedshiftConnection] @pytest.fixture(scope='session', autouse=True) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index b8f32ceec..348c1b794 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -44,13 +44,14 @@ def delete_env(client, env): @pytest.fixture(scope='session') -def session_env1(client1, group1, org1, session_id, testdata): +def session_env1(client1, group1, group5, org1, session_id, testdata): envdata = testdata.envs['session_env1'] env = None try: env = create_env( client1, 'session_env1', group1, org1.organizationUri, envdata.accountId, envdata.region, tags=[session_id] ) + invite_group_on_env(client1, env.environmentUri, group5, ['CREATE_DATASET']) yield env finally: if env: diff --git a/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py b/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py new file mode 100644 index 000000000..5b5e3ea0c --- /dev/null +++ b/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py @@ -0,0 +1,226 @@ +# TODO: This file will be replaced by using the SDK directly + + +def list_environment_redshift_connections(client, term='', environment_uri=None, group_uri=None, connection_type=None): + query = { + 'operationName': 'listEnvironmentRedshiftConnections', + 'variables': { + 'filter': { + 'term': term, + 'environmentUri': environment_uri, + 'groupUri': group_uri, + 'connectionType': connection_type, + } + }, + 'query': """ + query listEnvironmentRedshiftConnections($filter: ConnectionFilter) { + listEnvironmentRedshiftConnections(filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + name + connectionUri + SamlGroupName + redshiftType + clusterId + nameSpaceId + workgroup + database + redshiftUser + secretArn + connectionType + } + } + } + """, + } + response = client.query(query=query) + return response.data.listEnvironmentRedshiftConnections + + +def list_redshift_connection_schemas(client, connection_uri): + query = { + 'operationName': 'listRedshiftConnectionSchemas', + 'variables': {'connectionUri': connection_uri}, + 'query': """ + query listRedshiftConnectionSchemas($connectionUri: String!) { + listRedshiftConnectionSchemas(connectionUri: $connectionUri) + } + """, + } + response = client.query(query=query) + return response.data.listRedshiftConnectionSchemas + + +def list_redshift_schema_tables(client, connection_uri, schema): + query = { + 'operationName': 'listRedshiftSchemaTables', + 'variables': {'connectionUri': connection_uri, 'schema': schema}, + 'query': """ + query listRedshiftSchemaTables($connectionUri: String!, $schema: String!) { + listRedshiftSchemaTables(connectionUri: $connectionUri, schema: $schema) { + name + type + } + } + """, + } + response = client.query(query=query) + return response.data.listRedshiftSchemaTables + + +def list_redshift_connection_group_permissions(client, connection_uri, filter={}): + query = { + 'operationName': 'listConnectionGroupPermissions', + 'variables': {'connectionUri': connection_uri, 'filter': filter}, + 'query': """ + query listConnectionGroupPermissions( + $filter: GroupFilter + $connectionUri: String! + ) { + listConnectionGroupPermissions( + connectionUri: $connectionUri + filter: $filter + ) { + count + page + pages + hasNext + hasPrevious + nodes { + groupUri + permissions { + name + description + } + } + } + } + """, + } + response = client.query(query=query) + return response.data.listConnectionGroupPermissions + + +def list_redshift_connection_group_no_permissions(client, connection_uri, term=''): + query = { + 'operationName': 'listConnectionGroupNoPermissions', + 'variables': {'connectionUri': connection_uri, 'filter': {'term': term}}, + 'query': """ + query listConnectionGroupNoPermissions( + $filter: GroupFilter + $connectionUri: String! + ) { + listConnectionGroupNoPermissions( + connectionUri: $connectionUri + filter: $filter + ) + } + """, + } + response = client.query(query=query) + return response.data.listConnectionGroupNoPermissions + + +def create_redshift_connection( + client, + connection_name, + environment_uri, + group_uri, + redshift_type, + database, + connection_type, + cluster_id=None, + namespace_id=None, + workgroup=None, + redshift_user=None, + secret_arn=None, +): + query = { + 'operationName': 'createRedshiftConnection', + 'variables': { + 'input': { + 'connectionName': connection_name, + 'connectionType': connection_type, + 'environmentUri': environment_uri, + 'SamlGroupName': group_uri, + 'redshiftType': redshift_type, + 'clusterId': cluster_id, + 'nameSpaceId': namespace_id, + 'workgroup': workgroup, + 'database': database, + 'redshiftUser': redshift_user, + 'secretArn': secret_arn, + } + }, + 'query': """ + mutation createRedshiftConnection($input: CreateRedshiftConnectionInput) { + createRedshiftConnection(input: $input) { + connectionUri + connectionType + redshiftType + } + } + """, + } + response = client.query(query=query) + return response.data.createRedshiftConnection + + +def delete_redshift_connection(client, connection_uri): + query = { + 'operationName': 'deleteRedshiftConnection', + 'variables': {'connectionUri': connection_uri}, + 'query': """ + mutation deleteRedshiftConnection($connectionUri: String!) { + deleteRedshiftConnection(connectionUri: $connectionUri) + } + """, + } + response = client.query(query=query) + return response.data.deleteRedshiftConnection + + +def add_redshift_connection_group_permissions(client, connection_uri, group_uri, permissions): + query = { + 'operationName': 'addConnectionGroupPermission', + 'variables': {'connectionUri': connection_uri, 'groupUri': group_uri, 'permissions': permissions}, + 'query': """ + mutation addConnectionGroupPermission( + $connectionUri: String! + $groupUri: String! + $permissions: [String]! + ) { + addConnectionGroupPermission( + connectionUri: $connectionUri + groupUri: $groupUri + permissions: $permissions + ) + } + """, + } + response = client.query(query=query) + return response.data.addConnectionGroupPermission + + +def delete_redshift_connection_group_permissions(client, connection_uri, group_uri): + query = { + 'operationName': 'deleteConnectionGroupPermission', + 'variables': {'connectionUri': connection_uri, 'groupUri': group_uri}, + 'query': """ + mutation deleteConnectionGroupPermission( + $connectionUri: String! + $groupUri: String! + ) { + deleteConnectionGroupPermission( + connectionUri: $connectionUri + groupUri: $groupUri + ) + } + """, + } + response = client.query(query=query) + return response.data.deleteConnectionGroupPermission diff --git a/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py new file mode 100644 index 000000000..a96d90b2f --- /dev/null +++ b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py @@ -0,0 +1,346 @@ +# TODO: This file will be replaced by using the SDK directly + + +def get_redshift_dataset(client, dataset_uri): + query = { + 'operationName': 'getRedshiftDataset', + 'variables': {'datasetUri': dataset_uri}, + 'query': """ + query getRedshiftDataset($datasetUri: String!) { + getRedshiftDataset(datasetUri: $datasetUri) { + datasetUri + owner + description + label + name + region + created + imported + userRoleForDataset + SamlAdminGroupName + AwsAccountId + tags + stewards + topics + confidentiality + autoApprovalEnabled + organization { + organizationUri + label + } + terms { + count + nodes { + __typename + ... on Term { + nodeUri + path + label + } + } + } + environment { + environmentUri + label + region + organization { + organizationUri + label + } + } + upvotes + connection { + connectionUri + label + redshiftType + clusterId + nameSpaceId + workgroup + redshiftUser + secretArn + database + } + schema + } + } + """, + } + response = client.query(query=query) + return response.data.getRedshiftDataset + + +def list_redshift_dataset_tables(client, dataset_uri, term=''): + query = { + 'operationName': 'listRedshiftDatasetTables', + 'variables': { + 'datasetUri': dataset_uri, + 'filter': {'term': term}, + }, + 'query': """ + query listRedshiftDatasetTables( + $datasetUri: String! + $filter: RedshiftDatasetTableFilter + ) { + listRedshiftDatasetTables(datasetUri: $datasetUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + rsTableUri + datasetUri + name + label + created + description + } + } + } + """, + } + response = client.query(query=query) + return response.data.listRedshiftDatasetTables + + +def get_redshift_dataset_table(client, rs_table_uri): + query = { + 'operationName': 'getRedshiftDatasetTable', + 'variables': {'rsTableUri': rs_table_uri}, + 'query': """ + query getRedshiftDatasetTable($rsTableUri: String!) { + getRedshiftDatasetTable(rsTableUri: $rsTableUri) { + rsTableUri + name + label + created + description + tags + terms { + count + nodes { + __typename + ... on Term { + nodeUri + path + label + } + } + } + dataset { + owner + SamlAdminGroupName + datasetUri + name + label + userRoleForDataset + organization { + label + } + environment { + label + } + region + } + } + } + """, + } + response = client.query(query=query) + return response.data.getRedshiftDatasetTable + + +def get_redshift_dataset_table_columns(client, rs_table_uri, term=''): + query = { + 'operationName': 'getRedshiftDatasetTableColumns', + 'variables': { + 'rsTableUri': rs_table_uri, + 'filter': {'term': term}, + }, + 'query': """ + query getRedshiftDatasetTableColumns( + $rsTableUri: String! + $filter: RedshiftDatasetTableFilter + ) { + getRedshiftDatasetTableColumns(rsTableUri: $rsTableUri, filter: $filter) { + count + page + pages + hasNext + hasPrevious + nodes { + columnDefault + label + length + name + nullable + typeName + } + } + } + """, + } + response = client.query(query=query) + return response.data.getRedshiftDatasetTableColumns + + +def list_redshift_schema_dataset_tables(client, dataset_uri): + query = { + 'operationName': 'listRedshiftSchemaDatasetTables', + 'variables': {'datasetUri': dataset_uri}, + 'query': """ + query listRedshiftSchemaDatasetTables($datasetUri: String!) { + listRedshiftSchemaDatasetTables(datasetUri: $datasetUri) { + name + type + alreadyAdded + } + } + """, + } + response = client.query(query=query) + return response.data.listRedshiftSchemaDatasetTables + + +def import_redshift_dataset( + client, + label, + org_uri, + env_uri, + description, + tags, + owner, + topics, + group_uri, + confidentiality, + auto_approval_enabled, + connection_uri, + schema, + tables, +): + mutation = { + 'operationName': 'importRedshiftDataset', + 'variables': { + 'input': { + 'label': label, + 'organizationUri': org_uri, + 'environmentUri': env_uri, + 'description': description, + 'tags': tags, + 'owner': owner, + 'topics': topics, + 'SamlAdminGroupName': group_uri, + 'confidentiality': confidentiality, + 'autoApprovalEnabled': auto_approval_enabled, + 'connectionUri': connection_uri, + 'schema': schema, + 'tables': tables, + } + }, + 'query': """ + mutation importRedshiftDataset($input: ImportRedshiftDatasetInput) { + importRedshiftDataset(input: $input) { + datasetUri + label + userRoleForDataset + } + } + """, + } + response = client.query(mutation=mutation) + return response.data.importRedshiftDataset + + +def update_redshift_dataset(client, dataset_uri, description): + mutation = { + 'operationName': 'updateRedshiftDataset', + 'variables': { + 'datasetUri': dataset_uri, + 'input': {'description': description}, + }, + 'query': """ + mutation updateRedshiftDataset( + $datasetUri: String! + $input: ModifyRedshiftDatasetInput + ) { + updateRedshiftDataset(datasetUri: $datasetUri, input: $input) { + datasetUri + label + userRoleForDataset + } + } + """, + } + response = client.query(mutation=mutation) + return response.data.updateRedshiftDataset + + +def delete_redshift_dataset(client, dataset_uri): + mutation = { + 'operationName': 'deleteRedshiftDataset', + 'variables': {'datasetUri': dataset_uri}, + 'query': """ + mutation deleteRedshiftDataset($datasetUri: String!) { + deleteRedshiftDataset(datasetUri: $datasetUri) + } + """, + } + response = client.query(mutation=mutation) + return response.data.deleteRedshiftDataset + + +def add_redshift_dataset_tables(client, dataset_uri, tables): + mutation = { + 'operationName': 'addRedshiftDatasetTables', + 'variables': { + 'datasetUri': dataset_uri, + 'tables': tables, + }, + 'query': """ + mutation addRedshiftDatasetTables( + $datasetUri: String! + $tables: [String]! + ) { + addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) + } + """, + } + response = client.query(mutation=mutation) + return response.data.addRedshiftDatasetTables + + +def delete_redshift_dataset_table(client, rs_table_uri): + mutation = { + 'operationName': 'deleteRedshiftDatasetTable', + 'variables': {'rsTableUri': rs_table_uri}, + 'query': """ + mutation deleteRedshiftDatasetTable($rsTableUri: String!) { + deleteRedshiftDatasetTable(rsTableUri: $rsTableUri) + } + """, + } + response = client.query(mutation=mutation) + return response.data.deleteRedshiftDatasetTable + + +def update_redshift_dataset_table(client, rs_table_uri, description): + mutation = { + 'operationName': 'updateRedshiftDatasetTable', + 'variables': { + 'rsTableUri': rs_table_uri, + 'input': {'description': description}, + }, + 'query': """ + mutation updateRedshiftDatasetTable( + $rsTableUri: String! + $input: ModifyRedshiftDatasetInput + ) { + updateRedshiftDatasetTable(rsTableUri: $rsTableUri, input: $input) { + rsTableUri + label + } + } + """, + } + response = client.query(mutation=mutation) + return response.data.updateRedshiftDatasetTable diff --git a/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py new file mode 100644 index 000000000..9532be262 --- /dev/null +++ b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py @@ -0,0 +1,142 @@ +import logging + +import pytest +from integration_tests.core.stack.utils import check_stack_ready +from integration_tests.conftest import RedshiftConnection +from integration_tests.modules.redshift_datasets.connection_queries import ( + create_redshift_connection, + delete_redshift_connection, + add_redshift_connection_group_permissions, + delete_redshift_connection_group_permissions, +) + +log = logging.getLogger(__name__) + +REDSHIFT_DATABASE = 'dev' +REDSHIFT_SCHEMA = 'public' + + +def create_connection(client, env, group, name, conn_type, red_type, connection_data=RedshiftConnection): + connection = create_redshift_connection( + client=client, + connection_name=name, + connection_type=conn_type, + environment_uri=env.environmentUri, + group_uri=group, + redshift_type=red_type, + cluster_id=connection_data.cluster_id, + namespace_id=connection_data.namespace_id, + workgroup=connection_data.workgroup, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ) + check_stack_ready( + client=client, + env_uri=env.environmentUri, + stack_uri=env.stack.stackUri, + target_uri=env.environmentUri, + target_type='environment', + ) + return connection + + +""" +- Serverless namespace is deployed in session_env1 account +- Provisioned cluster is deployed in session_cross_acc_env_1 +""" + + +@pytest.fixture(scope='session') +def session_connection_serverless_admin(client1, group1, session_env1, testdata): + connection = None + try: + connection = create_connection( + client=client1, + name='connection_serverless_admin_session_env1', + conn_type='ADMIN', + env=session_env1, + group=group1, + red_type='serverless', + connection_data=testdata.redshift_connections['connection_serverless_admin_session_env1'], + ) + + yield connection + finally: + if connection: + delete_redshift_connection(client=client1, connection_uri=connection.connectionUri) + + +@pytest.fixture(scope='session') +def session_connection_serverless_admin_group_with_permissions(client1, group5, session_connection_serverless_admin): + permissions = None + try: + permissions = add_redshift_connection_group_permissions( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group5, + permissions=['CREATE_SHARE_REQUEST_WITH_CONNECTION'], + ) + yield group5 + finally: + if permissions: + delete_redshift_connection_group_permissions( + client=client1, connection_uri=session_connection_serverless_admin.connectionUri, group_uri=group5 + ) + + +@pytest.fixture(scope='session') +def session_connection_serverless_data_user(client1, group1, session_env1, testdata): + connection = None + try: + connection = create_connection( + client=client1, + name='connection_serverless_data_user_session_env1', + conn_type='DATA_USER', + env=session_env1, + group=group1, + red_type='serverless', + connection_data=testdata.redshift_connections['connection_serverless_data_user_session_env1'], + ) + yield connection + finally: + if connection: + delete_redshift_connection(client=client1, connection_uri=connection.connectionUri) + + +@pytest.fixture(scope='session') +def session_connection_cluster_admin(client5, group5, session_cross_acc_env_1, testdata): + connection = None + try: + connection = create_connection( + client=client5, + name='connection_cluster_admin_session_cross_acc_env_1', + conn_type='ADMIN', + env=session_cross_acc_env_1, + group=group5, + red_type='cluster', + connection_data=testdata.redshift_connections['connection_cluster_admin_session_cross_acc_env_1'], + ) + yield connection + finally: + if connection: + delete_redshift_connection(client=client5, connection_uri=connection.connectionUri) + + +@pytest.fixture(scope='session') +def session_connection_cluster_data_user(client5, group5, session_cross_acc_env_1, testdata): + connection = None + try: + connection = create_connection( + client=client5, + name='connection_cluster_data_user_session_cross_acc_env_1', + conn_type='DATA_USER', + env=session_cross_acc_env_1, + group=group5, + red_type='cluster', + connection_data=testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'], + ) + yield connection + finally: + if connection: + delete_redshift_connection(client=client5, connection_uri=connection.connectionUri) diff --git a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py new file mode 100644 index 000000000..41b218487 --- /dev/null +++ b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py @@ -0,0 +1,372 @@ +from assertpy import assert_that +import pytest + +from integration_tests.errors import GqlError +from integration_tests.modules.redshift_datasets.connection_queries import ( + create_redshift_connection, + delete_redshift_connection, + add_redshift_connection_group_permissions, + delete_redshift_connection_group_permissions, + list_environment_redshift_connections, + list_redshift_connection_schemas, + list_redshift_schema_tables, + list_redshift_connection_group_permissions, + list_redshift_connection_group_no_permissions, +) +from integration_tests.modules.redshift_datasets.global_conftest import REDSHIFT_DATABASE, REDSHIFT_SCHEMA + + +@pytest.mark.parametrize( + 'connection_fixture_name, connection_type, redshift_type', + [ + ('session_connection_serverless_data_user', 'DATA_USER', 'serverless'), + ('session_connection_cluster_data_user', 'DATA_USER', 'cluster'), + ('session_connection_serverless_admin', 'ADMIN', 'serverless'), + ('session_connection_cluster_admin', 'ADMIN', 'cluster'), + ], +) +def test_create_connection(connection_fixture_name, connection_type, redshift_type, request): + connection = request.getfixturevalue(connection_fixture_name) + assert_that(connection.connectionUri).is_not_none() + assert_that(connection.connectionType).is_equal_to(connection_type) + assert_that(connection.redshiftType).is_equal_to(redshift_type) + + +def test_create_serverless_connection_namespace_does_not_exist(client1, group1, session_env1, testdata): + connection_data = testdata.redshift_connections['connection_serverless_data_user_session_env1'] + error_namespace_id = 'doesnotexist' + assert_that(create_redshift_connection).raises(GqlError).when_called_with( + client=client1, + connection_name='errorConnection', + environment_uri=session_env1.environmentUri, + group_uri=group1, + redshift_type='serverless', + connection_type='DATA_USER', + namespace_id=error_namespace_id, + workgroup=connection_data.workgroup, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ).contains('Redshift namespaceId', error_namespace_id, 'not exist') + + +def test_create_serverless_connection_workgroup_not_found(client1, group1, session_env1, testdata): + connection_data = testdata.redshift_connections['connection_serverless_data_user_session_env1'] + error_workgroup = 'doesnotexist' + assert_that(create_redshift_connection).raises(GqlError).when_called_with( + client=client1, + connection_name='errorConnection', + environment_uri=session_env1.environmentUri, + group_uri=group1, + redshift_type='serverless', + connection_type='DATA_USER', + namespace_id=connection_data.namespace_id, + workgroup=error_workgroup, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ).contains('Redshift workgroup', error_workgroup, 'not exist') + + +def test_create_cluster_connection_cluster_not_found(client5, group5, session_cross_acc_env_1, testdata): + connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] + error_cluster_id = 'doesnotexist' + assert_that(create_redshift_connection).raises(GqlError).when_called_with( + client=client5, + connection_name='errorConnection', + environment_uri=session_cross_acc_env_1.environmentUri, + group_uri=group5, + redshift_type='cluster', + connection_type='DATA_USER', + cluster_id=error_cluster_id, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ).contains('Redshift cluster', error_cluster_id, 'not exist') + + +def test_create_cluster_connection_cluster_not_encrypted(): + # TODO: we need to decide if we want to create an extra cluster that is not encrypted + pass + + +def test_create_connection_database_not_found(client5, group5, session_cross_acc_env_1, testdata): + connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] + error_database = 'doesnotexist' + assert_that(create_redshift_connection).raises(GqlError).when_called_with( + client=client5, + connection_name='errorConnection', + environment_uri=session_cross_acc_env_1.environmentUri, + group_uri=group5, + redshift_type='cluster', + connection_type='DATA_USER', + cluster_id=connection_data.cluster_id, + database=error_database, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ).contains('Redshift database', error_database, 'not exist') + + +def test_create_connection_unauthorized(client1, group1, session_cross_acc_env_1, testdata): + connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] + assert_that(create_redshift_connection).raises(GqlError).when_called_with( + client=client1, + connection_name='errorConnection', + environment_uri=session_cross_acc_env_1.environmentUri, + group_uri=group1, + redshift_type='cluster', + connection_type='DATA_USER', + cluster_id=connection_data.cluster_id, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ).contains('UnauthorizedOperation', 'CREATE_REDSHIFT_CONNECTION', session_cross_acc_env_1.environmentUri) + + +def test_delete_connection(client5, group5, session_cross_acc_env_1, testdata): + connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] + connection = create_redshift_connection( + client=client5, + connection_name='errorConnection', + environment_uri=session_cross_acc_env_1.environmentUri, + group_uri=group5, + redshift_type='cluster', + connection_type='DATA_USER', + cluster_id=connection_data.cluster_id, + database=REDSHIFT_DATABASE, + redshift_user=None, + secret_arn=connection_data.secret_arn, + ) + response = delete_redshift_connection( + client=client5, + connection_uri=connection.connectionUri, + ) + assert_that(response).is_true() + + +def test_delete_connection_unauthorized(client2, session_connection_serverless_admin): + assert_that(delete_redshift_connection).raises(GqlError).when_called_with( + client=client2, + connection_uri=session_connection_serverless_admin.connectionUri, + ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_CONNECTION', session_connection_serverless_admin.connectionUri) + + +def test_add_connection_group_permissions(client1, group5, session_connection_serverless_admin_group_with_permissions): + assert_that(session_connection_serverless_admin_group_with_permissions).is_equal_to(group5) + + +def test_add_connection_group_permissions_unauthorized(client2, group5, session_connection_serverless_admin): + assert_that(add_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client2, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group5, + permissions=['CREATE_SHARE_REQUEST_WITH_CONNECTION'], + ).contains( + 'UnauthorizedOperation', + 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', + session_connection_serverless_admin.connectionUri, + ) + + +def test_add_connection_group_permissions_invalid_connection_type( + client1, group5, session_connection_serverless_data_user +): + assert_that(add_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client1, + connection_uri=session_connection_serverless_data_user.connectionUri, + group_uri=group5, + permissions=['CREATE_SHARE_REQUEST_WITH_CONNECTION'], + ).contains('InvalidInput', 'ConnectionType', session_connection_serverless_data_user.connectionType) + + +def test_add_connection_group_permissions_invalid_permissions(client1, group5, session_connection_serverless_admin): + assert_that(add_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group5, + permissions=['INVALID_PERMISSION'], + ).contains('InvalidInput', 'INVALID_PERMISSION', 'Permissions') + + +def test_add_connection_group_permissions_invalid_group(client1, group3, session_connection_serverless_admin): + assert_that(add_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group3, + permissions=['CREATE_SHARE_REQUEST_WITH_CONNECTION'], + ).contains('InvalidInput', group3, 'Team') + + +def test_delete_connection_group_permissions(client1, group5, session_connection_serverless_admin): + response = delete_redshift_connection_group_permissions( + client=client1, connection_uri=session_connection_serverless_admin.connectionUri, group_uri=group5 + ) + assert_that(response).is_true() + # Revert changes + response = add_redshift_connection_group_permissions( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group5, + permissions=['CREATE_SHARE_REQUEST_WITH_CONNECTION'], + ) + assert_that(response).is_true() + + +def test_delete_connection_group_permissions_unauthorized(client2, group3, session_connection_serverless_admin): + assert_that(delete_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client2, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group3, + ).contains( + 'UnauthorizedOperation', + 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', + session_connection_serverless_admin.connectionUri, + ) + + +def test_delete_connection_group_permissions_invalid_connection_type( + client1, group3, session_connection_serverless_data_user +): + assert_that(delete_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client1, + connection_uri=session_connection_serverless_data_user.connectionUri, + group_uri=group3, + ).contains('InvalidInput', 'ConnectionType', session_connection_serverless_data_user.connectionType) + + +def test_delete_connection_group_permissions_invalid_group(client1, group1, session_connection_serverless_admin): + assert_that(delete_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + group_uri=group1, + ).contains('InvalidInput', 'Team', group1, 'EXCEPT the connection owners') + + +def test_list_redshift_environment_connections( + client1, group1, session_env1, session_connection_serverless_admin, session_connection_serverless_data_user +): + response = list_environment_redshift_connections( + client=client1, + environment_uri=session_env1.environmentUri, + group_uri=group1, + ) + assert_that(response.count).is_equal_to(2) + assert_that(response.nodes).extracting('connectionUri').contains( + session_connection_serverless_admin.connectionUri, session_connection_serverless_data_user.connectionUri + ) + response = list_environment_redshift_connections( + client=client1, + environment_uri=session_env1.environmentUri, + group_uri=group1, + connection_type='DATA_USER', + ) + assert_that(response.count).is_equal_to(1) + assert_that(response.nodes).extracting('connectionUri').contains( + session_connection_serverless_data_user.connectionUri + ) + assert_that(response.nodes).extracting('connectionUri').does_not_contain( + session_connection_serverless_admin.connectionUri + ) + + +def test_list_redshift_environment_connections_unauthorized(client2, group1, session_env1): + assert_that(list_environment_redshift_connections).raises(GqlError).when_called_with( + client=client2, + environment_uri=session_env1.environmentUri, + group_uri=group1, + ).contains( + 'UnauthorizedOperation', + 'LIST_ENVIRONMENT_REDSHIFT_CONNECTIONS', + session_env1.environmentUri, + ) + + +def test_list_redshift_connection_schemas(client1, session_connection_serverless_admin): + response = list_redshift_connection_schemas( + client=client1, connection_uri=session_connection_serverless_admin.connectionUri + ) + assert_that(len(response)).is_greater_than_or_equal_to(1) + assert_that(response).contains(REDSHIFT_SCHEMA) + + +def test_list_redshift_connection_schemas_unauthorized(client2, session_connection_serverless_admin): + assert_that(list_redshift_connection_schemas).raises(GqlError).when_called_with( + client=client2, connection_uri=session_connection_serverless_admin.connectionUri + ).contains( + 'UnauthorizedOperation', + 'GET_REDSHIFT_CONNECTION', + session_connection_serverless_admin.connectionUri, + ) + + +def test_list_redshift_schema_tables(client1, session_connection_serverless_admin): + response = list_redshift_schema_tables( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + schema=REDSHIFT_SCHEMA, + ) + assert_that(len(response)).is_greater_than_or_equal_to(1) + assert_that(response[0]).contains_key('name', 'type') + + +def test_list_redshift_schema_tables_unauthorized(client2, session_connection_serverless_admin): + assert_that(list_redshift_schema_tables).raises(GqlError).when_called_with( + client=client2, connection_uri=session_connection_serverless_admin.connectionUri, schema=REDSHIFT_SCHEMA + ).contains( + 'UnauthorizedOperation', + 'GET_REDSHIFT_CONNECTION', + session_connection_serverless_admin.connectionUri, + ) + + +def test_list_redshift_connection_group_permissions( + client1, group1, session_connection_serverless_admin, session_connection_serverless_admin_group_with_permissions +): + response = list_redshift_connection_group_permissions( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + ) + assert_that(response.count).is_equal_to(2) + assert_that(response.nodes).extracting('groupUri').contains( + group1, session_connection_serverless_admin_group_with_permissions + ) + response = list_redshift_connection_group_permissions( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + filter={'term': session_connection_serverless_admin_group_with_permissions}, + ) + assert_that(response.count).is_equal_to(1) + assert_that(response.nodes).extracting('groupUri').contains( + session_connection_serverless_admin_group_with_permissions + ) + + +def test_list_redshift_connection_group_permissions_unauthorized(client2, session_connection_serverless_admin): + assert_that(list_redshift_connection_group_permissions).raises(GqlError).when_called_with( + client=client2, connection_uri=session_connection_serverless_admin.connectionUri + ).contains( + 'UnauthorizedOperation', + 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', + session_connection_serverless_admin.connectionUri, + ) + + +def test_list_redshift_connection_group_no_permissions( + client1, group1, session_connection_serverless_admin, session_connection_serverless_admin_group_with_permissions +): + response = list_redshift_connection_group_no_permissions( + client=client1, + connection_uri=session_connection_serverless_admin.connectionUri, + ) + assert_that(response).does_not_contain(session_connection_serverless_admin_group_with_permissions, group1) + assert_that(response).is_not_none() + + +def test_list_redshift_connection_group_no_permissions_unauthorized(client2, session_connection_serverless_admin): + assert_that(list_redshift_connection_group_no_permissions).raises(GqlError).when_called_with( + client=client2, connection_uri=session_connection_serverless_admin.connectionUri + ).contains( + 'UnauthorizedOperation', + 'EDIT_REDSHIFT_CONNECTION_PERMISSIONS', + session_connection_serverless_admin.connectionUri, + ) From 53181b9b543ba0a225bf1227704293fab2fee28d Mon Sep 17 00:00:00 2001 From: Rick Bernotas <97474536+rbernotas@users.noreply.github.com> Date: Wed, 16 Oct 2024 08:09:18 -0500 Subject: [PATCH 123/188] User modal dialog - team link (#1627) ### Feature or Bugfix - Feature ### Detail - Turns various appearances of Team name text into clickable links, which pop up a modal dialog that lists the users in the team. - For more detail on the proposal, see: https://github.com/data-dot-all/dataall/issues/1626 - As we don't have Cognito available to us and use a separate custom system for roles management, we could use some help with feedback and testing on the Cognito piece of this, if there is interest in accepting this contribution. ### Relates - https://github.com/data-dot-all/dataall/issues/1626 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? NO - Is the input sanitized? N/A - What precautions are you taking before deserializing the data you consume? N/A - Is injection prevented by parametrizing queries? N/A - Have you ensured no `eval` or similar functions are used? YES - Does this PR introduce any functionality or component that requires authorization? NO - How have you ensured it respects the existing AuthN/AuthZ mechanisms? N/A - Are you logging failed auth attempts? N/A - Are you using or adding any cryptographic features? NO - Do you use a standard proven implementations? N/A - Are the used keys controlled by the customer? Where are they stored? N/A - Are you introducing any new policies/roles/users? NO - Have you used the least-privilege principle? How? N/A By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: rbernota --- backend/dataall/base/aws/cognito.py | 37 +++++-- backend/dataall/core/groups/api/queries.py | 10 +- backend/dataall/core/groups/api/resolvers.py | 8 ++ .../core/groups/services/group_service.py | 9 ++ frontend/src/design/components/UserModal.js | 102 ++++++++++++++++++ frontend/src/design/components/index.js | 1 + .../components/DatasetGovernance.js | 31 +++++- .../components/EnvironmentOverview.js | 17 ++- .../components/EnvironmentTeams.js | 30 +++++- .../components/OrganizationOverview.js | 17 ++- .../components/OrganizationTeams.js | 28 ++++- .../src/modules/Shares/views/ShareView.js | 39 ++++++- .../graphql/Groups/listUserForGroup.js | 12 +++ 13 files changed, 320 insertions(+), 21 deletions(-) create mode 100644 frontend/src/design/components/UserModal.js create mode 100644 frontend/src/services/graphql/Groups/listUserForGroup.js diff --git a/backend/dataall/base/aws/cognito.py b/backend/dataall/base/aws/cognito.py index 512c5077a..6213defbc 100644 --- a/backend/dataall/base/aws/cognito.py +++ b/backend/dataall/base/aws/cognito.py @@ -11,17 +11,22 @@ class Cognito(ServiceProvider): def __init__(self): self.client = boto3.client('cognito-idp', region_name=os.getenv('AWS_REGION', 'eu-west-1')) + def get_cognito_users(self, groupName): + envname = os.getenv('envname', 'local') + parameter_path = f'/dataall/{envname}/cognito/userpool' + ssm = boto3.client('ssm', region_name=os.getenv('AWS_REGION', 'eu-west-1')) + user_pool_id = ssm.get_parameter(Name=parameter_path)['Parameter']['Value'] + paginator = self.client.get_paginator('list_users_in_group') + pages = paginator.paginate(UserPoolId=user_pool_id, GroupName=groupName) + cognito_user_list = [] + for page in pages: + cognito_user_list += page['Users'] + + return cognito_user_list + def get_user_emailids_from_group(self, groupName): try: - envname = os.getenv('envname', 'local') - parameter_path = f'/dataall/{envname}/cognito/userpool' - ssm = boto3.client('ssm', region_name=os.getenv('AWS_REGION', 'eu-west-1')) - user_pool_id = ssm.get_parameter(Name=parameter_path)['Parameter']['Value'] - paginator = self.client.get_paginator('list_users_in_group') - pages = paginator.paginate(UserPoolId=user_pool_id, GroupName=groupName) - cognito_user_list = [] - for page in pages: - cognito_user_list += page['Users'] + cognito_user_list = self.get_cognito_users(groupName) group_email_ids = [] attributes = [] # Make a flat list @@ -39,6 +44,20 @@ def get_user_emailids_from_group(self, groupName): else: return group_email_ids + def get_user_list_from_group(self, groupName): + try: + cognito_user_list = self.get_cognito_users(groupName) + group_usernames = [user['Username'] for user in cognito_user_list] + except Exception as e: + envname = os.getenv('envname', 'local') + if envname in ['local', 'dkrcompose']: + log.error('Local development environment does not support Cognito') + return ['anonymous@amazon.com'] + log.error(f'Failed to get usernames for Cognito group {groupName} due to {e}') + raise e + else: + return group_usernames + def list_groups(self, envname: str, region: str): user_pool_id = None groups = [] diff --git a/backend/dataall/core/groups/api/queries.py b/backend/dataall/core/groups/api/queries.py index 30275b5c0..c3d6e853b 100644 --- a/backend/dataall/core/groups/api/queries.py +++ b/backend/dataall/core/groups/api/queries.py @@ -1,5 +1,5 @@ from dataall.base.api import gql -from dataall.core.groups.api.resolvers import get_group, list_groups, get_groups_for_user +from dataall.core.groups.api.resolvers import get_group, list_groups, get_groups_for_user, list_user getGroup = gql.QueryField( name='getGroup', @@ -24,3 +24,11 @@ type=gql.ArrayType(gql.String), resolver=get_groups_for_user, ) + + +listUsersForGroup = gql.QueryField( + name='listUsersForGroup', + args=[gql.Argument(name='groupUri', type=gql.NonNullableType(gql.String))], + type=gql.ArrayType(gql.String), + resolver=list_user, +) diff --git a/backend/dataall/core/groups/api/resolvers.py b/backend/dataall/core/groups/api/resolvers.py index ae7c28323..a17507d4b 100644 --- a/backend/dataall/core/groups/api/resolvers.py +++ b/backend/dataall/core/groups/api/resolvers.py @@ -50,3 +50,11 @@ def get_groups_for_user(context, source, userid): raise Exception("User Id doesn't match user id from context") return GroupService.get_groups_for_user(userid) + + +def list_user(context, source, groupUri): + if not groupUri: + raise exceptions.RequiredParameter('groupUri') + + user_list = GroupService.get_user_list_for_group(groupUri) + return user_list diff --git a/backend/dataall/core/groups/services/group_service.py b/backend/dataall/core/groups/services/group_service.py index 5d5fc763b..e0859a6e2 100644 --- a/backend/dataall/core/groups/services/group_service.py +++ b/backend/dataall/core/groups/services/group_service.py @@ -63,6 +63,15 @@ def get_groups_for_user(userId): groups = service_provider.get_groups_for_user(userId) return groups + @staticmethod + def get_user_list_for_group(groupUri): + try: + service_provider = ServiceProviderFactory.get_service_provider_instance() + user_list = service_provider.get_user_list_from_group(groupUri) + return user_list + except Exception as e: + raise Exception(f'Failed to get users list for group {groupUri}. Error: {e}') + @staticmethod def list_groups_without_invited(filter: dict = None): with get_context().db_engine.scoped_session() as session: diff --git a/frontend/src/design/components/UserModal.js b/frontend/src/design/components/UserModal.js new file mode 100644 index 000000000..f3c22941c --- /dev/null +++ b/frontend/src/design/components/UserModal.js @@ -0,0 +1,102 @@ +import React, { useState, useEffect } from 'react'; +import { + Typography, + Button, + Box, + Table, + TableHead, + TableRow, + TableCell, + TableBody, + Dialog, + CircularProgress +} from '@mui/material'; +import { useClient } from '../../services'; +import { useDispatch } from '../../globalErrors'; +import { listUserForGroup } from '../../services/graphql/Groups/listUserForGroup'; + +const UserModal = ({ team, open, onClose }) => { + const [loading, setLoading] = useState(false); + const [teamUsers, setTeamUsers] = useState([]); + const dispatch = useDispatch(); + const client = useClient(); + + useEffect(() => { + const fetchUsers = async () => { + try { + setLoading(true); + const response = await client.query(listUserForGroup(team)); // Use the GraphQL query function to fetch users in Team + if (response && response.data && response.data.listUsersForGroup) { + setTeamUsers(response.data.listUsersForGroup); + } + } catch (error) { + } finally { + setLoading(false); + } + }; + if (client && team) { + fetchUsers(); + } + }, [dispatch, client, team]); + + return ( +

      + + + Team Members + + {loading ? ( + + + + ) : ( + + + + User ID + + + + {teamUsers.map((userId, index) => ( + + + + {userId} + + + + ))} + +
      + )} + + + +
      +
      + ); +}; + +export { UserModal }; diff --git a/frontend/src/design/components/index.js b/frontend/src/design/components/index.js index 8b5ce3bc0..724562cd1 100644 --- a/frontend/src/design/components/index.js +++ b/frontend/src/design/components/index.js @@ -31,3 +31,4 @@ export * from './layout'; export * from './popovers'; export * from './SanitizedHTML'; export * from './NoAccessMaintenanceWindow'; +export * from './UserModal'; diff --git a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js index c2ec5aff4..f2e86a115 100644 --- a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js +++ b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js @@ -11,6 +11,8 @@ import { import PropTypes from 'prop-types'; import { Label } from 'design'; import { isFeatureEnabled } from 'utils'; +import { UserModal } from 'design'; +import { useState } from 'react'; export const DatasetGovernance = (props) => { const { dataset } = props; @@ -20,6 +22,14 @@ export const DatasetGovernance = (props) => { : [{ label: '-', nodeUri: '-' }]; const tags = dataset.tags.length > 0 ? dataset.tags : ['-']; + const [modalOpen, setIsModalOpen] = useState(false); + const handleOpenModal = () => setIsModalOpen(true); + const handleCloseModal = () => setIsModalOpen(false); + + const [stewardsModalOpen, setStewardsModalOpen] = useState(false); + const handleOpenStewardsModal = () => setStewardsModalOpen(true); + const handleCloseStewardsModal = () => setStewardsModalOpen(false); + return ( @@ -98,7 +108,14 @@ export const DatasetGovernance = (props) => { Owners - {dataset.SamlAdminGroupName} +
      + {dataset.SamlAdminGroupName} +
      +
      @@ -106,7 +123,17 @@ export const DatasetGovernance = (props) => { Stewards - {dataset.stewards} +
      + {dataset.stewards} +
      +
      diff --git a/frontend/src/modules/Environments/components/EnvironmentOverview.js b/frontend/src/modules/Environments/components/EnvironmentOverview.js index db1fd45a6..ae6f012f0 100644 --- a/frontend/src/modules/Environments/components/EnvironmentOverview.js +++ b/frontend/src/modules/Environments/components/EnvironmentOverview.js @@ -1,12 +1,18 @@ +import React, { useState } from 'react'; import { Box, Grid } from '@mui/material'; import PropTypes from 'prop-types'; import { ObjectBrief, ObjectMetadata } from 'design'; +import { UserModal } from 'design'; import { EnvironmentConsoleAccess } from './EnvironmentConsoleAccess'; import { EnvironmentFeatures } from './EnvironmentFeatures'; export const EnvironmentOverview = (props) => { const { environment, ...other } = props; + const [modalOpen, setIsModalOpen] = useState(false); + const handleOpenModal = () => setIsModalOpen(true); + const handleCloseModal = () => setIsModalOpen(false); + return ( @@ -28,10 +34,19 @@ export const EnvironmentOverview = (props) => { region={environment.region} organization={environment.organization} owner={environment.owner} - admins={environment.SamlGroupName || '-'} + admins={ +
      + {environment.SamlGroupName || '-'} +
      + } created={environment.created} status={environment.stack?.status} /> + diff --git a/frontend/src/modules/Environments/components/EnvironmentTeams.js b/frontend/src/modules/Environments/components/EnvironmentTeams.js index eb89902b8..995be5786 100644 --- a/frontend/src/modules/Environments/components/EnvironmentTeams.js +++ b/frontend/src/modules/Environments/components/EnvironmentTeams.js @@ -39,7 +39,8 @@ import { Pager, RefreshTableMenu, Scrollbar, - SearchIcon + SearchIcon, + UserModal } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { isFeatureEnabled } from 'utils'; @@ -76,6 +77,19 @@ function TeamRow({ const [accessingConsole, setAccessingConsole] = useState(false); const [loadingCreds, setLoadingCreds] = useState(false); + const [openUserModal, setIsModalOpen] = useState(false); + const [selectedTeam, setSelectedTeam] = useState(null); + + const handleOpenModal = (team) => { + setSelectedTeam(team.groupUri); + setIsModalOpen(true); + }; + + const handleCloseModal = () => { + setIsModalOpen(false); + setSelectedTeam(null); + }; + const removeGroup = async (groupUri) => { try { const response = await client.mutate( @@ -148,12 +162,24 @@ function TeamRow({ }; return ( - + handleOpenModal(team)} + style={{ cursor: 'pointer' }} + > {team.groupUri}{' '} {team.groupUri === environment.SamlGroupName && ( )} + + {openUserModal && ( + + )} + {team.environmentIAMRoleArn} {team.environmentAthenaWorkGroup} diff --git a/frontend/src/modules/Organizations/components/OrganizationOverview.js b/frontend/src/modules/Organizations/components/OrganizationOverview.js index 4cd970e7f..95234dd1d 100644 --- a/frontend/src/modules/Organizations/components/OrganizationOverview.js +++ b/frontend/src/modules/Organizations/components/OrganizationOverview.js @@ -1,10 +1,16 @@ +import React, { useState } from 'react'; import { Box, Grid } from '@mui/material'; import PropTypes from 'prop-types'; import { ObjectBrief, ObjectMetadata } from 'design'; +import { UserModal } from 'design'; export const OrganizationOverview = (props) => { const { organization, ...other } = props; + const [modalOpen, setIsModalOpen] = useState(false); + const handleOpenModal = () => setIsModalOpen(true); + const handleCloseModal = () => setIsModalOpen(false); + return ( @@ -20,9 +26,18 @@ export const OrganizationOverview = (props) => { + {organization.SamlGroupName || '-'} + + } created={organization.created} /> + ); diff --git a/frontend/src/modules/Organizations/components/OrganizationTeams.js b/frontend/src/modules/Organizations/components/OrganizationTeams.js index 3c2329b42..84bd230c2 100644 --- a/frontend/src/modules/Organizations/components/OrganizationTeams.js +++ b/frontend/src/modules/Organizations/components/OrganizationTeams.js @@ -31,7 +31,8 @@ import { Pager, RefreshTableMenu, Scrollbar, - SearchIcon + SearchIcon, + UserModal } from 'design'; import { SET_ERROR, useDispatch } from 'globalErrors'; import { useClient } from 'services'; @@ -91,14 +92,37 @@ function TeamRow({ } }; + const [openUserModal, setIsModalOpen] = useState(false); + const [selectedTeam, setSelectedTeam] = useState(null); + + const handleOpenModal = (team) => { + setSelectedTeam(team.groupUri); + setIsModalOpen(true); + }; + + const handleCloseModal = () => { + setIsModalOpen(false); + setSelectedTeam(null); + }; + return ( - + handleOpenModal(team)} + style={{ cursor: 'pointer' }} + > {team.groupUri}{' '} {team.groupUri === organization.SamlGroupName && ( )} + {openUserModal && ( + + )} {team.groupUri !== organization.SamlGroupName ? ( { const [isReApplyShareItemModalOpen, setIsReApplyShareItemModalOpen] = useState(false); + const [modalOpen, setIsModalOpen] = useState(false); + const handleOpenModal = () => setIsModalOpen(true); + const handleCloseModal = () => setIsModalOpen(false); + + const [requestTeamModalOpen, setIsRequestTeamModalOpen] = useState(false); + const handleRequestTeamOpenModal = () => { + setIsRequestTeamModalOpen(true); + }; + const handleCloseRequestTeamModal = () => { + setIsRequestTeamModalOpen(false); + }; + const handleAddItemModalClose = () => { setIsAddItemModalOpen(false); }; @@ -1023,7 +1036,17 @@ const ShareView = () => { color="textPrimary" variant="subtitle2" > - {share.dataset.SamlAdminGroupName || '-'} + + {share.dataset.SamlAdminGroupName || '-'} + + @@ -1370,7 +1393,17 @@ const ShareView = () => { Requester Team - {share.principal.SamlGroupName || '-'} + + {share.principal.SamlGroupName || '-'} + + ({ + variables: { + groupUri + }, + query: gql` + query ListUsersForGroup($groupUri: String!) { + listUsersForGroup(groupUri: $groupUri) + } + ` +}); From 85dbfdcac4d8835a07ba370ee8da9071d4e40bf3 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Wed, 16 Oct 2024 15:46:20 +0200 Subject: [PATCH 124/188] Integration tests executed on a real deployment as part of the CICD - Redshift Datasets (#1636) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ MERGE AFTER https://github.com/data-dot-all/dataall/pull/1628 ### Feature or Bugfix - Feature: Testing ### Detail Add integration tests for Redshift datasets It also includes the global conftest fixtures that will be used for redshift dataset sharing At the moment it assumes Redshift infrastructure is already provided; we might want to implement the deployment of this pre-required infra, but that can be done on a separate PR. ## Testing Tested locally: ![image](https://github.com/user-attachments/assets/564ff84f-61ac-4055-9551-e7186cacdd69) ### Relates - #1619 - #1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../redshift_datasets/dataset_queries.py | 31 ++- .../redshift_datasets/global_conftest.py | 80 +++++- .../test_redshift_dataset.py | 255 ++++++++++++++++++ 3 files changed, 351 insertions(+), 15 deletions(-) create mode 100644 tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py diff --git a/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py index a96d90b2f..65cb118b6 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py +++ b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py @@ -210,7 +210,6 @@ def import_redshift_dataset( description, tags, owner, - topics, group_uri, confidentiality, auto_approval_enabled, @@ -218,7 +217,7 @@ def import_redshift_dataset( schema, tables, ): - mutation = { + query = { 'operationName': 'importRedshiftDataset', 'variables': { 'input': { @@ -228,7 +227,6 @@ def import_redshift_dataset( 'description': description, 'tags': tags, 'owner': owner, - 'topics': topics, 'SamlAdminGroupName': group_uri, 'confidentiality': confidentiality, 'autoApprovalEnabled': auto_approval_enabled, @@ -243,16 +241,19 @@ def import_redshift_dataset( datasetUri label userRoleForDataset + connection { + connectionUri + } } } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.importRedshiftDataset def update_redshift_dataset(client, dataset_uri, description): - mutation = { + query = { 'operationName': 'updateRedshiftDataset', 'variables': { 'datasetUri': dataset_uri, @@ -267,16 +268,17 @@ def update_redshift_dataset(client, dataset_uri, description): datasetUri label userRoleForDataset + description } } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.updateRedshiftDataset def delete_redshift_dataset(client, dataset_uri): - mutation = { + query = { 'operationName': 'deleteRedshiftDataset', 'variables': {'datasetUri': dataset_uri}, 'query': """ @@ -285,12 +287,12 @@ def delete_redshift_dataset(client, dataset_uri): } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.deleteRedshiftDataset def add_redshift_dataset_tables(client, dataset_uri, tables): - mutation = { + query = { 'operationName': 'addRedshiftDatasetTables', 'variables': { 'datasetUri': dataset_uri, @@ -305,12 +307,12 @@ def add_redshift_dataset_tables(client, dataset_uri, tables): } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.addRedshiftDatasetTables def delete_redshift_dataset_table(client, rs_table_uri): - mutation = { + query = { 'operationName': 'deleteRedshiftDatasetTable', 'variables': {'rsTableUri': rs_table_uri}, 'query': """ @@ -319,12 +321,12 @@ def delete_redshift_dataset_table(client, rs_table_uri): } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.deleteRedshiftDatasetTable def update_redshift_dataset_table(client, rs_table_uri, description): - mutation = { + query = { 'operationName': 'updateRedshiftDatasetTable', 'variables': { 'rsTableUri': rs_table_uri, @@ -338,9 +340,10 @@ def update_redshift_dataset_table(client, rs_table_uri, description): updateRedshiftDatasetTable(rsTableUri: $rsTableUri, input: $input) { rsTableUri label + description } } """, } - response = client.query(mutation=mutation) + response = client.query(query=query) return response.data.updateRedshiftDatasetTable diff --git a/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py index 9532be262..d88dabe9c 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py @@ -1,7 +1,7 @@ import logging import pytest -from integration_tests.core.stack.utils import check_stack_ready +from integration_tests.core.stack.utils import check_stack_ready, check_stack_in_progress from integration_tests.conftest import RedshiftConnection from integration_tests.modules.redshift_datasets.connection_queries import ( create_redshift_connection, @@ -10,10 +10,18 @@ delete_redshift_connection_group_permissions, ) +from integration_tests.modules.redshift_datasets.dataset_queries import ( + import_redshift_dataset, + delete_redshift_dataset, + list_redshift_dataset_tables, +) + log = logging.getLogger(__name__) REDSHIFT_DATABASE = 'dev' REDSHIFT_SCHEMA = 'public' +REDSHIFT_TABLE1 = 'region' +REDSHIFT_TABLE2 = 'nation' def create_connection(client, env, group, name, conn_type, red_type, connection_data=RedshiftConnection): @@ -31,6 +39,14 @@ def create_connection(client, env, group, name, conn_type, red_type, connection_ redshift_user=None, secret_arn=connection_data.secret_arn, ) + # The connection creation updates the permissions of the pivot role in the environment stack + check_stack_in_progress( + client=client, + env_uri=env.environmentUri, + stack_uri=env.stack.stackUri, + target_uri=env.environmentUri, + target_type='environment', + ) check_stack_ready( client=client, env_uri=env.environmentUri, @@ -140,3 +156,65 @@ def session_connection_cluster_data_user(client5, group5, session_cross_acc_env_ finally: if connection: delete_redshift_connection(client=client5, connection_uri=connection.connectionUri) + + +@pytest.fixture(scope='session') +def session_redshift_dataset_serverless( + client1, group1, user1, session_env1, org1, session_connection_serverless_data_user, session_id +): + dataset = None + try: + dataset = import_redshift_dataset( + client=client1, + label='session_redshift_serverless_dataset1', + org_uri=org1.organizationUri, + env_uri=session_env1.environmentUri, + description='Used for integration test', + tags=[session_id], + owner=user1.username, + group_uri=group1, + confidentiality='Unclassified', + auto_approval_enabled=False, + connection_uri=session_connection_serverless_data_user.connectionUri, + schema=REDSHIFT_SCHEMA, + tables=[REDSHIFT_TABLE1], + ) + yield dataset + finally: + if dataset: + delete_redshift_dataset(client=client1, dataset_uri=dataset.datasetUri) + + +@pytest.fixture(scope='session') +def session_redshift_dataset_serverless_table(client1, session_redshift_dataset_serverless): + tables = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, term=REDSHIFT_TABLE1 + ) + yield tables.nodes[0] + + +@pytest.fixture(scope='session') +def session_redshift_dataset_cluster( + client5, group5, user5, session_cross_acc_env_1, org1, session_connection_cluster_data_user, session_id +): + dataset = None + try: + dataset = import_redshift_dataset( + client=client5, + label='session_redshift_cluster_dataset1', + org_uri=org1.organizationUri, + env_uri=session_cross_acc_env_1.environmentUri, + description='Used for integration test', + tags=[session_id], + owner=user5.username, + group_uri=group5, + confidentiality='Secret', + auto_approval_enabled=False, + connection_uri=session_connection_cluster_data_user.connectionUri, + schema=REDSHIFT_SCHEMA, + tables=[], + ) + yield dataset + finally: + if dataset: + delete_redshift_dataset(client=client5, dataset_uri=dataset.datasetUri) diff --git a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py new file mode 100644 index 000000000..701d7f8f8 --- /dev/null +++ b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py @@ -0,0 +1,255 @@ +from assertpy import assert_that + +from integration_tests.errors import GqlError +from integration_tests.modules.redshift_datasets.connection_queries import list_redshift_schema_tables +from integration_tests.modules.redshift_datasets.dataset_queries import ( + list_redshift_dataset_tables, + import_redshift_dataset, + update_redshift_dataset, + delete_redshift_dataset, + update_redshift_dataset_table, + add_redshift_dataset_tables, + delete_redshift_dataset_table, + get_redshift_dataset, + get_redshift_dataset_table, + get_redshift_dataset_table_columns, + list_redshift_schema_dataset_tables, +) +from integration_tests.modules.redshift_datasets.global_conftest import ( + REDSHIFT_SCHEMA, + REDSHIFT_TABLE1, + REDSHIFT_TABLE2, +) + + +def test_import_redshift_serverless_dataset_with_table(client1, session_redshift_dataset_serverless): + assert_that(session_redshift_dataset_serverless.datasetUri).is_not_none() + tables = list_redshift_dataset_tables(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) + assert_that(tables.count).is_equal_to(1) + assert_that(tables.nodes[0].name).is_equal_to(REDSHIFT_TABLE1) + + +def test_import_redshift_cluster_dataset_without_table(client5, session_redshift_dataset_cluster): + assert_that(session_redshift_dataset_cluster.datasetUri).is_not_none() + tables = list_redshift_dataset_tables(client=client5, dataset_uri=session_redshift_dataset_cluster.datasetUri) + assert_that(tables.count).is_equal_to(0) + + +def test_import_redshift_unauthorized( + client2, user1, group1, session_env1, org1, session_connection_serverless_data_user +): + assert_that(import_redshift_dataset).raises(GqlError).when_called_with( + client=client2, + label='Error-Test-Redshift-Serverless', + org_uri=org1.organizationUri, + env_uri=session_env1.environmentUri, + description='Error', + tags=[], + owner=user1.username, + group_uri=group1, + confidentiality='Secret', + auto_approval_enabled=False, + connection_uri=session_connection_serverless_data_user.connectionUri, + schema=REDSHIFT_SCHEMA, + tables=[], + ).contains('UnauthorizedOperation', 'IMPORT_REDSHIFT_DATASET', session_env1.environmentUri) + + +def test_import_redshift_dataset_invalid_connection_type( + client1, user1, group1, session_env1, org1, session_connection_serverless_admin +): + assert_that(import_redshift_dataset).raises(GqlError).when_called_with( + client=client1, + label='Error-Test-Redshift-Serverless', + org_uri=org1.organizationUri, + env_uri=session_env1.environmentUri, + description='Error', + tags=[], + owner=user1.username, + group_uri=group1, + confidentiality='Secret', + auto_approval_enabled=False, + connection_uri=session_connection_serverless_admin.connectionUri, + schema=REDSHIFT_SCHEMA, + tables=[], + ).contains('InvalidInput', 'Connection', 'Only DATA_USER') + + +def test_update_redshift_dataset(client1, session_redshift_dataset_serverless): + updated_desc = 'Updated Description' + response = update_redshift_dataset( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, description=updated_desc + ) + assert_that(response.description).is_equal_to(updated_desc) + + +def test_update_redshift_dataset_unauthorized(client2, session_redshift_dataset_serverless): + assert_that(update_redshift_dataset).raises(GqlError).when_called_with( + client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri, description='Updated Description' + ).contains('UnauthorizedOperation', 'UPDATE_REDSHIFT_DATASET', session_redshift_dataset_serverless.datasetUri) + + +def test_delete_redshift_dataset( + user5, group5, client5, session_cross_acc_env_1, org1, session_connection_cluster_data_user +): + dataset = import_redshift_dataset( + client=client5, + label='Test-Redshift-to-Delete', + org_uri=org1.organizationUri, + env_uri=session_cross_acc_env_1.environmentUri, + description='Used for integration test', + tags=['delete'], + owner=user5.username, + group_uri=group5, + confidentiality='Secret', + auto_approval_enabled=False, + connection_uri=session_connection_cluster_data_user.connectionUri, + schema=REDSHIFT_SCHEMA, + tables=[], + ) + assert_that(dataset.datasetUri).is_not_none() + response = delete_redshift_dataset(client=client5, dataset_uri=dataset.datasetUri) + assert_that(response).is_true() + + +def test_delete_redshift_dataset_unauthorized(client2, session_redshift_dataset_serverless): + assert_that(delete_redshift_dataset).raises(GqlError).when_called_with( + client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri + ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_DATASET', session_redshift_dataset_serverless.datasetUri) + + +def test_add_redshift_dataset_tables(client1, session_redshift_dataset_serverless): + initial_number_of_tables = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri + ).count + response = add_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] + ) + assert_that(response).is_true() + tables = list_redshift_dataset_tables(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) + assert_that(tables.count).is_equal_to(initial_number_of_tables + 1) + + +def test_add_redshift_dataset_tables_unauthorized(client2, session_redshift_dataset_serverless): + assert_that(add_redshift_dataset_tables).raises(GqlError).when_called_with( + client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] + ).contains('UnauthorizedOperation', 'ADD_TABLES_REDSHIFT_DATASET', session_redshift_dataset_serverless.datasetUri) + + +def test_update_redshift_dataset_table(client1, session_redshift_dataset_serverless_table, session_id): + new_desc = f'Updated Description {session_id}' + response = update_redshift_dataset_table( + client=client1, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri, description=new_desc + ) + assert_that(response.description).is_equal_to(new_desc) + + +def test_update_redshift_dataset_table_unauthorized(client2, session_redshift_dataset_serverless_table): + assert_that(update_redshift_dataset_table).raises(GqlError).when_called_with( + client=client2, + rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri, + description='Updated Description', + ).contains( + 'UnauthorizedOperation', 'UPDATE_REDSHIFT_DATASET_TABLE', session_redshift_dataset_serverless_table.rsTableUri + ) + + +def test_delete_redshift_dataset_table(client1, session_redshift_dataset_serverless): + table_2 = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, term=REDSHIFT_TABLE2 + ) + if table_2.count == 0: + response = add_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] + ) + assert_that(response).is_true() + table_2 = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, term=REDSHIFT_TABLE2 + ).nodes[0] + response = delete_redshift_dataset_table(client=client1, rs_table_uri=table_2.rsTableUri) + assert_that(response).is_true() + + +def test_delete_redshift_dataset_table_unauthorized(client2, session_redshift_dataset_serverless_table): + assert_that(delete_redshift_dataset_table).raises(GqlError).when_called_with( + client=client2, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri + ).contains( + 'UnauthorizedOperation', 'DELETE_REDSHIFT_DATASET_TABLE', session_redshift_dataset_serverless_table.rsTableUri + ) + + +def test_get_redshift_dataset(client1, session_redshift_dataset_serverless): + response = get_redshift_dataset(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) + assert_that(response).contains_entry( + datasetUri=session_redshift_dataset_serverless.datasetUri, + schema=REDSHIFT_SCHEMA, + ) + assert_that(response.connection.connectionUri).is_equal_to( + session_redshift_dataset_serverless.connection.connectionUri + ) + + +def test_get_redshift_dataset_unauthorized(client2, session_redshift_dataset_serverless): + assert_that(get_redshift_dataset).raises(GqlError).when_called_with( + client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', session_redshift_dataset_serverless.datasetUri) + + +def test_list_redshift_dataset_tables(client1, session_redshift_dataset_serverless): + response = list_redshift_dataset_tables(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) + assert_that(response).contains_key('count', 'page', 'pages', 'nodes') + + +def test_list_redshift_dataset_tables_unauthorized(client2, session_redshift_dataset_serverless): + assert_that(list_redshift_dataset_tables).raises(GqlError).when_called_with( + client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri + ).contains('UnauthorizedOperation', 'GET_REDSHIFT_DATASET', session_redshift_dataset_serverless.datasetUri) + + +def test_get_redshift_dataset_table(client1, session_redshift_dataset_serverless_table): + response = get_redshift_dataset_table( + client=client1, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri + ) + assert_that(response).contains_entry( + rsTableUri=session_redshift_dataset_serverless_table.rsTableUri, name=REDSHIFT_TABLE1 + ) + + +def test_get_redshift_dataset_table_unauthorized(client2, session_redshift_dataset_serverless_table): + assert_that(get_redshift_dataset_table).raises(GqlError).when_called_with( + client=client2, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri + ).contains( + 'UnauthorizedOperation', 'GET_REDSHIFT_DATASET_TABLE', session_redshift_dataset_serverless_table.rsTableUri + ) + + +def test_get_redshift_dataset_table_columns(client1, session_redshift_dataset_serverless_table): + response = get_redshift_dataset_table_columns( + client=client1, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri + ) + assert_that(response).contains_key('count', 'page', 'pages', 'nodes') + + +def test_get_redshift_dataset_table_columns_unauthorized(client2, session_redshift_dataset_serverless_table): + assert_that(get_redshift_dataset_table_columns).raises(GqlError).when_called_with( + client=client2, rs_table_uri=session_redshift_dataset_serverless_table.rsTableUri + ).contains( + 'UnauthorizedOperation', 'GET_REDSHIFT_DATASET_TABLE', session_redshift_dataset_serverless_table.rsTableUri + ) + + +def test_list_redshift_schema_dataset_tables(client1, session_redshift_dataset_serverless): + added_tables = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri + ) + schema_tables = list_redshift_schema_tables( + client=client1, + connection_uri=session_redshift_dataset_serverless.connection.connectionUri, + schema=REDSHIFT_SCHEMA, + ) + response = list_redshift_schema_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri + ) + assert_that(len(response)).is_equal_to(len(schema_tables)) + response_added_tables = [table.name for table in response if table.alreadyAdded] + assert_that(response_added_tables).contains(*[table.name for table in added_tables.nodes]) From 18d375bf57ffef045a03e72a54ca1a16847bf36b Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Wed, 16 Oct 2024 14:50:46 +0100 Subject: [PATCH 125/188] Metadata versioning 2 (#1641) ### Feature or Bugfix - Feature ### Detail - Metadata Form View -> Fileds. User can create/view/edit/delete versions - No restrictions on editing yet - If version deleted, all attached entities deleted - User can't delete the only version (backend and frontend restrictions) - When user attach a form to an entity, we use only the last version - Metadata Form View -> Preview. Can view different versions ### Relates - #1621 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/api/mutations.py | 24 ++ .../modules/metadata_forms/api/resolvers.py | 12 +- .../modules/metadata_forms/api/types.py | 11 +- .../db/metadata_form_repository.py | 22 +- .../services/metadata_form_service.py | 42 ++- .../components/MetadataFormFields.js | 280 +++++++++++++++--- .../components/renderedMetadataForm.js | 66 ++++- .../services/createMetadataFormVersion.js | 13 + .../services/deleteMetadataFormVersion.js | 13 + .../services/getMetadataForm.js | 10 +- .../modules/Metadata_Forms/services/index.js | 2 + .../modules/metadata_forms/queries.py | 8 +- 12 files changed, 444 insertions(+), 59 deletions(-) create mode 100644 frontend/src/modules/Metadata_Forms/services/createMetadataFormVersion.js create mode 100644 frontend/src/modules/Metadata_Forms/services/deleteMetadataFormVersion.js diff --git a/backend/dataall/modules/metadata_forms/api/mutations.py b/backend/dataall/modules/metadata_forms/api/mutations.py index 69e7066ff..4473d0716 100644 --- a/backend/dataall/modules/metadata_forms/api/mutations.py +++ b/backend/dataall/modules/metadata_forms/api/mutations.py @@ -7,6 +7,8 @@ batch_metadata_form_field_update, create_attached_metadata_form, delete_attached_metadata_form, + create_metadata_form_version, + delete_metadata_form_version, ) createMetadataForm = gql.MutationField( @@ -17,6 +19,17 @@ test_scope='MetadataForm', ) +createMetadataFormVersion = gql.MutationField( + name='createMetadataFormVersion', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='copyVersion', type=gql.Integer), + ], + type=gql.Integer, + resolver=create_metadata_form_version, + test_scope='MetadataForm', +) + createAttachedMetadataForm = gql.MutationField( name='createAttachedMetadataForm', args=[ @@ -38,6 +51,17 @@ test_scope='MetadataForm', ) +deleteMetadataFormVersion = gql.MutationField( + name='deleteMetadataFormVersion', + args=[ + gql.Argument(name='formUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='version', type=gql.Integer), + ], + type=gql.Integer, + resolver=delete_metadata_form_version, + test_scope='MetadataForm', +) + deleteAttachedMetadataForm = gql.MutationField( name='deleteAttachedMetadataForm', args=[ diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 4e03e6d6c..80223317b 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -16,6 +16,10 @@ def create_metadata_form(context: Context, source, input): return MetadataFormService.create_metadata_form(data=input) +def create_metadata_form_version(context: Context, source, formUri, copyVersion): + return MetadataFormService.create_metadata_form_version(uri=formUri, copyVersion=copyVersion) + + def create_attached_metadata_form(context: Context, source, formUri, input): return AttachedMetadataFormService.create_attached_metadata_form(uri=formUri, data=input) @@ -24,6 +28,10 @@ def delete_metadata_form(context: Context, source, formUri): return MetadataFormService.delete_metadata_form_by_uri(uri=formUri) +def delete_metadata_form_version(context: Context, source, formUri, version): + return MetadataFormService.delete_metadata_form_version(uri=formUri, version=version) + + def delete_attached_metadata_form(context: Context, source, attachedFormUri): return AttachedMetadataFormService.delete_attached_metadata_form(uri=attachedFormUri) @@ -48,8 +56,8 @@ def resolve_metadata_form(context: Context, source: AttachedMetadataForm): return MetadataFormService.get_metadata_form_by_uri(source.metadataFormUri) -def get_form_fields(context: Context, source: MetadataForm): - return MetadataFormService.get_metadata_form_fields(uri=source.uri) +def get_form_fields(context: Context, source: MetadataForm, version): + return MetadataFormService.get_metadata_form_fields(uri=source.uri, version=version) def create_metadata_form_fields(context: Context, source, formUri, input): diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index 34f025eae..fced5d63a 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -21,7 +21,16 @@ gql.Field(name='homeEntity', type=gql.String), gql.Field(name='homeEntityName', type=gql.String, resolver=get_home_entity_name), gql.Field(name='userRole', type=gql.String, resolver=get_user_role), - gql.Field(name='fields', type=gql.ArrayType(gql.Ref('MetadataFormField')), resolver=get_form_fields), + gql.Field( + name='versions', + type=gql.ArrayType(gql.Integer), + ), + gql.Field( + name='fields', + args=[gql.Argument('version', gql.Integer)], + type=gql.ArrayType(gql.Ref('MetadataFormField')), + resolver=get_form_fields, + ), ], ) diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index a2581e166..fdbaa1a9e 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -70,6 +70,10 @@ def get_metadata_form_version_latest(session, metadataFormUri): version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, metadataFormUri) return session.query(MetadataFormVersion).get((metadataFormUri, version_num)) + @staticmethod + def get_metadata_form_version(session, metadataFormUri, version_num): + return session.query(MetadataFormVersion).get((metadataFormUri, version_num)) + @staticmethod def create_attached_metadata_form(session, uri, data=None): version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) @@ -196,17 +200,19 @@ def query_entity_metadata_forms( return query.order_by(MetadataForm.name) @staticmethod - def get_metadata_form_fields(session, form_uri): + def get_metadata_form_fields(session, form_uri, version=None): + version = version or MetadataFormRepository.get_metadata_form_version_number_latest(session, form_uri) return ( session.query(MetadataFormField) .filter(MetadataFormField.metadataFormUri == form_uri) + .filter(MetadataFormField.version == version) .order_by(MetadataFormField.displayNumber) .all() ) @staticmethod - def create_metadata_form_field(session, uri, data): - version_num = MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) + def create_metadata_form_field(session, uri, data, version_num=None): + version_num = version_num or MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) field: MetadataFormField = MetadataFormField( metadataFormUri=uri, version=version_num, @@ -295,3 +301,13 @@ def query_all_attached_metadata_forms_for_entity(session, entityUri, entityType) return session.query(AttachedMetadataForm).filter( and_(AttachedMetadataForm.entityType == entityType, AttachedMetadataForm.entityUri == entityUri) ) + + @staticmethod + def get_metadata_form_versions(session, uri): + versions = ( + session.query(MetadataFormVersion) + .filter(MetadataFormVersion.metadataFormUri == uri) + .order_by(MetadataFormVersion.version.desc()) + .all() + ) + return [v.version for v in versions] diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index b38571c5a..63bd1c2f3 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -1,5 +1,6 @@ from dataall.base.context import get_context from dataall.base.db import exceptions, paginate +from dataall.base.db.exceptions import UnauthorizedOperation from dataall.core.organizations.db.organization_repositories import OrganizationRepository from dataall.core.environment.db.environment_repositories import EnvironmentRepository from dataall.core.permissions.db.resource_policy.resource_policy_repositories import ResourcePolicyRepository @@ -126,7 +127,10 @@ def create_metadata_form(data): @staticmethod def get_metadata_form_by_uri(uri): with get_context().db_engine.scoped_session() as session: - return MetadataFormRepository.get_metadata_form(session, uri) + mf = MetadataFormRepository.get_metadata_form(session, uri) + if mf: + mf.versions = MetadataFormRepository.get_metadata_form_versions(session, uri) + return mf # toDo: deletion logic @staticmethod @@ -197,9 +201,9 @@ def get_home_entity_name(metadata_form): return 'Not Found' @staticmethod - def get_metadata_form_fields(uri): + def get_metadata_form_fields(uri, version): with get_context().db_engine.scoped_session() as session: - return MetadataFormRepository.get_metadata_form_fields(session, uri) + return MetadataFormRepository.get_metadata_form_fields(session, uri, version) @staticmethod def get_metadata_form_field_by_uri(uri): @@ -233,7 +237,7 @@ def delete_metadata_form_field(uri, fieldUri): @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) - @MetadataFormAccessService.can_perform('UPDATE_METADATA_FORM_FIELD') + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def batch_metadata_form_field_update(uri, data): to_delete = [] to_update = [] @@ -261,7 +265,7 @@ def batch_metadata_form_field_update(uri, data): for item in to_create: MetadataFormRepository.create_metadata_form_field(session, uri, item) - return MetadataFormService.get_metadata_form_fields(uri) + return MetadataFormService.get_metadata_form_fields(uri, None) @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) @@ -285,3 +289,31 @@ def get_mf_permissions(entityUri): ): result_permissions.append(permissions) return result_permissions + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) + def create_metadata_form_version(uri, copyVersion): + with get_context().db_engine.scoped_session() as session: + new_version = MetadataFormRepository.create_metadata_form_version_next(session, uri) + if copyVersion: + mf_fields = MetadataFormRepository.get_metadata_form_fields(session, uri, copyVersion) + for field in mf_fields: + new_field = MetadataFormRepository.create_metadata_form_field( + session, uri, field.__dict__, new_version.version + ) + return new_version.version + + @staticmethod + @TenantPolicyService.has_tenant_permission(MANAGE_METADATA_FORMS) + @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) + def delete_metadata_form_version(uri, version): + with get_context().db_engine.scoped_session() as session: + all_versions = MetadataFormRepository.get_metadata_form_versions(session, uri) + if len(all_versions) == 1: + raise UnauthorizedOperation( + action='Delete version', message='Cannot delete the only version of the form' + ) + mf = MetadataFormRepository.get_metadata_form_version(session, uri, version) + session.delete(mf) + return MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js index 5c4d32eae..dc137c3d7 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js @@ -11,17 +11,21 @@ import { TableBody, Card, Box, + Grid, TextField, - InputAdornment, Divider, Button, Autocomplete, Tooltip, - Chip + Chip, + Typography, + Dialog, + FormControlLabel, + Radio, + RadioGroup } from '@mui/material'; import { Scrollbar, - SearchIcon, AsteriskIcon, PencilAltIcon, SaveIcon, @@ -30,7 +34,11 @@ import { } from '../../../design'; import { SET_ERROR } from '../../../globalErrors'; import Checkbox from '@mui/material/Checkbox'; -import { getMetadataForm } from '../services'; +import { + createMetadataFormVersion, + deleteMetadataFormVersion, + getMetadataForm +} from '../services'; import { useClient } from '../../../services'; import { GridActionsCellItem } from '@mui/x-data-grid'; import DeleteIcon from '@mui/icons-material/DeleteOutlined'; @@ -39,6 +47,8 @@ import DragIndicatorOutlinedIcon from '@mui/icons-material/DragIndicatorOutlined import { batchMetadataFormFieldUpdates } from '../services/batchMetadataFormFieldUpdates'; import CircularProgress from '@mui/material/CircularProgress'; import { listGlossaries } from '../../Glossaries/services'; +import FormControl from '@mui/material/FormControl'; +import { useSnackbar } from 'notistack'; const EditTable = (props) => { const { fields, fieldTypeOptions, saveChanges, formUri, glossaryNodes } = @@ -366,21 +376,106 @@ DisplayTable.propTypes = { startEdit: PropTypes.func.isRequired }; +const NewVersionModal = (props) => { + const { versions, createNewVersion, currentVersion, onClose } = props; + const [blankVersion, setBlankVersion] = useState(false); + const [copyVersion, setCopyVersion] = useState(currentVersion); + + const handleCreateNewVersion = () => { + if (blankVersion) { + createNewVersion(); + } else { + createNewVersion(copyVersion); + } + onClose(); + }; + + return ( + {}}> + + + Create New Version + + + setBlankVersion(value)} + > + } + label="As a copy of" + /> + } + label="Blank version" + /> + + + + { + return { label: 'version ' + option, value: option }; + })} + defaultValue={'version ' + copyVersion} + onChange={(event, value) => { + setCopyVersion(value ? value.value : currentVersion[0]); + }} + renderInput={(params) => ( + + )} + /> + + + + + + + + ); +}; + export const MetadataFormFields = (props) => { const dispatch = useDispatch(); + const { enqueueSnackbar } = useSnackbar(); + const client = useClient(); const { metadataForm, fieldTypeOptions, userRolesMF } = props; const [loading, setLoading] = useState(false); const [editOn, setEditOn] = useState(false); const [fields, setFields] = useState(metadataForm.fields); - const [inputValue, setInputValue] = useState(''); - const [filter, setFilter] = useState({}); const [glossaryNodes, setGlossaryNodes] = useState([]); - - const handleInputChange = (event) => { - setInputValue(event.target.value); - setFilter({ ...filter, term: event.target.value }); - }; + const [currentVersion, setCurrentVersion] = useState(0); + const [versionOptions, setVersionOptions] = useState([]); + const [showNewVersionModal, setShowNewVersionModal] = useState(false); const startEdit = () => { setEditOn(true); @@ -402,9 +497,80 @@ export const MetadataFormFields = (props) => { } }; - const fetchItems = async () => { + const deleteVersion = async () => { + setLoading(true); + const response = await client.mutate( + deleteMetadataFormVersion(metadataForm.uri, currentVersion) + ); + if ( + !response.errors && + response.data && + response.data.deleteMetadataFormVersion !== null + ) { + metadataForm.versions = metadataForm.versions.filter( + (v) => v !== currentVersion + ); + setCurrentVersion(response.data.deleteMetadataFormVersion); + setVersionOptions(metadataForm.versions); + await fetchItems(metadataForm.versions[0]); + enqueueSnackbar('Version deleted', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + } else { + const error = response.errors + ? response.errors[0].message + : 'Delete version failed'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + + const createNewVersion = async (copyVersion = null) => { + setLoading(true); + const response = await client.mutate( + createMetadataFormVersion(metadataForm.uri, copyVersion) + ); + if ( + !response.errors && + response.data && + response.data.createMetadataFormVersion !== null + ) { + setCurrentVersion(response.data.createMetadataFormVersion); + metadataForm.versions = [ + response.data.createMetadataFormVersion, + ...metadataForm.versions + ]; + setVersionOptions([ + response.data.createMetadataFormVersion, + ...versionOptions + ]); + fetchItems(response.data.createMetadataFormVersion); + enqueueSnackbar('Version created', { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + }); + } else { + const error = response.errors + ? response.errors[0].message + : 'Create version failed'; + dispatch({ type: SET_ERROR, error }); + } + setLoading(false); + }; + + const fetchItems = async (version = null) => { setLoading(true); - const response = await client.query(getMetadataForm(metadataForm.uri)); + const response = await client.query( + getMetadataForm(metadataForm.uri, version) + ); + if ( !response.errors && response.data && @@ -463,19 +629,13 @@ export const MetadataFormFields = (props) => { setLoading(false); }; - const handleInputKeyup = (event) => { - if (event.code === 'Enter') { - fetchItems().catch((e) => - dispatch({ type: SET_ERROR, error: e.message }) - ); - } - }; - useEffect(() => { if (client) { fetchItems().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); + setCurrentVersion(metadataForm.versions[0]); + setVersionOptions(metadataForm.versions); if (glossaryNodes.length === 0) { fetchGlossaryNodes().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) @@ -496,22 +656,68 @@ export const MetadataFormFields = (props) => { p: 2 }} > - - - - ) - }} - onChange={handleInputChange} - onKeyUp={handleInputKeyup} - placeholder="Search (temporary deisabled)" - value={inputValue} - variant="outlined" - /> + + + { + return { label: 'version ' + option, value: option }; + })} + value={'version ' + currentVersion} + onChange={async (event, value) => { + setCurrentVersion(value ? value.value : versionOptions[0]); + await fetchItems(value ? value.value : versionOptions[0]); + }} + renderInput={(params) => ( + + )} + /> + + + + {showNewVersionModal && ( + setShowNewVersionModal(false)} + currentVersion={currentVersion} + versions={versionOptions} + createNewVersion={createNewVersion} + > + )} + + + + + {loading ? ( diff --git a/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js index 60f12fed3..e10867cdb 100644 --- a/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js +++ b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js @@ -1,12 +1,14 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { + Autocomplete, Box, Button, Card, CardContent, CardHeader, Grid, + TextField, Typography } from '@mui/material'; import { @@ -20,7 +22,7 @@ import { useDispatch } from 'react-redux'; import { Formik } from 'formik'; import { LoadingButton } from '@mui/lab'; import SendIcon from '@mui/icons-material/Send'; -import { createAttachedMetadataForm } from '../services'; +import { createAttachedMetadataForm, getMetadataForm } from '../services'; import { SET_ERROR } from '../../../globalErrors'; export const RenderedMetadataForm = (props) => { @@ -37,6 +39,10 @@ export const RenderedMetadataForm = (props) => { } = props; const [localFields, setLocalFields] = useState([...fields]); + const [currentVersion, setCurrentVersion] = useState( + metadataForm.versions ? metadataForm.versions[0] : 0 + ); + localFields.forEach((field, index) => { if (field.type === 'Boolean' && field.value === undefined) { field.value = false; @@ -137,6 +143,33 @@ export const RenderedMetadataForm = (props) => { setSubmitting(false); }; + const fetchItems = async (version = null) => { + const response = await client.query( + getMetadataForm(metadataForm.uri, version) + ); + + if ( + !response.errors && + response.data && + response.data.getMetadataForm !== null + ) { + setLocalFields(response.data.getMetadataForm.fields); + } else { + const error = response.errors + ? response.errors[0].message + : 'Metadata Forms not found'; + dispatch({ type: SET_ERROR, error }); + } + }; + + useEffect(() => { + if (client) { + fetchItems().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); + } + }, [client, dispatch]); + return ( {
      - + + + {preview && ( + { + return { label: 'version ' + option, value: option }; + })} + value={'version ' + currentVersion} + onChange={async (event, value) => { + setCurrentVersion( + value ? value.value : metadataForm.versions[0] + ); + await fetchItems( + value ? value.value : metadataForm.versions[0] + ); + }} + renderInput={(params) => ( + + )} + /> + )} + ({ + variables: { + formUri: formUri, + copyVersion: copyVersion + }, + mutation: gql` + mutation createMetadataFormVersion($formUri: String!, $copyVersion: Int) { + createMetadataFormVersion(formUri: $formUri, copyVersion: $copyVersion) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormVersion.js b/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormVersion.js new file mode 100644 index 000000000..440b988a7 --- /dev/null +++ b/frontend/src/modules/Metadata_Forms/services/deleteMetadataFormVersion.js @@ -0,0 +1,13 @@ +import { gql } from 'apollo-boost'; + +export const deleteMetadataFormVersion = (formUri, version) => ({ + variables: { + formUri: formUri, + version: version + }, + mutation: gql` + mutation deleteMetadataFormVersion($formUri: String!, $version: Int) { + deleteMetadataFormVersion(formUri: $formUri, version: $version) + } + ` +}); diff --git a/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js index c518ad4bb..d540daaa2 100644 --- a/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js +++ b/frontend/src/modules/Metadata_Forms/services/getMetadataForm.js @@ -1,11 +1,12 @@ import { gql } from 'apollo-boost'; -export const getMetadataForm = (uri) => ({ +export const getMetadataForm = (uri, version = null) => ({ variables: { - uri + uri: uri, + version: version }, query: gql` - query getMetadataForm($uri: String!) { + query getMetadataForm($uri: String!, $version: Int) { getMetadataForm(uri: $uri) { uri name @@ -15,7 +16,8 @@ export const getMetadataForm = (uri) => ({ homeEntity homeEntityName userRole - fields { + versions + fields(version: $version) { uri metadataFormUri name diff --git a/frontend/src/modules/Metadata_Forms/services/index.js b/frontend/src/modules/Metadata_Forms/services/index.js index 74c383379..4b70f755c 100644 --- a/frontend/src/modules/Metadata_Forms/services/index.js +++ b/frontend/src/modules/Metadata_Forms/services/index.js @@ -9,3 +9,5 @@ export * from './getAttachedMetadataForm'; export * from './listAttachedMetadataForms'; export * from './deleteAttachedMetadataForm'; export * from './getMetadataFormEntityPermissions'; +export * from './createMetadataFormVersion'; +export * from './deleteMetadataFormVersion'; diff --git a/tests_new/integration_tests/modules/metadata_forms/queries.py b/tests_new/integration_tests/modules/metadata_forms/queries.py index 362a38df3..931418e3c 100644 --- a/tests_new/integration_tests/modules/metadata_forms/queries.py +++ b/tests_new/integration_tests/modules/metadata_forms/queries.py @@ -30,12 +30,12 @@ def list_user_metadata_forms(client, filter): return response.data.listUserMetadataForms -def get_metadata_form_full_info(client, uri): +def get_metadata_form_full_info(client, uri, version=None): query = { 'operationName': 'getMetadataForm', - 'variables': {'uri': uri}, + 'variables': {'uri': uri, 'version': version}, 'query': f""" - query getMetadataForm($uri: String!) {{ + query getMetadataForm($uri: String!, $version: Int) {{ getMetadataForm(uri: $uri) {{ uri name @@ -44,7 +44,7 @@ def get_metadata_form_full_info(client, uri): visibility homeEntity homeEntityName - fields {{ + fields (version: $version) {{ uri metadataFormUri name From 5a5953c44516e0634ae625a1a65c80b7aaeab8da Mon Sep 17 00:00:00 2001 From: Tejas Rajopadhye <71188245+TejasRGitHub@users.noreply.github.com> Date: Thu, 17 Oct 2024 01:51:13 -0500 Subject: [PATCH 126/188] Changes to the logic of calculating expiration date (#1635) ### Feature or Bugfix - Feature ### Detail Changes to the logic of calculating expiration. Initially current month was considered into the calculation for expiration date. But this resulted in a bug while performing unit tests here https://github.com/data-dot-all/dataall/pull/1594 and also this was not correct in the sense that if a user requests a month of expiration at the end of month, that user will get expiration at the end of the same month But with the new logic - https://github.com/data-dot-all/dataall/pull/1594, more than half a month is granted extra . **To minimize this extra access period on share, this PR proposes new logic,** 1. If the user is in the last week of the month and if the user requests 1 month of data, allocate the end of the next month. 2. If the user is in NOT in the last week of the months and if the user requests 1 month of data, allocate the end of same month as expiration. ### Relates - https://github.com/data-dot-all/dataall/issues/1083 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: trajopadhye --- backend/dataall/base/utils/expiration_util.py | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/backend/dataall/base/utils/expiration_util.py b/backend/dataall/base/utils/expiration_util.py index 5c1a245e8..68caf4727 100644 --- a/backend/dataall/base/utils/expiration_util.py +++ b/backend/dataall/base/utils/expiration_util.py @@ -1,5 +1,5 @@ import calendar -from datetime import date, datetime +from datetime import date, datetime, timedelta from dateutil.relativedelta import relativedelta from dataall.base.api import GraphQLEnumMapper @@ -8,22 +8,25 @@ class ExpirationUtils: @staticmethod def calculate_expiry_date(expirationPeriod, expirySetting): currentDate = date.today() + last_week_start_date, last_week_end_date = ExpirationUtils.get_last_week_date_range( + currentDate.year, currentDate.month + ) if expirySetting == Expiration.Quartely.value: - if currentDate < datetime(currentDate.year, currentDate.month, 15).date(): - # First half of the month - extend 2.X months - quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3 - 1) - else: - # Second half of the month - extend 3.X months + if last_week_start_date <= currentDate <= last_week_end_date: + # If in the last week of the month extend x3 months quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3) - day = calendar.monthrange(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month)[1] - shareExpiryDate = datetime(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month, day) - elif expirySetting == Expiration.Monthly.value: - if currentDate < datetime(currentDate.year, currentDate.month, 15).date(): - # First half of the month - extend until end of month - monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod - 1) else: - # Second half of the month - extend until end of next month + # If the user is not in the last week, consider this month into the calculation + quarterlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod * 3 - 1) + monthEndDay = calendar.monthrange(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month)[1] + shareExpiryDate = datetime(quarterlyCalculatedDate.year, quarterlyCalculatedDate.month, monthEndDay) + elif expirySetting == Expiration.Monthly.value: + if last_week_start_date <= currentDate <= last_week_end_date: + # If in the last week of the month extend "expirationPeriod" number of months monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod) + else: + # If the user is not in the last week, consider this month into the calculation - extend for "expirationPeriod" - 1 + monthlyCalculatedDate = currentDate + relativedelta(months=expirationPeriod - 1) monthEndDay = calendar.monthrange(monthlyCalculatedDate.year, monthlyCalculatedDate.month)[1] shareExpiryDate = datetime(monthlyCalculatedDate.year, monthlyCalculatedDate.month, monthEndDay) else: @@ -31,6 +34,15 @@ def calculate_expiry_date(expirationPeriod, expirySetting): return shareExpiryDate + @staticmethod + def get_last_week_date_range(year, month): + last_day_of_month = calendar.monthrange(year, month)[1] + last_date = date(year, month, last_day_of_month) + last_week_day = last_date.weekday() + start_date = last_date - timedelta(days=last_week_day) + + return start_date, last_date + # Enums used for dataset expiration. # Could be repurposed for environment, worksheet, etc if need be From 18130225f33996ef680d7c29a5c7f73b38c1dade Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Fri, 18 Oct 2024 11:08:26 +0100 Subject: [PATCH 127/188] Metadata form Userguide (#1596) ### Feature or Bugfix - Feature ### Detail - This PR includes the documentation in the userguide for the metadata forms feature ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- UserGuide.pdf | Bin 9229891 -> 12043758 bytes .../userguide/docs/metadata_forms.md | 137 ++++++++++++++++++ .../pictures/metadata_forms/attach_mf.png | Bin 0 -> 309329 bytes .../metadata_forms/attached_mf_list.png | Bin 0 -> 216249 bytes .../pictures/metadata_forms/mf_create.png | Bin 0 -> 175563 bytes .../metadata_forms/mf_edit_fields.png | Bin 0 -> 325086 bytes .../pictures/metadata_forms/mf_levels.jpg | Bin 0 -> 185856 bytes .../docs/pictures/metadata_forms/mf_list.png | Bin 0 -> 450082 bytes .../pictures/metadata_forms/mf_preview.png | Bin 0 -> 200255 bytes documentation/userguide/mkdocs.yml | 1 + 10 files changed, 138 insertions(+) create mode 100644 documentation/userguide/docs/metadata_forms.md create mode 100644 documentation/userguide/docs/pictures/metadata_forms/attach_mf.png create mode 100644 documentation/userguide/docs/pictures/metadata_forms/attached_mf_list.png create mode 100644 documentation/userguide/docs/pictures/metadata_forms/mf_create.png create mode 100644 documentation/userguide/docs/pictures/metadata_forms/mf_edit_fields.png create mode 100644 documentation/userguide/docs/pictures/metadata_forms/mf_levels.jpg create mode 100644 documentation/userguide/docs/pictures/metadata_forms/mf_list.png create mode 100644 documentation/userguide/docs/pictures/metadata_forms/mf_preview.png diff --git a/UserGuide.pdf b/UserGuide.pdf index 08687e42f91e73acc62e96cdc7550ef76f4d0e7f..81125f6c300a8f8ca11d2b76a8f491601f122be9 100644 GIT binary patch delta 3292023 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%0Ds%piKZi9Il%)!LrTjfnCL@<*bJ8Z*rA446bJ&9q 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Μ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%0DrU0>fQ7hPH4RpTvRR-{r6

      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≫@5Y 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

      rxzdp^Nfhvub%eDGB;)3?x>sp=Sx&8@80eh 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®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

      FGhB1Pb}XhpvD`f&|EJ>OXzO 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%0AjNUY9d2~H6AGSVZT-*Ms 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 z�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 #X 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

      $XsC3y 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

      hz%d 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

      &FViUK-(hm6?s~4gVF|L;yi{P)^xno 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 z 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%0Df(}-5e3Y!Dj!+j-1D-V>sz#NzjzXY{grdZy+ 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 z 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%0AN= zNa(1tH(4pr5}(KDcHzyLA^VCH$h2+@4OgAQ^RY4W4v|Zl&B~1&QhbX+CyI{|{D)pO z4oCq3+-3zB0$;Zmz@d*IR$+HmVPf^Pje1@x7`x-VyugYf`9ONQ%S7MGe{K_^%#1>m zbfi_t2Ws_3IP78msfZ->B*-n(aEyg@JEK{k-$7X%nYTGj)t#rmjCDymA)_Eu)2W{* zfBDiSo%EjI7BF_Kfx>1rs;c(Vb^tQdSMgJqs_QIkqoF*r)Cdp>^d$<*ql)$>D zEjIzeNl(%TU_~b(U#Zy(v1YxsK8u&d>gPwQ$A^%b7yF#+|LA^6rTT_88IihfZPwHR z$djEZ!Fm6F3lT6qYHJjMdFOn?xQ)vGlxM$E@JFb+ISNmhf>9;tHogew*v*;Eoytag z=b-eWqVAm@EY@S<+mR)OG9V%V5LfkLrZZHO^pz`4P{+_!9tHPHLPAF6E}Q-BVqm9q zyWe{~|DnR;iEUBS>Q6cG5fR0Ul+2`PgX81l(^SOH$U1!1}3uQ@_ZU|mL zQDkG=Y9y^oNJyxiKQAdMoR=RoH9ZZKbo~8L2*O2vP@34xvMwL)Xow4xV7d$iyR>Go zGoQKgsBsOp=yCvmrhJl!c(r) zffBrYQeDO1<_)~Ua!rGM!QM0pK0n_9K(-eyWc;cbfK-?+X|T!*2+n6}CIlYmQ1omW zi<*ks-lp|HJv>QpTJ;omN+l5ZHgJ>s@1owj(hpMPnxXw2Qns!bn#4y5x&`_SX@~gR zX3zY7JQDwfl7-aFd}|a=*iFjepY-^gRQ2?pIajbd_=A|d6i)Y_v$5IPImF)!s(S5( z?{|9w`A8&^f&g%SWV!zz_TD=xswdqVMjbOj6hyLu0f{O(8we^%vSbrE=gdJ-Ndh85 zOGXfcCbURsa*GHkNKOJx&N=7wJqY-lJKxND-*wl0=l(M+dkNij&Z(|CRi|q2{p^Pr z_IpagJNjGq)AI5W@pIEE++huAwf$hsmU&Zuvtb$E+dNhk2|jC8dV)?LAp4bZ3p=9( zp`45ir-Osd@UL^1M;^GscCLEq#h%Jw+CK6??uw-=|5h^G6q#_pH5zpQVN~qlsh;;o zq5$z-RaFyq&cMHHLMyO!?6`x$KD8h=+h%V^O^~zq!8gQvmxfo})vKWst8;@EYOD-VH^EwfIL-=ch zb>*Ctk@^RX-xr1r?MktX^&GqWJ`wHJ1BRu++_sk@O}Nw)K35!*^1C{*?piqiLrquz z{jI(7j(1E)4*4@?KYpzeHz{)8g898;VMQ2{*KzoGCKY$~<9l-pd&&(yT&|W`=LP2L zq<4NY@fS9n;=D^12$zy+C*M6=Ot1w8FU0!2y<7@ud!MWLNWwb+CBphWKPhkT%VpA; zy$v_!HnMq+7}>3aqV86)2l!977~zK}cTYkv^fzAQZbJl}yN} zy7ecVz9RXae`V$&0Id!$Q{82ekHfRgmJw4(+7oOig2#tuQvTkTjL0?^S z7zxk5xchPU`XGC5?hTCTR~hw)R~LQZw?BvO94U}$l+_xZozSG$V%RZoXs=#Fe|xkO zLk=g>td2L8{#tSqA_ODLgO!y%Ijz;R>36PxKt~Q~R#cVyQC_vg8w|}%79Q4iohu2M z*m;Hmh_Pvj!s8!h8FOE1?Om@lKkd3w6|0CzYDzq9d}=Cmhw&yLfIh3-9K4v(R2gI3 z7N&hD@`uSkR<%hY1A{FxG+uQYOZFQ~NZp2De&Y{ttdyCyite#_PA=1`>!P>Rf|Cr5 zcRTVrBl{T|UW4mhA(Q*{ziBP6uZT)YhbuQ-hQRvL$Y*zv@?&ZyTV z$a3~9U!-koH_6V-%C^bEp+Ofpr8d0MSWFYFSoI?{EEJvv$7Da+>b+YV}x+ z@Y>g{$!J%N+xNQ7D^(HbKQ!8i)cc6J^AsWsi?Ui?7O;K66s<*nq|e<7)W4QtrPpDr zsHN3W9?e0+tM~1jW!#n~ZlF0lp{1#5qrhRs-q+1G#BYMiy1j~Xb!jBf;mSb6O4meZ zJ}z)(O}|4$UX7fR)UNJDiN5Hv*j@FqTh@>#%;i&uo=%osU;C7+SvFS{9bF>u|7+pC zUQK#(HEaQfL&#wKqqdcgLm?Wbi<}%gj)E3#5&?AEPh6O%shiEcyuEX++JdWRlGCD2 zw`EU^DjVC4|7uNE#aQ-noFw&=pe7^Za$5&7VjjX$=7;MxvfIt)78kV(o&3Bs`6urB zNi@9SJ&<`9LTVga zoB3_xFUK;$P<-0FZ>kG~M1_TizAeyk#Y_d&6n*Z;1}|0RrD~vL8BU(*-WokF_e6K7 zI&`fu%JnFR=+=Dzlgr8uZ0O743SvJSO+K!nt^S!i6R}$OXm_4^#B1bXa9?ir+D=6kiBl4u!9ydQiPEFdm z=-)c`s!W|Ui958@WgztNao8(Dp4|qcEV|o5Tu%K5<0J_A-$n4~_P+Z$9>LqSp(J+l z%^T2~2^g-w00?YRtdHTdDAH4_G37d#(wb#G4^t1Z{-D?QDtqB!!m+wc{AB1w{oqnN zLV=0l0_XCxp0}+|nZDVXa4gzDTMoOAt|He12M&mTE4jtN0IPb47%D9-jT9_@4#7rF zj*H{1C3+c6(aK6T{TH5RWo7C4wmO=mT=nr%NfvBhBFMakU0Bj z!av{)&-cksyw}(nMm#ykj5qU4nu4|pFxJxLGU4_q>(;l_)Jj9U_^2%MLHzON+Ff`S z&rdb;aObZhjY|ScbBkVvLpr8hr^0rY9`-Q}BjO)YQc}?9yJBec6Tlh<$OqI@7Y8-W zW&w1Pl}$pYkdao_IiC_#Pt+n{Fr-vlJ4H+=0dBERS-toLFT; zhS)8wCf~udXr-cd|FwOMY_a%289vr1E-Bq_qVV^!04BA0yj8aT&O^rxbW>k?ENGpy==lO8=vM0DJ^{f*!L zgu$Gul3Zwxs_l%t#c<1Yqd+(_jFHHg8y$_6e3EEBRejDi|2Z@ql-pele{qFc0W5I! zakm9E9fp*Bxz^HB_Q$%tvftm3pI{i>YWZI2 zps2vG%OwH2y1ERX4I2hQ6$WWT z_%85Y5OG6nY|29>$=toZ`+z@}bWgbnHUtTSTN~nzknN&j zMEatll*q z+k~8Zt42L?2nz(-fZ7$u?Uso)T0~OJB=$t=lVj@u^mZ3~Kv(2kWz4tpPfJSepoq?~ zws(=TZ+x`}0>fJ8C~#bln(`p4V3rM|0mO0sUdwOK%kI?wXU^yEcM`~7Cc^)MA^Q8$ z|MP`+`JcaMs>IvtiFO__Ig#JLPlte$SC~9#IHa)M&3l!h+E%kSzuGei_`jmM_Ky88 zg^_#!ggMWcIr-<+PDJp)WOXdR?wWiPX^7$YOvyQd-0uh6ox7MD-U znVtRh>sLIEO-4qhVaztYBVR7++K+C-U!UA=N!hoY(b4Jh4!Rhkso> z%s=B0iRNGscA7tffF|qq?e7300SL^-%6c;JPS8asM`wLqJtA7W;>8I;Vp<`-jkXaM z)if$Ti|bFGJW*F)eN!q`_KLOv;wu4%Qf5&FO3Wp8Fnor7Z|j`tH2E3lc;Dfj7lfq^ z4;PDWX|8Q7iE`ccY0os|1U6}-Z8=pt>*6KklKt0jM?DUcoP-$2sWH83K*Cmmvxju% z30mB2=g*6YrA1n%qEJHtqU>$irfVP)hPnAHL!4v))aMJRZ&fhbee~U;P{-=teNXq5 zyd;6VC~z6bLv9NcMRbvCgbtvt&^G{&(sxK(TK)iit=Rd?R}IS-kw}J<9hX-t3{~Hf zp;GQ|dSX#6S)6GLv$NY-q`Tg|lilcBo#-sQB*>x>S9j>(K|gv?b~ZNGnn__{CmYm2k>OC+)y0|V z>192n_~te)2AJEg>4zXyCpk`{sBBv^S*WI_26}Gb#z4sn!1iHsKD0a+QQ$gq4kZ0^1eh1G$Dg=^Umve@&+6+f8mSr{@66 z8XFxI11L*L44~sI-MQ1GhFwL4C~OPxK;B+;1_i65$uJ;cM-$L4wEN{_R&u1w%(Cuh zsjG4_O8S9r5x#>{p$H30rBPNhLQZ#DMd^M&tgVoK3kiv6kwW;f{%j52s%hc;jQsrk zY}~?tYC>caROttWHecQ?&qdhI9X)&!%7}f)$@%curX0rc>hkKhQb+);jjgv@}7&6{dk<@xHTQ5&EdZ_=Y)WowA!Ps zO+BM@T!^Rn%r^C=2AC<&9ZQ-mkz5W%ZLG?_2bFva7n<{x^?Quk3*#>>0JBj@tByiq$@pZ^lqCY`awx%-@JO3 zszW>CBuPj^t&o|1O3pN*3=ZekuDJc}cB$@a~ zbC$81T4<{Y&l$o6&bhhSzC+&(v($$e=BK?Zkf0w*+S+MobgM~cp6*yPn+7a?rdG;3 zV2aelnia+}0aNq~x8<&lf&HJxAz~^EV8(%G!DwLJHuAuQ!Qr-y*pqMGRNGWIM4ji^ zjg9v81-*Oi5NlXH@tu}fQr1q^P;I15v_+s?SV(BxZf!*Pl(@XVDI{0v=|}YU@ETbZ z@EkBZwgX!C<>`S-a-ogvXswU$WE&E+TCe6kb|ui_ICoC|V}lmYLjAPYwA;oiF%_2u zXx$-Ky7TzsEhjFs>k;63ef#z&G#a{9L_}oE#ip|qr8zz}Mt$PMgDVb@4+c6nFE4M{ zpBAW)M*`&tA+6I5Mn7GBeN`nT>1a2Z!JeN0XFtC5HY5bd*CN+dzLKTFwZ(gHS-)puGCm?4)W?H3#qT{pK7Q9~4)^^&tIJ~Kmj%-hHJ?QcB;HQwa?_xq z$Ki@IAp%F-*NqCEN-)|$f4ey0i|C~Hl91k!mTvp3JNC`{6nl|_4|GM2rQ)MUZ%TUZ zuUEc-DZR9G0oy(SMifYz8Vdt%BYXah6noLwWIhZ!*#7d{jlYwi60|t`@YkpJhly#B z_t?@$t?;0*1I(P}}47+VvOrXZ}oy$iO${ z_WneuAUmBwVQx@K4-;7M1c$;jST4Nr3)X{1Mn?X$LL=r6Ak>{vf_SPfuDpzhT23Ih zSY)uguy@1|`MLw~#DpfI1s;A~hMBLZs0b!eg}m`4U0@Mp6oi2Iw3N5h(;G~RuFp0d zUY_YAzDRqX_b|j6&re+%8iipmYn;L@yx8b_If;^J5bxA5&q1+%+l=@Uwz8_jCzh#< zst+9dt-8NF4Vm0o$mehlK#j=jiVu8!(dFdi zq|Ie!A}uX#YC7@sz)@;mlN1c68$PEt`#or1oEOI-3M~VLYS|`CdV1<0G^kojfMa080zM zs2S4sd9G|MVZ=t=x3uj+LUBpo3;ivAhwEKG$MGm_MD*(AR(=sne4-&rZlp1NqjUM2 z+z{e?cILI0kchc#Z}D4tM0+%1u2_S^WwsRCZa1EbG@FtKD}zvmLW|F3(L?UT2VEhq zAxLL@xZQM7*_gLzqjN~lH@?{Rqn3#7Dx!>fdFU|h-8;@RO-l+5pk9^zScoi6#7PpS zw~m|RwpL!my)?rYbWm=T+l{%bRkbXRbueyNEXL}%ZMl|)={Y;3qT2Qr%n@^6+g^I# z2JugwhmPyQ0!GU16sgBYki{7Ee(+98GK5eKG+H))v;qPP({!*RJ;?R1!*y{liK&@k z4bbzFIt}vB;5asf=PU+uEGcZK=pY*$uPNRnOWoSq8h+8#&=~s{dK@r((B3BYI50$G zyk30U3$&AR`z-`veCr@=Ak8jwX-lUwviO3RJ>Oyd%ciSKL8170uJg+a6wyB`St2->lHw~>MHi>Xdv1j<9}GFM zXUZCp3-=?iOf#x)*)+0Qh1s;kV%sFeB_)y7ANsI#VCcm+>dqxp5qtLe)(pXO9;SQ% z54G}bfqK04=utha1k2>ks4Csh)UQG4NP!M}EfJ@dGp*rUdXk==9wG`2roRCCQnazk z>;r45gVpvpEr7{@Kd&jPIxytlDg0PpQ`i=6E}ErwQ5B3%o=KKh;~764WL58e`|I^* zv6QNE8-r^)5n~k)O#e9FHcH6yr~VwyxStttn!<%n{p!B7$T<5cVZ?%uQ&P;VXzWI0 z_Cq@7vpuzq$>uDWM6y88=dWYMb)LWc8_cPi0=oE=!%@Eq?Qvc-ckk%r4Idv`_wJJ% z8YC}R9rR>)^ZG5#NgA%c(Mm8gbvqqg;=G< z4iUZ@qi@kc0Oy+M1#_IfKEQjm;9da-wAZ!wJc_&f`r?*q=`}7fGgmY;Si}9hK+ghe zFIWj?0;f$0f=VMJ=3IV@%um_pIE1%;wbQ$#gAmyA(ua6@JGu`a^nm2s;&EF!C=P0p zt?4=Q1?$BLx$));2{Xr`M4?Z2i*7O!wLat;`B=cLt>E!MG&P7rsHD@xrE~t=^16=5D9KC@A|qY*3?Iz z71dF0`trp+?l7!4fb|~}ZI&DrDAX2%#bYuYk46)Zi+(ceaPmY-NKc-$f=FH>S{|i1 zdDv6Q*|4R`vM?wk;9=KZO)I#)BK(z-y=vGT=f4l0bcLJsipk9;%ai37E`=#>(I=Jk zSn&B1It?$J&M=m=@+}>G-$Lu07RywgnrqWKYHS|nI()B<93`{5;8`OXP!Lo6+_&u2 z^7w`-h<&sXZFx2Nx2i2?l$B@Zxf7G~_|&Irv9#;t<$i$LV0m}e)zfRy8K1M{kp zsv<7`l91A6UJZh*9A8I9_DxOU%#aBI{Z9}_yDj|r`ZX37Rq#0TEoESsXcOldV>>W( z0uJxe-wKTiTxipv-{`O=iT_|bQExcrFI*j zo1gA)CtLybG@gI!ft67WUB{^0R9mj1)!jUnLCI4O|Fi-#8{5WQO%_D)MG848D6J*R zUX9e#Mk2xTWpSds)rJqm8JU?ju>Td$_9Y}C!EL?_#df$Q!-F`Cs!+QtPI9TcJLXQ% zB`QKBEk5DJ!55K_1Z+ne?<6-}ym%h^ST5JW%D~{ZwDeC=y$(*duMXQQwE5}joZbo+ z0h{qF{m;%p;#CpnC6XMhBS~jNy!HI0XpUE}jszG{kT$X3#E4d3yj{Mq<|Are)D!0B z>I5PJ0F@`7-Plk~?O5KMfQOQ< z?hwzrdn(#>g&O)g^iu>|JQ`5%%~NdHr3(8fjRq^jlf zr|DoSIUX^HFO6K6Cq@Q5Ily#so%qW zT&er1H}}>2v}~ln!eF?$f-*NR?^3=w4unMD+~hlgcN`s1oUmJi6%^#k22n(TZsiNu zo6W6`b-E696cnsSyRAC@e0LQz4j?VOdeyLWmK?&7gE!Xdbzv8nGgC$l;@g%KZAIK+ zf!Z)|R?Th%|Y&|$nQF1j=;3HF%;_fbl*O;)?7K^rP25OT%;?D zo~0g#7uUu;R8v*jFX^zdvNH2ej%>LOM1G{p-}0#}N^hN5>pi98GEsQwl*s!07;0;7 znI6ZUc(u7`eRb`zB#E^@X4U%f4f&bx?>$m^+657Mmzl2_a}j+>Bc9O?gTbv!`1Kl3 zy(&wlP>>C>z8ccZFO^BARF3ryaz9WpJ zcJ7OKjR~+x8Ohy-I$gdRny$M5lrOn8B;@$@9XR-YxRu1v+f_Ez zLNA&>)uV4W+1cVCS~c{04ZH_X*1o-a*B>`Nf4`ilj_OXcKQRQOiS_Wk=dY#lr&efb zJR`S;k5g7s;XZTpC~`E+xhoRnY3AAYB?xIV&5`=fO_P^{sVDwetmU9qbhbWi zT~~mZ0H?yuNRpwgT(h}!B=>JsL-_C81UP`#BHB(K+Q|)QhDYgbGJ3{Yb($)=%>0(7#9{h{=%FN-x z&hSnDUcmG`es=w2_QD<~9wEY8Rh2JxaM@vml)5s(YJMFwB&Qs zwGyX7QF}Y-OlD9%cphHsKdsEGoQ01ag@#N(?};l6F5oZlk}NKzq;XTrgdhpbp!q-> zR~2tY$tdp_20%rq0KTE?HfBoY;x?_SzpLnudH;uyC#W_Dx*TK*$wogx(10!*?~6D8 z2UWtM!tA5GhL(`T27dd8BgZn)O?q&EO1RcXTLeYDr;~^{`59x(NGT9k8e|2Q^XVBIS!oK z`~a`7Y+-^*oO+5(fxf_BeZ~&@^B*P)*M^~2!#*XTZs=dr2>*2UcL9S7|0v6`M&S$E z3>Fufc}>kG$5JsoVSknV9R;GOk@u9b0xkX2?PWqL<*+_e@-=Q#ncd5MS*Ze$xOY~a zUak;zqebapA)x@h9O7!}X!;LYkv%1XqVlc`0d2H<4tJHWepYkiU(qKJ4iFV^atsVj zkoHamYu&f~2f>O;xUeu*C?Rqy6y;+$6dk2umepEQu#+7Sg6x$oEdQb+h%HEHE?jN_Qs$g3c7YT46{d!d|8nJT7gFAAIU_pLj3;Z_kg|h zt&2q%8!@q)G=hLY|Emn7K>NXwbeSCk+NO4_l!0w(Zf3ob@?)Mb)@rP)5jPrjV`wau zWS(=`VRX(X8GEUJhG9n%3<4!et1kGCDLl>++T!pJG&$~=b6j64|BIjs;Tj@Wr9ic0 z+kD(>yCirq`IH%51wv~3V|8ht zSVQq7{=cf{6N?TJU<{8q@Ws&b{^%r)B7(5ot97#Prc9GT24zQ7hT7k%6i94%YMhXSDjv*Ok7zxzr-vp z)oetMpj-1%T57i7_-LSvx_aF+>)p5~izr1gGUX@=#M*4I z;DgSN{jMpt%l~{?k&_ow5{JU8qq8>;a~wJ79t5J=yn=hlEi7n>54MG5O1nj`8^?Gh zg0RJg*is2Kcq;P1b;eOd2~8E*wt6~zub&La-{N?T>qaN+G;}SAsk1@t*mK7AoVG{I_#Hu|}B;KC<$!lrLm)>uQVKaPmOiPL_U2(0# zif`NwiS+y!TbD%T7t6;v*Sy>pxEpJcN#zsECq^dEO*IrUWS1PD5c??)Z#F&OuJ;qblmf<)bxIoXOlWkS(flDlG-(rM7`BX7J>pN(Se+M86(jfC z7XDyIXzY@=(+Q(X&9I0dO*L0iJoQ0$y?C$KL?75Vpw&~WZ^>t&C6vkhVwvE*+sQ;# zdpAL*fKRMf$vJc^ADL$?6S3#5xb*f3;=)@ry`Shq2hR!|wunNLd?Qy5WE{zbLwhwJ zOyZ;C7hVqTjT!X|;__lNz4yrUohI*bQz4$WzV%of@vYjINsJ8iNp9-!pG?F;*6f8p zRUdfe6ETwO#pI8318%jJiU~=*yk+dj@4ce4S7vOGu&VT2EFZ#uGU~vW6)8gpu}7O* zd;Hw@z@NAIR}T=x1S{-y5R7&Fk?pau%YU-(MTtSwU*;&j09;i7z+Kb$2s#pA|L!E~ z>NxDq4}7AzQk&GYw5}UOoRQ@KPXg-zQeLb{t5KGE_*5)xB@P}wY~GfW6u2EU`-f^g z6*xWp3Bra<@Sl=CfBw8e_4|>&ef>-_&=5wR-uir=gQKRhl0}HY1-L>${sEI{2a^lE zJUoXehsX%cALfzIdQK}JT&S}0Ls$3as7$`4imJ+r%45fmi=Ss?WV|FeR2FWwtq@;b zpcXs-7Xb-&>%gNGfAFYQd`XB<;zil3TUtJz#XV^KJW$;r{$zewzT;8;%Id0~{t&3b z)c{HdL)m%bj~KN=J%BJD_B`ak%~w1>+6N@t9I$$PxYfRZU`Rp>uEo`rRqdZ1_Vtu_ z0`($fID4Kn^qTH$?RyFrkbnU2@~X&UUXtF;B>leFlg7lr4&>2e0DgdiS|19_g5U;* zYlih=9OhFXPbOuQ1gQpm&k1~bhIrJa-S+REvg+EX0)4fVROQ#NCF0*eTMt2IRD>_d zE4P?fSfY6*DiRZ!NJlz_?SNW@!__l~FM0B9ZxGRF2CF*p$CCb3p>HBSgL29pad!_l zE0R}M-cgP@R`h?K{k)Bzc?Dq1A#HZQ%^E*L{eub1JWS%%_;MLJXS!GNg=!fgv_6%?xny)4ms2I9aY-xh_uz zIxx*EPbvr5Km|t{SVBoj;ZJ#rjBGe1*STd9cq*aEf%=99L~AyDyS`OL_9{>jUb9~g zS4O%KKp*St8@8=h=AXcchznyjnF03Bn2KyFbWX9RpioxEX)Q-K8Fk>0ExafFXj_)? zjT;X+MK165$MsW|V|aYG;T0-BhLhyv10y5+mi1yo4qzE2F8;!cM##b7`@vg!Rh#AS zJv4m$;-KPXG*O`e6%-|YhVTlry&e2oENU=+T! z?Mt>gKM@4V`+61-xmWW;;2a|#AJYZ?+)WlxEIzP$c;kIZ&k+(5d+pK(SKu1pU0i7R zC%n4$CM?vZ8k2&eG0_1SIU8_-%eU#wGF}3r4t6Bx9)5patjHc!;M#7dql1%TFXZFq zo@lv%lZ`;Q00@Zca$SS?*N6A+z22r!n6uSWq0Jd3{Fyj7I53H4xUHT5$Py`NH@dJ| zhUvs1H~{>6V|&316^(Y9?!G~KnT;(=J=Jw>J}EKrd)1HBXc*u?VM_Yb$jfWX%d1^= zYGlf2bs4@l>s`6Gm8sr0861uT(D2_BgW>f#i&S>N^Pr=3r>YaDJdpB zyj|+7AweK*9OVWd!XrdPsVOO%tL^m#1uhVc#k#E{r9NR_#jT1%W>&ZSqj1ZpQbmqv zrx9Hg1av{{@>J1A5p+rt{ce~zL3fJ6{|^HYa0Di-N-un3YeEaU8IZ;Z^Ao~hXf%Yx z0tI!6jhc$esini79T<|vMkP79n!c!5^k`jv2)%Gx%NT?ib>$*EJhR1JW}gfjy3Wz7 z)QS5EYF+Tgg)4VxdF!%UP0F`3;bGh5E^vtkOMTx$n)E#^ca4HTiDaJ0*5R&^n3kpu zaYJ|R+>zql+XWgt9Qx%nr}v19iq{O^xE(gL^P^6;XS1>`#Q7i4AED;>d84lxj@O<$ z5Qf?OFhkMFH;2aA-ZjBi2MAdNXk*M1LaOgEPHc2|Cbf)#D30M`-mM1P9mWx!fBGIE zfcH2w-;r(hgNQRt$Z5KXB5Jw65G9vC2!BWLnaxvT?QT*Kj*8mNe<~YV#?FMhHN^wN zQyq}5^_ZQC6OZ%LnX|RMNM$%RB_b{7QSO>yHqjbqymyi9Yh=e$FC(C8ZU~vk4^phx z$O}}QokxIS8i{!QI>vJlABs|a7ZlFHAj+Y(33dlnU2TR|bBnu;*3Am>2AX1<8{hEM zQx0EDczDl1`kYYf8aBYAGVZf#WKTFj+K#bNs%l700AgU<{!hhOSqZ#dYvaQhAPQ~9 zWE$3%CW6C4(x*KyfU}aNe@%|l=m3I}B_t*m0^5esEfMKEl_yBW<;`%8WiJ>xjt~>$ zk?wA=Ux?PZ*C@g~3(ev%6}O_QWoe0Jk7UntDBH*|Cm}f=y0m<}8nd}Hc}el2KP^{` zd42I)u;evsiP|XfBzEe5nlJvO(_=|fw9iLSf6IFPSD<~Tz+74T6oxw#ArsG?NEo5; zr=cPv`($muemL4CGB}cj!Fnp6^XwO-FN7A`Y2o)nX{q7O0Qh@n7DoyUrKo2-Y}Voh z-%V~~-ok~=AD_KF0u^>I&H8=E}F@k+JP9*p}}l^K)~B zOOxTiL?tICu0CEsR%>vpo&25b*Ib$-dCNeT7!tM8DG8o1xIJ8;)(Wp1efs0tpvb^j zpYYmbIMplTtTt5iR?GDJ1GtTcGjHNqF3HiXjh`a9>{I`s4HUWWcx)^3h&0?bTn8eY z&5jZgTlstb?Qjtw_eCNi7~F!TtXVM<71e^ZN9;){1)Y8!SnAw_K=}aCxzAqU)Ew1h zzyV%oq54}W^^>h>-qD)XJdq&fp_2ffZO zIU@8(k;On5kv-lj(i*X+E!5uX#nIEAXc=m!5BWxa+i5g?t!7zgXM6$(ux~P}vj7Y@ zw&OT~5QGS7R{;MP`oK5IcdTXXsbo}Zj;^QI+hEmgN;dzy#n67!OQ6$Rxp1mz!*XWK z+?AC9Vyo4sS2U_IAdm%gTX?<(X$h0YVeTUh?_KkgF$GV|T^AgD6w8YfTe= zat0KXY4XbA@_L%qD-a31KIu6p{-k`;bqViwYc27Jev(c|io;Z2ALc`6k@eIZN8tqq z<7U%M%i_a9mtL)`Cr@pMEck1rwP!z`%Jb6*h=Lqd`r6Lo8_L-ezvlX$k(Bw<4I=o9 z;&DyYuJc{Cwu1vm%0^$y!MK+sckWafSnvbq**+N+9vpND918|VS=imcL5+&5^}BK} z$$7ssJj*Rzs@~t>E>ulZo3h}O9e4;?2TUO*9os2vk9@sBdey-}lXqhlAgD&LeqfJ` z8xmQKn3MIDsu=9FA4*!kb$ECGL4fVm1|Y=*|M~Hc`d~Sc#V@bI!TPey&d-vMMsVqy zpy=eUtQvj?8?(-&$8XVSm~ZUdV7g#pX1Aq-aOFb3=&4&sX^yM&wj~_Q8e?tcB+<+mu!Ts93D}P^F{~|Kib|XVA1VQe z%sEq0)E1k$zo11)exKP1vVKWbWaHp6KrH`#gl5Rx3@C0n2MippUZtfaF3*m1_80O?6{OB}-JO3eG|W&St)VtYt^ubkIaH0N zpP8-|q#;gj8eBI>zaQZt86Dp;CjM>PPKfWLx0k1;pVlb z8?>z^Y01CjEW|TP>$~q`TD<$VxZxH6OP=ZOLi_ot_6%ne)ObVzPIY(bfqs5eiaXXGbARY57OPqg zQiq5Qz7ZRuEfE#E?Re!&3JyN9SQWz zHAfz)$aX@SmuZ~6Xu7)TQcWJ)dA{k;JoAt2eQ*tirp{gc48Xk&KZkt&YQISi( zN-|9C*1!}CqvIcG!-On&>+2K_Ra2+sn7rwjyq{s$XKe0zo`K#iFUGX}wSAX^wsO;( z`p=i5Tyry1wpT!1TOh4EuocEzUfJ+ED17TnfxfX!LJ-gP{0x$sTJbtxrL0G7RnAyOeg~%`{1)g9Eg~}4phKUHB!)46P|3=gCbeF?d+nWU9iS) zG78Ao&x1m^LvGo%Fj#KOJXQo2EvH15~kS=UKwMdY^Ucg7d)NI#MFN;5t6^Jqpa*oMX|R(;I;H07@S0s zK4gwZk`#UaS;23ts+s*L^&_e$MQbmrQ$4`iWY^lN7X3-?I6?O~kQ{rM#V&@n)2e?D zq3t1W5Zt_n`~4kO4(0z8hUZ_-KQAqn(LdqeX2#7|F`2}Lr^+-#M)Y1jI8uw2DhW`?*nSld?q~dWRO(r zi&`_yS|$_X6Wf+DsF%2tkV>62yeWl=`FQm{0)4fN6kb&_zoth(_*xXUU47UWWb708@{Gt1|m+6B1bhB;rkIDrI>t zz|Lct86XnPJ)~(J)_Y7o2m`Svz~uL6po%oaer0A@!Fgg!uM)Q>VIIRf`R?b`UC*W^ z`q12|As1IB8`^I@w8^@Ciqm!~R@Q-xxHz5xxUaI%PCAjS~}Ch0igHq^=Bqsg^qE>mb$j=BVq!JOZvRL_5!mC zCZ1ls>jSqPcIJX=`@1EKC*d^hhTiz~Bk`LQJ-l~*w;GIW=X?L%Ndfu8puxHR%nJW< zQrM$${>KU_aPI8Dc1L6_xHTTn4{f z^K^PDjCFb{vSzWLha2@U!1N*Z*R06Q8C0yqt5Yb8fqQhQ)#IY?peUDTFrg?mnDBb* z=62EI-urNva{dZt}mZwIr~j)Is2{gOw`65sH@5P5f$v|{#ypb+sDt0GIF3Wv$x>1 zJXf%H=5EFJ|Nd>JMJ(nhN=FLLc0&F#Es8Hunh|wg4QkU&oB1^&!aMAc3LVMj^OdUJa`X#c~D-fbw3Xj{r%Oq z8)*cmunvvHgCfnfU`LU+DQusg&ojME0h`{Y_!*j%2la6M$OCL?t5OFgiu>NqIq6Y@ z^D5_1p9bzdLaELxksaXSz2a#$uLLh;l-az>VHA@*G+4*-eHHAlc@;t`C~y^Jd4L?Q zL81!X#(T~46NxJJ6UqIvBl~%Hw|n>zmTTp{G9}7JVXx(KPpUz6c)2{4PpQF69bOvn z(!?sC(rW8L=_|q|e)jGs!@{@Dy$DTE%kbbTN{~hyx`da7PR%nyorrgt?0B%97uxqBZ{aK91+pF9E@B9p()!o4afBz})-#QE- z`0pL}kB8y(GSXR-6_Owqf<)ZIGcR>p+lY1)x4$dLT-;-kqsbmn-Z$g0|EYUPPh<5X z^1HTKddNLUlJx`xFDH-vO^6OvGSDo`y8HFuzkA%Qq?K2wh~kuz`mJ8@ShAitqHUGl zbeocskP%hsb%Bxb*3+1m9YKH4UPy16q-5kRc9-U)FHsIYEa0|g)7x}~q_=nD_4E=L zdMfpj{;n)L(^~}n?Ac9-vwwf@e#Ql*%et(nN=m=7#>QpcH-EBeKs{Q{yoA(^gR>5g z(sK@F;P`Y|gMN7F%2Y{TdGJ?h1j zy-iG%q@MnDq3g(jD?B_3%)zXcD(P-7EGRxrS<}!UY z4&2<`=j2cR8Ku)x%A$w=B9h zd&xsy;?Gi$ettY19doat>b!W`TV$m79J-?@o{x4j&S>U!qEp400Nm~!W{9Z0$!JrVR{UIr}wAW^N3LSSV*6PpX^JVO!YDI*vO13>Y zSJo{j!cFI}wwd<)W7Xm;*6}|pIfy=%7{}O=cvIZ0*fyH{-TvCV=Vp9VWcSM%pa0&C zt7r)8s0U zA{#5t$^SKdei>s_t@!pN$wO0&`yKXn@#)LI)JcxUls(fFyQ(%y6(H{3(1R?@z3~(y z@1fX>J#ugrs<^k(dK|sxj-k1nF%~tCXFN!{Fng-7qrSG{M8|kckN0xFK8M5G_oL(5 zL75z~o-H*}bSIUc|CyQ#F1|J55m1~nOE!9<5Y=yJhY!~FRk_AW>2*6H=F}4T$FJnH z1uv#Dui0dEBTZVF1j;?emwvgaQuY5lwi01f<<-z*tK4@hcGO5zmxdzRVXnEuGk`8U zH1rVH+*sq)@4tTC7BsBcWSkSxY5Odmalo0U#VKF;>XvW(*0|s`$NDv$>aCQ<55wXnyVT1deM7nwdI5ghTyk}-6dr&v?dtQD^bKF?qT zD2X@@OMCm))g_EfxC3dRdOS0G$nE&gZKj!{Pprf()5YRh^}U7}%Vja@8EJ~;F}K#T zPsk(79$uoG_(!^i=_Wsh7U=c{c%ztlU_zi_u)xj9 zvk^KD*qT1^w)6ZEQI!)pI_u_GC^dulJg2E@XCtgk5R3cV*m5ekgUT0=u4T!-UHpOk z8vALN8J376rcWxQSkQKE(>OPQ#=N`!p?BXpKOfKKI5jiEhC9?w%q@5xoyLQ5UL7yx zph$xmjWfXw4D0W?-RKEn%Qwg83F_e`AKE|5#c$QeT)HgRu-WSTtMv!z<;T0?e)laO znxlP>HQch3-|nZB5@YcUKg3s%QDN^pw9hSB=d8wZ8NLmcvzrSjH6zSkl|{=0qZ+o*z8R?8HcZ|c5eFguX&%GmC< zl9p-0E4e5EDY3pXLY>bBQQ7^e#T#w*qtSt(u6@mgZw`oDA+#Qo9gY-yKRIa@DR3w> zG;H{iu#61OR*>uJjCYWA9Ma6TAK#&sIdC<7CV(N9hGu+!*otP1p{1_FLkkiUtjk_cHo=W<&pJGkJ zpY;?rq;Q)Hw{~@DVv{qd4b*2i)lRRZhQiz@GB=( z{i9Axipm<8yR?W*ZdUNM&9RqCsShO&tAsF8Q=S!}VP2bq&<@d{yXdAos+5$M?^isJ z9~25}srgm+mLfE1boWeS}`zGuVpCAl7wO`=XVM1gKLJ^JTMi zmEE3m<%H3mR8|eA7U00Rdx6wz{=&_t-IG<;y2kAHGka@r*~U7~4mnYL1r2R&K3+Vg zt+^IIsB$&aj{DbWtW<$$E`TvM=wmg9#-=Myq(hl`VdXf=+hG3tdm*~5!lMn<2R(;T zLVArFxD>5Y1XS=$f|syU?*AWcZygo&yS9s)prkZNDTpYkq_j#&cb9a7bn~%*p``@` zq`Nyur5U;zTDm(182CNz{r&F!p7(dwI{U2kp80DQ%*+#?C+_>YuKT_R6e5)?qCj-N zot=JWQk_*#9cA@4p_07aOvY2r#zw))rwcL<$J!c2)KdGm?y0CmiJn*UoY+f?i4>yI z7k&sQGdY2GtM1+xM097Kt@w$&m)^oJOom3Mk!Rc6Z0&g4CFSK0)3|4^_NVbTDEtTH z%gQRoccIA>kf9()`tQ&kMK-^L!co?h%AA0>cUROCNA8)zrryj-JqyZY_zww$dR2F7 zn1f~2CK3-kc?qlp7->Sk(B6qsurPmj`r$$<*6ivLf|iX$#69oQsQ{J2`-m)^Sgc|# zVR2j(byattRX}ZO(Cq9(gMnO$ntY zq=xcljxEIaDQ876*gIl2FJEon)!FVMjL?+}Rv;0QRRUub-m+4)x;69Frc$-n^?=0X zfS4en8h5r0mZ;Qip?UUO^ObXgKg?{C^^PN%?ABXVJDf2>k_~nQY*jg$gNqLuxi^Ge z8Z<-@)QS$7W7Vr*5q!HiF#rbh^a`AjLxjFjw+s(@ef!{?+fp-9`O#dJ>ym<{y{=T8LF}q@ zL0N6^7sEBHg8c=8>g*yakl+u4XuWRT zAa%|A2NJ+`Xa)jt zF^TY$(?IFWv-RM3#<0x{lI7g&lM{K(CBR1hhLX{&!aL#m>i`|5 zc9VgcJ~6N}sp%D%1U`ALk)-#1&x!OatcIesJI&b7AwKW&(n$0n+Cj;aN&1!8ZH~wE z3I`kFfvP{xcnI$)sXvd3$Trm4FIg7Q-i39HB+PcdnltOv$ocxkB9q5q_kmnYWT8WO zL5XBxK11Knk06WA=!IF>4Z1pT%??c%WhP)iTtwz1&k^#(42wBO&kOJ)w8{4iuJyvKmgOYQZI~3LSy6(r0Mq3so)SLCO5lF^MUuMH9cSX2FHVWyWR~ zWMy0X@FAT!v;J%UvkjHjOgaai6$d_NR*70(-Poswu$)hc7GL4l!$p0MZxG#NBjC1f zIVoAzApVs3ux~ORvXCufF%!}kgAyzr*UrO2dn19(ow^uP=%0i7BbLFEVEr!LN7?C{zDY$aJTH1Kh(J^*$ zU)NgzWq@g-CZ8i6cCYZl$n4xUK91U;Fm=HYYwPJdbfDvOtU%Dp5MkpHF7PKtj0FlQ3otd;MC^D46ay zN?f1(tHWF(nXtMa3;W00mx!tEXxO4-YgS=>^DkP0h=_=RT9xzA(9kK}q`(~GfGWwb zWZ%eW$A#tTrp9{96_P-)?C_n^N~rR2+Ha#y5ifk~TNg=_m;G$;K!t_TEzg~)M(F3t z6{4e~&U*=i0F7SJ-ug=Z3G--U%BLi)!F)Dmu+%3JfEQ_S9Gn&q;xRzFJ?&Ogqsig2 ze|qJ^?*~IxSw=)hmzmE-aIUb0L2e;cz284H#<3+Uh&9Ri)E(Vtis>4K&^2kGcVf{A z36~o?iQ54pbZO`Kbg+(r0g$?r=f-ttW|M+G0M|^@-;kW9*maxqFYo@nv_*T)l6qmf z`O;0~x{Dpll#`4rId)g6%`Ysro;{pc$&sBB4>jFHhdts1WVH1czOgnK9ZGP zKbUZvilCr$Y@)S#ygYOd+WXw&AxYCIvXN$8U0l37t?n<5WwvSH(aNzLz88Cg2F;YV zU>LN@BFD^VR~7w`uHL*^Sj;4cJhtu}HnY!3z9@5|0;!$NwBwoS(sjjfEMd4VCU15K zY1KwC1(ievlqBUVPA-ghzb{{?+kBOf*SK-u!d_pd{c8JHyk2Oa#aYwG&p0k&(F2%L zViK==hqoo*deJs@EYr?fR>r*>>kQuYejh%(=WGf!RL$bgR^-h56jAy`RE(tcS(e|= zQ1VPT{S`FSn|bn9$`9)?r@_!Ky%%Zm*9lzgSq7gKD>{BzUv_@eJNCJSnb@k1Jf9`D zbgSXBAl|gRl6ZDryBh};(c70|x@<{aIbTNy`YS$O=lW<&tc&OJj_4Uq;mVs{3Fd^D zRbw`lk`0MO56!(`;%>?MeFeej4O-%-a}E%tt=WS)2u#TGCbQt-%b7M5D&!l}w?Eeo z5=)x9ewkH8=H_hZ+aR^*rF%w(cOj^;2iOy2f zV6%sD_QN(?+kXB;1Eoaf+;R*7l8p`t7nGve5vYae4*xAm?I^ys83v>FB*xmhJRBXtVB${bVSU`S9 z`lDlOAe~b)({$$akWR%)?51|ZpMBx^F{p1SRGJ_$lP-BZlD-XsLVnCF~q zWId4Iz8BsNhY?%(!>~+n2-XffFY#`OJ~!V`TdQ<8b&`CgU>~tjj@c6rs}YN4XBRQu zH0(QZa;G^S(KNLqQ1O61_iWzgjf#e*qnF>r2NPh?dL}BPloIatE(~IY}H(-ppeCsqqa$YLiiU_DMrS@)lsm< z?chWNokhLo4!j4t)LlfMNTRTdQE2nuxLn>rNr7_jwrg1=tRe5XpVgc*xg2-LHcdgUSf+TrX&T4J$vG;>tyrvl_cltRKl0H3<vP4hfKMOPk2s}c4i?hid#ZzS5z zHt0W&n#J}iF>ap`IuB>jKi>Lr-KXNyKLyDELr>awo1+BKVom{`jPprg*ZBLPma05d zRB!UHBwiD^enbh2%gHE1)&0p`qoLt+9dhJ-hrlNWZEw^HTw9<|R%^gK<5G1MmUty5 zbYCOazRXou?|S&R0uL;1xt$C|hZ!-a8kOHm#IN_FeP{QHB2-(0P~SSYLfxr?I@JM2 z^NwG+NREPxiJXpuOk-zFi$wg1TB$}lagW~Ze2jR)0d?cG?Zl;U>r{gYrn-cjaaS3h zs>%s)mCnvnip<_Xaw6Fv83P={%u?;t5ESl&Y{lJ7nm93%Mu3 zg(D=df_=JZ(KSSqiLWw(BcqFFO3Ya+o{%NK)S`>Js}@6_QDBU}Wc1K{VRG46pJfC0~u;(=NnDL}XGw zNb@@z$2U+ckJXZ5JOt*7c2X=HP1+3zPd;;;-zUoM z)o_US%W#R23C9r^Wv^>XKo71Nf(ke0WOcJ7hSN zo{JGI)nC?TGVTX{O9oR}N0d#xo130!hZ1TO^QK`H(sF*T@30!N*-VXM?o~hTD8?e& zW-!r2dW&1xcRG0uIUdpss=Rjfgzq~2uKTAKzCSxUP%BIA*6yU>S*eTHZg z^KSaI3_-oFQ|XWUN$>;pZ_J+2MV`^AMw1rG>3HqKWoWfjQ#zA2OfXFOYQZy+O6UXbthXJ>*LE zq|5pGW4hXeZH7FmLU-CK?#&hY^%eRAauW;lpY=)Km4(l3-y@d19iWPL8ecbq7jDO+ z64bX}qwyb7pt>~}vD{{&d>ksinC8kXIF1(W6XosGXV95p=*EAXre&)q&(`$H{S`o! z0IOl0@_QH&ROps5mhyxwg(;zeRfMDbzKG}W=9ip0B-Pj7>47`bjbu%i;XOaeif>_@ z$~+oGXxJ^15qo;pxNJdFmwx5d_G8O)^HGrPOiWA+J!!Cf@?9P-t|v@+yPVN|D?V_u zwL=9F$n95!uTPzhmR9l$54I&s95 z89M???KWQ}-R=4)UtZ(*u7wRBsXY@4fW>#OMvG=)=+;>cc^@osVQ zKSYjz@pg7&$WDV#|@YLb`IiQHD6cguFARyq=InaJ_ z*Ht&p5q6<>%0Np$(XJ33Sv=vZ$3*IIh6(dO4MOlJfm0Gipd8V;g&Vg>W?#$1P3$yd zXT7Tdt4K@0KL5%hqT@W5teb0u3yFP`(!-hL*D(IP@dx&8S9&5ti;dH4Vs0+L?U?iP zH=BMPzt@b>mhlGc%_HLD?GcyhaOMh8wauxU)0*5PS9t^(0CKd0Ka~+ z$!T^r(N!=6W<=iB(eds#=7Mm_Nxb5N2XwKfajaK%vzNw}YZQQ!mm%weyPVH}5t$!>-S)Q@Q!WxedZ<3Y6rsnlA%?CB2>IB*K)qMWTP;mutS zUAP}B?P}2z`HU1}D$kVQYN=hO)tr`zr@?yLBx}R8lh9O(ocU&vui{v@k=d`<1~xhI zl#?9P%SKarlR&Jc5G@jn`X`lTY7vaa96{t7*!mObUnMQ`s~Da|g8q?PU8)5^h6uS& z%LsA;2>uxJrHMbkPG0VI>M2tS9tTPOaEaPPHVMVPS6Dvl)yljX6RxG^;MMDcCwkm& z(0qwH25lv0^b@Vp_bLMqm0F4NBEiw9`qp&MA$MA_luO@}M^*8dg1R6rXwSg3- zN1~_dX|XD8+O;02@N^^A?w*GGUc0D~dZJfQ`hba<>Er}b6(nZ)_$w_f%}5fn-f=}* zp|7H{aB%sFOs4XI`&8sX8O!;jr>$*BX@P_m#1pnyP(H8b1uxV2)Zg_)a*D=nT#S;l z;xxDip8&v(rs2F{VSR5+y`7#Uv4|8weE7<|S*a&~I=d{4%JP^9v`P1#LMQNNkd+t3Ybh0 z9BgX(9HzRRo4CHO8#Dgw9R-T9>L03~Q>YAe-R5AxhE6U)N*R_hb;g}q1* zi(9C3#Mz;E@Fu>DC+IWX{pq$JT{+*_zE(YMcy5cEAkg#{`VxR4lBzEeiXWJlAEo~< ztrPBVu#h!7YzK1gr+*|I04T)qWLb?fHvx+OfU$ymzq&Ze&h^>|$(gEJfr%9l-7P@F zD}x`w*#4I$s{g^o<}F6Lr6$*pc_#&r(jJf*ehGdi^Xrbg$tB@J{*7Tkwa`GB`50WR zD{HoDABN`tsRb}B{>#t$vC%yEWy7=?9-oo(vw=rK7pN0r966=tO`EH^3g!(1|MiXb zzrSJ4&>{Yn*_4h`8o%}K?kr(^YHtk3D>im+6IRecsX{73wGaQ+3E0)SL$K|voZn>; zk3U`I)z}zE%V0XrVer<|1KZm4 z;`%qd;txonNBVaFrTovAJMKi{E(RBgxM?mBeqcT7niF}Qn)St9Ts79}rAkEO-Qp_J zV4#11=ZE11b~zAt4F=r(m+pk|@8$5m&gsACPQ)(!!!W+zz~UA+$)U;2Z?HLa;nf5K zyZWLn@<=&3OG`(`sg`|PH00kyTz1UtPRCJm&T1Qp9P5ZSH|^#oa)@C6gpsYN^5G+> z7Gjo6YL&cb)$m6R^RbS`;~!EOdHlQo(ym;)6wft_+UK?uPoTQ1Qt-ep!FClkC&&2P zDMZ}Fw8iDweC^kR&))Kl+@VABBdXbe^H6C!z5TZcY39yr;p|dwcqw<}!)q_7zjL@> zfSAj_U#rmnfQIhBYvKN-1p=-7pA>ul)*t=9R{H(-Uc%GvT2i2(Bl5qMFQB(v4Ol8| zc&^L;%O8hhqO;4GMq7UTEk^nehV}RS{vY*={~rH;@8AE;EdIyM{p*8&xAs^2|F0(B zo~>5*5=1lSy}e#IICb=~Ku%VG9F-F8}L1^%DK>PxU_ z?4%wIf`3yJQ5v`^S6)u7ERl(cNieJBA@S~gZ?c`O-BIqSEL)2C#&V54eN?&4>zKCG z)k67rcIKv}b^cv<@dC}p(caFT#$@U(n z6%^3nsKDL3Qb;M#t0`!A96L_2)#{r4$1jMnBj{whQ77EjYcSjz(s)7~(-#w!SZ%m4 z3OrLadkat$HM*{Qywo~HI#byBbn$4T8uoHzZ)VtUYfTDQ{)GI!~+7OiNO2Wk!Lz zovIpJ$pm5*$1Avia~W)6^LQ7_uf=pXOR7AKDW=ZEL*Ms9sIiJhLZo@`}=3Jo5jFJ=u1Y% zB^=J3EfL`$8aRFPTnEFFydb@+vA^aoECtdgAoMnw%rdBVwyWMA3vHH=>*zrgXZUJs zx5Z&=2>Mc~6sl|Af_R4X-&$PZQuRwdn44|#HS0|C$h6Y0cRfJ(F%$2TnG~g7cAD%j zF!m7)G@%3XmEnskg()C^UQ6h8wCAXy_qA)g>!`ED9ffZ%RF2M=VmueW;wRnbn}U1o ztwrsky?9cDXv+>a>?>9B-5Cs~C9bc__2BhxZhliS|0ol?2~BvxOtmJ#7DZULmRFZy52_h@@R#W#ut`d zvi7sC>22~2p6DuH%Yd+N-qxpHau)*L&(?-ItbF4?pGE9*9U=S>h$QEgZS*Vq#)bKz zEYY|R@B(Nyhjps_>J9j*;@O7D^pj`cr)JSLpbVS&l$Xj>qYgg#zU%9>qEF`fzCXM9 z47lwl3U!K8MGDW;lhrY11bOXew)&gooUXE7fB0USeQrSMd*->eg5_t_T@%ix*F-}? zJq9{2Dk)E>+S@0f8Ft9AACyc0d$*2%eykr{xot8qHH1WB$cqg*$U zW0~#uc#GA2FhYc(c@BakKDRwIeiqTdR9_q(&6<NEZhO$MByA9-j!1u^$f?pi%U` zd8bu=litZf9j@4L`7EqeM#CB#(O7r-JKtXT%ze2HUX59`U4%|NYERMOccork8(JI7&~^o!S8Vjv9hoP}zOyRcK&%-9X*FAxatY(x?>g(#l!#UIdp1;Fga4_>cf1Ypz4^PR; zQaF9rHZ<%^S4Zq<+f~7*A1V~fiWX#KbOYTlb8_6^m(L-+d2?^z6UY(6m$Aj5stiPc zB}xmSAvhYvy2Gh@8w>`J+uC%k>7*zD?JL)6`jS9&d@9P0}V-oZR9YpFG-} z(RxJKc;5R&!A*mbGG8G};qb)zwHU4U;aWN@$Iqbm;@z*wb9@?u{iA9z)hcaS8}AvY zyd^+6HzZW%N$i_Ii_WoG8X@21L{o!;Q_r7Alx}8ydc%tOIEpDq%t}W$r@Q#!57GeJ zA)I)m25=i|bv8hbdAnTxKX>UV1uKo59q&Y$3n@u&6$@j7Gk+Ny=8I6Cp(-XL?IX;1osUVvlN4KxJr8;u_hrzE=o?L^t`1 zw^JY4%^yEzfS+%=Y8D3d!bWB|#G;nBygHvM zF#4Q^HN6&Rw5-MSs5Nk5?z$r`9EN&3m@O{eda&Y4M~DrPvFH*|#(k$|NKcbUoqrm= zu6$+UXzD1UiuR)KSomRxBv%idBE5$QD=5f_N5U|1!Ie%)6&-(?3+FaMS14wup&VRgI?6!npHU z_CY1~h4;^~WMNy)*hb%ju$aa^ko>K3X|~{^)bb$g2>x;R@f(G{%?Y>9F^%CdjSB5W zHzD0~FGIr!*Fi6$ESDW_)$;_yuO;XB|e3~7yGLUR< z(V95_CP>{~W|ML~-9J3}yFJ&wgY0xM)k~jxV#l7YnU(dUNd^#}c4&#H64Hv5laqmV zpDF9)2nm4WrMYbLQ$U3Ju`r`T(wKZ+j<(dzfDr4cjIGsbM$4C0$+xdwrMeCd+BdlzSTV$OX~wcLG2ubv zPc@!c*~(l;fQ)xYJ`|0h_eax-wUpi+5%+?si>^u?(6V{2-f)wU`)NzY(<_zS;Z3-R zy^QY)Asy+6zcXsUs-5anh;}N5 zeuViSHY$FVG@(5!Mqhz!Xn_(rpxS=!YK8Wgj*Y1;2P7HZ;?z< z%m}kjh|7gBQFYJp{_6&;`m9l%2m1%K!k!JQ`Fv+mLUnGVP48SC4-el3dsE4Y0lmS! zfh#li{y!>Ud|I(l(Qk@+DShXg-4nqn7dyd_t1z5;9BOG9pXqhI`e__a+YUf^GZT}T zhQjZG3dVH6R3N@{tEi|K`I?zoCSLcI*!+Ar%;I2FZ_@QbR4lt!x4XBuv%9;hva+b} z=p*lkq$E(n{TzrP_`NO%e~PxlwNMMWoIl&~wiXXO81g~VE^tOW{d{=ROuM|aOe^TE z{Nx^_nxC2~dd99>RtK!AMo(7?uI~zO-$R8(m_PEF;opA@4t|7DZEo!!U|*d&A)+#( zPfr=eRCRTG53KSuL)qs5A7EkN^x|7yyGrMXU$~pGiVD%z#-)!Jy428m63+)@lpQEH zAJZ4&KX7kwB)h}yblM?RsXa6`%S%t6?*eW7nD)XGl9G0Caqv8S_7SniFGaY&#}^-qzjcBKFA3>`3`Fa%uY85hkJgGH zucP%sK$6~5QgtqPojMMzl+({*bRZCcPzeMYv?XtI*U#7;Z#oHouQjk3Z!RN&_$#b^ zu6q5jaCD!PI-M{YGWxsa@Va_G>Y6n4OtcFGQh`N0ZZa&g5sKFS8}^ z)KaMRy-1P>z-5-JVH^%Pl}!3!D06T*TVi`DjT=XW8^H&P2%xNFYV3)erRpUTD z9PM%WP2rL9+I)I8?^PwV{j*#Nl!*Fct02&MIs#zE z{p%E0ZmQfHn0tjDwmQoEVhwh8MOnq_U~Z#ta8fKk$J*Ck<^idx9~v8zj%TC8 zXLkBiZG~FyjxZ2nL0a|eMje%Ko~?c|;jo~sDW6^TjVtv$RfvsEK654aaHH`!EL9?u zs-oVvrQ`$9GUuyHT>GwlBjLO!o^PwG)mViw91bkqX30z_DH5@CGoV3eCpa@ceqxkI zUChM7Lb331mON^1_p-21n`;&VStxz!K?X>dLUH_EEMu+Xf%Kf^OSwP`a8yit;R`wJ ze^Y$0d%O?jSi~}^AMDvRT&{2xth6U|L`l7e&>8vJ8iw)kc@Eye78@T)=8Tcku(eVY9T@2A7PVlNvmRascI$3gIdHQ`=6}~m?nPX$ zVB)7|s^w1-fI264d@kl*fpVHsoX{*2PlgDA`&1X9PxI`3O|DU|3-2&U8L=9Kv>*=|^+V(LrsB)dnace1JM4U>trK{KG6oHs!??VnwS2 zkiX2)U2~l0twztApHW^;X&+@m-1gg&V#X40+c=Bcywhk1lTHuue?y(aN4V zpH)a9XTA8SVM2 zr?<8?7Nb>tYG0>XkPYVng&|IJ_qXzQh$^T_f8X!r`#vuBowW26`6FLlQEKoy#XMEEUU>tb=NtL#W?M5(@7l}_fKfL? zAfh)G2@naO-p`V!5%D~HX4@&LVg|I3&ZFikiQESuPxAacL7~p=drGIx9iT?MLNb@W z*R2)y^Y@I@}G=1+F0sW$^b1ZSnyfFM7Am=BLcp08yL^kGDU^EnS) z+W2WpENg;FAhxf+p{75Du=5;9O8SV<68_4V$94t<{h~Cz##F~2gIJn$+e#F2LVk-M zg013ju%5hbM(Dk+?7brdCUjmD(`KShfK|wNYLdQ&VIT45?)v-c!n(67;IwT7=q=I@ zJ<&`f+d=_M_7xcU7?nlBo)km_C8;;7w#WZOC#BlsKGABjZJz-LL5<_la>i4LliRB2 z$7N%nMR!j1F|}aT-p-c8UZ9TK=H5OozvpjRbjw}tXZF2}Af{_=R$E6495x_?tG%TS zDxKS~5=w8d-5>=T7fxaH1(1`2t0k1`;1w{LG;zG~DtnMf>Bkz~N$|xVsSCiBGVe3c zKI?IFb>-=~NF?hKZGNTFGnSV-6%?=pu8!{w0U0_7>F{7XE%SZIkWUa{ppv4J z&AvGSEdqm!S)+JFV`J1>6HK46(E=w&IZy<8)YQ`%;1uTr!(?0Foilm|f}^(=fi-%0 zDUdFKM=L9)u1*>eZfrNxeVt_OXo?2y1kU0JVs~yr~TwD3Uv;<>qqs%VT2aI|m*qZ7pp9 zA~1`|I=_H`je=V2V%tLA(iYS1y3pu^SK}6I*x}x(6x_ z^h5qyAb{AN0QihwUitjFvDeDUj28%-PS+E&diX(&Wevwhy-0xg0RJAa;f24aMLt}= z1Tf5Fxp)dkl&7rCMHRJI^$v12-HXvyp*s@NVnW@}DO0j%$N%vDYNgEcuh$Xn|i=>;Z|JK!v?Z*+o9Px!uHZUw^~`J#D*pwOL@5J=B4@(B5-l(}iyh z;jfSH&)+&>A4uD=u_4CC zEl!Sc?@Mr6tkxv^NWL-Mw@n;%Vs6a8@!ibT2Guh(^v6lx;y;4Ur=MaN4U~QosKA{3 z8X-DaY0GEZ)6yg7V+14IavX7*a%Y*nJiSc_9EyH8N4UHj(2J=w(P_P+u+ zK_>3J;$v{=n{a5I_ufpX-i%F3I&VMQ+3?Z3zTSy1fxt6=P*5@?1jo&O z@~w%<3&+g>38z1si_d1thNi z&JX!sTABv976LzI1VAE0jD7YO3yi!PE7C>PG6~0f0sa^m=`+cP6;`#6WUvoF%#)d! z89pug6_|tNZiB&eo$N}HRo^H!R9t2xdkF(2NpS0Ip*|rIrHJEZ3n)&#gm#m(-gq%S zS$OV%3RGD^>o~7XLnbfZ&t7<>G)_UTA9=-VHL|JjR_eKBXoW*Ifoby5k6HNJu50aq z`bo%>T)>w5HVK1xy20b0?734>6=|Ouri$xGk`&w8BqZ@{bgJBw1L_g`#bn+u40V@6 z)!j0`v%MphcF6_t;brCJ)@~ig08u8j^^#9M-2Pp>Y$ZcSmtKEJUS>Yl1_5YdX^AXa zAks};JuD{XHi!R}cxx-6a0(-7ur*J;7@aA3TT4rgYx<2R;&c&h41&N=WfHgy)Gi#j zx|gP!Yr^4CYn%~XAR(ru#YalIoSB>|DF)nYD!lgb@f`JL%v1Kx9t1BZ_fxluS25Cs zJ3al|rX-par8CGUlPR=;8tE}qR`@E<(8MsIye)QJFWehK;4$kj_!S{P5u2>(r0fD|K9wda7|*O!FFFK zxW%)~vPOK=d9KB{xpbA;*y%ULWQs3wj?RVT1UV`|%6W4S*iZ89CWx3W3{Bp2i~uxc zSic-?fBez7y-z}@t_Z$aoTHTE@=q!~KhnA|JbJGWZa3Aq^48ULdqk%FupVyGRa15U zZ_@DEdksl#Pl<5hW?WnxWVJOl2{qZ}1EaOHT3UtV{(gtXK>fn#J%x=+MQbkTkLls+ zI7|jSS-aU<`*EF{y4HuX%Ksv2+>gNH*%W!lB|IP4m}J|I_o`5v$9@$yqgbr|j|lR= zK6zge(0=5P|HPF4^>Y5g@n5Jd>VFf8Kr@N?H&6Nx{-^)dfBmKZ=zD+K_@DS1bnSnp zIbU(2L5}^6=l>-kh=n^zRtWWG_y6+89OkDArfLO&AO5P1^pElXdpiE7hV>th3i=Q_xo1V-lG_$>Xg1rysi#3r_$>C;qoW%HqrWKYzaVQ8cP~p?vaeyz;Qh zt7ouv9^bgDYP-$Z`31!C| zTz;wP_O=vl|Ht`ZPxa4@Iv4ZqLgIDYHAw^Be1E*fn7IwJ5r!Xor=g$y@&1uJdgjH& zpS(G9G2eR|3gqG4i<0GoRO*E`tMBxQsG7bQTeNbYEKj;EPrBNzz5^d4rAn|dH~f6r z$^hC;Os2=hlWQB={m1yf3qJ&^5qo|Yq?TznUe>e1)SDi-rB)0&U)zYYa--NB(}hLJWjDt z(>p*2gDGp6aIx*Sze|Ekedk(3(6)qm)lsPzXNsE!9|YFMX#2LEvzaL7KgWOXkOSjA zZ`?(%w~MEysN|lR5~E%uGj>a%2CwsjYr9x~9_&KdC2yLki@A67SEobZENy)`PHwV` zt-Oz9PR*>IRyf~r!FQIB{>K_!#{>^x*FQ3#_+?YgtDK?c#d+qI9=Hu4n&;FAptyvc zEfb|9@6`|&vPe#>Kv1qj@}b5WqMFKMZp%Q zq#4tuZg|+X9tXX1dM4M!@*4W*$-6EoniYaiBRtWdrJ{get-J)hp95?xFXxTnd#`>5 zPuI9;6eFDx`vvgE-+CC*e)7Ex6RKdhh37L{*y*-T4U8uXT1 z>3J9I9NbB4=;3ybo;`1hZ2STCC@1@Yt$>Cy=Czr7w+Ul118cO)8>)9T8B~byJcEaIb*IK|? zd?RqZ_2}BQ`*_VILo1L#jzac_MuB?+OO%FquIi!FN!F!-4Ik6I=9PSfw_Tz+ivG$X zYPD5=!|p5FV#T~meSVLiSc&ZM^6tR|7nannCY}MyJKD!~<K*( zrM%tKkyFR^f*i4x2i4bK*?F`E)elf4;?IaUaXOqtevs#RJQA86owP!0(0H`iI3s7x zV9G+ezbFkZm^t`jf1u3PBo~xF9bFprsmD!5B)9c;EFn=`!$}9~xG*tBj>3M{i-}vv z>oR*s0I6fXLTWSV^t)Q_oUAWN)9oh^OBI}vf2CuGza5BF13oqhH z#@s{}-0Ea5Cjxx@51-mSkJiu7_!}tiOE>FSEWclUaNXF1gqdo$lN4WFHsU)li=o&g zN*+4}nLdl&iK%1gTuLNBjLM_%zbwyk=%tqk0H>y=|c8eaa#cuyBJ zD57ZfI#t!RTDpQ&71;KZ&YTJpHwM4o=VNAO(Nlp~7w(T^HTXYGKZ&#b979s3+CiN3 z2v2fVsB|j&Iej1D?e17TgA4^sB7(8OU}o1Z`bh{YRj~~3-NYZ(T#_ak)K5QJkHYA= z;%4L75914fF4kv*wq;fV>nzqbNE;A z#<~Nb!EFbSkq+@}Z6p`THlFvHQ!t;@d*ynUWFi-ZTWwEIt(m;+E3C2pZ|1-074&lS z@McTX`8P1=<(7EYQ#;Q$#3wIj^9|MjUzVe5Y#!VB}%WpTxeyeP^@xk@tLvfp0mo_#50@4V1G4u+} zD$!!qDcV)cdCqaOij$x;u=aAsH3bKIb#6y9{Rrcl`v{4Q$t=1~^s$CM9KCC3a=}O& zT2}T<#xucT{o?5BsfnalB2AL^?Ncv;fgZ1L`Q-Y`?VKhryp+Bk=JkPEwe0UdY`qkq zmd6<{kU9$F0v&B#4U3WGPT0N^HEvU|nVIAwpeC9fnA?TD@Hh0nUmr$+M0D&LoWLx| zgnebNgd{%#y~t$s@yRYGWG|yKJ!j(d0-rU_iaJ4j%6g!4^Vrd%%xVVK>GS#iKnbh(`s;L8mH$=IrFq;B~c^X`O0G z!KY8td-L4c#>Bo*&t`Y2e#|a_OvXe{prRmH==L?mKz>?hwZhRq(j*WiECTtSUjjgx zn%{drF-9ah&uQKH5BwlPF5-F;hKusJE#SHq$&S-3d+Dw&Au&1&6(#YT{`#G1E&q*Q zLCh+K|KansbK0@Kcy2U6x5kc`UTOi5vySZSEy4ia9nWVw%}xo_YjPwz8+lYWLB_6x z=nH4SEtvv~IXWpR5sHeE`2!bd6i<7eK5(2|K0==#f4$f%AYq1dD~$&HXQ3BlRAsj3 zG<0?E*4BTU&h{n=p+Q!QUir|r#_W1-7eF1#G+o+(WJQ^7)gTkyHFE5h>}1X)4*D#x5^bkhJRG1gjvOA1e_50V1fX?ej@nUEK>y zg8PwO&*R->8RXG?IClj@ix*@I~2)?w#we8uFoH0 zx8R_ChXYa7WF0Sw+1W_yUZ-bo4AbRQkVtMV+k|6N?scQ%KR%)RoxnpU(L?%3BwUa& z+I;3SOtVrt$s>NJAEZ?}ew8q#sIGs=k}SMlft^rsuSt|0FWVDR$t$A=wBXS2!yXU8 z?erQOI_13hyUYqnHN->Jjb4-@0b2phD;K27d62KT3zDmnmy?J{NdS^G(2$|ycVe{M z4*!Xjxjg;BH&;tMO8r}qY**pQ(amc)_;jh?6;7&d2+xj86oEGq7#JwO){Uzf#+Xh? zyfs5((e%)zvj-5p?Nf=YXB!j=aK9nd`QQo>iw6 z$p1hOI0;390kC&={3OHg4;mlp2pJPaBGgCOymtoXs#t;CtTsguLN8ATh-C~sgWC(A zKI15o%m#_wxawVY=CkzLHDkRSrxV?436;Wo3lq*gW3>|!gPRNcC0AbCk&#NlI;OhE z$J#}IjJf>!|5$qqu&BO&-yahT5EYORbU=_2C8R?@kd|(cZjf%ae3b@~?hufMp<$>| zK|=-x&CO4_Xty?!#L-p-V)!dM zG-3Hzcik{iNm1tp*a0QCjhXdWrT9BhC6DDR4i#W!pxj;;e6Y^zu_PP2UtU+&DL2JJ z0BtT~>P`rRMLIgA1Ax7>O9yWRgiI8S=!Pbv4!e<+o_t29U^|#l9vncMrr?fkZ{iYG zVm^!c>H?ja8|MA2)YSHKQ>g2^YdJ~Boqa4C6{b2hTOveTuBTI8>eTlF#>((Jx>-gJ zhxc!8gcO+SA~zqZ)vspxH}|?bpFJf;x=@JV`<0si5`G@DhF&P1fuo`R3#m3wau`_; za_N&Fq3A&Fo1GriPoT6VS_aPb&zY+;GQackjMz+;tU)QVUK>gBq64rZ^~1)u=*ysl z^D8SAhP{A+F*QA`zanmowHa&lZw4nKKsf-+_mOa{Y(i8Wl&qmsOVuWNC-=fM_mcl#Wbn>#}7(Z~?{J~XfYt#LnKl{;) zM>AzxgGuAvp!}u+!KE9)F2u}HH*0o1(~iD)HfdcFw}hJ6cEYAkB&P!PVmd`dwdz?H zSsXQ<5fZAlu;xN|B|o19(Dl7J-pwy+ZEkC>Ioh8XkaJX>*D|n3M!;c$zRHYT9wLS1 zp|p%84d{1b3%r+cQqON5X_=Vp(6t^h;Mt?~%n#FdU8yQkcrv&Nx2h67>8PWnO>Oj; z`i9}zUC_EbvxosJ8(Sc8sEvvFGn%yW6HHtj`MU0_5uqlkso~1Grbn7`;`ygHLNQ?b z;;Yb)jh@V-^K=plv=vX8nXKqfRZQ++#{hwt|L4C_qrFz*xJlr?Zq+N*6L+WvItNnM1LZM6{PX%;7QtVOxHd2qtIYVfuaPb55bXT z!6$?-CwR*x-@1|APvP^Ny@91o7B$qjtg`CP$xq}Xs1yrmU8xkIMwRal3r@&x)X85N zvKd2SmwnE}S-3{jE3H;g1tL5GEKC(!eGG{rB`jt_ z^FSZOU{Mw|!l+S=u2?P&l(zX=@_m`w@!uiKBBGb-b#`LT$o3ys+t>WKt-4XoH45?R zamBQ+fGX&-!7{iSz;J}L^A;kD^GX%7zF3vRJ3Bi3mw%?ewPBI-yk6j#hZ7}9be|kf z#rV-5YJ7=(V;`ZyV^4Wu?493;W@ggL_uAs(Q%cEt#fQbc5xo}>=}!rX0nCv@ z8=2^2rTJ7qf;Q~}#6Y;&|4btq+wM1Ev8&R8k+G+C!;xnbr5pa2&fM`RK~IK?@PB24 zsxxZ0J`>(Yk7jhr+z(UuehkPqAmm{z-S|-j&V#S3CQ+iWw@ahBD@s}yz$`s@&}wwc zAWGi7tpNUozo8QScsB{s=)H`HmU(E#kjI2&P>CSVk{qWtFOO{`S{@7Mo8jG`{lLZ4 z-d5N#`=QF$bH8Yt4>qgeW_L9+Ewf);tdYav@tPBOFLsB&fK>}qd&w_B*6@4C52o`M zm+AW3b5g$_;b!yuU_L^$*M^RSjuW?=?983pxh5n zODpA=JA!rG~@Lhe*`1sNW!};rZn)^#U703QZKt10 zO;usblwnYZ#k9UjTavg$8QQ&I_u$r>Rvt+o1)2xTQ@4Dok6Ckq{V5(fP}N^KJ|N@J z|BzDy<$ik|Ii4l_?OnRw0E6S3lj?1Q$1h)wHa0o}wlm>XAvH`K_k=#8d5w{C-vLf@ zr=kg-e|%+bvsW>tQ=_NGghX(PHiV2Dus>Rw*5>+JYD)QV-FK;LpK_F*0r{t0ztLK5 zwz7~{TV@_7$8l%4Uy}JDv%N~e?%3m*Ss!~yv+~Y^pyUH)R#x^NWHR>&BQO|Qs~%kV zQg8|W;LA56%~+LQC7Cgf%&LxI7yQsh&wcM!)~CQ-B~$thO`{P{)f`eTErG3Te0iBL z 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

      MTp6dkbYRX5^ux)kXbNZM3j3Ud05qyD7EDt=~K< zognG+v-J9S-hliX>-c3>@FcvlUaFq7tErKCdpUf?el?btk^OnIw&o~3P?7EY>Z7Rw zNv$aAwMh@;s+G|3_}BbI3Lor|dLQ(-*w}%5U7}A5TH1N#ZSp{L=cxu0$k;C!BqOJs z+jFm(SV)|%U9bj2_SYUaq7G3yylAlxah;fS9UXZxHOa@DT3`i|BgJ0N3nM&dV3z8$ ziWjVkFQnXl^bc{D%1>?eF=07c5@&4f z*&BkM<>gpxadGQ&E%ihr#$Ir8R*+zdPdSb;{}>(1z1_YnKol2zx;bP=XC%W8y}pZ7 zmy?qN^eOqPvFTYCLdgYh{dBiG?*bhvw3u{**lr^U5Dr&T@|)++K;CmM5cWd`vWnik z(-JCzCfh5L)$&%b0CZ1HSgQI7*k!@ zbB8nOZq4%3MlWb;;oW#c#)jfQQzYP{@>&Yr)hOli8tF3?4(By?T!`-ex^m@>+)GkQ zaK;t#J3lVfik?3Ba49A9<}vo~Tyw<_UV#z&nLI&@{R_^>gbpsD#yklv*S!ug}& zp}$*TU*=^d_nW-b2(455R1!A!GTF<-bUDg29+y|C*do2rq?en0=P;#47e0eE!_@rM zs29Ka)U-9C`u1F{D-BwUopdQBQ9pdzrU{PmuvnQ(2dbd2vzFkZDha)kn9t?u@K;&O zhCTGP)})d|9sPhomu4i1{IF=N*3d|rnVk3gFpns`XrmWT&a08Zl5{iQC&>>sOvSWqgW$-%NtL1v*#nLt347cq{&e9H=5x#@D~3e`+lwKC&99Ph2O69a z3Y~oC9>XE&N+rNXVA6y-c;zFMSy`!-R^KfA1)aiCw*Zhi=BcB;c=HF?g4}cSRcVma z?R}y<2%vx(Mz>JkbTBBj6cw@S4pPSBX2r)7E$z&!S9E_SeBvYi$0^@yw5QQEa7BPg@((R#JN9!gAU3K7Iy~fwHoJy4v6t z|1cFA`Hs}SC+*9Qc=-5(eSJeCil`Evj`jETJ;2B3Pv|gpIl+F*rZni3(W|MVGUr@n zwS4J`BfnZcz5!BgGI|NuXZTvOoOC&5IlzopTU%HdN_E+17pV}Vx*8f9`jEa2ffy}& zssfQW+QkN0rFAR-Fd6{_dx|!yPE*9dN&x)i3YwZ`vBpag&4s;`XMX40?p;QaR74LS zg0P{6-S1{01k}cEZf+nwhhDTy-`{dEn-E02xSVt+E1gz568LFlqC>;Nx+}D3QMW-} zn;MapmNp8NS>@#9NXyCXv$T(xX<1w6M<{WU9MY$iFt!#kCUq{_@`wc!$0Q~S*-m}y z>+74Fd#yx`x&RdoU0TzuT?L>qRRxT1N#4g<{!a8y&0_}!o(>d>YKu-ruRN6^+@*(Y z2|typFzHMjuX4$GNl3u+LgM`HntNAVm$U&OA(p!+LS622&Ij|1pe{z*5m_&DSk@~7 zUr2EPjpOx6!d;F`&ZX2my70;S6v=FB$)=R5Hy=Ggb=NmIT*W>Mja}RZSf#zC z{oXLa+X9Bi@;-P}@BKfm)R?B666Bb__ESeS=I5LMXSX=aoUkt`*9>9vO%m?b$J$7P zl4}meQ^|)yw{Gg;WcZ0f;z*&`k8o6_Iz$ul#r!*r>zm0)9=j@7_!<2y>}Gqy?R&HN z8|h)Mq4xL}a@6CT(&;xCvVdgFN<_6s-Ga&tTQ06zU>3r!nqR$tjf)5VedZb&{LLwv z2mw1AkB|_Hy4h<-Q*t)&fknc|%*51@9R9Y=0Wa$AGuA)YSb2Eip-6NB2zi~XC{?v^ zaG&u__74A*sRW;^26#7NngrO!22Z2^+dn}6Qw9B#a-jdgd;RyS0R6YO@V{5;zZDAo zPdwy*Q3dFKsGt3_DnS2pUH#v!0`xyR+Wzk<@c*aA_|T1|C)Weu6iDbk+(a`F2mY

      C0K8uzVkr%q;^3NEff(?3nQIT=Z$hk|BO2=r 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œ|^O}r6 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�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

      +&S{d%( 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

      yJ!R@#1Uz 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

      iFq097BXPh^cB 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½%9Zm!=H*&Fjk);(L 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�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�a-0D}=bSATN6^SEPanNox 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 diff --git a/documentation/userguide/docs/metadata_forms.md b/documentation/userguide/docs/metadata_forms.md new file mode 100644 index 000000000..e2f3801da --- /dev/null +++ b/documentation/userguide/docs/metadata_forms.md @@ -0,0 +1,137 @@ +# **Metadata Forms** + +**Introduction** + +Metadata forms allow data.all users to add structured contextual information to various entities in the data.all platform. By creating and attaching metadata forms, users can standardize and enrich metadata in a customizable way. + +Metadata forms serve several key purposes: + +- Improve data discovery by enabling more consistent, complete, and meaningful metadata +- Capture domain-specific or organizational metadata standards +- Streamline metadata management workflows +- Search among all entities in data.all based on attached metadata + +**Metadata Forms visibility** + +Visibility setting defines who can view and attach a metadata form to an entity. + +- Global visibility means the metadata form is visible and attachable to any entity by all users across the platform +- Organization/Environment-Wide visibility limits the form to a specific organization/environment - it can only be seen by members of this organization/environment and attached to entities in that organization/environment +- Team-Only visibility restricts the form to just members of a specific team, but does not restrict to which entities it can be attached to + +The same visibility restrictions apply to the attached metadata form. For example, if userA can see Metadata Form A, but can't see Metadata Form B, and both of these metadata forms are attached to a dataset; then when userA opens the dataset, they will see the attached metadata form A but not the attached metadata form B. + +**Metadata Form lifecycle and usage** + +1. User given the permission from data.all administrators can create metadata forms with the Global visibility and visibility for their teams. Owners and Admins of Organizations and Environments can create metadata forms with Environment-Wide and Organization-wide visibility for owned entities. +2. Once form is created, the owners can add enforcement rules (see the section below). +3. All changes in metadata form can be performed only by its owner. +4. In case owner deletes metadata form all its attached entities are deleted in cascade mode. +5. Metadata form can be attached to an entity by the user with sufficient permissions. Permissions are given by the owner or admin of the entity (in case of Environments and Organizations). In case of Datasets the owner and steward teams have these permissions and also the teams with whom the dataset was shared. +6. Attached metadata forms can be edited or deleted by any user with sufficient permissions. + +**Metadata Forms levels and enforcement** + +Metadata forms can be obligatory to fill in on different levels. User can select the metadata form and entity types, that should have this form attached. Enforcement affects selected entity types on all lower levels hierarchically. + +![metadata form levels](pictures/metadata_forms/mf_levels.jpg#zoom#shadow) + +Who can enforce: + +* Data.all admins can enforce any form on any level across the platform. They have full control over metadata form enforcement. +* Owners/admins of a data.all entity can enforce forms for these levels and levels below in the hierarchy. For example, an org admin can enforce a form for the org, all teams in that org, all environments in the org, all datasets in those environments, etc. +* Share approvers and requestors can enforce forms for a specific share they are involved with. However, they can only delete enforcement rules they created themselves - they cannot delete rules created by others + +So in summary, enforcement capabilities cascade along with administrative privileges in the hierarchy. Global admins have full control, org/env admins can enforce for their sphere and below, dataset admins for the datasets and items in it, and share requesters and approvers for a specific share. + +**View Metadata Forms** +By clicking Metadata Forms in the Discovery section of the left side pane users can open a list of metadata forms visible for them. +The criteria for visibility: + +1. The group, that the user belong to, is an owner of the metadata form. +2. Metadata form has Global visibility. +2. Metadata form has Team-Only visibility and the user is a member of this team. +3. Metadata form has Environment-Wide of Organization-Wide visibility and the user has access to this environment/organization. +4. Administrators can view all metadata forms. + +![metadata form list](pictures/metadata_forms/mf_list.png#zoom#shadow) + +**Create Metadata Form** + +To create a new metadata form: + +1. Navigate to the Metadata Forms page under the Discovery section. + +2. Click the "New Metadata Form" button in the top right corner. + +3. In the pop-up dialog, enter a Name and Description for the form. + +4. Select the Owner Team responsible for managing this form. + +5. Choose a Visibility level to control access to the form. Options are Team Only, Environment-Wide, Organization-Wide, or Global. + +6. If Visibility is not Global, select the Organization, Environment ot Team to scope the form. + +7. Click "Create" to generate the form. + +![metadata form create](pictures/metadata_forms/mf_create.png#zoom#shadow) + +You will be redirected to the metadata form page. It contains details overview, instruments to edit form fields and preview tab. + +In the field editor, use the "Edit" button in the upper right corner of the table to update fields. +When the editor mode is enabled, the user can + +1. add fields using the button '+ Add field' in the left upper corner of the table; +2. delete fields using 'bin' icon in the end of the table row. When the user pushes the button, the row is disabled, which indicates it is marked for deletion, but user can restore the field by clicking the button (now with "refresh") again; +3. arrange fields using drag and drop, fields will be shown in rendered metadata form in the order they appear in this list (from top to bottom); +4. edit all parameters of the field. + +When finished, click "Save" to apply changes. + +![metadata form fields](pictures/metadata_forms/mf_edit_fields.png#zoom#shadow) + +In the "Preview" tab user can see, how the form will be rendered. + +![metadata form preview](pictures/metadata_forms/mf_preview.png#zoom#shadow) + +The new metadata form can now be attached to entities and filled out by users with access. +Forms can be edited later to modify fields and settings. + +User can delete the form with button "Delete" in the upper right corner of the form view page. + +**Attach Metadata Form** + +User with required access can attach metadata form to Organization, Environment or Dataset. +To attach new metadata form or view already attached use the tab "Metadata" on entity view page. + +In the column on the left all attached metadata forms are listed. When the user clicks on the form, its content appears +on the right. The attached form can be deleted by click on "bin" icon next to form name in the list. + +![metadata form attached_list](pictures/metadata_forms/attached_mf_list.png#zoom#shadow) + +If user has permission to attach metadata forms to this entity, the button "+ Attach Form" appears over the attached metadata form list. +After user clicks this button and selects the available form from drop-dow list, they can fill in the form displayed on the right. +After all required fields are filled, press "Attach" button in the right upper corner of the editing area. + +![metadata form attach](pictures/metadata_forms/attach_mf.png#zoom#shadow) + + +**Permissions Summary** + +***Create Metadata Form:*** User given the permission from data.all administrators can create metadata forms with the Global visibility and visibility for their teams. Owners and Admins of Organizations and Environments can create metadata forms with Environment-Wide and Organization-wide visibility for owned entities. + +***Edit and delete Metadata Form:*** These actions available only for owners of the metadata form. + +***Enforce Metadata Form Usage***: + +- Data.all admins can enforce any form on any level across the platform. They have full control over metadata form enforcement. +- Owners/admins of a data.all entity can enforce forms for these levels and levels below in the hierarchy. For example, an org admin can enforce a form for the org, all teams in that org, all environments in the org, all datasets in those environments, etc. +- Share approvers and requestors can enforce forms for a specific share they are involved with. However, they can only delete enforcement rules they created themselves - they cannot delete rules created by others + +***Attach Metadata Form***: + +- Users must have relevant permissions for target entity (ATTACH_METADATA_FORM, given by entity admin) +- Users must have access to view the target metadata form (see paragraph "View Metadata Forms") +- Target entity must be in target metadata form scope (see paragraph "Metadata Forms Levels") + +***Delete Attached Metadata Form***: Users must have relevant permissions for target entity (ATTACH_METADATA_FORM, given by entity admin) \ No newline at end of file diff --git a/documentation/userguide/docs/pictures/metadata_forms/attach_mf.png b/documentation/userguide/docs/pictures/metadata_forms/attach_mf.png new file mode 100644 index 0000000000000000000000000000000000000000..bb2d91a6a2503d2d7db1aebbb875708188d20a71 GIT binary patch literal 309329 zcmb@tWmp|evn~vT;O-Dy7w&GsEy%*10KwfIf(C~W+}+(Bg1fuByE|v)mA&`%eLwbd z&hySSv!+*1%XC$Bchy}rAqsL5h;VptU|?W~Qj(&IU|)@Fi@Zz{FWdCFfh1c zGZ7I5DG?E31$!G~GfN{dFv*a(1ZZWYL$vSj9@8SiGKGr5Hd9())FicF(iPcgF<@B% zC@?ezCUzg^{X$`A;7L_}t58>~idND4wPk+#22_~u^(!oFg~#`6Id8omOG)K^ciA5k zWPRs2DB(5#XV?9k5=SXe^a%>`ySOqc%0em~2^kj`3NcH|n~uQB z$B7yDVNaU5j*j<=?9N>yJFxG5sB#;|c2lSVz6Ssazz`IeO2oo#ya{~4151}Osv>dM zt5PakcaBmj)2Qi9t-LD$U0((4f}BGu77|Q~sA}4tOG*+y2D?iYfFKwtZjW?_YbQIlf`^NX4!75k;Z2DelT%BLe2nMZ88Ag1Ov_5i zGKpApxBGdI(x)2S`crL-1A(c_pXgqLs4d?&G@x`lKS7cT;=z32=tKp6LV-wJY{gV^ z!C+zypcQ+`-Lb^`aL7U!L9wAeQn0ALxB$*HTf?fhwfcIf8xVWxQ2!-Y@Sr!?ZadXV z3LmTtZRbflxds;#g17_od$}N&0dOqbsyGb{3dI*c6M{YSsGRlO&hjiM2;euM~q_!p0hM51%*!Y1E92N(H z@i*WBjFK3pOXyoLM3K-^H262D#m|ldh*v=nSqcEC&>u0x;N(G9nGp)8$_Q~naSHr5 z@Q!Fa$U44Hna~qpY!GdM0^NW_NF{yQ1(f=LL#7W%-@7*{Y|&C-_q!f1R2wnM{gAuM zF5DjQJfY(|88?|RJ`ZNb0(k%q7zDkdAF~XAAplf!#9|Z`zhYtbEFOi`LM;I75#|v( zURZvnnW;l9{1P&O?_MVBq{W2RgwX+yBW*Lh7d-!WLNTB2Xl6Vd)^OIKz>q$2{dhw- zCW=J7FYtS$dq~DG*Wh8jG=>qCk?Mk$2pk_<;95Sm5G{xE|2XYNGU&JEO2r#P*bjy8 zs8 zXtfxYX*`tf>hOieK1Y%?C^M*)i=H*EAU3I8LAr^!<@0HIM|d{9NIiO78Ny+Fvte#}cJ0^iPhz)f*M-;Gdv<%6W4s*aSx}|= z#i+$q(%YGRP7%zq^s;)gS$n#p@W~amv2}d4inY#WX_I)9`KB#q*L5yt8MEF(O4-b& zX0?i%*jCCCBK`6brAkH9IjmV0xu3FHgc>yNs|bNnEa1Id38# z{J>X<7r#acHT-VO`l%ngN!iWOtxu*x77r{3<^VgG7Z+B!rW=PI>S5;stYgfp*K_AF zIO;fMIp{gt^r2F?6E8>aQf^24M_iH_6ZP2N)42yz_0tX4Oa;DXS)!U&{mvfUs>^FP zD&0jIwjQ=oy;C()omGu0#VmU*<5YK1@2F$0+gylUUa6;8ep)E6vuf}%G%@b4;r;5e zo^H@F;r+|2;8hJ;0{W-OukPTScEi?ffqoB18vexgK<`D^?VZEgxx?6LDii2^%YDN! zpQgl?+-9~$1V$#!PA!GDuM;Zsai^MxGny)CaNly>uWCM{}Bg0~ab8}2i%d?txZ zia0-TEBMR!#M0^0x4)R|neTBk#wJv#WvN9qWV-~oB;BJE>12>+h-U!xJl0j(_g|R2 z!M%B3&Z^in@KyOOX4WTt>U`9|sEO$^={C$V%`yR%h9s>MKAU5KuVDySuvm2;eTh{k z#xnbVi~mmg-4XOv#7|^MBt1~`$6lcG4`5e(AbWrp%ss+7)*GOUOBjC=ml_)vTZ4$3 za2HbrpCY6_T$jL$UYtLOXqqrAEF!!tgh1=0&GmjOi|e`3udziYJib)j-l*tlsy446 zVUXUCk(V$kBr4P<_`M6sK&`4DO&#_bO`QA77~z;qIkXG5OThjR?H<3pqb!{qzMQ@6 zQW9ItNxF8-OX&Dc!sUAIL!NSOcmY)2T)tesSRQ-9_Vo6&JZRPw`IRG-g=6A+3A5_^ zD#RS7Ht{+rV-Ob)`c=n&t20shxp~mMp#I|TO59Ihz_-7BHL%;S1}H@-ZET-%+}(>C zckr@DE)%ZUDm@yR9@NU=@jkJU%#Z3DSokPT}9D;Vy~%6?J#lI%(1Es8(Iit~K+r7T*@wQiueF!x{>Yb?G* zP~%oJGQy!A6KR?| zl>6X&N$C$V%lAj;tL^tP8up86_TyK3UU<(O=bzTcSADL(_xt9Fzs*D91R?uiQI_XvLCUFvFllUtcz)$XfAi}e|mz72(pT>&1tmTv0d3* zBh!^wN*PI^Nr_7di}cIc%3<^ldEY&&`fixkf7qWQhm*Q6FKk9_8K|jNA6ZY)Ahl$; z^ep$3adKjNX!%Be>91dOaC<0N>Ce z-0aQ(rQPZ|xIYzWEq=c^T%I7WW7lqfMe}OD%>KioZ2q*O;l=n}OD0N0{ur_U(`lPr z8-W-6)7Xk*hud5He3?vxMnlD_hGW6GbQyCq^sg>%i#Ga8uZ{Hc!lq=e0RD4-VQ?h3)yiLqsZgBqRgTuPT_B_?w)x+_V>CM5!r^%GT2CcQCwh}L!`*sI9*OS2?H^}JQ zfkd+cb6(j#M{oGIkB>c9jE#(Wda~`#p70NIf=L40)ZfAurgOmHfLzR|-y7<{q7A_^ zZy-Kv^RX()!?RrreogN5*-C2i(8LETyapr2pDaQ>otTkqK?396;dbpqT3(WNa(+uo zpDhr5V*-n7Q*CEXmuEkn^Ys}R!GG6Teb@G7J6fOf0Z;CPVyAGcjRh&Mp+@Rb#x$g4RpC?Lj1clLQv+1f2W~%K+nL0ltiSYKzAiWdm|%j2U8nI%m~^-PzJ26q=o|+ z7#78!3tUQ(`~uYef|;_qqq^)D9zz=|2K{d~21X37RU>=NJ{*VB90dPr0TK?#3DBKM#LNpObkq<0&v8{#C-POjCmAA#s5_u z^pBs^)X~wFhmq06#f8CzmBGf|gprw>o12k|g^`7Y9#n$f!OhxH-<96lf$X1+{JR}d zBL_o!Gh0V98*Ab}?dluYI63l@lK$!Fzm9*tr;)4KfA?hV@ULNk2FUp52_rKD6XSoi z4XVobCznUT%+<(JL)6R)L^Dty0?h2(Y<&Ny@c(=C-(CKXs_Oq;m6e5w<9}BDACLaO zRaG2}>_u#>K%F`Y{5Qk?Rr!BD{8vRj#y?~KAGG)HQldi2uHYwWA6;i9v4h4H0cU4t ziYr--EiElIjV<(N^#f5Y7%naeTS$3a81&6Pa?&6+sk!Gh?DCG+$QrZYy8V)}U%VcD zJU(t9dPhZo{0#P=IEi~uAK<&9QCvnR^ijaT{{trq>}MRmPvHNFmjizf-u?9&IR$eXy#0I@vtk= zd^;0$_Sjya=7$4`)eO^vDoR>}CZ6LMlC3n=2o#>*z-Pl7fra)Jt8*qpQQTt>AaQQl zDTMi3k{J%`iAnlhyYW7>e8tC*9150EG))qXiiIK=H)KmZj94@SMjl8Slml~SjWI`$ z@M@%usL1g7`*!2Y!(-S>$7^nsUOPNcw|#2({_W=E)WrSj2>r4yK0Ix(CO=$^Td|j< zeXjB|L?XH`T_yGlr0{TS5EJ>sImON25r5)X)UW&Zzc|yU50@DsnZa8K(Z!;63efYZMFjNVTcv<+`+fn=o#H7hZT*1zZWjTmjdYC1p7eZj)VwqvAo;) zJNAOeF+k+<$)NM^EGc)CwwG(POLk{f>Q*)dxBWJUox24) z_m3%DepgK~ig(I(!Uv{w#~gbBMyU!kJ7~6ff4DNx7B%7UH)sKlOze0kQ7$md!6Lnj~|t7q&W-!ax{zBY7gNQ>&%NM0FB`hS|gg zu9gI1N#jF=-mpR-y8nvi!Fe^T9=^W{D4j8hPci3Q`6(9JT$CZqL*-t2dE4)}|9-jAASdYmwLUA+rsk=VoRiAGz0 zNW~a}ft>%dP{giE;voIM6aM>mL)ep+9gzZ?HWaeJ8OCI&Y?S^jq}jR}^v9uYm!1I< zx9Q%T7{U;d9am;5;TKDu0Ja)QgdP<*54Q~@eOLD>pA8r*S$KvdRul8wb6@d zmQ6IyPbJtt6jvo^r>)lzP*WUAr-@WrZm44(fz^WDdYO>yT)f8Xik@)A*8lQ%W}q|G zMb|kz{eqWBX@mAyZY-J8fc-`TFN(4$C&a&G4pM@C_*>yZ@h|6W(AgnzU6PWb(^B-O_8b81%*yo}v; z57MEC(EIJpY>#;qh%7`teDCjEG3j{pkkx_2o7UjY?WF1dRfv9(G`Ll^^Fa z$IJumE3kXL4SMp9z@yjv5l=piEg24b#AMu9*huFqHVq>!)JF(83ft{HtD}WHPMsES z8B0$2Gki9OB`#p@{!C;h^Z)hw1G5P^w&pG6!61-z@N=cesVN*|jQ$G@5o+_fIb{3$ zi`cb`E>*|)dZFVTc`UD$w%Tzv(1(dC+?E&|A{jE3y&{bUVRLpUp+Zx_V%}{MJ)_`8 z2F2eLSK^msG%=w{iJ~taXQ>Fa(q~{%FLmxt-RXpXYyBD9k@XA!crYQrD4odE4irG^ zgX|njgjNK}&>ZT+Rc}UUT(NW%p&&C4v)0^5t>G{Y96FTXmxxYKum6-Yl5jA_Mkf6& z1RmFi#^QZcGVx5=pZ_lKzlb9W8^oVAL}R&iP;WtXIKz*HG6J_Y)D{aSk;L}( zQftZa3S10kUz~u(IRBz+4inL#3$p_5X{Q)6mAN8~6oK3634b)HA@S~nS5(mFtu~Z1 zOf(dW;j@({dlp)6n7R`K9JC;~kB^V^FXoCpCn8>R6m~0Z#s}WRY<@6a>^7zYESLad zh#!&o1@4Gi7IzO9Z}hPovNWTH1Cal=18lt@8qQa8kkUM+RnCu-(<1P>(N>$h#jkN# z{-W%bQrR91De-u3bLYw7L>ytrS$Tcr`T$u1*uX5^k%s>oCZ*<$6R_8>fondUBqcsO&tF`Lxa_s3EQ=w#D z2U4*p!qM{EY?gl1LY<0_1pMAZg}%0%U6XICpQvSzV#Ob`=$z_35%=Zz?0+noieqlqHyHuqO?e4Ch_5YykS)W$hj z+-OJvBukD~UM8mVq1yjg&3q?>zwVcN&E$-uY{4kS;{=ezD+uHMrG>6Cyz?b({%{uB zr&tAmnJ0^}TK!AAbtcfGqK9x#60^V8<7wad{7y+w)8&M)Hw4dDGhz5Zkyv;;)t0*R z;7cLJzlabp$ZEE=qtT2_?)h+`Tp{OFtW-jiC!LgP&;#Qt)&73rODN#^Kj~R}LouiGp7smJ7P>(cG1@P*@N*a1 zkSFgvpAJi?fYblD3TTnQ3Pm9it~B`0B>Jg?e+_quoecXQyE`#C`oqm3DV*cfQ&G)To`ITg4J=2Wytkq(DDzgs*Po{#*pAN0lsEg$*HrMVnBfNqS?;0*0(V2 zOc~h}E0+mWv9`pklqw|mMdE$2Gw7e8subXKa#k--;+rEE-w z2*Dr%CfCm3Ks|v9VkR~zn11kGZzr!v3cURvS>BMRQfPH#Z??Oxrwodvj+y-4?xR%V zysF$!f&e5Dg8EB(7Gy|gyNrP2(;U1I7iyIBHyQj~9_`)SZZ)r>yM@)8-DTt)1~Eru z8D0M&A$$YTUUsx+#^;Hm6h?qev#at{H~U$~Mk>1DTzWyyeEKA+jb4jhrgxo#LdO#K zsV*Z8Bsc}Q#Hd9JoJjlogAm2Aa>2688TB(`KKD?6;?ED%UlN&;`|DWxWfSF;@<%6m zL}Af-3c8=$0OlC;3Y})oXh}Y7;9QSylLy3T`4PvH8{qth+XeDFKZljv60=1^zBE*%sqT_}_-l$^Cl3T@FE3CddeNaV@OL7E z0hCd}{X80C5JlqVD^HH?nG=JNoaEjTjrd$PY~&cC`*A+?D{vsO4jX?6YzyVbme_6w zESI_NvIj_1^B%K968|&OWCT8o*$YguUPDk5jbl`Y*K;I; zcB`<;OL)YKgm237QbduiCmC zqSbnw9UOAL4aO*3eUl1&k6AEMAGv+=|8cW3sN}wN9oxvCzU(RcuozG5&DT;(RzVJ! z&lvZ)eL~b}c2rqucfZx#LFJUQ3?<{ccGw%(a}>&Ld)@}<4_Npvdu`&5&EFqRn_y5Y zif%qpX7_}kDJIWQ<8$~lwjFa?!&^PYbiAucr%+<%$tQ@nHtgK{H+iYKnO+}px0@|4xw)(?p1^Ny8!n0h=qp$pV`Wu-|TG74VUZfH#v~&99Jr8b= z8?p^u=zPH?#SU@bz^)HR5k3ZwFM^mG zG9R>_^P)wrGPHv=gHlVnHg6ree&E^G^}_`_qv|EK?w*yxw9Vl~Ls}nZz2FyBc&`w~$q(LM>6urHH15 zO~Pb0ZS?f?O663Vn3OFBr%Tkek&Hfu5-6GAu^bJjOzt2|9YPPo74V&GuTCeBgrMan zA2FrA2#Sc=0FtD-Kb|-YTfG%HQ3KKDv0qTUTq7x@S?AeK^FDXlvZGNQO4ISxm#^0Q z*1!OI6Srn>I(!jcH0y_QrNZylTI*R-YO`7+yPnpMGN!%7x7q#;lR_lFkqWJ}IPM`@>U&r;UrBIrUeV%+)*MtKo8PD)c%`SA*zlomY){K-#LEC>FnA!KF0jkYb9e zEWmz8(!ICG)4{TF0>slEZ<~e2xOUG=wb_1%km9)E>B7y|QJw>pvc*KX4DO2J?SdCNB&>v>QU}DD@epv74ZtF1jc1tfFv$>(;44$(%)tlVIV_QMpr&iO&t2)Q)If61$147=yxiTf4 zRw^a9$l|?`#rx={w?v*Z0Mv?cJieG{fr`;{dsJ(0Y1y*N^uM{pi60EklSy&UN9s;L<Ot^ zTYtJBO9wW=>W#cNo|0ldUo2f`p-SR#AFaxdzi3-@A*bHrU9)Ece~2GtnN%cRCq0v? zE6aT37i)7kr*W#jM5HzJ`20NGH@Y0Se*)Kh;^8Ma_2K0 zZ`GoFYo%V32)8p%wpXFsBGt$lf3Suv^@}_oNCu^F7;|Kbs||kNBC@Yr%<+(ByZfRa z)cE(pO6H~i!w>G6YT3}=m5KVwYQMU=M=A5 zduTrO6IjgWTe;=J_SM$;63UScsZKeV_Sk zp)lFUea|M5ct`Iuh`gQwe8r`yvUsK*Jm(?j1=MnrjNdnp*Vwxxt8BdL)s3cKI|wNW zw$r?j51kiAz$I8V@>xw7>BOgi&i;WUbTP*>bx}hapkZ`HRwAa!4&z(WlJ6XlG6v(cctKgl?<;_)PSQ`IP1;^n0jY}Hm>f{mLe6l$V zz%Yf^p-L!mXJ9AMz+ffI6UX?pE`1~@Nspipgvl6Rrx5w^F7m>_Y|`{mf4FwgP*TR# zWZWgF$(w77OCr;JwY+7|V@=uPg}<+4H6;}0+ced~+p@3;)&k(E1q-pB|T-ZB@w z{dk6#V>=;aA-(?bi8V`Axr}#!?yWObs}|HSI(qguxg>5c{5YB{`nl+%O%v!aKwKZ` z+e#DP!TFkhh>yR90o}_dj@&4kY%CvWlTi)PYmbH03kCCpeWyOlk17UkZ~43~_C%NG zj1r&VMY>?#VY>WKu=Z&YyHF@lbN`z4=?#gb<0jp2!&e}jgr)$b5<^ko=}h^A7$&k1 zqBC5I8u(2fHw7uGBws}~c<8w1fxODqm)_^;VWvY)PUIa~$4gp8`~>CYDR@gfN^-5{ zND-0*FT7+~Ux?iCWQmm~kwn1FSQevn6)}=KD;%pUJKDSMLq!Sycfc|ed&SA5u4I|v zY6EHEs<#YfYHZ5;yau|FRJ7_93-g8_SbMl4l!@wg0Gn`bsm7i_qxBU$9$4br%YZtc8@&?26u| z8dIo=Pdn)DkID}+atuG#Xf}-}-he%xLKV5esd6=57`W^iSF@mV*h8o_U-Vq{P$~{P z_Z1T94<7$YJ)Ue;YYH?w8wpV!sfj)_bN|Qu;jvFmu0J5>i9O~p-U8#L_pnmWKTI6L zFO9(23V!1f#_0m8xUN-lkpucBRn<#>14nB|VwuQ+U63;(w(9kLXjF2N5`pJgFsR|n zHT%5X$!`leCyNf)Vn9iS3UCRoZGhDxf3>M|zplfG#yO<-9w&ByG(H7+VV|%$mhy2D z*ls-o$M{sGH}@m7GBkelWVxX{5F-_&w~sD?ysJHaU;f(e0`H61e?BQoBv>G3 zuE0~E#R9_*?Q9`Rg1XurGoNW6E03bc)%CXOl~$kXZK^W+&NeQ8h~8g$gwLRDJfX@= z3UjVD^ea{MhNibA+bPW@e4$FG8u4{lvFJo9H+R@N4?u8;E>VE@QR$ZM_Yvo*M z-U+y*jqYNObsJB8hL@;=i!RwZXU0L_FBfI4V8z-@8RoXF-!X!=hi1w3yP*plVI^l{ zHea0t?VWWbTs&WUu2;HV#01_ggnxGZsB2D-_VxoQyQ={t_@n-5EwS-5M)o|;rY$VI zl84f>coR+63CjC(g{nV|<(~Ti>#^HU$ojos`TLpjm;wkcj@T`&lpFG3byw5XU^BRv zxja!b1plSI7SlMF(uQ<(3*D1VXa9Nu&}?)K9Aw!;YHn!>%WiNqs}uQr z6fv57JWgA=�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≈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¬c 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

      5X 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

      xzTQSX`tj@+tD1z5h1*)XH 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ⅇZbo7#)X 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

      oLhFVCQSrcL8Z&c1YOhv^D-*7K$m9 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%0Drp|TL4aa-`KFmNU#hUsd+ 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 G;Gt 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�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%0Aln99KanNj>bc&$PF>GnlQLcC zr95aK&9CRN?~WcgqFh=z469$w z*hI{hA+`0)ArYc}%hLHUk!Fen;G|{>poNYx{B*j?g5S@zNMZXH9pdsW?+0=_^PkL8 z+ojIVKum|c6wo=_Bv^lS>Bd>bZ z+eb^2+UD)ggcqVLUVc5twbK76eQHn;6{eImxzm>TV|u zv|jnEWXxkP;u9U(MA`~VE~d0p*^yi0J!R~u9Mu=W6}}(9!V<17orvZ z4do~FkjThO9P3>S^2GJ zRgOl{AN;2V)6HrVSo~Bx)rk@u;@X5ONX{61&obInUJ7gkuLhD8EshsQ2l@=3ZW_8q zHE*1Rd=bzV7SZLr;1TV6@9c463Q8U!oXeWPs0Isz)%~lO2A+>?C>OMjRw}j*#+%)5 z#7kMdwp`ieJ6oG6RNHcoX}~T=)*0vE?RyoR1`gxCSsmxmTMx@IowD+vAM+;e9rf8D zO2l#-O4cM_)$l44T@>sY{RZ~7JenL|@LCq07fkdx)9$Oo7ti{E}{`{Od1Gbgm{Qf1#O zUY@$--CH9HuenKf((tX&mNgrb{+7L=&G7vY!E>3tZM#zaxVKU z`V3wAE!oZ{mO6MdlNR>4! zw5tFa8(YfoAf_`YJHJrsfQ{p9@QikyB_VE=aBPAHz`&ui(0KziDS;*12D!ba6ehJ5 z=`7Z9dF-ca%lx?_!*GiaKz@cZ7(k}@4Ogdj0%Ya*JR)gSBEG#F-k+#_;(CRMkB!Yx zZ#KQB*2B1a4_0K~G`+7eSZp4s224@A&cm@ulZ=r`>AJP#u)x+@+vb(n3cBGVc|~*y zJe(z;oduUX-@SgA`lvEx%qSxZPvX|?5jB;aGx{Qk$DA}eV0Rdd1)3h)qG5r?^rqRM zkyY4=)$9L6g)b8VEN)rjC*{OOs_>SyZVRf5(HKiE&XS)gscq5T&BATw#khnXn=8~= zn?Dz&bH3}cg=)Le1k846&y-d-jW5ajEq^uNoI!AgHs%jrQ5RZ$#?at;z-G*wqqH}| zcDko$-R6S2!Pr>N?>GLA!%x059n_=Z?HXAA;7}X&us2Ij6w$uf7Y=i5R^q1bOw=a1 z4pozam0Uz~lltO2VgVwF?7Z%6C0UTVf8wHkEG>9e|WwoHo!eGB1BVb9mE+*U_{|RZP!xCK)b0CB@We z7ASMXm!+a{L01w;YxJKb6$XoOmaJvGt_W(qXGEA>yOsGd$tGFFxogRZ_X~8a`A%4m^G+92g!~frA>SIge$r6IqZFgAXY(l~yGO zGIW-SMjJ6o{OmI?8=6koGOe#{%r=0r&N;O^WKhF(Ro5wbzSkhqZe^F=m*{QyX!|{u zV|cJax^$S{`@OUDoWrQY;*WsL?=OOCD7e6$wmVq2YNc_*bce6S6STU!;wmu8W*RgB zo^!JDR37}OrboC=JB?M~Iev+*+jOQgCi?eT7`jfoVA8}b?W%lZ33b4FA@SBc6QY@c z^DS!jw-c>2&aFmBA+zqnDlhRcS8vYmsgZZu9y2uCImj2?&zH4*{f;T+CEuV0JALQ0 zookuJbi*hpAwiwf4#)B|SC7(M z_)dDZ1>2t^bzbI2UsB*VE2!_|7NC@xv);@C%>%lR(?gTnBfHb81!WNtOI9U|T&SBN zhB=)n;#Bvlmso5o;Xtf8Go)O)kzUe|u>n6w#8a~CGXC=cd^&A`!&BN2z$VlxV8AI; z`UNBID#cPr-(6o@$3$~A2AL1qeKj<#-!VaKb?wLM*-bmu45mt+M&%M+D7`+$C)yod zE~P3QWX=*PvEobz1Ql_xsSgpF&*r{P2^R<$M`J7Ay+*MiD@|*gsr^*usp3x%?$I$Y zS3cff^r$M76`GczWPn6_VCZP9?7&|CfD0`e2d4*trT9nc>|iw=3m)Cd`^uM@*kO9B z3SdP6Pwf7g+`i3>dN3XynnM(2oImI)t*n%rx-w{=U>x||!mhg>=Ka9hgSIW4Put~- zErvIpg2ymzs-RzOJn@@wu~4U~6B4nA3n?^%4EDD9W^m!EwVD@}h1pb63U5jy>KwYl zWO;8VQH%Qt+Z!zon_)vCX{e;lj|(svTidQX8|Q%^r`bk&&jx~pfE3i zQGSSoMzoty2qq+NjtMX_amTliVE{ztL-lXv0trvGo8iP9>pNlYnU?*FX}r4rypi6Q zVV<=uiieAOos|?0#)le33`R{C<@quP!DhAn)V-u)YzJ%CLo?bWW;5is-c!n_l%Ez& z8<}yMY2zWs=XFz;Jo*kaFT4{`x!O_puY>dKNkW?zGHm)0(QHH)*cyEzPN%wlzQ>qf;?tXEmIXQa(bo(&;DU`Swr=Q+Gq$pg(z3tNtflt63cR2fTxF7U`< zEfYxP3G+2^YV!-ay2g1X{h>Xe*<+|dQrQbmK}cz&J8PeFa`?% zxjc|W!hEWV7L_nzXF^ojsRqDx4-k2Kcbf)aIykaZZ3U-zeB<@fp4I_bQW#KhE_7@- z(fY6SeViX3AQeW*3gD=2j;x**8BiSf%%ov_`Vh)DXf4!&m&KNGWmasA#qnLQ(JA2mc^>t4tuIy$I@01PVO`V3!!$obG;D=(R+_>; zc8!wOsW=ZgGytRbacxarPJ<;XN)6?dOr`bk+_P|}QjyKv$zyv zs$`DU7q0Wn??EC>o+m;>%)y#YH3n>5^UDYLpskx%AjGXau<-|XQX)q`|ESt2_;jL=z$)Xpa8L+xi(jDO(DHM)%*@*XkygKlKP80WOWSN(s z1(SwP2pe|)kmc1?vO;t}ws6TA6}Ts@U<6PzPvg}{7=E&0NaZVI%iBS@?E<+SO#<<1 zb<7<#g-Yl%_l)?5(ozSkULh>>zbDV26uyO?X_PwrmAl4Qo+S=lHR#kY%CgIxjTFie z>S1w0Jq#T}z`8cbda-uu2m4fTBtMdyr>7!0ObnhTW>yh7Q--^IfV9?28S^6E4U5CN zX5kuUE-dR#t}I{8ax)?!Z|hC(vDsDdxY@w0JCl|TiSo2KCPyt%u@y^=Wih5UL9}N^vw$5Z zPsLK`fo}?a@_J6k0Oyj|ZbTxQ_S2W}<@dSU>?q<9HG~PH>mqYefdBe(;0t8rCGmXo z-x)vd1(@t?-$uOve#U#w;hehu#l;44iUW5Q0ZzDXH)Cb!{#7YE5$TJNPZ}JHu9KV(4Ap3~o3rW#W zk;M+aihew}5j=hqjdl%1vho-*QKdh;OqCwfIklf(^j_^TnnzVWG)8_maB`^DX%DkZ zW8Udi<Y#24-yA-dfoK7y|z=lqx^mt`Xrkzdft!J!q zC(O-;fR`78)xncxZYvkQMXR|e>;G^8!$OU&gC#oS<5U@zYnk~H*Gv;srttzBqiiB% z2TmWg0O29wEQvD;xutF*13olamK)f(@l|CsvWnD*I!Ac{rS39yY50I2KboR!5|P-f zopo()Wq$mH{NeC&MhWo1&tCu+ue%{ZpG6Y7VOJQs3O{!kBQO>yQlv>u zV9@oX$tl@rT|W7Vyguv|FH`P=i!$95ThjZIhp0=F{(Yn^>;uXa_1eSnH;$hb8TPwq_iQi*i1dMXr zz}=kaA7MHL*IhkgvKiG}v0__CR&0cG9mrIYK7pR?VVcn^LSd#o8|zb%z}QVTX{$|Q;A@1-u+TkXPw~=dwaL_uO~&-+O;IbiVhDyuRRqcB`tGef z9sqjE%8i<&f=2JR>T0#5Zuwp==ZHt@qzkVqq%#DghC6$4q1CfNzJsIdE2{|3atq5M zHbjf5{Y@262CoB2(dZ{mCY+7jl_jsOo{G>6%Nw>cwocuuUJM#A#KuT-dB0lGyZ(%# zjZ=o}jqAnZR;4S+g)?hT1Grcq`WufTOklR~dgde8i3<(mF2^9paCs~R{99+r`6 zR$~HE7EOS2wPm`x!7P)p_C<+7GI7t~sfQW5$?c9#;x6N$H?^#kL>Sw4w*h02ko#E< zj1C%=!9^2h)C;n(|A_-uE-;b7meCn1X;@UG=>^a$MLJAp^%!M>ERu{x7($ zQYXH}sdY~Nk?Ov=kJU4XPqG1__?Vw~?IZc8>&z2@k%eo{^~lL<18iN+v}X8&MUDjOX}u1%Fo7kC%yRTXRG1 z%c>Wz`YaKjF?rBL4`%+dB6`g6iuiQKMMzmI@Z+brR7Rj|9C~9V5_Hs3UD0hB-lcXMiJ`!>e@^XNhS1NSY!gY@eRfng4je!+{EWMQ z%j^7U{y5EzX#Ux%#gL{J><5?p>j+$=pm9*)l1Qf4`wJC^tenG4C6cwoEKYd382{!_ zK9D;vp!}J7BRRJy3qZuTm(N9VN;CTK@=pF7u1X$^(G9(P&W38J?5XhP&o*j@UW2(n zjeF*BpgU|(h)i56(Bzm1%i%2SIk9SI|Ma(Nt zPlU>bBXE8NNI|VOT~=oezo5y}F4phk(Oel8DTp6zhDaEQn9|d%`+2i!68vL0GAwLz zRQHbO2Y)%V6@_H&ef_t{k8Lbp)m0L?qBmCLqmR1?Ey0ckL@?tt9nm6fGW7IH_dNmE z5(BKufH5M$X73N5lRcB403S@hh$p)(*yVqoA6$F@2%M|$D1X;pXDs*He9Y$zMjfs& z1eA7sac;CDJ4j$7MB5GV4c0L~&345kSc`r{|4h?$pW7$l6K;aGZ}E+f0@hD(X4RA! zergKmbBowMt$tVy1uZqf>0B13Rg{3(%Sk*2(j3;{FZ46FRZU0%Jt z_0u6B*|+!DmQjA6xy6>)!a^0Kzf?qfMvT_sB`IBn**ba_X@mDevH6?&`(!xT1wQmE)CG^%%IwYdgmD zMav9RO`9w4ejuvTK0cc5lqK~%FA|^271^*7YZSCNkVS+I^v%UYyL~~s^&!XAeO!&0 zO+!e|c$2a)pZVIp5?iu+${a%*cPZSvi`lYxOz| zBCw}-EOOUQ^Xt~aMuxZg4Nk`!)k#GHaYy=`RA~Fl7#qLWv5C8`p}-kraAaY0 z(dsQ29`1xCPac${s9L@Bv@3_BtjD;byxMl4ff19gdsf}pl7Fs!9B49aJ&L)D6x7T* z;x*A_7NEQs6(<}z&J>wNpdZ%Xq%*NjClc0W9+>S(IsQST{CT5gpXK+&SB=pQQ&$l6 z1JWO}>Ag%2Xi?`eM{@1wO9+hfr(}8Z`5y0+0NyX>K$Epg>u^L>#)=t2^MpZ7OO_r{ z4j?&TB0ZmH@9jN+Kv!%GbuYTGI_=hT>chCzQ(Xt_(DaqTsDbYF`PaPrvQS{frQ2ixX8%wRt`__rE zmeK-b)p^szK&}^s-(0qq1fUo$Rr^g?y1cH@xv{xb$CU zBlL-H$LDMTaeRc3@S;x})xC>H0&H*5oQTO?u<;I8oY|U~6fEv&+qxRvU1+AY)jX*B zxL#F{_~+>>y=RYI2|TOWKQIuf>wQMGKbTJQ;Um?UduLUdKYV2Ot{>+3I>0h_MMmxY z>0`6e0aKxz0sIInk-6E1NWSKr#*op7OXzjtzP3wDq7xZgoh|o?94A}lydskzjB0v( zy8K+QmbuV`O#b@@!SytbFFjZgMfhY@lApfYbbBu{)skf3_@k(M?ED(B z`npiw2QWy(m)w+jmbZBM4x}?|p*^VU#EbM%C{-bG0_D_tou>Vmg{7ul65ZXdcw0fy z$Y`c;b2;tACN<8Y`a;_Qi7r%!)JAx*%>Awic12KK;U|m6XURE^w&4^t(KGyJoNg@b z{8%@7)Zj{>Gi;{s-8tJJy|_u0-sYoEIl4qc`(WG_bAt}Fnj^Lkx~|L1U77JJK(DJb zAwte3w*_jQNHEJo!1@$>*j7NZMT^#X<50O>>69Z|y@*-nt7tXjMT~(-Dtq}y_0*`= zg4BR6T!A3-^uhOAgY7jdJhst7nW^7Inkk*1`kQB(6=O0BBN`?;TRR3@^F^Z^dood} zUtEiqQOiI29R`4`q0^ijqbG)n?RoFF;$yj`Gm@vg6e2W*#XR*d5A=+7mR&-NgxU3) z3T|P&H!d*>Og?|)80(Q>!K>LOiixxfOFqV-#|#9WaGLq>3NrBr0o$5O%Kfp8=0FN> zgXh=gGgr?)lev;dZfnyVO04fPdTk)Ouqp2?7JZIjV_Ryifl2HyIqMS0&$!np^JG%s zO-;CN9*(=uqWF1)Qzy$IZ);FcCg*fK@lKyP$A+Bo-a;mr7v8h`fgEW>1tvzje3mv# z-K47je*Ey6$YD-Pd56$5T>+V8P45&N;Nn&et~I5td1hVj;J*+0-h%j4nVFwLb&o1r zdjuES#W!0*8n1zwRYzoY>kC-4^Jd=5)dO#)U+6!G>!;4gF0cA(rb^f1S|SD`QVNi2 zt&Os!?(zY&34IS6$L=x6n*a%6u9Vd<^(1wXE5%~!S^T@S<@pim9_saveY2!?QYvb6 z32XyHYRH3G?+aX|_+}M^iu}up8Idx*8C$)ZkCSRmGQu&_J_hWz@>+3PcmYQVEeWeF zWg=!@F9R0b)%dy)NCDbXbA(dyK3ch}^!jk%e4CJAbb0}GKHBcec&0@i{-b+{gDAxn zbxPX}*VU&V(qU^!8;f&?JKc&8e002_(snvPdTt`NNhes$!Y`5fL;7~;)*Wuxpu{M*fubK<>Hc`U|3*1#302^-1%|Q4&ehjIo8~>Ceje(iy>rh{7(s=GwPJ z?K8+qxk#}sp{}PP=QNSw!atMoNo@*fA)fUG&}J$jPI}GXVfd|{V)(Sk!w%j&;daZe z`!Qifa3Txes2C#2ia=ea6lZ|mdYMfbQrp59^LpH<_&e#WacAcI1vN)CN+V*y6p!Z2 z!=lbIFydKbr=B+Jole85=x#bw*)nG(4Y9F7PJr{-N`K~Q-k06cx3+T@nWUTBty{c- zEGCmKyLU%P&O*PvLQCp$f0<2D0&2E#r9Nj4+~%bQ;Gw9osd$>4StNlua+H#XDK4B6-{th#e0^A)r3jF*^lDi0U_FMVZ> z4o|hl^E`?pE=Y0mPZWPvo;q|A#;@6Be?561?ZMVS7VxEjO=OmRIHtg-Ii^`T^3@uBbw!BMnb(g#}44+m@S_P23rmjMvZog>4I*HIs369IRip3KwcdLaUTCD4br&9TYP-mmK9Z<@=5*Fw6@yMoTS+ z2a#JR-SiSfLbKn8XVqURd~9AaC)Vn+W|Cesqd}T(qE9QRZ~VY&wVha}baesnlGckQ zwR~qFX{K)quAIoD2E)PaZ*kVFbWkmmFJby{`k;+A`;=rD3O10b8F;nSLLtB}ldm)* zPi!u~L)TF)5urSwJV+fTERo{JSoFC#&6_%RaJnAGpCiK$jtWyC7WZ41NjyLBp|j6; z7S9xEdurlS&f_Jt^>w<-sn%yzr$(B~-l%ITFqEn)kS?0S7k}axrOd#2p~6`wLu0bU z|13GP_$W&A+`R{?r^Q)_AR;K! z(JRw;jSdvxT&{6@(9$Y-R-gy4cLO#V!E8D$U2?ipfr-HuL-R5Y2t<~wCre3%*?`p6 z%m2pr=L2-p&Pik$OD9E=j~rx8EnvnFS5e-oZ?$ccy5fk)6sc-SLf+7&paAmL7>1+W z=+H60&=i7~HE)8&LG=vCFMe6a0(=CFz1V<}srRvTE*wT$Kk2OWfH+F7P;B;MhXq^m zfGaw#d94pyQGfW_^kWfZM@?p8BuX;XPo-nSC1bggxIlPjYv80`rrk5R_LRlq8p5&%0dFmpp z-PgNbozElKbQI<;8b#i{vZ)R@I?~bo=So!rM3_43`NiS`vGT{A^1|E#I=>il;x-|< z*vTYdBHWy?90Z<+4v0IQJ6~8GIU6V2S5Cv#+9y1eL}@Z5-9!RZf=K+DS$9Hn9(W!T zctAl&(NZmVO;W~Q#`C=q!N~DvbcZQi=JnD#ZwJJ$KauRkKg>8M(#rLZ8o7jvM|6G3 zupjC`mEc!<&Q%;Qif)7{S$ybR*xdiyI!c#0hPS-8db%P0+eC+D$9r_DcC=RZSXJt} zfO6kLbJyV7rzzptElr*DBBHB(X_gvBR?lC5ND~BA-Su$xxjS0}b|aDgzPKU0CCm^<7AN}Sb=FAMs1#^(mZw>&X^PCW-nTmzAI)8{A`xY0*wI!7ojL-> z$BDegfQPzYQ0-4(Bh8yF$rNZcACcN3?2^5mK2!S93X>WEAr2ne>}@hngdsZzv-`Ql*S2tTf`~F9XDFVtZIl1Or1_a;^_kUH@1{3bc>6x61PFlauI!HJ zoIBA4{nnvr`O{wa43eL1&#<(60XyJ4`kunIRlL9O==y8nHD)o#78{SbHYd+`wbJ;( z>D5LQgTb+hs~z<;FU&3O_bL9JW0tx48m8l}uh zMOdg65(Kx@A4J|^SN?rx_@iHPLtoJJNaeD*sdlns7WJ|X>yTeiTX~<*md(fVheq&; z(}T_TL?g3A3rHfLZ7PZ2f8-Pl6%`@HHBs#)rEhwj+-~%#GgvEznd&Gf%?b{$(;3L2 zC|V_&HaU^sRI*^xj(J)Fyy?ZK?L?|mBi@@;u3<@hE8{VvLEWWeK7a`fotxBlMUp5o zY@k}u8ZgYOX_^Ey%Yo3j~=+<~$B;7XZZ7Df;JG^JpkKo}g#uhLSyqqmML#3F} z!~gD8S7Zy?cb}qN+EZ<`(&R+bGRtTgy*ctc%5`e1Fdb%$P7M3J2d5?B)%5+%)Df!c@VGQlLpMOpR(d=OHlQXu4=HxhL-g*j1AoJBp^c z5tnKB!8Vr!YD1!(?yuoy133FCjxv$HL2!O-KbIJxd(2@S#}wbUbj2zT%nZHQwk5wQ z3h}iJCOl^k)-gQ}knL-D*v`vv3HoK%_}zbgH)8eQ{bkw2KZ2}w<;cXWeNbw&&|;+tRunahun#uV`6A$zZk2rL=zg5oKBl<*@)JJ2+gXwB zhKvvG^a@XG|8&Uq&%FsMIGW~Z9F7wlq9)ISLMbAhYGT{hxe%)(0UyU)JqA|o_K5^d zr!%y$&}1=2+R6bbV|+khETw(#qwF3=%=&OImH8FU@`WNdEo*m&F{po)^<<-GLi-Id z-++)dYOp7*EC zK@Xu}gUC+IN^FgM6juwcK2L;}tpI;WGLM-xoC4|-{F6aSo)IPQI)FPrOMRdA{*!5Ok^`TgSE(YWe-Xy5EA;-M8%|+sUHOU3NMUA*BHe)li>{)MKn-^1Ihlzt9$M`a^IU^Gb8E2p$I4_OT8YE z4`XUTU2aC#DRLLu%fGL`3oT>>ilkwOB7vesw=XyFBpbypcP(o~04LX3v5CU~fbIb`VIABIAhoEy&ZF?s#O;?SY5{tOVV^aq)vq(a~~e zCxm0iw377mwLSZ=cl(LO>>d(?;}1v<@<`1<)QjxixQNLk`?CbY;f8V+r;QeZ zk!|ik6-Z)cd~ClVFe=U7zAFFZXw3_eI@@_UHsvSu+RV$z2lu9ya6z7hZ_&Q0gxh4_ z!DCP$&Euy~`(bA>-DDzcJeRNk&@-HSk^$WpY^iCDAx~`V3PYxzEnJC0oLNhh?j-nG zr<_}{_?N*4lRJ)YJ83x=e@V+JCVN2&1t07@-e5w7kw27IeSEhvGHhfnHb~Bn{9)rIR{gTmSdwc)<=jL{0i4H>O0aZQk zlPg_o)&UypAM!agtt+`L_hv`TN<&wgDD>eEe-2qm0{{)SZDo!9{1>+wIAtBzDE}0c z;|W51e_#I6kBFnw@?~_|gs?}Pc~j@^K)mhm-vAsfJHeD5JNHXW6SPf@=$=hM2f)s^ zXpbP=4v+tteac0aC5ET@1SV=;p_zCIR6@qV|j4+X>{^|_`iitzrTT-q9-Bv!1V`w_|umKaOrqt zVlHs8R#FO0BjDgLTtTJN&Z!Fhk9I<>!v7pIzQSKHtt#I)9#xE} zeu)!%S~I3dC`}O&9wO#BrlAe@5R$CPyQ)KrUt6wy`GaZC;*~#nwK%IkM3S&I{*;E9 zLk6wOZ4>KtgY)5r>ybaoc2^TvSiVq}TGfVS!*0*>Cir{*FX1Hci-cFrmhjI!L&Q1T z=VQQ$N7cXr0Ir<+Qi=b72KX=0z%Rwne+Hna|5t61yOpM$=u_DLGwHzU&q)W&drpmO z=Lv6cX?L^M@qSXbv^NW1eqHN>8sk{a#=WkuE@sEv!7LPIkeYS$kH@#_s3LQ#UK;Jf zk=~m-<{tz!a*BXPivAXj?5UizJ-AHr(MPd+aAnI|AgVQO!2WKWeh3x|t9unzk0Ut`doA}&9bcvsS@BnAGz$~NlybGA|Y z@5jQvgOnbGGk5qGMDEWJ{O#hNAh)+~30RzC`;q(_A{Z9*N1XwV4j;}#V-e)aQjA@} zP9&J86B07f3;3Uel++X>ME-6Z&bz+~b=|!%wv!{*FZ?Mvl5p1jeVO?CkNS7cIw&@6 z<)M#Qp8OtD{C)0@P$4PkLOi~0LVGgl71)z!p4=h+{f@dBqeFndOi{n!Gr;}+k|6l< z0d%2Hy!ks|mXp4nI%hzj3rXH-u2$a$dDVQ0Q~YhB(P;#?dqvK^ku> zf+yKiBl8EqIB9&90Ewm&caGX1i^l~Z@Q`<54UUc3@6k(Q$bYC@aqpLvE6#oIwRb*yHK06}Ta8Ng$my(cuD zZ%+M>p@C8hd$Y*x-o!77uznX#_T>Pn+V337@3r+wW2J3&2nyNy-?K$PD#<@ytD9=1ZHX~m_2Qu!=?sZ1Mo*-1CODHW}{2Xu09JBZbh=X;7_{B<-+gy=&D_UOWVne@ibkE{FeXzljeZ^pVYy2tw z#vE#TbQ1D3$6P6@5_(*jO7^B2>OrJES2OSzeOXU z*Hnlc`T&wh=R$NO!e&ul*7qbXU4x?eC>M)=&v5+>{C&)NFM^tUMmUf&-~NIak+Y_CI%LqA|(>)RCyOHygdycW2 zVA2wDStQ=MFm6UdcUqIsk+z*X4f<>njBwWN`)Bs)-?tpVDJ!l0v~cI^u|gO9^Y1cy z!vW6|;P1;__)BPXfw*Ony>ZnKbqRgT!atf@e*$KZz7eweRW*P*I!}$2H?vxj+1eXT z)|!^SF<}V7yB*%^`TsJl-F62s}E6I~wuhFk6 z&bEAKl-=oHW51%J61@k+6_(kaa0z<_HAe>f&AtDXUX6H<{3_KOdhKzAgEq|po~JC{*(6ne~AXHs0P&%K?@eFPv5<9 z>I{&oVfrn26_BbyXLQeNA}|5qj05>Kf8CY)zp_PM{twiunhORPh7f<0YNu!C7*dn2 zGo`RmJia1(+Sr%8c^8i4y6^PRpc1&{5&?}M{}zn^hQBGDke&&3xmy3(E*GZtkSP1e zFWuEm0;5y;w-^+3SO0gBgD|Fy2#Jg( zP~RMy|kt2o8jUvqaof63jQ-KP3w{({5=VarMX zA)@@);vj|r6PSPyTa%Lk6Zfia;w5~0`T%(7Zr?0B%Cqa!ED7qu?ANgXe*p%VNPATy z$`NDcfQz#l!)J=rcA>ZEh4I`! zmbdaJKWSy)jj9YY1mzt;qq{c*LWX|ZY~c2F^H7)klVQf}Iq<C`UnbAKrck)K9;$xpx_e+cD|5?Z#Y<}tbpR6nlU-RWIku}l)G9bvX9b$QSKfo8f4 z`Tio9(2wzuvAJ_X=?~m& z(D4e}w``OCQfZKm7cn-|0^X$QcB2+LFm@ZY5-0X|H;_Mdtmn!KQRj{YRv*S3e=umu z{}IWY#J}HDb2&ExHGx6$Wg14c{1y&;sZr{&p=3Yiz_X6r?&PxlLUimL4S@Fkq&0V> zZp`1kQA3F58c=ieZnHysJCrn%`@#$3UKR+_F5C3^yaJ14d*SW$DlZXwm3J$rBg#(? z9{b}sjUj_%7B94YVLLVN>oQu78oh`e1dt9s8>&bwRRLmSAL7yP8_ zedi{&JN+^85C^d6+zF$^HJ`a+E1Fr?Xv5QT-b{Wr-XS+*Xd#-2R6Di^Ri7_k`=pu}AdGaL-KVfB>XZ(yHMTEgmZ3G=~eZvsrW+lA=_ zaTnA|GTEXIFT_*u+y-a3Rz|s1Yp2hL&_4RR{NTxG5pYPv4i2%duGQg0QJaaRaDq*R z!wL3=5ii@QKQji@C7gUuPaPXgkXgeXjp^H16i$2)vTr(wV?q0Ko@P;2%XH*5!oA^W*04<>RwTMjg%guc`36>5<3HS?j$-=P!VN;rvD7EPw~88l>;udbSx zf9>T)G}GRjSYD@dt10Iw?+_(>Yy0Mbez|7Bs|Old?8NKiU?b)exwN%wCI$+kdUM~Z z6n92CO-U|*LEKd?KOy7COPID)&FZ!$;f+yo7=FVHf5V&OMuA>?`9QV)KB(xTfm-x_ z?={!6dW({;Q9t_esp1QL^GRdl{cN<3-X%+)3yAR~jqugW6LTzg4(rJCVOAzeFJ8?e z6sZ%hf4P@H6E1SOF)Oq$gtN4Z>9?7&wGEEsoG*q_m!AX4xC|RayY^b`^ie z_uz>GvIg_o!dy%GuTo&%2l|yuy+&qB2?kd<+BEJUC~+S7yZeW4&hd%QgdU z@7^EP20!+S80 zMo{nW$Wc1ydA6B@j)nD>bAJFrAW^>fm?1bWWLQ6lUcS+jIbj`A!n#>H)$m;@7<~dc zRGc9X=$mu7J?AhP>a1=?Vz5;<$KfzHR!};#jPH8gp`;>^*(Lk`k@np|P43;g+igKb zK`gLA0TmUcDpI7Yh)9>-gVKAH7O7EDQ4x?D=?KzGAk+{@RC)_N5L!eC9fE-nLP&Do zxW9ewcg~zUbI-kh$jC4-nYXOpTF-h4Hvl0S>=v3xCj%ZHMCDs+i%of2)Fm;}F@2y< zF=4lzmFlidUhyl0f!WEK$I%r?>hoSFa;K;`=jy4xMloqLGxP0=}^f5PT#Jc^Ugxrztn+w=6MMJFuJ%F7`x1EZ36J!)FVPS)Tjbav@e z;ZZftBZ2jeM*t(`Mc1{lZvH6j#;e{*e)L5W&@2634p$lctI36YuvH!F-pwz)VL@%O zax_?o>`liOPhYNttuQ!mr~@C8Excy4V$zGg`vO?s>~HcD;0ib&lKpSYm_J@v11(ke zK=tb-+(qrYj$v}Mr9D)cmb3R_-ht;Mkd1qvOKp8`Z>^)az(@$IH1kJF@k$~tx^HBk zE?`m7JC>W~w>mzg4%?kw7{JuO{VPFdwA>`|qCg1^Y?;ZzdL}?Q(4y zI)asK0kz%@+MG-gYUUGw;rJW;zVi?{_MJb(tsGVDuaK1g z)Z@}M9|`X-@K)Ok{bRqoMDRbu*1r*}-@LVKE8`6U-dey;5SD@g2!gm*+YU#Gn3jloya3-Kg{xdTOidb-OBhW?ojNKlAD&wot zm2K&5oN0>DCL-F8r4=A4`PyFAgJLX`v4T&Cb*I|_u7I$>7%bUA|=opSx23K zI4N%$H2^|uFiW;E4V?67dKoC$xXNXuETre7@5^A?by~Kag*v#QYc~PgG2+k;MqvwC_NDf#4Jj<0FYPZtKKf)2KE&18cOkqVLxtDR_&{!3J9TQ#Cp8`N z;*Byjb4gG+PEcb7+e$%yWXR4OC?d|UT;7jMx0qiWvI`E#(m^vGe+bn^PagS%6sD8B+H)qO&X3VYc7#Z-REU7>IaCqFrmHw?FH9a^4=_=TvV|IALa zkGtW>s~xxY~@DB!KPT@LYpCzwoijb1Lk3zR7wArrS&&YvzH## zcYzih|K9D6$=?OlCh~Vd{hNEohOI`Vvc}~7R^Ohn-yRxId*f*$rcimVQr@1RXjx`9 z`E5B;7@8b4sWi(Wys!$J<-(h}tW8zbjEa>U*D95@t*M2f^i^N4*0(hx+H%6ako1Nc zqUsttTnWre8tG-hv zus3gY`p*j%wnnGMn5VgGFy3BM2(bQ;Q!5R$U|I0YWc~jd`~c% zpnOnYe(8&ES6oO}Tme@ghfe#Mq^9*`j=9PL`(Mi;>(xaN>!b7r*1*EtJWG|={ESLT z)qonxODamLpL~1qMuGh@7;E-=mTSrk+puwn_G@7vh`~HtF1AuunJ!%i7}YC9Faw%G z0f{PXDmX#TY0V6VrEa!b5O(%o2-XD`eKD{>d7(Z>eNWOnz{!nTypRG^m>$iw`VnDt zG(80gL?3$*)|_^i^53O3?!C5{6oWT0?nKF#SUz5QJ+*TdXxD`md>Ru=SSfyAlxXSV zoV)Kh1!i;!x(P8)+rtdIfEZPit%sFeSJU>{z@>HTH5M&wT3sji3xv&Ad(YZa%#+ms~xhcR3 zW_W>4msfm&QCd)>_*~=w@&Tv2Kx^LC?S&)`__ebVW{V$$bV~M*)E20pCw$nwT$)_N zo2Ji%?7czzyxR{>tWy`SmULZ~PYMmD88E3&SB8W;16@@fX2W0Kfm#`D6P`V$xs7on zzD~2Qxk2Z9m^m@lxsxGMVg34Kyn_0fYMVRUbwYKFL2{d@NMrhlXSo4LK@d;=`Rd{Q zEJH{nC>FI%d+Bi&lPz;~Z)UYMfwh@ac*blo_rd~rVjG2Jd%H+l*qbDA6$9EJNi)UR2nC88$9PX})ar*)Dysqtx% zp;wiUgF4_6i|4#n8yL9P#c#+g1^ z$qZ><@!cUBE=>H4%mPn0E5|bMc)${8)98+$O(6V;VckfcOyGB-xi!qe6GLr%fS+p# znM;^aw^lGCj`f($Xz>4e;sKjD_0GdbU)s;yTVE6)TlhrdT0GM}0q3n8@DhfF0I%N8 zNSBLCv|@Xj+(@lOZ-Z72Tx_T>Yq(>&sh{9eGkZGC-Mqc<=c&s#pBETDPoNc5F}v3Gns z5xoMxmc}9=N79IkLsD^IyTmUvmMm(IkU7zj!q>2WQaJp|vY!7S4~nlN^T|AsoEK%9 z$8u8y%p9Cki%|0ua?8p034>n@>~^u7y$S^%XcUE@&8gTqAPRZQ?^7tbbMMwur_z3& zl2JWX+b@NryoF;^PFTEaQn`uVI$fq93&_sHe4vdeql#wZ@+B2Ob~rn4ewG*X)vN@2 zz}qwCR4m9TCo{FOx=q#vw-~bC_1i}gDN(ylfW`Y@^9}V_re*^q&73zKVldEQY#+*q zRzK!AkT2UX{4E6RxlB{>cQH|oR?6qeS7WY<2N9#GjK^orOm{@XjS7C6zC%ynSDAaQ z5NbhHCEKbQe^RPVsYjql67LnPW2}4d2=($k-S;1lrz_F{I zwrGN#X~v%qS+940ar`8;gu_%TX4i=K6NJkO`tlS+;uLJ{wwDc0r70 zo_tEra22Y~-P|(xLZ8Zd-OVK7P@*4x=M}0XJnx!lmZ^|>nBRcSj$9M-*I^_z&ybh` zdD9uc*>h<{5^s^58ghlv+1cJ4o=D_EU+prOqu8epHW|{vccq$0-kxMymPLkE z`3^>ovDuLYO;FokemVejbm-$9hI1z}B-n0EL~rIrzo_ljb4m=d>Zz@UHC+X-U9!F@m+Pw%ozS84W$>;63svRMH4Urf zv+{{Gd|71;2K{VKLjUg(`|MBJ{J%hI?0=D4mV~KQdbw07yQT%WEc_+&E|g3gMSKRt z?kQ0+Bi4ffh0TTy{hD068s@exJOcssfU$0$8aH}bp0AQ&0U5xmAaG*3Nvj6AeT2=2 zSa;{THTh(pp}NKgg`W`k-7?J!3+fpYr&87DR6MH|e6OO?Ikl(-}CNPXOH%3_mJo6n0?S4xu zV~}}M@enJ1?<(@-`p=g&dn~Ob&BNTt2XK$G%=wF!MNN(6biy$p>0;;tj4O_l3A2H2 z0VYEjR?syXy;c`kro|>J2BO-EH)&^CHcf2)@MV;GTEs00866E=Y05{+yMr_~@* ztQ@iE6P|ygmGi?*>pJhU_;9VIvDSP!lV!SWsUD*-ui zz4^n=0Z`1YBEP?`luX%(JKzU964EYyPw=~OLbUydURgWQ1QyfVPWX(T$oVZ_p02j~ z#&IW-vA6mnd++AP7K2yG;VUHnUI3P<|C>`8pegk@B?{(F!><|yv{?HQFB8QeMRA~) zxt_AE=VDiTDT9ADHQpB7rF>7$rAc7xhu#f>VDoXv%ucDRRc_kv(>mSaBzF+j!lP` zY5`^Y$Dma42;DxqE2{K56dW`soVH7TN#85@%3nm#8|n(-182dSSj0Xj6FyZjJyBA1 z>A7*}Q{ij6A}+7l#b#F;L&s~q6`YwD0P=539Rk6VhL&9I(k`BnJpP6>lCJL{Mf%n9 z8Fj~-79Y4Y58pl?2W(TW6eH!7>)c=;*#;p8+yW#9g@C@R9G_8oqpEEZq|UO&_mtkK zW4^X@^vU2ZV>e#L|9NM43S13N2ILcUqA5 z8TywLhUq^_t7pwuI>ovrmnZB) z==+gB5H@?8hdiaE)4(66hC`xPW{-@*t~5P`r0I`t_00%3Abn%}j0bHXa^3`}pfJyO zr@LCE06^KPTx(^M-X3FFwY|Qyu#F1=%%LUaZEM^Pd?>IpEfn|Z@Lnw0><7H%1R-{a zbIK0KmBKN9YRQ^a3<`YkG6YONk7U^5m9HUNI_X8ChxE~&r znm*vBJap-Qx~@7E-NK%IHrcNBm6*!$bIHT}S_zt8jp-U0k+MsK%Fn7l#YOiX$Nc=| zU0^QUl^k5FPYz2zH9SiA@X;n?b6ujzC2^K}sx0w+?A0Qp()po3G@?#K_GiA52A}S7OTdJxVf|YxlXv%j8n-VdI&nAvsZDp=7f*4sqUiL{H+v_R zujj`Yi)bs1xWw~_m34<9K_3_6tB#>(@Lyn?O1R?3KCrQXb$grD1mc8O_ zS?FH0v~%+;DR8yz%-Z^H^Jtu;`KKX5IJ|CyTbQN`TK_1?n_zNCLNqIUGoc5y5I_qK z+xaml_@(c|PzNUoDx!-zZ1Za#E!cBz!D|lai^!2S&0JmySBb?c$Zp zUftGU{@Km{Tif&7OX&)nzHLxks~4)puKTCvIPZPOO<5cK^{lX2+*=Y*A=(u|KKHUm8mP+TH2 zpS-9ufmx|6JUp}QM-MZ6@7w={XPhq+Dh1X4CTf4okH=X(p3gp{-TrIEcCju!D);VG z?YYYDocYQ29v298<(MYc03VYeDDa|mCDEi~hVE@Ii}1c>o~t(c9fX67J}?&;&{;DJ z_&8X&uQh(Wfjgt2$W8Y7H)`W$Xwyz-+-yF8 z^^GjUV_Fh|d-$r_EuLpt{yaXTOnL^5X1e*j*Y>z7z`%WRn!S(A$(8wgJpwpH#g%Y` z0J-d|2DndFjy`bva7ix!eVJe?0d?qK-Z$6&23i4r)M@4aMxpW|AMg-8xMVy~p%ZqA z?OBQCy0o` zNmev1sT%(3NcF>-+u3YE$cj=&7x|jQs@r_em9qz`7)!@?=DHwGj+{Kcf4QT)ZrM`+ zfPy?xw!_o?i&Fv?r60s z;>c#*uU-zWaAPSnwXAXRryu3?lpao&x<1;)x6T``pPySt7GC7anf9Lx4*#&RLA)^` zDX9gn`l6!lUtjw3TCxO%$Xx1~O~UtmGaBgb(Lmv+IVYmh*oiQL&v8hSZSwnxdwk=HD{JU<1FJ;+uzhneIiwp^91WVe5byy=PU4Gpaak`JcQ_;#a?f%%NdwRZ?L> zN)BbDc?k8$+0IMrEIr3a=`)#@00!@t&*e%|R1P0tuxzfgbU4R)lHxVE0fgu>fDqN- zqUh}aGXZdBr8r5iq@_*)u8+T)6d?@LdW_wqFr2-jQNzym>^gDc2%A>HHc0xHjI0Fo z|43i}h$1N_W|h4RM3sj$k-@lc|5Ab)*kX>j=O2Ot9Q!R%P-LECwClWWXPlnqnih$dsx)t(CmJeGqK0>LK` z0G6c#)HZ@{WX6s(jZ#-B!=7I9oO!P;8j9#M7}dI=b~Xl62j7=J;&9MabYN`E_K}PH zHX7EZ+naJ>%k7am1peK3>1#PqkHNRe0(gXFFaVx4njmY}P~E(UvAdgdtw5X=0Lyqp zxqI{$>2uGaHP%+twTXEiqC3`eHLfhzKT z8@=r2zibquzvJy}ml}rN*z@b!2fZfbET141Dr18Iws!Z&jYDj`S!}!W>U327BL!Cu z{dkgFcGMUJ9W^-uH3a16{ z9A=S@3+mEGn94TAubWD-hU$}_P_K$DWs5)IA2ax134zu)i#{66bFPFZck?3MtNvqp zQ@f7LR<{wNBV1u8n89l7%Met}t;(g`jZjS&!4cBK)HaeW=025VZOVvC%SNd@BVQp; zkY;Val#0(S+`uf*ha>xWJd2rp^anK@VDzWGoo-93ZI(}R>>I{MSQfC?>)M#@hQ#xy zABTQpO@Gvo@}_||_6~GE`|2XKpEn1%;F|0`Z%x8K#5;Ot3d0h6xby~Jfpe{zXHP3_ z*u?u^{YOr1n_U-Al-ztR|3$WC-|hcA2Q51z*yeH#|6^~t>KMzwTUMW!^pSb-UG9S# zeaWjEep>fi5zU7M0`3TApr6!Xn6s0fdx^3#N%sp8PIa>$Rw4$Jl)Qp-TU5WWdr?3k zFyWe1RWAH&@Nl_5Pg}5#O&eg@u5w2s@&;;U*&tZ@HnnNf0m$hiDu3Fj&;Zt{BWHMH zOE!s5XWQN>=^hVa1}wbV_C!w$4bMCf9Ku23n!le`a*%Auj+(FW^u|+CI;{+&W0@4|k{yLw$ngEBr$%!+xMtqpVI{yY7MzpwNV*S4n0E23@VcTV zsf&KoJWSisIpTowBIb*s%nBZ1tvO$Q94P9^?sG<={52H-;48HUj6{6oY_`BEJNaMS6Gffh&P(lm zY>^y?fjP6X0{(w*sM60aMjDo$0~LDtr+@5x^}B|&9wv~uNW}>s^EIeb2Ggt!KfaNf zBS!6|RfZ~Gwd@d2Wq-a>vS2XVg>&jAu{TG(WICqqmAJ3y<383{*p1&~?Bj@jo5vxw zB^bcY|)ToO_0$I_~mp)@1Q@6roe~to+BrMf#^$xc> zW*f(mGax<NXXP%--J2Tu6H>bfPbqA$u zH&mDtrX^sz6jnk(~d0M7fJAQrV{XuC!YQ`LEd)(Z`j}Q-BH(53ILTcq~YJw@U zN*?75Z$4D}FnaA|!nO9ND$|!n?-=;oJ0yh4g8WIZ<4I>(PgJwJrjVyaAnZkox^~q+K<0&(;}RZo^Q32_vnrF&1WX3w=f} z=MHDh*d@%kqM`R%dI9Je>#P;6!e-*q(+R>Ti~?I0jYTu_N}*me7y9>MKd(3}j5$X> z5cR|K!poy&v1;T7D#Zh11VZg*vk8Qcv`@8Rh>S6R&% z+;2gRRE&(>(@fr5i6)mt-A!74dxk2UyfC$?MB7Ts`Yu-a3rbsq&^k5GRD3Z)ZVAdY zZU2HG82sE_0CGQN8t{N>Y*Y!37!Vf)OyM(qw*s?X$|>2{m@01-V%F#GRP*xa9+X&4EGH}}WnQ-9K>Z-weDNH; z=Jc^DPuK3;Bl1(9+HhOpWV!E2AnOWXx70msqR%hi3G-Q7dvym!Z@|H$U=K&c&o*dra|y$6Ib1u3fO`l)&y?w zB=e~BzN@VsOF=I2q8vUmX`@QJTtUlaaL#*?pvI=H4EOOp&4ZB*hpk0Xhpkpd+qfwky#6g!h`Bo5eEGQ!DcKiv!6OiF~?`5%gaX zKe&QDD41jgG&HCF`Ux~N_yen~zAiJp->k*%%XT)j;A$A<`0t*v%rV;P+UYB}PnQ)q_T-C?pqrE@aZ1+e*@A{Oz-$D! z)sh$*vK8C}`A2?bQGc8mh>%V-w+`gtub}KQQ`7+!N*mkG$uSJ0qtHo_9NDhepD|+- z8DohP!o5c1Wkz|&d$x#2hvq@mvwY_=X$MUi%G6yOVSmb$EklU53$TH_zR0@O#bB&)*(WEg-Yyk7r`n|{a5zB;oJA$2g)+Wars-ggNf5t-vqOo-y^(;^oj_$fJPzsMGh^Pg{THZjV}g~y%7%t|6pg%`Fr4}uA>kVY*2Nz=F0-K#z=r#`5)5l3CIMI>D~03c0p;Nn z1R#(N`@c8Yd6Dnmf@to%a7(qYR68S0!hPz>O6et>3ng{pXP~0dmAeeztbk4G^?*;i zLDeYD+PWycU(t|KyvvZ>lw^%=&7uLf;pDRgk@YsZwsWnOYkaIa-MT?vJv#kq4_eYm zx@p@Wh?xWlWz3%~y?C}18Oq6DRzIfs{@H-$`~G2Qvzc>~T=Hh$u2x=*C9s3Jy-QiT z9QFIsn%CjqZ zPDiJXIb7fo*`7Y@F$`U`bBt0AOmM5X*ZQ*Zar0P?n`!Ai+4qNxBn}@vYDpv9?8YlA zgQ-pUFuD+gz+9&idoxn}usw_^%B+(MR+XghYs|5#cJEMmB?1NZIiKt!B?xn3^f%w! zg@#M3tX&`YU|eb8NAW(Veqv=SmztER%3D>w=)0$UiWu*yb&Hm%E5QZ>!PQbPfs!70 zW++foc!i`L*CYS6DFl!ccX`YTcQ`L2d|Vw!lEY z*lpH!8Hn?{8MVvtN9ebbH-t4A|LvuwSLx{oUMU1xCBF<8my*;Htak)eo1Ra0k?KEo zD0pcnPm03l^)!g)9HP7Mnpfhob=6vlu>9R=X2r%MS0uOJFxUd-NA04OlyIT+r!!QV zz8qnlC=RPsKaKO+mn!#Y;!>f<4;|eOZDp>Hr@+rZQcSJjN0eUAz+~qT|2QI*g|hYi zx+~+0kTox9P}^W4;E|dL4BVrB zu3>JynHU9+;&7lT1%hYoRXx(rrS%Mz8+CrhAGcV$c1kT%%JWUO`4Xv&?OZ)`0)9NQy7mHA-d+(p@=dtX4(K z2tS{UU3oF!I5!>1N(!AU)QYEh7%GfZYQG_Sf*VCUB}Q&o#VTLQ`c_{r>{64#{12-QZF)~^~9e>_3VuSBN!)R=^YGp@f3FVtqtB*eRJ zKxf5rJp*0sf+ME8Dw^uf^ggj)M(EX#L-k|`XXdeW?EBI-ats;l&Frpmra1?r=nl|T zOy%qN0Hn^X(^V;XwH`a&yDBC=Q(C<1V|RSQmId((@!w;4UiEoKK9t*U8awr-+oEdd zL$O#1-c8Q&tFHF#5f{;^g_osh{Xcg@F7rFdJ<@^ODOekot2;RIs|7dOQoi1zQ7=z) z4#UxLc_;Z9i+7&U(B;l8GW^|cCE?6$7D`u5`z1qeB{}@T58=KhSBG+04D~&o@G%!2 zQkxC0e6P+l4w<@YkEPToJP36@E<3c6EuNWpR;at|wSr4Yx>_h+b2s^qKcrK&@7*z- z_jS7fC@M_vp5JnH^lky}&Q5pbE1UaLQA~td5iNtMB;na}9J;^shJw?{3FG5gDRT4q z?rHE|0l%SAw%GT4|6ltEuC9#Sy#pW{dYYE`2APphag;0yKr-^IzI&r~y zYk*y+{Mn?$kqV>E`bD5_vNzy=E6h*+86f!9d7pXsM$%m`i9fo}+u$UWx4hOQt;T0S z&||$lU-(nMugn@2ycc@44G)0U7Oz%qKEiZPVQz%qjlcF&3Icy&(|)c&_vGqG)$MgW zAK~NK`zoJciktNe+e61rc>slDe8B53SJu*fSmoUnAYTBz_>CVWd$!#ZJkNE58}ATt z$ev`TXj6@&izGx0FcS6;2Fod&(Dj}SV4Wg&Bp{_rJo0b!-ov38hSlQGCWWU6+g;cM zv0Zq+!?$}&>{j}eZJ6M_svP$~*``2z;7$DEf+sSBp37k^g_frVI52z>*vi>IH*M;~ z8O_&&D~Mwn5Xr>?wl?m{zCSBHR+{8o6Ku0gF&kj?TUF%lrCm~j^Lll20Z!P2cjA&o z(**O^ClzLoCG~O$BZr}^-CxB_D`9alf6ZweeVLGUv_(c(Ga?@d@O}u}x0yaiV6pUf z?`==Ji(7$z7&_)#pLYac;e!tDU#Zs?7$eTtEOY1=bH4S6t=KQSF2byotHIK+jIb{~ zuyb4D0fGU`&RBbX*+*ya5ZL4e)g(E4eFis0W3@rClHu-#k ze#*}l7u660NPdEtRA88SXUhZ{=|*$c`%GlTrKnXbyw>0qbS^;~5ABTKKxnZK74+f=E) zeEozj$`J3I&AB~DAAsw{_u_1eTmP*5zP~8KeEou9W?eMb8dtFgw5I&qetK6&LPxc= zWabz^RDFNyFn2gF%wtTTgs+R1Hs>-T|FUd25Sn1?Z7KYB0g7VRp2z2t!|NAb`IW~B z$7i4J{ZuS$gz%!IF&wg2D=2M2hxHFS6lI6WcKQdXu6C_x=}WX4#j~4~ zDB#CD-Ooy>t$XC9o9JXmY@-g!IZaX_@mm@%>tn*U`u3KtFTDx*BdaP#{WhG_ z-91m5d;A5jc?AO91dLNv^Q+qUd~Dz0dnXPv@Q2Tco&+xFjCA`+AAY37Zujn&dB`qs zm|y{E&jV@PClg-cv{|z&&@8zx*S7tas$no1?H3giK4tG{9^#%=5=8NT-0vSsJ48hu zVysA2*%X7^QOmDud(9P{<-GoD$dwz{i-uz@h}Z6_EncvLj#f{SYZS~=GkmM`WnHQ& z(XRH-?0o7OpBvu_IrKLl%PUX7GOF}aQeDpVpO-k^CKfog**_$+T)AKibFsG!DGS%m ze@}D@Bx_DS)y~Fo!eanM41HQ~YYbXfmY`?CIND<>azghwT4`Mnx%&pCsh(KOT3CL2 z$>csODfy{m6K$KW{c%We9mE|DMvX|@&VLZnl@QC)r`?t19J_f$q)GPh5_kJr7I$Lt z{qr~~fps3byCO&{br)!<-cDsqS_Hdd(`d4W~wqZ4!uryK< zpM7uGJF}a^x$cgpNxtWNOE~=T0A^BM2Z{t;T&J9`7Xl4PbF(&@xutBz1gUE4 zTsb9QeKeq#F_vI`(QaV?+o}Z`ATt|MU+7yMSML`;9$!z!ms~om8=&hQZ^)eUQ)GN! znZooghZGVvNH9X;^%L6OvS;4r$t>7~SGjGFGnIX=iHm-7+@&xM&XYbKa5r>RD@_U1+`w@c6TDNz_vVaLK~wI=#MKqsYni^&G!NRer=M{T}a3W@9k5uNVme$8e2$8M(8_e?kp+J;)?mqXzAzpNnuVG;|A>QF zk0dc?hBuzLy?7M&J{r)|mn>$8dR_1cS^j{J>4e>!z3F|1UyR`Yool~sAUt%x0{bMh zet!Ge#?8RDmQ4?_gui2@bi4s4b#IfiIIZ)^MkS>^IelK?u7ADFGj#KmSGNz5!~4z# zkcA%%#$H`&|6}$2krn|eF2omaPx4=}SxA5O@tE)poy-vTbo!&X@cP2|?ofvD3rm4} z`RF~@&dB(N0K2iWl3v1Rjc*Tu#8SJHdU7Mqog-ezymHKBs68TF4&-09Jb8*clTLWB zbX%gv(K9Mf?UI>CX)O*U3B`xn68+jS(@CmQ!KGJ=ySc`1b4~i586CAebafL$aXh%p z&6g0iyGQ667nh2orf@gyx+B-)6ry5Q=nX)b6x-QU*e{vHBfeEbVY#Y=%six`R2d}c zjvxry%fv14UEieFtG|E?lY0KdZk7Jq1(YM@uHqh1<$I8Cf+p1J&L;x@AqPPG$J7I) zK~|=|7Lr-OXTp7o!W;y?_+fxS} zrl=h^rA+SSaU?QekO8?mWOlm87EVf6 z1sbJ1r*nmYhfw6i|nJKIu^dBPkqY- z>DUE7@am2pJ<}_Jvuuks-mM0xns|}h=gqgLwH8b$=}_3R7w{LyCQsb@*L*N z@D(JMm{W2JhQBwPjEL?`#I@pP$*Gb@#W!A9Zr3o(EI{VwpbMQjn_m+& zBN~n#Q!uXFU&$VAFd42OSzEviRwq8CIDyl}zQSY~9-43jp)-B9cT8MUjup)H6k4!c)}+ZbhR6VW`bEYV`=j zel^zHn2)o?m_`f;08eq@Ny^)R1T05FDF zPPW=g=_N_6KdB7eN&8VY5kdV{5*`Zi780Y3a|v1KfOt zdsZQ(B3j(~>hoWOFZaiu+8OOsX6YGBU$f(0gKU(MnWC+uqClrvasA1f6 ze4d~W?gkeDOusZch`1aX!stEX+e(2T!&M)Kj+3a@u9XM|cg)U+X2J^E8pTX7pFrnP zrhTnM3ydww>3*5VA%`UuDca`Sy%%I>`gUS&7{tNS}2YDl|Wz9FrHR=I=L4yM%fzG+wLA{eH{-Y09N~_b{t`LqkuWhw>Jz z=t~+YF4AdR0|n&XI;6&dNRq{;Fwgl?@En#d1XGw!{lT?1c1d>P0cp-|c{G7?{RCiK z(I0piILy;XgEGG6N+Fax#XUn(&Q2ERuAj=q9^R|#!3B?|3YG(zU>B@3d3&eN!`6-9Y zNtni}vO8X>L=)~YwcTM(sj7UTPXo7?>^UMqoQH~kb)7^Vhb@_Pe6OauFy_b+3Lm-r z_7|dc$2@MEu+*X+v~ww9ezm_^c&DHu4Vxa?X+OkFaVp#mVqF%*3u43Wt<$OW<5xZJ zOZ0xo8&!j;N!6**2!~{Fk6t`vcOnK0(B99;h)$qmPnmKc3MWW!WhI9e5inkR4lgXl zAX6my_^J4ay4{-5EUvQ`67oZdC9p8UP@Elm_akZ*5Z%etI}-@^ib@2Fu_$8vCzU32{N9J%;x2^Mgg8`Dth(7QrG zG7JUK%_`xL#d35JV!d}1EO9~?s&gi~kXzZ!mhYJsN7b{$Rdr#kp1O_C}}c(A@AQYk9t`FQ?B5w%ZA_hZHo@ z2rOi*(CRHG$2x4?*hRZ^DAW9BiDxpkGb=nZ^w{Uz^sw(QqQeh&t>PT4B%#O+d{kDD~~|UPq4!tDh*gye}~_z%5Z|UvkGWSdRBC@qhqrD2R?}Sdiy|vah)K z_Oh6?eQgBYvRRHhCP9R?_o2w#_UFGC^x4P$d>!u4=uir}x*#l8GcdS6_c-@kkF4Hp{_ZfEBo z8TLMJE=RETlQA^)6BgEwviCwQ@c zZ#1=|8;)7qLIv1aVwIPEyk|wfpSm>qO{#I%oJM-3E%nDTAQSXsg`>247@K!bx`j=Z zQAIg!`5xZ|mr8}&Y*f{*$EnZ{X=XN6-j*0SyZQ61OlV6)@QRdbV=@1!ErJK?&~Z!6 zZG6y^R*4>ifw>*&=B5f(|hT$Thm%GAOY+E$cRIOJQ?!Mniok#|%iX2Q1C z3c}BKTYjTMnbT`0QiD_JrOxHFIbG=iD-gz4GzA!T^`d7Ps!&_ub$D69qIr4^5$WSw6UH$SIQ;#(Ww&mhYXPf&<>(9eAhdB$|39A{# zgJT=Z?mO!=-)MhMQ{(W3q4=ip;`%0&R}oEv;m1=`6&Ii?8-byfJrR2JS-Sn@l)}}^ za*8QH?M_TdCSZ^}G`P9+lvcga#7A!oYT$*9)v|+OI)Im$Vq77~(fBQG%ySE}nhNm9 zSS)-h^lp1DK?@q}sPE%WMwsbckJSA7uEIc6YW*1U!@W!Kr#2WmeNCIFtj8p!jZp*1*{3H_yEIZa`&B!OFohVtnYvm|9p0r{KejKI zZefa@&TtNTmuM?$7GRQVbnL(v?CFD3cjXa4bZ{Q5QC4o9v2&f645r=G=b+-OKHydk zXz=%@txP~CbN4R*KD_$_J#r%(=Wla)1ffDG?FcwOtul-T&iT)I4L);t^|m8s+Q1!6 z;Nl*@(FRdMk?JieoKhlT6WMS&@6icho9dq-9vsUE1L6Vms93(o8`X|WdGn6!$J9)? z#C%XnxGmaHI`J2(xo|6no!Hfa+^p|U3x5iIEfM)R{xgJ|cGqLinm5_t@eq~PX2D2P z$_xd#DwBX)??zT~-R!eIFKa%wm9A!9TXbc19C_$dRnb7LsoUm3h?Q(5rGQsBrUTRY zg0rqGY=#YRq=ulnPJ&LqWJX$$oC4{1TM(!F4pXUS6R!Ccxf2J_dxwGi@j1D~)_(+M z`AWhD%)18^jvz_`C8uZs^ase_lfV6Do&v3sLz?Oz}8iTI`#HSP64ED)O`} z$G~f#5~~7iyiF;#s8<`_vpmKPw3~nN_a%b0<$q4-#D3T_l4h5alqwKHQ}r%27Zsf zy-rrYSe?=sTNm1;aZkN{l_al#7si(F`}Ax)N}? zY-7J80JkJkkO1j>iMP&O@~-@&qXOmeXpEY_nfZ9DVNuX23WM0yGP-C7xDP7&KuyZB zz-rQ9rnFP}CI>XuW6Y)t1eyQOnjYXU;`rb-erNeSf&jpc3`J{x8%Ml1b2T4h& z+Hvac#09`q=@orL{4ih2HX_T)1)a^gTX9tbRDL=so9pJt(kHhu;M)}$Al-11z~?x_ zU{C%>Vdi(F2nFtEk%NqvDiY2eegp2y;a2O`kbJd#0!U-(yO=ocZ~M zksDcaxHjeU{uDcX@|@k|2p!{akY#{}s)5ZRLF;BWB~foZGpZob=Y5vK>yJ(93JHZ4 zFOzFVLK*NOHl=Cy`rn_^KWg_>YvQz@RDmB<|uD$wj0?E08MW}-g5(U zEh-}UM(UcFEj%ZBK(+!Ln-Jh2oZ6E@|4<7kfD0fa(mFX_(5`@IIKN(3V%gMSqb0_A zsjA^^*65jpyppF2QQX9>z{I((8OwDz#g--Q5;Cjbe7;;#=F?#UqEdAUH*5o{N)q61 zKpU4h7;ReqrfSZtyo_Hm`FYU+5aN>QKA#3kMNSJ7(V5p$?u25;s_(#^l=TVS5@q|P zN&LrG%ad-oXWbQ-J29+~Cb2wgeQjJ~e;K?9A}}hTN<0;XmrR&kkUBY+*0PGz_Zb8wMRlV9etSZMsax$qYI4{_OuQ zp!Q=!KnI>i{;sEin(eD7)hw_gK2fz<(4u}I9cn3J51o8;x zR;w?8I)HjmU?twNQJHaRk_9XTmu5f+cgj2Y!m~d)$gSuPsCZ*D0(d>!3gJplcHl>j zCHJFEH{Iye0H@^i7otE>_%|gzz#LSZu^zC`0tf;U%s%_|IYg~Y_ zi^xH>;E6!|fKtl_#y&7ZhNwr7O7fdXYsO+p!Gg() zr*D9r+!rD}E5Wg>^2))9>FzIcuz*7v>B(Q=CFnPJUVn2V&${MMs<%}qH@U?ydhi)m zxv@^&Wn8dyl0IPcK=+L!Ae6Q{PmM>aNE>m;+-Y85_oRN_yXqu2NZvqF*77d@iOqnC z9QLkUwnxSq&Cdkr0j_H|i~`(IxwK65cQ`Ii)(dge0o}$T_}G+ijpo;vaP8RglAwR| zdCZ*hj&0jrYj-(J5EnRcV~DeEYKdy6ll|!Uc6f8(`ApBxxNK`J64cO6HX(JEXN&1_ zd#ZX09_Zdi5O6ZbCv8recbhZ{hlFl12``TH`NX4vbnk)3mdgx}Q{m^F8Ef9p9hb6k zt~>=AoQQY5|Mb6l|5(k6CUs3BMN9?78ted)!g>wZ1}DTBXhc^Bv3OJ3Z*=K)q zk^v|6o0Cj0?0d|9a>rB02C8(;gqY6r5m3f6_$|tIv#O|qv0|YH4*EX8A?YRDX;tk% z;DaQ7)Ich5N2+STqZ=F3Pzz^l*Oe>`0^n7Ka$K+(;IKYe^cz~}UkrUP8?fyyS{5B& zUI9C6gg)Z}6E;#_Ga9^(=&FuW>U#>lc-XDRrD>*4>gh3!WxIm^Fr~Q?z+yI$lTqLu zB--|`WCZvCocfE5fL;*TSYQJ}7BFie@Ac6lYVNGBYN^POq~j=dPO+6l5Ru3fg1_fX09K6EHd&CkJ=_@8&Z8KAVt0fT;rs&=zvwWT*uyt?SOZgAP*x zj}hYtMmP>64{gUu3bAevIKyZEO|uM_F43lNENZ$B*7bszyzuJnlM z0a-Ytjsi58EIh>kI?!D|jN>plWO?K?tAjnfDIz4hC#=}Ojg*@NYPP0}^oGc7&6cY^u_IxQI zAYF);0IwaEQ{9~!^@CIUiVE1sh#NAXl*@kLWq}n9Oj)gXVcIQ92=)X!`gJx{Uc4HO z00#obkeXxcj4T)e)0Uf8c7Y*q!v5EXHx}~P0%&Fg+xecWogSR@2iE_SfLZ5m)lXU< zuKKsB+#d&cb6|?76h`PTH)dNg4-NtN+uuHEBl6=eL-uBySF_yYPBB0%FF!g`&jy$; zz?5F|z@|&VF?Oo~+29Yc2w6N}TOb44IAhCpswBKAyGusdhOmNWnmw zyGi0qVd}vDHeFZSMU%NiyFqobUVgH8)odNznYn7XYuf2(dx)L%$3x1(TKxC!x;5}v zcM$4dsB)Z%eqDm8ateqMC;^^yrelC7-RZ%CO~S!w>31}}6T(N}&rex${_@4ZS@Pa# zv{2wbK=1EHKSoI)Cg5wpzX=u;k10429;f@=m;$iv1IF%Q%0IChZ|z|71|S<0y#(sc z*?6b)I9iR(ZbiJewVZ}L-xn-gQ+=WrvMtYsbTM9L@*S2uzA(bV4M+*aVNNTBtf_br=8@$ z`nOrY6F-Q10Ciu+tUD>kL+Ux4u@dYk}+XT&AZqK?=8f8dIVnsqZ$A8QhdNFBc=KNu;+ZG1222a>&*iiPS3nM2o8tv4|M|^_2f4$dVmz{ zq0)_l8^|TPzt6AaOXvd%v>YV>pCuGw0sWvmqMZLyp89XY|GmeMX1MdX$RYo57XT=M zd*CR(*As)6U<*#Az*UpGx4!eiLXxLp91Bkfy_HG1wcen=k=?LosMRk4+_}BGXYwf*=%1hJkE{aHd z0MX+ApEpzB^6;)WoKV(I^Zx{f{{)7=(e8f&!+r7bKY;=NKY`(YSnc^wVEC){^8Z-I zkRp#idi&(jqubl4*(%F>#=fn@r}gr!Xzd}MA3q8^Iyy27J63&pOMy@Ddge9$YuHbA z!pzWvGc&@_&`5-2SGT9#^p1wRvvt!mRl6l2r}2G0iR=u93+}rRhPw$2s|~lteqVVW zLH_=F_taC(@djx#5RtRA@VL?ST((2y+R?JWk=&HxQyy`Sd9SI2AY#~Y@brX%;;yRD zBulX8aO3lZ_6qxC1c=87kM6%dI6@0I^iQ#uPW6$UUiM5K&AM>JpCJr2uIBV_jIjB< z9NR}P-EKHl-gT3r4S0M6KWd$*YgI9OTG7~3NcDP5pUM_5$|?s`Yzy2CD73);9GmbA z^8Uktr$8e^X3VZ__e^dZMtpAEqBidM{0REv{nr;ph`in{SIeyrv<1MeBJqj4VTtDA z-3^+<{@Uv8HpA>2*qk+WvWi7PrRq^4y|f_us=QSPDf80XcpHzv{VdjgI0*ble}CN& z?)~a>(aBjGNUwW&o^(P#qkX(38w7FxL>_!3-~~o}F4ThOe*_5@=l5htS2qRys$?0- z8RFiP_bfZtdL#38iTn5enH9Lh%&44%<1uq(Yaf74@|?Ym%+aSfiM0xZCy&xH>-F z%L6PJ9%*QRkb&$7V7d8y)(~GFVV6KG@xI4+xYcIC??z|Fj)ZmBfi@c?H3?!Ckf4Ok z5eXYyzRG4qF~Q?XU}*|0VgfT+_|i7L!`W- z4lhI{0>yeSe_(sxr-3B zM9>rJc#Z5L?O;7v6aF4pMte!m6(RrpvL-S>EHT#6|M=lgMIgSxbf45{oN*UqwGUVC zU7mjAIJdXLg!_~Hkh}0INi#~9<>1yh*7jx5(4~oPhhpz?t+Fb$End+;OCl?pW-*a< z8szlH`)7c6k01!x%fQrB1z;~wZWC&QU;m*UrjYW96X&zz`f8bm7FA|>Wd zr6@ z_34A{Jn~FI09>K;S}N@y%Vjatm zU*hmK1b<4^fvWB;BmwK!4%X~+ zn=Xs~O?IRc@(ej;JHbV=!@6qm=}6nx!UT|gNx7;+V5{xk$Yuge@mMH}41^Cf*TZxC z0r@zW+1aJ+w|{pL!#sFsl-fanrv#n07_efOV9&kmBq?x{vTAzx6RF{VUcOtk{h9aY zQ@?{1RoyD(L6pMZgF^yqL4&}*bKV4mQ5oLY4|RqZ8vR(M&h~c*HH&_;^zeXwP&`&J zbZBID!0ykC8gcCI?wTMG6`gRZj^0Y|s?%VnIFlo0EmD{mbKWt;RtsL1*a@MlkA*LN zxM+L?6hOW&UT_}$Q4!Ba1OOl3BPRsqXAfLA&$l~&n%Duj?u1$qn$<9@X8Kj`wyMMywd@gzjWZv zOX3DAhr#{Bw5vqE=k!f#1c1$M4dn2g5ALCW3y`Gk4bCMesFddD7$~y?$;kEjTVCYP zy`E-%uqK{gh=9fX;zTZh{`1TAB#(rsibGSMJp3s#qW5pF%IjS3&lXhkc&Bl`$DG4k zZpB0OoU?(d-D>G}h<+7aJ^O)Lu5hWR`?24nsOrZL0SbN~!dK_?sw&gpo~bH>0RCY- z8HEO7=3zt0V#7C8K%9&51hHQ#cAxLu0|>AH@$JCKXU)|@neoqJs{#9uf(dpkwc1&* zziyPx7S7OGg!o%5KVIDV&dbVs^ZKs=2qqVs%~m+HjpHw6@)W+4bNaoUp@OlGmcKi_ zQht6fBA#*ll#TA*(>AM?Qs;~RAAS^~da4VSeSJD}Gs7Y{9~9ZEj4JjD->I;2@ji?K z`TKVZ(bGw6M+EhlyfapKp$R0bao+ivK4(IHgdMa;;1yV{!y|J-eC!-6I4K7bKWLbPWB9xq;zV%3YpZ&k$dc%Nq4){O%`e~&bTOArvRO< z>&CGw{H^ml7$vh*c&-o0CJGdiGK3xlAtk1_*0rwJOsxSppZ(Fgi^dMUM&i`JNbkjc zPlm@Ge6lSS*5bGJ6Q29qh(}-J=kgDoqRzLU;f=;qcFm4UC{Yr0r&NAUCC&9>5?g?mwREfbX|EqvJ%v+_IYPzFC^XYPZ@*bG`(rQ&=A`Uzj8I+_^+~hY z?rAuCBJe^_aIYIdU@3Qz=Z70%5SbQ)tvVd_Gv|6k*I$*fV}< z2jR&>a0iD$_i&g`az|qzIyNTq1_LEdQP+9Uc)NF1!~T>tL)FB1NB}+NOQCv!i*s@PIqjocIJCSSF0xWCm z&OyvW+jSnY)5-(6l95R7ro(T}v-S%nIfINdhg5^~3r;gGod?@F3p-h$x{{tx-yS}` zert%>qw(!ak!Axy!nbOuTbFQrclA7#bR@>}`d|l~zC#}El#03Up>GYQQLMAK`iE0B zK+@J@@l`u1s>g8w6$h5duMe|*{Oz&OYAmi_#nJ!NE@yQ=Lh#38u9V@YJ+w?j%^&qU zs2=!Ct~t%(9KWw~GVOH)>ass-zQpTKP(l9kWFcKBgxov};^?Xs#vhv%DUrP<{)fj= zXvroPD6?xU>$6X=Z2Gebqv1Vw%LpGJF4I3w=Q4FHyib6!>1{0Kv{u+#*bVA+;bJXo zZKE2W2=U9}M5hng1whDV(Q)#`OZzJnfxkg00A~dSALv;AxZW=>0oUvG($J&tN3VQ6uZ6gv zAw?9s%RXjeon0bD6jh2)`+~b-c0wt`s}NmM&a+KAd#p2}5;}q71A!d*foX@@f$2;v ziaPGEwIvsEt6>y6t0Fr#o?PNAShMak1RylK=)M^^$GQD*ab#&Sdx53eWF6nm zzTD$oJn72IS!dr*7+oXO`9jh#6HwSii6#rzslzE1BE7rNo&k*x%e~zTMhD;mhAk`e z_ZjB;nxJ;8t}7|ZLy}rK#bCY+a*3t?9tVe>!fgc8J=tWCwp(Eh7#j+1XkT0OMf|dJ znd&F0Lwve7fV{!>KJ0_H0thvWzV!eaQR*Vw`emKIl&`>aJ5u!8%o zYSszZ{_wa63?ucEVx`Y6sY`f6T4mBBXmYG?=zOw;7joJ=pa%uNCL)0~a!htw#7v`J z`bpJeLST9&0b?=O48!Ni(p2N_fG#OA`|xsis27D2)na9W>6k}$!nx>k(mKT+taa}Q zi%*X=trwOsC=OImOS=}YRFT33lgwsN{*Z&y0$2{hd(E!@!Q|9ghEkK3eU?tlNvPqlp^T589BWn~|GK(Z zd=|*`^0{op*@1%6HwO4SwfHMJ{f-9?;qdQ z!;cwiLs5fM36Et=E$hx z0mN6D{jo4gdZe>p=`k)|u;Gw#>t4XpPk z6|N8Egf^&1#(Z@<8zah-Z9v4~c2b?T%!}yERR|CygizcXr(5p@>~Z6WHIB`#$i39~ zroP7LB+y!QxH5+(@Y9eAIZL}k&GUdCK)BaY$$18(wVqY)?!rCdf0w6H8#$${b)(VD zrOYF*_{Gz)?W)bpXKh0n4RjSQu+vowiTS@8!EhQCy)DNCNj8kcB-yF5FO~*I?p%_% zO`Aw?tT^)F^lCh#N_ac`aZJ%;Q{ z2A0lYqH~l(A&zb?cjLPtonPN_$IyuJ*1DW>F}Q>kjfR z-$P!jy{@PJjoprZj@=*HvFqm?#s)HpUTwD7n=09xza>ZQNRB^P>D3-YI#BS;DfZ^@ z`kpipd}DD6*PGZReEuRDZ9$GCc-Vc6wJ7L%tY}IcHm-amU+CpF5h30tYFBIT%w?`@ zg?F04d0MP|&U?)U#+)X~U%r{?El;7(ynYuQ*|F1yOMx;5sY9h-n5<%A9=3U2{ZvKz zCvJhTMb${R!d3USl4a#tFtUz6$A4Hzdj!D?PE%9*`LzCkSZD+=eEkYF-%4LVsDhEM z-ANGCtC*KCa)(>}GhcKNaICn%C1qe7jzPyZCN`y1m!!Kya9gh+UB5B+`?@|@iJK{W z;Xp`J4=C}X#JJJXh!JYAvZeP_rG`>mlT{6Z*=RWz?9SZJ!EvkM7?HPD9YzFGsTyJ% z6BVC9kj?7_01&O4{vt4M-e*}tB@eD@d{-m5%Lt+W2}S=d)gE$I4caPbDC2Ne+pi?? zW%bWo!jl_Dl@HhR3fP+rZ8qzAq*0Dp%GJt?X3-PKtmjLb8k+MCw9or4$L@8? z8RqiGZXE44-O3aw(;3b8$&uL#+P0_Vk6B0`vq^ZR!-v%B-Plp65;v_r@5fAoyfW^< zNP{`mrVkcw3&lPA7R1Spy^9g}^QzPahtYgMvp5)cTaL{|CwkrThla}uvQW!H`9*Y% zJ97$Bu?%8AJ-vuOqQG;2!n39+%-(mP++2|t=J~%_i=Y%bI`p4C|5(B9h zUUNgH#VU;^DOc_=Rjk0z(n;y)V8x`iaC!sVT>Cz)D@sCjP7mPy36H1{ib$FqraBEN zAYSvk`J*n%VfI(lsJRF$K(_7;^G0soO1l*WEJwu66+AB(AtL9h)V=va*um^TwB6_qkIINc@TKtguXA?L1wL%j6(RCoN z%sVi2fb&m#8W1HHUtH&(WEirW5kse29W+>^D;0NmsM8fgKwUCKaEn(D5W9CpF^0!) zbqpXI_xIDGu-XvUesE6qHP|LW`SJqDWgp|#KEuAlg`R)mLJk|x93XO*otK>`-~pRs zl~RELngI|_RtSJH+$i|$9F@K5WC6BQzB#6lCDt1&6_Dn#jH%!CH8?n#Ln7G~$*VVc zS~u^uYuCe1$Ezh3C+o?D@^kQcreZ-WBm7;nIh2;fkdf{3_0{*p9Qh{zTmS>Wg$_D` zKLGG787RkH^}S^g(j%psC1V!jhTEmeD@-UJ=E@6?+&}UlH$?ns zy2(6?sYbo&>{M%G*b$;+=#|j)f_;v0=Z4n$WYAOulRgrK8e#DyaSDnla-rqX6oHSZZ4(RIk^Pi zYM-gTks^`fYl(N<8Thmu-m3|}oE?x6@0ebp&}F+{?E3}bJvRldao zQYy$KlOY`P)Yz1OJq%>F-#ozqICqITJ@!96JKmI}j`t`E7`Ik*zB+r}qxLN@>ZUZV zNWDQaq+(b5>dcx?-4+!Nx0_#)k@N92R0x?xfl&m$1yxrvWq3bnWZR}qlAidfkyRf;Vd%>ef;$5`MqIq67I{amLZ?}fRnxMS=lEcOaZiKj42 zp&G~2XxENFVpwi>jwu?0j~j%=sl3*^HC|@g_n57?kjOZUKZ4WLU}JRI)E|dEiz~XG z#r6ckew&pCg)|W7-Tq=L>e%Vdtw@im8&T_QObG6PR<}ON(j1Ce%!i9^)`d&4SV9c_ zQM(Hrffv%t{`%@I=Z->`l5>8w*HFPmFK-dqxP|-|T5csna2Tc44~2r*wE8_TPnoE( zUlcgm{rZJyo#vh)9NNNirM@v%NCQ_Sy?h?$@pCM1m4(MES>eXD zrrfZJ$K}Mu=ydkUQ8N@C^yhx(ihP+M6V$+&2AVRt_ZJ0T{7o2gZPJ-9GH2R464KGH z-49;{VUI=|^l0+5OD3e@YD^6=Z>!dHD(25bxX%Fh4@J;O+8Rn)8Sf5xu;8#dg!!X% z3t@9kP|=m`hiAdG3*O*n2q#6nXo^}DR(HTIIos{aATL|{HLq)TxPs%4LBy6R7B6}g zMWs=i(|UVskk5+)4M_{mG}!-Cq-VoUie2$HK(0O?+Qq*(cHdkVsRfbX$hZapqya7- zY>qdCk>m=2s*INWSWM>WjGIhDMKhP{jadvCqLB&Xoy(>YcuMK8g{oztS-mlogigJK zM<(v==8?*`de`ZCeuTr73djTonZ-8g))HIQjn;?7IudxsP1I7jvpe*W#k=*N^K7v$ z@i^=vR%q2FryRD@ghG;xg87YeZQCm&NR=E)G;hqCcWcm$W#syj8ieV}Idc*w%3jQb zW2j{UaM#a}UiXB9&2b0m`utbwhwNl_Lnf1vv`{N$`c2a%qtglJ{HFLGbA>9qa}$%< z$^E)uqGsT(LK27XIzm*En~J^J2MQa=wrXVyhKcDBt2v#WgG(8PeK)C(-RfjFUj^xh zcg!8tEvyeUwWd0XMHM0iYq_pz)V|GaNrLfE+6LOu7iQ|O{2`#fAU+r=0MOCdJ7E&- zrA^PNe@rDTgTq1>9)8q)Azl1YuyX3A3qnr(k|B+H`mTpM{(FbZT7uUSOK+4J205*c zUP=rkd_MEq`&dLxW^j~4LzqrVn=!OnEL&u@o}Lp$rv}A5L?DY=Czpnb68x!Z>sx)WsIWR+iEjmC2f2mLAP= z$pR$mmGQWs%*5Ge-R@#XR9ZDp0BZu-MIGxHXv9WtBenywai$F&$o&op8Q zOC`m4oKE!H4baRW)4Q3;gbccZqLFGmb-<6V1rMSj{3kg*u!YcG#rLibIJS^FaeXwGiub>M4#m7X#a9}KD_?jYGLTNW*eq&H!CO4P;vX9c$> zIB!0+1t(KrC%7kZhIYy45WS?)csBL|n>_k>b!&pY?(O!Bhi{jH&D!y0dCvPSyPtlE z?&Ig}7L$$VXkA~qf@pes1mw|VRm!ciMr`)#NQ3M0uPhs=c)=wm=h);V zHca#qNleja*DPlJjzhftP{r**S-%hl^b_(6xoD-D7s^Vo|+{u&3BIzk$W_?^zNhpErFdo+jxXjt(`-t1bCp@#?u%!ly*edh*uv@#r1FEKp;;o=SW%lKouwkSYZ!PE}bkeqm5U#+tH0$(LI#@+E`jkc@9r zAh*fz)e&}h8vqQHQ0EOb4c8%wm6)*7=2`(P5aqZEGZ%K?8uRcWu{S=dA~Ebo=&q~nO8J{h2XlGhDz0}GpWGL}^{9&t4%GDCepu6V~fMh8G; zo~QnbDDedor3Of(BdZ-rv9lh#Zftf-=&)FHNh}LWfolV6!vk}^%qjX|hqgFC2NQJ( zI16A_E0#9`=hc0kE9AjE2Dk&iqP8P~7sXaYiou#6aU9)y6~BVtikPU({7YC#wlDn9 z+Wq>J+vxk6N?INtXi_ypdCW)>aJS2*j{TF=E-h!M6&+=+)y<@;8QEg0M>(86l77&Y z9B(#bROmBMZ1;S!=`tm;NEPjRa<8>g!J9tT#?8jkE*7xx}K)m1Tb(4*tejJa#C%|9C#+hgUlPbDaQ(;K|k|L_$GmDIn3c z9|-;O@uXSZJJ^;b!p`!P_4RB$?2_7KGDD>o1nNj@O@le%M5xwwp2{UU(hY1Qeo_s$n*&6u4F=)9 z;w_}#3_BA%nF=+QY{tDKwJAMLgRxl&MomweOQ6{u)(Zt{*`!!)^$_9MuG}L0(lMwm z^@DtITL)eqm`L*FmK!M-wA=E3Y!y>_E;EuEB$dPM{=-@t8tY`X-d>Gg-RLy)Cjrg7 zmOUCthoqMz=kgcM$yG?fs;s4kh%#9((7N*l3~MFS%IAo&HGU1Gw@0umF{xHsJrnRn z;HA;vUkD3U-r{!@4XAEIgnVIqjocEFFTh{Nvvt*u*v?`-OdiaI8qqR`cY|BP03iR| z^>*^IT$f_rmbsreYKp#d%K8+eh;yef*(b6~9ievCObGfvH6pknX#X*UW%x&#Z4Ja(~%9cOt*YV)+=YO~fuS)G$2T-;7Fzj(8n2h8U98*)lnU0s8;!`VM!Qikuzgr73Rq94| z&O~s%CSY~GG;0`{8)4m6N2Aq93^o~1S9@zJ{Q2_KYJKoqXSC{3vBdCIz_Yh{JW`mP z4)n)(9RA9ubKihFn$ou3TtF3?_mf#GC(?;xf<9bm>>o388tv4-)*+jPnfJB2s`GD( zHZ5Omxy0G3Z@VN<=*BMjbYRw!a`wpcjo|N|KTfc$i3-pU_DwJcrczN!DXrJpqW*UV z#ylN65d%Wmn2uRLeXNhFNe_ngdgoF)30a(ip{7W+%+fqPl$*6x&>Fv#P_Q&yvUQ-^ zD9La&UGJ0Tj^yWkVzzzq0WAeqaK?hQ%LX3?L=qWtUBrTUE6N# z;IJ!#Q_f^U4`dXXSii-h)5&{k;$1+$fNFd7)rb?$0bu5+6ZARG*bU!B`YriY^>vuI@s z66rjt+nfIh!zalE9U&4-4MHxL<1ihwWBj(bruiB)g7PeIYpXR|nnZN%>c-)sGGrXv zpq-k_dgjBs>;3TT+%-dmR+ReOuK0ZV&U0Wq!4Dr8D1`<=26`tusEprtq3aO~Ec|Wp zPD`h+1o^2td&W2r>{kqLIndyau`@F@E5hW7lZm6scCWGBoy2w|$JoeABzL1`_HfnXK71TrlO>boSrR|McLWX*A)% zb`q6f-knY-&|UR?@?@bsNTh+CNhV$*y}9&bUdWVni!4;+DNwF5Fi}n~2P$8?+-CvK zFO#U;(GD6)e@4+!tJXv^nRD~(FB+NdEY%vMn;B88(nt%kaK^Hh)UR`$AwW3P>NFfp zdhyj(0|ZNQw)LuKhbY=s*)a8uzdCsI%gMf7v1bU+UzH1oFAlAYlol{mzB#j&WOv%^`dR@pRK1%_@Xy;RE#RG~@i(`gIjRb!?~ zJ=;&%#TggLw({%xp`9(&Cut!Q`+>ulMI}v{pm~%4IV}xY4Kax?LlRraL>giC}QIXvSh=>dXDFSeex#%)se=jWlP+UN$50-=p!L< zgU<%BZGrLcuAc>GfUC6gZt?mRNos(@-L0?p>Ka_89OFOor{0W$Ugd8{cW4&;reCpU z+?ULaHX7kX=U9x3#{gKAMZ${e2UMD}$NQe91Wn4{t-dNygM7 zYdOHcpAUkc_j3H3al8XGujxM4_|}^$QmG`_nyzDCBIS~w*Pb(2UVPD8coBw_?cdUy z#8m27*`-R5QQ0rAYmIAWgY3s5)(?Hj46%=^J`8+Xm_1{L-rOyavVE%*%c6>kH~byy z@t)_SHofCIo!L+NNBWl*?-Gc5Y+6)wO(xSguS;zbHO=i>UTl;NK(#%E{z3qr1GCpF zQy+=N2mw!}moCnf@wE-CR4Z;qnr7o`tuOk15&;icl8#Ze@4Y^4M{n#7xF1gbJ^T3! z257sUzk_uHH|@bAdEdbk!{2dzdzQ<$IHu(f+UFCGoheBv$#v~zb2oA_;SClSdS|$E z$G#cA8{9f_$9ViPC{XaoBtNlq+vKVhr!XNagVzLQoBwuRRjVCFA1mPCO_s@7XIsWr zKg!Ne_?c(=d=ocweJI{(=QaizZ55ymdWS&8&p#2x+#H_NGC2mYeY2gjj%zT&aVtm+ z>#ZLq6S-L6n{NfGwYi3t?JK`h8{+xp$rsJPX@|V^W~j72=QKZ*VdN;cQCvV~l+*7Z zZ7ZD=U)|rCZIA*c*+{prq?jXh%dnF-Sb^qyqn%iNu4anSQ|ouvzywOJg}IMzWPFN% z01%daVXvJ{y%V*n%(KM6ZZDIl`6;;gOLABI{c&IXT?l$_FPCsx9gTxE;|sis@st{# zKhbGpI17irfWK!urRqPMO^0>;LtGwAal#p}wxxEt9}BlS2Ls|JBT*ku3H#XsRW<>u~*G>yhL6mOC1s zJT54hAUm=-BQOhrP6u-Ga!QrjUx8z2xzn((38xo(E|Z&m1Ti3pZK8UJs?*S9`ABcH zJui4wJc*=gW%~R_YmGmMd~k&%nCUy5zLV`L0$=$}DGc>+nzP$LH7+dHv>2Wuo4K22 z((>V@snhrbGI?rLsv9_D0ZXqOBhb*)DjU+qcpku zT!SyT{&lM*Yj9X|6KN>VFLNaDO!$}%kjeLoYOOdaJP`#ZaFf4S{_YRicCZ5PcQ|%m zRSB@^Oq|E-o>(ZbZGLNXU7mi-d>z!jycQkQcqS@t%|8USG_Q6w%WA#?(E??6&EgI@ zlB3wHkC9!z7VG7&gk+EXSf29?6y8WN)^gGQwCB9-13m=&TF4!^8@Z`-*T@taRUkm2 zQk3D3Uly)fmE3VS_wZb1$x~WDneaW%)#PN8t)q?KoXHGscRu%jU3Tnz{3*R=g?i~M zsM>x}Hd?qWESTvuiTdN^mug^Ab+>yz98tvI-{qbi)NNwiFFj z#$LhgB-24y$3`OA!0>I^E^cw_hGXlhMAKkexOs-S>X(WjRXy$5RR)q9_kG9HjS8%^ z&NW}uVME;nc;L227~q8im5mOAnmh&uw7a3?)=p9NF2@1z9QuP8O@zLPev-YGPeZ<l0Yo|I_!85cV7~Jrr4`U2@6(sokUg_Pt`wY+w@dkW~q$A4wxLOYP4}@(0wem zn0oh?#;m~a@nNI;QL25xZ?)vTZqp!}Lo8tWuPSB9GlwCW#a1Oiyh54dvUx_$xED_5 zNR7i|{aH{9i&Vs={rRVb7XPBEP8g{R!{qs)^-;W2a@Aq7xJC_6SrRd_Iwzo|L=J@5 zI<{I5cK;NCR(dh1B(C&ew>G~l#h^Ut%D`MZI`)eXfS^QHzxg8m81kJh@vBZOz)0Jsv1>?PlAwYBWkj1Di;iC#Ool;5p~ z9_d@g&N*dsRi@M%V3r!ca(A3MFzcM(gQ+93t(Cq@wN%e<{d*Ct4tf%^*NWBY**mZI|6Q1X86FcF15;O?M`i;o- zy1`l8(zzi(A3L~(7VXBS1!#Pd7OL*By#HSPW~9btxip!~V^+NudK0t2HiGgH$SLs^bv)%z&ZkSmYz;;~#i;eHYNp09O!2 z8e{J53aDcAvL3Z?t~y9GitOFt>J?eOhD|O}8S*Q3U27evbd+_QfG2%{wT)tih4>!G zRxK*Q_$1*=Ynx@u)=QHGgp;L26ENFvP^J9l*7KdoPDPSPqWcS1d*g($B?7}aK6rxE zX~P3uvx??{UcP*qIPCuIR;+FlqR#m5mO3DKR{d;TT6*fO5RV%EcL1vADKV+e_ z4PQH`B8A3`kMDnm=Rf=@B$c!IQDl;Q{x-chekA3kaaiumktron&noRrCY{_XL@Ym> zg${-FA>z#8PGp%l6hCsAPvaNpZ7}(CfK>$Bvd`$p#o!u71`*W>((<;c+2c+>%t~oPG{IG5jg|Dpn*AByn!)doYd-foX7HL(ll{Z zJHleo#U%N#vq0l)02tt2|CO3)X@d^D!(e6&{b%5Rg-e7syDP|t25>=1x!kAuX3 z8MilL;2AfxFZb_`wPH1IWU-uD)3P(wA_A{`9!lW~vmNFu-KJYYiDw9fB-aY)=(vR+ z_v-mA%8V6b#?01}ULW?;ZSQ@m$@e{eCb`uS$vYG)XUxX1nX&c1NPFw3DBJg2TnSMT zNeKZ#5NVL^l#m*_OS&6|PDOflxNY3*F;{Adfqsv^mEuXqvLif4cYCyD#dNV(i zchcF2r0}czYn}h@V{kY8Y?kvpi5MhdHJka;0F>fWAgoqlOKmaZ;Wd&465mVU3fb3p zH6AEmqZ61czNbq^v>79|k{iX|+lqgc)~ znQV9)^MF)3Ya)Hnw#>HeNElYUx+BQbZn-84B1%3O(lHO#Yxxmd)T^o&lB+~LT0JLiBI`s*p@-dF%g ztsc~~xraJ6C~O^%0M3SRpq~Y%N-YAR2Jx)TY-yk^O{(ou{Yd(+Skg-22U%Nq4K zUW0h6*Nq%d?lD4C`Z#Ht^wzJVAu7T_t2uxw+%8I4jC03n1ZsKX5mdHH^R`2?$@uLH zs#s;<+grKjiuZS5@wz#2I_ky@`RS92n*Q*Y`gG-x6Wz}jGfr}zS<=JuTXeWHB8`1> zIH10*Z#5ECXm2^a=#(3$LAv39UxjhdKpjafR-S#E%DOe_{4_cX8Hav!(jwu>Z4~}L zB0;X_SW6#Dlb?%3xTr)7?hN^-xu4jOiE5|NqMp1Jr2$vy`Ef~iZ>qGH0h2W1JBtZm zQoTJnYop?=LC0X8HaJW?M!EQdQvgVT7SfNz;2_g#wF&XffHCxjytD z&uZ&7HBhn#ruFsMmfhCuD~S7xar9oI!7rVnaNeab1}qB#xQaQMm~4Ce!{xvYuHgS? z8;`eRD|*o9PpBCV=G%4%51nc4L^XXbY~XjFAh>fF8X}45{K*0UDRSozzm^c`WaRt^ zEo2DCp1cg7dXgJt=yjO_zOskSDkQ!{>f*B6>g#pprU<3K=20{2kQs=n+2&RfiKjW% zV9L~JvP9bBv5!x_yOrD%In?b;b*p6@G4i!F&CzW>7%^nY-u6G;i#erq4!@wg9fJeL z#Qs`|E{^7aLWA=eDi5B&c*gh=(2=*wv+}Por<&Qp^ldh@(s!YROfOIGtKxE9m3f`? zqS#b8RFh2a05#$89+zj$ylsr-ZQHuVnR%SaO1!U2eN_2KY1oSKroYX}VJG_5ReNh) z!!)AR40wM=nR&j({xgY)ePS$K=Q_%1f-)rDVSMMyvwQC^p)aL}Gu){_aO3zD$P2^= zY{rr7!}3LJT7Xgd0|HFfk7fes zdRLc%(H<(r!^MnI-32n3EU+K%sc-E3LIr@Or*{#1x3 zFV{^{ODWdEPG^za5y?qQl=%&b%1NA{KPbb+U@$UX%|lBSr!pfH$&VD9{^M1{_{@Qy zd?cIbBU8DYL>0_?rCr`l(W~QSQd6~R?zQgy{kal)UM#IhDs6T41JMACIJ%Vil6x+_ z4JF$b6jCvCnq;hM+~6Ud!p_@WPF*soBzYm??cquu_t60xFQ4g#-MI*MgXhcadh7mc z1$Snhxe=3k23XtOrQ=RSzXgRk%z5&Gi#Q$rp!}PD_3Av~9Z-eQqQLFE?@Y1Q^(cDK zy>>tpabxT#sEuxm`$RE;K6lVDsl7}=l!iqvy3VlateSM{#@qp^k_mRf1`8CbS*p03psuL&{q* zo6!dIthx%TdmS86n)O#)I*;ZlCn_@1j&9Evb7td@GlGu{j78891V2CUbaWSkjj0Mx z475Itg%M8vkRJoWBv6oW-r?M5^N++FLO50lpe;YR4DS+F=tXIyLDI>9cxK4EuvUEN zfX%9wK+^iE&zVZ4FrEGJ{%RN@7Sk8ANPX$6eEY7$inpE($ItTzEOMGlASzsr2RY*7 zFI`SUNkyqv{0$hVmp8YjkJ!Jj`M3LhKTLZF%-PbV%y7_&K72!>|9KwZ*?f4w9(Omf zK$|&6(#Gp~D9Clej-SBqJz;fNc^8On-l{^%JHr-&!V9>AYp1WM7?I;Tq z)D~|0uZ0?sPWlrdv|zvtxZB?$JmAX0CObpk0aieZIB@GcEgI!m4_5e@^TAf50EUbP z*{cY86XuBYoS2C8|Ks!fMFmm7^e9*^n}6iZ4+UW(*CS$|nrGlLwOSi;n|&!=BpT2Q zi5EY!6GW%Q%A-e@F*g8}Ff*VMCVS0g+$U{++F{ZElL==$S7xlNIVvoB#yhD2l+-A= zOVEDqx_8dyVwY{-?K@14AK#-7D;Div(#_wQMol?Igs^jj?B7?ulKKYg&;aUD4QMqa zVu}|sP1l~vZ|OSM1a^QlX`WegJbfri>J)>)rAj85>mP8*hvZKAh#yQSFQ}b2@=*WvB2Q6 zGVwjmGhjeW59SIf15{_sfV6&?)(AqQP|E*GJe)lZobIa74`q1jer2MNpKC$K=YGZZ z9k4Lc{W9V6bFRBew-~=OW%2ptfN^&sRk5@_t}J++2L;5!-Tf&r@jsj8eAZotVW9fX zXl)+5!qUZ-1heH82D&U*rGyo0OV3ZQ`tXitDUm+Q2@$7=@K!6q~t2u=Sr=MUe z*I|V!QY#37ECQH;l427HeM7=<66f)gOshX9k_!;z$W_Yv0Ru|hH3U#lQauUDjxBR3 zIsx>&6%{tOW?uER7(xub6kWQDHa9o3D^o!Oku~^vyc$^FT$V*3!E z$Jxz(&}=UI`jxeOsRndjQCc+py@swzG)>1*(_%lod1IOM=w zIplRvHccF(OdSnkyHycWr=wi(CJ5f)mE*}&_n7BT3M%DwrYn;UcGICu+9J(r)j6ca zP*niEm0ejFvWiS-v{zo&Z~gFZx4m)P>W;{1`B16nYL+7e38z5Kr&O=|e5XEQPB-Sw zZ;kmYPoNyI!2af~vnubN0Sy|{kqDg(P*(t74p(yGSmz;RI>G8F!CEJ zy-%xkRv*F>Xck@Kpa?Nf`g!uC8z39WEDNr?iW)*x+)9PAcZJ(8>pZl`>}|B_ESkwD@@t682jVKpzokRh7o zJ+HP&U8+~{GBIIw_M9NAR)SUL2ZBwm==C5A{H$j#VC(#WAf#m!Y%F_P*+h+FOB#uC z@cdv_G8vQ{b6%J%!vW}`Ovf9-%t^Lr4D8$fOxL=KR1cZfx(ymls6%dkbOuQP;nsHe z3Dh2{+!E}vTOnVN@oM=Uu=H9R0ZJc@D|I|i(YGTMPj_>TVx3Or3t$_B158t#fN2VV z5J)f$nkL;Jc?6D?S3$y$xz1Y3=Rh5xd~?J<6o=%-7gW4>^Qp%Kava5ibY;RGwFS<%D9^HsJ`wqDb?5R!t;LF1lrnI-i@<6SV8| zv21WO?K6n5A6lk2U~pn<-a%QBP$P za;*#8o&G)1MvYlf>=_clA`4=nj7i z#?&q|XQ?z^x!7B_0(xHxz)BZ{H6Sg4Bk7o+uGIBdLE{yZ?E{wF4Sz2jU~_OZ(L486 zB^e)%D30y-u1B(3P?_Eu;Piy?AX}(3ezT~-Bp;Ls8_f6bQU%!4?2~v*9MQ*1n~wv-eK-_PjkgUAj1u;9M+;;jE(9%bCAxFH~>(sgH)FemL$z^!&u?YViJ;;H1 zV!Xu~RgEqxixzS@?#ltHUxez{ z@Geg`NZI_Ya=%`qCX)o^U8D5k^k)hp9@hn5W&5kpwP;~88d3{ZTP~*g@=2!w=Gmau zc@^#b@zz6ELBjptnhAw6A@uF(qEACHq(c7uF$4RUb;VTFCH(}@nh;VeDExFnI+2}% z8u(%*lT-I{W!hf=P(0`a!~9OCAN`o3)RY!Em`IEgetA}Xp(SXR|CQ9>1&asrB6=SE z=yy^982FD~y1XIE98NtbywZnEz?d!@bBDRvJ!;fK87SSZU8_S5h^Z1>z}B4KVvE{) zK8#8#6}jI1(B96*Qz_FiS#D6x^>EmDn+4m~N;80u=zWmd_E)+|(zgSn=}+dYnSv{U zjU6dv3(nTvpf6|(L*YEfrza6Y84ETUG(kr-q}3433n$M6744`wAdjCmTP_Nlzw691 zntTrPB(p7`;(scWrN|j??#pVZwcB(D8ePl9yHAXU^d!Lnz$`F&rph$^T$X-HEHJ|Y zCb%BY*9v$G!Ov#vh1Lr4C~Dz2xqp9@<5qXQ=*dUw@JWT`%dN$ZxOfg8(M!w{ruS7X z=`Yct!S*sRx8Fl@*e)+`KaToCg?z(b+Rm;icufiDq;jgmno*LRN6+9ZjMtQwu}+h~ zDgs9RamfxdtRV$*(a$Jp8JtG=Xt^3KRq72;X|?O$M}9Grt>z8D5Yqq#;ee*#;|8k( zr9s)}^w7hVK3}tw+tBA5k5`tF!6!D_gwUzwAi`#DGUr^M$UUGRsJmZ6cOT7X%@SMQ z$67Hd92)8v)?+fHry+UQ9)KBic3TA!(mkpGgEOfW3d60ZE-zO6XO`ibP0>~OhU=#s z+SF=Y;8`rsDmTx6qxVyW)pnStOJmK2L=9~+527M4?zxBSaFp1@sSDMUw%Pl93wU91 z1_TT{Alyyyfl-AbfN&k-ONF_NS#;CZoCE>dcMAYZn@$!AVs^w64SY0sHw~4rioYC% zgUQhexoQ+~ui}ezI(9GHhR4_mry2zuaa|K2D#tia?Nl&axv71rHPVY+{G zLRFfvpWky%j!kY`{Z6t6G_L~>Zhhrl+g~$0l9jEnZJVjSe-~A>dco89+b*Q)i0+*V zcJCCR1+-PqlU#;(Ymq5+e4Om{@3H4M`|XJpeE7Y7sXSv~(QChELs`qYD{5|moXWRA zuNN!%A*(tKW+7VH5_cy!h`qhGKt&LxY04ORVLA%41oX6psVQVID*!XbG{2My5-(e3 zJ-w&@z58j_qYC&<>Hy`?c)o1h+q)(9o9|u2^3wnUN{yy4)h zJ6(Bt=UHd(%W3~}NEQ%C>e>j)q=evN5fP(x{5jE2lbA?<5f5KTm2j`0E`$HZ|8TK@ zDap-^{RoQzBJ@4s_O$`l-iqz;KfzH;gyd*5gwP7M>l3~`yzYKC(E{O28R?hhd98tFO{h&opbqFBZjnp97@f2$;IJ4k z;IA#qT9N2&Gk^Yyi@K(ibRvK$X6rcKAeZ0LPLHA2TTu3WkxReH@dROuzx7yY6J5?J zzSSp`r_+x^?=6-_w~eIlzY7a-O5l;|LS>@jLree;s!e3AgC&T<;-zDTF)wA3wB$xx zj!ZPgI=f9oudR90dW6(uQKD!ZQ`Sbhgsz?o&RWrC)(C8c#lG4p*M_ll`$>`m%i+m$KO>-B#f@`)VMH{v|7X zwm!bx@_Nrpj3nG7%uRJ`a$b}I(2O$g*0ZXeyf~&1>}wIf*C(`2S~qTAq~ryRLA#rl zo2&=yA7J?t-PF`EFa}BwjU$b=Uk4@`lzX$aAR_g~QpVUh zAj$z|vG<=S(v0c|c~uC;oCHp&3=9L)A??stwZe%mKw&u=dU98U&7dm;GnQG*myVsV zy;$_OHx2@frdP+`-&4uw6sVs{0gKS~c${0w&osx+Tf6>6lAqaZqbNc@5LC+ibf7LFP8PwOyZ zJ!V78D@=G|V2ECY0kjRLHVt}b2abFIkjfs6CtuJkFYbbKUZE^kdRi2U*5SlWwFxsqb99nsoWNS)lgmcJ3x{J zy&d6Phsw~E`ui|_tX1CT|K0Fg;@qO85+jswA+l%(R~cn}qx&7Du` ze@D7KwuX&Y4jL?0GXX}^b?eD@8h z&b@5I$)Ct8ak}3;qna+2dkdSa6ygr2n~E4o=jOA5m1yAv`fyW5c>2GdY~}@3=%2Fc ziqbCPe&yhH0G_YbNsACHE*4W~8JKiddm+1LGgO5jg;FVw}2#Z(d2Mn;a>0 zp1+&Pku^C#W5J?UdWJ(VqS^!S!zlL`3M2TDrkIFLWYE8hX@jyfSjN{RJm%AGvChiS8Otww@@mD?piLTnO zvkod&%%NqHag_FOpx-+A3t?FzMEQrOV;0Su3UOW)e#>~fB&GoLB;h@AHgWeN{9fm^ zx?ls*jmf&Qbf#m$T4^9>Rii`nwbSF$=bd$llI>6Rb2t^nyV6Z8vpmZ{a|Yjpq{yAp zILL)_uu-UGeQKaup6C9c5hXgGK;IGFd*}0hMh7AB;+r3! z40tNaI{r|Sx#@0c@$C)1aCRBl(NiAv=*4yohcoFUDntkK#ds=3nxd4#!MgRU5Ow3W z+yD|?Os1|BHk{is{pcW4!pT{OHeFR#!$KKge#7D76GS2$fT6lsp>eSqK~do`?$)C` zrL&vMsf(z1U#U0NZT7Pr-E8UWFtcgj8zAk5)nf4m8I~vG=b{%r?0mU++|*bn~S2rEG7#Or9w6OnQ7T#m#C*$Qg*CA77-a$@g!}pe|ww- zD;$D403WY-B&8nb-r}du3ir-eFB#ovU_t`jPDmb40wUc#QiGHzjn+F+-=#{MACIko z;a~MdbC@wOa34z*Q-9q{WLlxqC|6qwknZTb6rXC3?*rVXI%0|vzHDBi{B{$N#kZFteTU_#40KOt3$E-nUfm5lPYz;}uGkkCuFq!y zWnY<5Z{gN6o&|O%pNqrK&&d&QmkV3FVP2lIwJ|OyFKH5& z<1PW|Seq4A_cYPq1muoxRJm`v zfD1h56%CfYFukE>Tpqi4-y(7BzjB#FKd*4I^A0jA(u&hTjlwNr3}Mmc5LGNuPM zNb3r&0+}_tKa3+pjjZ?*%L0=9P4)%54FWAB^RzgpSGjl?hn5SCi>doWw#GV=Sb)3E zW$z2Sf%e34_aR^KD0GRVdG+#=SL6~PN`pRZm(bYtM#9qLtu>>yKdaEP!Y8^yy)OaBnS10 zID|FoP1?reCcuC~=n4t^P<(F!flFjRQk@!3@3w#(&8&k1mC3lGkQ9~ zbjnar0=&!8V zlnxpJm~J(N%i~BVVB;2G?9#PQvf%*}txW=TN!%N>c=j5CO@oP_#5+PFdH9lD7(x)B zM0Xv)Xk;IW(1AKF8xW zrwO_6@LAvqKjZbfA1FnqYK~Yk?#=Lw6+}WMWN~Qw0ogU~^t0+}Yu>mxK(JeDTM5RU z@q5WuNGtsH(>HZeSYjPr8%(5Wsz9|7{v`saJboy!-aDf-c7^bmYR2<|d6}@>v-x%e zy>~zNcT&=DJ5X#$k>r!W3s}?RL_n#tlKD;3@KFH#s3$k0+(@G+1lgXuN^M*R<<;e8lCfLMAjGQK>V-hi=^#zw+9EVBVsW9Ph78ils+i?`V z7yX6T3Tml5vL}1leZc6HPXu`f7(=DmfgT`TH5F7i&^fXQm4V^!T+ee+GuDGNAXste z7Ri$%xkza+42nVS|9+er>qV{Jn~fY;MZw1RC<~+7F$SnvbciN5TyxDpA}^UDwX%>| z=sv;8X_RKh_!+Hf?MbCt1eVLiB&HfLPbTEBNlv~!)=;P(BY>7A0C)OIdX%~ez?}&0 z?-;7-Q@qE58~*v+qjdS;+xNxMku|f;by}m(@XiJ1l2h3RnCK>f(o}2``Q>9tJD?mo z#j~jZd1mufr;(XU=GB$dbP z+yF}%Hrn%Fo9bGZ(%EmV&6VwGAf6CV31wO2Hte5ZfM_%j1aWmM<=qD!R-jhyZl0?t zE7=<+$94(=!Nsgj$Da4sp>-z-{GMiE+1woHc?CZ+JYt zz^JJKJrZNb>g6$~cf*fgBWqqsqq*>MWjNgCdrMr` zYb-@{dnPg_fcK`YToTNkrqWg4=L5-+?adqu!fkToI(`xOY?grsx=(3a%rAaIayts; zJ3+Am{zqGTZh`gjZvT)(+zWt}BVd2pHby39^DsU`90*Voj?qC%gJ`;pevxW64T~iT zZ~<=u*?fWi{;o?y=%!Pv60%n7{_QA1F~u0@wE(3~ljsd3$cS-OPdm2ht`j7geZdZi zA-(Hq+gb9L21J5-FP)byxO6QR>OPr{o6$vc*=?)n`Uyzq0nA9n-lS%v3|H#Prgu@Y zkgot0ezwvii6ZoUD#PKupI(R5Fu`}j;YQa1&tpd5%OIU>iTgfXf8l501mL93B8HW> zW^)@sk8y0Dg9B-lG9Nf>O-)4BM*?x@uf@EYkDK27!92>pFwaDg>iHTc5PScc1l#Tj zK7e=J0VA3f(gK6}J>io#qJ^h3TpKVmUC?duEZYyws_~v%U@W|HeKo+9%UPXtCjeBu z>+6+JSGCV0M8?bEFGya}PTKsSP<1d(of`bY88u&_dsl<|sebTtOdCeK0)NS+e9j;`-+SJ|_iqulax8VpJtuHi0uG783H&@5H#s;v0u{ruwP#sv$_qJM=}dF7S*Z~&Eo+VH)XAY*I5F^}GWmLy-6WmN{URr-V>BK2 z=iG;X!hO!3zyc4?e#MN7(g2STz|laMioTMjy?V<<42_5h{*JU5WFY5wPamuPAYuXEXx&zIAD6fD|joRm>nyY)V*UcM*yOF&YId=sph#P~~i2eh^XG%l-Qa2M@gY zNzk$hptub$+r=IFj?U6DL1F%YCw#?%tz-?ScuJ7%fE{F7sF_#uuFh$c*e!o*3wiRh z%GwBGfV4kKh)EKds8>sLDOVL5yB5&k?O_E|8KkYO2O1ax!oeBVJnT)0jw=9i3%>UL z3U1RCI&xEVfWMQPESrz*mA?-;g}@#N(NgjzdY8;Q$MgREB1#ffuyjErt&l;`#;GlW z|L;h!Z}rmr+kp!Uc>wgRU2zYUH&UNHbi_aal~5gKM%kF;$DDwRIMgl!avDmuYYqoib-)B zHoqikuU09qVNDC<=^d6B#7yz5GWi;>Gg{9%0(b&~)%quzzox)I5UVeLtX*4pX)s7- zSEW5qw;N7w^?o-ADHW@|?8{CdhgV==s#l;7MXEn~Um$uPhmq_v3f;4KQkNHY1A)5O zk{^|16eMG1&|kd3#K1y)a?ron$TB+0Rc~ZCm|WxOdSIWQzkg|XE>k~WNo)LxV5H`d zwe$({UHlNL^Z59g?fT;-0b*3S9i`sxEph_lV>YonMHRyHf$xJ|o9BCCa_*?JQg!y` zIhqE&DIUxHA2WVR>RD~W->%<2#2|i%K_STR-bF$ZplNdI zRy*^&?J4;ne<2zo@|y>6P7-cB%Sd?k*QAWDX9UyE^-}tNMHj7zESK9;ru96lt)aXO zIV_si`zB?}kLEL1whQ8n8153D*xpJx_IyI+vCOvqVI$h(Iaubc&cZ=H^Unw7#(NzM zDi!IFjci}q?q|ypO0a=UA>eu9K-Q@t-emu*vDgUy(;QtKb75(|A(X%KYASG!d# ziLu`{^sn#q?sHixov$?w!M~HR=U5lCJ?CIoX20!h%JV!rr<*WzrT@&Nj=-^Ty3B;k#T@^j<9Lo9< z{G=#It`Dk0%*&S5LUu%)*?xabnYVCh2eHFiYCPJ-1l}qgCRJS0t*RM;-@<*wxa@2> z>1hVvOYJCWyYF`yeUX0{$6BOJ!H&T7AvF!H=5U`}zvVna|0;#4FH)UuQUkj+BUAUk+Z8%cf8oDV%ZH8{CU!-2QJ z-erMi4d|0lJJ=eBpU4?Iy01H>btUPmg!%yS3#D2Ni81x9jfJRL_ zKNHp(VCV$-pgCbo?v6TN1b(zm0W9PTVK3n6t*154s=V zcPCnMfCyJ`oH$GcRGTbXH{F=Yw=-uo2f4=0V3h&U)6-3^0@x?|(zL(gXNAk-P)!l;JwUBZ-D>@i^1u+Tutd4j%#jH7!2PH#QT- z6v~5Yb!j`n*t}J`a-+ep$;G=53%IvoH%GHXj8+Txhyp6dVg=a!2BRSp(IJxu7~AzO zV!-ElvT7x}Z_!@rj99_d2hrA9Tlb9Rm)%C=iw7CR*p46fs2)tRy>qzIKI%z0=;b1E zqm$2;LS^;#fAZE0+BY)d-UwRP!UjEth-3PnwoqpnjJc-7zK+o@t|e$%gg{ZIm(F%2 zta{J+?nwCVuSDOSaho(LFsY`km6e^o-I-7!P95}ez##U%k^nZ+>G`y^;qS}&tDLUA zUb4E8G-D}Brtjo0toTd`94-H;vob`FFYe4|II@7vG$)nC8Eu(3MzB{WfMo&P?A+)Q zc?{%#Exd6df<_9*(I;mTrL>Kr;HRhMNq6XmgM7P!ih#$dC+FPas5KJ9wl;K7HsGuV8GT|t&b=7U)^uV1XbkGL@G zb8{b;ICaz z-Xq+9hYztLZpZrROu*UIKT<1Sefyn7PACGnl{U%i4faAgixLMUHqsoZOL!eunO1rq zc2$@V-g_qv@go0w<@n)3!ujW6yO&<9h$BjmlSzcDu$~Wh2Qp_J+Zs zPQ$S?!%%vl1(}}Wp63$Hjxn4o3s`EAMlPlOCvdJ`*R4j{60<7|{i38&2Xj{5c6~nZ zWIV%B`RKv1mD|`70YwYW%wcW(*~4{o&c_rIVo^QCkFBZyT3##1&Q;YiZc{%WiHPWR zN#kkSR%^GanWLK2OyQ7VQxdxv@6D=N9JfLI)~wA=h!1~yh?FY5CGmuKk@`!*MD}s$ zt@udxxb4ySXQI_!tG7MCDHq-&pd%N|4C>w20`jSWF@%9N0iO87|ES4j0A#0C4; zJCHclLvJEM>i6j;`KwG9aRv8h4Wr^sfiKFcG*2_;*hgepD0JNP*t#kwPeZrpJFTID zf7cDv$2GhF!V;_9VbYrk3(n(kU|Z@rt37fynDr_UGp&|s90PA&R*fq~HxRIv1&gZw zF8sft-*cc)DEev9ZeDq-(5f@Xyq0dJp>Jg92yU9`p^jf7Jpc3o%1?uUh|+K<@Lf#t zL+7iqg2Kx6{OrOQ9a53*p=DAjhhbstXk-wVhV_rggn@?DiFf|n0O)%I@G1{z5OiNx zY82Ndy3F0_e8ZkWn{t?TI7b3!XHdDLB7;V4K})vq(4kQNEGB7g8En<5NA77Th5&BW3{7xXny;&fAw`{{oEUrxV6rtd3P)n>u3F?B%W0W@S}?UvH6PVZwoIo| zuFGRI%{#&ho>AgR0;2Kbr1Ralv+?uBUTtzSuw?V^QXcQQDf zAQl&iSx#3WOqPyfJ8129$ho2F&yH_E+zg+20r>ELe~)OE0H?xF=T8OGu}|=4Ix(T& zeE+M;F<|}zl2wa1^$wFpk3w??#}ey)!N}-&a1OzfbgUVMsLw8Wdqblf1tD@rwo?=a z8rv`o`kxm+B?8d-Jgrn46MNbg&tnA9VBF-r+}c>|mjplY@u))e@nn91+*WrFT|VlV zCBl>CGZs6AKDO;IdcPX9)JB$h3*Mnju&Ag4CvZyKQ-9pnk$$G3>O%d1fQ1DBRW zbKi&-5QpJn12N598xJZUPO>0)%$rNBnvSr=RnHrCIB3AVK=*$!SE{+Y5umbPZWQoOYqKs^PJ36-uVBRwZS;)U{`H&h9Krhy! z+6tGZ#QHpi&XJIa_>B3}44wDaxW8Jj|19!@C(KI!oC0UPdeuOo_=tWQ7cW0apG?X( z3n2d4M;cOc^}gF#RqqF@i>k_2*Gj_-xO;y03;+BYeuu~J&pZjAqXi*EGb*Lir0v>FZRpC9g-jl4czFVBjlzS6hql)ccvo58=^Z z`Fv}&sD%8dZ7r0_K;IT5`<+rcCdECt;8irb0=PwWGFCp#dSsjhCmHRm)?0=B5BiMm$XNcs=nSD=Fx zX^am*b&bOC&$2s)hn9L3o(<#Fw7;!27!Tnr(#XYm%#U)~m3-AxOYp@`?@*}lE5%<2 zy9_$Qm{p%k`JZDw@1J9RVd>>n=}ad-jkONR-;k{DA4rDhuecdUogsK@{x@I)Frg3( z6KC2KK#un0cyXA4#-=r2PXfKoKohB!IgG^WIg#}y#xNc~Uwt-J_s{JV_&;wLv`3-f#Gidg+^Q(ZMTmuf3k%YrFQ3XBq^p>kz@# zEJ`BP21$3iKijDe3{CL{E{6Eu7lZMk=ZcXUHmoY%@E6`7+Ty=_VNTVqzx!OCsi@Sy zD=*atQNJ=2sDF5p4gc1n2Tvlyysi>drLup+;_P3rc!CY$rV9Y8XgNL5UuWTv%99#i zyH%tO&%s^Tj_Qt&m#?l<>NuM&o86Bj6^In%$_|&IuOxKgG^&&p*Lseh6)ZvcU*{o( zFVLQerzr(-w!=Y7O^k*t-me~)G%+#F*tb^d-_KW5;`+0!08Q+wT?tzm&|;L{9NerR zFLX!ddG-L+$^6O&W7NRtJfK?%xJ-9b^lQ(BVbYjYHf_qz`dUx7;Z3aG*oI@&SzkCs0|F9EJ41R{m?N9pX16~&T{@V?mNjg6HCrMf@+-ZTy%jMO9%tj|DXs~s}N&85tR3~TUQbap=iPoEjf@@Xm0 zE78W36e9K2|J|_r-@oI3^eW6sRiisb;%VCmqK!&fP|HuJck_i2Oqv!kELya1(re9tD3&WIn7!)?W=7 ze?s|RZ_mz8IYYlry#K5H$uIl}&^PkRxmb;6U}*(#YC}>e_GT+Vy9Jhdiry-v2PwRj zH?|VJKvSyoWq$`jH*Goc*y=0Lug{(&IsfqXNlnc>>DUZiyA#!Zr)gH9Ee7JY9gI~0 z-W%Z&N3)^noHJ|!-IcTbo+sLNGO93#3FR!FP`VZ zlQxT%^k;1t?!?*7^wu0M_S(^hKL6AlZPApeVSg27G7cjKhPob)0bH@hS4BuA-Po)K zTd)YDWqr@1Mnj_f3B@noDj~aweX{_Q`n#d<#zGh)mwf#aQw%up44$@?QLio6$g-#@ zC|_UflTgimERaD*M38@tm`@=%LBo&4;Zk8~k*l55oA$MQke}v#7|x&H1YA{IxNSYd z#^pa-cn$ccm3MC|shXak1iBKzqD#QQPDC{hez&VaFLp5G@r>vd8C-bRM?wgF~Kc&h7?x zZ>54`@%_gQLcl)qy?bjb^K$Gs^CgZS@V%DOF9m{mG8ghQVv5V z#c1X+s5V6pHdHlS~Dk7&tD6Sv6l4QB_C0HWlq-+z6aKD(>3KC?u~)w{QRaMJ4E0cW zg@2a+%yUn36!MWJF`woBhLv5+m)wm{thm;~zc1n1v#dwFX!Xs;7&RLj@=?Jf0rA^U zAIT7CP2vyFC2KF@UG-rVI`6tJX?3ZwdeV}z^H%F+qQ>c7TS`cOagtI5FVX?VjHu2; zbNMI!(rbk8DjyQehlHO`>8ZLkDz0M(y zdzXU^ml|3XzEDP8Qc~3WX}VxhR`Uc1BF8Rb2$@CK>DCn5SV*=hs=9Ph&H4m}eGQaZ zBFh?A-yoVMzJduLf`( zgTa$V6RZgd1uO5>HLL$ea}IoeM3tApSxYn3W)`685f?wOh5p>dfz)ZQmHC6{N4ja~ zM*yRk@q;Bi2c@lL>G1`g)5<5G2d|_&h_PoM;7yL&u+ah zN}!rg7j9x`$TI7NK0to6T`med7{_@yiv#dX1UogY;22OriLSkk4LlU>F{^VAvq|L* zW7$M}fp`KimIR1x3L=jqMcmJbaR5fA2%>$-=Uh;C9z6!UX z03*T1+4y23T0OcDvtH+-kgL-I;APnz3%Mgf@{-;QFL;dP(J-VFRs$`d6{ZU1Z$)kkg!^Xy zaB+S3kzDnw7<3(CrM1Qm=gxn(d@8Sw5(W&#Zv%a{T_eg!iyPGI*>zoNv0j=bd|qPx z$QO;2@$x8OSLet$)9{H-$(oVVa|2HDDhnQwW0&JH! zUJU2I9}FY;o_Ys9Z-aZshf7T>l$fa)L9VmKU5215U^L|~%V>Y`K`{oHV%RU-Zz3N7 z5aE4oW(#k_H0{aBK4(PDRJeiJ^cHAV$Hr5V!n;w z8M&&NO!Y#bi<&7v$MzX5UqJS03m@@8rXkLGRh?4t+$SSk&f(xZC&d%hXYNt&;(eba zqt%QWO+Ane=E#Q`yZ#iQR($3nO+251aIeie_(UvbX<5I{gQvzK?{9XjYPXWfTR&2d z###$JnAN%7|BCZDnz-jJ>>LqKJw(vmYN=TVzc;DrBBF`ZJEnw(zT85Ns}}wjo(n(z z%&UVQmst$d0RlK^Um4gk!*B$y7P3K)HtW(4pvh$0cZDdsEf?U0XKf=!-~T%8siI)e ze(ld}Q>AI}86m)T7wxrc7#7mYfYHBzQ0 z#*J7j-*t&u)NmHNX>ni(QC8?tJvo(|P1_id+SBg`22DG$k$)F2VsE)83U0*M-(Fik zc_?Xu0ixNSFZbi9r3i6zFerNjo6ij*JbQhClm`@9P`}Ia`0&w{I#D-~d`@R}t!}RY z3~qIQnV$%*ypECvu8VaUHt19Q>4EvE`_1y9e9;j5?I7Nl!%bA)7}fGSl>Vi$97sXY z8!n64_txQ&DFBM=ceRg-@xiP}c6F{G{w6U>Wue|(JZq(P5*NARL4J2p@Qjc_uET?u z7rc$@^UZn$2k!Xf|Ksd0!=h}zFJM>^5Tr#xNRYrqFq8EqHUHi_7!FuA7m%U6cF- z|NA@PtkbR%^DKt1%+j04pBVhZwEfnpQ~i;6(KCA+2x7?p_aMe@hudGiCgHhqYwHyp zzjs?h*OTMj&|WqKxB0NEIG3M@)b`0J(2~Ce_~GsmY3`^jX~t+*UQ}^WN>M4l5kPw| z1}ZuG&R|o<^!>nIWQOGTTgIw194PT6%!p^1RgPA-8h-V|b!Vk!K2DT%dRaKDJE+O@ zZFyE8@cX!;&{k7~Z3^PeVg=noE-$wzO(@lR0X-7HgBAvlAb=We_6gPE2|m`NeHWz& z&50KKvK@Eo4XC zOrN*L`V9EFKTU`L4X#f@(NU%AfbM|oEzpd5p1kkPb{+jT46l3+1pM!TS>-%KQsJqZ zK0qj^Lqdk%4**G{ecIx%3=7}m@Ws7Tx^4NIL}mAdzsrqJK|2(Np=|Vzeq5q(-l$%_nTZU^ie={RZnZU8lY=?uswiAjmfK=J3l zk-&4v|G7*{z-7|P^;Tc};p#8K$jBP7bXTZY+coskxcpYqksryIDA+?0*Bf^b8zoIR z?!bBUx1nWZUiluytW2(ujdDO!FX8_Sz<4CYy32LwH!C!1h<2|>gT%7!ca3NS=hBWL zCG9z1$g`&`0l|u$nYcF)Gr%~#O8tdWYP&gJLXiGS6{BKv-ZZ6T;9o}qK-<1X34V?* zEk8Ws=aImHpHJP$%xC)d(*klj@CYC>Koh3&@Jr_Hch3DYTK!|KZ;si~4E#=e|8@WT zpXw`ua*kw-b)SHr{)^C6dZ&0v;BBI}`D^3uyVmO@i!cU(wx942c6-EF^;F3>IpCu9 zhdvfbrvJHmi;d?0+CQL)VgvZ(ZFon~U{K3!R?LwI4(j>F1PPdL@vGzulDoEQkM zV8h-2SK>>g11RZ{`2ZMyW~8$Hxn$}Yd}FR@ApPR^#$XDAcsL)Uy)3Y2 zVo*if!KU+Bfw)jfRf5KH=lD6~C37IRH6z#9ha0W!H|o?YU`01lx<%SRWX>wngvsGu zorc_G9QtkWmZ=;}O76qbasU3p>zyjUT5p`4Hz7vwFlhY2s4UwgF?@ngm+bI3CJO(? zb)@qC2Tz1klAp%0RY8f16W;4IMU{H|PesZ;P33+ISRc|O?Q+HbmQf%IGVyb2L>NUz zluB($RritwQTYge-y=>Vl;9`$FFxE-zcu;BPP0>~G~sP!2tckaw7&lPE27?rAX*As zl7Mb5@UDSAH3^MGg54fZy3=lLKixSj%n$-_*M!eUVB^VLvkP8?f5%SwC`U?^JEK z*l-6u#%q7|Np0()nq=S?`<&N#_;cV>xq=GRzYj^apNt*{30-qsl&5x)`}Nq62KrmjlhihroG`!S<3qp+)rZ< zX(BP@iE7=$aUWT@PNTHa(m^%K^|CUix<$50DfXDTaAN6*o5)Z$%{n!s;b(Zo-~bzZ zPUB*R+_*1RSW8c8|LxzKNUPugXcr_`tnLfVcbx4<_1q1h566QuR9F$#v(fzzV@iaJ zt;lS-x=$MrAF0845a4Bx(VJOFLr_0&&qmOHpTHQKH=G;@`<wuw@?C}%|)^i5%tC9I%0zt)76cTk-EFx~0C1?7`rcN#CgvbNyNo}inB z@t*fj;XdcC-;n`xW3zTwdhWQ8zL}+1NYd$^fumqe_9K)xdd#kl`dyO46V0wwzv1rqOZ;$sCa*~+KCIW)7I z*lE>_$F+TOyx)F(i9)ZeiPc>A77=)0fl<6RWIU}t`U(C;V~-Dro*2q6#ynp(4NAHf*CFE$zg=l-?u2YoceN zZFc@!Sdm1j1o8+%AERggv4CXW&&d%fxTV;;67%BWL)ia;Jm4Rs&yboM1d3EZW#Q*) z9H>NHp!%p;s=Pp8yU33OVJ^L%ox$g;S$WVm>A^pSoI&Y7PG*FX$n2Bwf*>bn;!2>U z&Jl9w8y+?VYSb~{+t&S#qXWm_y2Pg32S=saCwI{euIwKvM(I!3raDMT$0op+&OIw& zF-u2lc*M`dZX6kK7my@SFL3@%#hu&ZUCzDw#lctXJR3dWvaC_?nLR`$ry-VUTsDHZ zJViW({bpUDRY*V{K|%!|(VwWn_x30Hl1V1xbfD<~n(VL#ojL$XdkE{R$=}mWeM|^& zr&|w@Ao3lR>XrYyI%jQOd}*He)+VlSC6f^ow>+j5?r(YXWX!C0cWUFtc1FR}rc|mE zYPVKy{2F$QoWWR_^=~Y?wDF#vcLtRdUeoeE=J$%{zve~bXy$fT>Suon9VoSUG)sPVC?GXkgMq0k`DG+`?|p4g8b zI&RPQn4$sH+Q&i_{}()Zql-`-;*`sBBQYqt0rfM6YL78Sp8%{?(fkce;_^bR8nY1D zA3BsKp{4hUqZ|&MnXk|l$Hj18R6W*etA%z3XQC6Z{C!LcY)DYM6Z}u_DVsS#-}z-) zuKnJte4p!I3Brp)`Au7McP`g#aXW27mWLk0E<7s=18O^;$+z22m&x47kqR8hx-?G+ zE&g`oVRBZs=+e`od|bEGx)W=&EKzs(k-n&*q+d=Xf00*TtSI$lq)MzPEW{>Vy@8zj z+q5a=-*g60;*k-6wA&*UQT01WQbRB}<3$QSrD)@aaz}J-RV8_=I~~7TD!K7R0#JXE z(T~d00tXWS5blp8N|b=Y(OHePW`bu{^C>BUV-`%20Twc0d~Ka+881Bb>~W3qD=UXo|&A)>S&+>yY$U$bvL=WfsT2Ry!a{#E;Z(DE?-;2 z+(W$^2OssS`P6iD&gI_@y$5gsSNzunECpQnIB#_o;q!I3lRV?+qBo)ecxbZ7hlW7q z75aU%BfUkO?v%2kc~NU;uT*z!w$RDDu;fCCqY%MAOiB`U7KO&;djRLRe85dKgnJu? zRX%5j{1E5{9bO$u#6IB($y&BiRWSniSfbjJ2jFv|3Y;rNl77wNDTWseJ%67X&;jeA zY~D3#@B`pHQb@q{FY~mMMKjP4hQgbk1vsz@>)jHbo@0Wfd+N?jh|Q8y!Fx4ypZ|x> z`}r0q0G15+FW}as!stXEDWImNkj>aSXo~XW#nDRMZ$$3bDVr`$^4|&wLcwm&1N|Zo z{aw^8K8YZ3+rM##_y^AF-->Da%K0f`OG%^O7q`45g#S*d#loA{5jP@w5c9RCe$`i` zpM(>?w@4c*n^KD(G{bBJ?N5Q=rl|0w8|csSmVi5Kex4aF$SL>Ds4Q&#Xo(4&^q_=< zS5w3msbII?Z zlD?%PveqW9$6A>xu<-ghrb|`r#JJ8fZvZAumAr9CA}Fx9Pw-HUwOF7xy*Q82^-U{z z7DA9N!dSQ#zu4%HHKG2@KPdyva0e*vZYBEPxlF8T?5}1jtbxi4E>Qn>6bUIzd%t~} zDr7KmArIt-^Mtnt4TZ22fG67AdOts1W#}0$AH3&7;~JF4uZrt&;wr5Lnx`bx*_%VCl_a~yi}SQ_$y9<{{wudXBL=$Ks6g7CKOcbNeon6l<2LEINBXWo zz2*Q`6-vH>{GEa!Bc|zkg*sGv118OY3O>$1p9FcmwDA>m*|w&TeOijwc|Z0F%auRY zQkEW1!Yc)+ta4QKmqHJIbSrUVvM+ushqO(kRVqZrw1v=_0qQwbzNY<9oXj@ypfbIB z%WI(v$qVPg236G?K+EpFf)^|BmLnicF98IR&>=ozCid*xSO+`sp`=2Wxmt^g z6RSU9?t*;}4o;;>^aWvTF_4|CQBBn%lBf498w~Oba!4~?B397Pr+Cf(DVS7 zHT*B47(+wS187bmQopmbF`a@g(2;1?rWS%5#xGMD3Yww8S?3;kTWjilU8Dj4{ z0jU0ecssLOsAD{R{Nq3_1;m&cG!TUvu`kHlH+6`(XO-J8uO6ChC_-#psjrM8xz5*etd&)E{itX{{ zeq5oA6{$>u`SYROlW8C@o4s$g!vNQv0Dvot1m3RSsM4F1N+CpqQKnZ{W-_;S$9nqs z?u(6D{jq9-Zt=hwea#%T8hK-`t_fwv84i5u6zm(s9KaKY%g65g1Cam|-Zm+35h-ev z5WX}qlr5P_lTxj4arY9OQ&3gsnqj(QrfWE@{!MpZ0)CkAb)?QTbP7`qqxBW5YUvnq zRIx!e)ZoeX4X7(FDuQS(;E6!SE-;^0v$+Rw0PZRIR~!&MdWaS2S&1<(fpk}AOxO9m zil(qelcuT$a4x6_V~;mCNG9(?WH3&ub((E*Oo~%QhZMSOOjc^ItxQyEeG37&k-%yB zbou|OU9!m9B?}=B{8PKWh#-K+z#ZX_bu#dyrpo*=Q|#6g@Fo;lx7Ph$m;bE_3Za;v z8x1=7{_#NqwE3-cVF)X!Osg`W?UXk>2(c_;iO*rC(j-#_Kqw{8y&T1Po)I;TWl8HI z2dww~Ly$>z?&!yYdU~i&o`K2UjG`JK$8q4N)AT03|LFNSAQUf|I0k8!N+S?n?*V{V z8G?}4$421a>(f!Q$pS4yIC(8SUgIBkQQ?DmFI|-p44luaw$@Hf&`T75k}1Dr zUX{aQf<0~1nyjRTbSKnM9q#8ep=QY>(MdB+7hK7Oas2x@o=E~>xOke!g8j7Gx{-?; zk@cV_x3~a24v+#tI7<7yRZ4XR_Eo(hg!g#STo|+Y2E`#lYDMbcp_&fIshhJ?|IcXF z1VFPCnhVS&H9NhzA*m(J zA(9Cog>8~~Yg}Kw5ZJA6az7iUFS{rb=waf~(wNWsc@AV;&L=3FG$sw1$iD{k&P#M4 z2EV2Pp%QozL$*-KiDA&C{eUhmVos0B@`2wFW!G6wjyx#8%4F?vOlFhSmpDSxbHIj! zR!plviJACu)z5xX&^J@;!uhaI2~V;-OLl9ClaKzNFXxQ{#4kx>5xiBwZfoWpL}{-^5wCN9FM2L@FVV7KPSzA2gmiY zSs~VArU;`#8a3^HC*W$Bkab9;;Su!J8v)s)nxDSD_y zDP3z^6!K^{>*7YX@~Nk{d>KCNS#9)nhIPGDb4}I1y?49mQ#|xB3T87S5*=2%AHGdL z16?48bG!qr9?aIl+uz|5oQ;JSn6s%sO}5Z_!dd?nW-JBlDMmprCUjI%Y_b&^hHCtl zr*AY3z@a)xA%VYCis5hAAQFecIVZyCRZ8A`CI6nW+A8kn@J;GkM2tE$;aT|r5AgL* zdyAXU#5#z7eFvQJP-9owF-27#x*5~7;1vW8RY-!As$8(NEDG&T2fhrVi% zx*LDCk4e9ajh)}{(K%)gdW^Bfh=dCwvIJ)^0lA9*0Y|wd-cy`<2j%A z+KN5)csoaS6kb|6s8jcoU%M`{!&>$c`1qTpaZhA!=W$&2X~ffn1KNQ21(^ieg^P0Y zugKwH&-mj&k|&43ivl#*J+qA8_FU3~6F2K14H@Cr1>DM%{%pxrmVAl6To#>TY%-!9 zeN?gcAS!dKS@c%vP4&Ra1~i~?BrgaPX`n7SAZl1SVrgXe!khP8($J`!?JDbwoR(-lPe6OhA;@0(^~_B+$j>+dae zjnY2k#v*>jZ{Kv?0%OVa0M!dI9U%A(aZUNO1gYt_Xm*rWxv-XTO_T>3%GO1yoH-=Lc zmb0pJ6Gy%KQBGaYjGlmh%KOV!KqJSjp~@~D58tmEk$L)m%C}o;lE+Sd%l{Co<-KH{ zk|a7p61#`}5mIx@p++I}I+N1zT4I{kzbG`$eVPyjid=#xQTtMQwocV;)b<(|3pz6= z?AViS)?TR|BHAf~r$f8y4SYs=1krZ@;isn2fSWWtR6}bpMjE0V?_kl^pHRety%ips zc$DqSP59UttrGoR7d?07!u|7MQTiZJ2DLr}?`?N;Npx-eVLs^0@n=x*Q+zDPbrxR~ zLQGCM6tAoEn1#r3oC!?{RgFy0wDoAr9CFSegqAQ3Gp@r49kN;zVlt<;MZFDvA)B!ktI0(X!9!WB#3X zUV50PHXh8@N0&P9zCajwNY<^Y~aUQ&(-19p2;)q z%Z`uSGwS8-6wE$bR`!7lqACr#>n+I-gNZs-+WPNwF9^T5Ly;fwaT!ZYC|+05t-g>A z4QRQ(_e_1@cWjp&9ruiypeyMSmUa3#(_#|!Y}R} zRxaUh2BSK%6qj238%trji)<1?6)-y|@$gV9s910!&Xz1xC@9nU(s?UZ6SS1R=5ABb zMj60YvE>f3{@ACiU?T$z3sft}d4cgssv<;I?gQ=SijdnJA0VLL$`(8oJaBYf;krOT z4FKOP^knAMW3NLJ!w_$Ezg)WWz6n@AfWc1-`MW+$m~v+h#rRWhS3u>oWbH487A6ao zPfqfVD}-fr%;d}+pZ`~PtwfR_m9mLTzcoe?9DK7!-s)Ga)o5vfi|R66zj(h_ZJ>bX zf!3?{>y7iyq5Y@wt}%WrvT6}2m@%l*eo(cjMEcr~yE5E(m={Dvv^xt4bvJFJv5j4P zyESEIiS4Z}MXyn5LyY!}sz8>;A(R9_)sKw6-0{pdmaDWVW~>+=&pXQakr zs?qCKx&+*saa<13jHT_r&_I2$2i1)A`>#eaq#}ISxu)5GWgl@AeGbEKh`V26U*XCn zUj~4i{D|H^D{o}DM4So(>jkbcc^M02UC$|%vf>Gg$}SrQIeu|1@X04!ndU{5zr|^1 zAf|bl9mioxh`m+D1%guZ<(tM=;T=8jxnn{2BQ^2YC z&`Pf_-r`rKnicLNn{E?X-_v&Yj`sT(s{=_dlu!_>{V~in-7N3eCe=gMH2NCn)rw97 zY^tj^i&$cf`+y@WsLLIz{mIRGFX0u;hQ=P$k*E-WQ!Q*JB4OQgp!Yng&84fv^1l1L zLKnQlf*3I&WIrh!axoZY4xHg}%#JkRE853gc<}rTWq2N6_lK>=X2r$`?HNyTY?GEc z^d#c|oPAel{z)L?6D&qnFO^kxST>9>kMIi`<$m!3KnAol?Tt$*Wy$5gYpRX}t4zAI z#F{62ISJ1jpU*5f824ORm@m@;7=xV(@GHvD|nMcNb%4^xE8J@A2}gHS0HxA)v> zloU4)!KSf;gV_ElHQ#CbHxpwlvLM<*2u2Q59%n@~Lm;WK8{^fdmkOg}sLrU{^ z@=%aKwcrOBd1IpLq>I3DUq4GmKTG?I8GF4B#!q6*R(MWF7s{Q309BXqKcXHWTTqw| zI~W5@!+q{x^oU_925rUw9BtN4eiwy8_FNo{yvC$JSh%);wVN65ni5n93K_an`VCD9 zwpShsma=*|4!r&#ft6R<>tG(I)+Yqr=A29w_(KokCV5aW#%fNlB$lsQLVIdhns9w0 zR%4$tH(lD7N$>5ftkd9q2NtFLOgOP=l8v6LqcDR&iznoE8;$35b z{;^92W1ZE}k2Y*K=g%`AFB%T#E-0~T7WZuPqkDVj+;**apMvgtc%HqmpYyvDJnL}+ zc@rXhVoP$?M7ENtHWwBubj3NfUj6Bkcd^Y@>oT|jc5-2KCSBY!RhmL3hw)>h25vE8 zm<}^;?)LEQuQ+ICvf>B+j$km3)tQ&k{!W@8lU_RORHMM^o%7{UmcAnmlepC~@vf6H zhrONUusf%!?;>m}XCM3Mfpt9*vL#>d=e`Lv?q7W!c{=N+)`o4&6XpA^X({x3-L8kE zzo3BDoa^Zw(dPR)p@P*AnStxQTfh!BbKd0`-QXBsT!Fcpwu36NOO`m*-wTkLT@fUa4ln$HfV3;XGI%hoQ#SWVny81j?bw;zKC1XTfW}PO!6NU&pIeCAu6M6X3gG^&9 zvtGC?@|GRM>-)A9(gv54m|0PC(n?zI*9s;%#{MAJIz2Zp&6?!^T=n|hi&nh4{q z{H?RF0LsVxJn&r-b~BrGWP(Z0?pItPkUVs0y12RvULVO{f$_|JpZ9HcNA+kX{uEk` zaMpb2hdRFpPuPtl*7X!TE?$_lYMPC>Umaa zj+XGw+-o~YDf-;tU)pfP#(f9#{1l%LmWLHq>{KGI&i2#gGY0Ll<2R7F>ZRi~6I%Ai zzJqMcOUsN+_p4V_6HnE!*&8o6vJ>^LtQVX*L<)S?+d_~zQ;P@BV@afZ(>b1{~BC3lvpofv0G=j30EJW8YZQ%}|=`mm%Y>P4ZZkGI5B!;4wJkz>}_~qC&wWTdJD##A`8W&G`I@#VVf6 z7Ji;Zc3UDFujDqj)S)>9o@6gqf(av_`FO3(^OHtY4~rZ6^r=-D*;QYd5B*(jx3(So zt2b(Nx$)enoPrl)zOLD%dVNA3cOS(GNj$cayWN(hEIU@!StGLPm2UO%e?zh68Fjq6jYZv^I^wW zf1&5?&g4U@R>sH>LAU~VzkbwUcE#YctY>zL$Gg5NRs1j*Bv9U;p2nTrigoVCnl&UT zR@in>wrrMLllCMN)NTU2^g_5N@nu+sua}qn&io{5&qmW=SnuH_^|j>!u~pM(MK07D3jHLLTP!&534wpcobL_qI>F!LvEdOpq*p)5;=GKoI#QjV#2SxBw>!y!S-v=zScZWuM09Ge=Um@HL}a(Gq}nH>G8U92Mtts^_BwPlU8g5EnLz z)d$omu7|fZI51G`B7_4Bgm~muL~pgFZdo5)slFj1ICI(=CzdXz_$VGMYF=LG!qx&e zyFB)tl*O;V7x{~xDs~g7mr8_R&s}tbzoNw~Ika*M>>B%Y-GAuQN!uxuo?pZ(?+igK zw6CFFV_tR8k=Z=LefMpij3Jvba*|0+A# z(i0;ij2Y$38mzB3XQ{nXTn`sV_T-iEF-sM7n$|V!2M(`u2RUrQuyLFYu9_WoW^7)IRA%>GB0_^s;Vsf)J`9-@9DXldG-4@c^(B#C1RgmnZ2*h$ltY zIvNpvpI-(XVzU)a0pe*LYFlXOFsXrz0Wd1$v7UVH@P%j*y}tgad0Ixxdtld{kqwEN zFOz~Zu+#zVi3}|G*4$cGienbG=NTqP<Dq&&8&;GrR>bc3qh<*zM)B z?Re0b8^*qOc2+Db(N(-48wztlQkYg10eel3h1%1LJIY zA_Y!$Hin&k+sSpX=my^iuq`Do7@PjH$5n^g`u8hD2-|J`XY(I=wGa22%KN_>@HX7W zq&Hoxpw6(qE$?#268vZpcG&-UFJqK6zjrmki6=WU7*meQ?QmnQucl_mz4O|H(3v~5A`0i&AwwxjP`a*3f<4X%1#c7*M` z@FX^q(HAlo#ZbmUO8U^nNWMgM|IZ?{i6|4fqnn2lP{ZZSh4Up^z6^@$JrdMqZ5rO^ z(xZT$9nCyj#acXy<{L2qN81x-O{93)#UmaPEwKBs8C6U4>MONN++_Y{G#sLYC^*-- zpfH#7^VP}bQj009hA8t_=#JON=(umd_LqYmzORe~n34M&p-tKt>ZqEuR?p@?=F4Wd z*&56Mh_m~MMh8=VNMt^Cn8pa;S^T*3j$Vq6r+s#%Pdw8~cfht8~W-*s{3iGBF-qDE^6M7Ov@8+BEoID+_rS7k!x zt5K58Fc-UT3|Af<^R#E?n%0eWw)QKuM|*MTWzPDPxqCAInzGE{F>h8`%{8psbe zhkm-6S&$&m@i2_6$G?1ra^+98KrU?b$?KXE?2yy5=8VAYBhJ<>1ZYl~%S8!SSmnFb z_IE+$>pud2no>3rT-^3H@K(<}!{jAdtE39^c)yT9{fGqf`Y|POB6-%vlu!U^Rt`-G zx+lKeg6Mmj*~;K1zfse9axQ+}=T4u`!*A`Axz98Crx0K>3#FfK} zkxQ?~@B39}<&ZOdkN`Qqo9$UW%})eo6QsM@|GJ{RdjJ!?-h{wFUiRUENWoca1v5s% zo4w{8zqNeO&?Gy2oT&;lG5s{}rV1DBX{WuLe-!p$R%hkE?MzA>F=MHYc!f zVcKw>#z*hz#rrwE2B+oeY|63SDSru0<~l0}SI2z{x|}BudLGINE}?*ztn&l)iehv> za8|WEpue+S+eOU|pFI^*5l(%&{Zqk~C-_xim-trqlGrYh)xy~EKpiEjDEHlX-92&W z!Oo#@gOPiE+DNi|=?tprs&MQ?N(QH-Yhjn^$*{@Lm<9PUURTWd$f$hzkQ zhf~V%Aw+e&$g?r7mH|>rkOBAgqO1GKK|-l6L02(!j~w+*!_nMb@s;416kPcZ2BI&1 z3)QmKkm+?KgkMFyMM22t<6`?`44`Y?2ChU$;mv#Sb*|NTntpEii17$&iD%hc`OaG0 zZ4Vqc!@54QKhGDmVjcaO3K~i%6a*8?+JbBP(Lba5&^6m0bftJ-4o$QAqU!KsFCv&< zj;jvn1PrqFYiI4&5dBTy4<25JSC;y$I*>Iy-;2jn^cdT2<5Qhd_8$tFN}4aTLa=-W zxVOO4XMxB6Y$xS!(4F$y+BxkeS<|xGTub)&mN<0!r34SnO0V7W;q~g?n58CoDLP-) z%Sp$r^tPg^?MN$~=B`mjo#Xp9D|HFmEV@g<^@@|MRj#j9F5*Iz0^|4Sd$d1vUk7~{ znP;A%L}@s#D3E4(DGf9nA~d?QYvw^l^~$G+aJ!oK1Zvl8TY4HWQ$cZ+ z!3lUL#9wt%cVN7glART|+)x5xdMY$TQI(F*x&AV&?y7PVjCjP6ZDN1SRRv6uns2ad zz4+v6NVkCAvLHkd={*{W|2h+M?+Ae>B(C%5AkW+a?2dK5kQCGE)n+=7_?!$>Yq*|H z6-zFX%>BCv-&bDI* zHJ{<<*Lt?LQ+j@{oP>@9eN~e0st2u^k|y>pN~AnMpWAEP3R$Inf*81CKr`R^)gT~l zRLV|~z{e8*lkYM|t5hY%7cr5lEI>nGO1SI!K#u*@NBya`GVAKf3h1)=cl(>k3;v9~3=y4AgRrgGC+O!8o0B)t=H#S|cItR?q1@ zz3WMf;zb!&Yg3bq?eVLzewxx*xoLmd{8+3g5l|~P%m5x1?(zWa>10Dcf;$oPp0Zi|mG*2kJtVqj%Z!8$_YuRIZ^r9vFykU+6q_jYhbxM=^ zoq~@H*On!@q}|%bs$OcupJjE&VtF`z<_hMglZov7;DcLrTT3|M~tiy#Q4^Rm>Y7G}+NG1Dtk-ZZ>hQO+C*-K)r!KTkLt8vvNuFs?dl z3ptthS?42%(-JnHn@aZ3e^E^>2Zl<-D`6?}lIU_)W_nR{Qe z$;dER#Zon*BTd9C_(&ErKC^U&d_(iqZ^Xdfo&g>0XQXF{*cw*$65Lh@6+Q?uuVuqfZ_BlmG*1!co_5wTbvW8Pzc0tUo0J|vL*x4^|zF&4@c^os?1$+ zzE|hOb5HKW#l#g!+lgFS9=qyVN&Cc7HLVJ`l;jaca9hYoyrm=SO4=ZHj93V7OC*7w<5uv=1Il>} zx%u{{BT0-J308vd$Of%?3oDpRfZaL1kWF=2@t?@|$=7{`kCk#~0>h_-;Mk8)bl&p_ zJcW0Ey`s2g^CS4OXG<1V7B~=1gD2b^=^?e+4c4KvScnGMk|Rh>hRX#TV%{S=m; zRN(654givGg4dg#jrjv>{+snDWrv?%>b#IVb0N9PNJ++%ixc}q`~A96U~##8*}H{% zifu!JDAo59Cqjem(wlk`>UYb z`6OC}cFMAf(3~1$D4BKy{5#|cj^bh7ct_?K(qZnR$*(q@oU6La( zfmEr9jvJQNCJ`S|Y|DP@_}kN;9N{7!)Ssx(t*FG_o3)@B|Kg$i>@9Xhjwg8d+V$fU zRu&1p;9@&Ht&0+sXO!pV+TJqSpvW%pZm{sGd?yZX;xn|f1KlZ{to5Ua3+Z`Js)?=? zce$)%?GC*u)#4amqENtC-pV06D@HApp@#TWnQ1i6 z_BpIl?cV6;#iRJ$#y$NFuT5|k;`nwK*41Mw*;xF`olWa&XQujnV2{M*#n%LzVB6Nr z+QFj$N_sTWOx>sIA@R{V7Tr^rw7Xknk*5+y;H$`AKpW#~Jg#(}A)C3G&`PiB^@tDR zq-3n#^`Pw=ET+<;ZUnFo+wgrK7npRd1w$k>fhRw5;phPGWyXmnl^&%<_su2x1 zh)Bao|9m%}?Q04M{b~;#Y?UfFy}msv|2;zPC1ic8!$Z{%rL@eGF1Kj!*PLeQnr_IT z%lP?>Lek{imQB5}9RKKASY$C2v{O&$7qMKivvojdu)mMi<+K2kpr^MvH{h#*Rzp&k%tU5nfWL=l+R}Tn z0B;?_&IU`AC|e78;LY;J1LPNhTeCb`ET=A$lSH?bWbtOb0*_}bIFy|3*lBq(Y^_$$ zd8RA?uYWqzoVSCG8v$gEROs$juQSw&8bjzn30RnWIotUhyDgc5Adji08HG;4$QL$A zfGXrPZ`R<`!l(k0Wa3Fr58+i{ZrCrdEwWx*XbZ*LGX%PEEbd2j-8dhB)vNYAF|{A9 zNt$x5p`j^$vL8~`%RLs76Z$wX1e6|(2zi};4oDAuDaj08=<}JFp>ox>f#FMCeLesBn09L^iO`dej)6;?+~P z=aFLoEMf)I`#5dX`!BQyGIkrQ^&C0+&fW{&x=MP{b&)>A>oi^DsXxJI^lvQN+Bh9$ zz}tQzoRzv>7b@@?!!kiJTV9%E;zOiZ2*WKVi82eBwT)GN;);j&APNZo*il{UFY>_- z%zmG?_I|bZ*fcSc5AC26P&$lJ+Yg_gydKd$dHH(o!x4z%C5rjPy(`4qx0^PpduN7t zF-HTX!pn;TX|aPi4K8yCk&~%YTL*TWP01G(769a*lI6y}%+i6L%Dki?vIlIVZ()Rb zJiz+dD7E=#F*$uXZ5vHe0zwXzALon zwQsk7U3zGU&x$8(4?k{N1~_oe?DwLb!0sWb_r28{x{SyRoTwy}JEi20-h7h+hD<33PUCfp<{RPN2@#vk(RJeN`tgy94jA!i{qKm+Ya#tAHzaWYOzmI10z7}m8wR#h zckhm?whFxnaJ5i~W)5l7oUm7Lbac`(qc*1)ndqu&ESWEIO3);cxtmZ+YRLalRS=@Ot;k1JPP2EAB+_rSe~M**2ym0H5jdT_kah4#DPv zJ4Y_^!!_GK%2$52;VBTho@3IdJjKKI?5n`5-F(8Q*ChCgB$0ITy5h*FUAovmLB4Gu z_0vM;D4dcWDZD_fdH^l&?W`7N1EBc|5phQIq-pt*eObBMf#gnB*#jcZz1*i&YNxIy zfb*m4g62Scv*sP5wP5ro@JJ%)5ciLK7k%HK5=8O+SWn@-em_eZsPSzPvw0|=2(0{4U(lXDP(Gc1 zJR0}QXVk=Y6Z^YBfPpu!h4XRUUN7I8_G46juMAoJxeO`7X@l~|_ATJ-RWws#U}cfF z;w9>OCT6=mf@(cO>P01p$#AYpm@_Q;oi?fg;MS0Gv)Sd%^lZFyy6JBH48Rz`EQ-)5 zxx-BEVe1#Qe0MOgh_A?I!hIuixmSKZPjUXCEnm#9!02BBlQE}VMQ#)fybV@qenj7k zh21oXv>gcuW5?|ZW&3gmcr%H!VYRuy3kP78eL#VF_fq~a?f_xC{33sFd#xma))eZb zTxs~;;mYON;@AU@f5x{F3{`i4`f8;zz#?AAxia!(E zm6EBEKr74A$V!o7tEd|VYB8vqr6rwKr07T3wVfzTGKY07*8}To-?(f1-3sjemKq-( zOk#s9kU-TjA$h5uD4xQM4z1iwr8nac;P-VkPkFHxop$Gdm9Lf|fLzKUD9N&W^i5rl zIj*)D=LE3*&YBDGb-5)xF9KHmg5e_bkra41xNx* zbrLpfXD7Z_fmAtHDuDZOm#>oycH+kVt3$278=cafSM@4MP~d@vTcO-xdstmxuC`eL z1HSY_Q^1Qfi09Q|mD(oWjdWVhks0AayjZ~S9xUaVWfe4oeqj4rBB?4_P#&=3O-?KT zCv-MNx236c>aw64XUIXGfAlKvuww8U>9$pwoYIXJPTM1}-<{5Wz}avi6wsYt9L$cu z_|a~nDGV%8%?@awvOz0Oua*c6PoYDQf72s8flX>XaoZ_%n9A}~)N#{@YXpSxY0#cn z+bF+nnMSo!tz>UB6Ds`&z^tD8@@lO7@GN35)*RS-y-VkEN{gN3rQ+(8LNB-2{1vZb zOFGws_bKhc-idEf8>7#>LHCbLAkjXg&C{(-xN3}%M=ZSt{%QO!#wzNb;%F-ev~ z3l(n@@dHt>Cj^-~IaisBSip+VhrV89lk9@KY(GyG_H|<|`S67#x8g1Ovo-s^D^JE4}oK><%9)d>lsk-W+mobq(PN<$oe| z<;*=`Ei)J3(DM>tm8a`VZAPnoae2wHHc*GaeNLYG=xT^HUL5P98x7PtD$3|cwoZC$ z;>9Cj`|hU+X!I1>e?$97%e( zdcEXamfCRpA-J)(3oVYC6R@T^lL5EMU63gA4inQ~{BKwzZoSyzkZ5FQ%qvbzNtm-$ z*l}@sg}J3irlB?v!-WD4WXbmMgH%!ifvqN#3lQm2&eP(5Ct?6I7MCcppB0Vb{?pG! zV~(i;V{y{Nc`zbFm|kg@_5Ja=8h6?Re5;iyRla_G*&~b124dCc(|{|9uE-K zP=HHE;e|W0sXMp`y(6ptC8-87*b!hQc&coV^~*xj`2R=QSBFKlc5e%!fFKAc-8BkB zOQ(V&AOlEucY`oAf}}J^x1{vYJ#>fC-2+H>$G17}@qIn#`u+3$J=fmX?Ded;*S*$y zRt46BeBARN9iQgO$9_&b-G@;-fg?ngX+P#BR7K}8D1IvVri2#@ z7#oDdcz`D4qlT;=`Dg(+p)2fma89vFU9NmrnJ@Fr)ArXmTRV_8{JOeluvG|_;IN0}+C8eQ5x#M<3y(7VZe>0RMaE#M55L+Q zbxlu(i(Z~;H!>#kIbb?CGdSbferazR*mil;oGEduCZF`)53ffS=z@($jKhu%V^lu~ z5gmOgjIF)8>MgeG)Wk-Eoc}!NU$d54dqeOuTT?dJxBdBzgm${u_mQV>qv`d|^#|02 zuhydwFQT6Mc&|LCm57!<@VL1#wVAf4h!?m5-aK1SeL>G|w_=j-d0vB5dZLzZIF*MS zJ$Mp zgS3@KI13Jj=Njp0d)IJO@oN(O^p9$ti}n@-;`(A&lRfvfkMoNIRYW3u(MF&sZjC|4 z55!TF-!rah+0@LqO$#bL7(m|%v|En=b#n|hSZu!A*loyPUQh~OUJ6T35(5jr#Jx!M zIH9ZANKjviO^2&KgN(FwC#W6J>U}SqJKXaT2voTVj6&Up=V;g)y6NBBX4y<3$k=$- z)5sHmeTc+e zkMRD=snMP*F)&(facO!mTh4ICx51#}#;^^z zYX~vt*WE@!6K;+dPM^%4u;MUM1ehifrCb!DLND=ooy50#qa2GYi>oKTotT)+hOHG) zYbw>{9enV}8+08v?lPC*rxrm8xQ9cDEcOZQ2@*9c3yu!;SiM-PJ08-1e#xarF_Wgo zPXSfldn%nwe7gCQw%Q)u;`RJHiVN4;P@_|G{6Ameb&lZ`PN1|1>)ltJW?Ri91fv{- zir8>48xjeie1>)V5_<0nbCU0k$L-0xU>06XiF>y^bkvwQUM5Y_Y>OBbqQ^cf?a(Z+ zFISnLI(&^1Ad)O{kN;C~{i+dN6mLnF*|oHbFX&CfMGKAMRPyaYtISv6I3+0Zi%P%M zpY@3j0Ye~!N*;C(pN=L6__jrPSqsp-n|p^(n?SXQX$UY4G2*wb#wJT3D}!XAr^Go5 z2lPvs)%XF-4NDJeHm1}IW`s@C^8!_-ygVg;cv``g94Afr729!PMb$?dyjwa|%g!b` z44l4lyn!ma@WXoWyrrsVoMPVm?T?J1(-Hf^T|bfnnn3{%?dtVD>;Qv`SS{z_n`@z+ zIMJM+{ceWOw{LW2mAk7%I_zvd|<{8pKl>Brkx2 z@rsq4UJpqXpIVk1XD>=;4@FtiqmeYyP7Ng1LCK=6wGp2pW!>{%IR z_{6nzsW&NsC#Irw+mO}Ouv;zDxS|l@IwaMnks(lpxQb9_4-aOu1U?flJ?m!T$=XaF zPlX`VC4?>4+H;e{3cz#u?yC*UyKm@b=yuB#J5TEb1{JnkMcHokgk9UOhCYH)W@N}+ z&d~EEJ)m-z>bup-146s()9(R)MiP?b(X(&Y@x3!&eJhkUL)+6H#6JJ=n(ky}Oj3AI z1(lbi0&#l3RdLJa3sa;2f@X6u{Mt(9v-?UqznzfWxzYQ!9)DGQz_;7BFQE>1ETm5&<4v|HAHCiSyZYb82biVK%`3_kUqz=CJGarwQn3P)@Hm07 zI2GZ%mxOprI5clt%e^0Do9Sm{+8BiFEIpjzEg7zU-}d3F6A0M>+v|{}{)1ILLfCOZ ziWyd2e>@fCXd8b^+j-0@|4`tf{F#HM(Tj7Z@acXE@A@EQ-OK3`VS_|1*PaQ_j`SD# zg|(5=C(T%^^S3-ITJGCSK&Mw#CNSleF6{u)OV>^k`4okA#r|=fb@H3B_0Op6t4!>P zhKq~o(m^C~b%LZ%dp(C?Pm|U;t*%gh)wIr?j1y}5DcUxjB)})NT z3WDFmNLkxhDqg_(ONgx%Tt0JfU%YKe*LEd4d-vCHj#R!9#?~*ZiZ^?VYkY2)Sapv4cBOXHocRr$x_8ZL6rJ$w##o1fIF$t z@Yyfh=iAA19$uYq#txNB;9c@-jiw3;d(62ElAXrL2we{)%sWhTmTnI0_%I%K{?c^a zfo8Vjm9Fd>+y)iLY+BoONAfgmZ;z*z-a6(A?{uafd42=cEUw**GvWTocJi_f_L zR=kdiaW(I@DX40HtoR6bd~XsixaZ#NeZd?AWhTVmYlCb4P*#>3P>ps%oaI@T=RU=J z*;qY1q!#66$ho?dTV%Y3l1`zQ7uFGWXmUo}h>2{8Ir{ec308Z>@`WsxAo1!WS9(2F zRwpWC2VA7o-6f=wh^F2_Veq?vgI-f(ElQqQ+y@f3pW)Xc3Ea>`tSieKu41EV6fPc< ziIVhl68Ex&BPsa8{8!P?b(&&0?~gC20ycG&&M55^qA)RV(#Hz>-OmMsz;p_=3}&@D zzD7xw<)-069Yt4>E4g0cW>JG*{h7r_1~VmUB|6e)WK_H^zYybNR9$IRsj)k~1oXYu zllIW_gM914SqTv7i?t*KMBovb^n)Y?UJS^KH@J@_weIu)vDi@A%FYsP6I(y%N2Pdi zT?AY*#Be>yhzF_J8!}(1CD9nd#-)j%{6&z|R^LmGiqW{1PKyVdbK2CLwAb!jvyB`s zlM$jkbKk@8*xA=4G+YiDi^`#>8y~a%zH*59`K#*p$8ZWl_M4EY-o1}sgP3_Z-aF>^ zn0j)(8^FMW9Uw)w$2U7f->SuI5x+H3KS^O0hYxg&A-lqNE?EUybq~sdZ}V zi?i=7n|w9PaM3&qM7JFT+o9q6xp9}D^kazv^jKH~__N{I+p5&#Y<@W1-M2u!frR@u2Im)ew^|H+!)M+2&@+iaB z6-#D` z6K`twTD#@zw(64$8aH~_&5j6NzY#)6L`tzEP3GJWCv9-dVPXYU^Um5XyYA0lPh}>S z4Q?c3qD%kk4iV#3`h zA3=GWg$u*t&np(V-jZ^B_ikgeVH%6x)=*K^vw_nPHW0KS+uH~~KXEMu2(aG1_%f6r zPUuv6jz!(^>QK5Uzw>4CtI9#)TVma1a$q3C?w9X%ix2>}ZJGjc-hCh@O1dfQ?%0$n zwygRZt+c^R;db_2;BclF=;9TgnlO*^Ax#=Ur0zNXG#u}#7@xN~KI3iQxgjZlhn8Co z14P4(c%8}7vP@%%3#~8}`lGDKR6&xozFvg#EUmJJd(?5u;0%sG8D*k%ZThvK+b%#& z(??N068h|!AsZQ}@=me^Sr$w${wmUBR};z_WHA2hYTDN)3uxe<-Pq%}JT|uOjErSC z7qI-npuuo{Edu4=cKn2Sv4D43ci!G<{VoSW)+$HpK4W?^Pjpqcx0)~07J2{5x8**0 zy=LW{-SCg%NXbaX7`%J{i5wF|*Fr0Fz7?5FOZK(f>dmBc6Fe~*NBby8jSv3ee;8O@ zWjILrqeG^1VVdr`ybv1V&$FHapnN|7AIz2^H85NJL z$1PBbGa;DxE}0>EtD@tiEq|g&DC~32XH)>LKa{TXYEe?Rpk|EE z>c=UO@Q#rbk_nO9Y2do@(CM4Fr_(;l9l@sG;dh0Oo+|7i`24*P)9K{F1P2Zywxp9d z#}u)55Z{G4I_$cjeET{3QQqeuE3-8A2L9y7kMe(X{t~sMl$kQD$Y)?doHpR#8!?$yF^#geID` zK{XESBr`7)(8M)7y$S7Sdh`{^tJrQNt>r1&_YKZA;-a7qjP%CTG2hzwadH#U7JQP( z`jKyo;pak!NF|BFxI$wZ`lE5uyg|sLICWwA1g>ylT0t`Bi5t5fiOvbJD50Dr%l>?R z91IZetlg#HqJ#h+eFJoB;?f+zge`D{ zf`rxnDALxdX5TJR=ewig^`!i*-Ojt0qIL^m!ZlG1k&XEU_1>Ck?gQts>Wb_*7_Tp_ z$BS0yi>%9Tw_Ci=>#X2o^v-mbxf^To!Say0JUGSKsSdzBpcCNDpQe%+`fL5v(*gU9 zt_ad1Q4`4qdG<`9caqburP?RtG1M}07np_HUFinB$+B`cF3(lqwV*}yAIoG&6g8Ye z(sg_rBSn*Pp>tKVeO6*;CiRW!S=gb$Hpj0V%LdSPT)+bZl>m`hG0JY};L9BFj^`dM z-Yv~KHDhIq<1$-l%M(@L1?WhSQ8DNBRY+&{Jq)IiS8oh0Jw6!}0o^Ix^Z~v|xX-Rg zM%R33RtknM+jz{CsPShQ5$HS(XgP#*y(Lts?U3!)E$3KuI}|AjiRI!X66-wM=E)Vx z*rVNpz;R|re+X1T?9G**wHqiRn4MFlFN;<#$!_SCj$K9RgkAYg>Y=nR$(^@eoYd(j z$Rv&xBCe(Z4j8^$1>Wee47B^Z%J7>n-IIyA}o^JKh@})%zIk zR}z~mv?ayEROfh$>oV?FE>p-Kj-jVZfhqw+LQ+l1t&UI7Ea~;yMtaSy>VTkM!X!Tkx|-)D=v~uxqrn3~hFHDj>&7+opVd^~s(KICUwr`M zNNsC5Z(G*%CFLFuFQm5mV6EHO;ilYr+sniPH|gd&Z(*hO7S+qyxDel1rDxJP^!;V9 zx*95((Ej79$*7F%_wkP+6vib)cp^4{_T@+x_{CU9`-9yOn}iwi254!V&zH0hJ8Rh7 zv;>;A$NdL+=Y8Sjg%2bm>f+^>ZH5%b(6!&aZY2aDfGrW%)*$PP$IET#PcOHJ)kB4r z(!5jUkL03L1bPx)v&E^>ga zkf)+|^H4n>q#Pr1$Q!sFF9;w3{O9F|nVNN62YdIcB&ra#G5lK!m$abwoD9_9PKrv^ zAjx!jt%BQ=ZF%&s)at%)pql|GA)mnsPVI;($DbWn{1SlcE5X_q|POzx{#6snK~b4 zOU!WNXM3+{Ip8;|O?w|-Oi=H9VFX({wV{8P=mEH#1#NVhruin*~4(m%WG`c zp650fmU}r5uJ8mfK*o(H9Zlh#X}7@GcK4j?7C7ffFk5HYr=BocvhB67voniDFO%XT zVCel6Qi||-)8IT0>)egOloRy0;)AP32b zzJRg+_>ZxZ*cx@ZiaHw@SS<79d`KacNh=*{B6obgky@ah1>N6PNTQb~+sQg=wEXVk z(7`ZDaQr)9{>N0)J^(y~;tTI1(C%B%qZ z-a~D^3(t4qv#Vd{cXJY6V}H#Q}|v4*L66q4&bv_1Y%Eu zaUbJ{zb`ubTL>%lDGi6R%qDrXwPbm11G>t^m1= zEa^?9p)4t5duz>%R^j5?XLiGd&}pIKno>Av`EAOxQ z?_If%dv4}qq<*kH*qi&nHgpti7h4`@S}F;jS3GFYwYuKQ5?p)UiuX2Qw`8K=+XVFM zOYN?ve!nn6Lr>6top+RX@1iv4vGc`pF_1IgIH?qqp|#<`j>zo4^LOmx!afDwRTNwU&c=@Yf0`-$K)v+7kqG+lle0UiJ&mN`2=jC zrGDr6n|!Od=am3yYoQU3n#B5~LQ=L-V#}b6ZJk;-PByxCN4=I$jwo*V;+>(gV_ibN(=!c+^=d>0D2G(0U; zP20&&6!He)S87(Z2&-m2<*#He0F8IO*0J=;-XuOC`aW&KU!bQ)jB+K^@Zx;cS-%N_ z2XiCeIyCGxNglE@T*kFCTGx2}Redkesj*l%JJ(78Om8Z902T#gbot=S-RK( zq^)B;5UTv|;lVcMj5~1tB5+rgQC{LOhH!ko?cgo5Z0E86fmTyG7|*eJkAGpYXk%%^ zc;WIpxF6!6dg6R+7Q3be&JEi|dG2$v zyI&kpD^dGX)TU~127R(X;&oz#nldTge4@LE|^-29Zsy( zEKaa!nsS=%2(SfzXn_XFemOZs#5{Yl>J-V^_y9E{4&%}WA>J3EWxZqqTjaZhFV`N8 z6(@hd-GG$!F8R}Ge513H`*U@YOnmILwkN)jw9AQfl5_S_8`0@<>hNY05}41_D2&ow zS;nBP)gyC^m?`T}f?!VJBK`IUcgp9L@EY(EoW3tFf0JXZ1UR`baWF)O(brd4?{t`L zTE~b#ZoX32-MzbZUs=0il;69;d|Hi|tH5nPmW+_)A4*(7j+Ba_~||p!i)0 zC;;t}4Cfb{yM|{05$S>u3{~f>ozmWc27|C!M@&St5|Buy3jnz}S6_0K7L&SljcFFu zufIHC+%C>ujlN=Y7s-9cZZR;TRYm-Za%;?ff?t$B<`kARZ|Mb(U-Cf2a0;DeQn;zc zS+4Yl&}QA2?}4e|7Ob0F{`_q2kTKM?Nc`#&&o3XRsR@yc!xVkgdT)? z{jJC%0AbSuFqrbJ-wVTXqUIr4QM;9fptY!juDNZKjZO7R6J}tg*yjM>f4~nR5y~Y$ zMb8NVwrof;{VgO#kN;<&wr3;>dq~E`O3TleBxmbGA5zgTW%MmAjD4?^9j2=0m?BO( zG67kica=f_S@WX3=em7(1K@{W7LZ4#*9aD zLj>jEE~r)b-;A-tjm3{wd4=pm7JF4pSf(s;jf4hylvvTYE*oHE5xmVQ_6Ld7597Yy@q znlP_hl{P7Nu6(N_*UfRyoio*735cds)~45^`)QQ;=Ygix;)qbkxMyuv(!8@-S=Y2{ zOJ?&9;FylVcoKvc%P8*$n#riN_UHR@f>8Teq2UZuksCQM14dF<9u@wB5DF0K|0|Vk zj&JyHDw~g{AWn_{kWd=Z>8~DI-!#_ea%sQbI9IIyO#?LT?ySHvQuUWjTM$x!)&KZH zO5|f)uK)t2>wU>~V7*vnFo`hR*sCeA8tXKdkYrv}%+ma*1tf7L_2c&0?ngD&BgQez z%*KG62>&G~S%_+PSqz>iLG%W{CZe*s?&EXrNZHU+c;K5XKBXTkPNbcdqvHoFO)B%8 zjLdK?O!NS<;y9>cbwQTM?g#w zE`h&}uge)e*I6&;m#&z}OBOpi?~anOSi}EK$SJ-8+@IpB5TW0nY(|89$bf^vx-M4r zI?`ejvlbG5DP%is;yqL41wRY{VoSX-B6@wzj|Zb}Q~84@ zY`XgN$*x&4r6P&2Huq_gvU8!GKC7NP1?dKIykT!o(C6lhq_IhUp@K%jSp7*k4aUQ2 zn-SwAsY_Vv8pl2#R4WrVcU|hAwj)WMmP8b&(qrj9pb=+*P$?b+)}9)+0bu!_g7qfk zlevoC1q!w@&HP)#YUA$F?5|qe2Xp!ST5}$z|FXh7Zy>bic@w+;w(k*klsrZpjId{r zx2}V6^zse~MI!j%m(quU(;c90jO}HY`hd+JMND(*rN6cDFR_i-qb$|KfMu>P{ZwD@ zInFrs`Zsgv=0`29_ot#jhWRf8;#$UiN*;XB3^02jTfOj#BfDa3Bav%0^ZoPFaT zY5o2Sz zMeH+{0`}tb45)Gd2TI-bkCSYgdEI1dgy?Y*x88ZGT2FIw4jVhRV)}gAWy-F-`;EGM z6ZBomT-0x=(-9ZiADJ)xqG1ZrpbV|AzaILRuUB{gU>3y(oEN{pJl7CS!I&DKoGB^% zB!xpdW|}K*eayxK3=jS8q)!|pOK?H3VM~n<>CpQfjz#VcGIt)$XQsrv6O4Z!q`N2v zPTuk@goi7DN`{XJBg;-fHB|PWeMd5CAdAugo7GR$H(j7OGm3`QIn#WNn1TS1TT%I) z$xfU0x(W8@5g9LvIR6#0M+_CsxjJxy+l`++!KLC}VqSJhI{yBkfT)l4lY*O%W5c=#+n9bo^L&y?nlld8vVTdR*6HYOHQBi$K#r*I_yNPq(ad z7iWEdIBTaDOf1;p=mV|kF}&v2dt<3jTz|;=nmSP? zeN!46>NSc`Dk^^hZf2W_{eMS9ndk^M6o&}nl_IPy^J0qUyAFRA!cbGbw5PM1QzTG1I5&ykgU0xz3_xq=h0v>%y zWW~Y{dri{Dz>0}dnVJ@65G2gd;VNM-$vg-%-tkiak$-sxd?Oi=)Ps7NlKtF^Desk0^FP6%HT? z1)in8fN$O6&L5}pFV1c%cTmjmJCwY3mEW(nWWq0%;PqUM?%!Re&Lq!e|M87LUE~?^ z`?dt-t}^Z4fOj-N1nAe$HQ{@;jm;sQeeqHg&@42lR%2tmOL>#R^;EePT?h&H(Bd9| zjs6E;WCx$f&M9~6XSK)i+Q+<)iO8MWAj6sE8+)x)z@?$G;rY7Y55q~jp-B@ci3Bl$I&yz{CKi!ubCplp z7#@)_F}wjII!>@?%$Lq!b|%O6J?oF0*Y(=Gs-At@*=%hL{#@3(I%Fo*NUGaU{HN+S z&Ae)|U0rV|wbK?)rqK$X6W!S&b`(kP<83n-=xZ-=0F`jL$lVrH+6U_8YO*=k{3SZO z`mC+*e|U$x@BTl_RETk({n9%tx2=`=`SSLG!6E z`SMxnkV4qwTVH}8K#QHwS1>JpEL%<|*WC1}>1aiPX+v8%Fl40LHSY&57V^axocy3n zIhcQ^Rqgb&^2g=%_lCKjG{zl@%BtA7J?Yh)81|M@IZMA=A(Wq&!&j8ovyHtaH`(pM^TsJ*ztW#IrGn5UC5 z#T+%At{N8_rFRCxSQzoT2oVeR3vK}hYAePQ5R-E2_EktKEjTSLH)S@Y9Sp1Rj zC|ymB%eqqq3nMoK?bn47b&Ov7Kcb*WKaDJqr*y@$F{E;!hU_(zZG1fH$x2QQGTwxw z8KuJ?xd}(}#y)>b{+Avp37T7|o_zg7zwabG_36&9x8^jlJ^5Q=xlg?Kq5^!^FzH*4 zBOFR+zF(=HZnft|$QWdl#?a&B*GP2zdDuYc1KKoB8BfvO;os?z%u6Naq^JCU-v!Y2 z`e&e)=LZt@3gw2f3T2I!_TWN?G_CMP*&>db`Y-2d8iDMdeF|^Kxf>uU-lL)y4 za2Nx5rvDU_=M&i-l^wj;W&bx>p~B`Y7}ZQ@$ms{BhzX%8MUThH2Zj~c8O_a4*WI;2 zqxs7%Y}#QU{=oq4%R%wR0>XoTxC+*)CpJlwIO?ecj1ec!Y}NS{M`tfPvOJ2&!&h{g zHmn^6D1S7uOmn?tkIqcqC|$|x6buWoPE{%nB{a2t@dpUJvqF24JKeJMAxiz7@jRxK zwW7wSPr8;^E1=4r%H*?Q%(3_LnyTwQTYQ{R_CUqt-386NT@Pu6pg#M`+Yfb>+2NTsqrSOr(4 zo4TnU$2?}Fg6vtIJ`Kg_tafUOx}I3HcdmWI$CUIKh0~tQtF}*hjgM#RH~a<^g&S=} zrtJ%leYo>8dS0*bht`Rr@zFfK?LE$|;DUCGsFSho1o0DwVb`{9#Scz{`ts|~Bp8mv zs9|saboL@BX5@EqRbX{1;5)8ajN6zhX(a=g|PwA<*k?v zK{!kT$CheUW-p`@Scw=BG~WXLfDp$Iy?CJDYn75zUOWkvD5jiakc-3X>3;J%bd!mk z$;@LEeli&zcQOSLFV4`ZryT)KmJ`-p&NNs%rx~zF=tp%5JlIXLfa2WsI-~P#lr>`4 zvtybTybv&0q?tHYx|6`zmAzSLgje=xKN(Id)5s&M<-AFA`J?V=Mx}Dvu7MBf9wd+d z*gMg1tYC7e&!Wio_`Fjpd^`$r)W3O+3P3Xgol%uT-34%ZakLTjE>(dFRzb+U z{+x{)(Vs<&*x^8m;h$;KE99#zV zGb+1X=^DFL{s}Xmcsbvp#MK8ITT#CchLc8i7&sUY9_Qo(u!Lr5A>LeLzV-4r+hnM3 zzM7k+LYM`0e4OUIGkeTZ$Di(PgArNimhm`vIA<_i;ucbAv^U&6SI})CoML^S*R8@j zD3*bF7<|5NSf*hq*1=lUKPnV?Ytx+#x?O+~LH znJJbt*O4D@okD@gT9~MFIpT-cT(P<*Neh#jVzMx#`oUBFl{F=u<#uQGi!s8WktjTa z;)Z3pbK5Rfim`9U$(6J3D(B6vzj1M<7Zkcx(5EyoAMa0&3wQs}Z8dC;={Kxn+UQut zazNJ({hLMI5JnE=Sk`1u;T#Bx#vmA0Wii%i{*a1XgQt?1$y`|I=OGaNt0At4l%(Q# z*IDoKSRtg_oafaJerjH7sIq(cn5eqxgbotX;ULQS!88^7dX#lvpm7;^WZJ5+Xlu+I&)2=N zUcZ?Z5~ZdGgH)`Z57x}ksalrrFxWNiOlOChPn8oLEDyG3idSW2nnrbe=X&}-0`?pS z&Djtu*3RN?=7XVvZlS5iA-e8DK;1uLWt>4~?lA|~ZOs{BYR4FiI`o50w5r!OkeqyBWoXi@sCczQ&|l ziT*vX-!jjQMq2?YCmQ2xeLc?Z0|o2?x!P5hfS_WK8!$3A_EO3*o@IY{pX2CkF){{M z9vuv8{zr-hfQxZ}i#FHtMBe&uXyT+~tpZ?Axs5lUVG?5fkwwFUEaIuE{mpKJf;i@2 zJn6j74$C9yM9zvFeN*9o9U%*f-W4n2r_H0WBhz8d#2yHBei+2)5^omGt9v0c#E+Rz zE?6-Q7P#$19nO*a%l#n>nE7jv}SesL|;@d!##=_8Nwjv>N3ae^LA96p#Z1b#v z=0H8vTSF@3(Lg}O^YElQsQ==Iyv}jFfXaleQ7XY@643;$1H`DfI&*`jkW*wBUl{+6 zp6`hvIFy^e%VQMXBiSbC|9b9k^PohoK)Q=YellMAf3YS2j*OJp<^v)J~mK|8dD-TYrF8q>9Y?vbY5(;n!>*h&e5uUtf?vPv&R(>XnHn6UU=E0N=2R*Mo=vq)*6^@G|SB z`bZ!!2Xt3vc*x2BAF&`&KM@t-)qfv1)MbvU3}$FIRqWA@zR#$QRl|i=V6MVk=W=Hx5rNxGVDg=fIdgiGoZ@!1gJ7m-xWmAcocr?b(hyCL|@DZpAm_z zp(RbgWLwjm!s<@MbLpK)F~8i&Z`TGDQr+n?9kLX+DV-fv;tdQ!-Gu)RGXE!J&7;># zpI$-vI3@dK@@ocT31`$^x5UT!j^aAoH-SnpSm%-$7u#)9w)0{3Q0W_t#s#U%v_H|D z2-zFTj>|rdG(qQ{r}2CaE*7{XVL5mW9v`BTD^KwK8892AX%FdZLcHd=UrKnGUml(@ zOf_OJnN9D?7*=X8TR*hQ$oPW0(K;bp4SS_bfeS2oAM+ib3F?ft#65RhZFxFn=B{eD|7N8hDjb#SajxlyMM9NdR9-;Z zxQms3oy2<^B?G^Zo4ej)B;sAAh}Vt049BcoW$5k2Cn?kwLX9BVaRCQcxsB7k)-DVt zg4FGJWjh>Lq*d0KUQ}9wZqZzZXZv# zGbCD8`xP_}**%~a^}BgN;dW8zoB}soS%(dE2(;p^W|n5vf*BG?QvDv2_y~E1k+G;W z1s?R4EVA3Lf-n1mz%z3_;jGYw6hTX}Sdf;JxW}!1=0|NuiOB&0Z8ajZrF#9nv*Xi6 zcB?D+P`RmoqEppaUT?48W&xNfft%4r%Hw1<<`?z-{Y`sGK0?* z$}tW~yK)OMNWU|`+F+3`GARKuEq)(#g6M}=Bm1K~^OaXmeY)*bbB2Y!#?r*t8ASVX zLC_C2KQz849sMQhBT_3H|h#_w|Pz5UrDtw_PbbWwoI$v2qT0ZWGjCHeU zJl`Fj?n#((8U`LoF9gpT;!K)Ohisu&3`n)DIq_SSrGx8^mhu>?@1VuOa=7l$n9YzV zCij~c9m-Mq$l8}@LAwZ$J%zQC1zgDJ^TSr(icgH5=d(|Uj`qjd^+r_USxrk3y@0%4 zacP*-skYicQ&aP_vy%9K3A=Z^@0If;6nOtOeiv&YhJ@Iv=4WlbN$kPr=EVxAPy`%v zz`k#Ac}NP(z!*2&$2F~U{DZ#GyKyfW`P6n9)a{MI72A&aFtG?;TQHN6fAghXBZ_DB z+5%@~>@p?BbXCFh3iIA!M+k|;I32(LewdI6f$3a<>4ee$%3bfoDOdW4x|Krd34p-0 z>x!dUQ#w~6ZjQ5OIS)BTbd7)}{d=xm$w}t5HWiQMJ?H+woFV|>X?e%;S0JJmcz);H z3ZFzYfjT|S21Td|_LwWu8u(pZW9RYGk`q>MyOC`}=R__`6x3 z{99LPPH{&FIxik$Z|Nty553~Dl}Lq6xDUbQS4J?bD(T<# z@Y;ku??#mn=}dJf9Hm;^D6@XpOR(z6lwVX`K3A-8zcnI7*urrejbrSaerh?m+vRex-Lj`f%S5{|ITiH! z)H&+o%NB0f@k5|j$=z{MGW-W3R@>uJs;K%Lt~7Fc)S4yV>6l(SZwQ_8ElW>(XIPwE zRgP|K=53G-lKwW5xa)4@30B;huVbmoB(+~)1_luE7*Fsv-1rOiy*AEs$n&IYc0$Fs zkrj1*f!e<#;Xj<`Sa@TJKNGRwaAA8H|Cnc~TLm`g0VjJvNM*`WSWwsT$ZlO|I_LZI z-+8et2nVf3KlJBXg+q|!V~mHoN^|B*i~wgdZ%BLpvje7@;re)SE6d6T(weW3yW6jB zrJ~)BWOy)Az6HnP`fJ!?&^Dr4)G?~p+NI0FjBWHq10(M2CE?tcHdiKR2>+YNkzd!= z5fZDJOP1W~;*QfE@|#-0#TWW~A5*pL5KP#;;3PZJuVt4ByAP8I#fYHm`n&*o>ZcO612dm5%(usvsd#8FN`8 zYGq9Yox?UQFk*iQss07s@I&H9nd$t6h(z75{y*)24ro8;azEe`O4H-I18yAnp%)FE z?%x6ryd6VQo#Fg^Sk4u@2CdoG^!Lga&KTm0LEpI4!j{A}lq}PR`BDab%ILnn z(z*Qd5d#_wI^hYcb!gZa^Y4dTc}~r4T34UZx<)F@fq1T4)cd~6MEwS}y3z@V}w-j#A4y~sz?0Ugg5WfxjUg$P;#tk`W9{WaG=wi$D z*H24{^NUOE0%@R!yKZ0G=6LqxP^~A4`qS)Qtk$=(>s${`{z>86DM}*YMQzm*L;IS8 z8GRtTTYvh(Qx1gNNS~m2&CLz6(Y2W9r@&B-$mMEJx)>V?u7Nwhy)`J*!%+9UHUBCY z-Gjx4@Q%tZnZOHte+}XLk@7Ojh$nh89i&|*og`GT@ufFDs)TQH9&YV%_D0M75-;A= zgW}qUD~bA~Q#+$@Fd172v`qg#Qc-E0L9qXY@pEZn?ohhPXHsn!J2~2j?7GyKAfJ9% z4(h_k&pW-$x-t(+QUi&&Zufi>|G=?cA3IhkOsj1MdL zvA)==1Hs5Wxi9;QWO$MAgqNlUaMS`T9)3tz%Zuz;Opti$^TD_qZA>ofd&Sz{FWKo; zEpUj8cy^&i_MZnEZ+;%^my6{{@>cDJp;Qp9iWM+n!nbM_jEPJeF({iKgH+P*4WIT0 zmM+9@7T0_`KR36Q>1&@5kHa&P0|qf(bG0SSxXf;cJ>n8;f_habZ8G=9MSX8FgkSBf z*~kZe?l(2sOcc8M#-oHNyWS4NVFz|8IiDAXZJm-OmAJOu@cS)p8!x(hqCdOqcLT!E z9jC{J@|ELqH#B++^%MheDSzTwn{#eh`-{PB-PVp( zI)nQh>F2`y&Ff*l4!<9}d!H9TrbfyUbBcKnk(Tk-@>@RV;tipSO=#kxH^mUW=IPZbGrIQsI?4#-{f%$Kw^kXTRO4pF~KqV?3Dp&61~Hx$#{?ZQIyeO9`{E%NcT?3SABBu zu;*K8CEs9>>)dt|2v0=ijc~^Y0Hal5eZQoEv6l$>u*sYSpKM{ju$Z8thQZoY=aw5s z-R~U-1P;`4o8|ha&ytQ-2*5q{JxN%fN_!nidL7jZ2=aoMEFOn^U;r*|iOshrqb!sD zHjM6n9P=zzo39)hpCDoXM$oZdI+M?0zD52)$-7fvD!IH`d;Hc%#f}IW!OKa-h+|$Z z@u_aT_R_GHR}(YH+)EmG4S7#$od>z_gmfw06KamBux5Lu(Q; zo3s*ZP`vFD(Vw=}MkfU<5mVPxFzYt;hBBsBZoOD26(TqhPq#bDcgRQm^?2zUwye%* zP8i!#3$bu1}eV*MBNGpM>k`=u%>dmB$TZ5hqad6op52a`mdyT;qH z6#Q1+2*_D(IEtS^iGg!h5-a~+Yq16HxT-rA=4ks_o-qBM5bbj>JW$XeP!dSQUwAog z;Czt06L9LR@AIJ;`nq$&f>P`0~w}dKKex)%33u9qwT9{j2+sLV_ za}$uX^1lAMq5o{|&E>J!E6!y5ixahR{*DZX2B=1^=qCwXY=<{PYe}1i08LbyGRbxm z-ryR|xs{_uY67+P$Ab(HwP$*;5A+DeL@Z-(1Gi4Ja|?Yn*78s;!MJ^6OfDBLmIb+= z;vqUmd{kpe541OAPh9r}S(oMTZdYDsmu?$v`efgH8_;yM#7!Z81}rYV8J{tSwsvA& zqQ-0PRXkOn$m8nfhs@TVU0iPK{YdUd{-I?=Wm5A%LhYKlZn*Y(KJXH-<~RCOKv(O~ zFqVzC((N#Il%u73yPmnIuxk>lHTPsvKc0yBl7`Ridi_VygXc+dp zpr2Mmokq&GdnPqWa$y-+Hv1xyn4=@&zEuHx+c2NP-gqQk)m!pTCD$1Tx4qHYh>oQT z$8NrMUL)T35f#W$sYEW=kGjyBF0~@os%hx#(pg?v(`>s0qDr zA>{_W%*;O(dm33x7G1@q6sOBA!&MT>vF3$+M=>~L)W74d6n3uMp=zd z>hmnFFS?N#8_-Cg$ljB69m)=h;Z%&>3zg5m&~)^_hQI)jhXJ`6T3S|#9>lke3&=A0 zZ>cEF4aIGspk97AAlsp#)3DMvh{-JDR5tWWXMB`PPAGgD%Uw`7`j;S6=!OkT)~RLG zv7}oR?BC4LUq#xiG~u&Y;gy>4hZ0qWwJO`8(-v`hZ*YDG^r_Dx4nT{n={JeZBV)#F zmTajYO&#kwF_*(#$9ocqPW(bJ^5J$p!wCe;He-)|ZyA;r&_O!h-hro%@}w%Lv*exg zbymf8TFdAox!Zv;t>xD=k5Km2pS-jFe{{WfJk|gEKi*c!E{ZsksH`M=77;>{Y_gJZ z?9DkRDI=?rky#qf4iN>IiAn!ab5T8e%-I@ z@(|p8A*=O8UkP#f3;n~hq?@+%ZEgVSLL+vhQEz|vuT|b@*UTY{?&Z# z)?Ka}Z5rNu17lB{d|L-<@EiRH!;h= zQZ1UwyV_9CBH2%8&KO>Y-q!W}@>TM*Xw5X~V=!)JU|;Qf;cM<>D1Nxav(3VF`?(=& zS*a>DbH%Q3iIEE28Mp@e+Dwu~E6CCqfrjTUN4bUn*s(}@7aun(^pV4CoRc#kL3ZUt zp|cxoMD(kL{hMOX&6b87io|?Cwo&fGbWzAaQ_Ic6Y}N#lvuqQVz;9#WqT5EKl<4oD zI3>*AcavHHg3ra4?>o&D<FyCeSH{4bM145Ly z2kHhrJk!>j%BVI5=4T}eCIK}AbrefOEJ=l_&hy!Zvz=xJx@#~nxG+|OM3x)6%E>36 z8cSbQvKxHq;u9l4TlA!U;cNU^-OKku*MXm?f4B-eS$fWTgCXsgxd$hku6=8yp;1Oq z+KifNf-;rdu#g-#KAci4vpPPW_f*MY14djJ%CnXCVbkF~7LHhXg=)(z`qliz{lg7^ zLFjY$+rqjLeK%8nolxu?{8lAjmH)UOO+uZRTXMAhjXmTGx-wx?uID_OT96d7D%%Ae zU(>+I`zHmLo$B_&=$31g)z7;_MmH!=chl#!chh+T_zD+|M+exqeO&0pMs!6LQ10jt z|AHc3x?`IC=aOvFOnmzLEj`Xa&aOXoW~gMZ0P4i*cRR2HNc-;Is%13E}DZlVTq~y-QGg1O5{reHS@B@&uUoBb`zks|-mrFZw{Vo0|M& zGQ6}DI3zk7EA}X6&8Dmz&6nxIm7eA|z*-}8+0Pu*5uQ`ByCHh}c?@bGvr@DAxH6aA zn)92nBk_aVi)R{dy0G@urh+e+p6}H2h>ARG+dgtZst2U^hI{C*_q;BA%#r?cKHl2< z;2He;8tMj5mI@bJJLl}HlGm5pw6O}z8vFe}opT99Dd^0nKzQ}~WHIO3*V2&LODZl= z$|g}tdsvt`PseW8!o7p~>yAA&sv4YnvOui99zA>Mg1g;#UR>w))OtyIcGHeJS`WQf z92gTC^cV@ZnEHADBissHoaxieecN~Xgo*E3$1;GeZa9DUQ`jmD-pAlNm&Bb4$wboWOSbI7 zdXn8*#xif;6wZ-vjS$(j+v~|`w%Oo~lU2Rr+)=% zL4>?#A=h-dA54Mg@T#w-v9Q?N^r{*?uOn$a=XVwSMT0H@qZd zqyS@+`pzh@*#sNYo`?B)ClKV2kq$1=U)J*Za5Gn4osK6X57(_zpq{c)re00vd5REJmmY?DBb*p*xh_o$!AvIe?x zo_cF#(;pTt@&xWkULv$4m8WR-D|hm*k#a6tjf(rMkI!bjUMD$12;ULQuL>|_eKymK zr+`8fm&j*AZZ$FTiQxi()Dl*Cgo@1SPKZtEy9bQ&+bCMImYG(oJf1iMzgeif*IsZN zz<`^MVS1j_nQ8=VIj#87h1djc_!s7 z4?LfrctquzP5;%&XphOMNRai}bJYSDPTx>%$OfC5#ZY8`a=N%hS@OEoy5&vi4cPks zg=vSx+e-ZP#FxvkM-Mt%G37J$_3`Dw+#71m8qfOEXx%`|o0h2QHsnu%;*(b@K7h>V z++e#mG2-o7)Y^~@$2gq?I++!(eR$~v1v|V2EYBBkZa%zYaqeX#>AS1CSvIim!^K>D zPVKTow6n`*#`yXZE-uy2Wi=`+iin%({KEsX1!WB!r?xxUrFGnLPCSr)n7|Hl&ZmF# zXG#S~#m*j!lzeUY`)bN9k>xZe6JBBF*Vb8Oo#57|cFe@jtdXj{$4tIQMuX2Gy-g9A z#W2e^)&0#qSx##*WlAa+8@CDZb@23<6dStYm8m)pHCtcecQ8)Q2KC!Z5p8DQU0uJB z5nZ4(ABcHxp801g{e?btSm~46f_tV-e;GpgA|>t5jCB8Ug49C-%mB2YRm-0q;KzOU;FdkjOd@> z%SfgjeS7eX(dC0?r!MQAOamdNP7B+Ez#qX}?#AbPL-n`G<`Qp1tF7)p6AK^Fl)Y{~ z-jEwe+HM?8h%gjhJ43O%W^>mM-zN4$BNHaZRZ^3`ITyqgA*`$fustq(`kZ2gcUYXa zekm`lo6(KKfvGzmqQq=A9FthGx_SupwL=z`W=ZPhzh^22J{9G# zy`DB{sN@L|{h08=VIuFcA9uXi?#5v!scF+=T4nObzY9)41Uby1145dEfhmP!*J@JJ zO$9qk@p_0r%;?=6vNN`8@34H3d%42zVW&Fug!|r3av2J(3-|H4`zua0th)gOu?Gd> z5*oTq3w)W55)Mn4Ysz}#+<`&Z(mWUV0_T_53y1Lt5G8+>V=KGW*&4Y<_z|_%J9=R} z^^&^uG7s((5M{(Q<03Uh#390#lH=EiTKh2}YN|JeGPw&&;@CNVd&#gVXE+VH4BI)m zVUDT{jw@Ig$2dbCs>Y9KO%J4GNAM0X=c?zt`&(84QQ=Kd(oxXK=QB)p7dGB_u{Qzz zA|QUW;OKwyJv)|!DjD=y6>?Wd8|LWIIae^a?7z)u%hc~_1%`~IZBB%S5~)% z=__Q`KrbBx~`7B{8y3TXnK>BSgNK>F#Ukh&w8u*RJsVpjQ% zT_nZX$Y-Zm{j zromlm@H?~c9JiFYC}Qo3kgk9YgFlfW!1>qe)0&?j($S~%xPMAiy39TS6a)eyKWV?| zQ0YdI#xk1oxX$)H1PXAO9J$Xde0q;~ogF*fQ0tX&Au-_^#|A%Gr`#;+xej`F zKJ%&tb87YcQ??~3Q@;zc&+uT%mNlhbo+knHv!SM{FVe92Nt8er_%D*Tpmsjiu8fUn z;mkq9G@{jqoC|P8Inxw12+edIWtzjD54#tI+ZO0rhir6%}!_MMT>-Ibo0LX0N6%^op2q_M6un+;%Ty zh%{C{N7X5A*cEpiEq`NftsCa_>)FwRwWPV_lqsIFi&h>O@%?PmXd~^MNMjgT(p0n_ zqr}A+3~E#^cxK5V^JPBUBCR&+gW&tKzPo%Z^pt(sDHld-xDao5;rI$O75gJ!NHiA_ z*s3P{`N!Ww51!3ldA9^e2@=@M!noWmN3ARK{d}D5L440`uYK_d;W;)p%jut#zpmAR ztA9|$z9Bsta_>)!_2&fwO4?B@$!=_AL#%~cvIm;R#JYucVd1wA67Ng_OB&FJqO!0! z@)We!3HdGIa;3vS`8^xtj2MD6QS?)MZX{Mh>?@bF>-o-$`>WRj)^kFtXL5F17Z}UF z+?6y`kLGmd$RJaZ*AJ_eEv*c}b?YN#>A(QMko2! zD7Ven!VW9D_-P*#Ffcw2xa3cykNI3fSvlQ_(^_4gweR848(1F zC^v*~?txDr9%2}lZ0ZKEqzhCJp9Qok;t}#A0*nalSj3?G$Y;V4)Iv$5K zz2V)P8ok?2kNr{L1{3CWVwZKss4>Y8OUh<}9qnR3NV?cZGqklJ!L%sRs+NUy7; zl7~6u5D9TD>!3q$;{$SLV0UO6oFejRewVVMpyXdq?oU~e`+nvh^AIP&=HpWM&q z4BpQQ;#k!AicFa`t54Rfb^0F#TP!yM@wnI-Qvq(GBj|mTbu({^){xF<99K;oBA&r# zt4vYG>dCMT(AcjwnOujgw{%kFW8YHTU7P|&!@zP%793|7tbny=CEfC%U`Oe~>7XPL z`e(&JFj~y+_B4fc$!n+EkUASO&#X-Ai^}buUK{^XRD|4D6Q&fu)VUj{f{A#p7DdydnWJ=)@xvEX=%3d(kxNmvC$!H_Hppy zhw7*qkDc?Dfwo6qCvJ$XU+qhg8vGXQ=6k(icJoo#5M<(7Hda6AP5pX)@HU#c&Y?NV z*Kf{7yk^FQd&0g!XH(Qsv%v}mx?+4H>WqR7O{<<#qiX(@cyff@5_@Uc* z{l-1bz$v}EbN5}+LtAcM{sQ!(2araYpMTU>I317v#SHoYemxVOuVVT6$A|FP4x#N3 z`@QrFU!UDF2^;0pyW~{WZqNLuANj6)`uwNRG;O9!A~M2bck>M|&~epuWIgZkdG#AJVKmT|k?zX}KjrvMFSAlP=+ z1UCyEeuZ(rNlcKYAu*4caxx>91w+&Qdaeuwynl0++@(i0>aX2;Dpaxt^uwT_8xXxS zosn!ub!7v^c6E#Iwp@g?*bX#ZD`6r(ITWBK;pBnNT;WREQWR*Zn5N`51GK#t)vUbr z{4v`^-m(T#;KJ~q-yR(ATX`VkxG+=^_n|Z9Yu~qf4hENAu#*?>NS=p%0sj%B*yaA} zu=>oy_gSGVO`~_`U^R35cJ52%&?Zr4v-A0BNZi`qBw}az7?(5qZE6IFF7{$PFq!Pu z6S=1`1(fgRQ=PwdHp3V=-Z7%5!WZjJ^MDA|jLGAm>*;la@TV36Xs=;vOhA_Qv==q7 z?)6e}@J6H?5Sk)#BZ&ojzi)PN*PE3`l|oiS2fA~uDA&hTc84lr84*3B`)Y-BAlQ9C z6YG2^lrZ-k(_g4sJ$wUKoOEB>aBw^iP;+*5Hki*a&j&^$o@MDuJFhb?T?j zs> ziS!ze`i`f%gkkMjt!naZg7}eyEPH|5n?@I`@Lga~q*dq2Kaj zZocLO4ke9g%K(d8&(O0{@p~G!YqcXXMW8u>Z_;-Yln&!5Lzhzs#sa%&?I3uWdaLw&Dqq`a)6+9#* z4vX{l9$sG+Slgf%cTyE7I}Q7*jM&;oWVOO82++xVVNtf`jZZ!0`hJrat zz_!*mjVauNO+k*mZMe#9uDX8!HJYea_;+Gdx41w;^Ik-LrT2Tct0#X4msJo8G_L3V z<_%yi_60WC)D5?>`qO z+<$q;WZbS1$@s}LY_=2c{esjHm#Se|40JveI^fbPZU3ha8jvWSJh4)sR+y#RaGU(F zoHcidwY*%nQA@x#-E(hNDogmOEGs<-PFgdv;+Omsfx|B4 zc>>8;FF-AzF9w3^GB#`b!cI19ES@Al;^3DtJi!Z>!h2ikJN#UVogLr0Dr z^Sa7H-=>@T0uRb%g$zkgR8x{Q)y`W4J8`|B+u8HIbC8jb7nr2HDaZj^v&5xe)-VS} z&wzppv911jwxz8fjqfktc!BxV7GB>xFTAp8&wjeNOsmFyP*}I0xK6TKdV`#+(NrombG?+dQ(4nN4;BfC z_jsmkyYevpp`=O}MfUMbj!A{UZSdr|Dc9M;yflwisBg=S69Dw<9Kiz>7!lT2fo_OT z-WK^45V0`3FUZ*gwOJB@%khQomlRp&r!fLH5M_dN>a90ev0Uzkl1oUNh20AUF0t&{B9pn#$J<&T{&lKRR-*+{roagT;YBKc$bQrti zq}D=UQe5MU4=owu-OsL@fy)yQwL(KVUV@+G!1ZLp?yUe!!rj}!BXd$^n-6yxNiBQ*^ zq`*OmgKPdazUoUqYLJ@Tx_V}hUUa-QEn`x_yCCX9Sfb zTRoHtIv*!qE(^cobRPUfAGnk+QxU$_W?ql6lLh#99UKMd^xGM2oc_-wxqm|FAMxAvi_<}|cD8_C3(qy3xS8CHAn?0+Oj62&_IofAaH2~i<|Y(*(r44uXW!nh zlbyNcJ5Zujl8CyAxfLb!NY3|#5J!5z>!MtX(&J*ji}y9PgHwUQy2c7awH~$=y!^xu zrt4~jl@7uJZLba6PBEZuGHiTD{vcnJaw;=`5{iJLG2)*FEZ5h2y zC)&2!_1WyP@!BGTt}a%qBlF(hdcU8DdGOJO&6p#)qo-oCVo4u)%1-Q+pqQzT5?pgL zAo%|Crd#UY93`*!fUG3Fdzk+W|BrH+zaN}b9rWu_P|1lCgGK+kt@w`nUiR6dsGctm zQ?KiEp2@m@7UiIN^;J==@AY$b-BRr#O+^AYeXeaXg7%cn$MhD)jz%=^X{rR%v70kX z#0<(zy|g`f3XbU9v&|VDWrUm7_^z~6TK$mpwPV{h02(NO;n_pgIvbUk^^fQ1g=wTE z=N*iORXD0MD8(0S+I>vm{Tj&YrmRb4VVS42tam25kCdi<^DGv)wX!q)g5DTov%#cFW4ZLYDI# zmW^p4>eZ}HvTfJAm|E4VcKg)~u3o96=?o>n? zd#%*Yop-VGSr;cgNa`q6k-Qn83=G)5pZs?>77mbCMl35BrVPA}j6VT0(*KwmM&`_( zmb{l!=|qzA+^TBGkH-ay6Uf~poWsVirSeukazsk0si zu=nPv6Z0r&9z6i7u$1Sj!*?@-*%-M8#D{~WBcV+9_h-Od6Lw98s$5U`aGk%PY{5XteTy=cr5xU}Gr10Hx|N6Vkl3sTxR=>-R6C~9_(;5=d*B#HOMfT$ zC;fq8pm)``acla92^*s+APqOWWHCizPQEjW#O8D`x7c{u#S`{#T(!F`<#Vyb z{h?IQS@tKN_hzjtO2vdui$1Umniz)w$z#iSX%wgB5PmwCy8^Yd1B{5==(^IjWLSNI~%9t$+9_MxGnSmTsvcZNy@((km2+Q!%ZacuI-LxhkE&ERMlse*KCeDQb-@) z1d2maM0LVG?JZ>on9g}vtuE-bcI}1my)~1u&a8}c0b@_Hk%4xhc756#)ZmfsTFk^* zmY6O)?narakGRE)^M+rKhL;lv_dL{dYJIc_(K6@%ZcqIVI?cbLY`}9<$vVY``R!v7 zZNF!fs}-%+JG|X>Q!nf6p1G=_<)$?5c-8QQ1@qj5f1vbf(q%`Kevo_4FQN78?8>a+ ziQ-K$ESK&>0&TZsO)hhF38Knnte&QWROPoxv1@%^IpV@|0!78;`zvan!x*wG=Bg0& z{#^}O(zB$8Vdp3kJ_KzalXkd)i39FJV`fvWL5Z-;1} z;&Nd7?Vdjtkjul`c{3s6luCZIrc=$*4er$kkLlJj4RjrF&;Gj zC@C8rx*+EBNeuZ-P1r>tAdqHepLihKVlJZlx#uQO9(Y4|P#;Jg#iPmC%6adnKT?y` z8hntyugJSpSZ|)c_50Df79YD*y8l66+)_Fd;v>+2>Jut$#!Atm&xHN-EyZ=ZkX=!NnrMyq%geb?6BRh z1R^WUMwrkHfhBnF&FcGvvzp!lomSD55k-p;FlnxB-WcZ1J zlQ8uO3WW9oUw=UR`6$u2&|vZr`dFBRXuVFU>Zp^Dh#=t=zK=<@2&^MubLGkzF`E8l z>dX=`)5Ey-LC0AybJsfjjh0slg~!glJb9LV!Q5w~tvWV6F77OAWnpuJ0&z2S2cV!# zx~)kV-i^Z9w&AxO=*10eT+@$z20)4LV-h?VyWlYB+>1NWaNPM|h~Ic7aBjFdGQQXS zl}ULcaldN^;P?1DthqAr;&j*#Dg5l5Wq%O6Tg=I3K)T77mb_2gEy&r+vB^Hj?f$9a zQqz6^yXKU?{ML5bVj$b?>e5l2Ne&47byE=hM;0$MRZ&{mH z8s2zZd59GJS&?!-EsMntD1iRea{G*`&Z~7?tEHu{{@Zn}sKw$pO&^D{!V9~9{g8gk zHO802Z8zf0-d(K}IcGG~8K~aM>pGr=)Z;xaeZvNn_w^!_b~>VZVD(<_57`kxNXtwb zg4=ZSRWiJ3PUGh<=hsr5Ms*j$77R*%bsB#+w-0n1Z2VMtN4^!A`-;Ka{p+x@0LyRK zbA20^4;Hj~q+j=Lzuay~1f}{Wm zuJwl&c+vcmd{27T{8D2MF17@@PeLM6&`$9%*iRexv{!F3k58NY$xj~Eh`djH1buU^ z$bo}&J3iS^p;^}vK2HLU*4(()oNKtcxp^VUcpH50HrEd3-O;XKvihCkXf%DslRc`8U<+H1 zbpCqcHlJg#Fx-5@fbPGu*A#?MignF26XcgqY) z>km1Rl=K{Tjl4Xy!VO|3Z?1)Zf#Qr43imXD669t}(z7g;2fDhIZ94>c;0-{>(r&)oYOE)^#qn$(3ZIBu!Bi$1cGd%HV#?j0buOZrl8oFoi12($dMZXS zxL*)Okr+>1@EZ-H*6H(X`HJU6(x^&>S?`HKTWotrE2cqhkGjU~QGa`f} zGr_g3XO;%{#Z9;+s5fma-xV!;YOMeGF30vlz3y=pa3 zUwgHJm-__ok)x*zuf9_#G#B(t{_g2WEpwK1yljLoQ6!(+_9)CeNoUnoxun<`4!1e$ z<@3r+!5;&5?{`$X9_5w!(!e%N6Bf-+aqYQApc+3E7o1A+>U2{`O5#PV zM=94WwQ~OP<5Z3uW0s*mR&8be_+16vDeGPef;#{X)lie2ZumTM>A|@Hm;8r z8;wGd`|b4tH@scYzKUFW^gC;?Cv9TUp+hN?+SNlT#Eq&h4Tu@C$lFx5^zPpW96hZv zZ+xPda##4MgyZOAgHOA`b^3EhV)u`}I7l zea8+Mc-;!Ni?2Vf$P`f8cw|SjZJ0Jwq36l0O(6f!Q-TqwAd<=b^Q#%K)QQse0IzVhWx7AR>K|bFE;R6kfAeuhtV;$Iod4ojT^$G_a&S@V5KE1CrcSdJ?y8-e>UcR*Rlo7>Q55{?yE@%tJC06X28hSe6Lm|M??^R; zr5EJn6etZ##>Joy3a#Yh>`(srX57!5_~3V1UVC2ymO`~h&yLqy{fdE*g=GlD)(?2k zYDYzjsMW<}qHG**{qS3qOEeA%7lb4`Q_?^8raFby{U(?^j%qJ}uS7}i@;pYbjdtp# zcobG?$KT*Kni6ZDGQQL+ZPPs`zEu(3tW2rLy2F&O)80}wpg*j5X4mwZC|ka6q+j|= zA}DFkCMUvnCiUPhwT1iOpc%2V8pcH1fDOhR{9!_X1splH`k;9~LVJCv@?K-B#=ZO*Q*VRfvEm+>uF--v0uX#vCeL23l3V64bZsd%G`(gokwxlb1MEbUP<@v}kN!k z;`~FvNOtdPxS#7qnxqu)u?7U5uFVL7M)*zc#2D}N8Sk&gSskP-Xd{TJ(`{i)q|bQJ zlGP@K=mr_~EAWY{S^?Ow95jotgc0GUO3v<1O?ZNtr6>-5$aSGwdPavHC# z2||B{pTm+e;s(~=yZsLA@n@R71r1Fg3j<%8K0w^Q%Q)0MU=>7DmJc2Yry5FEgLYJY zJ0sSV84=qE7*YiGGhEs6U1$jT@B+VJky*Mc+|9-F6j?Bi%w@MSpHnoH9vHK*J~ToO z0rc^M#aZ=mW53j7o8r9nLV-N59ls=URyl1#ChKE`c;|%m!w1s_#TBeFfBOSwmIt%4 z(-S*%S^AG`hjvvYmZEnFChifp-`Hc zx|D8S@^K`-a}s*<#S$cKvJf%#dF4{c`c+CAx?vP_LWNem+d^g?j%BPRG=3m}H*%JMU@5r$< zTm07aOH4?t_)pLGhuLnNeqeRbW7O1%Px^Yhsu`CtF)2vvmgb@pzf=c8$N7jN|Ht{Q z7MnTsEw?iM@!7u|s482n6kQn{txW#0MYi&{Zm;mI)q)3TGE#r&q1{KLEXhL)bg)GP zqvvR5mlE-P+bVQYW5YYXfaly$s4-tYjT0*mr?dh4XEx*FcF4KgT;f-Pm@sf$Sc5*Eg`&~xD#96E}hURAm-MicPO%pO) zr@q-LDO>{aK0VoBZr##hKdB#G`w^9PP2}0*G^Kb25pJ$`Z!YOvVmFY>+}Efcs3xh8 z?YK&@YMlDh%atAt*;4U7UM3n@#dHIO=iaTSXl?#>KHEDxJmIuqBRp!l5_IeBLfPoAijgHR7*lCLXx~d5HWUxlUzCQV{W+Sh4*p(<6Enpu=Z8OIb4~Asmwot zEyRGel(H}+=Zc`jF7yMZRr*~J;m)Ph73*2}{6@3|rdgoCkXb)GN6L`>Mhb3t+m61e zwC}Uhu<6!&p8`#UOP+YxVTk?HSd6uJ(Vwnal624khQlR#r!4lVQe!c>C$UMBqo3>L zYLFj_DxcfhO{3yFM^?<7Mmb`dWBF#(p%`13&MjjLQn|Qd)UW zg??mwmRFXYQ(c7|x?8wPoi1UVJ7`i~;a}!Wy!_)sW)P;%fzZ1BdBEAquOaB@l7TXn z=Dm?iRTnmD$Efl+k;ky`X$lrb+s85>s9)zeG4;;G=Qlj+4pvC#G7s=dHvYL9h$aRv zI@Hq3G_t}rWY&j3h$DXfAsSD^eMn-UEplb9jm03Sc!*3M8Ehe?8Iu% z8#A463%S~W*ecJmNbs<`K^MpLRI-O@`X1P#Y1woVe?IAjPQTPh%rN23Sl;V}yNIHf3b3I(gqI87QZW{ysiP*x z@YB1A3qUY&^7~x0?~Pq`X3nWPKbkiiXGi%@r8 z7CQHjbd_j}e?uhsY-~6stc(+Wq;$#$?TO=tr2N*c-i}HVmro0@{Tl~EbdTj^1UOl* z20hoYCe6PPX4F)6LFf2e3~xM!#l$<`7@JIrt{E}?z+v_8hk)Sus<}!b;u_sI=x@Oc zj_pdi;>|0`ll7;}iU24V*v2(06Wn41MY$vWAv9$grmYLwPFL#*U4u2g@b5&>pwiS$ zJ)&7#X253FG$D=Arta0xt{J~MiN<*Z!rgz2NztK}65EirY{7&7y`5U7)auWm0eGbX z1a)y?jfR;J#RfG^$uni{cz`%Zp9w0<^MsLNXRK>yLyc?ZJXW`uXx&KpPg9tn-Yqc% zS)$194s^7@N;-JZNU^O*kr09h!2`*@641lDS9v;Z7|0w9K;}p%OTc@fXCLdtolgkf zt-9ePxX{~21_GoqRJOW))dswrmZH#G6lQVKv1nMEsdZX@j4skZ?+1TkkicVHn(;qZ z`95zzas6-v6XWP>iIQ^T^E~E@zk$btO9(SagG?TGjj zbyo0|s}C8`y;|G(1xnDXu8)dUAC6i1peM80@F_N8q!nnDf1k+Q5$ZghqPr)G?Js-| zIFET#mLH^kI2u75E%BKZD%!b+kb*BwnL1CnDB-kA6qOtw zI>W0hg*c@C#~xA+?E&YONj!)xpd<>KYy#To%!vaL$}+j31i?(~ z!zQ}2C9d8juCk>LpM%{Uq~bE@ob=r4w-4m4#qFt9>cKE#YJz8bE1Z!=0735!#@#>s zue9bb(v|TW`5PB~+CV0{^?rLRnYl>BJb4G-nH>6o%Ke`HI&39~o7;xcFQZ>LBF$+I zzf;5h9=R?OQ~StX$H=hU`3moM``IAT%enyrt*68Pbn-50%^>u|1Gf)1@>9ag6}xTl z=HlaCslTU`OQwRWWJ*{s2OH;KFb{sR_u2Hgwub@s{9?N_PN?W0;@xx(OVi`V(HD4U z%Zar$4Nd8>NG4-VhOt?RL?r{Wh7nq#nJW(lhM20n{9o{beEkwlA5=poPGK)%>Ngnl ztrV*IY)ga~a@W3qv4ytXdA8k-UHwubM9=n&F%we*(CF|1KR*mBgIn~SiOoeMiI9GY zk)~Syh2AQkLsbeKe7RR24hY|M90WeR%>ceXWx;u%Uf2~k2gT)B zQFJh$y5`6mFb~3KAgKsGlPec-tq{Y*1nM3@QTOE4U@!JM(5H5`P!fnG=Wyw!gFe?~ z=gu~Jrod)OqZ#sU;auRvmKc2DljzDBEIBu9fJg$Zq0sZGhz+{%Oxp6CyLKi)9CW)8 z8>BQFvpiL&w4sgg_1{g!`qE`Deg1e*QJQcOzCA@7-s(l{Bc@G(5adB^6oV1B>XCB` zi}0liWmo^M8km{1u5yMv6gB3DfqQ7fCmzBVqCtnYByw!kpILi72ISf$|6*dKV#UB5 zM1yIrz0m8fseEqr6udI9^U$Pgc{4ZJVKun{>7!QreOaQ~R$RHHooiHc$OwVSNc-lXJ&>>ZLUC9xpgL=JHK3UsT-=1OpyhXo>KTd2)$lL zVYtzHEoZOlr$5aLCzC9LJVi&_LI3)>*T%!bV-$ z!sro(UCoIEiV=BxYgv!v*YDlNAbn1c=0J0=T?pHv(+y(Y7=Ry!7_tW_rMr<>RRV%< z2_XiHlsCUH@xT}9snC_H*ce)TF0^-x4z{P|P(fE_*D^+y&D^P(Ia>Z?30E^GOIFsS zj4k*ygzITD+DxcE1MRn9m4mmeD7$%$sjy)`a`RRckTJTF7f>zrOn2xu-X0YO00%Oo zxs1`~%nQiH8TzK>x$-<{Uv8}u6-3-yfE2CRG#;!R>9dNS<5qj?rBjjK9ftg5xSqh_ zl-v0J;hh`E5>ZY2?I-CUoH0)(wOQNG|Meh4*q9$=G+=I?hJ_U;eC!&vHDyu@)#brH zeWm(DOH-oul!)?K^<0CvOg?2AIljP{0w=beOS+$dh_fHtgl5D(nQ1+HFm%vZWY;kfOeYoD57|KpxO03Yo=N&o0cdSXV z;*=v+j^b14oR+SMw72=o`DmicjZIS&{f&@+_Az~tO=6S(?*WYW=S_LqS(5`_ zIAw+!?=vU9pibpN;pS45Jjm5V{)35avv{~IzDU#a#ac$t?CnOR|ARGy52{*#*THRq zsA~&d8M||r<7!|8)o?u;LOIy~M=0ps_Iu@IXs-m!pOC;ob#n-smTy9B$!3!E-)D}) z7pC9?MKdt6QEDbpPsx^i+-hl2V4o{j2|G;f-_nhPl76f?SZ)cm`6+I6QA`7wHx6^G zHm?l4cE4!&1bowr>gxSnhv!%D%wd33w%VJrwC%oIXhn)iI!9YE%UHI-LQpYntFX?w zONUV~NaT_NmIDeV?9;ZgW>*u?%s1I@B5*D0TT0w8ac2~X8}4ieju5L@*4z<`aQl|8y; zeF>A5j!3=Wt;N|QGPV`j_xWPUK5w?r;PK~Ewh7++-`6Xg{VTo7x24qCx}1l#bE+N6 zedQAw%U2x0QtF+LX$?G-CT z>eU~9`!7tS`b={`*!m0YW0~2uQ(2#1&w{*V?vYhDh~ei-DF^3{pB?#-wJO2Y$2#Qy z_&8p7tz*a)-b58$CS8-Qz+2j5PIDQ!N{8UM3dJ4t?DJaOSn7-c1rIE6t3%x+ptcFY6(hZtR1J*E1c z!GjO&72vP%p~jCJAn(BV$7VH3Q7AvRuan{Ee4`#C)A*#Pxs9B%7QOH+k$_snu5Xfs z?C=n#BLC{XI>j`}W9mktSf9f3yBVj*46&k1kt~1vLG?kX z;;bUMvl??0T4sc5FG|yQe$#c2lH`Bj`K?K>jIoco-Mhn)&@J<*=|e0rFYc#=GWZ02 zol9E#H?K2;?q$7kxH8lr>w&46qp-8-1_dif8&VE06KDqGc zC?A3Q2*aT<%&|>Z;<%Z9D;#L*U0w=|$Q%PGL;TDDHF6<0lh!MWQ#}OaLWr$+U)T%! z(LElZ5fnWrK|NSKpc4ZRSQAi2@aKeYSVG8xpXL5rStC3zYM6=%XNZG#)d&%xGc*#7 z0pSXd)JmIOU}55-4k{D;v9x?6V7qckE)2 zHlyvtao49CGt{59VSW&@Em_)G1o)HboGdhc!mG>ejx!~AFPu`fP@=HiWGXs-n1A^n z>r#ri7Kv_qVfDcF*N)pnpwU(D=&0a(!4GNX=d+$~<%pThpC zQO!~^3$j4o#|D~N81z+QYkax2Z_Y(>1TM+0TuCyDB-)gb%u(Z1usvsi*OYd+sP{DMkV|HknlLVC}@1BK6=6f4FdAR&}Yb6=ria#OD8fpfQ2j7Tcs=Y*j{ zH;y?)dk01T?=LzMQgp_=A=LP6sW-1SlWhW{O%>U2ml;_XYP^Gf=&1t0E3z9oXW=+) zhxFV&ZHG7U{O(EvmM4SKrmRRNi_to_CXq84qkePSQyo0J-!;yGNGu>3h2J6g-pzX6 zxk6kPZFw~;la@o1ZG1lRKKx2t;L;T1VPcmniXrYO6XO5iAluv!d&{B0&dKCy_cn$$ zD~j^0v;PjAf(Ic4M4DK+E4&Ts#*(R95ak_-wkXS;$Dis!2gonV^I}bLw&YhC|b15JAf3f?Cn34ygC5P8c^GK_!m*I$eTD~ z3wl_yZeRvP&td<%G4k7u1`aFqalCBN*I4?qVx^`GmyB#bgi{R6srSG&8FHBYYr~VX zTI_7!v}Ta&JPjAzU;lNFpMj2%6taa8bH-2=uA;=_6e&~5H@_Zu1iri+ZK-`qvZ-5f zY_R!`dSIe=ABlLk*f8c&JgA&Wt7@0H%QFHjW!r;Q&lOB~TkIFwo@qQtOr<;U75;ZdHt3G>KfM9wABUMqda9QTv<2hZCX0oUtqZ_hi9;qp7n3rddd{|lJvZEI{v~To&g^_%r_0+gb$)Q zM<)SSa>ue*5;0k?;O^&vk)VF>7#UkWX_RZ9IgjNp5FaJqwOeK7kj`~(icxt~#hBxP zakSGqs$o&Equ_LbAD|}>jcDma|60hG0H&eyoQUKX=LT=>+@$ZIGGvaQzrjJn=?a-I zUfQz}i4p3E&>0)%X%#x5pWuN^Oq9tE)Zdc1vHT=6Q78B@dK$KlbcsvsY~LkX3vURb zgpswrs3y0|7-^{dn2z*Jw%PpIf1kU1$LVqS77${Gw}{(jr5Nb$4DtE*siM8NI}#S& zoAS;`Z8}ZAVW;*^sA)e4WCuT zX@67<1|;^`DkEa+%s*dLd^|)X@cEPxy#(4XAu~NG=s6<)%BL{t^Ls(yb%%|?DoC-} z2HJqW>_3DP^Z485DuANmUFIrm~BZ_-uVY5HD0*D}dt$oflS z?D>Y@N(1-K_Vr)*8wD^PBkn9TI#Zjg&KvBl>kS1*6db%V&*&>TA;{o`oD4(FpKnyC1Q`@dXF(p?pz^1&S1Z(4jhV3n)ft!NbP?erx#b`pXKbgJrg9qroxSoZ%2 zd+WF+`|p4J7V*Xe1O=s0LZn1G4OE0l_XZ3>B}Pv`VjwD_BA_T64NAvGjvk?O=LRFC zVT8o!_+9Amef#))ACKR^W9+)FbI$9;^E}VF2HnR+QhKz(pM0nF?aMY2iEbE{+$Up~ zIQte`#ahmj0$Aoe6D6+(xh!xxmD%smoVL?I`~No??&0D>j35>Bk}S6G%QMA!wy~Y- z3^#9}^B@zuvy#wCpsav)6Y$Z!zf=(U4^7VL4$hsWeXzp&nj=C--*W#l)@WWoT>wwN zvUGGtDp__|wltlvV@ndzi2WRLW9#Rjdb5gfK>z>{x!e722-Rg7aIC^E) z*KX!tQ@?%e*w`&(aNH7C|IOcJD2Chbr^^p9DQJss7=F8Trq;^QU z`o}wPdu!$RnH6O^)|&UX3k>z6OuJ0hBKztFLLa`PE9T)_I}?yI=V>DZUdJt>F;-HL z+{f4c)3qtON!3{}B)irGS#N%K+l$y)wz^JCtEdjct9h0r6AT6zILQE!WqiKp8y&^; zew~-8+s|Jb`O9rsUcEtZDXLhv zy0>Dsge%hR*V}zP$1!R@z(K60vjrPRe6&s_cxE!X1!E&?o6YVI8~;2d{_@FCgps3J zWH$|-=Anu!rx4``fp|tZkq*W?|2nP-BYH2U2rV{d)wXuDLOhhi4Z-w~;ESvUs+Zp^ zX31XdjZH7$CkyoTFr63IsFubi!Do)SLRjLqs#kh%V1tYwt9(o*pRj!Bk+pOUFZ>-{ zIG}Lg6(VE*YmLXw7Huz-2FNdZe&4t~V`@qFtj%b%8`NJe$dlA5Gp5d^u#9Rx=fQa-`VTH&PcvNnf6#x}S^w7YQiftGtzoe*2Z? zx9gHQ;s=*~!wV^-OPtbb-fZpDub3d@&UCGfU&J*^t#@`0vPY_M?s@%iZhtTBhb8i% zdu_kjrT01KA^WV^4ncnzW-1uxlgT!FL7M2=pnFJ#_5|x5hHsZ7IR#(3dCO`Tj?oH) znkHqOB#L8g8RH^N$MiKZvyj{g*bjfLo@^yIg+5DP?5UK>)Va$DmxifYR!0_C`NL-` zgN_#$${}VW6Ey!bpb?W3fV9ti$2oph-d}%@>yI*t=nNzcbC>LS5TaqwtH3g}ZqxOR z&ufn4=t&JDuTC4eiQ`MUqG+-|d1g^Zx5Y$o!Jc<$%Lr$~woNlkEa^F=gcR6y(TMmJ z`hE%7sg)W?5ckxdY2FwZOE_((39GXxl;hpU6Uz%?pOKB>>gy%8`QzF3`oq|{0F?SzNk&ed*O_;G>Ox8xKiIy8 z$Fm48@)cvlN)y|`upH}}hm??c)12K;m{V(EDCfaRRjAMD$z~mZqH9CXvb;*AT^Bu?swZQ;?g--Zyf6I8k&hg=1Kr%Rn^|%wdbqQ8wRi|Nw_NKp zw@_H-QDmhcv$$O$hTdo-#b89Aeovzl*?bT?%HjE#tjoUC!HKmIO@rrn`NtSE)NRhQ z)h(C$xWsr?WRk5P+^6>>^fKXV2*hvCmLu}vzFQMFBmM`u%J3esQBJagbc%y;7{x(y zHc_*L+%Qt`2*DQxS;7^+{ND_G$*6AAYL}@f^b(am8ioL4%BYc=(=ycazlFdMNdk zj}e5vyS$D(`Ln?*!nT}OB>-& zAIhq$3wt;=-}|;@$~cj`RW;adf%@@f`H8`SW}V=#HqCN*eq%E9jLMjgMWr@uU7UuU zk&q^M%U$!szKTlx;3B$3*MTqzpK$hg4{e~q48;Fn&sDzb2K`jAUz&yzQj7RJ{WWP?f>d-2GPpDbf@A+oeCIIVG5GtXE6^=Euj6eNuqjYfVgp4mZ>nmtvO0;;3ZZwTE zKtqW#Wa``;Kd%H?L!wpW9~nzWHdSbZUHR)=B7qRE(G+*sMo>Q8(3l z-5gn^#?SR4ZJ!tO9ZBFNNH5ep#ArW-6c?4nhP^%h%UAdX@@2NT+=Yo-i2&C{L=drMPVRZhDd@p>F5&r@wkkc}g)@^HiFc|0W zPu8{fQ;U@(RH-I!(QKQjA6es#oGYcf7nMbejqvckvIxL*P*?rrUHEJvkRzC%SP~1hp4h zx0swO{ktA1j=cUrNqu;zM*}k6E^&3)){a*>I4%zbB;pCCq{qA4f&55lPcmvNdF?4iR5%%JI?KPJ1>MPgJTAZG-)eWXV)|~Ik*4PySftNa z&k$tg;#Qv-YwT9Qk`bfLz{g_Sho*6s42M}fNFFsZy1q2y6yeTec0#q1UAGF9aAe2lj)`~vz0pF z?&3sxD3fIgmvPh$ndc>JsJkXg^25=+-SY9QrAE zy0k$WiGM-fu_X`{1gz_OD?cwP$y;V~+S4GAB^Smv)$Gq}oF!!SPUsNSpgJ-&O6)*E~^koFm8J7oScblhBA-J6oQRH$&I-u55Za! zSt@5k%K}4*bIj`P5)X*^&N&=Y!X6(OPXPqBe7}e4(St(N=f?Qq3|1CE&YCBMa&&R> zNcL#QmKV4B_(Wctcg^#-qN9Azjk{0;iC@F2r>&Tzmrh{y_mLj$zsiK)2l{!X7!c=4 z;rR{6C?}lWF9~1;zTddD>~~T;7qmj&THk7!_b{+puP$2WUd$Z&>P2rg@B7T&q4KM@ zGn@EfxDbh|BnCupt_+m}B!x{+?^h*l;mnMK=Q2=h5AjUL&hz2QM^Tfi6Tt0a3nVlq z(-dPg#n$|r1{*Qj-QLav-MU1x>$xGX+g)pkI3JIBgSy}pPeO(H>~-0*rJSYoYq?F> ze$z>)DWPa7l6rzzE6p+qQf!MsBl^dSH8$Oyk zTe83QU|5VL)0(EMFFVT1ogs0K@hS1yZ=JJBo2XUV(qk)@7T1E1HMoqH)-@S&qB=Zwvm#?!z1O~KtfQ~`IZ71( zI$o{V9a=9t+@5FLR_+~PXxw~)MwdMV<)%E)TanM#9zFb%ydTm}Ft=N-W z-n3)FS6JcFn$5fzG53YPmB06l9S&rdWMZ>puwoDdnYj6%%>N&%x`XP)l98YDw|^h` zhZ@gT9eRB^084YF^**M7z}Pir*=W7sWzeK>VgX?%pHVD`A&AcLVk$o~nXFw9&aw)5 z^y;uT(XMVz3P5h=4Q=@SG8EvRJ_TYuyzf%sh3@MgWO?~{?V)^wl-B$ zGjpp^ay`zos+i+iaFgYw?JG=j%^P=HyW4ukPuXqAaRS*&%uUB3wepXx^>wUcRjnVQ z;7q#a_KHY!>q-CdVpzv+tfW6L$zKQcih?a0Mpr&yb$dRzPL98u6;|^)+X!2NDW#9dq;*t`YlaXt3-GiNo; z=j#<>R^67i0}HdRwH`#?w+1Y*DP4>U)M}SUU!l!Xr*!^Hb@KMR9XE|H3q{Z%??E5* zU~r7~JBia4UYH3tUhYZ$V6lHw6z|^27~`=L^XSHRZ8R!~G|S#iGWeD};nSA~RjakO3M4Gp@R2IN%DV1<#noVCzDQ$<80&x;=_x z)2lU&0&`cDWi>>>>YA~4an^^< z_kckW9{^-=o>zVxx^y@djLxE=ppnj&uJDKCrl+OnuIJid(&O0bH6^Nr&cPqhQP$y{ zG8SFixyC;kJnUBdPMMU?g@IER4a!|+!>OSzIock$5^b%=of-Pekl`%#n*32vfw%qa zc0QqtMYrNvY{jdKeJVNa>b2z`O&RC{ z-XpY}8qmP@+IGMcu3VN;Xw7Rr@sN_On~3wx}n z+*Kj3wn5O>Q3m{gkWA@@jojul%`wY)-LmbcIb8!P#ge2&p?iX4=1&FOX<2KZBI{?9 z%Q{CF;@E zwr)vD*pn~5Mzq3K?+`%P4vg{U2BMDHgSJdXT!w-jk9?&>#N6IDqnodWo_-re-^&{} zghc7Nn3@t`k%k1aoRwh(BCD=3&oSn(7W?Hi%msjwS(x`VC0!dieZr*kmQWQ+@xy{S zk+qAIA~3ZxHK)Pv!BsYX%L%oo_N1iF32lh9<9>DRFaV4In;F~eK1J>(3_im761TJS z37Xff^s&-E-o3MPUENqIjgJzJ>82 z6voA?<#0YP`1+ZZ6$Pc>peMz7T_>78x~~T&Ub=4c>Y4P(ZxIHwH*CT;R4aR?>^>=n zv(B4G(uz$Kzr>LB#rk0yYt=VoX6sFp9AP!d2-De&mZSn5d~7Y!MRi}`MgcGX!QJhJ#zeBZo{{KEd-nN8G2vPU4?_%o;OaDF^4sdd>SJKuiP zaI}PHXlp?}HsdiAG5S|;|0)$*wcL4+Wr_!t;>m8iB_wd!x3~16^Z7JMSyZ*q()`1A zG)kc(gmcQ!d=6O(zYrlQ##eUDM8|oLO8M3Y-os$aM1MuWH|A|HCqtV|TO>i@oGHU6 z{r=(~#caG@8Jbr&2_wy$$mQPf(7{RDzJnR7vP@Yev%*}5Xh3U0&Wb7NZsiFNP5NG#H3c>}cu?61{&c!?n*Qd!0Kx)7RU%Uf#??#uiN zA13GgTBYp2D^B1ZfXYmu6|dKYP8D}ojpL$77Ws&HxEsu8{9iL+o@!v@<9gmZO5}S;p0wvS~yY1#}>|#|7m-qC9 zY`g*An`ycRyV%(LInpLjY@@C`32cEA=$wUJ&yby|x7x8J(IQ_Yi{tUik7E0K)4yw_ zmE76xsF{=`SeGo?n3xU6o;dN#hxi3v{*ZrPCH2OtyJABlnGAc@mis}FJG{&tZu-6; z4&Lg}5;9Pk;ZMy!6QSOjxsWCSwW;E;>sV-x-SM0PH$m-PgvHD(3d^_OPtEqKME$P6 zet{)Njz=G0;Ti~cqmSw6i)fbr)uw> zo%VcRew%gn4b_TjmDsh$!IiKA_ghLR^TVOAyTGjJYh!8SL5~i&l3&*;hhnuRzN)0X ztaD>wFP-1_%s+Vf)T}ek+uPjjpR4G)t?g9POEWQs@=|Q}t-{+gHYz zdG%J__Mcrft? zuAJBZHj4MW^*;b^>L!p5MT5xSE>E)u)xI2K$cpt=R7ywV+Csy5%i&wL1Wz>rQnMi$ zrXAB47_ZAm?kQU;+i^+TDuJzjn;vNTYI$c=l%;?@ctt+L`$Ak9ABldw^E{NfeM?+J zD+fFOEs^DhP(Q9%(V9BowEc-pO1ewB&qd-Fe&vsQtSHgO0Ge{^c()~bnZrUkn)6sf z;PI}8%P|?5En!`&xB<@JXspujKHWZhaZa^i&CqEja?K9RUafe|qReoxl*W}-Z`YQA_N zWlP6X$p~(#=`HPRCD*?{UA{k6!W<W4;~%bQ{-~OqT;{&P z{VcLHsn^}5i6Ft%l0;gQn-aGw1jA|r@K9Ywu|t=BpiUWTAV9LexEe_j)n&%sSuP~f z)ORDDqu-1$4q?gbhPw3vp^{k}#BptLMax5fFExC#LCmGu(2s_aC2ujv)P8S5xI7AZ z4IIX)1vAGzvl~&G7RXg`5d6)WNwdiw689)$!G>U!y!$x)Y#YC0|JT~JkCWE#C9P;5 zJ$7y0*k(m;C9T9*CTCG?nsr|y*g^5uZq~+kL^^o*E+v;2-5-DUDNkhK*@b%QUp1KE ziOlImgC}4%0})}8miV9yW&uiCx$VtHvZ|_@iba;yEtoc6Gpv(H30fJtS1}P8A0@gu1Ol3)KKc`oRb_hI>Qn-afNo0!k z6c!X4kz=~FDkKTYwpnQbf3*PELIDp-tIBNuJH}OhJZ^^oIsm~OCpjN-!j^@DjAyg@ z%@_)+4ap!!*knj5Zhf>WJ(9_a`wu$>&YwM@+&+4F^xOAwSw4_0coeomEQ&3!--5&l z*TOd;Zm>K_qAS#LBB`lcIwr*TWIed6*{YisH>=~Db}hs?qYo6qTOk0Slsi$MlGdWW zt0wkjDs*03IS#cn&wV*N0cV#oF|a)y(F`SUhD7(5l_oD@K}EkR{u61>n^w9Wi)9sA`&e3| z6_p-loT`s8Zoyv&IyJkgbM7qPV6akRk*4Eg3VXW9n@Y8xQ2eFHG2>Vm*2|LQb4&UF zQ7TlSd7*D85=^MRFN`e$x9P6L z^`mNgp4#t}D=}nkK5-Qk1t&`;u1tuc)Oa^R@evC~ngd;vVj5{1QjZ(lbp%T^Z!brT zpBC(qVU|QZ^14>A`LGPKwAdh<6?k~YJsGYP#@2{nPidv4s2x>ql?jPE7H~yE$V<~I z4nHO-_SseyVX8+zG*bhHRLlGrzl?6PQlI^p-EElk2#1ICg(DEQOA}<58^&urG4+y* z>UrTgOM#_T_7)~<7P=867{AHWxL4!iY2ulBV&J^MVHJaoA9- zTZP{VL&vlG@(0VuZ%4->GfbhS!^(9@ij7R0I_gbT!Bab6x3s(`qL{^@M-RMefKx>x zh0g?jh!~!x&rj*dy}+#-3`goU`(s~DxGlVd zt7(=^^yC6I#mA3PY17tP0f+tNUqhnjzvZq!EdVSYghlSeSX`TX+V6n})PCF4CPoRa^Qk(eTv8n< z&V(_9@@~ytFAN+@wjTLwXa&RrKrNs$Soi7QpxXW8Yyhb(QEpAS6S0gAGG#3kjYBN+ zRs6d*(P^h>JhB9*dL=*!IPVyK(s@s<89w7uVAjc7Txlow=5z+w$K(|jMy&|;*`s+& z2R;E~MUS+JN0ZBEyi4jfD>CCY?~0;IuIBnGa|K4clMEn(JoVDa`N8l;cVA;-y$)@;lp@?SL?Ma_)ooaX#~0?V&!!HCl1%17 z`9J?da(!NzbasRbpEM{oOZoKNakec${0eKzEr=C#5R}!*u}O(#yPC)nIo8VmWApNA z^3{8XrB(2q${WowO@_~U<(YH4%iCV!5f<21EDJ-S=CFQK=^c10fe6~nH1(**7L}9s zJNGc-QCaHRHm4#sgJ^Sn_D>~a97^9tDC-$Ja6&NHz2!8z(=Q(-EXBTnC^Z7mpTes@ zopJ-lD}^P97?(+Xra;?MBF<0kO<#f#(Y(?td* ziiV>ACkH9dgG~aj@3Z)L&*^OfQ0JM9TWPFHy$)182$wWNes=6JL(U{n2e$TJ z44_Yb0&lq#MpEh36G6_uX7{2Q4_fwJgYit1fUQPlxWt8wujeqx8p$)Tv^N2dmdkC| zrjVbu(EX%V@D;{pFho;s#_;vcZRgoWdnS%)jNUA5|9aJI`4V^<%+6X^(3Z;r4#A0Z z*aOUH;S_QN`XON~31O^y84B5VN$U6Hr`HDfY+yKuaBBuN4HR)OJJ)@S z_Mz$#V&3KhZV#-IWTGpn#02MXOLJGk4B0 zy&8(Xlio8{nR2q!$-e{{TI;%#JYI=QY|qi_cEw1Xj05h+;O8)G#;MUO?C!PSC)`|| zs+_U^f%dC+=|Mx8pB3EN&c9Ryh7n&V^Kc@^WDfc|8rxE)$3>K8%@y<7W@xyrj2a2m zNIZIPjks*nm-+fVfIZ}(H@`fE$maYRD+fHyhzU^5kW3b+T`A?v8kf_1pqw$=d+rhP zmHCy!NB5xG$Z&i?L3h7ShW-j)!ME@0>QB%5{U%|Uu=xF?-k1{{UOqC51XDQ#nF&0x zxuM^AWw1V}MA$c{WddEpOi;mfX1oJ>7{m>JD#U)5BW@Zs5s`}|egl{B)WgsunSGrX zT4}73rlIfcp`s=nbLSOQC$~jYEGQH@r?=FNS(iix8aQ@cIlx(0HVV8O3&5G{w6s1e zNqeG2oAskjiI+laHFLN%7?XT#GS_TGuAhtlVay@<`DqWIAz&AYQt0ot)6X3%+^_H|c~U;HVDb;0vT}k!X8dTUvUOIEU5)Sz z3M`j2{DPOr09`?qNk+9mRs=91q6$dbjnCd7SP}{p=+%oex;T~2nRs=|#pxYcja}Ew zUBE|AGNt}X@}gqE3?mh&isoS@Yf z;B6UU$=|thAx1-SNM*zO@o=xEr@+CG)<+$0*dYH<4Sp*>(xIv1NuDfBX@Wd+%>WDn zrVQ^@*fn&C)=7j@OsqBF=9e1Qz`*S)9ju3mBHw&UrdfN#7)&v>8YKY&n@L_U-SR98 z`S}=$IOU`JP)UO(X`?}s(0&1jx9}R%w+gBVieW9BjSj5&YXJd>{~%UYyzHhRCl`JV z8~r1C!(6Eq-FtN%9D{YnJ*7owxv~j{OpYD$Q!AZMu#t{Te_6@wS$s>H3GjSs>t3KT zT${Wns!JB;_wbvnY?zZ+g_{T|Z<#64*yK3RqB2GZws-8_d66jy19UwIYk30zaq}}r z0~0Nx2N3xy?s+eQ=UMe-ig;P7;xRQWJdI?Hn7vB|>EHSL&SYv5ql_Ue{3}RbThd#@ zIG0Se+pPQA)UMYFz@16mMQ#-jxS!)>Uoq+OyY`7l7sz5U$SY)H;TK>`v^+^?bQD-jFm%YVbjnT+g;xnF*bL1E2KRQJcHa@OhcqJ!`~bKO6+#juEST9<%L zcfR}ej+)wjj%JL?k%mMjOTwoQ*5DOEv|t27K&Y>c`gUjj4WaGeq~KtWavR>B4?+5_ zdFL5ulq*k9*7?mcxX$hRvlG_ZMyF6 zF#~d{X_FVmqYaI+Zma2@FRKPyz5I;@YN*8j6d8@J85dQ;oHyxO^xyqV`k7IcV`L`0 zer{6VBs1>31Zw(?(crMv5_v03%#nChxMS(X6RmdyHr}Wc5IpM1I63jl@pDWyRbu-Ht0`7`rtNw4h3m`cj zgu%trt`yJ3M1Qd4O(1W_$)oCDDVM>o!SIgW;|+ZSQRuaow7*aKKUCXiWm0GoAl*O@ zdJVB{y*hBFMSLp56_BS?1{AR0wz3b#?*!25n}%f<=1G7@WxiXv zE-jcYQiurS=$=I##i?W@)3Z!D=b5j9ucywaFXROOi?mRKY22WmsfT8Wg@F+x4qAcC z@FwJJ=8~w*YNjwcLxu4_Lm5Yoo16slIn&0NuNuGextlL5)98TEw#Mz6(47!bkUll= zH29cP27)ugY?&f%467f=tFl-h2bpEd8;)oSTgU(i_I>-bwmw)gzTyKkFbz%WNa+Mc z_Jq%#!u+_Pud2Cj(xXpP%;Fbs%dR#y&{hALD!2rXT}&{zbDfe%E~BXF8ZviUEjN!f z=Lgqk2%Ym!RE&|V{qfO7X8FAQ=Fdbc7Woh63HziQmuey{UDz3CVqC-zy! zm*UWNyL7PdKC& zrL~go;aU-PPH{pf@h7Eg`AbffUk>cC{Z$9$LpHxkS)lW7A3LVpf`-Yt<1X)%pfz$N zOMCq3DRW#h*ZoMV*IY~KcLLH2ltt9CYmr-}_$j8Zy_Lb>#`PRdmim&7?Nn18SNsdT;EzD_l2pqJivRaB#O z!k%m=C53Fu_$io^fU=%A!EIJk*AUMHF(piMWeVcM_H@3RU%I3mN~DCtoACO4?+yyHFJmPAd*8E?@|CbC#qjO_JWEA<-VgX3U?3z?Q^%B z(#sUFhh&WBl@n)WdcJol1EU@acW>~@7N%zv?g0+PEu8tmL`Bd{SOdN^T+#Jd64BRj zDI)^yEqM%OX>SfX$9fpJRCwF_eUt7^ESlk=neT->;!zI&86arQdQJWDiMpXzu7QT2 z#FVrZGn!Ynhk!S)gS(OSD|8UHy2H~YB*rm}__KTqh}70Z<%d7K^191fv;LmBQ^LuM zN_ju)Luows4TQOcbXIb%Ti2n+c5Ls{+hBUs?}D){6GrJ_TaIFJ8NPvR)|B}0tJ)tK zIBse-4BH0;$8Y;OI;c_*++0cz5SzIZm2u{BJqG)ZU%*kX!&zdG80M@^ktYdjE-aF6WLNY6y6%^JCT zy&yUNY0PN%BidQD^?;VWIbpkrwcDDs+5Cb^ctR9={oY$f-xAzq(U0n$_}* zkuX~YW{FI#<0sos=s|I7K>coq5UxN5`4}($`^V3Uggv*}Z)PIm(&e6*Jr;9aH|!7C zyeoeEy79kb*agcjN-%tFb7bQq_qTe%|0C^3BVK{FECmzs?o)XJovq2uk!5ipC5A0Y<~7GXhx(C zB^Zo_dLI~%CqJZIxW8O9Tx~D8Trhi4%ODQPc$(8+SAVl3W5kRDd-*s9u^k*iQ<+l^d=- zSnJzsjvG{wk^pZBM~ON~PcO|cX%F(2v*fjrdpFn8!v1nJY=MASg6~EuP#oD&hJ&34 zxn#UD>F8HuUIZ;RR{2cE$l2d5Mf&HJST5i|nE?k1kLxu-1H4Xv%R4O!1L)f%k19PE z2}!xRHQv^tqZ)8o*Tp_;X#6gVO>%C>H=A4sJ%#I(t6Zeo!`5A_m~ZZRAH*yQ>6`LY z2nw3W(3e@4Z87$eO~bTKhIbiq&tN^hy}b2wF_Qa9IMWc{MUF%a(yZxTh0rSPrt*Iv zcv*Vu_27Wi>_{;O+frS^R;eBrGRxq{w@C@B`A7wg^o%^&$yKygh+{~bjykDg@tF-` zd-5{J|4;370$^V3Oe)XR?rGS_r9`%+A$5lsT_}Nu%gKalYBio5jpdr2? zA$w9Sn^NC0hdRcm@9TR2qCHDXsptG!j&JN`C-qLVLmsBtV?vsC^TM8TN3~6a=LN=Fb@r}D zw?+>#4FS_od3s%2i}GgR;quKle`T7y2Z5Y-P}r7&eCr)IX#`wt#pcbD+zPm{QXR1^ zCmCK0?WXYgpI5p7{==O7S#rJ~CX7bdl$-6F-PjDW*(|VID73FS1$;Sr=z${8_#88o zk#D_U^P{wHjw4X}VBOF!n{aBNMy}bF5O#Le_ia;3&Sf2NfA0)fH3ztT!2okh(iu9)qE%k?y;B=;qtz>f7f>_mUA?3t~{fuUlDC!YBZ*L<8ONRwD6*6g0G z{`P=H5n6rlYqr)iSi6sJ#-kb%_HaJ1T}g*|R~rOuh5oNh2E==SCgI@SXMX#&Yt$k$ zT*%Lg+c$}G^CkhP`~Xlo*1Jk-plrM7$7I4<;F3I5dFv#b8j@&&b6;8 z;iQ$SXfKIXUq{5CtCSSI5Iy*gyrBl|9kX(MT*h~Av}8-mS>gsxQlukxB_^+Q`2l03 zd+L*;PkNI|SD>RXo%i4WFWYqB^}QHd=>T4Yd6uJ|YH@FBx$K~9>3I@)o(xH_w_LlJ zmF67hU43YX2hHvgor6?EXOYd7a@bD;0rlbqeh!RpHe&RfsDxsf=xVLD6z~Lo;(V3L zwPQokpdYyWsa^{x2oA6ogJ#HG!>?ucWlOtMhltHkQn%eE7UX-HL~auA4fA~5z+^{n zd8qi-=$qS$&C_8m`tmdL`<}arZ!*)@_)G@jTky4~E1=!34ZJsW-rlpq#UF${AY)?Q zCH7^yCwa7(Zdn>-L1U{h-GZP3^Ot{y2c3>k6X&1cV?>6u9rp<&{$r00xR|!FU2%CS ztc&DDa^4o8^qt5h0T)c#r@!bE{|^EhFR*yc-f?Bb{pfRk>hxV&`UL^sgVDhws7ND)tlo zOgc5(rhYa|lB6&(-+9k>iMroD{MB~#_&k3JPh)0VyQTn`CyrOl7#qVH3pi9wRiP#5 zXa>-OwVorAfG0yo;(S7a&(r*wX!3*d124%`i59e9u9>9=|hQPcnqnB zw#rh(>PLalYz}I69f*Y+B_TVZX>IbfOg%P7*EvMJ#9SAj9$rTz^5$CPgtl9rBeal5 zssG_rU?SC5e$9{&|B~t(7QW;(aT*Rf~d5n;-E50SjyT6$XzE9{ZpaNa1{HLrs{)q~n zm z6yCHr2CrGwStM*OtIZ060P+lIawy!a!dlv^+}ajvFi}XwK4v*SedQ?gZ&g)dd7R$I z+QqSLm*2T6jg|Jzirc+w%+fU$w{}latROjQOmed`yf_-PdpAounIM|}@vo5>7 z3`NAT5pt|F7JHR;bkMPzIV)tmUee!PI%9C7`&Ri^I z@mx48yqs=QLDpPr7B*PcnmtPk9%V$LNjWQ6+p5ES|JSB~|I1S_se5Vk!o26`%q#Y; z3F?vZ=!<75K}3@J8GXrX;+`0&n6p$G9OY;;pySJ1!RMgf`~@n}vztiJ$0lEDKJ+j$ zSN)Q92O~!{mKf6T#csZ!F@X4lK)IL_r-aFdw6IZpHLx??`Om70ReG6wSt@NN6^wNw zj(ME&aV;$u{+s3*9*7*%81v}&+F2)HqY&YxkxQ4M;;V9eg>b)PtXH<8?zvx=AMs=u z`7t%KxJ~qOn)9)?FVEmG^z7^2GqB%012zD*2obk)9nB8e*;Dt;?QghEv^;>;HJp0R1vyl?*D1S<-3(<>ICRiD`bC5^LKKhMYXN;T**zdM6(>50~>p_lx9KR z+af`>f-T7&9{T?te%FM{Z-KyL$dP-MyDw!*;qDw#c728hB-Dk?$N%P&@O#PX+ci2b zWFxn_LX=T_q7jy6&r;n#CvFJ<=}owi(0+@6H6R!Ft(>C7kOXlA0n$WB%oFw#*d z6qT}!GBr(KB{{ZNBett;6=9P2+Lj4LJx;?6_hE0?7@=0+M)3mWACsXDqg96o-koZ- z`3G%}XTyj#2RcX>ix|^SS@)dt#<~9Z|4H&>-bhx-G#-8OJ?0PE33!_c#@^*4s{&gc z!Y-H|BUaQNel8==(HpEuC|jxN5<$l>4qwfF#q=9gbm}?&wBmTlqcK*WPx_8TgjW+{ z4B&kL?Ocg069`MdY(H%b+UFZFZ;KNvmac(yIf*R1!_ zJ`)RQ?P_^SeR2N1ox@}COW>*p0#|hp1XDge59Di+mC@sVE)%iYhfS{o&0M4|@c9Rk z9{V(~3?_lE&i4`j)44xdmRh1}`i64egH_EZ0zcFVX~XUNlpWG|$>@FwEoc%rge2VX8TUkR3X`b6YS5i#MtQKOO7^%3T zJ29Vj=I;){)q@VfY)pc~Z(sYI8!+>K#=dfJ1ms>k1Y8aR^7G0s95>_A`3J8q9&~Tf z5Z~kKE$;X2TdMx7(P`pwN>$RfX1nc$o+K8nVnllS(&^-Z_BlB#2;|Yf$t|J3|A83! z^3PTf6aeIi7CcG`XgA9!mJ%6UG>}VM7}(MCn410jwF&>XpX@|0xF z=9?NL?R4>)eV-h{ywI)0q8*ViL!ilQ91^CoayW%~bL1H{?ck|d4cZth^d3=W5M>7R zKMM(Rj~xd0iHey)U1e~BG6}Y4Inm*L*wLbw5%EK8p?SkNxyY3Nyazl2agy+yrnKMb4rQ1C_#*I@6kY{ACD*uO{XK;1S`c*G%Qd|WM&hMC z%okR8ozjQk!)4pGB=$Zv74j;vKPyJA0uL!&TNu+?k{m21BS^7bb%$JmO7bPA)L8rA z(Q=RVAi`Ebr#3E$pgRQxi~d#n6zLtvv|C}joBk6(eW+X02m@b{@Q&%?F1X?(lULu@U{L3D8n(`A zVQBS#jK9hrZl}!h%z$1dY;@qgHlHc)g5D+*TFT0VLwM~Da34E-lwZgE18ACkk#D(u z^I2xYAw&agUL(F7gOhj*fA!kP&{l(OB?H{}Aw7qm3WZm3&|fT`5!#K(AR9vFVHutx zrdBq)uwB?X9L?c;XkB)o5j{mb(bVqX%b61&YwfXFdMMe$c~5g)fPh~2 zT<~;T#Es>15b)OU|GfKNqYo?LkS0wi#psVy%Z2S8E+{1UP{- z(Yf638G<%BT$)HZ4R3*fzoGuCLV z2VcZOjp;f%24CQ$)9&Y%fK`y|n)NgMTn~QLLx|7UNQdfFgogy-S zAh2NRdyfowJV*SKdjF3W?T?$(1=LIp-Qf6Iu57)wqvG;+3*zxv8U10;H)R3sWtpYL zP;9`o7~Pk?yr#cnfXM&H+FQp(wS95JilPW27=$R{7 zF%9QNp=WKoKd!eFbmh4k{I$JtoXWZkt?KgJN!Zq>p@2vol~&x0WN`tWp?_@?RP!7` z7uJ2@{POdfgavAWpbY~ne;)RMpI4r}J`xTmbMy`MfARiSu^Uh7!U@MrTvi@yXS66> z6B;zP-))=A(+68iQ|26m>n|A#O8UDz)4Jw|o_q0YvR?@3fCx10J5l^g;)lWiZNvrN zk&s0P5QQoISQp!VI?9^7xf70`?{wPN^)EySHlKEGS}Ikb0P^fUBl&0}&80@ZcH(tG zpVDKSv}&12J2|ycW~-+~_N9!g;qxVLaR=*Ne&w3YRs;4iXp!?#cgE!e+Q)+x;HkEq z+sMVaCLIv5k_K+C;Om*Ypr(wpF*Adn{6U_AlZ*Aw$JJX`kl1dwp)M_j*@H+!7SC+3vUZlweC zBiZbTbH)RxyyrxI4AoiA#LiyQAv-daw{Ar-BASY+IYR#pOv859%h%v5BLeqHS8HDOP zya9AMm^dI4bN3DSJTgbtVIP(4SSIhYg*jPzN zX_|4A6%1w5zv;N1^|2_5A`-XRFH*Y6+VPxcv{eF8umP&FUoK0@X93DYe=dfuBJ*(i zx4w*TVHw{Tf>M^YJMI6Wpz#3ij@rjbD0g)D!{+>nAIJ_5+Q+FVhshfkkK(uV_++$+ zzVPD~`abgRLY4lwq|xN^;njxPU%(i9Fb&i;38*5&I5)IvrX%Q=j%_>&q^n%t=GtEd zR5}8_`eX*Rp%^buKRX`-j3t`Z?pWRcs`Ed~4)cZDw8GP- zAGXy44&dQL&`rRO-F1Tpv2m;dy82{y69ZgXgBq$-$n+9RPQA~y$}e4Ov?G(pdd}0i zPUxpo4^D{Ci8+tdIDZy+P0{f^wHY%!JO{1^HZPot8$P+Qa#$+Yz;#Iem>3qLLr1sq z;px$+%_;gT{ix0`Mj`x<7EvEMrnjI0EdcWUabN|paWHc|ii$&@)alYW<|u@WBNkzIEDALyPrrQbW6fqN8BOGB>HIX}D9!=X{iFOU zo9oFfXADP;2O>n1LoYM~1~~f8n+7dZY$?Be?g*mq755^>GJ3w8?3^bw-NDQU;KJ-V z60)-Qh|A^og@P__!ve=-@VlKISJ^~vou}lgPQ}U&54({)i@0JQc%Cj`BzK%Am%b5o^Zo^NB-I?U>E4O^7wpD!=VzF#h8{LKG_OUjjTSapLykCi~G#Q$kPj|(&Qn3>2#X7jG z)DQVQrFZ!wG?UqFWi_v=fk!!c*}5cZ-+lrZ6N4AbMnmt~K_YSn@kij3gDf0h$=J~r z`vW%U((oU;za?4y^m#)WIWmmCyXi94GW3Z8JP5wz5_Wf7^XD&yrRVbmQ1sbf!;JvF z6-{@LhQ$j;BpaCJ2otE#Vntu4p{`^}_3G%z`7_edQ9DCjiN+v|ozEZcFUYU1fqt41 z8GeP+ykx1={-bhO_1_B-tWNsZBU9PD0y`ZBQu^SpNV}e$PL@ypj46H%*4e=UR*n$5 z=elF%j9&wo3sfY_HI6`=DW3$(u5RI@nO8A*4k8r&iB z;z%lPL%hmZQ#bD;l7OKL*$;i(UiwJvehP-JbB1m;O?hpI-AQ3hgzEtGLIRn)Beqmo zrU*`EY?Rj!_+yyz&xC-;fgzEs{DCZ*1Fon84*4uO@^4ccd9^u@^&50q7xXVQjmp>d zy=Lv^`A*nOQOT0M*_9$RqA`KFTz0GDgWSfqqRcv#QQ`n8%$ua!HrCk&oAipFVwLZz zv|9Sx&qhQbntL3$AFEDbM+JpEv6}<>J(*sFBvfNd<|bw?O$B78&j~CMW@as|t-{}5 zn1JQ_hCX8GOlYAA`LRrKEh4~(!fr{QEr<~*-HIOEjBZDbd1H+oE^SdI+Wg=&R>*3= z^tHz}7Kz9&J`w*!n4$Q9h1MYQp|e=2Qpa?KOeVSV${YVv~nLxeAtO8wc!vxx4U$5GF>K( zA#^pxYhUe05)0HkQtL-Mh2{d*)EJmOUUcf%-JdO*@X;$u}U0y0ZOz$JJ@zAWH z5E-fGk+v`@nCTi;E$TFT$|SvDJsPV_St-a!5+Wjqt}PyVI%xCPtx*0_{_3eAQ85Va zt}Yc$L#LLg*u2Fw9cBB25b(?!Ryro*%lr?9wBUX0Q7W^1-L+-r#UdNdRW_E**nrB` z$Vg#lUYoiY``Tj~RrPj#=Pt;uHai_&iL#j)u&m_#<&O!h;!gbw*rUumc>iVg4E*GxJb`-Fu5YT+;-8i-%)NIRnJ#+bT#u3<~EyF?;X=Sj*H`;R(!N<9q;$I zqNgzaMfARHrPwwggS4v`!4;1g{$eYn8FT6;Y$#_Sc_-yXnCP7CZ3icO)MC>UUolal zgFTx|zqjPoOc`vZP)oA%I<9>CinaB@qIw;^A~5Uk>eKv4T+zW-qhiBm?pbX-;6=H2 zl&r4@Ri$$l{z2lVMVt7tQ&)=kT`acSHLUTF(<~hzOx+(q2~kQu*(Mv1Rj2)Kn(8PG zQ}->sm96D?z|W; zG_+LV=Hsj3)i4i7&CksEXw2nvn&+=I2`9Y1rbI6?_c?^uMzL&Tj7TrGPQ_?W!yvGn zSKSSv`r(14COSPVix}3d)F9oFA&MT(yWf!*x9o%(+H^5-o+u_+TJxjtI?dVb*w!tK z7P%St(Y$zUE+6GCwYZ{TT6nb>W%hKuBaQfgrqw{>!T>#%x9pZ{;(Es+HROloCJpm4 zK8~{Wp|yNkgqh_cQ-Bu7XBc%2q^Xr*;^ZbULL?KOnn0(1p(fb)kbP;ThXtqm0l3Fb z7-oyHAYBSH%LJ;=Z9T~CFaF-ez&t!6NAagjuu>+V0p0)PQH@O|kU4kHW}LZ(%A6hb zhQ&D6_6cEu;^=Z@-@Ge>Vi84-n)#P={nWMHrC;PY&UUMeC}&-zRQo2WcRdg+T)m(EnX36yq5 zjhy9V@(P>iW~V@zuUlgwW7$TxQ-CH%wC&a0ai1(>jVXT2*Al&Et=#5jEC8x_0i-_I zjfH=b3dsto4?Bxg-!1i_Am=WLeWExNT)(Dqk8SHgaTgNqX}j_DL0B^54-S3rC$OQf zbevd-|3=J8qDC4kOLOm{dn$LQ>fwx_mE}siX0(~6-6&#By(>IJ-5EG4V-r&~4<4%? zp35@P?nv%l>v_dpJt2>E%_wYV+C;NM;{Hv(&8b-!rLwjr*Jp8Bs%#i`plG6tu*`ZP zF=bP*c}2bpz_w(rJh*DGXgxr7)?BeVIao|9X$FR2mTf-`Cl6x5Phsg^&gq zKg4`A#ZP5IT_8RHLf7G_31U6c^TIr@%R3c%j~Wz7v+5yU!Qj2tqe$-oDm$B+S*G#I zj?H4`NPA;**Rs@9p24Ngu4>A#6dhB(aE8vCOvP8?xVGMOmfDXBg)l;HJeN zd#f&yFxmBEb)Bbt>BoXK%yaJ+Zz9rJg}qxDI-b!B2;NT-O8Ly zlKyj&Un=%iPDYmN_nFlR(!4Pg-+)TW&9~R0QBKQf@gESYs0v{`f>7R>JS}^*0 zo5;lFd&s9HW90);RB0;8i0PFgIxiB=g3GNF$=Vt9(euo{SHhcH89J?yCKe_>c4bH& z>^0TIW`!rJzyq>ee>Sf%Y$DAn6I*vDkpLzrC$hw3ITL}Jn24Z7WNZjtSz2-zGcQBC zkEFV+INvT_33NJ@UVpq&5NTCYwQ3mw5sXY^(cXEEb*P#1jyU4Lyt9jIcT0ywLgKAn{b3k&yOb6eOv7TvvcwI_ooTxspYmm;$iq2@K=rPD`y=#4GW8HiF_?l zZa4n$A`JxFEw2=Qq}_#_)oj9pO6PQ0!M7x5gTo{@DI(KTSd`y3>S9T*rY%1X^m`$% z8zSa;qEdQO|3SSh-{%9m&3z9d#s<0C8I*|?TrgNE_O7xAj2@|qlPt6v78$qCqH-mc zmYQAHoEE;nm;W{)fz6na>#Mx|6rp0O?a$C@#8k>xZDV_?hAlkhqF2s?mXXzYdAE`; zrk|r?JIWQ~PgM(UR>+J-qUqJleaFY+>|K>TX1=JDuyuwCxD-s71A&RwBzUYk_LBS9 z_FllIJ^?bseQIe9+S(x3I>CmQ^|Ig7r9(r(Pv6I~Z#}DPdeGT`4s_6O8wqj-g=PZM zXX?h zJa25qa={)+Q-mm~T03M=9nFD#b7)f0{mPBs>Zu>Q-7KqfKsM-^jYSbf&uB5E$b!}eXu{gI{Nyk<~O>78CiV;=^-^& zwRTjPIRY(tCWSURomXG?l|3-#3+ZPp0)*yWxaLadhl@|By}g|&8<^jzW#U)C9t8m- z`4NM%ngFTfw%h>xun?`n+hFBw+ffDA(fw}Xf=5$WjHl5LDaG<$2+a*O;~Pg~c%a)!Q_c z>t8aYmPzzTZB~JiY_*Sfp6(72HmZo0*qr4Ht~&3w=Cm>Emp;H`JLFJ=!KBb*1UDQ$ znXNexUqNJJgPyGD^fXEz%xHBMU4COxiSh7ROpL(P!r^t_K6aI67Lcu^#OLvCIAF~d z`oy#;0z^caEHY<&GFf!f(ee}@KCTx4o$UUC7)XnfoY)RkA$g~q{*8ZJS_WQR+$B$a ze;R|#nJMM$>T*>l#e+nFmZ0>CN{wg;;SYehJ5rKY(tIdNtmr`4iGAUGl+#nKmXqva zOZ(;WA}@0{@Fr5mXac@h1N$}@0xRehNw($re&gdi&Tw0EVa(*owf6yZcK0&gb&R>8 z?J(aT%PgWf`;Z=%s~??6XE(yT0*Uop(3>2-Zklc;qGfP@M;p_!#{10zUBle@$R_k? z`xUpBc4{Wo%c~6w7PNA9W?%zc_x4{+Id{kC#tsfsldO)mUOI#l#BVy$i+N$ zz8+bSuDqo~l_Y^SsLOX^{kcEMlZFWl%1P$1xvxrZD>@Gc2ndti3q(^HraVzKGfQ1~ zfhxY#30(EE*zjP&)Qy*fX{{|SgOob!4Mp!uQrXKQ%XDvtKWJ6UxHr`b5)$6S9qc zTFQ@1i5f>m<_!xj4BM5x9kQZ=1Rxj)K*67W5D~HYh*cQZJTCrSG=0vC$5qoHW|Prv zoin!2Ea#?aPLJn8d;i)cRua}&mb)IK5o%)zRL2s|1`@~)VKzA5rKfX}u_AJpY#qKB z_qN|$n1st$N2RSA^jmE*u92Tf%Tsm+@hqihy%;M+r8MVe)jUT46iA8&bf|=#;Ow!S z>2`jFd=K=-oZDo^DmE(JKYoJabJRQtVMln<`x(XL#pE`s9W1*_$i})f%nPr^cLCEpZLhX*%e$J-oQo6n#3CTI(}k{p%@8gfr1DI-!I~9G?l)VzXA8*EXCGXAjTk^|_h94%b4W&WwgfZM^-~ zv=|Qsx**o`3gNbNE_)hyR4?{f_|mJP8rWt?hlSh$PVIce_`(VwU5E;nMObDy^GcSq zPNI6Jw?A7KCA!3PqMsLb)C#CHU2foONJ?~sY%LF3=WCz|f`aa}sp3BqXFRg{zO}mB zY$*5)JSz1ielOIt`-k30)pR86c=0I57lo@S*N{nny-3nC+bBkkR>-9JT9-YTFL$wR zY(BiPx|rvxX&QV@Bh0K=dr%Ch$MOeV91 z8;krj9y^%*mV{f0oHgSVi)!GBSY6mT-@v9j2}#Qrmzk9sS+d!)Z@x{VAj~H=OF}M9 z6_AWDMu{;-X(s`nP1OV5GLja8tqc$0chyYcHG8OhB&p#0q=48&qYkyaKJ1-hxl#3W zo8HLZmd!o!G&C`rmW+)~O>Il>-oF=#LhF9aplIZI1JW>w&Lt+dq6%BT^mU`-7hp-Ch{I(*{2MW z9+TRcf3~ivo|ToA1y-MqmKH&v2H!tNyDJ3@6@XiEXu!T6BqjH`ub%*^ehx zk~p!Bjh&6u5H;b4LxMc<;>re6bagbV4LrZWgenY-4x?y?g!~|pk~`Q9h3RAFe}Nog zNwhnmqZ3-sQblEXd0ENhnu&>t@64=kP|$c%NWjfqUwI_%LPVqoPG;3{&L4L^82`y8 zf$Hw$WV!g^UTv#tvArc*^4GJ6oNVscTJ`5!whRvPcEeFSQL%%0|rW4NDxxG$2h)g|f18ms0!h)Gf%&6-v{wkwCo89uN8BqqO$=ftn~1XwRi z4^i8$vLgP3h)pw_KZqmMk6ih#OmAf(Zl>0Bou{gmUL2KZcyXr3;{8ZO557 z1p|j6HTg|Vq1sPscUZ+8q!ZT%J_O6?Tq+Lp(J6o?`eWQb6Xw6naP$ud7dJXSOb=6w znQO-Up153R0Xc^ajqv6*NlBbMS(>jp`^Or0{-MA`P*UQOq5JW%sxs4zQC;UH%aKY$ zBcrre6l#Zlng0j0eLVnuRWCXn#(hn#4<@^Ph*x;mhiNo*KUQ3CX=}TqLJaiPCCiG{ zLiJZwKgRmykMc<JNNdJ($N?wy65Bh1HWV|u;fcjsB638hx_kxpw9I+FoZ3^E}f&`5bM;d3$ng( zvu$|w_U{=YWyHy63jP+xCzE*?fciTScF%iPMV4^YJuPi+68tpl$2VjybrH0*Ej>M# zmXE3LuE51V0g~{{c53iLD{p@VG=~TxE@yX=2p&}ANpVo)Nm*8FmP+#EQG=y84(gd~ z=WBj>NxTO@uTIhkpB7UP02Ha~ak{cA6Q^O(MNT)_=BAUn#*i9a0Me6_hVypKKSSAH zU!w+oKaWBsUfU*I1w+&HbKik9_pi_4q=}?K=K}-Ks7cO2V{f!&WURokSBCJD(>t8O zoo`Jm12miGbyh%Zh<*V!L1UDcx}AIYb&B_#U)tKvkWg}*#Ztjq&RmcSAx}+ZhjBCB z`I)HM`G&jkNnlrUX)n>^fWbuoR(?Es>gSpCjt#h9q6`s1KMS#0VqaJku{$%$N49C> zQ&jk_$f@?bP?}zVfK{abol*?a-gE_EsQ=W^MyF9S|HzjjJG@qSYnPx>_Lf8Z3#azER|5~qxW6RtA+)RnMzAWu-di%e?ID_jP?3n0(6IFd0e1&o zb!eIH)#a5HzbS1DV!EtGN^VtCcw_bCnp0R<*l65L`q?aj>}>9um}e(zW?dK^Zm-iy zm&r`sD3hpAWxU<~^xy0PpD7?d3szTG^TC9T<5C7{$+n-XUJOpR}# z*Fw4j#?d$=8GVlWcq>Bc}F+e0=b*uDW#X|o=Zv1>-{5l(6~M+ z!kSo;T{GMM*0|lg3##U+C}t{uYTST8@+rOTjay;7>`nYjMGg$cY^-{*g!0s49Kh;S z-$O7uJmc!T(Z0MJ?H`G+K_X>f^d}BI3YP$%yjz^M52trv2jE%xqJj_bl0)#iKzq2b zZtZJCjVl+&<_zqTe%-fKjDfsY396T|Nf6!7k6gaOa-wp2cG9b<$^Rio#w`2@JTRjD z(QX?hr_KcG`FSEY$n65Abg%+#RN@4`zuU9iapI|-A6m_U#ZF}DR6Wb=m1EfQj(^N2 z%8$pO>9funVm|zgjsU{f(8%0htxHFMvh89iBkYqjEF%d^UY)c;dwFLf><5pg!RcDE zwq0i-PDtNELTX&ZzMV$>MdVnh62{1t-$j(^-UUeYf3_H?qIHt9$05FW9X9L%!t`DMo;ya1c@^@2`2I*eyrq80~fd4aX4QKa(fJg%ra&pE>pE1sm`~#W^+V1LPchC1Y zEK&WXqoY&xym^bniw`AQ(f{oDXVGHLRNO89l0tGU@&Z{Eetol z5-^I&Fw-ZydVpWP5+KPdq&4{M1~IC+rfOBTSud}q#KpyhTy{{b>J)uRMFRKxOBSzo zc9I9ue7?6p9CXjz5$B+}Cqb@n5`ybA4rKp$mPR33`q^{SfvIkF zuWNZwXV`pURvPy!cH2sO0$97BdAJeIOL12O`%)yG*zHMjYA5jJ;v0~J9a1DWS-tQ0 ztE$@4)VhBHxn#WEhSwlUZ@}<@W?oafJ^ST30rEt3sE~y#n}%{hs44}i9uH5|>)Kbw z(FyE0s?N@T*X-n*-Xj~0eJ6H9Jl+^`7{C$6uRg#QDxcvrUmNc%%- zaBf_cVLjD4*2%5R$8x&T*u=!=$Y_mUhoTgQ?p(_8wy7Pd+n>X@!vJv9&x=OjcVh$X z=9g^r&TUB(8uR#ebac>a4GhG}oNil^K9nISB={~X3x2Chs6Y6~T~d`>PP-wH=(Ri$ zJ?9`veB?m^8C2>Ls$Jb*-B^Mg>T2nZ4~no9X<8@~2dN?D9J*_&9feoMcZ*TQ--C7Y z)X8b!s;$~{0JT7EY}IbDi^3>D4rTQ;C`SN-u5_ye2pl-`lC-k2s_HDwq#|2!S_XF8 z=kyh29W}n@AFAt@KcamBbMz~@PvM#K8cY}att9v-Rd*0g;^alrmYA=%h`%T;U2^;Q zcoKm~{(K4~TaAs3{BNFQQoh$H;W8D)i8hHDinS)XOA3<}`hTY2X98yND>LI7NuqxT zQfB8TvlbQwA9XMrGgVDwP?nN%0+A`(grcN=%BkvJ;AVhGho$h)uEAS*9Z;akbEC}o ztsVj57218_72b&aLluZO5`oya`mqOz$^Fu?kjcs;C*S4d#GaKn{qrdB7aC1NA&4Ab zXC}@bWI*=7q%3tedjJl=&vD_Ycg9BrhM{F=Z@gqQQt93N=^u;Oo*=pqEIi4{t-&An z$x)yROm5tw*$omPal>^GP^fYwE$!}d!ay9TNPGYOeTglV?)dJbb6o%cfLF|($9=79 z4W^Rp>YCj3VZ*=N_3MMGiq}Z~aOqrXX$N5gldSLZ6kc}!{R%6jUf%c{;J%5L1Vk~u z_x{$a?S1{CUwAHj!Am0#@651lUe3lY-o9rinIu7gBHP%vt4#v&NG5 z3*_HmAW@j1Xp^EYtVoffL|Xs5z*rJgxAC0dalv6!JP@QJVLhH9yXTgtHFa^8&B)9n z1E1nKmm;{?k-ejKXa`$;lfVKK7HROf^YsJ&>*jYN*^Lqhi7-;pK`ijZzmZWcRy$6v zchYSyQ4Q(&4|q+hgbWoD?1gI@7{HoazU?N6fNQ*vV8f#t@TWg1Kogq83e)ZC3p^^n zNX({|$xX?reYRe5ftK-fA@dBkd4E1g`kdXd`JIT3J`4E|3f%ZyO~MBtKOTJLGrK|v zxS=4|^CAh3gff?Z0fEsbOpc8$U>S#>*nM~fdN4XNBS0C)VN#GH@Az7_FKBmviRCzy z(k(11d~czqKMm*M$;r)?)G*Ol>3RIK>Uk$VK^OqM=+2Pa zPRH>ADgtI`$>O=ZJK|rfM1uoi5;$_)J!NoKSSx;7ZAxcl^i41i&lp8oXlC>H__*QC z&CGquGBPr*T7#!g`~5oGk6j*>1%Ne_Q^!%vJqc7SBuyhO3GA+sceNPMz|-Qu0XW9n zastPuM+`wjyRZAlwEzCYHx2B6a-Ajuw@}|_5H+}*j_h$9QgAlWQ66S71>s#m3_^ES zu=1`Mp5KoQitm9YnQ{{BB?CBM1War(vVvmJ3olRz)PS6qJ^JK-vsD!=6k%;_%n~&cUwwwrZu!#7S z2VB=@#A-eThzLy1sB476r@uYB1nStk?|rh-TaxAVii^7%ri>Y<=P0@0x=>WVToOuiUdzvzUa3mo#8ph4D=`P9^BK*NoZcdKJ+3zpHJL8} zXbnm9{QQ$|A87|xRhfM*RA5*A_ERhVb2m z3I$~h**Ur6q(N1glhf)aKnfCV_c_hB+jhx*X$BSGzmhu^37hr=%lQ2N$1;-hHK??m z^)aAkW%0HsIF8NeS?biNI*zvEB-L}7>}J$!^Xo)(MJGGm1U2I#mbE$?bg2H#8w)?0 zTSjbR!E4ebUZY-$E2>?Z|6oYx$@l0}J zGno9*$ipOgBi(stPe27U3y#;Bm>W7;TQyU1bKcoL8IYex%piRH{Z~HHQO!e5Le-#p zvaPpQ(NwIvR;77EjZRReS#)FLy&l%)K4lm%nfG}rg8U3gMM_FC3~#FdUsE(REX*5z zY~mhpTrPon9c~`K6gS7NcU1!|JuN|vZymmj$ffz-75VC67 z=#E}QPN!FiU7zKbB;5l~RGst@9EG!?A)sTVS!q$7GGn9g3VdlIl|J3EisOlA=AlCw zooZHo`O9@PBa6xD0X0$KuNvWMw<0bx+d@S}PN;}XU8Nf0uJ6mmgqBkjT~#@oh3Cf` zB7%{A!hiEvAv^SfBXa!*bQT}8oyr+`paxQMn1w|*T*t?mI0j`W4UPLB9O=k~9z^|YuesE)Z)!}L^53F3=h*{PT4C7sRF zDwrap?$^*_a zrLVbvCY>rVw8h)MZ{86!U{ox8gdd~NCQuq)OL9HN=M~7pQ-T_euK~SMn2t@G)%_Vu z$22J7En8x{DhbPqgv%l?J6tP%5Z1^@=m-_ZD@RO6vVBJ0(57V}OcF&6=T-T3#8aS~ z-Ux|_u6S6CHEV$0nKHHqNK7NIZ{*-$J^~b4W+rb?kWkr-A;iA>f70`jf&)mC_pozP&$zx}$3hbw%2AMIN^sT+$VN3YzUEnmtbt z$zXG92ctTzL2KAIEWI1=S01zJ7&aoiTV<%=LmBteF0s=&Im-dP#?k7i9407`K50{~ zEi~ccy3tp*Op=@$T*8`aGYo30Z0ZLb&SyQAnC4O?pLwMtTtr>rxIhvW1xiinyWXTD z>&k{yQzC842RWaq%%fXft!%D75;uc9{Z7|6+eOpAH+R44zZ@n8FXU`w>;o9_fmlYu zM~6VF+=hs?Q9mCD(1cs*x|>=~oK&k(@pzz9WvNr?MKO8z#FKJ@SH_z(s6m2f1Zp~< zW2mDSMUS2tDq%3sA4|hbe}-CS5XD*x3sLF$9IlJWVq;ygqm(o;3>|!>c30{C?!DXB zID(L(Q?fr5do{({YBP8q)DxCzEI0_RbzE1eoZnc@!)Pbn2)t$vaf)?d$g+q%)9$Ql z@1JQ!3oHCrlJ~**{axzMy_-AN_S+6y7dYa+%|r7 z?RNU$yx7t$ia1e}DPa<_^Ud*^vKcSo8$rEs@8je7M4d-Yt1%$naCJ?HI$Ot-!-g*c ze+rM$sFuJ3u8T!bf?}O7?B>roeE78b#)K1sv3Qw}${n#m_8cYWFbppZ>`Y zhACJ9N2Mny5FGjm@pJj|aQ)5m-QlfHftb{ZO2PTZG9#RzP+2sv#J2C;F`>z^DkCJ4 zy}tR*oPq8tlSuyXc+nykOmN5u%|1HGSIiPIULzp3=AwxVP+MCQ8njlJ1zNaS)L||F zD6-xwDgp9tlVw3O?Irh&FsS&_AeHXvS<`?vQBHG>CegT~{JnMho!Hb@Vryyd zIx>AN)Yf0n)}~v#dRR&iiE%Z6fqO9yGc|7XOY7J2T%*c9Ck36)vYuTTF&q6XfkL2! zwPKPCbTGYSqwWUDPNYZmux*vib9BO4Q~Gr{#iv*Z3V)(mzP`(*i^`l$@u(&3}_U ze8_{NXj*6Cy$f^fTd?F)tG&7dZ(;*f99=<;X$_g1tL5MYn6gY6r^kD4FCJA` z#9J;7Rw^ydLPiU$1@1~Mueo+<#?ggF0Z0%}8aA}yBiJ956uCpJcW;5G59eA=a zar6MHfdHynX7Rr%DfvBAJqSo?D_KZYV#)D^>3Xqf4@M6|s0l|;+=NX+)#w=G5xof8 zPWjOwp}G3t@6({!^T0}P!H4h>gQR0N%?AQ1OHg7btj3!HKotrc=-_^r%}*e05S(`g z*x<4Ux5F3x=&uu-Q22vh-^G0j#QRHhlV#zlZ`w!#)?I=QWoV<5MBq^(w$rHM2Mc04 z*sJ~M^7m_FpxKHMG+QYG%`+Sm2>Uh-`ou>?U5#U=brKglrkF}O>7jy13dj$475$*7 zx^TWZ(s|97egYlI5dc(9#(;9zvdK$tz4K3Fj-97uE zrScAO@%Gu5=;fsAF){(_#{lZfnup!oYeXYKKzgQHXR=ipTb2WdSoG1uZzm;j_Nf!%Jsnj*E4+m4^r@09vDhxqzO239Soc99w->VTfDWb8d@0;0Z)6QLVMVQ$hrvs73{Ig*g$0IVvPNnJ ztd{zi+!njR5$rY0YOtHPOnNa#nH|um*OMr7-;MT1ZJbNPp#9cH-8~aq+fPqmGIbct zu8;cu32q=L`EwBUtZnHWlN>db&PIciGPkp~2pjCUOiek1a$y%Jc1XO|3+qu=R51N| z30T=~t6&7wXlehIvFrayy^@};R97QP{_y0$Cshw`HIE56QlOuq^OeJ_ctW~RuZK4({y+WprouqPWh$5q`WH}n1 z1lO|rgs_xSW}j_xqN__brikR>k|W6faHqQi+1ED`W-QftCRTwQIv_7m4QR* zj9i)z;EvbPvc8U)3vjES$ess*Z&&fdfDz20$nX`!(r8fMe4_=uReLfVZN^*QJl~Y0 z6>Bh{rpiJKU4dZw8Ws{NsITZ-pQJ4N`RwM#yhf&5-gq;x7SgmNcMId>WEk2UUSU>rL9IMGRz$?|Q=?r~s#Q>v+vC&$RRI`(OyYUVec zWiJ(HgGgjyEugfdJEi|>ipqSR#@P>DO;rmr@^o*o_ngOH&yVNvYFebOf(F}$=FP=C zw;E8{m2PdCHCDY4nODjyMn4M*dW0DxBl8&CmZ4S}-a%aiMi}(33ZG%3MH|eE@rTuv zkIK7Y4KT}HZcP>epcZl04+=Pq?*J0=q8d~7N;7$ z5;$Gf2f(r5s&mT2!x@TP)2r~I=PHGDItq)U+kN<$CUYSRDydT2D2%X200{N$7MGyT zh-dU7f}mIM^|JH$@{5{GhOXeqBM)OIa7{-!vFF`Z7dElB!VBNp)E=>qe3Pd;1Ke)a zv`xOUO`rUYIH4spBk;XMZaBU0SDC}Ud&=-Oqe~6ET8}l(A0qUC`4ot!z}!qBd-tUv^pIh#tFY zK0g@(v(c4kz;2#l){d2+gi zTKIB@6@26I^_JHD6Ez!M=b#Sg<(Vh~)f%^zFsRL{xV5uOeqB5}SM;PViyb*@iTzM; z3BR^g`5boq0m_A}Cb((!HYn5?Lk%siV@J;mnQNIY{V-j~6%7j-=st{*EbCU_mc{Tg z`v&?CXcwEEb(kz&b6CG!NN*vwSkBgvdwoGo5VZ4`+O9OijpXHB-D0k$%$Vo1H(@@e zFI@tOl@S*UF}B?9dss~2_t88zj0U)3ft5J;5|nFwn^UMnok&v?tg?$^nh}_;k2a)3v zi_T8zwt z433)$C@(M#Lv%oqDTr;MMm&G$;)m9=FC`$i&Ab3R$dBlom}qXLqtD!&E9h!Com@34 zFC6g{MNHA!$`9Szq4$7e{u`(x<~a{CVt4xVGk?pH-IKHJ(c%)IcjbZGI!u?Q4x{rN z=HR$=7hSVzNn6hYT}6@Qwi+gEn%)0tR&x5)dZc9&=TZ&uZW3vf9hHeRNO>g-gDb9C zh>Sc6;d0f?xLNQ-m6;)sMO0*E^-4#PH>cyuy+$_E<&4q6Q=pCe0DaY`0MX-#C)&Z~ zHuWN`{UHU_#!z$MxeIcu%`~l9r@jheQGojP;?^dh!HlB;rsVga$wNzR=;&Av)B|ek_>s~fC*9}{6NNbn zeTyP*W8Q$Os!^>f@w!h`VrgLKW-FD≠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 N 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 Ar~m)} literal 0 HcmV?d00001 diff --git a/documentation/userguide/mkdocs.yml b/documentation/userguide/mkdocs.yml index e2a4878ca..1b62f08b4 100644 --- a/documentation/userguide/mkdocs.yml +++ b/documentation/userguide/mkdocs.yml @@ -12,6 +12,7 @@ nav: - Redshift Datasets: redshift_datasets.md - Catalog and Glossaries: catalog.md - Shares: shares.md + - Metadata Forms: metadata_forms.md - Play: - Worksheets: worksheets.md - Notebooks: notebooks.md From e7c8403a623f36baacba800b7df44674138089e6 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 18 Oct 2024 16:27:22 +0200 Subject: [PATCH 128/188] Fix error message of Redshift share verifier (#1647) ### Feature or Bugfix - Bugfix ### Detail The share verify task for Redshift shares was returning a `list index out of range` error when verifying the health of a share given that the datashare was desauthorized in the source. Tested in AWS: ![Screenshot 2024-10-17 at 14 44 31](https://github.com/user-attachments/assets/fa008a2a-4b99-46eb-bb6d-635d518159a3) ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../modules/redshift_datasets_shares/aws/redshift.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py index 39e218bdb..75dc0ea21 100644 --- a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py @@ -41,12 +41,15 @@ def get_datashare_status(self, datashare_arn: str, consumer_id: str): try: log.info(f'Checking status of datashare {datashare_arn=} for {consumer_id=}') response = self.client.describe_data_shares(DataShareArn=datashare_arn) - datashares = [ - d - for d in response.get('DataShares', [])[0].get('DataShareAssociations', []) + all_datashares = response.get('DataShares', []) + if not all_datashares: + return RedshiftDatashareStatus.NotFound.value + consumer_datashares = [ + d.get('Status') + for d in all_datashares[0].get('DataShareAssociations', []) if d.get('ConsumerIdentifier') == consumer_id ] - return datashares[0].get('Status') if len(datashares) > 0 else RedshiftDatashareStatus.NotFound.value + return next(iter(consumer_datashares), RedshiftDatashareStatus.NotFound.value) except ClientError as e: log.error(e) return RedshiftDatashareStatus.NotFound.value From 378cd02bc3a5c8564ea1b98b09371ddeec6e297d Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:11:33 +0200 Subject: [PATCH 129/188] Fix: check if Redshift table exists before publishing it to data.all (#1644) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Feature or Bugfix - Bugfix ### Detail Currently when we hit the addRedshiftTable api, we do not check if the provided table exists in Redshift. In the UI the users must select from a list that retrieves the Redshift tables, but programmatically they could introduce any table, which can result in non-existent tables being added to the data.all Catalog. This PR 1) checks if a table exists in Redshift and is accessible by the Redshift connection before adding it to data.all 2) in the UI, it shows a success banner with the list of tables added and an error banner with the list of error tables if any. ### Testing - Tested in AWS - UI views show banner with added tables for importDataset and addDataset - UI import Dataset does not show anything if no tables are added - Added unit tests - checked as part of PR checks 🟢 - Added integration tests - attached screenshot of redshift dataset tests ![image](https://github.com/user-attachments/assets/e7e40b97-74ac-4d4c-9590-11c22055f524) ### Relates - #1424 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../api/datasets/mutations.py | 2 +- .../redshift_datasets/api/datasets/types.py | 6 ++ .../services/redshift_dataset_service.py | 74 ++++++++++++------- .../components/AddTablesModal.js | 25 +++++-- .../services/addRedshiftDatasetTables.js | 5 +- .../services/importRedshiftDataset.js | 4 + .../views/RSDatasetImportForm.js | 23 ++++++ tests/modules/redshift_datasets/conftest.py | 4 +- .../test_unit_redshift_dataset_service.py | 17 ++++- .../redshift_datasets/dataset_queries.py | 13 +++- .../test_redshift_dataset.py | 18 ++++- 11 files changed, 146 insertions(+), 45 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py b/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py index 330883b32..2e357c1b9 100644 --- a/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py +++ b/backend/dataall/modules/redshift_datasets/api/datasets/mutations.py @@ -44,7 +44,7 @@ gql.Argument('datasetUri', gql.NonNullableType(gql.String)), gql.Argument('tables', gql.NonNullableType(gql.ArrayType(gql.String))), ], - type=gql.Boolean, + type=gql.Ref('RedshiftAddTableResult'), resolver=add_redshift_dataset_tables, ) diff --git a/backend/dataall/modules/redshift_datasets/api/datasets/types.py b/backend/dataall/modules/redshift_datasets/api/datasets/types.py index ab1fd1b52..3d4930eea 100644 --- a/backend/dataall/modules/redshift_datasets/api/datasets/types.py +++ b/backend/dataall/modules/redshift_datasets/api/datasets/types.py @@ -70,6 +70,7 @@ type=gql.Ref('RedshiftConnection'), resolver=resolve_dataset_connection, ), + gql.Field('addedTables', gql.Ref('RedshiftAddTableResult')), ], ) @@ -151,3 +152,8 @@ gql.Field('hasPrevious', gql.Boolean), ], ) + +RedshiftAddTableResult = gql.ObjectType( + name='RedshiftAddTableResult', + fields=[gql.Field('successTables', gql.ArrayType(gql.String)), gql.Field('errorTables', gql.ArrayType(gql.String))], +) diff --git a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py index f578894b0..ab803bf4b 100644 --- a/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py +++ b/backend/dataall/modules/redshift_datasets/services/redshift_dataset_service.py @@ -112,17 +112,14 @@ def import_redshift_dataset(uri, admin_group, data: dict): RedshiftDatasetService._attach_dataset_permissions(session, dataset, environment) DatasetIndexer.upsert(session=session, dataset_uri=dataset.datasetUri) - - for table in data.get('tables', []): - rs_table = RedshiftDatasetRepository.create_redshift_table( - session=session, - username=context.username, - dataset_uri=dataset.datasetUri, - data={'name': table}, - ) - RedshiftDatasetService._attach_table_permissions(session, dataset, environment, rs_table) - DatasetTableIndexer.upsert(session=session, table_uri=rs_table.rsTableUri) - + success_tables, error_tables = RedshiftDatasetService._create_redshift_tables( + session=session, + username=context.username, + dataset=dataset, + connection=connection, + tables=data.get('tables', []), + ) + dataset.addedTables = {'successTables': success_tables, 'errorTables': error_tables} return dataset @staticmethod @@ -160,6 +157,7 @@ def update_redshift_dataset(uri, data: dict): DatasetBaseRepository.update_dataset_activity(session, dataset, username) DatasetIndexer.upsert(session, dataset_uri=uri) + dataset.addedTables = {} return dataset @staticmethod @@ -205,24 +203,13 @@ def add_redshift_dataset_tables(uri, tables): datasetUri = uri with context.db_engine.scoped_session() as session: dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, datasetUri) + connection = RedshiftConnectionRepository.get_redshift_connection(session, dataset.connectionUri) dataset_tables = RedshiftDatasetRepository.list_redshift_dataset_tables(session, datasetUri) tables = [new_t for new_t in tables if new_t not in [t.name for t in dataset_tables]] - for table in tables: - rs_table = RedshiftDatasetRepository.create_redshift_table( - session=session, - username=context.username, - dataset_uri=datasetUri, - data={'name': table}, - ) - ResourcePolicyService.attach_resource_policy( - session=session, - group=dataset.SamlAdminGroupName, - permissions=REDSHIFT_DATASET_TABLE_ALL, - resource_uri=rs_table.rsTableUri, - resource_type=RedshiftTable.__name__, - ) - DatasetTableIndexer.upsert(session=session, table_uri=rs_table.rsTableUri) - return True + success_tables, error_tables = RedshiftDatasetService._create_redshift_tables( + session=session, username=context.username, dataset=dataset, connection=connection, tables=tables + ) + return {'successTables': success_tables, 'errorTables': error_tables} @staticmethod @TenantPolicyService.has_tenant_permission(MANAGE_REDSHIFT_DATASETS) @@ -264,6 +251,7 @@ def get_redshift_dataset(uri): dataset = RedshiftDatasetRepository.get_redshift_dataset_by_uri(session, uri) if dataset.SamlAdminGroupName in context.groups: dataset.userRoleForDataset = DatasetRole.Admin.value + dataset.addedTables = {} return dataset @staticmethod @@ -423,3 +411,35 @@ def _transfer_stewardship_to_new_stewards(session, dataset, new_stewards): ) RedshiftDatasetService._attach_additional_steward_permissions(session, dataset, new_stewards) return dataset + + @staticmethod + def _create_redshift_tables(session, username, connection, dataset, tables): + error_tables = [] + success_tables = [] + rs_tables = redshift_data_client( + account_id=dataset.AwsAccountId, region=dataset.region, connection=connection + ).list_redshift_tables(dataset.schema) + rs_tables_names = [t['name'] for t in rs_tables] + for table in tables: + if table not in rs_tables_names: + log.error( + f'{table=} does not exist in Redshift cluster or is not accessible by connection {connection.connectionUri}' + ) + error_tables.append(table) + else: + rs_table = RedshiftDatasetRepository.create_redshift_table( + session=session, + username=username, + dataset_uri=dataset.datasetUri, + data={'name': table}, + ) + ResourcePolicyService.attach_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + permissions=REDSHIFT_DATASET_TABLE_ALL, + resource_uri=rs_table.rsTableUri, + resource_type=RedshiftTable.__name__, + ) + DatasetTableIndexer.upsert(session=session, table_uri=rs_table.rsTableUri) + success_tables.append(table) + return success_tables, error_tables diff --git a/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js b/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js index 820c0dfe8..d07bb227a 100644 --- a/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js +++ b/frontend/src/modules/Redshift_Datasets/components/AddTablesModal.js @@ -57,13 +57,24 @@ export const AddTablesModal = (props) => { }) ); if (!response.errors) { - enqueueSnackbar('Tables added', { - anchorOrigin: { - horizontal: 'right', - vertical: 'top' - }, - variant: 'success' - }); + if (response.data.addRedshiftDatasetTables.successTables.length > 0) { + enqueueSnackbar( + `Tables added: ${response.data.addRedshiftDatasetTables.successTables}`, + { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + } + ); + } + if (response.data.addRedshiftDatasetTables.errorTables.length > 0) { + dispatch({ + type: SET_ERROR, + error: `The following tables could not be imported, either they do not exist or the connection used has no access to them: ${response.data.addRedshiftDatasetTables.errorTables}` + }); + } fetchItems(); setSelectedTables(null); } else { diff --git a/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js b/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js index ec001085f..ee71eaa76 100644 --- a/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js +++ b/frontend/src/modules/Redshift_Datasets/services/addRedshiftDatasetTables.js @@ -10,7 +10,10 @@ export const addRedshiftDatasetTables = ({ datasetUri, tables }) => ({ $datasetUri: String! $tables: [String]! ) { - addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) + addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) { + successTables + errorTables + } } ` }); diff --git a/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js b/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js index 4f476fd19..6a70937da 100644 --- a/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js +++ b/frontend/src/modules/Redshift_Datasets/services/importRedshiftDataset.js @@ -10,6 +10,10 @@ export const importRedshiftDataset = (input) => ({ datasetUri label userRoleForDataset + addedTables { + errorTables + successTables + } } } ` diff --git a/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js index 6aa4f5db2..989ad9a6d 100644 --- a/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js +++ b/frontend/src/modules/Redshift_Datasets/views/RSDatasetImportForm.js @@ -222,6 +222,29 @@ const RSDatasetImportForm = (props) => { }, variant: 'success' }); + if ( + response.data.importRedshiftDataset.addedTables.successTables.length > + 0 + ) { + enqueueSnackbar( + `Tables added: ${response.data.importRedshiftDataset.addedTables.successTables}`, + { + anchorOrigin: { + horizontal: 'right', + vertical: 'top' + }, + variant: 'success' + } + ); + } + if ( + response.data.importRedshiftDataset.addedTables.errorTables.length > 0 + ) { + dispatch({ + type: SET_ERROR, + error: `The following tables could not be imported, either they do not exist or the connection used has no access to them: ${response.data.importRedshiftDataset.addedTables.errorTables}` + }); + } navigate( `/console/redshift-datasets/${response.data.importRedshiftDataset.datasetUri}` ); diff --git a/tests/modules/redshift_datasets/conftest.py b/tests/modules/redshift_datasets/conftest.py index f2d1f2676..5297db189 100644 --- a/tests/modules/redshift_datasets/conftest.py +++ b/tests/modules/redshift_datasets/conftest.py @@ -222,7 +222,9 @@ def imported_redshift_dataset_1_no_tables(db, user, group, env_fixture, connecti @pytest.fixture(scope='function') -def imported_redshift_dataset_2_with_tables(db, user, group, env_fixture, connection1_serverless, api_context_1): +def imported_redshift_dataset_2_with_tables( + db, user, group, env_fixture, connection1_serverless, api_context_1, mock_redshift_data +): dataset = RedshiftDatasetService.import_redshift_dataset( uri=env_fixture.environmentUri, admin_group=group.name, diff --git a/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py index 2559d8501..5dc1ec847 100644 --- a/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py +++ b/tests/modules/redshift_datasets/test_unit_redshift_dataset_service.py @@ -61,7 +61,7 @@ def test_delete_redshift_dataset_unauthorized(imported_redshift_dataset_1_no_tab ).contains('UnauthorizedOperation', 'DELETE_REDSHIFT_DATASET', imported_redshift_dataset_1_no_tables.datasetUri) -def test_delete_redshift_dataset(env_fixture, group, connection1_serverless, api_context_1): +def test_delete_redshift_dataset(env_fixture, group, connection1_serverless, api_context_1, mock_redshift_data): dataset = RedshiftDatasetService.import_redshift_dataset( uri=env_fixture.environmentUri, admin_group=group.name, @@ -99,6 +99,17 @@ def test_add_redshift_dataset_tables(imported_redshift_dataset_1_no_tables, api_ assert_that(tables).contains_entry(count=1) +def test_add_redshift_dataset_tables_invalid_table( + imported_redshift_dataset_1_no_tables, api_context_1, mock_redshift_data +): + # When + response = RedshiftDatasetService.add_redshift_dataset_tables( + uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table-does-not-exist'] + ) + assert_that(response.get('errorTables')).contains('table-does-not-exist') + assert_that(response.get('successTables')).is_empty() + + def test_delete_redshift_dataset_table_unauthorized(imported_dataset_2_table_1, api_context_2): # When assert_that(RedshiftDatasetService.delete_redshift_dataset_table).raises(Exception).when_called_with( @@ -109,10 +120,10 @@ def test_delete_redshift_dataset_table_unauthorized(imported_dataset_2_table_1, def test_delete_redshift_dataset_table(imported_redshift_dataset_1_no_tables, api_context_1): # Given` response = RedshiftDatasetService.add_redshift_dataset_tables( - uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table-to-delete'] + uri=imported_redshift_dataset_1_no_tables.datasetUri, tables=['table4'] ) tables = RedshiftDatasetService.list_redshift_dataset_tables( - uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={'term': 'table-to-delete'} + uri=imported_redshift_dataset_1_no_tables.datasetUri, filter={'term': 'table4'} ) # When response = RedshiftDatasetService.delete_redshift_dataset_table(uri=tables['nodes'][0].rsTableUri) diff --git a/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py index 65cb118b6..1ed52059f 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py +++ b/tests_new/integration_tests/modules/redshift_datasets/dataset_queries.py @@ -242,8 +242,12 @@ def import_redshift_dataset( label userRoleForDataset connection { - connectionUri - } + connectionUri + } + addedTables { + errorTables + successTables + } } } """, @@ -303,7 +307,10 @@ def add_redshift_dataset_tables(client, dataset_uri, tables): $datasetUri: String! $tables: [String]! ) { - addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) + addRedshiftDatasetTables(datasetUri: $datasetUri, tables: $tables) { + successTables + errorTables + } } """, } diff --git a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py index 701d7f8f8..f86477d59 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py +++ b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_dataset.py @@ -125,11 +125,25 @@ def test_add_redshift_dataset_tables(client1, session_redshift_dataset_serverles response = add_redshift_dataset_tables( client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] ) - assert_that(response).is_true() + assert_that(response.successTables).contains(REDSHIFT_TABLE2) + assert_that(response.errorTables).is_empty() tables = list_redshift_dataset_tables(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) assert_that(tables.count).is_equal_to(initial_number_of_tables + 1) +def test_add_redshift_dataset_tables_invalid_table(client1, session_redshift_dataset_serverless): + initial_number_of_tables = list_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri + ).count + response = add_redshift_dataset_tables( + client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=['does-not-exist'] + ) + assert_that(response.successTables).is_empty() + assert_that(response.errorTables).contains('does-not-exist') + tables = list_redshift_dataset_tables(client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri) + assert_that(tables.count).is_equal_to(initial_number_of_tables) + + def test_add_redshift_dataset_tables_unauthorized(client2, session_redshift_dataset_serverless): assert_that(add_redshift_dataset_tables).raises(GqlError).when_called_with( client=client2, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] @@ -162,7 +176,7 @@ def test_delete_redshift_dataset_table(client1, session_redshift_dataset_serverl response = add_redshift_dataset_tables( client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, tables=[REDSHIFT_TABLE2] ) - assert_that(response).is_true() + assert_that(response.successTables).contains(REDSHIFT_TABLE2) table_2 = list_redshift_dataset_tables( client=client1, dataset_uri=session_redshift_dataset_serverless.datasetUri, term=REDSHIFT_TABLE2 ).nodes[0] From 3747c9daec0d524f47e062ef80ea74f67470506c Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:10:52 +0200 Subject: [PATCH 130/188] Integration tests executed on a real deployment as part of the CICD - Redshift Shares (#1643) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ MERGE AFTER #1636 ### Feature or Bugfix - Feature: Testing ### Detail Add integration tests for Redshift shares. Implements #1620 - Implemented inside the shares modules in a subdirectory so that each share type can have its own conftest but still re-use common methods from shares queries - This PR is focused on testing the Redshift shares functionality, it does not include all tests that test the workflow of the share (e.g. submit, reject...) - It does not validate if after a share the user has access to data. We could implement it using the Redshift Data API, but I left it as optional for a separate PR ### Tested Locally: ![image](https://github.com/user-attachments/assets/3a2acc79-d025-483f-949b-23e31b23d26e) ### Relates - https://github.com/data-dot-all/dataall/issues/1620 - https://github.com/data-dot-all/dataall/issues/1619 - https://github.com/data-dot-all/dataall/issues/1220 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../core/environment/cdk/environment_stack.py | 8 + tests_new/integration_tests/conftest.py | 4 +- .../redshift_datasets/connection_queries.py | 2 + .../redshift_datasets/global_conftest.py | 35 ++- .../test_redshift_connection.py | 24 +- .../modules/share_base/input_types.py | 12 - .../{share_base => shares}/__init__.py | 0 .../modules/{share_base => shares}/queries.py | 42 ++- .../redshift_datasets_shares/aws_clients.py | 23 ++ .../redshift_datasets_shares/conftest.py | 122 ++++++++ .../test_redshift_shares.py | 290 ++++++++++++++++++ .../s3_datasets_shares}/conftest.py | 4 +- .../shared_test_functions.py | 4 +- .../test_new_crossacc_s3_share.py | 8 +- .../test_persistent_crossacc_share.py | 4 +- .../modules/{share_base => shares}/types.py | 0 .../modules/{share_base => shares}/utils.py | 13 +- 17 files changed, 540 insertions(+), 55 deletions(-) delete mode 100644 tests_new/integration_tests/modules/share_base/input_types.py rename tests_new/integration_tests/modules/{share_base => shares}/__init__.py (100%) rename tests_new/integration_tests/modules/{share_base => shares}/queries.py (85%) create mode 100644 tests_new/integration_tests/modules/shares/redshift_datasets_shares/aws_clients.py create mode 100644 tests_new/integration_tests/modules/shares/redshift_datasets_shares/conftest.py create mode 100644 tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py rename tests_new/integration_tests/modules/{share_base => shares/s3_datasets_shares}/conftest.py (98%) rename tests_new/integration_tests/modules/{share_base => shares/s3_datasets_shares}/shared_test_functions.py (98%) rename tests_new/integration_tests/modules/{share_base => shares/s3_datasets_shares}/test_new_crossacc_s3_share.py (96%) rename tests_new/integration_tests/modules/{share_base => shares/s3_datasets_shares}/test_persistent_crossacc_share.py (95%) rename tests_new/integration_tests/modules/{share_base => shares}/types.py (100%) rename tests_new/integration_tests/modules/{share_base => shares}/utils.py (54%) diff --git a/backend/dataall/core/environment/cdk/environment_stack.py b/backend/dataall/core/environment/cdk/environment_stack.py index c978f944c..2a2a546c3 100644 --- a/backend/dataall/core/environment/cdk/environment_stack.py +++ b/backend/dataall/core/environment/cdk/environment_stack.py @@ -688,3 +688,11 @@ def create_integration_tests_role(self): resources=[f'arn:aws:quicksight:*:{self.account}:*'], ), ) + + self.test_role.add_to_policy( + iam.PolicyStatement( + actions=['redshift:DeauthorizeDataShare'], + effect=iam.Effect.ALLOW, + resources=[f'arn:aws:redshift:{self.region}:{self.account}:datashare:*/dataall*'], + ), + ) diff --git a/tests_new/integration_tests/conftest.py b/tests_new/integration_tests/conftest.py index fa7f78e8e..23e8f76a3 100644 --- a/tests_new/integration_tests/conftest.py +++ b/tests_new/integration_tests/conftest.py @@ -54,8 +54,8 @@ class RedshiftConnection: class TestData: users: dict[str, User] envs: dict[str, Env] - dashboards: dict[str, Dashboard] - redshift_connections: dict[str, RedshiftConnection] + dashboards: dict[str, Dashboard] = None + redshift_connections: dict[str, RedshiftConnection] = None @pytest.fixture(scope='session', autouse=True) diff --git a/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py b/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py index 5b5e3ea0c..1da6a0586 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py +++ b/tests_new/integration_tests/modules/redshift_datasets/connection_queries.py @@ -162,6 +162,8 @@ def create_redshift_connection( connectionUri connectionType redshiftType + name + nameSpaceId } } """, diff --git a/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py index d88dabe9c..0fb63a777 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py +++ b/tests_new/integration_tests/modules/redshift_datasets/global_conftest.py @@ -14,6 +14,7 @@ import_redshift_dataset, delete_redshift_dataset, list_redshift_dataset_tables, + add_redshift_dataset_tables, ) log = logging.getLogger(__name__) @@ -24,6 +25,13 @@ REDSHIFT_TABLE2 = 'nation' +@pytest.fixture(scope='session') +def redshift_connections(testdata): + if testdata.redshift_connections: + return testdata.redshift_connections + pytest.skip('redshift config is missing') + + def create_connection(client, env, group, name, conn_type, red_type, connection_data=RedshiftConnection): connection = create_redshift_connection( client=client, @@ -64,7 +72,7 @@ def create_connection(client, env, group, name, conn_type, red_type, connection_ @pytest.fixture(scope='session') -def session_connection_serverless_admin(client1, group1, session_env1, testdata): +def session_connection_serverless_admin(client1, group1, session_env1, redshift_connections): connection = None try: connection = create_connection( @@ -74,7 +82,7 @@ def session_connection_serverless_admin(client1, group1, session_env1, testdata) env=session_env1, group=group1, red_type='serverless', - connection_data=testdata.redshift_connections['connection_serverless_admin_session_env1'], + connection_data=redshift_connections['connection_serverless_admin_session_env1'], ) yield connection @@ -102,7 +110,7 @@ def session_connection_serverless_admin_group_with_permissions(client1, group5, @pytest.fixture(scope='session') -def session_connection_serverless_data_user(client1, group1, session_env1, testdata): +def session_connection_serverless_data_user(client1, group1, session_env1, redshift_connections): connection = None try: connection = create_connection( @@ -112,7 +120,7 @@ def session_connection_serverless_data_user(client1, group1, session_env1, testd env=session_env1, group=group1, red_type='serverless', - connection_data=testdata.redshift_connections['connection_serverless_data_user_session_env1'], + connection_data=redshift_connections['connection_serverless_data_user_session_env1'], ) yield connection finally: @@ -121,7 +129,7 @@ def session_connection_serverless_data_user(client1, group1, session_env1, testd @pytest.fixture(scope='session') -def session_connection_cluster_admin(client5, group5, session_cross_acc_env_1, testdata): +def session_connection_cluster_admin(client5, group5, session_cross_acc_env_1, redshift_connections): connection = None try: connection = create_connection( @@ -131,7 +139,7 @@ def session_connection_cluster_admin(client5, group5, session_cross_acc_env_1, t env=session_cross_acc_env_1, group=group5, red_type='cluster', - connection_data=testdata.redshift_connections['connection_cluster_admin_session_cross_acc_env_1'], + connection_data=redshift_connections['connection_cluster_admin_session_cross_acc_env_1'], ) yield connection finally: @@ -140,7 +148,7 @@ def session_connection_cluster_admin(client5, group5, session_cross_acc_env_1, t @pytest.fixture(scope='session') -def session_connection_cluster_data_user(client5, group5, session_cross_acc_env_1, testdata): +def session_connection_cluster_data_user(client5, group5, session_cross_acc_env_1, redshift_connections): connection = None try: connection = create_connection( @@ -150,7 +158,7 @@ def session_connection_cluster_data_user(client5, group5, session_cross_acc_env_ env=session_cross_acc_env_1, group=group5, red_type='cluster', - connection_data=testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'], + connection_data=redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'], ) yield connection finally: @@ -218,3 +226,14 @@ def session_redshift_dataset_cluster( finally: if dataset: delete_redshift_dataset(client=client5, dataset_uri=dataset.datasetUri) + + +@pytest.fixture(scope='session') +def session_redshift_dataset_cluster_table(client5, session_redshift_dataset_cluster): + add_redshift_dataset_tables( + client=client5, dataset_uri=session_redshift_dataset_cluster.datasetUri, tables=[REDSHIFT_TABLE1] + ) + tables = list_redshift_dataset_tables( + client=client5, dataset_uri=session_redshift_dataset_cluster.datasetUri, term=REDSHIFT_TABLE1 + ) + yield tables.nodes[0] diff --git a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py index 41b218487..4f13034fb 100644 --- a/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py +++ b/tests_new/integration_tests/modules/redshift_datasets/test_redshift_connection.py @@ -32,8 +32,8 @@ def test_create_connection(connection_fixture_name, connection_type, redshift_ty assert_that(connection.redshiftType).is_equal_to(redshift_type) -def test_create_serverless_connection_namespace_does_not_exist(client1, group1, session_env1, testdata): - connection_data = testdata.redshift_connections['connection_serverless_data_user_session_env1'] +def test_create_serverless_connection_namespace_does_not_exist(client1, group1, session_env1, redshift_connections): + connection_data = redshift_connections['connection_serverless_data_user_session_env1'] error_namespace_id = 'doesnotexist' assert_that(create_redshift_connection).raises(GqlError).when_called_with( client=client1, @@ -50,8 +50,8 @@ def test_create_serverless_connection_namespace_does_not_exist(client1, group1, ).contains('Redshift namespaceId', error_namespace_id, 'not exist') -def test_create_serverless_connection_workgroup_not_found(client1, group1, session_env1, testdata): - connection_data = testdata.redshift_connections['connection_serverless_data_user_session_env1'] +def test_create_serverless_connection_workgroup_not_found(client1, group1, session_env1, redshift_connections): + connection_data = redshift_connections['connection_serverless_data_user_session_env1'] error_workgroup = 'doesnotexist' assert_that(create_redshift_connection).raises(GqlError).when_called_with( client=client1, @@ -68,8 +68,8 @@ def test_create_serverless_connection_workgroup_not_found(client1, group1, sessi ).contains('Redshift workgroup', error_workgroup, 'not exist') -def test_create_cluster_connection_cluster_not_found(client5, group5, session_cross_acc_env_1, testdata): - connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] +def test_create_cluster_connection_cluster_not_found(client5, group5, session_cross_acc_env_1, redshift_connections): + connection_data = redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] error_cluster_id = 'doesnotexist' assert_that(create_redshift_connection).raises(GqlError).when_called_with( client=client5, @@ -90,8 +90,8 @@ def test_create_cluster_connection_cluster_not_encrypted(): pass -def test_create_connection_database_not_found(client5, group5, session_cross_acc_env_1, testdata): - connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] +def test_create_connection_database_not_found(client5, group5, session_cross_acc_env_1, redshift_connections): + connection_data = redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] error_database = 'doesnotexist' assert_that(create_redshift_connection).raises(GqlError).when_called_with( client=client5, @@ -107,8 +107,8 @@ def test_create_connection_database_not_found(client5, group5, session_cross_acc ).contains('Redshift database', error_database, 'not exist') -def test_create_connection_unauthorized(client1, group1, session_cross_acc_env_1, testdata): - connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] +def test_create_connection_unauthorized(client1, group1, session_cross_acc_env_1, redshift_connections): + connection_data = redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] assert_that(create_redshift_connection).raises(GqlError).when_called_with( client=client1, connection_name='errorConnection', @@ -123,8 +123,8 @@ def test_create_connection_unauthorized(client1, group1, session_cross_acc_env_1 ).contains('UnauthorizedOperation', 'CREATE_REDSHIFT_CONNECTION', session_cross_acc_env_1.environmentUri) -def test_delete_connection(client5, group5, session_cross_acc_env_1, testdata): - connection_data = testdata.redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] +def test_delete_connection(client5, group5, session_cross_acc_env_1, redshift_connections): + connection_data = redshift_connections['connection_cluster_data_user_session_cross_acc_env_1'] connection = create_redshift_connection( client=client5, connection_name='errorConnection', diff --git a/tests_new/integration_tests/modules/share_base/input_types.py b/tests_new/integration_tests/modules/share_base/input_types.py deleted file mode 100644 index 520225dc6..000000000 --- a/tests_new/integration_tests/modules/share_base/input_types.py +++ /dev/null @@ -1,12 +0,0 @@ -def NewShareObjectInput( - environmentUri, groupUri, principalId, principalType, requestPurpose, attachMissingPolicies, permissions -): - return { - 'environmentUri': environmentUri, - 'groupUri': groupUri, - 'principalId': principalId, - 'principalType': principalType, - 'requestPurpose': requestPurpose, - 'attachMissingPolicies': attachMissingPolicies, - 'permissions': permissions, - } diff --git a/tests_new/integration_tests/modules/share_base/__init__.py b/tests_new/integration_tests/modules/shares/__init__.py similarity index 100% rename from tests_new/integration_tests/modules/share_base/__init__.py rename to tests_new/integration_tests/modules/shares/__init__.py diff --git a/tests_new/integration_tests/modules/share_base/queries.py b/tests_new/integration_tests/modules/shares/queries.py similarity index 85% rename from tests_new/integration_tests/modules/share_base/queries.py rename to tests_new/integration_tests/modules/shares/queries.py index cbde3a598..ec6d9b1a8 100644 --- a/tests_new/integration_tests/modules/share_base/queries.py +++ b/tests_new/integration_tests/modules/shares/queries.py @@ -1,5 +1,4 @@ -from tests_new.integration_tests.modules.share_base.input_types import NewShareObjectInput -from tests_new.integration_tests.modules.share_base.types import ShareObject +from tests_new.integration_tests.modules.shares.types import ShareObject from typing import List @@ -9,18 +8,29 @@ def create_share_object( environmentUri, groupUri, principalId, + principalRoleName, principalType, requestPurpose, attachMissingPolicies, permissions, ): - variables = dataset_or_item_params - variables['input'] = NewShareObjectInput( - environmentUri, groupUri, principalId, principalType, requestPurpose, attachMissingPolicies, permissions - ) query = { 'operationName': 'createShareObject', - 'variables': variables, + 'variables': { + 'datasetUri': dataset_or_item_params.get('datasetUri'), + 'itemType': dataset_or_item_params.get('itemType'), + 'itemUri': dataset_or_item_params.get('itemUri'), + 'input': { + 'environmentUri': environmentUri, + 'groupUri': groupUri, + 'principalId': principalId, + 'principalRoleName': principalRoleName, + 'principalType': principalType, + 'requestPurpose': requestPurpose, + 'attachMissingPolicies': attachMissingPolicies, + 'permissions': permissions, + }, + }, 'query': f""" mutation createShareObject( $datasetUri: String! $itemType: String @@ -209,6 +219,24 @@ def verify_share_items(client, shareUri: str, shareItemsUris: List[str]): return response.data.verifyItemsShareObject +def reapply_share_items(client, shareUri: str, shareItemsUris: List[str]): + query = { + 'operationName': 'reApplyItemsShareObject', + 'variables': {'input': {'shareUri': shareUri, 'itemUris': shareItemsUris}}, + 'query': f""" + mutation reApplyItemsShareObject($input: ShareItemSelectorInput) {{ + reApplyItemsShareObject(input: $input) {{ + shareUri + status + }} + }} + """, + } + + response = client.query(query=query) + return response.data.reApplyItemsShareObject + + def revoke_share_items(client, shareUri: str, shareItemUris: List[str]): query = { 'operationName': 'revokeItemsShareObject', diff --git a/tests_new/integration_tests/modules/shares/redshift_datasets_shares/aws_clients.py b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/aws_clients.py new file mode 100644 index 000000000..bbc3da514 --- /dev/null +++ b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/aws_clients.py @@ -0,0 +1,23 @@ +import logging +from typing import Any, Dict +from botocore.exceptions import ClientError + +log = logging.getLogger(__name__) + + +class RedshiftClient: + def __init__(self, session, region): + self._client = session.client('redshift', region_name=region) + self._region = region + + def deauthorize_datashare(self, datashare_arn: str, target_account: str) -> Dict[str, Any]: + log.info('Deauthorizing Redshift datashare...') + try: + response = self._client.deauthorize_data_share( + DataShareArn=datashare_arn, ConsumerIdentifier=target_account + ) + log.info(f'Datashare deauthorized successfully: {datashare_arn}') + return response + except ClientError as e: + log.exception('Error deauthorizing datashare') + raise e diff --git a/tests_new/integration_tests/modules/shares/redshift_datasets_shares/conftest.py b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/conftest.py new file mode 100644 index 000000000..e8541788f --- /dev/null +++ b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/conftest.py @@ -0,0 +1,122 @@ +import logging +import pytest + +from integration_tests.modules.shares.queries import ( + create_share_object, + add_share_item, + revoke_share_items, + submit_share_object, + delete_share_object, + get_share_object, +) +from integration_tests.modules.shares.utils import check_share_ready + +REDSHIFT_PRINCIPAL_TYPE = 'RedshiftRole' # Value from backend Enum +REDSHIFT_ITEM_TYPE = 'RedshiftTable' # Value from backend Enum +REDSHIFT_TEST_ROLE_NAME = 'testrole' # Created following instructions in README + +log = logging.getLogger(__name__) + +""" +Tests cover 2 scenarios: +1. Cross account share from serverless cluster to provisioned cluster +2. Cross account share from provisioned cluster to serverless cluster +We have picked the most complex cases that should encapsulate the simpler ones (same account shares). + +Some test cases that require extra clusters have been skipped as they are well covered in the unit tests +# def test_create_redshift_share_invalid_clusters(): +# def test_create_redshift_share_invalid_source_connection(): +""" + + +def create_and_submit_share_request(client, dataset, rs_table, group, env, principal_id): + share = create_share_object( + client=client, + dataset_or_item_params={'datasetUri': dataset.datasetUri}, + environmentUri=env.environmentUri, + groupUri=group, + principalId=principal_id, + principalRoleName=REDSHIFT_TEST_ROLE_NAME, + principalType=REDSHIFT_PRINCIPAL_TYPE, + requestPurpose='Integration tests - Redshift shares', + attachMissingPolicies=False, + permissions=['Read'], + ) + share_item_uri = add_share_item( + client=client, shareUri=share.shareUri, itemUri=rs_table.rsTableUri, itemType=REDSHIFT_ITEM_TYPE + ) + submit_share_object( + client=client, + shareUri=share.shareUri, + ) + return share, share_item_uri + + +@pytest.fixture(scope='module') +def submitted_redshift_share_request_source_serverless( + client5, + group5, + session_redshift_dataset_serverless, + session_redshift_dataset_serverless_table, + session_connection_serverless_admin, + session_connection_cluster_admin, + session_cross_acc_env_1, +): + share = None + try: + share, share_item_uri = create_and_submit_share_request( + client=client5, + dataset=session_redshift_dataset_serverless, + rs_table=session_redshift_dataset_serverless_table, + group=group5, + env=session_cross_acc_env_1, + principal_id=session_connection_cluster_admin.connectionUri, + ) + yield share, share_item_uri + finally: + if share: + share = get_share_object(client=client5, shareUri=share.shareUri) + items_to_revoke = [ + item.shareItemUri + for item in share['items'].nodes + if item.status in ['Share_Succeeded', 'Revoke_Failed'] + ] + if items_to_revoke: + revoke_share_items(client=client5, shareUri=share.shareUri, shareItemUris=items_to_revoke) + check_share_ready(client=client5, shareUri=share.shareUri) + delete_share_object(client=client5, shareUri=share.shareUri) + + +@pytest.fixture(scope='module') +def submitted_redshift_share_request_source_cluster( + client1, + group1, + session_redshift_dataset_cluster, + session_redshift_dataset_cluster_table, + session_connection_serverless_admin, + session_connection_cluster_admin, + session_env1, +): + share = None + try: + share, share_item_uri = create_and_submit_share_request( + client=client1, + dataset=session_redshift_dataset_cluster, + rs_table=session_redshift_dataset_cluster_table, + group=group1, + env=session_env1, + principal_id=session_connection_serverless_admin.connectionUri, + ) + yield share, share_item_uri + finally: + if share: + share = get_share_object(client=client1, shareUri=share.shareUri) + items_to_revoke = [ + item.shareItemUri + for item in share['items'].nodes + if item.status in ['Share_Succeeded', 'Revoke_Failed'] + ] + if items_to_revoke: + revoke_share_items(client=client1, shareUri=share.shareUri, shareItemUris=items_to_revoke) + check_share_ready(client=client1, shareUri=share.shareUri) + delete_share_object(client=client1, shareUri=share.shareUri) diff --git a/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py new file mode 100644 index 000000000..f4131919e --- /dev/null +++ b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py @@ -0,0 +1,290 @@ +from assertpy import assert_that +import pytest + +from integration_tests.errors import GqlError +from integration_tests.modules.shares.utils import ( + check_share_ready, + check_share_items_verified, + check_share_items_reapplied, +) +from integration_tests.modules.shares.queries import ( + approve_share_object, + get_share_object, + create_share_object, + revoke_share_items, + verify_share_items, + reapply_share_items, +) +from integration_tests.modules.shares.redshift_datasets_shares.conftest import ( + REDSHIFT_TEST_ROLE_NAME, + REDSHIFT_PRINCIPAL_TYPE, + REDSHIFT_ITEM_TYPE, +) +from integration_tests.modules.shares.redshift_datasets_shares.aws_clients import RedshiftClient + + +@pytest.mark.parametrize( + 'share_object_fixture_name', + [ + pytest.param( + 'submitted_redshift_share_request_source_serverless', + marks=pytest.mark.dependency(name='serverless_share_submitted'), + ), + pytest.param( + 'submitted_redshift_share_request_source_cluster', + marks=pytest.mark.dependency(name='cluster_share_submitted'), + ), + ], +) +def test_creation_submission_redshift_share(share_object_fixture_name, request): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + assert_that(share.status).is_equal_to('Draft') + assert_that(share.shareUri).is_not_none() + assert_that(share_item_uri).is_not_none() + + +@pytest.mark.parametrize( + 'client_name,share_object_fixture_name', + [ + pytest.param( + 'client1', + 'submitted_redshift_share_request_source_serverless', + marks=pytest.mark.dependency(name='serverless_share_approved', depends=['serverless_share_submitted']), + ), + pytest.param( + 'client5', + 'submitted_redshift_share_request_source_cluster', + marks=pytest.mark.dependency(name='cluster_share_approved', depends=['cluster_share_submitted']), + ), + ], +) +def test_approve_redshift_share(client_name, share_object_fixture_name, request): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + client = request.getfixturevalue(client_name) + approve_share_object(client=client, shareUri=share.shareUri) + # Wait until share is processed + check_share_ready(client=client, shareUri=share.shareUri) + updated_share = get_share_object(client, share.shareUri, {'isShared': True}) + items = updated_share['items'] + assert_that(updated_share.status).is_equal_to('Processed') + assert_that(items.count).is_equal_to(1) + assert_that(items.nodes[0].shareItemUri).is_equal_to(share_item_uri) + assert_that(items.nodes[0].itemType).is_equal_to(REDSHIFT_ITEM_TYPE) + assert_that(items.nodes[0].status).is_equal_to('Share_Succeeded') + + +@pytest.mark.parametrize( + 'client_name,share_object_fixture_name', + [ + pytest.param( + 'client1', + 'submitted_redshift_share_request_source_serverless', + marks=pytest.mark.dependency( + name='serverless_share_verified_healthy', depends=['serverless_share_approved'] + ), + ), + pytest.param( + 'client5', + 'submitted_redshift_share_request_source_cluster', + marks=pytest.mark.dependency(name='cluster_share_verified_healthy', depends=['cluster_share_approved']), + ), + ], +) +def test_verify_redshift_share_healthy(client_name, share_object_fixture_name, request): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + client = request.getfixturevalue(client_name) + share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + last_verification_time = share['items'].nodes[0].lastVerificationTime + verify_share_items(client=client, shareUri=share.shareUri, shareItemsUris=[share_item_uri]) + # Wait until verification task has completed + check_share_items_verified(client=client, shareUri=share.shareUri) + verified_share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + item = verified_share['items'].nodes[0] + assert_that(item.healthStatus).is_equal_to('Healthy') + assert_that(item.lastVerificationTime).is_not_equal_to(last_verification_time) + + +@pytest.mark.parametrize( + 'client_name,share_object_fixture_name,source_aws_client_name,source_env_name,target_env_name,source_connection_name,target_connection_name', + [ + pytest.param( + 'client1', + 'submitted_redshift_share_request_source_serverless', + 'session_env1_aws_client', + 'session_env1', + 'session_cross_acc_env_1', + 'session_connection_serverless_admin', + 'session_connection_cluster_admin', + marks=pytest.mark.dependency( + name='serverless_share_verified_unhealthy', depends=['serverless_share_verified_healthy'] + ), + ), + pytest.param( + 'client5', + 'submitted_redshift_share_request_source_cluster', + 'session_cross_acc_env_1_aws_client', + 'session_cross_acc_env_1', + 'session_env1', + 'session_connection_cluster_admin', + 'session_connection_serverless_admin', + marks=pytest.mark.dependency( + name='cluster_share_verified_unhealthy', depends=['cluster_share_verified_healthy'] + ), + ), + ], +) +def test_verify_redshift_share_unhealthy( + client_name, + share_object_fixture_name, + source_aws_client_name, + source_env_name, + target_env_name, + source_connection_name, + target_connection_name, + request, +): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + client = request.getfixturevalue(client_name) + source_aws_client = request.getfixturevalue(source_aws_client_name) + source_env = request.getfixturevalue(source_env_name) + target_env = request.getfixturevalue(target_env_name) + source_connection = request.getfixturevalue(source_connection_name) + target_connection = request.getfixturevalue(target_connection_name) + share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + last_verification_time = share['items'].nodes[0].lastVerificationTime + # Make the share item unhealthy by deauthorizing the datashare + datashare_name = f'dataall_{target_connection.nameSpaceId}_{share.datasetUri}' + clean_datashare_name = datashare_name.replace('-', '_') + datashare_arn = f'arn:aws:redshift:{source_env.region}:{source_env.AwsAccountId}:datashare:{source_connection.nameSpaceId}/{clean_datashare_name}' + RedshiftClient(session=source_aws_client, region=source_env.region).deauthorize_datashare( + datashare_arn=datashare_arn, target_account=target_env.get('AwsAccountId') + ) + verify_share_items(client=client, shareUri=share.shareUri, shareItemsUris=[share_item_uri]) + # Wait until verification task has completed + check_share_items_verified(client=client, shareUri=share.shareUri) + verified_share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + item = verified_share['items'].nodes[0] + assert_that(item.healthStatus).is_equal_to('Unhealthy') + assert_that(item.lastVerificationTime).is_not_equal_to(last_verification_time) + + +@pytest.mark.parametrize( + 'client_name,share_object_fixture_name', + [ + pytest.param( + 'client1', + 'submitted_redshift_share_request_source_serverless', + marks=pytest.mark.dependency( + name='serverless_share_reapply', depends=['serverless_share_verified_unhealthy'] + ), + ), + pytest.param( + 'client5', + 'submitted_redshift_share_request_source_cluster', + marks=pytest.mark.dependency(name='cluster_share_reapply', depends=['cluster_share_verified_unhealthy']), + ), + ], +) +def test_reapply_redshift_share(client_name, share_object_fixture_name, request): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + client = request.getfixturevalue(client_name) + share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + ## reapply share item + reapply_share_items(client=client, shareUri=share.shareUri, shareItemsUris=[share_item_uri]) + # Wait until reapply task has completed + check_share_items_reapplied(client=client, shareUri=share.shareUri) + ## Verify again + verify_share_items(client=client, shareUri=share.shareUri, shareItemsUris=[share_item_uri]) + # Wait until verification task has completed + check_share_items_verified(client=client, shareUri=share.shareUri) + verified_share = get_share_object(client=client, shareUri=share.shareUri, filter={'isShared': True}) + item = verified_share['items'].nodes[0] + assert_that(item.healthStatus).is_equal_to('Healthy') + + +@pytest.mark.parametrize( + 'client_name,share_object_fixture_name', + [ + pytest.param( + 'client1', + 'submitted_redshift_share_request_source_serverless', + marks=pytest.mark.dependency(name='serverless_share_revoked', depends=['serverless_share_reapply']), + ), + pytest.param( + 'client5', + 'submitted_redshift_share_request_source_cluster', + marks=pytest.mark.dependency(name='cluster_share_revoked', depends=['cluster_share_reapply']), + ), + ], +) +def test_revoke_redshift_share(client_name, share_object_fixture_name, request): + share, share_item_uri = request.getfixturevalue(share_object_fixture_name) + client = request.getfixturevalue(client_name) + revoke_share_items(client=client, shareUri=share.shareUri, shareItemUris=[share_item_uri]) + # Wait until share is processed + check_share_ready(client=client, shareUri=share.shareUri) + updated_share = get_share_object(client, share.shareUri, {'isShared': True}) + items = updated_share['items'] + assert_that(updated_share.status).is_equal_to('Processed') + assert_that(items.count).is_equal_to(1) + assert_that(items.nodes[0].status).is_equal_to('Revoke_Succeeded') + + +def test_create_redshift_share_invalid_target_connection( + client5, group5, session_cross_acc_env_1, session_connection_cluster_data_user, session_redshift_dataset_serverless +): + # DATA_USER connections cannot be used as target connection for a share. Even if used by the connection owners. + assert_that(create_share_object).raises(GqlError).when_called_with( + client=client5, + dataset_or_item_params={'datasetUri': session_redshift_dataset_serverless.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalRoleName=REDSHIFT_TEST_ROLE_NAME, + principalId=session_connection_cluster_data_user.connectionUri, + principalType=REDSHIFT_PRINCIPAL_TYPE, + requestPurpose='Integration tests - Redshift shares', + attachMissingPolicies=False, + permissions=['Read'], + ).contains( + 'UnauthorizedOperation', + 'CREATE_SHARE_REQUEST_WITH_CONNECTION', + session_connection_cluster_data_user.connectionUri, + ) + + +def test_create_redshift_share_unauthorized_target_connection( + client5, group5, session_env1, session_connection_serverless_admin, session_redshift_dataset_cluster +): + assert_that(create_share_object).raises(GqlError).when_called_with( + client=client5, + dataset_or_item_params={'datasetUri': session_redshift_dataset_cluster.datasetUri}, + environmentUri=session_env1.environmentUri, + groupUri=group5, + principalRoleName=REDSHIFT_TEST_ROLE_NAME, + principalId=session_connection_serverless_admin.connectionUri, + principalType=REDSHIFT_PRINCIPAL_TYPE, + requestPurpose='Integration tests - Redshift shares', + attachMissingPolicies=False, + permissions=['Read'], + ).contains( + 'UnauthorizedOperation', + 'CREATE_SHARE_REQUEST_WITH_CONNECTION', + session_connection_serverless_admin.connectionUri, + ) + + +def test_create_redshift_share_invalid_redshift_role( + client5, group5, session_cross_acc_env_1, session_connection_cluster_admin, session_redshift_dataset_serverless +): + assert_that(create_share_object).raises(GqlError).when_called_with( + client=client5, + dataset_or_item_params={'datasetUri': session_redshift_dataset_serverless.datasetUri}, + environmentUri=session_cross_acc_env_1.environmentUri, + groupUri=group5, + principalRoleName='doesnotexist', + principalId=session_connection_cluster_admin.connectionUri, + principalType=REDSHIFT_PRINCIPAL_TYPE, + requestPurpose='Integration tests - Redshift shares', + attachMissingPolicies=False, + permissions=['Read'], + ).contains('PrincipalRoleNotFound', 'doesnotexist', session_connection_cluster_admin.name) diff --git a/tests_new/integration_tests/modules/share_base/conftest.py b/tests_new/integration_tests/modules/shares/s3_datasets_shares/conftest.py similarity index 98% rename from tests_new/integration_tests/modules/share_base/conftest.py rename to tests_new/integration_tests/modules/shares/s3_datasets_shares/conftest.py index 7dffad7f6..f195a545f 100644 --- a/tests_new/integration_tests/modules/share_base/conftest.py +++ b/tests_new/integration_tests/modules/shares/s3_datasets_shares/conftest.py @@ -6,7 +6,7 @@ remove_consumption_role, list_environment_consumption_roles, ) -from tests_new.integration_tests.modules.share_base.queries import ( +from tests_new.integration_tests.modules.shares.queries import ( create_share_object, delete_share_object, get_share_object, @@ -15,7 +15,7 @@ approve_share_object, add_share_item, ) -from tests_new.integration_tests.modules.share_base.utils import check_share_ready +from tests_new.integration_tests.modules.shares.utils import check_share_ready test_session_cons_role_name = 'dataall-test-ShareTestConsumptionRole' test_persistent_cons_role_name = 'dataall-test-PersistentConsumptionRole' diff --git a/tests_new/integration_tests/modules/share_base/shared_test_functions.py b/tests_new/integration_tests/modules/shares/s3_datasets_shares/shared_test_functions.py similarity index 98% rename from tests_new/integration_tests/modules/share_base/shared_test_functions.py rename to tests_new/integration_tests/modules/shares/s3_datasets_shares/shared_test_functions.py index f494d8921..7032cf4d3 100644 --- a/tests_new/integration_tests/modules/share_base/shared_test_functions.py +++ b/tests_new/integration_tests/modules/shares/s3_datasets_shares/shared_test_functions.py @@ -3,7 +3,7 @@ import boto3 from tests_new.integration_tests.core.environment.queries import get_environment_access_token -from tests_new.integration_tests.modules.share_base.queries import ( +from tests_new.integration_tests.modules.shares.queries import ( get_share_object, get_s3_consumption_data, verify_share_items, @@ -13,7 +13,7 @@ approve_share_object, remove_share_item, ) -from tests_new.integration_tests.modules.share_base.utils import ( +from tests_new.integration_tests.modules.shares.utils import ( check_share_items_verified, check_share_ready, ) diff --git a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py b/tests_new/integration_tests/modules/shares/s3_datasets_shares/test_new_crossacc_s3_share.py similarity index 96% rename from tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py rename to tests_new/integration_tests/modules/shares/s3_datasets_shares/test_new_crossacc_s3_share.py index fb0eb40e4..bae4e0ad9 100644 --- a/tests_new/integration_tests/modules/share_base/test_new_crossacc_s3_share.py +++ b/tests_new/integration_tests/modules/shares/s3_datasets_shares/test_new_crossacc_s3_share.py @@ -1,8 +1,8 @@ import pytest from assertpy import assert_that -from tests_new.integration_tests.modules.share_base.conftest import clean_up_share -from tests_new.integration_tests.modules.share_base.queries import ( +from integration_tests.modules.shares.s3_datasets_shares.conftest import clean_up_share +from tests_new.integration_tests.modules.shares.queries import ( create_share_object, submit_share_object, add_share_item, @@ -12,11 +12,11 @@ update_share_request_reason, update_share_reject_reason, ) -from tests_new.integration_tests.modules.share_base.utils import ( +from tests_new.integration_tests.modules.shares.utils import ( check_share_ready, ) -from tests_new.integration_tests.modules.share_base.shared_test_functions import ( +from integration_tests.modules.shares.s3_datasets_shares.shared_test_functions import ( check_share_items_access, check_verify_share_items, revoke_and_check_all_shared_items, diff --git a/tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py b/tests_new/integration_tests/modules/shares/s3_datasets_shares/test_persistent_crossacc_share.py similarity index 95% rename from tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py rename to tests_new/integration_tests/modules/shares/s3_datasets_shares/test_persistent_crossacc_share.py index 737586f16..a7567db82 100644 --- a/tests_new/integration_tests/modules/share_base/test_persistent_crossacc_share.py +++ b/tests_new/integration_tests/modules/shares/s3_datasets_shares/test_persistent_crossacc_share.py @@ -1,5 +1,5 @@ -from tests_new.integration_tests.modules.share_base.utils import check_share_ready -from tests_new.integration_tests.modules.share_base.shared_test_functions import ( +from tests_new.integration_tests.modules.shares.utils import check_share_ready +from integration_tests.modules.shares.s3_datasets_shares.shared_test_functions import ( check_share_items_access, check_verify_share_items, revoke_and_check_all_shared_items, diff --git a/tests_new/integration_tests/modules/share_base/types.py b/tests_new/integration_tests/modules/shares/types.py similarity index 100% rename from tests_new/integration_tests/modules/share_base/types.py rename to tests_new/integration_tests/modules/shares/types.py diff --git a/tests_new/integration_tests/modules/share_base/utils.py b/tests_new/integration_tests/modules/shares/utils.py similarity index 54% rename from tests_new/integration_tests/modules/share_base/utils.py rename to tests_new/integration_tests/modules/shares/utils.py index 91887bedc..e5fe1a900 100644 --- a/tests_new/integration_tests/modules/share_base/utils.py +++ b/tests_new/integration_tests/modules/shares/utils.py @@ -1,4 +1,4 @@ -from tests_new.integration_tests.modules.share_base.queries import get_share_object +from tests_new.integration_tests.modules.shares.queries import get_share_object from tests_new.integration_tests.utils import poller @@ -11,10 +11,10 @@ def is_share_in_progress(share): ] -def is_all_items_verified(share): +def are_all_items_not_in_status(share, check_status): items = share['items'].nodes statuses = [item.healthStatus for item in items] - return not ('PendingVerify' in statuses or 'PendingReApply' in statuses) + return check_status not in statuses @poller(check_success=lambda share: not is_share_in_progress(share), timeout=600) @@ -22,6 +22,11 @@ def check_share_ready(client, shareUri): return get_share_object(client, shareUri) -@poller(check_success=lambda share: is_all_items_verified(share), timeout=600) +@poller(check_success=lambda share: are_all_items_not_in_status(share, 'PendingVerify'), timeout=600) def check_share_items_verified(client, shareUri): return get_share_object(client, shareUri) + + +@poller(check_success=lambda share: are_all_items_not_in_status(share, 'PendingReApply'), timeout=600) +def check_share_items_reapplied(client, shareUri): + return get_share_object(client, shareUri) From 6cf2389a8f6a57a2d1a2c1ed53e683c44a165e16 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Thu, 24 Oct 2024 11:25:37 +0200 Subject: [PATCH 131/188] Upgrade `http-proxy-middleware` 2.0.7 (#1656) ### Feature or Bugfix - Upgrade dependencies ### Detail Upgrade `http-proxy-middleware` from 2.0.6 -> 2.0.7 Solves: https://github.com/advisories/GHSA-c7qv-q95q-8v27 ### Relates - https://github.com/advisories/GHSA-c7qv-q95q-8v27 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- frontend/package-lock.json | 6 +++--- frontend/package.json | 6 ++++-- frontend/yarn.lock | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b25a528f7..5378d63cd 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -20885,9 +20885,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", diff --git a/frontend/package.json b/frontend/package.json index 887716522..8e4ad8aa5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -100,7 +100,8 @@ "path-to-regexp": "0.1.10", "body-parser": "^1.20.3", "send": "0.19.0", - "rollup": "3.29.5" + "rollup": "3.29.5", + "http-proxy-middleware": "2.0.7" }, "resolutions": { "react-redux": "^7.2.6", @@ -120,7 +121,8 @@ "path-to-regexp": "0.1.10", "body-parser": "^1.20.3", "send": "0.19.0", - "rollup": "3.29.5" + "rollup": "3.29.5", + "http-proxy-middleware": "2.0.7" }, "devDependencies": { "env-cmd": "^10.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index e21471454..34b4ebbb9 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -9201,10 +9201,10 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== +http-proxy-middleware@2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" From a4ba6cb16ae7f3d1b2606ddc68c8749642236613 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Thu, 24 Oct 2024 12:17:37 +0200 Subject: [PATCH 132/188] Add forceDelete to shareObjects to clean-up all shareItems (#1646) ### Feature or Bugfix - Feature ### Detail Implements #1645 for share requests. This PR adds a new input field in the deleteShareObject API called `forceDelete` that allows data.all users to force the deletion of a share object and all of its share items even if there are share items that are in shared states (e.g. Share_Succeeded, Revoke_Failed, Share_In_Progress...). - [X] Delete of the metadata in RDS - [X] Clean-up share AWS resources/actions as much as possible The use-case is explained in #1645, but more specifically for shares, the main scenario are shares that have orphan resources, like an S3 Bucket or an IAM role that has been deleted. In this cases the users would have to re-create the resources and then revoke them and delete them, which is quite cumbersome. An easier way forward is to force deletion and clean-up. This feature is intended for developers and maintainers that call the APIs programmatically and only for this specific error handling situations. ### Testing - [X] Deployed in AWS - [X] A share with shared items throws an error when force_delete = False - [X] A share without shared items is deleted without any clean-up tasks for any value of force_delete - [X] A share with shared items is cleaned up when force_delete = True - the ECS triggers clean-up task that successfully wipes: - [X] Broken S3 Bucket share - remove bucket policy statements - [X] Broken S3 Access Points share - delete folder - [X] Broken Glue table share - remove Lake Formation permissions to target role in source account - [X] Broken Redshift table share - delete one of 2 shared tables For each of the above cases I verified in the CloudWatch logs that the manual errors introduced were handled gracefully and that they clean-up task was able to clean-up the shares. ### Relates - #1645 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../redshift_table_share_processor.py | 148 +++++++++++++++++- .../glue_table_share_processor.py | 143 ++++++++++++++++- .../s3_access_point_share_processor.py | 62 ++++++++ .../s3_bucket_share_processor.py | 53 +++++++ .../modules/shares_base/api/mutations.py | 5 +- .../modules/shares_base/api/resolvers.py | 4 +- .../db/share_state_machines_repositories.py | 7 + .../shares_base/handlers/ecs_share_handler.py | 5 + .../services/share_manager_utils.py | 8 + .../services/share_object_service.py | 69 ++++---- .../services/share_processor_manager.py | 5 + .../shares_base/services/sharing_service.py | 37 ++++- .../shares_base/tasks/share_manager_task.py | 17 +- .../modules/s3_datasets_shares/test_share.py | 2 +- 14 files changed, 516 insertions(+), 49 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py index 30750f095..ec9a05932 100644 --- a/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py +++ b/backend/dataall/modules/redshift_datasets_shares/services/redshift_table_share_processor.py @@ -13,7 +13,8 @@ ShareObjectActions, ShareItemActions, ) -from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_object_service import ShareObjectService +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter, execute_and_suppress_exception from dataall.modules.redshift_datasets.db.redshift_models import RedshiftTable from dataall.modules.redshift_datasets.db.redshift_connection_repositories import RedshiftConnectionRepository from dataall.modules.redshift_datasets.services.redshift_enums import RedshiftType @@ -603,3 +604,148 @@ def verify_shares(self) -> bool: self.session, share_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() ) return True + + def cleanup_shares(self) -> bool: + """ + For each table: + Update table status with Start Action (Revoke_Approved ---> Revoke_In_Progress) + try: + 1) (in target namespace) Revoke access to the revoked tables to the redshift role in external schema (if schema exists) + 2) (in target namespace) Revoke access to the revoked tables to the redshift role in self.local_db (if database exists) + 3) (in source namespace) If that table is not shared in this namespace, remove table from datashare (if datashare exists) + except: + Update table status with Failure Action (Revoke_In_Progress ---> Revoke_Failed) + If the previous is successful, we proceed to clean-up shared resources across datashares: + try: + 4) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the external schema to the redshift role + 5) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the self.local_db to the redshift role + 6) (in target namespace) If no more tables are shared with any role in this namespace, drop external schema + 7) (in target namespace) If no more tables are shared with any role in this namespace, drop local database + 8) (in source namespace) If no more tables are shared with any role in this namespace, drop datashare + # Drop datashare deletes it from source and target, alongside its permissions (for both same and cross account) + Update NON-FAILED tables with Success Action (Revoke_In_Progress ---> Revoke_Succeeded) + except: + Update tables with Failure Action (Revoke_In_Progress ---> Revoke_Failed) + Returns + ------- + True if share is revoked successfully + """ + log.info('##### Starting Cleaning up Redshift tables #######') + if not self.tables: + log.info('No Redshift tables to revoke. Skipping...') + else: + self._initialize_clients() + for table in self.tables: + log.info(f'Revoking access to table {table}...') + local_db_exists = self.redshift_data_client_in_target.check_database_exists(database=self.local_db) + # 1) (in target namespace) Revoke access to the revoked tables to the redshift role in external schema (if schema exists) + if local_db_exists and self.redshift_data_client_in_target.check_schema_exists( + schema=self.external_schema, database=self.target_connection.database + ): + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.revoke_select_table_access_to_redshift_role, + schema=self.external_schema, + table=table.name, + rs_role=self.redshift_role, + ) + else: + log.info( + 'External schema does not exist or local database does not exist, permissions cannot be revoked' + ) + # 2) (in target namespace) Revoke access to the revoked tables to the redshift role in local_db (if database exists) + if local_db_exists: + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.revoke_select_table_access_to_redshift_role, + database=self.local_db, + schema=self.dataset.schema, + table=table.name, + rs_role=self.redshift_role, + ) + else: + log.info('Database does not exist, no permissions need to be revoked') + # 3) (in source namespace) If that table is not shared in this namespace, remove table from datashare (if datashare exists) + if ( + RedshiftShareRepository.count_other_shared_items_redshift_table_with_connection( + session=self.session, + share_uri=self.share.shareUri, + table_uri=table.rsTableUri, + connection_uri=self.share.principalId, + ) + == 0 + ): + log.info( + f'No other share items are sharing this table {table.name} with this namespace {self.target_connection.nameSpaceId}' + ) + if self.redshift_data_client_in_source.check_datashare_exists(self.datashare_name): + execute_and_suppress_exception( + func=self.redshift_data_client_in_source.remove_table_from_datashare, + datashare=self.datashare_name, + schema=self.dataset.schema, + table_name=table.name, + ) + # Delete share item + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share.shareUri, table.rsTableUri + ) + self.session.delete(share_item) + self.session.commit() + + log.info('Cleaning up shared resources in redshift datashares...') + # 4) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the external schema to the redshift role + # 5) (in target namespace) If no more tables are shared with the redshift role, revoke usage access to the local_db to the redshift role + if ( + RedshiftShareRepository.count_dataset_shared_items_with_redshift_role( + session=self.session, + dataset_uri=self.dataset.datasetUri, + rs_role=self.redshift_role, + connection_uri=self.share.principalId, + ) + == 0 + ): # In this check, if a table is in Revoke_In_Progress it does not count as shared state + log.info(f'No other tables of this dataset are shared with this redshift role {self.redshift_role}') + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.revoke_schema_usage_access_to_redshift_role, + schema=self.external_schema, + rs_role=self.redshift_role, + ) + if local_db_exists: + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.revoke_database_usage_access_to_redshift_role, + database=self.local_db, + rs_role=self.redshift_role, + ) + else: + log.info('Database does not exist, no permissions need to be revoked') + # 6) (in target namespace) If no more tables are shared with any role in this namespace, drop external schema + # 7) (in target namespace) If no more tables are shared with any role in this namespace, drop local database + # 8) (in source namespace) If no more tables are shared with any role in this namespace, drop datashare + if ( + RedshiftShareRepository.count_dataset_shared_items_with_namespace( + session=self.session, + dataset_uri=self.dataset.datasetUri, + connection_uri=self.share.principalId, + ) + == 0 + ): + log.info( + f'No other tables of this dataset are shared with this namespace {self.target_connection.nameSpaceId}' + ) + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.drop_schema, schema=self.external_schema + ) + execute_and_suppress_exception( + func=self.redshift_data_client_in_target.drop_database, database=self.local_db + ) + execute_and_suppress_exception( + func=self.redshift_data_client_in_source.drop_datashare, datashare=self.datashare_name + ) + # Check share items in share and delete share + remaining_share_items = ShareObjectRepository.get_all_share_items_in_share( + session=self.session, share_uri=self.share_data.share.shareUri + ) + if not remaining_share_items: + ShareObjectService.deleting_share_permissions( + session=self.session, share=self.share_data.share, dataset=self.share_data.dataset + ) + self.session.delete(self.share_data.share) + return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py index 284875416..97282b574 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py @@ -21,10 +21,11 @@ from dataall.modules.shares_base.db.share_state_machines_repositories import ShareStatusRepository from dataall.modules.s3_datasets_shares.db.s3_share_object_repositories import S3ShareObjectRepository from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM -from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter +from dataall.modules.shares_base.services.share_manager_utils import ShareErrorFormatter, execute_and_suppress_exception from dataall.modules.shares_base.services.sharing_service import ShareData from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface +from dataall.modules.shares_base.services.share_object_service import ShareObjectService log = logging.getLogger(__name__) @@ -434,3 +435,143 @@ def verify_shares(self) -> bool: self.session, share_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() ) return True + + def cleanup_shares(self) -> bool: + """ + 0) Check if source account details are properly initialized and initialize the Glue and LF clients + 1) Try to Grant Pivot Role all database permissions to the shared database + 2) For each revoked table: + b) Check if table exists on glue catalog + c) Check if resource link table exists in target account + d) Check if the table is shared in other share requests to this target account + e) If c is True (resource link table exists), try to revoke permission to principals to resource link table + f) If c is True (resource link table exists), try to revoke permission to principals to table (and for QS Group if no other shares present for table) + g) If c is True and (old-share or (new-share and d is True, no other shares of this table)) then try to delete resource link table + g) If d is True (no other shares of this table with target), try to revoke permissions to target account to the original table + h) delete share item + 3) Check if there are existing_shared_tables for this dataset with target environment + 4) If no existing_shared_tables, try delete shared database + 5) delete share + + Returns + ------- + True + """ + log.info('##### Starting Cleaning-up tables #######') + manager = self._initialize_share_manager(self.tables) + if not self.tables: + log.info('No tables to revoke. Skipping...') + else: + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + log.info(f'Principal role {self.share_data.share.principalRoleName} is not found.') + if None in [ + manager.source_account_id, + manager.source_account_region, + manager.source_database_name, + ]: + raise Exception( + 'Source account details not initialized properly. Please check if the catalog account is properly onboarded on data.all' + ) + manager.initialize_clients() + execute_and_suppress_exception(func=manager.grant_pivot_role_all_database_permissions_to_shared_database) + + for table in self.tables: + log.info(f'Revoking access to table {table.tableUri}/{table.GlueTableName}...') + share_item = ShareObjectRepository.find_sharable_item( + self.session, self.share_data.share.shareUri, table.tableUri + ) + share_item_filter = None + if share_item.attachedDataFilterUri: + share_item_filter = ShareObjectItemRepository.get_share_item_filter_by_uri( + self.session, share_item.attachedDataFilterUri + ) + log.info(f'Revoking access to table: {table.GlueTableName} ') + execute_and_suppress_exception( + func=manager.check_table_exists_in_source_database, share_item=share_item, table=table + ) + try: + log.info('Check resource link table exists') + resource_link_name = self._build_resource_link_name(table.GlueTableName, share_item_filter) + + resource_link_table_exists = manager.check_resource_link_table_exists_in_target_database( + resource_link_name + ) + + if resource_link_table_exists: + log.info('Revoking principal permissions from resource link table') + execute_and_suppress_exception( + func=manager.revoke_principals_permissions_to_resource_link_table, + resource_link_name=resource_link_name, + ) + log.info('Revoking principal permissions from table in source') + execute_and_suppress_exception( + func=manager.revoke_principals_permissions_to_table_in_source, + table=table, + share_item=share_item, + share_item_filter=share_item_filter, + ) + if share_item_filter: + can_delete_resource_link = True + else: + can_delete_resource_link = ( + False + if S3ShareObjectRepository.check_other_approved_share_item_table_exists( + self.session, + self.share_data.target_environment.environmentUri, + share_item.itemUri, + share_item.shareItemUri, + ) + else True + ) + + if can_delete_resource_link: + execute_and_suppress_exception( + func=manager.grant_pivot_role_drop_permissions_to_resource_link_table, + resource_link_name=resource_link_name, + ) + execute_and_suppress_exception( + func=manager.delete_resource_link_table_in_shared_database, + resource_link_name=resource_link_name, + ) + + if ( + self.share_data.share.groupUri != self.share_data.dataset.SamlAdminGroupName + and self.share_data.share.groupUri != self.share_data.dataset.stewards + ): + log.info('Deleting TABLE READ permissions...') + S3ShareService.delete_dataset_table_read_permission( + self.session, self.share_data.share, table.tableUri + ) + except Exception: + log.exception('') + + # Delete share item + self.session.delete(share_item) + self.session.commit() + + if self.tables: + log.info('Revoking permissions to target shared database...') + execute_and_suppress_exception(func=manager.revoke_principals_database_permissions_to_shared_database) + share_item_shared_states = ShareStatusRepository.get_share_item_shared_states() + existing_shares_with_shared_tables_in_environment = ( + ShareObjectRepository.list_dataset_shares_with_existing_shared_items( + session=self.session, + dataset_uri=self.share_data.dataset.datasetUri, + share_item_shared_states=share_item_shared_states, + environment_uri=self.share_data.target_environment.environmentUri, + item_type=ShareableType.Table.value, + ) + ) + if not len(existing_shares_with_shared_tables_in_environment): + log.info('Deleting target shared database...') + execute_and_suppress_exception(func=manager.delete_shared_database_in_target) + # Check share items in share and delete share + remaining_share_items = ShareObjectRepository.get_all_share_items_in_share( + session=self.session, share_uri=self.share_data.share.shareUri + ) + if not remaining_share_items: + ShareObjectService.deleting_share_permissions( + session=self.session, share=self.share_data.share, dataset=self.share_data.dataset + ) + self.session.delete(self.share_data.share) + return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py index 5102a0fa8..d522bb79d 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_access_point_share_processor.py @@ -5,6 +5,7 @@ from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound from dataall.modules.s3_datasets_shares.services.share_managers import S3AccessPointShareManager from dataall.modules.s3_datasets_shares.services.s3_share_service import S3ShareService +from dataall.modules.shares_base.services.share_object_service import ShareObjectService from dataall.modules.shares_base.services.shares_enums import ( ShareItemHealthStatus, ShareItemStatus, @@ -17,6 +18,7 @@ from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM from dataall.modules.shares_base.services.sharing_service import ShareData from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface +from dataall.modules.shares_base.services.share_manager_utils import execute_and_suppress_exception log = logging.getLogger(__name__) @@ -211,3 +213,63 @@ def verify_shares(self) -> bool: self.session, sharing_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() ) return True + + def cleanup_shares(self) -> bool: + """ + 1) try to delete_access_point_policy for folder + 2) delete all share items and delete share object + + Returns + ------- + True + """ + + log.info('##### Starting Cleaning-up folders #######') + if not self.folders: + log.info('No Folders to revoke. Skipping...') + for folder in self.folders: + log.info(f'Revoking access to folder {folder.locationUri}/{folder.name}') + manager = self._initialize_share_manager(folder) + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + log.info(f'Principal role {self.share_data.share.principalRoleName} is not found.') + try: + access_point_policy = manager.revoke_access_in_access_point_policy() + if len(access_point_policy['Statement']) > 0: + manager.attach_new_access_point_policy(access_point_policy) + else: + log.info('Cleaning up folder share resources...') + execute_and_suppress_exception(func=manager.delete_access_point) + execute_and_suppress_exception(func=manager.revoke_target_role_access_policy) + if not self.share_data.dataset.imported or self.share_data.dataset.importedKmsKey: + manager.delete_dataset_bucket_key_policy(dataset=self.share_data.dataset) + except Exception: + log.exception('') + if ( + self.share_data.share.groupUri != self.share_data.dataset.SamlAdminGroupName + and self.share_data.share.groupUri != self.share_data.dataset.stewards + ): + log.info(f'Deleting FOLDER READ permissions from {folder.locationUri}...') + execute_and_suppress_exception( + func=S3ShareService.delete_dataset_folder_read_permission, + session=self.session, + share=manager.share, + locationUri=folder.locationUri, + ) + # Delete share item + sharing_item = ShareObjectRepository.find_sharable_item( + self.session, + self.share_data.share.shareUri, + folder.locationUri, + ) + self.session.delete(sharing_item) + self.session.commit() + # Check share items in share and delete share + remaining_share_items = ShareObjectRepository.get_all_share_items_in_share( + session=self.session, share_uri=self.share_data.share.shareUri + ) + if not remaining_share_items: + ShareObjectService.deleting_share_permissions( + session=self.session, share=self.share_data.share, dataset=self.share_data.dataset + ) + self.session.delete(self.share_data.share) + return True diff --git a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py index 840353505..447988156 100644 --- a/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py +++ b/backend/dataall/modules/s3_datasets_shares/services/share_processors/s3_bucket_share_processor.py @@ -1,5 +1,6 @@ import logging from datetime import datetime +from logging import exception from typing import List from dataall.modules.shares_base.services.share_exceptions import PrincipalRoleNotFound @@ -17,6 +18,8 @@ from dataall.modules.shares_base.db.share_object_state_machines import ShareItemSM from dataall.modules.shares_base.services.sharing_service import ShareData from dataall.modules.shares_base.services.share_processor_manager import SharesProcessorInterface +from dataall.modules.shares_base.services.share_object_service import ShareObjectService +from dataall.modules.shares_base.services.share_manager_utils import execute_and_suppress_exception log = logging.getLogger(__name__) @@ -194,3 +197,53 @@ def verify_shares(self) -> bool: self.session, sharing_item, ShareItemHealthStatus.Healthy.value, None, datetime.now() ) return True + + def cleanup_shares(self) -> bool: + """ + 1) try to remove access from bucket policy + 2) try to remove access from key policy + 3) try to remove access from IAM role policy + 4) delete all share items and delete share object + + Returns + ------- + True + """ + + log.info('##### Starting Cleaning-up S3 bucket share #######') + if not self.buckets: + log.info('No Buckets to revoke. Skipping...') + for bucket in self.buckets: + log.info(f'Revoking access to bucket {bucket.bucketUri}/{bucket.S3BucketName} ') + manager = self._initialize_share_manager(bucket) + if not S3ShareService.verify_principal_role(self.session, self.share_data.share): + log.info(f'Principal role {self.share_data.share.principalRoleName} is not found.') + execute_and_suppress_exception(func=manager.delete_target_role_bucket_policy) + execute_and_suppress_exception( + func=manager.delete_target_role_access_policy, + share=self.share_data.share, + target_bucket=bucket, + target_environment=self.share_data.target_environment, + ) + if not self.share_data.dataset.imported or self.share_data.dataset.importedKmsKey: + execute_and_suppress_exception(func=manager.delete_target_role_bucket_key_policy, target_bucket=bucket) + + # Delete share item + sharing_item = ShareObjectRepository.find_sharable_item( + self.session, + self.share_data.share.shareUri, + bucket.bucketUri, + ) + self.session.delete(sharing_item) + self.session.commit() + + # Check share items in share and delete share + remaining_share_items = ShareObjectRepository.get_all_share_items_in_share( + session=self.session, share_uri=self.share_data.share.shareUri + ) + if not remaining_share_items: + ShareObjectService.deleting_share_permissions( + session=self.session, share=self.share_data.share, dataset=self.share_data.dataset + ) + self.session.delete(self.share_data.share) + return True diff --git a/backend/dataall/modules/shares_base/api/mutations.py b/backend/dataall/modules/shares_base/api/mutations.py index 06ca78544..3d6c33683 100644 --- a/backend/dataall/modules/shares_base/api/mutations.py +++ b/backend/dataall/modules/shares_base/api/mutations.py @@ -35,7 +35,10 @@ deleteShareObject = gql.MutationField( name='deleteShareObject', - args=[gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String))], + args=[ + gql.Argument(name='shareUri', type=gql.NonNullableType(gql.String)), + gql.Argument(name='forceDelete', type=gql.Boolean), + ], resolver=delete_share_object, type=gql.Boolean, ) diff --git a/backend/dataall/modules/shares_base/api/resolvers.py b/backend/dataall/modules/shares_base/api/resolvers.py index 93524b3d4..f329c3308 100644 --- a/backend/dataall/modules/shares_base/api/resolvers.py +++ b/backend/dataall/modules/shares_base/api/resolvers.py @@ -150,8 +150,8 @@ def reapply_items_share_object(context: Context, source, input): return ShareItemService.reapply_items_share_object(uri=share_uri, item_uris=reapply_item_uris) -def delete_share_object(context: Context, source, shareUri: str = None): - return ShareObjectService.delete_share_object(uri=shareUri) +def delete_share_object(context: Context, source, shareUri: str = None, forceDelete: bool = False): + return ShareObjectService.delete_share_object(uri=shareUri, force_delete=forceDelete) def cancel_share_object_extension(context: Context, source, shareUri: str = None): diff --git a/backend/dataall/modules/shares_base/db/share_state_machines_repositories.py b/backend/dataall/modules/shares_base/db/share_state_machines_repositories.py index 1b9905dcf..9dfa32ef8 100644 --- a/backend/dataall/modules/shares_base/db/share_state_machines_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_state_machines_repositories.py @@ -110,6 +110,13 @@ def delete_share_item_status_batch( .delete() ) + @staticmethod + def delete_share_item_batch( + session, + share_uri: str, + ): + (session.query(ShareObjectItem).filter(and_(ShareObjectItem.shareUri == share_uri)).delete()) + @staticmethod def update_share_item_health_status( session, diff --git a/backend/dataall/modules/shares_base/handlers/ecs_share_handler.py b/backend/dataall/modules/shares_base/handlers/ecs_share_handler.py index b0308dd47..a064d4c30 100644 --- a/backend/dataall/modules/shares_base/handlers/ecs_share_handler.py +++ b/backend/dataall/modules/shares_base/handlers/ecs_share_handler.py @@ -32,6 +32,11 @@ def verify_share(engine, task: Task): def reapply_share(engine, task: Task): return EcsShareHandler._manage_share(engine, task, SharingService.reapply_share, 'reapply_share') + @staticmethod + @Worker.handler(path='ecs.share.cleanup') + def cleanup_share(engine, task: Task): + return EcsShareHandler._manage_share(engine, task, SharingService.cleanup_share, 'cleanup_share') + @staticmethod @Worker.handler(path='ecs.dataset.share.reapply') def reapply_shares_of_dataset(engine, task: Task): diff --git a/backend/dataall/modules/shares_base/services/share_manager_utils.py b/backend/dataall/modules/shares_base/services/share_manager_utils.py index 82439797a..187e890c6 100644 --- a/backend/dataall/modules/shares_base/services/share_manager_utils.py +++ b/backend/dataall/modules/shares_base/services/share_manager_utils.py @@ -1,4 +1,5 @@ import logging +from typing import Callable, Type logger = logging.getLogger(__name__) @@ -29,3 +30,10 @@ def not_allowed_permission_error_msg(requestor, permission_type, permissions, re requestor = ShareErrorFormatter._stringify(requestor) permissions = ShareErrorFormatter._stringify(permissions) return f'Requestor {requestor} has not allowed {permission_type} permissions: {permissions} for {resource_type} Target: {target_resource}' + + +def execute_and_suppress_exception(func: Callable, exc: Type[Exception] = Exception, *args, **kwargs): + try: + func(*args, **kwargs) + except exc: + logger.exception() diff --git a/backend/dataall/modules/shares_base/services/share_object_service.py b/backend/dataall/modules/shares_base/services/share_object_service.py index 0389a6cad..f3386490a 100644 --- a/backend/dataall/modules/shares_base/services/share_object_service.py +++ b/backend/dataall/modules/shares_base/services/share_object_service.py @@ -610,46 +610,61 @@ def cancel_share_object_extension(cls, uri: str) -> bool: @classmethod @ResourcePolicyService.has_resource_permission(DELETE_SHARE_OBJECT) - def delete_share_object(cls, uri: str): - with get_context().db_engine.scoped_session() as session: + def delete_share_object(cls, uri: str, force_delete: bool): + context = get_context() + with context.db_engine.scoped_session() as session: share, dataset, states = cls._get_share_data(session, uri) shared_share_items_states = [x for x in ShareStatusRepository.get_share_item_shared_states() if x in states] - - new_state = cls._run_transitions(session, share, states, ShareObjectActions.Delete) - if shared_share_items_states: + if shared_share_items_states and not force_delete: raise ShareItemsFound( action='Delete share object', message='There are shared items in this request. ' 'Revoke access to these items before deleting the request.', ) - if new_state == ShareObjectStatus.Deleted.value: - # Delete share resource policy permissions - # Deleting REQUESTER permissions - ResourcePolicyService.delete_resource_policy( - session=session, - group=share.groupUri, - resource_uri=share.shareUri, + # Force clean-up of share AWS resources + if force_delete: + log.info('Triggering force clean-up task to revoke all share items') + cleanup_share_task: Task = Task( + action='ecs.share.cleanup', + targetUri=uri, + payload={'environmentUri': share.environmentUri}, ) + session.add(cleanup_share_task) + session.commit() + Worker.queue(engine=context.db_engine, task_ids=[cleanup_share_task.taskUri]) - # Deleting APPROVER permissions - ResourcePolicyService.delete_resource_policy( - session=session, - group=dataset.SamlAdminGroupName, - resource_uri=share.shareUri, - ) - if dataset.stewards != dataset.SamlAdminGroupName: - ResourcePolicyService.delete_resource_policy( - session=session, - group=dataset.stewards, - resource_uri=share.shareUri, - ) - - # Delete share + else: + ShareObjectService.deleting_share_permissions(session=session, share=share, dataset=dataset) + # Delete all share items and share + ShareStatusRepository.delete_share_item_batch(session=session, share_uri=share.shareUri) session.delete(share) - return True + @staticmethod + def deleting_share_permissions(session, share, dataset): + # Delete share resource policy permissions + # Deleting REQUESTER permissions + ResourcePolicyService.delete_resource_policy( + session=session, + group=share.groupUri, + resource_uri=share.shareUri, + ) + + # Deleting APPROVER permissions + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.SamlAdminGroupName, + resource_uri=share.shareUri, + ) + if dataset.stewards != dataset.SamlAdminGroupName: + ResourcePolicyService.delete_resource_policy( + session=session, + group=dataset.stewards, + resource_uri=share.shareUri, + ) + return True + @staticmethod def resolve_share_object_statistics(uri): with get_context().db_engine.scoped_session() as session: diff --git a/backend/dataall/modules/shares_base/services/share_processor_manager.py b/backend/dataall/modules/shares_base/services/share_processor_manager.py index 5ec61748e..e16637e56 100644 --- a/backend/dataall/modules/shares_base/services/share_processor_manager.py +++ b/backend/dataall/modules/shares_base/services/share_processor_manager.py @@ -23,6 +23,11 @@ def verify_shares(self) -> bool: """Executes a series of actions to verify share items using the share manager. Returns True if the verifying was successful""" ... + @abstractmethod + def cleanup_shares(self) -> bool: + """Executes a series of actions to fully cleanup a share using the share manager. Returns True""" + ... + @dataclass class ShareProcessorDefinition: diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index ab4f209c8..662fd9df8 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -354,8 +354,43 @@ def reapply_share(cls, engine: Engine, share_uri: str) -> bool: log.exception('Error occurred during share approval') return False + @classmethod + def cleanup_share( + cls, + engine: Engine, + share_uri: str, + ) -> bool: + """ + 1) Retrieves share data and items in share + 2) Calls corresponding SharesInterface.cleanup_shares + + Parameters + ---------- + engine : db.engine + share_uri : share uri + + Returns True when completed + ------- + """ + with engine.scoped_session() as session: + share_data, share_items = cls._get_share_data_and_items(session, share_uri) + for type, processor in ShareProcessorManager.SHARING_PROCESSORS.items(): + try: + log.info(f'Cleaning up permissions with {type.value}') + shareable_items = ShareObjectRepository.get_share_data_items_by_type( + session, share_data.share, processor.shareable_type, processor.shareable_uri + ) + if shareable_items: + processor.Processor(session, share_data, shareable_items).cleanup_shares() + else: + log.info(f'There are no items to verify of type {type.value}') + except Exception as e: + log.error(f'Error occurred during share verifying of {type.value}: {e}') + + return True + @staticmethod - def _get_share_data_and_items(session, share_uri, status, healthStatus=None): + def _get_share_data_and_items(session, share_uri, status=None, healthStatus=None): data = ShareObjectRepository.get_share_data(session, share_uri) share_data = ShareData( share=data[0], diff --git a/backend/dataall/modules/shares_base/tasks/share_manager_task.py b/backend/dataall/modules/shares_base/tasks/share_manager_task.py index 4048f0c5c..f71a7dc50 100644 --- a/backend/dataall/modules/shares_base/tasks/share_manager_task.py +++ b/backend/dataall/modules/shares_base/tasks/share_manager_task.py @@ -23,21 +23,8 @@ share_item_uri = os.getenv('shareItemUris') handler = os.getenv('handler') - if handler == 'approve_share': - log.info(f'Starting processing task for share : {share_uri}...') - SharingService.approve_share(engine=ENGINE, share_uri=share_uri) - - elif handler == 'revoke_share': - log.info(f'Starting revoking task for share : {share_uri}...') - SharingService.revoke_share(engine=ENGINE, share_uri=share_uri) - - elif handler == 'verify_share': - log.info(f'Starting verify task for share : {share_uri}...') - SharingService.verify_share(engine=ENGINE, share_uri=share_uri) - - elif handler == 'reapply_share': - log.info(f'Starting re-apply task for share : {share_uri}...') - SharingService.reapply_share(engine=ENGINE, share_uri=share_uri) + log.info(f'Starting {handler} task for share : {share_uri}...') + getattr(SharingService, handler)(engine=ENGINE, share_uri=share_uri) log.info('Sharing task finished successfully') diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 91bf6b18d..1fbd3770c 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -2682,7 +2682,7 @@ def test_delete_share_object_remaining_items_error( client=client, user=user2, group=group2, shareUri=share3_processed.shareUri ) # Then we get an error of the type - assert 'UnauthorizedOperation' in delete_share_object_response.errors[0].message + assert 'ShareItemsFound' in delete_share_object_response.errors[0].message def test_cancel_share_extension_request( From a84d529b3d628ff3a31fb5fc2fb064942db1e571 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:12:05 +0200 Subject: [PATCH 133/188] Fix: integration tests missing default value for principalRoleName and msg in exception forceDelete task (#1661) ### Feature or Bugfix - Bugfix ### Detail - principalRoleName default to None in the integration tests query functions (it is already nullable in backend) - added msg argument to the forceDelete exception handling. ### Relates ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- backend/dataall/modules/shares_base/api/input_types.py | 4 +++- .../modules/shares_base/services/share_manager_utils.py | 2 +- .../dataall/modules/shares_base/services/sharing_service.py | 4 ++-- tests_new/integration_tests/modules/shares/queries.py | 6 +++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/dataall/modules/shares_base/api/input_types.py b/backend/dataall/modules/shares_base/api/input_types.py index c7b32db1d..ed4411b94 100644 --- a/backend/dataall/modules/shares_base/api/input_types.py +++ b/backend/dataall/modules/shares_base/api/input_types.py @@ -11,7 +11,9 @@ gql.Argument(name='principalType', type=gql.NonNullableType(gql.String)), gql.Argument(name='requestPurpose', type=gql.String), gql.Argument(name='attachMissingPolicies', type=gql.Boolean), - gql.Argument(name='permissions', type=gql.ArrayType(ShareObjectDataPermission.toGraphQLEnum())), + gql.Argument( + name='permissions', type=gql.NonNullableType(gql.ArrayType(ShareObjectDataPermission.toGraphQLEnum())) + ), gql.Argument(name='shareExpirationPeriod', type=gql.Integer), gql.Argument(name='nonExpirable', type=gql.Boolean), ], diff --git a/backend/dataall/modules/shares_base/services/share_manager_utils.py b/backend/dataall/modules/shares_base/services/share_manager_utils.py index 187e890c6..82793d450 100644 --- a/backend/dataall/modules/shares_base/services/share_manager_utils.py +++ b/backend/dataall/modules/shares_base/services/share_manager_utils.py @@ -36,4 +36,4 @@ def execute_and_suppress_exception(func: Callable, exc: Type[Exception] = Except try: func(*args, **kwargs) except exc: - logger.exception() + logger.exception('') diff --git a/backend/dataall/modules/shares_base/services/sharing_service.py b/backend/dataall/modules/shares_base/services/sharing_service.py index 662fd9df8..dd8749bb5 100644 --- a/backend/dataall/modules/shares_base/services/sharing_service.py +++ b/backend/dataall/modules/shares_base/services/sharing_service.py @@ -383,9 +383,9 @@ def cleanup_share( if shareable_items: processor.Processor(session, share_data, shareable_items).cleanup_shares() else: - log.info(f'There are no items to verify of type {type.value}') + log.info(f'There are no items to clean-up of type {type.value}') except Exception as e: - log.error(f'Error occurred during share verifying of {type.value}: {e}') + log.error(f'Error occurred during clean-up of {type.value}: {e}') return True diff --git a/tests_new/integration_tests/modules/shares/queries.py b/tests_new/integration_tests/modules/shares/queries.py index ec6d9b1a8..023ff2fb8 100644 --- a/tests_new/integration_tests/modules/shares/queries.py +++ b/tests_new/integration_tests/modules/shares/queries.py @@ -8,11 +8,11 @@ def create_share_object( environmentUri, groupUri, principalId, - principalRoleName, principalType, - requestPurpose, - attachMissingPolicies, permissions, + requestPurpose=None, + attachMissingPolicies=None, + principalRoleName=None, ): query = { 'operationName': 'createShareObject', From 39891fee6850ea89dfc3df038de8014d5f17cc06 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:46:15 +0200 Subject: [PATCH 134/188] fix: missing CREATE_SHARE_OBJECT permission in integration tests (#1663) ### Feature or Bugfix - Bugfix ### Detail Add CREATE_SHARE_OBJECT to group 5 invited to session_env1 in integration test. Needed to test the integration tests of Redshift ### Relates - #1620 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- tests_new/integration_tests/core/environment/global_conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_new/integration_tests/core/environment/global_conftest.py b/tests_new/integration_tests/core/environment/global_conftest.py index 348c1b794..87b939109 100644 --- a/tests_new/integration_tests/core/environment/global_conftest.py +++ b/tests_new/integration_tests/core/environment/global_conftest.py @@ -51,7 +51,7 @@ def session_env1(client1, group1, group5, org1, session_id, testdata): env = create_env( client1, 'session_env1', group1, org1.organizationUri, envdata.accountId, envdata.region, tags=[session_id] ) - invite_group_on_env(client1, env.environmentUri, group5, ['CREATE_DATASET']) + invite_group_on_env(client1, env.environmentUri, group5, ['CREATE_DATASET', 'CREATE_SHARE_OBJECT']) yield env finally: if env: From 8fff964e1702d9838158f590e28eec13d2967206 Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:49:23 +0200 Subject: [PATCH 135/188] Fix: Remove optional AllowWrites - not supported in all regions (#1664) ### Feature or Bugfix - Bugfix ### Detail Redshift sharing is implemented for the READ-only datashares. Write datashares is in preview in multiple regions, but in those regions where it is still not in preview, using the AllowWrites parameter in the API call of authorize_data_share results in an error of the type `An error occurred (InvalidParameterValue) when calling the AuthorizeDataShare operation: DATA_SHARING_WRITES support is not yet available.` This PR removes the usage of that parameter, which was in either case already using the default value (allowWrites=False) ### Relates - #955 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../dataall/modules/redshift_datasets_shares/aws/redshift.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py index 75dc0ea21..1498b0723 100644 --- a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py @@ -19,7 +19,9 @@ def authorize_datashare(self, datashare_arn: str, account: str) -> None: """ try: log.info(f'Authorizing datashare {datashare_arn=} to consumer {account}...') - self.client.authorize_data_share(DataShareArn=datashare_arn, ConsumerIdentifier=account, AllowWrites=False) + self.client.authorize_data_share( + DataShareArn=datashare_arn, ConsumerIdentifier=account + ) # AllowWrites in preview except ClientError as e: log.error(e) raise e From 4f423d3fec880463d224068f2d8385d6c3873bea Mon Sep 17 00:00:00 2001 From: Adriana Lopez Lopez <71252798+dlpzx@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:54:22 +0100 Subject: [PATCH 136/188] Fix: Remove optional AllowWrites 2 - not supported in all regions (#1667) ### Feature or Bugfix - Bugfix ### Detail Follow up of #1664 but for the associate_data_share API call. In addition this PR removes a test that is already covered by the previous test. ### Relates - #1664 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../redshift_datasets_shares/aws/redshift.py | 4 ++-- .../test_redshift_shares.py | 22 +------------------ 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py index 1498b0723..15e2e8b7d 100644 --- a/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py +++ b/backend/dataall/modules/redshift_datasets_shares/aws/redshift.py @@ -33,8 +33,8 @@ def associate_datashare(self, datashare_arn: str, consumer_arn: str): try: log.info(f'Associating datashare {datashare_arn=} to {consumer_arn=}...') self.client.associate_data_share_consumer( - DataShareArn=datashare_arn, ConsumerArn=consumer_arn, AllowWrites=False, AssociateEntireAccount=False - ) + DataShareArn=datashare_arn, ConsumerArn=consumer_arn, AssociateEntireAccount=False + ) # AllowWrites in preview except ClientError as e: log.error(e) raise e diff --git a/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py index f4131919e..c52a7de7c 100644 --- a/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py +++ b/tests_new/integration_tests/modules/shares/redshift_datasets_shares/test_redshift_shares.py @@ -234,6 +234,7 @@ def test_create_redshift_share_invalid_target_connection( client5, group5, session_cross_acc_env_1, session_connection_cluster_data_user, session_redshift_dataset_serverless ): # DATA_USER connections cannot be used as target connection for a share. Even if used by the connection owners. + # it checks that there are no CREATE_SHARE_REQUEST_WITH_CONNECTION on the connection assert_that(create_share_object).raises(GqlError).when_called_with( client=client5, dataset_or_item_params={'datasetUri': session_redshift_dataset_serverless.datasetUri}, @@ -252,27 +253,6 @@ def test_create_redshift_share_invalid_target_connection( ) -def test_create_redshift_share_unauthorized_target_connection( - client5, group5, session_env1, session_connection_serverless_admin, session_redshift_dataset_cluster -): - assert_that(create_share_object).raises(GqlError).when_called_with( - client=client5, - dataset_or_item_params={'datasetUri': session_redshift_dataset_cluster.datasetUri}, - environmentUri=session_env1.environmentUri, - groupUri=group5, - principalRoleName=REDSHIFT_TEST_ROLE_NAME, - principalId=session_connection_serverless_admin.connectionUri, - principalType=REDSHIFT_PRINCIPAL_TYPE, - requestPurpose='Integration tests - Redshift shares', - attachMissingPolicies=False, - permissions=['Read'], - ).contains( - 'UnauthorizedOperation', - 'CREATE_SHARE_REQUEST_WITH_CONNECTION', - session_connection_serverless_admin.connectionUri, - ) - - def test_create_redshift_share_invalid_redshift_role( client5, group5, session_cross_acc_env_1, session_connection_cluster_admin, session_redshift_dataset_serverless ): From fc2e97e1b7b1116f57cb50f7417784aa4e345f63 Mon Sep 17 00:00:00 2001 From: Noah Paige <69586985+noah-paige@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:30:47 -0400 Subject: [PATCH 137/188] Userguide signout flow (#1629) ### Feature or Bugfix - Feature ### Detail - Add `Log Out` Button to expose `/signout` flow to log out credentials from userguide page ### Relates - ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --- .../cognito_config/cognito_urls.py | 2 +- deploy/stacks/auth_at_edge.py | 2 +- documentation/userguide/docs/js/extra.js | 20 +++++++++++++++++++ documentation/userguide/mkdocs.yml | 3 +++ 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 documentation/userguide/docs/js/extra.js diff --git a/deploy/custom_resources/cognito_config/cognito_urls.py b/deploy/custom_resources/cognito_config/cognito_urls.py index 43be35c1f..7f0499f35 100644 --- a/deploy/custom_resources/cognito_config/cognito_urls.py +++ b/deploy/custom_resources/cognito_config/cognito_urls.py @@ -54,7 +54,7 @@ def setup_cognito( updated_callbacks = existing_callbacks + list(set(config_callbacks) - set(existing_callbacks)) log.info(f'Updated CallBackUrls: {updated_callbacks}') - config_logout_urls = [f'https://{signin_singout_link}'] + config_logout_urls = [f'https://{signin_singout_link}', f'https://{user_guide_link}/'] existing_logout_urls = user_pool['UserPoolClient'].get('LogoutURLs', []) updated_logout_urls = existing_logout_urls + list(set(config_logout_urls) - set(existing_logout_urls)) log.info(f'Updated LogOutUrls: {updated_logout_urls}') diff --git a/deploy/stacks/auth_at_edge.py b/deploy/stacks/auth_at_edge.py index 2076adaa4..b954a8a0f 100644 --- a/deploy/stacks/auth_at_edge.py +++ b/deploy/stacks/auth_at_edge.py @@ -23,7 +23,7 @@ def __init__(self, scope, id, envname='dev', resource_prefix='dataall', **kwargs f'{resource_prefix}-{envname}-authatedge', location={ 'applicationId': 'arn:aws:serverlessrepo:us-east-1:520945424137:applications/cloudfront-authorization-at-edge', - 'semanticVersion': '2.3.0', + 'semanticVersion': '2.3.2', }, parameters={ 'UserPoolArn': userpool_arn, diff --git a/documentation/userguide/docs/js/extra.js b/documentation/userguide/docs/js/extra.js new file mode 100644 index 000000000..924f1be01 --- /dev/null +++ b/documentation/userguide/docs/js/extra.js @@ -0,0 +1,20 @@ +document.addEventListener('DOMContentLoaded', function() { + var header = document.querySelector('.md-header-nav'); + if (header) { + var button = document.createElement('a'); + button.textContent = 'Sign Out'; + button.className = 'md-header-nav__button md-icon signout-button'; + + // Button Click Event Listener + button.addEventListener('click', function(event) { + event.preventDefault(); + try { + // Handle sign-out logic here + window.location.href = '/signout'; + } catch (error) { + console.error('Error during sign-out:', error); + } + }); + header.appendChild(button); + } +}); diff --git a/documentation/userguide/mkdocs.yml b/documentation/userguide/mkdocs.yml index 1b62f08b4..db584ca58 100644 --- a/documentation/userguide/mkdocs.yml +++ b/documentation/userguide/mkdocs.yml @@ -69,3 +69,6 @@ markdown_extensions: extra_css: - assets/extra.css + +extra_javascript: + - js/extra.js \ No newline at end of file From 472060afd57fba80300a71ba0f771adbcd621df4 Mon Sep 17 00:00:00 2001 From: Sofia Sazonova Date: Mon, 28 Oct 2024 15:31:43 +0000 Subject: [PATCH 138/188] Metadata form versioning - 3 (#1648) ### Feature or Bugfix - Feature ### Detail View: - [ ] Display version on "attached form" card - [ ] Display version in attached form list - [ ] Show number of entities attached (MF -> Fields) - [ ] Delete confirmation PopUp - [ ] Enforcement tab temporary hidden Edit: - [ ] No editing if there are attached entities - [ ] Editing of attached MF - [ ] If new version is available, editing of MF automatically shows new version Other: - [ ] Notifications for entity owners, if new version of MF is released Left ToDo: https://github.com/data-dot-all/dataall/issues/1621#issuecomment-2419715696 ### Relates - #1621 ### Security Please answer the questions below briefly where applicable, or write `N/A`. Based on [OWASP 10](https://owasp.org/Top10/en/). - Does this PR introduce or modify any input fields or queries - this includes fetching data from storage outside the application (e.g. a database, an S3 bucket)? - Is the input sanitized? - What precautions are you taking before deserializing the data you consume? - Is injection prevented by parametrizing queries? - Have you ensured no `eval` or similar functions are used? - Does this PR introduce any functionality or component that requires authorization? - How have you ensured it respects the existing AuthN/AuthZ mechanisms? - Are you logging failed auth attempts? - Are you using or adding any cryptographic features? - Do you use a standard proven implementations? - Are the used keys controlled by the customer? Where are they stored? - Are you introducing any new policies/roles/users? - Have you used the least-privilege principle? How? By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. --------- Co-authored-by: Sofia Sazonova --- .../modules/metadata_forms/api/input_types.py | 1 + .../modules/metadata_forms/api/queries.py | 9 + .../modules/metadata_forms/api/resolvers.py | 10 +- .../modules/metadata_forms/api/types.py | 13 + .../modules/metadata_forms/db/enums.py | 3 +- .../db/metadata_form_repository.py | 36 ++- .../attached_metadata_form_service.py | 13 + .../services/metadata_form_access_service.py | 4 +- .../services/metadata_form_service.py | 63 ++++- .../b21f86882012_mf_attached_entity_type.py | 49 ++++ .../popovers/NotificationsPopover.js | 30 ++- .../components/DatasetGovernance.js | 3 +- .../components/EnvironmentOverview.js | 3 +- .../components/AttachedFormCard.js | 34 ++- .../components/MetadataFormFields.js | 225 +++++++++++++----- .../Metadata_Forms/components/fields.js | 3 + .../components/metadataAttachment.js | 59 ++++- .../components/renderedMetadataForm.js | 53 ++++- .../services/attachMetadataForm.js | 1 + .../services/getAttachedMetadataForm.js | 1 + .../modules/Metadata_Forms/services/index.js | 1 + .../services/listAttachedMetadataForms.js | 1 + .../services/listMetadataFormVersions.js | 16 ++ .../Metadata_Forms/views/MetadataFormView.js | 2 +- .../components/OrganizationOverview.js | 3 +- 25 files changed, 535 insertions(+), 101 deletions(-) create mode 100644 backend/migrations/versions/b21f86882012_mf_attached_entity_type.py create mode 100644 frontend/src/modules/Metadata_Forms/services/listMetadataFormVersions.js diff --git a/backend/dataall/modules/metadata_forms/api/input_types.py b/backend/dataall/modules/metadata_forms/api/input_types.py index 2f73dd3c5..ce876a4fb 100644 --- a/backend/dataall/modules/metadata_forms/api/input_types.py +++ b/backend/dataall/modules/metadata_forms/api/input_types.py @@ -71,6 +71,7 @@ arguments=[ gql.Field(name='entityType', type=gql.NonNullableType(gql.String)), gql.Field(name='entityUri', type=gql.NonNullableType(gql.String)), + gql.Field(name='attachedUri', type=gql.String), gql.Field(name='fields', type=gql.ArrayType(gql.Ref('NewAttachedMetadataFormFieldInput'))), ], ) diff --git a/backend/dataall/modules/metadata_forms/api/queries.py b/backend/dataall/modules/metadata_forms/api/queries.py index e9385e091..072859b36 100644 --- a/backend/dataall/modules/metadata_forms/api/queries.py +++ b/backend/dataall/modules/metadata_forms/api/queries.py @@ -6,6 +6,7 @@ get_attached_metadata_form, list_attached_forms, get_entity_metadata_form_permissions, + list_metadata_form_versions, ) listUserMetadataForms = gql.QueryField( @@ -32,6 +33,14 @@ test_scope='MetadataForm', ) +listMetadataFormVersions = gql.QueryField( + name='listMetadataFormVersions', + args=[gql.Argument('uri', gql.NonNullableType(gql.String))], + type=gql.ArrayType(gql.Ref('MetadataFormVersion')), + resolver=list_metadata_form_versions, + test_scope='MetadataForm', +) + listAttachedMetadataForms = gql.QueryField( name='listAttachedMetadataForms', args=[gql.Argument('filter', gql.Ref('AttachedMetadataFormFilter'))], diff --git a/backend/dataall/modules/metadata_forms/api/resolvers.py b/backend/dataall/modules/metadata_forms/api/resolvers.py index 80223317b..d1a83f204 100644 --- a/backend/dataall/modules/metadata_forms/api/resolvers.py +++ b/backend/dataall/modules/metadata_forms/api/resolvers.py @@ -21,7 +21,7 @@ def create_metadata_form_version(context: Context, source, formUri, copyVersion) def create_attached_metadata_form(context: Context, source, formUri, input): - return AttachedMetadataFormService.create_attached_metadata_form(uri=formUri, data=input) + return AttachedMetadataFormService.create_or_update_attached_metadata_form(uri=formUri, data=input) def delete_metadata_form(context: Context, source, formUri): @@ -48,6 +48,10 @@ def get_home_entity_name(context: Context, source: MetadataForm): return MetadataFormService.get_home_entity_name(metadata_form=source) +def get_entity_name(context: Context, source: AttachedMetadataForm): + return MetadataFormService.get_entity_name(attached_metadata_form=source) + + def get_metadata_form(context: Context, source, uri): return MetadataFormService.get_metadata_form_by_uri(uri=uri) @@ -106,3 +110,7 @@ def resolve_metadata_form_field(context: Context, source: AttachedMetadataFormFi def get_entity_metadata_form_permissions(context: Context, source, entityUri): return MetadataFormService.get_mf_permissions(entityUri=entityUri) + + +def list_metadata_form_versions(context: Context, source, uri): + return MetadataFormService.list_metadata_form_versions(uri=uri) diff --git a/backend/dataall/modules/metadata_forms/api/types.py b/backend/dataall/modules/metadata_forms/api/types.py index fced5d63a..e4eb82e0a 100644 --- a/backend/dataall/modules/metadata_forms/api/types.py +++ b/backend/dataall/modules/metadata_forms/api/types.py @@ -1,6 +1,7 @@ from dataall.base.api import gql from dataall.modules.metadata_forms.api.resolvers import ( get_home_entity_name, + get_entity_name, get_form_fields, get_fields_glossary_node_name, get_user_role, @@ -34,6 +35,7 @@ ], ) + MetadataFormField = gql.ObjectType( name='MetadataFormField', fields=[ @@ -81,13 +83,24 @@ ], ) +MetadataFormVersion = gql.ObjectType( + name='MetadataFormVersion', + fields=[ + gql.Field(name='metadataFormUri', type=gql.ID), + gql.Field(name='version', type=gql.Integer), + gql.Field(name='attached_forms', type=gql.Integer), + ], +) + AttachedMetadataForm = gql.ObjectType( name='AttachedMetadataForm', fields=[ gql.Field(name='uri', type=gql.ID), gql.Field(name='metadataForm', type=gql.Ref('MetadataForm'), resolver=resolve_metadata_form), + gql.Field(name='version', type=gql.Integer), gql.Field(name='entityUri', type=gql.String), gql.Field(name='entityType', type=gql.String), + gql.Field(name='entityName', type=gql.String, resolver=get_entity_name), gql.Field( name='fields', type=gql.ArrayType(gql.Ref('AttachedMetadataFormField')), resolver=get_attached_form_fields ), diff --git a/backend/dataall/modules/metadata_forms/db/enums.py b/backend/dataall/modules/metadata_forms/db/enums.py index 9e4c7c292..0d573e862 100644 --- a/backend/dataall/modules/metadata_forms/db/enums.py +++ b/backend/dataall/modules/metadata_forms/db/enums.py @@ -20,7 +20,8 @@ class MetadataFormEntityTypes(GraphQLEnumMapper): OrganizationTeams = 'Organization Team' Environments = 'Environment' EnvironmentTeams = 'Environment Team' - Datasets = 'Dataset' + S3Datasets = 'S3-Dataset' + RDDatasets = 'Redshift-Dataset' Worksheets = 'Worksheets' Dashboards = 'Dashboard' ConsumptionRoles = 'Consumption Role' diff --git a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py index fdbaa1a9e..366841e90 100644 --- a/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py +++ b/backend/dataall/modules/metadata_forms/db/metadata_form_repository.py @@ -288,13 +288,16 @@ def query_attached_metadata_forms(session, is_da_admin, groups, user_envs_uris, # The c confuses a lot of people, SQLAlchemy uses this unfortunately odd name # as a container for columns in table objects. query = session.query(AttachedMetadataForm).join(all_mfs, AttachedMetadataForm.metadataFormUri == all_mfs.c.uri) - if filter and filter.get('entityType'): - query = query.filter(AttachedMetadataForm.entityType == filter.get('entityType')) - if filter and filter.get('entityUri'): - query = query.filter(AttachedMetadataForm.entityUri == filter.get('entityUri')) - if filter and filter.get('metadataFormUri'): - query = query.filter(AttachedMetadataForm.metadataFormUri == filter.get('metadataFormUri')) - return query + if filter: + if filter.get('entityType'): + query = query.filter(AttachedMetadataForm.entityType == filter.get('entityType')) + if filter.get('entityUri'): + query = query.filter(AttachedMetadataForm.entityUri == filter.get('entityUri')) + if filter.get('metadataFormUri'): + query = query.filter(AttachedMetadataForm.metadataFormUri == filter.get('metadataFormUri')) + if filter.get('version'): + query = query.filter(AttachedMetadataForm.version == filter.get('version')) + return query.order_by(all_mfs.c.name) @staticmethod def query_all_attached_metadata_forms_for_entity(session, entityUri, entityType): @@ -303,7 +306,7 @@ def query_all_attached_metadata_forms_for_entity(session, entityUri, entityType) ) @staticmethod - def get_metadata_form_versions(session, uri): + def get_metadata_form_versions_numbers(session, uri): versions = ( session.query(MetadataFormVersion) .filter(MetadataFormVersion.metadataFormUri == uri) @@ -311,3 +314,20 @@ def get_metadata_form_versions(session, uri): .all() ) return [v.version for v in versions] + + @staticmethod + def get_metadata_form_versions(session, uri): + versions = ( + session.query(MetadataFormVersion) + .filter(MetadataFormVersion.metadataFormUri == uri) + .order_by(MetadataFormVersion.version.desc()) + .all() + ) + return versions + + @staticmethod + def get_all_attached_metadata_forms(session, mf_uri, version=None): + all_attached = session.query(AttachedMetadataForm).filter(AttachedMetadataForm.metadataFormUri == mf_uri) + if version: + all_attached = all_attached.filter(AttachedMetadataForm.version == version) + return all_attached.all() diff --git a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py index e0dbca860..2476e05c0 100644 --- a/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/attached_metadata_form_service.py @@ -36,6 +36,19 @@ class AttachedMetadataFormService: def _get_entity_uri(session, data): return data.get('entityUri') + @staticmethod + @ResourcePolicyService.has_resource_permission( + ATTACH_METADATA_FORM, parent_resource=_get_entity_uri, param_name='data' + ) + def create_or_update_attached_metadata_form(uri, data): + new_form = AttachedMetadataFormService.create_attached_metadata_form(uri=uri, data=data) + if data.get('attachedUri'): + with get_context().db_engine.scoped_session() as session: + existingAMF = MetadataFormRepository.get_attached_metadata_form(session, data.get('attachedUri')) + if existingAMF and new_form: + session.delete(existingAMF) + return new_form + @staticmethod @ResourcePolicyService.has_resource_permission( ATTACH_METADATA_FORM, parent_resource=_get_entity_uri, param_name='data' diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py index 53d2944b6..b62976b97 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_access_service.py @@ -68,7 +68,7 @@ def _target_org_uri_getter(entityType, entityUri): elif entityType == MetadataFormEntityTypes.Environments.value: with get_context().db_engine.scoped_session() as session: return [EnvironmentRepository.get_environment_by_uri(session, entityUri).organizationUri] - elif entityType == MetadataFormEntityTypes.Datasets.value: + elif entityType in [MetadataFormEntityTypes.S3Datasets.value, MetadataFormEntityTypes.RDDatasets.value]: with get_context().db_engine.scoped_session() as session: return [DatasetBaseRepository.get_dataset_by_uri(session, entityUri).organizationUri] else: @@ -83,7 +83,7 @@ def _target_env_uri_getter(entityType, entityUri): return None elif entityType == MetadataFormEntityTypes.Environments.value: return [entityUri] - elif entityType == MetadataFormEntityTypes.Datasets.value: + elif entityType in [MetadataFormEntityTypes.S3Datasets.value, MetadataFormEntityTypes.RDDatasets.value]: with get_context().db_engine.scoped_session() as session: return [DatasetBaseRepository.get_dataset_by_uri(session, entityUri).environmentUri] else: diff --git a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py index 63bd1c2f3..ee81743d6 100644 --- a/backend/dataall/modules/metadata_forms/services/metadata_form_service.py +++ b/backend/dataall/modules/metadata_forms/services/metadata_form_service.py @@ -6,9 +6,11 @@ from dataall.core.permissions.db.resource_policy.resource_policy_repositories import ResourcePolicyRepository from dataall.core.permissions.services.resource_policy_service import ResourcePolicyService from dataall.core.permissions.services.tenant_policy_service import TenantPolicyService +from dataall.modules.datasets_base.db.dataset_repositories import DatasetBaseRepository from dataall.modules.metadata_forms.db.enums import ( MetadataFormVisibility, MetadataFormFieldType, + MetadataFormEntityTypes, ) from dataall.modules.catalog.db.glossary_repositories import GlossaryRepository from dataall.modules.metadata_forms.db.metadata_form_repository import MetadataFormRepository @@ -21,6 +23,7 @@ CREATE_METADATA_FORM, ALL_METADATA_FORMS_ENTITY_PERMISSIONS, ) +from dataall.modules.notifications.db.notification_repositories import NotificationRepository class MetadataFormParamValidationService: @@ -129,7 +132,7 @@ def get_metadata_form_by_uri(uri): with get_context().db_engine.scoped_session() as session: mf = MetadataFormRepository.get_metadata_form(session, uri) if mf: - mf.versions = MetadataFormRepository.get_metadata_form_versions(session, uri) + mf.versions = MetadataFormRepository.get_metadata_form_versions_numbers(session, uri) return mf # toDo: deletion logic @@ -295,6 +298,7 @@ def get_mf_permissions(entityUri): @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def create_metadata_form_version(uri, copyVersion): with get_context().db_engine.scoped_session() as session: + mf = MetadataFormService.get_metadata_form_by_uri(uri) new_version = MetadataFormRepository.create_metadata_form_version_next(session, uri) if copyVersion: mf_fields = MetadataFormRepository.get_metadata_form_fields(session, uri, copyVersion) @@ -302,6 +306,18 @@ def create_metadata_form_version(uri, copyVersion): new_field = MetadataFormRepository.create_metadata_form_field( session, uri, field.__dict__, new_version.version ) + + all_attached = MetadataFormRepository.get_all_attached_metadata_forms(session, uri) + for attached in all_attached: + owner = MetadataFormService.get_entity_owner(attached) + if owner: + NotificationRepository.create_notification( + session, + recipient=owner, + target_uri=f'{attached.entityUri}|{attached.entityType}', + message=f'New version {new_version.version} is available for metadata form "{mf.name}" for {attached.entityType} {attached.entityUri}', + notification_type='METADATA_FORM_UPDATE', + ) return new_version.version @staticmethod @@ -309,7 +325,7 @@ def create_metadata_form_version(uri, copyVersion): @MetadataFormAccessService.can_perform(UPDATE_METADATA_FORM_FIELD) def delete_metadata_form_version(uri, version): with get_context().db_engine.scoped_session() as session: - all_versions = MetadataFormRepository.get_metadata_form_versions(session, uri) + all_versions = MetadataFormRepository.get_metadata_form_versions_numbers(session, uri) if len(all_versions) == 1: raise UnauthorizedOperation( action='Delete version', message='Cannot delete the only version of the form' @@ -317,3 +333,46 @@ def delete_metadata_form_version(uri, version): mf = MetadataFormRepository.get_metadata_form_version(session, uri, version) session.delete(mf) return MetadataFormRepository.get_metadata_form_version_number_latest(session, uri) + + @staticmethod + def list_metadata_form_versions(uri): + with get_context().db_engine.scoped_session() as session: + all_versions = MetadataFormRepository.get_metadata_form_versions(session, uri) + for v in all_versions: + v.attached_forms = len(MetadataFormRepository.get_all_attached_metadata_forms(session, uri, v.version)) + return all_versions + + @staticmethod + def resolve_attached_entity(attached_metadata_form): + with get_context().db_engine.scoped_session() as session: + if attached_metadata_form.entityType == MetadataFormEntityTypes.Organizations.value: + return OrganizationRepository.get_organization_by_uri(session, attached_metadata_form.entityUri) + elif attached_metadata_form.entityType == MetadataFormEntityTypes.Environments.value: + return EnvironmentRepository.get_environment_by_uri(session, attached_metadata_form.entityUri) + elif attached_metadata_form.entityType in [ + MetadataFormEntityTypes.S3Datasets.value, + MetadataFormEntityTypes.RDDatasets.value, + ]: + return DatasetBaseRepository.get_dataset_by_uri(session, attached_metadata_form.entityUri) + else: + return None + + @staticmethod + def get_entity_name(attached_metadata_form): + entity = MetadataFormService.resolve_attached_entity(attached_metadata_form) + return entity.name if entity else 'Not Found' + + @staticmethod + def get_entity_owner(attached_metadata_form): + entity = MetadataFormService.resolve_attached_entity(attached_metadata_form) + if entity: + if attached_metadata_form.entityType == MetadataFormEntityTypes.Organizations.value: + return entity.SamlGroupName + elif attached_metadata_form.entityType == MetadataFormEntityTypes.Environments.value: + return entity.SamlGroupName + elif attached_metadata_form.entityType in [ + MetadataFormEntityTypes.S3Datasets.value, + MetadataFormEntityTypes.RDDatasets.value, + ]: + return entity.SamlAdminGroupName + return None diff --git a/backend/migrations/versions/b21f86882012_mf_attached_entity_type.py b/backend/migrations/versions/b21f86882012_mf_attached_entity_type.py new file mode 100644 index 000000000..a3d80cba8 --- /dev/null +++ b/backend/migrations/versions/b21f86882012_mf_attached_entity_type.py @@ -0,0 +1,49 @@ +"""mf_attached_entity_type + +Revision ID: b21f86882012 +Revises: 5a798acc6282 +Create Date: 2024-10-22 15:50:42.652910 + +""" + +from alembic import op +import sqlalchemy as sa +from sqlalchemy import orm + +from dataall.modules.metadata_forms.db.metadata_form_models import AttachedMetadataForm + +# revision identifiers, used by Alembic. +revision = 'b21f86882012' +down_revision = '5a798acc6282' +branch_labels = None +depends_on = None + + +def get_session(): + bind = op.get_bind() + session = orm.Session(bind=bind) + return session + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + session = get_session() + print('Rename entityType from Dataset to S3-Dataset for attached metadataform entries') + all_amf = session.query(AttachedMetadataForm).all() + for amf in all_amf: + if amf.entityType == 'Dataset': + amf.entityType = 'S3-Dataset' + session.commit() + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + session = get_session() + print('Rename entityType from S3-Dataset to Dataset for attached metadataform entries') + all_amf = session.query(AttachedMetadataForm).all() + for amf in all_amf: + if amf.entityType == 'S3-Dataset': + amf.entityType = 'Dataset' + session.commit() + # ### end Alembic commands ### diff --git a/frontend/src/design/components/popovers/NotificationsPopover.js b/frontend/src/design/components/popovers/NotificationsPopover.js index 8421c6090..d8ac2a868 100644 --- a/frontend/src/design/components/popovers/NotificationsPopover.js +++ b/frontend/src/design/components/popovers/NotificationsPopover.js @@ -101,6 +101,32 @@ export const NotificationsPopover = () => { } }, [client]); + const resolve_link = (notification) => { + if (notification.type === 'METADATA_FORM_UPDATE') { + let entity_type = notification.target_uri.split('|')[1].toLowerCase(); + const entity_uri = notification.target_uri.split('|')[0]; + const main_modules = [ + 'environment', + 'organization', + 's3-dataset', + 'redshift-dataset', + 'share', + 'dashboard', + 'worksheet', + 'pipeline', + 'notebook' + ]; + + if (main_modules.includes(entity_type)) { + return `/console/${entity_type}s/${entity_uri}`; + } + } + if (notification.type.includes('SHARE')) { + return `/console/shares/${notification.target_uri.split('|')[0]}`; + } + return '/'; + }; + return ( <> @@ -165,9 +191,7 @@ export const NotificationsPopover = () => { sx={{ cursor: 'pointer' }} variant="subtitle2" component={RouterLink} - to={`/console/shares/${ - notification.target_uri.split('|')[0] - }`} + to={resolve_link(notification)} > {notification.message} diff --git a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js index f2e86a115..2cda63d26 100644 --- a/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js +++ b/frontend/src/modules/DatasetsBase/components/DatasetGovernance.js @@ -9,9 +9,8 @@ import { Typography } from '@mui/material'; import PropTypes from 'prop-types'; -import { Label } from 'design'; +import { Label, UserModal } from 'design'; import { isFeatureEnabled } from 'utils'; -import { UserModal } from 'design'; import { useState } from 'react'; export const DatasetGovernance = (props) => { diff --git a/frontend/src/modules/Environments/components/EnvironmentOverview.js b/frontend/src/modules/Environments/components/EnvironmentOverview.js index ae6f012f0..2991c67e6 100644 --- a/frontend/src/modules/Environments/components/EnvironmentOverview.js +++ b/frontend/src/modules/Environments/components/EnvironmentOverview.js @@ -1,8 +1,7 @@ import React, { useState } from 'react'; import { Box, Grid } from '@mui/material'; import PropTypes from 'prop-types'; -import { ObjectBrief, ObjectMetadata } from 'design'; -import { UserModal } from 'design'; +import { ObjectBrief, ObjectMetadata, UserModal } from 'design'; import { EnvironmentConsoleAccess } from './EnvironmentConsoleAccess'; import { EnvironmentFeatures } from './EnvironmentFeatures'; diff --git a/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js b/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js index 1aec93728..8b9d90aa5 100644 --- a/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js +++ b/frontend/src/modules/Metadata_Forms/components/AttachedFormCard.js @@ -2,17 +2,47 @@ import { Card, CardContent, CardHeader, + Grid, List, ListItem, Typography } from '@mui/material'; +import { PencilAltIcon } from 'design'; +import React from 'react'; export const AttachedFormCard = (props) => { - const { fields, attachedForm } = props; + const { fields, attachedForm, onEdit } = props; return ( - + + + + + + { + e.currentTarget.style.opacity = 1; + }} + onMouseOut={(e) => { + e.currentTarget.style.opacity = 0.5; + }} + onClick={onEdit} + /> + + + {fields.map((field) => ( diff --git a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js index dc137c3d7..c28868891 100644 --- a/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js +++ b/frontend/src/modules/Metadata_Forms/components/MetadataFormFields.js @@ -37,7 +37,8 @@ import Checkbox from '@mui/material/Checkbox'; import { createMetadataFormVersion, deleteMetadataFormVersion, - getMetadataForm + getMetadataForm, + listMetadataFormVersions } from '../services'; import { useClient } from '../../../services'; import { GridActionsCellItem } from '@mui/x-data-grid'; @@ -304,7 +305,7 @@ EditTable.propTypes = { }; const DisplayTable = (props) => { - const { fields, startEdit, userRole, userRolesMF } = props; + const { fields, startEdit, userRole, userRolesMF, enableEdit } = props; return ( @@ -323,6 +324,7 @@ const DisplayTable = (props) => { startIcon={} sx={{ mt: 1 }} onClick={startEdit} + disabled={!enableEdit} type="button" variant="outlined" > @@ -424,7 +426,10 @@ const NewVersionModal = (props) => { { - return { label: 'version ' + option, value: option }; + return { + label: 'version ' + option.version, + value: option.version + }; })} defaultValue={'version ' + copyVersion} onChange={(event, value) => { @@ -463,6 +468,50 @@ const NewVersionModal = (props) => { ); }; +export const ConfirmationPopUp = (props) => { + const { version, attachedFormCount, onClose, onDelete } = props; + return ( + {}}> + + + Delete Version {version} + + + If you delete this version, +
      all data associated with it will be lost.
      + Attached entities: {attachedFormCount} +
      +
      + + + + +
      + ); +}; + export const MetadataFormFields = (props) => { const dispatch = useDispatch(); const { enqueueSnackbar } = useSnackbar(); @@ -474,8 +523,10 @@ export const MetadataFormFields = (props) => { const [fields, setFields] = useState(metadataForm.fields); const [glossaryNodes, setGlossaryNodes] = useState([]); const [currentVersion, setCurrentVersion] = useState(0); + const [attachedFormCount, setAttachedFormCount] = useState(0); const [versionOptions, setVersionOptions] = useState([]); const [showNewVersionModal, setShowNewVersionModal] = useState(false); + const [showDeleteModal, setShowDeleteModal] = useState(false); const startEdit = () => { setEditOn(true); @@ -510,9 +561,8 @@ export const MetadataFormFields = (props) => { metadataForm.versions = metadataForm.versions.filter( (v) => v !== currentVersion ); - setCurrentVersion(response.data.deleteMetadataFormVersion); - setVersionOptions(metadataForm.versions); - await fetchItems(metadataForm.versions[0]); + await fetchVersions(); + await fetchItems(metadataForm.versions[0].version); enqueueSnackbar('Version deleted', { anchorOrigin: { horizontal: 'right', @@ -539,16 +589,8 @@ export const MetadataFormFields = (props) => { response.data && response.data.createMetadataFormVersion !== null ) { - setCurrentVersion(response.data.createMetadataFormVersion); - metadataForm.versions = [ - response.data.createMetadataFormVersion, - ...metadataForm.versions - ]; - setVersionOptions([ - response.data.createMetadataFormVersion, - ...versionOptions - ]); - fetchItems(response.data.createMetadataFormVersion); + await fetchVersions(); + await fetchItems(response.data.createMetadataFormVersion); enqueueSnackbar('Version created', { anchorOrigin: { horizontal: 'right', @@ -565,6 +607,27 @@ export const MetadataFormFields = (props) => { setLoading(false); }; + const fetchVersions = async () => { + const response = await client.query( + listMetadataFormVersions(metadataForm.uri) + ); + if ( + !response.errors && + response.data && + response.data.listMetadataFormVersions !== null + ) { + setCurrentVersion(response.data.listMetadataFormVersions[0].version); + setAttachedFormCount( + response.data.listMetadataFormVersions[0].attached_forms + ); + setVersionOptions(response.data.listMetadataFormVersions); + } else { + const error = response.errors + ? response.errors[0].message + : 'Versions not found'; + dispatch({ type: SET_ERROR, error }); + } + }; const fetchItems = async (version = null) => { setLoading(true); const response = await client.query( @@ -634,8 +697,9 @@ export const MetadataFormFields = (props) => { fetchItems().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); - setCurrentVersion(metadataForm.versions[0]); - setVersionOptions(metadataForm.versions); + fetchVersions().catch((e) => + dispatch({ type: SET_ERROR, error: e.message }) + ); if (glossaryNodes.length === 0) { fetchGlossaryNodes().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) @@ -658,36 +722,49 @@ export const MetadataFormFields = (props) => { > - { - return { label: 'version ' + option, value: option }; - })} - value={'version ' + currentVersion} - onChange={async (event, value) => { - setCurrentVersion(value ? value.value : versionOptions[0]); - await fetchItems(value ? value.value : versionOptions[0]); - }} - renderInput={(params) => ( - - )} - /> + {currentVersion > 0 && ( + { + return { + label: 'version ' + option.version, + value: option.version, + attached: option.attached_forms + }; + })} + value={'version ' + currentVersion} + onChange={async (event, value) => { + setCurrentVersion( + value ? value.value : versionOptions[0].version + ); + setAttachedFormCount(value ? value.attached : 0); + await fetchItems( + value ? value.value : versionOptions[0].version + ); + }} + renderInput={(params) => ( + + )} + /> + )} - + {metadataForm.userRole === userRolesMF.Owner && ( + + )} {showNewVersionModal && ( setShowNewVersionModal(false)} @@ -699,23 +776,52 @@ export const MetadataFormFields = (props) => { - + {metadataForm.userRole === userRolesMF.Owner && ( + + Attached entities : {attachedFormCount} + + )} + + + {metadataForm.userRole === userRolesMF.Owner && ( + + )} + {showDeleteModal && ( + setShowDeleteModal(false)} + onDelete={deleteVersion} + version={currentVersion} + attachedFormCount={attachedFormCount} + > + )} @@ -754,6 +860,7 @@ export const MetadataFormFields = (props) => { startEdit={startEdit} userRole={metadataForm.userRole} userRolesMF={userRolesMF} + enableEdit={attachedFormCount === 0} /> )} diff --git a/frontend/src/modules/Metadata_Forms/components/fields.js b/frontend/src/modules/Metadata_Forms/components/fields.js index 90dea7012..710a185b1 100644 --- a/frontend/src/modules/Metadata_Forms/components/fields.js +++ b/frontend/src/modules/Metadata_Forms/components/fields.js @@ -18,6 +18,7 @@ export const FreeInputField = (props) => { label={field.name} error={errors[field.name]} name={field.name} + defaultValue={field.value} onKeyUp={(event) => { onChange(event.target.value); }} @@ -83,6 +84,7 @@ export const GlossaryTermField = (props) => { onChange(value.nodeUri)} + defaultValue={field.value} renderInput={(params) => ( { onChange(value)} renderInput={(params) => ( { const client = useClient(); const dispatch = useDispatch(); const [selectedForm, setSelectedForm] = useState(null); + const [selectedAttachedForm, setSelectedAttachedForm] = useState(null); const [loading, setLoading] = useState(false); const [loadingFields, setLoadingFields] = useState(false); const [formsList, setFormsList] = useState([]); const [fields, setFields] = useState([]); const [canEdit, setCanEdit] = useState(false); + const [editMode, setEditMode] = useState(false); + const [values, setValues] = useState({}); + const [attachedMFUri, setAttachedMFUri] = useState(-1); const [filter] = useState({ ...Defaults.filter, + pageSize: 20, entityType: entityType, entityUri: entityUri }); @@ -77,9 +82,11 @@ export const MetadataAttachment = (props) => { setFormsList(response.data.listAttachedMetadataForms.nodes); if ( response.data.listAttachedMetadataForms.nodes.length > 0 && - !selectedForm + !selectedAttachedForm ) { - setSelectedForm(response.data.listAttachedMetadataForms.nodes[0]); + setSelectedAttachedForm( + response.data.listAttachedMetadataForms.nodes[0] + ); await fetchAttachedFields( response.data.listAttachedMetadataForms.nodes[0].uri ); @@ -132,7 +139,7 @@ export const MetadataAttachment = (props) => { fetchAvailableForms().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) ); - setSelectedForm(null); + setSelectedAttachedForm(null); } else { const error = response.errors ? response.errors[0].message @@ -205,7 +212,7 @@ export const MetadataAttachment = (props) => { )} - {addNewForm && ( + {addNewForm && !editMode && ( { onChange={async (event, value) => { if (value) { setSelectedForm(value.form); + setEditMode(false); + setValues({}); await fetchFields(value.value); } else setSelectedForm(null); }} @@ -232,7 +241,8 @@ export const MetadataAttachment = (props) => { { lg={10} xl={10} onClick={async () => { - setSelectedForm(attachedForm); + setSelectedAttachedForm(attachedForm); + setEditMode(false); + setAddNewForm(false); + setValues({}); await fetchAttachedFields(attachedForm.uri); }} > @@ -257,9 +270,12 @@ export const MetadataAttachment = (props) => { maxLines: 1 }} > - {attachedForm.metadataForm.name} + {attachedForm.metadataForm.name + + ' v.' + + attachedForm.version} + {canEdit && ( { {addNewForm && selectedForm && !loadingFields && ( { setAddNewForm(false); setSelectedForm(null); setFields([]); + setEditMode(false); + setValues({}); + setAttachedMFUri(-1); }} entityUri={entityUri} entityType={entityType} + attachedUri={attachedMFUri} onSubmit={async (attachedForm) => { - setSelectedForm(attachedForm); + setSelectedAttachedForm(attachedForm); + setEditMode(false); + setValues({}); setFields(attachedForm.fields); fetchList().catch((e) => dispatch({ type: SET_ERROR, error: e.message }) @@ -323,11 +347,26 @@ export const MetadataAttachment = (props) => { dispatch({ type: SET_ERROR, error: e.message }) ); setAddNewForm(false); + setAttachedMFUri(-1); }} /> )} - {!addNewForm && !loadingFields && selectedForm && ( - + {!addNewForm && !loadingFields && selectedAttachedForm && ( + { + setSelectedForm(selectedAttachedForm.metadataForm); + const tmp_dict = {}; + fields.forEach((f) => { + tmp_dict[f.field.name] = f.value; + }); + setValues(tmp_dict); + setEditMode(true); + setAddNewForm(true); + setAttachedMFUri(selectedAttachedForm.uri); + }} + /> )} diff --git a/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js index e10867cdb..ad0bbbc1a 100644 --- a/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js +++ b/frontend/src/modules/Metadata_Forms/components/renderedMetadataForm.js @@ -24,21 +24,26 @@ import { LoadingButton } from '@mui/lab'; import SendIcon from '@mui/icons-material/Send'; import { createAttachedMetadataForm, getMetadataForm } from '../services'; import { SET_ERROR } from '../../../globalErrors'; +import CircularProgress from '@mui/material/CircularProgress'; export const RenderedMetadataForm = (props) => { const client = useClient(); const dispatch = useDispatch(); const { fields, + values, onSubmit, onCancel, entityUri, entityType, metadataForm, - preview + preview, + editMode, + attachedUri } = props; const [localFields, setLocalFields] = useState([...fields]); + const [loading, setLoading] = useState(true); const [currentVersion, setCurrentVersion] = useState( metadataForm.versions ? metadataForm.versions[0] : 0 ); @@ -129,6 +134,8 @@ export const RenderedMetadataForm = (props) => { value: JSON.stringify(field.value) || 'null' })) }; + if (attachedUri && attachedUri !== -1) input.attachedUri = attachedUri; + const response = await client.mutate( createAttachedMetadataForm(metadataForm.uri, input) ); @@ -144,6 +151,7 @@ export const RenderedMetadataForm = (props) => { }; const fetchItems = async (version = null) => { + setLoading(true); const response = await client.query( getMetadataForm(metadataForm.uri, version) ); @@ -153,13 +161,29 @@ export const RenderedMetadataForm = (props) => { response.data && response.data.getMetadataForm !== null ) { - setLocalFields(response.data.getMetadataForm.fields); + const local_fields = response.data.getMetadataForm.fields; + if (values) { + local_fields.forEach((field) => { + if (field.name in values) { + field.value = values[field.name]; + } + }); + } + setLocalFields([...local_fields]); + if (!version && response.data.getMetadataForm.versions.length > 0) { + setCurrentVersion(response.data.getMetadataForm.versions[0]); + } else { + if (version) { + setCurrentVersion(version); + } + } } else { const error = response.errors ? response.errors[0].message : 'Metadata Forms not found'; dispatch({ type: SET_ERROR, error }); } + setLoading(false); }; useEffect(() => { @@ -170,7 +194,19 @@ export const RenderedMetadataForm = (props) => { } }, [client, dispatch]); - return ( + return loading ? ( + + + + ) : ( { - + {preview && ( { - return { label: 'version ' + option, value: option }; + return { + label: 'version ' + option, + value: option + }; })} value={'version ' + currentVersion} onChange={async (event, value) => { @@ -236,7 +277,7 @@ export const RenderedMetadataForm = (props) => { type="submit" variant="contained" > - Attach + {editMode ? 'Save' : 'Attach'} + {isAdmin && ( + + )} + {isAdmin && ( + + )}

      >{d0b?9Na8n&Xpu(v>;jm2n(1rc`{Y({sdU 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%0DpTuv^ z?lq_;`GueA39gnMQgW8tr~^uHl%lPpL7@$aV!S`1RYgTrC4Xw&Oqh)BJLSePKG!{W z($I;ZKh_8W`ugB9uVfJF;;UWQPqrrLM!jC_5Jc3(-LDyinNdQ?UoH7Dtz4X-^@+SGKKo&S2bU#YXp(|0B zDnC2&?MNyntpkkHJaHxGC(8I5$YrRGAAS0qlj&u5*a{CS#dypP)Px|$s2C5jH`*V; zpVjGTZL5{koO^Q|AAqp5*Ep#I(RSQo`w~hdqF!~V6-+<57Nh;ctmZbqMazAF%cN{E z&{Lo2H)AYYa^Do`z-1-Gc$S&Z5iH)quMKEvJ|noFiDQRxV3?uQKLGhrXx7kDNflpn zPp1Yc0qE3G{jK4s?n z`#xg5Lj4_-jf-~OpL{@fRkf7Gcz zZsJuogqpm%wYj;e8^?yJ2N(w4Z9GG1FyG{1VMgW;UmmimA zd&&P1Jgn}a!@XR7I8+Rbk>zsro$!Bt1O4gGdja|PH}QupEX_ZB(f{&iFZHP`Vuv=O z`Q6^|Q>m+9_C6gW8}5|`OsL)uRlt5kQQOVeL)~*NhJaxubmT*2kGpU(IytkqVZN-L zwd-~Sp4lJasE$gHtITFft!HjX!#{`PmVXXC3_ovj`p-XO;Q+SPc@nQ3`aQC8(t`q&TOe{%!$+v?@rHY|3>_ws}xSJJdNxF0$%|Xe(3IQ5|(Me@kEbsyjT=Tx%*9i8w7k`O-qp+j-!09T;G&z>XmFCT;@^*ge_n(SF_To(-46<;4K6$rx=nif1ty>Q{v^F#}Fqzn)JMi#kUmA^QX=xdC z*yYltUqTHh|8Lbtuam~p$VipaVWoJ7_?Ou)8?~Ue1CwTE=Cz0GJ~W$PBeVZ*I8GRe z@f@9<-}kteo=?j4^;nuE>m7>9c)3kFxfW>|86Vwo(BiNxI<_W;ya(P-;vJs!PR*a* z#cXJ=Yh;}r%0+v$#RXuJcJ-*!N+bprhww~C(WO9Jn%(CsnW#}PKHgs`+QG$TXm~hz z1~nlKQ)+6`8XI$*mFnsrQOINil)s)Xf}ZELX4$-C3jSSR^s5$UkE!0Yv{5q=^eYR8 z1_xbTSuv2Sem;I-;U<_Dhn_-RxAk+-TO?hl0mDmhK(=aLa(3PySw#!4EYqzHKV`?A z({fZt9jOVanVC)oQ@zeg%x1JauDGzDvs5#B+1zuuK7xIDuA*-WUlbVXWbQW z#Vx)2G&Pm>GFvvf8V0~$gA|`Mh<+t;7rKUrlJP>YD*_)d`ofSM0|Nu-r^l0K7P;)x1|AHmWw~ZvJ}1bB9Cn=92^|nFiXzQw;y2-#p_46 z!l+DKhG&M&zr#8&>Axx`27_c{m=r;ZtcKNB7uheDIbB^WEP!VsdS|0w)X-^eQeK%9a3w?^T;qFVCSkO+?M!4%L=^cIeLu2|u+{J2dND&4oj-y)5L!k|&zpfLJy-GBPwWkQ#XE z<#)+~=CoH+I!mj$qE2us6f6qAXhPkgRXu})gUJm|4>lIYS@q~FZTsb#oyVuT!cS%M zlV3QP$wew4QKw;?U!L0&ez)}3^BIPF(OxB4$YJ*~Qeb|;`MlvaIge!fB);YJF7wFh z3$L#4Bdlw0_^1i#=SRQ1?WOQacAi{+vezR z8suld*IwxPg@oWp7P^C0Xu&2J-Z*?f*l$_}~25f9n$h)A_mlx3c=bqfej5 z|6kT0{-=FHgucjUFAq6a0Mb?=CjcuU;66b_rK5=T7hW$UvdQ^ z|JA|#zjQ8t9{(@40-^mcx&jg0^6rQKe~}fqJpNy91tMSOvzG=P{p!!_?~C2SOYMKb z75FdUU;hBbLx=NU`-tDi|4XevwEZu#@jkCW1O)ic<%^twpU3}So4n5*|DVhq@@2)} zIpoWVzn|mpez_Hh{7)wDPnf&k_y50meEg4BAlm*H*?7x6{~7sbj3wwhfAUWKef+=F z3WWB*=n7oIKR(aJmzav>@&6N7;Kh()$_{PRs!@4Ke}$0f4Zx{FAMDUxGI5|Ey8axY zunT)mF7l+CsL)l!=TTLUs3C572#!?`pPdVj*A{+ivOjq8fRK<|qK163#z{bU&~jva z_AO2DGAxf~!iv_KPE z1713q?G68C6YnoV>-}yNA4@VkRcH7+icw#g8HfY^sPchiGFd0|1(m|NdK!!gUNf^Z zyR^??v0^vXOn?8H2eX$-5z3%>v_mLZF@k500h(=r*T+5C(XhX8$-IHKxhjdantmvX z4|wD5d$XtE8RMsC`sKf`J^i=!QvX5n2F~W)GhD1?`*RghfZrQi8eDQe+wp$ujZ^2I z${|x2J5k$!Ws>3gHy5B9-IwPE29ZI%+N?qi<+*K1OZfj%i_d8$6Z@i50SS~2oSnUY zHbz*;Iwe_S4H%$WQhqlgUNvj28;7vMJG22nd=f8Vt^!P@{_4L99atG&)dTE$hbN6q zP2@tfMgZ7NOE&x6J|FHMfVOe$Q-nJkrA&r1Yw{(NjjdX)_gMf5wgHCDb?uLgh zX#oLgY3c6H=UX`MJMWw`bG~opoSEYv-)ytCi9Jk7CdR&d%bkvy}pE z-GIZZFLLV|`$tww)6LD*9{o}&DXF2ddPb9&?@K>-_X73@TjG%V{2mdo1E6|N6#)(&I zskuupKmi+|1~M{MV7f$z1O9L#r=2)i7*3V!bpV}ZE0~&?0OT#YLm#|MUY-|<%9W`= z`dR1)&v_LvTDVPZZq)!VS-Z(XIj}TfyvEKI=KVJgy#=H#)tYn*&rcUbrCvVF1kl5K=DtF~30* zz%$4t0bsBJ!I8nxrUZCG&=s07ipC$>kyfSQ_H%UNX)IHVp>_Ngp+92{lsv{Luh16Q zE4GP?o<^2u zDxjaz<+3#hu(6l70Bm~?0-u~k{uY3ta{HRF#uYFi-l|*t5}N}3p8DBYh2;i4roTxj ziAl^)4T7l;&_yz-0ZB43wDGIm7OyT@><-ZI-TR04Tx6rihYQupw2T8iHG_ zwU$FiUmo7P_BbyT%7jOdhyf4bK?2}xDJC$`t28XX6aKpJzhu>3AV#?i)zI3>%@O33=Mrt@-5rda5G z+Rsf)rA0}=`7pv(1Zcl)LB=<9y#Gn7Je ziven@${W|po<6_Y(GwslGEK-?$+FrzW|`;H1b_0s0IjkoJ`;1{L0pgc3y#b4ECs4V z^LISTvA-K#Fsej8Y((Au{OahBG&q3ctn@U>IN-y(e1hN0xsKAsW+ZoS{*m4FzSyNt z82{rxaT}R5I2Lq5Ki7=@6zm$dkjuC`sTiYp*q=CifBN?GfIXpKM-w*j71Qju%cXNF zBmnjIxd+;WG)CWc67Y~cmi5heet*}syQ%SX%IJE6Ww~}yx~?>Wg1l8QBdpes0jf>(zw7^6!iN-!&uzz!0S13G zE1|2+@j9#FUA=%uzsC@OYlmHW`#bhy-(vc;hClBU@$eIgm?=+Fk3jC&L#1qmwk9ht zpa0N?5C&{b#Ua;c8(2Tt1%DFfc_5G8T7q2}Rmz>aT+ePQKyl~(fD`fCECL2(y!bxX zXS>07G@s|S*Af5F@6PDZQ=QaF3H+iPUweXo@;!dj^iojri|<)p@^>AvM6nm)*Ln0M z5~Gqq1EQ?iDRl6e7@42(^3p4t=)W<3a`k~;)WF2Z_{|dr7G}mMoo;G@TkK2>tWk80 zFR`H=y|)Cu@9QV8h!$!+Tj2NGC}2ge*#rPI@1vdq`208(2s@9B0S0h;7Px^!7+9Py z3}D6X^PvCftvc6@*j}^`jCKzbLN$dnEwl@0Usd{R?x8zefkquMIyHfc}4}1kk@c!~4JY z0`zOc&j9FuCCmMdStX`JW@3EC`UkgxBkILG)*I;OmjYJiRyMXzm;enzUP{N->ysZX?zg=jX?*SAU~HYuWp~7y-9E)SX71=>+lgpS94=Jea|EKE-a!zML6p@b1BOK^1f60IPEBH8nhbW5ZoA@Kh=EFytzy5R83sKC! z`u6R_6O!L}l7I2H=az%vJijxA{`@_nO6vk8hfwqhDaU&MdCG2zoHV6(`vPJ(Pa#Ce z;^jvcmYmwbJSYpX^$jqy4VEzU^^GVgAJ(p7L=HeIH#KIc3>Gvc>Q?|3OZ0nv|r$cqNpOaP5~GkTim@>kA&xKp)3k9z|^#7Aa z-}bxu^z1&6qF&fWAfi(`o$AT39KO?;Fjzs#S@xNam5VG;2%%4(k<&%3%$`a9FwGRP z3$caLz?1l|x-9%jY0`WMWW%pSMAQPciZ|4G-`>Thl$BGOS^ILI%DlBvvLdP?zv^9N z3Ay4;73n9MJcWNP&~rB=pYHlI24582r2MJ6XgfVFVuM};1R@e{$}N+ZREo>_5Oob^ zPex}#h-6XRbK!&XCe+a1D1?93)d93>{i?GjOOjvImON}~s$9}5r^M)%wzcEA_hrXB zYYvZ(tecBGvEvjj!b6{J-s5H`Vg&uwfX(7#n`-kWTSVnQEradZpE!`{oZdNU*PlKM z7ev^BvElX)%Z?6YqeVU%3`$XE|I7IR{35uL5;UAJ@S^3C8ujm6Z7u637p||oWwyr2 z%PpMiV&_K2`+$lc7r}#%SQM8;hhF`+8uCuuI4w1swK~;5qPV;y^X8C57j6A9V@6i^ z_%&Mt9gY{1l$M^Uu2(0a{N)8vOw4@_|JK6&fb8aVX82R3wy{*MYU5`($-Yj(H|4{5 z;tPTD=+G#`WgkuJa|1R@7MG6T$T3I|5e`wo68GYB20g_IPp zNXbZ%Zrw1DN#k{uzl-z)%ftjnb(Ets;Xm}Mt2)66`6K=qu4u=aPhdvAl$fH+=#H2C z5|x`Rs3M(&V52>A?|#SZ>ndNdjzVau1d z$^1~gMSFez_|dM*fzl|GT$0u5tLyVmpE6b(P0!Gd9~uvrbbUk(3k}748Ey2JdOb!y zLy3?0sAvoZ=lHnNsO>w>l?@BCr2K@BipNBp5~{YJZEm!NY(e*wDXEu+-Oy!0V={X+ zs~uN_ZN#Y(do#CWgj)OiUBRJcU>8Pf8(7pOXSRZX=5YruSa>tua8Ge@d7|zGMn)0o{OZ@o(2d<-c{~g_>I1<%f1od;DjXv+LwCZVT-1tW-@* zRyJyoh19=$dLk3>C=R=#uf}q!T&r?CnhAr9xiN`IDA<|FShd6kfJ~k~myfw#ZC7f# zAm6?1?RSZU_(1t^@XxCKF@8YyG&Q{0wzyy9S~nyBW<3`5h1|m}DM8_jE&MJ-bg3X} z4Jo=uPd(O0p*M4hTqIsPVk9UC31{`rn`f&vRRiz}Q=AX7)5T$M1`Rq$=6oLR-zm7b zxOm%J!CA#vU;o?JE_vN0=&bR^V8gCWkVhNiZFf`MIkeDFsv+SwHYF7mXIM)Q^ZP9B zT}!&Wa6A8M1)0;*(kdPb{#nXv^;C1)Q$j{){9`Uj^L>zr3$p(w=HZ&DP(W&q39mG1ARh$6jH8l|MNfU@;T`nqWq#?`J0W2nTeHVG%ol!GG@|cnaPHQzW%4ED0*}2q6)jC*NPJa zy$Ln7MsV4_NJZ)>8dY`?YZnC=?qtTbYpe2xN{9W>0^H^FtIX)5KkR+dUU2u~?k!;C z?G39t6Og_H#zzzZn zRYV?b8FMZ*) ztY1Y44)vuwK6aD-}kYO{X2ILm#6aogaNM@EoBe zp?*g3W@+=o?8eQz`%^HTz-RbKLfSIDxh9VaGo&KvV$RkG)uj`w1jkofviEMD9;}X~ z3utES2g=Lq!S*dP)>Q|?ei|%(W#vqH@A99P@=JS?&ZDPKQ%wS;gAU=4`oTq>lSBl= zZ%c-N{BOlm5t*d2@la4M$?@H3TeyF+F%_tNN<@__j5~@`ANVyu zoHi@*BaJ6rW*`>diD&wmSH_UR$D!0Zm5wIwApEBa>ru0_S74FZVeLHC4z2C&vBL!^ zDRSCjztf4YT|1^?1tEuZsi_J_pz)4Mc&N=LGSr|n9DbReMJ=JZ;G9&s0Na@ba$T%p z2MZyLI`%qKCY0GGIMJ%Y zUU!C-B8P_~>FA^-%c?PV@+u@Uk_0H|>EXwe&&XKoi;BLqwV7^zu1Bk}uB!d?y|N`O zyro5-hi8&3aB^}|V{m9_tz_-A5o{UTOq>FS1I~S~y1M)ib@3nSENI(iY@Doj5IZ`u zJ1DbhFvmOlo7&ns8ykE2n`-F>!gkId@t4@z+`K6OewUWoV&C_Q&i2iY7L(XAbgteF z<|*uT^X=;B2=teclokW4WJZREONxuji_2~7tn<#CC8Wh31p7!!Nm0{6w6?Z(hp!#V zii<8wAsc*K6)HkPC)MOWQp?To~!*0l%nRKaBT2Ik_F-T_=Im z;pZ2$GG^;zEa82~8`Vp=WaH#=h(A>dHN^Y#4Yglh_67C|3sVVl z=1kAeXK^?jO!r@ulR09$tkN5qYEHo~Kd*A1J(fi?>RH;O*Q|2d=|2EY-=-4Hav1an zGVV8ro;*rU&M`ERtkon0A`nZ}91_&q94Lv2WgFim3*&h68vdZ+Qeo)Bcrr10gNruh z?CwJ8cu!AI6CpHRX|Z*gidK<74Ed9@O=`rG)<=8_uig4w>>Zrwn`!#QV|is2I6ITm z!JUn(`{=$T*0@Q_sGq_V2kqHdZ?3B0<#D8Qe~sDA054jPOHiqZ0`Lft9N!Q zCI&kgpUD+S4=kKwV3Lo760sfMEq+n?tsXEUQfN(llRZAFI}n_M4R#~b=FxLxg@g=V z-{5(enw53DKPurJlprdWjgFs}(Y8EYF=Dl*to|t$l|P}uk;Ss#yze2g7xGxmo{Va6 zX?YGOGrte?d^-nzfrPj@~MXsZ+{9nc$2pymeuzz?o;YQ{D8#^r8 zI38&8&7BYKC#G((a*y9V-`+i_0S%a{I`V0r`8H*clWn)rZ$0nxLg4OEAr-x}X5`b5 zfeld#8gA3+#)d@hgYK>_ENEo7&G|W83#mTV#8Rmn4$q!55=_2_8#$kD*~x~yaMcE7}wyqvEBD* zR=K5T*s$3OzBXA(oqqwIu!nW=WK7rG9Q}O7bKmMCl+A?6?YJ)qGw6mZxw1J_hfA3n zftWj%^<4K=68%xgA90Z>Eor6?imn;e61;XDFQ$AY6y_lu&y%kdxEqQ6h?taMO`Du7 z@PLd_?={|Cp>}>TBeR@GVQu0alydvb=&(2hqLdw#ToD%sQ@L1Us)i!w8TOka&~#Ou z{k4=51S0z80ozf73-wXp3}WcTR97pT%y2>#)zqBfGxBP4wHyPc;rN|jzPvsuIcdn7 zq!?R1TD6dtF7Oqd6xg|&tI#adaPGdle|x2-5+pPw7<>`|F;sMPqxE~A4`Pq(EzVLE zyB14ixG31)v<9!e7idb`M??yS?jZ$pIxRL4He5^;${_DNRKy>Qtspe~s`_-NnAy9z z>dk`JbZ!M#`T10t#9h@k1!jWaqmf~rGh}>vdiuf~h%Sk*I-7i~f$^!(L z_e5!zG*Um*IbZbn5ssi^MJWssagjTK8GrT=9M&`(o~TS8g)Nr~=4CJB{XB==O1WTC zt8!jsC6k$%#%4CW3V66#E8w?cE4KJRJUJN?!6I%=u8p?TJM(%t555PYo!Jl`4;1*@ zAJMi^FpGiJmf||Ogk|}wL2h`FI6Fhn?_M}{TIamBxaxYooRDKvF?f33;Cis>t!Oqk z`zUwy^UUi69_R#GKk4ehAGf$zQ|3~~qf8Z3PCP@4N(kZ5JJbbF&*7Y3T-=z1-oP96 zs3U1rsvQejjxly@#U@RI9&?p#j&ySq)J@S5d1$H}w`Xi16Yx%!xe?QT%o?tsyxsBT zYYdOo=ozx2*Q#yhgosQ6pY!f{OE%JY#W@`Vo<=@!XVCP94~m?UQaO-1vsWwBQI-O@ zT<@Sbc9+dgncPU}SjPGs%TCRTe$6^}qscEZfINnLSpM=egcBx#4~6 zk9&H}*b><7w8RrZb^v~wMPw|ePhBz}TC7~vjx8QtY zqBi*Q1)6{arGbG#J^i##c~(}|eLTjboXavjW8)%|W_n;9qPB|u@PT$w(c1h7#mu2` zEosAd3NpdEuH=-mmYcdcfl#~YjDG($dHoB=b16qT0;05d?^YQ-HMziE0Xgq;d*vrj z%%sgcH}P^i6x6C{C5SgZF)JCmi-Ek)b5rz1ml&+)$7SNABVhxJ>UlUJ zQU~WD#q8=DJHJnIP@C@-Y0GDyv$>{Bsi<>AqMK^tiRz>3#e4FfIH7`VH7|W0*K>_e zvEs(S zS~)_rPDq$gVJ*n#11^AzMa9E{cGjoI#?m|pt)3A^KQ zV$zQykRnC<-MTFwA{S4x1W!!P^%%4)t0EH=%qLzW^A470Lod z+wfFyy14aui|UHoRQ(yd?pK&?=0jz>wn~jD`ZZQ1u7?omsjWE}+#ux?j|j?%q*;Pj zZRG-^7#R`K!I-qw#YQYFQ)9gl9ueV5a}iNVZ~g8?@_-?oWbc=}a`MF9=~_Dn703C4 zjjO_f0nYi?sxBD9D{DgDI{^fI&08z9Qc}@vc@X&gHK9T>QeF_j>0;5Xx4xM^o@+S8 zX#g_i>MB8BaN(k&r%z-s>IloMF9~R)qtUq7+j4Tc-4*%u5u{wTrc_PbF0ELz?ZNAQ z?=i3QY9Mu{hGraz{g4kh%~Nf4^EUo?AUcV ziHzhe)f^w*)pVS!u~VxsG{C1``Xd3M5Pet^j-s1E-`h@?a-Eq)&VoBKvU*ILX>7z^ zOB>$_#eGkczig6K#%f7NkD}}CCBvxIQzitW>KI9#xd>(JLHYQ+_YhjcH<%V}4h?;( z@!&yvK^Z@#E=NcwWeKa+ew5yA0inu0qMaXgMX-q!pZW8?c#R;sO(mJy{Zl6!V;Ei#q!;RG!jnc6`bgjc0Ji+*UKi-Tz&!KoQ;l| z*OB?hs?M*GJ=^EHUo+2U8?%~^k-2bVE`&kf`WN6~(`h+J?TOJ+m0FG9s;UVyUih_U%LGZAE#-|5AM)#ubBEyL# zdcS@1@$`rCRwv6EEJGOx{F`)(GkY|!G4P2cmP~sgCHtO$QGe357;Icz(LC7*(C1EV zuD-sFX}KWhkPw%~VX<@$9PZ8MLRKo!qL=8MpC3GExFD724G)Kb$=k*2eH#Ap6Srmm zI&OSQN(waFF;FidDPB-+R3;Jf<;)&ty(jIvqhe}$UqS-Ox2lZQYSQg!idZf6DzO0N zt1uvWXjBxRdw*QN9Ad+eHG7<|{89(@3n5g5TX6L~Z$~xxs$eqhiY;!9@>wI**4TH=I@#EtW=91}`M_k2$h#pYP@K{cH(YLmPs#c~ zCOUn2x--Z*xiEh!xj4OuCswigRRjIOmW94>e2^gPpT`+xP&m{SV`shW{(T@R+-Dxd zghCCUK37ut2QuHfP*)x#TU|Ffpbu<+YNs_*#%;cHY5*oe&g9F<8vD~@%9k)wrqa$? z-tZqEpY>Hz=;;xI9O?ayNZi!f*PUHm(CLYT@3=GTj&a{a*We%tDe1;gtOH2vJwAd= z!pmDkk!y$#f{zLLx68@v-CrK5vD(@MDeb~zX@36xDkNpTle@l$Gq2gXjvk{)!JhQp z4QWpi7WTp)udseybau`$%=bj4b}R(gs3St&jqw_nGF!}{woC&j)dQr3sSo609h51w zZY~a)t>dk&fm+^PBI1 z0T)9O+(t&2Dz}~PT<}i|*8XXvpCfQMpToAxGBOP3ge?~q77%^4Z?X@=50zhBmv9w; zBqaPFZn&+R=h@oq-MAsZ&)^)r6t&GQ-bLyrw*#XF_vmD0*kd zm;QXp$D51$$jxqPGxhp~OW&AwojbHn=*%5iS~?ey{YZ`3$`lj=6B162SNsQz=zSB? zcXxMNyOgG@?UlqkSjEehpx%07*gb2gx|(y%U3E0m!GTHs5x=Ord!z3Fmi-0?Nleu< zX6D(`ZkJ~7;XH1o$)ohbOg5J`{hW(QZyDeOQc_P~rhO?VBiI^9dxcKgw{J8aQM)Hk zzKS+A74W`~&6?Km;e)1$iHU;3*A6DE=~@tXFZD;@fn(5DM=CP+1-PJ{m~E&G)EhFT zH(<=nsVREAuJ=&rKUcU+hgj>0Af!GTC+Y0$0bLq*{F1LwYjbn)t3IO>_Y^riDKOTd-hEFC z*4x(2b#}OtoO8;OR15L)5wkSS*o?rXk#7x-4B)ZZSIU@KAtCM6)}Ajfe@bna$xK%~ zg#QhL7zt2y4YxJJW>)e=otO=(k5}A;~U<@hWWF^sRnln zwGT3zsU5P?(wo8Xvxs41W8-HAv!4nyIn`8EL0IXwi_Cop^{T4Hcb2We*ZZ^U0;O2Q z-Xg;_Q3ncha>fQrtwE>z`T2nm0y;;hAZTv@LE@2RJeF`eI9>!g< zD=Mau!ibBo2Lf6mX~C=WPjT0q=qUM4U{80G^&Ux7-HH|y(bQg5qYh7rl5dVueYwlc zt_WLruPtdy{>Y#^Q*DhLX1Syj(nW_q*&#G)n_b6Q@Vd%Ve^g~;_o0EAndZh1=0QCd zJG%oGxOyMRB6MIMpCPwTxA(TR^+93R!RFqNry4Y2G1%T+Joe{b$F$)j9!1~HSGZ`Y zsOmxfVeDU@FtzgNu9`n)-pZhRzegWrIa+6X^r9~T7?Q7@J;@0VB#iX+k9+%g^3}^w zc;VD^bgE}-iNJBB9n{*Ly^xx7Io)3!&QxYwaXZ(lyEsc^N})ZpFRv+w2Ett9I9z<2 z^Y_zPbiaR&A7}NulXM?v&}w*J?BZ@PMxYEDur&C8r#>RtK2%#yp^q=DRLVEIK*as3E~}FJDtwjLHw6Tearlgnjy2sO<=Rba(U- zkAHW;VXA^v7IwCwRsu*LrqXssazX(3)o@uabY3}pQC_7zEuKsO?8|KWgj$8E^~%IF zE-uE-NRRYG{IRpIaje!L^h6EmYqA7$7o^c34?|xG3x~kzM?@8y+({NT3r*Ibs_ems zi;GL6^{mE;sn=J2amP`cjT@RVm1>q+t)~|dxH;2q-`r*a`DF9#+j9X!S!2XGyEIllglDgO)zLZlm-1TyJHE)8oGOig};Y_a?k6I zoFj;k>ViYa+PY)F$bGIoD9K%6!XigFh=5NjmYhic_}g{$%X38-?s|W#ZEsx7`J7CH zpVpJ7ow9QVl40-jFA za&Ix=#RtLQ^sDJUyL3dx%BlrRwsYYvI3qUD^mL!>N6D8tYTZIg$6TClEqn+ z^73wNp-hC_w8tUHK`_LjawrVh#J=}x=fc@u}HQWS5Lm6ctN z!3reEokzzik5`et4J!alvGz8#V4@1xK8ujINJ?8fcz929;mb7%q&<9fHXrg^CFSKB z4Ut;NbX2FM=NTI5?J`;~DZhCrC@S{GaZ}*(JTEROseE&2)kpDwA0fD%%l6Wy%tdyY zG&fNIdg4KIY`N&A4Ik;R!NKr&LFE>{>3@{S;@0nAo9W*MV9jd#%_5g2vYi`IokO+J zOX+*i&#%8qO4(b$^+1&o)&n99Lh4K`=iR|5rJe4np2Opi$=Nti#lnY?hvoEU_iW>6OiT<{g$2rkJER^hz(Tt(u)7^H=J%(Rl`W*(f_kmzuE~bm@n`!n zw%v|_2+X&jVx9_$0ty81+@WK zN@P4IjHl8e*U@Nf@)cC+xX~oi>q~-6I56(rRbxu@XNUFtCgAHJ5Sa$3wUG?Q_wVT) zm|Ln3@wr*p`Nqy;MF?eL4hndL)xI2wsvf?VzPvD)?W<_iTYZ`9@-hk?>s&VrYmE$+ zA;*@!h&htQuj{O3Es5)oIU% zDEJC5dD%(U7jhl?mrP7_>J0{*`yzD|^+#Sk!?ti$6BcUsVI?CWtFRJ*-bn2=C{9U=brncq-kZYqg9erPmYn+`LIZpc?30x)##UbwGbTfk$g^S;*B5X>ZE68FKB zh$8f*-7)(d|0&_oUATl6#J2SDfdH%dWrT|`wo_drj-vi zCp$UbArM)N!_>~Y#C_w>_E*c_>`ZKMLCB(`nr^z!u*WY?HFfQ1F)$(y%-mg%mvQo2 z=2Jy_1xvRyYOJHmXByqqrCL%%DecQy!4ctObz43~q})%bs5realf;NG&TZK>FfcIs z1_gy$_p9yr&7e!2iBB^rwA=*2jUQR0Yk7}^_BhDsm}%r-=|;hHa_UoI&vjl<>2PGV@ACQ!G?#l~+I}_-_|{JQ(_dT680Bi!9r1aKG~XChvqKMBm1e8+ zl>jbM{uEKr?%<7wkc$ZoE$w3ne?zEwuu?o>GF|qn{UFFBrg?cR zr=2Lw#l*xO8LowI8SmPy_1sjW84ISyJb@iXepi(W-06~`Zj-r;DfDljo2+%yu3b!} zK(Z~ZtGP^T{VeOM=Hjr?KXc-*oDx`UjhJ%%B43@gqM{TdaQMLGpd1Fl6y!_gMCnj- z)w1&QhbkP9DIfiXVK0t~WI3OD;QJc(*OB7=h@%V#KiJA|6?V$($u!@m};& zAN6H{BR0O%tJ(z2z0Z^1w0qs={RPKqc=khAOC5_wa%4l{dM=Ygdj}ROi2SRvlDKPg zOMVpbviO?d$SxcDx&TrSjeY->v2d+VK`4y2Bc(Njj}VD?3k*k~m4*e=A0R8-PUGhP zGI?;5i?uwh8jy3$tI!;$j%>AbT1%Cwi8lbzO2W(0?zmqhh5Q|*dg1MQ|4y2@?ZF`h zb@o^~?C)&r@jb3p4so5C3zAh59!t59xAj-2 zuMw=f)DiSI5Qvp6Jh{=>Sfg`y%d<73Gz$|0qrbb$@ML>YlN;mmB!4b6*FY3AxIMG% zS(=xdXyZrpwl532X;{es3D;A!;&EFPp)N>EPp3>^6x6>FVAqhhKAD)n=-t*mG}=9+ z>P!d`sTXrUQsgnmBu%gs%o4Jtzw?18rs1j@)vD{iRG3qyJ#2BRz#;SvB<7^UvqT;N zj~P_jbZEbJ4-R6d$fy`_VAv@rD4Z|vAgK{=h;es+d~s0^pNR?$E%b!h*w_GCkwjMx ze`=+Kl9l(jGP8&+U;_M&N=}>(j^uP}A%Mob-v4fbnfqdpZhf?liT0fz1wQ@;;+)9F zcSXv#>pKHjP2t?6r0K|ne5n@wwb333LdoxLp89y{qw;S~xsdRXNOYc%dn~W6GMlWU zJ`L?6XJK(W>$!PVI@?;`Tzu-L-9NNcZ)`b{w#2gjgypTGwsxUyyM1ti>jMWz==hi; zsw=F7F)-jh9$StL1I%*t{V*C~B89gQL9UuH323TlWcvFoD_X>MGEzIR!SpC{(nr?uFr=Y#5c2o2;AG)yCjW$k~bpeCA~^_ za^37D_V1*fChlmE(O@t~}pwt;t@nsQ0jmVz$#nB<}5T+xB)lY`U7 z%(QGC9zk!nABiLy%_$hj$^E{UbMvHP=Z94_3R>#I z6*2(r5^NSI*5zij6_uylCBnqS9C9>NtaLm%Iwyu^Cc$5?en;TRsdwjp?AF<1MbNOtXOt_fs>m?wRtt^e27_f9m#7u7^*EyLVzS zzvc{?z~y+^7XZR5cozdrZN)Mvqs@3i z)W(!S=k8c$tdfP2Mi*vxS}pZgNiqc$!3I2^5kmAr&ExrK!a^IWN>l;aGL%2@Kd;7S zQo{M#Z1I$!VIJqD@NsH&j48D;6YT?*cW=Lr?s4Wdb z=m^VpUdU2r7RSr>E|xFeQB&ZGYELZLU{E&|YmB5b1YEJfH5c6hOah+@|Lk1F)|5$m z+LzeDLoGeVjh{2Zs%yqSEx!zl+a5`Mt6~!D8&MExExNdv0V9XvIXE~J?IP*8V(XJV ztD^U%aM^64&~zgrgb0ho^qha(eh}92#@6;BQgG;$6uN)6``MeYl+Qel_4gkf4Rc#@4SXo)n;|Xw*9qAfE zGO7-02%>L?m>4Al$P?fJHM8dEetcbdcX4o{VVGuS6278M|bykBXR>iM2Ii893p) zv$Wm?-Z7)?u%dsn6F+A zPGYMuKq};ne05dSM&ldOYwHas;1lHP_4v3SAW2Q_pL6OWeu4Rn*?76Z%MS~wAm^4= z{-10y4)(Ic=Jz0_$p}pq$J6z6Q2k>V8jNAJnCPr=%2n#VGOPr*>BLpn$}@n)g?LZz z0*6FSMz%D+Sgb;Wnfnp!kow)zoK@X%oKE20X{g8c^s(p{<~bfywCl7Z-Uea?sw$UlP&PQ%k2WXUa@Gu z2{Bb=&sy;)crc54Z7>9qJY0g^SY^QoP0vprF7@2lI70OJh~&Du+od$;dtg@H{ok|_}YIax?oB?T%7#EAeQj%PmDr3Xsr8tf^`PVJQwi%uW;wSx? zPY;??-_F|^QSG|Wf>38}uzYYW)Mo0fT?Lby;%yX9iv}{wFT%N`qRl%OPQ%)0(?Lm*7)^yYd#oIQ%}2t1K%!%zrYyf~&GV zne}EGns0zL@Ksr*G{`>uur+U7SWqC11SNg#=pGs_CklQ4$|p_q$qLECr#WMagXL1W z7+sj>Wfs9L4g*Y#TN7@8h)B%u15V(J>e(Qd!5v7KKf{%hqdY^4AX-@ysLxc>6yRV} zamt>2kSv@=BXoN*$lemJ_xYnWU}MdW+f-`6-@XEfI>7Nz`MF~q@8fP#z!+S-I? z<0Hx}4O(Vw;2chyv*~!SYh}10ZxBtj-^pGLy^J&s2bMaF@W{xL@8)iGRA#rj7HV7o zRGUJi3eW_d8QCVeDsF-;P?hVu{BZX$LQWMdw)y>Vj-E~ZOVwKUK0S7KU z#HOGqi!<67ZF;_B-8%OP*jKy^*9#_hTD!JULT8p3hah?s{rM9@r-VlrAzb+c){s3H{QLP z2_>9+1W_4y#4?(!gStS@FD;LxI_PVp!xG-7ke}0 zL*4A9uU^TI)gayNQ~#mfJcmTrkcW_n)~!0!P!^9X5P>4sHY1kzOti26CEh;irOX#T z)>uUiRAr`=52dCHnFN5glX=cWx{ydI)=nO~V&)e-nk|-&9Fp%FXCF9s4pD&+yfO*hZ)xU2Ror%36$?2-s-Ok8OcbDkSV(LLqJLJi_9h)ygeGBV>`y?dE& z%)B&rm>PKDk2fY}Xg{hi3su1D;U@gYOz9q0A+Osed0m_8tCz-!?@|jj zjx#}N`A$8(UvlybF%W+Wx|PHkDJm*H2$@j6FHGCebBPfU7$_%4bwL&q9{%*wAhWV= zKyBWRi;;za*Ul9(*Jx_(Vx!Zlm*x_V>F@8Cigf^BBL4Rpq4UX8?TVp$hz|(4tTFu+ zrQ96I!c3A1qi9*~41O0~NAro-8U^KAj?ga6D3p|^40mA~kgB?Rx!JfHOnhsuy*G*` zPN2?R;e?GEa6Umn(k}s=9sBzwni=kxXHm*2dR{nOPR7|ZLgb6li-4U&MNsYqOCWQO z!SqtYIU&6lODsx8+SyJ|qj_v;B;#3_g+-Lzbo+@~(zll)sim11itAhNt-j80hDwOC z6hlmM%Bh*A;%A|s0#W)!&4*C=_hFwDyW0h222^A|3>)WVhBVWWdTbvLVU0Z=A6<}_ z1nvr8{j^L}e&Z8o;i7dYO0-|8X{af4eTpWWh>!P6jmOwW^ZZ1GVDY?IYu>Sy%1mA#U*M5_?a-~p{CC2{3qwzVX?SgD-wC5P0)NTn$l{Rph| zO?2ogIEG#du;1DVmJ_^n!Aed?Lz6P>5?=W28^Q{as`ZX9EXUIWMLx_g6|>=%t&xo8 zQI|MJPm%B^$;Hpt>+U{Wj*p1no6p{Amw89XcUw@nb=wh*R|70Xuw8=SZCmcm(^y0; zO%swZ=Xijqe)cw!TZMw$KG1yaHl7g=kxi^qcN`j@GNIkA!w0O1^Ge;m&IP3D`m^K3 z4Zur%4?-oSh?%X^?iwDKHv~L3S;y)JwU+6R5N_>Z<)^jkfeg9v=2^Mb$k6ge{aeAMPUeqQ=+ z`^cT$-Kn!!ggn{kp)49S>3=MMxHibN<48084fd17lq>8+O_yV6xYagvi8cFu-w&4; z)K6k0y&UfvNw|6F4>j~8DBT>H4#EDkfEOcN=5Pqh@&1^H zhb)ZfK3A%4t%t{TmD$~UD+>)E+4R!K!NIZL9K5{p!)@_34})-66b_e`0VEY$@og>= zVA89vtki2%Wxuv2uy`qBiG+rQ#X=#`r0D{H)p6oKVjNgg4ky~len#X$FR+|wLzM3RqfoE)~R$aQK@^by==4oz)3bA4ZQyyL-_aA>#7l*vJeJIrY zfe9=x$2=Hodhd?-{(bX2dz~5+6AKQP^Y`z4%?Lz7LakQQZnZ~0I)LR7m!Nh-yn=j# zd~NNlL%GET#;|A~3Oqsa@DO}syd^)b3cu?+jk3ywuX!;M1g6VanZ;y*h1qKRr%#pS zy{`0H^*E3D;S)UWv+6@o6#W$@rC0^uHUUc!`Y_$x>TS$p-NwSoq*AUZd?x|8}{T zp+B`!tKONs`kHV+^kD~|C~9g)RElXK(3PO2P|@zx?%MEWA@M2dOZRG}5m*5={Z zbu{9`RdNu++8hZyt(iBQIOEx~RWo(Lz8)w# zqQlG5+JqR<%O>|E=*nL+M)xw?_6x9;n;c zQVY%CpDpEi*R0L^>g7zHFK(QvJFI82tS%cP6S5W!%cn3On49bAk*dv!Jwf>zSF_&} zXxntomcrZKa#4GTyrM@&LNcHh!&b=nxu~{w0>G;=l2!E=`(0j1KVJ4lvhva@7iv(= zEh73x^msvF8JDA==eN1lrpX++sONN`PZM}Jr>o9HVLR)d)cI#1vgX6|^MS^HfmI05l$VdRTO9kAX^>HjeImSI(XNTBi%@MgMySINO!liba%ZwbKTE%U-LfK$M?g# zZEQ1ajw`BAgbQUYVrMKN=ytFQ0w zx{-ki^XtAYz4JIcvzs@tVmWFqt@?F_5^q0skeeJo4*c->pxTAoeov8F(9=uUOPS## zr>WSvv0r|RR(0N9lKb)MknOY5x&GyS1dJO>bF8zQ4xr7Zk2!@tlQ>VVga|ZJ=4NM) zYFx;V@>AShF~uh#-J$WrZ{xGvsxmbGxwGS+yF#2@Z0zbLV*Cj8k<^l5ZeVj0{Q{~4 zErui`hfy*23>Ic@Xh=v%6pWX1Cokzl%fxY=FYP*a<7;S`2>Vm&K(2O*T*$~8*5@=p zdXQ?m1#0ZJ+yawlP@>jJB=wDoEx+^Q+BkBccrequ;HJs2-aXTzgt>fTLjUh=?OSam zp`d3g?weZuV)+{&-Mi%*>0Y$4`|)^+d%@wZ_YafqDQM>WPdtO_1Jlu&^DpsroN z!hjV{XSfn#v8gJQYMfN@PPs2>Gh5g5$^O`l!^L_H0kIdFGKvy4l>td~Kb$I~7EN+W zd|R)hRCF3UR(i#3W>uyZLqGH3V|?(vu{p{!HlljQnR)e#rK(euyh4XFQFwHi(gD{) zckE?U;Bz6<0&Q=s2j@7-=H zLMPKh1XBy0hs(}ix}2a<(iv4nLU1f!ic-oLMr_jr+9~UG^(GOgg-#@S z>Y-MfhbQYQ`4tXpnGUQ z?W{foNMe8HaoTbLBal_I3(q-#iia{nBN z6$f)iclM{WaB7V~tu2}Jb2J+(>7CG}FDdKzXAh3@-K$q~2<$0H{jz+D5^53*Prk$u z3Pyb^xR8@PoEr41*Y~*;12u@I$&C6@VF(1DUp^+~mtPbEKUIq87n$jbo7Yj0vBJ58 zZ&p-Rgg;R}%N^r#>ps$Fak`H9%#)9mI~r`imd?r6C%j9{<#=STxik3Q24$FUwOQglv&uAwTy>w(Td z{dxk7Y~LAdk#9q>i)#0bU(H5h3k34|ZrD7DnaH^liX^qnV47D2oX-f{^7Y0RfEL-= z)Y0l~pY3aGc=Puag5l**Lg?Iy_*D?=w70YWES24;RjFuTop+ zgJ7Vb>+VK6DiQIqzhBY2)Rt$L#rI;dpACk;B@=Z*TZD&gM-V$jx6@E~*lZUo3-RD1 zC?OR;&QE1OppK$Rigcs+v4UhV?vD(7R4%s`P+_Nev@EUv^QeSuK-!SrW!cqc9@6%R zFw5(x#>m}!-3i(Qa@ydOSuRz*cI!8@=?9Pg&ybmDIbm@+pWVnCB8zOTblWxu>&b;0 z7*d)%6H&DulV;uT_RR2!8U`SP78CItwi7vn>sbz2&@>9r*uQ!!_JOvhcw8O{FHwCN zk$oNcBcVjo;hKFgO_*?7dSc$d(gJyUGCfp2j`vPpLE>`!z)rW~Dcf0vV3mfZ%k-}) zT)kJcdJB&go&<&j2P;Ne30FJW6_u7^n@w#x%uu%DGor&kMzcDdAX4f}j7m!V*Jnif zoYt+nv9XdY5=p0{wZL$G^;Z0w-6N9hy;tJmi=Y;!l8r^wK5tYW-Gvq6G$y6~NfiR; zy0je7xl1gYn&?Tl9`$~)x2M4klCzRns;A!e^?js&4eS7vtL`t1jGp^#W>ar6<&N5| zqFkQ#`Y=BlHAUwm5hwC>Z@gm`F#h9!CdA;OT$ZUy=UJFq8zGThyH(RmL)Rb4zbx&|hKCc{YeexbvOJqW-`qy5Y$YIIiL;x-29 zKcP9zjs$JD@z_o&i<9PyH)2COYJMEVfrc});{Vc|kV6?9qA$PCZ#d!>O9*^^lHWMI z_E)Dyp#Td+DNL`nRIjv4$ARqjyrx=6!%h2({0_t5S0%q}h2j5=f?NV^UK5h*J4DXKCVy# zkL6b4>4w35i0f~^u93|=Putt#~> z09H%%<=M{8wwKx08_1BK_4TgjKN$IQ)eX#EExxd5MP59?!3l*%fRM>;pPs?N(a(op zxMW0{dU|x{wmeM+&c#iTt-k$cw2r_B=p7n9qy-%(TV8dVB9ZBMv1d&Jsb4$(=ezj$ zw}?1j{oL{4{c2lW$`TYHeX#NL8%Xaq7kY1rYHOdhaY`ClS}7~z-zMWl4t_f-X~=us zCV9|?c=e<>FYJ?D7MkQmHq`}mx7rqQ!4RsXs0db%lZ~gp)=nE0n*!-Bl5_&FA4n&# zARyA2?2p2cK@9SOs#7ifO2^Zd5o!hgYIo2)->lYGN4v3E-C70ZpXy9 zS>bRfqNaA=Y}<3PJxrTAixe_LIVD7Cyvow-{QHdI(=hq&r{E5JhS5DRKtoN97ylB< zkH%Vg3N@K{cz20Mawb36nQ4G@TuDVGC`i_2?O0v+Mb}py<(`n8-@gqlCQ8kZa)pxv zP)So-&bOj@ETv)xCL$v6q5ciJ%Y8B)$Ep1owqLo6xJJ)!v-VeBj81Gt`uYl*)8H%c z4vgA4?KuSHZc+$a(a;LGeae>EyB~JKjUVmhKhM5bvEHgiM=q~m)e?2RWWFP2>Gz99 zf(?jQJu3!4Z|AhVcl!1l_Dh3z&kFSq&&?;DS*(U0fGwSsRYbpUAvkygkx3w^#={km zlJ*z9N%ZLW<3P+9Vu5C5(p&O~{jvrg-9<(egHFXEL}4JbF0ZTv$#Q)I6`#w_is0Na zGb$B6QocO(zE|rI9!keDon`3IG+aBcvAo#x;?&TY>vu?l;IXv>8!E4JkRqwS6rRtu z?9NWHfSunHjtdEb$@Eiq@;zgM%F8_${7QBk4CHXTQ}Q?-G1hTwkPq|m@8tJd4( z>L+hg7b`U(I-g)x<3^-}AHj{$*Nr08md{Dq4uO zm`3Bba$*57P2?(^Y3V_+Qi~3BH_K!g);S%QXR7L$1jJmf9&el$C^6m7rm2-RXV!d~ zm4ShRJeqLPSk9TsL-oFq{a)A`e~1z(V#uHwLYJTn}Bj-%DBJv^}Lgr@$>x zTK66~E28A%la~+!y}+KwCi!h*E{2gN-4gp1u0p-ROPd{9l{TOH9gH#9PAYggDZ&S$ zz*Y`TdE+l;JwsaeLRdlJ3ZjhO_v#Z>ryKLD*EVm#qH{Q%=OqoII>VP{W|SSlXr@N8 zU@sD_)-JPZ4)L_kCJ|B`>>zn96DvmhQXIqasO_SwLrvtwYF4a!SVy=j`5f{tmhG(* zP|wtwey=ct#RDjk6@EQ0P>w_7M zP|bmo66FY7>}NRN7M&3?HvMlWj?Bh9i!CgytcZ4XoUa?MgqW1})~T#y&3SWEQ*cr? zjkepztsncC;Bljm%f|v5t<= zsP3WMyO2lQ15E*TsM}cAL;2=?*9mysjzBx7P+A0r25{#YbZF%p(_VEia&29oPP~JF z-bNI3s_V^1oiCnM~<*E}UBBVNnY zQhI$|y0+#eoHkn`$>D)u+X^e=wdsb3_?qOYPL5bfbWl6p*Zvs(2{GZOOli5{0A1WO zyZndNU5=CY?h8VYsl}70ZAy3qF{LDnm?dWYqC9RfOSHM34-`dC0k97C9? ze}8YV4B>}@mrTSj`r*98xoZqT_9q^t-sLQOdDXYch8S{v(`+ECs)^+u9~v@j2r@C; zO)})NH9Q_nFS8(&N-jS;b!v~}+x%VB+rMYpGvvB%?v%uy#DA{(V`dW^NvPv|Zac#g zlVdWPkQ!!VW6;xseF*k?d_=N^%4u=h5y7SElDssqT?5gua-QZxXB3Qe&S0j(>WDsf zmBG8jG7T~}?|ln`g1jsa-*V~Zj_(tDV_82+<{83OqhudyX~i>B-EPUTi6OQSh2@Vv zUm;_)26E6j>8#>* zeI@jLvwi}f7s-IGCFueUr0(gGDxM!dY~yF0-gfxb8Hj}F_K8mI_}iQiWdRuV>kMEy@x z=W5d0JRp?u>qJV;$!X|bF+-Pgf_ArLgc(WO?q1vS$)G=$kJ?JZS##w`)hDfG)I1SEa6()Yt7kD+>nN4aqK>HTbw z)a+tk5z7MgJyS@&h>cBY5b0QvTYC^|i_I%z-72fYhYh>}@Ic10=kwY*M1pC_hh*f- zb_H@=cdm>uwi-e%PZhM9XZ+YVKffap$z2@$VqlhjT)+f27g!-FS=46XUl5bgqxBz^ zhMgU08^$C0i_;ZbQR6D04-cq4ud*H`>&c+Gu&J~X1Ofu1*`Cn0`x(~DmESMzEfQeo zd|NN!0yY}&J&Q_*HH%vTgo;f0*G$g7=x)_NEw%E1Wvs4Qu@MxVC9Xum!op&=K6J4B zRjF90VsUZl4B9KrddP9KR7Jm}_GkTx2>wC9ytMQT4-Ne;kY0AvEXq8}_njOBKO2{Q z?stng@Ue{5+9pLuN}-fjM-Me?U9#asFAmbNhlSZMwyaFQHd*obG*&EA&zmi1P0MJB z`U^i^@cL@gz|W(l23+Xce6(DzcDAc_TTFGY_Sh&sIzjxKI@_6i4*Wihh77_i8`t=@6$8n)R%7FCi-EnJph0xoS7oRKb7$Cu31+H2GEa|#|~=n z;Ad^$h}0k@f>FB)tu`0Z`h5g$3C=p-Aj3$hHQxGq_Jkx@zrtXCH#+&Y-r2*Ilp< z0xqzbFflQindXimn(@%z1I-nI9d4&y5;eZ2u91=DYL5>Di~O#85Az0Yhc**48~+9? zK?KgwCK>aqo}s|iQPWA+4PbPY3aA6og+EV|rs!sz4Gw=0fvyK8As~DxSGj{j27n)w()U)ElE3L@BDNPPZAmtL(;xJpP#$VkYr zvar0dwY0LfHJ|Sny64>ZnxKd6?)l?>BFI15i3Vlvv2SJQxB;0dy?PnC+I5G_Pyit3 zeeK8O{BsuNeiUE%2KY{rIDSPjQTKv~`3x76E0}(I_BGXSrd++f;=IwsZ@*F z8OjjX+rM<`)S1AlrXySMZbec_Y4;?W9MlR!Rj>9JqBzv{%=Pqa_vb4JY6@iIYBn~y z(VN7aQk1EKHDZF1f*`2$sJj(!XeZ^)WCcGamtIQKf$_-ol$1dhg`RtQz$G|6Kl^iTVxF69;^VNu-}Z{uX9Y9%d~ddU;4M>_1Hs2`Rn- zq)IfewCidN?|SByEA$!AfUHR}@(2b3*Y(ZFnZhl?8)2Diw3=zTakP`1@_@ja#zjID zdV8QV2N~$WpEYISX#oM@Wo6;+)p-@sSr6^h34Vx3J8D$?8Ue?Ds{TVCKUx1E*|w%O zrmjJ2du#9ktDw=Q4o2=u3JQcc_#YDzmcSew2phnFAJhxL_0{?q=O|kq?EYz{;fXrf1c^~GF$pmdB8rNdam4ZQB&()* z6zRq}h;OBIzabV#S3wa)ZDcg}YAynQejfj|bS#U4kme^Lt11%9^09Bzg z`uW!5dnSTKPOpSNMdG~jO74b&w)}zOBX8Ny*?6(uz=d4}RLXWK;dYD!n z7|jS*2~rQ6nMmutwc}sHQ$Iu8P1&XBDaW`p2;KVlVmWn{d@rrcZSS0Q% zK+CzkT->^`yS!r5pXEa_U35mYR8xni%`Qg`5Ro_Q-*LMm{M&LVFc-vD+GaNK={3Ok zZj3CB-`rIFWUJ*fY&<-Y60=6P!@vrN?$ynMx4L^bGIq&mK$Ztz{+m_u1D6|*LRxQ}TX^Z;BI0_BA5vzt-SOeW@AY{ZlX)d- zry20P)S4gA(((AR)g@mk!Q+#Bd)1=rZB4D&P|K8Cd)od%v)?;Ju<^WHSAL;mRXE4T zHPC0Y(2{7?S`-7^Yo&&_paQbqV(<0C3+tH}KFecB=C`yK5)uNiL((`P6SAshG@B?@ z_B+`ZECySz>*;(o@ii89_G61{_on`Ri+_Ck(%jm7U?i7~n0|KAGsG52u{kRm_P}PO znmIzovK~g@z7?`kn>ud~&i$W*185Y<0boh0u$u{leF*lXni_2p5oG~g1;Cpf%tKvi z33vmp()gdIii?X?i(ICD^4ou4gDec1T(Yt%gA?Be`i9EiHu%blwRAFKPmTc-tNXp$ zE{n=PmYN~*qAFe*)|YONDlEF)2$}15>8W#`PzI#^l-sn+ADq@xm67A0Evq|^MX5mt zj{D2$Q$VY3U^pG+0A36Lb=0FrrN)*!zhuCEB`kyeOGj_Yp83a*l>G5ek@~L*@V&f5 z#D=^2>JLs9f4oko^o=9=&nrOwV9^Bn91;7r%ANZKc?D5Sg?! z*E6GN?0);RZcK4)pTd?BU2~aDs@losg1I~M78<~zGlsXYJMR7a7F5s+9y)z$LVHnqg0N zQc_&9y|p!*E8uz=;blgnp|}OsXwc5cXlZE;TmN-H@XN~a-E&mIq??$GOnWC|Qzs+z zeV?$hK4pDsXKlOIU0w3=W0C^p-kCe%$SGQy1_7@`^#7jI7nj-<=ZGI4tTZ&%tpCi! z@$8hQuY{Wn=kkmdahna5jWv3j1+MQo0vA{t{{PwlK`P?g_C6%#_CpNRsrrcH1xJ}n zjtBrY`+O941YYkM>6?E_tB-!c`R-wpt0%cP(Z4^NfBo_}82YK_%61;X&WRz@OsXvj zSbeIRSN(jI7bja}DmGRB0#NU>JAf@m{x5F1Dt(+Z1h}{Y`89#Et@J>V{&cm+%CDd% z5CEK(>=sjF4~i9Da=s&`HvBJe@w@p3)lYN_ zq-KhI{vID$rO<>yxacKX+igI=w zjUh6mc2;10JNH*l|Mq`Fez$x7zL2jeU9T1&$H+jjw<#$_t%q|D|jybeS;t4lVZa!6%$h{0-xVT z{kf0=pHjVaKoaa?Ra)ejwr}OwbbddpG?zq}q?Nrk-9UgXnWG2AO>+}I&kA}#&JaRvXc#Rz{fnCSnS2LONCbn8Ds_J7|Q z{Nw)&b`bghV6emguP+L@_@v%CDQGHWuTcM=yZ@hmKaPtjrh?xmJ^a`c4r*?dvaqYM z+2=;2djVPfpMUq$<4I*PWjD8Xz;q}!Ks~oH?a3!67>_eM-Uk_$X$EXpv<^Jl@|Hz4 z2?@ni3P~X85JbCY?IC8aG(`uscRYnDYAh~a0rt9x-7_(p;{oY#Uh=mVilzcfrx_N9 zE_^8c*-z#X^OW%T|L0qOL*y>gX#PIlY9BjnUFgtpJDt}O_CN1stabkUyRUlx3BF(6 zht1{bwa`J2;NL^DTA~aSjwk9c$Kcz-HdsOs@`owg+n8az1c#WIL0gMmm1?c|02WDE zslXO!YG@tQIIuD4Pj3V^TT6muwQ-am*{qC;sGskNoIHvlkgbd;wLEpFE})UXoTp~{ zcethjRgV4H%f7#GLVClQF1`HJi5S7ga^g`UQ^6 z33b`pJh=AP`Qc#xLQMha)-AL-=ccC>{hs6CgqV+g6~(Z$vbx7rUaLt-85SG6-`TwF z!pHxR>1ZJS+TQ`ef$d$ASUMNi{Y?{rrnd>J;jGaR)S0la0ZtJN{c%60& zO<(goa+@gs)@5jL&4d{@Wh6jOU3u-8G8kLe*!0OKm1`9pGL-U9#Vz_baRUOW4n^W4xPh+kp>S~Mc>*`XtY>7&34$t`xuU)_B>4P|WpOoi5yX9WgCi6Lw zcnOGAwKkKbbDTyO!D*>-esa8&h%i2W;nSX>blRDLGUV_hyDN8S$EB0aqykg5+_@I9iWK)YVO zc^|O{U=7f-j^bj+ZV`4Z?Cq8Sqv`Z`FZWBl_E#5XYEDn=V#71K%kC1g^@vvGSLg!) zF{4hk$U^9{+DY=?4^>uv;OA`PTWflAbHoroQ=;pn%Ti0FB+-IyxVa)mY875zzxwb0 znhsF_gM#!e+u_EAO$TBI*=b4&B<wBv%OMJyHPhOx`ySL!|jfy2KGwCly$G#>E|KTL?P`6;*^*M&o zXt8)_2j6}|6_%f`tVBCtF-8X%@$HU@BTqICE29p=imd|Ey}qVY_jlC*S*^Wb%#9Qu z50XKa?1Gedr93JC#7{UL{E4dX8FN4e>QS7ISJ>B&g?~Q6#}9wf-?w7g=4`iTG*B-* z{aKv)evm7_hj2q=Si~KHQWn-2R?EfVin4IetT3&r+Zf0?87Xd}X2(>16#sM83Pu*D zwO#LDseNr@JoxTO#^%PR24;MP_Sf`&NLYG%%Z@iSwNQA_Me~Zts%Q)`ULGf8l{ zH7*1@oD9)gs<~-dQ-%htx-Zxzt@U1>*X|`S&@L1X3HJpJt{?I_>;+=?d`>f1&o4W# zpP@R)Dix!#$1wd-<(8UqRsbFYcxT~Ce5IX+|WYg z`ukoc$WDeq+l2pGgiU#VoXbH)iKK_0qh;Uhg^L2A_YWns-jHexGCUk*Z?s_c>gB@; zwY^YH%qzKd8I1g{82*o6;Nb{FNwE@Ki(QLXXS2*ud4pg5ex+_2J`&+ZN`tvsaHP_; z2VC1(>MH%n+#lLHXEu&_{g}HW5Ycg;mUMo1+V-0t`=wN`*3P;%hmoO6p9kj4_|^Zh z$b*q+Vu50)1BqjR^NgT_n1s`g5H-8iuTkuw50A2mvGJ38#q%53<8oT@&H79YlaPl$ zdD2y&SLgG0^(#L+TR`EhSkluM@L>=pU&nuvy;K1IN9$g|-KX^qRl2}wUgOcoU#&Dt*?6PKD#x}iw%)`#C7nNjtN zGgt8nhx+D;vA!@^&u<>~aY(U>=t}$y6kPDUY*jusGzvq4|tb45Tkn+=$ zbHfh@&+F+XzINVm48SL}l*9#t07CKB8(W-Ge;>EtH5YLLfCaXy_mZ6tuZgw37 zKv8RSitKlJkKnGRq0jV-WK$Q>&XTS5=Wxqx64#hptCPY!Jy`!(?3jnJ{2A&%eV0wK@M z@36D-<(38pN>Ajr1`9IqPOx!(%z2g!J5@jtT;WyFQG{mmbyT$4Fk(7#wz0WAHpT-c zlz}{TfW{R;gDqK5I?Eo=;g3dum)gHzp&u8+bKNUew~{B z3XzK83c~KGa_og}yU*HF{@Py!X3iiQ^Y;yecVuN_+cI70u8Hr2+N05x3S%c~Xtx|L zE=*oWxnJAWs&Ki}U%vLGz0WD%*URfD#aYFe>jz-sm|rtedZcC;$kBsS8A>zc9;PFO z=}=$s2-b4Gty5(ak6k>!KxT+W=xJ%WZRdNSR+y5k%c02tr&68E#wWKD1DWEIvOBBM z;qlD6JBk7yVq;q;z3o6tZ@ty$33^j#3oI=!!&$nwJfdWtA3lxu7&aIV*EK6K$j+^9 zprzXz8k%#ALc?kCM@Cd7If=H?>N9ggdWu~e3*kjfyRmFJ&sQo|Dq89;ZD zcw^^e!c(_G2a+GbAIew8cqq~B6F=)(>Qbw!9;Q>#lP?SnkHT1qngkg=c2P;|nNCaU zZcFhD#!2?45!5^~cDZ%abAFm*IbK;Q%ygi6@%v;~R2iQ#Im?Tw*y?uT z*Y9&%Q22{wvqFq#=bIL`$@!_ggzCd0!q@rTY!B^c0&eaYRyNVTNGyM&0=B7iUJ{il3agyou(cXn;A?k&AA(EAwM=z9|PYoDPowREMv!I?;tBsCJN%B?ff_l8wr z*~)l-WBt$*PS#$24jMWd243cUxDv?)KoxOt58YfGMY76MSGxW7J+RH_+qJc5BwTLr z8gF44gheSNTqV z>}9{zrG5;bn`v72nb_dezf$VUL?la{~fJS>%u?YRxdYnK3Dkw zTtDAm!0S0Vap2*H|K-_``bs}CJe-Wn5pn(Q|B+PZ&qZU`kXQ2B9h@7TN)UoKPqg&@ z818x&|W);3<8TQjs!f~^wu;30dWFh<4xtl9E>K$gpE zz6t5f;M{Lroj`Xy`O{8Uf(upORxh^4;+*2WliBd}A5r}?B(IjjnSbs;LxY!Dd zn5*V&zt+P7w7VeMoNH@#mkHc+y%yNqSs-TdL$@fAXLonk*?MIoKY{lv#xWHI1zOOu zLWj8*c|=Ls*g%DIF^PssDgl=$@#kP_Cok ze4cEN*H&VOjyX)jl0&IMfwif*ne`B7jFKl5vWMQ+^exSYA>Za(KNB<9kF*Jcf{Y*# zpCIwV?h1D{deW%A)Dsn>oXxq5>_krj_PVvL1^+Y9Tn}qpW+0aanf7h6vHXl2T9=&k z$l}bx45ANSrQ`A#3eCNf~QJ9cWEsCgJ7355jFGeFu7Tf_wXL)I5ngl-Sa{LZ^Xjz{(H zV6uqYxJTnCw5!)#MLn{-I5f?L^lgOncTT-!KcDX&zdhSkk&#!ES38fZjSYzq#;`0c zQRgzCb5D}MSo}590D*Ps@gqO2yZ4R`J7!eeo$OQ1qQXNL^etE|mfom~HBK5>$lnjw zBsRluCzif7l;elU%4mOwha%Ip`Hr7fD(H2_OQ-4%ZohjA_67P!4%(WPFJIOpOkt4;xuTv;Zvl}Ll5pR3*!K&=&?Zfw<3OoPa1=6g4 zDtuS^to+)nifEn7>M0wF6@KW+y?tq{3(MNt4P37`_xv6&3-~Q(%gJIQ*$e-}4U-{T zy-VP_p(T<9rjTV;<)z62xM^Z z5&XLtO=mMIbtyBF60H-*-uA1%q(`4{e|gaob;d_e=*PyldAzZQ&O9(AziKxQ;rZ-B zeQsP8Y_fE*+=0fCr){BJIm`KjmmXS3l{E!s|ALWmUT;tILhMD% zu&*cgS6N|fIrq|%A#67g*gRf%BV3|!#k*0#-h^!Z=YMdtF6u9Y*kb^)!J73yoAhS8awl$l$XsC5278|=INKELc1{{v z!DR`AFc>R?B4<7ZuOE!wa^XW7TFS0^9SM61Uq0I3GMbAAZRzpEkJ8ecSl-M?cgw~v z6($5fFP6#GOU?iv4y}@yI0Zru1(0NT5)gckJEBzQ~Z%h7H zC@Dn%%D%PnCcsaU!+y%x(o)>f@vzh6%)#Z{xA4X9T_St?RbDBKr|irS`pB2OmJSI; zCmz@ESuXMTHE5TbDlK$$3JFf$%{wDN_;Q}m(L`V;XC?9J)jjYM+kMWfwQ8hyZH3F~ zBlgyjVAD5k5<^6ZgS9Uj)4*Rrr9e@rtT6KtFS9pxa!v}Xb=`~ZOVa)~U(4L9+TOTQ zK_+}ox+=82nVA_(t#@QGV#~yy7~V-E)!C9{yyq$MQ(oLvoz>#eP4(oRwGm1lE)*9V zH8lk}EAQw?PuOQaSn}P|P^yA}x(`!N(6xIH<;s0~5gCnEq)Kc^zp(+1xexQzXeA}Q zbi)vNEiAL1Ot(4*I)M-2p5mCYUxJ>0^ayTS;Tgug)8CY{kLvUDAwRw$=y_2i({Jla z;JzKdu;uW4>gja1!0Fd7X&1N{?dse4x-8*v&*npxRd8>xkMJ@N_KZdKZL|$;(nx-P zfjn_Lw!}gS343<&X_Abxq=dK$H&S3S{$9R~QrxOoBhk1qQ}mdZ`}i;K#@7q;jZ|p_ zkzoq*A@H2`Ltc*lXbf>&sK_2(d}U6k*`&GI8jqWnvho@kPJbD%>&6-HDCR|hj*xJP zm#d7+e)SIO5i@t9F$7;`{kh%SgUA^%7CR4(OsSLJ3sqr{xC5qtqz-SrQe;qSFf$HD zZ(s{>m2M{$Q&g05uo|t9;*;*qW?6u~1bT>u=P6!tD81*XkBFW*(H&r1{e!FxPv8Rxr};(qeFwr$5ZfOS z0O$N7WgADg2DpPr92alD1uN6j zDvXSMJq~uV1ne`6-|)Z&pX<^7a#}`C$@;INo}S`X74wT3KO zz}cvB0*r@~4oDA(*QvsK;E|g8N*<-A=#Po2A0L)+!8W+I{Cnt;fSA72Lwa*@LBa9i z=K^?=*EA$)u$O*E$NsoxlV^m-56{?=X{y0|T?iRPZ#OK%>Ijt;vrXp)6}YPQ2eVWijj!Q zqKr~xsAk?p9>UQ!{M}1gIMO&(Td3iYueZJrf`rkv(bO3W55@-B&ny(2UPnED`4sR@ zkSBFoHhW-GIh&vzBcJ_aIPf2w*=Vr=m~fOu077gO^ufwKuuU-(N8%`Wdd0= z>j)G-n){HvX}a>;EKL;}6({;^z+ zbSOk9s?(>Ztrawgp}&F);ZztJaxgFu9r4<#4g=OWc;X1~@r{g)NqI|Kzx^`l6UZ}o zT!}VdlxMUv9e)rr2`WcGMYe-islB<`_53^kk#(-a=R6?bV_a-JKz{_=1SnvzP>&e+ zp5F_>!@-fME-c9j<6l8?YR{3$rF9eDZS|b<21fsPg-jV#vdOA3v2stb9j|zn2Ge0O zlW(4h!_ArIwKYsqcnqm&cnFK<1gW882$yhXjB@E|0v~g-<^-^#JZ4=vhiL5+YHwp? z>}FtvVk>;3Nv(eM+VsKGnHT$k^gkZXw6t(Sva7Kd|CFiA+OpKrvJ^2}TcjZkq?CuP zlX2Wh0%OyeXlF|+7z(_8?g2R^@hap7lqFXu<;wV3aLG3_ADHF&rm86p1&m!+iBF4u zO3$rW=20Z^Fhz+t%rm;E9)pS&GxTk+#4!ac=eBKaOMi<29_6Dnsz(_Mc!iRZtr8Ng z)1f_vt_Lp9zejG+Wh2SDta<}ek5p(G6NRe}u(26Pzo;C{MMnRreCH0i+ZE4n*~9k* z%kAF>ddB)5GjlUSNDO%}*|)9_s-)m?&C(l}`p1qfSNhdcU#nUiLmsA~U}tHwJIK{a zBdZTRG_&J0y*n4YMTPDNz&Jc_UynEPam2{#=s~H=QCmT_YnhRBC-cS=V&*uKMkC@j{)V!mW;w{GyMTr?Aosv@W&}If^tG)&saaMr` zm8BnOC0@uq-qn3^&R6;cP8q=I(36Hxq)n&#mFT?@y9dV)tp?98@xVxh2iSDldk9)e ziWoIpAZ=o_X3oKx3U&Z33`_8nb1XvxqGKvCnhNW&oI&K2&yB z7@`uMmv;G(N4^XTDTg-9efw2?3tr@?DaSqmeTfB% z7`NZuA^Ve@VZvpsso(P8Ekne7zek77>aTYFY+i>w2C9N*4<10h9DbmS%F5EG;ZzYs zJR~hBs1*_2chogYl0%L=#UkZ@YnhKw={+>;)Ef-zY$WOukW@;8nl%+QU)XPO3D$0e z#)+>}W5WP?=-I?D<=!|<&?o#X_E$yUF6C4@%GpH~vIr>U(lJm61WN9`DWdZD%c}uf z;NDG<*4JySu}}Z87WxW+1mJpd_Z~r_7{=mIOA3DLT8j z=mKdHRo~to9ijB0C$-2sESL_BZoY1cfr5@@DSlbZta4KM*DlHD*I|y7Lsd+mvI&l$ z!qpu`(})KGAEJ#KF7Fn8XaYc#_&PB@sd)91$S@_bdo)z_b6WyG9{&Ahnw#(F%XkF8 z*4~LR5g^8*dc;!4|A2!Id06}a7|BIyrgqO>dK8<= z-fXj2<wcW~o zoKI!S{xrLMr%v$qWJ-LYatwA*r$J^mj)0W00(SfGcPFS%F&A517EIBbM$h1&A#a1H z8M@255=V8>DfO*?_SkG}8c&YUQu1*=ddSA`loiG4-Z&E;9$tHf9TE~z_GbR^6l;jU z9q)7wq;B{|D1E{dLd>zlxQo_$fHs zSQMkeWq0296=vpOqTWmvfeh9j&b7N&EvP+xQ*~u`rPNT=9@y5~z8M!F#U5wq`fV_} zwzXyZhvF(}Yj;e&fe>_QNs9Hlq>PG+m2rOMJ}Ld-8L}dPG{0j~`Z$>80`_1iyk1Aa zZgXHePUGWh%r1Bzbkb->V&X>`K2|3^39*r)&XQ?MH?=PuA#uEphT|5opy#_I0H~q@ z%}Q6u+W=zJRVL|O#((}mZ?Th0VS1XqYcNea_0_D{N^pc)cYZ+zZR^`TI8UZ=(4KQY zJrGdP4eR9RR^7!9hmP5i(@v+nv6HZoJW-DC?efAP&uGh>`G8rDYnaS4eB&cH0+48D z{K|BeozQ>10Ld*6GROb&FJ73Lh=(`5q`$nRFNr}-!{EBhcL13+^dWqx@1yP%K_;)l z{eBut`c6&$*EZsJpYo%>-mJ-O+d*hVaP!SJg%whmbsBT%7gGSOVya1{SA*Y z^@~1;K+jlCD(X(eg%+}DX4)A94(8Gi-(&nrjeWc=Ee#-NrekGDT`nC`|pZ!A37#Eha7<%JEuh zbrOTZD-~NH#z~n+9t+bicmlfM!uQ_I&QbTGUz(ZG6BvjJU{n@9LCFie%lP%{$>z`6 zpu}iSd+N%<;H>n4TAhMdlJjNFOv<2*l)`dJY3ZXLQXqeFjO`z-1I z2)%O?*}b)sNnoTaUii4~$lXh)N2fm!rml<*b{_Fnml@B6fH{A8dHK%8=MGc-U>s#0 zn?%7{Smi;M)eDbckJ-|Y9;T7X#c0kexdH+oKpRsXP(gPYg2>-XhEN-{+JaM^=17^- z+xei+_T4kA-t_A?{F2Hx9I7^c|Fu+xJbBbQUNQYb4;MYhe_a5u_*Z{q2+tG=IxF!1 z>~|668i}c{JhE9HD%SP*>pFRukCJqrw_py-JErTeG+r4%gV*qrCW>Wbt{x$!hPt*7H~4927v##W2!~sj7wL2)Rr-}OeJYM~lo&5y5-u02L`wJ5 z!?*ncrSGmYo|Hnd*QeHbw__V#ftb(M{pdmK{-a)uPJI{Mn1_7b0%ldQ*aBNOhG0=W zf0=mwqS}){inAsC&zh>cLMxq`Y{C(g7SIKvH_0ANOttiDcmxBD3armC*5^5fCHVAI zRABZh66AkGhmE0FkE84%Dl}-$bbblC01`LFQ64vcLwU^P3uZ~9+O!`<@tt2x4`R*;Y)mGxE7PoyS zOH8DJlDveKyn+Ik-d-{^PGbmXe%0hf;D;cWE${LQPPxI@u19YA$;o_ZMi23hr8;np zHrH`_U}Je(&&*ewRbtiu{0Rgb5?(uFFhMT!xhaL!9JEUZz~cbDHB3JV8J!w_lj*@5 z;d66wDF){91=ZDK6cIsTh9?^nqB4{JDsW+{3QH4lYQzvBfs$u;iNoV!kgSwEHAPLD z$&_-dh3J&(@Vx%P@HdA8C8hp=sQb#*dn74eF`tmHvd#mo^V5l|Y?k(SZ>?ZsG(joT zOZevK@5lWbPDZ|n;3 zYj*e0L%6j;9@zE-&Py9}&LKv0ZT_ofbU0`xg`N^~z73+DFQLCHWp&(=Wh@F9_)eGY z*thqrY8|$(N48>O_+a^bfV{?ZJ}I4Yx%!{`P*_?7O08~31!jeqoghPZrb)m!HVKM- z)ND_9tfCk`bgstRDIT#@m6y-XE!)R)mEx@?g5(Nh%Bz&yWN-F;m;@CtQ1h?TVTj+R z>!An$ytE2WzOVWX4B!|Gj5}}W1GA@ZdFsd27QPyL%mPqxV+#!APR{m@j1D(HKNtWU z3+Pj%mJ?%;m@`hwK!!LmY^IYvd}|A)Qz4vQ*V+DCC56~%xe zAbDEJQF3U4HVBd>HaX`gIkR;nDFV_Y$s(C1Lz9D&bIw_EM#-7GaOTYD_uc2-^L@`b zzjOb%+j*Qn?7i38Yt^n*_10TeX`sch^<;;bUOZn%E}#*On3nLs)zsdn8XJJhNT8eA zQ;$F|5EPiK%-L`15|nnRGhh=7yl0_nD(E_P9pU#;=)HvYvDZ5yyvvsG=h-im?%g|d z>Fk!&lGXt3j8G%hkuM|yVm!DAAjV=hSE-L)v`3ZPTpK(X87K652LNeBD-sD1_}$u6 z-MCmY#{&U^5Gc$5q%5bQBVe3#>)KF4uuc37JzI}7dB1F|sttOuw?B?mw<{rp8?@d8 zGU~K#I=`-GZ1N!@IC5(>OejpJ`SXB$!v`uL84rX{ppv>icjYf%db!Jr_8e^rzkJ(| zpF!n}xybB%Gwl{>!3Go3C^=1wsRc*c`_IoTm*#Y>LFF65OFp7P-%g&M_XslWUo}_a zVUoU~NtRXf@eZP?o1NQ3jf0D|XK!~?=b_@9n~4%DJLg9&fMJmeIhE&?hlF{*&Q&xF zxV{SY!&rGAuu-#CzodCeF!pl z?Ne#E*1A=P<5FZP>^7?+f{x6x9l-n7j#@qES3JX#O=g$BP7T8mP0>LKY9QT+Tn1#% zf%j}=5xh$f;kRc!y*`v9Ru0bauLscaE1GPKRd-WwZE0a9KY$M2b4LcOKrm_qaa5)YPoc^*QW2RuXd&@sXm^S?p44 zvwS1oPbO7pHWy5lk?ZJlqOlilN|YKXhf1|e#GlK8kAfU#1}Y~9a#EJ74hpSq-yxR4 zR?Rh;t96TLZgF;{*Se`6ToQQ$8p)oOIs$1b& zd`?p8>XL=RiuP^O$>{W7=|S$4ow0PV$Jf_0Vp^4+N41Su1pWf9$8UpcF9V#Mm78S) zoW>DQ_812j7pNABw`Q&Lp;J*|=6NZA`#>Jl$8WkvH_2N&S<*)HBUjfZwfZ+l=b5QPxrix-y72jKM2SkInEhayw4mbNd zC0na2H2An)baUdj-y8wV6l)Z1hG<09((0x^xZHareDPd05kdLtl;_^Qmi zf+kjG98N6{hn)oUbOr(KqlH07%v0v=vBpwGdfK}Q%~4>{qw-6`QyS7f3jjB;=F4-B z$zKnvuHN-PDhPWV`w4zb&&7s~!;8ueJ_X^Tg2UWazDOeckots|g*DfGspZf{&ncN=~>CV9%GLLG%bn56cqH^ zA~_5ezTf~C1=u-G`fC5ndS=%hLC_RqyME;bVa`Pn>O{5@NH!ImZZ!nwey09|6F?eT z<*~0S%skfDscZZsVF&@>X;PX5*v$(4^Z8q*-ITvkMwL;KkSxLBLwz3q6?+)*G8nG_ zet70v+@5rW@{Afz(pAf7?yc+BueF0-uE(=a0EUVULqi&eH5<}WQW}tvvLh(ueYmsK zo!}7-B0ER7;z6#_(C`Q)Rchay&S@n%0H%w%vKS()B{4j#Y;oR zAV<7CiVNgF%E*Xs?YMb>pwZ0;No+YJax%~16?l|`uxD~Yg3W5v`h{1GR8*-+DJdHh zP6m5b5Bk)NQXp!;)dHliC=&?Oz!}J@)UI{`?cwK{R0MU8(?FR8u_yIorDu!4fKt39 zRZ3Rshs>Eg+ifI3V23oX_JZ<@M?v+V57w}>bbwqrQ5g>}7!nszWHCuXLb9FutH=9*rg83ZS!WcAyWj~{!6+7q;c z9BWYCi2V42GVQqxKqi%;;BFe*o-3Etb-84bkry0Y`}I^axeuBrffq)+4z8LU{p|}i za8cD63V@&I>e|)1)BXjESFc;%xUrpN&HO<27L6`O zA)X*$C3pHKo&VvqkD77?5DEMIK|oV{iOb+w^`{Td5KZT>@jFJ)nG6bCT^E9!Nr5ND z#56M`WE=!4rYw(v9+FxD<=GmQRRmiHx1QS-q4jy0N>xByPm^p7w2_*%bphuA+>s1- zL*K~E7RWV_(n0&@ApHw;Wk1<%8~~rtH44pJi<2u0{jF3D9GMzb&q3RAZ~&b&z5qqC zyw*TH0^I@}P*GC>>b=@D{V73TgE;b5TA7E^B> zdM2x+gvsb&igp2Z=VxZdj&|d#zy6}2FZ^29*ypgU{A^$A&=bSKNgcQJ#p-27M+FJyf&%p$+HB2v%NMlQEu*L{qjX57bVpsRc%H>k#FUrBdSIrBCszQlcJm(FoTR4+HB7mL4ljbBwP@eWe$;3>L zHs-k!;Zr50WZB}P%JQOS7FxhQSXwrTj3yS3d<#f~1gn;e^D;!rYRYjT$Y=8MMtT-H zX*o1D%<|bEFv;nm{Y^S)R);QC8b%C-dZ)i0-2B-R=is~vHA{$#yKU`W3|7OuV>8i- z2P{?zY?tq}?-a9a5bKNOb@>`3LOBcP`n6;>8KUn^W8HS!==?LV!!wLA?-KwRfCp^=hQE%9v%xt`=_TjT zb^Qqvxd2E$>P2gnwmSsnxgURx%g8VrWF`w|I>;WN!tqvf<#s!q8Y!FP5^`CN4vu`n zX=ZK?!j^e@!@q+<3Vk-m5ZR3z4(5<#FW=4llPO;Mb+hTFD&QUZSK)u-eJL@Ol!~_0 zGkApE+|=UnbyYKPXxZzclsC?}ok9$we7J1~Xwk%$qs4CO!0`SO^qt80pgSBY12p*ek@q4a z`*hBU{7T5u^;Q*a*;G-(Q&1b|?e(3v*9|ov%FArNGTvazH&fErI930`R5lm-fLa-LOnv<;w*f22iuDf z+iSu?|I_8M=Nsd;5&do(9!C|>TYj}1<$TH`@0ka6CEA-j_Ml0p#r-W~8BiNeLrHqPAjg9e z^76ZmnpB}qKhG-Q*ECuZ$Wz)wXFPR3ohvEWasSM?cI6dJ~Pa#%SGm>lDM8ya#uG8 zMuoZ6RZ_xH2IeB9m~5Y?px{KJ=*^X~8Ew9X>#|QfTPEY3C9EG7F_O*BCY7FMsOpPR zZa%4dqlQnqNO+ro-(wnkrSuY&I9pU38DG9= z)__T0Kc@pr^+_r2{rilIU);iZ3O5$93WoKHRQL-02gLOSWLGvG{kfQW9Fdgi`sF<4 zZV+R4_PdoeOuPhDp^U(!h0)< zR&DX*717JzGuZ#k{{r2Q$$mq5lk0GRq%B+ivGLkk;m&d5A0CQT;*9%WGHiY2_Uy0x z_!F$Dy;o0vXteY+&fPfz)z>u2!umt6bbhK8Yjj!54W zro{Q_A*4S4)J*<*|MQ#w12g$!{Qt5j{|9FR{XcKdzkMcut^fa1`}qIckLO>oCeXj;GyY%C#?c|HGL;|320BPtD{X?~jG` z;@>or)VOu57dU>D;^2IAxWQ*F>%<~^D=Z@w4p^`+0wFZoIx{=n&d%Z6x7|Jy=bNeK zO3H(3jNw>9@p0>an(KTo(0o{B#6VTmm~fEsIl3-X>4U?U!2gL>dbi26tG6sM+};FX z9SwJ(31Kf+zjwHK00u|3UgeAyRI6H@Va64HoT0Hcn0ff!IsytJBjKl}iQ5XcA(31a_E&!(KZMM(yaVw6%lb zaHm*v(>A`OX}GuH8f^RW%vsf`sur*7{tMPxywKgOow_K|#M2o|Bo0iX6&;>4LYYI# zY4K_3_Ejz>oHs3=Y6a3-RVRm+067Tay1})<9~z3HVmbRV@6FsXQY3o=>l0PeA)yn= z#|OgM?*-E5m?Jvlh8WoT)|nl40<;;`AFy=BvN8)&BVzU*JtdO#^1ZAj0A=))U@oAP zSMCxK+$AF-Cc8boHrL%i5=v>q$7J3(k=SfHd^u5ED_uSv@%u5&TXGJ^x<^jj&}gs^ z?)?YlI%_Eco3E`(9kZj+{^PG`Qs*qjJRfOQZ8fxp8Evkk-YFvHmX~c8ZbTHvF3Gkx zomj4T!n`OcWpC|`Mzjen(CE~<`lYSjxibs3i4vTMk{lHO_>hoYfR8fh0<*k5qm6B5r?s**WJai<|;@!;4g^s^vw@s@>Lt$oN^i7SN zW0U%iLO13T-CRnFR^&S^t*x^&xGi|YDM+SIa>^SzNeN7Qb-K|j?F8upzIT)<{4m^} zJoyaiCarnyu)0ZW;*$sl-@+{ua7^7-Qqee_Sx`hiRls zYHz+bF3y5f9H)c5Ig`^W1b5vw$dE|$!nI+&y=C;){HQ|Ri9*nYPXQZtHC@|%J2PG1 zg7~@8l}AqZQI|B9ZE++7PtBAJF>Cnu3x;E&f}^8?Nr+dWPA24~OZ)WEHNvk@y#-X_ z*sx_1V)b&o;VuAQZ=}V1yLRnsn6>aV*c(ZPSytsyd)LbRm@tL+khY>(@$eV@W(0PC zsK?C5;elZ~B%!fO2=0Ae0pn+9B?FE~KK6MjgBA-e1_u4a+RV}7ZanXh5K%4cuUj20 zOnpl?Y;UQH=F3nU)6+$x~9Dyza)G+P+Z z@%z0@j!-ADG<7lrO8!V+jN2l`rqjO~GHfwk6>y>FTavwt?q*5CpcbpJA~#m)3K5ZiR&^98JuzI*Kiyn7Fh z%p_abB}I$6J%i1C zI?v3@H)QD`-eAq{hHnBI7)k2JYWJ;s0P4s-Se2zaFqKWIh*8zps-8rtiRKrPvpiJ2 z(KC`_#TwT~)V^`-o>|mQTkXEEpnpqC@Tp{;5*C){AhE;YuEra=?SLQ@A)gIXhflY` zNXf|y_aiCnJk!RPL?NO@%8QjHg@{t0klo&mC624pqFG8AO%A72EIrH0M zAVhk7?VIMMVdd5$?n^ta!jI)5E5>r1)Sb95U_D9&TadMHXm>QaH}%K_D6x1ZO-n&| zD`<_Kmg%x}Vx76ALLc^Z)4urT9nR%#3eP;-!Bc%p(zC9-Ss;QPslIMENv-wGEj4Rj z_Yy7G9djKQ8lmMwG9?Y??^Yc^le7?WU6EetL$&p@7x8SK*_jz0N7a&WducqZ7m~w+ z>hdGZ8{2d9vsNo@yiAjkRwuT@f!hOWMPij5`%6B(3h`=TG1~nD;+=x6K6Mo>d>-Zj zaO3d=QmUZyDfV0Q=|%4V7wLIuNGf|MKS&0sdK?iN)gMQ8L$o&`F?G}gdOmGmhH5l> zeSX4GDCNJ9M1siDzQOz8L;0l;a)5Thg9MD~k1U4>@zXgLl83g)<~RKv==q zKL^y`SL*MJljsSG%w}vrNXrtU{`PCW zt$z|bYxZfS8>ZSC3rizk^aja8qkXLMX#R2aEWWC}u4XT&DvzmEsi;BjV!{Cb$=5YA zj0DJ0kk|Ckchu?zj`tkj^6N&0V~@(5s6l@0V9Ia(ZyfN$I5#CBp^Z!IG}kHmkZ1=K zC0%u{{djn#Ex#rzX#*O*GswWtNSTXKU^#QK)5!6A1jXNUP_fxoR1;3@Sik-n;pgEi zOV5faa)9jpXuTfZla6Om-&*wGHsK&HzhS``!(QrXo46CTqrTg$jV_N~SsUyuo-hz7 zJF?js5RKKsPEbZ0Nt3a=ji|VIS#U%aZSZcc_-Imx3>&an54-q%1EsvyISYI;U`|hO9-ci$%OXoASrhJ^Q zT2)K~pr%`%Q-Sp(?5`ODMA_3I4GVi{pJc;BQ%>oD7cEncT7gZm?V0udhbp1tvU zFWg2{kJ`j*j>tA~I%&@STEs6|sju_6KFCUeYPf699S78c4iK+Sj`r638R)mSlF@UV z<+n&f9;ljO%<85*M|UZ&!OT{O+3c>(xO$J0t_`KnFRMO)t5nt0jypVxe{aVHtq@M~ zo3yskiA{;J6hF&{6Y!)!&z00LI2ccOo5tZyWJ$F-KQb>Mhzg38Rn z_!@n*)I3mTDbn|JomS#rS!&)b80dz5WX$<6yRZY#i4(#I1gM99K$b1cCYi3KrsbD$ zF%&=3A{Su%vZ;y}Cap%3+DaWHk5&@Oo}l*Pi4E6OADo&qRVSwaF9dDZr_2uASJk#K zvwodfg1gb`6E`z0F6D=mYEqr4eEV_!O)B1HuOhPS!&9l(nJy0!9YhQGW2ZOCmSkD- zg!bk3UCM^G*QyRKI#J%U^R>>yfB2S~kN zkEZ6A_3SPrr6sxWRp-8Yv8!RQQimxKjXgE6?R6+HC+yfiU1&%6&4@3#zUr<&7}F1m zIi5bQ>G8|`5FSmBHXltZs#hYz68QZ!&Pz!}O^=yi_TGcia;S8|qZdIHl>GI%(@Cu~ z(j+!&U_-zjL1!^Fw=}_>y(9-Z1@QAKS~2koh*_J^I}4hb40fpT*gh3X4u8eg8;`4( z)bEnji+nR9E*;UMp%G(Qa~gPucy(iCjgH0GU_sql-iTgtnVB|3x0S84uj@^~&6Q`D zSU_b#xf=mxEKo#Fn3@c`h3wufuU}3)#I9TM$#}fVE-R85E<9?}@S+bZnHzCoqEJyx zuge;2#{pKH_WUg20)A+rO?Kv34QKSOeHl7yF1x2-Q?g}5X?oh-V%VX{=+T_Y9DaX` zZ9EUWmRD3imFyzf5G~+(Ogzr3Q_e3Fb#4qN;5b*^=CGcQHkr- zM?M{>$z#Q7tZQoJQXndttho1i=OW!-Pl;LELK$%@sr*DDB{h(XaxsV})&4br0zwCJxruVVt#Jy5&S4>$+AtFSZlI524 zVisj5X}0!8ih9vN@7-%?tbyMn@j5b1tDrtAaTID`gHSfX84IgSL(OOcoI0b!B}Z2f z10h!j;)%Y7hAOr6O5wnKD7T4FxYkbE+{lRf2w9{SxnNw+ZYh_=Xii((kj#V@`Kv2+ zIIwG=e&*I2HLf9#sgjB=QOg4v1vA&?UY-H&MN-dekthp1L`+e{iLK3m7Ozu2blkbV z6@`WMX+*Q&5C#aU9=~3V$wa5C;~+u?#*z7K&cU zEWjvX^Ebbl67IPE9{F}@=WCd>@PowR%~sD*Y{gd-+bfY_IE@Y4SNE1EmKeO=QGPpN z_Vw-$SAWvpN8dlEA4OlqV$K>3!NAxDaOXnPfg0V5M`?=mbG8GYABbCS@Yw56IB_Fk zbuS-?i-t5Cp($Sr_{w0zIEZ)Nf4R!!wD8w9CC5chiDGv%uoVV`cPpzaut)6?^W_GK zCI&|Y#gl19B+bKvEAId2H>_x^)vR+Brby3f3q9@SEJx+Hd_-Ma(UhSy zq*Xm&z7ar&Cj%Jt^xW7EuCGY3w|2foap{(bCK4c$3})#y>FMc^5?0&#EoNZH+NAv# zu9FRc?nsq3LE}7flH)?Ss0CE`L0qH`E9V2G>M%o(BekIUz}B|vhT&SX(D?nvZ6<=H z);V)^184y(5ICE=^@>W`g`Eu2XO=YdD z&Adol3rFvjAWDy&6TTJHDS+A&t)d17mC&~l?xn*r2FL#GbRb9|VaP779i&o~XxhZh z3+wCbr5b9qw5Zl`36O8fz)QJ)T_L+AD=8HzhFFBKlHh7_R% zy6Otg!Ss|1x$a*XI__ePx>kJX)7k-VsVkRWdTf z2jbN}qT}5mMfwS|+pBL{h+%b$x>v2Tng86WZY3pMERCs9R5X1UJwIh`KzOjS_}679 zYX0LQ_|;Vp{aJWms(gN%QGu;K8$9P3?`abk&B}1u(bq`TqmJo~m0q<--*B0j4q7Jb zs4J;RgZDcr!NP}@=P-d_TqprCzvyt1;-j7CPHS~ppEH)rvdV9bj^CYRxZkpzZLEzZ zMgorVtHZ{tupYK8Mgnnc)(^5Qgb?9EiPr6OqEdit9C%X&fB9UKkra;hx06y-kK_dl z43Gk|HNx#C*hwY-_?lIjO?T$%SWQM0pMU*keLkn`@e%={vE?X@ZPTN)lZ*`WTNIMv z5kS=V1;%C#SMD!c3RN!5Ev>K3!HSFH_PV0b=&d!$`Lm-$Ljr$AIVGsz54W-FRAzT$ zytQ)>ou9D_yoY+66kc@?AKyS~lDE{bx_!Ai<(=H@MPCy`9YXy5YEL$P0yHM{kAib2o1a$w|!SW7E;0jcQIEr z-JR^DkFPIAK`bvQ7m#a`%mfH2k~`#N_Un_mSL7vyRP1`zQ|j?%e)kybNR7W7VmLR! z=yLFeJt2*uv08GSIe9rWcO;Y0dPjv*TFovI^2AH7Kjhj z>~!D3RaioF{e>Xw<{@wsneU}5>g`Vzt&5zNxT42*fMl*tShEvLOB_mI%V{b=d`xaz z9l|Y3DYB%x0r+KcEJP^6fj}<_lGOOSe#ze|V-_K>NgOX)Flgnn|0wB;R>zX41DXOPDj6FPqBU zWDcg7UYJ=FXy6@}_`%iL)N5kue`mDS>uHesH?cBVvDF&DG!@ilTTNi z5xuEaZW^Rz&Ew8*IM(#CC1w0d5Du)*tiL4qV%TFD&>>kQv^|E6o{m$JT;Zg|)qG>9 z3Ak>Kj#Vc{QpBblQJ&+ulBx>w%Bu3prAMD^!X)r1@K|l1o&^gZ4SSG+-7T~qee2ok zl!ODT8iQgi$iS&-G|rW%c`-v;Y>SJmy`bFGK7MNJt%2p!wyX?r>L}9N94w|R9A@9^ zU1?_7y#|v&lN6J8R$G`D&;+h-%-zACjZ{~o@uJPS7g&wspG-WoWy23?C{Q;Sa zbQI6Roj!_Px@b+>U+R>k;%Veq(<;U-UB8$l2X#{PudFc9A^hgxy{|#o?**6rwpt7u z{L4Ep=P&^MJwx|{V-=WW^4Ko_p4;$>-3BgHvV(2@uq2oBql$te(_U6Iom(IcCll1z zD00Zhp%@p7+@7u$R5-2N`nGxQ_Svw)>Xf!pe0)cgkBME3rrp2Ua5J z>41;8_co<7A}jCIoz$dbJ8y5?bI0$qN7&Ep8)9OgQbtMCewc7nsK)Cl23dYsxGrk+qsdXZbRI@Ahx(d(xGa{H~3T^K=a#uqKH@R)t>Q!y_{)NYUO{WGcUT6$T8x zHX}(7VSQa25dR12vSY;8``5!mXC|TmF@#|v)iP+{Dt;&4dK;YmN93K(u89$GVIhrQ3954N6chMSG*J+%c;6ciI9lB zGk3fO1E-r(mMle@GTKU=Z3E*}-LrJVwepLCX$Q+!sw+I?iLnDQRPZ?fdl>zI0vPEX2T1zg_Rj9mgo|0C?Yc^w(m z02yqXlhBC{ndL(}G7)T6H|M?zxo$`9ooj+QjhDEg!9TwHbUOtenM}v~CM|GT&(JPbX z5&r%KTGqG-h?L*fb^Wc4WsD7g9T+@^d(wJ0;O@4c+pcbUv$+f)0z`Y`Y&SIeFLcEM zRzd{r+~v4t17&keJisCJ1-+6AvHf2PW#TWaCM|7r&y1)y zcXmTJ3_&sFT|aPW6!8+IUi;u!ysC*`q}g8T-PTs~TXSzcX2lFc>NDOC0C9~Cgbc({`<}>NZ%l^k zNnImS%{pvL1>v{hWb~bKl4W{^;Ss;n;{H2u)(20w!giETB9HX01jRi-CHM0M5RX8O zRf!<7nJUkAWhbb$g$cwG@DSI@aVJkn@sSQ#_P3~+e`S`F`vPmRJ&ix zvWR*+Kxtkv9NKtHkGHq&ALQul#n02VQO3X$a(411g#kdGb35veCs zp>7a9TNM0!@#9D|&IaE=$Q`a_X#je*2(6@FuAUr@EXBcNk78*FSjOvfFVrLgKTwP3 zIFPz2h5fBJPAYM@=k?Y#*ly}wMk_ujT=x4B<ofk!a=*@3YV8o9u*BFO%Bc;gvX>klwmwG=DcKX#pF80j&K& zZIpH5?#j4iq8tuPzQ-=K^Vu+9Gua1SO}ujJ+_&v$X0a-_;lA!g&_xyAEMj2h6BlFYCL2_pvhQXlY6XX9cAL!lVy`Td z1koh7_GftE&WJf|epI31f#BxW+HBh7s^Ac_#UXQ;4c(3bVB;=L9A6m9wD>W=Tylyd zDm1j@EQ@boVVQ`h`|Ql6gys|{sZfez+l(5He%wmDQ&N?&AY#_gqr8a_(PtGWm;yi6{Wa`qNa2~J}(#|Q`NVfrw zMv%@lV(QL0H4pzbDq0&LkPNh{Rc5`wIv*;`Q%UNK$j;8Na@DbVcE*!@(+dMk;WfCs zJhq$)q)}yabiu`nYy}>wY25bJ>&ECVfF6KIk@Bta@js5iNzE_ zb6LO;DIJ;xNMw%3#p?h(2C??DJ+W2`Tb%_Cpnrk!fdd25pb*ED=VW2W|%|o#`VpuZ~3OrRF%|~dO4hxf3XDi*Hp~>Tfb}H z92m0Aj;-7>q68Mm{bX=jaO`sM_wtELhH z^fy@0+Q65EBC;(U;7d@ztsHWSqk3(lLW_dgof|+yW5Ya$!oF=X>G#FPsQ?P1#wH_y zzpazS{#2FI#B-NcuCo){IS|f6_z5?na-z7O^v@6JAE!N@JgXSi%X8nam)%VA1#Xm? z8{xSpa9gqY7iLY#>BruwRj`^ayYYys=XS;|cBc^_*PsW4U_7ZqT_C6eFN&CrDzBaB+Sd}6yqJJ%cq z`R@14Uz9VVFI2M|NN&h|_XwEdGJCinhWM^;U}JHYyzURzvB=}Ln2q4Y1ji_D{fhG# zx)uabt8Qmyo8D6PhJ(0LFGUp%qgb#^@7w3s+yXO4$26q2%e*60g`9?p{%{%{3Tt&? z7i?iYzzR6fkAI#L=MIluz?I{&Ye^Hdkt5^V;H8sQ2Mih@^x+iOLAS&~&w~@S8|uh*;{G zSUj?SrqJIrm!%kj60w_nLr>y47ILsi z?+Q(T>uFlby@9A#!#jNXtz4F)?u^wH$}}w6tkexw(F~28SuB|rL!MBLuA$fkps2;+ zIUwW3Xt1A~sypm(o6F~h8GW>xrb2{mw(DA=?~N`#-m9=#e|GvXv*RYayC#3Yk70~c zJ^c)9_Pd37EsR_%#jB%vdnWcGe!$l^bg*>P3U)xOL@}fk6I?~2`)jZ4D9v++V%XQV zyV$LZi>XK-o*vi8!|H?< z;^p8ZJ3B5s>45W^PI!KUMTePTGGsOS@)V>8=RrW{Opuk!^3Gws%Al>z00Ik(&uo0Y za)5nXm86Si{uEAt+2Zk-No0xUH=EhLxM1OOE(p-()=m_Uk>Bw>Z6$}bf$`S`DS^sG zWu;|fB_;#D+L?tapaL7P!T~a;_Yra8Q3+_sfcnIV*^!t5WFwy&`Oq+$6ZnYm*r?b@ zh3D%j%AjaS(%n;gI|rhH7EIAV%o(m6c7lAmRi)L0(8NJLaF7xTigf|CV?^)8}L)c1yXZtNzAXBK`LAUc`Qa*%Qv?pDRo zK7)PRp|}G8ISZ3nS=rG6AM2pPn&sN1I39~5H7$747tCWM|eJE%gGruEs^U0eX*@JwiLK<2Q0KoKUA`1!c?baf@wK2u~R zpG-QPg)qx#9s7uG7l7Zf9A+WI_r3N#jSmYye<9;LH}UTlZUM}IFd-zw=$X)wY3k>T z(||?p{&Hn1xYrWt;sn-$FD=M+2!x^!4n~wK^FMzN1<|X1f~YKk)$30nrDSHv$+0Yx zYPccG9~Kpip3N&%OND1^Kg@2oKkzHqfb+r4L2t~I&u=8CnB)78Nxx(`?53uE+ud9w zBQdQs65;Mpqg@#+ciBH@YSoVSr#u!hc^6ciI=%}~%xFzPb3H|or*3MFwU10XfVA3s zkrb^JH$(SsEaGiV#rlUOcn@31bhZdRr(80yO>rP!$!|`ys!FNle$a2$Zz(xnTE^pK zk^>+!UO0Cc<{oEeby2;>oAKJg(XECj1*C3mM^@#otA4+_sDgT96g*W9dtZQ8IoC1{ z(0b^w7PH1!co_@J;G6CQ-W9Kw){_SwVtZHDq2W_(w3!mZk74w!K{F1DvT8DHLXExL z)%U={`QX}0#bCC=lY_aP1^y*KpOV05rPA(~x#8Nod~vwNhJSn&`Cx0y9=KlH0huEa z$=p$J`*Z$xRa5p?X&V zqY5zoR=En&kza;3@z-=UcQWQOz4I>^OBe$vOwic42@C6yQ;$hsF-v65?33M zxCY?DmijG#u=vu3N5nZl4e(B5km4wWXXH)m)-Ek zsn9jsQ0nY}Z*Q3U)crankZ$53@fhZXR%SPL?)6U0YTTL|CLdiIJQ==mm{OWcI1+s? zuk@lZn=a=K9|zw~RtOi^P@0W0$#jOlsYPSDjLZ{dpy|SsXpc7&d2%mLs}R_-w~8GJ zFw-D{1Ffg_kVpxPU%?{u8Y%PneLBA-W2EfxGNAfE+8chkzky&^+&UrH(~(vaj=5Pv z5a&}K>?RoD4FJf1{qfiJA7Ox>kN=^!l95FIt=v}1oRh|EmDq67c``}!xy+oH+b@A(RaU7lzXI{ZjE2k*~Jdf_xK zcF3Rp$GnvDbOW;N|B_^4azp7~ovHHw%is5H{Qr>r{Vx-V{+7o7QKrh@-~T@$#Q$7M z)Bk8D(EpD2-;kavW09vKMI8ca*Qqd~4DwVc0Ucaipq~P;9rF~@70=<%WchSM85tR~ zon-t+#(sZ&b}uB`FF7aXmOoGxO@z7)*dnE<#Zj5-H*FKa$;IPSf8Xm_b1OZF*vRvK zzf3VB(`GpDE)y=2j z-6o+McU!ErR%T~cr@^1q*`%eOEueg`VN%ou6FLtUZ-|D7H`kbBM*J&H2!#Jmb^CBb zz%4Ns=YcA9NHgfr6d($tgk42)gFi?sJOI*?gMQ;A4t$zWq72}E(`PBKtggDVD!2Xc zl30b>L1VP58BfDyQhQf+5KmE*ATe)jeEdBtppjg#fN%Zh^+INGp2Rya$N;QxrIs~YB&C0Se|vv#uW)-T@K2t@@}5HSnwpi_a;fs@ zSkSCmLxcI)R`tgxZ1q`kUn3)JX1jMiARqum`3DQw*x2|AIY>GD^z!;;VQI_CdOf*x zMJp>S!p#!zAC_^7cKmr_S8y<6rB+Vw()r;1^`oP$a=t(m7Wp_iF?_L*RGhmg0 ztN#)^?6)5`V8wns0CAG&;}TgS8oNsIAq^0%pv>60`%_Gh9No z{J8G+>DlFSX@Z?6AieY6b=S%ci=usJH=6<=of>b)#xy)CD%*_wwQ|_+T}M&wSU~sm z{?1k$|KM+RH_n<87)#6ceEv^1zwO#OIDE}~^L<$G{*9xpdcpR9CTFrb-0`pu^r!pB zRVIcUqvg+e8s2PRW?=ywzc}*syMQ-~MF{8S2JM2K{Ofy$hD_KZT{B32+@kf_uO!~F zK>)~3>Rkd*35aZ*uaXm3 zis$l5APx$-Bhhf)4Pa<~x+IgO?B-meP6<9o`%WUFKlkjr{uSteabJTw*2o90}-G6IQd4PLGX-$fRx-TEh}>zAM^fE%y4=S zfHry*#^`^p^83s<6_&wXNct+TBq^ikUOq#T#{akx7x?1A-ua!Y9&uDmsVay^Ftc{3 z(TJn?xFxrFS^pHo@9WPj6!H2yA6Lpe7L6Y};dB0Z52ggse0) z(h~4C%( z`5^G`KV1LaC6N+)psLBHed}D5b0ozc|L_d(2;=oRhli;8wR5d*dO!HDqZUi!cRmM} zpw~D*J^qIT>p$QB-_onZw1AI$asVSWEf_5Sny!9V@5D1ZF$-?b*^36XzY zVEla#aIB`5zpw*Vlfd|;slA`gJRa?&9A+)YYPhZ1r-R>q@<{j+1MU%A%>vakFSj0& zP{v)dzxz`(7pi3eTMJy$?2ox{ zOs@QN`xL2~Paa?se%5(N9MCdQk$+fAgim9Kmd7!-Yh9K^JM;&LR(3;D_g8*TmcL4v z)zBzSGCMzl?A8!@QjoE70{~L>N;l>> z%Q9SrV>{B=-%A@w%I>Yy%q7W{^O^H&VyehHE=**@s@88`AQvR>5E#$#zxVUf5CG11 zXgwQr?>ev__6;@`!(!v-AqF z5a@Srko(!qiF4Bw4j;YSUe+bA%A4%a?4q>f-EYWQ7PsE|q`{!5k5g@#IN(Xxjh2>2 z)`R;G<2{3`04-WzsM!C9T{@RPop=Wupm=5aaeS0N>jKUej8If7kY)$NKodQjb z?Ss9;t?k48sxwJ)+A3G`aeOGfnk~AC+Ask=8GOQ~4*I%=!dj52rfNWTrf4xsDNom^ zgNel_zlq1pYSOY!yB`w(GPGbpDUPbw12u@)h_82d2ak6#0gZ+&d6J03fOk5^R2RMX5;N#4p(sq!)Qmn6BM zH9~$}z@Z{&TOJEQe3!We(Z8xcJQp`rC6&w>Y-Pvy%xB$+N27qXBrqhfjZNXSAeKY= ze6UTBKCGp=xw*dn30(w4wKA_W@G=x-Npo#hLucc8JV++>c;H@Ma4{k<^f;q-$r zLZc%0y||P0#j?8J39~8q9=3o|9HphDKy>`sbs5DWR2fZ}l6?QZx}KG?O&0D)r;<*u z3kjk1%kp3rN22@lp#y6&^b!ndS`ZI6Z?)O(*EAjN;<)t@?>_*G1<~_JGVC_ONoC(Su{S#ONL^d!r_9<(C&Y%K(wI*`Y^ytE3j<)GwKp+9Magc1ky;gP)XG+ z@ZD~ozPL3KW>OSo+&(>PW!m}yl`t_039#$XX!K&Znkvbitz9ZYK%;NG)Im;^+@Dsy zC}JWFAqv4Z$4}mzqc#f75`3qroEXg+({s`B=ZYU$^Lga^CX+2EE&`+68ZQJ#-l@rt z??ZcU`+;NRXZ6%DYb?a&emMf0)mm}8Y2xusA;A%Gv>eO5UWUF&kG0P+9?kVTd^1Wj z`fg$cr3VLLgQFmQQ$usLKob%o9-u+QGrq`aZJLeg~`l-=_%vShbV#7Yc3pauUw>gmMx1V&B!4X$$#nFCG(S z6&@Fifb|=sU_+;iN|OS`K&jQg(Fu`$nQMzM|H*oR3P?We!{!0v=32pSF(CSKjgo7y z{&$=y5pPpcKm(3^l}%gXqj`m~7%MVl4}Dvbk>bFkS%J1lS43KOxuJbd3WwXKq zviuZ_-yLUiba8oBG6qzD1ucOdZmB!V@So+c$DDpzTm1FoSfLzBzf9ju9=$So4b&h_ zT5kt7sb^<&u0dNr^02-#X+iEn&T6C~z&Z>r`vN zH=tYm&-L0dzLZbuvQohaxYGs=hPol}2?L8Cs_S5ahj$(^MemQSd4UAH`)F6)HtCsU zx#B0`u+P#0vLd6?4>(j=Kb$9JN(%&li2x@1?SIL?4W8|99w5LQp#r&WN?nkB<0Q{y zX+_4d+2&<0i7InT#vSjh#6LOzH}L%}AX?1!t0kiDxsa%koKF{aX z!LWPx5LhTA`y0EC#k0xR51Tw)5(9(3)VI|l5s4cqkOmmU4 zJxG+K_Rc7~S+;y_RU>me%!rG#u)?OX#wRw!``#tN^%DNwn@2-Dq35fCd%<^_jK zz;-AHbm*7DvM^urUNLy~13Px6p8LVLL*+fD_jLaT)4a<{rG8HR&q{JOWi0k)#u>mu z^9-~0jzu8p1Je%YwDduiuQubhkLzStd~wIP@tu%5;hJn6QN-C@U#?4Bd*dbVb+i~= z7iXKv_y~j)A6Jh+%ANVeEl9rB>Ssw^4992>I>sW}PV+$6ijf;cK26IuKDL7~SzSFh zvu1<}FkviqQF}v;26VG5FR=opNd=KnO25f5SJSI+B}Uf46Vuo^p>cs*v(kQj=g(VO z#nrp0O%-KmaJO}&AU;dn->}hXujVuEia|q8I!cMyEIQH?ze6pC0zz4`pv?cZVPTxmcek5@L01Rld`D{9OH9d9kMWXwts`YwYDHhI?Q+PM0&`#H5M^|@%g9T?F{HZvg^(`8aeC0{x zkI469*CyF7dtxbzOJ<^YdvaMYYG*GeYs1LWNcu*IX0Jk~1&YLFynk-rX;HkwpY^&r zq>s6WCJL_aNjFuzoZk6Yda!t;Q|6%)9lQr4c}YI`@5&}v2Zy8A>)!e9wYl>2zTeY1 zgp-$drP#E_(G@R!_2Vi@UY29M_92rLglcNLMYt|{mby@)MUHMRZ7tv}gNO-&xS0q1F~V!rYJjibM(>39BoasNsD9<6b7{k@Mi zsGAzjz6gRW))S)6uw6J)W+X`W^1c_%I}Lx9EB-k!oN`Bn0!K=UKsU|~g>+U14WBFa z<-4ZMb$MuHc1``?XOYQb&htr&*6&yV%-(~87q6e7Nzdz|nRYV8d7Oyf@7wnMx# zvDa)a&Coos2Q6g+WmP|NZ#=?zYj6s-jURV727^s1j&AL6-(<_*eOfnA%nXH?Er_D; z&Fg@{g@RU>{(i|>u04qYPaDj+;SPpuqoO56wbPQ+AUpJ;5?$6R&_NC^o{`T9`TMzwg<`>L1mn%w> z5))_r2U@W~WM%T+Io5h4fr2+2pA(@|+$MDuX8&8y`xXB}-1h4~=_JSubfxmhUgOZ~ zA&QMbfcA-&m!_59uWeN*okr$OVdTDh!NJ){)co_3yQ`H)#GJ#{8fq^WtDaQ4$#>4u z(#MZ-b~;-FV~(KxwCe-W%z)5M5Mdb`!ekST(oCNUi&{yF7%|SzuS+=ljfzsL!dNux z^11|Vjbme*1A<&0>uLW8*2GCd%)+-kcK1*kq4w@Kc*72Y7S~`jD+Bpe2+F+9;f0BY z5vVf~%6)BNgOZ{`Pm5nGklN?!j5$FQ=g;zcWo{RUZxY5~`)ipB1?iEh3f`L^R@`pz zhF1Ve%8t6Z5}ghD@c7WY77B_+8D(FZLICGtW%Ze`xOKuPmZXy*s?%W~a0htsS*TxU zewcjN*MIoXZ*%kRy$Tpb*q zVf+FEnb>6uA@p3o>E_x}wKbm(c=lcCchm#G#16lpenbBCpUkBHiLU-QsmXNlR-)#T zi;&f~ufAr44^c_Ay_6La5YO3S@~=R=l@|+=(t4BU<`t#BGMZn_4wVP9GxypvE*(J* z=xq3U2wz;O=W@ly6xbVVxkK=kPr%fCiDtyo;!s4Q;o_^MCzvT^nK7m_GQ&&vtf(Y0 zZgoI7NZaF|j&iLqCEhks`T&wUMCuK`utD}dK_98p8GK9^0{7p?bwg($<>MJ_lP7h- z81y+warKFoIxz0~)+xq4E<4&;lhIhYeM*7uGy6e~)~w3-^1g`ey{@5b3e}m{dRB$;$s2#^^R%(z~7Mv|l-*K)_lH2sbHsy|>me$H;0=(hGgG(Hz$rUOV)?wY52>?7#fQ_q@kNFKq7L0O<&p$Nq76IIxgwcFe9ahtEA-(Q)MJc{?rz8pE&$;1gg%$(#A#tvQet1K6j zguF!gVy0|rS7VmJ?&gjx%{ryKPFQ>88;p1%YTHnnU-Y_tes6gFOlVWkW}9F7>hRkk zs96KmU}5RwTX8INlLc3hI2F$n<4V(gsqu((s8R{?h3@kS4DZ#>WG4BM$R2Pxv7;)c zf_E&G_$bgr(%l=XVa)n5#*uPhP-+)`Rq6S_X_<2911bM^y*`6s%zZ1+G`mu{p5oo@ z;i9!CorQKE`QF}+YhTF%H90PbSOYcL_0(F##K=n5)oSRS=*`b1*tAyyY$ejFr}{4h z$TjCEp*{^A%kWuoxzAf8hj~m&tpX^1@526Fv-=mEcCXjYvjAP+ze6TF(o%bKq5ah%hYIdLG5qVV6{)H^nHFwV8YZTC7P0&1(OizI-VjB z4-^sg_-6u1RJ1E0-N4k?CcEv@RuQNG~vfOJSJex+o@#X z5KiRPHJ?zmmMUDIaL~cOn$kyJ*l7l?K(0mEMg`A)R8I@$&3(QT z@gp(-Q57h5e+peAbLCnK%KlxKMA|ZaCa?icO17w(4PdzR+h0*>?XS9eT|$D^iHB9D z&WGQ*2-Nvbt0Wjnm#^R=msGuN6^9%-gf>>W$QMt9i08HM8a#RZ)Wv15CaS#NZs?k; zT0IztwH$${!>w@eHRsMnfkJ0)eD8c$m(8AxXk*|Es6?S0pL>sQO6z1wlvh_%TVv7BN%%%;lTwoD zEL7mT@mEMNCvCSGoRj9Z*%Z)Bo3@3O9obs=__%p{yJjg?gfd+8`-PITw$7ejbxjdK z6jImI3C4)o&*>>vrlwnKYnN_bl5*?)Dd&cKIryFCy74(Jxx#KXKcPS;>tSj}a^}se zS3eD+-GBUr%28vgJ1p`$tf?Cr7JJ8Hi-VH7yFolF2cLN+PFiM1q{>)pur|q&gJ!e=)w~)TvXZTf{6fOvdY=uu1+6^)r&t*Z|&K zXsn_Y`lY62$X86)+E@zBXI9d9%5`$0kg}S9NDf8|2nwo|=>czaa^+eAoj3?Ji}d$v zK#E68CEj>xKDf@%8tJy$1rE7@wjVt!)yG|+6mxRH|A3vCvw&Zt_+0+B2OIg#xg61 z#>qLd2heZc;r0Qp2;$VTr3ov!5?R?~WM5@C>#YD@rEBH$J4uGZT=<(8Tvb%x7i3ON zcYKYE)NrG;W?kfzb!x8s@~!a8H;3`9W6|a#OeYuBc|GwgJx7!l z6_phgY0JWou(9YMN|vYvG;1jAD{&(R3S3SaK%3^Ms{9+`UPM9xMDsp2(3RgSpb(t=*R4Bs zEubE#xxGEFJ1sQ)Bd5IAUOFMfZx2C+5x0YVu#PE5dr^c;f0|@7%Krs8t_qTs+4S<5 zTCox~3nIPs#RhD3cd8gcoEz6ezooHp`f;xT6uga+ zGux^O*gWGu+1Jzzxps2SJ1||Bzt0V_?1|YVeRiC@F@`G zjg8844~?l!$nVJ^OBf6I$X(c-Kd2N zz1fJ!v=k$*@!qyF@p;1dND6uo@bozhws4J z!rqT{lU7$knK{qrf8}VdMlTx%RwbqscnFly`SHT>)j{@Y@MAgWx!sZ^c_WZ}!Fq3Q zQ)6;y!2@kzW6rU)hF~Qo7dfo=ar1} zb@co99q*#t4mW!8F#ba9;Qlqb^e?nVbWW`{b-AEG{vE!7dehvp{X^5;4O`J^7rYR+ zc%BvO1n;ce+AKk!tAg5#rTQnXfniY7nMp-@bM|yF!^$%2wmTXd1Mo@lcaGOYA^Kolt;jj+yhMUKV_8jG5HMQL;PqzyR)(AuT90=IW+V|T$1GhL~e+Q!In zLEtY}yZ9YrVI*I;j_-;Bvl;jV7~q<2jVr4a37azim4F6y;_rZ}e^h(C@!X(l)%EU{ zQmkd;!X#eJr+w#5i-urvkD&Xv=R$T>4KY0gDNv-bm6SCuTaFhl+e2RBSXwI{OB`D* z#&2qE`0yXVpLI13mIApKvX(Ud;@$hi=uN)T*s!Z32*-JDao2na@YNsb%dMl`pQoJ; zP1KgnIs91XIvq|4yw?Ln&HRhC26m;C!@!0{2g!gO6UH~Ph+^AQ_@s+M_W|VGkF9@j z+jnzLRMhyHQC~w)mq9H3uv>8X{k!+oyNq`e4(BLbg5Yd+tKw%+F*qelH%s=xojVSl z{ms+98)fB1mrmL*)H3~E_7+~MsOZ~08XK3Mp?uHrIF*{7jvwW}^7sOKMwZn9xZ4_I z*}ij>hj;I;W75kFOcg0VoH4jGAQgU?SI*bs^p%xyo!*}X_mgsZBuRZpDlUubM~(UrS8H_}s6n_VfKyxv|L2SxT) ze#e^-s<7I;*=Mm%6MAN;0~ebwpLYKcvzFu~>rH|B6|jf{6ZiX!+#b8<6e$bHmCO*( zuIt*}R``>VyKRb;&c>ep)*Nh(IyVL-YJ7u&w2V>4ajB`h;HBM&evBsvPDb-T`kTfs zYzhT8|_eFe3g$h z$_ZdNthb7!7o7g>*IVyHstKWq9M@%&Y=s#cgB{PnPS$|9+wZk*NC&iSbLXgCJkP}B zw#Z1Jlg07+$_O;E*TQ$^jwsff5+l=aShZ|rY-A)7=HN1_u(PMxgFb%lNL@Cgr@#{m zn#{e%-je4I!=oV25r=ugfI>(glP`aJU9yN-kxJ$MhTOrSaZe&gP7V)-MuiWbo@NZ|@GO4CkzxF4RE^%FAXyReEpSU;_N zhEJaM%pe4h#KDd?Bf{Ys61s}}eExlddLz5U^Ee#Hg7h%HHE6}1rue!mO7i5r+fXA! z7m>M7Uf9*W!zmNeo^6)MOm9G=Lk^ovT3Y@Vj=jB7u{;1j1UojH?43unqeS}c=YojB z3l}atZzkgBb}EQzWIAQCO0=n5;-SC5WP7{qnlYD7s=TG8C)H;7hiV;WbhKM^`raS^ z6_=~CNTu&Q?%H%n} zCKU*tk&}ZQh%ab4b-$=AmHAxdr<6gh{FXhRirBB&2(3yu>fWia za?`l3wDHj7V2T_8A>G27iiTbU{0iL!%RhG;=oy(!?u?(kUlR+gPYTCoX@ou)Om09O zcsV`4v-USLS1;P_qJ z?M{Ocu_ehK%{7Dp}!KoR77F8g(fzggA?dt6|!#riAJN z!ic0NMmjpEVVCaQH&T$^$s~TzoE`l>Kj0YvFD)%Ch+!kJIX~&|=rJ_jZXmr08V2-=X7)cPWr@zFR}hRuQgw`L?5@qXB_| zHT#_Zk;wn5o$Tc*P^lb70*gwFe6vk1%PZpdZ4SQkA{j4?ygsckFl${>GMAF@7#V5; zk-h1&$-xo$di2~&#gT9oMqnN@pvRbBlE*s653`0a`02vWhL$;3l>U9_h26VUbb5@d zT&BTAEiEJN6Del9*-f9Cb^RjE!YEQ*uyoEt$ja+@MTiUCl%Jj{j~-;{@@UH1w_($| z?tfVProv}>@7z8cC+p|WdUwN~*XGE?xu znT{aUBLN2gKwQN&q}cn8GvM7UZP$M<3T>5iN}2>Gche5$YPo!Eqqo?D#0p-`ew~Rl zrNFSFv+_sd!6rnZNYN1A?UFwJDm9hmWQ?nv-cy8g8Yhm~^GpVTZ}^esT`~o1^;!cuJMR|cp5+EPv#4_j62H$5 z)RBv~z%VvUJ3gN5lvi*S$0>(j2qLwk`KyMmUA^Afp~4>BG3K0>#nK3^9kqjeuV!*+ zc6Kw5HM5?!9EeK+$+Vo$CS1|`RnJxoySSL5NQWJ6!(^n|l+Sjnp|>X@byMz6{vr2W7tJ& zU7+2V@gN`@fSHL)ft8!OO2_9Jl~@JQ&f?{boPV?`sl~DZ^RkWAOPIJ)8S#Qii5s%H z{*OJ>1Ey3!6iQTfQA#ar1a^k^saqi_c!FI8r+bAs+~pE&I|&&j0pZ)v2Y)M2*=k zWRYti=B7eZ%%|>-zUhMAdg4LX9oxRR+kB<$4x?$kr5VX|dHJ-cYl2B7I(!8t1iAb3 zrRo{ie6ilU=?Dc;diukVY8D>Rx-X6S4Y$Z&9__cThB9Q<(Av775ufxEMH#07ERNyw zB}I+_qe6mm#_kTZ+cq1Y<9uRe%9BVIEk}ae`$YMb6)Pi4J(DpBeGXV{Ll&PdZ)}!4 zJ+3ngXdce0wuZjmXltEJC)#D8k0>d<1$}|Ebu-Ew1MglPKOZIyg!*;njtVzl{e`yb z=~5`em;ZiJ{|DE{Y%Oz;hTc&ZC>bKZum_2#K6yl8z!FBB#3Koj4w~b-Ya<<+&H!7g zv%u)m#^rhot}uyQvXum1y8+Bd2?~veoYpi|(l!gBg zh3bU8wXpeSqU1iVC9uQO))T;gCCPM#JFIHIG%%Ix*m3Gx{dZu-u#}8hi?*xL$jiVD zskQ>JVvf4=1c)%I@nI~X0f*>->50kK98-M9Xv;j3-mqG8Edq>D0|9FYpd;aJXXHWQ z0?-$7WSNWt(1)vy5D5w#tI&lsyZK$qKiymar#9IJbD7D{^k`4t<^XETCOC*R0BCA+ zV4oV3lnmVGl+Ezlc)d^&%y3a!BEyiop}27wBgZ*|c5XJp-w6W;nbyq724uT-6(%Qk zKj-DO#n`(;VR=wtZrf3wSl*YI!NC{q?ufKB)AZe`)oZTM#%QHY3QIP1L+O=|y~kB0 zP$^boqK%1hs|1<%j&?1wS~S0y`5d?D|L^snht4$u-cZTy*N1%CMm8kgeLOpMO62%R z(%s2rbPR*3$?&LvU=)~?unEJ|#_&Y?*0&Ov#DB(%d1a!2N&KBLiL`)5IR*Lj`A?t! z3Uh#g7MQb#X)_-VzN0Ro_zw+dXA-apX^#^?u(eqppC|tL9ZPxtN@mJ0`QvYLiz7_h z%+P|u0G(|<@X^MM!1y-d|DK^l7tz*=JV227w4R1`d(#|NGzSQ>mWDjaaO>+^ZHbf(41)IZ2SFcs5R9LZ;584ScS3hhz(XLgA&JY6VUd~ex_XD(ahw? zJC=aZmjjuhgy8Ki5XB{)0ZB~f$E?Jab3**Wgw>rML4ow^r3=~*nt7(VUh*qYa(614 zO`UJDPUC+L<@4y<+H!0;X-eU8j@qWPwoMs_>U7PeRVoEaina4E()DtKPJ?pn_QuNWm#Ai%eJN)>zo{`ZI z=#%)M^`8jn*Q=bXg8J9@IMDJFssTlwY z=d6rkuN5$i$(~;`Y-4(;N=vlIbAj}v8^Ki9l z1%8Z5jL4SX7>Y-3a?uJ8-P(7hKZXSD-1ncHR97hW9pr;Dr6lhD+8Nkq1!kaqH?2F{I-lC z#;@XOyWQ&o&ZPO@IbYJYe5$x+AJaH-guTmqaH7qX zK)8j56EXLVPi#Vp70b<`#0D-eJLs*FC}BBKOHVHXK5P2&3WA?s&{@VcqgS@YnlEwW zjnwIcNX_nlojSEqTV2G3QI#LqiY+O@gSZELf_5&bDZSGXJk}E9V9&jYF87qkC}KIQ?s5t7g_Mg@ASUqSVVTyO#w6`0MkfEA2I zRZ_QQ*ze&1Q)P*^riRhD=YQ8`<6!;>NEU zN!-#A4R*#2SwIDmQ+~eU;i`%#zln(uZV}U%78`Xf(O~k*B5b37^*h6;NxThxWivz9 z$k#jCp|2%lcs>8OnbP^VSYb9yWnUKSMa$aTn*i3Ev2>R(8*uz=Wl0ADhEJA=$UQ{L z_`fNQOc7`Oc9tJVImQ5Bpy}w(T9#K{*k7QWec)yWty7$J?&ha-J<9uCFNARXh6pO% z$sG5JoPvT?7ksDn1=rJ-uQB~!h-k_c5-1>&u0;U1(EFJYf1W<9pOq=0FGht2*6(Y{ zu3m<|r2cd8TH{zN)VPwPi_%}FP1n)C-5NZ5(TR42mq*?ON6xCFf98JlsN2I3^44~A z^nd#4*e_x8W6L9qXoA6T_yrAz$wLYnW2nR!5{w@Xj z0{iZY`E}NDr$?1rmoCp_G;8WW>ds}Uq`Q24F=({axX*vZ&eg{rM)^_0&*gNkGjiu& zI43u-=r!Q-KH>5Yo>L0%SngKY_WkX`$45evb@WS~z4Z)#{x`%lV3~lO`rIKwSdeUI>Q016uPu+MZ(APFFoJ-@ zU_BtGNy@LcF#85I@K0`;v9qy%+lw&CEZ4U1@X-h4GqK$&lx;7+CfsA{@Gzr5+IzXi!CwPi*d17pL|AQDQW_n{< z2i{#{DiN%dzO#%XcXriT`d}2^0ZbZvIWUo}vNSQBJvfSN12!NqMFr#O_II6wm;d4J zAAUb6ThxVAHQllp$ zynSwWN~)`y@@tJi!&E%=`1oJcW1icspc!m(=9!EPFYoNuj;oTMQ~^HY!*&(tOLYy6 zifJKU$yo;pIDKs@#~ASwlv%oZ)MB&N&F^UD>lZC7z5*ZR=q&*tt`5|J^M@C$2>fQg zo0HhZxKc|at5+ZipL_B8O|1ckEN{(WNo-{F(~`r4Yya8zSsx%tk&Ub7qQVMyR1Dra zb${6|vad7&6>49eg0Zoxn{z@n^3^=ffv~o4_LR~)7HO?DSB|c3p>h-G;rML3 zBk_B_?;H7&>@V4tj8L5E)7i{3z|2ZFg-poeVHGI`284=+iI&e40OSr(W~Zd?+4i;R zPW#8RG(&%FgQgDf&jR~p0sqp4;`iEW#KqR8&OIi*qA;MxSH$RvT531#b3OI;*jA@0tVHHrU-aPGf&4f2Nfk9Duh%IQccyx-j1y2ZXQ zYg#4P(Pj>OdhBd%;WQe#ZXB-#Jll0s&Yu0c^HmW*LKpLrOz#u{aA_wdrXdS^`PZgX zm9^6&k}!Shj`}Nre!Bav08_^#?*I@HMer$N#RF9ms|-eXSI;!Bt*4Ch`0)z$bwHsW zg)}(s?&HfFDsfv$hGS!6lAzuW#Rmm79Ulk1V=>^1_4W02c5o07qqcNfX{9~H*mb6* zO%+v@>u0}!2_1V)jh+Qt%@w}rNtAVL6VPl*IO_>IR$S9)lp^)uysb%zcbfO)C`K`S z|NMmuH^lDEPekN1j;>gVAW6&kSEU|~N{lCnbPC;{w&GN9de=@M4k`u3aJJ~j_GOzA zlksvuswQ9D?`C=?Fuxvv!KSjsEXRctC_Zb<{)gJoLZ((Fy*inN z2T(+r-KO`UWq{FXSxTk%(J6cB3^c!R?Q{cm{%PMWL(BfGKojyFux~rLR?lEArIw3W zRUfOg>|cRS+gnPmREM#6JaZ;~e?5eXH???>{G@|xiO;N~H0>4^iIs7Vpq98D_ z@-b|)i|VLrXI@AyVlGb^Z`$3hK-5WC?J3%y;%?)zWB#=JJZ~%}A?tanp}8O;OIqv* zjMQ`7z;V9%(R}yJTlYDckRW<~K@ffCc%Bt4cMpQBzlLn3TUp#-T^A0kci#UiIZg;P z1A!oC;VVHG_v{?^Oa@$$qG|9upR|1eP)sz$itrQET+)jRnlEdgXw10&`7C_p@d4Id z-Gfu`XQyi?-nc!?uM0oU+1&uRI&jPHxGLy<1JY&R$7?l>2lojvqM{deeN(I~kGqc` zKu`SxJmuW9&7nwX6Slz{-Oq4KizXI1tI7Me-aE7wEOz<4Q<3Mm&)eE5GvtoI>mBBg)U8F1FYmw`do0 zOWJw#U=ry=NEt^qH1wxRS~%9a9WTey$Vq)DP|8k@?~MEy`B~Pssi|qT`%ojD`t}D* zfhwKOfwnkWjO2n0Ep@VFy9UM!aAx?h1|vcp0J`>(w9*l{p+0obS2u^PwhdSAALBH( zlCe6pe#k3%+!CJY;?KQY=BxNjk#0r^dP*CPy`^yJrnDA~^^)91c$U%hhHdR<{Q7!Q zieB6$jM;Hea1u`2%;%nJPvhvs&~2U{=?Fs8-Z~mEpLK476NO0p9D0=$VB42na@|Y0 z^Piyz5GN=sVXilBeL3Jg*L6CZ{VDHBaB`7_bsRs{em*4_tsmkq zz;D};(Jn32a8eLzUbF_C>G1}`y1cv)4L4l8&Sr}^scvQrQpp_#v9M~NW4nf@M#{>I z-qN$4WVke_p+G*{-+u>*78qU-*a?%2C63o71Z9UCorXZs)PM7+Pa}7&fz=9IMfe4B zv@4g7Hs^w0j3jfU*KIvx!+N#8;tliy+8#ultOFIDF46JQ>H1&Y>C1i1F5OFS3KB*_ zroVajHEMT%1faeFXmAUKUyg+x7FQM*LC;7#3F@cb>trf=FD$7q0zg69Whyy! zQkyr&X6MZV-#MRFzAQ)(O`R_o10JmJQU+4x-;^eFta*8?L$E`qvay0UScSTt^FZP} zclNCQWuU#_NA4!PSzkK)^=pgLhmDLTzN`?F!#PQ|zKvA-q?`CzIio|Wpg_spfqD;U z9_P8RXnltH)*#x7AQDg|khFdxgYIUA<5C{ytTnO|P(ic}nX3HLXU@1xRBxt?q4RR3 zbZz|mvU|drI7U_B{{_bbo*Jk8Tn_`NVZp_737YnL>S17GFfyhy zFr@mAyVLgvmVV1ar@}9bi&f%M?5Ym&?#4mKn~|6)h676QcGh^=c-vlN0FI!mKwYgO z_Ec69A*gAmd^WhbNghVWBH3adn_S^y-TfgRt9aPkL)6R}+5=Px;AVn*f*JM*o)lrt z#1zxA5e7o@17})IOpG@4$L1{LKnS5g9kAn3tIKEhTsJwq6VX|O-2wUHCM#|gZSBos zD+~a-;FZg1swu2juM*}0zw7b2PM;r8tc6@VGpqOVJJFc(X&ZP;^=QLRGhDc6z=twO4(J?_bME;nyp+CM58@V3zXFMkPqBIVzF zWl>VMs@x92r{mt>Zn;}Jjzpfbf#;L!}*Hi#8WH>ry7uxNd z&SS#nJutvMaT}n;i4e}9Aqg(`#L;_^mKYyelm{F>yPZjZ&t5;H{K!9;9l3Y04*s@v zdUjGhN9shB;B_&6I`l>21`BSQ_;AjiC!n&aGCu)?gY;(Xq(tq-@N0%rdlx->CH`<= z{-@9Gb@Z=a->o3((R(xcgvXDT%G8`G~~jJLA{!S;6z(NanLlY!h@)`f6O;r*H%gOVuNhWyd%qa_hKf zAL0l!bq1}><;dl3Kvb#Pk{tTM4s~#NsCck#psLE--JLNLgy&FDP@s{Hum}^chQ8n3 zQ9Ef#=+fCn*SgR-6^14}h!2 z3ASBKvJD5lAzn{zXx6@Vi7tU^*VeEr^sHveMfYNt#fKsG658ajiy924H5?}cbxnBw zmHkI#_J_#xSP0U!y z@XWf?)TIeEXYFthI9OiIU0YZwc6qq&`rh~4^J>XT>in3L|LdMuuGR7ps902PWNZl2 z6s*Wgjx2vwYQ0&s&e$B&(QaAbl`V!?_fth#c~etOrkQv! zZrY$qL=76gn{DV7^N7q%gLa>C{BxH3Q|qQCwo;1>*SSJhq&)Wrq9CheINZ9SXBs)*nm~XD(Jca+Q9rB+oUnXlid0p| z!C@UQw6aWFNztRSOM^;Tg#lMqY4Iw3H!Qqn;@fhp3{2$Ua2%UGK(lZ7Q%x=WLC$;F zYx?Y0;WR@J!k84UC8EsiUGULi9nb>AnHwL<=>`W8Tbbt|=aLaa4;RS!$UC=9 zb{>&+nbOo{IDMD`dzz;&Og*H)l4%NoTL}AsOkK@^`>9%>=h(;!Pc9#Fu*}+@(LQz5 zn@PbFlOX4)DEh9Mo9lEK)|1TP`;jBB>TAM(JO5tW=EvX%1$*nJhDyYoz6l%M^xbcm zD8|kiO%G$semGhON|&`f!O%N=gVy%v z`m42ySjexbTkO#roiXt6WqqYPJ_D`l&#ZE3W6FMc@wOeQB2o1YKlg1uX6 z`_oo;SmNPosBeBV3B59qDaXZ{^%)Moa$~Sw{pnv-RU@{sOs+#4i_CL=l)jYy%%~XM zC%r#^5?}i|kN!jksg;YFXTY<9s4YdY+KQ}K*ui%vCV~^3XMT?J-TzL|KYRaDgnR>~ zlGoJ~Sxr2v(CEEBRAyl0vp)${tyEQ3hK8OB4sPljs^E=UHs8OTf?M27N`74#nE+x2 zxV74>jL$QDeU0A3`hzePKEBSokA9Ci4iaXK5*p|m!&Sx3U5?`k<>uj$6-}(D6TOOM zK_w5Za*Sd&XGe96!{7c%YSJ|02spt%U*Fzw2j15kg(Z+oXjz%-lihsozI4kFCmAs9 zRiBJp=Qa*11vBe{!!0lb*jSr2K=63YC##Z26miDVlBxL3mognzj99L~4)R=VjW-(8 z+@jLf)m35m+@a*#pflw7pWF0(-KA#z$AX~QyRzD`1Gaa#*&)G+i~>h;+rpKVp7NLD z^|hnMLv&iKRWJSO!gPD544zmF(4LB zh<(!4EnPo>SFzEG{Y5a&{AT{~o0=x!o#+Mqh|emru;aiW)67xcTEpk56&K1LTj)Cp z@k>rQlpjnKvyVxxw#&#xX~ysnhvGwrk&O1Cv#F_BAcp;S-PmLg^{j1`+w`7 z|J<&7OceNr2)3FwH4!B7a;IZzJ9H)b-H}%5_mT&?#?AH=~^CG zdwfsRB<9wK&HasdYW8K^{CR5;`AtQ){pG(#<2m$}58q#2yn=N#6tgr|FEGST2|t+x zq{w`8J3}w>+y&m){)vn_UoPqK7Cw_G=Tf8bdqRj*gl1kMD4u>p}%g z%uvOyO!kd{l;@vj=-g;(4TH6Ahn>@?Ku@jx*gj?!PMh;KGEv{{I}BVYgDDg?V-FK& zwAB`O&xz)?aoz}e(-)4l;v6RD!3-+T#f$AC<&Oi=m>6*1KYxy+lQXO0&Q5k`7QdK3#h~$c+ zV8Z%inV8+@SB}<(Tc@Fqe2EBdesOv~Gv?m!9GA`#JwhBDdR}rI17N&pXpfq~fp$kP z2|te`qV(si4VTuxT#4&7S9TrS6NMW!2OJ5Xnzl4wCagB>wVT~G-ims#QUTPiy|ZvA z#ODic_-}W>VMIhFv1zl%w&|wVQA*IUnbCbgPBwT>;b5m+NJ`Y0ayWp^4ck_^Bg;=g zUh7OD#OM)EXpK-x<1FU*RaDIjt`)Q;`??F_N?i0zHVm9Ty|>sukisFgQZbh{=&u!f z7guh8PaN0t*T!@IueSx5)T5%y9jYL$%F~y0Tz$RiT%YWGHCcKK`vh~CXr8yG_YU%b z16;0&W$>nbh0lC6PK`iuY0VVxnmlCvq5OVim0^SW|@ z%}V(U5>I@*;ZtN%#D@=2&2DQYkTNQ$-d+=`BL=pfnn`Jv+M675?TIEk&pPz&nKg#_ zO-`BDBhHBUaKQ$THv=0-U$_RF9=g#T_S*gy?u{8#Y14BbQ5X$eD^bq6F;v`3t<{z{ zZhEuZ2mhB4vea?37_5k{hcA{qaa#*hPc7AOl4aq~RNu$<=m6Wv$2kumaq+5&7u#eq zas#-q{l%`OrBxcEv$DQkY*d0MM7!}GM4rgYCs%!k)^!a{&6vm5FJHd2w4AdFw9Y!( zdCg?$Kr*Y_yNI^w{Nmj7_@!%A-5BU>{6T+QSuFObz%X3OM{__pQoB#m(6t$`l~P~6 z=ENeE%}p&;f|4ts$Z(Uc0&*=XFDENBG!*o-myBu921FJ??L9ntobbm{L0$%K<9s5zoF63y8_k}N#bjV zb$m8zCJ97>EAgJgmFJJ;Io>wGT_rFsW7RJ_RaAm7t6Pw^z=dWDwPJFp(k8CpKX3G( z-~VEdx-9fm_C^g;)8oG*>R7j?y(H$}pS9*EMv07^ThYIAfwx0>$kEuV>|e@VV7E`G zNHz9Kthq-J#3>lH|Dk!Cnc-4|c30Whk8Wp<)gjrz#mI|8j$^KG%QrqbeH(E!J7}og z_AG-If{Yp9&YQ-Ds@?d)rhF31|7X**4xIFCD;>%J#PEMe`wpn6vTa+sZS@*yKtMpC zMFGi5l&q3-&PjnH=bVpy~12`^;;ne6GVpEZ*wvg#;|+&Bb%OR{N~NSSG@@5dq3+ji)AIhn3Pp2 z!h^ccKtG6nVZt^TpnD@KQcqidX)({;@v9DsZ22ettVhDeiV%!xxdjl6Mn*;^vk6(< ziIljB7+=EHi+Q^1u&Zgq4RtptHNt|Vi!iVOsOE)^bEot_2J9*6 zoI{8vf;8gAOhwbw@s1L9UQO9CyBCJ=*f`%Oh*txhc-xl)M&VJ$jjP+wXT_N zH&ONiXJCBO^=Lb0UISB9ba2Gj-KBwjpjC8a9k>acN3 zjTJb|I(?D2M_If)MLMrvRfQ^AD_>4pOphw`tjV9Ho?r|U1uT>wseAnB^pUw>K2om1 zwF9eo2z~=FGecw%0M>}T1b(ED8*HXA>EBxBL5*x6cJHM#-L^OTQ5Bn84D<0 z{-d9OzQEU1vE$w^fYXS|+(=Z`HQLwwEY}9NbewaV!l#dUJg8uYlfkM7g4%Z zvid0k7g6J5h~oWP^-Q?|czOF$U(K`BST(ccXZSiCQk&bVYsq(>3wQMe$modYD|2HT zkou|N18KYwU`-ns(9G9FdsyRG)~#M0C}u>G+uIgsB5ZAK!9c{hYeD!f{%iviBL3gu z)f{vglED(4BjgcIe=uvD`1U{gsYS1kKBaW9)hFPK=H|e-5%WpP47IYW{ngPRo;TMs zpfE}kfh;Xm8&`yln>f+4mE5>yuxht<;}1HPon~=*vq78B*^hw;1HT1)0rHu$dRPYq zB?`Rwju-eb(D;a4I>5b>uQ}1(Y5#;n)S5hCx%ri$pSufA4bgw*71-54Vn*4AO63A# z1CEN>m_>vO=VT>A1C=m`CVJ5UE|)f~$X6^^ot7^DyeN$3$aF4)*~@6}##L}r4VR}O z5e<;*Q;U%|n28?w#S$|U6O(iGLHScTQ2`g5aKg5}6cmPKo41|KuP~^?OiAXWn`%y%>qqP}QLgA*A|U5<{hK_UQfm#pwnBQ_s)OhuuWT z$L1jd%|lnn`sy(}6-9f4*C2E4&qZqivK=R`4RPT31RCER)Oj6LV)g5vhb0=OpDE8Q zr}KHE*Sr30d72g(GjEwfgVOpXtpOI+losM(zM+1qUM_8rz_#4XbqGv=nZ!y;@Y8S1 zLvk^kC)2zL*`DKEHUKCq|Gpr7Yv7px9LyC>bnuLj5iB-P`tjq>htqmq0*iCDp-5w7 zwm-x6w)a|0rYuc+SC?XXcl3HVELs1~=e&rqm$$ZgQHu2WLsU`klSQ+|OsKBq2jrzz z_EmaK?4MJ~q3fY<48~t(5&vl=9Z1W-;z~KK@K6uL2I%(+2ZPTZ>RiEn&E_ee?_wMz zrk_2i&g|)GS~`N_RUKear_2S+!_Lg@obTy*qFYo)`?@f_I;WUq=Zhay)1yibD>khc z*EQ7`r8I7Zw`xQ8c)2it(DAunwjl2q&LsVLBiEWKc0^l7)1R#~C_{C2etu#cslo!y z6P^Z*lE5vIPgE|tSWO*_vVCUrNdkpLYHMr3{7I(g6iH}aV<=`tUfHpknJhZ^v|lR2 z57~qZ_zYxtXIDVyT81mhSeri1*oj8mBub&D1Dn%-n8$9x%6#?168q1~Q7xvOoS6^; zLa*DRY~?-7+8UvWxN`aO6Dod;S5YU2o(bB(ogJ0hNQtkHPh2e{B>Yz;A}a;#X)C0g zn;SS9U|ZU45L@{#JO6H7rDM`*&zu8 z%Y)@JtJXyW3zG`7P<_jIjXTDwPMAg*&|A`2A+>D41ow)2g=WdtI=$G(b z8sCX{xwyE3uU&v3w6!v@!X70NlaN@a_X2X-nA5Q^t7(=Wrdev(eZDqMo%<(RmXZozEv`)46sm#vlR#1zkdn>K znLalWJ~VPx{E;wCb^U5lx>;oxT`RXV&JPvcdpr)?j-~eBjOUlKolANbT`BV=ec5uW zuE&YX%7(sv)06nCm|4MXdc+^M?}+l!R}@vM$AQDwo@A!G&eH#YqB(b*@bX!8TLOKW zzYfz+p`hL`#5#)x`>F$QgkOC#HDwGN9?uR5ZRxE@>iQ$Wwc%e@Pbbo=^d@4~s1qug zh**I50tYwXh2zqeWp1xAOw-uXjse4|)MO^fU>aAdQ%RZJb?}rn_ILEbxNDx5=snX( zzzO@;wIm4Jf3j~MBAKsA6)Fj%7K7S9g@U!Mn8m`*u34g!^m0s)*U`J#GzfD~$V+5i z{mB|O`sH3neP7~KVm+}~;O0an`O+=8tcxx(%5Ztnbb2|L(B>)m)b!2qq1HhKd%r69 z-58LtLR`x{L4gRHDHd-8RxsEZ3B&uaS&FHiEnp4ymRtcRSJmsL*KeSnNYw#s&E0&- z{6WiGc;15R0)*zZu?SzFKLULYxm+FglcXhxm50S$?2OKi>EUnf>ME$Lto-=#V`b$K zrePe@;OCI=CPug-&xxawE{2~OrkAfd0w}YQy0FkE&NtgR;Tj?#urZ++deC&Re?bO1 z0dj4B!(4s7JSPhQF6*a9)wb^6q|BMS$>6mnkRwq`ju`c0}ItOW0Rg9EbB! z!4cFc!-^BIb7c-c-*^7I=ljPxA}ZsW`>Zs~WqAcY zrn%rO;B5O1Dq>yP8H_%0F8ZV z&DTlAtP^)$PYzwEDOTtYVe8nVEScmm`3F158y_fA2)t~u}4j9744Cyl1O%x z_U)WJfdZc_#8&XlHpoPqyX9B*;Gf zzm9|N&)0tgTaaZhj!uIKwTC>_q}CGAamCtczbby-{%>^8k5SESOl)GB;BI$%3A-A+ z*X8fB&p>{F$wi;5nsp(-m@t zyRd%AAGJ*WeW$~@)SvuGApY0)o@Fg^c6wHo$`#zx2Yc{91G1HeUv9H?#DiV(0T|c2!SenbOsOl-rFePOjCGIW{oTqYk&0Ul&9D+&= z%xRCD(nB?I(`v_u6_)C)9U6xiQ4ngGitMRU!qfJAK8@GVz9bgtI2rRVs?dYCImdZ= zt!H0LDxOvK7EZJw^z&>%=KYyq`tKeMCVAax9d>5$TsgF!>fKs#8NRMSwdW}y&S07n z)R~CdndyoO3^u&g2h~I%kk+i$2QPhr^ZS9P!vbPjKwYG?sFM3kgPJIKs0o-uo3~7u zbk4Wk*3wn7d*(P4{hH3nrg_Nf)sU5b=%AXmey$Kd@K-HiK<@ot*K@CI8i^7HpBi=% zw)KI67hE)pt7{*%E?^jDM-LYdfHR5a)NUEd<$J4FQNLAk<*H2FKKA^ZT-q(5)j3*v zh6>$c9`$DDH^-mg`U_etxWUk}Q1y$*T+7Yyszz>%Z>$AS3f=zedEmnmArg6|QZg)2 zK{O$H+SDA^+k39Vla=Vwwv+B&y+S!}e5cejaQEhGKT}}hiTBg?oq|-o&GQAGarXyu z{|WK@cY_XMxf}*1z|_1E;r96&FzR4#o+vDbpQW;_+2c4xIp7iiV^hBBVGI(ID#*sq z4Ikhy?Ye$7I-x*Jy^v_i2rd^tsbUde;2&%ms}t+J0QA7M;d(hN%EEf4&G*6K9aV8t z@MaKbh;D0WLlfv~ELAS+4ilh@khb?$hTyO@4-Dr9JlmtLS>hi-fB`uB+iB}|o~|e@ zD@xoo1^pqkSmrCrH~NAO<|iYKRopjomI+h=73f0Pbn}NNdN=VXfjB}V=Re%`$DO4x z8RVp~<+fAU49|v5-vmS(8$sn7q`Z>I!+3|d#DLmmOsp38&<<29)LJiD7bRP~*#f3ngv?$J@@OU0c!xJO24B*DPL|P}+$s9pH#^9!MVbcqqce1r0J*SoSgF z3KTo3x(vLXj?*ghe8hIi#xdcR^Jkt@7^LKoiVS{Hf!a~Au; z4v1SX6FQJboQq%ryNIUifYbXT(pul_E<0P{JWh_d2PYw(5qTVuV|40V=9=1a;4THC z+sswUq=ekjH-Y=HYSJMwAX_81!Ms;YV-f*dp*ON|-|8ZG}{rdr`oh4g9b- zpa>#^Us=LUfd{3g)_h|sKLT16;mg%ij;ob(69@Zs6pONajX0|1ht>sycUWKv@+Cg@ zApuACkrR7$o#G(6Vo@L^PG%c=BVvQVo&Hx1eJh`tgihQ*isnwPddZ>7RtLOAYfV&i zIj}C~L8bi(|G{?NYFoK(#<0iTlS4>@F{YNcO#VTv@H2&eHCr&<0Tr4y0>p)*0o|qt z*1I}Hp1b1(N})A3IY&I17Y9SlfnhqKQ)bk9J_y{=6CjK22hO!%n3N{%!@@+<`PPs0 zf*;)dI1k_{Zk@WWPdwSKOJ=YSQ&w@%&5lSN{@(Tv>Ry6uXnINRE<&vI0vP48m3k45 zll{q$b|C7DjkczP#pr1ZSsk>!+CD-Z@IW3G?HdHUwdShh1~m|v+Do+ghpV%nDP5bY z-ZRr!aJGsW*^N3p1Zvd?!bI?@#d7TX2(*t<$H|OqYF}lHYlDb1Nb*jwL+!iS8sa&9v52P~n$v4vQV3J@JYH3TE;%kua}>XruM^Rz7aeZ{$RQ@vgB^wOylS zmM6_zU_N$S1~5J~_Jd@G85zw$#-dM_$D1I%J0lnQ?n^}jPd4P&rAXwtAGTA0w;&$+ z>Ny=zN$4l)(c+D0?{mhI3`h(2n{l>&#PEUXnE*0euA*XnWSH+xmIeL=j-zXAe@jWw zcXYJ{Z)e4S+Au*VFtThW++6`;t-45EMBU!_p+{@leW-$(HvBryeS$WEbF&n}cgtXX z4YetgqPcLzA{8!|xC1*TT+ZGL(s#F-`t;6@t){TV>OE)6G_F&f&`sZ}zA?jQ}C|&c#+K9-l{js2F9G}Ep z*c=CzsMb^p+P>oK=5}e*>#6d>tCP-7F84%v;)wZ{GBrI@b1)nX*KIaeR#v?+A4kWz zD(mIcH$Q=sQ+%daPxrhhzaEW8c|NXgG>Bu6#qvt6MMeH%Y{7Iz9x*QU>03Bn*n7A zdvl!WtCKD`MW8hyZ)SE}Nt02GUtb48^b&!(zbw5MRerF4*GND6*LMC!3{oT2JNEa& z=H##e_CN9LXG3kJDjZ}QDE%%L2NrCduTm^q3o$sm0rB>;<>FUhz(ABsfHaoh_lY?X z6Fbiue-bO56ecri-yZsP?hBTi2urKunDrr-HhWvZiey1$?kY1p+Wwiwwdq4%@7XK^ zAU*u13l!Z1@&jhb$WE&lLqPCKf8A_$emz*4D1v03YtCLk%}mQI`LQ^Vwma8%^V>2^ z)SSbcOigFVVDnVhC9(pgWpY%ot`9*NR+rn2C56}8U@a#bYP(cek}O*(xOn*LFq#&) z7_w|uf~85pVY0jBT>tCnu2kk)uyk>Vsm4P!qMk4PTWN~kldVi7lTIbQfdM%-d=CgJ zli$m$KE20uKl-lO3~h)aS9rySGxg~BX-wBI!VS!O6NY~;$I7+QKO*w-d>ZmJ7?Uab zGa=?Ekdru}S?8;_A0+LiI2kOuc3?S{6Mph=r~W#(K0?)&=OGpwvOZ!n*EWr|4OOj%*hX(fB-wk+%sJqC{9>Yu`l@CU4@E{C za@xQlOQDciF}I#jx?^fAd6F@AD_ABLa=LU^A|OSNN6`b0SEu_Jv3xXdpKDs*U1~|! zQ}e-F_^6l;d%3wO^AK zQU>3`<7_wsbu)UhHD(p>(5d3j9aB9tn;~n;n&rW{R`t9@ECBIkULYjmJnKjw$pii; z^0crxk01*Qh(*)}jE*vWi%4i-&O0h`9mh`&1F<8Vga@l=nQCo$)@*$#wY`lm#KZZu zXIOYbZNOa^r1>s_SyUTNVh9t~0@#Gx!WH-UOH+@yq7rrfpbH(PW)`?kpd1IHYlTN; zXIi>ahy{K-oA~dRSJJGy3k(ttpnD8{X5H)@_YDFXt|aP%k-2B8mx32XaGK(R!p& z?PT?LP06^=%x99Kijq2>_n{a2F#xrM$Be_=m^wcRa9b;@4dyyRujOdU+%6F;F~KJ5 zw-f6t%WA&7TDdddvy&);^thPQxIMS%5im>_tFuN{&3GEX^G8yYz^SEqCp(9ujM?$S0WCO5UiC z(#eSr^WkqqC`e5K@dG+m&mQB?O;z z)tQSc`VTw>z!5)Pvh2v{u~lbX)}X_24phTR{4FGuDui4(Q|7$pgif=a90b5$}*E zUz@Z{_s8GwlC4+NfLh#ygtkm{yFMi%bhqUw0EP5A`}kQ{AchO!QIE)*w;CPhDRMm5 z0uBVjeaqPW)#wO4?wwj5;Cyu7zG}AsS!t;a{`#CMp*G*mWtTxzWK49e#e2L4r52}z z1EVG&iXQ>MtUL{xzxSJZ1HQsx5}ez9bt^@)0ft#;IwL03PODV~SaB1Th~5O;Zry$J z`T6#+vda#H77H%CO!JS_tz`7Akn+rHPLt@BxIwJa&2i+c}80&gBBSkAmqq}W1E96)JQOD^vw%doTalwaR| z?`6Fl%xJTUP(c9O=$Nr3s||G{Nz?aKfo=SB^?87NHIq7`%JfJvU$qlD z$$U}BIs!R7>@u$pH+WK0qrVDHsid&>KFfZ99JS6u?TJu)&Fqe(?&j#g@_XZ34WEe^ zDJ{;feMIL=MFF(STXb=aN$CYJlOSGvOE7kG)YcY`NT~JG$^wQLz`|JK7wUN*Co9w> z@zH?r9MjQU#CW(*DOMizfrwEnz2cst$j-zA zj?v?jz&ai$Qi5zP03E?h46IdkuZkQ^e*&f$Ii)PzF-nF8ctKqB2M%{#k#?{Do+D+6 zL7ltSQ(4R8Hep4#C`J&ABfBm;IG380VvZ2YL7v9t*7b^{piT&^Z?y}y+)F#3lP83F zP_`sW?X5sw_gbif9cjlOUu0qZF@W2l*n2T-2jGSVM=Y4Dz?59waRkO&gW-YW;F|`= zwkK~z)^-{MF8FvreBL9$9J0%g!gZ9keXT#&Eqq)7>nQ6gs)Y0^(^fF5hVk_L#b||MpP5UCcUS5pLenT!rWH4n35c$PMajB;Ixh6#La^)1R?+SQ9dHg3A#!jn*_p$A(AF$W@g2ozpbyk zUu(<#TDd#OI!0m3zlD!BjJ-w$kJZw4Vr38(U_yD`8H@=XgO~}wMpG(e8FNupE>KnK zV^v)=gzmFUIEc_!qy-zy%8gOThIqbivOC?`%+&zm(~|%7W5X^1TiCL$*&M}+OFSpW z(DX^UX1dkrCzX6vfaNxP){336;k&436y6q-kazH1!h#*x0$}d_kF~sG0ph@7XNd%$ z0*(10&JyddFUjpnG=(2LDCQMN0@aEDhi(7Y7Fp{3zo0*$a-AxG$kZ=0L~3M;YLeK` z^DFHv6Hme5#-MNDHF~(?yF{#``I2>rj2Ho_@_Q$cEFV zPT39EgWpp)FYg-$iyiq0Q$ib#CGwQk0H4BE`}>X@4(fe% z_Ajsu0PdL|7ilgkB2OviR@)ag)pEQ*C)nZTcEaG*md5L{N)5AA%DJ3^MRc6LRO5eq z1q2a2UAZISaQi)DED^3D7FxGhpI@{%dy7W~-{u$hwy0M-3DMeauO$EB8D5GPplppt zE{VTL6UTxK8xK1d!R52AECtLp#4^to>Ee0|ja_bF0AZvQw`6@5eKE>)B%N)8fS1*Fl}iAJ7E7_QDet@z$S|1&ArvxY^y`{%fD$aP#|+J#e7pYlBUb-Oh?;1Oo9# zJK*PXu5(0Q{S+~-JW0{IN%m}snC%OH-a7opBGlGO3I;_^$tyINm;1r9mU!FOFU3sI z{@u){YQR14k1#vOX`gK+&3IqS>U^ZDk@=DRmycKB0XzsMmr>T0HQPCV`9vlDwL>AJelYA50 z&yH3V6@i^!bbbE_u@0yLCXzuONr8`VIqw=OshzC%r|;PG8V zcJ@MJD;M3=(h@O9Ram;1{LnKqh_4?hcUBFvAQ_||M{p6Di>5rNSju5_rjZMD=DBh` zFXQry4<9}xCMH54Y5V2Nm-Y4aQ&Ursk;H%vd$pQ?pg#>@sdV$tm>&x(N=uy`92}gS zazVkEA1iM#_<*$az`Q9Q&=f!5<5Ln(OuQwg$9?6Rr5SgeVzPkqQR8Aw&C!?a(sOUe zPx{T*$GzHrw<(sm?v{{vr5jwD!0R5>qaIeCB?+V#Kpy>q}Z?O zf_2smXyUJevJvlMW6f#GDgZ%?D}H0c!OgAQ*!FCdfy==FAr+CgQ2Jn36xuVDk;w@d z753{8w69zF_SAknAu8&yo~4(Z-7r4IXya=-ru_01+n&3hyqXN51N>ry%ZYZ}=g3Ia z!scgmJ(;dU2O4O-^n&=!fn^RMp?yQJ5mF67Hv9*EV-2{vW}MIfoZbCj>VWy5`vHip z@?#Sld#sRv9XKp33?Soo0C**<*Al6VjJMz<(2oTQjEqd+=co5rSvxQo3`pDor6R!x z3?@80yrQDQeyAu7{E$@p%rW%uw;>>4RtcxmneaPJk8JV!c7hs*ymjMh!2>3IHk18p z#|TBcIM~_ut(sSqM0|QFVZRbAp}-J+F-hBrhGJrx!PU~j5=^{=_aY=D1SAv!nFOCg z#X(JYP$yh*eqq6a2CPO!B_$;}xpoXj)O*K9UOuF-urMWs_VW*DW_Gn#U(dIVi0QWG z)pRL+tFGyAk<=p=99Y0C{P1oId0E+33`gaMUxR{zBBRs_7k(#_QBaVBFkfnV(m@!b z@-Cb3bkH0l0|Sew8}h?;NC!*pL|-2_NcZG}$HXw)Wtg4SFptX$>ByUzQIBd>Z%qV= zTynKm0AoW>pTE`cOP_*Tmb}dXw=z~!RcChoUCWbI8ENSul)Jr+Ok(Ep)LIsSos6v>IC?Etmm<6_FYW@sNQQ-k))ZSa(@}4)QF!DC=3djQSUorx;Rn1N zt(~1DM9{^HhcsgXqC)%0BDE;3hv>307tq;+iWMP;1!-B?_^#$mol=I$XK5JWV`=47 zwCC`vLmEL}hLXxkZO=+jWrAJ!E%Qk4gvVy)FTPgmVXD17^T#zFCm-m|F-aV3Y@|e5 z5PpcvNo*SI{!x3#S}oWbeE40gT>~Ep#~b> zT(1FRX1(tBOJ8N1H!Py%30rG>dvI7-S6dq~5g#9)sHmv1Hi5D|D8&XYP{OhWYHl_& zH5HeT0Mh9E`Sbh_A8MoiT=qz z4dyrK#qi&~{a|q|FdURzfcl(@Qd1oONBcRI4CQb-hs-0jxSP@$oxHT;csk zW4~te#LB{S9)u%(`kQAFe45jrp7|eKUl|n3D$Q98QjP)$y*qdANQf5>Ui|Gh4=*oW z6dl2HJg9bCVT0x5;lYnqIqT@?TqLBqdj0wiurwhzgFpAVa#nx3v}Of6HFSdKBl6sN zJy=^y<+j{YywpNQMmElARiD#KL^n0P+K)EEBnww3iqckCwuc#@b^-UJyyww*K|z$B z9gV4HU$`iT*Fn`_^lD66=f!I)BWb?NjUS`oh=Ib9B6?o-XF~y-!G6be-h+yBVh|YA zH=#FaokbMINA(T7c9#YUl?cTgH^G~i+l&Fe{|eZ0mx>8Pfll#IbLPvzH6RM|wW|u; z3+;qa?$>R*S?7F4dtfX(E5h2kx(9RH;crL#MDHyaf9tT|4nrM2rZ>$jEnXbR@BMUA zt8bt`P%u&B*t?U_uKC;Ep~f-9lv|#IsS$uCiHRJYoL0t4^(I8d6eOpcI|X^|$08CE z_`JI~tdL8!i-qy?R6)USM>*MgVv;ai84+Pcg*Alcfhq^$;^gMbk_BMR~z{7oMh*v02!qBhI-@kVD z6*v(t?TTvZstP#P4;c!hlEXudkX{X82HwHJa+xByrC^Nk$@p6%UYiAep9O_6l&h?Q z!URa6Hag8CgCcfC512s)aHp7kZU)swWvaF_&>UW*|3A(DLrlyY{KUP+LhYbGHf_`2tr(t@p zYUS=f;H0OzVT%h=o!s{1?4Cu?1xzA5N!WN>SSmc}1`!q2>T|zZ$?#hurpjne&)Cbg zK$%T}@U;OhOG7)D3BNKVl4o7F$YL>F&FDtNn`^@EwmOq5D<4Bz62q6V>oGMoK1BN) zwWn|$F1zNAs=||XVWPzmz#o6b?|!%_?&x%`OYa`tGd3~Jz2P3^v{dgw*=Z@EO&ZkMp>X z*PADwrUVR)jN}^>Km6#ahATJ%Y;p}PG@_2Wom}RHE?sk1@@X{X46Sy34+}2jB2qE%zD5$kIUUObO-8mP`^boo`{6R) zGEV5h#e#z64hU)Tgt24y==Q{O#v#YBH zqJQ=jVyyNmnAOT_OA_%Fpr@A*xA6IuAUm-t!`T1AwRk>zyH%$@E8W5rn=kXg|-~MZNH@Yp-;G{0h;Xy2JB#EhvoT5f@cwcIk9`sC zBtfJ%$jFxfi-GAjdTXs3SH5UpqrE>dS%~()luX7+rh86SwE&OGpFI-V?Yq-96@KwL zP0keCxokBkQ!#ER&oXs3fE1_w-7W*?iKZpPadE*#Mx|tV8JTV?B*?b|P*(ytZfEEE zl`FkgNG2vGMx`z5A3k~IVt{rdCIX6B2KspK)3N&^p1em9teCgqw^Hy893*Srd6w<$ zghEH#5vOx8;-<6l*V^b@+$Z>(q27ktBTGhwTZK0F+8Y7`T1^jdg>bqL{Z=9#SugR6 zU?=Qyi6ryQBU1eKdO(e9iX&ij_4KHMu-}$2Y)dAHH@{)6#^htb%*>44P-XtntIvEI zze`ws{dA{N=6Qg)L<$#SvIt2|-tl0*T#HJ@brwin`5hGJ0%~#wD-A)=x1s=-?><{D01q}Ap0HITzrNg@b8*Dk(9WKPtD^M;((=a4oaS&lX$mtKNv?M3f z(0u^s(Qt-uT&-8F2vjMP8jvXDnzVLjme#R9Y*AO0V-S50NI=T)n#Ip7uf5n~<3bNKAGOP%aA)HM*xBjqj}LYIsBwn=s$I*MZ?smfTqrbeYtB z7F(m~p}mmd)*rAcxEn9eKxEm=yrSx?`{qr6w4tG&Y2RxhoxuX?=ur3Z)1wSa`xGIF zR0Sbn$b<_X+Unu>uysI29(zm3rR-?j&OkuZFR-YHjPy;--tV@0De6xsOhp=T<+? zs1t2&S*3p5X1+1}A+ATBg`Yp;Xj~4q$F6v9*NQpXXM~=~nJtI%j<9h0k~!~N*A6O*Q_Y*VZaCzm zQy%Uw+1Nx&P+5x&qm}Zs#S7V+oI=rzw9r?yW4ey$QHeFikBFa~#G9SL4Y1u{YBml! z#V(5A8^w5N7_MyWF8AcDSUsO5y>SC*u|ZAk>S?LaZl*zN@V`?1n4?-C)nB#eK3B)J z(S^Gjd;!K%NXU(dZ{MB{u>3}#4w#Ouf#(OPHKwK?qoSfff-sWhFU{tq^nk=KCw{m& zzp?z?&YT>}ER49BsTosfSYjgkcIe)oKi|sgDznglDR(XpCC;=0g32gJNc8Z(>gy+p z1BubHQ4z?vhRo=j=weRl((-ZGfHg(Cr) zG*!D}Myrl#9~SIqn~5s(!2(~3I2{QI35fOBeC&YjOtCh3%S)PEq>05Y!hhGZ(f6V6 z?eI1zSd;k8p#gCp9Av;vkXM?+x}`mM1qMYhad2?N$AfM12Kb6V345T&xwyD^cvK?W z|8y8WuLiFQRidhP)_YC5*W2Y8dQZ;1y|}$hPiJ^d2wrU-M1z*;xfPKuJmIdV&!C%SkAYjy0Ue;u{5d%I{RM?-CN`7qmCm z15$)MC9xaT)#OBH={%mS5@Yf(9lKO^Ice!HZEZcvc!hZGVmCH|=gWpbXD#`Df#vPv zQ#cRscI5%4$&lK?2YM=v9yQVzx&p%zQ6=7Q{ZMeqMc>x9zb98CJK()M zC|*g&&LibXq`|D=(M~p4z)3I&Z^LN^<)|_6T2p4*u;k=ftBqt_rILs8mc=YBErCla z;J4p?%kIa|BK{yq-O27>dj6b%2yAI4Ha4W&k9dSKV_$4a!|S(5X&D(g85tz#>2W6RLM6}~EUc_~8=pXZBHiu75)Er!X2O0ed_cm*;4{@r zaNSpP@;2CV=yw}yxAVPjiFoN#P(1J{lFcBF;1}%z%uDwmX+YZ}5qx@sNKbF%w*P^_ zTrx|4rtACgirBMb5^`=SsGVg5g0~})XWfcj1x^V#hQ&>n%MD^>m2JTa2MdnuxK3WC zJWf6n9Lxo}rH+SP!n2Il$oSj-hb$v8au==oC}DR51+&cT(`tY)`e5U8guMz}WPbHQ z@a5<{z4@@!np&y>H(`PTDUDVWrX^kGD}%3xhK3>|A!6Vb0iHeU!Cwg~9|MEAx~d9P zRBmi;)b}KuwHLPn**YPxO1Y1#&f=)5UJs%rs(!LiMzm1292~Gc{!@6bl2{RCP&24)47LI+1gEM2!jG{Q^F<^ zAoXhdb3}5sO6uqP=eSQNG#Y z`T3K|Pnub3Z6|Z6DrkD$b1z1PB<859rsD{BEBdW@gMdnV-EzE7Xl;2p!*uLAHGe@( z9ddr|_BpEkgMcrOF8xn#6bc$U8bj} zB^rU-b{NF5?C!NO%K7*Rg_itzemoKfd9dGxJ>8)LmUO$6_sJ3ahmjDk%_y&D&lsDS zSUk_QlG0K^zp3rwX-4zTeF+%`{)a>8qa*cp6H%{IJWwyp%;#B+s@yg<9M2u@0?$!! zk|D%Ew=}ecXC>Ke%s{DHR}6Cki8apEOMEzP`~yB)Nlk6&KRuX zf|Dn3kA)ZBV5p5xUo>=^o7ho$L5F}a-OF{I`1h|5IhR)AT@&Uw^o_YGU3qy6>yD!L z-?i>eAYsb@7d^G8)g>;DUl^zoI~)LRg|~#X(DZ6JAnW3w1GHuRMUzckv|hF2;8=8i zPz;VEUwcYnv+WJd$uyw6MX#uLIyn@bZm09D-xSpm7unle28tbErWq_X4`=W0e$W>D zJ}QcZ4rqP1_>C<>ji^82*W_ogENv!Cz(%mR?vxbx5arV^N%nhV#$5&mKxzVZ4saoU z-#KXyf%m7X3TA2w{={q5_vK9S`hGo!pShJhw1Y#fV@FTFMS1U1%VNIxoTe8tC(f;` zK-<%K9QC?yw67m{c(dtn&ld!SgC^ER9X!Ao(fS;vG=N11_}s#iY1U%=m6Uudi;5Pa zFlaVr=Ckk%q?uPdYHe@7JDatBm74RD)7N&y=bj0uW;t1EYKkQ6mZ0OzP++)d!ZZFf zon8hUbTH7}okodyL{Tmu2kVRF9iaYJJgZ&!(nQXxbc|$r zoap+9_nNoOVDj;U`RTgDldSc+(;WE-(T*eeMTg9r0v?}Am4vqz$tPy#$?tJ|05%;5 zQMPIhji<#_S!@cEb6Tw7`vXwCFYwDESA?wM+93rk&^4WHNBe-MqYgSgXvk4Q>#D1l z`ArYtsVZXP?z?<>ZjU}lJ2&1;bLp~FyWUAvZjo)?YWGey`ns=inuGUkZHL{_@- z@$s`PD2H=fJ3C!pzDO%7GW^AufQL;!k+@@&f{s1f8j3zlN(7N?R~MJc<*pGodjl*= z3oyQnlwX1-ik89wCE(23oE87t>evR}60L5H|Jj^*z8+GY?9mOPcCC-i zVKwSEB;#f;u_VcI~YzakissX#Ob(n2O?=T zNh8K$vHSb`VDpTP9dDKXLQwf+ZEX!$XTV=BC^&K^!Twy!{~gXo3vqt&hdV1WPAk2# z(saI{R>j;zRjpUN5h%T1Ckpi{6a}af+G+GuRVlwKFi*28KuqmxKa?T6d}3-o-Al187w+LZ~I&YPEH=1ryn)4tIipnG#5tIO$JBrY^mInPH$ssbi{K*N~ZU)hrZ zRE3$DzM;xJI{!48r_W=x{Bxs;$Wt74Ry;x8cC%ldMvbhlZnY%B)!DUbDUzcQ*pR&J zw?#y{o0_Ur?m#J=zI}O3Ach_Akv_4^?Ka52Ea)7(An^|#9_uClEnUAR;)sQXg}uE! z$xuqb#XGPAMg`xCEj6E>n)31W^?&&?&)`Rty)R_xIJJm|P2ZxmS#ku}zQ8T1Ijx=Y1l+rr^MK)2KxP6-@L%GW@(cintmQBeq;o&DwS3Fi5psam-?J2Mjy z05pE&m0t)(zeQsxXPtlK_bst~PvzvRtEmwpas<2||{ z)pbx;w_e6N7BC#icvi+Yg zM-eJXq=MLAyGW320JWKiZdLv8B;d(JV}5-8{;lVf{{;mh5AYT_>f{v)4F40}Le4&& z$DaJAY~KF>?KmS0f;x>sU?g zynN9Agk0&TZ)~rr#cMzDQwbyuK5I=4B&H6ST$+3PU!f<6;w+OZ!N|9oYr(~aYyOr5dee$ zF6EZ~CdgokVy?FygEzIw+;Z57Cjki3u3S=3Y*D}z{5H2r<_8rBH~8dfU!5XW8?+f# zgU2bHqXKmbBURHmjX7mC{15gR2QU1O>T@G6vRs2_C%+2PR2`}Oo z&$vyLr$Y+sj1za$a{((9ty~ipdzthuBfRcJlt_i=lBVckBI)I9E;4q*gHbvA;qP8q zL|4+@ZZ?G20-VsD`;LCnxNp$OQBxDM{YsFj8SHfD&`2sQ>7g$J@H)=Z8ebVL*&=nedfh;i5NQ~HQno&1gt9cLQ!g++8# zwcMOl^kj6wjT!EG=0b3N*?N~NhL#T!P5dg_7}WGBQZ_?X;~=!NhOel2_si|t9a{b| zq}Y3{bGy3vOP?lt(MQFS;%k(?YU_5kg$qMHs?#Yf6?x-jBc{3VVFCgz1TY1XQ7kvL z5E=>zxx?jAZma6Qycn#`wUSoi>pD~kk?hThYMwpKZW;4jmAgMX7k8q|K-UB1L`n19 z(E)x!ll5dDtmUaU9y>6}hHwwG{)V6sotd4TpPj|*TmBM}hlq$telXv%FPXjx414If z_F!$(B+nosK-$V`*mjzMTG*|))f${NefmfcUe`f8A_C-nSGFMX8{P9=90ui2#N&TE z|0m4qo207L9Ua1}(DkIcr$zwQCk~L)09j0MW+FTf@Y!p5@oHNLHlmp2`_v)Zb@>H$ zwPKs%#K_q%KB7RgHHN)IY4|R{=6L70%vL&#L zms+Nmq%Da)!j0{I7&JoV=6)VC=+CQK?2}Q+QBM-kLqYLNT=5}Pe75M7GDe!#ykp(m zLcKx77Ntb82s;DBK~r-O+40UiAS4zy9i_fAQekZ{J&*a);kA2=k!S=pJDcWd&>u{M zN5`JTUrc%E37Gy|S5>u=I|j#(lv_=z9tsjt_n=)p+MhpfRt1{E_q{QQ1aL;D;z8jD zAE17aT%k-;S88#(C(?N&M4hikdM5aW`bOQ!R{2DIjKx{Vy<^^qb&hy1%qRtGk&;q~ zf3)=|^|qtsJRC#=QjZ|vk_tex7>^_`+!hUvGYi$i7-z>9L;iaq-nx?VI2%QF}hRbr+sZ;r`T>N#p-7Ha& z#r-4tZ8AB12%vsOQ#CXM1Td?5ceN@a+eRu~<^Vz={t41ZMN}=V9UXBZI1Q>_PCxNZ z4h6}_JZloR4dcAfhn5a|N|&4Mxw|6v$(mD3I8}b>W}BYN=kNO;Fh)u6at}|{I3SXm zPhWfm%A(riGgU{SNwFrTF}uq=zUydD z!iYM1j^*WqzLJn4S1Nu`TVWcms2NsM1&OROk9qlloXHat)6?#AgNPD*p9t_TKx#2h z&h&qfW0YOg|L*X8^VD#=qIF}pT%*a=-E7zI4GxSebm5EP3ut%+ZbhmYumS94U+hf) zGv+Jv5@BaTV9UvI%coK}W%O>3u;5yWnt7s;#B|3TtEtIM)==S`s<@o4QDDo}wJO5r zxS%jzE~NT{eFH(Sn`dKg>K#SUX-^%!E2tAS&w^i4E}L0-O>ik`nz+wxc`z$0Y98u< zn(c#G4qusLVpyC1UBkl8r(RR%5EVoRY?BtQf&C>HPfq1_|~+gxz2$_|j=3Uab|$8(d=5_p;R&IJB+u z!Alh2#zJu>FtxmAPlKJC+rTQRs9&!}peH_FS4!%nT5wZK?gLNBl(BZ-6zkqzCZO#p~n3$-jT+E0iU#w-g1|-sBuXk;>rnId@qA7r}?*-b@g-I53Q~*uO0;uU37K;n{knzcO@GcZ#w= zZfh=X(g@t;9xYGIO zvlft-zh#DW5^Y+r@GWy9W~su}LJXAJA)k`7UZ^2d{kjVsUH1D1)Y_(s=1yY!G-$o& zh+R>{Dj9K6Z(LDl!m!W!1}3g}SM+XP(9b7GM#cjKx4LFov zHD{Nc_E^|s6*mD~q=(0zbj$VD7noFJyJZghsu^^_<$bIjXK-L8phi;SIo5bZ>MCDZ&_wDOkeQ?PZ3IiygI|bkwdt9PHeJ#S=H1#58U{_XF5OI_CQt3R0 zUzqc4XY9c2zrW)(KAU}4MWvU7TP#ozCID@xbS)2R?97|EcOFo`n?c3Ek>8$BVn6am z1oA8(jm9cV9C39VM$vfssg>jngc*7){(XGCSFK^$Vt}r3?zcF zt1GoSd=4(I0dJ%QX{id<)?300+quoSeAoJ~7Yl(BmKVn6x%jkP-`?2C#{rM#Tt9Zi z@~L;)rB=&Hy?tZzz;f^6563Vsw6iVeO#|<+GN;V5MMzw26P%)-y4%a$$rp1~6dA|Q z%%$*W^2S@2?=jR8G z0k+g)KMIAub%+s|tL)jEVM$G4SDTsE^?vqFg~ZU_;e*eci*S!*W?vjV>`hQ<+GIyz z7I#usMmBuUQ)lG4|C@2)&DGl42c{a3$pt*9+gM4pw}?4&B2a0Oia4vi49Bg_@blML zQ`xVCDw%U}09F(_=~0FD^=)tZ>$Env$8HX8Sq<3mhJZh|Hsw;>7`xG7w{K~F)$Pmu1(~KDuooUmjmErloXEWwT4RrI-q^pU-~+{W z`RC8W&!;4tt2$y}VMmsznB0tJx=5zK%VCf`xrkM5m9|CiMZEAI1AbcHAWoq2oqG*(NfAp#rU{0=Izo5~g<2og41h2i= z`1sM(_i<2?{|xy1*)83L1IuXAsyS6?H<7SC-<@61ZK7M@yR|BEQrx62#pbXKxZNDr z)~+BUUFOy^b>jKQhx@l7efK&@L9@g#=v{&*Ap3M)@Y!HpiJMfWzTf%zq0uwX}bhXhD*~35o;Rj!-H}QA?XINqEM18Jp#>|m%U8w4S zN0?5Al&S+~b@g2ugD!xXYD6_L#(avuZ?5B--RQN7aPo7Be8J{|J9&2ZY>oVn+&YM^ zcP-wFX=B@-9{HN95%kt9wA&n@RZ_mb_d{#eCo_8ma`$^jT{yY9kpmG*4i8R1=|T$W zFfogN)e9{|h^zaka+d|oh}29w)T*m1p|&=WQfyCKTzGVh(E~4P8WmKa!g6w;IW7b6 z$>Y)?aF2vwdB7fcIWIW_u=Y$`amV{DS$|~LTk6Ou|JJAqWG!Z13&r_`(ku}7R%cud zepI%TO%0^2SNcFk8eKP1acZinHnS5C^e|Zr7&u}{UDcIQmLa^lHFu*3Q}MAPPS#Xx zHNP)OC3D1XLBm)0_HPp6eU@r-uBOB0rm>oyb;;Q!vS0ZFsn5R}RdCU!V z8#j*IvE4x1ZT5}nXs~B?su}z8#|trR0Gte3#7KJJxBL84g?A4C9d<5sk0L5O#Ds-4 zHKTtKtO{SMD-?|NaF4Z$%#6XHbP+?C2CH(~l{?k8n;#;$SC7O^3eUCB@up#+RY%pb z5+px4)N{@s;-(=Wm#`2YX6M{~!&5TuIU-VlV;ro)eQ8ml0>f7fI7+<{bx4y&JcctXCG!5wn4ejZqM!C^ED?7CthsYtoqnMeQa)fefXhg}_ zHYo>Jrb7)SQ_pKRD4?opEOsU+Lezx$9m?RQJATk-pHeLu(p7NTk0}8|p523t&YAKQ z;1?UE59I}2Y9JYF9WH{HA;n0&C{9aPGx5&fG3=;JSe&1;8$3IeRbRy2| z3_8pT5BP-&j4Kye=w!ONPCQVM;|gnfw>aADcVc>R!!2e@lSXpfSA+VZ`t#%T!Hugv zFE#MyoeI<@)lerVYYL{yF>>(puRvupC;*v~H1OTcX-)Jn3$aajA4_-}Fg-gPgZUK> z(f(T|iekXV5k~;vRiGf2Xe}k75igIdE=X}!u%)YJ&>HxB9qiH&KX)$dG3r%itY?m@ z_k(x&l^>!s9jBbRNPR)K%>=)UZ4nHhap-BfKhxgTf!B;giThr>Q zx~;W^FJ`ES2p+=v8g&9*FZ(gBm(sw~(^GfBB@@X>8CQi~dWyG2iR)Z#sTgR~ojPOy z#YTfk!S563Qz6O>h5?sOx>9i>hDnme4Ck@Y1;l>M!wFRMf+(kzQSv;7^Qh zsf3&g?oPc5^&!O_wvvJ9q$GAeRq?A_9nPE6etS(J2GL~frLcg2VEMgIsy2!{ncq0R zQe&I*jA>>=%Bq&Vb#(dzLitsfkEcGCQpK}!aaA2m!;*zmR|GAb53)do2!NPR^Kq>vHpSL%>59?iWG8T zKTJl;%>>x<%M`h&kl@_V-m}ZteHqHUf?oe3&bV5;@vK+*R5Vd(*3)w|@uJXZI_E~G zh?n#ATiD*-By(J+hOTWye{)>x6TU-itT=!nAz8+S6bP_2S6j`U-iip<@YZew6&FFyWHwk(! z^XJ-@<)y2BU6GNK%Najdv=}I~PNxfQZ0Y7f047-2r|F9h3rp(xHS_h?iyaZcSELl) za7Be?s&&cv-~lEV)Etkx2m!~(8&c;^!Tby4jeswbc&XvgMaP1KeGAp+7TCa$FVa&YN2l;-8?@vRT539Acp% zFjW3&1|o&SeDka)fC-yNQwd&W!w3j0c$iE?28g*yRC`P91KE}X$Nd&c8=gkIE&j-5 zck^!2gNNxe_&%y^t=!M6Th4B0&RVNxMt!y9qm(ao>2Dkx!CjV?ZsUuQg9Hb}<+<2$ zY)d!Vsp4zgNmsYeNbYRNIS3MXB4mgp|5>RN7c2Qp^}vAE+&sdYJaSA-1PcobP0Gr! z*3g|>yyD`UTP!?E;`RM%x_TU?j$zj{RNQy;7J{c|WgOoH1XNTA-qpCtm3GYz*jwBO zrn74Aud?uWR8|4_K~}!4xj73)Unw((^GC)D^9B>{_FoadC&MuTX_@J%bd27=|B;YD z>g7h?r8#fK8}kMw=mVYtlW+Xm{QON|l$2oITe`a^=)#p6%y|WH4>VN$9ew&PfF3&> z22h*lpuc~gx|%ljUwNyyk4%R^$`U6e^w+SMB9ALkP3SQrUcF1#`NGk=TkmPxLKJ8R z9FZRRkBprMm(PL$mjl;#nV%K(*51D*p_1oS+4mMF^utc{+mD>kt>&ZK`TT>P|CxC@ zDh99R?V*6Q!TIPHz*&qRJ#f+4O$ZF|*sQr5e|aTa@7l3%!^-J>Zf~mb_Fta9>xldG z;Y*=cl*JBc8`RLa-MIt09oNDFo}dXS$R8>Z;Q{I#%suF;0654>D`Y)^?ImrSBN%DZ zZ4(%rJ>iv}$WcWlCFS4}(Jt50{PvF@^EjexUlsHO>&CWKcjrOgP`=V!ckh?vWEQ&M zf%v|%o;{4Du5LpnZ6oRKDz?=1{0eofJ!S;}=mkD=+R_FvjJ+H1>aq)n9S|8J%1PceQ;h=2GI>z)A zHRO^A_R1yd$PcR+^vymW`R50*C-zr*>JuD_&f_L8M_Rv z%lx?~@K|G#&16E9hHvV1mgH79M~nWlQ2XBEY#Qhf1t2%Ige<`|BMAum!-LJ_pWD*A z>`~%45)d0mXIy1X1?Gm9*+G3vZ>yx{V1vt5HTH-Wlh!tFHst+uc;V)Ajfcs~01Qc& zDtXNO?tSQ;wWtP^?}pyv$E!6Dr8IJe?3-+^SnfLZ&n_%m!BJEDu4%BC!C_UR?*@`8279v| zObUyuvrlx)Fi>5Z64PB0UG;yKOWNrPxr>asn_<#FK?)mWWt@zmxwU`TEuj*i^JG zAM!s3tIWy$7ycaKtfh*OzNEUkwN>mv7>hqz)AiFAMP;)!C@t!QbQ9>oO1w&Vyk8%n zt`K55Wt3as%9W<$xOFPgXi}oScdP-EX`T7%<$K%UN)hAp%K7?vO9nBq-hADm?s(GIv?7jp+8V)nY?M`y^+@5 z-V<69Jvr4du3upqCwM0)Aj4QH<~p;{!K{^9$!f;9PkV1L*4t*d^y43yULLPfQ$MA| zCML>NxMq|)SGhNHi^VZtv6{Y^iIw*ZxiN@t{cduDUNjREh1+bG7NsHiu?r1~u$)XZ;=>8|%8M zDjxJUC8|n1_>kT=;6XAMCiY#t3*R2!h|BgsVI|UIH-Jy|f}Z*}ShO*=kX~ zKV7AwP70JXpNEK6Sac{mVfd1|@!zg=0V)rpO#IG&|56SLVvzx$`#28jMZHPG?bBZ^(#mnaW)C<|e};KFJZk&Suc;WxF(=Xq$?-deTP&R8p_64*P(E`h zZ54wJkF(M)87MR@C@qtgJnrzT+K6jPk(Kx-=gF$YCPocEe_68>hhE9vNr@<-X&JqZ z;89^+m!(I&DA{D-+4lI**dkXs+6sLWES4@t7#OQ8?`>-E`0n{_RM0Xf4wtDE_)hgl z`AE!qllR{0G(wTmdv~UNEAJ5Tcb1YO7+P9RcOky}Q+8B`CkJ#T?SGG)DJ>VImrn^T z8M|v@PbT?zH8ikh>6KVOvbJ^H4(*Nw*4O*dk3Ml?WbNzB2vGCX0KkjYA5&xRAOFc8 zov@dbl=RS3(rj<*!FQx&R8|u zi4%MX$)ZyO0!?56GJ%A`w~s+Sv!2dNe3sK4UFdbs??+#+zNaM+fFS1s#HF8JzNQs2 zx!1Lt01LUwv7d0I=`miw_JWgW&aUluFo9;93sZ|StR_$xoQ+Yk0a+8g6|PKe-?-WA z2Vnn${E$#-6`3pHCr{+%o@T|xK8xbw@>Pa9jNO=lqUQDtc=oP#m`Z75CcBWr?PV3J zxyY=+L}%Aa!_}EHO57P1P-uD4||`R?JaqPazJ^}tHxL`V?W?5~IAhJ~q|X=pf1 z`hzlt@a9*a2=RQ~_ylYmX^|pVj+>J+UId3=hMdR+S*c-RQ|3%nYAMtM;U`(qJFBeB zjsRwb%rs5t$L9otHn0xPko|(r#xbPTRNz%+xGXKBR@d%M}#1oMHWv2cHH=m&E& z6SCfR7j6L=Hr0mpIL|@~yKBrX>9j$S*(lObNJ!OoixpElVJ3us@3D$8{r>>wb z1pO@Sf%X&hp8Bn+yWLMnPRv#Mx8_*;ZH(*V=hf0x1;##UmCMaADQ*<``0$I7GZx1m zF0XLEep0m9LTM>VtUO_xH7sCco*Hv^O-vxMJ53Ucr05Z%N-H$HNiCGG{QU<9)0jNA z=>Ww%VaOGEV& zL$BCyXU%8d*^T6;^dR|Djlj;>XF>>2$0B3MgIB`F<4Bgh-~P?=5?V2;4d8J_V2W%s ziA{Mw#c6QHRr~Z}&AXO;;823;mkd*iQS?%SI6K3_{wv^H!7XeNp8WPZdD1DQi?phe zDU3Rr|8I1P)U+};?jkKFytKiM?d|PG&ug&QHM(%fhAO7k*VhlvJLlx&@Z(j|toEp( zU}wYJlOz>FC$_a)C57mgJ`i8M)Q#NBJ*y_XSSC>2(%G`LWh1zf?$zNz`byS*2cH@D<@=IWm)A3v_w z%-YZp;k450%Q^~#Wvn(@*$$C-$Y2DRF{F9pId}EPpcujlOa#~u! z>Z&a;0*kcelUd(F@{~3vMn3KYAUrfS5|1DEYiMYQyr0XV$@MA7o zpjr0l2t~LVVA9VI{ebT9Uttx%Vn*s}&@%FOK_|u47M+mYIk4*}=5^wjt{?r{!&Kg= zV3Uvf88_egEqWLeq(BDfq4+AJnAvcfg3c;rA6D-^Q3X+p0Be1mxn|q1OX0}RN6W$1 zxqtuu$K6d8`01$-;3Yf+oN>0A8|<=Cg5oQluOtrr6h(nCmpK~)-&-RlygqOchxZkN zbcUb5-z-$6#N6?jcD{<6nsxqT;y@ldy!!b6l36;|CjsT7lFu@yED}TZ zia~y%97QlAc9qtLD5k^f@8%>QwEHX_oX=6^m6W(%PkX4E2#nqfR3}f4U*i8Z(SkcW zk6GGTU}6yU78d**`gzB;wFIEb*apW7pPw zcN>Ii93EOAAW_2YR818MVm$?Oo%;k&*rS>NAv(OCw*D;&WzS%5{~4r2j8*`XaCqHN zuvz&&Ro{O;gnRzeR^|Ke{!hiIzg~Xy^#k(%Qg`aV@ACa7r5n(ri;4$g@Iz4e|H4i2 zQp)g&=uw9)5<%$5iUtTTHP;aof9u>K5$f>j(>a*0j$h`tNuS9=Lr2eibpPAzAO$BCKynwI%aGCKWNlL!7X@X0OB6f zdo}+r)a#MXmi<&gQBhGz3HSBu(3Gh7kncsW4o$j1N$7j;up+C!V3t-#Z&2heEiVVX zWlyC12;%!WT!D7x{9n-1#qV8xcK-19_XkdB@^`qc>|VH%sKfV>I`%>IsHd4CHxM62 zMn-_B+rtJhMEaiIUJ42d02Y8QQ}*9@XieIqPeMpEtb57)E;{Bt_@dSYo_y|;f z4nO9oVz|OZ0|Nt~A06sJ9bI1tN5kEB#n;ytV9%fs!q4A-M9e{cO;1m!rKN?oW`A;Z zj^1!D;i&iE2gdFvd?XTy*>QFB&Y?7xBcKUHlDggDN2(1RE>+?$juhMXKfo<2DhkcN zAo5jG0%X;3D1QJyik*|w*}(yrrH4$s@0X&+(bh^s+(3QnkW_V@ho}4SiE@mAu?Fao z%{A7)(B$`y_SJ`R2YdUU&z`*)+T7gS-Y$1Yp49Lu;NAb_iXbsmzDXXyBTZ-MDMy4XUF{tU6d(!&X~qn_8;FAwsl-vsWc zgqhiFo^cZ>aryg8ZOwLMAJGjD-_$2@w96KYE^=wJAyxT6uZ=uh5-_$d+D1l`@UC!@ zCYN^M=YL3hQWn`qIxSgQ9$T}pJ7FwCLqp5T%7EUel=;i*Psd1gPxvGyB;WyG1?1*( zFH!$#obIt4&CER*=H=yO<||i#sthd1AAkH&SVSaS54mvcLk?)zh`6ol8XA5K_}9sk zUS3{0pc?c2O6&dpcJX=`C{QvH5)$IzSn5kx0aY$oOaP-F$e}p)yF4%`^78UvAu)rF z+PMoCrh!AdlKAIMKI9y2mZuc3*=y_S&YwGHWMss9bV2@av=ZuPV`JHRbjQAF%K{fq zPENH}6BZ;Eiv_)rVTnKI6gn{-^|vC`H8rKeMuNWw!yt20HW%Xsbk&NAUOtLrw(jsG z3kwTCh-~Hcvn(2hIqvFGNb3Ga)~M9>XzAV4q6@zEZ{*)!y1KZJgvssz+XL3_jT?`l z;nJQ!RV69#{4NDwM8_WQ_5(d3h-^*+N6V# zS<(Nix_FcJe_Cn%&il8Q@%;~dF*zE%zaQn;)0V%_@jrhV_E*QQ@A;RbNBRHcNswcI zKgwUvd+mQI7yti^iL4XNQ>pjZ(DTf^OCx13#atH$)y0Keo^UYR$)l{%kiP!sdU{eO zA|ktN>EE!jq5tLi^XHxN3w*pQneJ)1U&S-r;ek8IoXC8VAXL24_mOLe^VpXpj;mMu zT8D@G`_H34^L2M~gvbepcnU^{ox zbdiDOGF-*?vdCZWdL3Z$5ivP<6F)EDzKy{~@@h%k{LAJay~Z>yxs2jVk_o)`_{%&Y z7wdiS)(FJ`@Qe=l=3l5b?s_tlWwcwbE*pP$W53_|X}gaW?K(Q4^@}|2~JECvjxiP8z%p>byJXRFG9e!;={^fTc;)<>-*z$j_ zd$e`zTBQ{S9$B>)o7jhSdRggLjGMK!LJBQziOR^yTnsgsLo(IF)?Rpclc)ZW)yR3( z?7t?TxjIGsM)57^pBo*!2`7!4VR#d=*q67W(|aw7IV4%mG`dOIo47LCNgkV7XRO+v zpurIB0-9-1l{&e$E443)f;h}`|B%4uid!kgmP75T8X8ad%Ic&Ze_a4oTL8$Qg$>*F z6g;LnDDB41_Ah*L?VvM2_C8uHl_?ajjM7t6Uty;3eNX&)LMa?KnNug~i6EZ6jc1td ziBQJ9e%;P9mHMx-O6tp(^Pkkgw)p zoXVuJem@N)7rdb;Ilo z+&4D+xzPl}*^_p$uEXyFK`f@ybne3s3N$=s8wMP5E@gdvg%SvfiwMspnjBM6!u<5Q7?&q0{ns5 z9?&2*eg0#WefteMNlWmwD|M9m6Hf(iYTinb_q8HS`#zUiQqeL%tO$?{Iyh)!s`7N@ zpU4SF-kR&72A=|$a2h$onuAKwf!f)kh$X5l)4fz&s%cdWk7B7;&mIyqj$Nn*;QHTJ zIEN(ycEdla`g|v@3OLj+(`6uD1?Fzf;4w%Y;0sigj!F*DG)45>$jBW*V*9K z?!oA$_Oe{Pw%}aO+<29Rl}7O1of1Jr1N4O&E^9>>(H8?cB(OR0I94M=^}e`zj>oSH zU*7q$1B=(uk&mSuI=xzMh_SN}v?Eska|yC(XtGfFZQk`{y`om`=M>m%{OS?R<(U%h z_??x}Ujs6+jC;9kKea6Bh446pqn0dbYBQm5cSOb!h_uC7%BSN+M54)v<0wDbDd-#-1zfWYry^bc;cdk9lW0t zT(*rtc8XjV??)#;e%f$?YNbLrxe&LiX>4bg%H*-5{iQ^#z1n-mQ*m8B_*zMq);o*I`)x^E&g@ULX25m6@ z+uPeu20z%6(N#@v==6KMbn`5q9|~vf_$KamPo?_q`)JwQH>dZ`>6BQS31*qE{bpgY zpagvN5cng+u@DOJ>7fbG7k;nUj#CQ6rQa+x?A^uEkewE{_aIE5w_196W{KZ!c;1g3 zoMn*fYUmdJHhO!f#EJMOzSI%v$F{WO$!E@X36EKAZ`GZ;tQ(&jp}&Csj|1iD=Bq~+ zPnnilt6h(5W)})c9xOF`B{f4Jw1KrStd&0@kgY?gZL<@XXvos5PR2|@m3~#D{rp_J z4&PR<-Dxina~ZH3E%sRIWT_?}nB>|v3YI1uU>)G**1m^ zLSQ-*ML}4Y!=ecU*192E|CiXaXRyUSUHw+1wd$>M;H6g*+{8$m4OvV(Vh}TNYZW`z zr64O6CE4ujk-fdQQabR>_IWJ9*Kor-^q3s%V4(}<4^*|sY`VS-qAC8#um=2p8Q#Xu zPIWBp<;%Q=J%t5xHx|9Xk5@q5K?v=8V_uXwn#G@O6SR*pTF6)~%7$T)QM7Sx4=OSe?XtfL8r1tMSntWcm^^N|{%RH2 zM@zTGp_=E~Tb|tSQ@MjFckD;nDOCRW!*;>T$av~3R0r3;cI$baZQozupfR5_8lQ3@ z(}Q#|RVb^MOG!}?!`Iv{yK3(9p-`5)B$5B)b6dI_%+%D>=MT?9a9R=NN?aZub*gFz z+qJ*BgxVG}Gc`wvxNR(#1!WG{YOilCk1IHLAyQgeLrINj$8G#|9~Q4&hT(!WMUb1U zr)i=)b7K}Gll#fwKTP;N4`^w8{MKmE=L@nX)T|-NH+9+C3IUrsOIn}#Ja=v0xtw;* zy9aHCAPR9Ik|=o4G%x)?W#Uf5Sx~sijdB-*-ZRBwJV;C zFBobaJ9By6IWtn;iN6fcm%__#!k{YRe}}?~ppKA+Y6zKYgGJ;_yUmM2n>pHL8eKUz zayq?sFPFRTEjBykLiS{i8;`+~mEQ?OK$U)f`#e`He;M_;a<8=-SUw2ELT}=3?$l4L z0O*;S*J%Ff?d(`owY`?s{S1$SMjw>#195h>tPiM_Y@8@G7Ye5DM=IxxcNPakopx&h z_Wa!L<%`j?^t_XP6sb6Baur*OGIBzaZ088dM=nfj1KF{62JiM|Xw^OW5@kTXaN#oV zXR->H4qurov2n2oi7Uv@ha;x3dV4sz4Fe3O{q5DE555T;8bsIwu`w~U7a2EJPolVW zgvp&OjSA|M1`ki}Fo;?|1>G>PPb7Wx?qbo?mAktnVRDEYHdecRr0?XX6WdEym{*1i zw>L8`(b87g)(v!td0<)>J9`Zq3pMf!oNn8WJCJHk5vm1jiCgcrGZLTFf>Qomj1803 z>g*nzGhFli1yK@e!u;ecGQ|s55S>5=v}GpbP*`zZ$`6!0P;YdJX3@uohdtJ*#VkqrW)8lg8Z* z@&ss?ky5YzI7D!U3pBR%3d$-ps%)!H(4BoUp5o8j&mB7aYvJ1KMWA+V;XZGgeg;sosPeu06F6;wN zVNt0J?U-hpbe8nPGr~h)!1m&n?sDs)Q=HlFKdkz^9#9@Eb&Z-OS@n;06H|S#MBheT=f2jhNIZ zKj3zjmPenwxjI^9fJG%F^dildX1-<(xsh1YJ{e>xds8W@kCnUJ6=r4^xdI}|se;v_ z8yx?{KZ+;9S1J80oe-(o^|#`%iGz<=N_EM4u-bQO z_tUfq742P1_h+oD!%jD+U84g|9~!M_OiE>%^(M^a3jLhDX&L?+xtq=%m67(Oq@cE(x=`VPJ&O-Y6{i&Ymz^f&bGCq3josV}0R zYim>YFiC2*f6Z;$ohQ>qvHFej%6Nhmz>;@}w+9BUygZ{i>>pHBAFH0ZGPo1-Bbk_I zQsz5|RC%9Bsk)svPvkjCxjd4jV@?dw6Dq;jRpP7jy86@gRFL@={V{gc^R(A3o>hX{~Qr(_2|l#q6xaJI!%Z^SEQ)KbJ`|z_JFP zP48bsE9@u_SKuzQDV;g|@TW94F*0?&rkL6jJ4+Xe&riP5^QhQ#K^FR8iMiTnvj;pLLihEqvrL-xEPa+!WSexo%$Gd@yrtsZ zs_YTGao}ADsV-rM5|fMr@5BY@;;NOtRhO2!6QjNMP79AuBV zW+nZ%EwVp-GC`8N6FrQRH!#>tnuBujmR}+|LC`h)rRYl*W*eQ7H02>#@#3{nH}0@G zjYNe8;9+lJQaRp~-QyIC?IP?{OtlZAu5lj=01k{4@Qt z8n~07+k~>N?gM2A)nr;*RFY$|KR1Wl1ux1>F^c^}@K!Tq_w>Br+B`nqnby?WibqgO z1L@E`qYC7$BO;Il;;O$v`@wcxB-bIKB44Vcli_Y*3zIv$oVt2serptfVY*iJwu$T! z8Q5D2q|GHG(=W|)FE2RN8nJh#G7AWl%$I!l*=4helyk!)k1JR*X^nFMv#9@H=gy%A zEjRU>E>qiAaG6%ez2*V_3HB9>kmuX%s!4+6==x74rWJew8Z_X>9sC5z(iA>8mu0lS zL@U*4%{-F4NEV3!o9V}%rW7({=0#uyS}6scOcL=pgpA+Y;p zNOF>TrUs{u=63Wxfwt5QWY)U>U^4S1bby0)jfK^GZW;uo2!pSB#X5;amJzLF`u$}q z@@lUJACXz}P;={K@NHpdLc2$Dp5xAm^OE_2UKUZtUZCbpW!gNfQG4n#3L&P64$%MTo?h5C%D2Q9&=mMWE5_w$^ z7M4FOZ=~$#=_yH43#zSUj(C}A^@CwTqKh>) z7cLQ%<|(W88aZ4nF?>R?aY$y~=g${H>H4dJv>NeI`Wlf^j!rHMM3azMbpIGAvg^g` z>Bjqu?*GyKJGiRcx|Ph#9}Oq=FdVI|oo`<8>uYjczf%T5SxwDv%*vT&!L}hTS?bvt znL!1anX=B#?XTU$xXcm)Aq_)GCwha63v})Zt;RA;ds`zopmvT_lndsLeRf$PaIwT@ z3$8Aif4R!Z#U;9rU!ffL@!9Y6IZ4SN;=9=na%#>(dYbO_sRrI|OX~Bu0+qJ~2$-xc33;dJXHizofV^2~`y?}B>n(DraF&SXl0Lbt`}XLQeCkrzS=J_{W{ z!pMpHXYtpAf0>e^TVZw^T*K>~dMwXje>*~Erw89H>3??2rdYWm7xiraBcx1ns}DXy zpN!TJ*!*0c2ZZ1eN5qj2RIeYA#e9hyQK)JjLWxt`Dbr6AM%pixH>*@$p7LT!9z+G^ z=n1g}Lzp=$Mwn}C1}1x6PA6jbfSI? z47Wd_dZPKgI%5iGPE!)$W2MW({Y21Tr z&A-%TY!|@P*GZ9XjTlx>?eFeW3yxGB4xtyHO`}w>j{{-Z%l&%TrUTZCyXlv1f2!`muQu&9DUewC zi@awDCk11h#|X*SDrsd{kMNi*JyZ>y;x zMU`QN`^jaaqd)G_EkWB5dKCi_*!+Aa$M+07n;)Jj;Fib#jG~urTc4+jkm0xM$by_9z-o~2EV4MEL=H2MrerMV#?xTk2JtSrvEg;u7<#$gc=E@R}z zwlM7FuO%V5b~|u>AMQms`k^HG0Nu)wrgy~hY0Jh_7|3{hZPXSC|i_{e88 zHF@$h!^m0;Yo>>W$K-}Bb5E7kTv%%7tLAov>R%{AmdA@!AfGpJg%x@rd{RyiB*1Jy*<# z*D2E-W}?e(2e6eP)MrLIAEb^J7R5SxTZD_o%C| zG_C7|)1qU4A(Lj+(1x)gTFE1h`V9krWpt{rfYDdGYVTBotVc>8|7e1u+enF1HUKcY z@hxGE2uyjA)tFEZ#stU0|BY+QK3a>SDe6ahgS~2^zW3za|btRx5d&U3(+Xo>Y=sDcsqX znW!9b?$|jh*x)0#Nw+>2FcJH?xVRdF8S^~%m;obDYj*1u_?B$^a72v>ppb*A>8O-o zdOFG6jD7bIdJ!XRXA$JMxIJI0ktOpXjiguq8M5tcZBOA$UJ-K_UvPGE(W+kTIy}a) z^xd_SVhV3-$D4Y5*wG36TSuNj!}xfPUR)%?9V6zl`6AJ-Kv0HI#NJKwC%E9yyef94 z=jZdgF(99M7Yem)0FUw5wHU0}Piz#Fzl5~9onr)NbPV#`zieqrsx(OGa=0Ymo~vh` z2?;nw5%M{|a63mk*+@dcN#iOHj{|swWo6n1227N0B^7Tl3(l{kTcE$t9_FD8)QzYv z=@!Y%7>#Q@eshhFPnhR=x_Sp)gVw05cw!=A#GI7qV}-xqROuMeSI9?W&gx?%hg^Af zUw}VW*T4XksPT+9+kgGmhp4zXdhc6TfBP-nw`v$%X-fPeEo}^-FZ`+s{Hj8fHx>Lg zFTQx`=T%zKpP_Yy`~sIF{yh;A`QpV3Z7rRO@^U&!y)~+8qkqPM5-IB;etZk%Vx#a_ z-qBV?rA6ULsG<{3grIRA$Bwz*{7)#s%&(!Gqcreuw*w6q#$?~L+7r1zJ-PYEV_$wg z#A5w(IqL=m&54P^LzOJtN~My@IUz+xM}M-W-YeJ zgY>N2>VzewGGCtOTClC$RddKYC1hG)RsHpRhhI%Y*bg&-_YvrDm)Q>usb)>g_wnvx zPxII9WBI*ul(J;H(~U#4u)0!i_Shk?}t+N2k0o2mJb7*cf9FhIO;(tnonWgIE~#$O!1 zjm>zl^jDUxf$bItD$MKKJe+9S-fLjvU;NJpWrq)X#^+{c^h5^a%WZWFuHKlWi~9@l zbo2lptc?MV@Ltq_AF8>BK!FG1;S8sDl(I`wP5&dq72%Zfm== zw%To?Q9=uXT7U=$sN}2?1p&z!RC1P_Ss0KcAX%~sMGhi4s|ZNWIZDnshvJ`ArQLh) zbI!i^j=RtJ*RWeDs#dM=tuM^^yzg{xgPM&{j!{WT2?hj!ea@ae3zZH5*qQ`N3cpb~ z;&7EGWI#|^S|XN!y8*8>39Q`1TfpW)4Jp`|n52e{EG(90XJ@~Ehx$gQ)j#N1f{{Q- zEx?|R)i*Z!y?XV^-@l748&*s)P=Jz>5@ILS2c*XGA zXDVf=X=!Qw!_73t-OS6MKYxa6gpx~@pp^uzvC-B`1y@g8~iUnX9j> z3#4Y`54sq77Y8Dw7UFx?mi7-0bRItze&HcQK;Qu-Li0?z;j*5FjgYVzL_g{UnMGJD zC+z0#NsI$Otrq(7Oe`%ep}lR)c0xfVc6*>3JtM=z!!t4#Hs-ovkI=Or>~1t-HDtJr z?^RC_NNC^guWoGx`17PFdkZ~gr_A>eSZ6`zSA-cLovjDo|Y z4md_|jUEb#Ic>~(i#s?V4p3U7=r3&3^A!Hnz`%eBdrOQvQ>)xO;JLE2warjW3-kK* z`0+$EI-=y_k7IN2!nK5J_90T>%9IL-oZcc(uK_n$ShAo2)>g>;>?7Tu;SOf!91#&D zymU=W)N}NutP$}2cNp(XS8ea=;(!MOh59mpcmKm8Z1|6G2f@&D?i>o$nWn6qwxjq5 z!ILbg-T-GKLIWGX%l~l7Pb(^+mk6PTrv?=MP`^`sHmu%oSY)y zeM9I0!i2gV(0AOr)%MrHyYJxKe!-DEK3?Q&eSQ4^0M>PvCwAWRnc#OwfDI=j$DpfY zrlF&QI&S@aeb8E?pzgu#3*#VmFfoaWjg5_tHvQ{pKQ-W<;gD0%?7+?M`=iCXFqDL? zhRDX^%`#wTvH0&LgGz)VFK9m!5Nrkfcfa3*ZWLf?1a34yi;X}vzij}g@BG}{`!X`k zb#=Gwf1<(`N17m^lG|n z>|gH3=J?~%oOgsK)dC<+nV5hr>64D)#Y$UbG0t;t#|A#=qe}N~F|6lavkA?&s=fA>})olaNvIyQn;aMwNo|sUQ z3S&~!g|6qQQN_<0I#E~AQFnr)71vje+l-G_xsSATt1n87g{T3PaBMr_yukfc*#IOvq4kDl3xv5+#R+M#2P;uXQAGYP9797^Kg9r z0HwPam-SUf8b3U*X_C6g`oW5p&^lC^BfZz^;S}clOMZHz8MMiB-|K?6kMttlY~r zR%;%p5(vsw8`L(j+m0!`hT25z@@IGrq-#y|iQyCRLZvkIayOaBa zLsQ{?d|M_yK0m)}Oq5Sg$IKQPnJya8SZF#*CwA8D%SAnbFEE`v;U7&xL?^b#sYSK; z(89nWS0uRjdE8>Lak~H!_mlPOFh)*<*>~1S2qgtWR2L|xi5g%j&XQv)06^I73n6P% zrd$mF2R@O}2v*ejX8Q(fU7A28K)htvH93<_Iu7B^V(ZG-jaO|Ked$T{1>6C!+k;EN)(I zVyN>2b`Z4)t|DNHlGMHA~vOqUCnWFZv9B z5Yoex6B5O2_9XVY`ufL@4-yB$i2vtA_W1X-AA`OKo=|TC=NCEhP=-P>j_S(BiQo$? zXpyEo+TBc-L&gOQk5>Qcj$DMm7Of<3X~7uq!c)R z;e1l(EQJ2b7?r07%QV-jZBLfOe*sT&XXVVd=jlz4rTfI1LlcUK=ml3C+L((3b*a$y zwIgrrdTR~tt~+yFy(%p{+CT3~Kithv< zq*rKZJ6p5YKMx$CrNc%xL#IQ)Pc#6=EvAg?OB3&*G73a_6PvKx&e%rpU(lB1oSl)Rz~%tc5g3FXL?SjCTNvXl3VN7);W_$3&YiM?TWyi z3b#%UiM80M`!1V}vO?HL^yl<9PEja*uFU&{>BxN*cc?;P!#I$<){?y@CaramKi7Uw zsajIl>)ZD+GK^LMBd2oO64b5&3(f7-jgj~yW*Ktc4{Du0qDeGY(M@~SgBdO2l}+=} z7Y{%6W1bewb#FRaDj+AE)hpwF_okPOW4MDOkOeTuRV`?bEd^;b{f2JO;v+Z-nrzTvD-;qPypnd>s#uI@n{PcYDh zxq`1a2}|?2#?u6PvB39+B8ON*O?dhss!5AvI2lx@)xCT3rVyAKZ}CB%ys&)%gNaDL zG$ji@CuCniRCE&RsjKH3rk;ipAZn}KsTCMi*TF+kkn;+cmNJ~3?w>;c9`Bl}$X*)O z`l8_OUBSK8Js20NtE>8Zde|)b4C@kBT%9PEmep~v#`h!-aIU{E)BMEJ&b+;N2NKj> zxt5hEX?pzwc`alMLdW1`JG%2SY7~tmCT=(xzk!65jZIIUE&9=`8OUyCN$uShhS*d5 z{GZ#v3v!wdT|o`I>^$n{U@FIKP9631*D7=n5l&U!qS_c}QP!eTZU_mGPEz0QZ;Nr> z)Gl>kXBL1ZQTd$%o*157*EK)o`T13Z55RGnqjRPdPGFCCEu9 z#_Ei%Q~-18+0mZlOpCHU0n3$p$`%8~L>Hm3!hz0?l8Fg0c(dfOw$nX36PL7vtXSZ!{wnyI)@OurDbDMT8!}k2SP3-d@kk%ntfGDY`P= z)i#!mB5S*TuR+vo!in51*ZwdXqb#PXLi}O3s;!f^NxNLOLVClAJxy_C^_8T!fGtL? zCF4nkQi1v0=fpE6itD90As*66Q8|Ww=WgZXen^&YFR?s`+_d8e&pf7mrqFSA-TIR{l}Tx5e2qWm<-;{@X@bHvGbc9=Lhd=Gzz64Mq@95Z-=6)s^Gv} zspLu{8Js5D#+1*&0kmN>+XR!IEsCg>lPz-Kuxz_;Gv=`O+|66JcEh#FvihNLdNq=| z2cOJ&TS;GY{n<2&T^DR(^?hLi6XF&8a;cp6kkauN&g;4Ui+%Fm~wl!wp zZ@rlqvz}~lL;C!=;H$tDm^A<5Dg$&VK+BL9t}v?^ zg7jiGge_4)uiqqVNCyVTw;m>UPI}~9ATI|XMnn_{U=hrSeEfWscQ-67zb!nNxPEZT z#6ju4=|Ibr)^8{4oSR@Sr&;JQQPj#(akx1LY2exqlR#`AIGLh?LStONkA_;FPb_D9 zWCM&%9W69PpTfDq?O!YVYwMc24&SU<%%^`c7J=egnKBgyLgvG@&kXeSkww8Lx`$7x zs}8?Ge3^gnaL4Q0wS&f3Uc_kNMaozW|8Vl7ve5>7D<+`EP0k)THIjF(WLojC@$v9e zuk9UUB=1}^>o2|2{xZ+hbg^8dHBnOxO!*pT6^9%g3q$pWvJz$ZhrUmzNFtd%S5b%Q z{ey3%ZF$uxCLSOfciU1M_d++VpF7zuv}g#bcb{#vzr>ek++IE(9nIwIU#?`GjA@C4 z_wa?;Pn@)navbWblbBiR$`(;`s-6T~&kJvA8|3PfS$iSfg zEoTfVFx&1o%tjG;`*>eqb%SBmE-kDP9AGYzQe_(qze`U3lPChy)v&u^JQqH~P!8>6 z?CO2RXIxE9(vS!;hIIzyd!cr^%ZA@ps-to(BH=x|)S9t2rG0Q2RU;iuwKMR?0nLfC zltt|V4jngwpcLf=SaEg^7LyC|2<{=Pojxq{Q= z%Qmf?dn*Pxp?pd(JJyO?eY`O{M8={u_`zszvFrq#PEzBxVf{-zFpx7#17w4mo_;4O z4mpqY0fx*ABdf~P9B;Z;bNDsQcr52i*uFB8g$WcSIuvobJ^ctiRCq((-Asj5J_ zM&?CXc)s+7lxQ;r-}HrpTM%rTY4&qdtkB-X{*9vm|+PS+%5c zZVwjQ<>urxHZ<%`mc-!-s<+jTg$OZ=n9D`P#@>9~At^zX2GE%d-%y5xURI@;zr|27 zBQ5R52Gn0!UQO)*MEZSJY;Zi>0iU3nkNF>shs$k~&YERvYz*6fvS__jua;-36#a7& zLxi6l^E>lKacYro4n7Ng_r0~KsPB~W5f+W#719)kLK(YKW%Jz3;&$`W`uj-#Xs&B$ z7_wdtfrwzCG&$#kxEeVd!$B^FtH`7NAsv`o(lu+j&JRy_4pkaJU_>MVmdG!mnKd(K zG;5yy?YEOi2L;^HRsOks6mB&dc zXZv)cfoZ}1B@AeifU2d#I)CojWwcLO2t@5{zBbV2da^7IU1jTG)JNN~VbO43e}5?c z&KSnjF@-z?sCZ51>S9lxAS18y`e9-;e|Ak>s_r5CB>G-^D0>);ra9L25_-zzGg@7piC{-Gq7WCXZ?4gR-Wve6G^m zt%Hr7(`}%p+uvR=*fs11Tp*Uqu{ss_Z{cx}V)^*%!duPz%f;xOp)teM7}b^_`}~p6 z?$#x~-LEM*bkZ?pb_b$h0;SGo(e~ak7)yfE)K^vQPrYha~bVdXOmeZ>;0p7({@+F4^=^tWeNr+nq{CUXR@h(EAmQwR@S z&cgcNqLi)FIVo&c@P}^}dP4;! zj8Tc5X(n5f#=0^&PfWA`q6rq)8#zavCj~{&L1eK@yp|2_;bMdzK75l@iYX(0+c_(o zAU35$!l$tor#M(5=h@{aOvB2$=X2PI>>rKfNRFsz@2!3J_!uXVx4%?}y{K@FNX=C* zaZ2r_uEyCZ!L;{DQL@EzTJt^j`z`GS8AGcFE|qsoMF?Y!L8CeQ!IMiE4BO(7;qK;^D2w~I zG{VKva*c6&c^|_Rg>@C4CJ|qurk1Z2?CtMo(qa?CR*mhflk)Vwrz z4F%NO?%>usx@mtziiq28ADBt4gzeSNIbZ=%awDsfK|N5kI#_RxmwPqWJEFK zHQah$LZ_8w_`-3FX?jNZz5v}JkMUJv3W@?OV78K?WZOij4Z;Bt=(<7%NuY+sY0kjw zEuSmJLaVoiU5vL^LD3FHHoM=w9d5@D>Btl19|5q7^JZeFr*}3^oY!_Jw}4y3=u|vI z2n4MBR2Fu1bV?bsMrL^UwqK&MrbON?~PVW7wUD zmNi&zeEsQd6zZ{#*@1ADxu_UF{{XMuxB6}@aeg=vODXUzxdsS|TDoG!1BU^ zM4xUgu22Ppj;7~l_zC`LJ2#Hb-QWz0js1S<4;oY^!rTA9y@rkIaKml3~)DW{>^ zdt&*1(}_6WZy-Q9EV2;+X=h)7Stq2zK?VkTva-3EV{I(KN*{Ap2fflHwMNttYBFX` z*(28A#1Zn0&7{u|;-Tn5C(9QvCq%lGG6spM9_`D%@^0KS6cHt7Q8K=^tq;C4FTFZ4 zMfH#X;ab)Q+`LvM9>dxIPN5QtKen#(g*W8n~(37Al~_|?Iy$!1>kr-Kuxf+NGOpcq0GmY>j@-ajVOjhsj#L-bo` zUXiEFL`YOViMc_&n8_SQO1cwnL|=}Ky!P7h?KZKp21YRP)g{wZy#j)eUp&ws>##QJ z`$vy#@GdH*KSa(i@jU`{X)4 zvv|vB-aVjv2jQn>=fB0n%)~F>>)+DEVc{Gzbwcowj^;A+3qT{l^bYbsc`%?(WcWc@ zRfYW{kc@{CoWU;=hzSdx$*ZpX?ieLB!y?OLm(SsN{_0gSj;q|X3tFoxu$;Fh&1kA? z%Kn%e&1U{EgIrOPpTzwZJ;IO{Jq1WB$Ydodk@oh=B(-deL3lNo~P?e!-v3z6lbV?s+DIa)KbOG9~U5Q_%2BNYEFb)16+ zpANI1aOnjYZnv7i0(cOlDtH8%8Wj&O7Bn4`c3TqV7ql6-76NH$o(ZyrIZxLd%Wr=Z zRNPqS{t9L7Vi&W)I>G3eOJNgNqBzYG*qF77l|~2-YL?udST;HD@#I^u+O2!-AGNY( zCnXI7=QCpTwmZK0zU9Ja`7u@>3QSZAs#jQ*ZFq_tdEd+OYXdY`r_T01HQeB)wFq;Q zzr>iG10uV(^k>}0lE)Vm6v@MA-A!cPugS((i%Z9GrGo|?6E@z!)i2`SQEXnBAb{C4e$yPJBob9x0_xHZ!Kcdg^G z0@fIyj!|v-W|Gd%yhKKA$#-D33(FNC(i>Y1SF7#Iw4uTsu8?5vOvgJvudj48%$oVL zdvT;tm>s)>-ph2YJib+egfkP#$OJ&%#M49U1^gK}%UZV&9ivzP5>t#QXDQHIOil3Q z0qgEkY!lp(qS;>E#{)7;kZd0jWZDsYh- zKlVEwE{)`+IwpCF5J#4rWZHkwDks;Ds1!2Xqz9XiiW?s-#&+2yISJiYM^fmD`8RYq zS5-jE2Z4%Wmx*Gp!oC8eVH1L`^_zpD z{1EMS-nyjJCv_U7TGg6-ho6=f^w~u{g@{9ZJT_P``*^KuP8& zqr+v_e=s>x zZ>FFS3z EQD)Cn1?t8ToFiHJ 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

      QTxR_!f`hTM`RXhVZq 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%0A`E=BNuhO<8#T^<%6bQu>5|ztZX9*h@US1Zd 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%0AhBv`0cxU#OmJJ?4me$CP@uw<?^rGewT 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_creation_form.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_dataset_creation_form.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1ae10303e805c824b465b4910ba8dbec42f0d5 GIT binary patch literal 142378 zcmeFZcT`i|wmxh{P$Mb|O1A(aLIgy55m0(jlwL$?2%#sTM+8Ad0qMO+lNMSMgg~$% zLg*!dgrd?*LI)uPzWAPUkN(c9_up@fn=#V%-mA?u_nLD)^I7|;p}q#-Fz4Ytd-edd zG}Z6y*>fm=&z=J|%uI|Uca5)0F~0VC-_cOrgY4j*Vf=aEV5;S)r?=-a<2Uo3y%C^2 z2Yy__cylt|jH0pOdk!(aPcq(y*?afwXMFGdaXx$Bzpgx#pS}NIzYo|j&hNQlq^70C z_%^cha&U0-c6RqkW(iba6dVBEHT5yo)0MMxhlttQyFYLc^M!c)D6&VvSB~)$;^1S; z?+bBt^Oo~fJpb1fa*W?U4g=5g|8R_;|3EucHh}D;-t<{(IJx4!az{ zx9!=ZvPVn(#$DgN^TRCZdJ}xjOQXsCxCI(6yy|i6aS**m>!s`Mcx{xEPS`1jr&qdP zp@dJKJ}sbij>fpC`NN0x@y}l#2UY1DIIgm1?;k!&_vBoY-uH(J8Erl!9$?OIxP^~8@#i|3^J@?N zFPg3wRJlZvGKW3?(|DNqRW7wF{&CpM{9mN@s)EY9tL*+T=pUU^1yTPbn;(~zvmDnB zc#+6+;m^$<*Y;-p^W-r5>OC|hfl>2k{@naS!_?El` zX+`(Vpx5q3-8#@}#`fmUHx6d0cR}l4G+V%rw(ppo&$}HGSM}+;sPaj{L!C^Y8a+9! zISt=fidus-KX4=)sr`OD{Nnr8mNTntS9?C#R`rCv4(ob)I}*VIC=yAFY4q=qyq<1d zp=`9xmDimg)&p97?`8f6d0)JxVxckWYQD;Q%}O6A6Z7<{oVc@=rN)ODe?NUKx86rv zNs1}GRwXk>wN@WM|D@WQ7xo=&Pws|u$O@L|ar8FMx9jp#^5=@nI{HmA`Yncgjn2jE z8giE*=@e$z%y8uTIZJkz<%{JPq|1iMw3qF;mchY=59 zgLL9M-Kwv?Pns3?u<}T9o#_|+if)_^uG;lTJ4TAI4iYb1cpLHZnr)@FSGqBM^8^JdZrQcGSrKe7?e+I_r7X->ep5 z99?d?3u6AdN`vX4;(5R+EwpS-2uI$%mJ7?2byu%N*Zajh8!p_JKBpaOw=;K{#GTPT z#8d$JJiraMHnF18M|oh~-w;Wy#9qgb7|xZG$3G`Zl{lA-4m|4snqW{v-b6}I?O5*e zcOyl6dbnO?S*qjY!2<`9*-5wE+YUH>=D%?xDcIuOyLS@7Z5}PDQjv-_5S|8aqFYS@ zYKJ!~prFJGw%BERR?aoAv-Z0h&zS0%G+)xumA|zmfm&Zuxt;81zFyroQxbT)BQ zpJ&y7yH0xL9`Xg8b)nyoguS;xZ{QFyR;RuxD=KsTSj((BbLx$KBs=gWfGbzk31AN< zycWyXNk9d3q)A5yet*Xd8m4*<);m}n=5CjUdwzX?aAsshs+NYFl-P}a{OW6!QER-| z3{wvovw&jHEPEsA)Gjm2$qb27OQ4;p~0mLM<9fxP&ugF@e+vJ5hJyLE-401?-4de zRRHX{r0cXk>3zRMk^@ojsn9uxc8fWnd|9l(v)Yx(-5sYY>}fds{ej=8e4cQ~NwfD3 z_@^M`9v^8{=>1310!qe6Y$^;B%S|aTyLq=j&+`_T()I5o zy4zRPgAnivujfVUf6;?#Y4@_D&pCW*<8x@~ z*&Pp|Q4^n?ZmlKXyJDlCIo+p^N|>YZ1x|NFgU@S3%{wBX`GK`Pcj`@V526F2ORcch z>{qtQoK5Hq$z6;^+5lx0>(8s`uj}^OM#H7Qz5`Z-^Xz5coK2gl3h1W%DNXZwxHZ z+DtqB6*^y)eO{9TrEE>0oJE5bi8{{yV+HLJpOSIi3#YLzWt>E7cI`tcG)m$pK)ybO z6C<(+os(`I-MvytoL!xftmIY2zQ<8X#p`vm-@EJDrwTIVqM(5SI*DzLN9Vb6t*}yH z0)7Fplkg>(xL!xZTDuVIIz~iXly)~BcYk_Lu&W9FzPBY+pg5As5~q~V)pZ=yzZ^_X zs5Pq5PG}_u=r2ey*{RW9x3W{Xqj12Q|rNy?p}Ob=^wXl)n)>PnA!@@81{^$iOO1G4*chU8016Ij?2PLA9B1JE<(Q zuY&iy;2d#o=CWQN)dr2$rm3r|zoGTA0Mf&c&R;mI3-8hg^}G(r7{Wjz6iAg|)ShDh zHSo~bjCO_`=H(oih?)Z@nqXA%+T zde!Y)Gic~Sj2*yWP) zL~iAsJdbnmV7A_U*flj)O`=mKe5xtEi{nK2u~`m?yi>-7$)-IGF!6?riLD18D{4k! zPBsA>v{oCjZgF~PHQH&%ti}f_$2y983i?BT7&2N=>y%9j`?sWhj!yaD5~~Ya8h9t0 zzzaNNG&`Uz<5jaawYPC+M`*-Qu9kO;E3jy)mpU-pQMo2vI8i9u*ecR+XdpnPQ3w;I zMSn4!yzbwqNZPv5Enb`PtwxRn0Z*c@NPs4!eoGw5oosy!f2C`G022}>S4{b;NcJIAUyS~3|y z06LhTSWx1*DAZ}yx?B%?dvRVSz#~t=^xNywt5zQ14RVVpt@D8P&E9-}b1@ToYlFN` z_VmD8ux@12;^ONHQw#L^{7zo|$dmw==G^zU0UH!}`3I?cms=!dRo`icBo6qjOD#K*FDg#3^nLaL^27r{$(4)9C-3RO1nc(^*x`1aI4f5&=SWuKZ zqHcbIBeOCDMQE;0C=W+BSW|5+-pbLsIQEPn7DO33hnXeJy|S&6yj2ZLP<$}Jzmfk) zd3TFEc(>TvXfT8DlvHpJW3(y|1}?tqgVR>>&h$r`?`*=&P!%LAVHP$$&e3sX!zjuT z`V2$u&nB|up_?{W7o48rva^ZWHsNQa0xQVHmNmUeY)pV@9#K;z`%e&p@dW4iG2Si> z3BP*vuiQGJot3#Gu$tbtYYn%@#%uf#0|D|H>#h=x9}PF^Gbrhu((RGVoSI-}$`GQi z^lrUDryLb^P>gJ~fX2$)`IHw#`K7lvb#*;>}R z=nA_-MsEB;vwfgVyLUDiXdMaMZTP0MBuOsjYnQGtlR=~#@`1tGx1)UwAs%;z;ug^$aE3Y50TD^Ht)MPnrLqV|j@4bIt z3w{g3Jnk3Fy6d(I`)5Rj9!+!~ygB}MFn%Fj)_p+stTni1d&D&^5ZZg4w%G!Z&vPX# z+7lJ?rQ3MDtm_h$FG^1|#%l;po%yjS=1s&d!!=K$*OMzYaS^1J!D=T+O>3Oc^Qz%- z7n54QYk`@E-T;`O zo2vA|HG}$wt|m{W%IiN>1{JzheILz#71GEwcmCA;jJG1&Z zg#~WUa8NU)-Wn?dHqdAqHdm>_>M7U*X3VdSUcBa2))Xih5oReq_wXsfC^2XHn%mLt@IF%M%7r>1@E6PIl~K@oi?yk#*^>77KE^KVm6*=a9)HS9k6Aedu66KnNe z9Bc)-+t~f;Mk9$=)~hd=m~=oX^E(a#MQ#{`3c^1VAmliDT8;b!@b9C|J6ik~7gej8 z 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%0A66GmLlCtoybEq#E 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 z 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 literal 0 HcmV?d00001 diff --git a/documentation/userguide/docs/pictures/redshift_datasets/redshift_schema.png b/documentation/userguide/docs/pictures/redshift_datasets/redshift_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..1797413ed25b8d3f1f4017bc22783d71514f83f7 GIT binary patch literal 52527 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