From 9ff689ca63a7ba3b0fd42f61a3d5e7536307f782 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:35:01 +0000 Subject: [PATCH 1/2] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.6.0 → v5.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.6.0...v5.0.0) - https://github.com/charliermarsh/ruff-pre-commit → https://github.com/astral-sh/ruff-pre-commit - [github.com/astral-sh/ruff-pre-commit: v0.4.8 → v0.9.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.8...v0.9.1) - https://github.com/charliermarsh/ruff-pre-commit → https://github.com/astral-sh/ruff-pre-commit - [github.com/astral-sh/ruff-pre-commit: v0.4.8 → v0.9.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.8...v0.9.1) - [github.com/kynan/nbstripout: 0.7.1 → 0.8.1](https://github.com/kynan/nbstripout/compare/0.7.1...0.8.1) - https://github.com/charliermarsh/ruff-pre-commit → https://github.com/astral-sh/ruff-pre-commit - [github.com/astral-sh/ruff-pre-commit: v0.4.8 → v0.9.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.8...v0.9.1) - [github.com/gruntwork-io/pre-commit: v0.1.24 → v0.1.25](https://github.com/gruntwork-io/pre-commit/compare/v0.1.24...v0.1.25) --- .pre-commit-config.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb34c1d8ea..9ff92458b0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-yaml exclude: argilla/mkdocs.yml|examples/deployments/k8s @@ -8,16 +8,16 @@ repos: exclude_types: [text, jupyter] - id: trailing-whitespace - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.4.8 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.9.1 hooks: - id: ruff-format ############################################################################## # argilla specific hooks ############################################################################## - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.4.8 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.9.1 hooks: - id: ruff files: 'argilla/src/.*\.py$' @@ -35,7 +35,7 @@ repos: - argilla/LICENSE_HEADER - --fuzzy-match-generates-todo - repo: https://github.com/kynan/nbstripout - rev: 0.7.1 + rev: 0.8.1 hooks: - id: nbstripout files: '^argilla/.*\.ipynb$' @@ -52,8 +52,8 @@ repos: ############################################################################## # argilla-server specific hooks ############################################################################## - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.4.8 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.9.1 hooks: - id: ruff files: 'argila-server/src/.*\.py$' @@ -75,7 +75,7 @@ repos: # Helm lint hook ############################################################################## - repo: https://github.com/gruntwork-io/pre-commit - rev: v0.1.24 + rev: v0.1.25 hooks: - id: helmlint name: Helm lint From b39b9bfac944424c23b6cbc0acae2ff41526acfc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:35:27 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- argilla-server/src/argilla_server/_app.py | 2 +- .../oauth2/providers/__init__.py | 2 +- argilla-v1/src/argilla_v1/client/datasets.py | 2 +- .../client/feedback/dataset/helpers.py | 4 +- .../client/feedback/dataset/local/dataset.py | 5 +- .../client/feedback/dataset/local/mixins.py | 2 +- .../huggingface/model_card/model_card.py | 2 +- argilla-v1/src/argilla_v1/client/models.py | 2 +- .../argilla_v1/client/sdk/commons/errors.py | 4 +- .../src/argilla_v1/client/workspaces.py | 6 +- .../text_classification/label_models.py | 3 +- .../argilla_v1/training/autotrain_advanced.py | 2 +- .../tests/integration/client/test_models.py | 6 +- .../tests/unit/client/sdk/models/conftest.py | 2 +- .../integrations/llamaindex_rag_github.ipynb | 7 +- argilla/docs/scripts/gen_popular_issues.py | 6 +- .../docs/tutorials/image_classification.ipynb | 53 +- argilla/docs/tutorials/image_preference.ipynb | 34 +- .../docs/tutorials/token_classification.ipynb | 8 +- argilla/src/argilla/records/_io/_datasets.py | 3 +- .../getting_started/quickstart_workflow.ipynb | 45 +- .../quickstart_workflow_feedback.ipynb | 22 +- .../add_text_descriptives_as_metadata.ipynb | 33 +- .../weak_supervision.ipynb | 67 +- ...ploying-text2text-dvc-explainability.ipynb | 28 +- ...tclassification-colab-activelearning.ipynb | 85 +- ...ying-texttokenclassification-fastapi.ipynb | 40 +- .../notebooks/labelling-spacy-llm.ipynb | 72 +- ...t2text-disaggregators-explainability.ipynb | 18 +- ...ling-textclassification-gpt3-fewshot.ipynb | 39 +- ...ation-sentence-transformers-semantic.ipynb | 30 +- ...cation-sentencetransformers-semantic.ipynb | 20609 ++++++++-------- ...sentencetransformers-weaksupervision.ipynb | 52 +- ...g-textclassification-setfit-zeroshot.ipynb | 57 +- ...assification-sklearn-weaksupervision.ipynb | 38 +- ...assification-snorkel-weaksupervision.ipynb | 22 +- ...labelling-tokenclassification-basics.ipynb | 36 +- ...ing-tokenclassification-deletelabels.ipynb | 29 +- ...ng-tokenclassification-flair-fewshot.ipynb | 18 +- ...lassification-skweak-weaksupervision.ipynb | 28 +- ...tokenclassification-spacy-pretrained.ipynb | 23 +- ...assification-cleanlab-explainability.ipynb | 25 +- ...classification-setfit-explainability.ipynb | 4721 ++-- ...transformersinterpret-explainability.ipynb | 42 +- ...fication-transformers-explainability.ipynb | 26 +- .../ner_fine_tune_bert_beginners.ipynb | 9992 ++++---- ...-classyclassification-activelearning.ipynb | 27 +- ...tclassification-modal-activelearning.ipynb | 74 +- ...ng-textclassification-setfit-fewshot.ipynb | 19 +- ...-textclassification-setfit-sentiment.ipynb | 17 +- ...ssification-smalltext-activelearning.ipynb | 42 +- ...assification-transformers-pretrained.ipynb | 42 +- ...training-textgeneration-unstructured.ipynb | 60 +- ...e_transformers_embeddings_as_vectors.ipynb | 33 +- .../add_text_descriptives_as_metadata.ipynb | 33 +- .../integrations/llama_index.ipynb | 13 +- .../monitor_endpoints with_fastapi.ipynb | 33 +- .../process_documents_with_unstructured.ipynb | 50 +- ...curating-feedback-instructiondataset.ipynb | 99 +- .../end2end_examples/add-metadata-003.ipynb | 51 +- .../add-suggestions-and-responses-005.ipynb | 36 +- .../end2end_examples/add-vectors-004.ipynb | 36 +- .../end2end_examples/assign-records-002.ipynb | 70 +- .../configure-users-and-workspaces-000.ipynb | 18 +- .../end2end_examples/create-dataset-001.ipynb | 2295 +- .../filter-and-query-008.ipynb | 71 +- .../end2end_examples/train-model-006.ipynb | 23 +- .../end2end_examples/use-metrics-007.ipynb | 27 +- .../fine-tuning-openai-rag-feedback.ipynb | 1624 +- .../fine-tuning-sentencesimilarity-rag.ipynb | 101 +- ...belling-feedback-langchain-syntethic.ipynb | 5625 ++--- .../feedback/labelling-feedback-setfit.ipynb | 5860 +++-- .../feedback/labelling-spacy-llm.ipynb | 72 +- .../feedback/making-most-of-markdown.ipynb | 200 +- .../feedback/monitoring-bias-ethics-dpo.ipynb | 178 +- .../monitoring-data-model-drift.ipynb | 191 +- .../feedback/train-reward-model-rlhf.ipynb | 6048 ++--- .../feedback/trainer-feedback-setfit.ipynb | 44 +- .../feedback/training-fastfit-agreement.ipynb | 86 +- .../feedback/training-llm-mistral-sft.ipynb | 94 +- .../feedback/training-qa-transformers.ipynb | 57 +- .../feedback/training-setfit-absa.ipynb | 139 +- .../few_shot_learning_with_setfit.ipynb | 19 +- ..._classification_with_active_learning.ipynb | 69 +- .../label_data_with_semantic_search.ipynb | 30 +- .../label_errors_cleanlab.ipynb | 25 +- .../other_datasets/weak_supervision_ner.ipynb | 28 +- ..._text_classification_semantic_search.ipynb | 53 +- docs/template.ipynb | 11 +- examples/custom_field/custom_field.ipynb | 16 +- 90 files changed, 30310 insertions(+), 29781 deletions(-) diff --git a/argilla-server/src/argilla_server/_app.py b/argilla-server/src/argilla_server/_app.py index 3c134471b9..956f288309 100644 --- a/argilla-server/src/argilla_server/_app.py +++ b/argilla-server/src/argilla_server/_app.py @@ -298,7 +298,7 @@ def _show_telemetry_warning(): " https://docs.argilla.io/latest/reference/argilla-server/telemetry/\n\n" "Telemetry is currently enabled. If you want to disable it, you can configure\n" "the environment variable before relaunching the server:\n\n" - f'{"#set HF_HUB_DISABLE_TELEMETRY=1" if os.name == "nt" else "$>export HF_HUB_DISABLE_TELEMETRY=1"}' + f"{'#set HF_HUB_DISABLE_TELEMETRY=1' if os.name == 'nt' else '$>export HF_HUB_DISABLE_TELEMETRY=1'}" ) _LOGGER.warning(message) diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/providers/__init__.py b/argilla-server/src/argilla_server/security/authentication/oauth2/providers/__init__.py index 0950bc30d2..c611938db7 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/providers/__init__.py +++ b/argilla-server/src/argilla_server/security/authentication/oauth2/providers/__init__.py @@ -38,5 +38,5 @@ def get_provider_by_name(name: str) -> Type["OAuth2ClientProvider"]: return provider_class else: raise NotFoundError( - f"Unsupported provider {name}. " f"Supported providers are {_ALL_SUPPORTED_OAUTH2_PROVIDERS.keys()}" + f"Unsupported provider {name}. Supported providers are {_ALL_SUPPORTED_OAUTH2_PROVIDERS.keys()}" ) diff --git a/argilla-v1/src/argilla_v1/client/datasets.py b/argilla-v1/src/argilla_v1/client/datasets.py index 53c758a6b2..f12fbf69f4 100644 --- a/argilla-v1/src/argilla_v1/client/datasets.py +++ b/argilla-v1/src/argilla_v1/client/datasets.py @@ -1156,7 +1156,7 @@ def _prepare_for_training_with_spacy(self, nlp: "spacy.Language", records: List[ raise ValueError( "The following annotation does not align with the tokens" " produced by the provided spacy language model:" - f" {(anno[0], record.text[anno[1]:anno[2]])}, {list(doc)}" + f" {(anno[0], record.text[anno[1] : anno[2]])}, {list(doc)}" ) else: entities.append(span) diff --git a/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py index 4580bb3ccc..782cf3783c 100644 --- a/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/helpers.py @@ -169,7 +169,7 @@ def normalize_records( new_records.append(record) else: raise ValueError( - "Expected `records` to be a list of `dict` or `FeedbackRecord`," f" got type `{type(record)}` instead." + f"Expected `records` to be a list of `dict` or `FeedbackRecord`, got type `{type(record)}` instead." ) return new_records @@ -384,7 +384,7 @@ def _validate_record_metadata(record: FeedbackRecord, metadata_schema: typing.Ty metadata_schema.parse_obj(record.metadata) except ValidationError as e: raise ValueError( - f"`FeedbackRecord.metadata` {record.metadata} does not match the expected schema," f" with exception: {e}" + f"`FeedbackRecord.metadata` {record.metadata} does not match the expected schema, with exception: {e}" ) from e diff --git a/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py index a3e4c687b1..f52e5627ec 100644 --- a/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/dataset.py @@ -230,7 +230,7 @@ def __getitem__(self, key: Union[slice, int]) -> Union["FeedbackRecord", List["F """ if len(self._records) < 1: raise RuntimeError( - "In order to get items from `FeedbackDataset` you need to add them first" " with `add_records`." + "In order to get items from `FeedbackDataset` you need to add them first with `add_records`." ) if isinstance(key, int) and len(self._records) < key: raise IndexError(f"This dataset contains {len(self)} records, so index {key} is out of range.") @@ -331,8 +331,7 @@ def delete_vectors_settings( if not self.vectors_settings: raise ValueError( - "The current `FeedbackDataset` does not contain any `vectors_settings` defined, so" - " none can be deleted." + "The current `FeedbackDataset` does not contain any `vectors_settings` defined, so none can be deleted." ) if not all(vector_setting in self._vectors_settings.keys() for vector_setting in vectors_settings): diff --git a/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py index 16be41313d..b351896dc6 100644 --- a/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py +++ b/argilla-v1/src/argilla_v1/client/feedback/dataset/local/mixins.py @@ -89,7 +89,7 @@ def __delete_dataset(client: "httpx.Client", id: UUID) -> None: datasets_api_v1.delete_dataset(client=client, id=id) except Exception as e: raise Exception( - f"Failed while deleting the `FeedbackDataset` with ID '{id}' from Argilla with" f" exception: {e}" + f"Failed while deleting the `FeedbackDataset` with ID '{id}' from Argilla with exception: {e}" ) from e @staticmethod diff --git a/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py index 48a26bbc78..db719d46ef 100644 --- a/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py +++ b/argilla-v1/src/argilla_v1/client/feedback/integrations/huggingface/model_card/model_card.py @@ -422,7 +422,7 @@ def generate(model_id: str, instruction: str, context: str = "") -> str: ) return tokenizer.decode(outputs[0]) - generate("{self.output_dir.replace('"', '')}", "Is a toad a frog?")""" + generate("{self.output_dir.replace('"', "")}", "Is a toad a frog?")""" ) elif self.task_type == "for_reward_modeling": return predict_call + dedent( diff --git a/argilla-v1/src/argilla_v1/client/models.py b/argilla-v1/src/argilla_v1/client/models.py index 242434784d..7d4cc6e600 100644 --- a/argilla-v1/src/argilla_v1/client/models.py +++ b/argilla-v1/src/argilla_v1/client/models.py @@ -424,7 +424,7 @@ def __init__( raise AssertionError("Missing fields: At least one of `text` or `tokens` argument must be provided!") if (data.get("annotation") or data.get("prediction")) and text is None: - raise AssertionError("Missing field `text`: " "char level spans must be provided with a raw text sentence") + raise AssertionError("Missing field `text`: char level spans must be provided with a raw text sentence") if text is None: text = " ".join(tokens) diff --git a/argilla-v1/src/argilla_v1/client/sdk/commons/errors.py b/argilla-v1/src/argilla_v1/client/sdk/commons/errors.py index f901fcce1d..359ddc79f3 100644 --- a/argilla-v1/src/argilla_v1/client/sdk/commons/errors.py +++ b/argilla-v1/src/argilla_v1/client/sdk/commons/errors.py @@ -26,7 +26,7 @@ def __init__(self, message: str, response: Any): self.response = response def __str__(self): - return f"\nUnexpected response: {self.message}" "\nResponse content:" f"\n{self.response}" + return f"\nUnexpected response: {self.message}\nResponse content:\n{self.response}" class InputValueError(BaseClientError): @@ -52,7 +52,7 @@ def __init__(self, **ctx): self.ctx = ctx def __str__(self): - return f"Argilla server returned an error with http status: {self.HTTP_STATUS}. " f"Error details: {self.ctx!r}" + return f"Argilla server returned an error with http status: {self.HTTP_STATUS}. Error details: {self.ctx!r}" class BadRequestApiError(ArApiResponseError): diff --git a/argilla-v1/src/argilla_v1/client/workspaces.py b/argilla-v1/src/argilla_v1/client/workspaces.py index 119097452d..35d297528c 100644 --- a/argilla-v1/src/argilla_v1/client/workspaces.py +++ b/argilla-v1/src/argilla_v1/client/workspaces.py @@ -120,8 +120,7 @@ def users(self) -> List["UserModel"]: def __repr__(self) -> str: return ( - f"Workspace(id={self.id}, name={self.name}," - f" inserted_at={self.inserted_at}, updated_at={self.updated_at})" + f"Workspace(id={self.id}, name={self.name}, inserted_at={self.inserted_at}, updated_at={self.updated_at})" ) @allowed_for_roles(roles=[UserRole.owner]) @@ -330,8 +329,7 @@ def from_id(cls, id: UUID) -> "Workspace": ) from e except ValidationApiError as e: raise ValueError( - "The ID you provided is not a valid UUID, so please make sure that the" - " ID you provided is a valid one." + "The ID you provided is not a valid UUID, so please make sure that the ID you provided is a valid one." ) from e except BaseClientError as e: raise RuntimeError(f"Error while retrieving workspace with id=`{id}` from Argilla.") from e diff --git a/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py b/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py index 57ecb0cde8..a1ef315616 100644 --- a/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py +++ b/argilla-v1/src/argilla_v1/labeling/text_classification/label_models.py @@ -240,8 +240,7 @@ def _make_single_label_records( pred_for_rec = [(self._weak_labels.labels[idx], prob[idx]) for idx in np.argsort(prob)[::-1]] else: raise NotImplementedError( - f"The tie break policy '{tie_break_policy.value}' is not" - f" implemented for {self.__class__.__name__}!" + f"The tie break policy '{tie_break_policy.value}' is not implemented for {self.__class__.__name__}!" ) records_with_prediction.append(rec.copy(deep=True)) diff --git a/argilla-v1/src/argilla_v1/training/autotrain_advanced.py b/argilla-v1/src/argilla_v1/training/autotrain_advanced.py index b291ead6c5..04edde074e 100644 --- a/argilla-v1/src/argilla_v1/training/autotrain_advanced.py +++ b/argilla-v1/src/argilla_v1/training/autotrain_advanced.py @@ -211,7 +211,7 @@ def __repr__(self): formatted_string.append(arg_dict_key) for idx, item in enumerate(arg_dict_single): for key, val in item.items(): - formatted_string.append(f"\tjob{idx+1}-{key}: {val}") + formatted_string.append(f"\tjob{idx + 1}-{key}: {val}") return "\n".join(formatted_string) def train(self, output_dir: str): diff --git a/argilla-v1/tests/integration/client/test_models.py b/argilla-v1/tests/integration/client/test_models.py index 59451c0940..9d3a595732 100644 --- a/argilla-v1/tests/integration/client/test_models.py +++ b/argilla-v1/tests/integration/client/test_models.py @@ -130,7 +130,7 @@ def test_token_classification_with_tokens_and_tags(tokens, tags, annotation): def test_token_classification_validations(): with pytest.raises( AssertionError, - match=("Missing fields: " "At least one of `text` or `tokens` argument must be provided!"), + match=("Missing fields: At least one of `text` or `tokens` argument must be provided!"), ): TokenClassificationRecord() @@ -138,13 +138,13 @@ def test_token_classification_validations(): annotation = [("test", 0, 4)] with pytest.raises( AssertionError, - match=("Missing field `text`: " "char level spans must be provided with a raw text sentence"), + match=("Missing field `text`: char level spans must be provided with a raw text sentence"), ): TokenClassificationRecord(tokens=tokens, annotation=annotation) with pytest.raises( AssertionError, - match=("Missing field `text`: " "char level spans must be provided with a raw text sentence"), + match=("Missing field `text`: char level spans must be provided with a raw text sentence"), ): TokenClassificationRecord(tokens=tokens, prediction=annotation) diff --git a/argilla-v1/tests/unit/client/sdk/models/conftest.py b/argilla-v1/tests/unit/client/sdk/models/conftest.py index 560b78c42c..b1ec76d6b1 100644 --- a/argilla-v1/tests/unit/client/sdk/models/conftest.py +++ b/argilla-v1/tests/unit/client/sdk/models/conftest.py @@ -45,7 +45,7 @@ def check_schema_props(client_props: dict, server_props: dict) -> bool: continue if name not in server_props: LOGGER.warning( - f"Client property {name} not found in server properties. " "Make sure your API compatibility" + f"Client property {name} not found in server properties. Make sure your API compatibility" ) different_props.append(name) continue diff --git a/argilla/docs/community/integrations/llamaindex_rag_github.ipynb b/argilla/docs/community/integrations/llamaindex_rag_github.ipynb index a19627f19a..8fd3c5c521 100644 --- a/argilla/docs/community/integrations/llamaindex_rag_github.ipynb +++ b/argilla/docs/community/integrations/llamaindex_rag_github.ipynb @@ -202,8 +202,7 @@ " \".svg\",\n", " \".ico\",\n", " \".json\",\n", - " \".ipynb\", # Erase this line if you want to include notebooks\n", - "\n", + " \".ipynb\", # Erase this line if you want to include notebooks\n", " ],\n", " GithubRepositoryReader.FilterType.EXCLUDE,\n", " ),\n", @@ -231,9 +230,7 @@ "outputs": [], "source": [ "# LLM settings\n", - "Settings.llm = OpenAI(\n", - " model=\"gpt-3.5-turbo\", temperature=0.8, openai_api_key=openai_api_key\n", - ")\n", + "Settings.llm = OpenAI(model=\"gpt-3.5-turbo\", temperature=0.8, openai_api_key=openai_api_key)\n", "\n", "# Load the data and create the index\n", "index = VectorStoreIndex.from_documents(documents)\n", diff --git a/argilla/docs/scripts/gen_popular_issues.py b/argilla/docs/scripts/gen_popular_issues.py index d74bdeac1c..f6574fff11 100644 --- a/argilla/docs/scripts/gen_popular_issues.py +++ b/argilla/docs/scripts/gen_popular_issues.py @@ -116,21 +116,21 @@ def fetch_data_from_github(repository, auth_token): f.write(" | Rank | Issue | Reactions | Comments |\n") f.write(" |------|-------|:---------:|:--------:|\n") for ix, row in engagement_df.iterrows(): - f.write(f" | {ix+1} | [{row['Issue']}]({row['URL']}) | 👍 {row['Reactions']} | 💬 {row['Comments']} |\n") + f.write(f" | {ix + 1} | [{row['Issue']}]({row['URL']}) | 👍 {row['Reactions']} | 💬 {row['Comments']} |\n") f.write('\n=== "Latest issues open by the community"\n\n') f.write(" | Rank | Issue | Author |\n") f.write(" |------|-------|:------:|\n") for ix, row in community_issues_df.iterrows(): state = "🟢" if row["State"] == "open" else "🟣" - f.write(f" | {ix+1} | {state} [{row['Issue']}]({row['URL']}) | by **{row['Author']}** |\n") + f.write(f" | {ix + 1} | {state} [{row['Issue']}]({row['URL']}) | by **{row['Author']}** |\n") f.write('\n=== "Planned issues for upcoming releases"\n\n') f.write(" | Rank | Issue | Milestone |\n") f.write(" |------|-------|:------:|\n") for ix, row in planned_issues_df.iterrows(): state = "🟢" if row["State"] == "open" else "🟣" - f.write(f" | {ix+1} | {state} [{row['Issue']}]({row['URL']}) | **{row['Milestone']}** |\n") + f.write(f" | {ix + 1} | {state} [{row['Issue']}]({row['URL']}) | **{row['Milestone']}** |\n") today = datetime.today().date() f.write(f"\nLast update: {today}\n") diff --git a/argilla/docs/tutorials/image_classification.ipynb b/argilla/docs/tutorials/image_classification.ipynb index d49b3fcf4c..46cdd909b0 100644 --- a/argilla/docs/tutorials/image_classification.ipynb +++ b/argilla/docs/tutorials/image_classification.ipynb @@ -93,13 +93,7 @@ "from PIL import Image\n", "\n", "from datasets import load_dataset, Dataset, load_metric\n", - "from transformers import (\n", - " AutoImageProcessor,\n", - " AutoModelForImageClassification,\n", - " pipeline,\n", - " Trainer,\n", - " TrainingArguments\n", - ")\n", + "from transformers import AutoImageProcessor, AutoModelForImageClassification, pipeline, Trainer, TrainingArguments\n", "\n", "import argilla as rg" ] @@ -182,7 +176,7 @@ " title=\"What digit do you see on the image?\",\n", " labels=labels,\n", " )\n", - " ]\n", + " ],\n", ")" ] }, @@ -246,7 +240,7 @@ "n_rows = 100\n", "\n", "hf_dataset = load_dataset(\"ylecun/mnist\", streaming=True)\n", - "dataset_rows = [row for _,row in zip(range(n_rows), hf_dataset[\"train\"])]\n", + "dataset_rows = [row for _, row in zip(range(n_rows), hf_dataset[\"train\"])]\n", "hf_dataset = Dataset.from_list(dataset_rows)\n", "\n", "hf_dataset" @@ -525,7 +519,8 @@ ], "source": [ "def greyscale_to_rgb(img) -> Image:\n", - " return Image.merge('RGB', (img, img, img))\n", + " return Image.merge(\"RGB\", (img, img, img))\n", + "\n", "\n", "submitted_image_rgb = [\n", " {\n", @@ -556,7 +551,7 @@ "\n", "submitted_image_rgb_processed = [\n", " {\n", - " \"pixel_values\": processor(sample[\"image\"], return_tensors='pt')[\"pixel_values\"],\n", + " \"pixel_values\": processor(sample[\"image\"], return_tensors=\"pt\")[\"pixel_values\"],\n", " \"label\": sample[\"label\"],\n", " }\n", " for sample in submitted_image_rgb\n", @@ -624,8 +619,8 @@ "source": [ "def collate_fn(batch):\n", " return {\n", - " 'pixel_values': torch.stack([torch.tensor(x['pixel_values'][0]) for x in batch]),\n", - " 'labels': torch.tensor([int(x['label']) for x in batch])\n", + " \"pixel_values\": torch.stack([torch.tensor(x[\"pixel_values\"][0]) for x in batch]),\n", + " \"labels\": torch.tensor([int(x[\"label\"]) for x in batch]),\n", " }" ] }, @@ -643,6 +638,8 @@ "outputs": [], "source": [ "metric = load_metric(\"accuracy\", trust_remote_code=True)\n", + "\n", + "\n", "def compute_metrics(p):\n", " return metric.compute(predictions=np.argmax(p.predictions, axis=1), references=p.label_ids)" ] @@ -664,7 +661,7 @@ " checkpoint,\n", " num_labels=len(labels),\n", " id2label={int(i): int(c) for i, c in enumerate(labels)},\n", - " label2id={int(c): int(i) for i, c in enumerate(labels)}\n", + " label2id={int(c): int(i) for i, c in enumerate(labels)},\n", ")\n", "model.config" ] @@ -698,19 +695,19 @@ ], "source": [ "training_args = TrainingArguments(\n", - " output_dir=\"./image-classifier\",\n", - " per_device_train_batch_size=16,\n", - " eval_strategy=\"steps\",\n", - " num_train_epochs=1,\n", - " fp16=False, # True if you have a GPU with mixed precision support\n", - " save_steps=100,\n", - " eval_steps=100,\n", - " logging_steps=10,\n", - " learning_rate=2e-4,\n", - " save_total_limit=2,\n", - " remove_unused_columns=True,\n", - " push_to_hub=False,\n", - " load_best_model_at_end=True,\n", + " output_dir=\"./image-classifier\",\n", + " per_device_train_batch_size=16,\n", + " eval_strategy=\"steps\",\n", + " num_train_epochs=1,\n", + " fp16=False, # True if you have a GPU with mixed precision support\n", + " save_steps=100,\n", + " eval_steps=100,\n", + " logging_steps=10,\n", + " learning_rate=2e-4,\n", + " save_total_limit=2,\n", + " remove_unused_columns=True,\n", + " push_to_hub=False,\n", + " load_best_model_at_end=True,\n", ")\n", "\n", "trainer = Trainer(\n", @@ -745,12 +742,14 @@ "source": [ "pipe = pipeline(\"image-classification\", model=model, image_processor=processor)\n", "\n", + "\n", "def run_inference(batch):\n", " predictions = pipe(batch[\"image\"])\n", " batch[\"image_label\"] = [prediction[0][\"label\"] for prediction in predictions]\n", " batch[\"score\"] = [prediction[0][\"score\"] for prediction in predictions]\n", " return batch\n", "\n", + "\n", "hf_dataset = hf_dataset.map(run_inference, batched=True)" ] }, diff --git a/argilla/docs/tutorials/image_preference.ipynb b/argilla/docs/tutorials/image_preference.ipynb index 1f3aa9c43a..d25d433571 100644 --- a/argilla/docs/tutorials/image_preference.ipynb +++ b/argilla/docs/tutorials/image_preference.ipynb @@ -191,11 +191,10 @@ " metadata=[\n", " rg.FloatMetadataProperty(name=\"toxicity\", title=\"Toxicity score\"),\n", " rg.FloatMetadataProperty(name=\"identity_attack\", title=\"Identity attack score\"),\n", - "\n", " ],\n", " vectors=[\n", " rg.VectorField(name=\"original_caption_vector\", dimensions=384),\n", - " ]\n", + " ],\n", ")" ] }, @@ -254,7 +253,7 @@ "n_rows = 25\n", "\n", "hf_dataset = load_dataset(\"tomg-group-umd/pixelprose\", streaming=True)\n", - "dataset_rows = [row for _,row in zip(range(n_rows), hf_dataset[\"train\"])]\n", + "dataset_rows = [row for _, row in zip(range(n_rows), hf_dataset[\"train\"])]\n", "hf_dataset = Dataset.from_list(dataset_rows)\n", "\n", "hf_dataset" @@ -341,8 +340,7 @@ } ], "source": [ - "hf_dataset = hf_dataset.filter(\n", - " lambda x: any([x[\"url\"].endswith(extension) for extension in [\".jpg\", \".png\", \".jpeg\"]]))\n", + "hf_dataset = hf_dataset.filter(lambda x: any([x[\"url\"].endswith(extension) for extension in [\".jpg\", \".png\", \".jpeg\"]]))\n", "\n", "hf_dataset" ] @@ -380,6 +378,7 @@ "API_URL = \"https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-schnell\"\n", "headers = {\"Authorization\": f\"Bearer {os.getenv('HF_TOKEN')}\"}\n", "\n", + "\n", "def query(payload):\n", " response = requests.post(API_URL, headers=headers, json=payload)\n", " if response.status_code == 200:\n", @@ -391,9 +390,8 @@ " image = query(payload)\n", " return image\n", "\n", - "query({\n", - "\t\"inputs\": \"Astronaut riding a horse\"\n", - "})" + "\n", + "query({\"inputs\": \"Astronaut riding a horse\"})" ] }, { @@ -426,9 +424,10 @@ "def generate_image(row):\n", " caption = row[\"original_caption\"]\n", " row[\"image_1\"] = query({\"inputs\": caption})\n", - " row[\"image_2\"] = query({\"inputs\": caption + \" \"}) # space to avoid caching and getting the same image\n", + " row[\"image_2\"] = query({\"inputs\": caption + \" \"}) # space to avoid caching and getting the same image\n", " return row\n", - " \n", + "\n", + "\n", "hf_dataset_with_images = hf_dataset.map(generate_image, batched=False)\n", "\n", "hf_dataset_with_images" @@ -451,11 +450,13 @@ "source": [ "model = SentenceTransformer(\"TaylorAI/bge-micro-v2\")\n", "\n", + "\n", "def encode_questions(batch):\n", " vectors_as_numpy = model.encode(batch[\"original_caption\"])\n", " batch[\"original_caption_vector\"] = [x.tolist() for x in vectors_as_numpy]\n", " return batch\n", "\n", + "\n", "hf_dataset_with_images_vectors = hf_dataset_with_images.map(encode_questions, batched=True)" ] }, @@ -474,11 +475,14 @@ "metadata": {}, "outputs": [], "source": [ - "dataset.records.log(records=hf_dataset_with_images_vectors, mapping={\n", - " \"key\": \"id\",\n", - " \"original_caption\": \"caption\",\n", - " \"url\": \"image_original\",\n", - "})" + "dataset.records.log(\n", + " records=hf_dataset_with_images_vectors,\n", + " mapping={\n", + " \"key\": \"id\",\n", + " \"original_caption\": \"caption\",\n", + " \"url\": \"image_original\",\n", + " },\n", + ")" ] }, { diff --git a/argilla/docs/tutorials/token_classification.ipynb b/argilla/docs/tutorials/token_classification.ipynb index 71f457f69a..79d74c2dfe 100644 --- a/argilla/docs/tutorials/token_classification.ipynb +++ b/argilla/docs/tutorials/token_classification.ipynb @@ -309,9 +309,7 @@ "source": [ "def predict_gliner(model, text, labels, threshold):\n", " entities = model.predict_entities(text, labels, threshold)\n", - " return [\n", - " {k: v for k, v in ent.items() if k not in {\"score\", \"text\"}} for ent in entities\n", - " ]" + " return [{k: v for k, v in ent.items() if k not in {\"score\", \"text\"}} for ent in entities]" ] }, { @@ -330,9 +328,7 @@ "data = dataset.records.to_list(flatten=True)\n", "updated_data = [\n", " {\n", - " \"span_label\": predict_gliner(\n", - " model=gliner_model, text=sample[\"text\"], labels=labels, threshold=0.70\n", - " ),\n", + " \"span_label\": predict_gliner(model=gliner_model, text=sample[\"text\"], labels=labels, threshold=0.70),\n", " \"id\": sample[\"id\"],\n", " }\n", " for sample in data\n", diff --git a/argilla/src/argilla/records/_io/_datasets.py b/argilla/src/argilla/records/_io/_datasets.py index 975816cca2..30513f1848 100644 --- a/argilla/src/argilla/records/_io/_datasets.py +++ b/argilla/src/argilla/records/_io/_datasets.py @@ -263,8 +263,7 @@ def to_argilla(hf_dataset: "HFDataset", mapper: "IngestedRecordMapper") -> "HFDa if id_column_name not in hf_dataset.column_names: split = hf_dataset.split warnings.warn( - message="Record id column not found in Hugging Face dataset. " - "Using row index and split for record ids.", + message="Record id column not found in Hugging Face dataset. Using row index and split for record ids.", ) hf_dataset = hf_dataset.map( diff --git a/docs/_source/getting_started/quickstart_workflow.ipynb b/docs/_source/getting_started/quickstart_workflow.ipynb index 9d13063ce3..1e84d37b6d 100644 --- a/docs/_source/getting_started/quickstart_workflow.ipynb +++ b/docs/_source/getting_started/quickstart_workflow.ipynb @@ -134,8 +134,8 @@ "outputs": [], "source": [ "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", "# Huggingface credentials\n", "hf_token = \"hf_...\"" ] @@ -177,6 +177,7 @@ }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -187,14 +188,18 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -330,6 +335,7 @@ { "cell_type": "code", "execution_count": 36, + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "outputs": [ { @@ -350,6 +356,7 @@ }, { "cell_type": "markdown", + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "source": [ "As we can see, the dataset has two columns: `text` and `label`. We will use the label as the annotation of our record. Thus, to match the required attributes of a `TextClassificationRecord`, we need to rename the columns." @@ -358,6 +365,7 @@ { "cell_type": "code", "execution_count": 76, + "id": "72eea5119410473aa328ad9291626812", "metadata": {}, "outputs": [], "source": [ @@ -366,6 +374,7 @@ }, { "cell_type": "markdown", + "id": "8edb47106e1a46a883d545849b8ab81b", "metadata": {}, "source": [ "Now, we can inspect our dataset." @@ -374,6 +383,7 @@ { "cell_type": "code", "execution_count": 77, + "id": "10185d26023b46108eb7d9f57d49d2b3", "metadata": {}, "outputs": [ { @@ -439,6 +449,7 @@ }, { "cell_type": "markdown", + "id": "8763a12b2bbd4a93a75aff182afb95dc", "metadata": {}, "source": [ "Once, we checked that everything is correct, we can convert it to an Argilla dataset." @@ -447,6 +458,7 @@ { "cell_type": "code", "execution_count": null, + "id": "7623eae2785240b9bd12b16a66d81610", "metadata": {}, "outputs": [], "source": [ @@ -621,6 +633,7 @@ }, { "cell_type": "markdown", + "id": "7cdc8c89c7104fffa095e18ddfef8986", "metadata": {}, "source": [ "As the label is not needed in this case, we will add it as metadata." @@ -629,14 +642,16 @@ { "cell_type": "code", "execution_count": null, + "id": "b118ea5561624da68c537baed56e602f", "metadata": {}, "outputs": [], "source": [ "def metadata_to_dict(row):\n", - " metadata = {}\n", - " metadata[\"label\"] = row[\"label\"]\n", - " row['metadata'] = metadata\n", - " return row\n", + " metadata = {}\n", + " metadata[\"label\"] = row[\"label\"]\n", + " row[\"metadata\"] = metadata\n", + " return row\n", + "\n", "\n", "dataset = dataset.map(metadata_to_dict, remove_columns=[\"label\"])" ] @@ -692,6 +707,7 @@ "# Load a english spaCy model to tokenize our text\n", "nlp = spacy.load(\"en_core_web_sm\")\n", "\n", + "\n", "# Define our tokenize function\n", "def tokenize(row):\n", " tokens = [token.text for token in nlp(row[\"text\"])]\n", @@ -915,7 +931,11 @@ "from datasets import load_dataset\n", "\n", "# Load the Dataset from the Hugging Face Hub and extract a subset of the train split as example\n", - "dataset = load_dataset(\"europa_ecdc_tm\", \"en2fr\", split=\"train\").shuffle(seed=30).select(range(100))" + "dataset = (\n", + " load_dataset(\"europa_ecdc_tm\", \"en2fr\", split=\"train\")\n", + " .shuffle(seed=30)\n", + " .select(range(100))\n", + ")" ] }, { @@ -999,11 +1019,11 @@ "source": [ "# Define our helper extract function\n", "def extract(row):\n", - " return {\"text\": row[\"translation\"][\"en\"], \"prediction\":[row[\"translation\"][\"fr\"]]}\n", + " return {\"text\": row[\"translation\"][\"en\"], \"prediction\": [row[\"translation\"][\"fr\"]]}\n", "\n", "\n", "# Map the extract function to our dataset\n", - "dataset = dataset.map(extract, remove_columns = [\"translation\"])" + "dataset = dataset.map(extract, remove_columns=[\"translation\"])" ] }, { @@ -1463,10 +1483,7 @@ "sentence = \"I love this film, but the new remake is terrible.\"\n", "\n", "trainer = ArgillaTrainer(\n", - " name=\"imdb\",\n", - " workspace=\"argilla\",\n", - " framework=\"spacy\",\n", - " train_size=0.8\n", + " name=\"imdb\", workspace=\"argilla\", framework=\"spacy\", train_size=0.8\n", ")\n", "trainer.update_config(max_epochs=1, max_steps=1)\n", "trainer.train(output_dir=\"my_easy_model\")\n", diff --git a/docs/_source/getting_started/quickstart_workflow_feedback.ipynb b/docs/_source/getting_started/quickstart_workflow_feedback.ipynb index 1fdfcb624a..c26a23b16a 100644 --- a/docs/_source/getting_started/quickstart_workflow_feedback.ipynb +++ b/docs/_source/getting_started/quickstart_workflow_feedback.ipynb @@ -142,6 +142,7 @@ ], "source": [ "import argilla as rg\n", + "\n", "rg.init(api_url=api_url, api_key=api_key)\n", "\n", "# # If you want to use your private HF Space\n", @@ -150,6 +151,7 @@ }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -160,14 +162,18 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -292,7 +298,7 @@ " fields={\n", " \"text\": \"I feel sad today\",\n", " },\n", - " )\n", + " ),\n", "]\n", "dataset.add_records(records)" ] @@ -349,7 +355,9 @@ "outputs": [], "source": [ "# Besides Argilla, it can also be imported with load_dataset from datasets\n", - "dataset_hf = rg.FeedbackDataset.from_huggingface(\"argilla/emotion\", split=\"train[1:101]\")" + "dataset_hf = rg.FeedbackDataset.from_huggingface(\n", + " \"argilla/emotion\", split=\"train[1:101]\"\n", + ")" ] }, { @@ -396,8 +404,7 @@ "from argilla.feedback import TrainingTask\n", "\n", "task = TrainingTask.for_text_classification(\n", - " text=dataset_hf.field_by_name(\"text\"),\n", - " label=dataset_hf.question_by_name(\"label\")\n", + " text=dataset_hf.field_by_name(\"text\"), label=dataset_hf.question_by_name(\"label\")\n", ")" ] }, @@ -421,10 +428,7 @@ "from argilla.feedback import ArgillaTrainer\n", "\n", "trainer = ArgillaTrainer(\n", - " dataset=dataset_hf,\n", - " task=task,\n", - " framework=\"setfit\",\n", - " train_size=0.8\n", + " dataset=dataset_hf, task=task, framework=\"setfit\", train_size=0.8\n", ")" ] }, diff --git a/docs/_source/practical_guides/annotation_workflows/add_text_descriptives_as_metadata.ipynb b/docs/_source/practical_guides/annotation_workflows/add_text_descriptives_as_metadata.ipynb index 3eb9e80312..20ba8c2711 100644 --- a/docs/_source/practical_guides/annotation_workflows/add_text_descriptives_as_metadata.ipynb +++ b/docs/_source/practical_guides/annotation_workflows/add_text_descriptives_as_metadata.ipynb @@ -98,7 +98,9 @@ "outputs": [], "source": [ "import argilla as rg\n", - "from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", + "from argilla.client.feedback.integrations.textdescriptives import (\n", + " TextDescriptivesExtractor,\n", + ")\n", "\n", "from datasets import load_dataset" ] @@ -119,11 +121,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -146,7 +144,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -169,9 +167,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -333,10 +334,10 @@ "source": [ "# Initialize the TextDescriptivesExtractor\n", "tde = TextDescriptivesExtractor(\n", - " model = \"en\",\n", - " metrics = None,\n", - " visible_for_annotators = False,\n", - " show_progress = True,\n", + " model=\"en\",\n", + " metrics=None,\n", + " visible_for_annotators=False,\n", + " show_progress=True,\n", ")" ] }, @@ -431,10 +432,10 @@ "source": [ "# Initialize the TextDescriptivesExtractor\n", "tde = TextDescriptivesExtractor(\n", - " model = \"en\",\n", - " metrics = [\"descriptive_stats\", \"readability\"],\n", - " visible_for_annotators = True,\n", - " show_progress = True,\n", + " model=\"en\",\n", + " metrics=[\"descriptive_stats\", \"readability\"],\n", + " visible_for_annotators=True,\n", + " show_progress=True,\n", ")" ] }, diff --git a/docs/_source/practical_guides/annotation_workflows/weak_supervision.ipynb b/docs/_source/practical_guides/annotation_workflows/weak_supervision.ipynb index 0370b6a308..b5a0721e35 100644 --- a/docs/_source/practical_guides/annotation_workflows/weak_supervision.ipynb +++ b/docs/_source/practical_guides/annotation_workflows/weak_supervision.ipynb @@ -274,7 +274,7 @@ "test_df = pd.read_csv(\"../../tutorials/notebooks/data/yt_comments_test.csv\")\n", "\n", "# preview data\n", - "train_df.head()\n" + "train_df.head()" ] }, { @@ -369,7 +369,7 @@ "subscribe = Rule(query=\"subscribe\", label=\"SPAM\")\n", "my = Rule(query=\"my\", label=\"SPAM\")\n", "song = Rule(query=\"song\", label=\"HAM\")\n", - "love = Rule(query=\"love\", label=\"HAM\")\n" + "love = Rule(query=\"love\", label=\"HAM\")" ] }, { @@ -390,6 +390,7 @@ "source": [ "import re\n", "\n", + "\n", "# rules defined as Python labeling functions\n", "def contains_http(record: rg.TextClassificationRecord):\n", " if \"http\" in record.inputs[\"text\"]:\n", @@ -403,7 +404,7 @@ "def regex_check_out(record: rg.TextClassificationRecord):\n", " return (\n", " \"SPAM\" if re.search(r\"check.*out\", record.inputs[\"text\"], flags=re.I) else None\n", - " )\n" + " )" ] }, { @@ -422,7 +423,9 @@ "metadata": {}, "outputs": [], "source": [ - "labeling_rules_df = pd.read_csv(\"../../_static/datasets/weak_supervision_tutorial/labeling_rules.csv\")" + "labeling_rules_df = pd.read_csv(\n", + " \"../../_static/datasets/weak_supervision_tutorial/labeling_rules.csv\"\n", + ")" ] }, { @@ -520,9 +523,7 @@ "source": [ "predefined_labeling_rules = []\n", "for index, row in labeling_rules_df.iterrows():\n", - " predefined_labeling_rules.append(\n", - " Rule(row[\"query\"], row[\"label\"])\n", - " )" + " predefined_labeling_rules.append(Rule(row[\"query\"], row[\"label\"]))" ] }, { @@ -544,27 +545,16 @@ "from argilla.labeling.text_classification import load_rules, add_rules, delete_rules\n", "\n", "# bundle our rules in a list\n", - "rules = [\n", - " check_out,\n", - " plz,\n", - " subscribe,\n", - " my,\n", - " song,\n", - " love\n", - "]\n", + "rules = [check_out, plz, subscribe, my, song, love]\n", "\n", - "labeling_functions = [ \n", - " contains_http,\n", - " short_comment,\n", - " regex_check_out\n", - "]\n", + "labeling_functions = [contains_http, short_comment, regex_check_out]\n", "\n", "# add rules to dataset\n", "add_rules(dataset=\"weak_supervision_yt\", rules=rules)\n", "\n", "\n", "# add the predefined rules loaded from external file\n", - "add_rules(dataset=\"weak_supervision_yt\", rules=predefined_labeling_rules)\n" + "add_rules(dataset=\"weak_supervision_yt\", rules=predefined_labeling_rules)" ] }, { @@ -583,7 +573,7 @@ "metadata": {}, "outputs": [], "source": [ - "# load all the rules available in the dataset including interactively defined in the UI \n", + "# load all the rules available in the dataset including interactively defined in the UI\n", "dataset_labeling_rules = load_rules(dataset=\"weak_supervision_yt\")\n", "\n", "# extend the labeling rules with labeling functions\n", @@ -865,7 +855,7 @@ "not_informative_rules = [\n", " Rule(\"rich\", \"SPAM\"),\n", " Rule(\"film\", \"HAM\"),\n", - " Rule(\"meeting\", \"HAM\")\n", + " Rule(\"meeting\", \"HAM\"),\n", "]" ] }, @@ -877,6 +867,7 @@ "outputs": [], "source": [ "from argilla.labeling.text_classification import delete_rules\n", + "\n", "delete_rules(dataset=\"weak_supervision_yt\", rules=not_informative_rules)" ] }, @@ -1185,7 +1176,7 @@ "from argilla.labeling.text_classification import MajorityVoter\n", "\n", "# instantiate the majority vote label model by simply providing the weak labels object\n", - "majority_model = MajorityVoter(weak_labels)\n" + "majority_model = MajorityVoter(weak_labels)" ] }, { @@ -1222,7 +1213,7 @@ ], "source": [ "# check its performance\n", - "print(majority_model.score(output_str=True))\n" + "print(majority_model.score(output_str=True))" ] }, { @@ -1252,7 +1243,7 @@ "\n", "# accuracy without abstentions: 0.96; accuracy of random classifier: 0.5\n", "print(\"accuracy_c:\", frac_non * 0.96 + frac_abs * 0.5)\n", - "# accuracy_c: 0.868\n" + "# accuracy_c: 0.868" ] }, { @@ -1295,7 +1286,7 @@ "# extract training data\n", "training_data = pd.DataFrame(\n", " [{\"text\": rec.text, \"label\": rec.prediction[0][0]} for rec in records_for_training]\n", - ")\n" + ")" ] }, { @@ -1414,7 +1405,7 @@ ], "source": [ "# preview training data\n", - "training_data\n" + "training_data" ] }, { @@ -1452,7 +1443,7 @@ "snorkel_model = Snorkel(weak_labels)\n", "\n", "# we fit the model\n", - "snorkel_model.fit(lr=0.001, n_epochs=50)\n" + "snorkel_model.fit(lr=0.001, n_epochs=50)" ] }, { @@ -1503,7 +1494,7 @@ ], "source": [ "# we check its performance\n", - "print(snorkel_model.score(output_str=True))\n" + "print(snorkel_model.score(output_str=True))" ] }, { @@ -1529,7 +1520,7 @@ "\n", "# accuracy without abstentions: 0.95; accuracy of random classifier: 0.5\n", "print(\"accuracy_c:\", frac_non * 0.95 + frac_abs * 0.5)\n", - "# accuracy_c: 0.8761999999999999\n" + "# accuracy_c: 0.8761999999999999" ] }, { @@ -1560,7 +1551,7 @@ "# extract training data\n", "training_data = pd.DataFrame(\n", " [{\"text\": rec.text, \"label\": rec.prediction[0][0]} for rec in records_for_training]\n", - ")\n" + ")" ] }, { @@ -1775,7 +1766,7 @@ ], "source": [ "# we check its performance\n", - "print(flyingsquid_model.score(output_str=True))\n" + "print(flyingsquid_model.score(output_str=True))" ] }, { @@ -2101,7 +2092,7 @@ " X_test=X_test,\n", " Y_test=weak_labels.annotation(),\n", " batch_size=8,\n", - ")\n" + ")" ] }, { @@ -2137,7 +2128,7 @@ "trainer.fit(\n", " model=weasel,\n", " datamodule=datamodule,\n", - ")\n" + ")" ] }, { @@ -2158,7 +2149,7 @@ "outputs": [], "source": [ "trainer.test()\n", - "# {'accuracy': 0.94, ...}\n" + "# {'accuracy': 0.94, ...}" ] }, { @@ -2184,7 +2175,7 @@ "predicted_probs, predicted_label = weasel.predict(tokenizer(text, return_tensors=\"pt\"))\n", "\n", "# Map predicted int to label\n", - "weak_labels.int2label[int(predicted_label)] # HAM\n" + "weak_labels.int2label[int(predicted_label)] # HAM" ] }, { @@ -2214,7 +2205,7 @@ ")\n", "\n", "# use pipeline for predictions\n", - "classifier(text) # [{'label': 'HAM', 'score': 0.6110987663269043}]\n" + "classifier(text) # [{'label': 'HAM', 'score': 0.6110987663269043}]" ] } ], diff --git a/docs/_source/tutorials/notebooks/deploying-text2text-dvc-explainability.ipynb b/docs/_source/tutorials/notebooks/deploying-text2text-dvc-explainability.ipynb index b2ec1c9759..afb95fb698 100644 --- a/docs/_source/tutorials/notebooks/deploying-text2text-dvc-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/deploying-text2text-dvc-explainability.ipynb @@ -128,10 +128,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -154,7 +151,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -198,9 +195,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -383,26 +383,26 @@ } ], "source": [ - "\n", - "def dataset_backupper(datasets: List[str], duration: int=60*60*24): \n", + "def dataset_backupper(datasets: List[str], duration: int = 60 * 60 * 24):\n", " while True:\n", " # load datasets and save as .pkl files\n", - " for dataset_name in datasets: \n", + " for dataset_name in datasets:\n", " ds = rg.load(dataset_name)\n", " df = ds.to_pandas()\n", " df.to_pickle(f\"data/{dataset_name}.pkl\")\n", "\n", " # get all .pkl files using glob\n", - " files = glob.glob('data/*.pkl', recursive=True)\n", - " [os.system(f'dvc add {file}') for file in files]\n", - " \n", + " files = glob.glob(\"data/*.pkl\", recursive=True)\n", + " [os.system(f\"dvc add {file}\") for file in files]\n", + "\n", " # push all .pkl.dvc files to github via git push\n", " os.system(\"dvc push\")\n", " os.system(\"git commit -m 'update DVC files'\")\n", " os.system(\"git push\")\n", - " \n", + "\n", " time.sleep(duration)\n", - " \n", + "\n", + "\n", "dataset_backupper([\"argilla-dvc\"])" ] }, diff --git a/docs/_source/tutorials/notebooks/deploying-textclassification-colab-activelearning.ipynb b/docs/_source/tutorials/notebooks/deploying-textclassification-colab-activelearning.ipynb index cfa6236721..133d6e5545 100644 --- a/docs/_source/tutorials/notebooks/deploying-textclassification-colab-activelearning.ipynb +++ b/docs/_source/tutorials/notebooks/deploying-textclassification-colab-activelearning.ipynb @@ -67,12 +67,14 @@ "!nvidia-smi\n", "# info on available ram\n", "from psutil import virtual_memory\n", + "\n", "ram_gb = virtual_memory().total / 1e9\n", - "print('\\n\\nYour runtime has {:.1f} gigabytes of available RAM\\n'.format(ram_gb))" + "print(\"\\n\\nYour runtime has {:.1f} gigabytes of available RAM\\n\".format(ram_gb))" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -83,14 +85,18 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -147,6 +153,7 @@ "outputs": [], "source": [ "import time\n", + "\n", "time.sleep(30) # sleeping to give ES time to set up. Otherwise downstream code will bug" ] }, @@ -236,10 +243,12 @@ "from pyngrok import ngrok, conf\n", "\n", "print(\"Enter your authtoken, which can be copied from https://dashboard.ngrok.com/auth\")\n", - "print(\"You need to create a free ngrok account to get an authtoken. The token looks something like this: ASDO1283YZaDu95vysXYIUXZXYRR_54YfASDIb8cpNfVoz349587\")\n", + "print(\n", + " \"You need to create a free ngrok account to get an authtoken. The token looks something like this: ASDO1283YZaDu95vysXYIUXZXYRR_54YfASDIb8cpNfVoz349587\"\n", + ")\n", "conf.get_default().auth_token = getpass.getpass()\n", - "# if the above does not work, you can try: \n", - "#ngrok.set_auth_token(\"\")" + "# if the above does not work, you can try:\n", + "# ngrok.set_auth_token(\"\")" ] }, { @@ -255,12 +264,18 @@ "[ngrok.disconnect(tunnel.public_url) for tunnel in ngrok.get_tunnels()]\n", "\n", "# create the public link\n", - "# ! check whether this is actually the localhost port Argilla is running on via the terminal above \n", - "ngrok_tunnel = ngrok.connect(6900) # insert the port number Argilla is running on. e.g. 6900 if the terminal displays something like \"Uvicorn running on http://0.0.0.0:6900\"\n", - "print(\"You can now access the Argilla localhost with the public link below. (It should look something like 'http://X03b-34-XXX-237-25.ngrok.io')\\n\")\n", + "# ! check whether this is actually the localhost port Argilla is running on via the terminal above\n", + "ngrok_tunnel = ngrok.connect(\n", + " 6900\n", + ") # insert the port number Argilla is running on. e.g. 6900 if the terminal displays something like \"Uvicorn running on http://0.0.0.0:6900\"\n", + "print(\n", + " \"You can now access the Argilla localhost with the public link below. (It should look something like 'http://X03b-34-XXX-237-25.ngrok.io')\\n\"\n", + ")\n", "print(f\"Your ngrok public link: {ngrok_tunnel}\\n\")\n", "print(\"After clicking on the link, there will be a warning, which you can ignore\")\n", - "print(\"You can then login with the default argilla username 'argilla' and password '1234'\")" + "print(\n", + " \"You can then login with the default argilla username 'argilla' and password '1234'\"\n", + ")" ] }, { @@ -294,10 +309,11 @@ "source": [ "# load dataset\n", "import datasets\n", + "\n", "dataset_name = \"trec\"\n", "dataset_hf = datasets.load_dataset(dataset_name, version=datasets.Version(\"2.0.0\"))\n", "# we work with only a sixth of the texts of the dataset for faster testing\n", - "dataset_hf[\"train\"] = dataset_hf[\"train\"].shard(num_shards=6, index=0)\n" + "dataset_hf[\"train\"] = dataset_hf[\"train\"].shard(num_shards=6, index=0)" ] }, { @@ -316,13 +332,17 @@ "# Choose transformer model: In non-gpu environments we use a tiny model to increase efficiency\n", "if not torch.cuda.is_available():\n", " transformer_model = \"prajjwal1/bert-tiny\"\n", - " print(f\"No GPU is available, we therefore use the small model '{transformer_model}' for the active learning loop.\\n\")\n", + " print(\n", + " f\"No GPU is available, we therefore use the small model '{transformer_model}' for the active learning loop.\\n\"\n", + " )\n", "else:\n", - " transformer_model = \"microsoft/deberta-v3-xsmall\" #\"bert-base-uncased\"\n", - " print(f\"A GPU is available, we can therefore use '{transformer_model}' for the active learning loop.\\n\")\n", + " transformer_model = \"microsoft/deberta-v3-xsmall\" # \"bert-base-uncased\"\n", + " print(\n", + " f\"A GPU is available, we can therefore use '{transformer_model}' for the active learning loop.\\n\"\n", + " )\n", "\n", "# Init tokenizer\n", - "tokenizer = AutoTokenizer.from_pretrained(transformer_model)\n" + "tokenizer = AutoTokenizer.from_pretrained(transformer_model)" ] }, { @@ -355,8 +375,7 @@ "\n", "dataset_test = TransformersDataset.from_arrays(\n", " test_text, test_labels, tokenizer, target_labels=np.arange(num_classes)\n", - ")\n", - "\n" + ")" ] }, { @@ -384,8 +403,13 @@ "clf_factory = TransformerBasedClassificationFactory(\n", " TransformerModelArguments(transformer_model),\n", " num_classes=num_classes,\n", - " kwargs={\"device\": device, \"num_epochs\": num_epochs, \"lr\": 2e-05, \"mini_batch_size\": 8,\n", - " \"early_stopping_no_improvement\": 5}\n", + " kwargs={\n", + " \"device\": device,\n", + " \"num_epochs\": num_epochs,\n", + " \"lr\": 2e-05,\n", + " \"mini_batch_size\": 8,\n", + " \"early_stopping_no_improvement\": 5,\n", + " },\n", ")\n", "\n", "\n", @@ -393,7 +417,7 @@ "query_strategy = BreakingTies()\n", "\n", "# Use the active learner with a pool containing all unlabeled data\n", - "active_learner = PoolBasedActiveLearner(clf_factory, query_strategy, dataset_st)\n" + "active_learner = PoolBasedActiveLearner(clf_factory, query_strategy, dataset_st)" ] }, { @@ -407,7 +431,11 @@ "source": [ "## draw an initial sample for the first annotation round\n", "# https://small-text.readthedocs.io/en/v1.1.1/components/initialization.html\n", - "from small_text import random_initialization, random_initialization_stratified, random_initialization_balanced\n", + "from small_text import (\n", + " random_initialization,\n", + " random_initialization_stratified,\n", + " random_initialization_balanced,\n", + ")\n", "import numpy as np\n", "\n", "# Fix seed for reproducibility\n", @@ -417,9 +445,9 @@ "NUM_SAMPLES = 10\n", "\n", "# Draw an initial subset from the data pool\n", - "#initial_indices = random_initialization(dataset_st, NUM_SAMPLES)\n", - "#initial_indices = random_initialization_balanced(train_labels, NUM_SAMPLES)\n", - "initial_indices = random_initialization_stratified(train_labels, NUM_SAMPLES)\n" + "# initial_indices = random_initialization(dataset_st, NUM_SAMPLES)\n", + "# initial_indices = random_initialization_balanced(train_labels, NUM_SAMPLES)\n", + "initial_indices = random_initialization_stratified(train_labels, NUM_SAMPLES)" ] }, { @@ -455,7 +483,7 @@ "]\n", "\n", "# Log initial records to Argilla\n", - "rg.log(records, DATASET_NAME)\n" + "rg.log(records, DATASET_NAME)" ] }, { @@ -475,6 +503,7 @@ "LABEL2INT = dataset_hf[\"train\"].features[\"coarse_label\"].str2int\n", "ACCURACIES = []\n", "\n", + "\n", "# Set up the active learning loop with the listener decorator\n", "@listener(\n", " dataset=DATASET_NAME,\n", @@ -527,8 +556,7 @@ " print(\"Waiting for annotations ...\")\n", "\n", "\n", - "\n", - "active_learning_loop.start()\n" + "active_learning_loop.start()" ] }, { @@ -564,7 +592,7 @@ ], "source": [ "print(f\"You can now start annotating with active learning in the background!\")\n", - "print(f\"The public link for accessing the annotation interface is: {ngrok_tunnel}\")\n" + "print(f\"The public link for accessing the annotation interface is: {ngrok_tunnel}\")" ] }, { @@ -603,7 +631,8 @@ "source": [ "# plot learning progress over different active learning iterations\n", "import pandas as pd\n", - "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")\n" + "\n", + "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")" ] }, { diff --git a/docs/_source/tutorials/notebooks/deploying-texttokenclassification-fastapi.ipynb b/docs/_source/tutorials/notebooks/deploying-texttokenclassification-fastapi.ipynb index 7d1d573230..c03057a4db 100644 --- a/docs/_source/tutorials/notebooks/deploying-texttokenclassification-fastapi.ipynb +++ b/docs/_source/tutorials/notebooks/deploying-texttokenclassification-fastapi.ipynb @@ -129,10 +129,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -155,7 +152,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -186,7 +183,7 @@ "\n", "# for adding logging to API endpoints\n", "from argilla.monitoring.asgi import (\n", - " ArgillaLogHTTPMiddleware, \n", + " ArgillaLogHTTPMiddleware,\n", " text_classification_mapper,\n", " token_classification_mapper,\n", ")\n", @@ -212,9 +209,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -435,11 +435,12 @@ " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/transformers/\", # the endpoint that will be logged\n", " dataset=\"monitoring_transformers\", # your dataset name\n", - " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", + " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", ")" ] }, @@ -467,6 +468,7 @@ " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/spacy/\",\n", @@ -474,6 +476,7 @@ " records_mapper=token2records,\n", ")\n", "\n", + "\n", "# prediction endpoint using spacy pipeline\n", "@app.post(\"/ner/\")\n", "def predict_spacy(batch: List[str]):\n", @@ -586,8 +589,8 @@ "import requests\n", "\n", "response = requests.post(\n", - " \"http://localhost:8000/sentiment/\", \n", - " json=[\"I like Argilla\", \"I hated data labelling but now I don't\"]\n", + " \"http://localhost:8000/sentiment/\",\n", + " json=[\"I like Argilla\", \"I hated data labelling but now I don't\"],\n", ")\n", "\n", "response.content" @@ -634,7 +637,7 @@ "from transformers import pipeline\n", "\n", "from argilla.monitoring.asgi import (\n", - " ArgillaLogHTTPMiddleware, \n", + " ArgillaLogHTTPMiddleware,\n", " text_classification_mapper,\n", " token_classification_mapper,\n", ")\n", @@ -644,6 +647,7 @@ "\n", "app = FastAPI()\n", "\n", + "\n", "# prediction endpoint using transformers pipeline\n", "@app.post(\"/sentiment/\")\n", "def predict_transformers(batch: List[str]):\n", @@ -656,25 +660,29 @@ " for prediction in predictions\n", " ]\n", "\n", + "\n", "def text2records(batch: List[str], outputs: List[dict]):\n", " return [\n", " text_classification_mapper(data, prediction)\n", " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/transformers/\", # the endpoint that will be logged\n", " dataset=\"monitoring_transformers\", # your dataset name\n", - " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", + " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", ")\n", "\n", + "\n", "def token2records(batch: List[str], outputs: List[dict]):\n", " return [\n", " token_classification_mapper(data, prediction)\n", " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "# prediction endpoint using spacy pipeline\n", "@app.post(\"/ner/\")\n", "def predict_spacy(batch: List[str]):\n", @@ -694,6 +702,7 @@ " predictions.append(prediction)\n", " return predictions\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/ner/\",\n", @@ -708,14 +717,13 @@ " records_mapper=text2records,\n", ")\n", "\n", + "\n", "@app.get(\"/\")\n", "def root():\n", " return {\"message\": \"alive\"}\n", "\n", - "argilla.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "\n", + "argilla.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] } ], diff --git a/docs/_source/tutorials/notebooks/labelling-spacy-llm.ipynb b/docs/_source/tutorials/notebooks/labelling-spacy-llm.ipynb index a1ece5425a..c6682dce90 100644 --- a/docs/_source/tutorials/notebooks/labelling-spacy-llm.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-spacy-llm.ipynb @@ -108,10 +108,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -134,7 +131,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -157,9 +154,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -247,8 +247,8 @@ "config = configparser.ConfigParser()\n", "config.read_string(config_string)\n", "\n", - "with open(\"config.cfg\", 'w') as configfile:\n", - " config.write(configfile)" + "with open(\"config.cfg\", \"w\") as configfile:\n", + " config.write(configfile)" ] }, { @@ -299,20 +299,21 @@ "metadata": {}, "outputs": [], "source": [ - "#returns the category with the highest score\n", + "# returns the category with the highest score\n", "def get_textcat_suggestion(doc):\n", - " model_prediction = doc.cats\n", - " return max(model_prediction, key=model_prediction.get)\n", + " model_prediction = doc.cats\n", + " return max(model_prediction, key=model_prediction.get)\n", + "\n", "\n", - "#selects the top N sentences with the highest scores and return combined string\n", + "# selects the top N sentences with the highest scores and return combined string\n", "def get_summarization_suggestion(doc):\n", - " sentence_scores = Counter()\n", - " for sentence in doc.sents:\n", - " for word in sentence:\n", - " sentence_scores[sentence] += 1\n", - " summary_sentences = nlargest(2, sentence_scores, key=sentence_scores.get)\n", - " summary = ' '.join(str(sentence) for sentence in summary_sentences)\n", - " return summary" + " sentence_scores = Counter()\n", + " for sentence in doc.sents:\n", + " for word in sentence:\n", + " sentence_scores[sentence] += 1\n", + " summary_sentences = nlargest(2, sentence_scores, key=sentence_scores.get)\n", + " summary = \" \".join(str(sentence) for sentence in summary_sentences)\n", + " return summary" ] }, { @@ -354,21 +355,16 @@ "outputs": [], "source": [ "dataset = rg.FeedbackDataset(\n", - " fields=[\n", - " rg.TextField(name=\"text\")\n", - " ],\n", + " fields=[rg.TextField(name=\"text\")],\n", " questions=[\n", " rg.LabelQuestion(\n", " name=\"label-question\",\n", " title=\"Classify the text category.\",\n", - " #make sure that the labels are in line with the labels we have defined in config.cfg\n", - " labels=[\"HISTORY\",\"MUSIC\",\"TECHNOLOGY\",\"SCIENCE\",\"SPORTS\",\"POLITICS\"]\n", + " # make sure that the labels are in line with the labels we have defined in config.cfg\n", + " labels=[\"HISTORY\", \"MUSIC\", \"TECHNOLOGY\", \"SCIENCE\", \"SPORTS\", \"POLITICS\"],\n", " ),\n", - " rg.TextQuestion(\n", - " name=\"text-question\",\n", - " title=\"Provide a summary for the text.\"\n", - " )\n", - " ]\n", + " rg.TextQuestion(name=\"text-question\", title=\"Provide a summary for the text.\"),\n", + " ],\n", ")" ] }, @@ -387,16 +383,16 @@ "source": [ "records = [\n", " rg.FeedbackRecord(\n", - " fields={\n", - " \"text\": doc.text\n", - " },\n", + " fields={\"text\": doc.text},\n", " suggestions=[\n", - " {\"question_name\": \"label-question\",\n", - " \"value\": get_textcat_suggestion(doc)},\n", - " {\"question_name\":\"text-question\",\n", - " \"value\": get_summarization_suggestion(doc)}\n", - " ]\n", - " ) for doc in [nlp(item) for item in dataset_hf[\"context\"]]\n", + " {\"question_name\": \"label-question\", \"value\": get_textcat_suggestion(doc)},\n", + " {\n", + " \"question_name\": \"text-question\",\n", + " \"value\": get_summarization_suggestion(doc),\n", + " },\n", + " ],\n", + " )\n", + " for doc in [nlp(item) for item in dataset_hf[\"context\"]]\n", "]" ] }, diff --git a/docs/_source/tutorials/notebooks/labelling-text2text-disaggregators-explainability.ipynb b/docs/_source/tutorials/notebooks/labelling-text2text-disaggregators-explainability.ipynb index 342b0e43c3..f66a5d254c 100644 --- a/docs/_source/tutorials/notebooks/labelling-text2text-disaggregators-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-text2text-disaggregators-explainability.ipynb @@ -120,10 +120,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -146,7 +143,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -190,9 +187,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -216,7 +216,9 @@ "dataset_rg = rg.read_datasets(my_dataset[\"train\"], task=\"Text2Text\")\n", "\n", "# log subset into argilla\n", - "rg.log(dataset_rg[:1000], \"news-summary\", chunk_size=50) # set smaller chunk size to overcome io-issues" + "rg.log(\n", + " dataset_rg[:1000], \"news-summary\", chunk_size=50\n", + ") # set smaller chunk size to overcome io-issues" ] }, { @@ -375,7 +377,7 @@ "metadata_ds = df[df.columns[1:]].to_dict(orient=\"records\")\n", "for metadata_rec, rec in zip(metadata_ds, ds):\n", " rec.metadata = metadata_rec\n", - "rg.log(ds, \"news-summary\", chunk_size=50) # upsert records" + "rg.log(ds, \"news-summary\", chunk_size=50) # upsert records" ] }, { diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-gpt3-fewshot.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-gpt3-fewshot.ipynb index 379c43915b..253bd5348c 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-gpt3-fewshot.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-gpt3-fewshot.ipynb @@ -115,14 +115,12 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -131,6 +129,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -141,7 +140,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -176,6 +175,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -186,14 +186,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -445,17 +449,15 @@ "outputs": [], "source": [ "# set your api key as ENV, for example with Python: os.environ[\"OPENAI_API_KEY\"]\n", - "openai.api_key = os.getenv(\"OPENAI_API_KEY\") \n", + "openai.api_key = os.getenv(\"OPENAI_API_KEY\")\n", + "\n", "\n", "def classify(text):\n", " # build prompt with template and input\n", " prompt = f\"{PROMPT_TEMPLATE}\\n{text}\\n\"\n", " # use create completion template\n", " completion = openai.Completion.create(\n", - " model=\"text-davinci-003\",\n", - " prompt=prompt,\n", - " temperature=0,\n", - " max_tokens=256\n", + " model=\"text-davinci-003\", prompt=prompt, temperature=0, max_tokens=256\n", " )\n", " # get first choice text\n", " json_response = completion[\"choices\"][0][\"text\"].strip()\n", @@ -463,8 +465,11 @@ " prediction = loads(json_response)\n", " except:\n", " # for some examples, json is not correctly formatted\n", - " return {\"prediction\": None, \"explanation\": f\"Wrong JSON format: {json_response}\" }\n", - " return prediction " + " return {\n", + " \"prediction\": None,\n", + " \"explanation\": f\"Wrong JSON format: {json_response}\",\n", + " }\n", + " return prediction" ] }, { @@ -682,7 +687,7 @@ "# let's predict over the test set to eval our zero-shot classifier\n", "test_ds_with_preds = banking_ds[\"test\"].map(lambda example: classify(example[\"text\"]))\n", "\n", - "pd.set_option('display.max_colwidth', None)\n", + "pd.set_option(\"display.max_colwidth\", None)\n", "test_ds_with_preds.to_pandas().head(15)" ] }, @@ -716,7 +721,7 @@ " record = rg.TextClassificationRecord(\n", " inputs={\"text\": example[\"text\"], \"explanation\": example[\"explanation\"]},\n", " annotation=labels[example[\"label\"]],\n", - " prediction=[(example[\"prediction\"].lower(), 1.0)]\n", + " prediction=[(example[\"prediction\"].lower(), 1.0)],\n", " )\n", " records.append(record)\n", "\n", @@ -1745,7 +1750,7 @@ ], "range": [ 0, - 0.9090909090909091 + 0.9090909090909092 ], "type": "linear" } @@ -5173,7 +5178,7 @@ ], "range": [ 0, - 0.9090909090909091 + 0.9090909090909092 ], "type": "linear" } diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-sentence-transformers-semantic.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-sentence-transformers-semantic.ipynb index 6281388bf5..3e2c1b7058 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-sentence-transformers-semantic.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-sentence-transformers-semantic.ipynb @@ -116,10 +116,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -142,7 +139,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -162,7 +159,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "from sentence_transformers import SentenceTransformer\n", "from datasets import load_dataset" ] @@ -184,9 +180,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -213,9 +212,9 @@ "\n", "# Encode text field using batched computation\n", "dataset = dataset.map(\n", - " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])}, \n", - " batch_size=32, \n", - " batched=True\n", + " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])},\n", + " batch_size=32,\n", + " batched=True,\n", ")\n", "\n", "# Removes the original labels because you'll be labeling from scratch\n", @@ -342,7 +341,16 @@ "\n", "# Our labeling scheme\n", "settings = rg.TextClassificationSettings(\n", - " label_schema=[\"change_details\", \"card\", \"atm\", \"top_up\", \"balance\", \"transfer\", \"exchange_rate\", \"pin\"]\n", + " label_schema=[\n", + " \"change_details\",\n", + " \"card\",\n", + " \"atm\",\n", + " \"top_up\",\n", + " \"balance\",\n", + " \"transfer\",\n", + " \"exchange_rate\",\n", + " \"pin\",\n", + " ]\n", ")\n", "\n", "rg.configure_dataset_settings(name=\"banking77-topics\", settings=settings)\n", diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-semantic.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-semantic.ipynb index 144af598c6..05c2a28437 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-semantic.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-semantic.ipynb @@ -1,10378 +1,10395 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "5PwXNf1WNYm4" - }, - "source": [ - "# 📸 Bulk Labeling Multimodal Data\n", - "\n", - "\n", - "In this tutorial, we will work with multimodal data of images and text. It will walk you through the following steps:\n", - "\n", - "- Load a dataset with images and text of electronic products.\n", - "- Experiment with zero-shot image and text classification.\n", - "- Label the data using bulk labelling with image and text embeddings.\n", - "- Train a SetFit classification model on the labelled data.\n", - "\n", - "\"Argilla\n" - ] + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "5PwXNf1WNYm4" + }, + "source": [ + "# 📸 Bulk Labeling Multimodal Data\n", + "\n", + "\n", + "In this tutorial, we will work with multimodal data of images and text. It will walk you through the following steps:\n", + "\n", + "- Load a dataset with images and text of electronic products.\n", + "- Experiment with zero-shot image and text classification.\n", + "- Label the data using bulk labelling with image and text embeddings.\n", + "- Train a SetFit classification model on the labelled data.\n", + "\n", + "\"Argilla\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running Argilla\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", + "\n", + "1. [Deploy Argilla on Hugging Face Spaces](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla): This is the fastest option and the recommended choice for connecting to external notebooks (e.g., Google Colab) if you have an account on Hugging Face.\n", + "\n", + "2. [Launch Argilla using Argilla's quickstart Docker image](../../getting_started/quickstart.ipynb): This is the recommended option if you want Argilla running on your local machine. Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", + "\n", + "For more information on deployment options, please check the Deployment section of the documentation.\n", + "\n", + "
\n", + "\n", + "Tip\n", + " \n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "
\n", + "\n", + "## Setup\n", + "\n", + "For this tutorial, you'll need to install the Argilla client and a few third-party libraries using `pip`:" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "hCR_hYiWNYm7" + }, + "source": [ + "## Introduction\n", + "\n", + "__Real-world multimodal data__ is often a mix of text and images. In this tutorial, we will work with a dataset of electronic products. The dataset contains images of the products and a description of the product. \n", + "\n", + "This notebook uses a dataset of electronics parts and products from a fictional electronics webshop. \n", + "\n", + "Let's get started!" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "B-DDXAVxNYm7" + }, + "outputs": [], + "source": [ + "%pip install argilla \"setfit~=0.2.0\" \"datasets~=2.3.0\" transformers sentence-transformers -qqq" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "le5C4pzTNYm9" + }, + "source": [ + "Let's import the Argilla module for reading and writing data:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "KNr0WEVWNYm-" + }, + "outputs": [], + "source": [ + "import argilla as rg" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "J5ecm_MjNYm-" + }, + "source": [ + "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fEDgKhSVNYm-" + }, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "rg.init(api_url=\"https://localhost:6900\", api_key=\"admin.apikey\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"admin.apikey\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "VgNib6EDNYm-" + }, + "source": [ + "Finally, let's include the imports we need:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pprint as pp\n", + "from requests import get\n", + "\n", + "from datasets import load_dataset\n", + "from PIL import Image\n", + "from sklearn.metrics import accuracy_score\n", + "from sentence_transformers import SentenceTransformer\n", + "from transformers import pipeline\n", + "from sentence_transformers.losses import CosineSimilarityLoss\n", + "from setfit import SetFitModel, SetFitTrainer\n", + "from PIL import Image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "izZIHEzYNYnB" + }, + "source": [ + "## A 'real-world' multimodal dataset\n", + "\n", + "The dataset samples contain a `page_name`, `page_descriptions`, and a `label`. The dataset is split into two parts: `labelled` and `unlabelled`. The labelled portion is the result of my annotation so we can test methods. In reality, let's say this doesn't exist 😏. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 438, + "referenced_widgets": [ + "d2cf4d1133a2421aa1ec980bdca4fecd", + "bcfc02b30e024b5c81856bcd9e191d07", + "eaefc3e261a7453cb66905079b71f16a", + "ac546920996e4ca081e438999ae19fc8", + "c54e39be37434e0d826d86041ef1de96", + "f4d6914361f44912b0d7ca1b16496606", + "b3c787a117ae42738c315c5cdabd508c", + "edf41d1718984e7dbef2b65799935fd8", + "20dad493a55343efaabbc6f7c1966cf0", + "b91ae0e5a43143e68f53099e85f1afc2", + "a1ec5941f87f4b23bc72188313ac9275", + "6482c21eb5d449f795a9e39fcae6a46e", + "2db4287290eb4c25bc440fc3f2f1d258", + "b470309f2a6b4878852ae9e589764edf", + "63de802f18e44b16a3a2f5029ad7b705", + "670f91d2101c4d87997c228210646f89", + "d8f11947b0d048489bdd649479c50b1f", + "70eee61c4d3842f69569dee3ac8773fa", + "26175752e18140b4a944bfc55f77a069", + "c13ea0c47f6e48f0a804fa9f2f5ce544", + "9e17b92da1aa43d0aa980db275437fde", + "d2186c7599164e528aa3d92f6999a9bb", + "35f1224563044be39e254342c6c5b635", + "87a472fb7193452faea139ab6bf1c9be", + "eb9b58dab8044074b1cac3e39f26e561", + "6359430089654ca4bdd587c125b317a0", + "be06bfcbe41040369d025626b8227b6b", + "082dfef575c94327a5377c3f7278cf5a", + "84d1a26c298b42cd820bcd2e4302a443", + "0987a64b9cea4850998e78d76d31c3b8", + "fa0573f2ebd84a5ba5ebdc0452362887", + "e8e295d7292245fb9f17413599d59960", + "0286aff9c56b43e7abd15f17dd33d6db", + "8b161e12449f4078bb64245518bb596d", + "71181e8f913b412fb72917c55a151723", + "dcd3ba169df34a0395eb5d03405f8835", + "d0b05902a4db4abd8c10cab6178a59ec", + "8294163893bc40c2bef26032babb3938", + "735a35f35dee4d548cd6284f9e3e1f5a", + "b7dfa3f0d2374482af6dc25ec8dd65df", + "c65f5b1c90e24d47a060c0b362749b82", + "01bc8315e7cd4064a8653eae44cea192", + "36156c14c8d544deab0ea65ac5ba7508", + "15d85f4fe15545bc85d3717d7af7bbb1", + "f8d66c452a6d4347b9a8247ad135fd35", + "3c8aa1d02f1541bdb59b0a8dff27148f", + "88677a526eae40a1b5e0b5e9e7a25218", + "eaf5ad9e9e3240799128ef8bbf0a195a", + "48f63d3af7604e8abe4ca94dbae63f48", + "27d3f1981c244549901253b3266de1ff", + "9aae9636296a4245989388403103e0eb", + "139f9e8c84f447b985c2080c17d14a8c", + "1d37c4be099b44b5bc67c2cd976693b9", + "1ad0c7637293497a9a75bfa45c1a06e8", + "4fc202bfa55842b48e59d4a800026331", + "bbb9442a3ec1463790bcf6533f3be905", + "16bd920f956f43b3921b79cec4d76d87", + "c12bc29016124339a6c3cb11f21bfaf0", + "a6b61668ad1146e78c2a9b2556b23703", + "14cc3d3e93c54226bc2f38a4745c1d23", + "16fccf90f2974a938167677b189b67a2", + "714590bcc27e4efc837f870812929f3e", + "9cef8cafa31a47fd9f7410478b5415e8", + "2e4deb55d7b74e2fa09c9f925fd2e751", + "2433cd897d734c78b3d4a62602865415", + "9fac34a2d3e44c95a2591b26ddae5c1e", + "88edaefb70c34854ad6f16d5a82b40e7", + "ba93d6edfed5434397d869ba2bd7aca5", + "7282d9ef9a754bcfb1297081296aed5a", + "946c67b0a3f54ce09c35db7bef44991c", + "f41cf420defb4b109f836fecea8e1d15", + "c10b310f7f6344b39c8d165c887d28f1", + "052b62b792fc4f1183ffb91f18d655c7", + "c4a54f5262014b77964d42429d5e43bf", + "cf540757bc79428bab170e157eb9381f", + "03390d37eba24242ae6c2099d5fe7863", + "88901ee5ca86458288bf82a22db7e379", + "498becb6513a44a4a17cff76a8ae4666", + "5066a8fd18d94f9da0aa0cf354d13452", + "a8d41a62f1b94575a744c12a399de8c8", + "e8cc8dbe0d164a9eaec472ffe1351db9", + "0d3cbcf01ca14063be3ae129db78fdcb", + "1a951db095d441e295bb9ff00d4dba30", + "e120b072886b4d4f94ef506ca3d6a605", + "d5fea5e89ebd4d298c169526eadeeb32", + "8513e53c07c04d75999be1fec6d5b491", + "e7da6c65cec140c3801fca68bcfdebcc", + "eccef3d9147242d9a1e42f4abd0ebe4c", + "b77605d5afb94b8cb579f3c690ea4203", + "aedab95f1bb144c38180f2b2e71c14ff", + "49d11634ca864c04bc87e472d3563e73", + "20163aeba069412eabd3b506a339667f", + "feef17ea90ae4105b2ffb56841ed2adb", + "e97c5c6e969842468f53520dfba1ee8f", + "89b04536243a48049eb777f00fe49555", + "94502dbbc1ab42f48d2d375a8265dbb4", + "090c3e60ff0d4e5fa930767672802d86", + "b577441dde9e43cb9644244ca0cf336e", + "b850f11900ae4874963b35e0b86470e5", + "963fbb3d5b9f4848a8cadf2a2d2b264b", + "52ad436eea8649058457d6380f618ea2", + "5817239aa98046e9be3736688f8c1a5f", + "c48e02dc87d74d50ba6de4aefeb1441e", + "ecc225aab6804d97b1cdd383621c9695", + "fcfda905fd4448b3940b04f4136c53a4", + "16162c715d4745f3aa91c7f38a78a32d", + "4c7287d821f1471e9ebdafa2f8229d28", + "5a65206e09c04176bfd33bcb31cd1ad5", + "9ac85729093c41c1b2a0fef5191b8ab5", + "d774f350171b4c3fb6be768dbf11c726" + ] }, + "id": "gdVdxJt-NYnC", + "outputId": "c54aa613-806e-42fa-b4de-f374c78b1d50" + }, + "outputs": [], + "source": [ + "ELECTRONICS_DATASET = \"burtenshaw/electronics\"\n", + "dataset = load_dataset(ELECTRONICS_DATASET)\n", + "labels = dataset[\"labelled\"].features[\"label\"].names\n", + "int2str = dataset[\"labelled\"].features[\"label\"].int2str" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Running Argilla\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", - "\n", - "1. [Deploy Argilla on Hugging Face Spaces](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla): This is the fastest option and the recommended choice for connecting to external notebooks (e.g., Google Colab) if you have an account on Hugging Face.\n", - "\n", - "2. [Launch Argilla using Argilla's quickstart Docker image](../../getting_started/quickstart.ipynb): This is the recommended option if you want Argilla running on your local machine. Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", - "\n", - "For more information on deployment options, please check the Deployment section of the documentation.\n", - "\n", - "
\n", - "\n", - "Tip\n", - " \n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "
\n", - "\n", - "## Setup\n", - "\n", - "For this tutorial, you'll need to install the Argilla client and a few third-party libraries using `pip`:" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "{'image_url': 'https://tse1.mm.bing.net/th?id=OIP.to3Cddhws6ECl-_ySZ5ShQHaFi&pid=Api',\n", + " 'label': 1,\n", + " 'page_description': '\\n'\n", + " '\\n'\n", + " 'Are you looking for a way to reduce the number of '\n", + " 'purchase orders you need to place for cable assemblies? '\n", + " \"If so, then this guide is for you! We'll show you how to \"\n", + " 'source cable assemblies with fewer purchase orders, '\n", + " \"saving you time and money. We'll cover topics such as \"\n", + " 'understanding the different types of cable assemblies, '\n", + " 'researching suppliers, and negotiating the best prices. '\n", + " \"We'll also provide tips on how to streamline the \"\n", + " 'ordering process and ensure you get the best quality '\n", + " \"products. With this guide, you'll be able to source \"\n", + " 'cable assemblies with fewer purchase orders and get the '\n", + " 'most out of your budget.',\n", + " 'page_name': 'How to Source Cable Assemblies With Fewer Purchase Orders ...'}\n" + ] + } + ], + "source": [ + "# show a sample\n", + "pp.pprint(next(iter(dataset[\"labelled\"])))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 🔫 Zero-Shot Classification" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "U9R2eaRXNYnC" + }, + "source": [ + "### 📷 Images\n", + "\n", + "First, we will explore some zero-shot techniques. For the sake of comparison, we will use the `labelled` portion of the dataset.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "hCR_hYiWNYm7" - }, - "source": [ - "## Introduction\n", - "\n", - "__Real-world multimodal data__ is often a mix of text and images. In this tutorial, we will work with a dataset of electronic products. The dataset contains images of the products and a description of the product. \n", - "\n", - "This notebook uses a dataset of electronics parts and products from a fictional electronics webshop. \n", - "\n", - "Let's get started!" - ] + "id": "SshZkW1eNYnD", + "outputId": "a59a4610-0e25-434a-a6fb-d33394293e57" + }, + "outputs": [], + "source": [ + "# to save time, we'll take a slice of the dataset\n", + "test_dataset = load_dataset(ELECTRONICS_DATASET, split=\"test[:20%]\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "r-2LBdNVNYnD", + "outputId": "6c3cb81f-95de-4530-d501-f8b43f031c7d" + }, + "outputs": [], + "source": [ + "# More models in the model hub.\n", + "model_name = \"openai/clip-vit-large-patch14\"\n", + "classifier = pipeline(\"zero-shot-image-classification\", model=model_name)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "FodfnkJgNYnE" + }, + "source": [ + "First, we can zero-shot classify one image from the dataset: " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 509 + }, + "id": "5FMETGuDNYnE", + "outputId": "508eb028-acdb-428c-a7b1-8f34e2cbdb79" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "B-DDXAVxNYm7" - }, - "outputs": [], - "source": [ - "%pip install argilla \"setfit~=0.2.0\" \"datasets~=2.3.0\" transformers sentence-transformers -qqq" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "{'label': 'switches', 'score': 0.9631496667861938}\n" + ] }, { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "le5C4pzTNYm9" - }, - "source": [ - "Let's import the Argilla module for reading and writing data:" + "data": { + "image/png": "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", + "text/plain": [ + "" ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "image_to_classify = next(iter(dataset[\"test\"]))[\"image_url\"]\n", + "scores = classifier(image_to_classify, candidate_labels=labels)\n", + "# show a sample\n", + "pp.pprint(scores[0])\n", + "Image.open(get(image_to_classify, stream=True).raw)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "vwkVzNhVNYnF" + }, + "source": [ + "Now we will test the accuracy and latency of a zero-shot image classifier on a sub-section of the `labelled` portion of the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102, + "referenced_widgets": [ + "a8ec0defdfe841caaf0caa4de07fb84a", + "14b5a9186b3a47108fafa070c06ab35c", + "3916f72e314d46e883db7e529210b098", + "34453701eb2f40df9a2a0154c02990d4", + "9e98837e01004eba948e9c2d3ea23e5f", + "f7d2ce646a4c42ed893383a4f75af2d6", + "2a967808803e44fea67bd9958542eb43", + "540bda296c904aa48c10db351a11ca66", + "c1f28cff3e064e46a8c9bdd0d705a099", + "fadb08eafb084a4e91f8406055beb502", + "8aae0197e477451a890b1f93cdeebe10" + ] }, + "id": "j_cJkBbbNYnF", + "outputId": "a228a4b3-4ba5-4014-8a6d-7166a688553a" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "KNr0WEVWNYm-" - }, - "outputs": [], - "source": [ - "import argilla as rg" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + " " + ] }, { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "J5ecm_MjNYm-" - }, - "source": [ - "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 9min 20s, sys: 1.19 s, total: 9min 21s\n", + "Wall time: 2min 28s\n" + ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "fEDgKhSVNYm-" - }, - "outputs": [], - "source": [ - "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", - "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"https://localhost:6900\",\n", - " api_key=\"admin.apikey\"\n", - ")" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "\r" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "\n", + "def classify_image(sample):\n", + " label = classifier(sample[\"image_url\"], candidate_labels=labels)[0][\"label\"]\n", + " sample[\"clip_zero_shot\"] = labels.index(label)\n", + " return sample\n", + "\n", + "\n", + "test_dataset = test_dataset.map(classify_image)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.8235294117647058\n" + ] + } + ], + "source": [ + "zero_shot_image_accuracy = accuracy_score(\n", + " test_dataset[\"label\"], test_dataset[\"clip_zero_shot\"]\n", + ")\n", + "print(f\"Accuracy: {zero_shot_image_accuracy}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "sgnz7XtXNYnG" + }, + "source": [ + "😞 Zero-shot image classification with a CLIP model gives an accuracy of **0.82** in just under **2 minutes** for only **20%** of the test data. This score is not impressive. Let's see if the text is more reliable." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "OEV0FJUmNYnG" + }, + "source": [ + "### 📚 Text\n", + "The product description and name also contain valuable information. Let's see what zero-shot classification of those can achieve. " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "edJSqNnaNYnG" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading (…)lve/main/config.json: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.15k/1.15k [00:00<00:00, 711kB/s]\n", + "Downloading pytorch_model.bin: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.63G/1.63G [00:06<00:00, 243MB/s]\n", + "Downloading (…)okenizer_config.json: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26.0/26.0 [00:00<00:00, 16.5kB/s]\n", + "Downloading (…)olve/main/vocab.json: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 899k/899k [00:02<00:00, 401kB/s]\n", + "Downloading (…)olve/main/merges.txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 456k/456k [00:00<00:00, 1.40MB/s]\n", + "Downloading (…)/main/tokenizer.json: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.36M/1.36M [00:00<00:00, 2.81MB/s]\n" + ] + } + ], + "source": [ + "classifier = pipeline(model=\"facebook/bart-large-mnli\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102, + "referenced_widgets": [ + "0ad0c441b68a48c0a8fb9436050d2a1d", + "1183c04b5df54255bad175f72d4a9153", + "4378864bd5004edcba65b59fecbe84d3", + "6f63b713ac2b4358b939c2818d15e67f", + "89ef6f10348a408a8546452e1fa74528", + "7451e0901e6f40f5971359c9ac5d47bb", + "fe63dbf326194c6c813327bd643a85cd", + "5d9977f50b704bd5b4a371387cc71a17", + "c7d383a298da44e491c81887632a89ae", + "4c46328ead39408995ba5a9837d57e94", + "35a4c4fa675546ccb34d38b6e1c7139c" + ] }, + "id": "aMK540c0NYnH", + "outputId": "5b1b7988-fa18-4945-9244-de8ab900325d" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + " " + ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"admin.apikey\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.8235294117647058\n", + "CPU times: user 5min 41s, sys: 1.29 s, total: 5min 42s\n", + "Wall time: 1min 33s\n" + ] }, { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "VgNib6EDNYm-" - }, - "source": [ - "Finally, let's include the imports we need:" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "\r" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "\n", + "def classify_text(sample):\n", + " label = classifier(sample[\"page_description\"], candidate_labels=labels)[\"labels\"][0]\n", + " sample[\"bart_zero_shot\"] = labels.index(label)\n", + " return sample\n", + "\n", + "\n", + "test_dataset = test_dataset.map(classify_text)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.8235294117647058\n" + ] + } + ], + "source": [ + "zero_shot_text_accuracy = accuracy_score(\n", + " test_dataset[\"label\"], test_dataset[\"clip_zero_shot\"]\n", + ")\n", + "print(f\"Accuracy: {zero_shot_text_accuracy}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "IhAmyXNGNYnH" + }, + "source": [ + "😞 Text classification takes less time, but accuracy is also less at __.79__. This shows that some information is held in images that are not in the text. It would be great if we could consolidate this information. 🤞\n", + "\n", + "Furthermore, both of these approaches use large language models that consume a significant amount of computation." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "s_ecJF0ZNYnI" + }, + "source": [ + "## Consolidate data labeling\n", + "\n", + "The scores above from two zero-shot classification approaches reveal that the task is possible but challenging using a zero-shot approach. \n", + "\n", + "With (our modified) Argilla, we can re-label the dataset and combine the information from image and text. Then, we can perform few-shot learning on the dataset.\n", + "\n", + "Spoiler: this should give us a better score than the zero-shot approaches, by combining information in image and text. Furthermore, our resulting language model should have lower latency than the zero-shot models." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bulk Labeling with embeddings\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 📷 Images\n", + "\n", + "Now we can use a clip model to get image embeddings for the images in the dataset. We can then repeat the process of adding vectors to our dataset, but now with an `image_vectors` key." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load CLIP model for image embedding\n", + "image_encoder = SentenceTransformer(\"clip-ViT-B-32\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def encode_image(image_url):\n", + " # utility function to encode image\n", + " image = Image.open(get(image_url, stream=True).raw)\n", + " vector = image_encoder.encode(image).tolist()\n", + " return vector\n", + "\n", + "\n", + "# Encode text field using batched computation\n", + "dataset = dataset.map(\n", + " lambda sample: {\"image_vectors\": encode_image(sample[\"image_url\"])}\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "2pkY0NZ5NYnI" + }, + "source": [ + "### 📚 Text\n", + "\n", + "With Argilla, we can annotate samples using semantic search and the 'find similar' button. There's a complete tutorial on this [here](labelling-textclassification-sentence-transformers-semantic.ipynb). It requires the recently added Similarity search features.\n", + "\n", + "![Argilla with images tutorial](https://docs.v1.argilla.io/en/latest/_static/reference/webapp/features-similaritysearch.png)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "w0JW4z8nNYnI" + }, + "outputs": [], + "source": [ + "# Define sentence transformers model for text embedding\n", + "dataset = load_dataset(ELECTRONICS_DATASET, streaming=True, split=\"unlabelled\")\n", + "encoder = SentenceTransformer(\"all-MiniLM-L6-v2\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "id": "BmZPHluTNYnJ" + }, + "outputs": [], + "source": [ + "# Encode text field using batched computation\n", + "dataset = dataset.map(\n", + " lambda batch: {\"text_vectors\": encoder.encode(batch[\"page_name\"]).tolist()},\n", + " batch_size=32,\n", + " batched=True,\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upload to Argilla\n", + "\n", + "We can upload multiple vectors to Argilla. We just need to use separate keys. We will use `image_vectors` and `text_vectors`." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# Turn vectors into a dictionary\n", + "dataset = dataset.map(\n", + " lambda r: {\"vectors\": {\"image\": r[\"image_vectors\"], \"text\": r[\"text_vectors\"]}},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 84, + "referenced_widgets": [ + "a07c719a0ffc41f9a0e8227562dc69d1", + "dc03df51df3845edac3492bc3ee3391e", + "ebf96889240d44f0b5a16fd945090213", + "c011f7d4aa7b4f66997d1c88804afacf", + "dcadb8f0088d43f6bc1a2cdc72cff730", + "b73e9fcc9e634c2780cc880cc65cc678", + "57ed9e91eb2f45a18ee08f6989bec0a4", + "4ae8401caf984baf9fc132490f11646a", + "e145a20bac85423a8ac6a1841f7ff4d7", + "0b4387ee1a0d4f769b391dcbc4d5477c", + "b8da2402e8e245d2b5ff592f602f138e" + ] + }, + "id": "gaEQm1BdNYnK", + "outputId": "0dfb1340-a685-4071-a4a1-71e6aa42463a" + }, + "outputs": [], + "source": [ + "# we need to set the metadata field length to 200 for longer urls\n", + "os.environ[\"ARGILLA_METADATA_FIELD_LENGTH\"] = \"200\"\n", + "\n", + "# instantiate Argilla records with vectors\n", + "records = [\n", + " rg.TextClassificationRecord(\n", + " text=sample[\"page_name\"],\n", + " metadata=dict(_image_url=sample[\"image_url\"]),\n", + " vectors=sample[\"vectors\"],\n", + " )\n", + " for sample in dataset\n", + "]\n", + "dataset_rg = rg.DatasetForTextClassification(records)\n", + "\n", + "# upload recors with vectors to Argilla\n", + "rg.log(\n", + " records=dataset_rg,\n", + " name=\"electronics_with_vectors\",\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "I5G3haEnNYnL" + }, + "source": [ + "![Screenshot_20230224_214133.png](data:image/png;base64,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CCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdg6dcLjdan/c7jUbz1O25EEIIIYQQQjyaHBABovBw8nq98Pv98Hg8rTVCCCGEEEII8ehxQJrAteUnEAhIfoQQQgghhBD7jf0uQJSfWq3mMj9CCCGEEEIIsT85IBkgCpAyP0IIIYQQQoj9zQHJAHESQgghhBBCiP3NAesDJIQQQgghhBD7mwMiQEIIIYQQQghxIJAACSGEEEIIIToGCZAQQgghhBCiYzhkBSifz7c+CSGEEEIIIcSe4SmXy/t1RIJ6vY5isYhUKtVasuds3LgRP/jBD3DPPfe47319fTj//PNx3nnnue9CCCGEEEIIsTsOGQEaHx/Hhz70ISc7lJ5oNIp7770XX//613HaaafhqU99amvLvaNUKrmXsvp8vtaSfQ/PEQgE4PWqxaEQQgghhBAHkkMmIqfoUH4oOpQfsnr1arz1rW/FJZdc4gTp4XDDDTdg8+bNrW+75k9/+lPr08OD58hkMq1vQgghhBBCiAPFISNAzPYw87Mzvb29WLRoEW6++ebWkofPyMgI0uk0rr/++u1CRTnK5XJYt26d+85tKDPchnB7npvrmd1q014+U654nKmpqda35rHbbN26dYfzkkKhgNtvvx133303arVaa+lf4LL777/fnYfn2xXt47LM7fPxGiqVivs8s0wsP69j5vG4Hdffd9992LRpkztee1/CZUIIIYQQQhwqHFJtstqZn52hBO2LQREoGw8++KDLLN14441ORnp6elzzuIGBAbcNhePOO+/E8uXLMT09jauuugqLFy92L3dtZ4q4/Nprr3XLWa621HA+Uxh4PsLjrV+/Hocffrj7/NBDDznJ+POf/4x58+a55oK/+93vdhAsctlllyEUCrmycNuZYkJ4LEpP+7jt8/Ea2vU1s0wsM5sn8njXXHMNRkdH3XaXX345wuGwq2fK0IYNG9z23JdlFUIIIYQQ4lDhkBEgBt+7yvIwQGd24thjj20tefhQIHicZDKJoaEhlx2JRCLweDw7yNfatWudGFGWjjrqKPd52bJlThImJyfd8iOPPNItX7VqFWKxWGvPXcPBHU4++WR3jjPOOAPz5893kkGB4r4UIB6LmZuZnHvuuW5b9mHiuXeWQB73xBNPdMdlOXcHr53785w83mGHHbY968VzM8vGuuB6yhrh8ZcsWeI+CyGEEEIIcShwyAjQc5/7XHz/+993QXcbBuwcFY6BOQP0/Q2bqM2Um3g87qSJy1mmNpSTuWgPkMA5szo8xrZt23Drrbe6idkfDqQwE/Z9uuKKK5xwzcVs2bM2rEtmf9rnY1ZoVwNV8HopSNyeGaKFCxe21gghhBBCCHHwc8gIEDMzHO2NI8F98pOfxBe+8AV8+MMfxtjYmJvYFG1/w6zUli1bWt+A4eFhly2ZuZziwqxQG44IR2YOikCxoTgRbsvMC4f4Zibq1FNPdRMzTPzehs3sgsEgzj77bJdtopTszMzj7pw9apcjm826OWWHTf2YieL5jjjiiO3N/nam3eeqq6tLI9sJIYQQQohDCt973vOe97U+7xfYV6Zare5RVmRn1qxZg9NPP91lMxjwP+UpT8FFF13kgvUvf/nLLojf20wQM0oUC+77wAMPYOXKlW45hYGZGC7nNnz3ENfxM8WA5afs3HXXXa65GtezORibznF5O4vC/jbctr2c4sAme8zwcOIxKRLM5LBPDbdnHyQKEAcc4PEpRBMTE65vThsesz0wAedswsZszMx65XEvvfRSJ4gUnfb52KSP/X3amSNeJ6+J9cpy8Np5TDZ3I8z0zKxX1glHtqOUzpVZEkIIIYQQ4mDikHoR6u6gmHziE5/Apz/96daS/QflY+fmaYSjtO3N+4V2dRzWF6VxtuMwk0OB2R3tclx88cW48MILW0tnZ7bracMysfnd4x//+NYSIYQQQgghDg0eM+2XmKE4EPJDZpOFvZEfsqvjsInZ7o4zl/yQfVGONsw4/epXv3LZOCGEEEIIIQ41HjMZICGEEEIIIYSYC/VgF0IIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMB0SA+CJOvttGCCGEEEIIIfYn+12AKD+cCoVCa4kQQgghhBBC7B8OSAaIL+akAOVyOWWChBBCCCGEEPuN/f4iVMKXoVYqFZRKJTev1WoSISGEEEIIIcSjzgERIMoOJ4pPW34kQEIIIYQQQohHmwMiQG3a0iP5EUIIIYQQQuwPDqgACSGEEEIIIcT+RO8BEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMEiAhhBBCCCFExyABEkIIIYQQQnQMnnK53Gh9PqA0GgdFMYQQQgghhBCPYQ64AM0Un/ZnyZAQQgghhBDi0eCAChBFpz35/X74fD54PJ7WWiGEEEIIIYTYtxwQAZqZ6fF6vQgEAu67EEIIIYQQQjyaHLBBECg/zPZIfoQQQgghhBD7i/0uQO0mb7VaDcFgsLVUCCGEEEIIIR59DkgGqF6vK/MjhBBCCCGE2O8cMAHioAdCCCGEEEIIsT85IE3gKEAa7U0IIYQQQgixvzkgGSBKkBBCCCGEEELsbw5IBkgIIYQQQgghDgT7/T1AHP2tVCohlUq1lghxcLBhSwH3rs9j49ZCa8lji0VDEaxeEsXi+ZHWktl5LNfF3tSDEEIIIR57SIBmYSpdwQMbC7j1nnRriTgUOXpNEisWRdCV3P2og7fek8HW0RKWLohgzbJYa+lji3seymHd5gKG+kNWL4nW0r/msV4Xe1oPQgghhHhsIgHaBZSfG+7MIBLy4vTjulpLxaHIlTdNoVCq44TDE7NKELMddz2YwylHpxCP+eH3PTYH6KjWGsjmqrjm1mkctjy2ywxIJ9TFntSDEEIIIR67HJBBEA52mPmh/CwcDLeWiEMV3kPeS97T2WBTL2Y7HsvyQ3htvEZeK695V3RCXexJPQghhBDisYsEaBew2RszP4uHJECHOryHvJe7a8rIfi5s6vVYlp82vEZe62x9ezqlLuaqByGEEEI8djkkBGhkZARbt27dq4n7CCGEEEIIIcRMDgkBYr+hoaGhvZq4jxBCCCGEEELMRE3ghBBCCCGEEB2DBEgIIYQQQgjRMUiAHiUuuWocE9OV1jfxWGPTtiJuuTvT+taE34fHy61vO8Lngfz8j6PI5Xdsnsnvt96747EONXjdvEZO1902vcOzv6tr3pew7h7N4wshhBDisYUE6FFg/ZYCNg8X3Qsl9yW/u3Ic92+YfdheBp0/vHhb65t4NBnoDeJmE55avfkaLc5vuTuN7qTffd+ZDa3RxjgiXTi84z+7UqWO4bFdixM5FO5rJldFxiTEDTtu1/eby8bw4Mbms7qra96XsO5Yh0IIIYQQe4LvPe95z/tan/cLjUbDDVAQDu/5ENPZbBaJxN69sf3h7NPm5rvSOO6wZOvb3nPdbWk3xO5963I4YlUcXo/HiQt/Geexr799Gt2pIFIJP37wm23YuLWIK2+atCCy5l7KWCzV8WsLIG+8M4171+WxfGEUd9yfxf3rc9gyUkYi5rd5yf3afvt9WZTKdcwfCOMnl4zYvg2XnVixOIrfmzBda+e864GcC9hjEV+rhMB0poqf/3HESdq6zUWsXBIF34n78z+NWBkzFrwWsGpp1JX9QPCnayeQtOuMhP9SZkLpuOP+nNXJ3r28cnf39OHcb5/Pg62jJXi9HvSkArj3oTzoQquXxnDVzVO4/IZJd29Yfq5vn+NXl466e+Wxev3pH0Zc1ihfqKFu8fuKRc37/Eju654y2zU/nLoglLScXcfJR6esTCFXrmtumcbhK+PbrzlrgsTPfOZGJ8pYZs/1rp51HmfnZ5PPI//98JhRu17+m7nkqgk8uKlgddfA4qHIXz0re8LDvV4hhBBCHLooA7SPKVfqGBkvYe3yGHq6gi5obcN1z75wEOec3IN7Hsq5Zdl8Fefa9xc+bT4e2tzMEtxkQdn8gRD+9slD7jiXWTB9zNoEhiyIPOWYlAWOEQT9Hjz3iYNuohCQC8/ss2DYi6ec22/ylXeBMY9xxgnduP6OHd+DUyjW8IQz+tz6YMCD9Xbuux7IotfKzGUnHZU6YM2KarUGknG/C4oZKLehFAyPlXD0mnhryYFl2YIIHrIAnPDerTZhrFQbmGcCwDq84LTev2om1+bqW6bcizi5XV93sLUUj/i+HiywDpgVmslt92bcDwMsO+WH/x5mPuvHrEk4qdzVs0m4/QufOoShvpBr9va8Jw3iqY/rd2IlhBBCCLGnSID2MfylmlmBP10zgXK57n7VbhMONX+hZgZnJuGQFz7bJ2JzwoCu/RLWof4QpjN/3ZcoX6zjx78dxv/9bhh1pg92gsEns0Q/vWQE19827aRiJvz2h2vGXdOqscmyy14ctiKOqXQF3/3lVicbseje/6K+L2B25fjDk+jvCToJYlBMOduwtWgiaMtnCMOBhBmyrSNFl8WYmCq75l8BExg2f2S9/tGeAWY8dwVFqX2PKQBtHul9PVigrPj9O/7n5ajVCTywMe+eL97TYMC7w7POTA/lflfPJmn/+2FztwF7NvgyU/67mSmQQgghhBBzIQHax7DfwwlHJF2m5vzTelyAzGBwb2AQ3e5Mz4A3Ft1RmAoWJN9pQvCsJ8zDMx8/r7V0RxhcMiB/+vkDLoNw4pE7NvO5/vY0Tj66y2Wk2gEkm1ydc1KP++Xd42ngzvtzqFqA3S4/myYR9ncplB79X92Z9Vo4L4wb70i7JoTHrIljsO/gCXYZfC8aiuCP105ggZWT35nxmzJhZb0+7pSe1pZ/zcx7TBkg++K+HizcYPdskZVzJnTBJ57V77Jb28ZKrq5m1gMFlz8g7OrZnEnI6oBN7vgccqJ8CiGEEELsKRKgfcy4BWbsBxI3aeHEAPm+9bMPXLArTj2mC7ffl3G/lLM/yYkmVKSvK4Cr7fu4BXyRkA8XXzaG313RHF2MxKM+k5WG64B+5Oq46xz+sz+M4Ee/Hf6rZkIL54Vw5Y2Trq9Fu6kSRecXfxp1+4xPVbBqSdT1kfjz9ZNu/Q8vHrbgvuqaJP3q0jG37NGGfahWLI6Y/CSdZBxssE/OttGia9pF2PeFonjx5WO4+pZpt2xXHL0msf0etwWIgwc80vt6IKHs83q+/bMtrhnbWSd2t9Y0SdtzxjL/0p4x9i0bGgjt8KyzH1xfd2CXz+ZMmJmkXP3vL7e5bBn7BAkhhBBC7CmeMnu+70c4AEKpVEIqlWotmZutW7diaGio9W3PeDj7tPnajzfh5c9a2Pp28EJhYUbg4cLsDsc4YObisc7u7umjcb8fyb15pPd1T5jtmg+WZ39/PZuHyr91IYQQQuw7lAE6hHmkQXK7D4XY9zySe/Noy8+hgJ5NIYQQQjxaHBKRls/ncxmdvZm4jxBCCCGEEELM5JAQoIGBAdecbW8m7iOEEEIIIYQQM1FbG9HxcKAKvpeJ/U4e6/Aaea285l3RKXUxVz0IIYQQ4rGLBGgXHL0miStvmnLD8opDG95D3kve09lYvSSKdZsLyOaqj+nAn9fGa+S18pp3RSfUxZ7UgxBCCCEeu0iAdsGKRREUSnX3nhJxaMN7yHvJezobi+dH3Atnr7l1Gg9s2Lshyw8leG28Rl4rr3lXdEJd7Ek9CCGEEOKxyyExDPaBYCpdwQMbC7j1nnRriTgUYeaH8tOVDLSWzM6GLQXcuz6PjVsLrSWPLdjcixmPPQn6H8t1sTf1IIQQQojHHhIgIYQQQgghRMegJnBCCCGEEEKIjkECJIQQQgghhOgYDogAeTx6w7sQQgghhBBi/7PfBagtP/V63c2FEEIIIYQQYn9xQDJAXq8X1Wq19U0IIYQQQggh9g8HLAOUy+XcXAghhBBCCCH2FwckA+Tz+ZwISYKEEEIIIYQQ+5MD1gQuEAigWCxKgoQQQgghhBD7jf3+IlTSaDTcIAh8KSoliJ8TiQSCwaCTIyGEEEIIIYR4NDhgAkQoPhwMgSJk5XCfua69XgghhBBCCCH2JQdEgNq0RYcCRBlqZ4aEEEIIIYQQ4tHggAoQmZntaX9WBkgIIYQQQgjxaHDABUgIIYQQQggh9hcacUAIIYQQQgjRMUiAhBBCCCGEEB2DBEgIIYQQQgjRMUiAhBBCCCGEEB2DBEgIIYQQQgjRMUiAhBBCCCGEEB2DBEgIIYQQQgjRMRwc7wGaHoHvzkuBdbcCE1tbC4UQQgghhBBi33JgBajRgPfOP8Nz6bfhOe4ieNacDPQstFJ5WhsIIYQQQgghxL7jgAqQ945L4bnpt/A+6bVA76LWUiGEEEIIIYR4dDhwfYCmRlzmR/IjhBBCCCGE2F8cMAHy3XWpa/Ym+RFCCCGEEELsLw5cBmjdrc0+P0IIIYQQQgixnzhwAsTR3jjggRBCCCGEEELsJw7se4A02psQQgghhBBiP3JgBUgIIYQQQggh9iMSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSICGEEEIIIUTHIAESQgghhBBCdAwSoDl45arVWL6L6ZU/tZV3fwzn/tW61+AnqOC2j1yA5Wsvwifubh4HlWvw7jNWY9UzPov7Kz/b/XGFEEIIIYQQjwqecrncaH3er/g+9yp43/DfrW8HLxObt6Bg84vfdS4+tOFv8bX/+TustO+RnvnoWW8C9NRf4cyv/A/+foXb3AijZ0EPIhSec1+M7y95L67+zosw8qmL8LQvAa/9yW/w1rUFO+7kLMeN4d5vfgS/GnwDPvD0Re6IQgghhBBCiH2DMkBz0LNgPhbY1BOyL744BtrfI831thCJgeay5mTyw8WBU/C+Dz0V0es+jrd8+iN4+5ceRO9z3o83reXKyG6O+yB+/c3/w3d/eDmmuakQQgghhBBinyEBesSM4bf/+gb8/etb05dvbC03B3rce/Hhx/tw2ee+jjuiT8VH3nsKAq11s3Mc3n/FvbjvW3+LVGuJEEIIIYQQYt8gARJCCCGEEEJ0DBKgR0wfnvCuz+ILn2tNrz6+tRyo/PEDePfvajjr9S/DEfmf458+cA0qrXWzM40/fPINeNt32qMnCCGEEEIIIfYVEqBHTA2ZkS3YvLk9TbjBDTjq2/v++efIn/Q2fPL//RM++nfLMf6/78a/3z6XAm3FTRdfgp//7nb1ARJCCCGEEGIfIwF6xGzGd155Ls46tz29ExdzGOyPvRvfHT8Cb/m3F6HXtjrsDR/HSxdvwDfe+mnctlsHWou3XnwX7vnas9UHSAghhBBCiH2MhsEWQgghhBBCdAzKAAkhhBBCCCE6BgmQEEIIIYQQomOQAAkhhBBCCCE6BgmQEEIIIYQQomOQAAkhhBBCCCE6BgmQEEIIIYQQomOQAAkhhBBCCCE6BgnQIUhhYhvSu32Z6p5QQXoibX+Lmeybuj04KExMoND63OkU7rsE3/vFDdh2yNzbAu695Af4+Q3b9uu/0YPymamksW1CT7IQQoh9hwRoDu762AU492N3t77tKT/DK8//GO5qfdtbpu/4DX59x3Tr285sxbdfcz5e+Z3R1vdd85NXr8Yrf9r6sgMV3PalF+GUo0/EuU+6ECccfQqe87ErMN5aOyt3fwznvvpnrS87Mvu5Hj485prjTsNJp7an5+Hz99uKn74Gy2cpx56wL+p2Jnw+Vh19crOMxx2DIx7/Tlw8Z2U+uoz/9p047+hjcMqTnowzbH7OG3+EB+eMonfzzPLeP4Ln+S/YOVYdizf+9q8Lc+P7z8TyfXKOXXDZO3Hqy76OdesnMBloLdsrNuLK71+FDa1v+4M/v+NMvOTr67BuYgoPq8h7ye6emUfj3/decfVHcOFFH8ZVra9CCCHEI0UCdBCy5Vcfx7//amvr284M4dU/vAM/eGl/6/veMf7Dv8OLfnw4vnDNLbjx6qtw6w3/i4tuehPe+J3ZpODAceb7rsJ1Vsbm9D28bmVrxSPg0ajbBS/+ZrOMN12PS145grf/v+/iQNVm5faP4G/eOYG//+31uNXKdOOtf8CHY1/ACz5yU2uLA00ev/nWD3esn8pv8bUfj7S+7Hvuu/5mdD/j3XjH6x+Pw1rL9o6b8JV3fw03tr49+tyP627uxjPf/Y944+PXtpY9ehz0z8xZ/4Zbrv0QTmt9FUIIIR4pEqC94CevvgBv/9ibcPapp+H4o4/BRZ+6vdU8hVmV5+OU45qZgKfb8qpbbuz86/lPX7M9o1S5/VN4yknc52QcffrL8T/8ifnid+CF39qMzd96CU563hdxH+7Gv5//Arz2jWfj+FYWZOYvsvzl9pzjjnfnPf6kZ+ATt+/up/778fUvb8ALPvNPOD7SWhRYhle+922Yn3vAfd3t8Wq34xPPYjaG5X0+vrCLc1Ue+jZecdbJVtbTcPRx5+Mff/sopkPGr8C/PL15ruOPOwPP+dJf7seD33o1Tnd1ezyOPq+Vldmrup3lGLslgMGnX4gjt2zCFn6dpXwbPvvUv2QV+Xyseia+4HYArn7PqXjet6gH47j8/c+we2D1fdLxOOX5X8Jt7uL+uswzufjz/4MV//I5PGewnTfoxZnvejee7d3SLFPldnzh+WfgaHfck3H6G382I/s3gZ+98Tx372e9d7PW+Th+wjLxuPb8XPSRa3YtgYufhIsmv4NvzEinTP/gW/jzojVY0PrOY138jvOtDM1n7finf2rGtb8CH/rUs5plPPoUvPanrTLulBlkZs7dR7vnz/va+hn3fLZjG7u8tvvx+ee9D5fjCrzXlr/tYttutnPt4t7M+u+B/x149Zua//7fzoP+hd+8/QX46vrN+OaLT8Ozv2gH4TPygtfj9Xac5jXM/mzyv1FvfN+r3X+jjj76bLz3m1/Ciy44y+7JETjm2V/ZZYZtzmfGmPrFX/67d867/7j93u72+t75Mbz+cXzOjsERT96Dezjbs7nPMpBCCCFEEwnQXrEB11Zeg0v4K+kNH8Oqr38SP+H/qW/4Et7+/aPx39de6zIBX+27HVc2d9gtv/zM93DMZ7nPtbjhk09BZngrcOG/439evKCZVfjea7HKbXknCuf8H278qyzIVtx2x0L80+9vdOe95sNL8c3P/7a1blfciTsfXI41O/+ovPZv8fFXH28f5jjelbej/8vMxlh5/+tofO+dX9qpWdBGfOGNX8fyL1zRzC79/uXY8M6P4A+ttdvZcBW+9/0ftKbf4PZZ0iVbrmlvY9Nv7tgpoK7g4g+8A+te/Gt3rhuv/SRWf/M9+G9GbHY/Xv/FPnz0z6zbG/HHV43jM9+4be/qdrZjzMH4Ly/G7fMXYr4r35tw97Pb5fsSjvn+a/Ghm8wBLjgbuOJSF1xuudSelMUZ/OkSXt3duPTKIQv2Uqj89oN42/oX43fXWX1fdw0+s+pb+KevtjNXsz0Pd+OOe4awes1OjaZSj8Pb3vNkKxOQf+g2pJ/0JdzgjvsjPP+hz+PrbYnacBnSL7rY3ftbf/86jLz/g7i4LQeO3dT53V/Fp8dfgz/yuDf9FP8wNIJt+eZeO7IAL3xBF77/tXZ2YSO+8Z2H8IwXnA1fawm23o7bF70Df7yJz9oV+Nel38bntj+GN+K+RV9ulvEXL8b6T5kYttbskp3v+azHbt2vZ/wM17Su7Ziffgk/z6/E6773PpyJM/ABW/7xC91Rd8PMe7P7fw8bHhzEv15pz9dHdzzoRR/9Jl6yYAFe8q2r8MPXtm7wHQWc+xPbltfgns0hfJL78tl83cys4wbc3/de/NnOd8MXzsCvPrcOr/31ZXZPfoNXFr+Ln/1Va965nxkyvqz9373P45Tf/we+48xojuu7roLX/pbP2fX45Mpv4OM/bT9Mu76Hu302hRBCiH2IBGgvWXHEkc02+YHFWNi3AQ8+AExbEJs9/2k4qhVD9D7tSaBOzMWaw7vwk3e9EO/93C9x/YIn4bUnDbXW7EwfDj+yt/V5JhYsv/YFmHfzD/DVj70Db/rKjchXaq11D4c5jnf8k/D0VjECRz4NF2SvxJ9mWsn0pbhidAkSd/6kKS2XTCISuAXX7W0Xqj3iRgvyujFU/0PzXP+3AbXuO3D9da378eQX4sxWlqv3BV/Gr95yVPPLX7Hrut2bY7jswqnMKByPx33Sh7d+4NlIufIdg2c/f3uF4W8uCuOKP1lEt/YCnDN6KX4/PY3fXwo8758vxPifL0Vly6W4PHI+nmxR5w2XXY3uwTp+7wTwJ1hf68YdvDjHbM/D3ERXPxt/f04Wv/n+5/De178Pv9xSRbWdruw5D089ZftDjKesuRp/3qHd1+x1jqHDsfb+/8TfvuFj+OolGZz2oqdiTbS5186knvNiHPfbbzTl6qav4Tt4Pl458x/M0Dl43Qvm4abvfx3//vZ/wJdvzKOyPaU649oXL8b8zevQzF3uIbMeu3W/XjTY+vd9Cv75V/+JZ81yDbMzo3xz/XtYfuT2/2bMSd9h+Mth+Ww+F6e2b9Wzn4ETr7sclzW/Yv6iRW4e6O1BPN6DXrfdIiye7T8ve8Bf/rvXi954Bum0fd7j6wtg8cI+rH+ofad2fQ93+2wKIYQQ+xAJ0AHksH/4Da7/xhtxEq7HJ15wKp75lY2tNXvKZXjXOU/E+y/Pof+sV+Nf3nbRjGZEu+JwHL78Qdyzs5Dc/V287cuMdPf2eHMxiCe+9W148s6B1+LT8LznPqc1XYQjU63lOzH/lPY2Nl10hEnF7jnuJR/GK49rfdmPbO8DdPWNuPXKL+Mly+aKao/DE8/bgEt/93tcOn46zn3c2TjlwUvxy0suReacC7C4tdUOHPsS/Osr5rq4tThizVbce88OaRsLVP+Ij3/wl82M0zdebHLyLayzbZ/1Tx/Dy05obvJw2V7nqSfji1f8Dh97Zj9G/+8f8bgz3ok/7FSM7QSegJc/4WZ84wfjuPjrP8XyF7x4x2u+7J9x5kUfxGX5fpz9mn/G25/4yJ7CHXg0jz0ns/x7OKDM/czsOY/s+vb1symEEELMhgRoH5A6ci0ql/xse1+C8Z/9Ctt/OE8mkRjbjA1u3Th+8NNr3WI2N/v5Bz+Jq5Kn4qmv/xd8980n4Jarm82CUskEan/5yXt2ttyJ26NPxwf+5WV46qkrEbj95jlGqlqJl716Mb7z5o/gxvaospWH8JUPfBxbYivmPt6Nv8Jfmuv/DL+vrN1RXlLn4Iz+9cgc/oymtDzzMBTWTyIwlw88LI7H2adOYqv3vJYknYeukU0o27lS55yO+Mz78Z1X43EfvNp93tO63d0x9gyW7178Ykb/hh/9pogzzm02aTr1vFNwx6c+hQdOPhuH4RScf8wt+LcvbsE5FzTbJ55w1qmY3ObFBS0BvKBrGJvKfrdud1z4uhfigfe/Hj/YPt7zOC7/1w/jh/X5rjnT3bfcjRPf/Gm88bnn49iBu3DTrc2tHBN/wM+v2f4Q4xc3r8LhOzSXnL3Oczd+Ge/9wRYccf7L8I7P/jueGb0e1+0mNXP8y5+Nya+8EB+77Cy89Dk7qu2WO+9A9Bnvw/tf9mSctjKA227e/VPtsPsa3bqh+by6ut71PrMfe+f7dQ0+9KRX4ttuQMAEEtEqKu0q3cNzPVr/Hv7q2fzhT3D9SWfirObXvWauZ2ZW9vH17fbZFEIIIfYhEqB9wXHvwpefciWefwI7JZ+Ml247Eqe3VmH+8/EPT7kNb7F1x5/0SmxY2W7rM4SV86/Fu849G0975pNxyr9P4PVvfqJbM/+Jz8XSX7wEx7/0G7v/BXb+s/HKw3+JF571TDztSafhFdfF58zY9D77S/j2s+7E359yTLPj8skvwu+P+w/85wssCJ3reKcfia2vaF7jsS+4Ek/90rt2auq3CH//b8/BLa85pdmR/OSX4If+o7B8r5sRNbn8fWxW1p527vAfwIXvfS8GPv94HM31xz0e771nBY7ir8+L/w4ffe6teNXJzbI+/mu9eOfrTnV77XHd7uYYe8ZO5Tv9Fbj6KV/EP7eTOI97Ck7NZnGsiRA565zlGK+ejSe21gee8B68v//zeJzrrH88Hve+e7HiyLl/Wg8c+U/40b/14AtPONGd93jWS+7v8Z1/ah74rFe8FMMfPgUXPvOZOPsJ38P4Ere4yeKzkPzG+c3n4nEfReRfPo0X7uAms9d5bMVKVP77BTj6SfbsnPUK/OqoN+FVuxvAbPHT8cTIg8g+/aW4cKeAef6zX44j7B6dbmW88NRX47r4HmRpHvdqvDn+Las/u+bzvoDASbvMo+3m2Dvfr3/ELU//BzzPDQh4Jp73nPX44Mnn4T2X2dc9PNe+/vewnZ2fzc/E8f5P/+2cGdLZmOuZmZ19e327fTaFEEKIfYinXC43Wp/3K77PvQreN/x369tjhMIEtlUSGEzuzU+gBUxsqyAxmLQQ7OFRSW/DOHr38rx8EWoBkZ6/Pu/uj2f7bcsgMNiD9kByu4IvFK0kBrFXRXqYsLyZwCB6di4QX6CYCWDwr1bsBfvgGI+oLh7B+flSS/Ts6j7ZM7fZ7v2CXd/DPSnvbHU+673Ya/icjZuxPxrP0O6P/Wg8u4/Kv4d98XzvxOzPzO7Zd9e3+2dTCCGE2BdIgIQQQgghhBAdg5rACSGEEEIIIToGCZAQQgghhBCiY5AACSGEEEIIIToG9QGaC/8+74EtRGdRbQ+vLIQQQghx4FEGSAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMESAghhBBCCNExSICEEEIIIYQQHYMEaA4aDZvch+bnXSzYs8m25R83d5+5tD3n4ubn9nrO21P7u5vxj5u3J/5xO8741pq4YXs+8/PMZW7iotactOcHEzPKtv0SOGvNyfbPbsUeTqQ9n8lO62c9Z2suhBBCCCEODSRAc+Fp8H+Gzbf/zQ82by5owvnOE5nxuXkcfuBf9sV9b23QWrb9sPyrNXHW/Mx9uMDt2MRtaLP2YVpzN5HW3M3sL27uAvjmbts3cydwx7epPXdr29MBhKdneVvF8LTK7q61tdyJX+vi3TU2l+yS5lZN2nXh5q3v/OCWtZYTdxr+RWzuTtX8KIQQQgghDiEkQHPgsai3wWjXom7OPTZx7ia3ziYLg91852mW5Tymm2Z+njG1t3HHb33n3K1nGdznZhBuq1rz1nazTO319ldzp1bZuJwHcNfoIvsdt/nLdADh6VvF4+SkhHMrc/PaWdPbVxtcyC8z7tWMicvb97FZnzvO3XJ+bh27eS63W3PiGZoncsUSQgghhBCHDhKgOagzxGW0W7d5zaShxoUtAUHV5hWbOJ8x1Xfx3Sa05nX+sQPUG605p9YyfkK95uae1sTvnLMsVTsv5zXb1k12DM4bVjBPvWJl3fGc7nPNltdan2HbcVvbz8Pz1O1odl0eO41rhmfLeW43d6bB6+f8ANI+PedWTlckN+fV2KXZnIJYb80piLxXHt6n9nynqXnNze1NdZpzk772/m4Z//Az7z3rh6fnofmhPQkhhBBCiEMKCdAcMOBtikFzzqiXYbepB/XHJi+VYpdTc33zc922455UGhegMxB3wbY7pE1/CbxrFohzu+3Hsu+cU7m8rhz2ifu7wjXnjYa3eQ43t/1bx+DU8NgydwwvTNdQtsl0zC2zj/B4qu56mmdhCbjMnc7B4jYLeYDgqVmGVhEoJszQ8H5QGqs2r3pqVvqqmzvFNKNzKtcWRU72nfPqjGXNK29NPGbrjzuLVYK7564COLf/8ZzNb65MXC2EEEIIIQ4dJEBz4OGv/4x/zTw83rLNy6h5qy5grjux8Ll5zeZVmzivef/yuWFT3b47CbE57DujZy8zMDw+D799YsjuzurmjLub8kGJ4fqG7cepuX9z4nfbz9bzvH8pU7Mc7fI02ut4y1t2Y3vaVLF1Bdvf5k4ZWsudXDHA55wiwM/N0rXn+w0Wgad0RWp+aP/ttbJ5rfJYBz43tyswCWp4a3a9JkV2rzh3QuSWsa74mYJktWGfm7XCurR7YhMzbmBmzB3LzmPHdeez76x7nseVwP7nmsgJIYQQQohDBk+5XD4gEZzvc6+C9w3/3fp28NLwBvi3yY8JQoO5Bb+bLC6Gz+SIcycnDIkZDO9Qm26p++RCaNuQATMD7+aObpPmR/eZAbYJSmv5dlrfXR+W5scmXGYL+N1j+7VK41YwcHfHdEvbntvOXdhxWBab6r5mloT7u+1sR5dlctvza/skPPb+x8mWndtlfOx7s0a3l6752f5nPuO2deutqB67CDpc80p4bfzUXN+Gt4tf6TzuM6fWzFzRJInfmmd0B23xV1Wx83exI9VK64MQQgghxIGnHRmL2WDzMJvYPKrWoAwF4a153WS6AjYrq5s8sF9IveZBrZk8cH2FOLF/CvumcBtuX4cPFQRQtuNUPUH7HESp3vxeQQhV+1xrTXU7Hyeet1b3o2LLqva52rB9bc7vNX62fWt23Gbzt9bcTc3zcqpamapWyJoVrua28zf3qflNHoImAH4X5LNvTNMFKrafTW57U7ZWRoQ+4uatP24BP7kV7lNzkVu6Z7S3ax2ifUg3bw4UYZ85t8mds7na1jvrcWUr2xL2B6rahdZrdbtW+2yrK2ZBNRPVml27S+7wc+t7xeZl2397EzgTmbKdrGjylG9LDa/d1jFr1LSk5jmbYsaPreu1iWXj55n1477bH/c/mzh3tOdCCCGEEGK/ogzQHNTZ5M2EodGgLLD5E+B3wbBJkZ9hs4uD3dTMM/hsIpzbdm6L9tTekuuYYrD9LQhv+NgsjnpkwbwF380b0vzbS0lxf+omKpQB25+H4F/ucG2HZfjf3Ifz9lG4SbOBV832rZpEcHtmsZrS5DdZ8FoZeCYG6PYVXj+zJyXb12fXG7JtGy7r4bInPGD7NPxqn2d8daLCA7m8CRe0lu8O7u/2dR94QLf39uPOpHllzbUNsxzm4jwBXo+r0blpn2xn2iezdWWb2V1HuFCF12d1ZwdueG2F1V1zdDg7py1z9cFCU85sn+3l3eGLwV0pl62Ts4paHzsDZYCEEEIIcRAhAZqDGoomBUGLV0Ouv0ggkLV4bh1yU/ehPrURjWIR+UwWtXIF1UIJxXwBdQvMS/UqyuWSC5B9FqAHgiEEw0EEQyH4bQqGwwiFgvCZ/Hi9FlgzSLY/FK66iZGbzEZc/oGZG7Mvb81vwSRj52bWg5kGlyGx4Nw5DJMTdhyvRedeW84R3tyxfbaf7WNbWUAfsO0j8EV6EetaAH9yAAgkrYzdVoCUndPnZKJa5+h2pkjst2TH5nm8VlaW0QXyLHAriN8xjm8t3Fvau7n5X47BkfKctDETY9fL6+OV1GomdEzz2IVvuusebL3uZoyt24jKVBqNQgENq3u/FT1gdRwMRJv1Hwzazs2685jY8DQBu754NObWVez+Thaz6FoyhCMueBwwMARPxJbbeSpWF6xnYrWLoKt3ZtdYvuZyV+z2tbdmDlvumkfawvbiv1xhByABEkIIIcRBhARoDkx5XCd7VCZQyTyI3OStmJ68DYWp+xGa2oRSehrT09MoF4oo2VSvNhAOmWQEIwhFYohGo4gnEvAHAhaMWxBuAXk1kEHNQ9FhbFizYJ4yYyeziYF7vVa1dQzU7fxskuaifpvYOYdCxO1scg7S+uyrWzmZ2bFAncLEdQzOKUIsPmXIZ0G/lwMjcDt/1MqSRDlq4pMYQE/3EkTiSxFO2JRaBE/IlnujTobYVKxmcuAzAWDGhYMFuIO2j92M8J2ocHvCbNjOQf9stK/Fis2rAzWLgxnwWFzOhBsvv+KyWFRCuKZrfk8A01snMXrzHajccCPuv/k2bDUZKo2No1Eqo1DM20Gr8Nk+fjtqJBRF2MQzHI24eSRkEuqyag2TpAD8QdsqHkLVxKl7yQL4jjsK/UcfgeTyRQjO70M9GEXBysAmdGG7wgCvmZfIq2V9+xomSvzGq2iWn7LUrDMKKVfaPkxVcb+5KuaxggRICCGEEAcREqA5qNUfQG78AeQ3X4fq2J2opjeY7Ewhl8mgkJtGqVyG32/BdSxqAhFFIpl0AbYvGkQwEkKpVHLyUatb4Fwto1o1uank7TMlh0Exg3w/43TXL8VnQTRvSHOdzyaTFfYtsu3c0AsWrFdrzA61BImixAyRBdZskNdgZoTSYNvx3UANNnGzz2x0R5g1YlaIWSJux2iczbzsL9S9ISDch2BqCXoXrEH3/OMQ614Nf2oeSt6kExQ/ZaJRcoE85ZAN9Fgm9jtyAmTLGej77OCUFvvbpt1H+rxiNhFzQ1LbpkGaAw9rdsGPPltXsYstW92Eq3Z+v59mgUa+gqnbNwIbRlHZ+CCmR2w+nUVubAIeq4dCIY+iywaV3X3IFwvIZbMoloquDlh3AZ8f0XAIMZtCPo9JTQPRoAmslaMWtpPEYoiZDPUecyQSR65FZOVS+Pp6THDDrm59vAdWMa7fj9+Lhh2DislravoOpdOOwwuxiVkkL5s52jW5+u8EJEBCCCGEOIiQAM3BxpteiOzENhRGt6CRy8BTaZgAMbINIZoKIJGIIZlMIGhBMwNbNq+qmOiU6jmTFgpPBeVK0YJdVjObS9nfpSjqVb8LjN1w0xbN16oW/FtwXzITKts+lXIN5bJ9LvF4deTzJVSKQYslfS6Y53HZDIyKwYkDFfD4zPjwO/9m1yJmbQL2JeACb05eJ2zMBvls7kfQyYrPX4EnYIFq0MTABMNrAT4zRPHkEgwuOwMDKx6H8LwjgFAcxToHSGBgH3YCxIQGk1NsCsbcR7sElABeML/vDnOH7du0XzrKBVU7aMXmfKGrt+FHiPU1UcTEbbdh+I5bMXLnXcjdvwHekQy8mZzTsaDXym67BwLBZv0GvKhEgk5QXDbMlrHZYdnqsEJJ8tSRy5k05XJWp2Uni2GTITadi0ejCDV8borFu1DvTiGwZAjxFYsQPWolEmtXINzfg4pVcJX1Yf+UODKg387hLoD3lh/N1yhvZZOeSKu+nBzykdiJdnO6xxQSICGEEEIcREiA5uCO755iwmPiU8tZYFtHPBE3Kegy/wlZlG1y4fe6YLpcKljwXkOtzIwPRchvwawF47QQC4arlboJTs2NUlYpWjBcZB+hKorFEkqFsglOBXmbp/MNFEsmPxQfixuZ+WE8zaDdZ8E8m2mFQgEELcAPhf0mMxQZv0kM5aqOugX1zDhZiG3/a/aR8TRTRfY/W8dMhckS5YlloWyYJjCh04zVTYq8vpAdK4JIxAuPv2QyFEO0dzGSC0/A0hOfjq7Fp6IaiLM7kru2Vozv5k17odEwX9V+tOYI6mlAbhsrmxMgOy+FwRZVTLYiJgXeiSzWX3IlbvvN7zF6402oD29DrFxEykzCb/tUrcxBkzaP1+rJZNQftGuwevHY9bhR8VgPzVM4yWAWiVM9FoI3YKW3ZWWrk3Qmi/HpKZcpCth3v9VzwOo7HIkjHIogYVIUiURRS0bgXzSI4JoliB6xEl0rliPa12diY+fjDbPzNZitMtH0+5o1wZphPe+uCVy7X9djCgmQEEIIIQ4iJEBzsOFHT7AAtgGLfS0QthDWb7JSy7vAnG3CKBv8xd+NzsYsTK3q+vTUymymZnJk1VvI1pDP1W3ivIxspoJstuiyPBWzCPOS7ZLjt4A8HLFAOxFDLBZDKmVTVwJJNq2LmVCZdDUlxWNBfdVOyYZjdQu2y3ZeZoW4jOfmaAm2nAZl/2O2wWWn7IQUobLZVaVkk10HPxdzVROxBip5L6pFP0pZi1sbFTR8ebv+osmFF5VAAoHeI7Hq2Cdi1SlPRHTBGpMGC+4bAXiZNbLzeRt2XgvgG+w7ZX+zGVtTkWaH5ed7iKzU7kWlHo64x6fS/uLA48UHN+DK//oKNvzs/1BOZxGt+xCpeuBj078Gx2uzajer4JwVyeaAFCH2uQr5g0iYHLHPj9/HnkAsnt0rCoqdo2p/VW3uMkPBIPy2HQetKFs95dPTmMinMVnIomj1yYxQ1BdEVziGZCKFWCoFRCMomxRjwQDCKxZh4LDV6Fm5CoG+BEp22UVem4lUzK7PZ3VlXtysEzaBow3thDJAQgghhBCPLhKgOchef6rL3FBSSiYM7MvTYD8dZlUqDPhbGR6TmVKpalJjcpPOIZeu2rwpO/mcBcJFiwPLLqZn6znE4wGkklGTGzahS6HLJCcejyOUrJts+RAKhS2WZ98fExaTmKqVoVAooVytWjxZQdXJDkN+CobF81WOkmZlou1Y2dw7clhGlwUyWfBYOeloVoB2kO2ahXkDLmvBUeaYfOEACvWKiZmdK28ylC+YDGTKLmtV4PWbeHmjXvQsPxVHnv0yLDnyZDRC/SYfATu8rWuUmsf3Bu28di4X5DfPNxvNZnPsw2RiRoliwzorS8iWFR/ahEu+8BXc+8tfYqAwjVH262n4rXx8A5PfDUrAJofxUtk1cbM74zIsbMrWbPrnN/EJuGxPJBhCJBwxKfK7vj9BfwARX8T287q6o4BWTXRY374QmwF6kQiaOJXqLlM3WcxhazGNrNdKGvAi7gliYawXvfEeJHr7ALuHOVvuHehD1GQodewqJA5fAU8swSuD2aKdqzmSHoWL9dS8By1B5L/EnaqKX//yD9S+0WRd+zn7ah/b690tbW/IzwcTEiAhhBBCHERIgOZg5KqjmdRBgxkHC7yZ1fDUTUDKJVSLPpOSKjKZgk1lpKdLyGRtnrFw16SHQanfovBwxI94Ioje3hi6epKIpiywTsVcVoKS4wJvig2nWgmlStEJDy2gZIE9P1MIGjULlBucGPla8Ez/cZGvlaruNVliP6KKLWeBKWncr5ldYZBPYaqwXV1rNx7G1MDkyNaZH9VM7DjkWtBvamHrOahBIBS3/RMoUIZyDScCxUIaDX83fKnVWHvKRVh9+tOAaK9JFHM9Zbef170/iMeg3LQC/FlwUmZ/TPOaMTwzQDarm3Bd+6Of4t4f/dxuxCQmrZ66Dl+NpcccjQ13PYjrf/8nTE6OW72PI1TM21lMMOx6o1anYRPHkHtFLO8YJdXVkn0PIMwR+bwmmb4gkv4EwhwiO+BDLBywa/e5Ia5ZD1VvHQGTx0DNg4RJTCCZQNW2mSgXMF3MID01jXy2wE0RDUYw0DeAefMG4U1GULdzVINB+IYGkDr+CHQdsxahBQMmVlE3iAUHq/C1xGe7DLlv7CPUqi/eo+as9cH+miE/O6w3Zn4+qJAACSGEEOIgQgI0BxPXnAu2duPUKNdRmJ5GIT2NYi6PickapqfzyOZqKHK9RZ9+l92JIWbC09UVRncPR4YLIhqzQDrQQL3BzI0HRWaL2AzNJjZNo5y44a7rcTtQwIkLEzg8qJMhFxRz6GwTHPZpsUWuX1HNtrOpUgmaAPnsOwWImR828aIE2TmZKbJDU7bcqHG2s8vS2P/Yz8Vrx2eIyqnK7IeJBoNwv7cKv7+GYCyKcDyJYKjLVCIFvwlRpepHyRdBJbIA8w4/E2tOucAOFnXndZkgkws2wWtmmzjNjuv3w0wRL8o0qG4CRIma3jKCG371G0zdcTsy6TxWP+lZOPGicxBM+LD57nFc85vfYd3dd+PWW27E5gfuxvjYVtckLmyHCtu5I3beLm8A8+x4fmbArGycM1Pk6sTWUzeYu4qYEMVN/JLBAFLMFAX8JkZBeKIRFE08GmziZ7vEG0H0RVPo6YqjHgtiW62ArfkMhifGMDUygaAJU09vN5YvWIJFfYPwBcOY8nlQHuxCdOUidB91GLqWLoG3r8t0rYEqs3V2u4Ksc5NYNo+jjBLno1ZmjqXQzBZZ7dhnPiesLjcqeutfr1WX+8yvrsoPJiRAQgghhDiIkADNwfjlJyBjkjM5lkVmsoL0WAnZ6QpKhaoF6g34LGiOJyNI9kTQ1RtGVw9HT7OA2zzGZ4Ev0yDlUhnlYsl1iqesuIiX0awFspQZl5tg8Guf6szkmCCxLw+HxXajwVU4GlzFJKvZBK5WseUmP/bROYNLFtVsv6rXyVK1Ssmxg/EUNm9/brsI525EOGZqrIAcwMBvAX/zPUHNbbiDn9khHttrUsSmXT4OwBBDT88A4r0LzAYGEepZjKyvFyuPOxfdgytRqQXsWM0chnuw7GTucLvBiZrN+eJVDt1dMBlhFij34BbcfcU1ePDeu9C7ahGe9LKXuFxOeTiN+664EaP3rMP0xhFkRkexbeMDeGjTOmxO2+fcJKbrBeTt2sImPBSguF1bkhkfTxApfxhJEyMnWXZt1WIBjVLJhKKIsB0/YvuEPX5E/RGEbZ9ExCQ2GkPEhIhlpUR6Q17XnK472WWym4QvHsdILo2No8OY2DaOfDaLYDSExUsWYmjBfBOmLgTCAQybYKGvF92HrUTfEWsQtHXVcMiOW0fZbibfLcRmcsz2OKmxa2CGycNmgVaRNY40aM8M65T9o7iOy7kt73X7Hh9USICEEEIIcRAhAZqDSz6+CFPT00hP8SWnzdjS4mF0d8fQ3RVHd48FwPEQojELR72UlrLJSdF1mmeTNEoPA1MqAX/N5yeOEEd54hDYHP66Ody1TZUKCmWTHPteKjJD1JQZig5jyJqTJAuObT/33h2nA2w+ZdGvxzayYJkZDUoXI+JmBshKbBLDsrvBGZht4pDb/MymdSZObEpHcXJ9XzjAglkQ5SgY9CBsRuCzoJsZh+Y6ilIQYROC7sHFGFp5DBKLjkJ4YA0Glh+Luj8Bj4kfm9A1rcamFs1sUBPX7M2+u7lNdTYDszpj88KsyUrZ5Ks2lkHpns2omuTk8lnEl/ShOjmN+02KRm6+HcGJKXgn0vAUii76zzeqyPkaGC7nMForYKycxXCthAfstGw9lrR5r11Xr0lQt8lNt8ncQCDhrot9f0rVEtKFDHKlgp3dg5CngrDVc8obRMznM7ENIJI0EYrFEDCJcqOGF2oIsolcIoV4Xw+S8/pQi4YxPDmGjZs346GNG0xagJ7+PixfuRJLFi1FyOpuulhGMRJEfM1K9B53OJIrlyCdilg5K4jY5XCAcrpxnaP8WVlc67fm49OsU5vstrkqpmfzaWBd0oC4+qBCAiSEEEKIgwgJ0Bx89e+D8Ad8SKairh9P30ACPb0JBEwOgmE2F+Mw2EVUbKqbqXgsEGecX3YvMGWcymGQTY5MSkrFohtIIV/igAJVFPIlFIsViw9rTpb4Qk1qjPtF30W6bK5FwfG7rAAHK+DB3TITERfqMkrmJ66zz8xOOPGhVLjPtrqat2Oz+ZxtYsE65Yli5YblrnhRq3hMuprvHirZnE3ryhywgUe2wzPADga8iIaDiIRC8PsDCPkbCFoA70/Mw8IjzsDA2lOx7Lhz4UvNt/2a7x6ih7mA3AoxU352xgXuxArIJn51q1OOkla5fzPSN9yNjVfdhJFb7kR1wyaUTIRq9ZKVg80ATVTMtPy2f7TqNwuw62A9Wt2VzeqKrGu7CVusVsfyGUzYfmlTK47MlnMZFi/m1UNIBqJIxVPoZj8fq+tqvoJcdsokcRr5CjNJFsDb9hyOu98XQW8wjIF63O5/GMFkAjBJqdl99Nk9TQRC8PTG0Ts0hL7+AZTsebh/00bct349xiYmsDAQwepVqzF0+GqE5g1gtFzAVKmEHtt+6GSTyWNXwzPQw55UQN7kioNUhNgnyiSUD0arqlidVZuoFswE8R65VfYXZfWgQgIkhBBCiIMICdAcXP9fyxCLR5HsSrj37tAzOOpYo8EO+zkLktnnxqmKG/raZ38Y0FeYYTGhYWbHSU+hjEKuZIJh4sNsDLNCJhdeL3/fZ2alNfn9TdGx47FZXL1O4aFMMbDneZtZHGaVOOew1px76kHXBI59idr9fDjnOnMVeO049nH7MZuDKdjnRsmuo+LOzatwmSLbjlJWLnvB5Eohb/JUNdmzLfjKnGTMJKArgmTSZCjWA1/XAvSvOglHnPM09K08DqwFSo97ESmvxKJ11slsGaD2xIDeZggXaxi/9Arc9J3vYdP1NyA/ug1hk8uE1bPfysmR6nh8jmzHwQwaoQDKVp6AiRkHOYj4Qs2mexWTNBPFOrNrVmHpWglTJkHjJjWbM2MYMzEcbg2jHYMfcZObnmASffEexKJxTPlMWAtZlKYyNs9Y/Ved1LHHVJedp8sbRXc4ipgJblciYaIccAMc+Molux8Nk7MQBhcsxIJlSxFKpbB1chw33HcLNq57CKlGCGtXrMGytYchONiL4RJHDswhYVKUOvko9J59Ivzz59u5vPAVKiiZgFbsBkTse8jumxvcwuqvZhP7CvFZslO6ZQeb/0iAhBBCCHEwIQGag9y1p6Fc4Tt22H/HgnSbM0PCWD7AXvEW4lNy2KeeQ2FzKuaLJg9FFMsVEwiKCANTyoDf9aPxBwMWSFsQb8Esm5RRRNixnVJju7imbxSlmkkHm6aVSjUnNnw5KsvACJfC4Prw+Lgvj2WLGQm3w1+aROujexFqqykdPxJ+5oBwHNyBUb1b7gJolsc0zmfRNstsx2HGiKPgcUS6fLbkmu+ZA6ErmcSCJUvRv2gFYkMr4Ju3CkeeeRFivQusnkxQrGzbC2HwE5MYhAMfzBQglrdi6zy23wP/+1Nc9unPo7LhIXirOXgCJnomH0XTAX/NAn6TslAtYFLkR7gRdILlMUFo9mMKwBsIIhKNmLBG3Etim7LgToGqiSHPzWVVm4btqCPTkxjPT2OqVECBTRdN4Cgvvak+dMdTCNs9KxULyOXzmMplkTOBGkPGtmqYCPnQBxOdYBxdtk/EH0R3LOqa0PElT3wWrFDoGujHolUrEFk9hEKpiE133o87br7V1engksVYddQRGOqZh+x0FtvyORR6k+g/43gsftzp6F6xFDk7HLcNcEhv3nc7vt8uis+AXZm7V+4CW/W7A6wfruPKXa1/tJEACSGEEOIgQgI0B6NXnWTxW6WZ0bDvfHdM3aSkkMuhUrSQnGJi0sMMT96+V8qmNjQZCoUFnv5gyILwkH0M2HefyQNHIPM5meHgBhzQgO8PYnBbLPJlpM330LTjVTbxYh+VcCiAYDCIEIdsDnHY5uZ391JUtnliky6bmsNqc99mFoiDKaDBzFHFZQg44hyXU6zcCHTlICoFD7JZC/7zfFEr3zdk0sVuNdzVroOSFrBr8Ho5tDWbx5WQzvMFqj4MWKC+YvVKrDr2FIQGVyIyfyWWHXUKfOGUC8iZBWImigJC4WGsTpyUMENk6yhUfA9PwOfBQ5dfgW+++wMIbhk18fCalJgM8L1EuTxquQwqNZMANgls3Q/WUbjuwaDL/TAP57F7ZJ8DPjdFIzFEQjF4rZ78YZMlqxyOvsYCee3cEZ7fjlHg4Av1KibtfCNTJkOFNLLFHEo8XrwLsVQPQgETKovly5mslSuD8XIamYYJof3h4Ak9VoJ+TwT9dv5UKIIeO3fUa8+LHbdslZkvlRCzYyxZswp9a5eiEg5gy5ZtuP/WO5DdNmbnSGLJ2jUYGBhE2URzeGwCud4Y+k4/Fmuf/DSkDltjAllHyWN1b/UVsWcxwGfK3XuTHD5zrBD7n5va2OVSPGcu2q9IgIQQQghxECEBmoPMdRe6AJZ9aKrlnIlLFsVsGsVSASWTAMoLszfVOvMBFiyHwiYgzf45Pgt+qxaUMttSKjWQy/E9QXyPjgWxRQvqTUIoOgxMg0GvyYwfUROdMPvaRJpBPDveB4N8kafJAsxK2CiKTeQs4KXcUGhcJqUesslvy5tZKYoQJYPZFW7DEzFTwv3YT4nw3D4Lpr0eXh/FjP1qvFa+CtJ8mWumhvSkScEkB2oweWqwjGFEozETgxCyJkoVE4VUTzdWH3k8Vp90NsIDSzG05jgk5y11593+kk9XI81AnA8cZcxKyCVOLl1ZTKwu+eIXcO/lNyIZ60I5Gceq447HjZdejz/+4MeIVKftGsvwmcAFUTXZqZjyNPvBZCiKdoyoHShm5Yyb6ERMlMImnnFvAlGTkqiJYzwccRkUZowCJpFhqycKIQvgs7rhu3kouTzmxnoeE5lpjI2OIFMsoOYJwZ/qQiSeRLzid1m+iUIGU9UCxqpZZDhMuV3uUMOPBZ4oekwYe0weu0yG4vGo+a8XvnzV6reIkreBvoXzXVYoNdCPkYkx3PXAvRg1IYpYmQfnL0RX/4CrrEmTo3QsgaHHnY7Dn/8UJI9b2+yXZPLMUe6YD2JNsjLsUTPcUBl0YHe/m/fcfXH/2+9IgIQQQghxECEBmoPcFScjnUkjl6X8VNyLQF1GwwJlDlwQDMfg90ZNIjiUMZuVcWCDgus7k54u2n5l5PMcGY7ZGMBvkanX53GCE0+ETG6sLjigQNAHX8CDgIkO31XTHK3Ngnyvz53PTXYASgXPQ4Fg1OuyKhbusomdqZBt05QeNtlz23HDmgWg7KhE72llCTyM1G0V/cTvtYXtZlUmXRQxrmOfF7asKuSBicm6iUAJU1McOMGPUDRuU9SF2nVfBMn+RVh7wplYtOIIxBeuQPeyw1x2is37XB8gHt2KymxPzZYxOueQD1biZud+u+by9CSu/r+fwjvVQNbqc8n5Z2H1UUvxyy98H9//yEdQy26wKY9IrYGEFSxqxwnzPpjETPusbiiUVmdWU3ZkO4+rIju2iUjcypkySe31BpH0mfiYpEZCJkXBEAImmT67EW70O6svvhfIvTeIGbeIyWzAylPJY8PEBNaPTmLa5JX3PByJIBqLIM97Xi2aJGUxWUxja3MIAwwgjH67jn47f7fJcDIYRl+XyZiJWM2eJWYRS9UygpEoFixZjL6hfuTt+7bxCdy3/iEUbJv+3n7M6xtA1O7nlskxDMcCWPW0J+LEv30O4oevMQey62R5KDkhL6r2nX84Ch8lyC7eJpaGNcF6dgv3LxIgIYQQQhxESIDm4P4fd6NU5AhqfgR8MQvmoyYxzPKYubB5kwXh2WwR01NZmzImChkUChWX9bGY1QlOKOxDIuFHPM7maxSMsB2HgSmbgVFubPta2e6GiULVjsmhqRvNpmoUHsoQByGouxedNvsFceJnwqGu+f4cZzz8TnlprnLxLjMBTPowOcR1/OzCYic9rQ1bsDUd31/Ekd6aDsAsVMy2DTiPYjO98bFpTPJdSLUIEqkeJLoHEelZgKHlR2L+0sMQW7gSPSuPQNgCfZaDEufOyWumkPGUdh6nKHb9NVtesSmfmcZDV16Fsfu2YMqC+pOf/WQsWDqEb3zoo/jFp/4TofwkyiaXQduZwX27708qEMb8ahA+O0bVLrZipymbw3FY7GypjEyphoJJCbMjvO5eU5xBTxB9dqSk3b9QOGyiE3YZoZhJSixgUmTHLpu0mhGZHDVM9sIId3Wj7o8ga2XbMjKMh0xS8hUTmGjEJCaMhs/n+vdUyhWMcgjuagYVu0q+c4gy1GPni9lxUyZOQ129GIin4KlU7LozyJpkV60uOHpcz0AfvFamiakpjAyP2POVQ74rhPkD8zBYsuVbJ5Dv78GC5z0RR730mQgvWYScXWu4auLDMbdZz1ZBdFzWM2dOBO3vmTTleT8gARJCCCHEQYQEaA42/exEJwTM2niZtTDRyOUzyGQKGBvzYXw0i0kTH2Z3XDbF70UyFUEk4kciGbN9+W4dNgVjTxE2WWPWIwz3Lp5W0ytmaWq2vGrWVKuGLcivo1Qu2TH5LiBmm5rH5tDQPhMT9gNynf19zZdxsrN/2M7LczQ7e7CczbI2s0ElEyhmgZrL63ZuDtnNbBGPz/5IxULV9WWiaJkzuOtx2OECfg9Cfr/JkF1TLOqyVIVyCJNpH7KFEiLJAfQsWIW+JYdh0Kb4wtXoXn5EKwNkkkKTsgMx3KaE0H/8XG5lYUzO5TX7u2gnfuCmW3Dz76/AhofW45gzT0Bvdwx//No3sfXyaxGzOrHn1dVh2dSiYkdiDxw+wMzwRL0hRPiOIqujMLM3NrEZYqHUwHAlh3WVNLZV86iYjXFkvF6vHwtsSpk0cCCDpEle2OrVF4/Ab8ITN+kNB1h2NnO0CvGYBIfiiKW60duX4lgRWLd1C+5Zvw5bxketooKIxhOurxCvc6yQwWgxjclKxn0Pmaj12jFTVta4SWEfxc0kaF48iajJV7GYM+mZtPKWEE0mMTBvENFoFPlcHsMmQ+l0xrYLo3/ekMldAxunxxDo7cJRr34hDnv2U+A3eSpV7Lkx5WE/qQAfBxbfnl1WuvMdTvsbCZAQQgghDiIkQHOQveI8ZDM5TE5mMT1ZwJTJztjYtAmDSYkFl/6ACU8yarITQjzOzJDXDVoAFFHlENmsXScllAqTEQ4+UKZ4WPDeGiK7bN9pAi4+5a4WqUYtAI9EIk46+DnMd84E/E5+ONxywIJtvz/ojs2BGBp2XEoNh+jmSz2ZcqEoMHtkd9kOypeM2sxgRoDy4zJMNZ+ViU33muWiDHHUOb6faHq6hGzWNIOHoxDZFDAbS1qQH+/uQTTVg3LVg0zZB39iCD2LD8fCFUchtfgwJJescX1qmk3rfBZ/UyA9KFuFcLS3gNULm5ux+Ztr2mfLGz4/7rr9AVzynR8hauVZtWgQ91x7JSauvxWhiUnUylmXzfIyK2ZBNQczqDQqyNq1jXhq7rpjdra4iUyiEUTChChsAlFLJV3fLI7mN55NYyxnUlLOIWcKZTpl23kxzwSo3xtGrO5z/WpCVr8hKw/7ZCVCzYwQBdQNZGHl9vurCJsoDcxf6Ia4Hp2exr3rHsRDGzdhulI1MY0iFY2hYceerBWxqTSNEROcRr0CjhFH2eoySYnZsXpNmAatPhemupCKRF0foYmJCRQKBbvv9lzF4uiOd6Fg93i0kMZodtplnXp6elAvV7AxnUPs8DU48VUvwPInnYdiIsoB6GBPCOzxdOLetB/OmvM2rv+Y1f2jmg2SAAkhhBDiIEICNAd//s9BjI+nMTHO7AwsGLXgNdGNRCKOaLyOSCxgASQbOrG/DmWEYsFwP+cyPCUTimrZY3JhS0wm2HSN623mOtxzwIOQBdjRSNg1xQqE6rbMAvBwxIJlDlzADu7epjhVCiYiNTd6XIMSQKGy87FvEj2HzcyYSXIjrFnQy9wIt2s2qeO7eWw5N2rFwxShhtfK7W8OkMCmaswscQhs9gcq2/Vy8IZCtoZ8to70RBXFnJ2zYuvNYOLdUcxbsByJngXI1GLwdy3GyiNOxsCqoxEeWOwGG2j2/bEztSSw2QSuGXRz5DfzL9RMXhreOkKeCEa2TeOW312KBcEwouUS/vD972Hs1jtQn5xErpJxQ3r7bWq++8bjhJPpsYLVZ9nqIlPNoWBiw0ZyvIqAL2hSEUNfII75wQSidtxpk8Qt5Qy2ZqeQKWXcUNgZK1rExHWhN4rDkcKQJ4x0wO65SSzfvRPnAAqhiBNQ1p3f7nexmEfFricSj6N3YB56+nrNj/xYt34Tbn3oHmzKTKDmD6C7txcRbxDlfAF3ZkcxVcvb/kDUE0TclicCJs5W9n47z1CyG/P7+9GXSKFqlj1t151Jp01oeJ6EPW8R+MMBTOTtmSzkEIiFMZQatG0KWG/LFp55Gs74u5ej94LTkaYi5ouIWRm8Js187vjMtXHyY3+Ym+P92BknRe3FvHcPFwmQEEIIIQ4iJEBz8D9vjSEcCqKrJ4FkigMXBBAMUSiqFtf5XODo8dVMUEomNcyowDUnK+QyLnvCd+0wtqSgRExsmiO8BVzn+YgJj8W8LpDnRsxg1CpFE6aKBd4waaIscWQ2kxGONmdBMEWCWSO+I4jHrNqcIsTR5iyGdoEqbyhjV/Y/4uT1N+WGHeV99jlogb4THga1vio8fgbG3IZCwWtikz0Li72UoZBtF7YyhKwMfpO4OqbTJaSnssjnSgjGujFv0VrEBlagEZuPPvu85rgz4Uv18dKMtvxwsnqza/BaeTn0dMXqMBQK0LLQmBxHedsECutHMbFuPYrjY8iNjqJk87zNx7cMY2xsxOq1gHK5gJrty+us+6zMbMbmSwJWtzlf64WnJgfZUsEksIJuK0MCYaQCMSRjScS6UmiYcJbs5pQmp7A1P41N1ayJSQleu4HsrzPkTyAVjSBmIuqx+q7msm7o7ajds3g0jIQ/5EaLazYptOMUCiZlDfT39WHByhUI9CTx4OQYbrjnDmxYvxEBq4PBaDfKiSCmKiVM2PMxaddNdQ4FIwiaCPXaTY/bTQzbTRyMp7Ckbx76u3us7jkqX9rJUNXkNxC2c1OEIhyJL4+siWIsEkckEMVUvoyJWAgr/uZJOPllz0No6UKU7UHxWmVRaPiupLbs8LuTH/uzqwyQe46aHx8ZEiAhhBBCHERIgObgrh+uBUdF8zMrwvZpFjy6rErd5g2fCU4JhWIWhXwe6Uze5s1Mkd+EIxhgs7iQyU7IZXWag6uZcLT66LA/C7M5VTY/Y1aHgalJVYnDS5v8UJ6qFY9JDkw+mHmxG0bpMTniD/lsgschsiMWkIdi7MjP80UQjYYQCrOZHId69sEXtDDbW3KGxL4sdRbQJMf1ETITqbvJvts1eUx8qi5gZVaAu1DCeO0mQj4LugMmBB6+GNQuph5DvRFG1ZuEN7EEsCnUtwTLjzoZ3nDCBdfNDBaPxj92PPtmJUHZzh3ymqzcdQ/u+f7PUbjpdpTXbUZ5bAoVkwkaYMDqnNdHU/OZCAZMBF2TP9s3Z3KTq3GAgwLydRNNn8mIiV04mYDPhLVkdVspljCZT2MYORSt0ih9YfgxEEpiYTCJvhhFKISG1X9uOoMxE6Ft1Ry2eIooeGpY1gjatjH02LXEOeiF1VuxXHT9bCImh6lwDAn2+7FrjJhYcICGYqmIrNdEJpXCypWr0LdgPqZMUC6/7Ubccf89CJqppmJd8MUTmLK63ZKexFQp7/rtdIVC6OJw3XZ7AnacbpgUxeNOggYH+9w9K41nUBidtDoqoxYJwtMdg9+eL15bsVSHx565RjSGdRMTSNm5T3rDy7HMZKgWZL+tMsKUWtahPYNMzDXf08SMYfsO/QUua8qSrXkkJiQBEkIIIcRBhARoDrb96VT3qzv7qXCMgVq5gnqlbKJjwTUzIemMy8iwEjnwQZQjglFKTEgCQb/LCjQs0K3ZPpSlatUCVxMRDoJQKXtRKXmRzzXseKZGFidWShb9gi9JZf8iIBTy2PG8TmqiCTt22I+EzWPJOMImPgEL9kNhyknQZMRkw8mZTXZevuiUI5LV6sxOFa3svI6yy1iwDxCbd7F7SIMZJBMEZpOqVi7XSo4T/1CYbFmdWRsTL7/PZNDrR83O5wtGTQJ6EYsOIdy7Bt6BI+AbWoO+pUdYgB23AzScODKQdu/a8VThbZgomMxYHI6td16N/337O1G58ib0F014TMDYRCtgx/fbtfjqdh6TMw780LBonS8zjXLAh2DE3QuvbWM+iZIJUMZrUyFvomMrrN49Vi8ek4mCycdEOYexch6T1QKyVb7alMNoB9Hnj2Io0oOUSUbYxIFN8sYoJMUcxjl4AfKwYmKeyV+PL4bucNLqPOYGX0ibKJVMmuJ2WX0+q4dYFF47LxNecTs2R3bLlwuI2H0aWrkEC1YuxWhuGvc9+CDuvPde5E16ksleN9rbtMkO123jfbFrHwx3o9trEmtl95ez4GDjvZE4Fs9fiAGTIb+dJDMxjanpKWRyOcSCIcRMqPxWNr4pqmrPnyccRdGEbbpYxIILzsCxb3opQqvXoFqsIMR648AIvppJkN1XqxG2TKREsdkg+2W5/ygwC2jV6bxIAiSEEEKIxwgSoDkY+cMpJhIUnjyy6RymJtMo5IoW0Ft86GOzNhMTNpWKR12myP2iboF0uTJt8mHhaN2HaonCU0fJgs9SoYFcNmDHa4pKxaqfv64Hgj7XHCwW96KnJ4qQCU88GbUgOeaasHFghQg71dvdokwwzi+VSi7AL5fKLvPgBkAwWaFcOYGxQNaVk8GrfahylDkTOTaZa/YN4rLmaHPEY8Gvz2vi4GkNWw2TKpOVcrHkRIpRMd9NVClR6NgPJkhXM5mJwB/rQWxoBYZWHYVlR52D3hWnmIiEzU8CqJrtNCzoZtbKT/mxfT0WgP/xM5/C7z73RSyNxVD3NzCdmUbVAvuAlSdmBYhZiUIeEyM2ZLN9qkhYPdhZOSCE6y8VcP2n/MzOlJtBOzM9WauXIsvJy2ZbQqujopnehAnQaClr8lJww0bbGpO5ABImEIOxbvRHk24kOV/Ng6msCUltCpO5NIr1sl2rB10IY8AfQ18w7voEVb01k6U8ciZefrsnXf4QkrZ/wNbFIhGETP5oslOT41bOIAbnz0f/YStQD/hx7/3344777jFBsX1jJovso1OsY7SYxQhKaASC6DHpGfAFEMhlULVniecfCibQ3WOCNNjnsk919k+bmMS0lYEyFUmlEEwmkLfr9pnUpRN+jKan0RXvw8mveQUWPu8iTEW88NuzyMEimDWjtBGX7OFNsrp32SA+mFzIj/zr4SIBEkIIIcRBhARoDm7/9iILMKeRSRdNFJrv9IknI0jEY4gxEA8GnVQwC1QpcxQ2zsvga30oPLlsyaTHhMhcyOLypgSE7TgRP2LRIBKpkAW0MSTsmMGQLYtZMG+hfJVyYpJSMtOpWFBfKBbtGGwmx+OUbbLP7B/EX+vZhK1hQbMFruwPw5eT1irN5RyEwGt+wwRMhVJgczap40tcqyZCHBSBWR5mfyhLAQvi2cSt+Y4gK0vDgmSu4HYcVc7Mp2o24il5UctUUazxDTs1FDnQnF0bR6vrHlyLBWvPwuFnnI35R5+EerTbriUMn8cCdmqK/S+QL+Hyb/8v4jYfmt+PUU/BrqmG235zLR68/VaUx4dRHtuGsF1X1OQoYtfaU4u6PkouYGe/JpOoYDSMeDhuspS07z6XJWJx+UJQu3y7D1bpJnBsNpc22Zgo5TFlJR6r5DFWK2KEnWOsTrrsoH3+CLpDKZOFLjeCW6hQxnghg82VNMbKGau/EiImAt0+285kpMvELRoKuxH4SnbcXCHr7kE/h9T2hRHym1wl+MLYEMomdeNTE+6edvf0YvnKlfDYs/PQ5k24+d67kDEpi9r5fVZ/01bWTblJN0pdwCSyK5rA4kYIFZPwXKWIlJV1sYnY4u4+9AwNIGTyVDEB3jY2ZhKZg9eOG0910TKRiTWQiCXQmLJjWtlSTz4L5775VYguWWT7lFt9vNwj55rE2ePk7pF7cijCNFw73yPQHwmQEEIIIQ4qJEBz8Nt/5ShtASRTCfCdLHz7Py2mWnFRtpMBZmLyhYKJTw35fNmkxwQl6wOHlGaQnkiETJT86O6O23GiiPZasJv0maxYwG5BJzNG7HfD7Aq7vxSLHNKZ4mOyQ2MxITFXsfPVmqOeNZpBfqPOucmPbcI2TGzGRjHiu32Y1KmYlLBM5bwJWMHmdhAmcnjcas3THDjBtmUTOAqRFcPKwzL5TVZMNDwMf/neIvvIoNikwhfwmCT5EbL1HvZf8pp0BW1bky525K9bvRTz7OcTRWhwPtacdR5OufCZmL/iGCtjGCVPDRW+hMf23frgBnQHIpjcugXr7rsL8UYQV//yCmy4716UJicxuXmzlStvZ26OssfBtBNWtm47d1/D5nb9pj0IsfmfSQKzLAGTDr4biS9F5cAOjO6rdj7XFNEEkoKatzKMVnKYyGaQzk5hC4o2wYQDiNixF/hiro/QgJ8j/UXtWiomQmmTp4xNaeStcqOegJXDj0HbpteMNhQMuO0y7BNWyMFjspg0EeoKhJEMRdCTTLoBFNK5HCanJq0cNaR6ejB/yRI3LPi6rZtx/9gm17cpYsfz+AIYN+Hi4Aw5u/qBUALzE90I2fWUMxnUCnmTNj/6g3HM7+7GwgVDJp8RZDNZjI6No2gPUtDkKWIPWCMeQrEniYqVZXQyC9+yxTjnH1+PeWedhILVi8eeIQ7xzfc9ucEQGvaAGB7KNNe7L+7vh4cESAghhBAHERKgOVj/48PAF3oGLHg0JzGpqaLUahJWNNnJZpqDH+Q5+AGlxGozGvG54bL7+rvcS1HjqRB8/hq8ftvAgu8SRaVs8mBVT0nhLeBIb8zMVDmMNUNO12QsZFMA9SozPeYPdQ6jTcExQTKxYYbJ9dtxfXv8dqwGiiZjZRMovluIx20evylDlCYnP+2JWSFbTllidovrnTPYX/z1n8Nje6zcjH3ZZaSZB2g+LlzmNxfz2V+9/QPo7pmHYMSkYWCBG/yhZPWTtpMVLZjvWbwKJ599EZYdfgLq3hoaHrt2BDAymUYxbQH7zbfgD5/7CkZvvQmV3KiJVMANTNCwMrlMlX2Y9tSxyfbym6WF7PwcYiFlx2B/m5QJUHeDnftNYIIhxG0KmgBFTIZ8Jq/lWKD5bh+rY78dz+fzm7jZtddMOitFjFWyeCifxoOZaYzWrf7s+AGTi3g4hqFIAn11u5fBiNVPDVPlPMZs22yNusOmcXav7fxc3217xazs0xEPsvkcavkswnYsvvcn7gu59yf1dHW59ztVCiVMTU4hVygimkgi1deNqj0b26bGsSU9joxJQ533wESLdbm1UbCrNxGy8nR1dbumjzWTnajd527WRSSMeX0DWLJgEaJW/9mpaTv+JDyFCipBD6Zi9gwnU+jvGcS2iQym7GE95o0vwWEv/hs7r9/JMfswmd/Cb/XC7BklzD14vO1OjDi3yc2oxM0FrUWzIwESQgghxEGEBGgOhi8+BWxyVi62pnwFUxZApqfzTmQoDaGwBaBdEQtMw0iZ8CRTMXgCVQsg2c/GpMQsg/1z8hyW2QLKcjGKSpGjo3ng84YtyA3Zp4DLvFQtqOYLVOvM4ljcWC7YEjsn3/WTyVtwbsfju4Dci0xNMNoDKjCjwwED3AAIVia2ZWIfIBpZzWSATcLYxd0MxCbKVrOvEPdrjmbXbAbnBmewz8wiMfnksks8nB2TyScnPV6TM5Mjlx2oetDd1YvBRcvQs3wpovP6MbhiLZauPAIeu+7CdBZ5EzRPohsrjj0OSQveaV4eBvZ2fRNjY9h0zVW4/D8+j81XXYZE2NbZE+ljQM7Y2wLvGq/BJKJQCyNntjbVKGHC9CNvZSnYFDU1W17ly0XDCHt9iNrEGrW4H0GTnXjUVMnqlk3FApQKOy6HsPZZwF8MVxG3Y8cqXhTNFB8qTuKmzDbckTU5seumwHAQhAWhFHqCUURN6JipK6OEsaJJRqXghvNmw0O+O6jPY8+ByRD7g1VMWPPVoklTlq/Fhd/EZNAfQZ9JzFDfIFLRuD1HaQwPj7jRALtMpEJ8iWkygIcmt2IyYxJlNyFipaiEgthSz2FrJecEcVlqEL3Rbozm0qilRxG3GxUykemJJrB0cCEWDwwiZGUYM8nkENoeZirNEBvdCcR757l3Lt0+tQ2D55+Ks9/0BvgWzkPejsEmhkErtxscwwSIWT8nOMoACSGEEOIxggRoDu79/hHIprOYmsqgkCmhZDJCGUjEIoh3+9Dbn0IyGUY0FrQQmEJUsfiessOBEEwomMEwSWC2pWryQdlgEyN2vuev+8z8sIM/R5Vj87lMoYyiiVbFzsMsT82Owz4qzIaUKDi2f4MpG0oCC2hxqadhx2VwazLAAQwYqvLXeZfFMVmpU4AoRVzKY9nubmQ3W1ipV+2Y9pkBr5WFB2TfILfOhKNSDVoQbqLl5IjZJhM0Zo2cRJi21byu+VR8oBcrTjkR/Ycvx6qzn2Cycx7CBasvvssnn0HZbCTQ149k94Ab4c3v6sGLXD6HLXfchEu/8kVc98OfoWJiSXmJWMAdsesJ8DpsU6sthBphNExcCnYDihas52zKmGAU2AfJSs7R0eImPF2hKMI8h60PWt0nGxH3QtRw3JbzHTomBnxJK18+aldnomp1ZH+CJhmRWMw1nZsqZHF7ehz3TwxjpJAx3QFiJji9obgTnFSAL5a18xaaw2Ln61aOetnq34vBRhD9gTgSoZCV24OyPRPMHJX4fFh5g3ZfusJJDHX1Y3HfPASDIYxPTGJi26jrrxQJehGIBJGz+t1sdTfJgS7smjkaXtHqfdyOxZechtkPqGc+Yn6rDxM2ZtNYdwl7tvpMhJYtWIiuoflOosyEUM0XkLb7XYqFEeztRY/J6IPbtqFy+Eqc/a43I3HEKhRM7oJ2LtaPh/2t+KDZMfk8UYWaTwj/sr/tueHcfd8dEiAhhBBCHET43vOe97yv9Xm/4r3uZ/Cc/LTWt4OXa7/9dowPT6NkYhI2yZm3MIkVh8/DktUD6B+yIDcVRt1bR65UQpoSU64iZ06Zy3lRLvtMIkyELKjkS1LZb4h9cnImN5OTOUyM57Fl4zQ2rctg64a8TSZao2XkJtmPxuJGvvvHpMeJjQXDNB6viY7fAmR/0IL4IN/w74fHPnsCzMrY5NqqcTKJ8XB/Z17wmvCY7cBj5fEwi0TjsYnd3P12nTy8HQIBC2jdnJOfI9OZ3EQtqI57bbJ5zL7HgEg06ISO18ZMV6aYQyafR0+yHwuXrsLQ0rWImAQwh+KLVOENAaFgly1L2jlNOEzIymaFMZOO3IZNmLp/IwoWpHtNttiUjbLFoL9oclVkhsrOxSGZKRgRE5BkOI7uUBIpOz6btnm4k0lMwQL8vAXcHAEtGu2Cz7a1qsQUMzEmNYVqAV6OM8GXv4atQk1C2YQQRVpoFYWsiYoZKfsTrTRJOHbBYizv7jehqiNvIsS+Q5lSxkmklyO0mbz4TUyCHr+TNA4Ysc1TRpaN/Ow5CJuAxQMR18yN8lYtMntUwzRHpMtOI53NuLqfP28AfQuH7D7zPVAmVdkSPHa/usMx9Nu1euw+VkoFE84akoEoIiZx+WoO47kxJ8BdiX4EIxGUzE6ztrxQtnXTEybWaUQjAfTM60MoEnV16Dch8pjQT2bTWLRoMXzjOdx29bXoXrgQvYsXgINteE0kzdNcBog7VTnZZz6LXnuuOAQ5E4zUH5vtHpeSFEIIIYQ4OFAGaA7+/PFeJLtiGBjsQSRhIa6ffVI48EERdas6ZkrMKZzoVJjxMbngSF/VCt+3Y3MTj1zGgvIckM96bKqhZmLETuoMli2eb72QksGkTQzOORABFxoc6Y1N2VxzNgvwOZqZa/5m52Rs6qTKYvd6lX2UOCJd1dbZenbqMZlpvsiy4ral8xD6EY/GX/T9JljMnPAHfYoMg1uLeps//FO4uAPjVzeZeHnCFvz6Ubeovexh87ySG2BhKttAvh5A7/yVOPfpz8H5z3mOBd4WkBfT8Ie9qJkBhRND8IXiVg6TQZ7ALO+K//lf3PHDn6C2YQP8+SJ8Va8TAGaaimWr51oFBavvCrMnrsReRE0o+C6gWCiGqAkCX946kZvGtAX02UrJNTer2vbsP5UIJ00iEk7mauUiyrkcGrZN1GSkK9WFVM+ACUoICROYeq6Akt2oMjMWJpI+b82uIeresZMY6MNEpYi7t23E/Zs2YrKQdnWYMsmLhcJOKv2sb7vnOZMPOwprHWE77lAwjkW+OAb8UWQiQHpqCrVSzklS1rZinmVZrBdH9i9DasE8TARqmNg6guqWcfhyZdcHrRwLIVevmGg2R7Kr2DNSNEvN1EouaxMwkRvsG0AiGrVrzCI7MW7PQRnz7Oj9nji6FixA79IF6DapyzIblC2gmM0hbdc6tGylSWoSNwcqOPLtr8KC005yWce4SRaFic+De/x4z+xBooQ2h4yzlTZ3q3aHMkBCCCGEOIiQAM3B1LVnOlHhn3Ihb8E7ZYL2YfJSDqBW5Rv4S25QA47slbMgulCwwD3nQdaCTL7gtFhkRsMO1tzN9aMJBUw7LLClYfB4lCYKCn9pZ5M09v9hs7la2WPxowmEnadic/bNKZsYOOlhcGo4ual5m5MtbEqP3Vw2T2JQbsE8N2XWh6vYmIkn43nYhC3Q4MtKGdiaAPmtfFYsnwlOwITI3AUBC7QDAZ8bCIGj3vFgFm+7rAtfjBrwhZEv+TCVCyBvIrZ41bE4/Qnnon+RD6nBbnQPrIU/shieWMoCaWZ0TC58Plzx6x/jSy99LRaPp9EX9Fqo7kG4HkUwEKSSubKXrSKKds5so4xxj0kF294ZARMLv00JO2ZPdy/CvoiTv2wmjdHpSdu+iJztY5rqtu2KJdFlIhPxh9DgQBa5PLL5rMvGxKMJzO/rR38ihaQvAB8HuDA5qJQL8Fp9+yk3Jhyx3m7EB/thxoNNuXHcee/d2DC61dVtyEofDsZcH6OYyWfF6nPaV0XaRNlv9TzPE0Ev+xJ19SLalUC6YAI0PmESXUTeyjBuJQ2biq7oGsLaxcucqBSrZUxtGUF+47B9NlGK8h1DYRTsHg9np0zIrHzhMKr2LHGUuny1gJ54HwZ7BxC0G5nhQAjpMbvHdSTt2EPRLixdtBDzFi4AwgFMTozBKgHZtJWxpwfhoQXYEgtg1euej0XnntP0G6tuChrzPHxuPJ6WWLu7ZSvt85xIgIQQQghxEKEmcHOQ2fJ1FDiMmgvJ/fB5QxYUcmQ2H8rFOkomO5MTWYyNZbBtSxojo0VMjlsgPuVBIcehrpvDaEeifkRjXsQSPpMBkxx/HTWvF6Va0OQhanFoDNlcDJOjYUyMBDAx6sfoNh9Ghz0YH7VprIGJiSqmp+smVhwqG06CquzPUzdL8Zq8BDhxqGq7sUGThJAJTrhhsmUBullN0OacQhQaSo7tFmSmw2JYZrHY3K5S8dg1WdnzFhtPe00o/CgUvTYxs2WnseP67Liuf1HV7zIezEgF7MCJRAKDg33oSvUhEksg0d9AYl4XQsll8ETm2/X6nSTWzJ7YfOzu62/CyA13wJctYryYR84Cew5X7bJcFn2zE3/QZCna8LqXfibsHHG7D1xWbZjE2JQzSclaZfB1qXwnUyoeRyoacYMh+K1cXjtO0bbL23bsb8SXxgZCHJmvG+Fw3A0okClksXFqGzaODWM0N2X3xododwrRaMzqxu4hr5uj7qWzmB4ZQyWTQ188jGNXrcWyeQtc9mfUhITvFSpb+Uu8FyYG8arXpCfopGjcU8J6TwHpYsGenRpSrKv+Add8jiMKBuo+FOyejBQmMDG8DbYh+qJJDAwNwm91GPDYs2Ln50tpo/5gS+aCKObsYbD7Fw2zWVwY47kJTNt2frtRfQNDCCS7MGUCkrXrn6xM2z01UZpMI2gyvaTfjm0yV42aYPOh2jKGZNmes7vuR//SJQgtGHLNFKkvPrseylC9OTJFswmcPT9MDc3pQG1TF0IIIYQ4CFAGaA4mr3+8Bfj8vduLSrHipsw0+++MI5Oets/F7XLA7jYcLjsYZq+augWMTWGqWbDJpnAcZa1QKFrAHUC+YIKRrSCdLrn9szk2n7P9Lapkvxy2PfL5G+Brh4Ihr3sBayhiYb4JCN85E7JzRCIhO59Jgi30h6pOfJiR4dDUHPyA6R7eXNM1C9I59HbJZXDYH6lmgS3fNcSsCQc9YIaKL08t5DwmCRw+m/2YPCZazc9uGG3++G/Hi4SBZCSApJUpEmEWq4qyrayx833fIBavORPzDzsN89b2ILVkKfzxZVawAZOrquvvErIy5raOYN3VV6N474PYdMutuOPO27Bt44PwpCesvEDcLiZlAX3MpDPq8SNk9c+R1hp27QWbT1ZKNpUtuC+4DErdE0EiFMU8C/j5gtKgReU1k520yc2G4pR7kWyxTpGlxppIhVPoTVn5fHZ/UMVYZso1oyvUebQGYmaQC+PdGEr0IcGsUKEMX9nKz6yc1WGtnEcoEUHP4oWIzOtDzgp90wP34J716zBiZQpaxc/zhRGtNZsYNsw2CyZiY7YuZmUYsPIOdPVg3vxBEzwTz9EpDE+MYwoll+3yWX0OehJYNG8+hpYtQX8sjvJ0FsPDoxgbHnF9dPjSVNsVI/m0CaQJTCjEhwUjJnHZGrNB/Vg5tAIBexZGprZidHLYnoEsjll1rF17L3wbJrF8+WIEFqTQmJhGcWwak3btZTt244jDcMw7XofAiiXI2qMUDQXdNTFDSeMJcEAOypBdC//wQWvmiLia35vr+D9lgIQQQghxMCEBmoPidReY6DRHgUtPZjE+lkU2zUwCG8VReCgnYfhNfCg77BOR52AIlZzJThX5rA8FmzLphk18b1AVpZLPZKjmulGEwx5EYl709DCD4keyq45EF8UihEQyhHiCkmNBtJ0nFrHA3mSH0uN3Ax6w7w6bJVlBTBLYQ4bwb97UWkt0PPWS2Uu5+d1Mp8aR6pwIsTlb8/Zz+Gu+WLVqEtQcIrv5Ela+lDWfY18fODlKT1SRyZRRLdXgs2A4ZDJkDmHSFTTJqNu2FQwuPwEnPuEFWHvS2UguWY1qIOBGjfOZeATsmDf98Pu45PNfQ2B0EjGTiIBZXsjELzcygsnRjZjIpt3odGx6xReOJoImNyYkcSuul0NZR50VIk+hLBUxlsticzVjIlSG1xNEIpJATziGwVgXosEwMrU8coU8xqen3GAVBRMM9s8Jcttg3EQh6frxsD4yBZPbwjSyHN7axIh1yT5E7v07VbtPJrVhu/aI1+rJjpGvlVEPepEa7MfCFctQbtj1jWzGbQ/dj/FMBhxGu9dEKGF1GzFbKft8GEYR6VoJETv6Ql8Eq3oXoLu/26QCGN+yDWMm1rmQB+MmK36rhxX+bixesAiDC4ZMPOMoZfMY3rDF5Dtj4ucxIQ4iUy5gNJ9B0QzTY4bKwSDGshP2jIawuG+hTV12DzNYPzaCSk8XnvCSFyHuT+L2H/wafdUSDjt6FcrlHEqTORMoqyt7PobOPh1H/dMbkR/ocZkwvvy2bve8Yc9cU9NNrO2Te97co9d8AtlfzT2TbSRAQgghhDiIkADNwZ3fGMLoaBoTE83hrxnYRSJRhDmilgkMhyZmH518oYF0uoipyQKm0gVkC7DvFIvmPn4LTGMmM11dIfSkfOjtiaLbpmTcj2CwjliUcztgiGGl3RLbh+8M4q/plCVmbWhcbG7G99A4mWlUbJuam6qu/48LP13fHtdvqTWhwZEVAjbnoAt2TDsNxYnnCFJLLGC1o8Jj6+sNDovNDkt2DAvmOSgC3x/EkcYY9NarLFgDlWrMBC+CsgXPHLSh4bVQvx7H6HAGG8eLWHTs4/GU574VPcsPR8lbtGPkEPR34baLf4H/fu2LsGhzHgONANIWUOdM5HoaMcTrflQiJox23qlK0XXwz1fLrA2kTIIGPGGXzQiZbCZCtn04Dp+VK2MStLWWxWgli3WZCWTtWtifZiDYZRKUMnmJwsfMkdXTpMlSzo49bTKQrubdtgmThMFgCv1R++S385vaZExsRvNZTJrIFk0YvVaKPpPMlYEu9NcDCFodsMkd68dvU63Md+fUkOruQs+yZVYVUdy2dR3u2rQO27LTCFq5wxx4ocGX2/qQtXuXrrBPWR0pO/qCcArL+4fs2UihYvIxOmwyaCKUt7KkTewaJjRD8W6sHVyCNUNLrC6DSE9PY5R9hKam4A8FUbZyjJo0cXCFql0HB4cYK1YxXsyh28qzePECBMJRbNgyZveujjPf8Bqc/MQLcNeXv4WpSy7DMatXwBMPoWb7+CbyeIBZpWeehxPe9Bp4+3rRyJsQ2rPTsGeZ8r0deyQ4FHr7PyR83t07otwKWyABEkIIIcRBhARoDn727qDJgc+EJ4JoLIaABeIM7UqlCgpZCk8R2ekqCsySlKsW3PoRiQUQSlpg2x1ykhOJehGNexBP+C1wZHWbMDR8bnu+yJRDY3PYZ0pLtZqxeLHkmtRxu5oF+HUKCgNMExM3wrWHgxbwGAxCKSa2DdMwFlgTxpwuQHXNkIjfju112R8KkRvFy66KgmVKA48F11ULUusW9PNFQXyXEQXLa2XgRPFjdOucyaJb9hmCyUrAE4GXI4X5ee4wkl0DVj9hDGe8yAVX4vjzn48FR52DQs1jXldxovCzj/0Tbvrsp9Dvi7sXzIYtqHbvS6oG0VePuQEYGj6/SRNQMWmZsjKPlwsolcuuqVjcJCJlEpG0602Y2MRjcTQCftcEjf1VpnIZbM5OYFMxjVE7J/vLHNOIIx7vQqSrG3y3DTMYmWkTJROTSbvmcRMnu3p0mzbNC8aQNEnwM9NWs/OX8xip5TFJWaqXUKHkeAJY64+i3x9Bks3p7D6ErU58lCeTsVI5Z+dLoXfZIpSiAdw7uhn3btmIyWLRzu1H3Gtlt5pnm8Kip4Z03faxKk3anVveNYhFg/PRG46hNJ7G2OgIcrbflnDFjf7WZ3WwKjSAVStWYdGihQiU6tg0uhVTExPwmHhT9CZr7FOVtafC7pXV0YQ9Nw9lTZQCPixZugyLkwOoDk/i3s3bsPj5T8Kz//kt2PrrK3DtJ76ME5ctxqplC1Een0Y6V8D9mSkEjj0cR7zl1QitXW3SVnMvlA27TKIpjtU9B9ngs+G163FPnD2HzeZwrUyQBEgIIYQQBxESoDm4/vMrXH8aBnPFkgXY6SwmpzMmLSYTNfbH8SEWDbvmaqmuEOLJIEIWDfsito/L3jRHdOPobaViU3iyfI+MBdJuAAP2q9kuM4wW+d1CVwsifex7YgE8O8qzz0fAPvtMsCghLitj23ktoGZGodn7wkpp69wQ2s1DMQQ1eaLUVE1kGk6A+G6g5lDazWxSvWISUuWw3VZQlz2iDLG5HMWsmW1qDultc5OVZkaK+9rxGfha+VEPIGCBfSgUQ1dXDJHufvSsuABrzngpvP3LUba68wcbuPK7n8c1//ZRHL32BBRN0uqbt6JiAf5U0U69eQoekxdYYM3BCSiTDasDfyjsRGVTJYNSPgvTLnSZfCWDUURDIUQjJk4mDF4rO+siVy1huGbBe3oEm3ITrk9PjyeEIb9JSSiJ7lTSRMG2q+RQKZXc4AjbChlsRcG9e2jItl3I3kd2XDY7bFjdTNt52d9onM3X7Ii0wj4r48JGBIt8USTZT8nEwMt3MkX9yGczKNhzkowl0DPQj7qdb6KQxX0mNKN2LjolE3Z8j1PDa8+G1WnD6jpkZTXNxrK+ISwZmI+YnWN6dBz5sUknNvcF8laGCpbVIjgxNoRFK5djfl8f2zti0/goMsNjCHHodXvoeD0VExYOOJGxut+UnULG6nph7wBWL1xG9cU9d94H34oleObnP4jGRBpXv/2jOCwUxYI1SxCza8oXinhocgIlq4e1b3stEhed6Ybj5stcIxXaqqlOyJ5zCqDVC/2+bvtxREFmDd1zKAESQgghxEGEBGgOrvnsMmQyaQuS2fUerg9OLBF3fVci8TpicROTAJsbAazKSpmZHQto6yETjQbyFlyzA36pWDKpYBMiCxMt8qVAMLPC4aCDgYjN/c0pmIKHgxrYdi6DwyZsPLP9r1b1WixZc02kKhZUVikvtr7ZLK7opIVDanM3ihBxn720LKZyuIwL3P8M9iOqmDTQZOxbcxX8JiZBBuYNv3sBqbtwmzgYRIPnsqli5+XkbVggHKB8BFHMlFC1a/dV0vDVTPKi89C/+lSsOvWpWHTk2Qj1rcDwnTfj8s9+Cuee+SRk7GSX/OD7OPLI1Tjs+JNw9yWXY+rBO1HJFLCNL0YdmULUpCplAbk3HsNoGMgU8piYmjAZzSFsopDyR2x9HAkrQ8xkKBIMuX4xFT9QNPHbUprGdZMbMVUouD43/Z6kSVAcPcEI4pEIqsE6AiZ15Wwe01aHWypZk6ecq7+EnbvfF8Z8O3bUwvtirYQJk5C0p4ppO/ZkpYiyXUPMbv5Ck6Y13iSG6ibA8SAiqbjLwk1MTCKXTlvZIuhOplCPhbAxN4X7Jrdh1M7HkQAjgRCCJgumym7oa6/dx4CVtdcfc6PMze+fZxJRw9jWYVTSOdc08IF6GpOoYnmoCyfPW4plixcjmkygmisgMz6FCWa47J5zhLlCvoiKz545u6cTJnIj2Uk3St+ipUswP9qF4Qe24cEQcN7734yFQ0P43Zs/jIHRaRx77om2XRSBbAVjJv7rKwWsfNVzMfTiZyJv9RMum6hTciL2THuZBeLodybhvBarF8o3nycJkBBCCCEOJiRAc3DpZ3oRCgURjoQRs2AwYYG414SH2RS+eLRczpsIZE1IShb0+VDIcRCEGkrg8gpKBftcrFsMaNvXLDCnJFXCJheBZmbFZAImERwhrfkSVWaDmIWpomGBY8O2ocXwfEy3cB2dqCk2VkDePUaZrYmz7YvsLzaZY18QLmkv91kw7M5l5+Z3ipjLRtnEJmjbD2sH4Hp3DDsZpcxvX5jx8XEo7bApSJBN33oQT3TDb1LhXgKbM9Ez8avUt5kITiBf8aB78GSccPpLkIj14r4r/oDVq06Bp2cAv/vRDxGKeXH6BefgN1/9H2y7804ce9iRSAWiyA2PY8OdD2DCAv+oP4y+rgELtgPIm6mNpiexbXzYSV/Ca3LhiyJq4piIxNzw2SGToapdGP0t5ynhwdwEbpkaxpTJY9LEZqE3jgEv+xIFYDsi4AsgZvembsKwuZ7HQ9VpNIp5N/JcyrbrDoRNtMJumG6O5JcziZ0yEZrwldzLRP1Wh4MmSct8cSyr+REPRxHsSiAYj1oNAumxCRQyWat8DwK2zBMJYTgzjS0m11MNE0erab7w1EuRsHqv2c2oV8omXn70hpNYPX8x+rt7UTQRSW8ZRtpExmoXGxpZV8bVsX6csmQtFpkIFXx1lKazqG4eR6FSQoZiZWUu2LVVmIkygdpi9Vfz1bBg+RKsGliB2vpp3Do+ilPe9GKsPOoI/PwD/4bg1m04+cQTsLi/n53YMDo1jfUjw1jw1Cdh6eteiULci4It50h9Ibv+mv1hczjTeCsRe7IxQ2kXLwESQgghxEGEBGgOhv98sv1tURwlhPLB9myGk4Zy3AJ+C1Q9BeSLWZuKJhU+lEo1+9wcQS2brtjEANSDbMZkqNBAmc3imEVhwG2177UgneLBl4/6THKCfg5y5rFA3qSDy209pcXbTtHYXwyUfbaCkkNNqbKZnguebWMTKmoMm4Nx8nmCbhmzRcwQcc7skZtqZZtzYjM328x8iyPCVSq8QDtm1YJx10fH9rV1bLLHeJZn4KjLgUgQ8f5eJPq7Ee/rdZmPaLQbXfEUuqNVhCoTFrSPYfPGrSaGdaSiA8g/UMSqVWdjxannYfyhTbjh1quQrqTxwFW3YLN95xUN9Q1g7YqVGOjqRW4yjVFbHpwsu3f0eBJh+BMx1xSLI8aNj4/Da+UPeZsCxPfj8L05cfvMwQd8JkmeWBCT/iruGtuC+yZMhOxiTE+w1BNCPBRxo8CxvxCH2w6ZqDJbN4YshosZTFc4NDZMnHxY4I+ih1vV/cjb+afrJkMeu89eu892Hj4dPVb+xf4YFntjGPLF0G+C6O+KuyZ0k9MTKE9OI2qSFPAHUDCR3NwoYlNxGgU7lj1lLiNIkaD0lssFBKxMvaYVi0xyBpYtAbqiKA+bwGwaQ7pUwHpTnEmTNo6Yt2ZgMY5fvgZLeuaZhJawdXIMEyZatXIVxbLJkN3znKeOgj1nG4smSIUCFnUNYfWKw+C1Z/Tudesw75nnYslxK3H1Z76M2PA0jlmzGitXLEfJ6r2ULWBs8xQqpx2Hte98BbJ9PYhWfQiVrc7suW0EXONMJ+g2c3jYVlIIIYQQ4iBBAjQH4zee6zrrc6ABvzdgMlBzny3Ug8ebRbFkgW8WmJ72YnysjpGRPLZtzWNy2I/0VNYEqWBSUnNyY3G2ayLkC3sQCPpaw1lz7rO5BeomNH5f1Sb2ZTGZseCdgsPMj3uvj0WUzL64DIwFz34/I85mn5+SSU2FY03bd2aImu8dorDZcmagSlWUmAGwiSPKORmyALtqwSm/u6ZMdQtdXZM3Ex+bu5dfetnEzo5r2zZsThGiEFGEXBbMRILX09XfhSUrl2JgaAA1r0mhXcPS+cuwdN4iExKeaxzjE/diwkSoeFsFsfgRWHXaUxGpBHH/urvx4Kb70RtMYMIex4mpSavPaVQsOOfQy2GvyULF6i1dRmZ8EpVs3oldJBkHwgHkTUqnsiYBzGqYCKUiCcQDoea+lCGffTbxizA4jwfdMNTXDm/AnSYjDM2XmmIsRxSxQBReE7qYiVSEdeerIeerY7KWx4QJbqlUNGVq9idaiIhrDlmwa8s1Kq7fUcVksmx1tt72C5gJLW8EsMyOOy+QQHdXF1IDfEFsBJW0SdWWERQyOfeS1no0iKI56gSH6i5xFLdKsx+NPQ8cyIDeW6qZXNu5B30JrO6dj8FFC1xWprphBJOZSTxYmcZwNWf3qIJVwW4ToSVYdthqxMJhlNM5TExOmpCbAOXyyJoIFc1ic2Gvq+dqPmuC1oP+tSsRDccw/sAmNHpj2FKaQuGuO3F0oB+Dq5bh8COPRDzRZdKUd32ZSkevxMlveQM8/QPuWfMGA82sZAtmspwHKQMkhBBCiIMICdAcTN3xVFQrVeoPAp6gy46Ui2VMTU5jejyNDeun8cD9OWzdUsbouAWVxarL3qTiDXR3e9DbGzfZ8SJqQW4owuZtJhwmDRz+uNmMjlLBMJzZGZMMEx1/kE3uIjYPOclhZ3kKF4fbrpSAsklX2USMgypwBLVKqWZiYwGye7cPj8csDc9BcbG6tomjudmp3C/zlC1GpvzM0eaamS2bu+yOlYH7M/NjZ61ynW3jCmGfKUWUM8pbNBJ1GapGtQCfSUB3Moyli+ajfzCFYMKPeHcfot296B4aQqrXlpkoFdJbkL9/k+20CoNHPRHerB/Dw5sQTYXQN7gIDZOacj6P4S1b4bfy8d04E5u24q4bb8GWux9AbWQayVwN1dFp1MtWlxTKRBSNRBAVq9Ph8VFMZaZMmgLoCyfde3NqjSB8JidhE7OgiWgwHkLD6nhzehrXTW3F1kLG7i4wzxvGIEezM2GK+kOImUyyL5TpHvIctrpWwkg544bo5vt9hkyuFnhjSNQY6NeR8dj9N/nJ2zMySimzSuedHfKGcESoG0tNXvpSXUj298IfCWFqehITY6PIjY6ZWAEVM+SsXc+ESfNwIe36F7GPmFUWCiyF1b/XjtttwrYg1ItFCxegZ3AARXsW0+MTmDKR2crR7yppk78glvYO4oTFq7BsaIFrDjgxnUapUESR/YgyWdTyJu8hYLPfrmti1K7Zj8NXr8W8/nnYvGEr7t64HpsL4wjYA7E83I0jhpbguGNPgr8vatdVxeTWLArLlmDJW16J0tJBN9hH3MTU40ZCsGfMrsU9usoACSGEEOIgQgI0B+V7n4xCvozsVBkTI0Vs3ZTGQ/eNYsumDLaONZDOABbrYx4D/v4BJJbn0N1Xgz8cMDnwW+Dth8XNrkmZxeuu+VuuWHIvS2Vmpl7zWXzIoahdqIiA7edlEygLmj0WxLN5WrmYQ53NsFr9hChOfNkk3xsUsonZpIgvhrAJUzBiUaiXLz/1upHj/GxK5SnakWtOXJhRcOeiENXqbkAGipAb+poCxXKWgaKVrViywNvKns/ZVPDYMpM/W1YzSbJiIc5sSSyCeDSAaLBhYXkVYYvXo6kw5i/pxurlCxDsXYbkEU9AbGApfNVtCHs2I5c1efGuRNf8061sMUysfwjBehWxoT5UTR7967bh5l/+xjWnO+yiC+0pDaG6aQu23noj7rrtDmy+bz0qo1k0JgtopEtu9DqvmRIHb2hEYxjzVbF+YgQeC/C7gzF0zetDwmelm5hC0MSQUtkIBZDsSlm11HD79BbcmN6KiWoNSRO8ed4g5vkjmFcLuP5EbINo1e0mNl0smAAN13Ou+WASPhOSCHr4XiITwrrVYc0Ejv16xkyGxqxOiiYAcav3wUgKhwe60B2OujLxnUFeO9/0xARGtw2jNj7lsoB8mWnO/GHExHKsVEDJ6jTU8CFkzwPzQDlbzkzUgNXL4t4hLFi0AMlwDNnxSQyPjmKr1e9wJeMySf3+GI4bXIZj1xyOUE8KmVwOpeEJlHIF5HJ5TNrNTdu9q9p5R0aGUTbbXXz4aqxcsBR5E/yr7rkF66c3o88TxkAogaUmRyccdxKSQ/OtQjjsuB1jxRAWvvbF9o9gEH6TQa89cx57TqnQDas+D01aCCGEEOIgQQI0Bzd880hs3TyG9esy2La5gvQk4Pf4kIh1Yd4iLxYNVdHdW0Yk0WtCUkO+3IXJRtRMZxK1golTvohyoeoGQ6BIFWxZrhK0INokg32FynXkbV43OWGmIRq0YNcCSPb/SZhNhC2AjAc9SMRNZmylPxxC1KZQyIeAn0Nl110fIRegM+BkiFw1UaIHsS8Q+/zYSovbbc6mSBypi31cmsNcm0o1G/TVOSw3B17gOp+JkM+C2YZJSw1l261i3wsmQMUCM1F1TOcayOQ9JkZ2LnuCghSKeBhDfT2IdSXhD1TQF7f6OfJMHPPMtwBdS1CeehDewl3weMyqAqvgTxxm8zgahazJyYSVke8eqiI4MoVtf74cmzc8hKMvegL8Cxcit3Ub0ldfj8233OMSCttqRWzMTCM7ljbRKcNn+8aLtr/VZSniRSbQwJQdN2vb8P1K8/oGMWgBemZyCpVc0fUR8pv5Ja0ukz1J15fm3m0b8WBuDGmrj4DV5/xGAL0mQt3+MBINL3x23RzpLBAKIhNqYLKQQa5csFqvmQLxxasp9MaTiISDTjAy6TTKjSrYg2gSZUzbPGFCtSTegyWxHgyZUPTEEoj3dLthsrPbRjC6ZQuyxbztZ/fM5DZjYjpp1zFWKcNj+0bYBNKup2L3ku8lsn/CGDKxOsKEZajLnkG7m06CMlMYzk9jY5HDgAPHdy3CuUuPRP/CIeSiXuRHJlAwwcmXSxifnoL5LbLeOobT0yjauVYsWYqVy1ciY7J33c3XYfPYJvR4oyZBcSzrnY9jjz8F0aX9sEfZ6rmC+tLlmP+y56LUl4LXBNlv9UQR5yPoNSkSQgghhDhY8L3nPe95X+vzfsV73c/gOflprW8HL994z1uxaV0eDZOCoaEEDj+qG8efMoQTThnE2hVd6FkYQH7oJNwXWo2tRS8mJ5ZYIN2N28e6cNdUH+7OzcO9pSHcm5+HDcX52FIcwtQE3+LvNQHyIOjzYaDLjt1Vx4r5XixbFMPqpV1YvTCCFUNhLFkQRVefBeD9cZMsikYJXj8HW5g2IZlAqWJBdskC2eoUsuVp1ySuXveBL1el3IBNkgI5+AJ5+C3I9oci8Pljtixpx0lZUB2wdbaNBfrwhiyejsDjjZhccTuPLa/atiZNQRMtC/p94Sp8kQaC0TpiyQZiKRO2mFUUm3tZ4FyrZxD2erGgpwupWANlE5V4/3zE+gYsMM6bXOXhDZsuRBegEexCnZ1GzDb8HC3NInV/1myrUEQiEIRnfBr1iWlEUrbOpCaYr6J4z2bc/adrsGl4CyY9JgUmiYFgCFX2zzIZYD+UholD0QJ3Zii6InHUq15sMiG4Pz3uOvL7UkmTPSuv1RGHti6brMTqfizu7kd/IolytYTJchnjJotFExA2w4uYkFgVONnkQBh86WfE60fUhCRo18C+UFO1HMaLGZexGTDZmp/sRqziMXGqOTHhvZ72VDFiQpMp5TnGhGvWViuWELZjJ+f1IznQb4IbdaPR1axcPO+8cNzuG0ccLJuglhEIhK3OQlaPMUyZtFYqJRPzSZPTEpKxOPp7+5CKJ6wOTe5qfhOlCm7Oj5sYDSORr2EgnkLARIV9jMImdswUcmh1n923uN0bu+sYH59A1a5xaPFC9A8OopDOYyo7gagvglAkgrydry9pspOIIhwMI5CpIFcqIsK+Sb6A3de6G8jBbNs1vxRCCCGEOFhQBmgOfv6eXiRSEfQNxi3g50s5vag2qmBne09jADeUjsc3Lh/ChvG8BYIJhD05eAojGC8NYKruRQ4VVCywZDOzsAXZYRMSfyWHYC2NebEKVvSUsaq/iL7QOCKYNAmYAEoZeCoFhPwWIFvQXPT7LagOImZ+EvFbMM0hqNmXxYLiAAcI8Act2ORIbyGEvAkLtPkWmaKJCwNsBrjNPipME1VtYqaoYoF0rc7mYyZKNVtr5avYX3UO520BfrXIYaztvI0AirkcysUKSmW7npwX2YIXlekCaumyCVgDfgvvQ3aykAXjMfb7MCGIdQdw+OGDiA0MoN69FguOPBeJnn5EYjV4oxa8R5ahEZiHmpWf5sOBk/m6IouyURjZAt/mrQjcsx4T99wL/8JeJI9ZZeXyoHbXBtz36ytwy9XXYWN+1OrGgvbuHnQnB1Aw8Rgp5JGr19GT6EaoABQzeYyZdFECsiZFU8W0E4xeMzdPqYpIsYjY/2fvT6Aty/KzPvA7053vm9+LiBfzHJmRc2VmZSkrq1QTJSRKEgghkLEMErYbu92Ldvdisdp0G9pethkaVjdmYXfTYLOYWraXDSVAA9ZMqebMrMzKMebhze/deTjj7e/b972sVAkTqChVBbz/L/LEmfbZZ599bq71/8UejiaiYL3MaKrzRgU1BvX397bxWmsbu8kQ8rsFr4QFlnVRM815IRoe61ItbYzx1XqnGelGmgyB65gypC5x55ZP4MTCCnKKy8b6OjpdyhEStJluh2t1TDw+M4enlo7jRDiDGqWlWqtivlrDJI7RaVFaNjfQ7XZ4L76fUgnbkwRrFMmEv6laqQrqHJ+rjz4lmJrkvh105eRpnDpGEWGd9js95rGFr/c28WbSxhyf86XZ03jqySexsryiDyuh0+9hQHnSjHqtISWVdaoWsR0eXz1zCo88+bgbM/Tl3/g89rbXcenCFSzPzaHaT/DIc88gPLaMpNnEiPUz8+EXUHr+KZYvR6HJPTR6zsYAGYZhGIbxEGEtQA9gKfrvsHSshEoDKFU0y1WVAf4ComAOce08/sqvncLP/dJNjF55Gfe2PNxfPI2RN49Bd4JYU2JnIcYUhzSebo+4tEsraEXHcL9YwPXBLF7vzOHV1hJe6R3H7X4Z13Z9XN8JGYRnDK4ZrM/O49jiAhaXT2Ju6SQWllfRmF2gTMxRgubgl2YQUJI8jcKJCwxHLfTGWwxod7C+28VaK8ebN1t493YXN261cePmHt56ew03bmzj9o0+131cu93Hvc0Y93coCf0cmVfhvfUhVLUo6R/ySwzCK+j0AmxtF7izljDtBJsdDxt7BQZ9jzbNEmTTlo58MkISD1xLxBLLWmJeFTpaVK8CtSV45UX6WEUxupMzja3JJWc1ylxdz0JRGo0RDBigUx6K/pByQBUp+WhWS5gbJqi3Bhgy8F8ftigzPQb0Czi2sky5DNHa6KCvqZlnZjAMUjcVs6a3blJgxpSLDdbRXsp1wTyy1LXmlNR6xkA/7vZd17Qzi0dQYxC/RRncLvTxU4qhry6HfEaWu0zR1CxzagGil3JNMQrLqOSUxHyE290dbI77btKDEyvHMENJDCiSmpa7GVVAh8Ue877f3kWPctugxIZZgf6gh0qlgrmFeTQWZuFXNO02RTabULADzAW8lvJWJOrKF1AoqwgoTTGfo5sNsNtuUWhG/M3WMHNkCYvVJk5NKqjyPa55CV4f8H4bW6gzz8YS79FsUKQp1ayDMiVLLXmaZU+z3GmKcbUOnTt3HqurJ7Cz08Lu+gaOXziHVs3H7r0NnFg6hqRGAeYL1iyD/rEjCGbqatDjM7Lc6g5nGIZhGIbxkGAC9ADSjf+V0jOLMkUjKjUY/NYQhgw2xxnud6r4hy9Xce/Gy1je/jKycBfjxYuI0xlk46EbK1OkDMKTgDkx+ud1hYLgrMNlgAkD2jgroZdWsZPNYY0ydGcwj438FO6PjuDWbgn3N8fY2exi2B1je6ONrY0dbKyvYW97C62dXezt7GFnaw+bWzexvnYLW2tr2N1bRydpu9nI/MpZ9Ior+OnPvotf/fU7ePedNtbudjE7U0OtrJYiygqq6LMcW50AO70Im7s5RkkNQSDRm0GdsjLXPIq52ROYXziHmeYZjKIGbgzGuN4Z4m6cY4/BfzY7A//IMsJmE7VqA16pSQkKUK/M48zpc6itLsCfW4Q3cwF+QAliwD39TlHE/RI8CsXEZyCtep5bgNecQViqUBomSO614XdShPU6ShSh2fqMerjxOUeIJ5n7MOjW1gbKowkeO3IaF44ex96oi3e37mC7u+26YikMHzK450PxHTJY9wq0NZ8ZA3S1hnkFg3dK2LhI0B10URqOsTq/iGMLLDPlIk5idIqccpO4iQ2ykOLDZ6j5ZczRkCO1tlGyJCnVkt41yzfqYZ3lGo/HWD6yQpk+QtEIWM4c81mAGt9AwjegLnrbe1sUWcpVrcLfBZ+pTxHisy4tHUFlcY71w3zTHDOZh4VyRb0b+d6GTJvzXdb4jub4e8sxpHx1h13X4lSFj/riPGrL8zihKbn9CrJggrVhG3e27mM8HGFmZhYL8/OolMtu1juVLx3FlC6P767K31OLJZzg3KVLmFlcwvbt+671a+WJR/g7bKE8yLE8v4S8RIFl+kmjgRKlL/EmTg41bsowDMMwDONhwQToAUx6/8iNnZkwWO70GMxSQN5+8zbeePUabt9ZQ7d5AW/vXETHY+A3S2GITiDvMyjt3UEWt1D0OvBGfQaTGTzNcDZTRmP2CKq1RUTlJsKIgayvbwB5yDVzwThEms1i5C1jHB3HTjyDd9ZifO3WAHMY4OTsBAvM4+hSHSsLDRyZb2JxhkIwO4u5mSNYXjiB1dVVHFs9hUl4Cffvn8TL75bxi5+/jl43w2hYYK5RxYUzRxg0MziuV1CmaICSg9IxCsIiA/GIz1ng2l0Pb9zI8NbNHr5+fQ8vv7ONd9YTbFGONpMFrMdHsTM5gWHzKsZzT2HAdbf+KLYaF3GjdAY3eP9309N4vb2Arw+a+Nqogq9tUOR2U7QGHtbbMTbbA2z3hmj1ErS6KYaDGOkgRW+Y4063j7du30P3bgetey28fusuOpQtj3I1ogzEFI5SGqLUY4CdRxgy2N8adNBttzDrA0+cOY6TCzMY5Qz4e3t4J95FK8gZmBcoT4B5lFFmkJ9RjVpehh0/Zb1nborrKo/5DPtzlmFmXOB0eYHS0UCcF9ijBO0ynURIM+kFFM2qX8I8BWSm1nD5aQxPcxJijnKkCSa2Rm3c3tuGx/QnVo9jYYn1rX6HoxSzTLdIEW0HKd5p72K3vUOBKrspvLNhgox10qRULC8voTrX5LPnTtIqag2j2EWTMuJhSpWaoElBrFerSCh6vbiL3k7bdQPU940ax5bcmKijfELN1raZ9HGLctjZ3kGTwra4tIJypYJKpFn9qrR/PQklplrBXr/PexZ4/Jmn+Xtp4tYb7+Bi4wjq/O1sD3r8HS6hFKo1iuJXrSNYocCyHBr/M1VPwzAMwzCMhwMbA/QANj7/Ira397B+bwftvQGSUYGIQe0Mg8Dqyjzajefw868ewVfe2MJoNEbJZxBailGfMPAcZuh0GCh3C3SHQNtrYlxawoSSUjl6iiK0jFKtSVGJGFhrPE3M/DVrXMKAnq8ljlHJ+6gmHZTTHj792H1cPtZFxeM9ymA5IqR5Gd0+A3LJjaauHqdI09x9FPX+WhdfffkO2vEAhacxS2rxoTTw73JFc5dlahhxU2rnhaZ6rjFYLzOoZyoeSxnk5xI33k8JNTU3mEdQnaXsHUExfxxRYw5FyOsCBvoae6RWHc0UwP80mF5tX5MJhUAtLUHBwDvFHCUgCtWCEbgJBTRPsvu4K9NqhjN1l1PQPBoNkPb6aMYMwjNeX4yYmQSOATbTBQklIOG1/QFKDOYTL2WVddBIxzhbq+PyyhKOzc/xnjnizV18ae8WfnG4js0ixaI3jwXWxAz6LBnFi8+asBxlFmeVYnSMkuAzep/1KBksb40PVG3OYlyNcKffxg3NMDfh+2GZF5h+iXVzvDSDU/OLmJ2rYDAcYm+nxWeIKWosF6WrWwzQ43PVKQiP8P2fXzmBjGVfv3MPPQpGFzF6XoIO61zqcXLhCK4eOY2TjXn4lKDG7Ayqy/MY8rfSbbfR3dxG2h24cV2dhGI57CGr8P1QliZRgJ0u03S20ZhMcKQ6j7OnzuLC8dPwKJFbnT1sb23j9b27uJH1cCGaxadXr+LiI48gXqlhNBiiaPWxSTnaHbBuyyGGJQ8Xnnoc5x+5ii/83K/Cb3Vx9MJJ3Bm3eN0VzGiyBrWEXT4P74OPY3LiuJsOO5jYGCDDMAzDMB4eTIAewC//pRkkSYFKuY6ZmRnUG1VUq1QIBrQeRWNcMNgNFnB7O8PGTh9FOsKgtYvt9hD32jlu7U6w1aX8DErYTWeReYvwR/q4aQ2oH0U0u4po6SRKi8fgM2gvzVYpEj7SJMag00bS78Ab9/mihhShDRSd20g69+EPd93HR/URVH3o05+MKTiaHY6vkwLjBu4weNeHS0OfAShFI5/oK0AlhtY+k4TgCScqriWCAuLm0nbawoPc9vTP977vuu3BZ6hP0UFU58vj/aIawvIMj2ucEK8LZWQl7itt6D7o6uyK93eL25YVaeFt1H9NZXR3ZF1yLU3ig4APMRVAP3CtY5qym09BQYrct4o8ltfTMV4UuKv5fN6IaZlK3a4oELWMoqQWGBZn1R/iLJPUxl0UvU30W7fxSrqFdwMPp/MAC16Z1xXUoIwKklPYJpjxSliiFM6zXpZYV1XmyadCyGeMKjVKiIdbDPzvToYUIaX3cYz3O+lVcWZhAcePrvIZgG63i2197DQZaJCQaz1qZSM37ulIcxGPnr2Io7ML6Kkr4537lI02+qyDNkszKGI0edcLKyfx2LmLbjY6TdywTMlqUHJGaYL1nS0M2y1XLx1NttDroENhK8/NIqhV0elto7u35Sa2OBI0cYZ5nTt7Ds2ZJuWojx1K0Dtrt/HGaIOSF+F7Tz2G5554CuUji0gHPQwpWFu7u/wNd5DVWU/zTTz6oRcR8P+Hr33h8zh5ZhWjqo/VSxcQZpToXozyyVX4H3oS+cmTsl9EfFeGYRiGYRgPCyZAD+D+//w4ytUaY/poOlZkknCduCA5SGcQ5xm2ezvY7fbR6hRugoDN9QT3NnJca/lYmxzBuHoaWbSCJFxBXlpkcJ6iGA4xHOVuCmYnHlE0Da6PHEN1aQV1BtERg1z9a3+nt4fRqIeg7SPqU3J6NxGO1+CPN1HECn7HbplQiDyW60AuCkoUI22WnUF9kcgwnDTINtRag2L6wVUJy3ShBAVcO0nhdkjRo+hE1To8dYkKK1zXeW1AZ1K6shuXonE7BdNPKAr6/KVaciLNKMc91dO0mUlFckcoX9PyeRIgTW+mMSJMr65iTmz08VFK2ITbLMlUgChZPu/pSaz0AHoQJ2wqrlqvKEq8rmBZ1K2wSllrcKmVIlS9Afrqjjjp4HR7A09v3kcwuokvjtZxPZs4yVjmUtfzhxRFjFz5FxjQz/L4Autkjuc0VXVEKarwOcu85yD0sOknuJ8O0KGAsEZdXkdZvtXKPM4fO4Pl2TmWM8cdjUVq72AyKjCmpG25lp7ETahwcXkVj584hzlK5ObaGrZ2djAYj5mOslTwd8IS1apNPHXuEq7MH0XYGdNdfTSOLmHSrCIbDNBa30R3NEaPy96I5RnFlG2g3Cy7sUhblKDBSDPFlbE6t+SE6ujqcaTjFC1K0Ftrd/DV3duutepTi5fxweeeR/3kErJ+jDiOWfYONtt7KDfqqD1yCUefepxitaeZIFBZnsP8ET51wmfb7SKYn0X5ucdRHD3i3lVAeTQMwzAMw3hYMAF6AHtfeM51D8snDG/DKgPsgIHlxHXZ8lIPoz4D2W6K/riCzW4Dd7YruH5niPWNFGvxLO75xzEoHaUMzDCfMuWphCLqUQxGbnxEwWB1MhoiyFNkEpag4UQD1SpKC0uUoSUGsQ3e18eoM8S4vYvJcAte7x4wWIc32gGSDoKYgkCvyPZlyJOkUbTUDOFplY4Yivbh+5ry2mNQzNC+chyozSANfTcBgeRnElEyKHsehcwvNeg4TfedHZQoP5G6uUl6QmQUnzTgdawPSVDOZ5H8eKyXwCsoA5QdSZCkRxIkKC2SHi9LptNvc/GVJmGATBEKmIc/Ttz3bjyVkcdyLr7khs/DB6YQMQ+VT7PeSXbKmlK7iqRcRVTR+1GKACXWYajvIVFQ0yJFbexRKAoM4j00br2DUxt3WeBdvBG1EE4CzLKOGgzU5yZDHKMALagT2sRnTgVmea9FyuAiBayR69s5IVK1OPGxNPNbxudan4xxIxthl/do8vgySljiuzy3sILzq0cxN1Pj76SFndtbaPW67qOjEqBBHvOpEjSDCq6evYBLx04jGmfYubuG+zub2ONzd/2MgjVwYnlh8TiePHMZM3zeEcWnwmc/tnrM1Wtnr4NWu40e5ak7HKDb56JvB9XLiGZr2Onsotdu8fcwxsnKHB45cwUr585Qavk8m3tYu3UXv7H+FrYwxpXl0/jEC9+D48dOItc7ifk75/00IcL46CJOffzDaMzNIokCDCiwJdb9/NwCBu0u/Jk66o9dRjE/5+RU498MwzAMwzAeFkyAHsDgjR9DmgYYJxpvU0NMicmLkFrB4DpqIM5quHs3wevvdvHqrTau7+hjmAmD0rPYTCq4n9YZQldpOvQa9QRiAK2B8GoUUSuHPsipY1CLioL7rEUZGFIaKAApJYFBftScxZFjJzBYWsRQssHANu/3gGEXk/YmaEYIelsIBvpeTMK8JQ1cGMT7Xo6crzjmOYwpTB6FSzPSeYuIFi5xOcXnqLhptEGx0HgkfXtoQrEpNK7Hr2Ci1ha1Crn2GC7a5q9GDTks8hTXIjPdLUI+k/prUW7ccS3uDPdDzcDGUJ7HJBCaejlQfqqGlOITeIhUBokSzwtPaSkWvkyOaafd66QmEqOJE5CRJInCN0lj+Fxr1jb+uPmuYpa/wEKbEjuiSISUw/4WKpt3MFMqEDP4L0pVZGWNjKIotdexvHUD5ycx6hTDSTFGnQH+DMuy5Jew4FVR9ykUYcpa1NTUBX8flKxSCS1WyBZF8zYlSt8AnZ2UeV3g5OnRk6dw/sQJlIIS2ps7TnB6fYoQf0k9vo6tYoRhNsapmSU8dfIizi0dRbfdwb3tDdzf3UbMZxkgphCN3QxzV09fcOOIavGE18WYW17C/Mw83/MAvb02hXyE9rCHve4AO/0+koqP8mIDYx7vbm6hGA8oXQ1cOH4WF68+QmmhPO72sHt7Df/0/htYH+7ikdkj+J7nXsSFC5coQBTCJKWcprjZa2PhA4/j5AvPudapa3fv48jqCSwsL6OfjFFaWUDt1AlMqmpd1Mx4JkCGYRiGYTw8mAA9gF//hT+HdnuMdjdHp8tAdXeIbj9GiUFoGlZxZ20P797YxHY/QT/P0U+7WD5+FOef+T147X4XXnMevZ1dyscAocdgOw0ZnDfd4PBoMuIL6FNgKDPjMQPMMQPqdaZpM5CnuDCYzxhwaohLaWYWxbnHUTpxCWF5Hn40y/NMw3wnMYVpuI101OL+iOm5pEP6Bi+kRZTHe5h07iEZrPOJeM5Rp/ycQ3DmezCuHmd+IfySxvlQgigTORe17Ki1R7KicUGuNxvFT0IinZHASOQC3iMIeIbBrlsz+i9THiQyGsOj6ZWrlao771ci9CkkDkqe8swyPgdFIpnkDKhTpJQXfWjWrVmnWiY876YUV1c57qsLnaTJFYRCGaieJFBcfNabl3DhOi/UZXGI6jBBQrGkNSLc2aBAbiKYrWFh7kmuj6FdraFoligsHVRuv47o+tdwutjCAq9YYLlneF9qLCqI0CjVcYTvUiLnMchPioziMYQXU4p4/E5ljI1kiJjveOIFaPCaWdbbCQrK+ZMncXrlKEqjFK2Nbdzb2sA231c/KDCcJGiN2kzt4/yR03jk3EXMV2pobe1ga2MT7dGAaYfYSii+fPgzzRV88JEnMTM3ix5lSV3zVo+u8hWG6Hc72GnvYdgboz8Y416bEhXxvTRr7l1sb26i19qBpps4sXISTz75BCpHF9Ee9JDf3sabb7yO10b3sdpYxkdf/BjOX77iuiLq99gbDtHj+11+kQI02+DvfoJlChAkPPMNVI4su9a4iX4cqiO+R8MwDMMwjIcFE6AH8JP/9T9Brz9ikO5jnAAJg70sz6bBPKWl09nG7mAXjZkaFik7rfVdBsEVVFcv4M31bVRmZ5GO+xjsbENuUmQV+HGfwqKWngGDQwbleeymHHaD//WP5RQBzzUXpa5FRC9IjSm+JhloLMJbPItg8Qy8Sn3apS2nNiSJazVR60fI/LyMMuVm39I4HP6djhBmPZQCygQFJA0qmDQX4DdWeY+G61Ym+eGG6woXcNGwoCDUJAoB5U1d23yuPfedmIzBbabzFB590FPzKUTcLpUoBryrz5tqAoZILUtOWnhPljHlM/YZRMdxgtH+ou/YqCVskqZIhhQ6Z1qSnWn3OQXeGicU+pIg1RFFh8fUsiAx8rIYk6Tnzqk7nZfyeh7Xx1Xd+CIJV8HrykxLCWiw4FG5gnRpBiXKZKW0giKYc2ObomQHi8kG/Duv4MLuVzBPKa0PxxQjDzXWyYj5pCzTsVIDyw1qDbcbFLx6pYKdvW0MBn1UmWZUDnGjiHGPZcv4/HOe5CrAPHKcXDmGSxcvYXZmBulghK3b97CzsYUh03e8DDsTCjff13y1gWdOX8LVY6dZHR7WNjawuU1xGY6wM+5gNx/w/ZfxzPkreOrcZeQ8nnaHWFhZwMzSIsuZY7zVRX+njVY8wmaPUkRhLs/NIKxSgoZtbN29jXn+Zk7Xj+Hcs09h5uRRVEc59ra28KV3voZ3N29isb6Cj3zk47j0+GP09BgRf6uscWwsNxFcPI/msWOoLS4hWp4DluZQUKTVAKgukJ66V1oLkGEYhmEYDxEmQA/g0f/iHWz0eujpX78LBt4uKFeIX0LJHzPgnzgJmWicA6syKkLXNUwD7yf7XbZ88BoGmVnCAF0tKLy6UPCuJgzWvlpXGPFzCVDoe0L71yhwZ9zL9bSlBAyQcwb0OYPejAF1ruPKgEE1fQzug5NMGFKaNBmCJETX537JCUvIgFii4tFY9NYzLqUJBUYzrrlS8TreW9NW5zzmBxSqYF9AGMyq5Gq5mki0eInGpLiCSdh4zURrpsv1h2XNGChnlJqcwpPrmzLKR93/KAiFRELCpzxdFix7nrBWUxfsZ9xXGrX00D1YfxnCWGE3k2nqbLel8T7KgnlQXlRr/sF03OWq+2Cqr0kbyhQ8CVWZ9Vspoeq+vRRhMEkxDjK+szLKSYQKBaqadikqXZSHmzib3MfJ4RCXKTHxrVcxUKtRVEOiEU78LTQohWfmjmChVHOte9XZJnrxEN2Ne+gNusjDEgaspO1kgM4kdpM0lCMuFLSjzOeR46dx5dRpVCtlN1Pc+r11tDptDCh6bebTTtTBLMeRmWV88JEncGx2AaNuz83ctr67g/uDFiVIY5FyHGc5nnjsCazMzWO4s+dag1aOH4dfCdyU1vFeH/3dDvb6XWxwGVEE/ZOL6O22kNxdp5wOsFhdxlVKzqlHL7JOffTubeCNN9/Eb9x7A3ONefz+T/8gVi5f4jsdIeb/Anm9ifziWdQ/+jxKlRnWcwVJhQKs3x1fmlN3vRsTIMMwDMMwHiJMgB7Af/brBV5f28Otboz2cIThYIzBABinIRVFg/kZsDPU06QICsh9RfOMykeUF8mJC+4pB04vnKDklI4EgRMGHmOArzhRQb8WzUGmVg8X2nNdZBrpMqVw13ChGCgNk7t/ZXfbDMgjHSBqaXGtLsxbY2T0bR3dO9sXD4kKLULNN05Ypl3KVFCWxa21uIzgZ4nbdP+a744rX64lfAps9YBC5yQs7rs+3Nfi0jFPbSsgZlCt6cPB55ecSaJcUmXh8tbYoxI3JWCUNQqDa0HSZAtqsSmXEFSrrtyRW4eu1cZN4EDhUU35UcS3wtDb5/vgedW8ttOYz8HyRjRACZS+P6R6jWiOZapclfcOh2ME4y66W3doh30sNyLMU0h+5NJJPFEbYPTuV7H5tbfh6VtQLFPi6WOoKeab8zi1chzVIsBcrQavAuxubqC1tolE33fiPXdYqu18iHEpcN/LqaQFSqMEx3ntk5cu49jyEVZphg03C9w22v0+hiz9zriHdj5AjcJ79dQlXL14CVU/xO7OLnZbLWzubOHuYA8xhbMRlPD45Sdw/tJFFPydpuu7mFtdwsyxFUzGCbr6KOp4jH5/gPub6+57Q42VJd4FuHbjGkbDPhZrc3jm6hN49OojrFcfrW4Hv/blL+Llm6/j1MIJ/J4f+CEsXzjD37d++3wPl86j9EPfi0mpyd8J656vosp3qckohPvbusAZhmEYhvEQYQL0AH55p4fdfBa3OwG29yg+vQn2tkdo9WPcL8bojYcYKdjMGbQzksySjEGvJiBQWKmq9ZwH5BIIhYOK+ANJAg9ye3pOUiIx4KEsdtf6DNolCJKY6UUT1/1MHyV1s6sprQ4TjbNJKE5+5COgiGWaOU3H1ZLkLEn35j4DWn0rJ2f5Cga/mqGrRBnSdAKSKwmOrndBK9OV6DNlJzCUCC08rNYY/ds+eEf+eqbpmZb/8ejBM/OYutIRjRdSeVUO94eZqwveNA+1Lu3LIbfTIkLqz2qHkjlAfzjA/OIi6o0GthnsJ2GJ+UhgJk6QtNb4IbUeeXyORF3g9ByqO3W9Ytpswmf1hk4O9YHVkGUJeY3GvoCi6A86GPVGiPsUpCSl8w1Z+gTVWoRGcw4NvoTjYYyV3nX84Kk5vEjxWvvcy3j3nXdQ8B6leo2/hTblMsWpI8exuryCuVLk3l0cj7G5sYmd1h4ylrfgs29TrHb1taFqDSXmVeNPYW4wwSPzq7h0+Rxm52fQbnWc2Gy199xkBkNK6MZwj6XKsNxcxNOXHse51RPIutPprzfaLdzv72Jr2GFNZriydAZPP/EkwmoFg80tyjawfPEcvGbNTZCQ83lH2y20d1rYGnThLTaRzVRw9949pt/BMcrMs088juMfuIKiUUWy1cPP//KvYDhfx/e99HEsV2dQLNYwSFn42QU0fteLwLmTfIMlN+ZHE0C4l+jsnytrATIMwzAM4yHCBOgBfPH6TfwPv/gavnRrgm5WR5p5GClQpixMfHXjypz45Az4Mq41xbRTnUmkv2UnUpOpsDAAd9YSlFyQ7mk2NEqJaytSvMj7cYu+QjGgeDj50XW6hhT7rUo6rpemdO8h93BMW5IOGmZ0pc/UkpRpPtP8nXAxURgqrSu4S6/xPu56V05eybWufe/DpopuKRZlXlOX2DCNm8VNrUoshC5zzz3VKIcrp/7jNSpmzudQS5TkR+Opcj6PttValWpbReHl/X4fK0eOqE0Mw+EQ8ZhyyHupWpTf9BklddwOKaB8F7yJO+kelWuf76oxip0E5PF0Uok8pkqMRhQmSg9lVDPtBUEVlXoDXhTy9fio6PtBicayFDhep9S+8YvIXv85/LEPP4MfeP5ZJIMUr/zyP8Pg2j2cnF9EPx3hWnudQlDFU8dO4cTKUfjMIx6N0d3Zw97dNffNpyF/M3sUx/vZAOMowgwla2ZSRjBM0WRdXD13Do9cuMSiF2hR+rb3drCzt4dWPEQr6aMTD/iwHh49fQEfuPiY+3bQVreFta0t7FF2dihjnWKARnkGT195DFdOnUK/20Vr0MeREycws7jEZ48p8j3EnSF2tndwu7WF0nwT1bkZbK2t4+7t25iJSnj6hWdw8amnUCrVsUbRutvrIoyq8HbaeOb7Pop8roZuq4/yk4+h+rHnEEdllPXRXLmvfl4sp/tdWwuQYRiGYRgPESZAD+Dv/Q8/jc9+7h18/toAWx0GwoMe0rinZhsG1w0G44y+1fVroiic0R4FghEj1zxGOdDHRH1102KQrW/X+EGItNR0xyN9aycKFMtP0/L6kIG4z7wUOGp/+uHP6StKGVgWjPpdbK9zup9khkfUjuJkhX903o2f4WW6Wi07U1nSWuOFmJYBtusix/tmvJm6wmliB13jurrt42byYr56PKGPauoGPkUw0CAilYPp1aVMZqIyFZKhybSFyQXB+sO18lfOmQzG5aO0spnptlpNKu5Z+ES61qXXPXxUyyHiYZf3mbYmqVVJkxyoi6BaGPxs6Fq+nAAx/2m3Ph1XPF5DphYh925CTDQzGUWnUq8hL+tDoTzu6btC+pirZDXne+D51Mcizz1RyjD31q9i+Bv/Exaxg6PH5vC7PvH9eOzsJdx/9Q28+4WvuG6GzeU53Fy/i729bRw7egyPPfEE5mZnkfUpbxp/s76F9e119/HcmMXco4BtYoC81qSYrGBxEMNrdXF0cRFPXLyMo0tLSOIRdnd3sEuJ6sVj7Iz7WOvuYFzEODq3jGeuPIEzx45jPBxha3sLGxubWN/cQCfnb5R1ee78RTzz2OOoJz66a9uoz1O4Tqwiq3gYDFhn3TH6O7tYv30Pk1KAxXOncKOzjXfefB0LfL8fe/ETWH3hA07yO2t7+Me/9qvY2trET/yRfxvLz17FqNdHXK2j8QPfi2L1KIWRvwdKtV6r+33qPZsAGYZhGIbxEGEC9AD+5F/7HO5nFbwzLmFjkCBJFWjHbrxGfajZxxKkDGQLLmkydkG4WlSiVN+k0dTL02mcFUFKBTQxgMb9yCcKNzEAI/R9UXAtLGGV69CJhmJHHXbKo+YOzQing+44N3jdAZNpvyNmKgGgNihfiY2EQOlcMMptrZSOh9RNLBupKxvN6iAdV0oryQhUTskKj0lENJGArtY2n4KiovvrpBaJzFTO3BgjNQEovfJUHu6mRPkrmnYPxh2N8XEX6T4hItRdfUnONLGBRE1rjS3ShAzuNrqtxv9M9Y5Z8b7RBKVyxcmmz/rTd40ipaFkxmXmyXLkuiXFJ6Pk5CqjWq68MqtF4kgB5LrM60tqBWN63e9Ms4Ir7TVM/sF/h8d2r+F0o8A2BSSJc5y4eBEvff+nUK/V8DolaHjzPpZ4r13Kx+37d917uHjhAq5cuOha1ob9AfYoJ7vrG+hRiDQhRgspbqZddPkujs8t4mhtFv3dXQSjER47dxGXzpzGTLOJ7l4HO3u7lPAWRWiEje4e2qMuq6+Epy48gitnLyAoRxh1eti4cw/r6kLX3cXuZICjsyv45FMfwrHlVezwnCYwWLpwGtFsE+PuAGgPkHT6uHX3NtpejsVLpzHgPa597suosn4+/Pt+D1bOnoMXe7izdht/+7P/AFdPncdnfvIPYbLQwKA7QuOlFzB57KJ+VHwq92th3epvrk2ADMMwDMN4iDABegD/7v/vNr5wfQNv93Ikmv2NcXOpKFGAGEiXGOAxSGbsyjCvYLDOQI+BtYLngGnkAArOXbsHA3oF8y5k92Pu73f9Ur85SZMCbonHvjuoFURdwtwfCYJCyWI625q29dKUl3t5PO8mOmDA7YSH6+nU0e4qt+/urwkI3DUMvVloTTIQ97q85/Q+KrdrsVFaHisYDLuZ7CRvylstWfrjbjodtySP0fbBceWtCSF8dYVSS9N+fk6G1L2Mf8Jieh9dqm6AGmyvexeUhJRl0rd+1O1NMuPqgdfXZ2YQ84HjJHWtVpP9CQ5yPa8rA1PquV318D0pDGfF6fpppfJiVSSlx9cscVzrvB+VUackzZZDNFjG+VIZTS6ztQaazLu1+Q5u/MLfwswXfgaf9Ic4wXvXGzN8Z8B6m6Iy18SzH3kJzz7/AnobO7j56uvIey1EvFVrcwf31u6hNtPE0y98EMvHj2EyGGK428LmvTVsb21jMBzxdzVBJ43xRtFHlXmfpghV1c2S6ZYaDTx+9VEsHzvu6rG1uY1Oq412v4utfmfaGpQnuHT0ND5w6TEszy+gOxpgd3cPu2sbuLu7hs2khWa5iQ8+/QIunb+I/k4L/e1dLJ89g/KJI5TgMYb8Hegjp/fu3kGv08WFxx9DJ0vwS7/4y1huzuH7f9/vReXYMjwe++Ibb2O40cYLLz2P0pNnEW/3UblyFXjxKWQRBVK/H75PvRrnzCZAhmEYhmE8RJgAPYDP3ozw2m6CL2yMcLuTYK81wiSLGLgyGHeiIimRACgATxhkZ04MxorE1RrBPJwoMBqcTmDAA5QDBevTsTFclNYJAaNF13WNy9QsvgGTeUiYXG0vROeVhza5+Arm97eneO4bPW4sEf+4LmVa84zG7UiQ1KJT8iP34U2lOpg0QV3kQj9ESvnRopYU5TXNW6Kj7nLqWqb8pmVQoDs9L+FjGtetTMm1zdrhNZIVTYEd8Bm0LcnRBBDqEqcWmTxnuoJiqe8CFakb06PuaBkD6GKQYq6y5G4UU8h0vRMm3Z/Xh6FapSiUqpcS5YtS4+qW5fAifYQ1QJnPV6eENcIyqmGEWiVCeaaESrWOCvf1odNo0Ee8eRd719/B/TffxNbt67jYSHG69xZm73wFJ/gCm+EsFuozqIclJKMYozjGkVMn8dynP46jp09i+9oNbL19HTW+xqw3wI27N52oHL94Fs8/85xrMdLsarsb22ivbSLd7KCUTvBOMMLdpEuhGWP16HEs1huUixYwiHHlxAk8euUyGnNzlJvWdFxQu+1kZXug7/u0KG2zeOrKY7h08rR7BzttitbGBta53O1s0P8CPHnlcXyAZWChsXH7Lpory1i4eAapz98sn73ojdC/v8n8Wzj69FXsUvJ/6Wd+Hk+dvYQXv+9TSCv8rVTKaO90kPC5TzxL6eG78c6dQfbiVSSsx+aE79798PX6+T5MgAzDMAzDeIgwAXoA77bHuDcu49awhO0RsNcDdnsT0IOww0C81R9hrH+tZxAeU0hSukyqLlzqJleoi9s0yFe3roMPe7oWEMkTtyVH0/E5UzSNts9jGt/iWlrcMpWKzKXnvmRDwkMZUBqJU657OfmSEPAg124MjS6Q7DjzUl78j3krDwmUjEzTNEhldEgtMUo0vY9kSy09OkThcBvc5E2DSchy7ned0zGup1u8TOVj2fZPkWl+76WhjLijKv9BGVk3rlKCacvVtLWG+VPE1M0rG9M4I9ZDpeKKrdnGlI+vcVWSOEqluvSxct1U15UShYe79XoFflktUZSfWoPneL0a6ph/Nk4QbG8hb22hffstdNduor95H8O9Hd6b95hZxun6GZxfnse50jbqn/8HWNm+TulKEHoVzJcbmIkqqJXK6FEexqyrJz70PJ746IsolUrYfOtdZLttTLp9tNbXcfvmDRSlEI88/STOX76MJE95rzaGa3voUDraSR9d5n5v1MX6uIt6cwZnjpyEP0oxXruDlcYsHr/6OI4dW3W/s9bODnYpQjujHrY7e2hTeCSwZ06ewRNXH0OjUceoO3ATHdy7dw/3t9cxLMY4s3oWH/rISyx3DXdZxnCujhNXr7DufSStFnL9pnndvX4Lyx94DO1eHy//r/8MH/3Ix3D0mUdQsGLv3b6Dvc02nvnQRzAqRyg99QjSR04g5/uooyQVdT8Ep80mQIZhGIZhPESYAD2AL/zC/xXvDpbwenwee6ULGEVN+DMLyPwqSorbGUgPiwC91AOdCAPG7wljv3BM8YkTxvUumncCNF0KDBUT6qiEgItibXWHc13FZDT7UuS6onHReQlPQsFhtO/+cT3X9M86x+Su2xrv72kAurZ5rRtHo7y5T2/AJJnKkVpyXImUhnkUAcVJ3dx4F+mJjsswJGbSFM2e5r4/xGOSGpXFlVitVO4pdERlcH+7XHJ1L+MylRiVgWGwErjdgOUsMW+VVfLD+/CZwiBw43TGKrNmQ9BdeK1cSd31FFDngYeQAhExrVp03Ix1PKYpt0t+GWEUuXqaZBO+G+afMp80RjzeQNzbQ9raRL63gay7jcHOOmJKA4Z9VmZKgWJ+pSbKC2eAubMoGgso1zLMxTMol6p4stbDU7/0P+Lo7V/HbqWDLt85/ZASUUI1KLkucyHv2e10UF9dxrOf+CguPPUYRp0utt6+Bn+H5rzXx51b17G+tY7FlRU888HnMbu8iHanjW6vh9HGLloUmm6eYDceYo3lG1Nsjx49jrn5JkY7LUS7fVxdPYNHH3kUQbOC1rCLnXYbbXWL43q3RZmKO1iaXcGzzzyLU8eOu1ngev0+1ilhN27eRDfpYmlmCR/53o9jfmUJd+/ec+/h2MULiDQxRL+HOE7dt4hGWYIzV67grZu3mG+MD33840A1Qpd5de7t4ugjj2B06giazz8Ff34Ok0gvjK+PP2X9KNzvwgTIMAzDMIyHCBOgB/C5v/fv4Rdf2cQXrgVYvfwx/M8//zn0hhlKiyuIGvMoNRfgl2pAfR7g/qTSQFSpYxLOufElYagh4Yr8FQlOA8IiiJw4yTX0l2ZskwC5Vp+QB2U1khAJkcSDf5S00FTPlA4pkJsJTS07lAgJEePxaYuK9nXO5Su5oFiEHmLXPU89wyI3UYNw425cK06Je9If5qMyuOKqlYr3duLj/h2fqBzuadzfeobp9vvhHjPg5fsnvnGNvm2kqcMzNwaKZ5i3yioZ0h1cF8Ki78rlaQyRpp7jPXSfiJITZT4yBuGacKLgOmTQrlacpL8Lf7TB+kiQMXjPKBPecIxsMEA6ZvoB1VTjrCKKV1iCV6kh5BI1avCaJRS1eRTleeRRXcVFuRijzHL6fI/lcBaLRYrfPV7H97/zOaSv/zzulVoYeTXQHzFIxyyfWsT4E2De8xShSV/jenKsPnYZz3zsI5g7fgzb99awQ9FodAYYbm7h1rUbSJMYF65exsUnH6c8Z5SzAUatDra2dtDhc3R5fqNPqaHkRPMzOHfiLLwOpWRtC0vVOp564jEsHTuKIUW7R8nZowDtdXn97ja2ujuolmt4/slncfn8RZaxQI9ypu8SXb9xHTudbZQaTTz3PS/i/OUr2Lh+E4PRCMcfu4LK3AwG4zG8mILcHVJ4SohOr+IW816hjM2fOYHe/fvo3NzA0uOPIvzwU/BOHKNw8r2pbyRfnfu96P3zN2kCZBiGYRjGw4QJ0AP4K3/zr+JGu4Ev3wyx0S6j2+mhs7tGWRmhnHWRjwcMyjU2Z9pFzLV8SElCBtMMiKdICniMwb66bCkQnxoCz/AaN+7HQQlwA/YpDAz63XU6r8uVrAgRNub0hU33TRuf+ajlRLLi2msoCW7aaubjWmsoEppIIPNZLt7OdRdz6SUl7m7IKBqFIlbdk39r3NJ78HrXBEMkRSqKQxv7+b93TNe7TJnrJHWD5Q9ao6bXqlWqgE9JcU0nutBJEIWLIuRmw8tZXhWU9eFNpl36XDdCLprqOkxGyNOUAhS78tMguDC4duLHm1Du9O0dr1yFr8Uvwa/VkFQpqJIfHpvonVBMg6ji6iOjVI5zdbVrsEyqTx8zFLQFFmNGXfAWAnyqCfzhu6/jzFu/yvd/B/d2O9jd7qFPQUlKlEtWkWZNG1IafD7LIiW4HlaQUsIqvP9jH34Bl1/6IPhLQevNt5HvtuEPY+zdvY+7t27Rm2fw5PMfwAJFqU8BStoDdHda2NtrMd8Yu9027vS2kbC+V1aPYW5hHr21DVTaQzx9+iLOXX3UScpoOKQEtbCxu4MNTYm9u+nq7qnLT+Lxxx9HpVrFqN9n2XecBL21dhPlShUf+dBLOPfEk9i6fdu1PJ164lHU5uaQUdaCceqm7fZPHUNvlmJfbaKyNOem+p4rz2L26ceQnl5GPwhRTz3X8la8T4DczIEmQIZhGIZhPESYAD2AF//sz2Jr6KMdNzBM1GLCoJ7Bc+GXGbgzsMsZjKsbF6M9jfsJGdhrDM8kG2CSM1jXtlpR9vNLUwbyGUXA1boEQS0/3+hKNu1axpPuPP+SJHDLxZGUirBSYt6ZEwG1lOQJZUP5IOe9eC2FQnk6MdFfXALeL+IpOZUOu1YebqlUnkdRgQJU3eUb43yU0M22JgnSMQmGu1orbmu8jqdMp4cOuseJqY5NW5mUr8qjdcA0khJ4VZdeky64FMqOfzLKVhJJgrSnulZLkKakDlxZxjrH8rhruVaXN3WB88B34c3Qnyh0Kq4+7srjalmKSgHGAQWV+RRBmaVSdE6xkQixLCU+21xpgtkoxXyVvjPTcLO2LTcXcXpSwWa+jYXXv4TPXPsyjnTf4LsvUOlXMdju4N7GGrY7bSRyxHoJff4e9gZdDFj+Uu7haFBFlevxaIjV82fwwvd9Cs2LZ9C9ew/DO/cw6Q+Rtru4ff0aOq0WTj1+GY8+8Tj8bIJxq0dZGaK1vYt+r0e5iinim7gbd1FbXsC5EydRao0xvHUfJ44cxaPPPIX67AySeIzuoI9Wp4P7G+tYX1/j73aI88fP4bkXXkB9jmlG+rbQHm7evMblOt+Ph4987BM49eyz2OY1rUEPZx97DBHlrRgOXPkL1ol/+jTKVx9B0qxSIEOUmjNOvGJWacx3WeJrLumd6XfD36F7v/pRmAAZhmEYhvEQYQL0AP74z09wbSfBnW7qAsts1KN8ZEgKH0PXwqEuY+p2xoA915TYCrtJnjhpUXSv1g/XEsJdV9lq0dAWr5m2jKgrm7vKtXwwetTWtEVF8uEWrcZMy3x1Tvmqi5yyYTJ1gXvvI6n7HEyGoCmyQ23vl+XgXsKjyLiyuCu11mp/XwVwaffXB6f5R2N5fM32tU+w37Kkaws9lxMnnfnG87mudCxyyCeQQ+kWbuyTu4bbXFPjXHmUlRM6XSALVMuQWmp4Qq1cehz43A+4UDQZhlN81KITuVYedaGj+rnxQhU/R4kBe+RazCJUymWUyyVUKmU0a5ocoYoZbs8ykA+Hbfj9TWy+/QbWXr6Ft+9t4lSQ4icvzuJHP3AE4zdfR21ziBLz1cdHd9c3sbGxgdZYHzQtIacQdMfAbrvN5+J9KWMVpo34m9F4oSsvvoSnP/Yx+BTY3vUbGPH6kAK8Q1G5df1dlGplPEFRmVtcQNwbIBsm6He6aO3uoksRud9r4V5rF0UU4NyZ85itNzG4eQcl5vfoE0/g+IXzTpDTOMHe3i7ura3j9r072ONzrR45judf+BCWV4+6GfZSStDtd97FKzfehTT4o9/3aZx6hhJ0+y5GwzFOPPcUUJkg6faQjnIEly6h+rs/hgklUa8l4198k/wd6GXw3amlkUci1rvemt6h9NQEyDAMwzCMhwkToAfwM2vAZr/ArW6Cu50E3SxkMBmgM5ogi9tuPE2aqw0lQKy1InlKUJwVSBMGfpSBgEF3lmoWOIkQT08YbjI4dmLk/kxbbLQOmU7dwty+REitR661hIF/Pj2uMUOSG7WfuH0JBkvg+5IHHdVlkoZpnr4G7Ks9RBEpcS1O7pxEJnQy48qh8nCZdmVzmbh0Ynrl+1H5D1qrJCzT++7nysWVjse5L1FTOlWNutRRXKatVDyum+n5KC9u5jB1Bwx4rSe50nmJE8uu7Bhga9sPNfmBZn/TM/lu8oQJpSbgMXVhk3CUea8Kj5crdWTVJqKSjnuoUkjqvKefxgjGQ9Q7m9jdovBo3MzdO2iv30e8s4NJPGZeVZxcvYBTS2dwZW6C/+o/+TTm4mvY/cWvIn71FsqDGBFFY9zpYGNzAzu8LuN7L+p19LwMG3HXzeyWUU5mKGUNP0JpMMGpyxfw6Gc+iWMXTqF35y4G795hXglKwz5uvP02Nig7Jx67grNXryLideleF71OC+1WC0NKUXcwwO2dTdxP21g+fgrnTpxGf23bda179PRZXHz0EUxqIQbFCHFfXe02KUF3cXfrvptZ7nu+96M4oWmrsxzjdh/te2t4+StfwZj1/b1/4Eew/PhVrF+/TXGZ4NgTF5BUNTvcCEUaovYDL8G/eonOyV8WX5F+WRq2pt9A4bpa8l1KjPVe9cr1mzMBMgzDMAzjIcIE6AH849sJepmHQVBDm97QjRn6My7v94EWY7sxj40SgIehSceGjPVyxX6Uh4xBds4gUl25FNfTU3jt5L1WDwmE6yKnP/vb6p4lUVJXOYkOD+ynldyEzFgf+JyKkGJLJ1Xuj8bNTF+l+9tdM71OsqJpsPWv8S6txEZJ+Cdi2XxK23RK7unCbF3agqJWFLGTDIdOCNd8k9NblI+2pwLES7lZ8Pk1sba6p03LOD1PEVOTmGvJkcDonE7ut/g4wYnoPVWemJYv1AxvCqh1HWUmhyTHd98o0sxxKqOy0MdUC3WFYwEC1mNAKfUZdBcJ38p4AG+8ibjX4dJD2u0i3txC0u1j3BvyPOsn7/FmCYIKBaW2iKhxEtHMMvxyH0szNcwWczhWLfD/+i9/N1bnmbZVRf6VV9H70peQvnMLIeUESYIBBWR3XRMQtN1HW5NygD7L0x9rkoKB+w3M6PtEEUVsrokPvPghPP3Sh5HzB7R3/SYqG9vw0gS7FKp3v/42ZqoNPPrC86ivLGDAexSanrrTR2d3z33s9F57B7fb65jMLuKRS1dRHY6Zzy2cOHoEjz77OEpzdeQxfyv8kerjqTdu3cTbN99FqVTB93zkw5SsJ5Cx4j2KVffWXXz1819EMlfDx37qD6Ny6jS2Pv865hfmEDx9Ri8H/h3W3eUTqH7fi5hEdSe27h3qXWjtfjt6p3rjeufTbRMgwzAMwzAeJkyAHsAf+U/+PK7d33ItPivnriIrz2K0N2IQWaUUaaIDBu2humLtd/tiZD8JGPh6C4zzywwHKT+eWlg0MkYxosfj08kKFPhLAA5mXnNho1dhmn3h2OcgkPR8iY9af5QPr6PI6JxOa1vXH+Ckhcd1fkL5yHmtlEGC48b5uP8mVCqVkNczv6n8TO+lfU9jZVR2pd/HnWXeaq3Jg+k4D9e1jSdctgyKVRQ3QxwlRy1XWZ6581p4CIG+g8RtiY1rzeKF+rZQSHMsUxjdLbi4abpZN5rNzqPURPGA8kgxzArG1AkmXFJN7z1qo9S9gUyTElBEsvEYORdNFoGUKuZ6FebI+Dio8K+IT10rodKYQxEuAvUavHKJ743vkoE99YSSVcZso4y5yhiV8R5+6MWz+ON/8GnU4hSlvE45GsPb3kHy1dfR/+qrGN66haA/RCnJ0b13x32AdFfSE5UQ8zeicUG7/R7uTPquO+JKEmKOMnv5yiN46vd/BrNnV9G5ec2N6akOMpQ7Y9y7dgN39rZw+gOP4fyjj7iJL4atDp8tQbfdQafdxjZl7l6HQlSkuHj1CppzM7j39nUsTEK8+ORzqJ0+zmecIO4PMBgNsX73Pm68+Ray0Qgf/uincOSDTyOvFIh3W+i/eRtf+uKXsUJ5eu6nfhzZTh+7r72DhQ8/iZASlm8N0ebvaP7TL8FbWeG7kQTrTU3fs35PerEHvyEnQdo2ATIMwzAM4yHCBOgB/B/+6hfx+lvv4KuvvIb+IEbAgDbZ2gb0Yc50l8GdmoQY4GlCBE3jrNaLSgUoHwNqs9wu82FLoDFRlhh8c/HCJiPG/QH8Ti6mrSMa2K+udFIVBZTvSYz7M31NThb2W5Cm00UrAc87KVIAqlTTfJ0cMY00x+mPrlV6l2JKHkyQs8wH44VcXm5RAKtD032h+72Xv4JfLrrntCFIJyhXzCeYZAgnFBTKirrt5ZIVJZH08Zymq3bis3/9tLsen4fHo2wI+o2TKLretBBuh9dL0rjLjBHwfu759Y0gv4Ics9zWx1A1yx7XlBy9K0+zvTVWMClXkKoLXU0TIbAcfJSS0hdj8K2hKFXcdfVKDY0owEK5htPBLFaqKZ65WMHv/dgxLFb7lKoU/qQJr8R3yfK5We32djB6+VUkX3gN5VsblIsWxhSO3kYLO5s72B10MWLyuOyhzfroDoYYjgcsPw/yOZozDXzv930fHv/kh1G0+8hfu45Jp093S7DH39ra29cQNeu48uzTmFlewqjXRUEJktQM9zrY3NrEje01bAx7OH7xLE6vnsLuu3cx2RvgqeeexpHL5zTBHoUywXgcY+/eOq699jq6rT6e+fTHceolShBrNqTY33/zOq5du44nfvIPYOHRq9j7tZeB00uYefwi8m6CZBSj9sLT8E4edQKk34b7Xei16Lfg3rGke19+hAmQYRiGYRgPESZAD+DFP/cFtAcjbA9SjAp9Q4eBZMKgngFoLR5jkui7NFqG9B8tY7dUxn2eGzOYd/8uPo3hp47ARbLk2oOmC49LThRGaiKDAxhL8qz+2j+mAFN/dEK7yoMBqP4o+Hz/4vLXWouvbwdpRrppHvzL/eekJdWU1Xwobevag+veQzbClY5NbysTYiWoP9+0i57LTNcfLHoSNf+8t69DGp8zbR0rKIRuvI5kRS1IPKZJFPKojJgCIln0whIFkQulROX2eC7jsYDXSHJc5WiskFreJI0hpZP3Umuc8yYnR7wf83fbuq/P+3C/wrz8fMJ1CdWqJClAtVbFfKOM480Szi5WsDpTxtFohKvHmzg9AzS8IbPne2buKZ8tn8y4sk+8jEXIUea79q6vIf3Cq+i9/iay7TaqvRzFbhc7G/ew2VpDN+7CTyoYs4xr/hh3E4oR5dlLM1RZZx98+oP48I/+MOZPrGCH0pNdu4+lxEPa6+P6u+9it72H8888gROXKSO8Lu5TlpIMo3YLu1tbuL+2ibu7G5hZWMKlJ57E/d1djK/fxQcuP4qTzz6JSa3EnwXTS5w6PXz5y1/C3t4ePvX9P4AjH3wGKSU+oYDtfflNlJ++guXf9TG0v/B1jKoBzz/pfst5f4TyIxfgnzjCvKZd4A4EWWh7+ovXsenvyP2+DMMwDMMwHhJMgB7AH/3ZLm7c3ca93R6GeYBOd4BsTKEofAbm6i6lSQ7kB7mLxzXjmQSn5hXIGBSnqQvHXbAoKXFjbfQv5woenWzoeMZLuDBQDIvpOeXjROY3oe8NMZ0TFadGDoWcmnrbtZDwWhd+Muh/T2a0ZvppfrxOQevBlbqOx9w1Our+mwqVR2nxKCEuPfM7aHHSktJB9A0cTUTg88GnExXsp1MeEjmd474mgVC6gPnllJI40N11F91Hfytvj8/MfNX8w2uYgZsVTi1WyrPgWgLjvrPkBJD5u3Pc9iOKVdXJkLs/165MXPRuSiHfV8jtUoQyJaoSRmhUy5irVlGnBM3VS1hq+FiIgDrfRba3ga171/Hm25/DZ158Cf/eD30YGG0y+ybvUUMSJRixBNQxRAXLoEfVBBR876N79xD8xi9g9M5NTLYSlFsp/N4I3b0dbFKEOjsDjOIUA4pTn+LUzmPsUpyHXGt2vJmZJXzkRz6DZz/6YaQ7LcRv3kGzQ2Ee9LG5tYHrt29iZnkRV577AMrNumsNCvgO43YPo902Nu9v4Ot3biCfbeDiC88i2hvg7itfxxlK02Pf80EEvCblvUY5RWg8xBuf+xL693bx0R/7Ecw8/xjiLEH+9h0Uc3NoPP0Etu+sIZyfw/yVCxjxt5fzXvULZ+Hpm0DOTPX+NF5MrZj8zbnf2MH72V+5ad4NwzAMwzAeDkyAHsD/cjfC3Z0EtzsZbu1luM+Atj0o0B8k6E1iJAqYKTmZxIdBtoJ316qRUWQ0tocRoFodDoRHUpIjdYIgD1DLT56pWxUvZVoJgAshGVhq/ZumyHY+M31dbr0fbKplqczgVBMAuEkRGIwKSZeEy/coMsqdx6U6Tm50HddqHXEfT90/JnGYosKlroXDpVVpJF370qExPjqkyQicGPEK3c/VAygcLKzkxrUEqZgUBd1PU2Tn6vrlruC9dM5JVOTuUrBOnUnyHn6Jx1mnufLiNRN/+vHSUDPAsRyq10jd2Gg5ulepHKJWpuSUQjf9tXsdkqBaBSF3QpazzHwrfKYabxuqXvn+SsUYg/V7uP/m13H361/H+rs3kfJ+Vy4/jkcWffwnf/QsHj91Hz6LNvFmkZX7iPQx1aLMElcodfq4KuuAgf5kNERw+2uY3G9h0uJddgIUuwWSvbGbwGDY2cXe+ga6u5SbJEZMcWrx99BKR2inBQaUKOnCk9/zIn7wx36UcjaHwevXkd6/hwp/JHF3iLdefY2/kwyPfuh5LJxcRULRnoxjFKMEcW+IjfV1fP3a2xhmMZ760IvuHXz9S1/FhTNn8TTFymvWkBYJf7dDeMzvtS99HXvjBJ/4d/4QopPL/D2OEe8NgeoM9molLBw/ifriMmKK5GS5gTIFTN06D36LbiwXt/lLcPvOCKenuM06ti5whmEYhmE8RJgAPYD/6dVbiCuzGMysYJc1tdWfYDzyMO5naA9H6McZhkmOsWaKSwquUyQUn0HuI6EETbuPsaJzBok5A3wN6mdQ6FqEJEhaJBYSEK4ztfAogBQ85lpxXDTJRVNsSyoO9jVIRkGopIT3DSgfCkSVwqXS9UrGyH3iJbxeO/vLAW5bqfe333/OtW5If/bzcwcJ7yepCjRjnaRKwiUJYvyrdJmOuxkQ1IIkAdKJqagpQaCZ0Ihad0qlMo8xdFbXNqb3I3WPUwsOE6inGy1R2hZRMMqSGXdvD2WmLzFRyGv14dOkxGuYt1fklMkcATUzoDiFvGktpoTkKaVhzGeibDL4Tykq3b0tjNZuYe/GLbTvbyLrD0CLgj+3hJPHz+LqictIbv0i/sinbuGHXrqFYLDFei6zPF3WdYMFLFGU1BqmsTx0IIpwlXdOkzL/x6ohKhbgjRaA7gxlqITh1ggF5WTSGWBMwejudrC9s409dYWjBPX4G+kz105GuWYZl5aO4gf+wI/h0Rc/iOHdTRRv3kKV13p+jtu3r+HejZs4dfECznzweTezYBJTyGNK6zBG5/467r/1Nm4nfZx57hnMVRt47de+gMurp/DkJz6C4kidEkTV6owocgFe/crXUF6Yx2M/9sPIlutI1lsohqzDs0dRmplFEVEijx8FlucoQqxjlsHne3Xfg9K75e9Gv1u9A8mofqpT+A40LaJhGIZhGMZDggnQA/ihP/WXsbWdIE6qaC4vYv7sMQQMFMPmPPLyEryoiUkQun+1Txn0aSrsaac3TUA24XU51wXFhoEx98dxwkBZ0sPQUK01XBizT92D1yRqRVEwqXNaUy4kTRmXUAEmU0meNO31dAY1CYiGsCvy1L/Ea1/p1J5CeFgOpZ5lrsuSjupmDFq1ra5zWlzC6RVTmKZQ6xAFJlD3NcpHzjK4yRo0fkf/3q/vvSji9ZlW13LT00QDTo4oOTyn27gxOwqSuWj+OImMux33w1LkWo38SIE0hUkBNZ9DJfHcM6oweibdgUdZBndQLWNqbdqvA/cRTu6H3FaXsJKuoRTm8RiBmzCgj6TbQtLeQ9rdw3B3h+tdXt/jfaqohHPIm3PwluZRq9YwX67zPYU4Hqzh//Enz+Hxi6/Ai9fhJyXee4Q46LJ0fOuUCI9SpYkdJlwXTkT5zlhE36+g5M3DH87CG84jbbG+bgZI7o0R3+8BezElY4idvTVst7fQ6Q34e6HIsO77LP9GPkQv9PHSpz+F7//Rn0Q4yjH8+utIdjZRDSYYbG7h7mtfRzA/j3MfegG1+UUMKOV+mrlnHm5s4vq1a7je2cXppx7HQrmJG7/xFfch1Cd+6HuBpUVgwLSjMesqx9v37uH4Sx9C8wNPImtvI924i7DO363m9FhdRnjqNCaz8xTOintPHiSyXPje1Pij/wfUBqQl0zvhM+gdl/XjMwzDMAzDeEgwAXoAf+SvfBUvv30LX3vjGsAgFd7IffMFQy7hBGGVwXN9FkG5inK1jHqziqhcRlE9hWhmCX6FAXOljEk5glerUphCN9h/Epb3t0OkFIzUm45zKcc+A2j6hxOEqZLIW7QEFChvP8x0jUHuHOVDi7Z5RGM0XNckyoeOKZ9SRmHJqUQUKJ3SItTQJHHQdbqds5WDNROp7UdHtHuwTKWMgiLhoMVJVfTHTZvNtUqhq9xYHe26hXegEaghIMhjVDVbHvf1TG7MEhfXrY7ioI+0HojfwRgp7avL3SRX0D3NTyIoAZIM6qOm4XALE8plrmCeElD0hxj3+kjHI3iUgSTme1OLB/Oi1yGiWASNBoazRxBp6mvlX4kQRD4WazUsRVU0JiF+4EPH8R/9O09SitZY521ezmB/QiPAHusjZjl4nboe6rlVZrXKFTssmxRG+0yR892r5SimNvZnkW1nGN3Ywvite8hv3kd9MELa3sXO1jZ2KGbdTgcjfVcIKfpeij0K16lHHsfH/8M/huXjx5C8fAvR3W3WRwyv18O1629js9PC1Q88jyPnLyEdjdz4M019Hmz3cefaLby6eRfnn3wMs40mXv6Nz+PyuTN44lOfRNFs8Pc81hQZ6PIHUT19EvWLZ+Ft3cPtX/pHSIMhaosBaqsNpM0QcSNCedJEWS1gNcpPmfURVVhvFMawxu0GvHKNwlyi+JZ5vj6dEdEwDMMwDOMhwQToAVz9z76A1l6MNGYQW8TIRnsMtIfIGGD7/U0G3H2MuZ2PhkDcB9IBNDW2Gw+iwd9qIVFzj2yDwXVQr6EoHaU8MejWbGfqAlapusUvM7Cu6ps0kiPNgFZ2i6Z31jIJZrlw35vOpua6l+13M9O3ZdxYo1CTETDCD1xbkZOqgkblZEXd1LTvzGP62iVSSjNVHR13h6fiRE8pZRKd6anpB1yZp1o4PD6fn/KxKCKSCpcv76OWGaXnc7sWJy76Bo/sR+cYkiNX65Duz0UtD6oaLZNkhFLBOuQ9dM59yJTnlY+XjhCOWsgpBjlFJ830HaDU7bup+bitKbfdAzEvFTrQrHGs45R1EtYq8LldqH5KFZadz1KqI4soqSWJzwSNWoiVRgWrfBfn5mfxoatz+MTzi1ipqd4oMFHXSU2AeZQTipfeK+vZqaZEjbd28udHri74fxffDY+zOEzBR5K4TluIIj4a1loYfe0d5G+9C2xsA502xnst7N2/j10u/QFFqBgjnmS4x99WtHoUn/l3/3c4/eyLyN6+j/z6TcSsr4h1s3PjNm5zWT19Hueef45SnaMdDzCbeCj1U9xdW8db2/dx/LHLrq6ufe5LuPqhD+Lch1/gb67kxiINWea5s+fgz89j73/5WXzpb/9dlJoTLB6voXwkgr8QIlioU/gpfuE24oiiVeZ7YD2ElOxKynxQw7Ayi2pI2Z+UEJVqWP3Rv8WHNQzDMAzDeDgwAXoAP/7ZPdy808HtjRFa+pd6dXFCyODbR6jglkG9Zm8LiowB+wAFA1VNOR3man3QtNgJivGY0jTCZKzWIwaPSY+CxMBRcpEzatYy0UB+BvoMJl0gHejbPdzQYBhuu7UCbvUvcvv7x7RWa0vEtOp1pnMSIwbmrusZw+8solhRqJx0KC0lgBvTfXVxUxcmBfB64P1fA0vG7PSkLJc7uJ9eWzQcJzVc5HdSAG2rVcctshleU0heJET8o1nuNGXzhAH9pGC98FzBenPnnBxRYpgFCpbvwLgkQpI52YOefULZkeTxpoHG6vD5p7LF8pebtDV9a4miyGfNVQd8Tr9C4aQ0FqyLicYeqfud1pUSQuaxyPqq1kuYmy/jxGIDl5fmcWFpBquzZTx5BjjBAD9wBVCrDyUXEtw5V8SMf1zrlLrBqax8btWNJkdwksoH8gJpqJ6Gz+narSisKjP/8ilCYUJxW9vA+PZdjF9/C+FOC5F+Z1vb2Lt3G3dv3+Dvro2cxyZDyl91Cc/85B/Gue/7XUCrhd2bbyPc2sIsf0Pj3S7eevlVeLUarnzsJUSLc3TyDkrjHEHsY29jC7cHu1g5fxI7GxSit9/FS5/6NFaffBSTuRl6e4KkP8bW3TW8+fc+C//6XQo1f4Uhf8/NAJXlOmaPrSBcDVG7wP0VvoslPnst4e9OYqeZ/BLEFC8aGH//+keAHKf+yFt8YMMwDMMwjIcDE6AH8DdvTHC/BdzqeLjdjbHWHqDTTpGMPYySEWLKDUNeigCDWwbCWaYJktXNquQC+0BdtBhYBpKkjMEkA/2hN0DOYN5LGRbzWBBzUfc219LBYDdVdy3NDkepcl3CCgbZBUpZn3mM3Higg/FDkhLXQuLGwEwDTic5LIMkgyswBmewzUMM0OUwU7/YlwxnMNrWLs+79fQvtTJpljh3kTu0v3bwuIvkdYyLy4JrJwLa4cK1hECztEl01KWt4HZOSXEio9YTrt0sciyDz3rkDZm1xE735jqiuCjnkFJTqrr8JG2SHyeCEh0nHlyYVhKUhT4KSU65RN8JUS8qTnY0zigsRwgpP5VGA4szdazWMswv1bA0X8OyJloYdDFo72GdApKOeji30sSRehMLMw3ML1aw3KxiLlJ3Rw+VusrMIkyf9reiFilXZaoLiRJXOsRn5ZtCyh1VvQTLowiFFJj0xl2k125TanZRpjAPum2s3bmJ+K1bGG210er0wJ8irv7R34dLP/L98HsU6Vt33PTbZQp1NE7w7utvYLfdxqMf+hBmLp1CPhrA62X8DfhobW+igxjBchNf+dwXaXEePv0T/xYq5y84MRzttTGgaA3ffAPjN76Ojes3eIz/A8TxVG71nlj39YUZNM/MYP7RBVTPV1E7V0e4VEKpKQkNkGqWuLDM+udbPfl/cdVhGIZhGIbxMGAC9ABeH2a4t5PhVivEXlHiAuwMMuz1c/T6MYbjHIN4gmFSIE4LjDTwngFtWuRuPIuCRk1z7YLH/ZrmFj2BRsLzmgUuVHyslhJJDyIdZsjMELlIeUzp1L2LaXVc0sNr1OKgAfe+kx/mNxoj4ikF5OoK5lGoCn1bSEG4zyBZ3dX4Zzq+hgm1pkxIzHyNjdE5FVDHtcd1RkHJJUDTI05SpumYJf9yZdEhPpGb9UvPwTT6oxYtL+CWxNCdc0dRUEgKr8p9Xsv/9AFURtQujabxDr3ciY8mYMg1A1yo9Dyplp1Q10mQKEX7IqTpmN181+WpaLkpsvfXmmGuWorQYEDeqFW4lDFPgZmphShTdir0pXQUY5B00d7YwPDmOpK9AS4+8Sg+f+sG3rjfR7looIwBpanHayqYK9VxvOlhheK0TAmYp0TpO0LzXBZmKihTsKqNMu9Rw2yljBrLVo48Fd+NO1Kr2r+QzhDF27fRe/VNhK0u6s2am8yh6Paxe+82+lzizU2sU74v/eD348RHP+paIOP79zFaX0OZ6Wq5h7U3r+P+u7dw4fknMf/kRYz0GxlnqA4LDNstbE/6uPn2Ndy6dhfP/b4fwtXPfAYxn6V0ZAn+wjzFaIx8bQ3jt25i8NU30XvlDYxu3UVOARt1d5BRqpxrl0NEK1XMXpnF0qOLaDx6FtWnnoF39ASKpWPIyw1E2an9hzMMwzAMw/juYwL0AEYMwtMiwHrfw+fudHCHwpN4dWRZiF4UYMQgUD3bxnSc7hjoZTmP5QwQY4w1+J5mME4pQ2qNoTBIfNRKU+wvEiO18Eg8tKQaUM99xubunO/STK+N3Td1GMnqmK5J9X0Vjb/R6alsIaMQSYq46Os/kiV1NZPWvCc/uoprnnWSxQh6KhauDC5LJyjq0lTK1W1Laafio4tcMo/58o9rIeK2Jl9wBZHoKC/WmRMfd83BBvPRebXcKKP9bnp6JEnQ9IOnAY/RFkoUH+VNmVE+unuFehhEoVvUiqKxT1Gp5MbwoFpGmetaROnh9bWohArPV0uUPF/1y3fAF5UN+kiGXextrqNDwRj0VT+8PEvw+OpRfP8nnkFzpYG/+U++jOvBMkbDMqu7gxH2kOQVFJqkIuvAG42mH69VSx4zcNNu8zECCtxi0UMzLFBjGWfpZwuNCM06JawuMSphtl5DnXUwU62hSVGqVabfNwp4PkhSJLfW8NbP/zJK23t46eojOH/iBKWkzEqgyHa2+SPboxCN0earC595DLWTq4jiGPHGOrK765QgChvfW+/OGm69/gaWH7uIpReeoJwnqIwKirKPOE9w55138OrLr+HcR1/C03/wDyCh/EQnjqGolqjffCUZ0/I++jDq4Ddexu6vfQGNLT67N6AS9jHYG2LUGWHU7/I33uIz8H+E5Tqqjz+C0x/+KFa+56MIzl2Ev7TM3AzDMAzDMB4OTIAewNhP4Sch9noFPrcxxn/zS6/itftthJMaSpPUBdhNTZu8OAO/wiC10cQ4iuBreuywghGj90E8DbJ9yom6xPUoDlISxsquBadINNCfMsGAczyJeU6zofEavhmG7jw3ocdwx7UYMZCnbKh7ncTIiQyXXC0tPKSWH9dCxOv0DRx1oZNEqSXJdZ3jolEpTkT4ZzqVNs9TNqggXNQtjfm4zDReRWG9u8KJiFq3ct2T5XVKpDE1vCBkAJ8xL02UEFBE3MgfZcE0kU+p0T7/qEUp12QQ4VRs3Pd/KCo85bpWRRqrxPz0vR+V6eBDqzpXYtqI8qMPnfrMPKKcBlzU9VACogkT0uHQdSfLh+o+ptaKLpLeYDqrGqUlTWip5TKiZsOJx/mlBZycX8CjJ4/g6Yt1tNbv49WvfBnf+8kPY6fcwN6wQGeobz4V6PI99hPuD8ZI1NrH+4yTDKM4Q5xSXuWfGts0ojQkQ/etId4QviZo0FgwbpeLmGVnHaZj1/IXctt9r4jb+m3o46xlPm+xs4eF0QDPUh4+efUqvufRVSzOq35YsyX+mAI+a8T6LFdQOrLA95oiHMdI7m8ivn0XnlqPWP/JZhfXXnkNM2eO4uSHn3PimlHcPP42J6yrm9euY+HqU1h66eO4OUzxT772GtqUs1q5hBLLo1a4vDNE62tvIf3KG7hcVPDEXBNHqqz/kPKdDVAM2hi1NjBobVOIBuh0E4zUEnb8OJYvXsBj//D/o/+VDMMwDMMwHgpMgB7ICMOhh//qb/wDnHzmJeDICfy3/8tX8bV3byLfGaLo9AAG2mDA68cDlPIRfWEMrxajvrSK2sknUTr9OJKF45jMLyEr+yiNx667V05hkNfouzm+WkMY+HpFSBNgUE+vyAMG1T6lxaekMHCtpeqypoYeSgwv1KKuaNKknIqh9qCMwpNTCFyDDiVB2+pSVzDDgxYgxtpOOPRXRCHShyolKxKdA1GRAMWhj0Tdy3jcdTnjcjDtNm/Oe2usk85LXqayInKtGNGH6orm69s+Oq+WmICiQsnic0tuIp5XXmoBk3jpmpyBvVqvfD6jhNFL+excfHX3U7erOGUAz2VIkeE6Hg6QaNIAPnycUB5zioZkSEZB0eKNgWqD+ywLxWmO4jPXrFMm5rAyN4dzi2UcXQlRjLt4+wvv4Is//xWcOTLBf/tf/wc4UqcAs34yvpOEZaL/UHom6I8L7BU+eur+OEox4lqtfINBgt4owUZeQ5fpBhQl7iJmcXSd0oCym1OcYopYRiFS9zV1ldTiZgfneyokdqyXKusg4jMvUChfWozw/EmWd7mKM/MhZv0RKl6GUp0ic2QWk6rvpr5OWi0ElJ/i3ia8rbZrDUu7bbz28lewfPIYTn3gaWR8jxLUcrnGMoVoL5zGG948/tYX38Q/+OrX0ZbYjjOENLqC12scVcR6r/NhFrwSzteAq00PVxsz+ECjjpPFGLWkgyzuYNzeRn9nGx3KUGdvg+I3xofbNgmCYRiGYRgPDyZAD2BSeHjt5j38F3/vZ/H6u1382B/6cRy5fAI/88Vb+PIb9zHoZ4gHGSb9EYqddUStdfi9bcSjTWTdLm2AgXi1Dn9xBbXzFzB79iKwegnR7AKiMoNTBv/jVIF7hoRBfpKEvCeDdoqLz2Ma6+MroGcAnmrK7CDaFwoJBINTmo7EYio8am+hoKjLl2J/yot6pakz3ETq4RxGYsJ9Jx4a56PWI2aoliGuQk1MsC9ArvVJB7mv/7SlfQmYWp+cpOj+7ub8j8d0kaePvebTVi2VW2mVv1qfNAmExh25j7tqSmu1mGhb3fQoMF5GgeExdROcjNPpOCYuVAQUZVqOkyy1SnGtroB89ioFpxRVKTx8Rk18UC8xbQCfwhNWyggqNczUqpitlrBIYVjk9kyFz8n6zns7+PpbX8ArL38N3mgW81mAjz7exF/8M38AC2pC0TOynp10su70fRvVMV2Ff0/rSvWkLmP63icfg++T75RSOaSwjnhsyGL2+b/ZiMdbiY/BmO+S24NRhpTPmvCilHKUxT69g9cy5z73la+mCddMgkE6xEppgnOVCZ5qBniU5V8pYlQoUeDaTeTH967qUesaK879/tJ2BxHluRjFuPbKK1g5fRpLTz2B1L07ilBtCa/ETfyNV9bwxQ4waCxirHc9VsuVpI06ycz1M1YdJFk8FUyuj/LYZYrm01GEZysVnIvKOOV1MTO8yfuuY7xzE0W/heV//Pf5JIZhGIZhGA8HJkAPJMLPvHoT/92vv4lXXrmPrXc38ft//8fw7KdfxFe3c3zh9bu4tTFwQa1mygpHPQZ9e5gM9hhNDlHq9xG1d5B37iMZ76AIU0yqsyjPH8HMyQsIjl4AjpxBMXcM0cwivJJmkZMEMLTOGRAPKQDyBwbE+uaLx3M5g+TMTSnNUJyBtrrOuWYXtZjIRCQGlAq1DkkkfKaRNjgDUsjuVmpxUouLWgMoJMpDQfHUmFxaP+G1lA9do4O6nyxJd5lOzkBJ0x9JEe/nJEotGrxxFk7L4G4miZIZKDrXdN0KoHUP5cO/XSsW02nMz0Rd6jSbG4N4tYrR7hjcB5goqA9Dt+0x4HbfRqLw+NpmmhJlUi1QJT9EU5MPUIQalSqXCmZ4l7LGDoGCOexhb3sTm2u3cffGDXS3KAmTEkrVOcpRhNP1If7Pf/gl/L5PPsL6VvklOSofn5vldF0HuRGyzjTznBMxHtM3ftwMdaonPbeuYrnUzU+p9t/MtHsjr1dPxZSim1OwWRsukXttOs5F/1fyFbsqVPdJ5ajukmUKUTUfYy6cYLasqaaHCO/eBe6uId/k7643RJqnSKsBFi6ddF0Oi+4QNUpc2ulh4949rDx2FaWjK/wN9VE0Z9FZuoSv9DzcYz3EKjP/qGtkqt9ZzPLwd5WwzAO+w5FUNI3cLIjDPMFoPODvZIRZlmuOdXDKj3CBVbLqjbEStzAbDzH/H31ST2gYhmEYhvFQYAL0ACYMHP/ptRb+y//h87ixnmK028futa/jyoUVPP8jP4SZU2dwfS3HO7d2sb3DgFJdh1ijg3iHwXYbmiEhZODoxQwmhwx+xzm81l14ww7TDhnljoFSgKBWQX2mgWzlFMLlVUSz8/C4RAsrQL2OjIGsxrxEkhYG3ZoGu2B0nVCMErWSFF0G3gNGygy00wIeF0XSBZeQkbUG6udcu5YMPZfkSX94TC010wkZJk4ipvvqZkfB0axsDN5di5CEQBbAfdf9zeXAPR3TBnGzw1FG1I1LQpDt38/NDqdgnAkmqiCJhCSMZ9WKNO1CJ/EpuZYWNYL5zMcrhZhQdErUlxkG3mrVkiQFFR6R9JS4Dj2UogmqFB+VRQ6ncU/JeIy400W+u4Puxia62zvotVtIKaYam9NsNOHX51GurGKuOY8Tiyl+5BMn8GMfPYs5PUjAsnqsS/fMEhyute1ER4e41vR3LOuE70KphLaFjqgxjhXJbdUdl0DipGP6jxv6XhAP6EXJSF8AAP/0SURBVNqpQFFCdY1j2tI1ladpXetirVM+X86yqd6yyQBlinZ4cwfZu/cxuL/h5GTp4ilUVlcx6vYRxCnrqIRxu8vf1QzKR48i5u8zL4eonbqAUaOOMW+nrpeaTZD+TdVW+bnB8qiRT44sOVNfS/mtHifhNn/B2ON7bk1SDDNKacp3xd/8An+X88zz3DlNemEYhmEYhvFwYAL0ALJgjNuDOv6zv/86/t6X7jMWrKI26CF581WgfR9XnnwUT37/9yM6fQ5bjBrfWtvFVneIfo/C42ZpU9TIEJFBd+REiGHlmMGsunuNewj1UdTejhtIro+o6p/c8yxBniSMMhl81koI6zUuVaB6ApPaIirzs6jMUJAaDfiVKkq1GnKeLkq+667Eg/DCMvJJSFkKuKaETNStjPdVMM43ftAFTuXhj8AF1Qr01Z3NCVCWM9hNKF5q5VEQ7MJ1F7grnWJ1xsTuuoPgfF91XNe8UBEzUVcrXRhGkWsN4U2d6KjVRgKhXLWt6bDVdUtrHuGp6RgilUf3d9l5rD/mJ7nRmCCPdaiPzKorXTzqUWwGiHf2EO+1kbG+09GYVc+6p4xBclStYaKJKkrcrlVRico4rTEsR5dw5cwqPnx1EXvvvo25ySb+4O990U1a4Ga0E3pgLdNHpPdMj6tsrmZcpeoUt12bjhLur1xdu8t4wb7QSGC5q2knNFZLySRA7jHV5DPJppLrhFACwWfnFZ5amvSHF6uO9F7G+iAvRaOqFsDeCJNWF1lvCE2x7s826CsFUgkS05f5e0GF9RDyt8FiqpugP899fSzKtWjxGO/hvj3FUuneEz7rQcuXVzA3Pa7ejV6oGggTZqT8+P5yj7955sNfARJKv95tTfO3G4ZhGIZhPCSYAD2ASdhCL13Gz741wV/4p9fw5VvrQC/H8pABeP8Otm+/xVi1h6VzJ3Hugy/g6KNPUVrmsDWOsNvrotffQn/YR5EwWIxLDNgZTPoUKMpOoZYaBrKTRJLBCJaBvB+PXXCfUbL8UR/BaIhQ4y7iEYrRFuVogIwi46m1JChBU0ZrooFJaQaoz8ErVylGdfi1hgv4Ay5eidtRFUGZ6csUgIj3ihj4cimCMoPfEsWDosFAVz8GdYNzAa8CbC4uKHdBtwvdGRxz2+e2Am9eoDhY01JrBjhN7OB7DI4ZJbsAXxMd8Jj7kTH417ihEkVwOvkBF+apsUNqccqLGFkxQD5Ss0KKQJMGcK0pxTONkyp6mAxHwHCMnGIzSVI3QcI0f93XY5WwLliWEoUxKlfcdNrDehk+nzMqUXoqdQbrAeYXFnHiyAouLVVw4ijLOd7F137lq3j9l7+Ep8/W8V//hf8QMzM1+YV7dvcfK0LPO62T/SYQ1ZEzAh5XvWiX59Q6p/FJB6jmVAnvHdGzc+XyntbONA+XTj+KbDoRBvdz1mc55z2ZzDU4cdFaZdH9/JR/SW4jCidvoDz9cYaAYpJKqH2NsUopoQE9JeJrYEJKqsa3qVXOCyk7HmXP3T5gaSioetfMP9d71b14ShMz+K5s/BWwMjKWL1H/TJ4v88lKuobvcBLwGEpc+PviyUBCZxiGYRiG8ZBgAvQAxsUI/+svvQFv+QrWKRh/85dfw2vXdzDuBEgHBWoh5aV1G8naNcTtXdSaszh65gJKTzyKudPn4dUWEDMyHaQTxu1jjEcjbucYxwwUNT0y1wGDykhhc8z9jKF8RrFQCwdFwY2zoTRozI1HifJ43g16z1MGvpSAVN+j4fa4z2h0iEKTCCgILZjXJGUgzkBakbGiaQXkJQamCnrV0lIpcV1nEKzv0PAcg11918eNswn3u6NpW1G25MitWSkKvJl2uqmfz/6WInItDMZd1ynmpWYGN8U3F9fkoG8O5ZQ5N7kBnynTeV2nSylG3lgGwR3lr9YgWcc0r0mFgTmlTWOApuOBpl3gJpp2u8rAnc/nc//guMJwn89Qa8ygUYkwVytjZb6OpUYTszUKEuuoff1dvPHyb+Ctd97hbepYrc/iA6sN/JU/+xM4coRvhe/GPame3T3qtKzCHeI2V+6vg65v0zT72++rn2nCg71p/X3j/AGq0YMU/Pu35LPPNMk+3FD2POZm6ZOIHLwf9064oR13+cF72991p5leF+uYfgPKS9s8pnTTv7Se5uvkVe/z4Bqu9ce1KPJ1Odw10ztp4gvDMAzDMIyHBROgB/BPfukL+I037+J6x8flF17A8rnT+MWv7uKr17dwZ7uPbNhHkIxQLTJEDOq76+so+kNM9nYoNRnKq0dQP30clRMn0DxxEh6D8SKYc93TYomQmw0sRSzxYcReGm8gyAfQd3/ceB2uc8qOPmZauKm4KChqZWFij/fTt2OYkMd0ToGpxgMddJeSAuhf7GOuKEm8R6huUZpAQa1OuqfPe+djNwZIrQEKcl3Q7GDwymUayx4E7DqqNDozDXAV6B5Mhz09y3MSLAXQegYFxvvBcjApscwVl5+cTILlJj7g4knQ+N/BZAh+mbLG84WO6bxkLGJ6SpAmU9C1hWZ68yLUJw33LSJNdlDiUua1dUpOuVpGdbaEMq+PKJVFt4Xxzhpuv/kq7r35JkabI6Bcx8zCSczMraJUdPFv/55z+D/9Ox9GQ10Q9ZxcHTzdQVDvyj9duRoQPDLd0AVKpn0nMAcppmjvtx49wKmEW7u/97ulTfffV+PTJO9l5l6ZKww33nt/09PvR5e8x/47ef/7md59uu/W+/mL92X7m64R2pqe3v+d8K/p74j7/P0ahmEYhmE8LJgAPYA////8aezWmvgff/VLuPPKO/ijP/mTePwTn8JrvQKv3mvh9r0t9HopRoPYzZpWYtAX6Yv7nQ7i1jZ67S0Ug45r9fDKIaKFOVRXTmBm6RgD8wUEM0sIG3MM6isoGMjH/nTK5zyfQFNkJ1mOhBIhIQqTLoPJhJ5DvcngPsbpeiTpDaq7mFpbmN4Jkf4ln9doO6DslHhO/3Kf83q5SkE5YhLeU9/iUVpmpCnHeF+h2Nb39IHR9D2JcS1HPOfupy54fsT9qQy58JcXuamVuauuU5Ki6WQKzJfHFBprRE8wCXie95YAqTseJUZL4LF+cpaHUXemLnZlCk+JMkTZKfFPI6sjoOQEJV4TsSxcwnLkunZFTCvxidSapn6FyRh5PEC610axsYP29jra63fR21rj++i7sTAh32s+cxTVUhX18izmGgt4/slV/NTvP4unTsUoF3U+T8RnY35SINeyw00X+LN806f+RoOPqkCr904cbAhuu2NcDg79Jv45B9/LZ7qerqaC8c2pp7dSIm1ocyooTqLdC9MpXru/fLPAHDCVrP3zbv/gbrruG/l+M9MU2mAOB5fsYy1AhmEYhmE8TJgAPYD/25//aWxGEX7mVz+HtVe+jrAX44f//X8fpz/+cWT1ZeyNA1zf7OPGRhfd/gDJkJKSxe57OmmsrmrMZMR9nqv0Oig6LfTHLTfRgb7xw4ge5WoNpWYD1UYD+fJF5rsAv8oAfX9BpIHwPnJKEgIG/4y41cKTF5QhtQ4VOYKCAqbWHzeAfdoNSl3pJCBj2oYmQ1BXuyJLuTVh+tzd38mLfgGSJy7+wT7zcJKiwfFqWdIhF/hyi//p+6iakY7J9pkGzi641uL+8Kjkh0xneQuQRQXiKHP7GiCvcUfqjueH6vBWQdmb4TlNgDBdqFCIKD0Fj2kYFW9LweHTj0eUPsoZg+uk3UK4u4HJaIQx67e7u4182Efa0yx8Y1der1TjPWqI6jOIqnVU61UeK2NQrmJpBjh7tImnL1/Cx546hedPAXPeHqLKLO/G+lbQL1t8iDkQE63Fv1Byvint+/mduA78zRmGYRiGYTwsmAA9gH/3v/qf0GfY/dWXv4Y7L78KfzDA2ac/gKNPPYt+UcHJy4+jceIU+hSZtXaCdreLvU4H28MKg3MKRncHpVzjfNTawoUyEY2ns8FlCYP4ZIBs0EU27LlWi2DUdl3c3Mxbkh3KV8ClVK4grVCAJEsM4kNNbkAhCkqUpKiMUaWGtFRi8rLrCuaadzyKBUVD8aqbctoJC8vEU24OMm6nfLZM5xi4TmcVm0qGttV6oEUh7Tf/q74+tuo+uKoTOsf005WkRQ87DYbd1NeuFUIixH2uJW9qNQl1iJLms5406H4ySZDqW0fc99W6RcnJRxSYmAE066fobbrJD9LBmPWlRdOIJxSh/VYH3ZPPXqmU3ZimiEvYbKIzT8Oh7PgSyYB1GFGEKjOo1WZxcqmGR06X8NTFeZyeb+DzP/NzeGalhn/rhz+CosQSs/yqQLf+14hvWVZ+JzABMgzDMAzjIcIE6AF88E//PTSDJvr3tnHt669hr02hacxh4cQlJLMz2G13ML90FCcvXcGR06dRm5tHTqFoDWLsdHvoM/brUnjcl/4VzCsYzBiAaiY3jcvReJ0soQRkbtrlYNiFr5m7XHe2jJIUI3OtHRnC8ZAvbMTjCQPYMfIJ8/IoAJpYwK8yoGXErlYVio4EQFNK+/oeDxoM/pvu2zkFj6t7WhFpbA3T+BQDN9Uxs1CrjB+41g4XHPM5JG0HYfKBDLkjk5zln0qNOBAmzQKnbniahMG1vDDQ1nTgGsOkZwqzEUrpADmfR8c0gUOu9JrFrBhyaTkJc4tapNRyRSFSl7vcteKE7hm8UDPghW5WM69SRdyoY0L50wQICCt8PsqOG1MUTlvTuK7X6qhVKxSfMubnKT/HlnClGWEujLF9+zp+5Z/8Cu688RY+9YEz+G/+4p9Apa62Mr4n/flOycK3CRMgwzAMwzCMfz4mQA9g6U9+FvVxjkUG6Ls793Bv/TaKbo6gtIzaxQtoLs9jZ2MdyZgiEtXRXFjF8ZMUoWPzqMzUUakxOM8KDJME/XGMQcyA37X+JIjHUzHQt1T0TRV9e2esyQ7USlJoJrXCLWqp0bkoHVIKeD2PqeubJkfQN2MKylOJ+YbJ/jkKUcZzmgyBJ+GlPUpEzLQM5BPuJ8yXp7xc43UG7ltHCogVK+tDoxor5NB3cNxEClPeC5d12qNcaBzQflr3IVUG1G4qbb9wC3XK/VEa19VN/eZQpmxRVChf2tesc5I22hcmFJdJeZbZ6zjFJ6LcBJofj8G6ZKek8UEeUgXulJ0Jz2vChIAyFLIOJER+qUzBCyl7NaavoMr6n22UUaUkzdTLWJ6tY6kaYK4C9NbuIdi7hmF3iP/vX/37qC9dwMpcHY+fB/7aX/jjODZbYx1KFPRo3yFZ+DcREyDDMAzDMB4iTIAewOm/cAd3br5O+dhDwx8j295CstFGsjdGVFrCkUsXMXPuOJJyCT2KUmdnhLhHKUGKcrOC8lwDzcV51BbnUGIwrg+C+n7dycOYcjKmtCSpJEgfTk0wKsZIGcyrhcS1pGhKbMqXJGeSxZQJTXKgkumbLJQWtSRprTx4vY67WJ1567yuC9TSxLVExGN6SKoY2GspPObvacyQpKtgWqbhDdRFTdKS6xrdThxIgC7lpsb6uAkA+MdNdqB762p9ByZSIactSlq7C9xZz33c1LVCSHrUGqW8ptk6n1IrjheoGx/PKz8dVD4UGp/HA8qPugYqXVQuo1QquTz1IdVyrYRK5KNRjlAv+ahzXa7wfgGvYZ2MdrYxvPkONr76z3DnC7+IZLiN8vHLmCxcRnXhNIKkhR//9EX83/+PP4xZlk0F0nO67oHGt4YJkGEYhmEYDxEmQA/gp34xxa/82ldw6/YevMxHmI6Qd9eQdzYw2W1RSjKUjixh6fwFzB8/ywB8gQF7iPV8G53RAHKWrEv5yBmoo4FGtYlxLUdpro7qXBOTSoRQYqSZ0EjglaGJA1y3MNc1bDoOR61AcayPjTKRgnJupOOYMb1mjMsR5mPXlU7Co4kOlFspDOlEMRLNKifRkczs5+1MQxIkxdD4HImPJIjb0o5apYL+kM8q96CEuBYiV479nwuFQ4Li9p0ccO1OaTujMHBXx5XO5chtpdciGdE5t6+WJC4sKx+ex1k2XaxueMF0/FOkxQtRnmgsFI9VmJ6C5ZU9hJSbEmVyFvrAqVqAApaZz6sJIPhuent9xNstZBs3KT5fQvfdz6NYexe0VL6DFZSOPoVi9giKxjLltI6rJxfxp/+9j+N3fWARoepkX3ysBehfARMgwzAMwzAeIkyAHsD/+3qEr765g5/51ZvY6niUDnVD24U32kStpymuexj1B9PZxsoV1I4ew8LqCWDuPMqzc/ApEmrpUdctTWk9ijWmp+ekpsgoFRO1hjCo5x9NYFBU6/SDKipq2VCwHwQI1V0s8BHXGEuqQeW9N8agXP7BrTGDzKnPTJBrLBGlQ36RpRpjRCni/dwECEyUc1/rqRCpRYlp3DmKlFpkWM7ZmSb2Wm0eY+66zX7eglfSTzTBQuDymB7TX/ybaTWTXIk3d8e41gxuagnSFNZufJFmhNiXH4/y4sbqcF/d4gLNBsdn1Sx68iDnSfwr9CeocKFVuYOpPv6qe/BQMk6RjycoJKejDvLBHuLWJkatHSR7G8DmbWDrBtC+h5DPGTb5fhavYDJ3Gv7MIrway0VxunL2FH7vi0/g3/rkcZysUwSnN2f9ULZUXuNbwwTIMAzDMIyHCBOgB/D7/+Iv4amXPoIbnQK/+rWbuL/dQTxI3ZTLfm+HIjSAPx7B6+8h3b6PyWAXan7xqiuozi0jXFwA5hlkLyzDn59HUabFeDMoU3I0fkeTBeQM3NNk4IL9ONUYnqlQqPuZprhWty8F+zrqRCIqOTHyKCHaDqMQeVTFJKQwSSSYUn9r5jemct3MeNOpfHBz31kc1CEUmAoRI33XCJPEFCim9SknmrXOZaiVLnabas/5hgB9c+vIdG/6t0+R0XTamVqPSMRtzYr3XhFYRuWR5TnXKjUT8J7qhjdJY95fE0UUGHO/pywpjQHryIszYMS6G1HuRn2EozVMhm0ULb6D3dvw+hvIu5tu9jif1hiWKZazS/AWTyCbO4W4vgpU5ymZIZpN4NK5o/joM5fxyasr+MBRoAm+U3XFc884lTDjW8QEyDAMwzCMhwgToAew+uN/B7PHGvj0j/4uZNUavvr6Hdy82UN7L0PMIHwyHiIaDxAlHQbd28g6m9Pucd27yPs91jBtiHLizSwgaDRQbs4hbR5DaWYRQbWOnIH5pNZEUeO6XEFEIVErTE4FUBcwrd2HT7mEfFVBru/z6Os4TMNj0wkDuM5GFIfUSZFDQbv0R97kWlgkTAziuTiZ4jWSJSqEUyCfQqWLeJhSxaBfEyjkTC4B4B+WxrXg8Aj/KKmOTtER5anJG1zrEv/oY6jMxOWbS/SUnjI3/U5ReXqOx4pMrVV6Cl6gnnjxVH78CdOmY8rh2E38kMVjPv8YE4oixh0KaAs+l5QSWnT3EA72kKkljvKmEulZvHoN1VlKTuMo0toS4plVZOUZoFJm3Ueoln0sHVnBpbNH8ZEPnMNKUCC59zb+0CeuYK5EIQ2Y1nUm/K2SZ/w2MAEyDMMwDOMhwgToASz+h7+OTus+GtUxPvHJl3D28mWs7SX4+rVtbHZidLo9JOMxPM2yNugiGPcRpCP4FKO4vQt0dzFprWPS20aetBnhM6D3qDVRjXLRAErzCGaPU4IWKUCSoQBBjcIUUoYqTcpT3W1rRrO8TGEIGYhTjCYSFs2QpnEvmhhA9iBjcV3quOJ6KgKUk8LnIr/g9TxS6O99GdL3hvQxVLUETVtzpmKjiRE0uYK33+XMHVSWWnNfV7jJF6YH3J0Ej1KieEyTNVByAqblHabnKUJ54SHLqTya+puLR6nRtN8av+RRdIp46Kb91jofdpCP+iiYBoMWyp1111qWZwOKEOUyHzLTqfRNIgplbRZ+eR7+HOuzsYS8Po9JKWS9spQR67q6zPpsol6r4dhsHWeOLeDs+UWcPzWD4dp9fP4f/Qo+9sRp/Ac/8QKqAd+l13R5u6dyJml8S5gAGYZhGIbxEGEC9ABO/7m72Lt/B8nWGop+G48+cRFPv/QMyvOLWN8d4uZWG2u9IVqDESYjBv1jdc/Sd30YNFOM/NEAZU1fPe4gG7YQ91oIXNesPeQdClLSRZF2eKchRSFH4etbPgdLhfJThR9pkoQyCk0RTXHSBz01C5pmRYObMS1AVlmmDDVdS4xmUAt4/bTrHM8xTR7qm0CSJgX0xI2xce06U6GRtBB9Q0iTCEyPqQOd9GUqMNNuctrWZAwZHUetLUKCICWiWuUFZYsBb5q4b/zoanA9ocTk7qOlQ9YLpTAesU6GPD7ij5BSE1MidS7tuzFMUMtPxnMSHKdszMfX7G/6AKzEcQZeZQ5hdR6gMCa1EoJyE2FlBlnANNUZFJUa66cCvzrtMlitVbC8OIfjR+axyuX4UpWSuodXf+MVvPulr+OjT17CH/uRj+CDj1VR9vnufI1ZCvl40+czvkVMgAzDMAzDeIgwAXoA//4/C/Da127i3XfWMOiOMNrZRFjO8MilVVx56nHUjh7FxjjD3dYIm7sxkqGHpM/gfzhA5BVIKUBqHZpoycauy1d5kMOnHE0Y7CPuIu/vohi13OQIIfcn8YD+QGmSOKnFSNv6WJBkxamI2nH02vzpruQlXORpioH21eXNzaq2LzweZUmLur55EiR1h+NaXeekKBIdiZML8qk709UUJ0Y8oBVFQONzNPX2tDzq2pa5iRQ8zd6mViR9f0hTbuu7QFr2J1lQNza42ef4PMVg/xH283bPpUWtWZQclT0q03fqFEJKCAXOr80C9WM8tn+cYpMHfCYtZW5XuaYUTiJey/2wUkWVAlSp1hBQfOZmZnFseQXHZkI0+DADSu1rr3wJb969Q3Gdw0uPP4kf/dQJfOrZGs4265RY1lWZ4uNavSSDXBvfGiZAhmEYhmE8RJgAPYBf3Azw+Xe7+NXrI3zlTh/tzghZawsY7jBk7+H0iWN45NHHMb98FEmpjPV+H5uDHtaTFP1+7AbqB6ziiA7gj3MUaY6Rr+/58AADw1BdwTShQqIWkAyFxhWlkgUKU0pRUIsIBUjjYYJhmzI0cBIlyZiopUZiQcHw0w5Fa+Q+hKquZ84rZBmu1YYogtexA7vZb9WYFBSHSfSNAF+X88+0RYfldAtP8hInSdxzXeUkBe6M2mZ0Dy2UIfeHIiKZ0TbzUd5qbVJ3uDSqsZ5m3fgmtXIFpQrdjFITleCVGiiqc657X6EWsFKVoqPWLrVmMT1FrQi5aIySJElTh5e5+BU0JjOUpBKKckAP1NifOuozDczV6zge+ahPEuR767h37V3cvHYb61s9CtUsGjNVPHb6Ar7/+Ufwgy/N4dJi5iZp8HPeV/dg2fWc36gg47eNCZBhGIZhGA8RJkAPQN+yeW07xz+8keBz6wHe3oyxvdlB3O0iSneQ7u5gMhhjphLgxPnjOPboaQSLsxhGDbR7MYbDFINBjsEwYxyo6ZtzJFnPjXeZJDn8LHezmvkZpSKnclCCcn28VJMAUIKCYjo2Jk1GKOdMS3HSd3404cFUhJgPt8NxzJeZumsnvKZwYqTWF3VLo8S44xImtdhQviRParlx0sJ7MZ2bqMB9aMg9OX8dESWGEuDkhn/rEOtDf4pQ448kJb7shrIgieJ2oJalMl2lCl/jk3TcV/e70H0EVq1TfGrXTU+SM4kqXFNo/KmEqfFKLVIFz+c8MFF3P4qluuKFXhlBhWWqUHSYTl3b/JK+FVRGheJUrVYw16zzXUQoSQIpjr2tbXSvvYGtW2+hs3UHqSZfaC4jPHIBXn0Jz5xcxCeeWcVnPngUjy4CVT6/51M4A64nalFTyxS3XVOQ8S1hAmQYhmEYxkOECdADoJYgZ1R+JwG+uBbjV9/u4d2tAOvtCfb6I3T7A4xHA+SjLtBtAVw3GxWsLq3ixMlVVJYWkdUqiMsR2nGM9niMlEs8SjGKEyQUIk0MUOh7O8WEUqXWHIlMStmhvKSSF3UtkxgpGFe7CgNy162MhXLrnJdGTMNz2tcYHCdAkhumVZc1tQRReiQ7vo4rnSSI93Bjd/QrkAA52WFZuHJCwmV/eBDLKBGYtuo4U9lfNFZIM9Jp2338lGUsKDRudjqlkTxoNjy1qPB+AcunVp5JoDQ8T9kBRQgByxSMeTnTl0r0r+k1bvyTpzE+M4jCABVKT4Uy1aDo6IOtYUTBivgc+nDrbgvxvftoXbuO7v0NjNotKh7rcH4BwcIKwuasm2RifmUZJ44s4weeOopPPtPAI3Nj1FmdYVFlGVgLoVq+KFh6FlaGbwL0rWMCZBiGYRjGQ4QJ0AOIGaSrNcYv+ogZxN/shfj16yO8vhng9R2K0DjFZpKgQxnyKDXVzgg+g/BxfweJpsiOgEajjIWji1g+toCGPo46P4+YghDnhb42gx6Fp5+kyCgg+YDhdlYwZqQYUWzUopNp7IyMJE0oLjzvWnIkL1pLeLhWw42THPVh474mEnAypDQSJ4qJuq5RgDRmR9NMa7a2bBJM5Ufioiaeg0XpPU1AwOBVM8oxrY66w5QXP5OoMX9NEuAE50B0JDTqokb5UZa8xElRqJYapuVz55IhiRPTBRQapVcLkTsWluk+Eb1H50KUWYFlClDUqCKvUBApJCUWOKA85r0e4k4HnbV7SDZuo7u1gWR3Fxjz2QMPQb2G+uwM/LllDEtzSOpHUJqZwcnFCM+cbuKFSwv45NUGVusx6kUL1cksq44ixsdgtehRVXjuq97cnvGtYAJkGIZhGMZDhAnQAxgzcPcpGYG6o/k+MgbofQb6d1o5vrKe4ev3e3h7L8XaOMJeJ0c8oLSMM8pND0msb9bEKBSo7+4hZDDtUz5K5RLq87NoMhifW1xApdlEtanZ3cro8lyi8S4MwscaL0QZGjKPVDKkmdQyBv4SIkqAQvI0yZCr1Sj3FadP5YgS5Om8xgNxXbC80+/wSI50ndMSF9QXSHiIYuVabnSp0nCDu55alDJNkjDdlySpVUdps32nmkrPdFEriWshosjoA6iu+Ygi4klyuOsmZOC6FAVObCRoZUpR2e3zRKBZ7eoIlRfrPJL8jUYYD4aYdFuYbK+j39rj0kGqOh0MUPCcu0+Y8/Kq+9ZSUSljUq8CrNMJxaocNShQc5hfXMKZlVk8e6qKly5U8fSJCEvyr0mKgKLHUrCQGr/EOlPx9b60zQfVLYxvERMgwzAMwzAeIkyAHkARFBSEgGFwiNw1lYgMYZhRHdStzcf17RSvbEzwymaGNzsjbMQJRkMfiabFzidIue/lHtJR4r4ZlPW3aTeUI4nMeORac8ph6Lp2BTUP1UYFNQbyYY1Lcw7leh1eVEJaqiLzAnqEREJdsyhkmYeYEhQXlCPNxOacZ0JJKlheblMiCpqRunFlmbrRabyPS0YmFDIG9wz0953nPflRI1Cop9Y5nZDASJKc4PhufI4+yBpQdqg7iNSaQ+kJJC/641MctR/yXdMe1KtNEyG4D6xqzJJKlPDZ4zHSQd8tXr+DZG8Hca+PuN+nOHZdd8GMAsjCM4PplN8+hSmsVd2McOo5OCmVkNUoTuUaZUtjiqooylV49QbKjTrm56o4Wvfw1PEqPnSmiedPlHCqweej1FY0AYSv0jAfltHz1R1QcqhncTXikCwa3yImQIZhGIZhPESYAD2AiVoyXPQ/dQOhvWJCkVBPKwbjGjPSpuhsJj7e2evind0uXt2bx93tDNvdBN1xgCSPKCrMQeNlvBGlaASPQb2+GVQMKEPuGzkMFBn05+MhCskKA3+1hoSSDLWk8F5RmaJEIYpqFQQM/INKCZFmUKuH8EsUj4jBP0WqCCKklIWC9yvTQiQfGsOjOF4tNHI5t3gM/rmvp1OIL/FxT6rgX6v9TV2vfV9y4BJJZDQhA5eUdaFDlK2c+wHrYpLEGI0pMXHfyZ7HZ5kMYyTdgevelyYUm9EABQXHKyhzsixmIreTYBURhZNSWGo2kfK4Xy7xXagOIibjfkjpUYH4ftwMcVEZYUUS1ESl2kSpXMEMJXJlvorLiyM8ezqg+FRxtlGgjpR1IamNUDqQnOnjkenfEh6dcXvcMAH6V8AEyDAMwzCMhwgToAehmc6EInwGywq+FQtPGLBnDPQ1jkYfMNWkBZOw7CZM0Fd7+hSB9X6Ct7cSXG95uNkOcacFyhDQSsdqGIKG0KSZjzT3kBcht3Nkmb6Tw4CRghAmI4Sppsge0bEyZMOU4sSLtM3jEy6yMI3pwYSCwMvUluN5Ep2ckqBxNAEFKuSxAPrIqb7941Mk9MFU99FUln6i/l4u2pfcaKU8JEwT6MOmbmY43kMSMN2n8GgGOnXHo1TlPJfuH5ccuTritUHI9CoU68SbhBQxTWtNGax49JaC5eP9KTqStUKtRVEDflGZtsawjJkmTKhW3ZTXVUpepHFRfLYJBQ/VAKnGGUWek54gWkI5mqARpViqpzgxl+HMcojHji/jucUKjlV4CZXJT4eulQo+yzKhUPp6hyoua+KbHIdP4arF+FfEBMgwDMMwjIcIE6AHoDEkU5whcMW1Anxuj3lMAlSiBCj4d32oJBNc+/rgZ+QjDkvoM2hvM6rfHMVoDWPc61Rwb2+MnV6Ozf4Eu/SYTuyjM84xzMsYp8yPeecUI9ddjfmltKWSn7mpsUsUl5zy4xWaBltjgihUKcvJgN7TzHASIx7zmNaTpKQligslQ9Nhu9nfpBhOM4Cc5WQa91za33+2ab83rrXSOS6u5YdrNyOaxzw1ZsadoijxnCY5UPc8iZOvD69SYiQ8nqaxlvzkFA4KZUjpCCguE9ZLrJakasVJjWaFC3mdx/MaixRKinQr5u2Vq8iDJu9ZuM//BBS8qCSR8jBbC7FQKrDc8HBu0cfFJeARrs/MhGgiRZ2PKmEtJIpOBFkeSplrSeLjuYfQs75/U8+1vymsBehfARMgwzAMwzAeIkyAHsRBC9A+UhNNNiB9YOjuwmKqBYNpCZCqUl2r1KWLm0StMZNixIA947ZroqEfzTHwjzBg+i6rv51yGVGSBilalKAW1xu9DOsDylFcRjspuePDOKYUFUj3x/eoZSWTz3BTLTEH3dUmWe7GAE3H9lAk0tx9byjX9NMUIAX9E31PiELAsyzrdOC/a7nhMm3lUkZ6Wt2I4b8eVIfVasRFTxkwL91bIjORVFFGwpByRulJmUatUPCpSZXp+CmJkx/Ued8qxWWCeq2CcjnAYExRo/xoFjz5I7NAmeYT8YHoSa4LX7VSoF4eoMZ7rDbrWI4CHKlEWKqHWGkCS40M8/UIc7y4zmtKvDUz5IuiJIYUQl9vqYxcZeDDUNPc82mkkypEk0a4gUrGtx8TIMMwDMMwHiJMgB7ENwmQ6x6mtfvbWYiiZ0oEFx5S3O3CaqZTkK0uZh5PaGprRfe6zgsoIQF31ZVM6aJwOsubupmVNRNZCV0KSsxLhhScPjeGcY69BNgd5uiPJ9jpZ9gbpujFPD/OsJsF6KYUj9xj2gmSQuN/ykhYoIR5q4VGknIgOpotTq0pQR7QUaaBvxOf9zGVG/41fWCu90WIouAmWtD1B+c1vbZLwicMAopQCD8fYYbiUo14jkFwtRyiHFJkwgyLMzU8fv4Ixr0Evc4AEQWo6lNiotRNBlHjUqcc1bhUSyEa9JRZXluW4Og4xSriPaVuDrViuRJoxjt1SuTza4puvR+f9cy13o1GO0V6B6xfSaDvl6ZpnMCZAP2OYAJkGIZhGMZDhAnQg/gmAXJ2ozhZPsOw2nWN8ikD3Jcs6LQocUMtMpIiSYOOp7xOY38Ulge8TjOyqRXGjT1RAF5QTIISNyVN6uolfWLY7pp2dJGURRI1nbR5xEMx9zSWaMB0PW6M+DqHMeUp8yg+kqEcg6yEURFizOPjLHPjdSRF+ghrn7cdspCaWlutSyrTAZIGPeGE93dP6lp1eILrgNJX4qIuaBEtqESzKLO8JYpPk2VbCsqohhPM1yZoljyETFMuR5ireFiMJq6Fp87ncS0vzDRUJXBRPal61XYlQZGoaAyTO5o4a0QR8JlZppTPrDFBGslU4fOpnjW2qOCS8WWk3nT2vojbbqwWM5/mzYSSPVeveiAtfEK3bXzbMQEyDMMwDOMhwgToQfxzW4BceK49/qe9/X3XXKJweuLEZ7otgVFnOcoFw2+1CWmMkCYjULc1xeGaMlopFX/7mgBB3dk8ygcXhfdyBGUdue5rEhQXwnPFv91/kgWfUjMVEo+y4Qb666QL9KUVwqc0KE/GpDynUqltxE1s4HLRQtw1Wumv6T2m1xDtclFLyn7biSbBc5MJqDVIx7ki0jTB8roWKD4vyxR44bRrHkVG3es81Q0vkLDoo6pewasoJnKTnFLoHtEt/EuCKFFkHtxz5dUfNWAlXOhbcDWpetWtladSBJqcgdfxP/dMGv/D/ApJEc/rGfS+tDZ+BzABMgzDMAzjIcIE6EF8cwuQQmsF0YrQ92tOq2lAfvAXcVG7AvmDdiIpEtc8PO1qNj2itYJ7HdKe76krmc7st75IFvbz09ij6Z7uJiWREOjUhI5BNZJr6bY6uy8PSub73HbRvQ4wHlVz1f49Nd4mdAmJu1gLt91teHJ6A7fW5AZau1MHabWjwxQal1a7as3R7AUTPcu+6Ola18oTODlztcH0uoX7rhC33dgcipw753IiusU0W6JnFsxV95xuufVBS5vH+tK1umY6aYMSKUel0on9+tYmF3da+yqLMjC+/ZgAGYZhGIbxEGEC9CC+WYAOomau5UHv52B3mmSaQGn2k0/hxm+Js6cXTNFlXL2X5L3juvAb595TBHdcJ3Rmui3ZOAjopzIhy5iediogGdEOmYoMpWM/vct1P79vXD9dK41Lt59mP8vfwvvzmK51QNdOd12+Lh/t6L/33UfS6Pa/AZNM0cH9nd98nnvuZegG30g2Lek3Lpr+/f4j++iA+E0HjW8bJkCGYRiGYTxEMDI2flu81/TA8FpBvFu0Ow3wtUy394N5tz1d7590++7P/jk3xuZg22U+Xf+m404aqAbvu4dbePxgzaPTPzp2sLh9neHCv1wri6aXDgL4WnzNiqYGG3Wbm6aRUOiYyuFW+2stun6ar9JqbM03loM003sfnNeaB93xg3P7C0/qmKsnbkzrS8+p9fRBtX5/3Rxs/+bz02u/UUcH62l+0/VvvvZgm/+xUCrDtIyGYRiGYRjGv9mYAP22URR/sD5YtDsN5rW8t72fRsH9wdr9ef/6m7ffv/ymNO/Pe5qfFgXx763Jwfqbcde8by0Otg7u4Vxgf5t/Tdf7xw7W71/+hewX459XnPeXVZvMzW1r7f5T3gf32F9/88K/3rfmanq1257msb/z3nqa/v3XTheeV5LpyjAMwzAMw/g3HBOgf81xAf3++v2LWnbev3aCsb/+ZqYi8g0pef9a1xysH7S41qT9+x1cc7B+/7lvXg7SGIZhGIZhGMbvNCZA/wbxfnn55kWCofU/j/dLyDcLycE178/rX2Y5uN/B+v3LQX6GYRiGYRiG8Z3GBOjfIN4vL9+8/G8d13Jw7p/H+8//dpaDaw7W/1vnDMMwDMMwDOM7iQmQYRiGYRiGYRiHBhMgwzAMwzAMwzAODSZAhmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABMgzDMAzDMAzj0GACZBiGYRiGYRjGocEEyDAMwzAMwzCMQ4MJkGEYhmEYhmEYhwYTIMMwDMMwDMMwDg0mQIZhGIZhGIZhHBpMgAzDMAzDMAzDODSYABmGYRiGYRiGcWgwATIMwzAMwzAM49BgAmQYhmEYhmEYxqHBBMgwDMMwDMMwjEODCZBhGIZhGIZhGIcGEyDDMAzDMAzDMA4NJkCGYRiGYRiGYRwaTIAMwzAMwzAMwzg0mAAZhmEYhmEYhnFoMAEyDMMwDMMwDOPQYAJkGIZhGIZhGMahwQTIMAzDMAzDMIxDgwmQYRiGYRiGYRiHBhMgwzAMwzAMwzAODSZAhmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABMgzDMAzDMAzj0GACZBiGYRiGYRjGocEEyDAMwzAMwzCMQ4MJkGEYhmEYhmEYhwYvSZLJ/vZ3lOCv/jH4//u/vr9nGIZhGIZhGIbxO4+1ABmGYRiGYRiGcWgwATIMwzAMwzAM49BgAmQYhmEYhmEYxqHBBMgwDMMwDMMwjEODCZBhGIZhGIZhGIcGEyDDMAzDMAzDMA4NJkCGYRiGYRiGYRwaTIAMwzAMwzAMwzg0mAAZhmEYhmEYhnFoMAEyDMMwDMMwDOPQYAJkGIZhGIZhGMahwQTIMAzDMAzDMIxDgwmQYRiGYRiGYRiHBhMgwzAMwzAMwzAODSZAhmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABMgzDMAzDMAzj0GACZBiGYRiGYRjGocEEyDAMwzAMwzCMQ4MJkGEYhmEYhmEYhwYTIMMwDMMwDMMwDg0mQIZhGIZhGIZhHBpMgAzDMAzDMAzDODSYABmGYRiGYRiGcWgwATIMwzAMwzAM49BgAmQYhmEYhmEYxqHBBMgwDMMwDMMwjEPDd1eAJpP9DcMwDMMwDMMwjN95vnsCtHAM2Lu3v2MYhmEYhmEYhvE7z3dPgM48gcnbX9zfMQzDMAzDMAzD+J3nuyZA+SMfxeTlnwV27+4fMQzDMAzDMAzD+J3lu9cCNLeCyUf/MIp//N+YBBmGYRiGYRiG8R3BS5LkuzcTwWQC/41fhfcrfxve098H7/LzwMIJlsrbT2AYhmEYhmEYhvHt47srQAd0thC88SvAra8Be+v7Bw3DMAzDMAzDML69PBwCZBiGYRiGYRiG8R3gu/sdIMMwDMMwDMMwjO8gJkCGYRiGYRiGYRwaTIAMwzAMwzAMwzg0mAAZhmEYhmEYhnFoeCgmQcjzHHEcg2VBlmX7Rw3DMAzDMAzDML69fNcFSOLT6/XQbDZRLpcRhiE8+w6QYRiGYRiGYRi/A3xXBUjyMxwOMT8/jyiK9o8ahmEYhmEYhmH8zvBdGwOkbm9q+TH5MQzDMAzDMAzjO8V3TYDU+qNubyY/hmEYhmEYhmF8p/iuCZAmPNCYH8MwDMMwDMMwjO8U3zUB0mxvmvDAMAzDMAzDMAzjO8V39TtANtubYRiGYRiGYRjfSb6rAmQYhmEYhmEYhvGdxATIMAzDMAzDMIxDgwmQYRiGYRiGYRiHBhMgwzAMwzAMwzAODV6SJJP97e8oOzs7OHbs2P7eg9na2nIfT/3tEAQBVlZW9vcMwzAMwzAMwzjs/GsjQOvr67+t9OJbucYwDMMwDMMwjH9zsS5whmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABMgzDMAzDMAzj0GACZBiGYRiGYRjGocEEyDAMwzAMwzCMQ4MJkGEYhmEYhmEYhwYTIMMwDMMwDMMwDg0mQIZhGIZhGIZhHBpMgAzDMAzDMAzDODSYABmGYRiGYRiGcWjwkiSZ7G9/R9nZ2cGxY8f29x7M1tYW8jzf3/uXIwgCrKys7O8ZhmEYhmEYhnHY+ddGgAzDMAzDMAzDMP5VsS5whmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABMgzDMAzDMAzj0GACZBiGYRiGYRjGocEEyDAMwzAMwzCMQ4MJkGEYhmEYhmEYhwYTIMMwDMMwDMMwDg0mQIZhGIZhGIZhHBpMgAzDMAzDMAzDODSYABmGYRiGYRiGcWgwATIMwzAMwzAM49BgAmQYhmEYhmEYxqHBBMgwDMMwDMMwjEODCZBhGIZhGIZhGIcGEyDDMAzDMAzDMA4NJkCGYRiGYRiGYRwaTIAMwzAMwzAMwzg0mAAZhmEYhmEYhnFoMAEyDMMwDMMwDOPQYAJkGIZhGIZhGMahwQTIMAzDMAzDMIxDg5ckyWR/+zvKzs4Ojh07tr/38HLu3Ln9rd/MX/pLf8mt/+P/+D926wNOnTqFX/iFX8CnPvUphGGIf/pP/6k7/vnPfx4//uM/jj/xJ/6EO/cDP/AD7vg384/+0T/CI488sr9nGIZhGIZhGMa3ExOgB3D//n23/pN/8k/izp07+Pt//++7/YWFBfzcz/2cE6Bf+7Vfc8dEEAQ4evToe8LzZ/7Mn8FP/MRP4JOf/KQ7LyFK0xRbW1tu/w/+wT/opOnP//k/7/ZXVlbw1//6X3d188M//MPumGEYhmEYhmEY3x6sC9wDOH78uFsqlYqTm4P9arW6n+IbabRIfsQLL7yAH/zBH3Ri85//5/85bty44dYiiqL30itP5X2wr3P//X//3+Onf/qnXVrDMAzDMAzDML59mAB9G/jjf/yPv7d89rOf3T8K/Nk/+2ed4PyNv/E3nAxJiv5lUOvR3/27f3d/zzAMwzAMwzCMbxcmQIZhGIZhGIZhHBpMgL4N/LW/9tfeWz7zmc/sHwX+0//0P0We5/jJn/xJ/MN/+A9dy86/DH/xL/5F/J2/83f29wzDMAzDMAzD+HZhAvRtQBMlHCwbGxvumGRH0qPJE/70n/7Tbja5P/Wn/pSbAOFB/OzP/qybYMEwDMMwDMMwjG8vJkDfBl566aX3Fs3qJsmR7Fy9etXNACf+8l/+y24WuYPps/9FaKa4v/W3/tb+nmEYhmEYhmEY3y5sGmzDMAzDMAzDMA4N1gJkGIZhGIZhGMahwQTIMAzDMAzDMIxDgwmQYRiGYRiGYRiHBhMgwzAMwzAMwzAODSZAhmEYhmEYhmEcGkyADMMwDMMwDMM4NJgAGYZhGIZhGIZxaDABekgZjUbodrv7e995NjY29rcOB/p47d7e3v7ebw9d+918Vw8TqovPfvazeOedd/aPPPyorCqzyv6vM/r9/uv+DIZhGIbxncAE6AH8uT/353D16lU899xz7y0/+7M/68597/d+L9588023/dvlzp07+NznPre/91v523/7b+Onfuqn9vd+e6hMKts387t/9/+fvf+Akuw673vRf51QOXd1zj3d09OTMwaZYI4iaUuUaenakiwvX6e7nMNalu1r+137eXl5OcnhWbKuZEu0SImZBJHDDDCYnGP3dM6hcq4T3vft6h4OIIAACIAkyO/Xc+rkvffZp3rW/vVOn3hVev/G3/gb+MVf/MXNPSCXy+Hw4cNq+2Mf+xhOnjyptn+UcPpGRkZeld9/5+/8HXXuneQ384d/+IebW38SftaPfOQjm3tvDS5sfvGLX8T+/fvxoQ99CIcOHcKJEyc2z74x/F7f6Dne6TNuwd9bft+vhd8x5+/Xv/71zSPvLl/4whfwzDPP/NAy+fjjj6s0/qh48cUX8ef+3J/D9PQ0TNPcPPrecO93++DBg9i7dy9+67d+a/PsD2bre8HL6/1uM/y94v83BEEQBEH4wYgAvQW4gHTmzJm7y8c//vHNMz8858+fx2//9m9v7v1J/uJf/Iv4yle+srn37sAFp+eff35zD6qwfvPmzbt/NX7uuefw0EMPqe1Lly7h/vvvV9s/arq7u1+V3//m3/ybzTPvjH/4D//h5taf5JFHHsG5c+c2994av/7rv67k+Nq1ayqd/L7+6l/9qz/SAvwP4tatW+p7di+/+7u/C9u2N/fefa5evYp/9+/+HY4dO7Z55O3B4ra4uLi5997D7+3zn/88/vpf/+ubR95btr7b/F5OnTqFZ599Fv/lv/yXzbPvjK997Wv41V/91c09QRAEQRDeCBGgd4l/8k/+ifqrLi+/8Au/cFcqJicn8cADD6i/+vJffJ944gmMj4/jH//jf6wEhI8z/NdbLjzz/VzDxH+h36oB2tjYwKc//em7YWwVmK5cuYL77rvv7l+U3+yv+o8++iheeeUVtc1/Se7s7FQ1PsePH1fHWI62/rp871+cuZaIn+Hnf/7n1bnf+73fU/FxvBwmp4/h9Gwd53RxLdd7xRul4Y3yaivtfPze/OUwuIbp3r+sv1EY98LvcGZmBv/oH/2jzSPA0NAQ/t7f+3uYmJhQ+3/37/5ddT+Hw+Hd2zzpm9/85t3w+brX453m86c+9Sn8zu/8zuZekz/4gz/A6Ojo5h7U93ErjRwmh81w/vCzsBjycZb+rfRvfTe22Mo3zmOWKw6L8/gHfT9f7/eF38PCwgJ+6Zd+Cf/5P//nV70Thu9nQWJe+/vyRu/s9b6/W/B9/+N//A+Vz1vnOD4Ol8Phd/x6v78Mh/vn//yfVzWlnIY/+2f/LH7jN35DXcf5y2LzZgQCAfyrf/WvXvWHkDf6f+ReOI8/+9nPqri41nHrXXCevNn/AYIgCIIgiAC9JbiAwc2ntpbXwoUibkLDf9XlZfv27XebtnBh6l//63+t/urLNSz//t//e9UM5p/9s3+malv4+BYsJHz/a2uY/uk//afqr9R8LddScCGnXC7j8uXLKh4+zsf+03/6T5t3vD5cWLp48aLa5ns4fi5Yb6WBzz322GNq+164hoP7SPzRH/2RKmxzoZH/es33caHrn//zf66u47/8c8GVj/P26/Uj4mZ/W/nIzZ1ej2Kx+Kr8fm0B/wel4Y3yitPO8PGt/L1z544K47U1TG8Uxr1wnmzbtm1z7/tw4Z3zeWlpCb29veodcTiDg4N3C88M9xni43x+dXX1VeeYd5rPDDfLu3Dhwt0aKY6DJa2rq0vtM1xjw99LDutf/st/id/8zd/cPAOcPn1aNWfj7+RbaTb32jx+o+8np4NrHvnZOOx9+/ap7xe/B64h+f3f/338lb/yV9S1P4h7f1/4nbGQcFz8zrima6sm6d7v773wfVy7y8u951iCOBx+Zv79/bf/9t+qfc4nlsKt/OR4vv3tb6s01Go1DAwMqOv+w3/4D+oZ3gp9fX1KhFh0ftD/I/eSyWTUd4Pj4nz6b//tv22eEQRBEAThrSAC9C7A/Qi4MLZVYOe/0J49e1YVlLgwv9WsrKWlBd/97nfV9uuxe/fuza1Xw/1TuJDGcD8FLigFg0HV34LD/4//8T+qGiXLstQ1bwTfu2PHDlUL9MILLyj5+fCHP6xqoriwaBgGYrHY5tXfJ5VKqbQzXEvEBb2vfvWr6lm5MLYlVTt37sTf//t/X6Wnp6cHR48eVcffbX5QGt4or14PFpjX6/fxdsJ4I/j78Mu//MsqfVyzwYXle9/PZz7zmc0tqJoL/g7dy7uVz/wdYRlgeM2ScC9cgGZJ4pqV//7f//urahzuzR+Oh2tD3g5v9P3kZ+Ual62wuRbtT/2pP6W23w73/r7wO3McR+UV51kikVACx9z7/X0rbIW79fu71ZyPw7i3xpTD3XqGeDx+Nw6WmrcLh/NG/4+8lnufh9eFQkFtC4IgCILw1hABeguMjY2pZjRby5tx4MAB9Rf79xpudsOFWk4f/5X6rcB/3eYCL/9VnAt2XBvABSiujeHmSm+Xjo4OVRhn/vbf/tt3O2FzPnGB+rVwc6KtfHy9TvpMOBy+ew0vb1agvDcNPyq47w/XIL0W/ss/yw4XZnlQhVKphL/0l/4SPvnJT25e8cPxdvN5CxaeL3/5y6pGiQWGm2zdC8s5F+i5qRvXbryb/DDfz3eLX/mVX1HNyH7S4ffyes3cmB/V/yOCIAiC8LOGCNC7ABceucnTVoGd/xpcr9dVbQoX5rf6VXA/ha0mZtFo9E1rbLbgwQi2mh9xYYkLsWtra6ppHv91nWtxrl+/rs6/GSxA3OeAC/BbPPjgg6oQzU2m3gy+n5vp8F/s+Vm5NmJrxK//+//+v9VzcYfyv/k3/+bd/kbvNj8oDW+UVwzX4rxRYfNeflAYW3DzqP7+fvyLf/EvNo80+3txc8fh4WElmNyM7td+7dfUtSyd9/Ktb31rcwuqGRU/w728W/nM30EuSHM6WEjuhWv9OE84PH7mre/pmxGJRO42S/xBA3W80feTf1/4mbfgPNwSOg576/eC076+vn73nXEn/zeC069p2t3fwZWVlbu1Mz8sr/f7yzUyDz/8sNp/p3AzSH4vW7Vyb/T/iCAIgiAI7y4iQG8B7iTNHY63Fu48fS9cQG5ra7vbmZyb++zZs0ed4wIxjxbGx7lG4B/8g3+gjnMhigu4XOh5M7h/A/ef4DC4luZzn/scWltb1YhP3N/k537u5/ClL31p8+ofDP81nuHmb1uw+HDh7q0U7Lg2hgtnHC+nh/u88HMzXJvEYXB6uD8JD7P9w8Ad4TnsrWVrGOwtflAa3iivGG6Sxfe8trnZa/lBYdwL989g0dkaJp2HxOY+NFxw5rhYcjgv+BwXpO+FBYZrKDjd3AeEn+Fe3s185iZ2PGDDa5u/cTicdq6V4+8w9yl5K7B0/a2/9bdU+rdE6PV4o+/na39feMRBflbmz/yZP6OelQdv4PRxU0EeZpzjYpF8I+59Zxwuj4DHzcneKa/9/WVZ5Pf7w7L13ebn4do3rh38y3/5L6tzP+j/EUEQBEEQ3j089Xrd3dz+kcJ/2X03Cig/SfBfqrk5WTKZ3DzyfbijOjdjeidwDQD/hfzev2zzhKm8vF6c7zVv9EzvxrO+Vd4ortfLq7fLWw2D3zu/A5aa18Lp434arxcG38P3vt599/Je5/PWJK5vlo4fhh/0/Xyrz/924GfhvGapfDf5UX6nf9D/I4IgCIIgvHNEgARBEARBEARB+JlBmsAJgiAIgiAIgvAzgwiQIAiCIAiCIAg/M4gACYIgCIIgCILwM4MIkPCOce6uXfCgvXXaslyHPm24rkVLgxYboGO2U4HtVuhiF07DhWvTwufpLtehECy6zG12S9tcCYIgCIIgCMK7hgiQ8I7xbJqKh1YmbZuuBzo8tK/RJ33FXJ0WjSTHA9ejw6aF7/B4mgtvu3QP/6hvpAqOrm4GKwiCIAiCIAjvGiJAwjvGQ/KytfY4m8vmNhz+irH8NAXJgQHbNWGx+Ghu8/jm4tAFLl/EO3S/2hYEQRAEQRCEdxERIOFdYEtUWGi4QRyv6YcFZ1NqPB4WGnYbrhOibb7cQ1tcBaSOqhXs5hZt832b24IgCIIgCILwLiECJLxjlORsrkHS49Bik7xYdIz7BFl02HYasOwKNLsKL22j0YBTq8IuZmCtL8Mt5+Gx6LhLAuVSeCpApUmCIAiCIAiC8K4hAiS8Y7imht2Ha3hsWix4YJO82HSOK3E0t05ftDoMjwVrdR7W0gy0cgaFxQnkpq5j/sJJ1Bam4bFrdB3dtRke1xOpARH4n1o3xUjpVvOfIAiCIAiCILwtRICEt833R2lrCgoPgqCat/Fh7vtDK412TFobVgOGbUGrlVGdGsfkiWdRmboGZ/kO9OwiApU0QuUschM30VhdgObUOeCm3KiPZsAcpmLLtDaPNVMiCIIgCIIgCG8NT71e/7GUIdfX19HZ2bm5J7wf2RKhLRFpSgr3ASKv5gMkKo3MBnLzk3Dz60AlB2ttEfVGGaGuLhiGhqiuQataWErnYfSPoPXIA3DMGIXV7CnErrMVsvpUEdEHnVAexMcEQRAEQRAE4S0iNUDC2+au+HBTNVqa8tNcO46GuqNm9aGDFjz5NZgbC8DaPNJzE4BdQUdHErnsEpZX5lCqFElkXIS8XpQWZ9FYmaEwaxRGHXWuCSKf8vBcQY7NgZNeuTyFENFMQ/NTEARBEARBEN4aIkDCDwVLkENCYts82SlXyPAHiQqtGiRFVdqv5FcxfuEE9OIqWhNeJBJBlKwqsuUSuocG4An6kK7W0DD9iLa2w1OrYn38OgWQo/DqSnQoeBWXh0zI5cVDHsTWsxkXL4IgCIIgCILwVhEBEt42Skh4dAOC1xq3eNsUEY/HhhcWQiRAjWIBrmNhcnoKy4vLiCVboek+FAtV1GsOtm3fiUAwjCpJUL6YQ2t7G8rZLNKTU/B7NGi2BVeneHjZrG3ieiad41b7aiUIgiAIgiAIbxkRIOFto5q93SNBjtPcdq063MoGTKsMvV5EtL0F3b29mJ2fQ7ZYVMNh+0JxROPtCPqi8LgGkq2dMH0+FEolaKaGRCSC+QsX4OSyMEiiOIoGN3vj8Fl4eHJVti3e5pXUAAmCIAiCIAhvAxkEQXjbbPUBYrgJHC+m14tyZgWe9DQsC6jTRymzgfaAidLiDGzaL9dtnD93ES3xBGLJJAy/ie07x8A3eOCgVq4iTAJ0++otJHYdQNt9H0DN1eFoGgzXhq55oNkaXcm1TtwErilgHtF4QRAEQRAE4S0iRUfhbbNV+3OvCHEt0OL8HDILJEC5VejlIurrK1ibm0I8lcTC8hIM+kkmkrh54wbGr99AOZ3FzMQEMrkMNApvenISLz/1NEJuAyu3rsOtlMhuWHc241HxbW6z+3AtUHNPEARBEARBEN4SIkDCD8Wr+gHRwgLT0dEOu16E16oh6jcx3NsNq1HBzfFr2L17Jyr5HB44dhSf+cwn0NESw+TNa7hz8yaeefopZHM5jAxuA2o1lLOr8Ll1VJbm4KNwDQqf+/0o6VLr5gAISozEgARBEARBEIS3gQiQ8LbZEh9GiZDmge04iLYkEQ0FkF1eQGZmFprrYGBwAOm1FdyZHEcoFsGT3/0GYvEgDpIQddH19z9wDA888AD+95e+hJdeOIE9o7tg6A503UZuZRluw4JOYXu4n1Fz+DdOwKYEUTqkE5AgCIIgCILwNhABEn4otiRI13VaDFo0ONUaqtUqfD4/rGIRd65eIWlpYGRkG555/LvIFfLY98D9+MqXv4SaXcPY9mF874++gtz6Gg4fOIjf/93/iSuXLqF3oBelQhbF9BrsYr457rXlqGZ2Ni0OV/+Q/DSH3pYqIEEQBEEQBOGtIwIk/FBs9f9RItT8By0Ygzl8BFasG6nWDtTXN7AwOYnOvgH8/Of+NCZPn4Om+3H/57+AP/72t5Er57FjoBsvf/1rMPN5/MovfxFf/973sLhYQk88hdriLdjrExRyDQ0SrYrtgUbSo7k2XIqRm8DxjyAIgiAIgiC8VUSAhLcNS8+rFqU/UKOzxXqGEOrqQy3gx46jRzBHArS8sITWbdswdmAfIokYulMt+Pgv/DyePX4CsWQL7j92H15+8Xm4ThU/9+lP4Bt//DX4yGs81SIWb1+nOFh4aF/TKQZNxbfV+q0ZsyAIgiAIgiC8NUSAhLfNVu0Pr7eWJh7YDSDc3QWrrQXlaBjD+w7i9DPPoW6QvLTHMHHjPLymi5ZYGJ/6+Z/HtTuTGNq9F8cefQjXrl2A32hg39gwvvONr6GrtR3F1RVYG2swuebH48DRSH40kiCOl+SLF0EQBEEQBEF4q4gACW8b1extc721qH3XA8Pjh20E4OvuRdH0obV/GCPbduL8dx/H0NH9CEV8uPbyC2pOn3A8jpHDx3D8zBkMbd+GQwf34ubV8+hMxJGKhHHqxRcRNQ0sXb8CzanCrddQdwBb1f5sCtBd+RIEQRAEQRCEN0cESHjHqCZwyoFc6PyjB+DxRRBKdqKQrWJ07yHUSjVc/N6T2PHYowj4fHjl+IvQTC8tBnbcfwznLl7A8OgwtpMInTt/CkMDgwjQ+fHLl1FenEFxZhx+n8HVTmpMBDUcNm1ztPfWSAmCIAiCIAjCD0IESHjnKPEgFeGOObTpcTSYehChRAcsXwgN24MHPvgR3L5yDQsnz2LsoQ8gGArh3OlXkIgEUMukMXLwIC5fv4mBsZ3o6unGi8ePY9vgNgQoyMlzZ1CevAm3kIHhOqrvzxZbm5wErolSTfLU0ebn968QBEEQBEEQBBEg4V1ADUjAosH+YzaFQ7N1eIwgov2DyPu88Le24sixh3DupbMoLm7gyKMfhk4yc/vaZbS3xpFeXkbvjl24PjGNPYcPI97Wim9+81sY6OqGXingzpmTsJbm6QvLwyDwJKwcMUe51QSPhOeeGiDe2rxEEARBEARBEO4iAiS8Y1RfHNINi7YrmgcOmwd9uJoBJxaHua0XeVPD4NhuRBOduHH5FtxqAw9/4FHYpSJWSH4SvX1YXFxD79h+XB8fx5EHH4Rm+vDEd76DsYEeTF27iNnrl6FbFIurwbEdOCRQjmvD4YlSlQQ1a4G2fpoS1DwuCIIgCIIgCIwIkPAu0OyLQ+4DfavqRacPEiCPL4hgsgNuMIKqx8D9H/4o7szM4s7lqyRBVTz8c5/E7OQ4rHIZLT39WJ9aQOfwKM5du4GPfvrTaJDonDrxCra1d+HM00+gvjZDsdVRJfnhzkCeBi1q04VN0bIQua5FCx0kthrCCYIgCIIgCAIjAiS8Y3gwAkYn2fCRhhhw4HpIPTwadMeE1w0hFOtGyRuGnozjkQ89hjNnzmJ1aRUL41P44Bd/EZfOnUaUwoiEwsjlq+jaPoLnzryMPUfuo/0G0ktZJCm8V77yW9CtTLOWiaLVHP4K8w7PQ+TAIvFx2Yi4o5D6JwIkCIIgCIIgfB8RIOEdw8NfM2oAArWwknhUrYzr0UlWDBjRBILJdmQqFXTt3IHh3Ttx4cIF2IUixs+ex+d+9VfwyrPPoK2nE/lahbTFQc/gAM5cvYgdB/dhenEeVTq+OjWLiRdfRljTYDtVOD6Kg77F7DsmbegkSY6rU2IoTepfM22CIAiCIAiCwIgACe8Y5T9c0cL9b9hEuE8QHWMRUhU0uo8kxY9AazdCbV3IOw0c/eQn4bE9WM/l4MkUMHHiFD7xy1/Ad77yh9ixfy+WV1fR2tmOruEBvHz1PAZ3j2JqchJ6rYHpl06iMHmLgnVRdMuoaXYzflppJD88GLdLMtQcLU4ESBAEQRAEQfg+IkDvI7ZGOft+TcsbL1vX/ShQosG1LRzflvnQogYioLVFhxyWEo8P3tZOeAJRlBs2PviFn8fMjQm0t3dhcXYGU5ev4rO/9n/gO1/+Qxy6/37MLi1gbO8uJLvbcW1qHEPDQ1i4M43y3BxmXnoBmlVWtT8WxaF6ITmbeUMJaibjR/P8giAIgiAIwvsHEaD3Ea8a6exNlq3rfhSwcHANjBoNTsXPPsRrOqj2t4SELtb9CLX1wQ5GoCdb8eCnP4unn3wGj3z447h18yZuXr+GT/3iL+K5xx/HkQMHMU9i9NDDD8EfDWN2eR69fT3Iry5h+tI5bNy5jSDH49qsWs0IKCJeqX36VAkTBEEQBEEQhE1EgH5S4XI7l+d5xWu1NGt3Xr395gt9NLf55971a47RhXfX96L2OBhe0bVqW603FyVazTX/qNoYWlTrNxIS3dVom0WIzjV01MwQfG09KNZsJMfGMLxnP574ytfwqV/6JVw4cx5XTr6Cj37sE7h6/GUc3L0f45N38Kmf+xSqJDrpYg4tbUncuHwB4+fOw2xU4XMo1TwinNaULR6Nrpmc5tMIgiAIgiAIwhYiQO8DmjqxiZINpyktLB+8t7nNi23zYNBNeF9Jh7qnKSf3bjV/vr/PoTWPvIbmiabs8AbX7Kh1c1F3bK6b2kPb6hqSEUorLx6XFk63ZsLrBIBADN7BIeSzRey5/wH429swd20Cf+6v/zVcv3QJV559HkcPHkV6cgYH9uzDjYnb+Llf+ByW8huYXJlFW0cLXnn8SRSnFmBAh+VaqOsObM2GwTVCm/KjkiEIgiAIgiAIm4gA/aTCJXdaWEuafVpoXx1i0WnKDe+7DkkFSQ8X91l2bLs5Bw5vK/nh+XD4Wg6D71XHmuGphZuMbZ7j0dya4SqluQvdouJqhtk831w3FxWGWqtuOE3UPDwct5qdRy08sptJYTgeDZZjwBuMIzQ4gOVcHo98+GNI53NYmp7Br/+dv4u5O9O4c+oculLtKCwsYWRkBPNrK/jcF3+Brt+A12ci5QvhiS99RWUVi1/VQwJEcXCTOPVMd0VMEARBEARBEJqIAP2kwhLCYsEKtLlt06pG5fkabXO9imvTJ1mHYepwGlU0KgX4fD7Y9Toa1TLcRh0ex4LHbpB/0MLDpJEcsI7wwAE8Z47jaR5zaa0ki2XnNdKgpGhz3fSppjC5fJ9aWDr4OMdgweaJSNmY+B4WLlqz9HD6+VFYqEzNC8cJwJcagtkxgOuT04i2hDF94SxyC4v4wt/+a7g5cxvXz59G1Edf09U1DKRSqGUz+KVf/DNYnJ3GSG8S02eexdzLL8Dv9cNra9A5X5QENR9FRSgIgiAIgiAIm3jq9XqzpPojZn19HZ2dnZt7wmu5Kx1cfqdtXpHKgDVG58WxoVkVVNeWUcmkEfYFcP3CRTjBEA595ONkGAZqNsmOYbIOwE9aoPrGqNHYSKCcZvgamQJLFE8s6qFzd3WBLUXB0uOBR+M138O1KnyUJYNsSG3zvDskKVwDQwvLh0bCw4/QDIUlaOteWtNDWeo40ajAsEu4+r2vwpOeQ3l1BQvTKzj66AMwI168+N//X2zr7YNvqBvpTAEtkRZ46BnzmSxddweO7sN81cT/9Zv/E44/BFenfOGcIsFqxs41Y+L5giAIgiAIQhP9N37jN/7p5vaPlHK5jEgksrknvBYWhWYTNl7XqRhv08L1PlTAtyswPVWy1zxunXoeV773LZQuXcDMtct48ptfxe2rl9DW1YVU9yCKJEpca+QlCdBtnpyUZIAHDFADE7D88CeJiZIVio9doWldm+ngc6wvTZVRx9mASHSae3ycb2qGwSbFNVY2bTd9yUNx0IoXNSkQPQmtVJy0Z1s16BRWsjWO9dlpEjYNWZKiyuVxDG7fhvZDY7h9+gy0qo1IexvuzM2iUqmjrb2djLAOTdMwO7sAzRdE//4DsBoWHE1XE6Iy30/39+FnEgRBEARBEH42EQH6CYXdgUWkWVZv1rawlxhkEpXsGtLTt7ExfhWZmXEM97bBrRbpvAWf38TC7AyeefxxFNfWsHtkFDF/CE69QWHSDxmOrap7SEzuekBTYHjFWqL8hj6UKGxW4/Cl3ESu2aeG+/OoVHGjOiU8DF/qNpqyRBrCjeGUoOgcFsfZrGYiyeIaITUkghq5TXMtmJEQDNpfWV1BppDBSF8/8pdvILGtE/Fd27B+7jo8hRoig924PjmJRrGCbf299Fw1mKYX5y9dxP77HoQvlqB4KU4Ol9NPbD3L3WcSBEEQBEEQfmYRAfoJRdX8NLc2a1IMNg7adUiCgHpmA/W1FSQMDa1Dg1hLZxBtaUFHVxfioSBaSSiuvPQSzj7xBJIkNh07d0Dz+2E3qtANbgbH/XVcaDo3VaOAN4VB9e2hny3YF9QerVWTN9YWkiCHAmCf4XN8/aZCwdB1OA7JFsmYh9vq0T33iofr4X5HtKYbNYqTfYplxbVshFpTsAslrN2aQCFhYueh/Zj4zrNo7e5EaPsgijNL9L2poH2gDzMTU0ivrWL7tmEEgwHMkPRlS2XsfOgx2DULOqWD+ye9HiJBgiAIgiAIP7uIAP2EogRBiQJ/sJzosHkUAbIHnYwo5PUhRBfMXLuKM8+9hKX1MtaWVnHfAw8gt7oEj1XFA8cOwbXLOPXSMzh1+hW0tLagvb+fwnJJhJrNx5SMsPjQD+kIW46KnyWhKWF07C6bUkZpcelexrEseFme6Fwpu4FKNo1QIgYTdZKaCnymnxzIonjoCg5T1TJROBQQD1igeh1p3IeIH9hEvK0DXgrz1OnT6DowhsFkG2594ylEh7oQ2NEHdyWD3MIa+oa3YW52AXNzizh48CDa2tpw/sJFbNs+imhnN0kYy0/zGfg5mWZzQqkFEgRBEARB+FlGBOg9gBWCi9hKJbhgz4VuWm8dZ9Q27fBpdVSJx927aIuP8QVcYN88o0SItxxU02uolwtItKXQ3tKOPUcfQioew8yNK1heWSCZsJHqbEPnQC86B/uRW1nBye99D2szU2jr7kKkNUWX2M10UZhcC8Rhqx8VB0ffXN+Fr6U0NDWoKRcGu0W9phzGKuZx5fjzuPLSCygtzeGZr3+VRKyGzm3bYDUaaJA48ZxF3NSN1UfVaBGORXEbdJQHpDNNpPq7UVhaw63TF3DwQw/Ba+iYePk0wh0pdA/0wyxXsZLNYHTnPly7eQe3b43jw489SklyMDV1B9sPHFKDLHA6uUaqmdf3PJc6t/l8/ALU4eY5QRAEQRAE4acbEaD3gK2iNK9VwZuL21sFcFpYOHibZUKd58O8rYrsm8dUubx5H4/SxiLUlCQLmuagVitg7vYVTNy6imRXK8LJCPwhA7FYAN3dnXSvjrW1LNZWcvB6/BhOxjGYSiKzuIxTzz6HWrGC9sFt8AZCcElO1JDaHk2lhWtMVI3QZvo4GXQSPLJBU4A0NcgBn0KjDqdexfL0JAIm3be2iJPf+RZOfvfb2Nc3gKunzsCuNdAzugMlx4GXU+bwRKUkJhbXzvCzcry0kPw0HDrm8yHRksCN468gt7aM/kM7EfEHMfH0cUTakmgZ7EF2eRUruSrG9t2Hi5cu4ea1S7j//iMolgowSXqi/aMqnYx6HsrDrbWH1nefS61p4WcRBEEQBEEQfuoRAXoP4HL1FlzgbmqNQ9vqABX4WSS47M3n+HougNM2Fca3JiXlpmkqJCU9LB205qGoPQ50KtfXy3lkluaRDJhIDfYhr5MoBYOb/XxqaI2G0dPdjZa2XhSyNaxNTSEzc0fFnUy1YWVuBos3rsFnehFticPwaahR/CxBGosPRcfN1VQvGpUGnnOomSQe3MBL8TXKBRKsGQT8Or752/8/GCuLWLpxBXY+h+XJSQRNA9uHh3HmNEmQZWFo+zA03QC5FgwSII03KBzX4MEUOF84Gh6i20Y4kUAmt4ZrL78Cd2UdOw/so3S34tqZ0/DRue7to/ScDjKZPI4cOYTnn38G0yRhh/fsQcUiofNFEEnEld+Q8XCyFUou+V3wEZYu9SLUGXVeEARBEARB+OlGBOg9gAvXVLRWazWAAYmEEgoqbHNtDq9VeZuO8yZf0rxrE7r47g9tc1jQNCq2c42MGlkAPsMAqhWszc2RvPhJgnaQSESg+yMIBH2olDewsXAH2UoJvtZODA2PoLO9A6vZNK5dPINGLg2zVsbq1E04lQ20dLbBE07AwzVBarhqipNkQU1eSj/cvMx1HFhug56pjjtnzyBUzMIqrqKcnUesWsTahfMIkCVVSgXVpO3MhXMo0HaRhKhIcqRl1tGzfQc8oRg8lQp3+aE0u1Dj02kemCQ/hsWDK9CTkhTFoyGMX7oMX7mKtSs3MEKikxoZxItPP4twMIY9hw9Ar5ewMD+NBx56CC++cByrC8vYO7YLLS0J6F4TeiBAadfh6Hqz1oqeTFOTt1K+bubl1rMKgiAIgiAIP/2IAL0HqIEL+J9ac40DFbo9m1LBC8kMH2e14W4wLlmGqv3gmhd1LTd729zmT24ipsrpXILfvJaEIRwJIxwKY/7ObWQXp9HV30NlfW6epsMbScAXjsMwdRQzS1ifHkeWbuvbswNHdo/CLlYxO7+GtbVFzNweR3Epj554Cv72FOpaA2WSBEPTYfIzUHw2xetoBizaMekzTWJy81vfxeWnn8bTj38Ht8fHUcjl0Z1qxejoKCzbpm+XgUtXb8IX9KNaryObzsAHA529fXB9Ouo8IhyFb3qMZjyEQ07CE7hypJFkEktzdxDym0ilkjjz3NMYHBtG59gOPPPH31TN4rYd3oc6fZfm70zjvvvux+OvHEdlPYfW9k54TR/MZELld4PCt+g5+C3w4Atc+6NQTfCasqqaxQmCIAiCIAg/1YgAvRc0bUWtuUytitVbH0okNufPocUhA9oarZmvpVObkAQp/eF+K/zJh7ig3jzHfWag6/AlW5BqTVKhfx7T1y8h0UoSk0ih4nhhaT5USllE9QrCfb2wKnncPHsaM/kKhsYGcXigBwlfOxqkNOPXz2H6/EX4NQfJrhR8oSDJCdeUUHSURg9Jldtw1OhxHgonXi7g2lNPYPLaZeTLeXhski4WL4PELBymdxtFOBZFR0cXzl+6pIaqXl9fx9LEJMXpRcfoIGqmQQ9vwuuY8NQpbM1FQ6dnI9FiQeH5g1o6k3j8W9/AsaOHwJVe10+fQn/PAEYP7cc3vv41RANh7DhyBEuzc1jKZ3B0x2488/JxOFULLbEYvBSXLx5D3SV1U2FyrnLND0VNma0GlaCH5PmIBEEQBEEQhJ9+RIDeA5oVNZs1NawsqpDN3VuafXu4qM3n1Pw3Dh2zuF8PFcxJAJoDEPBFqgGculj1U2Hp4R/a56ZwfA0fdUmCDG8AsYAfulXCxuxN2HRvuL0LNUdDKBaCpjuwcjl4own07BxF0LAxcf46rlyfwPzaHMqVAnzBMBp2ESvj40jfnoTP0BFrb4XHa1L6bBh1Si8lnvsfzV+9gNzkTVSLK7i+OEHhhhCq6Ug2dGTKWZIJDX4SngCF2dXdif6BfjWsdXtbCuXMBiZvXUckGkP/th30DBQ+CxZPbmTw87rQNwdFcEkTw7EEFmcm8fJzz+DY/v1IhSO4dvoM4iRW+x5+AM9+81sIeP3Y/8FHMHtzHJZjo7u/H+eeP44oiViqsxWOqSOUSql3oGu6qgFSNT5slRwlRa1ymDcEQRAEQRCEn2pEgN4DmuLChWnacm1Vj9McarpZ0mah4UlFnUoRJkmP4fdB85CkNBrNGiC92VyLm51xwVw1lGNjon1VRGc5om3Ho6NBRywP3e+PwnQrSPotLNy6itXFBfSMjVFQBupVG4lQHHogiEqjjpjfr/oEdff1wwgaWFxfxbU741jLLqGeIYHJFpGfnqeXVIGXBMgfpffE6XMb0E0g2qhg5uxJDA/3ohECZjZWEbMMBCsO1isZ1eStUKRn83qhGwa6u7oxODiAky+/jL6+LmysLOPSy2cR8UUwePiwGlTB0jkKW/UD0kiAKAs25cSDeCSICydPIDs7i8GObvTv3IFzJ0+iJRLD9vsO44+/9CV0tXfj8LH7cObGZUQ8JuVDEJevXEFLewqptlZopgEvPT+Pjsd5RyE3I6D1Vu2PCJAgCIIgCMJPPyJA7wFcYcNNq1TFDYkOZTMttK+au9nwWHXVQX/pykX8wW/+eyyO3yRB8SPa0aokwK5XVVs4HoCA57PhmWxU0VyFSTq1WXPBTbp4sbiBnBEgkTJRXJlGR1sMlcw6rp85h1T3ABL9o8jnS/CV8wgFQ6h7IyjVCrDy60hEOjC0dx+GR7vR0dKKXLGA6ZlpbMzMojq7gLjNAy4A3oQPdsRLkdaRofQ2Zueh1+pqTp9YVzvWV9fQ3pLE5/7sF5HNZpDNZLCRTiOVasPc3Bw6OjqwZ/dunDx7GkP9Qygsp3H17FkkYhH079+DhkNyRXF5bHo+g22I/vFgDJaFCIU7desGUiQ1MxcvIxGPYezYEVw8foIe24+DjzyCb/6P30Pfru3YMzqGixcvorerB0V6losXz6MlEUfIH0CYnk+9E8Or5iNiVHcszk6W0mYuN1EHN9eCIAiCIAjCTw0iQO8FquBMxWm1bpaiWYO4KZnWIPmpVbBy9SL++Df/A5772ldQXJpDZW0Fa5MT6OxoJ9lI0rUN2JZDsqOqRuhurglqNoHjTvvNSUubhXjuK6OTXRmmD75kCrM3b6C3pwsBkqxzzx1HyBdGa1c39PZObFDcxZVZoFRHKNYO12hgY3EO5XwDpsePzt4ejO4YQcjUkJmdwfTVK1idnYRVyqAlEFa1QXrQwPiF87h9/BUEGjwkdxWJ9gRy1Tw2VtM4ePgw2traMDE+gcmpSew/sA8nTpzAgQMH0Ns3hKXFVRw5fAjjE7dw6tQJpJJxDO3hwQzqzWG8Sf40yjeuCXJIijSSl3Ipj5uXz+PnPvMpPPfNb4Ad6eCHHsXVF08iHghh4P6D+Prv/C8cPXQEHf09OE+iNDhEcc3PYWNpWcmVYztIbhuBxUPzcZNDZTecobSlatjoXzODVb6q0+qj+Q4FQRAEQRCE9z8iQO8J3y9Ac3m62fyN9i0LplfH9Lmz+K3/55/Bzq5h70APHty9Ez4SmGe/9ySunDuHWDRGhfhBGIZX9Q2ySIDIBahczuPGUUAqeBYgCpxkQcmP20ADBmw9An8kjuunXkJ/Xxc6urtx/vkTmFnbQEtPN5KdrUh0d6FcyGOdBMcqlNASiiAeT6Ku+7A0NYuliQmYJBitPW0kTknYuSwK126hfmuR0m8isncILdt6UVlaR5trAsUi1tPL8IUCqOYqePH5F9DR2YFPfe5zGB8fx8rqCo49cAxf+9of4+Mf/QzJix/r5Qz2Ht2LqfFbzf46/hiG7zuGMj1bQ3NVEziu6HLowW3XQntXCk9+95sY7OvFrr1jOPnkk6pP0rFPfhIvP/8ckrEkurYN45mnnsR9R48hEI9jZXkFwz29WJiYxNj2MSyvrqNQraJr+whqdYvy11TCo96RGmhiSynpwFb+8iY3XeS1IAiCIAiC8L5HBOg9gAvRqgkc/TRsKjtzbUOjCrNawMVvfQ1f+tf/CoF6HW3xBHbu2gk9YGDf/n2oVIvI5zNYmpyE17HQ2sF9V1iAdJDiwFTd90kL2IYoEg/XDHksKpvb0EiEWLSshoVQOIJoqhXnXjiBzpHtGBroxdL5S5i6cAFdve3wxgOI9ZIcbd8Nj78NM7NzmL19VUlAW1cb2lpj9IJK2FhZwnopC4+hIWr64LfWUMkvYy1dR+uOA2gf7Ufmzjl4sotsEBjefxi24Uc8FsKtG1dQrNTx+T/3F5Er13D79g2glsWFs6fxCZKWcqUIJ+xD/9go7ly+ifETp9Db0YaeXSOwrTo9mwGLwmyo/HQQCIawvjCLSxfO4ZFPfRCR1ihuv3SG5CyHA5/7OF7+7uPo7+yCGQ3i2vnzePD+B5ApZmHXamhPtGByeQ6PfvoTJFsvIuw1kBoapndDisNyw9nIL40X5TquylvOj+/XCIkBCYIgCIIg/DQgAvSewIXlZp8S/nRti8r+a7h6/Fk8/8dfRk8iBoeOzawtI1srI5yMo7u/D0sL86qPUDwWQaVUgkN5lIyGYQajajADD48YRwVym4SKR5TjgrmaHpWEyOXOLCQMBosQhR1IpBBt7cDpJ59A57Z+jB4+gML8NM48/Qw8FR2xSDtq1RJi7SH07t2DrpExbFTSyCytoLaageb1ItTZhlAiAbdqo5IrYb2wgUqZxKVASzaNzu3DiAwNYnlxDm6jhHopR0KzB2dPvYK+rk5Mz8zjpTMX8bHPfB6mRmFklhGIhnD99i08xLU9JIGtfb2IhKOYn5rC9fNnsPfgXsS7+uHULTiGruYd8jgOvLqOsE/H8ReeQ2tPCwZI4LoCMczdmcRyegUPfPKjeOoPvoL9hw+jSLI5dWeC4niA0jaPOInk1J07CEejOPjwA3jpCZKlbSPwxVspr7h5Ib0prm5i12FxVWJp0y4dZAHi6jteC4IgCIIgCO97RIDeZbgzPdcXcHlabVkgKeHydBVuvYy2VBJr6yuYWJjC7dU57Ny7G489/AgSiSSWFxZQLVcQDISUILEENUg2gpYNr98HDwlAQ3dRI/FpUAw8p43h6hQRaxBHoqs+Q5rBQ1dbCCaTSKZacOnkKwhtH8Lw7h3wZ/O48fwZLN6YRjIcQaOURT6/CtsH9A/1o5/kIxJNoBjwYSVPErZehidXhRbwQg90ot6gtFjLsOduoDixhOjIQbQcvg9uZhZGZpEkqYaj99+PUydegm2zOPjw5PeewH2HDuHA7t0kKxk4uoGF6VnsH92NXDqL/R94CMuVAtaXljFz6Tr2PvoYDH+QJMiGRuJjmvRcdgORZAJnTpwgkfGhl9IYoLBjbQlY9QaW5xew54MfwPN/9A0c+vAHMD2/CDdbovzdhdmNZcR9Ady5cg17HjmGcDyK66cvYWDvAXpL3LxQg83vil4UvzONX6DDNsR9g1iAaF8ESBAEQRAE4acCEaB3me8XmPkfN6HiHYuEpoZkTxdCHhv/5d/9W8zML6OjtwOf//xn0d3WgdMkKTeuXkWUpMQkQTDoLqdeI0EpoLSyDJPkKRjzwwiY9Naa1RV3p/SkOFU/I9pUE6yqplt0hsQgGIsjkWrFwomn4I+1o/2+j6C7rwsrV0/i9kvH6WovIvE4yrl1OPk8GlYd6boFXQ8g6Y8hFouSIlioV8skcC4q9Qoct4o2bxieUh3zE7eQ6Eqge8cwnHQeG+tppFeX8IEPPIabt8axkckhQWn43re/jZGhYQwPD2MtvY5MNkdxFjA6NIL1ch5DJCrZhWVUFtaxtL6BfQ89pEREY6Gj57VJAk1fCPOzk8im17CrfwglCruhOWiLJ6FHglhfXMTRY8fw9e9+Bw8+8hiuXLuKcCiI3tZ2WPRcmWIOazOz2HvoIHKFAlZXN9A5vI3yzkVd99Bzcb6pblVKgHiiVBEgQRAEQRCEny5EgN5luAaI5Wdr2yEl8VDhukKF78LCPB7/wy9juKMLLaEQytkMfvUv/EWkNzI4/copkiQXxXwBlUKRTMZGwDSh0drWGqjUCsivrMLgPj6+IEyvT8kBzxXEzeGUMFEBnht08dJs06Wp5nDBRAtag37MnruCWqgNyV17SDgGEfOVMH7uJczeXILPTCCR8MLn9yHMNSskQHrYhzXkMbc6DWt+gYQqD18sQnFGUbdNOKUs2vUiShPXUUMAoa5tqG4sokzpX1pdx333P4RMOoM747cxsm0YZ0+dQX9bJ/YdPoDZ7BpymQxKaxk1T1Amn0aSvg9Fyos5iqutvRVt20dVk0CHn4UWHhjBT3ny7BNP4oMf/QjWV1bgNXQ1UWqUJMsXCmNyehKHHnwEz373Cdz/mY/jyunTGEy2wRM0SJZsVNfScEnm+nbtRJa2/ZGQqinjeZcslWceGCxCjktRUoSUv+p1igAJgiAIgiD8VCAC9C6zJUAaFaYtkg+HCtEOT4ZKx6xSGeOnz+OBfQfR19KCCydOYmVlDfB6US6WVSGfJ+q0qdBfq9ZIENLIZtMouDVYjk2ZVgNyJTVRqUnR6AE/XJ6kx3WguTwYgkZSxLLAfYW0zRoNWriPUEs/4ok4CheehF7ZgG/sIIIjB9DV0w8/SdfShfMYv3kZpWwekXAYjUYZ1WIa27racXDnMGLJMNK1ItZX0yitl1Gn9ISjOsKNEpKOQaJTQaZSxdieHVhaXsXSSho1y8aBvbsR8Rs4e/oMWtu7MH/9FiLRCHZ98EE0rAaW70yjQGHuP3AASwtzuHT5ImIkJblsFjsPHaK8McFPRo+iRruLJ1tx4tvfRffIALq2D2Hlxk0EwwGkxyfho/yoBEwKcwZ77juGa2fP4f6HHsLZky+hv78PPsOLGr2TOOV9Zm0Dw9sGUchnEUy1wkNCqVrsUTxeeo9cn8ZN47bmc1I1QYIgCIIgCML7HhGg94DNOoNmDRCV3HVNRymXg1Ou4vDBw5i7fhMvPvmUEqNL167gyq2byOUKsBs874+J9Y0suU5D9X+pU6E/X6thjURpeWoWlY006vk86qUCDI9DYVu0uNB4Yhy7oSSI+wJx/xsuvOs6SRWF0yCxMuJJkiAvsjMU31IOodQuBHr3ItWfQE+Pn0SgC9npZSxMjKNj9zAScT+mTp4iabkBkGS09w6hP9mBgXgE1XIamWoJticAp2EgHAkg6Ncwc2cKI4eOoexo2FhbhcepobM1jqHBfly8chMBr4GJWzdI0Bzs3L0TiVgCV86dR6NYxPYd26H5TazOTaNMYfMEqF2jO0lMyEB4PiTLgenz0fl5TM7P4ujHP4HG+hLS09yfKYT86hpqIRPJjh5kMhvobe3A4vwc+naPYubqTYwOjiBv0Nsh2emMxjA9NU4ylKI88sIXjtP70tXcQ4aSSPVP0ZwjiEWIR4cTERIEQRAEQXg/IwL0LtMsJHPhWYPt2KQdHjiOg0a1hsLaOrRKBfFkHHuPHUadtGSZCurFUgmFQgnpTE4NHZ1q76Q3oyNXKoKcCBYdC2hexGMxCsvG7MI0rl27jOlb12BtbCAAF4bPhOH3A6apRIqK7Ep+dO7HAhumW0WVpKgU6UWsawTIbaA0fQuaRmns7gW6BhDt7EYrCUmgYWHh+hVEogFsO3QQS4vruHXiEvJTy1ifnUUgaIInS3VhAqE4SoaL1cVJ6LUSohTOy+euYPTgUbS2tkC3iggaDmyrhsGRYViUzr6ePqQn5kicGoh0tWFgdBi3Ljdrn7aPDCGZCGA9n0W6VsHgzj3QfPRcnKPsQfQ8AdOH5068gKMfOEJhUyoWV7E+OYVCUIPfNUgEXUR7umEV8qoPEL+TcCyOudk5krh+hKJxpLrbUc2tYWpmHjGSumBLJzwkQDr3nVKDIbDz8ItsmhDnosiPIAiCIAjC+x8RoPcAHoRAtXnjmgsSGINkhvvW8AAD9XqNrrBR8zjoHOrDoaNHgFpVDR5QJ/HgeXyWl5eRLxZVbYc/FIYfPtTKNaym11GuV+GPBNHWloJTrmDu6nWMX7mK1ZVFkgEdsZYEdBIUl4dD4D4t3KyOk0GFd+5D46m7cMwIAp1d8EZcpJcnsLFahj86SEscRk8HQp0pRAIkIRPTyK+lMbr/EKylDSxeuAKPZSFLMqN5TDiVGm5P3oaHxCMZDVF6aqhpJtr7BvCVr30Nu/buQjTkQ3ptWQ3EsLK+DjMWQW9HJ4xMBYWNDG7PTqFC4R3YdwAZEqCl1WV0JpPo7u3Drek57D5yVAlKrVEnLzFAvoZQOIiXjj+Pdp43aPsOWHMLCJkeZCl/AgaJoNegrNdgdrXCqdXgs+ieZAxFEtGN+RV0kfC5IS9SnR3IrGYxNTWH3oFhyrcgGxb9VtDC77D5764MSQ2QIAiCIAjC+x8RoHeZZgG5WUjmTvTcJ8ehfR6oIEKFcDMSJknQEIpEkc2VSUBWcHDnDgwN9sJj1+E2KvAZHhQLBWSzZWTzJaySKHi8fiRb26EbXiro57C8sALuMdTa1goqtqMyM4eZ65exNH0LkZgX0dYkvV0SIdvghEBzNNWHxvDqsDQSLUqiNxhDrLUXWr2B9NI8ynRdINYCbzwBb0srUtuGSKMcLF06h1TYQLglhpVMBivLq1heXMJAfz9ifj9q65S+mo2G7WBldQGjY9vR09+H3/6fv4ejH/44kiQXd6ZnSE4MNax3fn0DwXAIaRKiqOGnuNcxPj2NSHcH/OEYqqtFLE4vIRah+NZW0TnYh1A0RnJIAmKZlIc+XD1zHE7Jg9FDH4AdAHILUxgkQcql1zBbySMW9AMka+GOdrgkWKVSCR0kfbl8QQ1wsJrJIdfQsXPPISzduEkCSmK0Z0dzwAXXpGtULyDKO4qT36UIkCAIgiAIwk8FIkDvMlxIbsIFaG42xX1xuElVswDNAsLz/Oi+INZW1vHEt7+DifFbSoj2HzyEWCwOm0QiEAiiWq2iwENTk7isZdexvLpMklFDe2c7Ei1JUhMXG/kMFebTCERCCPj8qKazWLk1ieLcClLtXfCGo2jUSXgMV00qqnl0mLxs9nfh2qpAawui8SB0kpfy3B3oFIdm6lil+NxgEB1jY9BbWmC0hREbaEesvQe2FsLM9DL8ZhB+EhvTUyOj8qDk82H82gSO7DkCXzSJP3jyCXzwi1/AyIEjyC9lMXv2CirFMnK1CvRkFFqC8iISVIM+VDdyCJLEsCSGohGcOnkS6ZU1XDh9Dtt27ESUpKxqNWD6TKyuzOHapVt4+EOPwRszYRVJzO6MI5mIoVyt4Nb4HZQyefB8Sp3bhkksG8jn8mgjIcqlN+Cn/H7huRfQ0dqGnXv34ZWTL0MnmWvdNkqiRTlLecMuxMKztai3KgIkCIIgCILwvkYE6D1AFZG50Mw1CM295lrzUIHchc4/vgDiyTZ0c3+YfAFPUWH85Okz8JMcsdxouoG21hSi0SDqTh26yRJlYXllBavrK6opnI/khEc0i9B1VR4DoVyDnq8gYVHhPV/ExswMXeNFqCuJmmajQUnwwYDuUMne4hRpsOlYmQTLQ2IWaAnDGw2hlM+hXi2pGpvS0hLGT50lWfIgNrgf4R4SkWAIXakIklGeQLRAYVexWithfn0Dep3S6TGQbtj46Od/HpMz8zjx/Es4sPcQBg4dQUdfL1bnZ7GQTWMlnyWBy5G0JNHT1gmvA1y5dAmzxQ309vagv7ULGwsr2LlnP/7oq1/FnmNH4Y9FKR9t1b/quSdewKOPPgJvyA9/KoipW9eRnZtHdyyJBOXt5MwsPa0HhulDsqcHqNdIgnIIhYJKKrfv3IMzzz6HJOXf4I5RvHL2DPpHR+ELRWHTeZ5/aLMBnAiQIAiCIAjCTwkiQO8yXEBWE5HyzuZa1QnRBjeFc7k5Go9oRvLBlUWpzi7s2rcfA9u2q6ZuL7x4AhOTdygcEiUSpngihsGhfrRTIZ3nvPGaJmq1GpaXlpHNFdSEotliSdXu9LS2o5UK7+VMBum1VSrE11HMryMe9SPa3g0PSY9O8Xu4aoNbelGaeO4bli0bXhRdE3UzimCiHYY3QDJTRzJI8kDJXTh7CneefwEBkoj2wR5Ve+N0tcHX2YYYSdhARxc6QhGU17JYWl/F9ckpeEigHnvsQ7jw8mlMjk+gvS2Fzl0jGHvoGCL+AEqraRSW1pFZXIFJsmGSyBTtKm7fuYN1OpaMxrBKz3Hkgx9A947t+NIf/AEeefQDgFeDj+5//olnsGfvfsTb2lAxLKTaU5h46SSwkkGYpKqjuwvlWh3bto+QMFnwJeJolIuo1spqpDceFjvs82J+dgYpSlsgGsXswhL6tm+n/OChy1mA+H2JAAmCIAiCIPy0IAL0HnG3nMxr2uF9VZfAhWp1zgONZMZx6LiuI0DycP/DD+OhD34QhUIeExMTqNarWN9Yx8bqGlpTKZKgNpKZKDpIdAzNRC6TQz5XRK1ShcVz6iwvI1PIwYwG4I0F0CAByufWUV5Zgd8xEWvtUjU9ddKlGglHg8v3lDCv44FOi4cESHcNWhskGGEKJwbX74WPZKd9xwg6wjZWJ84BAQ1lr0FhmGjrHYZp+2AtFEmW4ugb7kSrP4S47cE5kpGukQHsefgITp54AYWFZQR9BoKpBLrHdmKwswf0kJifn8PcwgIqdh29/f0gl0FuPY005YORiGI6vYov/LW/goXbd3D1pVM4+OBDalCJF55+Fl09vegdGqZ7G4i2JBAlaVu5cLHZVM5L6evsRMm2EW5JwbVsROMxlAtZlCjfYoEwMsUcfCRUFl0TDIZI2kyY4TD8tJAzqfclAiQIgiAIgvDTgwjQe8CW7NwrP81RxWibj/Mn/SP3UQVqw/DC9PsxTtLDNTKf+7VfQx+JANfy5IolzM/OYXZ6Fjbd4PMFEI3G0d3TTwX2sOqvUi2VoJFJeYMBFKwasvUyNsp5NfCCTjfVuMP/3Co25uYQJqHwxUIoOQ16+154KT6eVNVju/DqFIZO95AccU2V7fHCDSTgiXYALX3wDe1Gy9ghFBo6fCQuK+cvYPr0KbQkY2pen+nFSVSza2hkc2ghoevr68adqXHsObgXI9tHcPXES6iV6L17/arGx9eWRPeObQinkkjTPdPjU0gvraGLRK2rqxu5agVlg74rlFNcm/PYZ/80vv3bv4uw14uusd04efwZyg8fdh84SFJHeUvP5C1m0ELXVwoZZDJpNAwdibY2+r5VECD5aVCYiXhcjW5XyRfp3j3I5dL0/LZqnsgvxgwE1LUuPT8PYsHzKSnUSyV4n/OMNtUddzdoEQRBEARBEH6iEQF6D1DjIHAZWRWS1Vhiap98hArLLq3ViebiOnBtC5ppIEkF9fGb45gav4MHPvFJ3P/oYyiVqpiensZymgc7yGGNRCFfrqJSq6O9oxvdff0kRBFYlQpKlTIMkoNKvaaG1DZ1kwr8Fqp0PcolVDLrWFtdQpKEI5pKwUPXeHUyDEqIh8TH0atKmhxXozU316ME2rqqEfLAh4YZhxvrQbJrD8xgJ9p7d0AnQbhx+QTW8jege4oIlHn+ogomluZRbTQQ0n1Ym5jE3r0H0DrUizMvvQyvZiBCac6WcrC9Jjp6e9HfP4BEJEEyUsTVOxNoOC7a2zuxtLyK+YVlFPIF7Nl3AMNjY/j9//pf8eiHH8K1iWtq3p69h+6Dp85TIJlYn7+N1fGrCJPMcS3RRnqD0u1FNNmCPMlXNJGAVa2iPdGCldlZWHZNNTOsUd55NR41D8gWi+jYto3yxE/vTichbL4sfpMeel7eajoRyy29S37B6l3yMWZrR130J3YFQRAEQRCEHx8iQO8BqrKH1qqiQIkEjwHHfW9YflRPIDrJ9T92c19t8x06hrYPqwL/iWefJykYxJGPfRz79u5CkQRnbnkFy+vr2MhlsJ4hIVpfQ7FaRl9/Lwb6ulDKFlDNl9DT0gHD0tRQ2Xm6Tw8E4dMs1IoZbKyuI7eeQXuyHdGOLhUtD4ntck0HTyLKU7dSmnVOLxxoHu4L06BjdTUCXZUWj+GBSdLghsNIju7Ejoc/jGjvLtStAMpr66qvEQ8Kt7K4inSpiIVsBpeuXKbn2I9dB/bhuePPoVAsYPvgCJxKHRVKs+71obW/Dx2jI2j4TYzfHkd6bhkDrZ3QKUOvXL+J9MYGPvSnP4/VmWmsTFyHry2OfK6Ew/c/CpAA6aYH5fwy0neuoTg7hXAwCC0YxvLqBrRIFAHad2wHoVAIDglknNI/PTcNfzCAUi6PoI/yyQzCQyJVoeti7X30prgGiPJC4/ez+U55g9KkttWaN2jhtVo2L1RrvvietSAIgiAIgvBjRQToPWarDNxc6JMKxltlYdUfiArO3MzKowZGIBmxLQwOD6l5ch5/4gnUSSD2Hj2sRjvrSbWitJHGxvIaGnUb64USJqlwP7kwD9Or4fCRI/CRSNy+eQtwXAwNDqmBFJZJnDaWM9A9XkQjAVRyq5i5dgEmxdW6fRS27kPdduFzKB3cF4h/tsSMkkiaBpvC4aZgBq0d127WimgO0ukNFMpVdA6PoWv3XvSM9gNBk2SpDsOke/maUgHpbB7HH38O/b3b8MHPfBbPkuBdpXTu3bVX9TvSPAaKrkvPlEFnqg07d2xHOZcleVnCwLYh1czv2vXrKKbT+NwnP4qnv/E15DIFxGJt2HfsIdhcdUOixvlmVevwLC7hzu0r2LZzCInWOKZujiPVtQ2FSgM17odEkuNnSaHnTK+uoG9wAAvzs/AFfLSQAOULCAaT8CZM1FCi/NSh2zxYBG3SfZpFGkTZ42qsQ7zBkvsalCkRfIK3OT5BEARBEAThx4oI0HsAF3NfvTSlh4vI/MP9a1h+PGquGa5xacoPD7vMMsTzBbWkUti+YxSXrl3FyaefRWdLCnsefAgP0LFEMAAviUiqJUmSoaFYzGHqzi0sLC2pEc8OHNiHtfUV3Lp1AwGfF53tHWhvJzExvFhLL0FHBaloENfPn8fizAJGdh2A4ffDtUl6SGw4raqwTgvXBbngyVQN+qQfjwmThImHuuYBA4LhIKqFDaSXbsNwKtAjUbR0d6Jj+wBSvSmSCC/MWgOmYyKUbMX50xfR1t6DX/jVX8Ht6Sk8f+Il9PUNoDWehE7y4fcHMHH5GtZmZxFpb0H/YD9WV5ahe0mSGjYunjyFgGYjHgni5edfwejuA9j5wEOoo6FGbjO9QUpfANnbt5HNrNDzzpNA8Sh63bh8/ip6hkdRrpehR32oFAtoiSewQeGTxVEaEsgW8/DT6+ABFHJZF7GeXtQMHYblp/dFIqg30ND4eejd2fQuSfJoS/1sZhx/bLJ5TInP5rYgCIIgCILwY0UE6D1g6w//30f9+Z9+mv2BtrqN/CAcx1F9WnaO7YRr6fjSl76M8SsXcWD/Huw/uhedUS9a/C529bRgsCOB1vZWlPNZXD1/EYXMOvbv3Y1t24ZQt+tY3VhFrV5FNBFG90AXNCrQL84uIhKMorieQWFxEf0jw3BDPvpGaHC4locTwQJECdVp0bjfEqd/8xhUTRCl07YRScahmwGk19Oo12w1RLVrWfCQsMQCIXRvG0auWsX8/AJ03cSt27fQ2tmOj3zsY0gmE3j8m98k4zDQ0deNXLGIPfsPqpHxXnzyKRK5NXT39WJ5flFJEDdXu3TuHDo62hFLtiHW2Y2xBx6kdFgkkCYcijNAIrMyP4dypUR5kkMhl6fnG0G0pQVnz53Bzt07Ucpm4W2JwaXniCfiJGOTajLWZIxETDMR4LmUAnHYZgqRWEq1E9QMC45ehOXalDVeio/klfOJq8m2hJFWKo/4hFr4gzKKV5tXC4IgCIIgCD8+RIDeA+6Wfe8u/MPWwOvmQS4X37u8HvV6HRaJRN/QAPbuP4Az58/hW9/+Krx+HUcO70NnLIDS0hxMKpB3dHZh5/Awtg/0qhHhZiYnEfT7sW/vXgwM9sOulygiB8VqSTU3C3gDSn5aAgFoxSwapQxad41SWb5ZM2VT4Z51TY2ARkl3uUmcahbHT8KCxIu6QtUceYMhRBIp1GoOMtkCgiQhZjiCDRKN8fFxxOJxtHd3QDe8WF1dx9kL57FjbAe6u7qwd99enHzlJK7euIGdO8cwM34HsWgcH/rIh9UQ2ZcuXsKO0e0okRxxGnymjvTGOgmJDwcPH0Xvnr2UFkqHpqNhN9PUsX0HSrkCUj4/rp89Bc3U0Dc2jGAogBtnLmDPgw9icX1ZfQcNFhjLRSmfRzmTVc0Ik5EQSqUlaAEvgtE2qPZ87DEek1Y+8iFd5ad+9yU2m8Cp8S2U4fL7VhrZPM+7vBYEQRAEQRB+rIgA/cjYKvzy+vWWV6OGX6ZFJxGx647q23L/Bx7F4OgIXn7pBM6cPYd4RzcJziHUyzVkSCpq+RLioTC6W9swMjiIcDCAzMYGnEYDLSE/FfAzVCQ3VH8cnX4CuokqHUOjgFqjDD0QQqp/kHSAhKBBGqGTCHEnf422NVYekguSo63eLmqtzvMocR7YjoZgLIlwOIZ8OqP6DXXs24c2Ssvi1CQmZqZRqVSRSrWpmiPbtjC2Zw9WVlewfeco6lYDL7zwAsZ27EJubQOXrl3DZz77OfSRJL30ysvo7+1RE5gWywW4JHnVSh03b42jf2AQ7du2o0LCqOk+SjOlm4SsZ2AIdiaHoa52PH/iGQRaIhika/2uieuXLmDX0cPIzi2RKAYRDQSRpjzsG9mGyYlx5Ct5DAy1IpddgOb1wJcI0/OaJJc+NZksj/TgehrNwSI4GygfGJYfbsLIcqSkV0kPX68MSF0jCIIgCIIg/PgQAfoJgWtWXrVQeVnTeeABFiEuODskDDZS7d04+siHkWzrwovHT+PkpVsYGtmJvduHsbiwiMnbkygXirDqDfi8XsSjMfhNEz0tSfR29sKmIjvX0CwtLiEcCCDEzd5MG/lCHsuTCyjMLyHWkiKRicOl+LjMblPcDq150lad+yxxeiiBStJ4k/sz0XGD5ENd6PciQhJm1+qYvXkLNRKdPSRv+/bsg0XHJsZvU/wLuHFtHEODfRga24HllWUMbRvE2M7deOX4SwglY+gjwfvGN76Orv5efPjhD2B2cU7VrJBOoFgowGf6UCaheuqZZ7B9bExNiOryAA2mjhpd5zUDiLR3YO7aJewYG8KVi2eQbG/DQO8giitpzN2Zwo5jx1BL56AloyjTky4truDYZz5JwjaH+loR7R092KhXgJgH/nCJXPE2dDvdrPnR/JQ9XMtD2yyCSnB44U86rmqCuKaoeWTrnCAIgiAIgvDjQwToJwRVa3APqiaBCszNegMee4zn54Ga36fWsNHR3YsDDz4KBMN49vnncfvGNew7dBgD24axsr6GOZKhRZKK5bVVJTeFTAk+ujbW1ob9Bw+puW/OnzuHpeUlVBwbrW2dsHJVrExNY+ryBfg8Dlo6WmEEfKocz3OE8pw7pDrNNLGk8Q/tKAmiY5w+V9egkwQ16hZ0iiPYmkI1W8Tt0xdQqtWwc98ujI1sU03fNpbXcfrMSezevxdtHW2ok8w4pTJGDxxAdnkVc6uLeOjBh3DxzHncmpnGUUq31zCgkeDo5Bcr9IzRSBhDwyN4/uUTuO/Rh+EPhLnyhU0NHstRQ4CXKwXcOPMKHr7/KFYmxinPAujfsR1Lk5NoWBY6BwZRWVynPO3DAuUd3z722AdQndtAplBCKR7E18+9hNnMeSR8Z+Csn4DhBmCGutl71HvS1EAWqo5M5Q3Dn2ouJc61ZqbxYUEQBEEQBOHHiAjQTwivqv2hpTl30JZscCGb0aC5OkxNJxGqw3IaGCThOfDAQZSrNXzrqaeRq5QxsnOnmlQ1W8ipsdEKdGyahOLa9DTG52cxS0tvRydG+gfQ0d6JjUIZt25Po14uIeg1SEzmcOHEc7hz+SJM6OjoHYam+cFz6HhIPlQalfjQB6dTJa6ZWs2y0aD08gSnsD1wLBfhlhSSJDyz41O4+MoJuraOZCCEof5upLMZ1FwbXT3dqJAodQxuw8ytawjFwuhu68JNEpbhXTuh1x289Mor8Ab98FL80XAIIZ8fs3cm8ae/+Isok8RduXYN9z/2ETj1GqWbUkMS1OChvinu6XNnMH/5HB587BFcnbyNIMngUE8PieNVBOJxBAd6USEZak20YmZ8EsGqjbbRJIrGJP7wwrP4recuYHxhCXt7Kuj0zcCuFWDrrdBDnaqWjhSIBJAbD3I+UAZwHqlcoSP8Anmn+SEIgiAIgiD8GBEB+glFVQipcrOHPII2uHBNa57Xh0dko7I9dN2B7ZRgkLQM792PY48+ioW1dXzvmacxu7CgZIUnSrVYTMJRWL4ActUSSUcO05PTKGTyakjrocFh9PT2olYvYHmRCveVApLhAMrZPC6evYj15XWMjO2BNx4iCeJZgbifCzfx4gQ21YzTy8V7F5sDJdB+g/a5J4xuOSQrQfSMjiGWCODOzWu4ce4ybl6+AYvOTUxMqPQHDA03LpzDnmP3Ib22hksXL2A7CdE0SY43EkYHSdvE9ZtYX11FoVDAyNA2isGDBmXG537pz+K3f+d38MiHPoxwPAlYdXh0HVU676HzbbEIrlC+eKwaxo4dwtTSHFIdHaq539WrV9Hd3gWfZsJvmDB0L+pWEcHoDTjRO8hHXVxedDEz60GgXsaR0RB83gIKJRdGoAeml/KF3k9TdPh9bWUL5wivaM35w2tBEARBEAThx4oI0PsA7vPCZWfVFYgXnqtHo6OaTiLko7K1gYbrgTcUwp4j92Ns314UKnVMzcxjcZFkIV9Vk6bmqnXkyyRNZpiEogV6KMLT+6BUzJAvFNDaFsZQfye8JDeFtQ3E/QH093Ri8tYVvPLMdzFy4CAiLa2wyyXVtKtGemNRGjReVJcXDa6hU/o01UfGpJSbukFCYfB8o9hYzyDcmUB/fy98LsnYRgErdxZgFeuYnLqD+z/1UfgiIbz8xNPYdeggWuMxXHz2eWj1OmYXZzG7tACHru3v7cZ6Posbd2bQObANG+m0mlz1/PkLCLV2Y3B7c0AFL8XP/acquo1QWwvsTBHXnjuOjngAHTt2IF1sIJ6MU3qB/OIcWpMJOB4b8OqoeWsIamehVVbQGuFapxIWFiidCyZqJDNj/RqS9VVotOOJtsIxQtBdHhhBQ4XnSKIfw3bYW9XLU/OligAJgiAIgiD82BEB+glFNTN7zdKcX6a50Edzm0vYLENU4OZaGbtRR6q9HQcOHiSZGYTX8KJWt1ErVuA3fOho7cDa2hrmFxewkcuQBBRQIpEJJ0mISBlcEqr+baNo6ezE9Pw8pqYmMNDeBm+1jInrtzB6cD88IT+qJtdImSRLJGFcuKcSvktixkNjc/UPp42FzbYs6CREPPeQRceLN+8gHArAbSP5cm2YFE42n4a1lkWaZO3Ahx9BazCCqy++hM6xYex66DBmb91CZX4NKc2PPMnMtdkJ7CXJsWwP7tyZVIM9tKWSqFguMqUaDh47hiqlhCdu1WlxOHsofakg3T8zhYWp2+jp6UCgvQVw6mghCSpQXtg1kp5QlNJsI0Dy55TrsN0cvGEL0ZZhLKwksDDjx62Lt3FgRENvW4Hyu4qaFoAR6qJnjtIzGar5nU7x80hx6h2xwqpXJgIkCIIgCILw40YE6CcU7kzf3OCSM0tFc3cLLkrzIS5TN9e0wSOw0dp1bDXfTmtbG7aPjqKrpwdBkhWj4WDvzlEcO3wAuuYgk8+iQIIyl8vj1tIaphfTSJctEhUdLfEWPHDf/Qj6ArgzcVM5VtD0k7wE0b53L8okMwYV9r08PgPF6xge1Cl6NWkqp4HO8yhxCseFQ2kKhELQKhZmLlxC145BhAdTuH3zAtLT02iNJrCyuIJKoYLdlL4oXXvnlbPwBEwc/sAjCNguVjbWYQRJ4lpacOv6dcTjCfT19GF+dhpuo4FsoQQfCcyBhx9BiezLIDk0KH08YSk3xrPdGgqLM6ivr5P3VBBPBGGGfHC8OoLRKNYWVhAPxeH3R+k5DGgsQT7g1p06/vdXpnB7Mkf5a8Mt27CKZezZy/MaLaFeqUE3UzADPfRe/PS6qpQHNcoPfkskYR7tbp8uQRAEQRAE4ceLCNBPKFxYVj/sNGr96kXVBrH5cDULrdU2bfJIbLaqgWnO18OFeDMQQEvQD61Rw9zsBHLZZfhMqEEUqiRA4WQK8UiSJMPAajaPawvTuLG+jGvz0wjEIhjqGYRedbC6vIRLt68j2d2B/sGdIKeBRpLBw3W7GkkOJYInFaU9lcYtVNIoPZZNEpRKwa7WcenFFzC4awiHH7kPtYUFXLxxHdFgHJnbi2gb6UV7dxf8IT8Kk3MoZrMYfPQogrEwijNLKKYz6B0YwML8AnKZLDpbW2i9gfX1NO575DH07zuIquOQxJAA1Sl2+leBhUDYj5XpO4iSCK6ydPV0o0HpNSIJBFO87cflm9NI5y0EW9tR8hXwjSfP4//9nXFMTJLYBDzwxktqYIWVBR9irW0Y2GbDX83DKZMEBbug+1vVHEX8+JaHG+Hp/Fo4A/gt8pYgCIIgCILwY0QE6H0KF6WbBeqmbDQFiNY6CYhmKEHiiUw1w0QkEUckFYNft1EobmB26hbSK0sw6SaNJ/epWWjUKtBCJsygAX8wAKtuIZsrkAyUMLm8hrliGTbdn0mv48nHn0QykcTwjjHUud+LRuJFMmVspon8S8G1QJw2VRNEAsSTuvKgB9HebpKEKl75wy+jq6sLO48dQmNpHdnFDGxKzurcAtp2DSPUQumOkPSsb2DiwhX0bh9C77ZBNUT2ysYaWts6UCzksb66jGiI0kw3J1Nt2HH4CFyD4qWwdLuZJxYJmmn4YNWKuPD0c9i3fTduTc1jx9GHMJct47mz1/CVx5/DU69cwgsXruH8xDQef/kknn95DhU7AU/QR8+qwRdsgU3PkinoWC076OqPYjhswaiuoMxxRXuga/S9tr2UE7ryU15Uzoj/CIIgCIIg/NgRAXofc3fOGTYOlh/64b4uqs8Jlbr5MF/jOi68AQMtvR3YMTaK4W3bqJDuQX4jDbtUgd+xodVrqNeLdIMNj9eEbWoo1BuA4YcZCMMfiMLwaWg0ajAsFy8+/QwMumbP/UfQsBtw6ZjuGCRcLDtNA+IJU1X6VMG/mVbH8aBK0tRGEuSn+5///T9AZ6obQ4lO3L59C+teF6vZIiqZPHbs2YWCXVNDXwd0E+dfeBnxrg7sfeh+WMUqVtfXkYjH4DQqWF6YQZy2b964TaJnYPjwIbIyi1NBUTdrw2poIB4L49aZC7DrgC/ViW+/eAq//91n8OTL57GYrcH2RVAxA5jJ5rCaqcD0d6Oh1VDV0vQ8CTh2Ej4SRRsWVoou8pUG9g7FkQiVULWrqLh+BKN9lB8+1QNJjX7A+eByvRjngcqKZrp4Y2v/7gleC4IgCIIgCO8VIkDvY1h4VBchXvM+iQdvO6qwzfsOd33ZFA8HjtYc5CDa0oGhkTHs2rkXnW2tKGc2YNUrcDwaKqUy0HDQFk8hFY3DqlSwvrpC76sIr8+LlmQLBgZ6EY0EcPrlF9ColrFn/yFKB0uBBzwIHBfhOU5u9tZMmyr6qzQ1KGzd5uZhNhL9fYiHojj1W/8bjXIFSAYwvbSANIlDZmoJrWYQo/v3YLaURrnRwGBXLyauXFfDgu89dpQEysTG+hoiQS9M3cXS0jI9roaJW+MUlB89o8OA6VXNArkhmkP5YZgGFqem8c3vPYmX70zjxI1bWKuSAAZiMLxh2CRorqbDDPqgWSRQDj0QiZpNITsWhe42EA5q8BomCkUbaRIgS6+jb6QVAaMGrUqCqEdgRtrpnuacSfRBT97MF35fan/zsHpjm+ebVwiCIAiCIAjvJSJA72eoYK8K0WwW9KF633BfHG56xjUPvFYLz0lKIkCSonmjcL0RuLqfCuM6kokI4hEfdIM7/cfh0wNwSxZq6zkgX0bMa6K/J4VYxIBdcZEtVLCQW0Yk4cdgRzvmL1+n+1Po2bMfOduGX0kYJ4gL86qErwr4nEZuKmeSFGlkASxHtmMhOdCPVF8Xnvret2Gl15GAiVLFQMHw4Oy1i/AH/dizY4zErIRSvYahgSGsz88jl8+hd8cOpHgEt8wa/FzzRORLNXDfpOLSCrzJCMJ9PdA0E7rlQbVWw//z//3/4Ftf/Rql1cJkrQw7FIInEILmGPCTsHDDNY9Tp/0Ggq5BwlQhkaHEO35Kd4XOl+B1TYS9Xth2HkU6N1mtwhfzYn9XAMH8uqpdckMpWP4A5b2XQtXvig/XBHH+qDzhuDjRlDmqTxfH0zwiCIIgCIIgvEeIAL3f2SwvswipAjatm5tcoG5OzqlqYniuHh4NjQXF0OELhxFoaYEZi6Osm1hcSUMn4YkHQ/CbHgSDJoJhL+qNCgokG1ajgYg/gt7uTrSQNJWzaazNLMKiwv+li1cRSyQwtGMEmsGTiDZUzQn352mQlzQ2m8IZNsVtUzGf00TC4iGdqFo2Yn29GN4xiisnXsL8wjK0YAyOj9Ib8uLKmXNoD8cxuG07Kg0HlkP38QgOroOl2VkEvD50t7WhVq6hWqmi0bBQr5LYVEtoeOoo1Ivo7+uD4Q/ju1/9Ov73//pfCND9FglMw+dDw3LUoAU8TpxB6VQt+CgDdY3nMqLr0CAtYbkkeVQ1aryY8AV8CBg2GiSLmWAUt3Kr2NERw0ggS+FVkNZIniKDFKpXmR8/rYeb5Gk8UDhFwqPnsfBQGlX9FEXa1J/NFyoIgiAIgiC8J4gAvZ/ZLCtzgZ0L0LzPBeim/DTXPPgAT5pKZXs+TWvSItrgOYMsHp7a9KN1aAwDw9vRHQvCMFwYXg9suwKLRIabjKXaOqjAH8H62jKWpqZgFfJoCYTQ00nHwxFVs/PiE0/g6ulTCLUk0dc/SPe7at4fNUkqlex13qY1F/J5XiCuEamSjDk8SSrLFUnMtkOHceHWbVy8cxNBw0CULkqSXNyenkJXXz9SrR2qiZruNbFMaSltZJGZX4JVt9HJkuPzk1/Y0Kw6Fpbm4fcbKBYyJDl1dHR343/8p/9K4pYnGaI4KfxGjWSGBIxSSHnVFEObnoWOUkbpcNWAEiwwzcEM2H0aJHA8r5BmmjAtA3apgWJQxzpdv7ayiiPDYYSMKurclM6OwB9M0Y1BWijdhkXPz9VDLHAsRRSgZpGTcg0Rv7GmAgmCIAiCIAjvHSJA72e2ystKLJoNqni+mXuPb642+ZOFa8eylBQFQgG0dLcjlGpBIB6DaXpJVAz4dSqs1+sIkzCkWlIIhkIkDVToz2dQr1VgklyF6ViqJYHxK9fxylPPY352BoM7tyGRTEGrWjCp8M/yUzcphRr30mERIFHxWDAoSdxkzyXZ8ae6se++B7G6MIer5y/ASwLiJ9lxXRv5fA7hYBDtiQRsD0mLV0dhZQPVXAHZQgHrxSxA10boGrvcgOYNYHp5CbrfxMbGOrLLy7h07hzypRIdC5DoqKlKm5Ko1iQk9CwGPbNBz+olweFas60cs21b9aNSI9pRevk2nxlS8wSVPAXEAilMp9eRMwPY3d+KjmoddnUOXm83TF8vaY8Hlu7QZwU6vyPQc3EgFC9ZECdAxcPvUBAEQRAEQXjvEAF6P7NVVuZyNBWguVZFFaBVYZq21LHmWh3jw5vwMS7Q83HDIMkh2aiRQARTKcRb22B4fVhdWkYxl0XY5wMPl10nCQiFQ+jt6UQbCY9dq6JczKshtHkI7JZ4BFESp9uXL+LiSyexvX8QiYEB1XwOJgkHlfNtl5uAuaq5mUbb3PSMdYCHmK5QcvyxBB568AgsEpUr58+jUiogSXGNDA9hZWEBq/Pz2Ll7FzRDJwnLI53NodKoqf49a2uram6gQCBM8QVQo/QuLS8gHvKjlFlHZmMV+UoNtjcEm8RO4zSQ0HA+8JDdLDYqnzbRNmWIr9ka0ptR2/TjC3jhmg7K2SraohGUIxpenqyhvzWIPbEa/Jij5whAD/bACUSUBGkkgDrJn4ee11ESRscoTA66GaogCIIgCILwXiIC9FPEVuGZ1/dub63vbm8W5HnNgx9w0yuHth3SGEP3wk/vpbV/AEPbhqB5XMwuLcDyOCCNwUYmjTxJUTwWwc4dO9DR3or15WUsz88h4PchEA2hPUQCksnj/JlzaOlpR8fIMDL1GhX0DdSo0F/2aKjXKTbuY1Otk3vpSjI0Sku9UaVwTPS3t6OQTqNaLmLX7p1YX1/D4sI8woEALp06hyP33Y9AWwIz6ytqMtTyShoR3Q9H1zGX3aCw/AiGo+r+ci6NVCxIYdeQLlXUUNfc8M3Qm/nAtTvMVg0Pz1fE4sO1M1t5xbD4NEjmbNtSx12vjQA9q1HwwkQaI3u6MbdWx8p6DiPbQ2jx5aHVq3ApHk+kBa4Wh+56YTiGkj6WU4fi4z3VL4gV6J74BEEQBEEQhHcfEaCfMVTBfbM2QxW21cKNsEiGaFvjDj0uFcyphO5PxNAzMIhkZztq5APNfio6LMfCenoDc/ML8PsC2Lf/AHxeP6am7mBtbQUuCULDaqDiOphZWUaUJKm3bxC5Ot1XqeLmbA5f/qPHkS/UMDDQr+KlQEkMavAZLorr67h56RJJSxwB7u9DYSyvrqBQKiMUiqAzksTj3/kOPvDzn8Xwwb1crQRtvYCFiWmUNAfloIlSoaT63dQpznI+C7/XA6/fi0y5garrg+EPcTefu7U7W4sSMVo4bzgP6JA6roYRv2ehR4Nruqo/Uxx+ksBJ7B/uRVdLFafG01iwLOwYjCHuIzmzMjACCXjNXngaapw5Cp/ymbOa3onOVXe0rd5J8zUJgiAIgiAI7xEiQD9jbMkPrxkelpkNSK2bh6gwTvvcPIvEwg0EkOjqghkOoZDNo5AvAoahalc8hhdr6TRmF5fgDYTQ1pJCmMLKWzVkXQsl28bq7BJOPX8KvlgSK3YN//V/fQfXb6+hBhOnr09iMVvEjt1Dqo+QQWkyTA/WFhcxPzWNG5cv4+yZM9jIZmFRmi2yhMWVNezasVP1W/rOi8/i/ocfwvDgMHr7B+EzTVy4dQ3FRhUhfwCrq2mSnggMXUexlIMZ8MLwhSm8Olydt5vN23jkOMfhPj72XQFS+UOSwrVBW0LENUW88MAOnGssVz6vjpDXQa1C1+Xz+PwnOnF7JY/zswXKEx27BkOUtwU4lRqC/i6SrjY2HYqfw+d6Hwpp03p4tflW6IdrhfgcHeFL+R51ZPNiQRAEQRAE4YdCBOhnDC5Ib63vFqo316qwTds8OAAXtR2PDttyYHoDaG3rwEBvD7mPjuu3bmNydl6db+/qhj8YQc0CgiRBiQgV+EkcCoUi7KoF3TGRK1TwxHPHcXNiku7xo6WzH1q8BePpPL798jksZgrYv3c74n4v0KijUS5hfuIOJm/cwsrKKiqNBkqW1ey34wvhxp1bOHLsMEqrGVw8/gp2je1A2XCRGuxBLBTB9JUbqDs1xFo6sZGu0Lechc3LK1iuQd89D6okdw2yLhYpHhHPtjcHOGDFoGMsPj6fHxYJT73OQ1U3sSgdfM5mWXK4BojELRiGacSxND+F0W1x7N0dx9Wbt3Bt2UBHJIzRdj98tQy0UgN6pAeuP0xxO2AH0niiVcp3HqmPB4LwsHzSK2r23eJTzfQwtKXWgiAIgiAIwg+PCNDPOiw9VLB2PQ4tNo/NpgrfamQ2Om4aJB1kRI6rkwiZ6B8cwK7de1Xfl9m5eVy/cRPpTA4Ny4Uv5Ec8FUNfRy96Y50wbAP5OskLD4DgCyC/VkCsrRM2ScpysYYVKvznzQBeOnMRN29P4ODO7eiMcY2NBwFDw8byCtLpNAq1GkoUDtcAcXedhlfHnalxfGTvEazensLL589g74ceQNatw81VYOSrWEgvI0Nx+AIJrKcz9IwWbfMkqw0SCh8qJDx18h3T61PN91h0HG66R7LFTdxU3yjKh60aM5YeXrMANZvEkfx4Gs3887Wp0eMyxTRqdR2feywErbGCUwvtWFnIYW+3H53BGlAtwuWJZiMpNMBDdrMAUX6zAykBVW/kVbD7cGWU2lBvRCRIEARBEAThnSAC9LPOZuFa1TSoBlncy4e+GHRMzRnEF6gmcWQLRhC2xwt/KID+vi4cOLAbbW0JzM5MYXp2Dksbq7g2PYHry3kUjFa0941g+/AQKpUCbi0vof/BR+EbGMNtOq8F2lHQElitabD8AUxOTeLs6YvYNTKMge4ORNpbEI1HMT0/j7V8iQTIUU3VTM2FRSJWIvdYmZzFY/fdh1IhjRdeeBaf/NxnEW3twMLCEklZBpVyCfV6GbF4GDW6t2rRo3ItEslQ3SGh4ioh3QsPSRjPeeTyRKW0eLiGh/LBJcnxer2qZmhroIS725Q3PHwEb+skbDESqZoVojxYxsO7Azg4GML0QgGnV72o2TnsHIhSNhbI3jLw+jrhBoZVzZOJGgkQheRSjDzRKqWO5whqChHPFMTSQ7AA8SFeC4IgCIIgCD80IkA/43CBmovUav0nlmbtB9dAsP9Y3Gys0YDpI4ngkc2oeD68bQj3HzuKjrYU8vkMVkslzOWruDQ1jevj17CxPIWACcRiKWhGHCu2gVwohHqsBRuaiXSlDjIEmKYfK0treP7l04i0hLBj2zZ0dHWTYLVjYX4RmXRGSYJTL1GsJGmmD1qjjvTaEh77wEMkMHU8/fj38OCHP4y9x46pobmn7txBuVpWTdi8JFllHgLbsUlqDBIgGw2PCd0XgEZx88hurkNpsSwVPs9WtDUnEMO1Plu1QFsLj5DnWhQO3cvzFflCMaxnljAQa+Dwji74EgncWM7g0uQ6EkkfdrUBoUoZNZfyL9wHU49RwA0SLp/SHOWiLEDsOhT+92nKKDkqbYkACYIgCIIgvBNEgH7GUX1/VKGa15uru7vNwjaLENdM8ISkHo2K6roGbyAIXziCYqkIp1bFjuEBHBjdjj3tQ2iJJODzGSRKNtKFZUyvLWO15mI6XUalpRPo34ZFimCNBx6oOzAtupbO60ESpGod33n6OTgkH4d3j6KnqxOtqVYszs8gu7EMp1EDWQxrAqWL7nfrdKyOBw8dRq1cwZPf/RaGx0Zw8MFjaGlpweTkNOaXllGtVhAJh2GQybFM8Bw8LokPz8rjC4ToeV04VgOOTQs9t0W2oXPNF8Vzr/yoEeD4Wl5TvC5JoaX5oHsp3ICOcqkArbCB+3YPIJz0wO9zcW7Og9sraRzp0jEY8aDiFCk7TQQCPWhoQXoQSgtlscsjw6laIF4oZoqv+bO5q/oD8Y4gCIIgCILwwyIC9DPOVgG7uaafrUI3r1UZnBSJCt5cA6Su5yZgVGDnQjsPEx1OxNXw0vmNVawvLsAmCQlHI4jGQjANoL2jE/5oJ4mNF6HunfDveRAr/iRKHgO1BolEqQ6zQWLRcGAZfpKSgBoo4fjJc1hZW8PRA3uwbbAPyVQL7ty+gXxuHRpJR73WAPwGLJIgzbIQI6F58PBhGEET33j8GwgHA9i+Ywx79+3H+to6pqamVS1POBREtVKGy5Og+gPqWVxKi2macB0WIKs5/LXKBX5+rgHjPGguvM9w0zduMmdRul1Kt2M48AZJpjQ/8gtpjA0k0dNRRldLGPMVHeenyrCqJYyNBBEyqvCUcxSHH0Z4mITMVHnNtT7cLE6JpuqN1WySSAc440mAeN2MXxAEQRAEQfjhEAES3joeh8rf3CtII0mhIjpvkwiwPISTLQiHw1jZWMDzx19EIVOAiQCWVqsomu3oPfYpeIcP4baexIYbQXW9Ajtbg6duw3ZJOnSSIKtOouUFzDB8kTDOnn4FN2/dxt69u7BvbBSBaAzj4zdQyuVhGF5kakWYJF8sXS2+IHzkBmN7RpDqbsO3vv09Cs9BLBLDjtEdCIVCuHHtGkrFIlqScVSqVbo3hAZrBkmXTs9gNepqKOyG7ZAENfv8bIkPsyU/LCTcFFDn2iSXhVBDQ7Pg82sIG2FUcnSvncXhPRRuI4f2VAh3Vjw4PleFv0XHwc4AgrUMGjyMdqgfHjOihIrFi92Sa4BIDUmMdJIeFjQerW5TysR/BEEQBEEQ3hEiQMKbsFnopqVZK7QpAyQO3CelTqV2i1Rno9AgQWnBYN8AqpkqTp26gYW0i3J8CL5DH8RcxxAuGn7Mg965E4InVwPyVdg8xDTJAy8mhe2nkOt6QDVr41qk23fGceLsRYzsHMMHjh5EtKUVF86eRTafh0byw3MVaXUSMxKSaNivap3C4QB27zmAl46/pJrLcS1KLBJFX28vJicnUKJ7fQEfgmFKixFAkSTMHwiy1pFouKqfkMUSxC3RiObw2N+Hm78xqhaInt5x6Vpdh58i95Ow1GwTS+vzeHBfO2KBMlq1Ghx/AM+tmri9VMS+dheDcT/cGkmP04CZ6CK7oTgsEh7D3Kzp4UER6JgaEIEzn/Sn2QlIEARBEARBeAeIAAlvQrOXkPrgAjltqDog7qtCx2yPgQoV+i9MrKGEEJbzZRy/uYBMsBPFth1wx+5HtX8XSqkuhPvbEWlJYGM1B83mQa09JBokQCQSPPoaD3/NEmTRcd3QUKdrdH8ICxt5PPX8SYzs2IZPPHAU8Hlx6coFkidKR4O+xJqOQimHeDyMXh49zuvF9OwiHnrwYUxNTGFhbhF2g4e4JqmKhFEs5rG6vKxqfYKxFDZIxPzhEMXffL6GVUet3lA1MBo9M4sf13LdK0K8X1cDJlAC3Dps14uAayJEYdT8PqwWc+gKaNizPQK9nkG8NYRFy49rEyU0CmvYM9CHmI8HllilEKLwB1voqcMUFgkQV/dsiSblr5Ielk/eEAESBEEQBEF4R4gACW8Od74nMVBlbyqXu2qQaNYUkhQShJKr4eJUCXM5C+sNE43UIJbj3Uj3juGWLwZ3cAhlHWhJetHTEiVp8GCxkIbl5X4tdKJOMtXgmhcHFomVT6crXIu2KRYeYMAMI5/N4dlnnkFXWwpf/NynYQYMnHn+FfgcQ83ZU2yUUank0BuLIqoZ6Ojfhqeffha7duxUTeGOHz+ORq2OtbU1xOJRaCQqU9OzKDkavJEkdJ8PPlpsq0YCxAMh0HPSh2XZdIxEh9K2NQACw7U/Fl3g0Rxobo3OheC3vYj4SIkSQawUawiVKji2PwnHX4TXdJAMB3Fzrohrkw20R/0Y666hZhUpvhBCoS54TFpcAx4SQRYgpTwsYJu1bSJAgiAIgiAI7xwRIOFNoGI394NpdkKhbR6OuSlEXER3PToWc3W8cHkay3kbS/NFTBZLuFkuIh2JoRxuI9mxsJDPYjq7hsVsHkP9ndgxnMJKroxa3YWvHoJb15VYuSCZIAExdQOm4SMB0lX/IC3oRYkE5qknnoMZDODXvviLnBycOXmSPm14SYhy+Rz8Xh9SLW2o16rYt3sM/+v3fhc9/X3Ye+gInjvxEiLRCMrFAl2ThBEIYn5xDb5QmJYQfOEQ6iQ8ru1szvHjqOZw9LgwDF0N/c0jyPE+9xXS6RgLiWvzENqGqi3i9Gshv6q5KW5kcGQ0gHDKpOtddPvr6v4LSzom0gXKAy96/RR2zSTZC5GI9VHAfspTFsFmHyTNoTg43zX1JlR8giAIgiAIwg+PCJDwFuCid7PwzS2zeLhmD4+eRmdYhpbyNVyfW0WWyuwF04QvbmB0Zxd2jPajUdGQzlnIV7nGREPZ8NJ2HYPRII4NtaOYqWK1akEnCXEqJXIZCx4u9Gs8SSnJj8GS1ZQBnrC0pkXw1LMvqoET/q//81fhaDZOHH8aXt0Lv58nH13G8O5dQCWPeMDEfQ8cwXef+C4sivdzX/gizpw5DzTqqNHiDZL4UJgbmSwiyRYSlyA000sy1oBRt1HnWiinoZ6bR2fjobCb0uNCU0Joo1Ej+QEPkU3SwpOaGgYCFFeIBG5lI43uWBU7h7opvjIdq6A94sPtdAMvLrNUAY90awg3iihQGIa/DaaZUrJZ15vxmpZJz08PzwLEGc72JQiCIAiCIPzQiAAJbwFXFcLv1vsoC9JICngEN4cK7l7o3ghqJD/DR/vxkb0dOBSJwSzXgKgLO+XDUiYHsxaGVtFRbJD0lKvYFvNh90A7skYBG6VV+B0DRpUiajTAjdBsg2IzSShcE8G6A5ebpgVIFEzgpedeQCafx9/4q38JXtOPp558GkFfAF4ShWohg89+6EO4cOoU+rcN4vCDD+Dxx5/CLMnRr/+FX8f1qzewnk6TPGmo8iSswQgtYXh8Xpi0sAC5FskPpcGy6Rk3F27+xv2AOB9UEzirKWZb8Hk+HvD74Q8E1NxD5fwajo6m6FiD8sePEJ3T9CAuzZcwt5jGWI8HXZ0kfvRsKPvhiw4DvhjHDJ2kSrN5iGwWTs53VQ0kCIIgCIIgvANEgIQ3Z7PZm6ryUStlQ9C4ZsZxSEAMhKN+VBsOipU0Iq6BuG6qvjy6XqWbagh4w8imG6hXSWRIdCq6B1fWVhGL6vj03j54qjVkqhZqNskFlfO5WRksitDS4Pdw8zIXDY1ExGORaGgwA2G8fOI4bt4ax9/4W38HIZKYZ59+GokoxbO+ip6WJMZGR3DqxIvYvXs3jhw5hu987wncuHET/8cv/xJW19cwNTuD9o4urK1n4OVJUv08oakXGomMQwLU4CGxVRM4jxIfrgFSAkT73B+IB0Lw0vX1Og+f3RwZjs+bBokc5Qn33VlaXcfuHh962kwUNRcBTxWtQS/mcxquL9vIldewa7uNlFuGn0eF83bAjfbQo7swKad1enbOe65xokMqbkEQBEEQBOGHRwRIeBPYeoi75W6SAy6Iswg4PJIbjwbnIQnS0BYjCVpNY2Ipi3wsCkS8SHo0dFFRvjUcRFV3sVzJkwDxnD8+Kuz7sFopIUBS9MGDJEEkIXcqFdTdGoVLslF2YNRd1El+qn6K06fDT3LBPXQs3adqWa5euoxXzpwjCfrbSCbjePbJJxH0GsitbeC+w4egkzRN3rqB7t4+DA5uw6Wr1/HEU0/i0z/3aVRIum7fvIN4SwtW6PowSVMsEYdVb8DiUePo+Rp2Q8mNRUKkmsDRwjU9WxLE8wFtsXWcB2XQdQ2BYBAbmTx8nix2joRgegvwGnUEKE1BEraLSxYur9bRnwxib6sHfmsFJZJHPTFMEhaFSflEBkRhkhFSjqiaNxEgQRAEQRCEd4QIkPAmUIGbC96bBXCujVA1QHzGtWmxaCEp8hhUsPdgoCWBtO7FK/NZZOsmEqYfbSwEdG00YaCm1bBer6Fa0WFUQqhYOmYbJWQLNfR1J+BPJVDIlaCRhJgkQTwogUMSooZkIw9gFXApfK5w4VHjApEwpiam8a3Hn8Jf/iv/J3q7O/DsM0+jRnLT39eN+w8fwMztm1hdXUE4GqN461heXsazL7yAXXv2wmk4WFxYgubzwwz6EUkm1SSr5UoZNatOcTdHfuOmbcxWUzgWnWYzOEsd36qZ4XNcC+Q1uU+SD1X6nheqaRzcFUFncI3yifKSR6kLAfMVm/IpBDcXwqEBHxKBBdT0GuVJHInIDspXP1ytoYbF9nCTQ15/30QFQRAEQRCEHwIRIOFNoAJ7swOQkhDV/4U0hCWIZUQd49MkQFwzxFLSkvSrfjnzcxmspQswwwH4ghqCbgOtwSC8vgCqdHOeBMBseCkQE8uNGhZIfEa74jjQ24KldBEF3YGl62qIbE+F++WQcOgkWyQCsMiAHJYPko1QCBurG/jm17+BL3zxCzh48AC+/NWvYmiwF2ND3RjsacPZV04ikWhRAjc5OQWdBOXW7TtoS7UhFotjYnoKHhKWUDwB0+tDrWGR3DSUAHFNz9bC0nNvM7R7m8Sx/DB8DdcChUI8r48HS9k1jHbaGEuV0TB8aHgCSGhleGMhXFg2MTXjoDXcwHCfB4abgVvTYRp90APtqi+QpumU25QP96BeR3OTM592mlLGx76fOkEQBEEQBOG1iAAJbwIXqclWPKw8XAtCn1Sod/kQ/SgJYiFRI6GRDNC2r2FjJGqgLRrAXCaPKRIbBANqdDStUMNANIh4C0lPLY1KqQStqqNK9xZ5OOt8FUe3R9E71EniUEemWIKumWwV5FosPFwTRDFTxBpdzxVDFpkXj+jGE5x+84/+EB/99Cew/9AhPPvkd3Fs7yjKG4s4uG8vnn7yKdz3wEOIhsO4fvO2qrVaWVxGJBxBvC2FhfU1xNpaEaD9OsmP1SABcu274sOCs1X7w2xtb8kPr7eayqn+QSRZHj2KXH4d3cEcSZCf5C2ABnzwaRaiIRcblP4zCyVkclnsJVnrDhQQcqqo2wn446OwPBQGT8iqGew4zeGwWXRoUcmghd9DM0m8JQiCIAiCIPwgRICEN6FZz9CsBOIx4HhbJw1xSUA26yX4HB1jJdFsF35UYdoltIZMxNuTWCq7uDG7ASMURGtLEC2mB222g5TPwYxdxIqPCvc1A4GSB+V8Dtl8Fv1dCRwcbUcho2GZxMb1UcmfREevkoTVqhSfBZ9B6WAx4bgpPJ5A1HXq+NY3voqHH34E2wd64Cmuwc6uoiMZw0D/AP74j/8Yj33wQyhbNsZnZ+EnSVldXVUTocLP8w5p6OzpUQ9VrZTVJKgsP1sCxJKzJTp8jOF9hsVE1f6ovkIaSZAPHiMFu5KmdM9juD+JgN+LoC+sRqAL6mWYUeDljQIWVl20+YI42GbDX19DzROH5RuAL9RJIbNcqheg8lyNxKfWSn3Uu9l8QYrNlSAIgiAIgvA6iAAJbw2ucVBFa5Ic2mbd0VWhnAviXCz3qIogvqI5RxAd5X4/dGFfKkS3uVhY3kDGchH1BdBOotAa9UNLBrFmVUlkTNhF0isziBWrjIW1AnoNEx/a3Y6y38SsVSLTIAmqmPDwkNhuHZrmQDcN2C4LmY+O6fB6/QjoBp58+ll0k8gc3rsbLSEfXnr2SRw7cgCpjjZ88zvfwcc/+ykYfp2cx0S1XkWhUkU4lkQmW0Rnbz+8wRBqlRLqtZqqCXI3pYeFi5u9qZqvzfzQNR4YgUWI8kRts4i5SoBSwRhqeg6z6TKGer3oj2QQNf1wTA0Nu44WvwfFuo2TMzqKZeDoYBIJXx2uXaCwLfhbtlEsca6Aa0bHcFtDJV18kDb5PVAC+L3ce5kgCIIgCILwJxEBEt4EKk5TwVrJD695oVI2F7Z58IO7x+mHpYcnSVVN1Pg4LTwYtJ+OdSQCiHq9mFsuYT7fgJEMgRwAnSQUA0Ee6tlGxtZR80RRrmtIVyuYSmcw0B7DB4eTsLwhjFfy0Go69LrerJWpWgg0XIrDRsOt0LeZRMW1oNmUBL8f5155hUTCxic+9BiuXbyItdU1PPDAQ/CRgF27eAkPH7kP+UwO3kAIy+ks8jUL2UoNLZ09iLWkSICKsLkpHIkPj/bGa64FUraj4KfUNmuFXFXzw3LEaePmgPwTIkFDEFjNVtAWKGBnVx1eykAtSCJHcujXTejBKM7PWphZyqODjHFnTwgBK0thkxQGe0nGeilKsyk6Siwpr/kdcH6ziam46IB6D5wqQRAEQRAE4Y0QARLeBC7w0z/2nOamKmirEjgXuOng5qY657gOSUCzTohrZDRaPI4Gb8PBQNyLRCyCqXINk5UG/KYPw4aJLqeKtlQQZTKipVIFVZubjgVQIrFYXs5CL9exe6QVqWQUK0tFFA0yB08A4YIHPhKWqp2FaxZJqGoUl4saD7NN8fOcPpdIfG7duI1Pf+LTeOnFl9CebEFbLAorX8Wz334Khw4fw0o6hxtz81ihuDO1BrRAGP0Dw6iTAFVoubfJm9reXPMDq8oY2mdYgLZEifsAcTM4nwkSmAhK+RKCdh57hwPwmmXoPnoEyqeGZcAb8qNm+XFhKo9czcZ9wzF06gXUqh5U9QSCsQHYHj89E2tOswZOSQ7lvep3taU8my+BV4IgCIIgCMLrIwIkvAlUmlYF7s31ZuF7a63Oq1I3FcQ93CzLUiKkqje2msLRrknXG5aDWNBFMh5ELl3F7EpN9btpSwQRoes6k17U7Bzmi3XULR0+K4x61cb1wgLylQIeGuxGb08HFkhUGrUa9CrJDolVw63Dq9cp/AYa5CIu24Vjw7UdeP1BTNyZRmZ9A4d27UJxfRmj/Z3Ir6WhBxL4zvPPYq5YxJplI0vpy1UtkhodI0MjCPg1FAs5JT739v/hfYaP2RQHiw/nB++z/PC2glZenw2fP0H36SRdefR1NpAIF+Dzks6QIOl6FH69Cg+Fc3ZFw3jBQH+khkMpCwbdX3MNaP4OmKGUaurn8oAQlFc6i6eHx+OjeDXKYcp0tU33bMYuCIIgCIIgvA4iQMI7RpX3N6uINA+P1NYcKpvn8WywKNFa00kaPA3aLqHdALbHwyjVbVxM57BOApGK+NBjOOgJeaD5XBTX8iQzAZSMEKoUwEohi0IDGOmI46HuBOqNCsatIumWAaPmVTJU0XiIbA1Gg2ul6GLyAg9JQygYwvTtW9g13I/WgIEUiY0/2YIXJiZxcWEOs+USVkioKtyzyeNFMVtAb3snOrtSyJO01Ojca2uB2DhYfvhZeVJYhs9xEzimeQ1gkAAF/K0kLAbWl9eQiFTQ39VA0GiQHPkpjwLQGmnEvSDRC+HUmgdBK4NHBkOIeCkOl4f+jsEf7aYsDpGceSkO7m/Fw49THCSZrKLqHXBeSw2QIAiCIAjCD0QESHjnuFujkrF4sARxTYS+OVy2R41dQEV51eSLC+w6OVKYCu+DST9c08HVtSXkPCZSZgAdVaAt7EFrNIy5ag3rHHLDRwV7HzZKJczObmB3ZwwHDnRigeRntVSD2/DCKVI8NUoH9wHSGtAdki2urbEcOCQuOsW3tjCDh44egFUtYJmOf+3SVWQoScuVCmxvoNnEzCZ5q1poicWxc9cI0pkNVOg8yw83b2PJ2ZIgtXB112btEF/z/T5AJCm0bfo88HrC8Jo68sUCKVYJo31A1KjA5/dTvF54tSrCqGLVieDskoNCoYjRNj964iR3KKPm+GD4U/AFu2A7fspC7nnENWs8Al6zr1HTefgtqJUgCIIgCILwBogACe8YKv9DDXzAfkOF8WZzOD7I+1xTsTVYAo+Qxp1fdLqpBj8tQ1EfvAEv7qTTVPA3EPGEEAtrSEa86GgJYKWcwxoJiL8RQihHsuIp4XIuDR+JwIf3d8I2TcyUiiQ5JiJlE5pdRd1LosFN4UhmVFwkI6apIZdZw8LSPOKtbfjaiyfpvpoagc3VvHDJ0ho1rk8iceN2dJTmg4f3oV6voUTixVJzbw2QZdGaHpyfXQ2MQPB6S3zUNtfUkKz49AB8Xg1Vp45qsYSdXRpS/jK8XhN2gOXFgdfOwx+O4fJiFTdW64j4vDgynEDQzagmeR49Dn9sgLQnSnGw8nANEzfFo+fjvFU011IDJAiCIAiC8MaIAAnvAt+veXCocM66o8FSCw9QrbseWgw1IALphRq5zNZ8sElONBKJ/kgYCdOHW8sFXKm4sH0+dHuBMfp6hGlhUSnVeBCAEKyAgZIdwMKajW5fAx870I6AGcJMpooqxes4JaBE0mDRtvIDSg+JCHuCQ9tGKAAnGMH1qXmYBomJ7oenRpLWoHRyaukmx/AgX8ljsK8Hba2tWF9fV83gWH62BjlwbFpYhOxX9wliuE+QQ8dV0zjdQMhnclcn1DUL+XQFg3FaElXopo56sE7p8sGHMqL0zAuVIE6sBFGh9BzrBTr9JHMaiZITg+kfgu7vonxmwbTJOdnyuAkcSx7XfkkNkCAIgiAIwpvR7LAgCO8At1n1o7oBqW0+Rl8tLpDznDgeNh7e5vZiXHB3HbVvaQYahh9GtY7DET8+v7cDMW8RV+bXsFGyodP1+6MB/OqObhzoMFAP12A5JBNaB7JVE//76gqeODWHRwdb8YWPjUEfi8Nqj8LwtsDwhODRyZ70GC1hNBwvyVQSDzz6EdyYXoY/kER/7yCpg0ZyBvhNE+QjqqZIo2dgQZ9bWKJ7otB4kAOSGd2gq0miuIaH91VNjFrTM9KyNRiCglckRLpD6W5U6Vl5QIYwapaB6cUqcjWDpMqCadGlJGiuocHnrOFAp42OoIbx5RrOz5RRsyn8RgWN6jzq+XHKuzotLskg10CR5FEaHJYf+qFdtQiCIAiCIAhvjNQACe8cKnWrcj+t2aiVEPCWh8Wh2QSNyulN3eZaH5IG3uTxzLy0YZOAOK6NdjqwNxFCpljB5eUsNswwDMOLYb8H2/10rWNhoWGDdIBExEUVQdxOl5CuF3F0XzsGk2EsLJeQsynOhg7XJrugcHWujbFreGTfdhjZVbT6vNi9Zw/qTgOVWgWWp4GqTZLC/YYorSZLRd0hGQrgyH1HkclmUCwWyGe4TxH3AeL+P1C1PzwkNj861wap56JF9YNiqaH88Dr0vF663u8lwWqBW6qRdKXR02MgaFQQD0Th6vQ8niLlQQ2G34eJZRu3VjSSMh0P9nvoKUlwuOWgh4fM3gWPEaOstijfOI9NlZcqEc2P5rsQBEEQBEEQXhcRIOEds1XgVn19WHa4/wsda26zHHHtRHOttulYUxJ4EtGmLPDxRsMiKfBgtC2CqqHjlaUi8o6JVsNAr19Hd3sAttfGZKGs+hz5yhm4pg8zhTrWM3V8ZkcKw+1tmMo7yDVIDLwWvNU1mJUM2lIh3HdkL5xCBkMjgwgloqiVq6jWq6hVq6QYZGGUJvogjeDEuyhVKti3bx+JkIF0eoPEx4K12QSOJagpQg5cWjj9zFYzOAqAksiN0zgdJEY+H8leEKjXgdoiBjs9iPvq8AW42qkGn1ElsaF7fBGs5r24sOQgTSL40ICJrkCDwuPmeTEYoW3Qw72wSH5cjwNDSSc3O1R1bpxsjloQBEEQBEF4A0SAhHfMVpmb1UHtsQzwivfogwvlLBV8nbqKT6izfGlTfnjRSXR4QABTc9ATDyDm92NpIY35XAn1UAjJFg+GA0BM18HKkrNJXriZmxNEKV/BcqaM3p4oDox1YbVYQrHokCjo8DhZ/NyeQQxG/VhplOleCy0UXigQRpi+g5VqBaViQdVCqb49tObklcs1DA0OoaOzHcvLSyQ8TfmxGjwgAl+7KUAkPVsL77/quRzSE4Obz5nwecPQKdxKbgE9rTpaIzq8XgeBsA2v0UCdK3RICIO+EF6cdjFTCWI0VsfBLheG44HtCQG+FpjREVgeP0lgHbpj0T0mR6iksBm3WgmCIAiCIAivg2o9IwjvhK3yNq9ZdNSaS+EsALyntjdXqnTOS5MtaWjWpHC/Fh0N10DMquOjSQt/amcCPp+G82tF3FhuIELS8fleHz67LYqhVAptwQCSBoVDcnEy7cHvnVuGbjr4Cx8dRsfuHbDbD8LxDqFcrcFjFdEbDKGWL6DUqCMSjVL8QDgUpe04/P4A3etVzfW45R43d5udm0M8TucCfpV27uej0QX3PsfWM7zqWWibhc9yad+i6xp0NYmV4fOhbPkxu+ygXAugTuesOp2kfzY9t0lpHPCuY6yDJS+Ac3MW8nWKg2RPs9JoFG/Cra1yrBQHN7+zuJWfSoqqeeMECYIgCIIgCG+ICJDwY0PVkNCy1XeG5cLQPPDbJBo8n4+niJG4hs/vbcWw5mLpzgZu5TTUTQPHEh58sSeOh1v9SCV1uH4ThhnFcsXBV24soegx8Kc/th2Du3pJgnbg+KIXK1Uf4l4N7UEDsxMTJCouorE4IrTEoi3w+kIwDS+lTKOwTDVPz8LCvKqZCoVCSmo4jdwkzqTznGbmXvnZ2ueR4ViBLLehmshpNm3XqnA8dK0vjoU1IFvUUam5sGkhjyED8sCgzTazgkO93BepipurLm6t1llzSG5ycKvTqOamYFC+OTyYBP8KK+uh2JSUNevZBEEQBEEQhNdHmsAJPxZYfFgatiSIm8k1i+5c0G9Qud6gi/zQXA+SuouBtgDKJCwTG0DD9qIr4EGn31Z9hor/f/beA86266zP/u96+jkzZ/rM7UVX96pYslzkBhi5YNmYatMNAQKBEJKPgD+SkNjkgyQQIHxfAoQfJZhibEx3DDY27rZkWb1cSffq9jq9nLb7/v7vOudcXSkSKkj2WPM+oz27r732Pmf0W89913p34phsaG7WQS8NsYgijpzr4hUTPm56URNH2z5OUyQ6ayuYG40pQUCvFWCj18Voc8z0HOsFIVzHRhgF5t0/Uhcrd9DaaOG6616EcqmA+fl5M06p/04gTpzL8jANttzHECN0MsYp5b3wHjzbgU/x8soFXiNFb30Je6ZcjFR7KBcylByKkUsRpCBJ6vCo0MRtx0LMr1nY38xx5awPO2uZ7m6WtxPF5h76kiRAkPTingwRkgrw2bEOj1ZDURRFURRFeRwqQMqXhaH8yNxgRu/LYH4KhROxDV+AFTtwcxni34bv9NAcaSDoprj/2DLWrBTNUQezVQt7az58Okhkh8hcD722i45dw/ml85irADdeN4dzaQGPXDgPt91GmYIxOtXE4uI8Go0a62EjodjEktwgkagKa5EmyDML3U4HVxzYj5npaZw8ecKM+5GucSJAJiNc1p8Lci/DSe5NokWplcBJKUC8C5/ShrJvUnJ3lhaxayzGVCOA74rI5bA96osvkZ0cnlvE8fkMXzxtYbJk48V7HVScFop5jbI3AW9kDrnfZH18edVRX35YvDzOy0VMURRFURRFeSzaBU75sjBspMvciBBXJYscfyHNPciwmdzNuJ1ikNgoUzJmrS7edEUBe6+o4YvLIe453YIdh7iy1sVXz9l4zdwYXjo1hn1Vh9/sGI9kY3j/wxtY663hh2/ejmtffAiHSztwyp9G7nio1cs4fPiw6eK2d+8+CnkDpWIJvl+E7VCqfMk9bePUqVMUpToKBa6bOvfHAJmue5fGA/XlQ+SlL0GiUSJCrIojcRlKVRIgjgIUy5Qut4LltTba3QhhYCEKWR7lK80dJLaFhtXCy7YXWIcKHr6QYr4dwnIS2JKuuzNPEbzAC9gUMEk1PhhzZB4ffymKoiiKoihPikaAlM2BabwbC4LDH1EGacyLZGSyDx4kpXYhy7BvrIQRysnxtR7m4/67hLbXM8xWKUqWgzLlZSPN0O6lWOT6fC/AzpKHl169HfdfOIbV9R7GWE7d6aGXFtCObHieg1oxQUxZ6vZCJHnZJCdIE0qH7eAVN74C8/OLpkucVDameJmMcDKlMSR7nGyXYUGS/loiWkZ78qK5J8tLYBUc+MUGik4RebTMQ1YxMzWChpehWs7gcZLU1l5cotTE6PgW7jyV41xYwaFp4FBDbjZA6vso5leiUL8C8iZVi+fIO4Jyyhgvaa6rKIqiKIqiPDEaAVI2BcMoikhO//05A4EQM6KA5JQa1y7IiBeMRSneMOPhdTtGEW908chagtPrFqp5jitKGQ6N5XjF9ipeWrExleTcn+GDR9ewntj4vre9DlM7t+N8p4NuEFHCqwh7HbhOjlKlgH1X7kexVIbnuPBdD5VyBYsLS+i0exgdafYFg6JhO5LaWqJA/fqauss+1sHUmoIlL05F5iBNc0RZRFHKKVU5MsqTyN1K10IrKJlXA8UUNlaVwsUyMg85papRprjVu1jsBjh8OkOUVtCzNpBhCenGPKyAMman5kWy8vzk2hIJUhRFURRFUZ4cFSBlU2BER+YUA9OdSxr0A7EwXc04SYDDRIQoHhIJ+tqmi7fubKC72sbxdR8Xuh4KFJK9jQCHCi28bqqI14xVUEmB0z0fH3uoh7Wgjpvf+jpM7t2JAEWMln1U4nWcevg+wK1gI/ExPj2LqWYV5XIRjudiY2MDy8vLmJ6egkcpknq5FCQzuW4/NbaEfqg+0gXu0W5wcle8eC7jhDLEFLc4irnNhu/XEIQe2q0EEUUsCihJlJ8os5BQrkQEJwserqbouVkXD52NcaFXMLLjScQpOocsWOBxRQqRz2uZR0Uk6tS/tjCcK4qiKIqiKH1UgJRNwbDblsxNNIPLj2nEm0lW6Cmc/DSBn7dw3WQBb7liG6LlBPeejbBMMZopuxQgC1eM5bhhZwnX18twO8D9yzHed/dFnKVpvPrr34q5a1+GTtBFsywZ5EKstrqwS6Mo1xqol3yUigUUCwUjNzIOaHx8AuVKmRIk0jOIAtl9+TF1ZqWH8jGcQAGSdNWSKCEOKTtRZDLJFUo1Ck8JS6siQJSjEGaKchdhynOiDCVuODSeYLxm4fR6BY+sOIgl+pR0YGfnELWOw45ziqFjriXX79ejP/W39Z+roiiKoiiK0kcFSNn0XGrE0yckCiQjhDJKR+BmsOI2Xly38OYrKStOD/edvYATyylqpSrGZ0rY1kjw1ZMebmj6KFZtnEkifOTwAh6JKth+49cCjQlKBTA5NYVTZ86hVG2g2hg1Lz6t1+rwPJ5XLOL0mdNGdEqlMusgESnJO/1Y4RiKkCBd4/rG1s8qZ6WseG4jiylCkmHOdpFkZaxt5ObFr3HMIxOeD4nopHB4ejGKsX8sxexIgqWuiwcu5gjzIvKkCytfRNg+jjxuiXUNrkvpoQAO30skDOeKoiiKoihKHxUgZdNyuVzwl+kWJ5KR0j0Sh7+sCuB6bPR3cHUzxVuuqGLU9/G5M6s43EoQsoxtFQ8v31bBqw9UcFUjwzbHw6n1EH95ZB4PJSVM3ngTlt0GkkLVJEI4e/IRyoeFXXsOYG5uG4WnZKb5i/Pm/UCNep1SkRnBka5vEqqSOg3r+6gEyUQByRL+kVFQJJ03J+kS5zgpEpbhFGtY7QLt2EWPlU1Cl3IjyhSZY+0ow1ihiytnLARpD/ecCdCKihQwSbywCju5CCu6QCFMKT2Smrv/jiKRnmH0RwVIURRFURTlsagAKZuWYUPeTBJNoVPkuYhQ/4tbyD1kVhGJTyFJN3DQT/Gm/VNojpRxZGEe5xd7yNo5Gq6NPWPAK0ctfN3YCKVoBEfWO/ibYxdxGKPI996AdqGOsWYdwdpFSkgCv9qE4xcwNtZEndKz0dqgXFBIxlgQMWN/TCRo2P3tsV3OLtXbyrgickT5oaRkkgwhZ72sFB7Fap0CtNq1EEYWsoB3JVnnQAuSaFHiUMZi7G7Ku4LaOLWa4cKSJbrDAmPk0TzS9oMUoJ6J/ERheKkOj6nPoC4yv3wy2+TJyqpU0qz1J0VRFEVRlBcqKkDKpmXYkDcTrUeynEnz3E0BOg9FIKcqONxU4sFFZGmKXW6C79jfxJXjVRy5sIgTywGKiY1dFJBrai5e1LDwqqkR1IpVPEjxuG0pgbXzRTi50oGVBhgrAGvLS3ArTczMbsPU1CQq1aoZwzM/P4+x8TF4ngfHcQdd4R7t9iYM1438mIlyxmtL/SU6k2UhemGbdY/h+j56qUUByhFJF7hI3nkkC3KXEk0qw3ZybGtmaDQiLKyluLCYIM4TyPtaHauLcOMwjtx3Ozq9AKVKhTWgSFGGTJ3M8+Js8AxlzoVLU/8YmfNqYpVEfveXFEVRFEVRXpioAClfEbCNbhrmphGfscHOiR5kcCQSlBSQu54RiN1piJt3NrB3WxNngghn1zLkGzl21YrYP+7hlRMurqrYcIs+zmZl3L7Gwmd2ozoxCa9YQJzFWG+volgpo1ofwfTsLMq1Gk6dOY16YwSFYsl0N3PsRzPAiUw8fhqOxUmtDBmrnUoEKOVynCCXe+BfX06RWu3aaEUeehH3hwnvgdvFgrz+H+hczcH2Wo4O959cjhHmDsK4jSRqo+xFOPXQLfj8R/4KweoC6FSm3JTlyzXlqVmUsDxP+3NTJ+km16+bRKj6UbWBLA1+FEVRFEVRXqioAClfEUiAwkQyRIRcm7Jjw2MDvsQGvk1ZyG3ukP8cn2JkYyaL8PWzVeyfKuHutSU8FAYI4WCkAFxdS/FdO0t4w6QPr1LFYbuOs6O7sFiewbpVhltysbx0FAlFKHc8JLyuVy3jxPnzyFwH9ZFRuLbPq1CiPNcIkESFZC5ScXkUSKI+EaUssTOWxwomLop5GX7qsuY0HSfHeuRjLRvFRsBzI3qPBIFsnue0KHo25jwH+z1Kk5XizsUca3GZErbBsjpwggR7Jro4c8uH8Zk//120Lz5CMcvAIhDzcjGvmcvAIl5LpEc60NGC+BxlLlJknq75z2AiQcacFEVRFEVRXpCoAClfEdAn2FiXMS2yLHOZJNLCljvnJhJjOf1xOY7Lxr6HaRrAm6ZLuGHKx+nWIj6xsob5CiWo7OIlpSre2izjLTtc7Jwp4UJ5Cqf9XSg0dqBmF9BaXMfKyiqqtQquvPJKHDx4qP+OnyxDtVrlPIVLGbo8DXa/no/OLy2LX3Ay6bApRNKdTiJB0jUOrHOHEhNTdOQ9QCYbXGaCXKQfpam6FvbwPngozq55WFhjeUnbZMCLgxYaYwWUSj6OPfQQPvIXf4b5E0dQkOQL8mZV1tNEzcyfOgVNuuOxoJyTmUuESOoolzOPkluksoqiKIqiKC9QVICUrwykTc6GvMyky5ZEKkQwTAP+kmwM5+ZgyFtDm2EPN21v4OU7phB2ItxzYg3HgwxO2cLBQo6bqzFeN1ZEuTqOY94EzhXH+FdRxbjbwNkTJzEyMmLe/1OvN1iijSAI0RipmxekXnoRKiVoWIcnmqR7mYiTSE+SUnZoOQkFRWTN9Xy0WK92N0UY25xYbYpQlkoEiVXhr2IeYvekg4Jv4WK7hotrRXiggOUb6PQWeC+UspEKLMrO8pnT+OwH/xLnDt8B3wm5LeK15TlRCuWx8R4kDiQiZDTHbOOPEUmJFplHqyiKoiiK8oJFBUj5ymDQKJcZnaLfcGdrXRbNWBZpuZsGvMzZwJcucb6Mg4lQDnp4XaOEb5sdR6XVwxcWlnCHlSJueNjje7jJd3HTdB0j2yZwoj6CeHY3JhvjaFQruOfee9HrdTG3bTvK5Sp63RDFYgmFgg/LvAxVIkB90RGG0jNY6U+spdRLIkgmAiTJEChDcpznFdCLgI0OxSh1KEjG23g8T8ttnkntinvY3kgx3nCwGlRw5IIIFZXGalNWNmB7XUzPjKPXXkOBorV+jhL0N3+OY1/8DDxb0m73X5QqdclYbCpzqY8okLGdwQUvX1YURVEURXmBogKkfMXyeOmQVdN0t+Q9PSESzpNijSJURCnKcH3Dxuv2TcALgDuOL+H+IEdQ9rCrBLxuJMZNO+qoz8xhod5Eq+HDKxfQ6bYRhAGqlSpmZ7eh1WqjRAGSKyUJzYWy4EgUiJIxrMel5WHdBnNBkh9IMgQjRJQV2y2YF6G2pS6xhSixWK4NSQYXhZIsgQLDY8fcLmbKsjHB8cUMnchDlLcpMmvIozWMTxTRoOQhjlDIed+tFXz2ox/EnZ/6OyTdDbohpUv614nfyLggqctAzCQDnIwP6m/hj4aAFEVRFEV5AaMCpLxgkGa9NOClcS+D/SVJgXT5SmwbcSFB7ATYNeLg7TsncVXq4eTZdRzuRmjV5YWpCV5Z8/HK6R1wGk0cL1lwG2VUS2U6hURsgJHGKOXGxcTEBFxX/nT6InF5FjgjFMPl4Vwqx9/D/aY7HCVE5pKyLco8dMPcvAw1DPsCZLr5EZ5iEhqM8Hp7R3k8RejcRobluI6eLUKzBidoY2yiANtJpDKQ9xXFlLYkaOH2z/49bv3bDyLt8DgrgZWEj/mj79dT6sZayiTXlUvLIusqyLz/Y9YGc0VRFEVRlK9MVICUFwzmXUFsnlu5CEQRdmbDM9kEcgRs6AfSVS2OcWUhw3df3cS1VQePHDmJW05fwFKpioLn4LrxBl6yfw8m9l4Jt1xBvVbFqZOn0O32MDMzYxIsiGDUuN1kU+OPCJBMpg5iLAOGS32fEPnpL5uxQEnCciSzmwM4BYQm+kNZ4xRFlCPeC6trBCjlIUXK0o5KBPhLuLgR4Fy7jKhkw7U6cDttVKoJyjUPEcvO3QIsz+eFInhJFyfvuwOf+5u/QrC+BMdO+Fzi/h/+sMsgr2VSYctkJEg2PSpsMjd+ZNSn/4xlSVEURVEU5SsRFSDlBUO/AU9jkNY5JUiQVNMeYpQyB35aQMGxEbstVL0e3rynjjfsm8BGJ8aHT7RwbztHuQxcMVLDDTuvQ71cR6lShOVYOHX6FOUkhU+xkO5ikvxgKAGXp71+4qkvDxJlkXNMNjgjQCl3sIasWy9KKEEZIk4xJ0mCYASIx6e8vsVrb6u7rF8Ha2GI08spQs/lcR3Y3S5cJ8D41ChW222T7huux+tKJrge7F4LR+65HZ/9uw8haK3DdlkbXtvm8zJyM5AdI5BSR7muPEtW/NJ9ydzURu6Bx8mNK4qiKIqifAWiAqS8cJCGvBiGtM5lgY12s5k/VALz3iB5+47l+tzdwyRa+JrxOr5lz3aMcN8d84v4XKeHZaeAnVMzmNt1NbLIw7byOOJeB4dPPQQUMjRrVZScMhzH52RfGvMzjARdPhmx4F9ZLu/hQYo0i5FRfixutG1KFEXHYzlBAASJgyBiRU2mAhknZCGzHDgUt5Rl7SpE2MmylnIPZ3oJil2WS3FK7BWWuYxm00WYrKEXtJFnNgpelfdaQOxR7LwEZx64HZ//m79Cb23FpPCW4FjK++aV+j8iPyJBIjycuIlzyhh/EhlDJBtI/2hFURRFUZSvTFSAlBcMIhsiP33poHxIJjhL0j97/KZzh0NB4twF5cUtI3UpH2zW3zDq4p9eN4pXjrg4e+Qk7ptfwRGJ9hw6BH/7LvRyygpFZHH+AkbqNfP+Hr8gkSHqlFxrMF0uPY8RIF5alEFysGVZYiJABumqJ4ssL4gyThZCClCW8lhJBcczch7jUd9S1n2ykGMHr5uihDOrHaDdzyQX5iuIg1VMTFbgejGCsI2wG1CuHPMi18x3kSQh3S3GmWMP49OUoNbSBbh8FlESDURIRk1xQSI/8hAHy6wAZ/I+on7ihkvbpHqKoiiKoihfgagAKS8Yho3yfrczmQZywuW+iPDrzknEKEMBoVVFx7MRWzF25zF+aHcTP371HritDj5+8ixOlWw0XvUSYP9O+JUGJp06zh89jbWgC7da6I/hYdkSARpGgS6//uXLvLoRCzmGW0z3N5MEgUh8SpIiRFGClPMk4Xnczpqas2BRmrIIxXIBEyNlyAHnFwKsxx73ysER0mgDo40iXBfodjaw0VpHL+hRsChJUgRFUN6kaqcBTj90D77wsQ+iu3wGJZFCMSDZz5mkD5drGwUyJ/br4bDe4pBSmNzm4FYVRVEURVG+4lABUl4wDNvkpp0+mIyIcMGICGVAUkBLe99Lc3gJ9YF/AaHdRpqvopQEePlECW9/6W4cGK/j8OFHsMKWfuPKK1Adm4JPaTp9+gyPz1GuVlCg9Ei5l0d7jOwM7GC4/Ph1iQCJ/Mi6YDu2qZOM/4lYpziVY+WPk7/ylM6RwHHl3ARz9YIRlvkNF/Mdl8JEObJ7SJN1eHaEyYkRdDotI2dpHJtoku94JlW3vLdIssBVsi7OP3gnbvvIXyNcXTTjmWzWydSVl5S5yWA3eIp2bsPJKU8m+tOf5DhFURRFUZSvRFSAlBcOfc+QFvxgGqxzwciGNNrNnDIkY29iC2WuZnAQOz4yT1JT5zhQyPF9+0fxtv1XwFuP0AtCpAUfbq2GdpJgo9tG1fVQpKiY0nktxx68bJSI3Mg2kSLZNpyMWMicAjEUIBlXI0IU0noCEaDURpLJn+VgXBFNw3Elp4GUl2CmkmLEy7DQ9nFmvX+PYdyhnLTg+RHm5saQJD3EcYQgCBD3QtMdTu5Rol+elVH+AlQR4eyR+3DXZz6BuLXB/xHwmmbcUV8Uh13d+hn1pN6DudyvPE9zp4qiKIqiKF95qAApL2hEIoR+lIZNd5lkm0d7oTAU2MhvUAe8vIHUKXCbhRKb9zvzFG+cqOC7rzuIa+fmUG1WUZ0dQ+baaK9toFEooej7lyRHyh12aRvKjuwbdo2TuTuIGIk9DLvAmSgLxSThqTGlLMlcbpdzXFNfT/5CKUQyVsi1U4wXOhj1IqwkRZxvSXlSnLzkdAVptIrJySqvlSMMu+h1O+j1ArTbXQqR2Brr4Uo9bB4bwIlCnHjgXtz1qY8i62yY5AxpGCKTrn3y4iNxoEuhHt6TTHI9/tIIkKIoiqIoX6moACkvaIxwDOYmy5lpvFM0OI8c6WtGKYhs+AngUDRMRjQ7RoYIbkgRcix81RW78OabXoPaaA3j9QbsVkiR8BCZJAt9oZIojkjOUHrM9TjZg/3CMPnBUCpEgDKKlgyuEb2IWQeZkkzWWQ63yR+oRKskdYPjJBgrdjgFPM7B+Y1+0gQ5KkvWkYQrmJyowS9YiOIQURSh2+kiZaEhRShK5O48ZJZnBMvEcaIuHr79Fjz4+U9QtqSbWw7ecr/OUu1+1eU25VENnp9s6N8ff8kT69+v+ekznCuKoiiKomw2VICUFzRD+ZC5dOGSFn2/we6aRAj5ICmCDP6XznCWyXgmIuMiKUiGtAC1LMSBqUm87NqrsKcxhkbmApUSghJlYtBtTDLDyTUuF6ChBsjvNEuRUERke78uUgdJhpDxXElJTSEzY4D6kaB+vTjxXIv1RNZPlDBWTTA1yhJtDxfXI8SUNFaB0hIhT7qoVYqockpMqu2BQFF8Yq5HcYpIJM8pIfPKLN+j9GXwohaO3HkLjt9zNxx5zxEFzNRahIczWTXvV5INUvfB3DxbmfO5ynL/p3+/MlcURVEURdmMqAApWwbTSB801j020Qts2cty5maUggSpFZvohk0BynMPsS3bAviWRIpiHNyzG7tnZjFSqaEV9WCXS5dEQ6RHIjr9rnYiLv0fsy77JbrCY8z1BvIj0R/paiZKkcBBIF3g5FLSlY7XFCnj4XAdSohEibi57lsYr3s0HhsrvRy9xIckgsuSCGG4jlLZwuhoBe3uGqI0QZIl6PXaSMIISRRThFKkOevkFChAFDnp6pZRpDobuP1Tn8T5ow/Cdgdjk7iLC8ZoMon4iCCyEubNQTI3qbE55z65p+F9yTOUuaIoiqIoymZEBUjZMvRjF2yYm8DFYG62SXczlz+eieSIdUhjv2gV4TlVbiuiQClqVKrYce1BYKKGWrGEQtiP6AzTYQ8b/Ua0RFhk3yDqY1JySzYDTrGISRpTaCK4aUiBCRFweydzYSesSxwjoXhFTgTHY52cDhI/Zl0obomFCYoX0MOFjoXz4QiKFDkTico2WNdFzM766Iar6KQRgjyhvARIkzaysAc3YTmUIpvX912KGsuMeMvyotPw4knc+Zn/jcWLhyl0tJ+Yz4bVc2LeEwUQiMTOjARJZjqxI/OkeNviSSZwJM9uMFcURVEURdmMqAApWwajP9IwZ4PdpHmW5cFc3hFkJnPcQI5EWiT7GVfkGOmutnv/Xszu3DYQAc4oNzElR5IaFAoFc5xEhWJJQT0UIiNA5mApmcfIVpZqtkk5XLZtpJxn0iWOex1J2kZfsmzpIsf9cg4nSYxQLVCSsgAb3QirvaGApJScHrJ4A9OzI4gpV2EomeBYN95HkqQIwgCtTpvbA2SZRG8kw5xrpjSLKVop5s+cxO2f+Hu0ly9SvmxQ34zYiOhY1MRMuuvZMpdXyLqcS/44UUiWJTdn7mkwKYqiKIqibEJUgJQtg3EIaZfLgmmji5gM54PJNPT7PyZZASfZbhSAc4eism/PXviFIoXH53bA930jP+Z9OtL9rW84dJt+/7H+O3WIzM11zIpUoV+2CAbPE/lJOMlfpeNYLI8LtrxnSDbxOJnTMsbKNupuio1ehPOrARLpspdSVChFcbiG2ZkRlEsOet0eut2QwpOyXE6UHkmN3el2zZggubbnOqgUyvA8D7mToUKhWXzoCO7/9KeQBi3eHOslMmb+V9GXwYxClbLOvKSJ/MgN2UaoJEo0eH79m1QURVEURdl0SKtGUbYOfTcxEZV+5Gc4H0z8kba7yMFwWY4ZniOJCGr1GiYmxik+BXOcjP25lNaaB4kIXZ4JTgoRCTLLcg0z9a/LPWa/K8s0CpnkcjYFSCJANAs4lDDHSikd3EcZaRYzjHHqpQ4u0FGSTJIxsJgsQpKsoFpJMdooIQoDhFGCLkVJIjUuJUcuLNnhoohiFEimuNh0+/N9iQRRZOIQNZZ18u678dBdt7AeATI7RRxnrFvC/2GEcFlfuhLPY3GsvlTYJG2QiBlXzT0piqIoiqJsUlSAFOVxDOVEMO8OMsv9lr5EgNja53YHnudSdjzT5U2Ep1gsGvmR4yUSZIRHzuK6LA/nMklKbBGmnEIlSRIySU5gsg6AZTiUFSmbUkHhEdFwRTAk0QLPHXEjNH1KjAhQ20KQeNKTjmX0KDxLqNUyTI43EPR6FLMcPUmHzWWThpvVDyg/URgjZb2NuFFs5A49jyLEa0uCCCfq4ujdX8Cph+/hcQFyr8B5iDzcAOIW8iiAFfXHCfF0ExXKWdm+vskj6s8VRVEURVE2GypAivI4pO0+FCCZ95elK1r/z8VxXBR830RURF5kvM+jx4k09VNhC8Ptsme4fyhB0kVOYkCSVEDK73dj43UcG7Z0f3P6ER+6D8+VsTg2JAdbze5hvCRy5eEcfaQbslxJzS3jgCgnrtPD9u1NdDprrFuAOI3N2J+NdgspryWSJmOARMD4y9TfYd1KvCdQvAJL3k+UoLd4Ho/c/gUcvusuHD13AUGxjq7lIwAlz6XkWRIR4iTH8/yYkxE9uStzrxIL0miQoiiKoiibCxUgRXkcbMObhvzlyyIvZj6I7MiYH0+iPVyX8TMmmsPtIj/DLnCX5OdxkxwnCRXMFcQTeK4ICHcgSeSFqi48n2VTfhyvnwbbkYiRHMLjak6MhptwxcFa5KLdk+5pFCCen6UdJPEGJserPE/G66QIkxBRFqPT7ZnECJIQIQxDIz4x1+MoAh0Gbk6doXwFRV6w4MDn/vTCPNYvLuJDH/8Mfuvjd+EwGlgtVBDYngR/WP+U95ya/5NIMgbZZMZOyX+ceMdyl4qiKIqiKJsGFSBFeQwiOxJxkYa7LA/lR+RluN8yAlSuVCgrNkUiuiQ+Mg2RZfOCVOlGN+xKx/9EgC5FYPobuE/EyjLdyeSdQdK1ThIgmMzZJgLUFwxzbSdFvURJ8ctoRznFJmJZFCbuT9IAUdjG1NS46aLX7bYpPKHp5ibC0+11jfxIHUR8Qk5SsLws1eKUFXzElRISj9fhORHlp724hurEFH7vsw/iZ//iIfzV4VVcjB3YEjEy7zKS9NicBs/KZLW79Nz6z0JRFEVRFGWzoAKkKI/BWM4A+fMYRH5EQIbCYiYHvldEwS8iTnPKgIucpiKTRGokyiJSY14Qyv2QMTIiUSzT5tyWMiXyw7mTy8tUM0SphxSUJi+ivASUIMd0NYtEgiwP1YzSId3NPA+jNQde3sVGJ8NCWuR5FDE5O2MdEge1kRCNEtCNYoSUqjDIEcYpepL4QITNsZBk8mLU0LwDSF6aGrI+Rda5zLlLKbKKRUqWhfXT92N39zRedeUY/u6hE/ivHzuPn//II/jMUg/rfhUW6+1QxCTqI7OY9yeylklWOCvgs1IURVEURdk8qAApymO4XID6siPyM+zexpkRGdeRDHBc534ZCxSnmcnSBk/6qzmDMTDy7iAZlyMJD3KkIlA8RMYNiQRJYbbIBtXFkkxrmcfzKBN+zDIpQCJT/AuNTDc4F1WeTB9C4ngo+xnqSQtx7GAp9UHHoXjk8FJeM8zRHM8wPV7DeqdLAXJ4nI00kfE+FB0KUBRTfFKRoQC9bofXTvrnU9waLKNse4h4/bTAZXRQOn0v3jzaw6FaghMbCf7ydISf/svb8Wu3ncHxrACLMsgqwY55T7xveU5G/uQ+FUVRFEVRNhEqQIryGNhyv4QsX74uziKproFSqTR48anZaA7zPB++WzDpsX0uizBJtjiJtvSXZRoIlUw8T35km8wlCiRd4/wCz5WudDzQ4l+ojAGynQy5K1ElrvPYatFHseAiSixstGLIO4TMS3k4j3ob8ChjU5N10/UtCEV0YgRRzONTI0CdXte8G0iiWvJiVBE1uY8oSXhtyULXT/Bguu2RpbUNTJw/h3++o4pmdBYbsYV7Nyr49VsewU999B589GKbR1nwrRBW0pVXpLI4DwknRVEURVGUzYQKkKI8hn6Dv48sP7r+aBQoh+f7KJfLKJb6L0Atl6twbJ9CwT8qSo+M+UkpHyI3RoJ4niRG6CdHkHfmUHnMlBlBkjzWsiw/ftGDIymwbVoV/0JtupDtsWBXChcBAkZKFCDPoswAK50cqUSjRICSGHnUhp1GmJ31ea0EXR4UUXCCODECFHC90w0oRYmRLInUBEEPvV7PjAuSsUKCvOBV6i2SlLDc9umzeJHbxVdP8zJrCwhSD/OZh/99toN/+5EH8b57zmKNZdH+KD4S5WJdNQKkKIqiKMomQwVIUZ6C/mB+idD0G/NDEZIIkLwXSDKrFYtljI5OoFSscBsFxiQyEFUhAweQKItJfS3lcV3Eg4XJkniIiQJlVmYywEka7JwGkTvczSn3KCUUIDlOxueUuFzyU8QpsN61zTikLOGfc5LDSbu8WA/bthdQrpWQWB7a8uJTyk8sMkNT6oaBiQzF8i6gLEW32zEvSBXZkbkwlDZJyCCjl+ajDtZXj+Nt+xrYa22gmLRhdSlXUQ13dRv4uc8+gv/68YfwxXWgK5kb5L5EshRFURRFUTYRKkCK8hRcLj9DfM9DvVaDXyiiXK6gVq3D8yQaVDBz8RrJECdRIomkGLhRpEciPUMRkpedggJC1yAZj8ngFhwKECWJkyRBEIGSQEomXeF4nASDKk6GckHKAlY7OTp0liT15FVA9KUESa+D6bkSDr3oWgS5i9BIj0SDOEUxj+V6QCnistRDpoQy1E/00EcETlJ8e55j7qFXjLCyfgT74ot4/VwVPkXJyWuw2vJeIQcnCjX8wbEQv/ixR/DhYy20LIl8qQApiqIoirK5UAFSlKdgKED9LmsSselHR8rlEkqlIkXH5XYLY2MTqFKESqVHpUeiKfFlkiGhH1MGF4djbCRltG3SRosg9cUppxjZEv2R7byWjAWSSJAIkMtjal6Ook+5oKRshEA3pvvkXj+KlEaIej3URx3c/A1vxcS2PeglGYIkRUeiPpQfeXGpjPeRCJDj9rvmiQB1u10TqZJucCJD/W57/fTeBTuG21tGfu5BvHZnHU1Luu1RAFk1uzVvEiuct5v4zMUQv/7J+/G+e8/hrFWUx6AoiqIoirJpUAFSlKdgKD9DRAxksikqLgVBbCYIKB1hQl+RbR5FxeE5PMa2jGAIUs5QNmRZRKOfLtsy43zkBaISgHE9F5YvKbApPnKq7XHOAzyWIdekDZW4XCmLLUkXuBCtbtTP9pbklJf+OJ6NziJe/PJX4K3f+u0mw1sURmh3Ogij0GSkk+smaYxu2ENAUZP6iLCJCA0lSOZynEylsAC746Ozdg678hO4+Yo60FtgvZdQQBt56CKlBG3wedzXBf7HrY/gv33+pLl3RVEURVGUzYIKkKI8TYYiIJN0DZMucBIZEdGZmZ7Bzh27KC+SOMAx3eIKxdIgeiJjguRPTaIz/cxrIlQmIxwFRsTH5TpnMoTHjP8RsYEjK5JEwYSL5D9IvgTbkzTcGWoFqVWCVpijHVHKYosCJFITIYOITIDzZ47j1Te9Hi/76q/FRq/Xf18QL2JERySHAhaFISvRr5NMqYzb4VzCUayhETaRPR91pFHDvFwV52/DTZMt7C2vIcqWEYvkZWUgWkcYtrGKIo6mdfzFwytSSUVRFEVRlE2DCpCiPAMejQTlqFQqaIzUUCoVUKtXMTs3g0mK0LbtO1GujWBsfBYj9Qm4tBzHkvE9FBN5Oag5m8KSdxE5AVLKxSh3F+0MbctG6Eh2thCpHwCUHZuSE/v8Y819FGhGcTGESxua5rEOelhJXKyx2FpgU0YcpHYKK1lEkSJTbz+C4vgoXvZN3wN/chZdakyXotTusC4UoZyXiqK+lNm8fp5we8zrJtyRJn3hkogVrxd6Xdh+irTnYqO1gbnwFN7YdJD3HCROBcV8mcfJfVrIY9YTZVwQKVIURVEURdlEqAApylMg0iNRn74k9P9kZMxPodgXH+myJoyOjuDgoYO4+pprMDLaNNnhKpUabBnAY+VwTLprc7I53rwQVXZJZIfr9CCEEnwxA336GyVpgmWlyB3psiYixXpQcDweXOF1TcID1mUjyJHEnFKJAlGARLSiEM1yjOlGCW96wxvx3d/7T7C8voFIxgDxHEmEYCI+Mj6oR+ES6cm5HPRYVmymYZc4GZsEO2EdYsS5gyDkdVYXceP2JkaTHtDpsi4erKxIceKUUIwoWAGvoyiKoiiKspnot+YURXlSRH6Gc5mGXcXkZajmXTkUnF63a9Jiz83NGUkqFosmQiSREku6kLkuz7XNGCDZLz9SqvwButL3jQvS1SwMMySZCJAcZy5K+eGxPLj/XiAZk5PDoyCVyy5FiAKTAhuRjUQyx/EkGUck1yoUHCydfxjhyklMsD4//EP/DK969WuwtLaOHiVpvd1Dj4Ij99If1ySSJmOXKFJJbMYJyRggyVgnXf1KrIcMRUp4TLebIFxbxZzXxivGWdHlRUoUd4YenNihCLGusaSm60e8FEVRFEVRNgvSxFIU5R9gKD2PjQLlqNfrKEvGN88z20V6RBQmJyaMGIkAlStVk7hgKE+SNMEzY4JYlkRgKBg2xUYiQCJJEgGSd/vAojBxo00RkgCSGSA0mCQ7nG3xej5Fy5PeainWeg6oMpQWGCGShAcF+sj64oP4+X/7Izh+8iiajQn88I/+KLxyBS15OSoVrMvjzLuAeNLw/T+Sda7XC8zYoCgaJkKw4fM+XN9ByvpHEevS7aDaOoM37qqg0VtH2mEN4oxV5D1ZvBGL8pOFpkxFURRFUZTNggqQojxN+hIznMs7fFzUajV4lB3JrNbr9Yzg7Nq1C1dfdZXZL93kJDU1jcB0lTNxH4m4UCokMYJ0ZbOt/hgc6eLWk5TWAQ2GAkSXMdeTv1J5KSooPRKBkRwJMi6oTBkpuP0IUCcpUZ4oK6b7Wz9TXRR2MNXM8NBtn8IPvuO7ce+D9+Km13093vrN34LVbg8ZCwtTkSbWh3USyRumv5bEDqbrW8a6SX1lzrJNjzbHgp1ZSFhGvHwGL6qnuLbGHe1V2leHle1PjsWbyTQCpCiKoijK5kIFSFGegmH0R+b8bzCXSIyLkZERlCtlbgSCIECxVDLCMDIyir179xoBkpehyvmSHU66mA0RGZIxPTZlQ0RHypMxPJ1eIrmwIcnYkpS/JLGACJAj18yldxzlKUOl7KNIIbIpTt3YQyIZDSg0Yk6RnBtHKBc6OLijgnvvuAPf833vwC233YIf+7/+NWrNcVxYWUNmUaWGGeAoPoKImUR85D4Es48/GVg/qYYdwaM0RWGG1bVF1MNlfM22GvyNU7DCVeRpl1OPvpbApVApiqIoiqJsJlSAFOUpGAqPREaG0RGZcwGjzVE0R5vo9rpYXV3D0tISBcHB7Oys2VdvNFCkAMl4Ghn/I9GiMiVJUmOLNGWUBEly4HGf60qqNw8bbV7DL1J2xIr4JyrvA6LoWC5FTKI/xqFSlAr9CJAIT6ebGVnKJVKT9oUqZdme28X0KCXMc3Hk6DG8/bu+HUdPncYP/diPU5pidKMIYRCZBAjS1U3oS5okR+hvk7nprucUkNgWPITws34yhJjbekvnceP2CnZ4a8jXlpBLdIn2liQWrJT3qSiKoiiKsolQAVKUp2DY5U3G/jjSZY1zmWTb+Pi4GQskXcfa7TZarZaJlsxt34ZDBw+Z6JBX8E1kyJTD8mRcTS6Swh/JBCeZ16TrnEMpymk6a2sRxSE1Y3FEdnJKh2VkiHNOsujxl0iT7/NPmAIURvxFkbIoZXKNnH/aUsc8CzA+WjLnFIpFLFLQvucd34eNThdjk5NY22gh5TmpDB4ydYtMJEgiQLLNCJBIFSfL5T04HopOhjIvKz311uIcQbeNCaeLg+MunHYHtgwlyihzVgmZXTHlKoqiKIqibBZUgBTlKRBxGc77y/25pMKuVRtojo1wU4ILF06jvbFBmbHQbFTRqJewZ9dO8x6gaqlGKbBNBEiyudluRknhJJEkm6Ih27huUTQW112KUAwuiv3wWpKEgJdwqVYej6EUeZ6NUZcSI1mn/Ry9PEEnLxr5sXmepKDOMwdxUsBEPUXVjRF1U5OwYXFlCf/pF34FSyvywtQSgihBnHF/miPmFMo4IOmWJ93uODfpsSVDnIxjsj0Kk4eY92jzQknYQ0/2Rxt4+WwN7sY8zFggyiC6NCHpkqcoiqIoirKJUAFSlKdAur8N52ZR5v0NKBSqmJmdpgwkWFg8j1Mnj2F1ZQ0j9SrGmnVUKxXUKUmu5VNoJEV1ZuTH4pTkkmBAhMZCTJmwKSEOC764YqEHLtsuHKdIB8lhUbZy6QLn8Y/WdUD1wKjTRcNLKUUUIArTWlTnsfyTFnGS4UBRjigpY6IWYawkZbgUmcREsXJKTKvFw7ISunGKbhIiYt0y26YMyf0Z+0KaJib5QRImyOMAHoUsSnz0XIlfBSiJNNHhgrCLq5olbK9m8IJlbmDhPUpQ1JUnpSiKoiiKsmlQAVKUp+D/iACZSWSo3y1uemoK9UYdq6srlKAFJJFEbzLs2L4Tu3fvMl3kpDub7/fHw4jY8MxBuZxYjimbf40u5WRtuUfhkOP60iWH9K/d/3O1uUOiMX7BRdHjNu5LKFeSbyA3ZdJzJLMbZSdLI9QqHppNj8Uk5g8+o7FIl71et4Ne0EMYpZSa/hgnI1ssWxI2SFFyXZfLJk12LO8Mysy15d1Hcv/SZS4MQoTdLqrlAnZPNZGsr8COekDYQRqoACmKoiiKsrnot6gURXmaSHSkH5ERQRA/mZycwsT4GHxXkhJ4WFpcQpxIFzegQTFqNBqoVSsmI5wkGBCREQESs8lzzqUs8RwW6PsW1tdC9NolIz9ZGht5MmLDKZcxQVz0fAe+Z6FSFqnKEKYOgthGmjnmuvKnbeqXhpSqGKMjPuuXGHmR68q7g8I4xEanhZB1TbPBe4koOFIzETERNl6RPxkLksQPiRRo6illSFIHIQ5DpEkEN4uws1FEIViF3VujAFF+wsAcoyiKoiiKsllQAVKUZwDVx/zIUl80gGazie3btplEA71OGxsbbPyL5NgexilGu3ZthysJCzzPvCDVlgjKJRFy+xJkS+Qlh+vnWF3KsThPwWCBolHmNak2xcacwyvzOHkfkKTCLhd4rkUBSiz0UsuMzxEJiiKeKYkNKC2+k6NRteFZESRg5FhSjgO34KIT9NCJEgQRryNZ4Cg65i55HUnRnVLARHAkCUIu7wGilMmLXeUASZ4gx+e8hiRCSHstXDFRwaSXwJMucDKJBCmKoiiKomwiVIAU5Rkg6mN+D6Ig8hJR1/Gwf99e1GtVtCg/a2urJhucZH6T7m/j4000x0Z5OI+Vl6MWCiYNtsPzRH7EOwxWSrHJKVEWluf5x+kV+1nibJf+41GQKEEiMLSYHAlcESCfMuVaRmJ6UYqYB0hXOPnTliQKeZLQrRI0awVuiVCgVPkOJYzylXJ7RMFZ7wQmX0EYR5JojtKUmkQOnueIeiFNYkrOICOclCd1kvNN0oQEKc9LwwBZ0MauEQ9TPretXYAVd/rjgBRFURRFUTYRKkCK8gzoR32kC5z0WZMkZ7JsY+eOHZidmUYQ9HDuzFksLS8jGYynGZ8YQ7FYRKVSMRLhOG5/jI6kmZaucmI1Jpoi+yxYWRHnTvaQSwKEPONlKD6WyI/Yj8iHlCvvFcpRLlBUnBwppSRgmSn/pFOWl2VWP5jDyaK8NGq+eWeQRHUcUKg4l650OcvrBBGCsJ/tTQTI8zx4FDWZzPuKeL8SCTJjiiQSJFXlyfZgLJPszzNKUthBMV7HzvES3LgFO+7y+pITW1EURVEUZfOgAqQozwAjQGz8U0HMsiQkiPPYvA9o795+FEheirq4uAR5+ansL5eKmJ2bNsuCZFbzKBYmwYCZS5H9sTYW51lcxMXzMaxUREfER96C6nCiHIkr8RhuNl3bqiWPZVisQ4owiZGwUqbnWzoQIJMRzsJIo4QSZYkXh0ORsi3KC+eWa6MbJeiGIj825Yfi4zlG8CTqI84ltZZzeFnTrc7IG4sSW5J7kAhQEoesdw9lO8B0owAvD4CYE+ukKIqiKIqymVABUpRngLT7RUBkLmRGFPrd4K46dADN0QYFqIOz584ijOJ+JMX3MTE5iWJBkiC4KJbKfXmixdAxKBYiHCITfQmC7eHs6R56Gz04PF82mdDMMBIk1+e6TXkpFVg+ZUgOCU0SA8uk1pZ6iaWIDMk7fKqFHEU3RxzTiFiUCSZRyCSCI28gknf/JDxYstr5lCCXU8HzjahJFCpLJPojkxTYfw6CpOROuE/GD5ljIgpQs4ayRKV6G6xUZ3CkoiiKoijK5kAFSFGeIRL7MQLDyeWSZFYTidi+cyf27N8F181w9KGHcPLYSR7soFAuU2R8jI1Pc1+Bx1IwnCIFpIg0tSglHuysiIIkQqAM2ZUWTp1OsL5e4ukJUkcys0nyhDFkdoXnpYhFPFBE3U9RtCkesYvVzOu/yydPeY2UYuKibZV4jQzT/lmM+RbaURWJ14VnteFLVzmnwjLL2Oiuoi0vT7UoPpSuokhQwYdFCbKkq1sWm6iQJ+uDH5fbJaGCOFHMc4OI1+xl2FatY0pe2BouAMmaeWaKoiiKoiibBRUgRXkGSOTDpIGWSbRHojFclihIpdLA9ddfj1KphIX5eRx9+Ah6vYgC4WHnrn1ojDapJTKehkIjkR3LNhGeLKdGZVznPsHzUqysprhwLuqPA+L5sAr8ay1J2AZ0FAkSmVTYZd82EpazjC4lJGUNc1ZNur/JOKCEQpXQUOosc2JEXqoqV0kpLjJZlDdPOt6hw3p2KTApqyCRIZE6uSeTLc7jMaxzmlC84ti8+yeJ+9GgfkRIssXxXB4j+wtc3z42CjsNaUYaAVIURVEUZXOhAqQoz4C+orDJL13faBoiP5IEQdJDO7aDgwcPYteuXXIAjh45guOPnECVYiQiEcUppmdm4BU8SlKB8kNZMYNsbEqQjNnpj/ORJARBD7h4nldzeW5W5OYqxYbWI57EyaXQFPwMlaJEaxxkLCOIEqkZ6yLyw4lCYiSF8zy1MVJl+XkLtkSZHJYll6bs2I5EoYAgjE0XO4laJWl/TBCLMwIl7yHib4Qh5cd0h5PudvIMHhVAmXph10SLGpRAO5U3sw5T3CmKoiiKomwOVIAU5Rlg4j4UDPNiUhN5kd8WXMenFORoNifxkpfcgGq1grNnT+FhStDiwhJWVlbNC1PL5aoRCluSDRR5Dv8CJcJjokCcjFCxaMmwdvK4Ayup8FoVbqvRS4qSjQC2z3OkW5wVoMZNtXKhnwUuSZGJwEjNJNIjEysoyRg8Xmi84cF3IzM2SP70LYqPSI2M98ltC2utrokgub5nxgLJy1DNJC88FVETqZKyKGiSznsoQHKsZLNLkhhpHlOwUkxUiijnFDLJBKcoiqIoirKJUAFSlGeBKIRxINEfziXCI5MIwlVXXYVDh66k6IR4+KEHMT+/gEq5glq1RtmgvdjSjY0C4Timy1nMX1nuiIqwXC6nkpggw7kzFJSkzj/SEvK0xGML3Oqbc6gesPIIFS9F0aeZsNyIR5oU2LKfUyblygpxKFeTIw6P5baEFZaIkxkrxHIceT+Rh1Y3QESRcShfkgBBusF5lJuCXzCik6TUI3Ov5sYH3d76kyReiCULXRrCTiNMlosYoWA5SWiOVRRFURRF2SyoACnKM2TQ/jci0JcB/hlJdzHRF/pGvT6Cl738BmzfPotTp0/izjtuowRdQBRH3NdAozFKObJQKNbgeEUjQIlEgPBoamxJbX3qWIRe24ftVbivDNsdpTuNmOtJBMa1JbtbjFIxlYFDiLld0mCL81icTPRHbEkIUzTKCZp1LicSSKKIWTyPZWQSqaH0dIIEIQXI5vXNy1opPxLdESGSLno2hc0RaaPwDLvBySTrkjJbIlvyvqA8DlClPI24fCaaBU5RFEVRlE2GCpCiPENEcoZzGQckXeBkRdb7iQBC7N+3D6969StRLLl48MH7cfLkcfOiUZGTfnc5SoxX4v46MgpGmkv0SKJALIoy5RfKWLwYYXE5gUVJyjMPjowHspsUlxrnBf7x5ih6ERoVnkRRCeIEEYVHxvSIl4lMyfgfidy4cFArxpiZZPkxWEd56arNcngg/y9gU4hCntsNIiM6/a5v8k4gl+tyXP9/FdKdToRHkPL70Z9+pCnjsnlhajQQoIKHPGibYxVFURRFUTYLKkCK8gyR9/UM55IMwQSBOLe5IBETEQObAvCyl92AV77iZQiDDhaXFswLUpMkRaFUwejoBHpBiijJ4RULLEAiK9JtTbqRJZQOD2Ho48KFFRMZku5xQLmfFMGp87olHuyg6GaoSHIDx0VIwTJiM5AV5DaSjIKScTeFS45tNguoVuoymIfSlfAm+sLkedLNzUar3Wb9KUCUn2LRh+9TnUSAJLrEuksmOLk/I1cDGTLiY66TImGZOQXQzRLUKUBIon5dFEVRFEVRNgkqQIryjBHjGczFfiT0w7mMpxHxsWyRGYpJqYGbb34LDhy4EqdOHMPDDz6ATmsdlXKRp9BKeLzl+pxKSOwcvSxCnHpwnbLpwtbrhrhwjn+i1jRySVhgSfe0aV5qJxzPR1qmKJUoNUURMom+cJtUjWUldKLIzuCyHmluIaScFJwUY6XUJEMoFGoIY5bHU10ZeySuwvtZ3ehQsFzz7iKJBEnJJhkcyxKvMt3ieK/SBU5SXosIca95BOYxUKJinpWwPrUCy0lVgBRFURRF2VyoACnKM+ZyAeqnwBYRkLlBRMDyKQkWpqbm8Pa3vR1jI6OIgy6yuAdQdCzJt0apMGN07CJSL0cg4mA1kKdFuJkD149w9IGYZjKFlDISpyHyZIKuc4CiUURSZhmlHDuqLi8YIow8SpRNOcoRU2hCJwN9B/KOodBzYEUJ5iop7PAistzjtW1YFBmHy5nN7ZQqyQRHrQLdyESUJMpjO3JDCesVIZNEB5HMuU6pyk2SBdvch0SIaFrIJCEDz6n6LqqSCltRFEVRFGUToQKkKM+YgejI/DL5GXYNk0m6wskURyGuvvpqvP3bvs28ILXT6aAaOuMbAAD/9ElEQVTX7cGjJJTLFfi+Z6Imlu2bhAiAhzihfVCgXHrNmdOryAIPjlVnuRXkdgMozvF6E+Z9Pl5mYWakAulF16OArAUpqCxw6WZUnr6MmWCTyfeGkVqFLtND2N1ArVaD7bKOSUihka5wNoJeYMb5DO7OJD2Q+5BxPtLNbSh5JjmCRIikXE79hAgUL4pRl/coXfk8lleSbnCKoiiKoiibCBUgRXnGXB4BelR6HpUf2S9C1JeEKIrw+te/Ad/4jd+IIAiwsrKCMAzM+3QKBUoPj3esAo+tIs39fkY4h+uUpAvnW1i4EMCx68itIqzCGHJvFnlhN6/QhB0lGPFClL0AIctZB02IUuWIAIn8yDRITiAvXq2VXMyOFxB1V1EpV9FsNilffYmxWNcu6xWyvuVqhXXzL4mcmSTaRdGR7m8m8xvLdlxJ/y33PXgiNoVJVri/WHBQ0P/DKIqiKIqyydDmiaL8IxlGRYbRkP56X4KG8iDS8Ja3fD3e/va3G/ERKZIXh4pQSNKB3PIoIGWklg+4FJTURqE8juWVEEcfnoftVhDEMeLcRmqPUIC2IXfH4DvAdC3B9IiNkH/Oi5GL0HJNBEjG9wg2MmTShY3XqrjAtgkfRTvF0sI8XBYwMkLxilNen2WwTusb62bZZT0dCUMRl2IjL0SVbHCP3qPkUuhHf2IKTyJZ6EJeh7tcGljQ3sBVB/aa4xRFURRFUTYLKkCK8o9EIiDDuUwmNTYlQDaLHPT3mRm+9Vvfhne843v6kSEKjUhQmiYUCw9JRpuh/Fh+ATEc7itSKIp46KF5FlCmOOVI5W0/fgO5Pw3LG+N2ChDlZ7puIXZczAcOwsyFx79sE4gyGQxgMr6JtLhpSAFyUTYJ2lJcXLxIucpRLFYoMZl5V1EQhv374Omu75nIjymK20SCzDuIOEmkS+ou0SCTAY/3lPHAMOD5EiGKQlx/1QG5bUVRFEVRlE2DCpCiPMeI7PRTZT/aJU6iQBIRkuxv3/RN34wf/dEfRblU5iE5fF/G4VCCnAJSy0Xq2MhsB0FsIYgKeOTYEuhJLI0ylQYsh5LkTADeJI8rwnczzFS52Xax2LUQ5pQWrrIYWBQW+hiP527WwctjTNQSTMr7VFOgF3axtrbMMgrwfB891qPV60oHPlN3k5Kb8wL3CcPoT0hJCig6YknyriERPdlu80KynlKkfDvHyvwFc56iKIqiKMpmQQVIUZ4XHpsYYdgVTiI/kj76677uTfipn/wpbNs2gzDqoVwp0188ygqlg5KU015sSkmlOoEHHlrEwoUuCjYlBTLGpgzLnoRb3AarNIUiRWpupMhLelihH4WpxetIAgP+eXvSpU5SaNNVJFJDoakWEmyfrZrojdSp2+kiDhKMT03y8AJW19bgFnglrx/pMd3geC/yDiDpyifyI8i9SMKEjPWVKJCk/paAl3n5ahKhXHBx6pEj5lhFURRFUZTNggqQojznSPSnLz9D6A+XkO1RFOAVr3wV/tN/+s+4+eY3otvryQ6Kh49U3hHEv8zcsuEXaphfiPHA4fMUjjrSXggr4qFZDZY7A/iUlkIFc82q6YLWjjKstXsmCYKRLteEfiR2ZK4rXeOKToyZyREKiocwiMx4n27QQy8IUCr52GhtGEmTzG+O4/Yz1bEuw0iWYzsm4pPIMSJAg+iPSZBguvNR+ni/Ls8Juq3+TSuKoiiKomwSVIAU5TlmGPXpL9ucKCGmS5lIhCxTSDKRoAjbtu3EO9/5b/HOn/wpjI02kEYhioUSxaWImMemBRdpNorbPi/v7qkh9RaQe+dYxBiQvZT79yPzUlw5XsTUaI52muJ0LO8F8rg9YhkBcpdS5XhIXBviQ6Usx85GgJ0jIQpxTpEpopOnWNtYQXN0HJFVQK+dI5CXmhoRkj50PqXKN5Il6bIFkR7pujcUIJEf8PpxEpkolmyXNN2KoiiKoiibCRUgRXmO6SdB6Df8h8siRMPkCMPucDKJYNi2h2/8pm/Br/y3X8bNN78JrutRegDHK8DxfTTq47j7zhNYXepym4U4W2LJKZVqEpk1y2NL2D5WwdxEibLjYT6i/LglOAUpoz8WSJIXSFhGEiO4yDBeBXZP+ShJJeVlpvLi1ChAq9WG7RV5KMWLlZXxP8OubbwL1r8vNoLp4sf5UPiM9PE/kwiBYpSyXDMUSlEURVEUZROhAqQozzGSAKGfBOGJlmV8jmNSYctcokLiE2HQw86du/DO//un8e53vxvXX3+9kaWNjQ0KT4Dz55fw4ANL8L0JxEmHha0h9zOWMQsH21ArFzHRKCKidJxvpWhltklxXSr6kJxyXhbBSlmgiIyVwrUT7JqtYrJpwc57yOKuER0RoPW1NcpLCp/yJYkRRIJkPJEIm4HFyJifYeRH5lEkGe1S1lUuIckTciTcJ6mxFUVRFEVRNhMqQIrynGPiIv3FwbKIgsxFFoYRFJmLEGUUB9tykUQJMorFq1/zWvzCL/xX/MzP/AxuvPFG1Oplnl/CrZ89jjzhstVF7qwZebK9vSj4V1CAfFy5YxxeqYTTHQtLkWMiOHkaouSmKNgZPAqYRIAKHlC0Q0yPutg5VeK53GhLgoMYQRDj7Nl5M76nxLIE6fLmOP1sdjL+x0R6iIwREmRNXrQqY4BEhALeRy5d/Vg/HmyOURRFURRF2SyoACnKl4ChNMhcIinSnWw49zwfrifZ1jwuF00GNZGPr3vT11OC/j1e+/rXYrQ5jVOPbFCSXPjFjBLUZmEuLGcGlj+DcrmMHRNl+KUiFmIP7UyOK6BQ9FEq2Ci6FnxOHuXH82yUvBR1L8JIIUO97Jhoj3TRkwxucZzCL/goFAom8iPyI13oJGIlY4DEeGTZGXTjk5ejSrIE2UflMl3fuMLybHNviqIoiqIomwkriqL+P+N+iVlaWsLMzMxgTVEURVEURVEU5flHI0CKoiiKoiiKomwZVIAURVEURVEURdkyqAApiqIoiqIoirJlUAFSFEVRFEVRFGXLoAKkKIqiKIqiKMqWQQVIURRFURRFUZQtgwqQoiiKoiiKoihbBhUgRVEURVEURVG2DCpAiqIoiqIoiqJsGVSAFEVRFEVRFEXZMqgAKYqiKIqiKIqyZVABUhRFURRFURRly6ACpCiKoiiKoijKlkEFSFEURVEURVGULYMKkKIoiqIoiqIoWwYVIEVRFEVRFEVRtgwqQIqiKIqiKIqibBlUgBRFURRFURRF2TKoACmKoiiKoiiKsmVQAVIURVEURVEUZcugAqQoiqIoiqIoypZBBUhRFEVRFEVRlC2DCpCiKIqiKIqiKFsGFSBFURRFURRFUbYMKkCKoiiKoiiKomwZVIAURVEURVEURdkyqAApiqIoiqIoirJlUAFSFEVRFEVRFGXL8GUVoDzPB0uKoiiKoiiKoijPP182AXJdF0mSDNYURVEURVEURVGef75sAuT7PsIwHKwpiqIoiqIoiqI8/3zZBKhQKKDVaiGO48EWRVEURVEURVGU55cvmwA5joNarYbV1VWVIEVRFEVRFEVRviRYURR9WTMRSDc4iQSJDElUSMYGWZY12KsoiqIoiqIoivLc8WUXICFNUyNCrIsmRlAURVEURVEU5XljUwiQoiiKoiiKoijKl4Iv63uAFEVRFEVRFEVRvpSoACmKoiiKoiiKsmVQAVIURVEURVEUZcugAqQoiqIoiqIoypZBs8ApiqIoiqIoirJl0PcAKYqiKIqiKIqyZfiyCpDIT7fbxejoKDzPG2xVFEVRFEVRFEV5fviyjQGSbm8S+VH5URRFURRFURTlS8WXTYAk+iPd3lR+FEVRFEVRFEX5UvFlEyBJeCBjfhRFURRFURRFUb5UfNkESLK9ScIDRVEURVEURVGULxVf1vcAabY3RVEURVEURVG+lHxZBUhRFEVRFEVRFOVLiQqQoiiKoiiKoihbBhUgRVEURVEURVG2DCpAiqIoiqIoiqJsGawoivLB8peUpaUlzMzMDNaemoWFBfPy1GeC4ziYnJwcrCmKoiiKoiiKstX5ihGgCxcuPKPjhWdzjqIoiqIoiqIoL1y0C5yiKIqiKIqiKFsGFSBFURRFURRFUbYMKkCKoiiKoiiKomwZVIAURVEURVEURdkyqAApiqIoiqIoirJlUAFSFEVRFEVRFGXLoAKkKIqiKIqiKMqWQQVIURRFURRFUZQtgwqQoiiKoiiKoihbBhUgRVEURVEURVG2DCpAiqIoiqIoiqJsGawoivLB8peUpaUlzMzMDNaemoWFBaRpOlh7ejiOg8nJycGaoiiKoiiKoihbna8YAVIURVEURVEURfnHol3gFEVRFEVRFEXZMqgAKYqiKIqiKIqyZVABUhRFURRFURRly6ACpCiKoiiKoijKlkEFSFEURVEURVGULYMKkKIoiqIoiqIoWwYVIEVRFEVRFEVRtgwqQIqiKIqiKIqibBlUgBRFURRFURRF2TKoACmKoiiKoiiKsmVQAVIURVEURVEUZcugAqQoiqIoiqIoypZBBUhRFEVRFEVRlC2DCpCiKIqiKIqiKFsGFSBFURRFURRFUbYMKkCKoiiKoiiKomwZVIAURVEURVEURdkyqAApiqIoiqIoirJlUAFSFEVRFEVRFGXLoAKkKIqiKIqiKMqWQQVIURRFURRFUZQtgwqQoiiKoiiKoihbBiuKonyw/CVlaWkJMzMzg7XNy549ewZLj+VXfuVXzPwnfuInzHzIjh078NGPfhSvf/3r4bouPvaxj5ntt956K77zO78T/+pf/Suz781vfrPZ/ng+9KEP4eDBg4M1RVEURVEURVGeS1SAnoJz586Z+Tvf+U6cPn0a73vf+8x6s9nERz7yESNAn/nMZ8w2wXEcTE9PXxKed7/73XjHO96B173udWa/CFEcx1hYWDDr3/7t326k6Rd/8RfN+uTkJH77t3/bPJtv/MZvNNsURVEURVEURXlu0C5wT8Hc3JyZisWikZvheqlUGhzx6DEyifwIN954I9761rcasfm5n/s5HD9+3MwFz/MuHS9lStnDddn3nve8B3/yJ39ijlUURVEURVEU5blDBeg54Ed+5EcuTR/84AcHW4Gf/dmfNYLzu7/7u0aGRIqeDhI9eu973ztYUxRFURRFURTluUIFSFEURVEURVGULYMK0HPAb/zGb1yavv7rv36wFXjXu96FNE3x/d///fjrv/5rE9l5OvzSL/0S/uiP/miwpiiKoiiKoijKc4UK0HOAJEoYThcvXjTbRHZEeiR5ws/8zM+YbHI//dM/bRIgPBUf/vCHTYIFRVEURVEURVGeW1SAngNe85rXXJokq5tIjsjOVVddZTLACf/tv/03k0VumD77H0Iyxf3+7//+YE1RFEVRFEVRlOcKTYOtKIqiKIqiKMqWQSNAiqIoiqIoiqJsGVSAFEVRFEVRFEXZMqgAKYqiKIqiKIqyZVABUhRFURRFURRly6ACpCiKoiiKoijKlkEFSFEURVEURVGULYMKkKIoiqIoiqIoWwYVoGeJvOx0ZWVlsKZsFi5evDhYen74SvjMpY7y/VQURVEURVH+T1SAnoJf+IVfwFVXXYWXvvSll6YPf/jDuOWWW/D6179+cNSz4wd+4Adw7bXXmjLlGt/xHd/xtBqu73//+wdL/zjk+g8++OBg7Znzt3/7t1hfXx+sPZY9e/Y85pl967d+q9n+l3/5l+a6z5b777/fTE/GG9/4RvPZPBukXlK/J+I3fuM3zGck5ctcvhdPhTzbJ7vXZ/oc/sW/+BePqZvU5yUveclgrY+sy+ch5f7hH/7hYKuiKIqiKIpyOSpAT4N3vOMd+OIXv3hp+rqv+zp81Vd9Fe64447BEc+e//gf/6Mp84EHHjAN65/7uZ8b7Hly/s2/+TeDpS8vIgHnz58frP2fXP7M/vRP/3Sw9R/Hhz70ITM9Gffccw9e8YpXDNaeGz7wgQ/gz/7sz3D77bebe7n77rtx55134o/+6I8GRzz/3HTTTfjkJz85WINZDoLgksDKfGZmBo1GA3/xF3+Bf/JP/onZriiKoiiKojwWFaBniTQ4v+ZrvsYsD/81/8UvfjF+8id/0mx717veZdZletvb3va0Ijs333wzzp49a5aPHz+OV77ylSZ6IlGij3zkI2b7MJIi2yUSJfzUT/3UpUjSW97ylkvXkvr983/+z832o0eP4r777sPLX/5ys/4N3/ANSJLEHCf8Q2X88i//stkugjaMQsh9njt3Dt/1Xd+FX//1XzfbninLy8vmWlK2XFuiGkN+//d/3zw72ffVX/3V5li5X9ku0/A5PP4eZX0oBU9UhiDPcnivsl+eyz/Eb/7mb+K///f/jlKpZNY9z8O73/1utNtts375c5XyLo/UyDOWZy375JgnutaTfdaX89rXvvaScMtn89BDD+F7vud7LkmRzF/96leb5csjWY9/Pk/nWoqiKIqiKC9kVICeBtKglm5nMkm3ryfi2LFj+MIXvoBf+qVfMo3KkydPmiiBTFdccQV++7d/e3DkEyON2t/7vd/Dtm3bzLo0WqXhLRGHT3ziE3jnO99ptg8jKbJdIlEXLlzA9u3bce+995ptu3fvfkyjVhrAsn3//v2mDKmHrP/u7/4uPv/5z5tjnqqMHTt2mO1y7yJDgtzn3NyciYL86I/+qNn2eIbPTKYn6rYmEvG93/u9pmxp3L/nPe8xEaXTp08bqfrc5z5n9v3QD/0Q/tf/+l/mfiUaJ9PlEaXL73HIk5UhSF3kmcr2//yf/zN+7dd+zWx/MkQaDh48OFjrI+s//MM/bJbluQ2fq4jH//gf/8NsF+QZy7OWfXLM8HO8nCf7rC9HIjuO45jnI89KuruJ1ElUSpC5rD8Rlz+fp3MtRVEURVGUFzIqQM8Re/fuNZEB4dOf/rTpjjRs/Kdpeqmh+nj+w3/4D+Zf4w8dOoQ8z/EzP/MzZhzH4uIiDh8+bM7/2Mc+ZsoeRjYuR67z3d/93eY4icpI4/jyyM7VV19t5lKmRCyuueYasz42NmaiFcLTLUNESKI+zxUyVifLMnPdP//zP8fo6Chuu+02E82QyNAw4iJRpmFk7YkY1u9y/qEyRNjuuusu04Xvt37rt55WdO4f4u1vf7t5thIlks/z8mcnz1ietSDPXo67fNzUM/msX/WqV5n9n/rUp4zs3HjjjabrpCDfL1l/Ii7/DjzdaymKoiiKorxQUQF6Gsi/9n/bt32bmd70pjcNtj59rr/++icd8D4cA/QTP/ET6Ha7lyTq8UgXtdnZ2cHao4hsSTKGTqdjIhLSje6Z8lyU8UQMn5lMTyQpj+f7vu/7LknZ84l0FfvMZz5jxnE9nQiIJHR4vCTIukRShO/8zu800Sv5nvzKr/yK2faP4ck+axkHJBHFz372s3jd615ntkm3xN/5nd/BlVdeadafKU92LUVRFEVRlBcqKkDPA9Kwlm5lw8b/yMgIoiga7H1ifvAHf9D8a/6tt95qujtNTEyYqJCc/83f/M2mS91Qjsrl8qWohZzzTd/0Tfj+7/9+08VJIhtPhJQp5wzHoMh4GGlMC0+3jMdTq9UeE+14pkiyAtu2Lz2n+fl5c4/SZUuiE8N7lG52P/uzP2uW6/X604rYPFkZ0oVMnp8sy/WfavyPIFIoWdh6vZ5ZlzKl+161WjXrIkMS/REpkejK5cgzHo49kmvJufJZDHmqz/pyXvOa15jvR6vVuiQtEgmSKJbc71PxTK6lKIqiKIryQkUF6HlAUiVPTk5eGmgv3aKGXc+eDGmESiP753/+5836L/7iLxopkvNvuOEGuK5rGu6CdLmSbRK5keUPfvCDeOtb32qOHTbKnwhpKH/7t3+7OU7G3shgeOGZlHE5UpZ0LRuOrXk8UtZwGiYtuByRCBkvI/vlWT388MOmO550tZMGutyj7JMIx4/92I+Zc9785jebukqXvX+IJytDxEGiJnLv8jlJ9O2pkCQW3/It32LG3UhZUqZEquTeBcm4Jtvk+f3xH/+x2TZEriPPWs6T5yWfweP5hz7ry5HvyM6dO01XuCEiXQsLC09LgISney1FURRFUZQXKlYURflg+UvK0tKSaey+kJF/7Zd/rW82m4Mtzxx5qaVEWp7qX+nlBaAy1uTp/Gu+HDs9PT1Ye5RnUsZzycbGhrnmcLzOkOfi+T1ZGXJNQSJKzwT5PJ6oPhIdkunJ6vpkz/xynu5n/VzwpbyWoiiKoijKZkIFSFEURVEURVGULYN2gVMURVEURVEUZcugAqQoiqIoiqIoypZBBUhRFEVRFEVRlC2DjgFSnhr5hliXzQeYLw5/WdyWc55bGY3a5qaMPym3pdwnJ1j9Yzm3pYD80ULsLDNl5DxODs2o5CnXeSYyWTfnWvCQmCUpR64iDPcJMpelktkrx8kaa8JCHJv7Mp4pBcq15Xou5/yPtTQlZ5w73GdZOVye6fBYOcWWS9mDc5/nfy6QF+HKXUiNwGcnF7Qsh3OpM+vAGfL+87VY84z7IovH8FgbPdbbQ574UpR5lgnvO7M75t6drAJHipEi5CpSHO9HijXHc+InYfbLivnYiNkv0+O3caM8jv4i68PPXshSh+XKwdzDusqTtZzn+cEpiqIoiqI8A1SAlKfm8d8QWWcb18xkzgUjL7JluG/QKLZEOGg0oj5mHxvHKaeIKyIeBe72Hj2tj6zLimwUuGzJRVhmv2xpUA+OlgOlsT1YHqqWaZ1zlzTL+01zOUzOYcOdlR201y8dI0UOBaR/qlyvv18kzuwbGsDzhlxTLkj5GQgQVcw8375Q9K/fnw3WMxHNgJIRm7rnmWR1K/KZ81y6U27FPFIEiSvD5yQ3Zcrsr/V1sX+P/Y2c5BkNLiHzTJ697OF2O2edzIocIJ+61FWeD69pe3yeNo/nc+ZukS4jRIqiKIqiKJsEFSDl6SHtX2mPG1vgZNq0bDpfkoL+Rmn4iuTYbBMPG9BySr+JbHZJU9xEV2QyK4acixYcbszlJO4zkjJolOduvyxBZOiSlMhus5HT4ACzqW8x5tryKlSzi8dLfV2e5CWyUy7C7cREQ6QwThLbkAiW3BprNLht2SpLzz1DuTICYuopE58YH5ZIW2YiKeauTP1TSkdm23BTqkbCO7QpmvLAaRuiMkDB3LcsySTLw3W5A1M8pydCjnk8w21Shrz2VhTr0sdGsizqP0o+xH7ZgytxJs/df8JSFUVRFEVRvjyoAClPzeXfkOGyNG4va1XLsomiSEuYc0cEiNsytpRDifgMzvN4fJHbpb0uViRik0qowJwmmiEFSicv2SYy1JcDh+WYbnKmlH4nt34l5HBZ6+/rCxGXWQepHtWgXxaR36ISogkud5r68VxbDua2TCJWUhcWIg19wREB4nXNbXH+fNKXrH5980wiaHJX8gykSry26Y9nmbrJ4xNhlOcZc2W5CwRcXg27WFxvo9MJEXdc9NZtrHcjtCkpnXbbvKtInpZ8TkkyvEt5Mv3nIndoi8DaLJ0rnuuhUCiY9wUVi0X4hSIKTgTPDjA1Porp6QrGG2WMl23IW5ykhsgSlp8itVzErHPpeX5uiqIoiqIozwQVIOWpoSiI3IgwSGPctJKJNKSNHEgDmv/JMJnhTmlMS2NYJETG9Ej7vd/Ali5U/VE8cr6UabpOmXEiUrhMErNJeS6nnI1pHu+ydW8lLIHXM12q5HiX9uRKLGIYj+hfVcqFjC3ieh+ZmwrwetzH82WvYMsNyYoYHPfndn8MkfQgk02OJSIg3dBY1+epIf+YCJBBKiT14bpsYp3luWVy7/zJ+bzkmXYpMCcvLuPuB5cx365hLSlgvreG5fYiFvj3FXRsdFcsdLoZIppSmsiIJ3lkDnzfh+vJaCe57f6zkTFENqcsTY0cJZwLshwEgamfnFcqxCiXYow16xipFLBjsoG90yVsb7p40Z5ZbB/lMcV+2aJY/SVFURRFUZTNgQqQ8pRIu/xS0/+yb4tpsIsUUBYyE7EYioUMuqdGyNgflw127stzSo0ZECKzYWk8P+gCGy301jfQXV5FeP4CksUV2K0OklYLabuDLIwRi11RdmJeM+Pcr1dQGWvCKRdg12soTYzDHxlBYXQcHucol3khr195XjSTqIRclzIjahVRoLI8hU+ZkG53Dm3HiJUcz/uR8UumK54IEAWrn3hAJO2553IB6ktQCtumhCWUMdthPakorKPRID7DJI3hex7Wel08xGf1xXuX8Znb25gPKjiz3kI75zO1eEyhiLJXR7lSg1t24Dguy7PNtURqzLU42XwWsk9c0rZ4be6X42RKBzIkc5GglMtRkKO7EfGZpvwsMz6/GHU+6mYxwWQ5wxUzDRzYOY6r9lSxc2YU9Wqtf6OKoiiKoiibABUg5WkhbeVL2iLfGHEDNskf8+XhSkzRcNhwFm0wUiSdtShBfXlIgHYPyYUFJMdOY/X4GUSPHEf31BmsLS9zd4yo24HHowssw8w9F0XXhSXjYCgrIkCRdFMT8SmXKDKsSNGDVyohk35ylQacxij80RGMzM3B37kdhZlJOKN1HicZ0hLEbMRLygDYLJdbJJgktZNokE3ZMPck90fpygddwcxGs/DcI89JZCMTyZGwEy8mkhInXKeVSBa7kI+uIN0FY9acxy2cO4mRiRqc2hiWIh//5f/9KP72M2cwtfdqRL6N8lgVaR5RbqTiDqUlRhhE4N87Barf9S1LM6SUGPl0PN/nM3CQRCyfdalWq5QiEaAMrtSBgiRIV7iCRNBYjyhzEKYUXUqibeWU2EXUfX7+0QayoIVX70zxT7/pOuzbf5U5V1EURVEUZTOgArSVMZ+8adnzt8QXuDZs7D8O0/WMgtDv5tZHemhJQ126aA3PsyTaw0Z16MbwKRiOxIRW1xEeP4v1ex/E6j0PYO2Rk2hJpKfVwQilpeQ5KBQLqNQqcP1+d7NUIjD9IvkrQzHM4KQylihFNw4RstyQx+WUo0QG/9NgCsUyrNRFuVKHW6Ecyb5qCfbECLxts2gc2IvxfbthjzcpZQXkbNxnIgO+h8RIiMgGRUtuUgokJjJjuqJxmxmT06+TzP8P5FmwTo8Xpf6zZTmyb4BZN0tSdv8cOU4WWRUkUg9Woc0jDh/fwBdvP4Lx0RLe8OqrMFECjj9wPz7+qb/Ft3/fD8IpjWClm+O33/tF3HL3RZQmtqHL8kJqXitap/ywkLgM1/EoRBY9M6bUyLJtoj3m2qZuUn+pE2VQrJBI5EcETbZLJjiXIlT1uS3tope5lM4qJchCsVzGZLOGrL2I9vJZvPqGPfhnX7cbu0coR3yuiqIoiqIomwUVIOUpGXZrkwH6EjuQkSHSPJZIBNvpRoSMBIn88BiHQoNeC+m5M7hwx70487nbsXrnfcgvLsOLQow1aqg3KhSeKmyJDg0a4kkSs2GdI4ojI1FyFYlASCNcIgymwU5hsl05nnM2xqWbmkQs5MphL+RlOyyDAiYNdzb4q81R2NUapzIyvwCvOYLR3bvhX/ciNA4dAChKeRIgZT0y2+PNsFxe2QROZLJZvviMLA/84LLVx/HEW58KifxI4gETAZL7pri1OHv47BI+fvtZPHhqnffi4pHD9+LanU387L98G2YqNj7wvg/g/lNL+Kl3/gi6SYbFLvBHf/4FfOaOC4jdUaTFCgI3QbFYhW9VTJTJCCurKVGgmCIkGMnhlOaxkT15niJE5lgidZPIj4hQHCdwqVaS6MDxaxRVB1EYweIzTFbPYaqc4Aff9lrc/OpZlHluEmSolfoypSiKoiiKshlQAdrKmE++32jvN3j7a6IegpGcS98OaQyzgc4Z2+n9iI/ZSjlhw1i6uJlubu0uzt9zL1b+7lNY+/xtuHD2LIo8YXp0hNMoarUSRSdAN+ig2+sg2OjAkrFCLFCysZnsZyxflk0CAp4rg/HDChvaYiVcdyhB8uNxLte0cxsF30exUEBiS8Oc614RQTvA+loLG60ubM9FuU75GRuDTfG6OEr52j6N6UMHMf2qlwEUMom6pBkFTiJXkl6adcrpcpcLkNRN7r0/l1+yvf8wTLToMnEYMtwm3dv678wZPCsxSznUknf5UIBkj+3gQjvCn37sMO47toCuVcNaYOPww0exsXAGbvc8/tX3vgX/+vvfCCtM8LO//B40t83h277zjYj4nOZXMvz6ez6L870G7NFphBSVJI3kgVIQe+h0Ov2p16XQUGclCsYLpyJHvHbOMsw7nEy3Q4oZPweX8iPy5HGbZISTsVISqRMpslMbNc9GPV/DSLaA73zDtXjrKw8g63bAg1l3YKyiaRAURVEURdk8qABtYcxwE6svLzIeRJrgiWuhZ7bnKHG7K+11tpOlO5aktJY+cJLCWtJXJ5LYwM3giQgsLGHllttx7IMfxtk77kGDbe6GX0C1WkO54JtoQxh0EUcRp8A4Q7FUoqh4lJcCfM83jWwRAMlS5rCxLeNd5Mspqapzx4JFiTEiQWGKZYplIL7ME9NQD5OI9yDdyCQNc27KlGvI+BaJCK1srGO9tQG76MOZHkGhXOKNucimJrDzzW/A+MteAlRHTdTCjiUSRCHy5R77ImAwfy2svJEarsi67JNJDuF1eRNy0CWoGP1nnEvHvQ6FrQInLUgQhaexrmjD8otYt4r4xH1L+PCt5zHf5XmJg9Mn5nHy+GmM1WvYt2scF8/eh5NHbsW/+7c/iJ/4xq/B6noH3/TPfxVv/75vxj953UGKRw+PLNj4xb+8B8tuBcFyC4tnzmGlF6DVC1HhdQqlIoplH27RRcR6JbnHz7OMEp9TmR84nyDlsz+OS+YmOhTFCFi2jJ/q8jmHCCicQNNvohT1MILTePe//EYc3DaK9lKAyWYRscXPxy+jrl3gFEVRFEXZRKgAbWXkk2dDXqIDJmMbF0VyRDtkjIor0RhJBCA/EkFguz6S47ld3vlSkIbtxQUsff5WPPK3H8HivfdjjNvGy2xMe0UkSYb19TV02104noVKsYRarYpatQLXpnjQwESIJAgShuGlLlkyN93a2PCWaINc0sCyRZBkvJBXKLEBXoTtSoY2uY0c3YANdJYjNTZdynh+kqRod9qUnSLq4+NwfNdca2VhHkESwq9U0WiMIaGIYc9OTL71jRh5+Q0I5PqJDV+uzwqKAJmxMGQYzZG5xHRElAYxHVOXx0eA+u8aki5uiSgmpcJn2Tyeh6V82uJLSxTGP/77B/DZBzqIC+NY73Xw0OGjJiP4jtkdlM4UZ08d4TXaeM0rr8Xxkw/ha2/Yif/n+2/Gh+8+iz/+8/+NH/2em3Hd/u0mY957P3sSP/mffp8fUgPFYh3jE7OUnno/csZnkOYBMpu14X2FKdct6q7cE8VG6m9T5CRttgiQSXzg9jPqFSmrRoS5KlGezsI5jLkdvOtf3gw3WMLa/Hm89MUvgeV4CHMbpxa6eMXuav9BKIqiKIqibAJUgLYw5oPnL2mum6Y9l00jXqIY3CrN+zRPzPgYyZoWcT1GiLpVQJESceHvb8GZP/1brN9xLybZSJZublHSw0bYRcD9IlWlShnVchXlcsE0oCWNckhRMS/kZKNeumDJoHwRHiM+vLJEf4bjVdzBcsxjpY4S8ZExK7HUUerOfX6hQLGqoVqvyREsI0ev00VrYwMOG+GlSgll7muzwd5jvWQs0aTIgOdgobWGxZUVjDfHURtp4kIUYOSml2P3934jgpEROFmZRbpGxFghCgtlkHORMhEjCZBJpKTA7SJB5snJTpmb4wYHil3K3SVc5UMOuS5lSbkXNwL8wV/fii8+vIHC5LU4s7CMow9/ERPjE5gYm8b8+QUjkXt27sS22WkcP3oYJ08ew5V7t+MHvvkGfNfX7MHfffI2fOIzd+NHfvx7MVIrYGU1wC/91idwLK7BHZ9DsB4g7MQUzhTdTgdh3KGk8Dmyft0wRxjx3ih4kjlO5E7uxaTG5vN1KJmS/CDis3MpoJ4PjPAzrVke9s8C//oHXopkfQlnT5zCV73qRXxcLjY6Lu440sP//KMP4+O/+s3meSiKoiiKomwGVIC2MOIQ0o1LojzxoIHuUkjyVOSHuClCW6IWEv2I4Nse/CxG8MBh3PlnH8Lpj9+C7SkbwbVR5BSOtbUlJC4lquKjWK6gUqkZQdmgiPQ6bdNlTVIqe5wkupBKBrZYrpf2x5ZQGORFm+Vy2YzzEXmQuZEjHitjVKRRLsdJnSSSI9EVabivr6+j2+uaxnqjVkWz2QTVCZ1WC8tra2y8B2hQ0MYnJ+GwnLPHjiFxcjR3ziEv+pg/ew6lHrBvZgcebi1jaU8T/o1X4/q3fDcqzSlzHcvtJwcQEeIjM89PHpRoj8tt8gjNJvPwuCzHErNdIkm0JZt/bplvoWtlJsp0ZiPEH/3FLThyOkRl8iCOnN/AvQ/cgyu2j2B0pI6Tp86wfAsHD14Fzyngi7fdwfIdXHPt9ciiLirJabzz2w/iNVftx7t+8X0Y2zmLd3zzq1DitY/PZ/jJ93wWDywGaC92kSQWSqVGf+yOm7H+oTHePHf5TAoUQw+Zzfu0eJ/86afJ7ke65LmaiBCfXdHuocTPcu3kOfz8/30TXnZVBRdPXcBLXnwNVoIQnczGxz5+Br/2/i+iVxzH8d+6yTwHRVEURVGUzYAK0BbGfPD8JQ146TgmK4WMvyWsIS/ilAgBUrgJxYU/VjvC0gf+Cg//6Z+jR+HYOb2N+1K0VhaRhBHqFI+RZgOO5yKKMiyvrKHdbhmhKXj97mvdbhurK8smilMsllDxC2jWeY6IDhva/D6aQfqyPEzBbOSDsjCMvAhpLl3IKEzFIkosX473fI8Ndek6l5j6mNcF8RqlStXI0eLCPGVoFaNjTezaswOrvTZOnT+HolPE7OQcQjb4j68to0YpavM5BAUfB97x3dj1speZ8uWdQJKNTp4YN3DOZVkVuZGLDTaZuczMMdw0qLSMubJiC4mVsmwHRzcC/O6ffxGPnErQmNiP4+eXcPeR+7Fn13Y0vAIW5i/CK7jYtmPOZMa747bbsXPPFdi+cx9lxua9ubj74+/FlcV5fPAPfwknzq7js1+4F699+RXYM15D4JXw7997C/7nX92Jvfuv43NqIgwk8iRxspjPNjAvP81pc9ItT2JZKa3O3CvXht0PJTInCR9kWeSpmKzCXTuH7/2GV+B73rwbpx9+ENPTY+ihgI5Vw9/fcgKfvuUcLqZNXOhlOPYr18rtK4qiKIqibApUgLYw/W5v/QZvwrl8EVxpAPMnt6WbmWhRAt/ykBw+ift+5/2IPncrdpaKcKtlLK6vIsgTlOoVlGR8T6WM9sYG1lZXEfUk/XIZIyMNrK9vUHoWTRcqiSRMT4yb5ARywaQXIg4CilHXCI8RGTayZZJlUQjbpX5RbiTiIhGgIqVHxpjIO3ukMd9ut9Fpd3g/PMDKzPZSoYASJaJaqcDjOdILTQqLsxQPHzuC1aCFAzv2YM/EbqycXcC9SxcRvWgf5t7yWkxfdy3GZnYDvRS9QgpvpArXK4p1GRmTl6UauG7ej8TrZi5vR6InmURP5J1C0pmQh/Ceht35QJHMKWc57+1cZON//sXt+MLhNppT12KVMnTn/behOVtEc3QUrQULYdjDxOQoJcjC52/9NK590YvQnJjkMyzweSW469MfhR0uYke9iu/4+pfjR7/3q3Dq4fMIl1dw8Mo9yGoFHFkHfu53PoezHRvtQLq5+ebZBXGPtYtQcC0TKcsT3gVFqD/WSb4LfJZiPKx3RAGSMVXyriSJ1DkbZ/DGl0zjZ/7ZV8FeD1DKY0ROiJXcx62HY/zyr/89yo1tKG6fQ4tXuf2nd5pnoSiKoiiKshlQAdrCyAcvbVxpspuoAFdk0LsMVMnS0Mxd7j/74U/gof/1J3CPz+OqXdsQx22sy/gaikm5WjWZ3gJKzMrKMsJegHqtjgKFaP7igkmCII3/SUrP1NQU4ijE+toqFhcXjagUHd+MM3G9fopl6QInwjCM/ghmmXMZByQWIxGVVqdnxgeVKThmkihTscAGfoJer4ul+QW0KV6SVntktIlxXr9aq6Ir41h4rSCMcOy+hyhXZWx/zSvgfNUNKN94PUYPHkSWZNhYXjMvXU3cSBzAvES0XK6iQKmKpSuY/JjwCR8Q/5PHJmN/5JnK/Uodpd5CX4ZElCgSeYblyMHvfOgufPr+Nbi1A4iyCu66+3YUywm27a1R6PgsF0poUB6bYzV8+tN/h+tefC0a8qJR1mmRfzsP3nUXxptVvOz66/DgPecQrZ/AB37tn2F/w8fhO09gYsc4/LESRaSK3/jAvfj9jx9GY2wbwqyAzJaseBESSpDLz9iku04pPnFqMu/JPUnXN3n+JuX4oDui3IcsV9NlvOufvRZfc+0ogvkNFO0S1rMAC1YRv/y/voDjZ2voBDE6bhdjc03c/a7rzXNQFEVRFEXZDKgAPVtMS3cwf7pcfvwgiPC88pg69lf6TfQ+j+7ib5EONvylge1IemuJpASUhA/8Be55759hopviqokZrMYdLCdt1LwiJmojQJSysb5gUiTX6w3TDe38/EWst1qoUY6mpqYxPjaGTqeFixcvGClxHIqPpL7msea9M1luGtvDRrYIhKzLXN5BIxIjAiST5/XHCEkXONkuUQmRMRkPJMkQ6vUqxpqjlLDaINvbIs6eP4d2t4uJmWns2b+P17HQW42wUSthcVcTV7/jbRh70Uv4HGIsnlvE2vIKipUqaqMjcLwMXsFBt91BwS/y+kUklnTJc2G5nqiieY6FjILDxyjBoeFHK/Uf3otMKS0ppTR94O8fxF9+6hF0nW0ojMzi/vsP8/ks4coDO9DprvHZdQFnDHv37scnP/ZhXHnoACanxljvGPPzZ3H/Fz6DPVcdwp69u3DfXQ/B8WdwaP8UrPkv4g/+yw9h8dQy5imec3um0ayX8PDFCP/6Vz+IxK4itiknkaQ6T/jsIz7UEDbFJ+dn338Rbcw6yz3IT/8eJIIm4iPpyeWlp9tHUvzbH3wd9k84mC5XEEYe2j7wB39/Fz70uXnUx69Fp9fj/fZwduEUzv/mW/sPRFEURVEUZROgAvQCRT5UacCK2wxb5MOG+eWIdJhGepLCopjIO3okSUFyYR6H//D9eOSvP4xDo2NoiCBlEdbDABUKTZkisHRxHsFGC1UKiXSjWlldxdrKCsYmxrFtbhuqFCAZz3P+zDl0gzYKlBcpu1wusvHdH2AvL9f0KRISlbk80iB1Esyck7wMVWRHumfJNunGJceK9Mj4IOlCF8as39oqNtZXUS6VMTk5ianJKSN9MvbnxNnTWKUY7Ny/H43rX4mpb/g6VL/6pbxKgmOPHKMLJJS1fqTIowAZFlcQzC/AKpfgc7JGGrQd30SaZLwSLc48ZEkbbZlYmljQoI6sutRXxj5JDCjjPX7kwSW8/0P340K7Ars6gy4F5O47PoUD+7ab1OFpWDQvPX3FTS/HFz7/OUxSOsfHJ1GghCwuXMT9X/wcrr3uGsxun8Qdd96HUmMG173s5XjwnrtRai3iX33nS/ENX3MFvnj7EezetQ2VYg6nUcWvvv8e/NWH70SluQ0himix7imvHVJM404XOe89tRJKUmw+G5FLkSJJWuFS3OjD/fc18X5fftUk3vbaa7CjWsahnROYX1tHu9zAL773M/jM4bOojk5gcnQOASVIXph667uv6z9LRVEURVGUTYAK0LPlkmGYtafH5cf32/fPC5eq9pg6/p8VlS1m4oHSfE+TwERm0tNn8fn/8Zs4/9lbcU1jHKMyLgQpUheoN0ZNSuaL58+bxnCB8rO0smzkRyI+O+e2Y6zeQLfTxoWLF9Bpt6VvHaWn1BclNqgrlTIb1JJ6WVIuswa5vA8oNoPtRX6G0R+ZZL90lctFlIoSgfFN1zfJMicRF0lukLDBLpGiNInZSPfRC7pYWl7ByuISyjxnenoKRdYtKRdwz4mjyKen8ab/+WuwZqawceI8WhurSH0b0/t2wPfKQJsSdfQI7vr4J7F+y2HsmtuBDeky5trYYN1e/rqbMPmyl8CiWPT4zFIKkZ3b8CR7BO8ly11kMu6Idc+4X8Yt2az3ybUIv/ahY7j/ZIviU8HUtt343Oc+ikopxvTMGOqFMTxwz1nsPXgQ8xtHsba8jOuuvQEby9KVD7jt1lspNduxb89O3PLZT2Bybi+uuO4VuOfwbdg5uwPtcxdQi87ifb/+T7FyfgFZL8XB/ZMULwd3nenil379o5hv5Ti10MFqV973QwF1LJR4X55NAeUzgMcL8WLybE06bxkXlMvYICDodrCyvIRXvmgbvuaaPainDq69cg6VyRGc2CjiXb/5l8jHmkicDGsLAbbN7GJROe76LzeY75uiKIqiKMpmQAXo2SL9scw/65u1vkk8mdQM911+vCw/j5hLXv7JSguajfTMkkQDXGTjNpHGOisiKZ1lXV76mRw/gzt/+b+jd9992DUyApf7Erbri3YRjVID51bPY6W7jKnKKBI2ok+eOQ2rUsL4tm0Yn5hEkddYPXsRi0sXEGQBRhsjmJ6copwkZvxPr9vD+uqaeZ+M4LkeH01uBt8b6TF1ZcU5DdbMb0kZTfvhbYhgZEbUSpQbSYggUmSO5/m2dOPjsV6piF6bDf2zF9BaXYE7OgJr/25UX30jrnzHdyEolnDu6DFUK0WMbhuHX6kgvHgCn/3jP0b13CLyo2dRXO/hkSPHMLd3N/ZdfQAra2s4/sgJOMUqDt10E+pveC0K112BNc+CmziUjxY8iVR5dXScCpWR9cw7ckNou3W852OP4BNHAyystDE2Oo72Rgt33nYbrrv+WpbpYW1tA+1WF1dcfTVu+fzncMN11yFcb2G8OYLP3fJ5OKUCrnrRi3DbZz+PEYrodde/FPcdO47aSMNE0jbmz6DYXcCPf+er8J2vO4Azxy9iz/YJgOLa5fP+iXf/If73Zx9AdfpKFCrjJooFfkbIE37GMZKIHzSfXw7pGpeYqE8WS2ryEsq8Nv/jYw7xsoOzmCokdKUM3dYGvFoTS0kRtx9f4n1WETkFuIUSFhZWMLdtOx74+Rebz1FRFEVRFGUz4Pz7f//v3z1Y/pIiXZbk5ZVf0fTb54+dP9EkPNny80Dfe/hbTIdzsy7L5j/+kl38oXKAPgQnt0w2MOv8OXz6l/8/BA88hP1j42w3x+imPRSaNXjVMh46+jBSV5IKjODiuQtsrLfRmBhDtTmKsfFxClEXFykM8eI6G+U17DqwB5VSGRfmLxrh7QXS2AYq0sVMsrpJ3VgdyTIm3dckaYBMJhpEYTLd3syUIHMcWDJRbkwESLLI8Z4CSZvdlRd7RuY+jWNSkMIgohi5qDTqwEgVR8MWdtz8Bhz40R9Cp+jixNo8qmMNzOzYBifIcO/v/QEe/P0P4OzHPotzn7kNr73yWlQpANsnpnHkwYcwNT6GGg1ghuLRW2uZl6yub6xh8uABeIUCoiSnJGZwpK52AYHlm3q41KDcKeLeUy188t5zOLtBUXM8imEdh+9/ACOUTF9krsI6Hj2Ka65/Ee69+y5Mz7BevL9mtY5Tx47gIj+bl776Fbj//vv5DDzK0Utw+swZ2L6kD3ewvLyCA/t2Y/n8cRy59z685Q0vNdGdk6fPmaxxtYqPeRG6M2uoN6fR61FG2230NtZNZCeOA+TxQIDSfrY6GhIl2kLMY4NOC4uLF/jZrOPKPbOo8XvAjwGdXoD55Q383advxan5VUzM7eLzkEQOLd5b02QE/Mmv3yffQEVRFEVRlE2BCtAzRCIlpmuWaW7Lhv7s0nzAsPuW+IaRDv5npiGXLz/H9C8rdSSshwzTH8ZT+lEW1p6Ne+m2JREp8+6c+Xl8+hf+C9bvexAvmt4OP4gl/Rrqo022gyOcOPIgpsdHzQs/jx05biIQkvSgVK1getscFhbmcfLhIyhSQa7ctRuj02M4fv4Mzp49Y8bpjDUpShQfEZwwCs0geUmLnWSpGf/jF/x+SmlO0p1NJMdyRXokMiRRKouSkSIIeqbbm3x/THpmkaFKBQ6FKqAE9cKuGWdUtF1zTIdit1TzcM33vB27f+Ad2OC9dNIQxZEKpih1F2+9HX/1E/8OtQfPwHnkLG664hr4nRgXKRdz27YBZlzQGO6jeOzYvg0WBUGiTyIcXrGI1sICZq88iJhyJhEui/cTSrBNusBlXOBD7+U+/uaWo3hkMcZqV1JJF43kPfzQQ5idmTXvMZKxS5L6u1Su4PTp09h34EoErZZ5qeutn/40Xv6aV5vkEvO83oGDh1Dyi6ZL4cRU0zy/udlZeYsPijTaipdhx9w4rtg7heXVgJ9TDYWyi5VOgo9+6i6TcrvXo+SwDj7rXXQ90N1YaXn2vslo51KeJPmBRNdqlNgxClul6PCaHvbsmIRnUTB57traOmKLn1WhTukr4pHjZ5BlFrbxOyHpyWUc2I+9Ybt8ExVFURRFUTYFKkDPEGmgm7n8SIP98fPBZI4ZbO+vDKYhly8/15hr9UXNqA/XB1UyIiSRF/OSS8qIHNzd2MCHf/PXceHuL2L/3E4E6z1Kj42IDdulVgenTp3BxEgTCZfPnblImZmCy/1jlKDmyCgeuO9eXLxwAbv37MGu/XtweukCjpw6boRnanrGXC9OYopLT3wLBem25vuoslEtDX6TgY6yIDKTy2AT6e4m4sMGtmyzRZBKJRP1MSmvKV0iH6wC1totLG+soSuD+u0cfrVEBcvhxikcCsX5NEDlZdfjih/+frQsGehvsyFfRjPLceqvP4S/evd/wcqtd2NfpYG94+M4eeQoDh06gKNHHjbpvG025n2WE2WJSek9Nz0Fj/WzWN+o04HNe5KkAc1Dhyh2AetNp2S9Rc7k6ad2AQ+c3sCnH7iIhcDHejtAkzJ4/uw5E0Vqjo0bAZLxUrt278apkycxQuEKggijIw08ePe9aPA5jc9O4+GjR/h891HIJkzq8aX58zhz8hEjkiKg60tLqBX5LDurWLx4HuPjM7iwsIjjJ45hZa2H42fXcfjYOfQSiiVck/Jcugzm8j4jfjASAAr4K8skG1zKzyTl14j3KlEgid5lIRr1CrZNN2ClHdahwr/jHi4sruPhU/NozuxCozmNxcUlLJ0/h138Psj7mX785j3mu6coiqIoirIZUAF6hnwlRIDMAHZWqC9fnEudjRb03/cjk6maJV2cEiTdNkamarju5q/FxA03oP6yGzFy/fUYvfoqLPseyju2o82iHpm/gCKlZ4UiND41hXq1gTtv+SLSbogbrrvejGO5++hhhCXK0eSE6VpnIj2SLY3Po0KhGG02jRwsraygF4RosYEcUY7kRazynh8RpJBCIcvS/S1MEjbKY9PVqhP0+l3leKykonYKPmqjDdTHRo0krWys4/zqIhKKSMVxJYyBtZKPq3/oB+DtmEVIaSn7ZbiUgc+/813ofPRz2EYRmCmVsba2hIkd07jYWgZ8B5Mz05Sgo9i7dx/OnT+LCQrIqXNnUGvUTNc6eb5rS8sYpcC1VtdgcX9tYhxtkTyHT9583j5iCtDH7ziDkxsuLrQS850Yp2gdOXrUSNwEz5GucpJEYtv27Tjy8BEz71A4KuUiTh89hquuuRoPHX3ICGOdwjkxMYU7brsdJylEjZEKjrOsMIwpSlUsnjuF8yePwEkCM27nXsrpBcpRGGdYbEV45Owy4kwy6DkmyxsfsslUl1GCUgqvPEeHEmrSXkv2Om5LE/ly98WoXPaxc1sTTtY1369OL0SCAs4vdTi1+Pm52LN7D7prqyb6t2ffPvzg187yfEVRFEVRlM2BCtAz5HIBkgxXufzTubQPxSjMNmnCs+1rUzhkGxvCX2oBMlURpJ5SHU72YD1lHaX+dp7ClSiR58CvFNGYm0NxchqF2TmUdu5EYf8uWHt3YvZrXoW5174aUy+5Fld8w5tQOXgFpg4dQIfnf+gjH0a9XMVX3/hKrFy8iMXFBYxMjsNmIzliw7i73jIvC5UxQ7ZjU3ZauDA/jw4/+/rIiIl8eAXPRHrMOKAkMl3iRIhEhVLWL0y5PUv6XbNYhtQ/5k2JBHUpOrLck5ebUoZGx5oojY8ioFStX5zHPCXL37ENe771W5Hw3AIb515q47Zf/XXc+2u/hWkK2tW79yKNQ8gVFzqr2HfVARw9cRy7du7A0sKi6Zon6a9jimLmAOuULHmpaiZd3SI2/jsdU6fzrMvOg4cQiLRxS0Jx8wpVnFvJ8bHbT2E5q2Ktl8Dm90NecHr8oYcoLJQ3Lq+vr5v7k6x6K8vLJspV4XZ5Z5IkjyhRZEx3Mm4bm5hEq7WBh+97ANdccxXaG0smw9y+/VcacSnkfF6tJRzYNYvts5MIgy6KFLzpbXuwsBHh7vsf4TPlc6T8SIIL8x2Q74t8V7jQ/z7H/N5EJgqURAl820VR3tnEp8RLYd+OMaTBMmxub3djrFKsWqFFGZ3BRqdnuvNtm50xf+PzfIb/5js0CYKiKIqiKJsH0y5Wnj4iD2YuP1x+sskcI8vPp+k8CeaK0rDlgmVat6JrsjWnAlB+2Hh32NANV1dw+uN/j/N/8yEcff+f4NhffwSLd9yHteOnkFBevIJrGvQPnjqJBc+Gu283dn7967H7h9+BPT/0HXj5v/ynaL7yxfj8sYfRY4N6ZmQCHhvD9hKloBVQfMbQGG1iQ7rOXZhHnOaYnpnF5OysifIsUFAuLC5hYXXVdGGT7G2568ErlWAVCkhsh+JC62CrO3UsLlPgOOWUmYytd5vCIO8GkrFC3TBASwbzpxYm53Zi54ErYFEcepSp8MxZRPMrcLwK7v+dP0B855244cbr0LNj1mEe42OjqHoebHkXDsXNs2ycPn0G23ftwokzpzDC/eutNibGJxGI2AURzcE1CQyCXhceRWj93nuxfPgh+BL1iTITUYmTHGfm21jsxOhxXV40KuN8klBEL4MzqL+8yFUiQWuSHY8fmoizdBNcpUiMjY2ZRAKFUtFEvxojdRw7fgy7r7jCRG4SPvc9u/aaFOIZy5cOjiJZpaKLLO6hQRmdGZ9AsVDBwsVFk1K8KM8u7SILV5CHq7ASTvE65bCFItqUqA5KCLjc43NJ4XE5i1osv0NxjlD0wDJsOFaGgucaAV2lxHWDEDP8fF1e49yZk9gxN8XzuvJtVBRFURRF2TRoBOgfiYnyEOMZAtdFNYwEPX6fMFiWWV9J+siy/BZV+UfDwmTchrkG52YDVbevY7mx3mx+AR/65V/B7e/7E6RHHkH7zgex/Pn7cf6WO/DZ9/8puhSAY1+4Aw5FaDsbtUWLYgKH4uFCUiaXZ6ax41UvR7VRw/zyIjob62xIp8i6PXgJMMX9G70eFhcXTXSmOdYfrL/GhvLS2prp3ub6nmnYl8tl+MUCMj4v6frVjQOElIRO2KPYhJSahMLESaJEnCd5asTBZJGz2eTneSaRgl+gfFiIuwElo4fa5BgK22ZRmZ6jbFQQnDiNI+//Y0QUtrnd2zG/uoyw08Xc1BRarJOM7Ul5D83GKI4dOYJDBw/i4sI8GrUG9zkouT4Cli1JHaQ7nzzfdrtrsrXZFMqLrR62X3cDWlyWSFaY+rjj6CIOX+whK1Z57ysoOLxnnn/u4gVU6zIGqky52jDJEE6fOm0SLMjYpRL3XTh7BrOsm7zfaI3Pt1yvotJoYHFhCZPjUzh54hiu2L/XZKCLWW/qIuLWEvLuEm44tAvNKnU37mDb7DbWO8EXbr0dLYqcvJuoZKeoOBHKNoXGjSk1MUqOdGYL+Vl3Oe/BRwQv54dJiSm5KY+LMMIy9++YYLld5BmfdepgcS1AO+W1inUsLa9hgp+15+RYmJ/HxPQMfvybruaTUhRFURRF2RxoBOhZIHJzSXy4bNZFeAbzJ5su3z8857HnS9Tm0W3/mOnSNUxSAVk2lTUD3i02lR/62CexQNl57fgcrg4tXNmK8HK/iImz57BnbRXV++/Dyff8Hj78k+/En3zPD+Ke//T/YvUvPwbr2CIKdg0pRUO6qjVvegW+9j/+FKxrduOhcA3ZSA31iXEcO3ES3V4HE5OTpsEvUY6LCwtoBxQTNu7HeEyxXDIZ3VY31rC6voaNdttEOaI4Md3KJLJjU5Isyk3m2kjYqI6pPQElKKCEiSC1O23TLW2D5cs7hvzMN+/kkUQK59eXsNxpUaYoUcurOPGpT8JqLWOu5qFHidjWnELY6iKLMzQnJtBjmTmvU202eJXMdDWTTGuttXWUJDVaN8JoqYrW8jqiMEYQhPAKRfQkgsNnMf/gEVw4dQ4Fv8yH7bBebZw6O0+Ji2m6CUUp4YySwkm6u0l6b0kHLnN5KWzMZ1OulE2USLqfyUtd5TOU7n5tqQufm2SPm56ZManF5b1LkjwiiEJzDD9lSgnF0skoKkUzDmi04lN0gBOHDyNaW8Zso4z9M00c2jGKQ9tHcOWOKq7cVsGBuTKnEq6a4XyqhH0TPnaPedjWsDFTB0YpSIV4HVV0YFOqSqyj77h8tgHWVtcpgj1+v2zURur8LFfg8jk2+F0I+B1QFEVRFEXZTGgE6FkiDVPhqSJAZnkw9SMy/DVElgeT7JfflyJAlx/3LBieLiKU5tKcl20pbMdB976HcNdvvwfbPR8jrGO1E8KNUrSCNuYXL2Dvru24cPI4Zqo1jFM+4guLKPci4NwFfOj33ouC5WN6725YtSI6UQdOvYydhw5i/cQ59BaXsUaZqTdqJgWyiI905ZL7q7G85ugov3UWFpaXTARGxkrJTonmSMY3GTMkkSG74MHhZBdcWL7puEenkXcAeUYMJAojEiFSJ1naJBtZa6MFhHQf3mNWsOBSsFY3uhjdfwXs0SqOfP4W1ChhM/UKwo0IE/UxLC8uoVyrosi6LkkUi+eOjo/hxOnT5loToyPYWFvD+OgEVpaWMDIyaqI+JYqKqTefX8jvsoyRWQwzrFECth06gK7l4PbDp3DvcYpdRClj+WutdWQJBatRp1RtmHuvcXn53EWMjI2jNT/PeyryOTimm1+rF2KU0rN6/hyv0cb0zh1wCxWe22adVjEzO0UniylBvFdKbtymSJ4/jr1To3jZNfvh5CFKRYoY6784v4zt22awfW4Ks5MjmBotY7pZMvOpsRomxupc58TnNMZtzXoJzVoJo7UyamUfjSq/K7UCBZqiE/N+PQeFUpmff4qzS2tY6cSsb2SEsMhJhK1cLMN3ffzYN19rvouKoiiKoiibAY0APQtEeoYCJA1g+dd9SS/A1iEfqGRWS5GbN+nLxGWJLJhl6k3G/Zx4Yn+e8jzO+wkVZD9XEzlf0hM/uykzc7muzHMWz8axjBdBBKu7jjMf+DOMnVvETIGCwK0LbDy3SyWcWN/A+I7dWF7tgs1bUDOQtiNctXMXbtizE+n8BeyKulh833vxmX/z77B2x90os8Ee8X6d8Ulc/YrXYGO1g8rIGBvxPpaXVsyYmUZ9BJMTk2yQAysLi2ZMS+ax0T5SoqjYiK0UbtFHkVIh2cdE2sI4QTsM0eF8nWX0Ajb0YyCJc5aZoNeNEQV83tI1zytjYmIGs7M7UWVjfSFYx4MrvM4K5WcdWFuYRzLqUK4slAMKYEKJqjWQFylZlLezC+fB9jwKSYYSy3cjCwkl7wwlo1QtI4x6yH1u4/ky9siyJYNaioK8P4fillFY5sMUpSxC+97bEZ89h9V2ho/feYL3UkXaiRAldDOnDFYdseOjWqrzcxZZ8+DyPiT5gEupk7FZHj8PeZ9SyHITbrM7HYy59Eb+tcb8XNYWQxQofaGTgBqFXCpPEc3bK9g1MYor9+yiRPrIKGMbQQ+doIu9++awf/cErtjewMEdI9i/vYkdcxOUollK0Sx2bZ/Fju3TmN0xhR07uW3HHOa2TWPbtnFub2J2po65mTHMTU3zuXdx/sIpXFg4B8ezUa44mBwrYKzhorVykYLYQb05h16Pz6RYNH8niqIoiqIomwUVoGeByM9jusDJeJuBEMlc9hiBkblIjZEkmUuGLQqKEaD+3Bw3WBchsrjflMlzzfzZTqYEQvGR+InD1rZve1i96z6c+sId2DbSRNpqw2eD32GDXl4iKmmjJTvbMgVlig1didLJy07r1aqJcnTW13Bg5042xj34Z+fxhz/0f+Fjv/IbKLG5vnTsGLyxCvZ81Y1YYblLK6tsHLsYm5ow0ZyzlJCVTsvIglzHZl0Kfgl+kVOpAsm0vMHzJDV2RNlJOGUBpZHVkogTeHxiu/3J4WQ5CHmOJF9o0y42gohTwP3A5OQkdsxs5307lJ8VnLjzPpOcYdvUDL/w/HwoK/J0bD4nGX8URJFJJiCD92Mu93o9E61aWV2jOLIOFBJJVS3dCWXsUsxnFfJa0k0tkPcAsaxQDCdOsXT2As48chInjp3GsZNn+H1wKT8Z98fwKZxdnscTUapVEXBZXkDqlorIed1GY8R0AcwTeUGpbeQq4Xbzklj+ODL+ise3eM2x8TEEnTYKaUJJXUXcXsJEw8eO6QZmJhuUM8tE4aZ5z7t378b09IR5aeoEBWl0tIbxcUrp5BgmOI1PjZnl8fEmxsaaZrzW+AT3TUxgkp/fFM+dmprkNMFypjif4bFTfdlOAj7rcZQdeQlrjImRGutMYe3JWKmiSXOuKIqiKIqymVABeg6QPAPyrh2RHJkPpeeS/EjzlXPJDPb4fRJBurQuIsQ5DaY/f5aYbnbyixWTRr5EpagcsDsRjv3vj8Nb78DltdwwRo0W4WcOLi4sYnJiHGfOnMH42BharRbloIKRkYbpbja/uGjSN3c6GyiwbmMxcCDwsPDeD+Pe//mH8DwHF7wEjesOoMfjLb+ACuVpcWUFi5JggKKRUZzyUgEOpSdl4zlqh0jjjPJDsRBJk+5flKLcku5uPj2J5eTUgBSQt85s8LbWKQ8rcYwVSQzAe2jx/jrSXYz7VikDq9zf7vTg545JGT0xN4fu+RVEpxYwPjqKyLXZUKdIUJgSllMulUxmNEmiIGOVpF7yeU3wGYTdniwaAZK5fCYirS5FRLBYT1mXyaOUicxE3RAP3XsYd952l4lWyYtXbd53QjmSLp8Zb6a3QXGp8BmwrjYlKmFxbcpWqVxEzP1xyOeSReaZup5EyPjd4D1K1WJeK/dteJQmO+qhGK7TiC5i1I9w1d4xvOplV2Lfrgk060WK0ARG603KXAOjFNuR+oh5uWudclfhZ1splTnnxHlZlitlVAdTrVLleRVO1f45rLvUv1aroFofxUhzmoI0iYKdY6pWwksP7cNMvYBCFmKiXkZ7Y5XCyOc18HBFURRFUZTNggrQs0BkRaIsw+VL0jKYLo/EcMOl+dNGyvtHwOYyf0ldZC7F5ZQLDxv3HDaJD7Y1RtHrtVFxfFRS24yDYWvbRHskYYA06CU6UaIcyIB9afB32m2WbCPi/nLRRY/CtM+t4KtGZvGpX/0tLD5wBGBDOJ1uYva6a2Czgb20vAyHsuF7BZOlTMbk9CgCqxSANMpQsAqsm8NGsoeMwpNQFCLbRUCZ6LmOEZzFMMBiFGKZErfEW1qirKxw3wqFYM13sUw5OR9HZrpIoTgRdjAf9DBP6Tq9sY42ZaFeqmHxxHlUxproVQsmiuPxWmU28mOKVJfHe5QfyTYnUbpup2tSXEu3RBEi0y1PIkB8juaz5zWHn79Ik4xNEpGzKZJl3scjDx7FsYePIea2tRZlk8In0a0KxUNEa/niApqUTSki2GjBq5WxPL+AIuVQPjbwXl2H14kiPnGKYdHnc0sos46JNEn6bxnX5ecx/O4S9k+U8NU37MMNB+ewfbKIZs3GaKOEMutW4b3XqyOoUlxEZvpCUzOSI5+viE+Zn0uZQiUyJIIj+xv1Ohry4tU6pUdEyGzvS1Gj0aQUV3l8FaNyjpuAVcC1e7ZhbrTMeoUY4XNub2zwfvrPSVEURVEUZbOgAvQskMavEZ/BsmkMy/pgLusyEH+4TyIFw0azWb60/XETG9JcMOVemj8LTFn8MSJk9ycri/HI338CpXYXVZciY6XcmyHphehQaiZmZ7C8tGwa9AmlR7pbyT0G3Z6RImnkO5QOiRKYF5Y6GZd92Gvr2O+V8cnffz8qlJ2UjfWJa67EWhrBcyg0gaRW9uBTDNqtHnpBBIviVWbDvCLZ0nIPVCy0KUbzFI+LFJkLFJlFz0JrpIpoZhzYMYPCnp2oH9jHsg9h+0tfjF2vfDl23vgy7OZ872tegT2vupHrL8XES16E2qF9cLZN8/wSLpYsSlQHhx9+GBnL605UsZryfkwXM+l5SJGgHEomNZEPlyI4v7BgREGSOKQyUMd8tP3PTboLyiB/WZbsbSllSiZJDS4vYHUzy0S2VpdWuS1HL4zMi01b6y0z3kvK7HXa2Oi2MDk5gW63g+07tmN9ft48e5dSt762QqGKKRE1zhN4cj7LlqiVpNz2yj4/Gz7H3gb2jBVw00sP4dq9U2hWchTtALWyJEVIUeS9VIoV+JQ96d4nESWf5XucisWCecGqTGWzLMkLeBzl0vcdc0yh4HI7JZmfebks6cpLZrlCcayW62b8V5XnjFCIi4gwUshw7YEdFE5+T1x5R5BNqUz7X0pFURRFUZRNgmaBexZI4/eSAHEyFjlc59ws8Zi+DNn9YAzXRXBkc1+GRIqkq1d/bv6l/LJJjn+2PFq3/tgVFo/g9Gnc9/vvw3SY0odihHbChrGLzkbHdCub3D6HhfPn2DAuokMRkXE/MtZF7kHGw3Q7HURRZLKWrXbbCJDCYoM67vVQYsP95LmzaExPoTE1ZV5cGi0uYuPMOdO9yqYILCwumRecetWy6fJmXhQaZVijbK0kIcsjtQqyehXu5DjKO+cwum8Xpq46gIkrr8DUgf2YuWIvZilBMp/Zvwfju7djdMc2NHfM9aed2zG2dwea22YwtmsO1R2zcKeaKFZqaPFearumeZEIa/c/jIlKQ66I+aUFM1apUW+gx++kfJoXKCO79u2nCM1jlA3+bquF8bFxdNo9Nv5ZR+nKyB+v4KPVaaET9OBQiiQpw3InwHqhgmMxEDem+JwrGJvejgssa3xqks8zxcrFebjlAqbHJ3D+5GmMb5/C6aPHUB2pmdTgrZUVRJS0qcltWKc4yctPz58+STmqYnR2OwWU1wvWsLOc4OZXXIXZsTJ8K0SlQAFygaJkyaP0FCkonkupcilNlF6X0udRcFzKucPvoOn6Z5ZFbh0jhSK58p2UrpNyvEvhs3ms6UrJ71H/++rJl5jaSskZJGdw5AW1cLjgoszvi2Se68QZRdvBT779xeZZK4qiKIqibAZM2115ZphuUANBkWUjHLI+mIzsDI4xxw6O+Ycmczwnrjw6PQmP2SOH9mePWTZlcp5Khjo2YM/ddhesxVXU2PCOECK3UwRZjLWQAlOrG1mSMTGm4ctGbrFUxNrauklNLe+lkSiHREtkRNHKyirsoofIt5CWbTa2gTm3iBOf+DyShVV0Wfb4lXuBRsW8s2dtfQNjo2MUhhLC3MYaJeAcJWpeXnRKibAnJlDfuweT11yNuRuuw9xLXoTZ66/F1IuuwvihKzF26AqM7t2FOiWtPDMFd2wUoBRYIw04zRFYow0zOc0GXE6YGYdHAWoc2IuJaw9i36tuxIEXX49lisyug1di2+7dbNy7Rug6FLtGozHoegbzXiF5gEYILjX8RQocEwkTIj4neb4mimSEwKKwxEitFA63V/i8xkdYR5YZhAGfq8iJh9WLFzDFe600qrhw5gylq2bGybT5fHbt24OjDx7G7NS0Sct98eIC6hSpPGUhrOvU9p1YmV9AgfUZb9Ygn+JLr9qLyRHWM2tRNF2Tirta5TPgZ+H5FB+KnePKS2L7YiPv5hFRkenyZbNuJm4z23ks5XaYktz7/9n7D3DbsuuuE/3vldfO8eR4c6pcJZVUypYly9nGxhhooPu1Tb+G70EH3Ak3dDfvowk28D3A7zU0Jhm3AQdkLCPLylLlcOvmdM65J8ed80r7/cfc50plBRvLbbiub/2v5l1rrzjnmOvqG78ac47J50iUzGaf22yHS8qS9iQdi8eccSILnjf4rlHYxVTBxqm5LBw9VMMfY8WKFStWrFixHibFAPQt6K3RGQU7LF8Bjwfl+BhPfl1055uVr7vua8UHyjPVGfUS/vWVH+Ot/JQ3P4AvcYIjgY0vvoLySCdk+ej0WjASdLx7bfQISLlUBr1akw6vOMwEAzr4tu2g3++pZ8h8oHE7ZRiVBWtkIAMTmh8g0CI0+k0sTpbRW9tEY3UDnQ4d8rkJJMpZVMMBUoUCHX0TfRnaNujjiLAwLKThnJhDlqCUP38aRUJO7hQhZ3EBxeUlFLnNTkzBzeYJTikVPbLTKdip5HjLIokAdMdWW8Olw09nPCnXZjIIMikkkg40wsSIIDa7tIRyJo9hi8CTzqoISbvVUnOccoU86vU6ocFCrVrDY48/jkatptKRCwBJ22UelE+7yBA46ZoHQ99knpDAUj8aEDZlwdMQfUJVu9lQUCCRlk6rgalKGRsrK7Q7UCTEdfnuaq2KpTOnsbu6jtMXzqLbaKB+cIC5xUUEXoiDrT3MTMygO/AwNT2DBI9t3LuLXMbB0kwZZ+Yn2I4h0kldwY8swCopwS2xAfdlOJ1OSDXMhBr+JtEfS2CG5a37lgyNk62lwyYAWQQmi22y5ThhSF3L4zZtYPM9Dn8nLf7mvsyd0sX+ySRB2kUmxTaHHSxPZzA7UUAgi8DGihUrVqxYsWI9RIoB6PcohR6EhAcRnK8UgZC37v8OZQwv4638GT/5awqhRa5R5yUzmHjiancccRLPXK6Uw+oE/ydJCAa7B/DXdpGR9WbCALZrIUlnVjn3dHzThg1PMsMRClRbeDwgGIhkkVGBIDk+7Pfh932YHpDqRkh2A4yGhCNbMpT58JstbN+6C5OXdxMhMifnoEkUCBG6/pCg1EOYtJAn+JTOn0LqzCLs5RnYi1MwZiegV4pwWKxcDq6bRsbJIG+nkbdSSJkOHW8LrmkfF+5bznhftixJHstqDh33JDSCkcN7ZL6KrC9k6SZmMyWE9R46Rw314dcIOdlsVg1BHHoefILZ7PwclghLL7zwEgpq0dOOgh9JAiGRELGFmINWVnZSIEToiVR/hLx2HEnrttuIuA1p7x7vzRMQZL7M3v4eipUS8oTOa9evEYbKcPisvfoRTpw9g6vPP48MgaxSnsSNK7cINgIzLiHExkS+hL2tbfSadcwUcrBlodOkpubpSCTKdtK8NgPNYPvZlxqhRTMjaLqk+B4PU+NlqjzYJ9+Mh8DJloArc9fGQ+LGvwXgJCIoNlCL0BKKXAKSS7AyCUySXEOzCEFJQikhNcX+lTlIGSfEdLnA/ZQYK1asWLFixYoV66ER3Z5Yv1dFAh5fWwRV3rr/OxRxqB9s5Y9sv64QdB5cI/sKeihxvlUdjkFlJLmH+TvUBJVGqF6/gVDSEhNSJJeyJvP6I15CJ5gHoNFRjwgA9HfVekASNRIgkPdIemcZDhfRgz7sNeEhgBZFdL4TsHiFZEcTJ7g36KGQzWD9zm1ZFAddb4DCwjzadKTrhmRvG0GfmUD25CIKp5eRnJ2EVS7BJQy43Dp5Qg9hJJXNq/TbjuOqZAMuS4olrVI1yzEbtmURCCTiQfhxCEb8LdfJuRx/5xwLaQVFLjJ2Us2rSebShCgL3m4NuYSjIjy+N8SJhUX4vSEG3R5kAdmzj1zCq6+9SuCpY2F+BtXqISYmJ1Br1KASCNgCAglJH6GGt0kESSckkiYRBrQjgUgjCAXhgLbh70jWGPIJQT3MTc5h/d4a65PB/Owi6od1rK1tYvnkGazevofls2cxjELcv3kb5y9cRDQKcOP6ZUxPVuD5ARzJwpZ0cPvqDbTaIXqwoRE4ZHHWjAwJlHk5Gut3/CeR0Nn7GnsxoWBGok/sDhZ+RQl+ABpbQTjy9UAtqhqwjHhsROAZabySWz5OQZQMpUsQfCLaWpcECRIR4laiXCZtb9DeOvtD7GDyRXrooVjK4cS503xjrFixYsWKFSvWw6MYgH6PEoQgSZBHDBZu6TGqLU2rtnQ81f7vUKQrHmxlns24a76myJo4yp2VfW4jAg8rILwzUtEhXiUUwz1iDnwZriVzcG7cRJgYoJvwoY90GKGBQRCxhLDo5Lr0W/2wr4DIJxAJOMkK/yNZBJRP4muRnizhiE59n8/IFjLw6PN7Fq+xjifV05/OEVoMOuqDoyOCRwpGKocugWTPIixdOInUI2ehEyr8dAY6QcfJF9WclTSvTRFWJGOZwIzAjkCX7si6QSYil848HW0BM4PnLcdWaxNpBttHhztBZzzBOiR0DSGddYe2cGl7ne8WKNTo1DtZE439HXTvbSLRC3BweIgpgk1GFietNVBknWampjHsdXDtxmXMzk0SvHSVsS1HeGo0jlAq59Du1GheX82HkahXwCLD4MgtPE5AkGFwPN8bNFkfAgXtKTC5f3iEQmkCIz+BzbvrKE/NY3JqETeu3IHGdy9OL2F7awfv+rYP4c71m8qeZy6ewPrKVexvbmB2cQlBUiIwJJIO8Nq1I7y8OUAtJJwm82gP2Zc2YYTvs7QQJj8GWQhWsuxpukMbSMSP+/yjvhMp6lNhHQV+NPa8JnPD2B45IWsw6YQdgrTBr0LTPYwIQZ7pEJRMZXddzRMSENIJyhIl0pEi3MlQPN1MQku52Grs8SWxYsWKFStWrFgPj8QFivV7kMRgvjLU7a1FUOWt+79DkSc92Mqf8ZO/pijI4Vk+U4CHDKT2BYm4w9/c0jHVCDIjFYmgQ16toXb7tprgHgaBmushx2VonESB+FA6q5ZKwSwREIn4yDo5Ek2QY3wsmq2Wiq54/hC7+3soTE1gKNEkvkvuSbDYYQJlm45vd4j66ibSdIQPBz2EqSQmzp9BdnGW+wSkXBbpcgnpYhluvgA7lRpHcQhP8j6J6liEHNnKOwV0BHgkLbOkqDYl4nC8leiDOi9FRSJs9HnvyEwT9Eh1BsGJ0JBL8/m0w+5vfg5lPcRafQ0aoWxpeRl7u7sw2NbZmRmVonplZQX9QR+PXLqIm7duYqIyoRYxJQfSdrIwqwwdI9DRZiNCpNi01WqPbS3nDFNF0STqI8PffMKPwX5pNBqoNes4/8h5bFy9hohQtnz2FAwvxNXLV7D86AV47QFGwwgXnnwSr776Ok6ePUtQmsLVN6+i0+lh+cQJ2sREuZDH/v4uvvT8DbzwWhOtQQl6soS+rFtkyzpBQ0Jxl/UkqEm/Ew5bhNUugWVISAkIxjrBKBnSNp6FYt/GRM9GxqONQyJSREgKCZQR7TfiMYKTwJTgk8vvIWQbewTUgM80CJw2wSlrhUgJjPIq3Z1Ge1TGlTubqNYIjLFixYoVK1asWA+RYgD6PUr+azpp4euLnHnr/u+iKKD5BkWA5yvn+L+ROJwSCRII4nsiidZEsmAnT5NubF7TpYPf2NpEimBDslF3y7wVIpA8gPex0CEWiCBTqbkygeerdNhRFNKpH6HVaCrQWV5YwvbeLiI60k46hYDvEOfeZB2chA5jGGLSzaK3X0Oz08Vuu43C8iIyszMEEzrThKFE0qWDTFByXcCV4VSWAh6BGgEcmWsiiRjU/BU67hJdkoxtsgioDOmSIvvy6UpmNl3OabyH+xr3R0aSDj5ddbZH5uJkeH+qN8DWJz+NqV4PvYMNdIMapmenVLskwYOAj2U7Kiq0cn8VZwgeAlPr6+s4e/oMVu7eQ4XQFsh6SGyr2EcAc9Dvc0syCkdI0l6BL/Or2C7WZUgIklTvrs028l+Zze02+0FSR8/MTeH1F5/HbKWME2eWscPjN69cx2NPP4MbfFcqk0d5dg7Xb93G4089w87U8OYbbyDkM0+dOoV2u4lk0sbWThu/8YU9fPqFPex3acNikYAD+GbAjpTsf8eRIIKRGRHO5APiFxCy330+sy9zmwjEHfZNm2A1pP0SI4Ej2la+K34jEX97BCLJRqezzZbXo+UJfgRA6SPehpTB58tQSkJoRBC7P7Dx2ZU21o4GyKayfGesWLFixYoVK9bDoxiA/gBJYIeMophK9sdRH8KPAJD6reJDclJNXk8Qhppra3DCgJAig+JkTSB2OZ1hcXKJDOo+L4iQdFNq8U2V9ID3SYpnyfgmiRJkUvzd27fxyMWLKJbLWN24j3Q2A5fOvkSL5Hpxrf3Ah0vAETDaOTxAQIhwSnTK6WBnJieRKpaQSudgO66aN2IThGyJ7khE5xh+BHbGk/LpiMuWACNFGi2QN047LfAzBiAFcMdFwCht2eKeq6Fok6xfsdHH/X/5cUQb22gd7MLvdXB6el7NDZKEAmlCWYF1bHc72NrdRsi2PPHEE7h69aqCH7HpoNvHZGUSEe0kCQ1siQTRdjIvR+wnax2JPQUsE4aOfuCp+nr9IRzaMCQwyVpJA957uLGOiflJuOyGe1ev4PwTl5CdKOL+jdtY2d7EMx/4AG7fuIvKxLSaV3NUq+Opp59GdW8Pb16+jFwug8efeBzN2gHS+TK2myY+8aVr+KVPvYlr91vwzCw8QiDMNPvBAKvMz4R/JWQ4o2Rk45b7kSyEO+KWtvK5P+RxYh1/yTQx2o9//JEcj1ggidP5PEn/3YcZsl2EaYn66ZEM87RhZCvwUhO4UR/g126u4ko/gjs1j0uXLvHuWLFixYoVK1ash0cxAP0BksCO2nITJSL+ZlFHxvAjkQIZBqeO0ukdDYaorW/A9unmSgY3Ak4Q0ZENJGKkw2D3m4aF/mCgFvgUR11SG8uEeX/oIZvN4fDwUA0Pa9IRX7u7gqeffArecIjd3V21fo4tCRJ0QgJd56GRQH3koWdLAgY63zJKzklCk6iIZcEhZGVYUgbBSDdhGwQfbh8AkCkAZMq6Q9YYhmS43jHsSNIDASGBIAU7xwAkwCSLdUrUSLKV6XTOU1qAvM1zh1Vs/cLHkd2uwas2cNTpolCYQsUsoLZ/qGBtcfmEinJJSurNrS088fgTCoZ2N7fw2KOPY+XePZTLFTUMziaQCPg4hCffk+FtAaEnUlEof8DGCkzyWR1/oLLr9SVCRFAIPQ8WwUjW1mk2qujWqzh/7jTW1u/h/spdfOhDH8TI1HDzxg0c7B/g6WffhWs3b2JiYkoNDYzYZ48++SR2Njfw0isvoVAs4H0ffB9a3QYSGQM19tVnX76Gn/v4i9zu4qCVxMgpILIzGBJOBGp0wo5OoDH5dViso0FI06RerJ9LSsrwGsmsJ1E5Ky1wqsNNs89yKViELjOXJ1OleYyF7UgKjCYsjOwy+s4cNgdZfOrqNj5zdQ21QEd+fh4nzp1DvyfJNGLFihUrVqxYsR4e6T/5kz/5l4/3/4NKhgdlMuJ2/cGTOOFvlQwWOt55sPcNJGfeevabX/nNpKI7vE9FgrRIzSORwWDilCdGGn/Lf8EX+BkvyBnS4d/+3OeA1TW4molWo4VCqYJmq63Wvul1e2qYWMTry5Uy9nZ21BAuWQco9AOUC0Xs8lipVFYRnxu3biKfz+Pk3CISPN/3h3CySTR6XRVbaNG57uRTcC+cQJhMwdQcuG4Sbiqt5vdINMQl8LiSwY2AIPAi0SqBGQEeiTqpiM9X4EciP/xIFfgcR3rY9rG9j6NBPKYuEiiMIhhWgLSlwdvYxsYv/irSe0foEna6hJEMnficU8TRdpUAOcKJC+fQ7nSwXz3Ejdu3MEun/Tyd9k/9+ifx7DPvREiA3N/dw4kTJ+ERGAb8LQApC38e1Y64Jfzx1dK+g2qd0GNjaFu4Wm9gi4Dpp8q08zyBUgDQhpvjdQd7yGmWmj9TmZvCvSvXVHa7s888ju27q1i/u4bs5AQuXLiEy2+8hhz/jUhxHBtJwsddQlK9UcfS6TOYXprGbm2LfWYiHOnY2Kph5e4+dnb76HsaUtk0nAxtDQtpsU1EaBzJEEPa1eY9LFHaRtce4cDvY2PYw33a4/7BNu4fbWL1YAt3Drdw83APq3znbruDan+oFs/t0+ZDJ4taIo/Lmz188pUV3NxowaR9F2YWMJPN4uaVK3jppVfwl/7YO9hHsWLFihUrVqxYD4cSnueNgwj/gXV0dITp6enjX39wpJIOEIBUIgIWCccoh1x2uRHX/OslJpYz4qw/MPc3vvK30xiAeCdfFCZChHoIIyAgRKaK/AQEIFmYVI98NWHd39jBqz/9txA+/wKK2SLu3VvFoxcewSGBYKIySQBqo9lsIJVJY2lugc75AfYbVWTLBWyvb+Gpxx7HlTcuI09wmD+5hFevvImupI6encfJ6RkEoY8uhuh4HlrNHvY6PeSfeQzBoyfQHcmCmRmMbB2aY0GltJaoD8HAEvAxedwyWXkZYsd9ASA65hIJEhCS+T9SVLYx2bI9D2z/oAgAiWSukooKGRoG6ODo1dew+/HPYtlPoH9I+GEb004Kc5UZrN/fpe2Ak6fm4dHhb3bp8G9vot3r4CPf8R347Kd+U0V63k0A+hLh8ey50yoiJe8/pH3KpQkMAx+H9RrhR+bTREhmc7hO28oQv/s890sb67jhFuBPnkeh8ghKlROEQwLJZAm7m5tqaGJlYQZpQmg2ncFnvvB5XHriSdp1GV/+0pexy/c88ujjOHP6NL7w2c9iemoSy8vLGAyHODw8wK0rlzGiLd/xwXeiNJHFNoGuWesjGCTQ2K8i6DUwW0ri3Iki+3sBj3G7XHQIsUn4NP0BwXe3VcP92i7uEnD2uw1Uuy3ss2/7tLE9aCPRkbTpxGknjTa/r15kQYt0GPy/iynC1pSdQXniFAZ+GvWWTuZOoZgpIZ9Oobq9gVvXLmNfoHNmDnv/x/eqfooVK1asWLFixXoYFEeAvgWJ8/1WjSMSaufB3jeQnHnr2W9+5e8keZ9Ef0aQCBAhIBrXYMRdmdVh8IxARXd9E1uf/yKMwzqyhJj9oxrS3I6HbA1RyGXRH3TguKYaolUqlLCyuoZypQKCMYb9AWanZrC9tQXNNDC3MKeAQWBja20NNmGlMj2hfrumy2d5KumBPTNBB92A6yQB20DCJvgQgmwecwg6Jt8lkDOSLGKGpQBHMqvJ3B6JBEk6azXEjdsHoDOO9Bwf5778VkAk8MTnSipqqbOkzdZIOIO1HdTXN2BYCaT4/slkGlv37rM+Os6880k06lV+gx1sHeyqCNCHP/pRXL1yBU3a6CMf+y688aXnMT0xhUwxjz6f25WEBm4SyVQatUadVdFQFbDKZtBudxEGI7iEmbt81n3fx4FhA5kJdkoS2UwFZBM1x2ayXMFm7VCl3fYGhBZHw4kTJ3DjxVfhsU+fffdzsNifN+/cIlQ28czTT+GIELe5uaXmKuWKBWSnp9FhfW6//Cp67Q7vP0tIrUA3CZnsX8mud9Rs4db9LVy+cR8vrW3jS4Teq60hXt6p4xNv3MC/feVNfP7GCt5c38e9gxYOOhF6Awt+M4DdHsJp91HUXBxt1gg3OQy7KWge3+/ME5gX4FsVtLwkRmYR5fIi8tky9jZ3VLKGqwQ0N+3i0Xc9h8VzF/BHH+d3ECtWrFixYsWK9ZAoBqBvQb8VgCQCdCzuvPXMV/Ug6vN7jwBJ9EfuFQCSeUDjYU2EAeEgOuU+j5kEA/IEOvc3cfD8K7AaLTipFI5aTYThCLPTMzjY28VkpYxq/YAQQWBi3RxZ42UUodFuYWlpCffX7hOApmSUGg6OjuAmk5ggBB0SHpKGScf8ALv7O6gQnMrJHMrFCTr0DvoCO9k8NNul/y/zRMbRHYEsm8AiKbllzosUlfWNf8QqYleDzxUQkgQIAkUCPGqf14wxj3/zOln3R+bGyFA9qZ9l852ZLKErh/z8IopnTuJgYxXh7g7KvL6+vYX0RA4Lj5zF/Z11NS9na2dHlY9+58ewub2NOzdu4Hu///tx5/I1JIY+Ti2fRK3bVpGobq9LACkTfhpodTpqqKGddGE4NrZ3dtW8oBHrfq92hBV/iCNZCycntksTwtLQ0ym0fA/ZdE6145AQVJmuYG9vR9ljiRC0em8F9++t4sknn8Di4iLu3rmt0nRL9EeGEN5bWYHluihNTCJVLqEysYCjtSquvnEdFuuSnyjCzqcgqd/S5TKSOcKpUUC1HWGF1715eQM3bu6i25LEEkVk0jMo5xfh2iVaNwdXy6NkZFHyI/zZ7/8B/PEPfhthMouD3QDZ5DKmCxdQSZ8izM6x7bMopKZhDHTcvXwVb7z8Ara21xDaCTz6ofdg4enHwc5A9aiOH393WT7fWLFixYoVK1ash0IxAH0L+sYRIBZxzB/s/5Yi+mb7vwvR0ZdECON0xvzBjaCBDM8SMJJlfSQCpBNiZAHL3uomjl5+DYlmSy0k2ukP0On2cObkWTq1O8gQaEzTQKvbEbSCaTgoT03S0b6HfC6n1gySZAdnzp1DtVHn/T0VlZmcnEKn2UaaUGXoJg73DhD0A7WGkABLMOgCng+DVUyZOrIpB2lCkcl9kzA0MghqegKhyQoTimQ+jjcKeIw3EIpCHpMU36Qh1Z4RAWSohYgsWbRVh8t7TdaFj4GeJWgUsrAIFoblqmhTFPowi1nMPvoIOpt7qK5uqKGCJiEpMiL0wz5217dxsH+Eb/+ujxHuqnj5hZfwPd/zAzhc38LB1jaeeMdTOKruw8yk0ei0MTc9i163iybtIDAitihNTqqo2sALkM9XsN9pYWvQwR7b0yb0wJWoTIFtsZEpFlR2OFlktJTNocXr+gSiqUIFjVpdwevZxZPw+328fPl1FbF7+pln+O+kjytXriBHgFo+fQp7B/vY3t5FhTCWSWcxP3cCbjaLe3dvY2tvC0Pa3mK/JAmkEgu0UwSa3CQqbgHFFO8xMwi6EYbtAP22j25zgGFnBCOR5MeUQiK0UElY+PE/9CGcr+SxePI0VnZ7tP0cDHcWXpBAt9HH3r1N3Hr9Cu5cuQrP62NmcRaX3vEkTj5BmxsJ7HRbSNkplNMZ/Ohjrny9sWLFihUrVqxYD4ViAPoW9FsBSJBHIjs8pv53vP9byoNjogfHfvdS7yUjPAAtfSSgIM/mIcl0PJIYkSQwDhWMDO9to/rKm9C8LoayhoubRKPexEShjKRl42h/H3ML8zg8OkJCM2DymKRxnihP4Nat21g+dQrDIMDd+2u4SJiQ67yeBz1KYJpA0O0QiHhfKkVnn8AiyRS6BwfQD6ow6w2WGrSDQ26bSA6HKuOYJD+QSFDatJGTBVAJVDahx3VMNZnf4DnLkmFydN5ZZN6Qk9DgyLQhOtrY20X99Tdx99c+CX/QR+Wpi+gKCRk22wk0EgNeGEIfBPTn83CWl7G7uY8Enf1JOv+eT6C4dwM2bfdtH/kO7FWr+OILz+MjH/x2BI0etm7cxhNPP4XD2h6SBIC9wxry2YJMVUKrVkNEe/jDASHIpZUT2D2swnaSfH0S270mNgYt1NgnrVEKWnISOqEjSNBGroVMykWVMBWxupJg4nB3H47l8Bwhi++RLH1Ly0uYmV3Ay69fwx7755HHHsXM/Czu3L6Jg+ohzp87T5hMYuXmbQz8ocoClynn2FenaUf26c4B+7WGbruvomuO68DXAnhOAh6BM5C8ErSvThgUIJR05LLAq8BvIKm8ewTWdojvf/c8ii7vJ3T+5vOv4bMvrGN3o4Gd+zdwVN+GFnpYWJjBiUcv4dyTjyI3O8O2ERAJ2BkZKsjvorm7h63Ve/hzHz2lvtFYsWLFihUrVqyHQTEAfQv6rQAksZPj34m3DIf7hpKzQjCi3/7KbySVdIH3SQBI4j4q6iPDxHhUi/huGVpmjBCOAph0uqP9OnZfeAm5UYQq4UUiNxv3N+DQ8V2cn1fD4FLJpCoHBBU3mVKLfOayWZV1bGVlFWfPnUO71cLW1hYuXbyIQW+g0mW3m02UimVeZ6nhYbKej0RGZFFRxybIDHy4zT70WhPhfhWdlXW0b69icHMN0e0NWGsEjI1DtT5PtL0Li9dYBw1uj2Dv1ZCsdaATXMK1LV6/Bv/zl9H6d19G57OvIHjlBpL1LtYuX2N9A8w8+QzgRUgQpBrtBiICSjqZYz2HcCsFFGem0NveQffwAHdvXMP89Aze8e734fJrr+H1Ny/je77v++G1e7h39QaPP8f2yhwf4KjRJES4qk2dRgMDAleKtpFhcLPzc9jkM4dDT2XJ63oe9roNbA86qBsmehZtaRdgJEsEjqRKte1k0gh4Tqd9fD9AgRC0vbODXL6gFp6t0abewINJwFk6eQqNZgPXr12FRTh88h1Pq+ja66+/TlixcPrsWbQJU7t7W2geVSELs05PTWNiYpIAW1Eg3Gw10Wq3UGf/+WyQm8wQcgmdbkolzfB5j2S167IN/WGg0nYHBJg02/L9H1hGOe0QjIE3N46wujvC7IlHMLkwgeUzJ1CeX4SZTiIIfDR7bQz6YvMUDLZzd30TLUKwrH00OzOLP/GOovp+Y8WKFStWrFixHgbFWeB+l3qQiUy2Ckj4P4UgsqsA6HcPNv/eiiTfwfE75N18aUinWJY/1WWxFx4OtBBhIoAz0tF/4w4+/5f+Ci4YhkrzvHTmDK5ev64iA88+9RSiPp3+a9fxKMFmY2uTIDPAzMyMWtBzbmEBa2urKgpx/tJF7Gxv45CQ9PjjT6qhYPVqTdmhPFGmY+2gRSe72+kQHDSCkIkCHXo7pI0klTUdeI/PlJpHPDagk5+Q9XNot8BMEApYdYniqGiWFLZN2hpE6He6PKKhCIJIkOCjdDreLtqjIQ5435f3tvGu//r/hdM/8n2o0hlP0WPfvHpLrZVTnptG3+vAdVxs/OK/wWf/t7+GH3zHu5HiKz7ziV+Hx/d88Lu/WyUYOFzfxjNPvANdwo0M4Wv7A0RGApXSFIa00+HBHgzC3lG9hmmJdlQbPFYjHOWQyuexWj3CSq+Oayz7uTwOzAoOohIyc4/CM7LQCR0GQaowK+C0raJsQRCwyboa0jY7OwtdM1Cr1QhADpLZPKamJ+GxHpfffEMtNnuR/VQolLG6tsZ3V1GaKKnkEpLQose+E3tleV+GxeG7DNNS85WatHet7yl4NdlmQ9cVBAvHSwIM+abCMECoB0gTiJa8Hv7uT7wT81kHHs/9xp06/uo/eg09c46APcRgNAApDiaB2+SzZHZWMBiwHgPkCHnlYhF+f6gyCq5t3EfzH/8I+zRWrFixYsWKFevhUBwB+hb0WyNAwh3Hv7n5fQUgAQMBH02iPwonCEA8xProEhai8xqN1Fg46HSGE8EIq5/5AspBSOe3L0yBZDqJrZ0tBS3lUgm9ZhvtoxrOnD6jnPsu4SZfKCjgOX3uPCI/wPUrV3HyxCkU6ejfvX0HZTrhU9NTKmJweLBPoBmoBAnlyQmVLS6MAvijAN2Rjx4CtAgUknpahub5Xh+2DHvTiY2hD5vX2QQXg8+ICFFhnQDCEjabSBGaipaFvKHDTpowXclv56E1bOGAZRB6qBRL2CYQ5JZm4c5NqiFqxWwBb7zyOtLFPOxcDn7QQ+nEAhampnHryy/i5U9/HnPLC3jPhz+MO9du4HBnD8+9+znUDqsY+T6cZJrA5mNyagZ+o43q4aFa7LXV78LNZyXpHu6vbyCdzGCmMoU6oanqdXEYDbEbDBHSTp6dwmFriPzEHDTu96V/ZIghgSdNSJDkALlCEQPPI6yVCGE7BJcsAXQWR9U62r0uobKhhhXOz82pJA/rG+sE1W1MTU1hbn5eReZ2t7dUGvDpygRSrqtgbWdrS2WO6/EZsiZUkv/OyqznRLmMIvtWoEVYU9KY+3x/f9BXkSxEHrxmCyaf+z0fOIFSSiApgf1OD5/68goCPYOETXhybfYDn8FzoReoeWQS/cmlMwj5ra2vrmF3ZxeGbePio4/iP3k6O/58Y8WKFStWrFixHgLFAPQt6D8eAFHybpYEQUeKzCcRANKEi+hkj+jwioOeIDzotoPtL72AxO6eGubWIODMzs0oR1qqKf/VXzKdHW3tIiRQzS4uKOdZIltlOstbGxsqRXOWDv1rr76CdDqlFujc2dxSoDRNR1wWVBUHulavo0mHXTdN5AgdqVweMC2YjksostXipuIwB6yXkJgswCr39Yd9QsBQHZdrkmkXSda1Uimzzi58cdIJOvv9Oqq9GoZBH4GVQG6iiKKdhl3tora2q1JTn3r3U9DcDB1yk+8ycOvGLSwRdFQUilDmEvg+/cv/hiA0g8efeBxvvvSyGlb21BNPYW9jC+QyuKmUGoomQ8laBLEugUDmJTkEx47Xw8ziPG6v3FXD0GanZzFs99EhGO0L/PD8ISEvyGRZR5fHI2g62+5m4ZsOIsOGwbok2S6LcNDqtJFKZTAkRAjUbG5us1s0tr2CBIFLImrdbltFf5IE1rn5ObVo6v31TYLPLu+ZxBLrQ+NhjdDRkWx/tPkEQTRPUBt4A/ZLTUXu9na20W814fU7sAwNrmWouVdZtquQy6DEkkk7yLG/Zmj/73zvHHKEHZlVFhC4L98hnBp5jHiffB8WAcgSu0pEj3DdYP93WF/J9jfNes4vLyGZy6LZ7uDHnouzwMWKFStWrFixHh7FAPQt6D8aAEn05wEA0SmmZ0znnr49iyQmSMiPBK+RGfsSBdJNHF2+gp3XL2Nxbg6b6+tYmJul493C/tHBOJtbo4kLZ87h7q1bSNNhnV9cxAavEzCYmp7G1uYmSnTIT1+6hPt37+Jgbx+nzp5FkqCwvb2tIk4ThBU3lVSOca1WxSGf7XeGMAINaYJAUicIEUjshIVsMotcKgvHdpHhNivpmgsFWE5SwZPEtWRYWLXWwO7hAevaxcAPCA4JFFNpZOmgCxDIHBPtoI1MIo2zpy4gYDs2D3Yw9dgj9Ml5bbkEMxDuCZGlcx8R9nSCx6VnnsHmygquP/8SZiqTOHPhAg4JP8lsVq2dVCPETdF5b1SrhIUh+vxOUwS/o2Yds8vzuHLtGtp09Ofn5tWQtRaho8dn7408bA96GMo8n3QaI8KnoZkYDENY6QICkzCX0CVDtZo3I5Ao6bXb3Q4y2Qzf01fzZdbX1lUyhIlKSc2hsWiTRkPWLOoRiLpI0waLC4sKEtdWV7FNGHVp4xNLy3xmFjXWW4YtSoIL6cNypYisRID4PpuUPOg00es0CESbaDdr6DQbaByNF4vttGvcryLRbOO73ncCExlT9a/P7+gzL6zh9kYdda/PawllPV/BT9JxkCHslvgNSAZBzbFR73VQbTfYdh+e5+O/fP/U8QccK1asWLFixYr1H18xAH0L+o8aARIJAAkqEDhCgkGUkFVyNGh0SGUKTUhHV80LovMcHR7i6mc+rSb+jzwP7bpM4J/FxvYWHfskvXE6uJ0Bzj36CG6u3FWT8QWCbt+5o6I0+Xweu1tbymk/f+kR6AQQWZ+mQ8d9fmkJhqmrdYP4WpUNbnZmBhkCQND30Wt1sbu3h/3dfRyyHvt0yg8Oj9QxmQcjgLN/cMjn72J/Zw+Nw4a6p9/uIRECuXQOpXwJ2XQGBkEi7A7R6fSE+zBZmkC+NAmDbd/euo+VvQ28evUyTj/zFNJL84i8ITKlInbvrKnkDnYmpdI1W3TSm/uHcNoDnJyZw/bKGia49Xh9mxAwu7xAyNtRi5CKDXPlAjb4e3ZxHvfWVtBud9Twv0wmqyBNs0zst5o4TEQ4YMXCfA6B67IfDIJeGu1Wj+8uoq/ZSBDyAsKBrPvj+Z5aRFWGMw4HQ6RYx0a1hgvnz6Ep0ZRWGw77z7YNlY5c7un3uzgioEhqbMu0MD05rSCyybpuHUflBGrnFxfgsg967JfNrU01TDEkPIXsQyfpoMQ2ZbNplcY8S7iTIXEOYSuZtJDiOwsEtY+9dxHlNL8f3qOzj9+8V8f9aoTszDTBzEXacFj/lIy6JMS1VaKFKiFRUn1LYg6VnZAgahKe/ov3VMbfbaxYsWLFihUr1kOgGIC+BX0tAH1FEn35bSSnZSqI2h9vvonkrDzrm71HIkACOYQCGd3F3wYfrAW8h7dIREju1wgHLp3bO5//HFrVOs4vncA6webkiWX0/T7WNjZw6eIlbK9vqoxijzzxGFZWVxCEAS5euoSd3R01tEkW5ZRhTpIUYWp2BotnziIgTK3x2v5ggHwuS4d6PM9DhlwleH8yn4aVSyElJZ+F4Vqwk4QAXWodqYU7nVRSpYEuJDOYKJQIOwXkXDrlLGmC1pDfSKNWQzAcEmKySGZySE1WoLk2nfojrN+/j73aIYZ5B3OPnMXpc2fw/EsvY+bUSTi8TjKYiZV2728RZEpqjSCSHKbPX8RoYxfrl6/g5LkL2L+/hnDQR35+BgcHuyp7GsIIhVwe9/d3MUOgElsIwJ1YPqmiP1vbO/zXY6r1kYZ0+DeHA7QsCyOZc0Q4GRGGXMPEKEig4wFWYYJwMEKBbR4QVJyUo5IPpAghajig/HsgMG2tb+D82bF9dwkvNgFLQQj7uFgqqchZvVZHt90lhHYRjEKUy5MoFovHkbOamkMk7a7MzhLcFpHP5viMCH0+s8r+2dsjkBKED6tVtrWtIjWD/pAA1YDH546aXXzHe5YwW5D1ewLYbOert/fx2VfX0WDfNgm/A8kcR2js+UMFgZbrwCI8S1tkAVtJyW1p7HP243/+zpz6NmLFihUrVqxYsR4GxQD0u5QM83oAQA+ywKnFSI/JRmIzv+WPwArPqXtk//jPGG6+WRE92L5VxwQlzzkeAhcZ9NV5SNYEkqiJvIe7PDaeIyTzYTr37uLKl1/AY8unENLBrdWOMHdiCVt06Ou1Kp5+7Cm8/sbr8OloP/rE49ja2UWn3SJQnFXJDW7fvo1sPoeZubkxdOzuYnpuFidPn1JAsX94gL2tLb5bw+TEpFp01fN7dPA9whS9f5mIbxpwCGMp3UCO8FNIpuDIHBK2U9YeEjiUCIU40L4/QBj6MGxeW5QFTk3WTcNhu43be1t03OuwEgZmpmcxdfYkEqWMGo535Ysv4sbVm0hPlrD4/mfhRQEydP677R4ddU/NV5KkDgkayBmZSOwcYH/tPsqShjqXweHeJgZ8r3SVDLfb293D4qVzWNvewMpdguPyMpaXlrB69x4cJ4lDyRhHZ7/a76EqfUz4CdNZ+GyPzuMmu8ixk6j1AiBbQZ9kmrFsfjcherxHoj8SKXH5LGm/T9CbKFVw58YtZceZ6WlsrN+HZRiwbUtl2kskdBXl0XnfYBig0xmgTpjpd/tqblGZ9+XyeXSHPWwT2mTtpuEggJvKoVCZwMQMbbawSDBlm1lXm/2QIKhJMsgo6KNH4B0cNvAj3/UoFiaSKilEggB0faOJV+42YBZLMDIpmCnCEYFSQNYk8MnXKnO2UpYLWzNg8d+EZPzjV4gff1dBfb2xYsWKFStWrFgPg2IA+hb0AIBECmbUT3qwsv3aIjre/s4RIF6gJGdl/2uuenC/Ain5b/z8TSdaEEznOUmILf+TqUAyeV0iQgmXzimd/7ufewHdWhOPXLyAa9fexML0HPJWEjc31jDgtc+845147fVX0aBTf/HCBWi2g83768gXijh99pyCHhmqNjk5gxyh4oBwcEBQkuQKSydPYnpmBkM68Ic81uu0EXgD1mkEx7DGDjHrpwchDEKaLpEqgogVJVRSAImWyBwfGeZlGhoMwlIQhegSEvp8ph9IhrIErGwKldkpVIpFOto2Dg72cePOLdy6exvoe3hkcRnveupp3L9+HYVyAZkzZ1TbMoSb1mENSXe8rs2o24U1M4HqvVUEe1XkCQCHB5toC7TxvKz7s3dwiJNnz+Pq7TtYXV3DxfPncerkCdy4eROpQg5H7SZB00S700WX7WmkXYzKRQxkjR92hkzD0glANm3c8YHqMGTd59Dt9mDK4qSqOzWViEISEsgwNEmM0CDkLZ88reb3SBKDc+fPqSQL1eqRWhw28IY4Yrsdy1LrCKVSeTUXaTgYoHpUQ7PRYp1oe9OhDaaRzVWgGw56g556tkSAJMmDZGtLEI5l/lE+XyQcFpDl8+bYj8uTOXz4XXOYKdgqC53Gxux1E7h8mIAui8LKAqrZJBwCDwhisk6RJLAYsK9G7DeDkJtiG0uE5nIhiz98yWJrY8WKFStWrFixHg7FAPS71FvhRyaZK+BAxCKRIe4L5by1yJnjrczZ+co+i2y/voj4XLX/1XeNxd/qf+M/cpkkPjBkh5ePJBWczq1EqUhKMj9DI1A4EhG4vYkrr72G2dkZBRDbt+/h6bOXUA+HuLG9odaPeZTO9r2VewSLA+SLBcwtLKJRreNobw9zc4uoTEwRJKpo1xrIuC7SmSzajTo27t5Di851JpfFRKWCjACK48JkzRL+CMHAw6A7VMOwlOPNPxI8i6JoDG7cStY61SppMilFUiinCVpZvsNJpjCyNTQ6TWzfX8PWxjq297bRGfZUsoALp05jbmoKOh31zuE+7ENCwMYBpt//HHyCiayHY3sjDFnHdDGD4Yh1yZooz87i6PlX0V5fhzcaIJGzCTUJbG3u4vT5i7jCdq3evY8LZ87j/FlZQ+kK7IyDRr+DPqHNI5R1CRtdGr07W4SXS2LABgXsh5QkMCCYBCSqkeUSknxEBA4nXUSr78Ny0+j3h0jyOm/QJUgSzghiDmFkc28fc7PT6PTauMv+kHlVpXIZLRlu1+ur+TuStGB//4DcFxDYXJSKeWTSklFuiB6f2+kFqNY6aHdpc9o0mTYJQ1mVyU+iSQmJPhG+ur0Oobeu3tXsB7xX1lKq4wNPLGCi6CIg3FmGjv1uiF+5eoiORwhCqBJRyPwrk8+RRXgF4Fw+N5tK8R1J9QX36kc43F7Dj31gQX29sWLFihUrVqxYD4PihVB/l3owBE4Nfzv+reDj+Pg3klyp/Hq57viS3/7KbwZA8gBu1HuOoUuukTrwWCTzgh7UjQ66Ou/LJHYTt37pV/Dp/+VvIDXo4wfe/35cff4lWLk0Ll24hH/z4hdQbTTw4Wfepdaiee3lV1Ra7QqdbknPLDBUPzikwxwSbJIKWiR1tcxbMS067baDQb+Hpjjo/lDVweUx27AIJRqLTkdZ1p5hu+g4y9wkqbPYI2Q9ZQgcv0OEPCfD8CSS5NE5l/lFElXwPbbBSMC2LBWdEXBWqa5lGBivCYJAvUMkC3xWytPYImzpH/sAlv/EDyMgWGihRjg6gptPAXYCAc3mtn3c/9//Pg6/+EVML0xgs7GjTHl67iReffUy1ja28P73fhBL83P48hc/g1w+A0mV7YUReiwbhMNOxCaVijiayKNhaujSOLI4rcU2asOI9dfQ0jPY9nVsdoDp5Sd5L+3hZjDwQ/Y0Yck11byrfHkKrBKBL6OSJQgku24S9+7coZ0tnD13TvXxCqFI4NHmOTaT8NJVi6FKNE6gVDLq+QTjds9HqzdQi6mG4YA2NNWaPWKrFG3oJl04BFn5TiTVdxDZ0FmP8nAdP/Vn3odTM0mE3QEKGQuv7wT4sz93D0MtTUCK2J+a6mdEAq7csA9krpasPdRqNdWcMY/vlE9592f/sOqbWLFixYoVK1ash0ExAH2LeisIPSjKIfxa0boCPeLs//sC0IjOa0JFir7mKnX/+LhEk4gP/C3XSJGT6gw3siAq/5b/Sk8PmS452rU9vPRX/g5uf/zX8dzpszi5OI8vv/EKzhRm4M5P4LMvv4SoPcCjjz2GmalJrNy9i8P9XTXXSOaUzC0uqIVTfTq2nWZbvcWhA65eSmiRtgscSHIGAZJOq4MhnW/Zl4xnEYFBJNeJ885GquJJbfWEAhq5VoBIMpzJMDhJE52goy0Oe5oAICGtUNYR4n1qy2bLtTL8Sl2TSsI2CVM8td3z0CgX8dT/9N/APH9KRUHAY16ng9RkCe1hB0nCxtEvfgrbv/TL6LQPUZgoIEvA+uwnP0P76vjQt30EjmnjC5//DBaW51QkxGO7LN3C6t4+dkYBmhkXiZkKegSKOmFgQCNIFjRdYFTmM3kJNEMb9YSLvYGBw04Spx95EtW2h/L0LO6vrSCfTSsYOaw3Mb14ihAZECANtFhX6c98vqCSFezuHSDF+smQwy7hs35UJYS2YEu0STfQ7jTRrNXV8LpMoYR0rkhwkmQLfIom83w8lSlObOexbjLMUGwstpOIUBBZsPm+SX8Tv/BX/zhmyyba+4c4dWIKV3Z8/PDf/CKaZBpHhe0SCNlfMm9JhjBKumx2P/vNRDabQZFQmE9nkM/l8HP/SVG6PlasWLFixYoV66FQPATuW9Q3AqBvKPHzj7df2f8GGiMMnyn7EiFRV8qvt4g/1fmv7qj9rxyTrQKiseQJmjin/hDJSh62ZWD/tWsIml0YaReLc/O4deuWGq528fwl3N/YVItxylyUs+fPIlCLkPoEHQvr99ewsnpbzRuRdYEyhKEo9NSQK3llIJBDh9iUaAt/SxYwcX4LhYIqsu5Nkdtiuayc+HQmjWQqjZRkkCvk1TFx5CXttuwLJKlFU6U5YttAoiV0sOmsCyyJ067TTnKPrHMj0Q9vMEQwHM/jKRXKONrYx+buLha/7TkMecxi3bpHDSQIC4FFyOwPVba5Oy++qBZelYx3n/rkJzE9OYWPfvQ70SYsfOkzn8H5Ry5gENHZpx0r+RIaR3U0hx6aronBbAmDiZzKBMeKYcR3SJ1lDpDMyRLYkKQQAnkSrYkiB61WH1Mzs6gReGSh2dWVFQmhoFyZwN7+gUpP7fvjpAYWwU9AyHQcFFjHnh/izu27iHRTLZia47X9XleBjUCM2DeZThGQumg2a2g1WddGA8NhqGylImhZGQqXZv/kVYY4l8+WxWkN9lki6GPU2sIf/+5nkbRCrN9bw+LCDNb3O/gXn7uuInRkU0TGeO6PPKs4UcLU3DRmFucwtzyP4lRFJeKoH1bx2iuv4yd+8KJ8jrFixYoVK1asWA+FYgD6PeitsCH737DInwdb/uGP33r+uPCvr2xHI9lXT1XP/no9OP71kKSe8TUS31wm22fnpmA1uti8elOldZ4tV1A5uYi7127AhoEnnn1WpXq+v35fDS1bXl5EqVxCnU50Opukc11RKZRv371DGLqnACnNPkwmHWToiNuOjdAPVGRAQl0y30eeI0PaJEIgw7wkGjRk8ehI+xId4lYSIUgkQTLASZRHglwuwUQm+ruWjaTtqkiUTPSPCBQy9E2GwwkcaGyv3CvvkJTRpqVjt3qIvY0dOL5GJrGQf+oi9EpBRZcG9S7a/PbSxbwafma4LlpbW3j+330Kqzdu4X3vfjeefcezuHz5Ml5/9VW857l3od5uYsi2Tk5NEZKa2D2ooiNDxqbLGJ2YRjtlK3TVBSAIJgKwkrZagwAcAZT2F7g1TYnGuOgT1Hq0U2VqGgdHRzhz6gSqR4dqCOHyqdPY2FxHktApawN1e33YrKNBO/QHPjQCVnmS7+wNUK/W1Xwsm/aZnJhm25PqeklrLcfyMhfLTRIWTdooVCBUO6oq0Ot1e+j1++r7kG9G7Jkk0GXdBGazI/zIRx5Xc5NW7tzGxXOnsNvo44urDZRKeZQzWRRShCfWT9YNcmiLiPav7e9h5dZt3L78Ju6+8QZ2CE9mMo3//ocfVe+JFStWrFixYsV6GBQPgfv91gNGke3X88pXJEEOYRfZRvSb6eN/E731gTKs7KsP/LqolAw7k3Fpo4AdTefZ1XD4+Rdx4//4v7D+xRegjUI8+t5nMEX8ufH6VWQWZnHq1EmVEntjfRWua+PihXOYnp1Gnf1VPTpQ2cUy2bxay+bg4FBNxrcIMK4kGjANFVGQDGC2bsEQGDhuGHlI1VgaKNEdgRGpYySRHWk4wedBG9qtlhqipdrDY9ImwzLg8Lmybo53DDwSCRIIcgkIEgGRb6rbrcPJZTFXmUdqlMIbtUP0P/I0Pvi//gRgJBE0BzjY3cXkmWVgSLhgvT/9134aL/6Df4w/8dGPwWQtP/WpT6poyvufey/ur61Ct03MLC3i8LCKza1ddCWUM1FGsDCFnZyJpkm4EXZjUUkPSDxhICnAe2xWSMhLsAADpHA0TKM21FELaK/iLKbnl1GrVjE3N4t7t+/SplWceuxRHjsgPHqYXz6BgUeQ9ENYLiGTQDEUsJS1ezp9mMEIvufBFzDUdSQzKYKMJC8Yot1ucevxWzKhE440fgtiU4FOse+Q90mUTZJ4BASyUTgEens4VQjxuX/6P2P19h289KXP4b/9Mz+Oz9/Ywh/5679GwLNgytSeIEnY9dElJA25jQi1MpfLTafGiRByGaTKZWgEty//xSdU38aKFStWrFixYj0MigHoW5Ryzo9h47eVnH7AKw/2v5Hect04AvTNLn7Lhb8DAEnURaonV+p0UiUiEfgDvPbXfwbGa7fx0psv0Tke4dufeicKhJobq6tq3tBjdMAPDnfxxuuvEcYCNdTqxMkTyOdzaHUIGrWmSoiQdpMqfXVEuJKMYB3C0LBP75jvlblAsg1lor8AjGGwFg/qLXusp2z5PnmnSBx3XaXFHnGrKdhRd/BZHiFOojDyHAEfGc4l0aV6va7Wx5E5T8ViAYVSXkFfY6+OqO2hYZhYncng+//+X0Pm7GnAT+BgYwfJIkEtm8So10X78lVs/NIn0Lp6C5dffgGXHr+kFn9duXMX0zPTmCKcbO3uY3V7B01WSJuswJibQjvloqpF6LFuOtsQ8dmjyKDNdILHgKDSI0jxOBs6HIToBQa6egZVwk8rkUEzdFkdB4sLyyoqs7SwhPXNbdy+dQtnCZ625WBnd49QkUVlehbdvodWt68WHM3kCuxPHe1aB32C3JCQJEP7FGiSoGX4XMqxCaGEL/a9T2gTKwt8CgBJFE2GEaokFAKgVIKI1ty9hUV3gC/88/8Rv/Gp53HzyhX85b/w/8Svv76mAMggcAa0q2nkYBN4BHBMgrKrhsPl+MwE2y5ROslCKCnIs/jN/+aSen6sWLFixYoVK9bDoHgI3LeorziN3P62Rf482D7Y/wZFIcHxVshgvP/NND4nk8+Pd9U9Ci14n9oeS2WGo7Mb8qAeRjAySYJBF737O1iiY1/b2MKt1TtwcylcOHUGvjekA34dlXIFjz36uBq2tru7i63NLWxtbcN1s5iYmMbkxBRk4VIZ6DUcDBHy2TYd85REAGQeTyY9nm+Sy6l1eARm1O/jIvuScMBNJZHOZlQmOYlgCNioNrG+8o0IwcnEesOxxgui+gFq9RrW1+/jqHqknPlSqYSJyQlodMj3q1W1MKgkBXD4/Kn5eYR0xg/9Hhbf/QwiOuiRJEg42Ee2UsTRwS7q6+v49D/9eRxdv4OPvO+9BA4XBzy+vLiATCmn2i9D/2SejzY7hdHJWTTySbQtnQBojNc2MjU6/YSzhA09YY37QeNxyyCPGdAkMiQ06hDAGqz/YRWp0gSvMdRco3KlzHfsYX5hUSWbuE7wkPlOc6x/q9lEldfrhoZyMa8yvh3t7yFkXzmsq8t2Wq7Ddo4U0PT7PfTabWUbiQKptXykDvwOBB5l4VV5tsxPkt8mbSUG19jX0bCNmbyLP/m978Cv/8ZLaDV6+MgHnsGd/SE+fauLXGkKuYkJJPntZAiBbjkPk33Oh8KQdYHYRxbrlGV7CvmsCkD+0WdK6luMFStWrFixYsV6GBRHgH6/Jf/ZXYazyVYs/U24RqIE9K/VVnHNN7lO8EYGhinMSchDv3qhREoEnMYRIIk8yG+dEMRzWgQt8OisjwhALbz0t38Gk6uHsPp9fPyNL8Dz+nh8Zhlnzp7l9SE2NjZVhrkz586r521vbWJnZxfVRlPNZUm6SczTCS6Xxmv+SIY0mfsj0YcuAUvmjyD0VeYxaZSsEyORIolASPICmSMjdZV01DLETNhAElnLOWmaOOgSGZJU25LxrNFtIZDhZHxeMpki9MgioGlVtxbbU6/VlINvSVIFOviVYgkBn9fu9HB77wAvWwP8kX/4U5h/8kkkGxG2V+/Dns6jN+xg+wvPY/dffxKXNAed2iFGhJT5xTnWP0KV7djd3EdiZMKenUFwZgFreR3btOdopCPdTcDxAvStgM3VkAgsttHAMPIxiPqgBVS0bDQgXLBdW4M6rq5XsdG14U6dw+zyJYKIRM96qJQqBJgE7ZlCgVAhc5Aa7Q7OXrhIk2iot9oq6pXNF9QCtTW2+5BFYz3sbB45tlk+Nhn6OCAAdTpt+P0O6yP2tpR9VMY8KSbBTYYQsjjJpOoLg3UO23s4kQ3w83/th/DTf//jaNcH+Ot/8Ufwi68e4i/+63WV+MDSQ0SmxXsJTtJx7CdJey6fuaTCHkhUrdlCo3WEw71NeL/23/JMrFixYsWKFSvWw6EYgH6/JdYVRpHtg/1vIPEj6YOq7YP9b6i3XCj/Zf9BpEgOix4AkBxQh/g7kPkj+jgjme4H0GwNW88/j8s/9Q9wIZWFFnp46fLr2N7ZwdzcPM6fuYBCLkMntoG9vV1k6YwvL56SCS4q6tKmc71/eICGZBfzhnSKbZW5LZVJIZPPqTTIJkHGSAiqaQrsZESfZIkbEcB0OSCVIxF4dLplzZ+AcOTxWTI5X8BHUmhL0gNpnWR5S7sOHNtQ6+FEUQKdXkdFniS9tgzLykpmM16nWSZCAkmz08LWwR763QF6YQKbaRuP/5n/B975R36YTnqEq1euwS4mMTdZRHBnBVu/+OvA9RWcKFfg5JPwLQMHzSo2j7aQn4jglAFzYRG71jTWkEabzr9AndXm8UECfVsy5rFRgcE2amyXJHhg/diAIe3GahKKQsLPHby+vQutvIDJ+Qu0Zx+mk0Vpch79foiClUNSdyR9AkqFEvZ293Hzxm1k0jk1FFHm2XS6MuyNtrEcpMv8N8RjkiluMPTI2Qmk0xnVHxIFk6hRlxDYaY37asD+l8VNtVBWzCVw6hHhdQDb8pFNmujsbOGZ5Wn8o7/zp/EX/vt/hFLawE//pT+Bf/CpW/jL/+oG3GQRDr+tBOFWJbVgnwZsq0Beq95An/05Yt+nXBfZYhHzy4v48k/ESRBixYoVK1asWA+PYgD6AyaBmweQE9D5/CoAjY+rFf6PI0FSZHFRgSGNHris2B9KQgSTEEIieeUf/VOs/F8fx4fzCxgZI7y0tYLbt+4hl6XjOjeDyUoelVwW7VoNB1tHSNtpzC/NwTahsrnJ0K16q4l6t03HekinXLKbDVWqZJ3QIWmgpXaqjvzKDE3WN2L9hAb4Wybly1pGGt12mfujhmPJHB867unkeDK/AI5ElmzCXo9OfovwleC1kiEtl83DIgTYjquGfkmGtnanjSbr04NMytdQnphCujiJmmagVixh+Tu/Hclzp7BTPeC7Enjq1DIGt+7g1Z/95zgf2Uj3Byoite21sNrcR3bKRPEMHfvCFsy5JTSCi7i7mUKoSVIBQsRQUkinECQ8Ao5HGIhY5xAj/rPyhrS1bqPPFvZ57W69jleuv4kdI0BmaR6F/AR27+0i4eQQZgrIZaYxjRy0Lh+ZJMCYBBw7hchLYPXuKmq8P5WSbHx52CkL+9U2DhsenBSvy6bVUELJetfud9Hr+egNPNjss2QmCTtpsC4EHtp4MGS/DPmDdUyEDdT2LuP7vvMxvOuJE/jf/9JPYT7l4m/97f8FP/QjP4kf+e7H8Tf+hz+J/+4f/ib+5j/7FOzsCZgRnxUOMZIhgLYFwzFV8oNMPo90pQyb+1YyiZSepB2AX/mTWfWNxooVK1asWLFiPQyKAej3W2JdoYDfwcr/npfxAl6hgIIwE301AvRA8lsNfTu+LiToCBDJPBVNnHP1Z5wQIdFo48W/+ffQeuEKHp+fg0YwOmy28PqNGzhq1TE1O6nWxCkmc8hZOQwaQxxV6bBbIZ33PAEkq6BFMo3J3JyRRAR8n799FemRNNiSsU22IgEDiQQJ7MhwLJkob/KdmhyU/wmg8RrJLiZD3SQCJKmy5VqJ8iTpVGfSGZVuW+a0DAgrrVZXRaSGnq/qEBJ67HwaTs5FrpDlMR+bu3t4Y2MTu5aB7//v/jzOftv7SGO2Wqz14tISeitreOWf/QKKNbbZTqDW3EHb6sOaSaGfrGL+Ep37RRM39/eRm3oa+80S7t7rw3Fm4fddtlXmLYUYBkMCUDiGNsJP4LEtCdbT1NHksTdXVnD9/j1YyzNIzU8T6AYYNofQnSx6mg3f0wlAWcxkZjDUUnAIP4Oep6I1uVwBw6GH9Y111BpHaihatlCARcARW7V7HZXRzSA0pdJ51i3N7rf4mRgEIvZLQgP/VsMxiZqEWJf9mocZdljXXfyh73kS/8V3z+Lq7QO88uk3MH/qJP7e3/8lfO93PI7/4U9/O/7qL7yGf/a5OyhUThOiCKZ6pJIgODa/JPa/F/pw+T0ECRM99n2rR5Ac9li6eP1/e7/q/1ixYsWKFStWrIdBcRKE32894BPZ/jZFcczx9rcrEukRcFDD3OQWHnxreRAJUuf4Z0S4iFhkmrsmU4bkPCEhQYc8YbuYPX9JzYe5f+MWcuSUTC6NCVkvKO1gfXcLh7UGAWMAbxDCslIoTk3ASDnoEk6qBIaDgyMMu32QY2DRu04STJKaCSNKwOZ+2nLgGiachLjdLHTELclyJ6mkvYAA0cWw04Ev84b6PZWEQSJFriyKms2gXCqr7G5uvoCRaaHV7WHn4FBBzSHf3xn0oROOZM2byjTBolxRE/LrvTbu3l/F3dW72D84QHm6gux0ASceO43yXBmmpHNm/UoT09hYWVfwlc0mcW/jKtwZDf1UHQtPFTH/zjS2emtIllKYXKpgdesmJqYKatHQ/d0ObLtIe9vjLHeqS9g2aZ/YmjYYERB9Sc7QbeHGxn0MHAtZwo9dymFndxeViQoSrgV/FCBFqKnvbRN6OtAMmZdDTmNfSbStR9uwipicmSL4FNEn2DUIqf1OnV3qI510WGS9pBE69Ra6hNuwTzDt0Z66DZP9kErKmkoGbJ2gNOK5ThVRv0HbH+G1F17C6voW3vPYLL73259EszvEr3zi01iYTuN9730Mn3n+Jq4TFF3dINR2CNFdRAPe39qBFbSQBN8jqbfrVbab9R7pLH1+cz382AdPimFixYoVK1asWLEeCsURoD9gegA4sn2wL4kFJEoiWzkmaae5pxzxUJdVXkYwJQIk0MHejhCOM5QNJSJgINir4vWf/hm0XnqdoFCCnTEw8PtI5/K4e28d6/c24egubMNBebJISEopZ3sUBISaBLxuF/1WS/3W+XRJZCDZ3GSSvZp4LxEfoTu+/EHKa03mCElihMDnYVaOp2UYm2StkyF0A1ks1aOTzv0+69lju3zeK22S9YBcN6kyx8kkfglrSLKEHqGs0e2gOeyi2WvBJHhMl0uYqkzAzKSw0qtBW57Et/+pH4U2WYCXMDA9fwK7K/cxVSxh9/Uv4jf+5d8lTLXxvo9exEF/DYWzKdgEvlU6/wtLCzSXjeu3drB08oN4/TUP9cYcoWOaNTAwPB7+Jwu6BkNZ/ydAQDs0tBFeJ4y9unIX5vQUJs8uITR1rG9uYqJCYIs0NVTR7/G+WhuDmsf2zcEyUsjlK0i7OV5DSArYToLoiFZ23DRt6aNZ21NpwCUaJgue2pbLvsnS7hbPJzAceHw8IYp1SBiSFmLA+g5g8btIsK6VdBp518DsRBZZu4PnHl/G93z4/dAISv/2czeQtXr42Lsu4tW7DWzzWaV8lt8Yvx1ZU4jfU8KLUMnLorX8ZvhR/aNffBVfeOMekCyiTri1HBfX/+Z3qz6PFStWrFixYsV6GBQD0B8wvRWAvpEeHJcUCBIBUkPgEiF0ckciECjiOcKGT+dZzmseocWwEK3s4fL/72excecyTs1XMGo14bclM9kMopGJe+sbat5Mp9NC0nQU4OQyaeSyGbi2RYeaMBMGKoIzHPTV4pwiGf4mQCBD0TSJjEjdBYJYz/FQvXHWN4E3WbdIkgbQe1ct0C069IQdaZLMyzENAhXrLEO9ZKjcsN9XiRA8liGBKeA76bcjmU4hVcgjm8mqSFPQ4/koRMfVMCil8OH/9EcwmMvDmZxEYXIewcDH85/9NG6/8Xl89IPn8PLL/xJuton3fPgStpt3ceLEJFq1QzQOGjh14Ulsr28RsEbIl5/Fl78QwTafQavDdrINMvzP9whw/SEGbHuCgLFDW3/22ptYbddROnsa+akJHDXr8AmihUoJ3UYLCWlTp49Bowk9NFDMzaK+W0Oj2sPcyQsolRYRehbt6fAdhI0e2z8cso3sC8tStm41G2g06ryO7z9eKDadSsGyJL04DTsaEk97WJifwOxkDsuzMzi5MIeTs5PQoiHq1S2s3Hgdj5xcwuyZJRhWFmfTNu1/AG9UQkdF8SK4hFfpIcnaN5b0MXvGTODXXtnAX/zpfw1kKqhHLiJC8/b/NwagWLFixYoVK9bDoxiA3oZ6gEACOBJRiRIBHdaITvYYgCQipJx1ARCBDX8EO+J2dw9X/+0vYO3Lv4HT6QxyvoVezYMHS633EtKJbh41UN05Qp2OtkRcokQE0zLgJpOwHAuaYahFOE2N8EVHPAgCBWWysKmQjAw1U/CjIEgCPya3kpFsPFxP4EzSbwscSZF5TgJRoc93EXAezA+S+USSVU6eYRgyRyaLYj6HvLyGDnkvlAU/RzDYroyVpHNuoEtO2AxaWHzP00g+9yQmLzyCqRNn2aYjNbepXDCQLQRIWFV8+t/8DJKpPh55vIxm8xomyxYON+t0+kuYWJ7Fldefx+TCO3C0dwFr92Zx2KaFWReBH59QKZn3BrS6T1tcJzx96uobGBYzKJw+odZAkox7di4NJ59Bl+Disq7DagO9XhvZVBqVTAGrV+5A01PQUxPw6wGmFh6BnsgDgQst4RIqRyrxxIMIYDJpq+GDaj6S1yMQ1QhmTYwGHrShx3Ps74SPs6fm8I53PIpyPontjfs42qnicK+F3d376NU38Fd/8r/C2SdP4K//jZ/Fn/vRj+JD77rAfspjQPut3N7EtWtXMSRMdWpVNI4O8P73fQhnLl6CXUjjn3ziFv4/P/cZGIVZkugkBp6G+3/7HeqLjBUrVqxYsWLFehgUA9AfMP1OESCRBFEEJlQ4RYV8ZNiZAEeIBJ1luTPk/fS5VbQlIHXofguu2cNo5xZu/9t/jfUvvYAciaFszxI4LDT6fYwcDTk3iySdb0ml0O51UaXz3uy0UWs31TMTalFNPo9+uMruxt+srUoMMF50cxw3kMxugU+AiUyeNZUTL0PgJDok1ZII1jihQqCG1CVCOvFRANOw4Ng2C7d8XorgZcs6QqQPi20xuk2CwQA+zyVMm/ckYOsmvJGHvhNhy29iY9RG6YOP4Yf/yx8nFPBc5COVddDnucg/QrO9jaWZDD7x8Z/H00/No1Ai+Gg1JAIHB2t9FOdmEboD3LyyiUvnfwyvv5rCnZ0AYShDziQi5UM3HASs6xEb88W1e3hxcxX5C6dhTOSRMV1sr2+isDCLrkwWYjvTwwjNvX3WoYdKpYQM7XXnxdcwef5R1knH4c1NpGbOwSQA5VJTsAhGGFnsYlvZSCJOkgFQ5tZpNHE2m4ZmCgxFhFsD5lCDx3d4wwHq+xsYGVLPJgatJjDkd8LnGbx/MmvgZ//u/4T8tIFv+7Y/jj/1ve/FX/2JP4t//PNfxkavjuXFRQxo6xTbkXJYhaCHmfkF3u/gi5fX8UufuYqukYVnZmAZBLlcAc//hXnV57FixYoVK1asWA+DYgB6G0pBksIIiUpE0Ag+AhQCLYmRRIPIHXSwRxJuIVzIYDhd24Ue3UB97TU4nSNEezVc+41raN714QQVjLwELIKGJDYwCRQCOxJdSqbSMG0Hfhii0+tjMPTRbLXR6bZkYJQaCidD02TYmsxNElCRd/PmcRrpkc46joFO/kgYReaXyLwhASmpq03YkWFeriMT+VOEIFnsk23iM0hSvEraHCEYDJDWuOWbB3KNqfN4SBiJMBz10LJ6yJyehF9mvR8x4JZ0TE9W0GgeolTJw4+G0Gwdt29ex4Vz55HPF3DjtVfxzHtOIfT3YBguGochASnAyUcfw+rdI3Rqk8hk34svvLrLNktKb9pzIHOaLEKAgy3a49dvXsPKoIPSo+eQyCdh9gJU96uYOnsKe4MuzJGGgg/sr64htDXML8yhfvMuOo0mFi5cxNaVa4QZSUCxCHgGdl6/iWxpBoWpZdpW1vqxCMUW7cZ+INVK0j3Pow38oep1S7OQMnNkIRvpdJE28Vm6vGegYGk4iNDv8MpeE+cmbfxX//n3wSmE+As/8VfwPe97Cv/Tn/tR/MW//jn849/8IgrlEtxMFhr7Ip9LsW8M1Oo11NtD+ITdbIVwlisjmS/BYncm2L5P/7kz7KFYsWLFihUrVqyHQ3EWuLehJFGA4A/ZhkAhGcmIFgQDNcRMIIh/q8Ljah4Q/xjmNmp7v04n/ibKCzraUYMYkUBl8iT6bd43BJq7VXTaDT4rUFAia/b0O100qnV4nR50fwQHJqYLZcxMTqBCZ3myUEI5X8QEj5UzeZSyeRTpQBfSWeTTGeQzKRSyKV6TRSWfw2Qxj0ohh3I2gynuT5XyvE8WWSVomTbhyVdAFcqcn+EQAbcKggT6pGgJRBbrZYwwoAfumSSLVIjJs0X0M20EU0M88R0XkZv0CQZ1aP4hlueT8NrrrK9Jm/RxcukE7rx5C8tzS3CSIaq1HeSnyoQLDwnHRmsY8ft1MLfwTly9tg6HUDEIk9jdPyS40fLCcTR+xPrudDq4vHkfIdtilPMYpSz4tSbshAm9VMSQUCj2H/VC2nCAVKVICEuivnqA/MQMkrTPwfYGyrMVuCmdsMI+2LmH8nwO9fo2++aIIMPOGXkY8N+UDBcUsLUMB1lZJ4ngJNOsPD1AQNrpeiMMCY5+IkQfHjqRhx4rHFoOvH4dl05m8cgFyaTXwetX3sTFC8uYXjqJL95pYmVkIyhOop/IoR9m0Qls7NaHtEkBlbkFpNl/TtKGayXQqe+hVdtGFNTw4+8/rb7LWLFixYoVK1ash0ExAL0tRRCQsIiS/Gd4Qo8ckLk2hKCERqdVECiSYVQJ6PYqWtVPonP0BmZmZV2ZOq5dfx3Tc5OozNAhd0MMjRaKiykMhgGGnRF29/bRqLcIQkkkXcKJZvE+H/3eEK1WG/V2HUeNI3T7HfihRIB8hIkAujmC4Wiwkjo0E9C41V0DmsEtocFI6PD7vHYQIKKz7vcC9Fp07HtdRF0CTLev5v6oZAgRn0fYiejcD0Z9wsUI7XQXh1YNQYnANxWgeCEPc57PXUjgkQ+fx0Z7FeuHq3j0sUuwjQipZISI8JDKl9SQQCtlo+8NUaws4d6tfZy59Dhqu6tIZXWMzARMewJbOzZteAG5zDuRTj8O1zkJTctie3MFfdbRsHLo+Ql0ae57tS7uHLaRmidUpEMYuoPhYRMugS90k3w3+0Nna9p92rWH3MyEmvfU2tnHzJmTiAh5rXoN6dlpAlAS7fVNwkyEuXOn0KgdAEkNbb8B0w0wk9Hx6FwFdtilvVuEQ9Zl2EMiHKAfDFXkTmXfI5gZts2+cPhul8CVgpspwhx18ciJIpZPTBOSeqjWDzG7OMd6F7By0MEeAW2kOfxe0uw/Fpewk7RoC34T/SaCfo0guY+QxfCbmHIHyKGKP/r+p46/xVixYsWKFStWrP/4igHo7SiZ96MASOaABGQcifpIumgdkSbDswhAIwOjYZLg4fPYp1GrforOvIVkJonbN66jXMwhX0zCT7Sx21zB8lMLWOus4OTpC0haBYzsEUZWAq1eA/vVQ7VwamgQqkx6/YQSnSAR8vURwWvgB2gN+uiytFnqrSbqnTaa/S6aXVnItINuhwAg2dp6nhpCFoYSRiGfqaiOxEg8wkNEp91ifRPoRT48AkzP4D1JH1qJV6Q9hPMe5p6dRmrJRHrZRGZZR+VSHrveFlYPVvHh7/4IeoSUWzfexNnHFmBlaA/Cl2GXWFJImAFg+rCcFOFNg98aoDKRRndYhe3mMBhUkE69E+XC+2jTc7CtUygWTiNJIPAGe9jf28ZwQFvbBVRHPu4cdbDL56Rn8gjMNlwzjZ4A0FQFMkBNhgRqkuGu7RGeOshMlzEiMHZqR6icXECH8OMNPWRnpqE7Lo7ubiI1OwPNSaPdbMEq872WZINL4GNPXsCHz5/EickkpudzKORNVFiVrFTHIivpIRJ+FyO/h2G7pdZhCocDBIRLUieC+iYuLJRQYN/3CWM7W2vIFQrwRyZu3LyF3ZV1mIRSLSIIhVXofpWgU4MTNZGK6kgFDVWSfh1m/xAzqSFSYR3f/8F4IdRYsWLFihUr1sOjGIDejiI0HBMQJfAjA9704yFwck5+0SuW+UDWNhq1L0NL1FCansLOxgpajSoW52dhJ1O4v7KBibkl9AkmDh1wO5/Cp1//DVx87hQmTtCptwfIll0kCw5a/To6XgudPqFo95COdYRBd4iAQGNpLpxECo7OksjCjLhFFilYyCYIKkYStizXKnODZE1Rgtkw0UHf6GBoEJwcDVUzgaY1gl9woc9k4NLJL56fwuJTS5h5bA4T5yah5wlDroel01P0+AlVWp1feQ/nL55Gp9PEqy9fwXd83/dgENVw8+4bOHlxeTwHKXBgGAQg2sYlkMhEmkw+g53N2yhOTmPvKCIcniWYzaJUehdM4yxLhZd1yRF0+C0LrdZ9GNaA4CRzjly0aep7hwcYyOKjApNaBNtOY3BYQ45A0x0SRCVZA98X1dqqt/KzFTQIPaOhj4mFWextbkuaO2Qny5DFaw9X72PhkYtsSwc6+9mgTTIpByeKJbzv7AVA0mjzOU7GRTGXwWK5guXZPOamDSxPpTBXsbBYsTFf0jGZDzGV81Fyuyg6bUw4A1xcKmOySPsGXQzaVUzkc8g4NvlogBTBdqaSx4mKgVO082I2wkImwCJBp5RoIksIyqOFbNhEBmxPRJAjYP3Id3xUtS1WrFixYsWKFethUJwE4W2pMeTI5A9JCT0+JPvcJCTzGpFIokLaAfzBizja/yzKRZnAP8Dl11/GmbMnkXJdHG7vo9PyMLt4Hndfu4kTi2fwL/7VL2Px5CTe9cQ7cPPVm+jsdnBp6TG88fwVOtIT0CMbe9tHcDoG9LaOwWCAgUR1JNrgy3SdEWTtn4hb7kF3hwh1WTOI9ZMxcaYBzbEworOdSBqwMsSipIsgmUVoEcAcEy4dfjtjYmT60J2A2wF020cu7yBvj9BsbBLGdjF/WubTDNBq12HZSZw89Rhe/OKb2Nmp4/t/7I/h5rXfRLu9gne+9zn4XQOjUFdr2SCU5AAEk0QGK/f70PV5lCuPwHUXCDoTrPcs4BfV2kS+10Cvs0k4msD65m/g9dc+hRdf2kVm6j04MlP41K030UjacKYq8CyymO2gu0qofPwx7Dca0HJZts9BcH2DIBZh6pFTWL11C0k/xMJF2v2LL8KS+VBnTsA7qGHz9Ss4//73YHNljZChoddtYrqUx/svXsITuQqsZocAaaKVYG/S3u7IgakH8BJdcjHJMiHr+tDGmiROYHuNMSgbBvvE9+GK/RP8FiRzoHSYpsGPWBIW+n4Cw4B9RjjCsAFZ7ynwCLj9Hvxhn7zD39z63gCyJlTHcIlDDv713/ob6h2xYsWKFStWrFgPg+II0NtSdGqFf2Sr9o+LpsaU8QidewwJQLcJC79Bh7eBTCmHjZWrSGdclf0spAO7tbmFExcuYvX2bSydPoXL16/Cngjwvu99Ci2vipur1/CB73wfbq1eRddv4B0feBL3j+7CMzs49+6TaLhVBJNDFC9mUbqYw+RjBdiLGpIndZQuZVE4x3ddSiF3NovMmRKy52aQO7eE5OlFpAlh2QvnkDt/AanTZ+AuTcGaKUAvZxFkTQwcoG9HaCcGaI4G6MBHgw74kF7/9MwM8lM51Nq7sFIRKtN5tLt19OmoX3znszjc2sWtN27huW/7LuytH8AbRCjw+oTZxkjvwgsJYOEc7fMIUrnnkM6+E9n8e4kbZzCKZgiQWTVnqdfeR712F+XJPHyCQTbXQbe7gl/9t59Ec5Bm/XJYbe0R3iLoyQwSegqDoI+R5yFVKRPShgS8NAyJsGwdwtdHSE+XUdvdRdpx4ZTzaGxswUinkJ+bQm1nj3UAsjNTaLWacBzCjWZgvjSBx+ZPwO4NiRvS7+xnPsshRKYINhZ/2wn2OsHTSRgwI57j52BFIZIJ7o9CEDHhmBEMwqjNY4ZEDmV4XhRBmFCLfG59GKM+LF3yBrKMAuiawDRZSdZl4k7IO0O+Q2A20C3oloMf+PCH5KOMFStWrFixYsV6KBQD0NtS4+iKDOcaD3lTs4HolErqaCIRHWFNk/Vynke7/SUUi3l43Q42129jYXGBjBShenSICkGi1+vScWd/+UP0+i2890PP0vkPcePqm3jqqcd5fx237lzFt3//h7G6dw93t28SkN6NncQW7mMNZUJP5fECzBMgDPVgLEWYeDIH9zRgnxrBPSlQVIK5UMJIQKLEuhRyCIuEsEIRPr+Rvm0jdNgil21wCW+OCc21oNkEAEnA4GboaKdYT25HKTQ7Q7rzCVSmyuh7HVi2jqnpaQJQHx7bc+Hpp7F3exPNvSqe/NAHcefGG0hm07DSWV5foKXOwbSeUMWwL3A7hSAQaEyO7arXMTLexMraL+LqlU/g5KnzNGqW9rmH6akEXnzlVbxybY+cNINDybGWM1g/AhBSBKsefIKHnc6p1OGjlKPmAAXrBCADSM+W0d47gGWYMAsZNDf34BSyhJ4JHNxdY1ssZKcm0W21YLkp1s3FxbkTOJWvqMVUJTOfDKkzeL+kDpffJmFEN12VgMEykyySVtwm8DiEJO7zeofHHIfXSoIK7usEK1udd2FZcn8ChjlivQhH/C2go3JoS0p0zUJA6JEokcfjnmwTtppbJZkIv482jhUrVqxYsWLFelgkfnGst53kv8ofQ1CCv/jXSHbkDI/L+i/QjtDt3kbSHdDpBdZuX8fkzCR0ncDEr0KiCJl8FtXaIfLlLOqNHZy9tEzn10Fzt418sohyaRJ3bl7D+z76XiRSAa7ev4wP/NCz6CdruF+7gTOPTWPpfAED7QCtcAuBW4NTGaBn7GJg72HoHmEvbGOLjvu272OfYNA0NB6nU52UIXB0utOEpMwITtqERVhwXJZkCm4yixTr4DoVZKxpZO0FlkXYyROEk0VCUB4bmwmUik/CGxbRH9goTc7C8zvoDw/x7Hc+i2b1HvbWLuPMI5dw61YVgUe4C38ImdQfg+W8k849oSzIERoJKolDZTPNaBIkr2AQ/Qom5l9DtriG4WCfwDEiVJpIEs6eeuo0RnoLXb7LJwGMJMsbzZ92kzAkCEcwkEx2CEcIeUKWfh0FITSTUCHXEiykz1QSiShim1x1j8wBSiRtAhTxjtf5PG8S2ibL03DgwtST0JJpgmIKhpMk/Niq6LSZ5ti0Ja9JEYwyBKG0BStDQKJd7bTN3zzP6yyCpGEnaeMs3FQWpqy7xGfZfKZlE4Yc2p9AmnIstpX3sc42i+vwnMosJxn92HekZo3tCEMZ3hgrVqxYsWLFivXwKAagt6lkLRhJevAgDhRxX+YBibud0BoIgjsYDLaQyeXRq+2ryEQul1IZ1moCPROTODo6gEMnd+D1Mbs4iUyJjjjvP9qu4fTpR7B2dxUzs3OonDqBF174Ap549jwKc3m8cesVPPHoeVyYX0DU7kPr+yg6OVRSZbWQp5vIAkMb7WqA0SAH+BUYowlY+gRcq4gMr5WJ9xk7QtbykLOGSDu8T9I109F2nRSSdNRdw0VSkieYGThGDjbLSJP0zJN04JfgeTO4e9uHZZzBoMd3ahnkpybQb2/R8T/AuefO4db1PTryT+Pixf8MlvYcMsnn4HtztA2pkBBi6EMkIoJPdED7cUsIGo1WEUTXCWCHKOUceIPx4q2unYMemXj0kZOESQcJewR/pBMacggFeAIfCS9Qw+dM/tOLBkM+X4dBUNAJQzr3xxnvEmOIEOiRIYsCTPyXGhCGEoSU3qAPnecHgUdITaOcyyEJHY5u8T4bso6QRIZsFpPAqtuEHTfBeowIOXyPExJsQOiRtN+y1WgPjTYjRjkEHycNmzZW4EMAslO0qQCVnYZhit1NZCX5gmSYI7BKlrm0ESKth8gQBNNmhLQVsU/GEalYsWLFihUrVqyHSTEAvQ2lBr1J5EeYR34QhhIJWf2fMCQHEnU0O9foIA/p0GfUnJiJ6QrovRNvAuVoJ+n0Hu7vIVfKwdRGKBUJEIkAB9v34RboOesj7O9s4fQzT2H7zm1kslmcf+IJvPz8i7h08VEsnF7GVmtfzc9xJifgu2k1IX5oT+BgmMG1zQAbjSRCEFw0Otl6Bkk7j5RbRDJZgONm6HAnYVg2HXFHOd+mnaEjLoXOOEHATIpjL4WQ4WqwuTWSbLgtM1hSyGROwNRPYm9XhnwtotWUlNMpjHhto9NAfvoZnH7kz0NL/BByhe9Ed0AWG+2ynRuEmS7CwTb83ufRrn+OcLILnfATDlfh9e8TvCKMvBFs5KH7EpUZYjikfY085mcnUZyQoWE+hoHGNmRUJCdQa/KEqoMcGVdIAOLL+VzWW6JBhKREgjBCCBrxOk1gSKJBgq28X6J4esolvBKi5Dj7oFRIEkIIHbRkkQAjw9lMU6c9TTiaSfgbR2iShBaX+5LkIGlyX4plwaF91VA3EpGUpCqETEKT7fA5Fm3LZ1oS7RGoMtPja3W+iwAqQ+dsPksiQRYhUIopkSnWTR2LAShWrFixYsWK9ZApBqC3oWSwmxoAJ8PgJPlBQsZdRfw9HhIXjqrwgy0k03TceyG83oDQYSrnedDroDxRQatapRPswOINSddEFNBZH4VodI8wsVjG7dUrqJycBaIB1u7cwZPPvhv3b95DIVPGyZMXcLC7zutbyCRlcdOQDjGdYTODXmuE+2t1HptGNn2STjWd7xSd5RSd55SphmnpmRwS6SIit8wyjVFymmBTVOvwWAQpy3Vh0dmXYVxmhvdlHxSJaIQw7BDpXJbvzNM5n0ToF1Cr6Uilp9Hr9mHzec3+h+il/xBmT303PD2Nnt8n9OXpsBPGzB5C70U0Gz9LoPlFaOYXEPZfxubdX6VdvghveAtmoqsA0zIsgpaNMArgD2jzkY3KRJFAmUKnXyO4GOwJi32QkGzWCn7UsDZJfz0M2C0RdEMne44w6PZUvwkQ+Z6nokE6wSUgDPlhMI4U8T5dAIkgy58EmVBFYLIEDpcVckgftmVwK9AzBp6U4SCdyCOjjUtKlRyS3CZ1AqdWgEtbJQVCCTYS4ZHnJOVZNu1qJghLMuzNRTopAJonwRWgc5tw89C4L8YfEVJHhFYJLyUImhr7XJMPLlasWLFixYoV6yFSDEBvW9HxVJGfYwiKLDrnA2haHYG/wt/bsOik1g73kcw6dGZ1OvE+nWuLYFRC9aiGDCFC10Poyn8fwfNCglKOPyx0OkMsLp3BvRt3UJ5bQJDQcHhwgAuPP4p+s8biI2vTyU6G/Mp6rEsa+9s2NtZsws8yJisXkEktw4+yfBzBI1lQCQ1cN6mG3TmEryR/O44Mu0oTZiRKRPBRQ97SdPJTMA3C0HGRfYPFoSOecrMqCYCTFkhKsX0TGAY5tFoVuM67oI2exdz0j9JCj2HYTwO+j6QdEfba2F9/EWHvTdro83BzrxM4VglofUQ4JIis0UZ3kc14BBfCGiHC9zoIE0esQ0B7rqPW3eK7l7A0fQ4Db0DQiKD5JryRg5AwEUpKNUKYQIzAkD4IMCBYSuICszWATjv2CI0+T/KRyiZDglKC7wttl8STYh0SiAhFCcnARsgp0EbZZBpayiKMmAQei+AiK59K9MyGbUj0xmL9aA9zbFubxSF82pL8QJIgSCSI4GTyOzBl3SL+tljGiRLkGQJTEjnSeZxgxntgEcj4HkMBl4UUr03JsEQ+2+Q9ps77Nfv4e4wVK1asWLFixXo4FAPQ21Aq+iN/q+jP+JdMIhkRgEajI3j9FWi6RDBGGA7qyFWydIxl5kmo5tdEgcHjIwJISpJ88SsJQF8cwx6hJl1G+6iBieI0wmGIBp32Mxcfwd3r17F06gQd+AD11iGyuQk6ygU1nM6no39UBw6PMsjmH0Vl8iLs1BTypUXC1jyd7hlCTklFiFw65a5EH+hkZ+jMp+lcu4ZOR5pOOZ1pW4Ze6Um4epbHc3CMIhy9oIrL/aRR5vmcmgMjicpkXR8jJRP7y2g08+g0lmCETxAoCF7RiCAgkaEQBxtfRLv6WdSrn0G9/hJst6sWGQ1DmZPDB4U+ymUbg/4e7ebTyAQ5PU8YGWDgHxGqaHF9EwfdHcLSNGYrjxBybLhBByaPsMHwCBFaJongsIYwiJRtnJEkM6CBMi7MfqDmAkXFFIbsm1E/RKFS4VZSTpvwCRWhpkMjxLBVBCCTAERQkbV9uB8SdhK62EuSE/CYK3Aiw9ska14CpkTjWMykDBnUaRMC1leKzA0ikBHSdAKQRJpMAo3FiySLnEFgYzewhATYgEAU0T4SvQp4LGJ/jJAhkKV5ncMLTYN2S7DfcpJVL1asWLFixYoV6+FRDEBvQwnwKACSMVrHUSBhIBmNlEAT7fYRUnaWPn2bDiwd1nRKfQkyNEuGlzUbdQISnddUUk3GD30fZAUMBh7BIInDw30sLC1ge/M+ypMVdDpt3huiPEE4ajVYA7rnliRekCFeaQSDPBpVIJ0polAqcJuCY7t0otPIF8pwnCSdaVMdS0hSAMMkPBEI6JlLJEEiERK9sG0CkNxHp16GzomTLymbTYk4qKgDHX6JpPA6yUgm98g8Ig0WXDfD52cx6AWs74CNlWQEHbSbr7LuL2Bn719hr/bvMLccotc/IlyUEHnTtJ9FGwkIeYQpXbVThhQm2DbIWjiah9Dr0syEMnNC1lBFL+xhbm4ZKZOwwwOjUZcQMc6GZqQziPoecvk8RqaBaOiPEyAkbfRbLYwG/G2wHbSH1x/Apa2k4wTWTEJSwg8JjYSpwGe7xnO6QtYr0BOEFUtFX2TejSQfsGXYIcHR5LMeRHSkyO+vFtpPFZnHw/fyPmXT4/MG6yjHvlp4jM+ViJBD+8s8JXWcz5VokESGDPaDzmLm0jhi9WPFihUrVqxYsR4mxQD0thRpRYhHUY/MSxnDUIKOexjsYujV6cRa8LwGnKQ4vZpy7LWEQSffRa/ZRJIgpOkaSwJDP0AiCNXQKUkJ7TqO+nAODg8wv7yAXYLQ/PIir/PU3BUBlTDRp5M+pIOeR6dVYE0mkc9PH4OJjWQqx/emWFOTEGEQUNJIpdLjrGUGwYXOtYCADKNSqZzplItT/XVbKXTKVVH3HDv1fIZhuHTgCUx2hrAjQ+ky0LWMBHMw6NwDvMs42Pskup0XcPaiyX8NGzCdJsKoCX8Y8b4KOUmiZyMEbLelS6Y2GTHnsd4Rrw9V5MQfEJjQ5vvKwDCL2n4VkxNJZF1CUkQ46dO2I599MCC8JAlAQ3T7XVgZ7g+GMD2+a6JA+Okj0SX00D6Ska3X4jOzKXS6HST5Bluy9Hk+32khIJQJjHhegB77NnRM1esWe0bmEElWOjOh036SSCGhQOVBkWxzAi1jyBmDjYKdr9l+08L3SpIFgSAVIRKbsxiqT0xohCGN/TJ0NKz5TdYqVqxYsWLFihXr4VEMQG9DqeiP2ooke9g4YjFi8cMDQkxDDWsaeE24KZv+vXLnCQ+2StXcarVU9CcxivjTUxGBiJCSyeTQqDUIMjnUm3Xki3k65AMVHSkUsoSK1tgJVuBE4OJ+t5dCv1tGNntKAYgmQ6PEwZaFSzVZZFNSW6foWNNpljkjdorgkeRvifi4dPYllbNcN07p/JWiIj4SJRqff1DkOolGyNAvw5LIUpJgxGOELdNKs40ZFRkaeq8hCL+Aickjgt+hgrqEbxFmfLhJ2kagRhsSDGmbMGSbaNPREIZjEICG42iaFvFaDZ3+fXS7L4IncWrhGRTTtKm+goliC16XcNLNwhZ7+1V4I0IR95uNBqyUy/MDOAQgnfaDY2FQayJHGOQbSVq0P+FFkhKMul3Y6RS67TZ0ApKRTCIglFb5nKORhzDtqvlANsHW5vWWApTxVoBGoOdry1uB6MH2G52TIs94UGyJUPF74FPhEngEfiRiKNE7Glil7NZsA0fDLg6bEhGMFStWrFixYsV6eBQD0NtQ4wFwDwCIIsiAjrckQRgOduiwego2IoKLbtFh5Xm6ujyvIaTD3+31VJRGoEgW7BQA0unYyqSRQX+AVD6Pvd1tlCplHFX3UZmq0Bkfwg88Osga4SCh5gwl9DQd9hQBYwZJV+b5yAKbsqBmku+R68ShHoNPQk2WN7gvw68kAuTwnXT0CRWWAAx/C9SMAUiOH0/qJ7ioBTpln9sx+LwVipKEPhkGKMO/0nxuVkGa7e6RQ+7BTTdpmi7rmEMmuQivJ0O6dNqgxvqwPaah0k7rJtsUEQZtwohE1FjXUegT0ggKVhPD8HUEg/uI+jXcvvl5DIZ3MFXykAiBcGCo7Gp92lWmZbFSKlJWKJeQkCF1XdrOSEBPJ9HdP0JGomIJ9ghho93uoDg5id29XSQJSBGhZ0hIdQmhvYGHg0YT24M2/KzL9lhIip3YVwIqlmzNr8LLA5B5ADgP4GacHfArX4vSg9+yfQBDUsbXyv9xPLhHpy3ke+N1fNaIwCZpy2WB191GDbmETCKLFStWrFixYsV6eBQD0NtQD+BHtvK38lOV593B0DsgBNDp5nG1HKd+fL0sokkHN/AC5ain6MTK1yHRGnmaweJ7MvlfMpAFCOn8Z9J0dIMBCqUc/GGXz+XD1FA7GTVmoztwCUUFwsYE2SlNUKAzLMPsNIfvlIn2dKNZAZnM/wB6BIh0VReBACmEIo2/JRuDulccdhmuJrAk9ZchcOOiSSRCbSUZwPgZcl7WFNIIUjLcjpVAEPLthBxN9wk+PV7nKSNINKnX6/P6JG0gCCcDz3QMh7wmESEiAAngqQVlR7QLYZGcQijyYbm7hL4VmmwNG/efh20EKKdMpGQKD+oweC2CLJ8pSQhsNGt1lMplsimf0fcQEkIz8zPwDo7ghDps2l9got9u87oiQbKFlOsgk0mj0WoiW+Kx4RB99snV3Q20hE95XuCXDSKXEHC4UZDCtn4t6Mj2AQh9LeA82L71+t8qHpdr2BdkweN7uM+tgKiA2+7uAbrdLi6UZo/viRUrVqxYsWLFejhEFynW202/1WWNVMQiIc5/ooPQb7DXfTredOYTSTrBhCF6yomERYfWQK8t14Qw00nC0IDOvgz9EkdfRzj0kUqn4fUJCUkXXhgqIJDsYMB4X+YZaXxOGCbRbif5rgLcVJGAIHN0+FMARZM1YuisSyYxWWhThq2ZtiqyPwagYxCSwnsEkmRdmQQfouBGokbqnPweH5Ptg3vGUDSeRyTRInHQ1fwgewxFGioYhWk+l23Th4S6OpKZEYJRC5ZDSBrwmUGR7TfVkDcJgEnbJLoyIqCMBIBGY6dfomsYdUhQR7CLNUJKDzYhzw7FNj14/jrfF8DVJglSBopTE+hU69BkGpFjo99sI/ADTJ9cQvuoikSrh2QyhZAAJHOEJGqTJNwMDqvIThTVEEUB02wmi95wgNv1A2x0+DxeMx6KNgag8WKphBWWt0LOg8iPXPtg/yvH3nKdvPetIPSVwnPyrUjGOd1koX1V4glJhMB3SlskanZ2bglLhQn1FcaKFStWrFixYj0sigHobSoV1VHbMcBI1GJEJ93r03nmiSgY0JmViIFkMhune5a02e1ul1AyBg3JQqacXT4n4l9dWb+Gzu5wOETScdQzUjKpP5JVa0I61AID8qyAQJEiZJVgWyUVFYgSfQJPoO7XdVmzh86yNRoP0ZLIjzke+qb2DYkiCNwQXggrKvOYiu5wq/G3ON3K8ZbkB1+NAMkz5X6ZT6SAig65ZIoTWJDFRk1Z54YAZDkCWRUEYYb10hERAn2/C1aTxz0kRn02WIc/IBQQvCTaJSBJ31+t0zNSthRHX2ws9DficR+WND/swjJCXhshIym2XaKPXweJCtrIQugRhIo5PttD4+AIUwtzCHoDDFsdjPJpNb+nv7HLurhqfaC07eJgfx9T8zPYubdGYBLA07G3u4+Jk8toE4YO/T4ur6+Ms7Cxfgm2VYpcpx1Hf75heQvsfKMisKPJ86Thx1L7/F4kOiXfBl+g3qEQm30oC58m3SROnTiJ5eKk+oZixYoVK1asWLEeJsUA9LaUuKPy9xiCEsI/BJMEBvCGBBEeC70hAjrkQSSpqunek3DEmW80e4QLmefCa0JJ+czjBAgBG5n/Y1gm+v0ekimXPv0Apusg4LPUvJgo4jsjlSUt8C3ek4ckOdCMBI8SAAyCgkCLLtEdQok+opPOj1CiMwkCDmFEFeWgGyraoqI+x0PgBH4EZuR6Gd42duTlmmNnX55zDEtj0JLIkESYLLhJSYQgkZtxm0Y6oUwiOGoOi0EYEmfe4vkAIQFoxPr2Bm0kCBXStoBQJzApqcJlrtKI13ueGFbeKVEVibQRKL00YUeeNUA2Je0xYZsuup066xERWJowMymVVa9+dKTSRsvaR91mS902efIENlbvq0iKDBmUNNbSXzbvMcMR6vUqSuUKmrUahqxTeWYWtb0d3NxYw87BPmz2Bw1BO8kQOAEZGlhFg+S32OurcCN9rHS8lXbKfLCvFGmrDGkU2JHv4HgrFgh4XLZSOZmvJOAjSRnE5nLCpN0dCS46MrcrVqxYsWLFihXr4VEMQG9Licv8QOLssuh06kcEFRmqZuoI6dwahA19lOEVOv1cCWcYap0cmRs0dnOHCp6igECBJH9HsHiv70UqO5sf+oQSgS06vvySRnSa5V1y3pMhZKMU3yVgM4KlJ2GMXCQklASP94hDXqAznlbRJklrrfFaGVZFL1o57bIVsEnIvBuJLhGkHhyXYV4jce7FmT8eHicRopHcT5DR2TZpn7TEonPOswoAFBAI6CSyiAzJkEfI0XsIEx0+N4WQ7woFfrwe/GAgOa9Zb94SRgQZPo1AMkqwHZJOWy/CZxs8TGHgnUbbr+AozGE9nMf6YAn3vEkcBn0EBJy9Bp9vEDoJVTbByE4B9a1VtI924JRoJz9E2OhhevEkuoQcI+qjbKb4XFrXziownZ+bRHv1BvJFF7lcBtW1HczOLRGSbGx2Gvj5G69hx5Whjg7cIQGTfdEnh4YWYZJ/ZD5VxPYHtNGQ9vPYMI8QKjAjc5AE8Igy0EbjImE/4UUah31JO0fqLL8ZjTAm3874uojvCSRZBAFJvhqX/ZmTpBOagxrtFitWrFixYsWK9TCJXk6st6PkP+qr9X9GhAKBBAEgcU+5L6v0yzA1jd5tIkwRbmRIl6eAIvTkHnrNCTrkIQGIDn/g0/GPJBIhawWFiHwBHZlXQrCQdNcqzTaLejEdYjrMYSiOuMzd4YYOtgGbDrNDKNEITRIpkDVqcnTSk7xGgEYiOccApCBFwEZgR7Yy5Iq15ztkK8Ov+Bo+mPUm5Kg5L3IP7yX2KMdfhm5JVEINCWPhX7zHIODIGkUEoMCBRggU8NPo/GshLTbKQvN0RF4AK9JZJJSRxMApoGdN4Wi0gGtHJTy/ncGn7rv4+N0EfulehI+v6vjnL/XxL17dwT+5soFriWl88lYfe84E3vXRx/H40/N49JEpzGQ9lJ002q0u3BOzGFgRum3CDtkyS5scrN3BqGghuVhE7cZVFDKETFPmJUm0qAa3UiZDjXBwewWl+WUCnIXtlVVMzy6iOhjgC41t/OrGDYQu4YOw4rINMixRhvBJ3gt2FftobDvhUJm/pPEbkQQNJkHFYL8JDPPEcaGN5UJhGLn3+LgaBidFPU36YHx5gqBFg6vvTt7nOw5u1Q55XaxYsWLFihUr1sMj/Sd/8if/8vH+f1D1ej1kMpnjX7H+75U4p+K90vmXn+o/40ums1U06q8gm01g2JUMaDInhqdMTc3rMensr93dUiAyf2IGjcMtpPJlXjuioyypodtIZzNoNo6QLWQxigZwHBNR4NPJlkiQoeCn3/Pgh9MIR5MqJbWhufSXCSoEmvEaQVL4bmMcUZEoj5rjI/u8RkVzJPpzDC/KyVYe+Njlljaprfx+0FTZpxdOPlLnVcsFmgSW6JQH9M0lqUCowCqCPTrAaHgHCbOLaEAA8h2YqLCtdaSK0zjslNA0p/BGv40Xdrq4fGDicjWNu8Np3A0mcD8xgXW9gMPsBKpp2ojFL05hkC4iu7CAZKWEueU5LJ2Ywrmzk7h0bgKnFyZwdu40FuYrWDo5geWTZaQtD07QRjhootVvoJroIlvKYvfKTaTPn0CPAKQTQhyCW6PdwdL0Say/cQv5pXkkchY6e7tqqFpKkiN4PdRadZyem8O8pBv3fRW3kwiWGEpsNR7wNyIgAQ77ygrA/QRM/laxPF6jhjMeF9GD4XDSB7Idkoh6BGFZ00gd9wMFtoN+nzZPoNnrQnMt3PGb+Ny96/jz7/+wek6sWLFixYoVK9bDIPnv6LHedhoTgUReIFET2VfuK/fooOoCBDKnRZxd+c/7vE7m7yR4TO6TxT/l0wgCeYaJgQBNIE8RrCBMJQICSkRokd90jsPwq84yQYiP4jUSASLUyCA0SV9NAFLPVm+Ua+UeiRzxTYQdNZdHkyFqx3OBJCqk7hlHb2R+0jctAlcENLWVewSaFPjoCA0Wk2BGqBtJpjgFWbzGaCIye5A5QpFOCrRziKw07ngZ/Oq2g59vTuGn1vL45b1pXNHO427qJNbcAu5pQzSyI7TdIZBj25I2fD5vwJp0/BCtQR8buzs4ataxub+J9Z017B1uYr++i3b7Lmz/Mzhpvox3OrfwkcohfvTpDH70I6fxn/7ge/Bjf+RjeN/pJZwiADlp4O7dawicJFqajS5Lpz/EKOhjfiKN+qtfREkPkDuxhObhEaLOABpp9nbzCH/v5U/iSmKAPutmDkLY7LK2E6FP6onY1za7OemPCF4y5C0Bj99Dj9011KXvxuDzoAjgKMg53pdtQID0JZzEftT522afGxI1ox3awx6QdVFl3T537xpa0oWxYsWKFStWrFgPkWIAejtr7KMKP4x/0rnVNUlEQK9Uhn1JcgJuJUIkQ9iCwIcsMjqiYyyxApnsnxhZ8AcBoUUeQhDhFzNKyPV0ng0e4vNC3j+GGUIHb5VHqk9LJRmQIVI8LnAiUR0FO0Qp2bIeakK+ghiBLSm8T75KeRDvlr9VHXlQwEi2Kir0dYXPkBvl2XymzAWSIX3yTpnbJEPjjMiAHVlqeNgIdd7T5eU2DsMsXugt4GfuF/FznSfxy9UprMl1rgU9mENGOwt7mEc60DFrGSh5LZQ7Vcy0a1jqdnCBplnUBphP9HExZ+PxShrLboQFksdScoRc0EDOrxN+DtEJNrBTX8Xa4RaurG3j89dW8anXr3D/JoLGKr5jwcGfedci/s5P/DD+6/dcwNPJLozENuqD2xhYLay295E6/xj61Qyqd4Yw8jnklhZxeP0u32Mjl5/E5UYNf+faF3DNChGmMuMhiTSNT3CROT99wk7XIrDZY/AZGBELgZfQqGCYG7H8+A/3v/J7vJUomwwPtAg+dsitMHQQwheodm20LA2fvXsVu702hjInKVasWLFixYoV6yFSPATubSmBlbf8LTChSeKBNTUETszu9wWAbNiuAEJEaCHERCaq1QHCYYiFU4uo7m2iUJzAwW4NyWQGftCD7WjotBvI5FJq/o8kQRhJBEi9SeYLEYgIUFFino7zDBw7ReA5zkzGVxkCQZL6WiU+MFkHyc5mj4fAEWJGD2BGYGc0hht58jj6JPvyS/Z/6x9eqIbAySWykUPjOonDTujj83RZdJTOujby6OxvosEfd1pJfPpeAi/vlbHSSqMX2XBY16V8FmXLhC2UFxISugEGnQQCL8V6FmDZZRhujiTgYmS68K0C4BQQGimM2CYnmYWbSsO2LBSyGeRSKZTTaUyks0i7WehOBtnyBJLsjFyath142K/VcPn+PXxh5Q6OaMdTaRMfPV/EsyczmClbaB61sdcNcciyOLmE3Tcvw53Lwc5m+S/ZwuGNFeRyFdjlEt482EK118HpyQWUbNp4KAkrdLab/cd+6xgjAtEYTI0oATegXdjOQH0u7FOxISXAIwkzJGo3BiACaRBAGwYwJWDoyXdDoCI8t2mqpmvg3117Bdcaexi4DsypEv7CI++UR8WKFStWrFixYj0USngql+9/eB0dHWF6evr4V6z/e0VnlR6sGnBGR1ZGtOlo8+insbH29zE5FaJXC6DbGWQKJh1cOrQ8myAAXXljH0c7TXzbD34MN1/7HM5cvISVm5soFUsIwiaypST2djZQmijAsYRrQkSer8BHAGo4HBEWIvSDZ+HjcSSdLNnE5ZdGaBFgMjQFPoZKhU0H2crymKz9I2vISMRILjWVYz4GG4EedVRqqP6W7ddpfAlbzPrQYVcLnLJdKhGEGqIXqOFfks/OQx+v1r+AywcruLVXQ3VAADCLKLoeYcTGyDKw1Q6x19HQGmwr5z+VqsCwcmyLg4SpwQ/73HqEOR+RRD4CG6bAEt8ZDntwTMJeIiRsERS4NfQEkmxvju/R7BGSdoScO0KWNrF6vgKIBtssKQM2WZ+tKu24uwO3U8eJyTIunLmEfGkeO9UQn/jS89hutBHU+tip9zH30Q9gEGno3tpBd+MI8+98AvpSEa3aIZ5kvf/so+/CewiyYRCq98gaSmJHoqia+2MQfCzaz6etwuOo4IMhcBKVE3v6vq9AKOB2NPABApXAaavXR48W6to67naq+Pjll3CltoMh7aiVadPZWdx97w+rLooVK1asWLFixXoYFEeA3pYScKDzKvRDB3b8n/MJA9oG+u3LsJ0RgoE4twYsUkwYBHTux0PH+u0Ih3t1nLp0Fnvr91CqTKJRa9P5DZFKSwiH93qeGkpnWRpCvkcXRBAAUREayTo2wjCc4dFJPlNSThsKbmQ4mk4HW83zkQiQRghieTAvRwEP6yBFnOvfCjrHxwTspE3H7xojEX/xmJxTkQruy90S+UmQ/iR7XKRFGBLWtroHeH7tOj6xt4HX9ppoDAeYmMpharKI/qiKG5v7uLbfxUo/gX56CqOki8iRCI/M8+nATzQJCjWCjyx46iOVNFHJJVFyfCSNIdJJQJa+kXaOdNaCP0I7iaFpowoHdzwbOwTE1d0jrG/tYX+/ina3SZgMMOtqmDM6OEtAmUoVgKkJDCrz2Gwl8MrNFWzsrGJy1MMPPnkeT1+YwMRMFhtv3sTWvesonJhHqVyGOQywe+0WDCeJ3MwE1glQr969gb7vIV0pI+smkQk0pHuEMH4DOuEwZLd2dNqHsCaxNRnO+ACAxLYyP0zWhJK5XgG/FXY5egMP9WCIjqOj7mi42jrEv3zx87jXa6KTtJBbmENyehI72zv4i5ee5VNixYoVK1asWLEeDsURoLehlNvK/wkcyOAlWXtHFvZMaJ9Hde8fwkk22PEWBv0A+akMt20kMwZv0HB4P8CLX76G7/nD34Nbb76I2cUTONhvo9/v4NSZSXQ7DZiWhV63gfJ0HgiHBKAQw6GH0KPDH+nodXy0vHfAx5MwtRQMLQPddMg1CTXvxzAtHrNh6C73k9AM/j7O/KbARtJh86nSAvmfSDBrPAROnPMx+IyPj/+WXxLpCiTqwvqoFNeyyCvBDyZQC9u4erSCK9t3cXVnDbsJD9MTE5jLR2h1q7i+M8IGazxKnYJNe01qhyjTHrqeg+PayOc02EaPoOLxcT7gh0gEMujPhiVRHOKNjJUz7BQ81m9AyJDkCkRLDCNg4IXoESJ7FusZkZLCHGpdHVUvQM9rw6tvYTJo4owb4fHSDE7NnUDT7OBOcxNrHdbNnMOtTgrtnQbmGgd414yOd5+9BMuew9/6p/8nXtvZx9wT74aerqC2dYTD2yvIXTiH4qkF1taH1+SzUyV8ZOkiPjC9hHPpIiw2wws8dGgLnxCjBxHcoXwrY/gR4woMBSqCdpwQgb97QQhJqt4l5K20q3hh5bYq24MOnEoFFcKPAFe338c0AfrKc9+reilWrFixYsWKFethUAxAb1OJ/zp2ZSk69BgRgIwXUDv4B4SNXdhWEdXdOiaWKuhL6ucs8YKXtfZNfOY3X8V3f/93YWPjFh1sF45dwNqdm3jimbM4ONxFplDC/s46gWiB8NQiEGnwewP4vnjMBrpdH53B0/ATT8NIJKEnBIBcwo9G4DHUcDddc/ibcKTgxxwPgdN0OtisB2FIZVggOKhKKfE3Je2RIw8+2q/uy7slIiXDzmR9I5mb4smap9hu7OHl3eu40dnB3f4RopSO6WQSnaaJvV4fh4Q5g3XJZA5QskrI6g4KaR05t4BRcEToa6PZ7qLd7ig4478ZDAkOXkhwoKMfEGLCyCQgEIQE8FgcQqJjmvxtIJNOoVgoIJV0EZgBBmFEJCEohgSlyFAFmTyqAw939w8waOxinnV9plzAu8+dhsX7bu41sUJ62rZLuNv1sL3fQLqzi48WLXzs7HPY3+/j525cxhuJEezSNIztNhpX7iA1NYHcs4+hSjuMOn3YvSHmDBePErKemV3E41PzmLKSSCd0QiO/F5XFbxwBko8oYvGGQ4S+TPgZzwc6GA5w/XAH1w+28fLWKu50avBdE4XFRWTLFdqpi7DvI0cU3bt5F63/8f+teihWrFixYsWKFethUAxAb0MdYw9kwn+keQSBERIBAcO8g1bj/0QQvEmnvILdtR3Mn5pCtbaDdKGvIjt+ewG/+YnLeO49z8APd1Gv7eLk6SfwyudfwhPvegat2ibyU0XsrK1jcmERg6FHxz6lJsZ7dIwlRjMc9NHqzSMYnSW/VAgpk3x2kewgC52OIIEeSxIf6K5KgqALBB0Pi1OZEiRttnoSES7xYJgbjxOOVAY6GaKlYlsyt0kGux2fo/Oe0LqIwgEBi0CSCLDa2cAXdt/E87s30SSMJIuzMLU0qvubaFZbyGZclFIJTLsaFksBXAJctdrD2n4d3QGQH8ncKR+eDNGTBUazKTgpCynHhCnDCv0+AY90YRQx8EPWaET7ypAxoNlso93todMhPHHrESIsN4lsPofl+RlM5ZNw2YpWd4iaZqNqZ9Bw0vAMgtHRIY5ubkDvH+DitIHvevICjJ6Ba40+bsBCz5rEXULRQaOFwkEbP3D6NB67OIsXq/fwC1eu43BQQF6roHVnBUMngvPIRVhaEcQ86AStdnWNVa1hOpPEmewCTmVOoFycQDaXRIH9YQn80H4kPEzrNkqhhv3tbXTgITsxhZ/5tV/Br27fhLU0B2dqipCWhuaFvCeBboJweFBHr1bH7PIy1n/oT9MusWLFihUrVqxYD4diAHobSg17U72qiXtNlzyEHhTY27sYDP4J+v0vopAvE4D2MDWXRbWxB83tIZ3Lwwjm8eu//CWcOjmDk2encPWVl/HkOz6E5z//PC48eZ7OfVtdd3TQh+VMo1g5g0QiiV6zhU6rTqjxCVxD9AcmAaoETZsi08zBMAvQLVmLx1PTfGw61aYCoKQCH13mB+kOfxNcWO8EQUTW8hEIkqIiQ9yNJOU2r5AIhZxX85xGGu8w1LFwRAgj9HleE3eqt/G53dfxfGMD7ZyLdHaaPr+O4GgAP6ihUrJxdn4SOfJLfX8dR3s76PZaMJwUsgXWl8+3NR8WwTCZy8FOpyFBrkDWvWH9hj0Pw46ATYQOgSckaBpsnNyXdl24tgXbsbgl7JkGQsLizt42drd2sbqxCz+RIVi5mFmYw7kz88imBeK62CR89ewJBMUUDtpN7Ny6Bdy/g28/PYfveOKduEuwuNJuozZ1EjdahKbdQ1jdI0yGdXzs8UcwNb2If/LCS3j53hFmSyfR3z7AzIlTqCZcNPuSgMFBr3dEKzbh9VuIhjqiNjuF0GjaGvJspMOzg7CHweEBfvDp9+AHLz2Nzv4Btnt1fPi5D+GLq3fxUzc+h2G5iI6QKJ9r9QJ+Xx10Rj3MFitIT1Rw2Otg72P/mXyMsWLFihUrVqxYD4ViAHob6isRIMJBlOjAj0JowxxMcwfD4OfRbv4myhNlHKzvI1dMY+h30O0MMTVzklAR4fKLL+GodogPf88P4KVPfglPvPtDuHPrTXJGD8vnHkWzOcJE5RKBJ4N84RLvqaj/2n+4uw7DGhJGBhh0hwgiWXg0B8stQzft8dqoxoggo8E00gSglBruJkPfJA22DIMTJ1yGv8m8JYkGyeweiQapNhFwhIdGkh5bNVSOEvZUAgR64SyhZqPhV3Fj5zW8vPMGXt27D31mDqGVRnPvAA4d9DPlAs7PlHh9iJur97FzdAgnn8bkzATrKesh9RDQJroewaV9BLCSBJVIEiOQdLxAhxcZ6PhAK4gIenzvsA9/QCgkyIXBkO1vYtDv8hW8KAyQSjmYyGRwqlxGeWoS7sQ02nYGt3YaePPmXeys3cFCzsHjJ2fx2PIp6Txcrd9GLZmFlj2PzmGIrVe/hExjC9/+3meRPzWLlzZvYESA3G2ZuFKN0NOyyHR7eC5t4g8/9QyurK7iFz71ClptCz/4g38Io6yLf/65T6Bm6chPziPa68EekNyiAQw3gTDp0o4m7L6HyOsjYl+Z3hAnrBT+5z/0JzFlOdiu7WM2V0bPsfFH/uHfxLrLvshlYfnsR4Kgk7KRyhMWB0MMPY99buLed/8p9T3GivX/Z+8/wCQ7zvte+NfhdM49Oc/szmzOAYtdALvIOZEgKWZlK1jZki37ytYny9aVZMvWpSVRgaQIMYEkSCJnLLAANucwuzs555nO+XT3fevMDrii/UH6vsemlnrOv1Fd59QJXWnxvL+pqrdMmTJlypSpG0GmF7h/1hJMsFQolsroOQ3NkRaoGCaX68PjsVAoFIz1Hj5fgMXpJD5PrfBHBc1S4OLZUdZv3klWQCady1Lb1Mn0tM6q1fdgcawRmFpDSW/Gae+ikBOQsfoFtMQIzyaMaXdUXZRLbkl3oVxeYxdDWQxqNfyjXAdYBFSsFgEkgSHhF0kWzFHXJBguDVSiyDg2pKa9qW1VrZJ4zWNcZflZLCW5khdgKbNYHOfUzEVem7jCwak53E3ryQkg5Ebn6fDa2Lu1gWg4z5Vz5xka7BcQDAv41eP0OMgWMsse8ew2qR8PvkAtejmC01ojYONHzwtsKeAq5+S30ji1lEDcEt7qHN3ODO3+Aq0RKy01Ljo66ulZ103XujXUtHVQ9QdJV530jed4+8IYRy9eID59kU53jDs2NrN7+2Z0gcV3jg9x4fwlAtYU29o2UC8ANr7YS07qpb79dgqhTl4+9grJsRN8ZMsmaassVl1+O9zKUsLBlO5ilhxzA2d4uHMte7Zs43T/Ocb6LrG/tYtt3WsZjs0b63ic3oCAndRNTOB1asoY4ckvJNBT6eV1TnKP6iNj5y6xpX0V+1evRZf+MD85RWNTMydG+xmpCPQFAjgFjuweaXObBUe+RKVUkP6hk06k+K2te5eb0JQpU6ZMmTJl6gaQCUD/DGWM/xiDJWrtTEUO1AQxmwBGGpsmRm5hUAz4nBj6dpJLcYJ1jSxOxqgWy3jDNsPr2aXzI3hczTQ0b2B4dIlV3bcTCd2E5tyBw94j760RA9dJKpHA4SxidUyLQT2NbumjzBBlgQQFOHa7EIqx7kdNc3NKjtQaH8mLzWq4ilbuqxXFKPhRI0MGEKkRHwVEanqbxOqWarUsx4JDAj9VBUBq9Kci1+R1FeXgwVpmNjfBuZlTvD1+meNJgZSOjcRiRbQFgYxVjexcFeXClcMc6T1KV3s9ze0tzGTzjCQLFD0RvNFWgUG1H5ALvy5QJWWbmU/QPzJM3/AgVyeGmFiaZyEZZ2lhScAhSTWepRTPk0pppDMWkrEs2XgKhwCAJT4HsyMEc7P0uIusqnPQvrWdbVu6aRagnE1FOXyxwJtvXWBpqI/1LS7uvXsb3iYPR6/2cuj0OfxZB/e1bqLd7WAi1Y/V72Bd9yamFhd58e036Qo1s3/tBsrxeeoiIcpS58NzcTK1UY6MX6HWZeMnD9zKhVPv8PKFU3S2rxeQ2UUlnWMwMUo1qlFT20BDbSd+p1/qtCTAXKIgcVnBpbST22Yn4nJxy6Yd+KRt5mfmBBobiZdLHJkfw+r1SDMpN+G60a7OdJFcMY9D0mvq6vn5zg2qR5oyZcqUKVOmTN0QMgHon6mMkREDIK5NIlMgQVZAIYaujwsEzUr9ewSAkniCEQGkADOTs9S1aMZGnbHFCpd7Yee+f0E4tBunswen1kGl3CxwE6JSrOIS8KlWR3F7xlmKvc3C4rvUNaQFeibFIM6Ryy2hVxNomvp9TaDFJc/L+602bA7FQeVrebNLfhXlqJxXjesqXU0DW06RMijnB+pE7SdUveYgQeCuUMmDgNR0ZooLk1c4tjDL+VgaT1Mz84tT1GtZHtrdjq80zTtvv4IzXM/aXXcxmoKTA6M4pQ+uXdVOa9SLz6qzOD1J39VxLg3MMzKTJZcSMFRrqNxe7MEwRVeAvCMooYaKAGJBayBvr6MUrKXoqyEt11KuIAktwHjBznjRzoCA0fmFPL2zy+CUkjzWajo3dYS4dUsnLau6mbYEeeXsEK8fO0XYFuCJPR+iZW0Hb4/28fR77xLWbDy8pgl3epyZZIzImt0E6jZw8s0z5MamuGfPJhL5EfBU8Ne1cWUwQdrqZKa8JP/YFvj0fY9zdnacl945TEewnpvaV0M6yfj8NLFSUepRo6ppuOt8OOsjaPVh7LUhvLURAeQI2XyW9Z3drJI6iKfTUiegOzSOzQyTk7az2JVz8CqlQoEwGg6fG7wuFrMpfrNnh2o5U6ZMmTJlypSpG0ImAP1zlbJQDQpSK9TVOpkKFb0k/KCmvc1RyI/i89kRe1WgBEKRZsZHx/GEXDicIYKRXdREbiMU3ofT0iHvisp7glTFoNcUTNmTAiLDlIqXOHPqq3R22YnNXsDvsREQsCrri2jOFHo5SS6blnvVGh+v8JgTtd9PlaL0vhJWY2RKAdByfpVjAwOArApyrjGRwE6lurwBp4IfYymQ3Fss58Vohyl9ngtTlzk7McjxdAHd56M4P8LuZo8Y+iFOH3uV6fgsPdt3k84J+By/hN0dZc/N+2mtr2d+fIKzp47R13eVxVSGqtuPPdxAzukjLqBWcHrIV204Jf9hd4gab4iI0y/HXtyak2opg48krnIGrVrAYdHxOp3Sv30EAiF8Ag0ubwC3O6A2KmI+lmVocp7LA4OMjPURcFXYsaGDPds3EgmEuXRpkNffPix1XeWe2/fTs7WbQ0fe5dLxc+xe1UVHY5ShRBK7t5lNa7ZzZOwqb5x8hcd2bSFiy5PTi4Sa1rGQKjO1MEPCJYA4s8DP3f9RSnqcZw49T00oxB2rd+EX8B1NJUlLHtTUxWIhR1ZgsyjVr3ZRUu6+89JvUskkzQLKO+pbBW6rDA8P09rZxRsXTxPXdawuF2759+wQ6K6m86TLBRaKGSwCQv+ma5vRiqZMmTJlypQpUzeCTAD6ZyjFEgoS1KiP4TVNDHKbGLQltSOnStcESvL9OJ3KIYGL9NIS/pp6ktkCs3N2mpofwe3aRbhuN5WSnYpNw2p3US3b5OG4AFOfgMgQg5efxetdwG6dEwiI0dzRxdTgpKTV43RXsNliaHaJrWV5piL3WOTYKRm0UhagUWttrMozgrGyR8GPxAp8BICuEdzyx+A4tf5m+VjBHPLOkpRrQQDrwswAZycHuLo4Rdxno5Cd477uNrqlfMcPvkFrzybs9W28deosNkuJ+2/ZRUdtM33nejl+5CizsTj+aBP2YJSc5G0+HiedSRIMewnW1eAV475ecxDM57FOjmObGUGLj5OfuUw5MwyZcZidIj89jiUhcDk9JmGI0tQgpck+7POjBDPzBPUULqeVxqYmGlZvIutrYjJnFZjoY/L8Icpzg5KvELtu3U3d+hZ6Lw7y7ncP0urw8chjD5HzufjG8y9SyVW4fececqUEE5LX+m0bKUqdvPfqd7mtp5uQ102ikKG+sZVcIs/Y2CIFf4jk7CgfP3ALycwUX/raNwRaalkncNIQqWV0bkDapoLPJu0sdWCTj1faxq2ClN0r7eIv6hyQugw5XMwnFgSggwwtzNE3O02KMrHFGKV42tgDyRkOSAhidzr4V60bpQFNmTJlypQpU6ZuDJle4D5AhqtlsbiNTSGv00qaMW3rBtSyxzR1pJbsq4lJaq8a0LMaemEJV+AcS8mvijEew6MFmBofp761k0QuSmJhFV0dHxJgCSgfA/KGvITl16n9e+AKx97+C8JhO7X1bmJzvXSta2e87xI1jR0CXDbmJ+dpXBXF6cqTS6bJJKuU9RoBkxaq1m7sWjtCGwJJXix25RDBjmazL68TEtCyqI1QjZEhm9SxCsvrguTlKkMS1OS3CkvlHCcnezkzNcTF+TEqHhvZ/Bh3btlEaXqG6eFh1m/ezXtX+5nJF9i7ezeNYY1j777ByEieSE0TtQ0RYql5RidGKZTyhCMRNqzbIDCgEZ+dpTTWh6tSMvbF8ditBH0eNLeNYEOQorBc2S1Qpnko50NUdRtujwO9VKKilymXlVvoLKlU0giFTEaAJEa+kMan9ttpqsfR2EXG18HQfIXZkQmqAnIttjQ3bV5P3e69nJzI8MYzrxIuzPHhJ27FsXoVX3/6TWrmFvjUxx7nqgBVYmKJUCDCyPhlrhx5jV/8yEex+MIcnctRCnVx8swEV0bG6NxayxZrlh9fv59vvXmIv37zBHfd9hHu2HIzQ/EpnnrjRYFjOyWHtIndbezVpGq+ai9jKWRZlYMv/+xvsCYU4fCV84Sb23h7cIDfefEpygKcIflNv3IPLtCbLOel7BnKAkDJB8x9gEyZMmXKlClTN47MEaAP0ArgqPj6sJJ2o8oAFvkSZFiGhWpeEnQ5DwiQ5LE5lrC5JigVZgSCfFTLZQEHJ6HIbURCt8kzLfKMWwz4MspNtc2mRmZivHvsryXtFNG6OLPz5+nqqaFcihGPz9Gyqp3FmXGCNUGBmzKLE1N43AFcYuhbqxmBlzxlYzaeW748kkefQJZD0iry7hXQVE4QlJMDya4qgCEVK/xxqA14qFZ0KZhOyVpkYHGEyzNj9M5OkJB35C1lPr5jDemBPiYWFqnr7uHFd16nra2eR+64jfNnj/HKG++AI0rPqgaWEtO8d+4MU6kcqzfvYsfOfTT6g8xcOEtpUICulCTaWEugNkp9exM1bY00dLbS0NJENBimQQz+JnuAOquboCbwY9GxF7O4pa49Vgs1Xo8AV5TOlhbWdq6ie906mjZvorZzLRZXmOnJLKNXxkmNDFFrSbF5dQ3tPS3MS/nfOXeZi4ffZVPEwmeeuAu8Qf7ym2+QT1r48YcfkXbI89xzT7OzuZmmpgiXxkeoaVlPTaidV7/zXfZ1NrOmPkLf4jD+7rXkihpDZ87hbWvg0uI4D+y9G7cAyuG3D5KRhtm39YCxketgaQnCAr/S5roAp14po1vLFKsFw833vnWbaPeHyZYKlKXNOhtauJCYZ6aUo5wtkJ5eIFPKUBUQDARD+FxufqXdHAEyZcqUKVOmTN04MkeAPkDXjwCtjAKp85U0Fd+YUhuFruStJGc5SRKYEQBKzy9Qrl4gUHeKeOItQn4vpaybZKGbYO0DWCvtWCoRgSKLgE8Gi32Jd974WzRtiaYWCxfPvMMDjx1gdlpAwhajvmkNY30L+Pz1+IM+5ucnqGuIIvYwi9MzRBqCeASCyjmdYs5NJiHgU2kWHquR2I/NXwuaD7tVgi2AxeFBF+NbeXezWe3KYTaa4fVNwMlWpVjJYnfa6Z+9yrn5Kxybn2YklcXntogRX89S3zkDqnJ2J/2jY9x3+53kYxWefuUF8NlZv2kbM31p+s4cxi/P7L79FprWdzExNc34hYtE5HdbagNiuMtvWzVKfrcY8i7CDgsugaxcJsPkZJyZ+Twzc3kBwQwJAahsPi1AIKCAQIPAj67ATWIFb36Xj7Bf3ul2Eo24aautY01Xl8CmgsUqw2P99F69IO9cQK/aBZS2461vZWBimhMn3qHZWeLj99xPqHYDT714gpmlcT76mQMIcfH1J1/g3u0b6F67lpMjs9gbW0gIEI69+k1+48c+SUVA5OWxDNmWWzl+5iQDZ99gx/0PEFlK8XMbt/B333uR1wez3HffR9iyZRN/+szXSIacWDWX/M9B+rjdhqZcW+vSfrMz/Oqee/jFbbdSSieZWpqnrn01/+mFp/jm4HncbZ1oVifliAeKBUhmKcbSTP7Ery53RVOmTJkyZcqUqRtAJgB9gNQeOWpNioqvB6CVNGO9yo0olVdj5EetrSkLABUFasQkt2gU03FiCycEdvopVM6I/W3BY19HVdsv4LFRAEieUe6piVPI9Ir5Psrl3rd46mtf4z/83m9x9cwlcqUYN93dzezIOwI3Qbz+LoZ65whHG/FFXczNXKSmtkkMZxuLYoyrzVVrG5skSxoV3UMhbSebUFPafBRsXVTszbgdtTi0Gqo2DyUFDnbhIpsDl8WOTXnA1goUyzasjgBTqQkOjr7D5eQ8I/EcbpeTnWvryc/3UxZ4mo3FqJTy3LLnAM+9dIxLwyPs3LmJYqbAu++eo2gtyrVtkraD2Mwsk5fOIbmitr0Gi2bDKT8fdNiJRn0CX9JXE2kuDU1xcWCC2YU06YwudeTFH24iXNNKIBzF7bVRlnJaXQ7KdqvhOEBNgauUy1hKFQHCPKVUgpwAYioZoyQgFfV5WNXUxJa1a9i4YR0VAaiLfRc5dOQkeS3I5j278dUHOXzqNGcPHeehTdv5xCP3cejKZb78+kHueezDbBXweeGbT9Ij0Ln5jv0cHhggWlPPbP8Igwdf4j/97E8wnNR5N+XC2rqKl99+i+TMHPtuvokWyc9Hd9zEv/ncl+gXmPv0p3+WqoDjV09Lu9bVS1upNWIKQKs4Vb+KL/FAy3r+3X2P4i0VmZC2dUi7Xpid5D+/8SyTbjepTJFEWcA5mcaVL+OUNoz95u8Z3dKUKVOmTJkyZepGkAlAH6Af3RGg5byvqFKWvFpLkl+163+C2cljaK4hPL4k5awTr1c5O1gnxnuDPLeE1TnDqRN/J+mTtLe7xLj38/Yrhxm8PMtP/sqP8/p3vkZH92pWb2xmZuy4gEAAt6+VycEYDo+FSL2DqdGLhCNRfAJI2VSMfDaB0+XF7a/BZvVCyYJespFIt1DUG7BbAmj2CDYtgM3pFsCwYxfj2V4R07si/9nHsZT9lGwdPHPlLY6WBhlN59DyGvvX9pCZG8DisDEwOUFdqI6e1jX87VPfoeDzsXPfZnqPnODCO0OsWrOW257YjK+uhmPHjuPKltjV3AqZBGqWXV1DLQGPi9j8HBd6LzBwdYrJuRQpi4tI+1paVq8X0ItSFbixlYuUsmmBmzQWl0CC24kuYKz6hcvjxiZlqFbUfkUC0OUKukWNTFUpCHQWdEjPJihNS91MTKHpBanTJnbevpOWjnYBygGOvv49ClYHq27/BElbHcdf/BaeyVN89pOPo62+jS986StsqLdyz6d/gidffoqAkOJ9e2/h5LlBXM3rGLp6kdilI/z+L/0qb184z6wrynT9Ng5+5ymcdh8b1mxid3mKPWs6+Knf+yucoXX82r/4Jf7gb/6CpUpReo5GVZf+7hQoluBYStPjCvOF3/6/WBMIMT45ilYbZlEA7yf+4r8wIODqdAk0Rv34pNw+tweL182Fez6+3BFNmTJlypQpU6ZuAJlrgP4BXQ8510OF0g0LQipP1xYBWZTjAMObgRiyFLDYxGgXCEqklnBqUTzuDXKvwI9VjPdSP8VCrzx+kUz+BKnsWVrbveTSS3SvWUfvhSEWp6c4cO8dHHn9EMFoAw3tnSTnp+TdOpGaALHYtLwnQ2Nzu4BPiqX5BQGoIIFwjYCA4oxFivkEFYuaylaUazpuT0aAIY7DERPwmRFAGsdmmZB4SoowLVmfxmqbQbelODzSx7l0lv58kkRljt3rVlFNCIDkS0xOXqW7exUeZwN/9bcvU7t6Ixu2N3DwuRe4dGaBffffx8OP76Qyt8Cp05fY3FxPxJlmSZ+jpa2V7toakkMTvPzme3z19ZOcGKmQCK1l9a5b2LN3Jx3Nfsq5GeZmB0lnF4y6bGzw09FRT5Py7CZlrPEHCIvhH7BqOHWBAIsNt4CQz+HEE/BijfhxuVwEfX6CdVGCXa24ulspNNVwbmaG5986zrmL51nTHuDeBx+U9unk9EvvocVj7L3vIfLRHp78u2+g5Wb5lU8/zvDlK7x86iAP/tjHmR48T2xglO27Dwi0TRNsX8WC1FXvsXf5sVv3MDU9IEDlIbrpVs4eO0/II22bV1CT5rY77+GFQ0e5adN2Wusa6JsYoTZSL/kMokm74tUI2V0CbgX2bNxCTzBMRVdrsSoEPUF6F2fJaDaB4Qhlu/S1kk68kCVZLfGv1+++1jFNmTJlypQpU6b+6WWOAH2AVuBGxSvwo85vWPBZkWTVyK5VwY/EugSbHFYzWKwZyuV5RkbP43FpNNWvxaI3UCxekDb5joDRNE1tfgIhBCh6cbsdBP118rBPXuPjK3/5ZW7bfys1DU28/tzz3P/II/jrnKRi57G7sjhcYWKzBbLJAvVtbZSKZRYmJ9AlQ03NzXjCfipidOezcQpiIOvVAlZNw2YTOFDBYlfcZuS7oguyFSFftJDJlhnXfZzONTCoNzIVm2XjWg+uSpF8soo1V6ajwY2e9PAX332NNbftpD7g4+VvvEqm7OH2h29i7/Y6pnsvY8s56Wxw0CswFYzWsWPdGqbGBSTePcrx/gTJYg1ru3ewc/M6gakk44uLjCykqNjsrOpsYE1LGGc5TTYRZ3xqhoGxOUbnCyRjaQoCYza9gqUsQeBTTalT1a88iFscbhweP20hP+0hJy0NXhpXNWCtjZB1+IhlbMzPFunvvSThCC3eWn7usbvY3NPCS28dpndollU791EOt/D6lz9Pp13np3/z13jp5CtMj1/gk5/9Fd4QePNYSqzbcztXBq7gb+zkje89w0Ora9i/ez3fPDfO/OpHmE5UePcrf8kDt+8nuHiBR25/gNdOD/DmwWP8f/7Df+Wr7x7k/MWruMN15AIaRatOOFtCX4rz0S038x9uf4hiMsVCIU1DbRO/e+hFPn/oNbTGZip+FyEBPovLRsFuZeauH1ctasqUKVOmTJkydUPIBKAP0A8C0A9C0I0LQoqAlo+Uu2hLRVGQzVi3VLHk0exFxsYuSXqGlpYG0rE4un4Im/MdUqk0/qDatNOB2nR0fm6WYDiKQ3Ng15wklsp896kXePDxD5NOFDn53inue+wA/kiCdPqS/K6G17+eTKLE4vQ43mCNQEYT8fklMdIn5Z4k9a0NNLY2CoApj29pivkM2YJOsVQWUihi1QsCEDqZfJmK3U3F6SPjiHB4wkVfsYvB+Szr22toi2gsLE0RyyVobm4kE8/x3LPnuWnnNqyOOr/AxwAAhcZJREFUON944XX80Z3cuW8Pm7thpO8YLbWrqGSyLAwf4/bb9lKueHn2pRO8enqEBaeH1eu7uW3bVvR8katDQ5RiC3R3ttPW0S6g5qR3cJyL/SOMj05STKfQynnaG0K0tTfSWlcv768n6HLjtjuMNVBV5U1NukdGypTP5sgvJJmcWmRgepop+TeQzWbwe5y0d9axeVsPrasEOHQbw1MWDl/t58Tp0+xq8vLbn33YcEzwpe+9J+3TQpfycHf4HSZnh/mjX/1JLl88x2mBuw//1M/yysHX6PBZ2LR9HwcvDBGu7eStb/wtv/7wLsreMK9MW9DW3snp0+foe+sl7n3kMewzV/jwHffxB3/2BfbtupNdW27j9/7qz5lxSL8RiLNUS1IWaV7pHw+2b+GvPvnzeKWOFtMxeX8935kZ4ncPPkvB4yXjtEgbSr+rVihVpR0f++XlzmjKlClTpkyZMnUDyASgD9APApACCCWVphwgqPiGdIag5pqJ0V01pr4JTChPcBW3nItBLkBks1dIJSap6Iu4XTFpizO4XANEozEKuTjxxDyhkF+YSbnAdpCILRKKBNHF2Hc4G1iYKnDw5RPc/dhnSMyOcvS9l7jv0d2E6v3kY0voRSsOrxebppFYTJJKZggLBLndASYnZ5gcGSWXTxII+IiEfWLQe3GHAvJzUqd6DodVQK1UpGLVyJQsJK0uLlkaODbkZ3LCg91hZdvmRnLzk8YoTMvqZkYSM3z9uVc5cMuHsedzvP78S/hqO9h2+2Y62z3MXx5l35rdXLx8jHRugg/dcRcnj5zn6bdOc262SMu63Tx0xwM4rTlOnX+TfH6aXZs20FDTw+j4LOfO9QpgKCcLTmpCNezdtp2b1q2mye8hErRRsExTlt8t5rLkBfJKebUXkE6pIkGBs2Y11jR5tDAuTx1aOCJA4aC0UGRisJ+zZw9zefgieUeOrXtvYd3WW3FHIkylSjz78nsMnjzDJw/czE8/ei9Hzxzi2OQ0jTft48zZcwy/dYx//0u/xuC0ANPgWX78Jz/Dy88+zfpVm4k0t9I3m6FQ0Dj27Jf4w1/8NOeHR+j1biRTv5XDz38L3Rrg1rX1tEv7drav4w/+4A/5/G/8KRdTGf7boZfA55eySHnCLhyFEt0ZC//XPR/mjo5OJhdm8PvDvJGZ5zde+gZLdmkztxW/w4VLep7af2rq3p++1jFNmTJlypQpU6b+6WUC0AfoBwFIBSWVthJW7rmxJPm81qpV8vJdhLKf8jXX2BZbmaoYu8XUJFcuf4+xmRe4947NOJ1QKs2RyU8KjAjsuOxYLQ4sAiLFXBqHW5PrFbz+tcyOwzuvHuHuR24jkZrl2Ntvsvum7bQLFJSzswIQi8ivCFh5sdqVU4EYyUSK2voW3B4f+VSarPKMlk3I7wj4eFzoFHBZyjhKBaoKIJx+FsoaKU8tXx0JECt24RBYWb9qNQXrnIBaP+vbe0jMV/jC977Dtkf2UU4Uee210wRCzezfuZaetjIDo1e5eevDnD9+hkavjU3b1vK1b7/Jy2+epuALcMeHHmDz+h7Ov/suM7OzbNqxha7mMAOXzvPiiSHGF7NEw2H27NjKzWs6WdsYwFvKkZqfY35mganFJWZLWYpVXepV+oNyfCD9Qo0AaQ6H1ILUu/rPaqEogOe123FXyjgtVgL+CDUtbdTUrKZo8XD2/ADPvfkC8ewQGzpa2bF7B4GNt3JupMTrX/sq/tRl/q9/+8vo1RLfee152rbvZX5M5/ALr/Lrv/kLDI4dY2TkEh//1K/zvae/xa17t5MWEF6oRDl/eYT6yYP8y098jG/0TpPt3MdIEt58+ln2rF9Ns6/MHT0bePeZt9jRsJFN9z3KT/yP/0re7RJ+s5LzWpVbBELxAj+xcz8/f9udJBfn8bq9HCfLrz/7NRIuJxmvE3e5gkOvoAvITn7oF41+Z8qUKVOmTJkydSPIdILwQTIgQixXFa8E+VIYsYwSIpWmYMiAo2VD98aRyk95Oa46lvNmLUqkgKhKOZfj/Ok3mJs9QTSqEa2JCrTksTuK5HIJXO4I8cW0QExY4MhHRVhZeXLLZ7IEI7U0tzfz7uuv0djUyppN2zh/9AyJxVlqm2pwh/xUBWQy6QS5bBJ/yEtNfQ2lfIJ8LotdUwBZlj6g4QmKWe0QY9mqY7cJOAgYVMt2AQIftnAbkxkbR2fDLOU8dNUFiHrEGC9MEK21UyhZ+Pq3DrF3z/3YBArePHQct6tZYEztjeNg7Hw/D2x6kBdf/AZt3fWs797O5/74SzxzaopoTzc//uF76LBXePWZp7E2ebnj4TuZHBjl6W++zbkZjXy4i3179/Dzj9zB3WtCBDITDFw8zsnzFzjWO8LJ4Rn65nT6JjwMTzkYnLYyMC/xooMr0xYuT1a5OlZhaNrOuNw3K9BUzFuh4qEgcJex2BicX6R3dIiYwNeGmiY+/eADrGlvY3Cwj2PvHkcXgNvSZmPHA/sYtUb43Oe+yPpoCx974EFOH3tH6ruR0Oo1fO1rX+bxu++R9owxLc/e99BjvHboLbZv6GZ2epJo2wb6r/ZLF6iwubuB8ZlhbC2bjalqZw+9S/eWbirlGPes38O5cxfZuft2Ts2MM5FKYPO55ZoObjuZYh5pGW5dt9nY8LVaLJGQvvV273lpjzKFgo4zkceayZNLpfitnbcZvdGUKVOmTJkyZepGkAlAHyCFNGoflBX2WWad74/+GCNA1+6Rk2XAuCEkuTLyovJXxVoVoKjajbxWrXlJVWtslJNjKzMTl2lpdjK3cJmGZhcOd5lyJYfFahNwsRLwdTI1GsPrDqNpbopiPGO3oBcXpf2ctKzaxuVTV7BWLOy6dSfz8+P0X7wqgOMhUt+KZncZ9ZOILZGILwlAeQiEIjhc8lua03AWUCgKdlWs6GqKXtEOuhu9FKBYqSFequXYQIbpYpSqPUJbUx16YQiPfYaAv4a/fupVerbtNbysHXn+qDxax/rtq7h5SwcDkq+d27bz7WefZP/um+gO9fBv//1/5NLoJPvu3cOHH72XS2dPclQg4rGH7qcz1Mrf/e1zXJouUG3bSG1jPf9qfw8f39LD3PAoh49c4I0T/ZwfK3BlUaM/7mY442e84GXB6SYTCpAJh8hHIxTr68lFIpRr67A2N0FtPcVwHeloFxO2KFdLGpeXcszGspQECINaCc22yGj8OKf73iQQdPDh2x9g/7odDF3q48jRk6QERG4/sIcNW7bx+S99i9Rils889gBHzr5DXWc94aZOnn36DT5x7wMcffc1gU4P7eu3cvrCeXb0NDE9Oo6n507efu81HtzZRmxpnnnJh7thFYmZORaXBom2hmiyBdE1F/ZghIzLyfmFCcp+Ly41CmSvYnc7cWZLdAXCuCplcktJZvU833n7TRaW4lgKJUpTC+QTSel3Ov9m392qM5oyZcqUKVOmTN0QMgHog6SIQXDBYpDDSrhuBMg4VuCj7lEX1bG6cCNoJZdW+bYZKWqpksVik3NJs+pUKhny+RjRukYKyRhLU0M0r16DpZijastRKKQEhnwEPM0MDw4RrFHTudJS7BIWMYSLpZxATIXmzg5SyTmmZ0bp7F5NY2sng1cHmZ2cM9xrB2uajKleNqsmUJVlYW6KpPxepVrEYnNIxlw4JY9eKmgWJ3mClHQbVpuVS4tl3k42EBNAWtPqJewooOdirGpbzdeUQ4Ca1XQ1hDn8zhtM2RvYvr6dAzev5dzp49y2ZScvvf4dNq1uZV3Ten7rdz7PYFzjoc8+zN371/Hi197Akg/z2U9/kpPnz/G1F07gab8Ji6eGdp/Or923Fbe2wNPPvc6rhwa5MpZjKlNhIp1joWghVZV2D9kJ1juI1Go01LuJ+q0CM0UiNh1PMY0zl8CRTSG0Qn5pSn4vKdBXxupwoYUaINBIUaBtOmthKi2NJHXt8UXIL0zz1vnT6HYrH73/YRoEGi+cOU/vmdN093Sw/4H7eerVt7jQO8C/+sT9nHrzIJHOjVgDNRx75TV+8qMf57vfe5Vd27cwXRghZavQGe4mrlsouYsMXzglEHQHM3NJUj4/7kiU828fpynYgsfjZFVTjeQ7QavFx4vffYH8fJbKTJzK1TGylwcYOX6ciCD0+vZVuINhLsdm+dabL1H0Oig47PijNUSifnq62/jx1duM/mfKlClTpkyZMnUjyASgD5ClophHcOH/CwCpU4UXVeuNBkDXcihZUutOljFtOX/LACSXdIEcSw67vYzD4SXgqnL51NsCOwGCjbXoJWWNlwRYCvgDUdwuO+Mjl4jWyzW9KtctOJweeVeZbGaOUDSMP+hnaWlBwKokINRlbAY6MzXO6NAgFb1MKBIhEI4QDIQoSyYS8bjA0CKxpSTpWIx8bJF0KkssVyaekThfYrDgYVDrQJN8tkds6KkFOhuaOHikl6klna0bNnDh9EkWdTue1jb272xh8uJJbt6xh0NHX6c55Oe2HffzC7/1h8ylqzzxqY/Qtambbzz5Ap0dNdx59x6efPoNepdsRNZtZ2j0MrtXe/nXn3icIwdP8MdffZrLcyUSJR9LpSqpShaH30LXmjZ27FjH9o1rWLeum4auNuqbGmhqqKWptobG2gjdbS20tTbR2lxPfUONAJKUXeCikE0yOzFFYkGVPU4sU6RocWH31pOt+MmUnNKx7HTWNzCxOMtzJw+zaetGHrv1ZhYnpnnlzXfBZeXHPvk4J46d5MS75/m5z36WiyeP0rlmDaPxJItTcW7fvY6XX/se+x/8MGcEWtbUNZNLzeKVNrzUN0V7bQMeZ4mklKla04owKSMnztK5vpMaadctkQa0QoVXX32PhVyBYrlIuaxGqip4fQ4WJP+bNmwk1CqAnFhkML2Eoz6KzxegWtKpt9p47KZb2atAz5QpU6ZMmTJl6gaRCUAfIAMZ1NS2a8cqKF0/BU6+lo+XLyjGuAH0fk4lLANbVeXtWrpRLhTdFQWEioaLaytL2Cxxjh8/yerubtw+gRS5sVhIUyrEidREqJRsDA1O0dSyVsCoaMCRy+3FYbdTzCXkpUXjr/5OF+TSC7g90NRaL8aym3hsnsnJSWILS8Y0Op+vhmhNC9GGFmrr6ggGQzi9ATxerxjlGj4xmmcstRwZLwl0eGmLOvHaq7hsDsp6hWcPnWXL5s1MD/cyFsuR9TVz544OUvErdDfUkZlfYlF+6/EHHufX/+3/4PK8hQ9/5kFu2l7DU1/9Drt2PkLbxnr+7FufJ1+7BkvNGvqvvMdPP7CNz9xxK3/6p1/gmdcvUrHWsZTOSV3laFrdyt677uSmA3upb41gsdsEYKqMjxbo7R+VuplgsH+cwcFJOZ5kcGSM8clZJucXSebylG0arnADnat7WNe9moaQDxd5qpklMgmV30WWkmmKVSmjLUA6V8UTqhHAaODVI6+QTS/y6cc/KnWgcfTwuxRiE3z0ofs4eCXB6VOn+Zcfuo/jRw5Sv2UH750/RXPYiktzszBj56Z1eyRvh1jb2cj0VBF7tIOLArQ3bYywMD1AwtGAu34V/ceP4pX+0eBw4ctbWLdqO9b6JgZtOpXVTThX1eHubCAs0FMtVRgfHmH7zh0MTI3x7sljVAsCVAJpa6Wcn7r1brbUttDhko5gypQpU6ZMmTJ1g8gEoA+QMfVtBW6u0/vwc+34+/eoY+PgBpBkXvKi1gApLed3OX/qWLnurlYrpBNJ7AJANnICJTA0Nkx/3yDr121AE7ixWHIkk+MU8wXq2zdh0R0MXrksENRpvC+xMIs34Mdus1Au5QSK4hRLWVwuK5qm3IZX8Ho91NTUGsFidRBXa0am55mbXpR4gqXFeTH2BaiEuCqFDJZ8liXdycVcPRcSbnnezaqwg1Jsjva2br7yvdeoa1uNs5JjcGiIrLeOzp71rA4UIDVNW1MTb770Aj/38Z/l9//rVzl0boJHPvo4G3a28e1nvsL+bTuJ1Pr5q++9h2/T7cyU0ixMnOeXnjjAret7+C//5UlOnJqgUInjsFrYuX0tt927l/bV64il4Mz5fo6fOc35i32MDmeZHcpQGRpDm09jnZEwm8K6KNA0nzFifSZOYXKB5PiCwNI0s2Pj5OOLhHwaLU01EuoIh8N4XH6p5ypL44vMLxaY9kVIuWzYBZC2rV3H1dlF3j38Dj/zxAM0hUK8+/ZREgJOH/n0J3j3SC+DfZe578AOLl48RffN63jh3Ysc2HYLw++cYtemHUykBqXNdTxaHQQi9Meu0uAq0ewMsVjyoNmi+LJVgnqZT97xIBsaVxPx1lMQon3x3XcoW8ro+Rz5ZIrCYtJYBzR/dYg7b95HS20DB998HUuhyJ61G3j0lttZU9/M1MgomxubpB+YMmXKlClTpkzdGDIB6IP0IwtAKhOS+er39ydSm5ouE52KjPEfbJJvtSbH4XDidnsoFTN4/DZOnz1KuVihrbEVh1eT61Xm5+ao5GzUN7Xh9ji52nuRusZ6NKebuclxLA67pHsMqFJDR6VinnQmTUG5s7basFntWO0a/mCU2rp6QmLwK7BxOh0CYxYKepVMVpeOkSQXjxmOBY6k6pmjjla/hVpbnoagl5NXx+iPV1nb3sTFk+9R8NTha+jgpp56Zq6c4PYdW/ne8y/wsSc+wsvPv8mXv3WOOx67n3sebOWFF59h7dq7qI+E+eI3n6Zz510MTsTRykl+7vE97G7u4L//4Zd458R5bBEP3Zt3sveh/QSaw5y5MsjRw5e4cHqE2FgMZ7pMtGAlmi3TkCvQmIlTVyjQYnPQ7vDRgEaTzUuj1SMlcBLV7QSLFlz5ItV4nPjsLAsL80zPzpErlAiodThWeSYQxB8IM1/Uyc5OEpe6KIcbiS9kWR+V+va5ePLlF/jIPfexJlLD0VPnpW3GePSnPss3X3mHgFXnlvV+RhYSuNs2c+n4Ge7btI5TJ99hy30HOHb+EptWb2A2Pok34mZpbJ4N9VukzsusC3XxyPpb+PDNd9AVqMGrudEsLs5e7efVl17Bni1gE/DR5d3VWBbL1BKtTj971m9g98bNZFJxaoMBHjxwgFrpTyOTE/zVd5/ip++41+h3pkyZMmXKlClTN4JMAPog/cgCkJFx47+qgh5LxciWMQ1O7QWkTpbvMNYwqXVBdmcYS9mCJ1QVfolx7NhxOlpWEwzVGHvZONxOxkcnjNGd+qZa/KEAfRdOCdTYqW9uYWFymmQ8STAQxeMOGvsHVctW9BKk4imSiTS5XF5+v0xZ8MsmeXI6bTgUAKlpbconneZEq5bkeSczjk7OFFtJ4WdDuIy/lMDlj/Cdt8/RsXYLU1dPUpF8F3xNbN64FuvcJdrqa5m4MktXo4+yy8O/+8PvsnHnFj79mVs4ePgV2lrbaIy28ldfP0bPrfcx0HuBdk3no/u2sqW9nf/6f3+B9966RM+m1dz88F04m9dxtX+Sdw9eYPzclDEFsN7rosEBLQJtLVWdVnuCcFkAMLtIXcBBQ8RnuON22a24Bfhs1Sp2qWeH5NUtxzWUCAoQeixu7GUnlbyN2HySTCyFVa2xycWxO8rYA07sAjPFWJ752RKOYD1LhTztjW1EbR6efembPP6RRwi7Irx58gTj6Xkee+wJvvPVr3HTlnVUCzrCqcTTFfSKjl6exemvEUiNMh+fIxr1UU2Vsc472dq4k/09e9gWXU2PJ0Kz3YNL2q1asRjQupTN8MbbbwvM5inmc8b+TWUBtPziIq2RWu4+cBszC9M01Mmz9XVEvF5mR8d48vgbTPmq/OpN9xj9zZQpU6ZMmTJl6kaQCUAfpB9pAFKjPxIbThsUBMl/yh22kV2VySpqXxfFR8pNtdWm2sJBNj9NpEYjl4px6Uwvna09uJweNJcbfzTIzMQAydg0dY0NNAhQTI4Mszg7a3h+s9gDzEzOkkzl8XkCOD0hnA6f/J6NYlEs6nKFeGxJYGiJTDa57AmuIsa+JjDg9OF2uvCr9T917Zxc8nI65hUYctOpxWnwWjk8sEDKHiFgLzE2cAVbTQvBSJRNLSEWBi+ytrOD/osD3HPXo/zmf/wcWZ+fn/3ZjzAxfI5SKcOmzVv54t++SPvWD3F+5DLdURc/tmsdt69dxf/4oy/y5sHT3PLoI2y97QH6pmNc6DvH+LFRLPNWOhraaQlCoDpOq6tAk+S1RhMSSs2QiQ8TCrupb4xIZaqxNalUu42K1H3FqPrl+lYOI1zkcOjgKTkF6nwEK14CVg/lbE7qZBGcJayuPJXCEk7dhbPiNlyMT8zGcITbyKcEQENWXFEvr716kJ986BPMV/OcvXwJj1bi5j37+eu/+g5P3Leb2MgVanu28paAXndHDVO9fdy291ZOXr5CU+Nq6ko1fGjrfWyuX0+dow5Nr+Kv2rEWBFHTeSyanbSAqtXr5nj/RZa0Mrn6ABWBJ280gNfvoa29mc1bNzI83C9wlGXrpk04VbkFkurbmtmzfRc3h5ql/KZMmTJlypQpUzeGTAD6IInx+n24+b5ufABa0bX8qEiRj6HlvYGU1zrl0csiBGRT/rGtTmwuH6VCCpulQGNtmKGBfhZm5mluakOTMjp9TsJ1IVLJOH0Xz+Nye+hct1kt82F8eFSes1LX3GF4zZuamia2uGSM0nh8AWqiEewCM5qmocnvFQoFcpkshfgSM9OLjM4sEJufYWJ8jHMzRS5ka5nWvayq81NfXcTrC/LymTFqmtuYuHwMR6iOuRzce/NmZi8dYV13twDbCQ7ccjsvHBrmxYNH+NSnD9DYXsOJE73s27WHLzz5TZo23M2EwE2Dv8i+LXXcuqWHr/7FN3nxe8e588c+hqNnFa+cvsq8cg89dIWQwEdPWwNRRxySl2h2JWn3OgjpTipLRbLzSYJuLx3trditGmXlHc/hF2hxSD0o5xI2Y78lFazKraAwU1WXtJKAXtkhwOHEWa7i9WgCHDrTSzNUpV0aPR7sJStFgRE1fdBesTM9No63OchUbon6uibcJTvnT5/iofvvY3JsUMIUbR1rsdmcXDp5mNv27WEumaDi87I0G6dT8qJGdurbtuDTunhszb20aS48km9d8lSVtqoKkFaLFWO00OF38eqFExS9dsZjs5waHyQTdZO3lPG6XAKsGutWdbJ1w3qCHjm322mtrZciWuhsamG3wPPWYD1uixoDM2XKlClTpkyZujFkAtAHSBhBeGEZHNTh+7qWZsQrQZ0apGEc/hNL5XZ5BMiAHXW+ki815FMtS5ZVmsRqSlpVx2JTEGTFbnFQTKXxOivURjT6+y6xtJQw1qU4NLsY9zbCkSg+b4iB3qssTE/R3NpOa0c75WKO+YkR+ZEytU31uMQoTsZizEyOMzc3R6GkE/SHcPsj+EO18v56Y81ItLaBQKSWiM8t765lwbuK03GfAFOIdk+RZm+FM2NpJhN5QpKvmflFiu4IzQ11dAVt5ObHiAR8ZBMpou1b+f0/+wIb13fx8Yfv4I23X+GW2x/ime+dBG8XMakHlzXO/Tua2dLj49SJi/zpnz3LXU98inxdDUfGp0kVU+gjY9TqYTpXBXHYp8gtnWdVxE6P5DtUclFeypKcmVHeqOlo7RQYjGKrBgUxAhTzdjSbHzsugSCBHQFDTXUNqwXd6hZeFDCSPmOzCXwK9Fi1sgBIHo/DTdDpJzuXlbIUaGqKUlGjZgtpeXcBLZhndHaEcH0Xybk0q1rruDp8ngaXl21dnQwNzjOzsMTOmzfwxsFzRKUN/I4k9aF6rpydo8Pjp9FXy54dDxCwNtPkCuKuFOX/AtL0NjcZaR+sJTmWJJ+LIamHZ0+8RSAYxG9xMj44RHtTOx3hOna1dLKjtYvdXT10hsLUCEhFXR6cUlaHvEDtNVVMpqimMvj8weW+Z8qUKVOmTJkydQPIBKAP0P+8D5DghARj3YwYswZDyEftA6Rw4/r1NTeGljOjsm7kU4xulX+VrPJuU57byiWKBTGunWL1qtvLLjHcNaqlRUIRtdePzuy0mtaWk+tW3A5NIMmG2+ujpa2NUqFI/+VL5HI5gpEwze2NagsbYguzxkhGIBIiHA6JjW2lkM0xOTHFxNgE8zMLpBIZCvk4mWLJmBzmVAMFTh/DlQZ6E258TidNdoEar53vnpmhpbme9EQvBW8D8UKV27avITZ2lU2rOhg4f5qbb72Lv3zmPUZGr/Ibv/hJhodHiPoCTM4mOdKXZ/XGe5gaOM89D7TQ6B7DXwzze7/7JW564GHyHY0cnZwhp5epCgR5yk7WtXQQyc3iSIyxvjbAan8jrmyAdKzIfGJcICxGuCeAVhOUsjZQqvgpSTkqFjdVm4eyVERF1bl0jqp0oooclCseqUaNsr1CUZO6t+elzMttYclXCZZ9AoIRkpUyi2Mx1ra2YbNnmC3MUPE5BYQgIXXY1LCK0fkZtm1u4/TBd3ngpnsppBeZmJe6LVjZtPdWXnr+Re7e0UVuKk5TdLfhPnvrul3U2Zto8zbh1RT02hibG2cpnqZG2q8koFXVHCQl/fe+80UuTo/Q3dDMfet2sCXayh1rdnFHzxZuFvi5pWMtPcEagsJNYTWSZJeCVCqG+/RsIU9JADtn0amV8pgyZcqUKVOmTN0oMgHoA2SAw7XRHXVsgIPNahxX5Pv96W/X7lk+Nw7/ibWSCYU9SgayLZ+rPAqoWQRmqlWbBFUe9Rd7B3arG5sYsmoqVDKfF0PYTrg2RKmYIJ+ZpSQGdjFtxaGFsVqTVCtLhBvraGpZjV7UGRsZZG5+1jD0I3VNOFxeNGXYC1s5PS5q68PUNUSorQvh8zvFUC6QTk8RS2aYX6ywMJvi0nyOI3NVUrqbnqifWhdMFsr0zpWIhIMszgzhdDvxBbys7mimsDhNg0fyL4a3t6aDz/3NU+y7bRPbdq6ir3eQruYevixQ1LbvcSaunOPBzU4Czhl2d6zn808+zYTAmXPzFgYGFvGnvBQWEtK2adpbArQlR2isjrCutp5G1ypsuSCJWJK5+AAVZ4LG1mZqatdS1mvkGR8VRX4Cw3apN4sAj02NrFxzQGFsSCv1rsk1lW4zoNmK3abqfXmqnFuthZJ2sdnsBPwRHHLjQN8lNm1eg64XmJuYxu/yI00joOUhGKwlNjNLfTTMyHAv+/fvon9smMV0kdraJmbGZ8jE0tyy5T7qfJ3SllE6Qhtpqu+gYM0xMTqNveSgoGVxSiOF5d16tcKMrczLyTGeGexnWEB1fX0Dt3evxlWuCNz6CXn9+AXgnFIy5cHPJmWqyL+LiuTdKvCk3KqrvaWUFzm/w2uMbJkyZcqUKVOmTN0oMgHoA6RAR01VUvEKDKmg4EeNpFjU2hk5X7lnBYT+6WXkxojVCJb6GLEBPisgpABoObaK4W6zGKtUBH5KlC26GMIWyhWbtFEUn8BLOjFNKbcgaQVi8TgOu1OMXDeFTA4hAAKBMPX1rXh9fnKZJFOTUyTjGUqlAiVjrZFyDqBLlnQcDk2M9wA1NRHqG6PU1LdTE+mgQUDK3tDDmfkKZZubGkeVaMjFicFJHN4I2cQs7jIU4hY2b9yAXkpQ67QyM3SVNes389LBAUbGJ/jIJx+i7+p5WqItHDk5wIyrHqvHR7Aww809PkI+C/GZIF975RSt+29naDGLJSEIGM+Sys1R1+kjrM/SLZCwsamOqCdMPlVkcXGWeHpawDBHY0ur5HuNwEuj1GuYqtSh1a7qUtWpwI/Us2ZXfcPoIgI8aoRNTXtTtbzcr9SRmiJnt0j9G9cFfozn1ciMg4DPjdurceXqZXbv3EFsaYl0Ji9pUeaXkoSCYdKpOOGQh6mpPlavXiUQ5mJ0fJFcSuemrbvwyPm2nj2EPCH8ESmX1sjM4jxzAp59lwfoaukirDavdbsEuDSyJHhr9AwvjlzELmUcuDpEi1PjwJrVAkkWdLtAmsOOSwBIlVf9QcAioGYVaLNpmgFvKmgSvHY1KuSScymbKVOmTJkyZcrUDSITgD5IiiMMcFg+Vjhh6BpfLI+rLFu417DCSP+nl8rEciYV+lzLrjFD73opw1wBkWG0K7PcUqZiyWG3VcR4d1Ete9GqITwCH+Gwh0J5QQzseQGPrACRQyCoQe7VSCRmyCRjuGweNKtGNBogWtdAUK0bEmNejc7o+QKFgk4xX5J7cyQEjpLxNGmJ5+cSxBM5Yuk8V+aK9AoA+WtqCDpLuN12Tl4aNqZnZacHCVZC7NvwUVZ3tXLp/OuGg4KJsSE612/lv//5IbbtXMvarV3MjU5QI+Dy9Lv9dO7ZTyU+yJ2bWshnlljVs46/fPIkluhGqo4wmcUcVr1EIjktebfS5oNNQTerfWE8lbCx2eh87AqJ7AAev4W29nUCb+uEVxoo6k7DfbeCSaNOjY+qS9U7JKhKFilAUBWuYgXOCoCMuheAUICggnEsIKRcT+tVq+EhLxjyCnDYGBweYsv2HQyOjAl4unA63CQENGuba5mZHBWQaeZK7xV27NgvdVphddsGtndvZE1di9Sjj0g0ytz0GK+9foiBkX62bN3AqlU9lJRTCk0YVgAuW01yavgQBy+9Rznip+oNMDMxjVWA6UH57Tr591qqWKXd7RIE5iSv9muwo9LsKsixGgFTsVP6hromFWHKlClTpkyZMnXDyASgf0A/OKpz/bmxDuiaIWuc/8C9/7RaycuySb4SG59reTaC0JEqh3GnABCW0rVRC4Efe1QM2QiVsobDY8UVtJPOzOASi9lKwJiyJma6GOkeisUUiwvT6MUi1rIY+WIoK69wyhBWXuYUKCkvaZrVJSRmExBRIFRAL1jJZ4vkBJAWc1aGk16m8h58YR/1YYuAUpJJAaKIUwBsZoqP3PFZ7tnxEcl3imJuiLnZEerrGxmYSvP6u3N86jP3MDHdJ8Z6Db3nR5hzr8YSjlBbGWZ9tIzL5WUhqfOdI8NEejYzPzOPt2Ijm46Dq0iDz8Y2r48tvhD2vE5mocjS0ji5yhjeoE5DcxuRmvVSP+0CllEBRk1qQDmVUKM/K9CzDDiqzg1HGpKmYEHVvU0gwYAdBUESVo6XAejasdo/yOYSMLEJBOny78RrjDgW8kWam1oZFQiKBAXMkikcXi+J2TkaBTb99iBtDT1sXX8zDYFGQjYBH7ufWCxB32A/I1f7CDU2CwB2UVvjx+Z2saAnKOhxLo1f5tTocUqeOGPpaUoBLzFd2lzzMyfP3bd1O82+CLpelnypaXsWaVNpVymXAXAqlryrc6uU3zg3Sqz60nL/MmXKlClTpkyZuhGkZuOY+kdqBRqUDGcCP6JSeX8/yHmlsjK2JUY5ajTDJYarQI4YuBWLwIyjjrKlA1/oFjo6H8fnXyPHHgI1sLA0y9jwDG6Hm9paN9nMIpfPD9J/eZSZSQGifEkMYTtWgYxqSX6rKPWoa7jEOPe7Ini0GqKBBnmnB39NA0VrUAxqj3LDIDdW5P0JNIuf1FiK+3c8yq3r7yJkt7Eh0sreDTsY7R+irr2Dd09foGt9s7zDQ2p+Gq/Dx6nBRRp7tpBYmqO91kVq5grNdRFeOXwee7uPJesseikFqTSlTBZ3wE17TZidtc14Y1kWpieZXxyjWMkQjkboXLWJxuZ1Aih1VK1hqS4fNgEzu8uB5nDi1Nw4nE4ccqyCGhHR7Go9jACk2kxWOZBYGSm5Fgx4WAnXYMIuwSXvcQowugWE7GUbnfVtJGaWCNrc1Ll8FBcWqbG7cKSq7N+yny1dN/HggScQ5CFkDdHglTbLVJgamefdd45TKFa5dc+ddG9YQ9laZHCwl7FEH8cGDnJ15gxvXXiZK0u96MEqDr9F2iklLFygpqGehUye4aWYdBwXPmlnNapngNp18PM+TEufUtP/bBUFf8rxg5r6aMqUKVOmTJkydePIHAH6B3T9X68Ng65SeR+Erg9KK/GNrh/Mr1EGFQv+VAVWpFsYHuPkAhZrWYz9ihiybsqlWtzuJtxinOcKc2BP4vbbqKATW5yX6yUa1OakgXryxRKTU+MM9A+QTIgxLUazmrZlN6bWWdWyIUnTxGCWc3m+YrewUA3TuyjvrjoJ+yxEfRpD/bNUSlEeu/lh7tn1GH5bmII+wXMv/h0Tk0MsZRfxN7Xx7RfeYefeDWjuAiTVZqtVLiw4aVizgcXRs9zS48eemaK+eTVfebsfWsPk9Cx2AQhLUsemWalr8LLB5yA4NUp64jJxfQarVqCxqZbWjnWEwmqPnXZKeoiK1aOqCYutLECkDldAYBkOVFAODlTdqjUxalTEmBannEJcq3cl477rQMiq3mFAkHImIC+ultGs0jJyn8/rIxqJ0t21Gp/Ly77tN3Fg8x72rd9OW7BO6sYrsCTPlCzMTc0yOCDltFVYv3UL0domKnmdhVKC6dlRzp46AoEyY+lBodIsuqdAWlt2fFEpl8mUKuSrfhyeWqZHJukIRNnXtQlrSQDHyKOCZVUWASEph+G8QX2MvqTSpWzytTLVz5QpU6ZMmTJl6kaRCUD/gK433lZGTQxguJb+g8c/Kno/z8oRgprKJ7Fax6LGgpRpq1S1CkyQN5w+gEfuCUDZKYa5FXcgQKmSJluYx+PVBG6CpBM2Ykt5MdZ1Y0SnobGFutp6srkcs7PzzM3Nk0ymyecK5PMluU+M7aoAVLkoAORguhLhalzD7nQRdlZwy7Xzp0Z4aP+P8eC2B8Xw9nBq8CRHL3yZU6cOiYVtp7azkZlMmeOnrvLwY5sYHh2mI1THwcO9ONbcQq6YplafZlOz8l5m4+pEjNf7i/iam8hKXh0FL6Vshfr6IN5KjObSLM7ZPin8HI5aG/VNdQJAq6WMXZSKjejlOnQ1QmaVfmDXsQoAqbo0nEgIGCzDj4rtkq5qcflcaliOVV1/v8+ooO5Xm8OqeHl6nAIiOberqWRVNOVowPgogHQR8odpbWqho7WV5mAtzZ4IjqK8Olcmn8ySWIhJHcfwBd00tTUQaogIUBaYmZuT37PSN3mR0bGrHDz0KtEWPy3dtSwlpA3DGnP5NJozSMDhIL6YpuIIU5Z2XZxbQsvkeGD7XtxllRPJj+JkVSLpM5L15X4k7zdmU66U7VpsypQpU6ZMmTJ1I8kEoH9A/ysDbiVNxSth5fxHRSsgJ0fyUWVQ36JlC1b+U9BjOPuWa2okwy7G/vfLanPViJFdI0c6qXRaACCM39smj2skM9OksikBHV0MfpuxAL+2rp5gKGSsbymVdPKFgrHB6kI8RiK+xEKqwEDGx2jOgc/rpE0AKjmdob1xK08c+BgKId46dZrPP/UnuGqnCAYEngQyWtet4/XD56U/ldi7s8GYjlcX6eTt8yOEN+1itP8MD65rpro4SXNnJy+cHWa8XI/bEcGWlbwk1eafOtFQhVZbjMbcDAFSRJprqO3opK6+R4CviWKpBl2vESj0ivEv9WAvC5CVDePfJvkwpvkJABgwqaBHjYjYFAStAJGK5YrhKU7uk3pcTrvuWGJ1bIyuGPfJu6XO1fsNSJLfyOXzlItlctk8qcUEtkIZvVB6f3QyHA0SrQ3gCtjIW7MsFZZIFGK8d+xtBsaGJN8xgc4sw1OjeEN21m/uYmxigfrWemaWUjikXmqcDuan5tBCAke6xdjAtri4wAO7b8FfVv1A+ozKs5rypmLpBUbe5dzoPqJrvUh1L+MeU6ZMmTJlypSpG0XKdjH1/4d+1I26lfwrQ1bBj7FJqrHjqy7HBUmriEEr4FNxSxBDXt1sLWJxSLq7jnJZuX/eSk30MVqaHsXp6iCTL6C5NcK1jXLuI5svMjM7y/jkJJPTU0zPTJPJpvEGfLR3trNp6wbWb13D2o1rWbVqE+5gAyUx/p1aGbH02dGzh4/d91l8aFwcOM6//5NfI9TlphywUAnkKLvTWH1eRsfn6enoopwo4pV7JxdL5B1qhCpGPj9PR20EazxBtuSiNwbeYAQtZcVXcgs8pHFEdXTLNDXVGHWWMs2t3dR37MXr3UW13EVe4KdqCQr0uajY1HS5qgDJ8tQ15Q7caV129aym0SlYUcCjzh0Ol7EfzsqaILUOSDkQWF4PpI6VBzbNaIsVGFqGJWkfgQw1ymKz2+QeASCrPCPB5/DhsjqxleSaakOXPON1EGqup66tCWfQTYEsyewsE/MDDM30c+jESyzlBnnn4ms0t7gJRTQa2xsZHhpCk/dULV5KeQeVvEY2rRNyuqnxSN7KKQG/RbSglYwlTboi9S3wp2QAswI+lXcFeQr7VH7USJA6VrExKrR8vylTpkyZMmXK1I0iE4A+QOqv6ivxB4WVe34UtZxtVQ6MBevVqkBOtSCxAiAxXstyTXhEfVUsS+jVvCCSA6szJE+1YCnvwuO+ncbmm6hvbSFvEfgQsPB466mtryMYjqLLO0oleYlVI1/QmZiY4cLFS5w5e46rA32MTUwxO58mldKN37RXqtQF6ti17hb8WoQXD77AU899BVswR11nhLlEEptPwMAPyXSGeCJNW0srpZRGbSDCdLKAs7aVXGZJgKGCw1LEKQZ7suRgJmPF5dJwVQQgCjl0a5aqr4TPW6ZH8rupczMdAj8O3zYq5XWS72Yx52sk704x/su4PBYDgNRUNU25eRYoMfa9EZBR63YMwHEuw40BRe+v75FYjtW6HnV8vSOEFRBS15XDBAU9UhECD8ugqtbcqP2CpGbko37HTiQcwelx4Iy40Or8LJTzTBdSTMQmefWtF7k60c/VwQvMzA1J/SdoXV1DvDhHsRCT3yzQ1N7A7Nw81WxFylRDMWs1HC4UCwX5n4KVoICspZQSGC2iOQQQrWUSxbjUw/IaODWyo76U04OVj5Ei5wp5VH9a7lumTJkyZcqUKVM3lkwA+gCt/PXa+Cu3VU1pshkGq4pX/mJ//T0/ilrOtvpLvXQGixjZFqecuiXWjBGh5ele6qKUvxqUO/1i6tqFi+Reqx2xwoUNWqhY1+EK7Ke54xG04FYSupN0qSLXgoTD7fhcLRQzar2NH6dVwMjXJuBUT6XoZXbBxlImIEZ+AG3JTnNlLXdt+ZQ8D0+f+S5/+/Y3mLOWDLfNIc2Ntxyhmo/gcTQSn11C03MEQiHGk4IIPo2J2TGq8ptLMTs7oyGy+WHiIY3hvHLz7RQYEhATyMvYBJQ0G4FygFXuLaxuexi37xaBnjYKuhvdLZDlcuNyeOQ+DYeAh9Mi4dpojKZGYgSCFLhY7AIMcmx1CBA5JV0Cav2OAh6nCgJBDokFAu125SHOKdCjXF27jWCkCUAJZQlUyPNVl1S5S96h3q36nUCbpn7PzkIqxkxhjqmlEU6eeJfXrpzmqbNH+dwb3+PNc69z5NQrPNN3GS1kx1NNEAqGsPsbBL78TE7liQS8+IIWsrqFxZk0/nCAYmmaOncCmx5nQX6joFnQKhV8+RKhitR7qJlpS1wAN4OlohujPcplhk11DdV/DOxZ/neguEf1p+W+ZcqUKVOmTJkydWPJBKAP0PVw80Fh5Z4fRV3LvRGrb7XWR8GPcUWVT61pUSCkjlFgpKbDqb/yq+vqFvW3fwWF9WLIr8bl2UR94z5aW/fjDWwmX6wlXxCwcdVIegd1Dc3YnQ7SuQypXFauqZGSZknfSDHvxF3xcce2ewUyvPzNtz7Pq0e+RdMaL7o9i+YsC4yU0fMpqpWysUFoMjGNQ8ugeXVihThugbXUzCw+u5tKokCnAjS5PxQOk1rK4KhInlNZhGBIlPM4fH58AmudNWtwOJoo2SKU8QmMKMcOyw4K1KiMU8DGpSnoESgSSFF7GhmjOhKsaoqawIld7rHLvcY+OSpW09wcy6M7mlOdK+hRQaUtH6upcE6BpeVjCUa62mfnGlzJ+5VXOPUeh3KOIMd5vciloStcGbjM008/xZvH3+O1k0fonRkjWUxTUxdmrlRE8zgo5ZJ4PF4y+SqNzU30DU3gdXvwCJTZ5bdG5Nwpectkl/C7pW6qOkUB4YrAW7VcwlLS8QqoRaL19M0OMJEaV9s4GSNAqg8s9wWjKxh6/5/B9YmmTJkyZcqUKVM3kEwA+gBdP73tg8LKPT+KupZ7I1bf3y+TGLYSGcdGmkRqXZBFl05TRjm/VjPklJVbtUg3Us4BiFDRG8R4FxBy3ko0+BBtrfdS07CZsqbWpuTQbTn8UQ+tne3U1jcTFDBBq1ITjXD7vv089tBjRAO1vPTGS5w9foag3YerJD+UzxH0ueS3S9i0igCVFbfPTiw1T7DGIznKULVmDEDQyxVslRyUc3iDAYGsshj9PjLxJWpCAaiUcLgEJioV7LqUM5vHIxBTlHTdacUq19RIj/KupjZzvX60T71fTWNbDgpkBH6ujQr+4NS25TQ1DU65tZY09awxmqOuX3+8fL78vMCOnCvgMdLlGQVdqqqVSwpV5/6An0KxiC/oUxmkUCpI/iwCn17yZR2330dcymqRPMcSCTw+H4l4jMbaWkbHJw0A1WxWgsEQA8Oj+LweigVpV7uLivxALlPA7XJTFsisSiewSZ3YXBbOXz7H4Hi/8X8No5+o5pf7jd4i5yqPqp8Y3cJIVAemTJkyZcqUKVM3lkwA+gBdP7rzQWHlnh9FXcu9Eavv75dJgvrv2rlKMha1y0dNfbIIcliqykCWWAztqs0pvUnggjq5sUWM/i405zoxvrcKoOyivmkfNfU7cbjbKeg+UsInelWMe6+FugYXQb+Fdc3trG1ZzeUrfaxv385v//IfcMeWx7m5535WRTfSHunBQw1u6qnmfLi1RpJLVaxlPxp+imkx3isu4vmCYbQnsgkBGifzOmQtThZSadKFrIBOET2Xp5pM02h3s3/9VlpCNZJvK0W7lbxaf1NR410CIWr9jYITwznBMrBodgEfI6iRn2VQUWuC3gee/x+CAislo44NyJJqlHcZsHTtunFNPupcAZAmZSpLbPe4cPm9FMolgTaHoGGVgtqnSnOSKUodSFpOwNEmeUylU9TVRJhfSJLNFvDItVAoxPTcAg4jL1ayuSLViuRHjQDJeyoCkmp0yO60CcSGsTirpEsJo91VRhX6qPzIf0Yel8thRNcSlw9NmTJlypQpU6ZuJJkAZOoflMIdNRqkLFqLGMiWqp1qVa38ULv8K8cFJbmknBxYsWoOKhY7FU2n6i5QsQcEEDbh1O7E535MjPAP0dJ8HzW1GwxvbC6XH+V9rJCuUCrqnDtxlraaNno6e9jWtZWHbnqUD+35KL/+6d/ht3/iDzmw/sM8svcnBZYO0OLfxsbW29mx+m68xUa6a3fgt7XQ4GsiipOozYVPC2OrSCj6iWpRWjx1AlMt7GpbxWfveZBffeJTPLLrFvwCYzblw1kMfrH6jXIYTg7sDsn/NeAxYOf7YWUKnHFd3b8y3e0Hw7VnV4IBUT9wvjzao8BH3qlgy/hItRojKtICQhZqlEWNOqlNY7PlooCODZdXIKeUpyJ51yX7JblfBV0vG1PzSrpuTHVT516BnnQuSy6bw6Wm5EmeFxNpSvksVYGdklCVclhRkWC0tWSgKrBTLGXltwR27CUBrKxckjZX3UFkdAtTpkyZMmXKlKkfIZn7AJn6B2X8pV+N/lglrojpK/Bj/KlfeQTj2iiQRWBIudEWQ9wmBroCpEpFk2vKmYLAhRpFEUCwOXwCBDXCGW047askbsJnb8OrdVO2NTHYP0dPSycuMfSLpRwWexFHpYjb4pV73AS0IAG3X2xwDZ+zhtpgG6vb1tEQbqKroZM6AZ6tHdtpq+tiW0cX28N1tEvY1ryV+/Y8wsM3P8LeddvoqW9kfX0L8cERzr71Dn6nwFJQYEzKa7ixNnYeshnlkBQpnwCJRcDECOpYpSmnEVIvihRU2rVRoOW0ZccZf3/6nFw3RpKWz5Wuv64Ap1wuU5FqVHsBqZ9WTGaXd1clYyovVYGevK1E3/Qw0bCPhdkZpiTXjlCtyiZRqS+/tMeVeJq969sZuXia1u7N9I1M0l4b4sjR8+zd2Y3XZ2NyUWdkYIr9d95MMjVjwFWiYMHpC+G15phbSFCWus5VbNRGa8kkhlntCLCpYaPkxblcTinDSt5XymTKlClTpkyZMnUjS1l3pkz9g1IQpP5TNu7KpqkWZZBLFzKMXzUdrqo25BRoseTF2NeXoUcMdqtdw6J5xJKPiGHfLOer0LSNuBw7cLk3EY5uwOduFWN8gj27dxGp8Qs4FVGz6hQQUKySnl8kOT+Pno1TyeVw2+yU0lnc8vu1Pj/NoRC1bi91nmY2NW9gS0Mru9q7aQo00VGzgbVNG+h0NRGs2EmPzXD1yEn+7A//mLdee5VgJEhNQ50iDGzKu11FlctGWcGKMcoj5bguKEBaBqJlF9XL++Esw88K0KigRnWu3+/n+6NI3x8Ben/0R4J63lgLpIBIPurb2GBU6lpNf1PXlavyQqlEpqDgULVKBb2iS2MIjMqzav2TWpNVsWnL7SXgqtb1VASg5KoxPS6dkfaRBLfbgy5tWC7mcTkd8p6KQJBywV2WfEve5FAQkEqpIO/RsSvAlTZWv6ra3PgBFakj49yUKVOmTJkyZerGlwlApv4REpN3+U/9Ei8fG7EaJbGojTxdcu64BgLqxjJWMazVVDnDjBfjvGrVxSgvG97FLA7lOjuA3V2HFqjDFgjgCIoxbsvzx3/5B8wXZ8Al77G5KNs8pAs2kuk4S0ujXO47zWsHX+DwkbeZX5jme898m6e++mUOvfYir734DO+dOMNffOmLvHPkTV5+8wWOnD/LmZFRDp+/wDNvPs9//+Ln+MZ3nyInAHHHg3fz6V//eVp2bGChlBGAsKodjnBKuZSzg4pAiRqCMUY6jGBUwfsgtAI8y+CiprB9H2ZWgOZ6IDLCD4DSynt+MBjXVoI8ozzPWWwCXAImJQGVvF7C7pLcSt3a5F+xQtJypSq/q6HrQjtybJFQFVhSU90MXJFnsDpIpXOSV4vh3U7dqheLRjvp6n6Bn7JAjlXBjvxOuVhAzwtsybMuyZfUiNy7XBHGO+VQsY8xCiTn6mslXj4wZcqUKVOmTJm6sWQCkKl/hJRhvBJXqFiVP7JlL3AVAR3DL3LFIbFLoMclscBQVcMmwVKxy31WKvJc2VYSCMpLnJdbihLk2O2m6A5T9fspuSqMxPr5xqtP8vLZ53hr6CCTySlKjiotq9pYs2Yzm7duZ9/+O9h582109Wxk09bdbNiwjY7Wbjav305jcwut7U001LppbQoTqgnSuqqLcLiWHZs286mPPMYf/Lt/z4c+8TGi6zp55sy7/LfvfYWRbFygzIFTyuOW8tgV2AnQLJv7qvDK0lexApfrYWVl5EagR3mGuw5+3geZ645XpskZQZ1fu/79eCVdjS4peFy+RwGHghT1e6lc2lj/4/S4KZcFTJwugRk1OlTF7fGSTKbwSlwuCXQWdRw2pwEppYLUt0BOqawb0+rUFD41AqRG7/RSUdpIOaYoyT26vFfOdYGfQoGKXKvqZcNZgkPyp9reqBH1UgU56kRiFamvlXj5wJQpU6ZMmTJl6saSCUCm/hG6ZugasZrqpkusFqVYlqc+SVBe09T6IDUtDgEfBHYsWk5gwIpm8WAjICEsRn0Aq1bB6ohhcU2iW+3oljrKeMmU7QRaa1ioTHFm9G2+9Oz/w7/7i1/h80//Z/7wz/5v/vzv/pKLQ1foHx1mIb3IUipO5+pu1mzcTF1rM20COmu6Wvnoww+xfdMWdm7eTHdbI35rlbqwE48AllUv8fp7L/H57z7Jv/7cH/HUkTeJu23MFFKSD6sBBpqUw6bKKwa8za4ZU/isAjVW7ZrjA4EAq+R7OSxDiwE31wUFMwqE/t40N/X8dXCkvLOp+AelRnMq8k412qT+gcobVYoR1PS3ucWE1K1VwMdONlOUupTfcLmMPZDckh5Lxqmrq6dcEOAUcFEjclVpr1Jp2dGEyq86t0s+y6oZBXgUPKn2VL8kyZIH+Uiaco5QLUksMKRw0KHAUN2qPgrKJI/GucSqytTXSrx8YMqUKVOmTJkydWPJdIJg6h8nZegaX2Igq1EJwZn309S3ipS1btyynKbcKS8H6WhyzUiVL/U0VTGnBYzUdasY116Lk5mFNG+NnsJdn6Uh4CCRtDJbtuANFOgduMKRS28Sbi5x5vw7XO17A58/z3OvPs9ff+MvGE2f4+Xjr5LOjPHfvvgVXhqc49BgL8cPfodIvZ23zn6Lq4UEf/TsO3zjree4qmcphvyU1cajdg9Rq4dNdavwlKRkkseyrUJFKEgBj0XBiBRArbFRU+OU1Aax1WvT4xRQWASGlkeIVI2o0RV1TdLVR9WXKqfcp8bOBEeM51VlKJAoK8hQAFKpYpU4J2/JCTi6pV5sFSuCm/LqvNRhmZjFy4mpaRz+OD1RP0ePTpBZXU/VEyKUnGZdUOesAGKwu4e2fIHZoct03rSZy/2j1HpbOHr6AjfdvIqoz8HiUpULfaMc2LdW4DOPLgCqPC+UnBoBganpuUVKWpSqzUNtVNqttMg25yraazcZLsxV/lV5jWD8pz7vny7r/QNTpkyZMmXKlKkbQ8pkNWXqH9CKaau+1RiB2o9mOc0w9JUxfw0GVLoaEqiKwV8x3GUvjxIZoGCpGMFwnqA8xFXUlDm5XdLUiFI4GMDlDZDR85Qlze30YHU4KTuq1K+qw+oDT1gjVKvh8BbJlxepa/ISy8yIoa6jO4r4IlX65sc4NztH0umiN5WkoKWZyQkouPIUXTpacx1FtTmqN0SlWMHp8jK3FCdezFGwVikJAVkcAj4CPEbZjCpQpVWxZNWgOVWe75d/GXjUPSvHCnokCPSoYExvU8/JvWqQbPllKpbafH9EyG44jnBYrdilPqw2DbvTfc25gU5V05jIJ5jOxWis8VOMx0noVRwBOZY46lRrrsokKza6G6JMTywKYwrkUTSm0xWLKvM6LpeLYqlijHY5BLS8HpfRRsVCyXDk59Ascl038qtGo9QonsdtM9xo+5xeRWMGuCneE2Yz4uVRIdF18fKBKVOmTJkyZcrUjSUTgEz9I2SYu+/HxrGaHqVSVCxhOUnMZeNYAEAdi1WsTGUFBcv3qViCSldGs4IhAQKb3UGhUsavAEiM/Hy+QkmMeLvDQqWcI5fX8YW8xBNxsvkSFqdyva2xGMvS1NqAGoyyaxEqFQsBj4OwGP+az0lWwUCkmb7xAfyRoJpARlPEgtrAtBQv4al45BkreqnAUj7J8NIU1aCDNCUKClDU6JXkXUHLCuCojBtrcxSwKLgxwEZBjoKd5aDuM4BGwGUFboxpcXK/scGpAUUKkFTNqFcuv1dJAaQmOQ1aK2gOPzmLXWBQ7f/jIVa20peYJGtfYl1LMyNXhrEEXbisAk65PGGvi+l4ViCwhRZ53fD4Is6GFlL5HG6HS+ouK8RSwO12ky+WKRQLuJw2AUAnpWLRuG6xVXHZBYCKypOflL9awlYtYi0LRJXA7XJLG6rpePIx2liyvtzkRlnU10q8fGDKlClTpkyZMnVjyQQgU/8IGebu+7Hxuc54Xzbgl4+XLWLjgnH/yrlxTcGQcXoNhCRFjZJUBQYKZTGunW5CvqAAj5V8qYrmFEiwVUjk87j9DorlMrphbBfx+PzMLixR2xxCWIiF+RwFMdAddgiFXKQLKQGGKpX6Ji5NDFHbUsvs1CBrOyMCH8pzmrwvkSMaqSVbKZKo5umdGSZp19FdyoW0hsPqlAwKBKg5cZLH5TUvEhS8qNEcCcsgs7zm53rYWamXHwyGpzg1IiTPGGnqI/GKlFtxq6WM26rqSsCkaqVYLVPxubm8uMBYZtqYEtgU8DPQP4qjISzv0rBnEvhcLibiORqbu9CnppicmsffvoqlbFbqxcnM/JzAjp2AgGZaIDOdyRGQekWApyx1VSyWsErRrVIfuq5LeRUA6TgdJRwCk56yht8bkPJLsgLdlXwbbWrKlClTpkyZMvWjIROATP1wZNjLYiYrgHl/dEg+Aj5qGlVFzjW53BStp1iwkRUD3ePWxPiuEk9mcQc8+AJe5ucXDeBxeeV4YVEMehtegYOFxSyaw0cmlaWzIUS1kCZTqBCKRrkym8DrDlJOztEYduCtFogKBMwvLOCTuGwX4JJ3Xp0do296HKuABAIEmi4wci3vxriXnBhlUOCighoZun7627WwAkDX6/prxvVrH0l8P81wkKCm3WlWyhadUqmM0+7C4vNwJbXAYH6JpcQk27rrWZqdIyaQGGxppFK2U2ct4HA4mY6XqA34GLsySC6Tpba9i/l4BrfmYmpmhlBAk7pwGwBUFMgJ+O1UBYCUQwYFNjYFe8UMhsuFqp2yXsROAZ/UUcjqFihcni5nlE/qxZQpU6ZMmTJl6kdNJgCZ+qHr+6MHYvxXFQYod8xVyqUCjdFa9KKNVFbH53WiWcVQr1jJlYqEa0IsLMVxu73yqFoXUySRWqSru5PZ+XmBCBdziynWtkRwlVI4K2LUZ7NkrVEmZ1I0hwV2Mktsaq3D5pGuL/ckU3GsbicVzcFsOsXVqUnyQmRqulq1WDIMfbU2R436qNEbNeqjiE2VwZjCJunqX9EKFBj3XzcS9D8FVWYV5Ni4V2K12at63nCQUCmj26pk7HJcXXaOMJVJcmjkKnMkcZUTHFi/lrOXrlCuqcUZ8JNL5WgN2UkVSvhrWtHySYGdBKGQG6+A4/xSVn7TyszsDE31IQElOzoO0lI3DfXyvJ4nlRbokfyUdAEp+d2i8hZnc5PNpPBqVTzSXGG7H4dHbZ5audZ+pkyZMmXKlClTP3oyAcjUD0cG8yyPGrwPC3JiFZhQYKFcTTssVppD9dgRI7ssgFPK4/fYKeoWYrEUq7s6GR8bx+UIGmtUgmLgj0+MsXXrFmJLc+QyJaYXc3QJ4HgLMXylMmUBpkjjet471kdXy2omhq5yy+Yu8vk5Il11LIz1E/D7BWTsZPQqV8YmuDgyQFmM/iIFiqUSFYESyazhiEDlW41WGaM3KqgyqbJcF5SuP/9fBflahiclqZP3vctJuqAHaZvEPpjJLPLehXNybGNyoZ+dqxvw5cv0js0RXLteAEqjJOAWjThZSmdpbW4nNjXGYqpIe2cNFT1HKVcxXGKnBKQ6O+pJJuLkClUWFmO0NNcKXAokZvNI8SQDVrzSFtlcURjTbYzQBbzSNuUqdVoYl9VneKUz1nqpcpgyZcqUKVOmTP2IyQQgUz8cia2swGeZG9QaIDWKstwBKwIeCgAK6SSNwVqiwWay6RKlfJpoyIfL5WVhPkF9fa0Y7wmctiCpeIK2tjr6r1xl/aoebPaSGO06Mykdb9BHvT2HKzaLpVjB5anj8niBtK6mcJXwaHmBoYC8t2J4PEtNz1ITqUfzBOkdH+PS9Cij2QWqEZcY+2UBIOWEQE1Ps1NRozKqLAJBRjDKIQURijGOJW1F14/8LDOPGv25VgXXgjxhvE9NpVNxRY0DWexUnV6Gi9O8PXiSosspeShBZoIH9m7l1DvHKAfqqEQamR+fIVAtYPd7sDicaLrO3NQkOcl3Q1uQXDJGyB0gISBY0ksCkS3E4zGBOBe5fIE2AaB0Lmu0hXL37fH4BHp09IqVQnF5zZJbzU3MF6lxRgR83JQko0YdXCu38bBxqEqznGTKlClTpkyZMnWjygQgU/9btWL7Gvbw9UF9XQOfZe9hyuq3YCtbqaiNNpUn7FIJTbCgvUmN0OioIYlIwIvb42dOreNxOnBqGvHFguG62eWykoglcXldbNu6lpGRCeYyOUaXFrh19ybyk/34Qg0kUwWC7dt44fAZNm/u5PSZ97jztu1kZ4bZsKqTxPi0GP12mlo6KQrknJkc5PD4JfqSE1idmuG0QDc2EBWQMUZq1CjQMgQYIzryUU4djI9KvCYFTithxR14VS9LWQVyJFTKZaNylEMF3RhpqqA5XdgtTmZnl3hv5BSDlkXw+5i42s+D+zbjrKa42NtHoGU18YqTxZFpNrfVMpnN4fC6Gb9yCbvDi24p0dHTxMzYMCG7h7HRMQKRCO1t9SSSSax2lwF0zS11ZPIZCmr6XCAo+VGbxZYNN+Fl5cZc2sVmkfwWCkTcISmzcgaxXAeqCdVY2HKQj6oLKc8yHC0HU6ZMmTJlypSpG00mAJn636oV81/Ffy/IlzKOV8BnBYQEAYxlNVaxtAOBAJVcie6WDjSLg0y2SFUgwe/WjPsX43FaWlrpuzpKU0MTsYU5GhsaOHfiFHcduJl4fJ6EANXpK/3ctXsL+vyQsbdNVnk7a17NmfFF8tLlNc2CNTfLzZu7Sc7O0t3eyfCly/jCdXRt3Er/6Cjnxwc4dOmExH1ktSole5VcMS8gVDDyalNmv2HkK8NfAZ0auZGAWh+jcEAdK8BZDtXK8lS6ktyvQEeVS9FFpaIbIzNCWVRtFbL5GKNTI5zp76c/OYdfgKX38gUaPQ4evm0vL734ErhC2PxRZodGCPv9BMNeilUPCYGmanoJh9uFx2mhobGOvIBRJpkhEU/Q3FxHbaSexbkliqUMbp8dn8fD/EKCfKFIyB8UyFteG2QXOCoIhGo2hxRH2qtixeuNSqw82AmmqnKr9lT1YJRfwY+qi5V2Xg6mTJkyZcqUKVM3mkwAMvV/TP8r+3fFCcCyIwHI2iyUrBYcAgcVi5Wg5mVjTQNhZ4SFvIdsrkxrNIXLb6N3epHW9es5f7WXQCjM3Owcm9eu4cypd9i2rp3WJi+DMxmGr0zT5Cqxu9tHcugEfo+LqdgC7rZtfPG5AfbddID+U89y574e9HIWzeuW9wU4f+o8ofrVNLRs4OKpXqbTcb4zcYqvXn2bKXuGslbBIZBjL5ewq3VBEsoCMFUFOZJeLKl1NAWBm5IRLCpdwMei7ikWKebzyFWK6lzSbWqPHYEki7w3WYkzkR3hysIpjs+d4FhyhnB4FYnBKWyxYX7pJx6k9/R5Lg8X8Ek5lgRiymOX8K+JMiT1Wkl4SV+ZobshwtzEFfbfspPYdBK7w8/EQpyC1HfP2iYm5wv4HQ0sxYcE9vxUs1ZSCbfk30lV+SLHxVK1gMdlpyLw5PX4KOiSS4Gusrsei+7CXlRe6lQTSgOKpOhyImH51Gh3YxRo+dSUKVOmTJkyZeqGkglApv63agV6VPz3gnwtjwyoqVPLI0DqYwz/qOOyjhoUUXDUEKqhpaGZVKpIqVTF67aiSVhKFtFcARxeG8Ojk9TVtJLLp3A4qowODvHEo3eTXhglnSlxrn+KJz70CImR89SGvOilIn5/gFi2zPG+cdb27KP3vVf5qU/dTP/YcVav6iYoIHb56FHW7T0A9R2cPnEefF4Gpif5xjPf4XTvBZKlAoWq2qi1jK6rDUIFZgolJBl0u5RDM4JFQilXpZQXwCtY5PdtVAo61lISi1UXELIiWSGZWRKQ62N0ppczs8N8d2KK9wQ8GlsbKI4lmTpzjF/8xVuxaeO8/Op71K7dx7TdztCxswJt9UTrwxTiUv6rlwnV+HG6gujpDDffvJnB8QWyaZ3k4hxOp42bdm1lcmIam8vF9MQwWzf2SNmm0KW+/D4/Nru0hTRCtiz5lqbJFZK4HFYcVTvtwVUCNU6jPdQsQIN31MiPakVpP2OUSLWjPHd9MGXKlClTpkyZutFkApCp/61asXlV/PeCfBnIc80qNqbCyaFNDGebpJX1shjRaoNSK2p9zMZ1m9BwkM+VBHIEgnxunA4fff1j7Nq7jfeOnmD9xt1c7D3H7ftv4Y3X3+auW3axtsbCUiLFMyeGaFuzhS1djcz0nWNtRwtLU6MCPmv4+vOHqQ2ukd90kVoY5Jc/upvRS8+yrqdd8mXj1LEj7LnvQco17Rx79V00i4eibuPkxcskdJ1YMU8snyVbyFGQWJe0rF4lV7WRrVhJCUCk5DwlgJOpWCTNQkbKmataKUl6Oh1jLjbAWOoKl7MjnMjO8+bMAu9NxMk4amlv3kphPM7w2e/y05/azK7uBr73vXfQuraTDvvpPXWYkL+WzZtuorC4yPSZPoGvJJ07unlDAG7X5h3o1SLzuSKFbBFbPk1NxE1bYwOzU2NYfWoaW5XmcANj2bjhRS4cDIJdpyh5s9s9kmcoWfI4rSUiNo8AUIe0j42ywGbJVpHja9AjCGQA7co0OAW61wVTpkyZMmXKlKkbTSYAmfrfqhWbV8V/L8jX3xv9UQa0fKwCO1ZdDGqVbpVzAZCqQEJHUzthX5RiXsAhU8bvC2CzacTiYqzXRMjkyiQyOdwej2HMux1OLp89wS9/6lEWl+a5MJnidP8En/rQQyxdOYk7v0irPDc2vUD39tv4/NefZv+djzJ6oZ9WV56PPLKRKwOH2LS+jRrNwol3DtF69714Wrs4dOiw4SK7prmNosBMQcAtXS4yk45zeqiPCxN9jMeuMJW6Kml9zKb6mcsNCSiNspAfYjYzwHTyChOxfq7MjNO3NEFfbpzDS5d5da6PQ/F5puwuahpW0ah7GHv1ECPHD/LTP3OAB+/cxre//S4Fz2YKwVZOHT0pQOZi7607KWdmGDx9FhKz7N62lZnFWWLJKe5/+CH6+iYoVwXMEgkJcW7es5lMfBGLvcLk3DhdHe0CdXKcWKJSyhv1aBGwqeoCTPYgS+k8ZUsOv8NCl7+VqIAZZWkbuxVd+ca+1rAqUlJtacqUKVOmTJky9aMg2+/8zu/87rXjH6qy2Sx+v//amal/7loBn+tlgJAAhVoPpIaDDBcCFiuFShm318Pc0jQj40PYnXYsmgO7zUEmGUOz2qivreHokXd48MG7eefQMe6/+w6++dTX+PhHH+fy4BSXx2OUSmUev+8AU8O9nD17ir133M3YbIJ0XscaCDN44hA/8cR9PPvam6zbsIuWrlrOvfUSjc3NVMK1jA6N0bZxFQGfn8vHzrCxuZN1rR1UBByylSKT6SWODPYymZtnPtXHYnaCudQE04lR5jMTxPIzzKcnWMhMGmE2O8NAYpLT81OciMW5pKb4uXwE3R4cqSQz5y8ycOScvD/GZ37zQe659VZeeesyk3oNUzkLVy/0EfS1sGHnHmzFSXqPvyrwaGHLxlY6O9fwra8/yb7bNrN7zx5OnrhMJjVHOZujVCzy2c9+iJMCdeHWRs5euMC9Bw6wlMtyfmiIBm+I2pZGSnqWitybs3iZWowLnGbZvaqHXc3bqbO1SVs5yFEUSAW7MVlxeT3XyseQglwjNs7UqSlTpkyZMmXK1A0lcwTI1A9dCoaUFA8ZU6nUsXypESDFQ/aqFbtuY/vanTjxYim7sOh23I6yQFCV0dFFurq7WcokiSWKhMNBEslJtm3eyHPPPc+v/txniHgtnOod4MylYT776L0E8rOcPX6EHbv2Ep+bxa05WXJ6+OunX+fBBz7L0XdP0VUt8fP/4h6BmRM4i/Osbe9kKRnHXR9m776b5bwLe76MTa8yG0swnEsz7NA5bylwNF/lrXiJN2N5DsYLvL6Y4+XpJM+PL/HM2ALPTSzx4sycXJtkxKZT9UWpC7bjSnuZPj7IpbePkpgZpntjmN/+3Z9ix/rV/MmL53gnGeHS2BzDF8/SJvlZu30zAXuGY4deQ6tqbOzoYutN2wQCX8NTKvLYIw9z+NwpUtkMzkKZTCzGhu3rsNmrLE7Pk0E3PMQpb3r9kzOU0nmijWFKZQGfXIli2YJesFLK5gk6nXTWtVPraqRatBlT3oRPjXYzZcqUKVOmTJn6UZUJQKZ+aHp/6psaJbg2ImRVRrVaG2SM/iggUtPibFQyOl0NXazr2ER6qWh4KKsJuwzvZC5HgIGRUfbfcYCvPfUMt916uwDAG9xx6wGOnjyJo5DjJx9/kKWFeb713Ks01tfzyB23Mn75Av0XzvGR+24jMX4YLdxCX3UNX3n6HX7mrtvovXKUywNX+LWf+zlWRSB95TAuSxF7KUdTJERDKITbaiOdzhDL5zg7McpwKcuM2818YBVjjjaGbM0MWZvor9TJcRMTrg7mAt3MB9ew5O9Gq12DU/KvLywwe/E8/ccFVopWoj0b2HbvAX7ql5/AXmfnL186zsJAhokz/SwKtjTfvpa2ZiurKwtceetVXMFGatvXc+etKt9jXDh0kCcevYeAI8S5SxcplRI4BRwzqTT3PXwbb775Gh2dPfT2XWXPTbtICOCMzSwRdngJ1gUp60WUN+6K3U8+U6KSzLCuqYMGXxO2akDaStpFwM0urWU39gEyZcqUKVOmTJn60ZQJQKZ+aLoefJZBSKBIPnJF4KdK2SpnEjssdqwFgaO8hb3b9mHTHdjKJbKJmDH1zWaHhVgSX7AGb8DPe4ePsW/Pfg6/9x6f+MQn+aP//p/50P23cmDXBo6fOMnzbxzl7rvvZ1NLhJneoyxM9PPhD9/JQO8ZvM5aMtUQf/LFL3HLnm1Uylb++ivPcmDPTfz6x2+mIbfE0vkL3LV5Mxu62nB6NTLlIvicxIUY4tkic/OLLEyNUEnNY83GsUhwlLOS/wTkYpTic6TnJkgIMC32DjN0cZjJ+SQZm5W69Y2s3lrHA4/u5v7Hbue9i7187gvfZWAgxWIhSduaZrat7qRTy7CqMcehE6+TswSpqWnhvrtvYWJmhpeffp72dY08+NCdvPLcS5KHMm4Nxiem2LlrK057hcGhIeyRqMBkmk1btnFxYIBirsqq9lVIBUsLKK92dtIlJ3PTC0RdbnpqBYBcnUJFfsq2MhZrDruAkE3aRxpQNd77Wm5HU6ZMmTJlypSpG1/mGiBTPxQp8FEbgCpZlac3MaDLZTUCtLynTMmqS6zAyIpWtWGr2ikU84TrahibHWN6/gKa2N0eT5iCnpf32Y19gO65Zx9f+eqTPHrfI5w9f4quNavluRLHjxznt37xV3jjrXc5fOYSt9x6M5u7Ghi5eoG+8Vl80Qj37b+Zk689jz8cxdbUzquvHmL7lp2s7ejipWe+il5I8Pjeh7h//U3ctWEHDQJcRcnjTDnPuYkJspqDYEMzTqeHgFOVRfJVVQ6uiwITWUqFNHopIwCRx2YtCUBIQd1hnPJ7/ho/TY0etq+r57Zt7VTzMZ566jscOzeM3dtGa1sPjV1+PMyxwQWbo7V87/mXSdh9NHX1sH/vNsr5NF/9yjexCCj93u//Oy72XqTvUi9Rh49CpkhS8v8zv/BZXvzut+jo6eb88DTbu9cSbY4Ym8Xq8Qrr169mMT2FvWwjX/WTKrtJzs4L/AQ4sOVmal3dkn8fVXtJGi4rYOeWcxtVgVUFsOovKFIlEkubXoNZSTamNKpTdY8pU6ZMmTJlytSNJHMEyNQPTf/zCJCa9lYRY1mBkbKU5boCI7UpakU3DOtyrsSBXbdjtbgN72R5tTYlaCNXKlKqOOnvH+ehex7mS3/3TR758MM88+x3eOLRjzLQ18e5k4f4z7/3b8jJb/7x5/6C9qYa7ty5Cb/DxeEjVxkfvMKv/tQtLA69yfR4ivDGj/HMy8dYuPoOn37iHkqWCH/zR5+j3R2iwR6mUirRWNfIzm1bmV0c5vTxNxg/f5z87BQJobicN0Q5XAe1jWgNrTia2yRukfMmLHXN2FtasXVGqe8JsXtLvQBGG45Cim98/Rn+/IvfQ7dH2bbndtZv34DFGcM738fOYIWg28LXXzxJrriKVfLOe2/vIlOc46++9HVSi9P8q9/4RYo5O68ffJeGGh+k0sxOLvLgh+4ln14kvZQgWtdEPJng7lv2cqG3l7mlJBvWbSCRWMSreUknc6ihtcV4DLvUV09rNxFHHRap47LatNZiNTY+Ve1nk+Yypi6qoD6qTaWxltt3uSmNyIQfU6ZMmTJlytQNKHMEyNQPRSvgo7QCQEpq6ltVDGzDmK5IqFYQ/JH0MlXB81KhSMQfYSwDV8cmqAvYBXwSVJxqvyAv2Vkbu9ffzODQZaYz8+zcuI2333iLn/r5n+b3//QP2H/XXnbsWMtTT32XkbERfuazv8D81DTT2YycDxH1unj4vvs4e+IYExPDbLppJ/0TC1ztneKmTbvZvHEnGzq3E7IH0CpWrFadTGkaT32GbdvqWdvooE7T8fndeGw63moWl55FK2ZwUyDkttEQ8tJUG2Z9nZ2bQ7M0O7LE5hc4dm6QCyMprKFONm+/hYA/QH5xgcLEGfY159m5aQ3DcyW+c7AXa6SJtnWt3H7XTYwNj/P8t14nI+X57I8/wO5bbuNvvvgktfJ8KZEQUMrQ1NnKR594hCf/4k/YdvPNvHXqCvft3SFgEuPclUHSeSebt64hIyAXcTVQsoZYzGWYmx2jwRvmti130h5cix2XNJ5dgvpbiZOK1WbsXatRxaaAR1KXAWgFeJbTlr9W0kyZMmXKlClTpm4cmQBk6ociZSSvxGoq3PIIkIKhFQt5eQLVNS4yRhSqgkJylwFI4YZGzl85T7GSpmqv4Pf6ic8nCAfC9An8PPLYPXz36a9z2569LMUSLMYWeOShB/iDP/qv/MRnPkZjbS1Pfe1Vsvk4P/8zP8XI5YOks2X65z3MFDw89MTdFJYucfnd1+mq70LztXDi9FXuad3O7Wu2Uy0WJU9ldA3+8Cuf42++8WVsQmiuUpWeaJDNDVW21dvZ2exma6OLrc1eNta76QpYqbFn8eRmKS7OMzGZY3hoiaXZJE3RKJ0NEdzWNGP9J1laGKKhLcDefVtx2Z28emiAs1cXaOpuYd3WKDt2dXD62CkOPneE5MgSj3zoMT784Qf48l/+GW5LibjAT9XlMaYI/tq//AyHXnuWssCKxRMkI8B3772389aJiwxOzLNj21ryS9P4HQ4WUksCYU3MLqXRMwn2bd7DtvZthJwRKTfY7VJoY4qbVdqsiiZBbWBrfKQRjbZV7WlV1+VWCUa00rSmTJkyZcqUKVM3kCzFYvGayfnD1cLCAo2NjdfOTP1z1jLsfH8NkDpfhiA11W15apUK5WrFSF8+rxhT4UplgY6yjj3g4NWzb/G1177K6rUN2Is5PE4HozMT1DTW4Chk2dHZwbe//U3+9b/5Tb7w5b/lzlvvJl/K8eRTT/Nf/vOf8J3nn+O//enf8alPPcIv/PQT/OHnv8qlJSdln4/aaJUfu28301eu8twzh3BE19LVupHff/AJGrQwFWuAtBj0S+4Cf/76F+idvcz4+BjF2QLWAuQrSRxOO5qm4XRouCRvDs2OVcpdKhakrBVsngAVfwOaAIUmcFcqJMkKfHg8Gs0t9bR1tpDNpTh/eZzz/Rn5x6mzY1MX27d3o7nh1dcPcfbIZZwCJT/38ce54479Us6/IzvVRyEbx1nTRKxY5vGH7qDFV+aprz/J3Y9/gu8+/xK/+os/zztXL3L8wiJ2S55HDqxh8spFwuFmZstZ4rZmhvtn6PL7+fg9T7C+Zi1u3Y296sFqc1K1KaqRMghQOaXN7NKOy4BzbcTnfS2fG1wr/2cxIciUKVOmTJkydaPJBCBT/8e1AkAr097KAjXLAKS2PrVKjAE9ugCPMe5zbYRIV/Ajaep+q6VEzgP/5eufNxbtdzb50UvzFFxF5hOLNDqjNFmD+CMODr33Br/yC7/EX3/+r/n4xz7GyOgUL7/+Fv/2d/8jTz3zDH/++Sf58CMf4ud+4ad48htf5MTVK4SbuojlC9x+x6201dTz1c/9HY/e8hg/+djHsQjgFHULOQGAl869y9Gp8/hX1WL1OKUwNnLxHJlEnlJJJ59TG48q4KnicjmxSmwTaqhUBOoooFvSlLICSwJ1tX4PYYEvp9NJIp2nd2CYqZkFMhUXgYY17N69hp7OekavDPHG995gdniQdZ01/Py/+AStLQ184a+/yszEEpVShkjUS6qQYv+dt7Ft20b+8A/+Iz/28Y/z1qEj3LZ3F76gj2dPDTI4leCj999KYew0tQEXk8kS1voOLk/FWByY5dMHHmbv+t20eluw5zWpdxcWm4OqXUhG/rNbqjiEbmzSZsqZhWo8NfKj2tM4N2XKlClTpkyZusFlApCp/+NaAaD/aQRIBcsKAFUEdlSamvj29wFI3VcpZam6HfQvzfI3T/0NWiBLoK5AsNbKyNAQdY5mfGU/zoDazybH/OgEH3vkEZ588lv82MceY2wmzvdef5Pf/J3f4pXXD/Pnf/oV7rh1G7/xLz/FwWPv8e13j0JNJ7kS7Oxaw+2r1rG7eQuOcIfhKUSzyO9XC/z+X/wJk8Us+YCGsyGI1W/BoVWJ2p1Uy4JvUp6y3F/U1QiWlAubMYpVUh7v5CzorOC0CNSl01QLWVJLcZKpArGM3GPx4Ak30tnZwZruZjKFMm++eZQLR0/TaNf5yB2b+PiHb2NmMc7/+PLLJBZzWFMxvE0t2NxWNnRHeezBffzx5/4HnVtvZSmRxqEXePCem/n2S69zZdbGhi0ddPmlzhdmyVeksI3tLGTDnD93mD1d63l8++NsaF2DrWDDVfVKuzkoW21gU1PdqgJA4JCS2NRIz7XhnRW4XTk3ZcqUKVOmTJm6kWUCkKn/41oxjtVIjjpecYOtJkuVFNwIKRhT3iTNgCSxo9UokAIgQSEBGl3iPGWx1x2eIG+ceYdvH/kGkY4qTusiHdEaBi7P0LN2BwuLI3i0As6qRnxygccevp0vfuFpHvnQo6QLRf7u+ef5zd/4DYbOnuH3f///oaajh1//d79NuhLjyW99GbvuhyUXd+2+k1/41E+RSGSwi8nvsNt458gbHDzxKv42J7FqjJl0jGS2KIDgJu/0YHdoeJ0amq2KW1OuvEu47VY5twgwVChl05STcdJlO4tlD0sVNxVHEE2eU84S1jRHWSshEV/kyNnLnHunF0six+03r+bRh7exdl0nb713nme/e5hiziX/eHPURlyUvV661q/iQw/fyuf+238iWN+Iu3EVV/pH+alPfpyDb77CZQFCmzPKo/dto/fdV2hr7GQ8I2DXvoGzJ4aps8V54pZ72NVxF34BMU3yqBwg6BWBG00zXHhbrVUph9S5TcpokSNpr6q0qznuY8qUKVOmTJn6UZIJQKb+j2sFgJanvS13NyNNQKisX7fmR8UKiNSxMfojxwqA9BIWTZ7LChyV7JT8dv7mjb/lwsRhOuqsePQi0boWjl/tY+eWteSWlqgW8/g0Cwv/b3v3+iVXdaYH/Kk6l7p2dXV19Y1Wt1qtW0tqgRAIGwM2AhvbjDMe7MzYju1Znnhlxk4mWfkLslbWfMin+ZC1kpmxnRnbGU/wZDKDwdwMBiMMlgwIY0kIga6tbvVNXV1dXfc6p6ryvvtUSbInHwNC9PNrTp1d51a7LrDOw95nHx0O+sH78d0fPIyPffQTGNgygu9896/xx//id2HHRvCf/up/4uT8Rfz7b3wNB2/fi188+wJefeFt/Ic//S8YHZ5CqhGBhwJig2388IW/xeE3X0E4FkMymUC2LymBoIza+jLaxboENAlqUs1Q2EbDb8KJRGE5sr8EPB1KuurX0YpLMEr2ouhJbIj2oVfq3ZfpRzRsobhyGb868jJOvHEcdiiMgzdvxUMfncb+PeNYkeP/8PFXcPTEsn548AvnsXvXVpRqIezbux0H778Hf/6Xf4VIbx+m9uzEoZ89h3/zJ9/EL3/1Ft6eWUYut4QvPXQvThz+GbaNZTCztIq+7Qdx9FQR3uoiPnv7Lty/915kEzvQrjTR4yTQ8iX82DZaVhghCXHa+uPIazvy/sISgLrYAkREREQ3EgYgetf9dgC6esKs1wMF1/9cG4B0MATf1zARLGs2ffhtH2E9Ia+H0U5EsNhcxt/+6Fsors9gbDSFQm0N2clRnD/5NvbvnUalkEcpn0OfBJWzZ97CH3z+C3j0iR9jYGgI99/zAL73N9/Fjj27cOd9B/H9H/4Tnnzqedy6ay/+6EtfRJ87gKG+vWhWMmhVy+gZdfHyzM/x49d/jOGpMQlEbTTKNYQrVcTCGhb03jiWadnyJfiEbQe+hB7bstGWoFCrN2BJORyR9U4DbScGN9EnaSKB5cvrmDl3EXOnz2Dt0jwGenpw9759+KiEsS27+1ANr+Oln/0Kv3p+FtXFNur1AqyMh8zOFDz5AO+8+W7csWMzvvO9b2MdPbjj45/FU0/+GH/y1c/hwoULePX0HM5dWsfvffJerC8egeu1UWtV4fQPYr0xgneOreHeWyZx76592DEs77nhImnHzAh3obbU37GCkeTCbbgIwZX/Wlgh24RXZSLPle+TAYiIiIje/xiA6F2noUbDQbcLXBCA9BoSbe0JusPpNr4EHr0GSFt9dAQ4M5kAJHPPQ0NCRch2UanVkIhFkCst4ns/+g7KTg6JTBPVWg5jg1vMNUHbt25BLOoit3QeIwMjOHn8KB781AM4feosLl2aw+e+8Md45sWfYHluBl/87JexuFDEX/7N9zF7YRHf+a/fx87R/QhVoqh4ayhHivjWo9/C6fxpWH0RCQQhxGMpxOJxxGJRONE4PDcB243AknUadmzbjJMGeQrP9+T9SXipeSiuVEwXt+XFi8gvzaFZy2M4HcP20UEc2DOFvTu3oj/VL+/ZxfOvvojnjhxGuWAjUksBhQY2DfVgZFs/KrEWbr3jZtk3hb/473+B3vQQ7rznk3j4/zyOP/yjr6OwXsBLR17G8poEnI/eB5TWsDzzGnbsnsDJpRw27bgNr798HLeP7sJHtt+OqYkPSRqNIapd3Zoh2PK9uPLePP2+7GB4a1ceIvIdyVr5PiUcyZ+uYOwhIiKiGwkDEL3ruqHnN1uA9NxZwo0EIS2b1p7Oeg1ALQ09nRaglraqSPipyLJauI1wKwyr4iESd/Hmytv4X8//AJF0DX7lsglLU1NTePPEG9g8NoydkxMSeo6hryeJhbk53LbvVshvHj898hI+85nPw/IdPPajR3DnbQewZ9ftOPLz07jnwO9ifaUm+/Qg05+Cm2risUMP4/zyW/AsoNa0YEd6UQ+3sO4XUEcD+VIdtbov7ylsur/58r48qWdNg5vfMoMgNOtArNmLbMLGxKCLnWNJCR5pjEmoGcz2mqGjZ+cXTLe114/Nw8u3kXKjKJVy8F0fo9unkM5sQl8kgQ/tmUCzcRn/7fvfwU07b8f0LffgqUcfxRd//yEUqi288OpJ5AorOHDzBLaPDeLVn7+MW6en8NKvf47d9zyI196Yx7ZMFvdMTOLW0Y9JkNtsBnAItxpwQhJwpDJ6TVNLA45ewyR100jnyqRDIEAHRuh8l0REREQ3EgYges+ZH5wJQDAtDNqmYIbE1iQkTIuPTL/53DfdymQm4ShsBkao+FW46SiOz76JR595BKn+qASFJQkdq9g6Pob5mTOIyAvd9eE7cO7sGdMKs7KSQ39/Bju2juPo0VfQE0/hnnvvwkuHXsP50wX8x2/+ZznJz6Ba9FAqFlFt5/D0s49gYusIdt2so8QVkF+7jFJtDWEJQK4kg2jcgQ8JZ7VqMHKdp+UGPF8qK28yEU8iEo0j3RPFpv4YkokexBNpCXcW6l4Ii8tFnD47j1/9+hROnb6AWMRFNhlBYa0mn08I41tvwthkVgJJGP19A9i2ZRKvHHkeP37iCXz8d76IgZu24+F/eBL/6qtfQtj28fQzz6KwUsS+W7Zh985NeOqRv8ODnziIQ4dfx+adt2Ip15Y6bML05r24bXIag3Yadr1tWrA8+S4cyzJDd4clEDkSdCyZJHeasBOW9VZYH4Uu0yYuIiIiohsIAxC96662+gQ/NfNoTqgl3MgyX06iQxKAWs1gvbknkISHawOQXgOkAybAC+6p0/BacrLuodKqIdIXxbHTx/HYMz9CYsiTKFJAtbyObRObUCpcxvylGTz4yU+gUiljbnZWgksIfr2EndsnUa6WcfrtM7jrwAOwMYhMcguSbhZ9qUFYdgi5xgX82Z//GU6ceQcpeZ2dk0PYsTmLsZE0bhoagt8Kw43aElpKcBwgGokF3eJsbSsBbNuR+rdMYCs1PKxUPSyvrCKfK2F+7jJmLixheSGPtm8hmxlBPJpEoVxFvrKOsVEHt0yNSJ16JUT1IzU4gFqogYcfeQTnzuXw1a99A3MLl/DcoRfwzT/9OoplB88++zrWCpewf58EpbGtePrxn+CB+z6ME8ck7PWPwo0NoemlsGl4Crfv/jCGEgOwqz5SltRTux/K3JIvxjYhyDKDMVjaMqTBR78w+UfLwdhvEl1lHREREdGNhAGI3nW/HYCUlrTtQO+Z42tB1mmwUdoa1PR/qwVI/lq+bOPJeglKvgSgRksHFABKfglur4OT597CI08/jN5sFJGEjfmlC7hpJIO+TAxvHj+K3Tu2Y2rrJGbOn8X6+hqqlRL6MxlsHt2K40fP4sC+BzCa3QEnJCEkX0ZSjvn6mScxtrUPDQlKR4+9jmNvv4MFWVfzw0hJMMn0pJBKuIhGW7CdzrUxUm9tPdGooNc+VSpVcz1TpST7SbjRd6VvzZKQ5EQisJwoKtUa1ksVRKIxDAxkMb1nEpuyDqKtArKJJDK9g3jxyOv4308+iy3Td+Djn/kKnvzJT3H58hl849/+a1y4tIjnf3YExWIVN+/Zg62bh/HUY/+AT9//AGZn5lBv1pEd2IT11Sa2bJrGbXvvRjY5iFANSMnry8cIz2tKmItK3fU6Jm35CcLPbwQgYeKPFPWuTp22ICIiIqIbBgMQvef0xDmkt/uRjGDuA6SFtgScKwFItpHAoNcMaTORhqFWWFuIZJKfa9uXUKQtQE0P4YiFil9EyZMQJEHk0uolPPLUI6ihit6hJFaL83JS72Pspn4sXjyLsFfHgVtvNt29FhbmMT97CZXVBjaP7MLdBx6E3U6hv28QpWJFgtk6Xjj2A5ybewtj4xPYum0KTjKBYrmGczOXMHPuEho1D2v5dRTKPsKWA1eO62hTkA7uIH+Wtqjo9TIaKuTtOK2QhLc6yrV1qX8VsD24MSA7lMbE5CaMbBpGJm4hVitJGBpEJJnF6bNv4afPPibhL4RPf/IrCMWH8O0fPIzp/bvx0Oc+jRde/AXePDmDYmUJd31kNwb7RvDMYy/hgYN3Ymn+DGoNYMu227Awt4LJ0Sncue9jSLl9aFXbcMNSZ8vWq3pMtzfLdkxoszvhR4OcBp+g1Ufehil1/5Mhy5h/iIiI6AbDAETvOfODkwc9edZuV01zat0yI8B1VpnwYwKQPNHWk5YkJh0koeW1TVe5lhe0ELXgo9IoS1iReb2KSCqJXGkNjz33GC6uXkT/aA/aTgVePY+hdBzpqIVzb78FJxHH/v23IRqK4uSrb2OoZzO2TexDXIKBvl7fQBrHTx1GcmQNdsrBhYVVnJmZRaOyjv5UBNvHx5Dq6UPbimF5tYzVfMlcX7S6uoZaTeJXtYpGXUd/a0nQs1Cv1qSmLsLxEUTjLgYySYyN9uGmoR4puxLs1lGr5OT91jHcn5F6pnF6Zg3/+OQhLJZLuOu++7Br9y14+dCrOHXsJL7y+5/F6OQo/vGJ5zE7m5fwVcX9998p77OEpx9/FF/43OdRXKlief40xif3YCXfiy2jW3H7ngNI2Wm4TVdv7wrH1lYriTVWEGa6LT+21Fm7v5ngo+FNV3a+s4AGIv2mriwgIiIiuiEwANF10T111vmVsgQaPdnWa2ZM9tHrgjT0yHIdIltHhWtrdzhf9tDranxftpWp3YTXbEhIaqNc99FywqhbDTz9i6dx4vwxZIeTcCMevFoevdEwBjNprBbXcPHCLAZ7BjE9cQvGsjvg12wJV1ITu4lFCU8nT7+C7FAJ6WQb46ODiEq4qllJnL9cw9nlHKq1ChLhJtKJCOLpJJyoBgrXXAek70PvCRR04wsh4rimtcuKyFyCkV9vyLyOYr6ARDSG3ngS6Z5e09p19vwCnj90FOXSLA7e+2FM7LwVv75QxmMvHsH26Ql8+bMPoHjuDJ5/5jDylRjS/Q4O3rcP75w8jZdfPIw//PLvSZiaRX45j77EEBqNfoyN34Xpqb1IWRIIqy0T/CJSV1vqFnIl5oS1S15Y6u9IdfWmp52Wn7Z2d5P18tnr9T4hDZ26XL41+bbM90ZERER0I2EAovec+cHJg5xHm3DTiT+m65tZZsKPnGhr+JFJy76s15aZtoYjCUHaXU4DkK439wvSICRlHXit0fZRC/mwUjYOv/EyXj56CE7EN9cCWSG9KWkTkZiNgVQGC2cXkQz1YffEfgkleu8bF4PjvXjxtadx/NQv4DhlM/R1KjuMaDKOkYE+DKa1BUeOZelQ1y2sy79Cs0UPNa+JSrlq3pPWS99Xd25L2LCaFWTsPJKxBKLxNBLJfgl2Eoh8B2fOz+PEiTNYuJxHwong7v0fwqZdO/Hr87N44qmnMNoXx9e/+GlkMlH85Jdv4Pnji7C8NA7u3oE901k8+/RPkVu+hD/4lw+iVqzg0swCIlZdgtUQdk99CmOj++GGIwjL5xO1Ygi3QojakSDkuBJkNACZgQ/s4BogDUBh7bYnoUe+E23tMYFHApE8mC9KZ+arIyIiIrqBMADRdaG93cyF9BIWgpaE7lwDz9Wbo5oAJBtr6465Kap2h5OwY4KPaSkKusaZYbN1O6+NuleHnLej1pawkwhjMb+Anx56GhcXzyGZjiGTTSHqSmApVjEQG8TeLbehsFRBvdpEUoLN3No7cDI1DG/uQcvX7m2rOHdhBvNLi6jUa+YWONGIK2EkhZ54BMmeXiRS/YjHU0jEE7AdpxN8wmg0PKlXEIK0K1zZbyCXyyG/uooLcszL8u+B5zWQSqaweXwc27dvA5wUjp5YxCuHjqDXbeMrX/4k9uybxLG3zuGFl0/hwkIeQ+ODuPvAHlilKv7p7x/HvluncOeHd+HywgzKqw00q0kzot2+W6axaWQLbC8rVbAl2FgS6lw4lmu6t4Xlc3L0Pj+mG5yNUCcAdbu/6WNYvhMNPuY/FDLX+ze1ZXu9jktWEhEREd1QGIDouug2Huj8SlkCTCgctAS1W9p6IoFGu71JgNBuVxqR9D47zZZnQk8QkDQUyaRDZOuOEiZavt4zSJbJiXsdHqyojVKrjMPHj+D4OyeQKywj0wsMpHqxdXA7btl6O86emEMikUIo5uONCz9HHufRcstw5ER/cGAAfb1pCTpplBotLK9VsHx5FbVKEaXVy2jWSmg2yuad6Oh0GuM0qIUl8HgagKRenufBl/BRCjmISEjK9PWjP5vF5rFJpHr7UGv4uDgzi8NHXsVFCUZjwwP40ucewoGbp3Du4lkceu01nFlYl+DRg/27d2FqUxqvHvkJTp87hU8c/B0JT/1YWZrH2uUKWvUoRgf3YNfkQQwNTsCVzzDiSaiJRiDpDG0d3tp1YcnHpcHHlcnRWsvytiUl+awdqauGHv1eLAk5If0+pKz3AzKNQBp8GICIiIjoBsQARO8bml80RBhylm1ahzTkaAjSUCGPV7q7ybJuADIhSAKQtgI5IQkh9YYJU9o9Ta8dqvo11NqeuWnqajGPN068jrffegWl/Bq+8bV/h2xiAIszS0j29uCNU4dxeul1uNka3FQTjWYInkyrhTJqEm56Uj3oS6cQj0bRK2XbcdHw6lLfBmwJDW0T1KTuzautWxE3asKF3lQ03LJg2RHk1kqYX85LuJnHqXfOY3Z+UYJHGHv37sdDH78TH9nei3fmF/DcKydxdi5nBiXYOT6M6W3DWJy7gBcPvYTxsTF86lN3Ib92EavLJRRXpX7RQUyM7sXk+M3I9m5Cy8sgFoogbpVgRfRGp4ATi5kEY7q4mQAUhqtd2rT+pgUoGAEuCEDyfeg68+Xo3MyCqVsmIiIiuoEwANF10T13vvbHZ57LAjnf1pL8BSfcbXloycm46QKnLUCdSXfQQQP8zrVAvueZbbqDJ+g2frNlttNlup0GJx2mejm3hIX5eezZs0vmc9g0NoRzl97CkaPPYfPUAFpOBYXSZZTLBdR9DyHbRUgChN60taJd7yQ0NGWqNnw5fBiOJ+FG5xKMao2muebHicbQ8NuoSiArFIso5usoLLaRW8khl1tEJBZGRkLZ9slh3HHrFHbvHJdgBVycXcBLr57C/HwOUSeB8fFRTG4eQTl/Gb8++grC7So+/ok7kOlNY/b8ChYXVwE/LiFnANO77pDwM41ULIO2BDfHjkrwsuHaUjvt4iYfbthc6yP1lfqbm51q2dJWH9uENA2UJvTI5x5EoODbMl8LERER0Q2OAYjeN4LwowFGnwUn3kEokpKckDdleTfY6FzXBQMf+GabbsDRcjck6Xbd64l0vemKJlPEdTAw0I/cWg6LK4tw4mF87+//GrVQAT3DUcT6ZP1QAjdl2ohYkBDTwvLlAlZWK1hdrcFvO2h4gBPpgRuNQy8MMi1OMhUKRVnno1ipYW19HVW9EU9IQkc0hNSgi5sG+zAloWbzUC/GpA5hqd9aoYwLs0s4+fZ5CWclpFJpbBqPob8vgfWVFk4dm0Uk3MCH7hzDlokslubWsDhbxNpKAVY4iS3ju7F9yy0Yv2kKMbvH3DNIr/NxXQlu8mdLCLLtTgCS4KMhUOfdEGTm7WC4a/O5awCS592yzPQf85kb5ovpzImIiIhuIAxA9L515YepAUZmZmppQLo6XRtyTOjRQRKuWX7tpOHH05AkczcULNPrYoYljBw7fQLf/rv/gbVmHtFsBL7bQM0rIy7BJ5NKIZvtw8hwVkJTLyz4qNdLqJTWUGuUsVYqotSyUJdj6zElg8F2dEABB9F4DJlMP3pTvRK6QkimPdSbHtbzDSxdLmJ+bgW5xQK8so+Q18ZAegCbtwyh7hawvKBTDuFQBR86MI2R7IhsW8GFM7OoVJbhVT2M9E9j++RuTIzvRH96FH4tJIEtDldbfiLBKG868IEtYUhvdNoNPRqGNPh0A5HOrZaWg2QTtP1czTmKWYeIiIg+CBiA6H3L/DD1Qc68NVS0zQAJIRN2dHnQ+hMMMmCey0YmAOk1Qde2AOmfzPW5aSWSKSwhRHeq1BsIxyIIJyKYW13EL0++hjNL51BpVtC0ZLt2Ay29x1BLtpPJQgOJmIOMjiaXiiGVTqAnmUTIlUnCg2kt6byejgDnNermpqjFYgmlUl7Kq1hbryBXqMFyU4jH+yS4DKEnFkdfIonq+jpyq/NYry3Jvx+jGBkaNq1Ac7PnMT+zhHrRQstz0J/JYOfWaYwP7kFf74CEqyTavgUrHJHwI5OEr7AEHjsMuK4EobAEINsyI7yZ1h69AarWVSbzp8ul5rJUai+fWUg79BERERF98DAA0fuatvqYm26a7liahbSspTB8HQzBD1p8lBkZTkLQlQBkwpC2yAT7XGkVauv9hOp6JAkpLZTrNU0JSA9lsZhfwrmFGSzkFnEpN4el6lnAaSLqOBIipCZyDK/RMN3oWhK+NOBoC4slFdXBGVot32znyGTqLXWwJYg4jkQL7YIW1YASQjaVQMSWekvA0lHsqhKW8qUKnEQPsn0jGEykUatfwtylM1i+VIZfi6EnnsTQYB9GRyYwnN2LgdQWRPXaJHkly4rADjmIRhLmM7IljDkRCUGhtqlfOKQtQBJ0NPzoZK4H0g9U44/Jj7K/HkkHve50gdMPlYiIiOgDhgGI3reu/DC1oAMhyMyMviwFOYc3cw07JtRo0JGQY+4FpC1BElT0uVmnwadTNi1But6S8KQhqS6BxtOWoRY82UZbTZqhFvLreSzlVpBvVlGqr6NQzKFYXkG5sQZYdbixthnEwNGbiEpSkMOZARuCgQPkODI3AUhCkbwoXMeVIOQAvnZBkx0k+PheDV6zgXaoCcu14Ug4Wq+UUMhVUFyoI9SKoCfVi3jcwUB/GkMD4+hPbUcmNY5oLLiZach35NgSqtwIHDm+raO4yWej9bAkaJm6heXYneGtu93edDstB0OPd8KlqX/n45aJiIiI6IOIAYje1ySTBCfl/+xXqq06QenKdUEacGTjIPh0lkn4UEFZt2lLAGqiEQ4GTpDUo01HpqnJq3kmBIRtS15UglDLl0BShN9qoO5VUK6to+qXsCJh6HJ+ATWvBCcmoUPCSzQeD4KPvFZIApQGCB1iuuU35cUl4Mgxo+EW4u2avICLeiiKattGo2Ujn19DuZCHrTdu9evIpPsQi2clREVNAErLlOrthWsnJbik0fZceRE5nuvCRWcAA5nM8NUy13spSdEELf3s9H5EOplubrpe5zrMtX5W8ndtW48sNct0R4YgIiIi+iBiAKIbkIaZ7um5/nyD0GNKesbfoflGl+syXWwCj5AMhJZkHN1BW2lMaJEAFDKtIbJEyrpt2JU1bV/7tgXH0QtqNFkYep8hT6amZBE5uCQn8/ryKPHLrJfYYUKERonuXNdJBJOApt3l9M5GesNRV5Y6sJyozIOtHJRlKwlL5ihxeYzB0/0krAVhRo4tL6P113/0BfQ1rtKFskzeuNZGXyv4HDo10VlnP33oFvXd6fbdd0lERET0QcMARO9rmlmC8KJPZDIn7N1Tdl0UBIZuO4aWzD6aXbr7dGYm1MjBdN7qdPvSIaiDE/8gwGjrkHlBOYB2pTMRRlZ0tpZlIYRNd7ugtUVXmmNLPNFtNJjo/toFTYOWqa5uoF3xdH/tiiYLHE0vukpDkB5Tlnu+HEW2DVst2OFycCy4spEtwUeOZAV10FYsqQQseQ2tv7Z66euY9yslE3I0IF5ZKAU9VKszN9sJbe7qbNfZKtilMyciIiL6IGIAove37tm4zq8pmwYgmWuYMAFAg4CuNmfuZqkWTBgwLT+dE32TDcyGskWwiVmgfya0yFNto9FJW19MYujspPfF0W00Q+iG+prmoDLXy3q6dQhIKaz7a/Hq0m59g5IELrNUjymThBrtLqdd6IIjReS5LXMduEH20Pdi/nR/3a4p++lrmBeXR32vuk5puVPS1fq8s6ehBfOZ6EZXlhIRERF94DEA0Q2te/r+2z/iK8u6IeWaLYLTfXk0hWB5Jz5c2aq7h3kuD/rc5KDOmiBsyLyz4TXR4hq6t255lTmeEezbrd7VVw+2CA4b7NktB/PODp2112SrjmCdzrTUfezW1WxuDtHZrrO+6/+9lIiIiOiDw/zPbKIbVfdEXefXTsqU5URfz/WDeTAFC4JtOlt1nuo8+OuWtQucdpsz+5kl12zdWabHM4f8Z1OwvLOTma5dpwvMNmaleSZ/5hXlmc6764JH9ZtL5FH3/41Jluq8s75LlwV76Tbdtd351Ul150REREQfRAxARERERES0YTAAERERERHRhsEAREREREREGwYDEBERERERbRgMQEREREREtGEwABERERER0YbBAERERERERBsGAxAREREREW0YDEBERERERLRhMAAREREREdGGwQBEREREREQbBgMQERERERFtGAxARERERES0YTAAERERERHRhsEAREREREREGwYDEBERERERbRgMQEREREREtGEwABERERER0YbBAERERERERBsGAxAREREREW0YDEBERERERLRhMAAREREREdGGwQBEREREREQbBgMQERERERFtGAxARERERES0YTAAERERERHRhsEAREREREREGwYDEBERERERbRjXNQC12+1OiYiIiIiI6N133QKQbdvwfb/zjIiIiIiI6N133QKQ67qo1+udZ0RERERERO++6xaAIpEIisUiPM/rLCEiIiIiInp3XbcAZFkWenp6kM/nGYKIiIiIiOg9EWo0Gtd1JALtBqctQRqGtFVIrw0KhUKdtURERERERP//hObn5zkUGxERERERbQjXvQWIiIiIiIjovXJd7wNERERERET0XmIAIiIiIiKiDYMBiIiIiIiINgwGICIiIiIi2jAYgIiIiIiIaMNgACIiIiIiog2DAYiIiIiIiDYMBiAiIiIiItowGICIiIiIiGiDAP4vaNo1q0uv1+gAAAAASUVORK5CYII=)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "-x1c0NC4NYnO" + }, + "source": [ + "## Fewshot Classification\n", + "\n", + "We can now use our newly labelled dataset to train a classifier. We will use a SetFit model due to the limited sample count. Notice the significantly reduced inference time and increased accuracy. \n", + "\n", + "A complete tutorial on few-shot classification with SetFit and Argilla can be found [here](labelling-textclassification-setfit-zeroshot.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "M3rtb_KHNYnO", + "outputId": "4858c080-44e4-4d84-b22b-b01b3ce28b0f" + }, + "outputs": [], + "source": [ + "# load the 'newly' labelled dataset\n", + "dataset_rg = rg.load(\"electronics_with_vectors\")\n", + "labelled_dataset = dataset_rg.prepare_for_training(framework=\"transformers\")\n", + "# # To try the prelabelled slice from HF Hub\n", + "# labelled_dataset = load_dataset(ELECTRONICS_DATASET, split=\"labelled\")\n", + "# # To evaluate on the larger test set\n", + "# test_dataset = datasets.load_dataset(ELECTRONICS_DATASET, split=\"test\")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "xwTr038lNYnO", + "outputId": "70f363ab-78ec-4e3e-c009-fd266968ca30" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import pprint as pp\n", - "from requests import get\n", - "\n", - "from datasets import load_dataset\n", - "from PIL import Image\n", - "from sklearn.metrics import accuracy_score\n", - "from sentence_transformers import SentenceTransformer\n", - "from transformers import pipeline\n", - "from sentence_transformers.losses import CosineSimilarityLoss\n", - "from setfit import SetFitModel, SetFitTrainer\n", - "from PIL import Image" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n" + ] + } + ], + "source": [ + "# Load SetFit model from Hub\n", + "model = SetFitModel.from_pretrained(\"sentence-transformers/paraphrase-mpnet-base-v2\")\n", + "\n", + "# Create trainer\n", + "trainer = SetFitTrainer(\n", + " model=model,\n", + " train_dataset=labelled_dataset,\n", + " eval_dataset=test_dataset,\n", + " loss_class=CosineSimilarityLoss,\n", + " batch_size=16,\n", + " num_iterations=10,\n", + " column_mapping={\"page_name\": \"text\", \"label\": \"label\"},\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "Yr7j8UldNYnP" + }, + "source": [ + "Now let's train ✈" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 240, + "referenced_widgets": [ + "76252be98eed408a8f08fab0edca8d86", + "5c634542ed3940a1a8ac3f73b634e88d", + "b0721a5abbc044a59a9d119c65523ec3", + "822cf5f25bbb4845a8df5b09df0c88f5", + "d24e98b7ba64420588aeee6c0a7d787a", + "de16a90176c24ff8aa76eb0af1281d22", + "c9464f1ec9e64361b0e621c664514ada", + "74cce0696fd74f999b8476974ec74f30", + "cad144a0ae5948f5896d12f83c044dfd", + "e831d4f1ad4d4f5f97bc9569a5294ca9", + "71f5c4292d4f4564bb0bf5af9368163f", + "3eb4c6ae76fd4118be2e466e560f6746", + "993a0a13bc7a4deea5cded6df4e27fd1", + "6d0477f7d5744f55a7882de18b923101", + "9b506c9457f046d4a91395935a934790", + "429a122883f6429d90c994558fc50cfc", + "9411b438e2634a3ebd0d1617d2ec3a7b", + "ffbfe6debabc4f5c8cad8383d596946e", + "e94edd188d8942e6b7f01cb1b962ba46", + "7059d83f776f49c887879e870bb71ee8", + "a696789fe05c40b281a0090625e66004", + "02b23c74c75e425cafe0c231b2892c47" + ] }, + "id": "qqp69mUVNYnP", + "outputId": "dc1d2b88-a61d-4f78-fd98-c8c5510b7972" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "Applying column mapping to training dataset\n", + "***** Running training *****\n", + " Num examples = 5040\n", + " Num epochs = 1\n", + " Total optimization steps = 315\n", + " Total train batch size = 16\n", + "Iteration: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 315/315 [00:53<00:00, 5.94it/s]\n", + "Epoch: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:53<00:00, 53.04s/it]\n", + "Applying column mapping to evaluation dataset\n", + "***** Running evaluation *****\n", + "Downloading builder script: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4.20k/4.20k [00:00<00:00, 4.10MB/s]" + ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from argilla.utils.telemetry import tutorial_running\n", - " tutorial_running()\n", - "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "{'accuracy': 0.9117647058823529}\n" + ] }, { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "izZIHEzYNYnB" - }, - "source": [ - "## A 'real-world' multimodal dataset\n", - "\n", - "The dataset samples contain a `page_name`, `page_descriptions`, and a `label`. The dataset is split into two parts: `labelled` and `unlabelled`. The labelled portion is the result of my annotation so we can test methods. In reality, let's say this doesn't exist 😏. " + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "trainer.train()\n", + "metrics = trainer.evaluate()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9117647058823529\n" + ] + } + ], + "source": [ + "fewshot_relabelled_text_accuracy = metrics[\"accuracy\"]\n", + "pp.pprint(fewshot_relabelled_text_accuracy)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "TLEiVC_KNYnP" + }, + "source": [ + "## Summary\n", + "\n", + "In this tutorial, we have learned to bulk-label a multi-modal dataset using a modified version of Argilla. We compared a few-shot classifier trained on the bulk-labelled dataset with zero-shot classifiers of image and text. The results show that the few-shot classifier is able to achieve a higher accuracy than the zero-shot classifiers. Furthermore, the SetFit model is significantly faster than the zero-shot classifiers.\n", + "\n", + "This approach can be applied to classification tasks with limited data and can be used to train a classifier with minimal human effort.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 438, - "referenced_widgets": [ - "d2cf4d1133a2421aa1ec980bdca4fecd", - "bcfc02b30e024b5c81856bcd9e191d07", - "eaefc3e261a7453cb66905079b71f16a", - "ac546920996e4ca081e438999ae19fc8", - "c54e39be37434e0d826d86041ef1de96", - "f4d6914361f44912b0d7ca1b16496606", - "b3c787a117ae42738c315c5cdabd508c", - "edf41d1718984e7dbef2b65799935fd8", - "20dad493a55343efaabbc6f7c1966cf0", - "b91ae0e5a43143e68f53099e85f1afc2", - "a1ec5941f87f4b23bc72188313ac9275", - "6482c21eb5d449f795a9e39fcae6a46e", - "2db4287290eb4c25bc440fc3f2f1d258", - "b470309f2a6b4878852ae9e589764edf", - "63de802f18e44b16a3a2f5029ad7b705", - "670f91d2101c4d87997c228210646f89", - "d8f11947b0d048489bdd649479c50b1f", - "70eee61c4d3842f69569dee3ac8773fa", - "26175752e18140b4a944bfc55f77a069", - "c13ea0c47f6e48f0a804fa9f2f5ce544", - "9e17b92da1aa43d0aa980db275437fde", - "d2186c7599164e528aa3d92f6999a9bb", - "35f1224563044be39e254342c6c5b635", - "87a472fb7193452faea139ab6bf1c9be", - "eb9b58dab8044074b1cac3e39f26e561", - "6359430089654ca4bdd587c125b317a0", - "be06bfcbe41040369d025626b8227b6b", - "082dfef575c94327a5377c3f7278cf5a", - "84d1a26c298b42cd820bcd2e4302a443", - "0987a64b9cea4850998e78d76d31c3b8", - "fa0573f2ebd84a5ba5ebdc0452362887", - "e8e295d7292245fb9f17413599d59960", - "0286aff9c56b43e7abd15f17dd33d6db", - "8b161e12449f4078bb64245518bb596d", - "71181e8f913b412fb72917c55a151723", - "dcd3ba169df34a0395eb5d03405f8835", - "d0b05902a4db4abd8c10cab6178a59ec", - "8294163893bc40c2bef26032babb3938", - "735a35f35dee4d548cd6284f9e3e1f5a", - "b7dfa3f0d2374482af6dc25ec8dd65df", - "c65f5b1c90e24d47a060c0b362749b82", - "01bc8315e7cd4064a8653eae44cea192", - "36156c14c8d544deab0ea65ac5ba7508", - "15d85f4fe15545bc85d3717d7af7bbb1", - "f8d66c452a6d4347b9a8247ad135fd35", - "3c8aa1d02f1541bdb59b0a8dff27148f", - "88677a526eae40a1b5e0b5e9e7a25218", - "eaf5ad9e9e3240799128ef8bbf0a195a", - "48f63d3af7604e8abe4ca94dbae63f48", - "27d3f1981c244549901253b3266de1ff", - "9aae9636296a4245989388403103e0eb", - "139f9e8c84f447b985c2080c17d14a8c", - "1d37c4be099b44b5bc67c2cd976693b9", - "1ad0c7637293497a9a75bfa45c1a06e8", - "4fc202bfa55842b48e59d4a800026331", - "bbb9442a3ec1463790bcf6533f3be905", - "16bd920f956f43b3921b79cec4d76d87", - "c12bc29016124339a6c3cb11f21bfaf0", - "a6b61668ad1146e78c2a9b2556b23703", - "14cc3d3e93c54226bc2f38a4745c1d23", - "16fccf90f2974a938167677b189b67a2", - "714590bcc27e4efc837f870812929f3e", - "9cef8cafa31a47fd9f7410478b5415e8", - "2e4deb55d7b74e2fa09c9f925fd2e751", - "2433cd897d734c78b3d4a62602865415", - "9fac34a2d3e44c95a2591b26ddae5c1e", - "88edaefb70c34854ad6f16d5a82b40e7", - "ba93d6edfed5434397d869ba2bd7aca5", - "7282d9ef9a754bcfb1297081296aed5a", - "946c67b0a3f54ce09c35db7bef44991c", - "f41cf420defb4b109f836fecea8e1d15", - "c10b310f7f6344b39c8d165c887d28f1", - "052b62b792fc4f1183ffb91f18d655c7", - "c4a54f5262014b77964d42429d5e43bf", - "cf540757bc79428bab170e157eb9381f", - "03390d37eba24242ae6c2099d5fe7863", - "88901ee5ca86458288bf82a22db7e379", - "498becb6513a44a4a17cff76a8ae4666", - "5066a8fd18d94f9da0aa0cf354d13452", - "a8d41a62f1b94575a744c12a399de8c8", - "e8cc8dbe0d164a9eaec472ffe1351db9", - "0d3cbcf01ca14063be3ae129db78fdcb", - "1a951db095d441e295bb9ff00d4dba30", - "e120b072886b4d4f94ef506ca3d6a605", - "d5fea5e89ebd4d298c169526eadeeb32", - "8513e53c07c04d75999be1fec6d5b491", - "e7da6c65cec140c3801fca68bcfdebcc", - "eccef3d9147242d9a1e42f4abd0ebe4c", - "b77605d5afb94b8cb579f3c690ea4203", - "aedab95f1bb144c38180f2b2e71c14ff", - "49d11634ca864c04bc87e472d3563e73", - "20163aeba069412eabd3b506a339667f", - "feef17ea90ae4105b2ffb56841ed2adb", - "e97c5c6e969842468f53520dfba1ee8f", - "89b04536243a48049eb777f00fe49555", - "94502dbbc1ab42f48d2d375a8265dbb4", - "090c3e60ff0d4e5fa930767672802d86", - "b577441dde9e43cb9644244ca0cf336e", - "b850f11900ae4874963b35e0b86470e5", - "963fbb3d5b9f4848a8cadf2a2d2b264b", - "52ad436eea8649058457d6380f618ea2", - "5817239aa98046e9be3736688f8c1a5f", - "c48e02dc87d74d50ba6de4aefeb1441e", - "ecc225aab6804d97b1cdd383621c9695", - "fcfda905fd4448b3940b04f4136c53a4", - "16162c715d4745f3aa91c7f38a78a32d", - "4c7287d821f1471e9ebdafa2f8229d28", - "5a65206e09c04176bfd33bcb31cd1ad5", - "9ac85729093c41c1b2a0fef5191b8ab5", - "d774f350171b4c3fb6be768dbf11c726" - ] - }, - "id": "gdVdxJt-NYnC", - "outputId": "c54aa613-806e-42fa-b4de-f374c78b1d50" - }, - "outputs": [], - "source": [ - "ELECTRONICS_DATASET = \"burtenshaw/electronics\"\n", - "dataset = load_dataset(ELECTRONICS_DATASET)\n", - "labels = dataset[\"labelled\"].features[\"label\"].names\n", - "int2str = dataset[\"labelled\"].features[\"label\"].int2str" + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAJ6CAYAAAD6q0KOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBdUlEQVR4nO3de1yW9f3H8TcoooaCZuCJRFHzhGZgDs8HPKdZblmZkqlzLQ9J9ZuWQlppueXMrEzNpi1TOznLpiWGR0pTYZZpmiCGouIBFAyUm98frXtjYJOWfPS+Xs/H435Mvvd1y9vHvuHb7/W9rsursLCwUAAAAEa8rQMAAABno4wAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAVHnrAJfD5XLpyJEjqlKliry8vKzjAACAy1BYWKizZ8+qdu3a8va+9PrHNVFGjhw5ouDgYOsYAADgZzh8+LDq1q17yfeviTJSpUoVST/8YapWrWqcBgAAXI7s7GwFBwe7/x6/lGuijPx4aqZq1aqUEQAArjH/bYsFG1gBAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU+WtAwAAnCVk4mrrCB4h9dl+1hF+MayMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU+WtA3iSkImrrSN4jNRn+1lH8AjMyV8OcxK4clgZAQAApigjAADAFGUEAACYoowAAABTP6uMvPTSSwoJCVHFihXVtm1bbdu27SePnz17tm666SZVqlRJwcHBmjBhgr7//vufFRgAAHiWUpeR5cuXKyYmRnFxcdq5c6datWqlXr166fjx4yUev3TpUk2cOFFxcXH6+uuv9dprr2n58uV6/PHH/+fwAADg2lfqMjJr1iyNGjVKw4cPV7NmzTRv3jxVrlxZixYtKvH4rVu3qn379rr33nsVEhKinj176p577vmvqykAAMAZSlVG8vPztWPHDkVFRf3rN/D2VlRUlBITE0v8TLt27bRjxw53+Th48KA++ugj9e3b95LfJy8vT9nZ2UVeAADAM5XqpmeZmZkqKChQUFBQkfGgoCDt3bu3xM/ce++9yszMVIcOHVRYWKiLFy/qd7/73U+eppkxY4amTp1ammgAAOAadcWvpklISND06dP18ssva+fOnXrvvfe0evVqPfXUU5f8zKRJk5SVleV+HT58+ErHBAAARkq1MlKjRg2VK1dOx44dKzJ+7Ngx1axZs8TPTJkyRUOHDtXIkSMlSWFhYcrJydFvf/tbPfHEE/L2Lt6HfH195evrW5poAADgGlWqlZEKFSooPDxc8fHx7jGXy6X4+HhFRkaW+Jnc3NxihaNcuXKSpMLCwtLmBQAAHqbUD8qLiYlRdHS0IiIidOutt2r27NnKycnR8OHDJUnDhg1TnTp1NGPGDElS//79NWvWLLVu3Vpt27bVgQMHNGXKFPXv399dSgAAgHOVuowMHjxYJ06cUGxsrDIyMnTzzTdrzZo17k2taWlpRVZCJk+eLC8vL02ePFnp6em64YYb1L9/fz3zzDO/3J8CAABcs0pdRiRpzJgxGjNmTInvJSQkFP0G5csrLi5OcXFxP+dbAQAAD8ezaQAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMPWzyshLL72kkJAQVaxYUW3bttW2bdt+8vgzZ87ooYceUq1ateTr66vGjRvro48++lmBAQCAZylf2g8sX75cMTExmjdvntq2bavZs2erV69e2rdvnwIDA4sdn5+frx49eigwMFDvvPOO6tSpo0OHDikgIOCXyA8AAK5xpS4js2bN0qhRozR8+HBJ0rx587R69WotWrRIEydOLHb8okWLdOrUKW3dulU+Pj6SpJCQkP8tNQAA8BilOk2Tn5+vHTt2KCoq6l+/gbe3oqKilJiYWOJnVq1apcjISD300EMKCgpSixYtNH36dBUUFPxvyQEAgEco1cpIZmamCgoKFBQUVGQ8KChIe/fuLfEzBw8e1Pr16zVkyBB99NFHOnDggH7/+9/rwoULiouLK/EzeXl5ysvLc3+dnZ1dmpgAAOAacsWvpnG5XAoMDNT8+fMVHh6uwYMH64knntC8efMu+ZkZM2bI39/f/QoODr7SMQEAgJFSlZEaNWqoXLlyOnbsWJHxY8eOqWbNmiV+platWmrcuLHKlSvnHmvatKkyMjKUn59f4mcmTZqkrKws9+vw4cOliQkAAK4hpSojFSpUUHh4uOLj491jLpdL8fHxioyMLPEz7du314EDB+Ryudxj33zzjWrVqqUKFSqU+BlfX19VrVq1yAsAAHimUp+miYmJ0YIFC7R48WJ9/fXXevDBB5WTk+O+umbYsGGaNGmS+/gHH3xQp06d0vjx4/XNN99o9erVmj59uh566KFf7k8BAACuWaW+tHfw4ME6ceKEYmNjlZGRoZtvvllr1qxxb2pNS0uTt/e/Ok5wcLDWrl2rCRMmqGXLlqpTp47Gjx+vP/zhD7/cnwIAAFyzSl1GJGnMmDEaM2ZMie8lJCQUG4uMjNRnn332c74VAADwcDybBgAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABg6meVkZdeekkhISGqWLGi2rZtq23btl3W55YtWyYvLy8NHDjw53xbAADggUpdRpYvX66YmBjFxcVp586datWqlXr16qXjx4//5OdSU1P16KOPqmPHjj87LAAA8DylLiOzZs3SqFGjNHz4cDVr1kzz5s1T5cqVtWjRokt+pqCgQEOGDNHUqVPVoEGD/ykwAADwLKUqI/n5+dqxY4eioqL+9Rt4eysqKkqJiYmX/Ny0adMUGBioESNGXNb3ycvLU3Z2dpEXAADwTKUqI5mZmSooKFBQUFCR8aCgIGVkZJT4mc2bN+u1117TggULLvv7zJgxQ/7+/u5XcHBwaWICAIBryBW9mubs2bMaOnSoFixYoBo1alz25yZNmqSsrCz36/Dhw1cwJQAAsFS+NAfXqFFD5cqV07Fjx4qMHzt2TDVr1ix2/LfffqvU1FT179/fPeZyuX74xuXLa9++fQoNDS32OV9fX/n6+pYmGgAAuEaVamWkQoUKCg8PV3x8vHvM5XIpPj5ekZGRxY5v0qSJdu/eraSkJPdrwIAB6tq1q5KSkjj9AgAASrcyIkkxMTGKjo5WRESEbr31Vs2ePVs5OTkaPny4JGnYsGGqU6eOZsyYoYoVK6pFixZFPh8QECBJxcYBAIAzlbqMDB48WCdOnFBsbKwyMjJ08803a82aNe5NrWlpafL25sauAADg8pS6jEjSmDFjNGbMmBLfS0hI+MnP/uUvf/k53xIAAHgoljAAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRl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fn7u9ypUqKCQkBANGjTIKB2cJiYmxv1rl8ul+fPna926dWrZsmWxu7HOmjWrrOPBoT799FPrCPgn9ox4uMWLF2vw4MFF7igIlLWuXbte1nFeXl5av379FU4D4GpDGXGIHTt26Ouvv5b0wx0FW7dubZwIAGz94x//uOxjW7ZseQWTgDLi4Y4fP667775bCQkJCggIkCSdOXNGXbt21bJly3TDDTfYBoTjZWdna/369WrSpImaNGliHQcO4u3tLS8vL/23vwbZM3LlsWfEw40dO1Znz57VV199paZNm0qS9uzZo+joaI0bN05vvfWWcUI4zV133aVOnTppzJgxOn/+vCIiIpSamqrCwkItW7aMvUwoMykpKdYR8E+sjHg4f39/rVu3Tm3atCkyvm3bNvXs2VNnzpyxCQbHqlmzptauXatWrVpp6dKliouLU3JyshYvXqz58+dr165d1hEBlDHuwOrhXC5XsasVJMnHx6fYbbiBspCVlaXq1atLktasWaNBgwapcuXK6tevn/bv32+cDk72xhtvqH379qpdu7YOHTokSZo9e7b+9re/GSfzfJQRD9etWzeNHz9eR44ccY+lp6drwoQJ6t69u2EyOFVwcLASExOVk5OjNWvWqGfPnpKk06dPc9UXzLzyyiuKiYlR3759debMGfcekYCAAM2ePds2nANQRjzc3LlzlZ2drZCQEIWGhio0NFT169dXdna2XnzxRet4cKCHH35YQ4YMUd26dVW7dm116dJFkrRx40aFhYXZhoNjvfjii1qwYIGeeOIJlStXzj0eERGh3bt3GyZzBvaMOEBhYaHWrVunvXv3SpKaNm2qqKgo41Rwsh07digtLU09evRw35Bv9erVCggIUPv27Y3TwYkqVaqkvXv3ql69eqpSpYqSk5PVoEED7d+/Xy1bttT58+etI3o0rqZxAC8vL/Xo0UM9evSwjgJIksLDw4s9CbVfv35Fvq5ataqSkpLUoEGDsowGh6pfv76SkpJUr169IuNr1qxxX4mIK4cy4gDx8fGKj4/X8ePHi21aXbRokVEq4KexaIuyFBMTo4ceekjff/+9CgsLtW3bNr311luaMWOGFi5caB3P41FGPNzUqVM1bdo0RUREqFatWv/1oVAA4EQjR45UpUqVNHnyZOXm5uree+9V7dq19cILL+juu++2jufx2DPi4WrVqqWZ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", + "text/plain": [ + "
" ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pandas import Series\n", + "\n", + "Series(\n", + " dict(\n", + " zero_shot_image_accuracy=zero_shot_image_accuracy,\n", + " zero_shot_text_accuracy=zero_shot_text_accuracy,\n", + " fewshot_relabelled_text_accuracy=fewshot_relabelled_text_accuracy,\n", + " )\n", + ").plot.bar()" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "machine_shape": "hm", + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "vscode": { + "interpreter": { + "hash": "97cc609b13305c559618ec78a438abc56230b9381f827f22d070313b9a1f3777" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "01939245f8874aaca606e7a1e8b954a8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_57b9cf8fe2fa4d918e8dc15e2efb6153", + "placeholder": "​", + "style": "IPY_MODEL_4f166794a0ad4061878ccfc623ec83c0", + "value": " 252/252 [00:02<00:00, 101.31it/s]" + } }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'image_url': 'https://tse1.mm.bing.net/th?id=OIP.to3Cddhws6ECl-_ySZ5ShQHaFi&pid=Api',\n", - " 'label': 1,\n", - " 'page_description': '\\n'\n", - " '\\n'\n", - " 'Are you looking for a way to reduce the number of '\n", - " 'purchase orders you need to place for cable assemblies? '\n", - " \"If so, then this guide is for you! We'll show you how to \"\n", - " 'source cable assemblies with fewer purchase orders, '\n", - " \"saving you time and money. We'll cover topics such as \"\n", - " 'understanding the different types of cable assemblies, '\n", - " 'researching suppliers, and negotiating the best prices. '\n", - " \"We'll also provide tips on how to streamline the \"\n", - " 'ordering process and ensure you get the best quality '\n", - " \"products. With this guide, you'll be able to source \"\n", - " 'cable assemblies with fewer purchase orders and get the '\n", - " 'most out of your budget.',\n", - " 'page_name': 'How to Source Cable Assemblies With Fewer Purchase Orders ...'}\n" - ] - } + "01bc8315e7cd4064a8653eae44cea192": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0286aff9c56b43e7abd15f17dd33d6db": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "02b23c74c75e425cafe0c231b2892c47": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "02f439d46b384718b0c7ab5fd8aa2d03": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "03390d37eba24242ae6c2099d5fe7863": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "046bafaebfd14a6282e231c6a7c22b3e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "052b62b792fc4f1183ffb91f18d655c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "05c50612c7ec41c7877d85c9d0502c0b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "082dfef575c94327a5377c3f7278cf5a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "088db72b2c4a41adb5b6f543c4fd4070": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_47a715f99b224f41b21d9ddc7467df52", + "placeholder": "​", + "style": "IPY_MODEL_b179999ec76e48579fd195b7c788f366", + "value": "Downloading (…)okenizer_config.json: 100%" + } + }, + "090c3e60ff0d4e5fa930767672802d86": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "094d2d5dc22d4f93918468209abbca2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "097dc95081d04f7e9f803384b5dee1ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5748285ca2ba4b93b30621437e931345", + "placeholder": "​", + "style": "IPY_MODEL_3017a4909cfe49648a9478ea14b9d062", + "value": "Downloading (…)ce_transformers.json: 100%" + } + }, + "0987a64b9cea4850998e78d76d31c3b8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0ab25a53cd28408c802a5dcda0e1206e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0ad0c441b68a48c0a8fb9436050d2a1d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1183c04b5df54255bad175f72d4a9153", + "IPY_MODEL_4378864bd5004edcba65b59fecbe84d3", + "IPY_MODEL_6f63b713ac2b4358b939c2818d15e67f" ], - "source": [ - "# show a sample\n", - "pp.pprint(next(iter(dataset[\"labelled\"])))" - ] + "layout": "IPY_MODEL_89ef6f10348a408a8546452e1fa74528" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 🔫 Zero-Shot Classification" - ] + "0b4387ee1a0d4f769b391dcbc4d5477c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "U9R2eaRXNYnC" - }, - "source": [ - "### 📷 Images\n", - "\n", - "First, we will explore some zero-shot techniques. For the sake of comparison, we will use the `labelled` portion of the dataset.\n" - ] + "0c28f7e5514c432197ed1b0e24fcc39b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "SshZkW1eNYnD", - "outputId": "a59a4610-0e25-434a-a6fb-d33394293e57" - }, - "outputs": [], - "source": [ - "# to save time, we'll take a slice of the dataset\n", - "test_dataset = load_dataset(ELECTRONICS_DATASET, split=\"test[:20%]\")" - ] + "0d3cbcf01ca14063be3ae129db78fdcb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "r-2LBdNVNYnD", - "outputId": "6c3cb81f-95de-4530-d501-f8b43f031c7d" - }, - "outputs": [], - "source": [ - "# More models in the model hub.\n", - "model_name = \"openai/clip-vit-large-patch14\"\n", - "classifier = pipeline(\"zero-shot-image-classification\", model = model_name)" - ] + "0d4090c9cfd542cba1a14d30b154f733": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "FodfnkJgNYnE" - }, - "source": [ - "First, we can zero-shot classify one image from the dataset: " - ] + "0f590a3e9ed148c9b076fa3b16e287f8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 509 - }, - "id": "5FMETGuDNYnE", - "outputId": "508eb028-acdb-428c-a7b1-8f34e2cbdb79" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'label': 'switches', 'score': 0.9631496667861938}\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdoAAAHaCAIAAAAohh/4AAEAAElEQVR4nOz96Y9kS3IfCpq5nyXW3Gq/a3ff7tvdZDcX9QxFUgNSEh7JGUEQnt4XfdI3fdN/MYP5FwYDzAfhARoImJH0IAHEDDBPTxKlB7XIaQ27yWb3bd697q0lK7Nyi4yIs7nNBwu3sOPnnKiMvLVkVoehEHXyxAk/vpj/zNzM3ByJCDa0oQ1taEOvmsyrrsCGNrShDW0IYAPHG9rQhjZ0RWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JWgDxxva0IY2dCVoA8cb2tCGNnQlaAPHG9rQhjZ0JSh61RXY0CWpqioAMMYgYvAVeQIAa63cdM7JV3Ect5fbKM3/vP0botW/a3ly9fPyGF9Y455R7leljUayoatCSMEs2dBVIhkdwVwiCvCXcdYYI88LFgNAURSkyDnXWohQfzDi1yFiG9TzG5ef+gHNSnx/NUbrckwHKj4L5De0odeHNnB8pUkAFBE14LZqxM4551xVVWVZVlXFujB/gsdogWPRmgNCE8ESjg1fAEC/38caLaB2hXYsaCvigYjiuP29zi0L0UVt4HhDvzy0geOrToynSxQEgLr+yzSfzxmOy7JkOK6qioiiKIKG1iz3Wwjb4RK8SNAkQqJ+c5VSrGG3XnjHSztL2tCGXjfawPE1I21ncM7leZ7neVEUeZ6DMm6A0qPlZvOiSTZKWu+zWg1eMZc6tMHxUrO2CzLPtCyraotaTQAQ2Q0gb+iXhTZwfEXJOafVYU1ExBaJPM+zLCuKoqoq/aS+Fhi9IBXlwjYSGCsYdgWL5RVlWba+msUGAzRDspTJpVlrjTHWyvMQXDAZbOfPLtv3+rSuq3Dj+tvQi6JNZMX1IDYKizmCleKyLEUFNsbwNT8jRgnT4SPruq8BV1tI8jzXdySiQ94r9dTlizlbHsiyTGN0FEVcVBzHQeFs9CD3ouF4Qxu6KrTRjq8BiVGiLMvz83O+GVgegnEUtGpeBD8PqcN2zK4/bX0OnIqBESOICZH7Ug7ULeCs4FtFDMrDwaCjPhvteEOvG23g+JVRM4hN7ouBmFXLLMvm8znbJbq02udFxrbHI3fxSVEUGnA1Ojfvd5lfQMVHB1SVpajSbPGQ55MkiSIL3g1IBEVRJkltwRdE44lhWvkbnZYKK2roS2gXb2VZNhvbfGxDG1pBGzh+SbQi1BcayiYiZllWlmWWZXwB3iJRFMULree6cCzWCa2kcyBdKzZ1ldMFx6YRTyJ9FUUR/4qNHohYVVWapqxZS92iyCK226YX9hB165noyTZ9fWcDuBt6XrSB45dEXXO+qiqxwxJRURTsmjs/Pw/20ckzL7SeXXDc5RJstZmIzbqpFHeV0wXHsU20ZUOXIwsItnKwFZtVacZ9/iqO4ziOGa+5p2sLjKXiTLrDxfd4EbTlijWHZoXtfkMbatIGjl8eyWxn+OCb7OZCROdcURRsl2C9mJU+fpKtFozdL7SSvA2ktfKt9yWyIliby+6V4LOrnK52RSaGuodQx3toWSWuRfAuRIZj/gmouGkNsmkv5vvW2ot0rRYnui1d4mRDG7o4beD4FVNVVYzCbBrWKBYo1HyTDRcvkDpceV18IjF2ARyLmIG6dtylbHbdj0xMfsMhqe0wLAYk2Fmet9ay3OJrVpmJKI5jrWVr6xBTsLGl3+/Lt6xTL3YMdkD2uvNoY+LYUJM2cPxqiHVhdtMxIgsWCy4IDIHX7Ng8+mJr1gHHXUYGbdgNPlthel3tHslI+do9yOjMWi2ovYtRFPG1RNGRz+mhUViQF9FINJ526EkT1JMIAINhHMgYkZ1N2QPdML2B4w01aQPHL4kEpyRwmLcyT6fTwM0VLMADR9aLnsbUEcj1TFgJ4LiJxZerOcNxM3GdtbYsSzZHEJGowwcHB+LKYzVZgFtit9lYxGC9vb2nMVobmlvrU5QT0aZR7ZTp9XrBfX6+S4xtbMobatJmG8hLIkTURgnRxRhNgrUzYwfUg+H0/atDgbFCw1ArFq8r/q0qsFJ0fn4ebEeMoiiOYw68494+OzubTqf8zNOnT9kiz78CvzOwLJc9nyRJr9fr9XpJkiRJwuiceIrj2Bizd2OIftON7DAEgKdPn2JbTo/hcPgVe3hDvzx0/bVjrn5LOjGeqD4MCxwAIKCs9UWFYSg0xrDqJJpRURSz2awoiNUo8aT1er1eL12t6klwKxGUZVWW5Ww2k7Q+XL6YOFup86s1ba9I69mCCdvf+7y0cgQQkwunMWK4RMQ4jufzeZqmvHTY2to6OzuL4lS2wPAAcQAyACRJMhgMBoMB527mBx49ehxFUVmWp6enp6enjL8MwZxrlKE8z3Mu5/z8nIGYvaaj0Wg0GgHAnTt34jju9XrD4TCKojzP5/P5fD7P8zxJEiIqisJam6Zpr9fr9/vj8Xg+n9++ffv4+Hg2m926dWs2m/EbOUgjjuOyLJ88eYKIb7/9NoN7FBlrwTkoSzIGo6iWV5qjpLEjJVMzwWkrEdT3B/k/+b7oAdZ0uCI7ouNfHb3Oq4rXFo4lvF8tCqmsSqBFIJe4gMREm+c5TyEGTY+eNbWOrZPGmLIsrbVae+L7eg1alk4Ch9k0LGEVbP3UQax6sQ9tHvxFBdbc9AxuPeMDrJnufV3bKPkms7lADLtseeDSGMWMMXmeT2fZbDYry5K7Oo7jfr8/GAyOj4/Bq8y5p7Isi6IEP6a8HMnznLs9yzJ+BT/M46uj4hheebu2c47heDAYjMfj7e3tvb09hubRaMTYmuf52dnZZDLJ8/zk5IS/StN0a2sriqIsy3Z3dzm7CPhY8vl8bozp9/s8XtIJXJM4jtM0MaaWcckYkLjpZygB3tAF3fBauZqLFQAQEADKalFJRDTKX3lFMPiXhH6p4BiKsgCKZCEJADxjvSK8MCaIIdJaC2A0jIqTLXDdiJGXISNJEtYBJa0E2xl0Ngn+s+nx56pqzf2rwXH7hOp0za0Zr9WlxXfmU1aRwgAg9t88zyeTSRzHbIUgosPDQ0ScZ0VZllEUjcfjJEn8zo7o7t27Ykzo9XppmvIGEABkHRYAiqJgRRgA9vf3p9Mpl8wJ8KbT6XQ6ZUtxnufOufF43Ov1jDFsqeAKF0UheMphG+PxeDAYsEY8HA757XEcZ1n24MEDNo/MZrPhcMi4zODLOjgA8LvY3CG2ZnFL5nmm+VMMIGmaQj1ShaG5K76udXgR/TIREVcirSB71KU1b+gF0PW3HXcylUFcKGIECxNBHMUAEetH8/l8NpvNZrPpdMrqkvahyZTo9QbayCDzhJe0GkD5AV4yc2kSFIFqj4Bgtw7Sojp1NYlEV29QJ7x29lvXWy7pyrsgWWtlq4XIJ4ZI59xwOOQezrLsk08+yfM8ilNjDFuQxuPxjRs3bty4MR6P49iUJWVZNp1Oz87OHj58yOPY6/V5ZEVlZqQ7OTmZz+diaxYe2NvbAwBRwLlWaZru7u4CAOMsAysPFquxDPTHx8f7+/v8iu3t7cFgwE04PDxkUP6Lv/iLe/fu3b59m9dPN27cYEBnuSI9wPzAPt6qKjWbgV/GiU0clf8QEaNoGVItMB1udamN42I0GXCX41KHXawjtmZyqdVa476hi9D1146fQeFZRM7BdDo9OTk5OzvjSchwwIArmAsAnMed4UksFXEcp2nKdgm5r703vV5PvPky82XKtRLUzRGLxWZHqp0u7bhzt9uaz5sOdet5wXFkLSeHY8MxgwhnCs3zvNfrTSaTJEnKsvzJT36SZVnaG7zxxhvvvvvu7u6utTbP89PT07Ozs4ODAzYHc99GUcT2oizLASDLMh5fxmJE5NUPt5rtEojId5IkmUwmRVFsb2+z3TlJEtb6WbEdDAZbW1t8h1Vj1qn7/T6bgI0xp6enVVXt7+/P5/Pj4+Pz8/OtrS2W9/1+/8aNGzs7O2xlHg6H/PNA+jKf9HqpcIUW511w7FypeUlwnDXxujaNAMDw3TK+3qYcaM0bY8XLpNccjj0OLjJPFkXx8OFjthGzUULwjqeTTAAiYji2ftOwoCTHQjG7C3yzI0gnamCAYBsFL7dlqgi4N+O3hDrvd8Brp9Fg3W0La1or1tWSImslERIRMfw9ffqUnWZZlk0mE45GePToUVEU9954CxHn8/nR0dFkMgGP4OPxOE1TNhqwyslp+IuiZMPu8fHx2dkZj6nkJpUoQ7YM8H2Ox3DOsVEYvJ3KGDMcDvmYlX6/XxQFDyLH2LErj6UmIrJTsSzLwWCQpumf/dmf/fSnP719+/Z8Pj87O3v77bfffPPN+Xy+s7PzxhtvsFaud6mgD9ezdgG1pPZwCjMEUhwRiSo9lIH22hT8/UGqgXuJ7B3Au4Hjl0mvORwzOedms9np6el0Oj04OCAfpirfEtFgMGhVV8vSyTYNtjmyy8ioPL+M0YzI7AgKMpCJZVBAWRCc2mzQrDA2bwJ0enM6tVdo38XXGTCH7Tkr1hYbHfcNIiunbFi31p6cnHz66aeI+Ku/+qvc6vF4zNaG8/PzR4+fsMGXbcTsWGPsk+HQe/Dm84xbJ05UWf2A3z9SVRUPBPsMRDawEEVfQ+dcr9c7Ozuz1rKdYTAYcOwHt4UVfIZy5it+9XA4/OEPf/jv/t2/+7Vf+7Uf/OAHx8fHZVlyCN3Ozs54PEbEGzdusNFZRt/XYbmRRIttbezSF6xqaEWbPyVeRYMvAFSu0Fgs5jLmW+OT5xlj2KFX1rXydp7Z0HOi6287vgBNp/PDw6eHh4fn5+eiE1lreeU4GAySJBmNRhwfwT+pKrZCICKUpWOPE2+i42hW9v+w6VkslWyR1DqvaNPsaBI/vkB2MGFEWxG1S5eG2G3x7TJKVOuJ2+clnrvgWDY385+MepPJ5N69e3fu3OHF/mQyOT09HY/H7ME7OTkpy7Lf749GI+MjryeTCb8iTVNWJHlYx+Mx+2Z5ZBmVOM4BlEOV3zubzW7evAkAbDoQrVlM/xz3FsfxeDzmCIp+v68DQsD3/Lvvvnt4eGiMefjwYVmWN27c+MY3vvHNb37zu9/97nw+/8//+T9/+OGH3/rWt8qyfPDgwVtvvcXVNj7hkUjuosj16Dd7MpCjTasuU5a1GzesNUTgCBDBVQ6REB0AzKZZKx/20hSW5jgO2nt2dN2GLkevDxyXpYsiw3G+cWydA2PAOXjy5MmTJ0/Yq+6cOz4+vnHjxr1799j30uv1rEUd7AkARGCMxJ9BFBlrEyIwBkaj4e7uLn/LPylLx74j1sUmkwlHGZ+fn7M99Pz8fD6fcw4E8LsPoigS+0bT1gEAaZqyJZrdR4zgVVWlvZ5WhVC55sk7D0GZsyObyPNaIWIFH9R2bV+38KjT57t+EvWTfB4JNhe8+eab7Mf78MMPb968efPmzdlslqbp7m48Go04GoGIuJfYUKCVQfTGaI4c52/5mpswHo+bldna2uq0uXsbuvxwe3sb2oxC/ORsNuv1elmWbW9vTyaTfr//gx/8oCiKf//v//1bb72VZdmPfvSj7373u5988snOzs75+fnR0dEbb7wxGo24N6Io4qh2tpZo0gE5K+oZoPagI22/CmquBVaKgOQOkWbOptNWWG/Rps0q7Tk4svaZYftdD1BjY6owxqoSrwm9JsYK55bR8gzEVUVFUZyeTPb39w8ODngvchRFX//Gu9vb29vb26IIOwdFUaRpV55fQATn2OAgWuriLV3Eb2frM4P1kydPJFuQbCiQ7JrozRdi9GAVqd/v83qWqSxLu4huNqJZiztRo638pCrnwr7kXfmMgFgP3eMVgLEpdER6NKcldKc06tKOUa2+uZCzs7P9/X0WZtPpNE1TDkXg5MWAluugm7aifGsjXXMBsq7p2sX/nauNDviWnSbz+ZwXTOwons/njx8/Zky/cePGv/23//add975wQ9+8OWXX37729/+lV/5FZYuEmthu4z9HbSuAaFrfdXVn65u9BCS1Ybxxx567dsKTDMnd/tHVtHqE8dlWPH1MqG8DnBclq4pmbN59ejRo/v37x8eHmZZlqbpnTt379y5c+/e3TiOeG7qmSVh9uFazEO8c46nCqvJF6eqojzPZU0t0c0MQGxYzLJsNpvxkR8cKtfr9Xhdz+pkmqbsPAREo1IriE4iE0PsIUx8ErOeSKAslaB2IrB7Kkn7Qf3FFqn/lIumNhc81vwCVNwIq7EcjfDZZ5/Fcfzuu+8mSSI2nyTts/wAdeApa5StxYt2H4iTdSFhXTiWrUPcjTonCQu/jz76iLXg8Xj8k5/85N69e7/6q7/63e9+l4iyLBPPsIj8gDrF25rt6hqXTjguFzb3gCQWO9CasywTXNZKQ7/fl4dbsk4vq7fciwjQmIwQ+hZFx389QPl1gGOx4hVFFccWAM4n2aeffvrw4cOjo6Moire2tra3t+/evXvnzp0oWuxxcg6cY2hAY6Asl1jchOP665acRATOLVQwUTPFCICIfKRbqyrNGjc/UJaOFSvWmsuyZEs3AzQ7uID9M0oN0S7EhWlC2UB4gsVRBPVQJ6Y4jp3KgibPl23aECgEdyojPhGxiaBJndPeZ9xnM67xKdmm0+nx8XGapmyaYFNGURQ2Spw//FRP7y5mQFwGIAoWX2K6XgKO5b26i6IoevjwIcfwTafTzz//HBG3t7dHo9Ebb7xx69YtjvTggUNE59bbpI5dGT87ab357splTpKmLA++atZTC29UqzdRI1ic67XdirhpInDUnrj19aDXAY6ZWKgaA7NZ9uknn3/44Yenp6fG2DfeeOPNN98cjUaDwWgwSPlwI/Tp3ufzOS8zZddTIO3REMeWai2SmcAYY63BUFzXcg40uUX6W0zP6DPqwlI7IGsxz0sxd3Bk7mw2e3p0FGwLZr1MbBqMxTy9jTExfyobCAAQkcSliimAHyiU1qMvxLkUYHRXgF0XX3HcMXgnntRBFhBZlnF9uGJoIlRuT/Kb17uMDwJPgRbfNW87t8+sGcHS9e3R0dGNGzc4UI/f9ejRo+Pj4z/4gz8w3i0podOIWFVrGn/WhOMu7buLRDvWdQjGXddNxHNQYWE8vWQRJUZh8cL4IEYPZQ8BxEW+abGn6wm7VruuJr0mrjzWsxChKKrPP/tCsHhnZ+fWrVt7ezfTNK2qajKZnZ4e8XwWEwG7idiWCg3EiWKTJIn16SkYx40xHO4ax7HyYxhjsCjKOI6CmLSqIlGTBR34WwnLr3/FEfsRG7i3tkb8TFk6Y41zxCqV2DeKotjf3+ebbLuUFBDj4dYC1xDZNs3QrM0dsNgBXEZRRLiAp0Ab6oLjbpjovK+/4rrxzgveZ2yt7fV63AreFCdTV0pYoeq2fiXz/8WRuCVlPxHff/PNN09OTrIs403ebF9O03R7e5vDcjg+nQPyOqMPnx+tK2a6ulqXo2G6qwlijYG24SAiDmcM7EtWEU+w4SjVyjUAcCx5l9HsetFroh27RRoa9+mnn/7igw8PDg6MMXt7N954441bt+70+33O9nJ+fl4Ui+W/8wkbedR5q5gUKNeOShHUvK2DcY194lp6s3Y5HA4lDQ2os4K6dkOB14iZNPMzQJPPL8MlVMppqX9uzCJjEU9yMXqcnZzzIkAEDwOiBN5FnpjjCStUHnOx1Qq7a4xegYxdRgzj4/xAWS1Y1eIRYbHH5tcoimyUsOx06ky8FdPeNHIsiF7W+vzzQkCJ5ahU6lS+P5lMxuOxtTbLsuPj4+Fw+M4775ydnTnn5vO5zkhVVdW6Sl6zvatpRcRCe/mArc9UjdNe+JrT3UEjFFofv6v12eC9Mu/E+COKMI9UkhpOI9Xv9xfelNeIXhM4Znr69Pi//bf/9tmn95MkuXv33u7u7ng8riqSuOAir+bZmaQ91ObL+XzOhQQdEsWLDdMSQcW4rJ/hO4LCvFsXVDpzMQUI9gmKtZo7nCNjUHyGRcHpKC3A0rUoOi9PBGpkYlyo2w6JgCOmOZ737OyMt4oxTEuSIy5wMOoZledX6s9yqwnTXUaDThefz5DJSg2/QnRktlGILXU+n9so0S0Ftem8vXw1evqZdW3HXfNihdFDAEivvnmfnrX20aNHt2/fjuN4Op1mWRZFUZqmohSzuawsyy7bbld92HW5Vsu66t9efsP4I39ig8BH2nQtnprwrZc++rPrxHRHuXQy43Kv1+O4/ot2wBWmaw/HjnIAMBhNp/mPf/KXP/nxT62N3/36e7fu3HHOnZ2fn5ycFGVuIutcOZvN+m652w3U7Op23Swe1pPN+CN/wG/0kFABh7UgB4Et1kZFDxVcjuPE1IM3rUVrO0MvK1dI/bs2tupUtlbZFvVYc/7l+Xx+7unk5OT8/JxcLOlApeHOua2tLfDhvYLRiJj0l80EtcCkxlaXRf1LlIclZAJViiXuHPTb57j+AhZ6JkvCaP1nlLSLBxEbwYqYj0ZtwkEXPxBYRhyWqRLyEXCUfLoqby2nizpzRHVQ176gLrHR+d41caCrfOwI1Fst3rrgWA/3YrWBhteLAUvs7OwkSZKmiTGL9eJiwK+VSfnawzFACWBOTye/+MWHH/zio+Oj0+29G2+/9W6a9uZ5NplMJrPzqqqMAUQkdGm5gOPgUxaYGMbVslW6BscaoFEt2ImopFq2IFmUOa8VCngxLidJKoYOsR6wbVo0LIE7RABcevCZpP6L5jRCgYIn618uW8RmzfNJwVuHOXiWPzlxmi5ETD1bu0O2frJMkt7o9XrSn9I0RHTVokVSZzH46P0O0v+RWRgBgvscqOtUbqbFz7F2iooeWd1keYAPf8KGNtcJZ35XjqyuQBltqEFxp8uxQ5RecziGNV2FQQXks1XLRkQDtTMkQc1Z1pH7/X6axjwjiVqOmiWf2/py9XyhdO1deQQGwOw/Ofz5B3+9v/9kPNrmBDTHx0ezbM46IIBz6NAnlGhiMRO2URQtU7po/JXoOj29pXBquGX4ee0+NotkNBVDc6BT8648Rmf2ubHOmKRLoy1rqQgMKN09xP9RbcY5f/gTLcIqrLUG0fZu1HZzleVigwNnpxQz9GQymUwm8/n86OSpYKW2QXPeOw6XZtMNvytJetwirSATUU/tNhT91BiDdhldp4dJEqKKzFv8aZYmez2+weIXvT4e+UBAqMNxV8SIlhli0+zCcVxl4+7SvttpXXi9LtTUiwNRimrlRESIhhqSg4g4pQzvseLMeQLK0BDJV5auPRwDmLOz8/sPHj49PkEbp4Ohc+7o6IiTKzoqDSIuDAiIVMqaOvhsTg8/28NAV9HFxL0rg22tBWhnL8F3LpbncFVVVeXQH1O/aI8vli+04oyIabqwSjPYcWIaxkGoSRTw0R1LmNBsLK7FOm8bib/m/ogiiKIYIB4MWNtdFOsccHKl6fyc0zNxKg+J9GBXFSuSXFvG5ThO+VoUagZTztRj/bHQonX2kqVNEJUrT+A1gDzqzmUK9Wkpd1qxoHPqGpTwa1DC2C6zTCxfh4hUvZqzDdfVdp9b+Wu+VsZO+j+YNY1xaX+1TC4ON5rP5+PxeDDos2kdvc0NfPT6erV8WXTt4bgk+OiTzz/5+NM8LznaYTKZsGqTJIkxQGWJFtI4NcZUVcGe6CYcd1Egq+VC9NzgYUe16aehXJQ4bTBFXLqYdRSq/JC3OUk949ho9GcF2VrL2S20Ns3I1VN7rM0ynhqyrIiiSCXJAKhHgPgIaG5FbeeLNM0Ys7e3Q7Tzxhv30B8MyIErPCvYecj7WVi5Pjk5EwXT+F12xpjxeCzHL+mFwrRcJkHVTdD5fKU+AEC4PDK1VdyGQ+baxWcXRZbtKmIdWgxokkQKUBaOPQAwsOZZhR3vXc2lFy+/i55X+Z3+jGdFtrQOQduI1A4phxpSL9iDHdcAkGXZeKsvfg7sXqxcEbr2cDydlZ9/8eX+wWEvHURxKikUDLkIAZFyKqBEhDiyiLA8ByxAZE7vDcotgwsHUcd2Bh/IJesp4iyOJsQCfaGlPf/Jpz8EuhvDEdHy1AzRwjiQSGLgRSpYtTFPDNDGmGF/gPW9IaxlR1GUpohJpOMxEAyzqwCxMbXYO0FnRN5QYAu/jYXvx7GNokGv1xuPxyKwOIMHJ/HY3z/Q8dHsRcyy7NGjR2LG0UJl0Ovrm9IEDkzUElELSN2fARAEkxmXI1Pjh65cHPo8EVAo31wJLUa5wxi8LhxfF3om7LY+H6jGUPfu1sexNl5CcRzLcQQCyvP53FHOiRtlxenl6FWkaw/Hn93/8uGDx64CNhlzjD2Ai01iI7RoTBoDAJIDAmsW0juYe1xUYKiCxciTWvjzZON/pJY/y9VQZCNdJs9KACBwyMf4EgE5IAJOp0OAALwAJrbnAoAhdtEsGNT/QwBXeqcWIAJS5W2XhA4cABRY6Po/xacajq3atML5dvkrsfAOhwPGNFwkTqrFeMgFyS5zw44XJ/AURUYHWRMBK7Osz+7ubvPNqgI5Wmk2mx0cHEj+YgZuzvt+dPiU516g+HP0mE63xNelWySWNKaW2kY89VCXkVQtNwE3WaJJFS3EtiNnkKNyCdAVZYYNAkDXHq/1wum6a8dazmmYFkgOChd9SPiQ1Hm1zrler8fbuNBbGtdq78uhaw/HH330yeODwzSKe73B+flZWRRRZFyZ97e2DEAUm77tE1HlCqictZbqLheZmXp49PCzAw19MgrRSfUJTIxoPMb8s4DJwKf3BrE7eu2YDAqUk8+SLhK+qbjxScmgWLDJ6JpZxVaONWMFSswvwxbDpbXWmNoBVGI0iPxBGJziQwH08jgnXZGyXByBLMJMNO6qAucIEYfDdDhMb93aBQCAbwNAnjsGZdkwOTufiv+QbdN8DB2fzcFShKvH14TO+Nx4zZ2H0hVyHdtwt1ig9gZkIiOlsTdVa1vBoBBRhK9DPOzFaV3tWH7VupSpATE/0FECn3srRwYvnRYxsoDP83w0GnGe26uJxQDXKtCNq8rJDdh/+vHHH//rf/u/FEWRpsloNIosArg4jtPY9pIE0BkgAEBDdiG0nYPwDDFdvgy/TFrjA5sYmwRJOxebCBqmjY9Q1qczaFgs8nYPfhcZY/U2FqlbVySAbE6VfRy8/8KoAA8hRAQgrUfLphX0pmre7SJqadLjTauygFi8l6vDsMt2HUmZyFZm8ptcJDO1Bu5lUW7xfFUBYzFvozg8PJzNZrzTUnayAACYxQjy6SHs50TEwWDAnGOtnc/nSZJsbW0hIrjliOiVMm9jkdgJYYwKcomM5pvod2xSPQCLy8ymtXT74I0qEjGt+QEACp+zQstgaMOpxUW1PE8P6iwdCAn3UvIClz4FUqDABpUBqKnDTeqEb1c7QVj8EAzE0Ow3KKIo4meGw+He3p4xhmW5nulSsVeL1NdMO5a+Y230+Ph4EXXkAIkVFptExloD6BAJCNDo8V6xU7nFpU5EAA7AKanM19glpz2jsMYNAI79YOxCJCLGRiL/xjVTwBCFtm+t7rW2qzkx5HkJ3VUNXx5RofFa39F7C6MkFo+i6KTWnxmhX635XNeIr1d/iwhRBKNRbzTqAewBAMB7zsF0ujBAM0zneX46OeGAp6IoptMpH4HIu8wR8ebNmzs7OxxYned5HMdJlAbdImhu/XYVvrMIbokiXDgVKuk9ItK7Orkc/qrX68lsl3QWelch+RjbxW9tS0Y66N50rgdaX1Dd8wl+/b66kOdIAnZBrVo/L06BNoP1k6tan2dpzSh8enrK57nIWDel1yuk6wTHwlUAEEXR2dnZgwcPkMCisdZEBiLkbJlokBZpttHxRHPS3R1CV2aRTB7/2T5IXYOHBOItdFUtUh2ATce+5AW/rtsNDoEQAYEMorE+j3unpGFOZSMNIXJL5T7P+eWsMD6VWrBQsOpka61Q23hxQqDaZxhba8nn3mRLCD+QprFkUwIFtQChdkyNPd+sbqOP8agqQKwBNBGUJRVVzsYNzigth+k9fvyYj8XL8/z4+Pj4+JinaBr3uAOTJOEj+BiIz87OOI5QDFMLILBLnyGjAaJBMDLoBEREjNVEVGJte3egTUMDlbQA0Ajbqi5AA2S1lUzmi5Y0LxORoSEk4MLa8Qr1Qkx50sYVSIreK2utZX9yVVV8sEvzh68cka8THDOJAffo6Ojhw4epjci4XhRHxlqDxlsLABJEYo8XASDaizit0a8r9b6DtUh4RaJusR4AIC/yU3S98okqL1JEOK3iIcerfSBAXpaTQXC1NOeoPoE3Ffp3ES0jQCppCOubi2A15R4ElQUf/WlJ4LeHxHHc6/UYtwFAtrrwk26RPASbyjITL7LZakG0/FMQnLez9/tpv59ubY28+3NBVVUdHR2xe3A6nU4mE56ZJ0enYpg+OTkR+xKLEBEkYpsGQ6a+qV0QQRYTepTZLhTcxHrkhjCD9LOUJvcl8gdqjmIUl2/wqXULPZorWGUtWgGjTT0dGrj8TNW4Cxll+5L2rzyzngLfkseRg2Kf0ciXTtcSjllVOTw8PDk56cc3AG1kMbJoDaI11hqiykdBMDdbAADOfdUdlq+HVuvIrfSStQz93mbdLlgZaaBRkfDBPJH081CfwAwr2iXN3+bzeV1bRDGyM8jyhlQ2cfR6vaoqeanIcCzA3ev1ZLeL0aduExiDYvBEXAAxa8dyU+5LR3jlemE4imN7794dqmcCybICHIoNmrVpNnScnp5yAjbOvyzbcHqDPiozOlvSrbWcnU6HEnIfJlGsO5OUpaL5CQAOFnxrGr5cEY21oazr3cGaRr/65diOwSNylxYc3L8EJqLXi3VLu6YAeS8LP8Z768/OzngN9EwT0Eumq1Wbi1NVVYeHh1VVkamMgQghMmCiRZSV0wZTYwkAwRKwrtG5aTXgDFyZV7dr+K1X8JoKEdR50TPTutPDeXbnxG+LU407H19AEiEu/vG139RPALW4ZmMi9PY4YXdpi1MHcywWAeUyblq2sbBNwPoE8zwfWBvNsrlsYOO4DiJi3dM2cndYa7dGY+lPVOpnkthgIpM/1TBIUgoAiJBlea+XiCrNF2kaI0Gajre3x/yYc1CWFVsb2fTM4RysPmdZNplOy7JYnCvo8/qz8UFs6HrD4Xw6C5RoWUBAGxiZyOei8nuFliNZR+dFq0HGcfkYKJbznbPEx+dCnUWFg0JaVEADndclyX8NdaG1Ao4jb+7nbpeULHxiw5XaoXfN4Jh9MsaY+Xx+cnISRZEBsuh3QKCJLaIFqgSLGY2sQ16tdMpisdnpwV4B3yv4SfvW5eGAC9VUWXObEDo0Bha7dMkREFHlqi7JQQSIhq3WAItrRAJwaoqKNZniOBH+1gF5cramwITcFyzWrioO7JNC+NSSLMusDW2jrL/M53OjcneIQWA6OZce067CLMskzMMr1MZazjVhpTPkQudE1bZp1rLFTm0tW1EsEQwGvVu39vh+USzStM6yLMsycR4yUhdFcXh4CPUTC1kwD3o9LWbEBWob6fy5Gy1FAZ6KIIc2rdl5NgyA27kwlRV8BRC8BFGdVoPmxcnUfRvPLFC6hR8W++FsNgMAHpevWKXnSNcGjrkTnU/FVFXVbDaL4ziCyFqMjDWAAI7IkKOqqiIL4JN1Lfx4K5NlBdJbZgKBA3QAfrfG4hoJOlLM0DLQDdAHulFroJvB9QPddIcsIp19EFtXw3Qbwc/zINBKvgVCzcF6ZS0Pkz8hyTkX1w+1kt6THxp/WD2/Mc8zEVfyIkTMskyMznyHQfbMn32HajOLqKUynYwk94iNuBNBaaOwsG+g7DMsispaK4fYliUvDoy1S5iWLoxjjOMBwEBmP1urs6zSoDybzXif4eKk8LI6ODjQhmYBa8nYp000iIh5GIAoQLbA33pMOgd+6QGCus9QvmL/6vNC5G7tGIPHgiexYWpY971U36eqebhJAt/M8+SDZDin9lXbM32d4o7LsoyiiBXkjz766D/8h/9QFIUB7Pf7g8FAH8ChcQHqnFoUhZ72On1E60t1RIH+bJ6GwM+vtgw2i+L4R80Wks8hUIj4eT5i2fqD48AHYHGgVbO9XexeVVXrw10MunqT68Xvd5XTVU+C2NQXpDy+rO1aFQLM1wRGMsYt1kwSk7fc1GdwEX0IZQnWrjoanLcmSkRHUVa+Pgs37DKXIwLA4kyWPM85N+nBwRFr05wAj2PGuX+kSuIw5GWfMabX6w2HQz5elvG31+uJ5Ue60SoK+MFaywctalwmv3LXXcr8Fi1O6qucSlVora2ycFuhnjjN4aal3XiJm7D+zguuDLfL+XRdemowA7MMFtBvsrSjWqJOXX8WiuPxmI9Auwp0VepxEdILrtlshoi9Xq/ML7oLVU9m4UVRH7q2UbQWcgkSz3jzs1V96CpHQib1zwPZcJEKB2ovdEwzXasLtnT18+veB2hvFOeIEckkltx5VughFntuoIcKsR6tzjxERl6xZmD9VOMoWtqsuWs5RK8oyiiKjIEoMlHUHw77u7vbZeneeefrfNQsa9CcPJoD79i8w8n+OcWSc06yLugNh3Ecc/p/a60c2MjcK8Yi8EsKFlRs3dbuO+koUKMsz7jF8WalLLn4h0ih9q2ZVtBW39csty7bPJN0Y4UZlsJA+TMXD2DtvlabyKfl5IGjjgMfXiZdJzgWtmAlkW+auguuOW8DdBOmCXZPdb1Uj3Tz5rqVDxoCSk3WrVtRHznKSFemVSVfXdWgDqtlADy/ebWulkTUPqasZspKiEGkKAoCIyZsgSfeIxtYXRmaZfeKbETk+6K9SqQEv91GoPeIAywgm6c0qPhoIiDCJEGAqN+PtrcH3JyyBOfce++9x+AbHArOmfDYNs0eJx7c/f19gWnWpjmX9GAwCIw88/kcvU3f+KhNibfj1ZjGMrlgaJbtLQvd1hvZTP2MO+4iUKdScTmBOBeYfr4UcG/QIs3JHE6lp5Ve3XIgDe9hAgj9wC+frhMcy1oM/JzMsqyXpKI1d6mHGmv0BV14T6SA5qW1Y9msLEXpaoBfvTbr31oZ58/xRH8KRvNXwYsC0h6Mi0yYdRu+rhbcKTagfTQDkaPs9aE5iIW3ZJSWcQ/sucaERlvjLdQ6L7OxFGjZoltJFAd4jFYYIc2HOAYAk6bDtk4AAMhzx0DMoMxJcDgOj80dnL9Uq73RMp30oqqcdYTjPbQCq0O7dEdpa4AYNKy1ebFIyUTeeSPoDF4f1z7e5lJv9fheggIGIHW6RzBPicgouJB+kB/y0oStoDyIr5auExxrnhBTqbaadYnir8IKrbh56dJa9dYmB694hVb9QPVAly1vrZrA+jB6kfK/CkkCzKC7GAUEGoQBirIEteJhLNbiStbX1jvyhG00MEnJtp5JrnKF6NTylfVxx2wIZoNGoEGHNuhiCdxQB/E0NWk63NkZAtzydYb5vGBbcJ7n5+fnp6enk8mkLMvT01O2hHDCAONdmvP5XCcYkV3sYuzSskf+ZO6SLSrWWqBSOE3Pr7wwspJAg0CEwIjcrt+syw/PXKs11eEmFssn1v2H4LcvkHdK+5tr1fH50zWDY77ggFD2bzA/QT0iAuqgpgdGb1fnb0Uv6Hpvc3QvQcLiAXPLAeZyn1aaDrSZWHA54E7d/K5pIO0Neqnr+a6A+eelNXc+v4AqYjWIiMDHuMByzwfH6iGozYfWLvZGOnIEFcexICIa5IM8AB0XyolPZRobMoaWKZnQZ+9kmMuz0tQP0+Jr8jut+WBjAbj+IMVlBMWy9R0HbS/Xy9yv/Lwx0O/HALH/+Q2ihVVkNpvzNhY+jYX3sDjnjo6O2BjC55ORN+zoaovdg20gxic2kopGkT++vBFgN5lMrE8EKPt6jDFVWTOjCXs8L/EspWmGDwwmWDdN6Dkln+gjjtl8X1UVZ5V5tXRt4Fh3JedXhHrUgRA21jJQl5mBSgUrMUV/9by0Y/2p2Ug/s+ItqGyCEvbU1ZzV00B6VXfOJVrUWvJaz3e+d4FKoXySOgfiDQnIOecInLdELa7RMCIbdKgSnMphWgTkiG9xWLZ/P1WOXFkVmCNi5cI892K/JiLeXsj6MivR59PaoS3SEDZeKc0Um25DcS5VFfDh4hJ+RwQsH8fj3njcu317l3/iHBSFK8uSjRu8HXwymbDdoyiK8/NzzXJSAdadGaT6/T7/mSRJARWqw2e1VYelHVuBxPKeuUJPE3nXuvvfVvP/Yuzqhm/NQsoIuUzBGOg66ANLvL0i3Fj08unawDGTLAlZsmVZlo6Sroel3zX/BZudmnufWumrQDBTV8qYdUnPf9Z6ZIka8Jk831qOwDd54mv7gqPiuxreZcRv1r+JwnLB/SCeKL7P2mtRFAIl3F6ewAwT8hM9w2XaywPOuSjuE6FbpP0kAJJA5rIs87zM85JhlyG4cpk2dzRxXMwdUj0511XQWTRlGRznlolJyWcr5X9pauI4GQ6X86KqYD7POT56Mpmw6ZlhmtPglWV5fHwsphvJZudjUlryR+/s7AjfSF8baxFLPcpNbeP5UsC9Ta7gw9KaeobcYYlSlmVVxRwB+Qrp2sAxz6LIH9BZVRVzRlVVfA6IBAAlScJudHHvMFRpXVKPItNSXfLEE4YD1AQsZBbJBNZqOLVp5fynGAcCBVlYBxq8y/c1+Drn2DMuFmQmXnBJUVIT9AmOnSQkQ9RFib6mMU7/XP6MouVZcPqTIz00/InCJe8V63bVffQGec9+UE+CmlVXOkdfo194cgnyrTZA9Xo9PS4isfShXDo+oZZDWb1U7hvvAOTOF9Zi7xAA8MYWNBVi6CHkt/BGRwBI01Q6kxNyGpWliGvV6/W8LmIBoCw5FBeIwFrQljaGZj6CVu70eslgkMidogDOpMMYXRTFo0ePzs/P+WQWcXCVZelcxaYMNkMnSTIajQaDAcDpcDj0CnVsTFSWrizzwWDAi1fJo9bUPzSAxh1WG57dMqAiPoPJKxNcG5c0X8WJZVuEhDPK2jqOY47y5oCWfr+/0Y4vQzK0iCiHLQXTbPlAQyoGyAgqCDcoX6OS/mqFobmLuraNrCaBKl1b/VuspxnU/cCfAoigpoFMkhXUVCi02JD3yvJCLPh6tqBPo9Usrfk63TNLiWjbf0XUPgQqU12Nqqq2HQCRrc9cTiiVqZbxrl4+GgkFA3AAi2jlsiwBanYzIiQyZZ6LXAxkFe/yAG+4YAEpDwsi85/D4dD6/Mug/I1s1NZqBxFZa7RtgHPgsaGD9es4hjhOR6MUYIcInINvfetbZ2dnx8fH8/mcbR1HR0cnJyfHx8dFUcznWZ4XXJ/T07M4jnd3d/lwjV6vNxpZOR00yzK22Djn+BgOUEfS6LGGOkavIN2rwTySDrF+M0jAgTZaLpH1AqipClRVpQ8VeyV0zeBYz1X+06j07aQMQ1AfRa27iRYmE4M6tFqZG8H9oPCLkLaK6M+LL9KhgeMaiwPJQUrZRx+N5PzeAa2j6dfxlJbu1Qir3xK0S+AD6qt+hg9Z5jO+dM1AKUe/0RhTdBwh2mVU6Vpt8lvRf8pDqJvv+w4Rbce4VAQaE6Ge8lH3vzYHgd8GKWzAscb8J4cJkd9YCPWM0jxSp6ennACPl0HseeO1oPxEzoKz6jCtALmosdmBMdpak6bbnAjYGMjz8vT09Ozs7LP7Xz59+vTg4OD8/DwvC8TSmMLafJ6X4+l8OByORiNC64AtGzFHYkjUCjQmDtT5v0uz0ROtCd9NhtTbuDRMs5Iuz+je0PzGFuQ07XCwviy6TnCseV3DKyhLaKAtNn8eRZGMkGwMXfFSDVvy3mbhz52Myqkmb5TKNNsoAkYelj+FoY06RlfLGN0W1mSbcKxT8EAdl6VK+k/BERkg9KFUre1l/MK6sQifX8ItjQ5aewpkdtCWJlWuQEQbLXcD8qLe2mVwm3OOgzUA2utPanlBKmKX1AZL6UBRGubzOcsz9AZx8Do1+NwgfJOlr/Un0kpMnvxctG9jFvKLPzlfByL0+1Gvt3fz5t7Wzs39/f379+8fHh6yM9CXEJWlOz+f5XlZFNV4nI3H49Fo1I8jIpJUBGxj4V4KmFna1dXVzQGCelou6Tf9sCYAKKtlvmkt5lGdfsndXhSFPhvhldB1gmMmPZeko1HlrNEDrEEH6osm+RQtkp+RefJ8AVfYSKPkiudbMQ46eBTqjCgqGPqIC7GoorKha0jS2Kpf8cxOkEVi8FJ5kbxXsOaFUtf0fuYqJFDiusrBZfo3ZpLFn4Kc/BQR4eI07vaAQrHFgxpT8jG/AaZwl/LOOtYh2DsSxzEnMpUywWvZ5HcVaruHvi+5QCWhR9AtxqAxMBwMb+zdAjKj4RafojKdTsuyHA7GC3t9BdPzeVVSWbiycHanj17REd+gxPYGPoYV4xhoV5pX9UhJH0rbSXkyiMhGKMsyWR3KYlFKdn57+ot2Za+m6wfH0Dao0q3CcFA3RMqfLKtB2ZLEWBHITHk+UCQvh9RNGcD3uxQxzYhNZGwiZjB7QSGjJBXUeG28q1NXD+qbsLVO0ZwDenrIA/Je57fbinbMd7rYHdusTERUdRwX0FUOUTvit9nuA8NXMMPbxyWKYm1+Qb8wp7p1SN4iwyusiF5pYNZCddJKAAe6H/TzACCbDJ3PQaH5mR1WesSN3x4iRiHWmmU/S6+3OKQqiiLe0cdtyTIEwH5/wMe/FEVJBGVZZlne7/f7/f5wOEySpCzL6XQ2m80NjQeDwXA41AzGrjauqojkLs6XbzUzy9Bo44PmeS3pA1YMJp0USD6OiDut1Xn7kulawjE0PD+a17WnDpUs1bNFjzHUzxPTv0VEdpo373/1+q8uRFde7kDd/tV8HhtwTN52rNurNyQEHSIxG+ANIPynfl7DlgizADuCGAlRTLraK1q8NIT/7PKudLnyunp1xUzDNutkZ1UXqaIXEt2YhXutqhx3IQDx+bbMocbErRUTvsLu1VhTyKEP+SCfJEBMFlQ3fbAPTZ5kkCWfegnVhkNxGKI3OovKDACV61VVVVVkbdzrDUajAtGWZXl4eIiYR1GSJL29vT0iOjs7423cwm9crMTMMeSB8qOsngLBnNW9oTUV8jlMsEH8bLBAEf4kFdZJysP/CulawrHSaGooEFxAx6Je2yhB6YBN/sD6yl3eaFbu4uuq81rPtzIrKqkTVAzq+CvfslnTqFA5bZRsKqRBaajkVuunPkMP6lis30vehdhlr8D6ghS96uc6nu+Cy9VLYGjYjkWx1QNE3fHXeSPQDeq4ydfadKZHrclIQlwTW8+9IGU65zgmjK23/JgcUK9FpvQheZ0aGvjFwkD3tpgv0C8Qe71ekiSz+Uy+HQ6HnDGjKIrRaMQ7sznb3NbW1nA4JKLD/U85MMM51+/39flbOjoTngXH1KGvaNsxqIWyGCv0TQCIk8XWO/Q6irbUX+SNL5OuDRyTX4UJV8nmVF5fsx9DW/e1CUlKMMztALDMKsDfOmCX+0LHAUQEdLJ4R2Xt4mWjLMfkW+Pz1YpRG+oOBKmVXIN3vIBKZSumLmmOoJVgHCsa3AliGQh6rKoqGyGAIyBAiGLtlqzQkA8Dcm4Bl1iVTldbShNwkbnEEMyp9QJ9h2srChooZGEdrVmOILjA9+LbroNZ3RLd9Ntdh7HCqDTkLIw8aBK3FRHkpBIicq49oiONVHZd4v19BEQR4sK+gQDWgBVWWRwZvuhVqQ9A4nfaRYhA5IrCACCzBwtLjyORtaVzrigAgM2xHGkcIRoqoPJ7xsuC3+8cFFlmrTUAiISIFitXzGbZeb8/dFVFVYUAhg36ZVVVFcVxmWGmcnRkriwzezSZ93o9H0tn4wQGw7iskMicn+dlWU4mJ19+eX8y2X7rrbfefvvWnduj2Wz25MmT89ksShLKczefczC1tTbm3NJluRAVZRn7FBrcqxJEaK0FIEcE/phzAkKzcKUiIm9rBwDeawlAssMbANnGZa0lx4e7somfTzFmV7NFg1VJiBaAyrKMLM6mWbw9aOe3l0LXBo5fNAnCyh0edWuX01irNtrlwjc1pEKbOhxossFX8jx/JS5swXH2hwQJNgPNqElcf1iijKyyDTW0A6jb4IL+0ZUR0BR3TdAbYtwUxVl0N13bQC3VaL5ae+qizgA4tS1I5n/w9pdJXfXUawto+PQuTsLMgZDm6DpS60J+C6eII79iEDuGsymzuvdAWFacoyjKsoxzZczn8+l02u/3t7e3b+z12Sp9enp6dHTU6/W2t7ebPgNcnsdY2zXX1diuYRKxvVbnXFm6lnB8uYnK1DWuUqYw5QKzXItZgxrnisvNYMOFLlyjUvCp0acVWzX+6glGyhXZ1V6tn2pobn24a7Hv9cqaUQLquw11o0Rj1TNNnoR60It0ppSjPbSt9emidSMrumhdBuuuZ3s5XfUMxuvSfK73jOi6sZkCGkOjlVNJjmyMoagiIjkp0VqLuNjeNhqNEDHLsizLnj49TNMEEcejb/X78WAQ9/t9yQ83nU7H47HwD6pgfxHPWh0xHQlYAr7VzwSYcE0B+trAcVOdBB6P59TvOueDWAkQ0ZqlNtp0bQVMg365LUYMqCNv0JAVcKNzL4h9lj3mQQ+snrc6k5yWChpG603oDAgjv78O/JwxxpRqmwYpA2Vgq9GaF9SjuYMAj0BRWgFba93XiUmZRKa2Pv+iqatdejO6MNsKcdtFYtSS8ZKeaYId+bjyZrDN2eycqHJusEBnIqLSOULEtBejGTCjzufz/f39PM/jqHz//ff7/WgwiL/+9XfPzs4PDg7KsuSEn2z+lv4nWlhyqL5gQpXpEDq0h0BodcH39ULlawPHTAHAEVGXaXF1CU3qYnerTuLS2rHwkzZcipNQlxnI7WZ9mjxH3vGl0V9cYQGmrKj8M0n/kFYaK0Bp4qBwUxahgXbc2kBYE0Yv0a7uALi1XalrPb9u+V1iQEJiQflFAaArt8Nq0rzHFxJfLFFx+mE5cJLUqqssy9nsPIqiOE69LK/i2B/7ABUaAoD5fP706dPPPoPRaPTmm2/2etZa2Noa5nkex/HZ2VlRFBzpLJo7IlblIuVQy9QGgJX8E0Cw1pDk+nppydcPjlvn/FcnXqBplMGleWvBEK3asQy/1ua0eig1Dy7k56RMuvIWWTCKHqc1F1B7OlarTs3UP0wyHwI1v6sk8tsHgukaKiO+A5vZgkTrCSabaOuti+uupq0F6+BhLpBk2L06ee4MFtAK+JYxkjoE/axpxXjpcZdR0BpDsNKSngHVfN5WxymBnHNElbUxsCsYiePnwJ/NXFXF8fHxhx9+2Ov13njjNgAYAzdv7h4fR5yZiIcgTVNe6gGAq/KAP3WroYHCVF+YKr6tcXLA1deFrhMc6/lz6e5eMY31XAWPd0XevsgVpmmuyvmxroicJjjqr4Rk2wIpFUnjSKCJd0/XTuODbqy819pO23FgK2fnWOuRrKDgIPhWVsrSIvCZ0pw6wxguC4hd2v2L3m3VzYrtRomuepYlVFVRVZXf3MydgF3ldJHuXib0e4ICRQG9HUxzGnj+TyIsgZCMc4uwYYzJWltmziD24iiNbC9O0ig+Pz+fz+dZlj1+/Hg8HqdpOh6P09QYA/1+/9atW2dnZ5PJhAOf9VHfwu2amQMxH3wbXKy6udGOXxwJ2D33kiUSHurDL8aKQKviyIHAtcVPGrWppFXCQ4N7mnCMKj5UYjZs/Qxz6QfstrF2ZcAKQtOkDivignU6C2mgTlIDav5rYG2qaVrT13IlADW6lM20qx9axeqrsh131ZMzYEg/6+VR6/Nd3ROs5KQbZdUFvnv5T05OJMlC1abqxRHdbnHudQFAAAkLDANRVVVVVRBV1mIc28q5oig+/fTTKIq+//3vA5g8p34/6ve3EJHxOs9zosWRg0alBhQeCHiylZpM9RrQdYJjmflaPZQN+6J2NUOaND5iPW5fLiTW1YTh/Yt1dJqmiFgUBT+pD3lif7SuDDXyM5A6bxTU+bscuGbUnjTjdxVLq2Xq6geYp1HttmjtNJ5OMqWl61orCSrFEhsZ5ZqDiKGh/4p8gjoiN+FDi7qmJUeyTUp4lvNp9SXjgZZ//Dy/mi2eTXtO8AppuDYo6fksv0W/mZ6RCHxmJTEf6Z+Q2qMRiFUAMKbFSMLtlThZBkFuFCeo5MK1KGWPGXmTEXjgNibcNkJKjQDvXka/CiEqRQ6JnVrCLTSzMfE2oiiyPNTO8YrNGYNERFihIWOXKaKyvGTJ/fnnn0dR9Gu/9v0kwSxzaWqGw+HOzs6TJ0/Oz885M2dRFEm8mG56BnH6iNZxFM7RMga8RiIj2DzzTIOAlCMblPjhdY8see50neC4lZzKKK9HSO/S0dMjTsIcj4pTF0ih1YeirHR+8cBWq7VFWCnMhS7yzOrHmrqAVKPt4Yu8rVaUbotcd2mRXVpw13Ra12gg1ZAGNlsqmiB0K0oX7HYhtpmKqJazqDnkli3yLJtRHc/cVo3FThNcJh4CIldVi9PFnCsBiDdrADgxcQkv86e1LPhLDi80xiCStQuJgsoUjirvitaRRXzq6jUnTkAGCcEBGeDNKYYMEu/BQENIhICRsRQ5SOM4Mnkxn8/nXObx8fHjx/s3b95MU1NVkCRma2trOp3yIdkAIDJJ2Ezv0V9rHFvrf+205msPx8JzmqX0tUZkUNsl5cngIvhVmqY86/i+pJGdz+c6zADVwvBFt7d5h7o39Tpq313WVU+nlAVQaLsCjgUCNF28/qvrox/Qz8i2FEH/FZhyCeLFB/iIMT7ic7VU0FVtBT4BHda+df4arcDK8/pTv073sFwHn6w6iJJBKm1IMFNWLK1gyQAMmsSuCIIKzTJ0wZjFUXtENM+zLMtY4z49Pb1//z4RvfXWHSJAhH4/Ho1GnEl5Op0OBgNnFp2sK3kJ/lktjFuf18MEz4qAejn0OsAxqEGSDg20MzUZluqtHgmNraD31EItTy6ouRFIgtVwHIiH4GZXu7qoKTw6baAdxXRrkYudLHK4Dqgtdq31bA7BJdr1zPKhLvZ0V7cCzVckPttQo5vIJ/L7v43Px1YUBcftNvmwVfaD3wqPPsAWfSKUVhaiet4PWWgHwbm6AoFcVD0TdlEwFwIyBqQYLoP/NMaw7PaPIQACwGg0EmtenueHh4dxHG9vb4/HPQBwDthkMZvNONlQmixCmIzKAGfWzwnTbNFqCvgw0OdeFV17OF6XNINqeBXNRR5jYo4Xey4qG+VqMR5QUD6sI8mbRWnFkElsuwGte1q5MOUK7UxTsJ1E4ueeV2rjVpS/eLdfmuQMQHGsuXoOMBEM/GdzW83laIVQ15DxTGWw6br0sRPLF8GzsFi9mh+WdOE+cTsfuE3LYw3SNB2NRnLU3nw+Pzo6evTo0Xj8NX71YJDs7OwcHR1NJhPnnMFFfmTJjn+R+qysKoLmlg5OEen1yiFY07WH40CsyfQwHS47OXuN6ln7WiMoiMhVy/274DXiIDWqxL2tGFpUOjVcYBqs0BaxnpTuclK9C9G0GiiPme5MbNpKoC+eu+1YD0Ewi8RgsqJd69J0OkUV1MgONCJiV1tgO5YkUNhY/4rY1gxAyiIkWmHQY0Eb+Y065JHTSmgO159aVNQ5pDYd4AJuDyX7uYY8HRx/Q0SAzpdrACBJEra2s2NwNpsdHx9PJlm/n/Lg9/v9wWBgjMnzPMsM+cRYeKlciV0V9u3qfCzQjS43j54vvQ5wrKPN+GZzcqoZAvKM5mDbdowbEbEeDMpYyYtTtiQGqspqM9zzam8Ax3y/yyncZTvuhmMbRDhAfVttsz66TGqY5FY8vxYpUACoi09QxqXLFd4kzULUsAUF7xIwlUrq2jYrRnUtm6Ud+iAZ3V6oS26j8tKtBi8trevVWMbYQH36tPcDVAYjHR2M6IyJvApigp4pi2XwDwBUVcVJkJ88efLmm29yGHUcmxs3bpydne3v72dZxqHQLORauytoV9dX+pnl3OxqV2MTwwULf6F07eG4GXjEnzodtY5xYXhqKhSioWiQJaIkSbVuqIPGxP0itsvVsNX8qvWmfNXV5FZJ3qlTrMlgAY/qSdv6fFMpk5Cp9V7cQa0TRs8lqG9QfF6IHKChBGOxGGDDutiOV9jW0RCR43PzlDpJNrJVVdEi0M0RVERgEcW4hD4BLH9WFZ8+ZxDltC1XuYpcje3lU3KecGnC3sbUdmmK8OjsN0donUFLPqk+Ilo0ZVUCgjFk0Oq2z11prY3jmANDeSaWZXl0dHTr1q0kSTno7ebN7ePjnf39fY5pi+OYI+rI07rivPUniNgNyBct+WXSdYJjYSOZA+JvQR/co3FKhlYH/CJwFh6Mohi9iZPjao2xPBkWChEimkX6dl0g+qWrZJg0PpUE1Q0goiJxCL2GUeeJeZeDT0mlMxZtK/jkwmX+a5zS4c/obdw2Cu0GrOZ0wasIHp2tmNMOBLoe+VWFOKD0e9c1VmRZJt0l4b0aJnSvSnA0KM10NQXSRX7b9bweBe4NqZIOWUWfWJ0jJSSoXPokjdIin+tcEGVR9Ho9VzlXATBIgzVcIzKkTlGBxWCxzToCgqok9kWrypN2CXIFxOGB9RMLud84TCKOrW8FAIBzlVgMtGCL7AARgRCIDBoCAoKqImNYk11GZHNwxZaBPM/BwNawz5s+TBKfnZzE1h4dHibJ3TQ1REAEe3t7W1tbx4dnBZA1VZEf37lzezga7O/v9/upMTqO2AAZsd0Hq2ERiosZAUhuYe1GBLQSOQgExD9DRDDoiNAaMFiRIwQbRzZ+NXuChK4THHdRq7aoJ56e2Fr5ZZRkzpPZpeWzHnX9W+0FdvV0E5yKUBhasCkITZWJHcBE8MZWma/rIw/Ialeq5IFjPe27LGt5DMQ114S8JsBpxGwtHLoRsOkiC+TNS6ZAR2vyj9Yr0afPR3XAB/9QYJrFm2xvW6HlQf0MkUD+XZBYfkhN+KVcGUExUIgmfzK74jKDYJfWGbIrb+pjcwQqIn9O82w2m06nUTRixd9am6apcydVVeW5tRZns1l/kPZ6vVamxRUq/OtC1x6OA14RRmkGI5PfjCQcL4yur/UEgLY5IPpRK1uvqGcwt9GvgkGZO3QFdM1RWQBbyyevtlP9xFyCrtwI7TZlgPYmaG1dWgHKlReIsXVnju5GUMj+onNNdJEAoq6Yq+dlhjowaSebcAJ7tDSa80rIWtvsTKj3gFwEiKz5p1kCeP7XvxKlQdcNFMcGP1dzJ7RpSLcE0lfmF/g5IquloiiyLDs9Pe0N+kmS9nqxMYsYDID9LMuMBWvx7Oxsa3vU7/dns/N6e1va+FrStYdjCLmnhbFA8bTOYoVq/6guR0O5bM3SJWuriPAfX/P2AWrLkAltrsWArdGvLjWi6WmgJ2SzK/T0WPzZwcBdcBmpfd6gTNJ6NgZCTrpdYmNXTJsV4kT/2YSnl0wiX6UmTu111uMFHmR1V4hOqoUW1LPy6xfJte5bpoBz5GZXCXwhbjFtrNC+jeBXTh2iKPBdVRXiUvzoBjKjyh56Oeq0LHPwk4KXBaWryrIsiuL8/Pz09HQ4HCVJbAwkiR2NRiycsiyLYzuZTObz+Xg8LstSjGMrOuH1o2sPx61SHdRUERKU1F/p2dVFAQYFcyaogE73Dsr1J2IgUHP03IZG4jf97epKSv4BVMp7tTgrr4U6t+d3v0Qr6aBmSHD/cnNGdkME9NXDnl4OiZEKPLoJvzkVsCyZp7Q5AlRnyv40KTnA8eB+swSoL+ACIdEVn75Cgsq3q58JKmP8sXuuJHLEmDudTmezWb/fj6KFgswev7IskyTK8/z8/Hw0GjkV17+Ya/TsSr4GdO3hGNpsxwF6Ql1rQG9s5TvK6RzaClDFEgXsXtWPCpXr1ogoDVVaF9afok9R3TQRIGAgSIJyAoV6Rad1feuqdtuxDh5oCowANFe48rpmVNBGoa56vuiZGbxdr06ao6nFvMZiUPGCcg50kAMvANMmyOqWUt2cHTwJdf4U27E4M8RB0vwVi2en4ovMIsdQiz0QvaYsp3uIG4afFeaJosgBuQpYlWZE7vV6cbzN+fSTJDHGlFWZJIlz1XQ61c5z/dLLj+X1oWsPx10orINm9FQPYFcvKlsxPYhdE5Tp4g/JvBXMTDFKaJySCd90gutVrZ542tinZ3WgF+vJ1kpdtmOD7SwR2Ha1+CEVB6KN163ldFVJ23w03nXV/0WT9jGAwhfpW2oQ1IWTePytOuADve24tY1SsmvEBevy9dBr9ob6AMm3AsfSNFDRF6DSGeq2+ItQ5Ovyg/EyxhAtvZQMx4RQwgKsi6KYTqd8JohzaZ7nXIhzLk1T5xapmjhRTDD6wbteS7r2cAwdKykBKT1VEFHUE4k8A8/0gnT8EwFojYx1zmtx5TWd5s0JrGsIdSniOlLhNNWioNXOp0wkld9ghSuvCxZth+3YNFIFNRuobeXrTptgVfFMsfeiSfMP39FBYFBfIpA6kUC3nZMI8y41wWiOsuhql47JAS+YWx9e3TM8XjpfttiOWx3RPC8C87FzLoqSrhdpUWR8oNt8PtU1tNY6IHLI8Oqc410hWZaJ5YRLiOOYyM6zqXOu10vkq18SvZjp+sExqrBfPVSCofwM7x9thTxQaqaYLHRwMSjw1dOSeY7xLsgM2/y5/MnvJR+ZG2z/Ey2VpwFPXYlyhQb4iqIkZkopSua8VqkcOZmZiMinMFDbNrOgPq1Cpam1ofdi6W9b0Zkf5q4zfpcXeZ+nFpzgYYvFZysbPN9tJk3i7hKE1cEq/IA2vuvK6PtExKG+urfLsmTudT6hs7wCPGcKxslubL0lGhHZOaZfrZc72rKk9QzwZ+4RUbDnIkmSQA/gP8vSCeewIJEh0+NY+QOcYDF3QLOK8BsXwvXnHJtWHbE6Ho/R0Gw26/fTrvHSXa3ln3SOzNnFi1zt+AVo6DHg0zklSfKKjiJY0vWD44C6OjqAReieeEzCSdBQV4MnNeJcnJ6XuqfXlboanFFM319ceCUG1JwPDCa6/CYK6/uyJpDHgkiVphzCRqSKPo6aS2AVEpRMFTXtRQe6mY4pGOToCKDq4hR0l0ZJ/YB+hZZeGl8qT4ykopRcrkoBdflO9AWoyRXMC21rQkSipdnd+Y0qAMDmYz5hj0Ownd/dypAqtr6gu9YlrQBBfbLw56sKoFxN1x6OoQORtckPlRGta4ADHqWGUyV4Zl2Pf6WO8mwiV7MCXaRXmoE6Gdzna0mZJNXW3+qaCODqEoK6Yd08HXRpIMZEOxZDBytZEgEicamMMkH3rkbAryjVLk5aul+Cmmgb9LM8KQCt4wW1H0JjInoFcF0+1AOKyjMhgwINd6UME3h5LPs/m/wjDdJQLq/gNG95ns/nc461cM5JLrc4jjkhfRB2crl+5pvGByBSnTZw/EJoBbwK3+th6Hpe9D4NQ1BHeY1i685PjS8avzTfa7xe3V6s+3agLTTKQ+GiKG0U1g2EQEJQixAS2NUV0/0Z3NcXAfqLiQPVpsRmf0qB60ZorEsrymdqyq2vQnqIW+WiZlSBY1GH2VamPQTrVqDZz80G1mF0idegDkhrwqU3trALEcX2okl+KOk3OeaE2xVFUZIkfJiI9mYjLgLdVrQ3mLByU97bitdXja49HFNdzpNSIi5RTvOTKWC+5zicwuuoVJUV5QcZx5tVqmErAE/w5lSXhzU+ImJXz8ljEosS2KCDWQeK7wXyWD9CHz4ohkhsGCWkkM5MdS8+HlnP20twlBQi102OujjxPgvZ069DNVqf76qwxkRdEy0PZDVjjOFMx83KG7VBRqpERMaErGiAjKnF+zu/f0QgXvINSRwq1oOa8FkR6MLkQeuqjsDNFUW9QnpN4Jgaaq/AxAWNtvrMLj0PxcgQiPd1KXDNSeW1Vi73V0gUKUTLIWgzhoBnYpla0opWxvXVWF7rNwZqUbDWDi6alZc7Yvok5frj2K+gMqvh5nlRl+1YA0FdW1y7fN0bTXYNQE3u6GvnHGfLYg+eBqx16yPvCiqguULfbw40Kkdx0LSqqqIoNsZwTuQFviM4u9ymxK4C9kwKRqdpaoxhUc0COKzJhaWhtILr5urc3mT7K0XXHo617VKrxtrTKkwTzA1NzekBdeMa+AljVm4C7iKdIkdK0w9o1XiFLha4gJpqcgCIBDUPvvZ3Nx8GADmMCup9EvRkUELr8zpgFvxkkNxmov4I3MszpM7c7IqPfgmH/kplVo/IamoawYSLoM5sgd7g/K5l8qELoA7Y5rqZ7nzHz9SOA6msbce6TFHJ5StUodOk9r+0ige5LyzkFEk/JEnCYRtxYpuZxC9C0q5AqNvI6j9lNC8tyV4oXXs4XgGvmvuXsrrj+cADK9AjP2+Wv1Z99PC3QhhcDJFbN1uT31UlHL+svIdjMTIEvBjguG07OhO8f6kZ6EZ1k7fIKu3q0dc8vQNXnlMJSPl1zu/y4sCsF0ddcNY6XS+By8J1Abn6ziPNqHqk5FsJvONQxUBR+Cqk0T+oCaooRqkV/0Qs11g3XGiTsZQsQ2wiKxGiOk80a8plWUaxEcF86QbqYWq6uMUn+VU67QXRdYJj3bMSCBXYNOUBHmzwapS+biVO6csxWOz95zwmOjGmtm9eLsBI5ptRm/SErTU8oV8qyoQMkDSAS4Y5SXorvyoKimxkjCGHiGgQOWUtNHIL8d9oBG7qPh9D5BygMwbF6V85l8Q9vccBPJLK9lmJIGaSQz9F/iFikiRsR9Zgpx/QncD90AXTXRN43eknNm55u0gIqC97saFRatK5OHS+KrY5aEQzfhcfPyCrGb7mTc8SNQw+Ync+n4NiBqmPDivWXwV8q2ErEBL8ZxxDHNuqqpyTrACY5xVPPgDg1gOgtWhtVBRVVZE4AKuqclUF5OI4RnCxQUNVlVcRplEcA1IVV2kfrHU2snGycFEC9KIomk6ndnG+X2UtEFQ2suRWqVPNgXBlPWARAHmfIYFB45yLrC0qhwRpnCA1p8VLpesEx2uR1iygbWUdECq1VP/keZGUpmdys3qXfrVIqWAGss9aZpqAY5c4WVf7C3ZPCbIIDDXVQO0x529XeGkCF58Onmt9/nm5+ASS+E/dQP0MtDnHNAWLD6HAWEEqGEv0Yg2L7OMitSTSG1X02/W3siqSYoUf5E4gEvQASZpmUJv6RBjo5jQ9NMGF1k/rxpbQQ+hU3HHruHR9tS7pzny+JV+aXls4Xpe0qiJ3Vj+/bvlyIbMIGrZv/fAz4UAT1W3cfBFgFirqqudqOA5egYh8tGvgJxQ4Djge6rZU/ZOuKmHDbL26/s+LpJ7aoxj0Z9Cu1nIYFpvj2LQXyediXa/yBVdVpXOhaMEWlBOgv/6TieG1qRyI+UhsC6x9825mUd7JL1ACy4a8jk8Jab5CjBhQj9IxsHTGYD1Bxwsl3XWrOfBl0msLx3RZ7VhG5UVYlzQgCgejyrwDDbjRdV4No3pqkY/eD7QkUPppVzmr66+fQUSxXWi1DtRmXGgD5UCtW9Eu53OMyTjq6f3iSPck39GGiybqdfVbcyj5Ux92BfUuFYDTr2OLEPnNeNq2IBVAtbYLYpOFB2T3qRbMWNe7UZmDxdCkm9lETKx7EZqaTSCQmBsDOJaKPXOefnUKRnADx1eLND/JTHgJbLEudb33JSgUXe+lusuFu04sv1p1IhVRIKi6uqubSPfMoXkltK54aOK4aI7GB3QHamnQkxoZNd+ufm9w5qHIGxafgZvLLRKtLQMhpJyuwNAV3SDF6gskp4+/00LihdIGjl8qUd0XLNddnS5sjd6u+nzheIWeCPUVsVQ+UFhWvzTQkuRP7wxZhC7IDO8KIOt6hVO78rQWX1WlUwdJ2MbJkrr5gUamaXVXB9rTS4DjQMxgXX+UZ4Jvm2Tqnn35YYBu+trU99cEvQpeWQbF5PKkVEbOTpSx0EYGeV5qLkZb3cPaKAH1QXT1jUuw5JyagJEfovKESwncUsmrFXBvKz0v0NQzTivsr5ZeWzhelxpc9Zz130C7kZt6Juv5JsAn3+rFciuJZ0bPKE2gZkgXdZVP9RWDfguobMt69kJdluh+0B0SdELXe3Xbn6OY7CId3CJvDFRg/a6u92qI5DvcIu1KDfpHv9TVc1agMkdgY9+aFGJUkpCAn7Uo1SQjKC3FemrmQB5oaQG1YQ0lFpM+oy+QbUady66b/0KpyaLPd75fjl5bOKYO2/GKaaMl83MfngATZV5pb7WpZ9Rdi/Rk0/qpPlEYvd4Ez4KPi5O4mHSjnD/8oinbOAMvXDiyQiv1fEfe1VWf1vvrdmkTg4I4hIBhuij4Vqqhd1Hqx/ToiwYKALyTTYfKMcDleQ71fuZr2QYlvR3gKSh7Bd/kVD4c4ikAmud505UHq1JNhRJCCw890NKfXLj29a3o0hXqQvcgXBu6TnAs3K/tklq863kuGXP0/o4VaZzYlcxoZXwq5BVI0TXtVwSQ6ZrLAj/LMqhLi9UznJPnBpMBEYuikOlEPmFVVVVi+wM1JaSxXKaepTpiSfxF/DwokFLPL9ol8kA73wL8kqHRqIFeCdWwDn66Sj9LUcGfwWeXkSfoW6nbCkWM1JJf+lxQg7wWyReSILTrM7hI01SPu3QaKPOx5EQ2xvAmaf0TTjHczPWheyngpQCzAkkgaBuEV/MdYQmJ9yjLUo6A4hKstZw8SErweYQXe3+sXWy6k4uKHBfFbTR+E6Bzjo8fFH7TieWa1JRtWhg0KYqioig4yzMfQZLneRQlXczwcug6wXEraXMY1td0z6X8LmRc13XDQKkteqRsc8JAGhmpbpiT+S/PCxYQ1aKFoGMtpvE3mNvL+2u1quGjh+4e0z9p1nDd9enqcdGFY93E2fp8k9I01dCmJZ9uwjMbqyssfU5EvA2k2XUBmAaFSB308D0XQr8sExFl2rJttAb/aNLbZ3SxWvAwiJO32AYencvNXD3QtNL81fwhvDrPfEDXHo6pHn3JjGK6c1M8x/eu9bxWS1mh4E10ARzzw+hX8dCwXfKEkWWsVMPUAzadTzMfdIiYCJ3KRyyT3Bizbrc1YXTFXNVtDJTHpi4T9EnrW4KJp7UnKVDUtODh1SOoM/WAVwxBwX0Xhq4m3XxUm/GkPrKtptkDpEzJqzvnEoTqNF6t8Ab6gfTn6s3rQQ2l50UdkVagWTK5vGVdXQe6R/MirIh1a9grpNcBjkFND1E31h3RFdN+rftdbCHTTzNowAFaexKdUV4UOL6hzuvBEiFQD1Fp0wJk8rC2b6xLTUHS2j+62oHK2bwOmrbivfpPje9aJGgOCXCflDEkIC3YtBVFbOIBIq/qo0adg5931TwYZRkpLcLXpa5fNT0KwifSdg3HXcQ2a1m3McxZa+UIGEF8tq0VVambDM8SkytIS+UVnNP6qw0cX29aF45ZLZVEBMyCzKYXLEHeq23HrrGpL9AKuyiYWheZaV31CercFBVyf4Uiqaf9RWAu+Kr5IlFmW5tGilrLd/VdW05tuFhRjdZ2tT5GXlWUVG38ll6vp2FFj2ZrJ18avAJy/uhbET9ySIcm+XZ1aYFuBN5YJxpJQLq9lxMz61LQmTrw4xXStYfjYAj1rH5e5a91f3VRenZhh7Ob/wyMD80WNVUArV6JzJdiqaGOQWu+zfW7rQlqgRqo7wTTQGNcE25gpXBq/qpZ8jMBq8v1KqfTogrWtvVDoNfSwqCxOoa60NKiKByUOmM02ebitFrCGXV0juYNrC+5Viw92SkngdIC32yLBxU+xJ5AMDUOkd6+hL1C6wEXGRTdvVdDOX4t4FhbAISTXrSMXXcaiD6rKxyoYDItoTtngoRnakIVgaSD7Y3KGyclUJvpeVmfSx0hJkVpHIS6FJFZ3TptmtNPqtT1xtZP5zcXaDnU5Afde63lMxZLvIf2mgaNCuTNatKgozUJUnbhpliSqhqVxXBF5S9BOh22vFSno5MnL/hSVNRskfMHgkRJ3PzJJeA4YLy1pr/v0rVe+ELo2sOxsLWegbC+p76LybrG9RKRFeK745S1zqeG0fOc6iZOvTAUtQIUT8tvTX1HgICvrNZBadzBtK+rWutxZRPXgrnXRCtqi+9uusgu8mpoKI/SP3JfB+o1qYtP5vM5H2ysyzRqN+PlgFgumvHUEmygf4INm7hoxxcxGqyoRkDCkHp0WNXVcBz0dpMkaijILCqRJFr/gIaRCi/rVWtisQiV1T9UasS673z+dG3gWAvtoiiae0AFcUSpaS8H2henjtrPcKrcMuJSzJHOOUGtQCzLpuRAYSyKDABsZIxBQEdAjipAZyPkZxEAAAEYLoGoAgRjQeGjI4A4YVhxALVvnatsxGU4QJTrssqNMVHMSnFJjvhPVEGmVeW8ayUiIt5ZwCGZLEK0wJOZwx1CrhbeILM3yzLyR5/JYDm/PSSYiuDjvoEz5KrrrpkZyBIZNZZ2XG2OBeYNFAHoy8+7YLrf7/NAIyK3wjmX57lkLPPVAC5JElEGxIBu7aIERMMCuNdbWGkBltout50zBDkV2MtHGckzeZ4TEd8UxAxGp7Uy0DiiW4wJnMtC4JKUth70Nq8beHsRj6YcfQ0AUbSAdXHZ8XysqhIXMRUVkTHGxnFkjAGMi6JwFSRxAmSKvDLGVCUVOW+TQUSDuBxlPU/10OsMgpoCgJaGS5J7ZdCDV47I1waOJTBLB3tVVWUx3DqsJ9vFSaZl8Nuuopqnh/B9gTmthApaiZAg5RXRwB1omhenYAZSY9kbkK6wtvZw5nj+LWuCgYotWgwstPKF+JFGBcAnM8GoiL3mZzC7ApBdqx+kaVJycH2RyARqM7Wv+EnXV8KrqCLJ5GbwFucc0QLagl41fieFiD2ob3EM4LhLzAhKSg/zk81VFDbsIbpjg169oCq6Vte9/EJeOV0bOBYK4EBgWrutVtiOu+4HGcg0UqxF1CB+o95VpSFDTJOggMPVU71cnAKx1JwnzX4T77nc54PL8jxn1aw58TSCGLvodtmIpfGiKSb1bwM4bjZhtaJ3kR6ARodfkEglPtUw11XOBeFYd2bQA/7JyjW2RTB7sLKMiM0Em7oawRi11lO3SMSnBl+Rnc2Ty/m6a1enPNAc6BWkR/9ywLqi/y9R2quiawPHIu15WS3H1bTKZ1rHBNkkDaZdsKgPDNdsjfWtQeAZRXI7yJ1gtkvJX90mSEp5CcBUHtBRR7oCoivpb+Uz+Ikm3Xbw8afGbzcXRU/byvWnHl9pyOVsiNIWLeR0P+geXhF3rJmKlv7Vzvd2VUnepd+ODS2+We1g1ULKmCAvlR3nWmys6Dc+eEwrASI40S/snErkpnlGXir1Fz6BBhZrllvNzzpQZAPH14/EjEvr23tWazFMgaawbvlaTxf20kd/Co86lSMGGvP2cu0K5nYXydTVkxkA2BzJuMmHB4oKFkgdLkdHeoBa5wY4Ts8ynjwvMurkY8GmFX7XdavU9fwKbVT3iYabwKnlO60GTNLbQa4S53NZaLVgdU1WkxjrBZEBoCxLFleaQ1b3mEbt5s1W0vJDQ/MvIV0bOA6Ercj2KK7ZcPnhS4yojlK4yPNdtmN94KY8HChZckfc0OvWtklaH9EN0RNJazHNEmRK6IReTQimutZPrlaaPM+FyJ+8phEZwA9TfRmhlTW5vgT8aTWzJrnbbMddSB0MmQiY1odhJdvoQRdpLS61QHIHkE31hY6sNgSRXdsJ0CtATbscg6gJ6TRQo9AcXL5mMaD7FuqDcvE5qIvFlar9CrpeWnAXXRs41qRjfYTzRPFcePzXnMYyLZ858VYT1UnXuZXntNoY4N26hG2KtsCxYKjWi/V9pvl8TkRaowyswBqeEJGg5n6UwjU66EFZEdCmu6vZkGZjn3lf92oXdZWvpYL0VYcgW0X8m8DCAHWhqEGffMJJqhsoUOV8AK8g68gTGU15YEV7NTeSN/0bn0dFhBb6w70CIaE5BxrM1tXMLgpKvkivdrXrutO1gWM9ThKiD/VRp/rq+9Llg1IVV+zakh9qZnVq1wAp7c95Ah/9I0xPDVX6EryFbQaBFeW0wqsxJsuyXq/HpnkOi+YAtaaZeyFU0AhMCNpKu7T1MwgkkLcH87b5uS7pMqWl+o6rR3N39Y9UWMMxdMRlr4A/8ppsAGEyXs5noggwWsy4qEwugs5VVZVlORgMWk38XXwbaMRBeI9+I79Ixwtj3Zwd8LxUAxR3ffWZeEFaV2xfTbo2cMwkET8SFcApX/WWc+Hv1hKIag9gx8pOfq4DhgKsCR4mb3sVBRC8s4XZGpTVW6/1oLHKEyzTWpLxxH+ya1sMC9DQWcCDrGR1kfksWYZ10/jbwWDAv5IAYQmZkLbLu5xzQLXTHEQF1ttkBdqMz4qgZQC/GuuxWXpvYcc41rQwDXMceKBHVit6RmWzk7w2raQNtdAA90DMdME6b/8RlxcLOb1XQoolH8bAz4BnHmgLFgavlOhCAmG54lM/FoR4coJsthrHcZxlGacG5r1LeZ4nSSLHY+txBB88znJCax7MDFRPYucFEpRlGccxG6l1E6RbRHQJR9U48FIWZ0nnn+d5FEWDweAq4PY1g2Mm0VZQHSOG9X1Kl7NAvTjS+oK+udrLFHCnvqNngtZBmnKilXQifFIUWAPXVW30q11jK7ZgBykjiZ5jF6dgN6O0QizUUBeTktRRI7UgYJOkHxRwsEu2JXnImn2zrL+ISUGWOG6PF153ILqA+OK/Yur3+xpP9bKvtQRWOzTKcwM53T405OiGNF0zONZz2F02OBc6wHH1kwF1TQ+tMug7okEEn8+EgwAZA9gyPlO41uD05woKsB66w4wuMXOagM4XoqLKTUZG3gp4ccrzHBWJzq6jYgK8DsQDqqTSXfVv7c8VYHRx0pn86k1of/4ScrEVi7vK0SqOfj7Pc17QgAdZVu1XG0OkBD0Ezbq9QtLV62L7l0/XDI6ZeL0jhgtoLCGx22LVOgAreH3dcZLyNSgHAA0XkAdBE1qnUwDxzWqsIJ17QQjUkZ1ai7kEFogQampDYoSRWWrVEXAXpODQJu2JbU5+qtuvSGnuXbvXgu0PsOyQpaEWvgKs6LPyNDcStcPcuqT7X1d4BRyDUnSkPk5FSaM6p6oLjsUYJeY4VCelBW985SDYVJ5eLV1LOEafAIHoMvvMLwFeF6fWtdiK8le4kqDuMNFfdaE51s3HK96rxYaG9eC3XxF0XD2THPgDNwX6NZK+UJL4WfTRC5drVNBvfPMSEqtVnBDR87KxiT4LqtXQPZSaDbSTfDwey7KML7qyczCxmJcxZTeP80lIAgmEuPZhYM+LWvvhUnDyPOmawbGwC8vnOI4vZzu+IFY+89sLvqJZ1DPrqWe4NlxgfROUNNy0xfatQJzgvaImNP37ejKvRbr+orQGrnkBo3XBMQjA0saKQN+U+63acdd7g7hy+SyKSioPFzACdJEWQrq2zoXHEcgza5XfRavLCb7l8QrCZjjWYsX8YteuUfm2pLFNk8XzU4TWI+E9LYfoMum+nyddGzgOZk4r+qxFAgrPfO9axQbacQBtzc+u6REENoEHkSA2Q+6Ls15/rq5nU7NuNuTSKKC7NwBHHVmhM2asRZIDRACdLzhopEnOnxsrLn5E5Ei+FfUXah0pQeRL1F/SM4k44QuG+69OgQ1XKt81oME6TFqUZRlHPugKtxof5L3GZ3GDhrgKZORXbeRXpta17CukawPHQoG+tq7tmKmV854jae7X+Bu8bsWrdRsFUGTqBoC7Ata7XiFpMzUcQF1aNGtycQoqL355CSSQuD26lL1C276hHjLYJKhHVmgW6mqXVuieKUEvMZm1GNA90KV1rttFOlJQI/Izy8GGkJaRAh8Q0nqomNSTGvEq1AgEXFbplWrHr+bd3XT94FhmFyfktRECuEoFZiIi0dJqCXUOizEC4NTBBAAIYAFBoXNAFSx4Szb1w0rXE7paaJREB7uq8lkLAQCQN7OVFQDDRHA0WZVYMy9yi3jjxu7BwUGSJP1+kmUZOYKqRIDYoGiHiTVFNmetBFRoVxRFRSERWlVJJREhoEXLD/PLrLFVVRVlYYyJbEJEFtFGFjiLWFEBYpr0QUXa8d5oRxRFxhVqz4vz2z0itGABAQiopMqnmSZcnBYq0bUAtcFqHW75VszNok6KFBE1GRpLB1AHr2id2hjD8ad6ZKGRZ1nXIYoWzi42oUpy7W4YLbnubIWQa0Y0NrnEcWxty6ZkTau1eN0ovuZIFQZTWTlp8SM/5Bhhnf83EGakTMYMx9Jp0BBXelBAbTMxPl5e0rdy7znII2PQVFEMRFQUhTVxVRGn7QYIHa2EgNYALGBcrjuNflTjK631x4kFRGMhSSNA5wiMfcXRsdcPji9IQVwqyEhc6vChS1Dw9i7yaukCMvizqsqzs7P333//5OTk5OTk1q1bURQ9fvx4MBhU5QKJGM6cP3GS6otNxos8z5Nk4OqnPGitkNGEoWERChYTECHybjsCdGgIEcpqGYjG70EARENUETgC4r8BAA0BEWBnLgiZt6DmcFcvdcF08LxgzSUU1bWoOaDPHOJW4myZpM5b4usuR9kzYzp1r0LDmic9HPgG0OeEE9tCsKqQwrUKcolOboL15fptdflNwgtYg180z1ycXls4bvLipTtd//CZhTRlgMBEk8thuY5b2CJYCSpL2tnZ+eijj3q93s7uNsPu9vZ2r9ebTeeMoWVZsl1PNCB5uywtdZW00bksSw7L58nPG/D4AWxYV7jOOpJM94PeFyBfrZhmXXC87mK8C467YOuZcH/xUdbj+EyE6uoJ2U6mzUTPjIPuuq+rESwXghpaK6eQLO8EhubmK8gb5YPXXZzkh6J9A69IMOQERCRa23jVyXIdNQ2a0JiXr4ZeWzjWR3Whso1egi4Nx/LwCnjyh+ssNpiKqvLzn//8P/2n/7S1tXX7zi0i6vV6vHv1zu27g8Fga2trOBwmSdLr9bgcV89eJsteayPnljknAYAXr6PRoKqqLOOFOQBAFDEWA6jJLA1prvSlUbqxz+wfQV7xvMOlNrk21erV2tYFv3qmvibspAXJJVhLxIbISH2g1MXrH0hNUMb0poTDhuNhhfTSPUz1c7YuB8dY18GZS8EQ1hH5cnQJONaCyhiEV2XGVvTawrEQ1gnc2p2+FhxfpBr6fhcX3b9///z8/Pz8/OnR4W//9m+PRqMvv/wyiqI//dM/zbIsyzJjzHg8vnHjxo0bN4bD4e3bt5MkSZKE9Wvjk/RnWSFpgCQyP0mS09NTo9IIyLfWLlJV6G1+uhVad/4qa46AurZjPMf1bCt1aetdz2spFdxZ973QUGZXPN+Fmyt2xzVlKnS4aldUgHwCLPB99UyzSRfpxvId55zGYvoKUZXrklYvzOIY6VevHr+2cNzMQcPjbdfv9ECPg5Xu6UBJCerQJJ/Np3ZwBuu2H3300d/+23/7j/73f/h7v/d7vV5vOp32er2nh0eTyeTw8PDg4ODg4ODJkyeff/756elplmXs3uz3+wzTt27dGo/HiLbX6/X7fY4Mk/PWOBeBbB126qwmqG/fAJ8Hp9mWZrueCdMBLsj1JYwMup+fKRhWIyw04HiFNqp3r5hGorsLkmYnJkkJ1Pp8p6uq0QkKYlpsIPrAPY2DsktQFwsKjnXsxyUiYUQ1FvbWymlwfQk4Xlct0HrR81Ipvjq9tnBMDavZ4s8XLHc1TASQ0aode+ZbuHQEH0ejESL+/u///h/+4R/meX5wcLC1tTWbzVgd/vrXv2784ZXz+TzP8/v375+cnDx+/Pjhw4cHBwcffPDBj370oyzLxuPtXq+3vb29u7u7s7MzHo8Hg0Ecx8PhENXpUIgYx3GSJM4tF+CirQRudK1hSUIDUFhM3ZuPu+D4Etplx2pjbZeg/skzqyHJdKRYbXBve++q+usKrC6nCwEFpnXng9L+XD1LvaR/kwf4GXZCQKNj2YZGRGxVA5WzcC3Sngmta0t7tQp/CboEHF8F60RAry0cS8w/M5ZcuKI9XnIFXVDPbf6qCRZN8poCyXmUxhjE6LPPPvvDP/zDf/AP/gEizGYz2fVwcnKiJwy3K03TX/+N33Aq8eb5+fnBwcHR0dEXX3zx9OnTBw8efPbZJz/96URMzHt7ezs7O9vb21tbW6PRKE3TNE2jyFgbAxiebkQS9m+MiSRouKocn7BJRFHUQySeTbzc4yC4rqUfBxzDylMn1urerwjH65KO0wK/uCGiLMs63ttZjqilYhcSl2yTVsOx6MVNgIO6ENVx+uDxWjv3ggg/KVnnoLgEbmp81+o5wSV9g83y2794FltdZJK+NLr2cKzZSBRMqi9+Zb22ot9JBT+A4uA4iUkZUkWJAMXuokIiIpXLs+OY84xKNi8kf+Z5GccxgDNqG97Z2YSI/sk/+SdnZ2fGYpqmeZ5zJClHQYDHHVF2Zk+ecB3YUpym6TvvvPPuu+/+xm/8BhoDRPP5/Pj4+PHjx48fPz49Pb1///7Tp08/+uijyWQSRdFoNBoMBkmSvPnm28PhkPXoNE318VGoXDEsPLQbSprJ4bQaXGRxaozJy+U1G6zZxsK/Ah9gK9dG5XUEH5jF6ZUFRGToUend+hMarl0ZgkCRl2uugFYYoR4BEpitSJkvJITcORdFi2bKt5L/mhr7X4RtdGnC24Gk4T8ltIYrKT+XsGgpDf0RWVKCbkuapgE/CwNzUjexfjAfurYTFKG+vYhUvI0EDvEibNkPVQ5eqjl/QJ+IFg5T00JihdjWUqdZB/+VDvd8Bia8fLr2cMzzmYFAQ7OMijy5uLNm+VrdEEKVyzxYgkHdJkj1JWSTBLDEesug/41vfOPmzZtRFBVlTnrJGbWcDSjvkrPfNZ8ZT7u7uzdu3Pje974HADaK8iybTCanp6esPn/xxReHh4cffPBBnudZlhFRmqbb29s7OzuDweDdd9+NoihN016vx5nIpVHaTEnegiGdL1jMIFVRST5rPj/DUMWDWFUV4xT5jQPS4YEUDJQ4eVGXdhlAMNbNAk0El5RD+ufQ7XoVI4awBKjgXy3JwMuAQMc0PpwcvNSRugXbUjQ168nXetfiJZTZLmp2WvAKzfl6DgY9GUxMXRSsxNzXm649HDvndL4S8mdutqoSdClXHtQ5T9gO60GUoEx12O24CEjDsQQUl2V569YtVorlIAY+4xnasAM60rEDQBzHev+brj8A9Hq90Wj0zjvv/OZv/iYrcfP5fDKZHBwc7O/vP3r06NGjR/v7+59//umPf/z/474dDAY7Ozt7e3tbW1tpmt66dYv1HTmDg+np06dRFCVJwqt76Ui+Zmg2fntbURRsmtRbmUEhUeCYcj4OBH0G3me61FbbWAWdg5EKzOLgI09ax1Grus7v6JGcZYE40eqbHhc56UZLONcWSydCCOr4pYGvqZSsS1q0tzJeQKYe0SEliE4QKKSiymhxdQnb9OtB1x6Otb6jOT7g/uXza3rwm6KbL9j2J543JmttUS635wojPrMJwpRywetxvWTWlWl+SvPDuYfEUwAAnHNlWbAGzYtT8IobR8UxtO3u7t68eZOV6KIoZrNZnueHh4eHh4f3799/8ODB4eHhxx9/PJvNiqKIoqjX621tbe3t7d24cWN3d5etHOPxWLfLyc5AmwrESE+ypJHIVvDoJkmHncrCHECPXqCs7mQZlAAs9Cjo5wPgXl2+LlmqTUTWYlAy1EWCFKvtaXJTKuk6Nv1LIdq4ETBDE/0vTl1WAqlYcL85TBqOsY1023FpVfhlpGsPx9YfFyamTPIZzp5L+cGc0WxEjSAB8otowRpUB012lS8RTvwMg1eapgsOXmybrhbNxNrJZvIpwB1MRVE0uCZpmvb7fUQ8Oztj/OWpnuc5nyEd1bU/1nCHw+H29vY3v/nNv/W3/hYaU+T58fHx/v7+8fHxZ599xibpzz///IMPPiC/Wr9z5w6DMqvS29vbo9EoSZJ57pxzZVmyUmyMkXPSxNBJauuwDEHQpeLblOaz9JJ9MRck0bJFO2Ny9Qyc1LBvBCR9TnVL91qVAa9d6hJQBcDoF4FfHGhniTyvs3a04vha9YH6AnHF81IxVHZbbGjHqDQMdrfp0aTnZ125XnTt4TiQxoJBgQ7Veq2pa6ZpLtGsJvl2ZaosThRVB92j9+9h9yZgRKutz7x+d86NRiPvAFxaGxEXGbACxQ3qs1S+1Z0TzHB2CcqkFe14Np0b7xGVfdh5nrvlNj+bJAnblAHgb/3e77mimM/ns9ns9PSUTRxHR0dffvnlZDL54osvJpMJS5fhcJim6Ztvf308HoutA72hU3x3cogcp9Fg2G312ulGQSMqYMU4ajYQONbYgfX8yFADo/bytTkFVfo9Pt0j4Eb9lqDy2JbrB+s2DY1orhGUQnUPoW5aV+esoCZHBaXJtX4Slf8GfNAIKh1ZPy/1kgH95cRieA3g2PnILVTLHFRuPaxrE5d4RRP15L5ciI2YXA21YWW6MlC2Y/ZJGh9NLKt1GxlEZJxyzhV5Gbydr4OEjcG1qUdQkTriU+vX+igHmUIybUTBYT104YI7P+fy+/3+1tbWu+++K6XleX5+fn5ycnJwcPDw4cNHjx6dnJz84he/yLJsPp9XVdXr9Xi7ytbW1ltvvWXtYscKm5s5Yx9HCDSFq5YQxh9XLAb0Jgk/SCHNQdEoJodt68cQsSzbxarUpFWr1Zwp8Kr5SuR3c7sN1fdoBIgsR4XqckCFiNBX045l9AMZ/0w41m0kdWisliU8T0VlCaIy1q3qa0CvAxzzVAQf9cV/BvlwQfh4TVdeky24GKvOVNcaQVFkwbqMlKeiSUZtxmP9FADYkCp8LNCcZZk1IezypzaG6FnHIC6BVjIrOLZBQEQJs+WxHVK3siw5lwJfi34k/Yzq7FGtAXHM3De+8Q357dl5dnZ2dnBw8OjRI8boTz/99OzsjMvp9Xp7e3u3bt26efPmzZs3d3Z2eDtM4MpjccIuygDUnjmOAXzwKkELVAm3AiXFn4kRLEG5MmI9IGVQdirkRvpfCwCBY1N3BZP3JeiaCwX+Mf0uaa/wZ1flV5BuNdX1Vt2NWh4075BaeQTlO+esXUL5ipnyy0DXBo6DgRRG58UsWyGtP+M2yzIJjEW/1W3BE+YZNmV5mF+axgkoCzI5IlcRw5zHYSMablmhD4xFdQLFipngyirLMmsjYyoDOJ/PrUVrrY2MiW2UxoTufH4OADaNpsX5wPaOj495o12v16+qajqdDgaD2WwmPUO+ZkTkXLyoJRgAQEAEg4AC0wBg0JhF1DOB4WBPXIYrgDOEZbU4ksdao2dahItgD4f8aiwcAUCSJA4BHGRZLWPk1jjd2x1+8723jTFlWc5ms/Pz8yzL9vf3Dw4Ovvjii0ePHh0ePPj0kw/Ozs5ms9nWaDwajW7cuHH79u2bN2/u7e2Nx+Ner5ekBsAQRaynV1VJxEk+Iy9RuIaL9xpTWxyANzsYRC4BADjZaAu+Ey1sRgBIThwVogo45yJji6KofHgvIBgkg1QQoLEGjWP9wBgHWJYVcSozlWCXbagBfDMFkkBfa0GrPyt1NKoOe+8ymmlHoo7R1id8a8TXsgeUhOD7RVHwSSu9Xo87iryOLx4LD74JEbL2HEWJd2bkvo2LT2kwUsduz8oBAILPqEncTWxSJzXiylNKhgisiUfDLVfBQgq8UjPJtYHjLmI20gMMfvs/+IUe+eWbMWbdjZFaAw3uN28yt6GyPIoKs2IasCBxTioJ1lrjbcrgyySi2TT7v/7f/i9lWY5GI0lMwVENe3t71lpxi7HllxVS0aHIb4dlY67UmXwgsHMuiiUFPoknTeNv0BC7XHwAgiVDq5UwzsIs0tFaOxwOx+PxnTt3RMQWRcEmjpOTk/uffX54ePjgwYMf/ehHs9mMvZFJkty5c2c4HN68efPWrVu7u7uDwWDBA7AIXi6KwnlwRMRer8evJh8KCd4Cwycugha6RNw/IS5Lqz3AMYNVVcXBiCBsBgC8UCCHCESL2W7MQgy4jlRWK1zQWsGUEQmOQBW21EOm6y+7AZfmNTXWX504d4qUxvGLzgdxirBpXW00J9QvG70OcBzEHeMFYssuTl0TMmB6JvSGBVmuojKZtZZf+s3cVcXKwiLUge0A8/kcEdGQtXY+n5+dnb379W+Mx+Pt7W3+dv/g8K8/+ng2m3GSIM69yekptra2er3eeLQFas2LKtM5+Dks+19F15PnxfCiD+PRjaoy1qQMax7GGAob6gCWw6F302lkYfQkv5dvd3d3d3eXiH7nb/42m6F5V+GjR4/u379/eHj49OnTx48f//znP59Op8aY0Wi0tbXV7/fffufrg8Fge3ub00OznijeSLEVOE/zec5iTCMseGs+iy4eVjknV5s75eH5fC7dCwocvREBkBZuKwRAAtOhhmHHgRROhYJpXpI6BwxmVf5rfRGMo1Z4W9/bdb/J+UwSLQPqoCZSu2OErxAxiOOEbu3nl4SuPRyLVRHq01tWlLwqp6VFb70AuK5FoubgJjSLVBA50QXHgtqMUA7IOZNlWb/fR1ymWKvKRZKXP/o//D1eAJ6fn8/nc/CK8Onp6Xw+Pzk5OTw6/vyLL0U3vHf7Tr/f397e5mgzzpKsV6+MOHKwSFHmuifFxNzr9QKVih9AcogIDd+9nt+kliToT42Sx3gbHtvKq6piBVZkQzab85/D4XBvb+9b3/oW14HbO5lMjo+PDw8PHz58+PDhw6Ojo//1f/1P3Gkcy8FJOfr9/o0bN1iMcdpo3nZoDGd/tsYAZ49An8vfGBPHFjEFD82M6j5e2zEOLyweBnq9RC/UyrJk+4mJEvAWMOEE1x2IuQL+mgymFyuoYjNAwbEMFnX7GLA7EHNd4lWCoLN+u74j14Gyv6IHfhno2sOxOPGMypCwAv7WpcAjr+83b4qZjIFYonqdc5JrIiC/+WIZGOScK4ri888/37t1M47j8Thl/aLXG7z99ruD3oibORptiYpXluWdOyUv0lmRzLKM7XcPv7g/mUwePXo0m82IiDNwpml648aNra0t3rjR7/dZkQQAwIVBQxRDXnxMp1MRMIxWPOvm0/MlNLNdmhqqEzjwVkDE5Vml/BMpnzVQnQi0KAqx3XOo8qJARM55tLu7+7Wvfc1ay/sJsyw7Pjk9Ozvb399/8ODBo0ePnj59ev/+fe6WXq83HA6Hw+FoNOL94ltbW6PRlmhworWBEufG75EJcI2Ud07klvWHXQl6Vt6JJZ49XLl6eyYYXRCtAjVTKs+CULQTEa5dVeqaR13aMUs77ctZXWHpKOz2Gf7y0LWHY22W1eJX2O652I6FhEvIxySA0o6FpYxKG9TUnTUlSUK0cHEgogMGhejBgwdfe+8bN2/eRDTOlQDY7/eHg2GeE0MPo0DlwNo4Qgtok9QMPJTw8ryqqq+/8zb7NtlpNplMptMpw73k+mHH4N7e3mg0unPnzmAwGI/Ho+0xEc3n8+l0mmUZq+SIaNCQg7KqaHEQqkxjZPUeEYkWn3JbSJREGT49jqwac2/0ej1r7XRyLtAvT/LD4oLjxDScT2N7Z5fREwCyLDs7Ozs9PZ3NZp999hknIGWk/vjjj0XIsauQ0bnf77N42Nra0ugs46i3mQgGMQCRj6YgZTFDXIhk5g3t0rgIv+l3BWglXC2/cmrDdFDtLj7UTNv13hVfadzkC7ZrsTDT9ZSJKSaLxdsl4klVcgPH15XEpmbUzqXntSUP2iJeocGIGo6blRGobS0fgcpyYVyL47giVxSFtfadd7755ptv93oJr9n7/X4cJ2VVFZUzxtg44jJNVVlr8zxPolTKtHGUQDqAIQDksykADL1Ng31c7OPO83w6nU4mk8lkcn5+/uDxfvHFl//lT/9rHMesSLL6zDDdHy3yIwv6lGVZVS6xS7MD52eQVhs+kLWtPwWFyXsRZbsH95sEDFifGk2DsoY80eV9h9bYIEmSe/fuRVH0ne98h3XkLMum0+nx8fHTp0/Pzs4+/fTz09NTNkMXRcFbEFk+cSQ1W+E53Z219ujoCBE5F4esyp1zOzs7sr0bACQRkvUpO1x9H3AXHHfxSYCY8qfuSa0RN+OXQRklRCEVKNQ25YvUR6aARnm5KWY66RNURxzwqPl3t5T/S2uveB3gWG/2FXfKc7QdB+Ar94MnBYhl+pEPHlixPYGtpVxPURaMMe+8887u7u50Oj0/nyVJMhpvA8B0OgWbxGniwFTOAQGgtXFqXC2buK7eYDAQxYT7h5GOQfDGjRt8X5k4sizL2Ca7v79///59AGBRMRgMeI0viSnSNKVymZ/Bv5Q40gx8VFG9m4yAEfp0GYjIgXq8qpDgECFe7vB9lii8SUTWQPJ2Y2tdzY3Nssz5CBYO5HjjjTd4vLIs49XD2dkZh3B8+eWXR0dHT548efRoziuJOI716iGKovF4PBwOxYdclmVVFfwK9vhZi8ZEiFiWFQIiOaQKAJAIAckt/mwS4qqcKk1Q1mnjQSFsc+cIX0tkRUArYLf1fhexYsE9w52PKvCJ6jEViC2mrV9aLAaO0HzVdbgM/ehHP/rkk0+MMb00BrW5lrkzjuPWbSAAEKERFUzjplF78xWygECqjo6Cenp7UMY46zN7iRMPlO1CNCMRG7hY1xOnXitdVZblo0ePvve97337V757dHTU7/eHwyEAIJ/6rrRgTV3ajXXtB8XLbjfdagBAJN41x7YOhmk+jmQ+n5+fn89mM/ZEMe68ceeNnZ2dW7du7ezsJElijN8OU+ZsMa+qguOL2bc2n+et9TE+eEPbWJ1zFg2DJifxmE6ncvSf7nYQIwbUkOWZaJImPahjGd8/PT3lQ7CePHny5MmT/f39/f19PgSLrRyDwYCzJvFu752dHV5SiPhntimKRbYmTrdkjOHU1ePxeD6f622Q3F4wUSv/UH0jiTZbQ5u2qz2ugajWWguqqHyxlXMPCD/rGaFfIfxMSlXXUGvqkW2S7FiS/wFAXlbGmH6/zy2Koohzp3QNnDXtPpguavYP32exNJvNdnZ2bt++ibgIQNzEHT9Pkh439RybS6bpCCTSD2sBDvV0BPKJiuRXz6yesKasc8lPG4EV/rMoKgTbSwdxlLgKiMhEgGiLDtjtfCO0tzdOegEQ02KBjzZKkrQvIopNAW+/8zUxSed5PpvNONPb/uOD+18+nM3+W1nlSZLs7Ozc2tsdj8e3b9+Ok2g0GsWxZbsHb5hO035Xz0ivavfpbDYbDocCxGy6PTk5YdOB7GMMjNFB06B7dPI8D2Ysf25tbY3H43v37nGBvOF7Pp/v7+8fHR09fPjw8ePHT58+/fTTT6fTKZu8OYKFzTu8nzBN0zhOeaxFihARg454/3RMbl6GVnW5RmUfELQVxVOzqHQpNdZ2up9155Ai/VUzwSn5jF36seaLrgVdtdpeYzjGuoda+AzquxWCaaahRz+g2ZTvy8SWmxq5muZp/dtWEpTRWgOo3PNEtNhSRIsURezOKkvnnIuM7T7BsnOJ1/UDDVv6gu2/YuMDlU9OiG3HnF3o17736+zum81m0+n0bHKyf/j0s88+q6rKWEySxFr8xte+/lu/9VuDXt8Alh3bH7Tqp2k8HrOezrEf7MMcDAakTjgGH/FtrS3d0ngS6G6t1Fzsg4/wA2/3Z2N6kiRVVb3zzjvgfXGz2ezo6Ojg4ODs7IxPV3n48OEnn3zys5/9DP0K/e7du7KrcDweA4C1djAYVFUVx4zODmTHHzkxpgVwHMCorm0AoK3t1WOHWAvjwfo2paDHmnqlhv6L9PAVJ27ZFYHl6wTHgQqgF00y/eQBWfkKLTSvouzCYrmjeV2/HWqL+tozgfbRVX9SS8JFjIGfJIv5gMibJthTZG2MiFWVCXp2KPfdiyz3DNdQUGGxwus5bxb7BpfhyXEc9/t9IrI2HRTFdlFy6rKqqvJiXmZ5VRXT2fnDhw8/+utffPLJJ9/73veMMVk+i5NBezXrYQxSN7aNMCbqjb+g8iJx7y0Or0r5dAxAZIZZdE2n68wYWNg3ap++vWWVlxyLvVAM3XKvYxzH9964+867b7OdlJ2Ek8mEtxQ+fvz45OTk/mf39x8//uTjj4kojuPxePzee+995zvf4T40iItTmkRL6PBtyOJJayHCRQEig5oU8qd0qXC4jLKeOFDnap3XG7zYE3GlRwoaU+YqUzCRAYDo1YPydYJjqClxuEI7FlHfWkKA3VDHVs2dUGfrJn+vRvbWmksFgubocqy1Ozs7URQDACAkSQ8AiKMjXNcRme2sZDruaw+7Jh3bK53MFWb1UxQ03hyMEPV6Fvt811VVVVZ9Kqs4tlVVDXr9g/3HVVX1+/15Nr3IdCVv7mSpMBwM4jh2zh0fHxdFsb29bYw5OTnp9/vg97CQOvwpLzOoD+Uz39iqHc9mM/QaN3oDq2QgEesn29M5P4Mxhk9XeeONN8Av0aaT6cnJyaNHj7788stPPvnks88++/M///PPP//8e9/73s2bNzn3NItnHhGngrKhvqKSntG9FPBbk/20DrtCV9AdFWD0RfoNrhUWQ4gkr7YuS7qucAzLyVZbOgl2yL4vwY7FTzpi1zSyN8cn4GZ5Y8DfKwZWP6ndLIDOWOCsxxLaFcfx3u5NQOAoaY4lIwJrDZSr4LWFTPsQt4oiACgKCZBiZYG7F8tSNlIb3sltLTnnEPyJyK4oK4dESdyLe8h6P+/lm0wmFtEVZWzs6mWtoIwo4w8fPnz69On29va9e/d6vR7D4u3bt6fTKXnk0m49RzUjlVx3IxGRsnvKp5xBJz+UHdLg3W4irngfigyE7KBBxL29vd3d3Xv37r333ntf+9rX/uqv/urTTz+dz+f379/nLTly8CCryR2m/uWR1agMbq6+F4kaVguqm3T1BdUNyhrlta5TFAWqwDWSvN71beLQMB5ecQoUMn/zFSvI1wmOhQvruk9t0S2KAHuEm781jVmJfuUbPCzXgSYbPKk5eHXl5RkdE2qYiY1ZCBIAYwxPVADI8yJJY1cBADiCKAJOdNkknXlLU1eqGk0akXX5epHBUNjsirKorLVRZFMbEQG4CgAMOECaTaez2WwymZydnTF2pGmad6xbtAZn/KF5VVX9y3/5Lz/++OPt7e1vfetbHGFy8+bN9957j8PsOBwYESWeOokTKUfEHnUfacqksUnflCaz25CzeoISz/LDIDgPvKHs4OCAvY7D4fDtt99mlyDvSeH0OvIi/omr73WWa2GeQHw2fQBYN1MEdyRIQ8onn8ATFEwLybnOUhooZmZy9ZDqFf18pUhmrv8T4BUHVlwrOIZ6bANwV1LtK6GmK2/R79XS1qafD4KBoD5atTe2nc/YrECz5sKvpDwqnHYHYZlEwviouLKosqwAMGVZAiEhWJsAteNZ0rEJe5a1a82V88YKYkUYOSDfUbnsK7O0HTPcI+fQQCTJ0Ww4iquEAowFy2CCJpudc+ZMAIjjuNfvn5wcVVUF2Kmta9kmXsTBYPD7v//7b731Fh+omiTJo0ePfv7zn4vQGo/HHA29t7c3HA57vZR8KCFvD1s9Ll0wJ0epyvBxhIlWTkVyoN9eQT6+TdwV6VYKABz43Ov1bt26devWrcPDw5OTE7b2CJbxxsLzeSlsIJU0PoYX6qqrqZ+4Id0YwKLm9gCa5U+j9hPqt8g2HK12iGocdN01guNWAfzK6TrBccB8vCTs9xI9e2VLBQBUVaW3A/FKMzi6VAoMVL+Aq0zHr1rvy01Ux7PrJyVol3WuyWSCPlNEv98nAxhhVs2G1trYoS0NVMaY+Xz+9OR0a7Td2jlVVSZJIm8R40yaLHfN6eczx5EDiy8RvGBzZKOlN88Y4yqXZflyBtICisAROLJJ6ZwDoAjB2giQ+HjUbD7L5rOiKM7Pzqy155PJYDDK89zB8lRD55wjNQRokAPhjSkqOJsWT56e/c7v/d2vfe1riDiZTGRXNMecTafTk5OTo5OTLx5/WFUfcCfvbQ15u4qkTEqTng4kkHQcC+MDLVyIjpwYi6y1g/4wy7KyWBiFK7fYOQnOGURAQ0C06DckB5GNq6rCKALO0kdgCKqqxGoWx3FVlVzyzs7Om2++yTtNpudzcsiyzVqTZSVQhYYMgnNO5KUxBpGqsiTud0Zvg0RUViW50O2srwVJBT0lo57SCpch8yzJ2Fg/n8/ZQmJ95mtXi6cubP0Abx5WDvmX0tgCIyZ4/Tq+rtxy4SLJaTWjBqAP6PTuR7kW7R79uWJec1+aUJwK1pYKA4A40V85Pl8nOIa6roodtirhGFAS28mpCh27niRHjPBKV+gVU5e3kD3R0OayQ0XGZyzTESB8UdLirHvwNkq23zEDiastIA7D4n3AXGaSJLxMBsXT0oeDwUAawiTKEXeCZN1kPNKrAVGRoigCkN2uxFONlb6gM5fXiuMRF6ngfD8vTP8MGXEcczbnwWAwnU6Hw6Gc3ME7BXjW8UYVjrQriuLw8YPT09OHDx9yxktJmfT222/z0SQcDiyLoSiKeMM3o4ZstOMkOOgdDxqPiBxRKdjNncz6L2/qEVt2VVVxPSYMvctR84P0xgp9rRVwERdHHzA1NVNTjw5GZQXW5ciYBnYSoWYhwifycHBHs0pXo+SHwiGXtj6zHib6EEuUoijiKNV10CsAWA4BXBGd/prBsZD0O6mlGdU9Fc2vAjhYUbgglD6DTlMXHIsA0KAMAGzilMIrfzK0NESmKDliVJUX8WOIaCPb9V6GbPCziAvPskze25z8fKHnJ6gMkLrr5HkBGlmP8wEoiGhg0S624UooAmOZYLT0v8AT/2mtdW4xe1nk9Aej3d3dOI7zPGddjLOFkT+ZSZrD3jPWnfOvvc2bCWez2dnZ2dnZGdtMfvKTn0hoRJqmnIxiOBx+/etfj6Ko3++zGdo5l2VZlmXoD+vTh1HprZjCYxL8xzLKqFOcpZnSjVYdESACGBQWC8NoBIEOOAYAa6z+VVP8y7AKnpr6ng5U2easyrzK6kLA2KDAWldV2APVUlVa18W0ACAxKuQN6PQsM0JrV0htObXs8qhDz/igxBWpXbjGGIbjV64awzWCYz1ITh3+Fnwl/CEhUML0C9DpEIN607B2AXVxRtf9rqWWzGRQmyyMMXzGWqCbcAO1cUaex0Z2d6Ysy+I4ZhsILxi5FYsE9r58udanhFh1fAN/K8wtkgmUpAkGZTG9XVX5YziqqnJVJXDM6On1fdKN0o2RCYk+o1uaprwpOU1TfZYohyGLXs/aEDshXRqh39dQFMV8Pp/P50VRTKdThmlOa8cbN4qi+PGPf4w+P/LW1tatW7fu3r3LSC19Jat73k2nRRq3nTswz/Mqm3OrbcK+xhR8zDL6jG5ybojgGiiA4NzQ0s+CI8EdXQeNMgHf6mEVxhaBrY0PWrHV9g2d+wLUXENst0EHtXqmtisTs1n5VtKNDThHOyS5Lf1+P5sXTb4FP8vguaYb++p0beDYqW0CThGplZTwazBUmrp8p7I7Cy4QJgHdfKajJhBDuxUoPmam0dlVnMq3IloqmwsWcgWx6+hVfoZ368pMMMawohcgslRDXF5a1Bmfx0dDs1NnqUltHRtS+Y4/PoMlgSRsZ6WYk8lZaxFrejcRaMjjivGxJkmSsF6MiJL8XtYQUk+pD7+oNxgw9PPD7Oiz1k4mE+dryDKD63Z0dFRVFZ+0cnp6ur+//+d//udEFEXRcDi8ffv23bt32Uk4GAw4f4hTufEChY6hduHWK4uyquLIUn0RIHVGtT6QcgiWeCeDuwKhtOpAdesQqlWO4v/mjFgUIqevck9y8o1gNgVSoUkalKEhPL46kVoBgxJXbM5mdyj3w2w2K8uSneTNCqC3/m3g+DIkHUp1gQz1gQGlskHDdlxVlY3aIxBkzDR4QV0Ia+qCY9lcq0sDpUlB/YAiziMsh26QzzknxgoGRFZSqLs+rC1yyUQ1nVo3ChpzW4BA2sWQysZTaCxadaOcc9aahTmlLLWNwqnYBsFBBl5dGYCacodeUU3TlPzBa9wixj7OWcGIL2ZN3TRrFhooeaPQwoYYx7rmDNllWe7t7YnYYG2a8zuzrePx48eff/45H+y0SDq6u7e9vc3nqG4NB9r9xYMoARi2LeE1V4DrDyG4cAqhWkykxlDdSxqBQSEsKCuQLkG+sio1vuYNpza5yM+pfl6inmJSoMZrVDqyZrYVcCwqeTDvVlCzVxmOeSHFqzE5XAbrBwZpBnbqEPqrYKmAawTHetnFzhBB5IBxUcF0cL2ifEEcrON+F/x1lRbwE9cKEVk35MkQqKiB9RAAWLaD2py2ULoNdhlbyJsmrU/BxazZbJfuq2aLZN0qIIVqcxqqk+S5eqyss51CS4JKGSvIu92iKCK1ewKU6cj4PDucAL6qKo55YHuFVXnyeO7pw6JEQwSAvBK7isHIRl76Gp8WnTs8QuT4ZD7gShpVlmWWZZwmSVRpjp5mG/Th4eGjR4/+4i/+gk0o29vbt/Z2t7a2OEsyh3MwFjC4QxskiSlJQNk5h2idc4ThjjiNyJonF6xVtxRrsRoAsXS73JE5xX1Sqaynxu9tIWXTCIy8UqYuUPQMrTCtMFlI7GDAWl2kxZK++fjxY1aHnzx5goh3797lcyOrqgzEdlDtZ5pTXiZdGzjWhOp4cOiAWgYCqLuJV5cJynypBf6K55tk655uKYddFuLZEOQSXNa86PxhbiLGec1ubdQlxyWYAZSdpCkb5Fq0HqgrUKRsJqRcmqKtiynDRwgsN0wHM0QXu2xy/T6pAUJHbDImoizL0ETsWxPbMSuwDMd8YqlY4UkZRlvbC3VIQh/JJ6IdfGTkYDAYjUYME+wOZZZg9yBjepZl5+fn7Cd89OTgwYMHJycnAJCm6fbWeHd394033rh79+5wONSMJD3MejTUERaxU/br/gxUEMSaHVmPryCjbrseYkEl5xyvroQVrfdJ6sA4q/aLG08yvpq9pXCnzhBobZeeCM/E4hV0eHh4fn7+5MmTP/uzPzs9Pf3Od77zjW984+23337j3lu6Z5rl1yfIK1aTrx8ci9GwLMter2fMQtdI09T6U5DRu01AnQa0YM2OHDyVOm1PQBkaK035FN4NPgNYFK5N07TyMf+g/M5iopXfWgTZoQtefeCY4rIsDTzb1KXFwIppEDws8wo8ZIASY7wY5wW+hKMCgPNRH+Rtjtx7nCWZyxFULcuyoortBosOjxZbhPM87w2GYplNkoRgEdUXRRGnwYzjWPpqMBiIYaQ2n9UJJLrtlQpWZeKmifMH2rwOwQNElOWltLEqc7YgU1mcn5+fnp5OzyeTyeTBgweffvpplmX/9J/+06X1xjsDGIvFuMSpnOM4zvPSWlvh0gijBYYcx4VBMkyDTnm2BUk5H6lE8pKyP8hcqFR6eJ5WItKEASRdvVOxj3wzgDZSQSZC1m92Z3uO8a5sLqrX60FRGh8IBD6DlVFObN35zJ9JkjAfchKrk5OT2Wx29+5d9tZ+//vfj+P4j//4j/f29maz2fR8/t3vfpf7kBnJGMNZW1nAl2WJGHP81Cs3WVw/OA6I1OlbGiKFLihvRXEANY1RHWYjWkkXo7QWJY/JFgZtmjDGiPONLZ7OOWzkhbkiJPrLBVeUWirAUr9bXEsvkV8z8pwhb3UBXFo5SVn/+SdymBPUVwPO1fyEUpmutVFVO6zIiLKJZrl9Ro+ysZXcd865qqiqCqpyNBrdunXLIBDR6enp559+/MEHH5yfnfSHY+k93Tli5ZfqsUVonmfcNFkH8LUOQQMlP7T41x0lAY6yLhE0D7qieUeT7KdAFctv/OlKUFc80WeA0zXhCohupIWNq4chXYSstWxHkp4xxvDZu7yyuXnz5s9+9rO/+3f/7o9+9KPf+q3fevLkiTHmvffeGwwGs9mMxYPOBOBZ7ErQtYdjHhjxqOg1+Frd3NQ7tPELGq7wrsKx7kiR37q6h425k9UEqpvn4EruNBWUlJ4Bnl0+cE10KKd8/YEO7pwjWMar6r7l2DU0Brn3jAFYGlukZNH1AqwHNehYX84/s2nNJQ6q7ZRhbdECgEFfLMVEhK7q9XpRFFmD1tq9na2jwyddW7RJbZHX7Ao+YkSWSuA3qmlMFGRcrCqy8NQbrnCapuCxWESOjF3A2ytmiqwaZSykDlKm7slKbea2nqAuofkrr6Csh4XGmPl8zroLn8YbRREvlQDgnXfeMcZsbW1tbW2dnp7+9Kc//Ru/+b95/Pgx32erF29/Fyl4hcD4NYBjNnsJroGKgpJntACnjpQ6wlgaN6Eh/KE+b5sXwfRD5ejQPxTI5ric0pMxBtcUJC+HtEGQ7yxwCpfXWhsCZSCqqWn1PTLauGmtBZGjRFC3igYBHhKLotGZGgfUN4cpoMAWIXULgFIjFxflEZnNI1GSJHFk8zw34AAgy7KiKIb9XvB2qTOLH70tmHFTjlUUVRSUat+UZExNi3mzLfrnzVqtYDkZd93PrhH4CH4yVj6nHajFqywKjdpy0nWi2Ari37LtjkPIt7a2RDglSdLr9d5+++1f/OIXv/d7v/dXf/VXT548GY/Hjx49MsZwWI5V56d4ybRuLV4UXXs41hQwq+Cg/qSOFDxSAtRDMlpRGOuLsmCGBJgVfDrlUhf9SH4YXFwpCqaft9HXvHbanivrcdQmS2+gBIZ4tfvaKOe+cy6KrQb0QJERuJRIOA1AwdCAh93WRvEFNbxkcl+XmSTp8nlwAGDQAEBsEKxJEasiK4ri/Oz0/OzUselEGaZJqflW5YIQS4IkjWOklsgWUEsEvQSJbNLkFiKSTfbSb/rtuj6wCFhs90lICJNUQHpDhoBJsz3U5YG8wvp0S9LerkihLkLvUeSeYTMFeElwfn7OB/5GUTQajRDxwYMH3//+9w8ODra3t3d2dvI8Z1sQLWM5rtBsu/ZwLAwNisOozY68utdlkShPCuKAQmF5RiJbSa3QoY7aUjL52APwvjKxI8tMWGpDV4pB6qR7uHXuNaFZHvAwVJuletKit4QaY4qicFQ7ewkay2S5Y+obdkEBh4aP1ha5uktWpKOpb4lcttdGRIQuzJPnnDPWOOf4nFaJwQjC3ElFQ+tOQERrTRRFlXOsM2rF2dQj00HhrEFLDeWDfRIyQEbF8wRMLq9YMeIyTJXaCtvFohweXvnNUOLTk73moA4Lds5BRw6ZLuJWs8dlNBqxv0G2GrEwGw6H77zzzk9+8hMAmE6n1lrOZ8LdogUzq0NXZ7ZdezjmvUNOEnR5CNDTT2tAXdOSlK8DlCrRfIwfkFQ+VDdC6UWcroZMP3Eu84yqfNo5QTpjayrzlSJBE2z4fzQEdxkrSOnS+leLP1V4RlEUgLYJH0IyWHq8iIi9NKxm6ue7Ui9pzG1eUMN5u2iFwA0ujCoGEfz2mXw+AwCOl3BttmPhhMDIxg9YdXizXLu670EcYuRQfyswzW5hquf0ASXSAsW8tXOgfsp18ArNtOSVTesz8ZPyWIKfp6KFWH/Ck43b83d3EXs42Zje7/eNP4A8SZLpdJqm6enpqQSAb29v7z8+ODg46PV6Z2dnDM3SHN+Ktd7/Yunaw7EwdLAJSs/k5pRr0gIKlZUN1MwRzpPJybkLTJ0QkTP86ppAfSbIEhV9osLFrgevFsXRMoPEFSRamilCu2rQaU3hx3AMdVWOKegxgfUuW7DsfgQlJJxzeVEJLlhrrV1YBqOOae+oFlFDBOxdMIZfxM1ECdKwqhqIGFm0BtAYKvLKOwA4a0dZlufn5/3xTtADTByFFvhyAQDN0g6GiBIj2O/3nY8YkwtEtGYZiAZq9wcHJooNVzoKVXgMeRV1xbyofM4KmSBGpbsSQSt/Fmo3kEwK9MEYsl/R+Fi6deFY1Ft+NcdT9no9htqqqm7cuPHo0aM8z+/du/f48eNf+ZVfOTg44HdlWba9va0XbVcLjK8jHHMPsmGI1EEGUM9ZLEzDalGSJItRjNoHwFp7dnYWxzGnc+SFz3Q63dkdA8Dx8XGv1+MzdVxFZVm++eabiGhMtLOzU5blvXv3OP4mTdOzs7Pd3d2Dg4PRaGT8ZjDnvRxFUbD1SuI6i6Jgh6/zYUASscs6xWI/G5FBAx0rS+160ipnl01Qi6iLMCWptapM5qIobIQWIDZYWlsWObkKgazBrMioKgy42WxmEbLZNI0jcBVE6JxxjvfFACABkjW2LF2R50CGHBFgZHtESNQC+rq90gRx9LGznpyrqCJnKh+SoOewbm9kF7Db3UW1r/JyjoiAZAAXgbRE2Xxa5UWeZYg4n+VokqPjSeUMQlwVGdc2SdM8z22UlGURRZYA4jQidGghjuOSAABMYsEh78lmiw1L/TiOWcwLCS4niRc/htUFAnSAgIb4HxChIWOQiAxC5TjzH1a8QSNCCxY4oM2gXfQqObfY/dHvD4UzuQ/zPJ9Op3yYtx4UUedNfeMfk2xSZyHEzen3+4zZwvk8KZqCfDleUQTeHccGGY4h6fV6LDnm83kcx1tbW+fn50mS/PVf/+Xe3l6eUZ6dn50eG8SbN2+enpwNBoPZfNrv9aT2gA4Qoet0rJdC1w+Om0QqxF2LffkKvAJlukN6p9PpaDQiovPzc36SQXA2mz169KgoivPz86dPn1ZVRQ6Kojg8PCTCPM93dnZu37795Zdf3rv35s2bN8uySJKEIxxF68G634bqLi+ncg1r7ePSvcEXwSr7uRAql7S8LkBzapBWzfRMI7FdrOvQuVgEm351cCQreFDucvFBQ7aJeENEACehboKM8ry2mFUqEYSosbrARX38kq5SZyaQX/M5lVACVOi6ICAzm6TVR+UDFNeFsJasPPTUCHpVqierPeec9KHo7119LiSdYHzqO6hn+HzmILaSjKDwntijOQaOdww55z777LPj4+P3v/Wdg4ODN998ezgcnp2d8W7JUBG5AprytYdjDQdG7dOXLAcSkqz5vkk8DfI85xzBrJPu7OxULv/Zz37GDtksy4aD0XA42N3d/eSTz3q93tOnT/f392ez2cOHj7/5zW+++eab77//zRs3bhwdHY3HY9aFZbEm75L5IGzahK1L9EPz5nNEZMEOaNMx9WMacWQFDXU4XuKR+i8oBIhfsV79m7KBL+rbPZ69IJB8nrpMIsKF9oQMx5VPYgcKZCXXB18bvwOb6n48EdXgR4q/kpgK8NJCCtGsLh1l6vkljHfciVyX3Xfaw0H1TFuBmJQ/8zzXcf0AwGDXdKto0u4QAUrjdwyit12sHoJWCjiwOffB7xvkBfE/+kf/aDabHT096ff7x8fH4/E2b9+VyJNL1OHF0esAx6AcFAG0gdq8v9A7OspJ03Q6nTrnkiThNOdJkmxtbf3X/+8PbRxDWdo4+Zt/4wd/7+/9ve2dHSAExMnZ2Ycffvh/+j/+n58en/7d/+6/+9M//dOHjx+XZf79739/NpsNBgN2O8hpGk6Ff0DDpyfNkf17l+sKJo0grQ9fmhE1LhARr+W1KiTCRk9FVMHgARwHtdIVWwHHzxQz1Cg5eAV/dh/5uoyzFhTT9UFaKLO8YZcPdwKv4bKgdc5VrmRdcuGU899C3eSKSpUWkNV9Lt2rsRJUFC0ojK7akmWD5y6qW/Y5OIG1YLkpv136DOtfdfW/dgzqejoVpGSUz3xdaioE/CkCg3mPk5/0+/1f/OIXH3300ZtvvD2bze7de1NM8HSBk0pePl17OO4iYQXd6URkO7xkcRyfnZ3xEUez2SyKovPz8y+//DLPi7KsiqL87//7P/r9v/23s/m8yMs4SQBgNNou8uof/+N//PTp0y+++KLf7+/u3vjxj3+8vb09Ho/l0AcA4E2uTgVdCItDXXnUF+u2t3nzOWrH0KFaNmtLde2Y1Ip7ReEyWODHriuz88VJA0dXnbu6ulLpzZwOP+DjXP3vWDWuqgrdEq34jqkf8rRovgJEBo7FMg4Xz7ALDr2xW2+sb4pbfox8OApDJ3mHithMRF8u1ZkD8iurkiNqAGWS3X2g/BClSpAdkD7kTKr60lzTpBJgsV5169at3/3d3/2vP/yzvb29oiiOj4/feuutydk5WzOums/82sOx1sugoT5oyAuWewGxOjwajU5OToqiYEPEn/7pn77x7pu7N/bSfm84HgGYOOmxN3w6nQPA51/cL8vyzbff+Zu/87sfffTRv/gX/yIx9PHHH7///vvssuOYR0nsbbzjAr1dr/SngTgfgCw+k7VIq0JQVwbX7tNuEoUR6h2uq6G1Y4GJoIaa5IeIy8MjiQgXw/eM9jZrCHXZxvedq8UXQ6Ojut6iw7YAIE4TADAGLBqqm4nlU4QQAHA6JPDWA1IrBmFU5xwZRL+0ZyiX7YLkc6uDEi1awRRDsOC+rK5IWST0SgXVVkDZgR10LN+UbSna0FFVizxQTTJ+m4+WgnqFQc/y4qym4FcywXmVIy1dRNUYM5vNbty48au/+qt//ud/fu/emwDA5y7KsQxAALjgt1dOrwMcy3XgJLHqoA257tLRWIshoiiKbt68yQnYAADIPH70ZDAYJHEPAGazmbVxr9cbj+Of/vSnX3758O7du0SUZdnv/u7vnp+f/8n/8v/5+c9/3uv1EPH27dtpmiIi5zfRXhp+6UINbIuKW5eaWuozgeYSb2liaPA6rRTLQGj1EDtIl9/U0S5BQQnOB+fpzxU/l41wuiFExNpxFBljl4ZRRHRqPgdrAikBUY7hJoHmRfNxoS4IOEpwtxYJQYdjPcWV3NeOE/1DAWKZFPwTjrYEZd+XAtngpl8RDFlrt0vNwYs01kalcy5nOIZuvtVuGGl7HMfb29tEdHx8fOPGDU6Luru7y5FLKGuc5+3xvjRdLV39coR1ZU0sxfytIELTcKkpiqKyLE9PT4loNBpNp9PHjx/HcXzz9q3BaJiXxR//v/7f/9O/+bdHJ6dpr0cAX3z58P/5L//12++8s72zA2iNjR8+2v8bP/jfvv/++7PZ7OTk5PHjx5KzmFOqS9CPVKPy+Y+0piO2xXWJlF7zHLq1g1ZMRamGjAUpFan5cw3Hepp9lYY0f6JlXvC5gkTB12DECyP5qvXVWPdeuLagBaj74rSg0nAs4RDMJ1o/FSaX9Yd+r1ZptV3C+GhfOd+TF3BO7dLWfYiIHL6pK4/1bSABiVlWGFv4XCwDumMvR5rBSIl88ulfWNjwrpB/9s/+2QcffICIcRzzeeRsgWnllldL10w7Fi7nkE9jDCinfMAEzSQsiBhHSymtA2mZfXlJOJ/PP/744y+++GJnZ6ffH25t7Tx48GB/f/8Xv/jFn//5n7/91rv/8B/+wz/+4z+OouTp0+P5PP/BD34Qx/GDBw8Hg8Gv//qvcyqpOI4//PDD999/X9KqEhFHSkrQm7WWbW387XQ6ZbVa5g8ocxgAEHRaVGU+QN1H1MX0Xfe7GFQ0qUCvkZeKU0umveyvK8uSY/VBuS4XdWM8Igdg8jxP4h6jCaItKs4vs96k7ULJ5jOr4UCwI/h55SqxMklvIwIfdEI+ou7k5OTOnTvoczQbYxY7IOLU6+nO+Bwd/X6/AnTO9ft99DkZREUV1hU5QcoEIcl/2SOnuZrngmCTryrqFMbcUk75j8qsLP2jjRIy+4za08HZfCqV9hoUUKIPNM7zXKIdOHSEU0XH6XIzrejyot03qZU/SZ2jmCTJfD5nG6BzbjQacXu5IXxMOOetQY5ZRgACNAaoeuWxbtdeOya1OBKhrfkpmHXCiE11DP0qb39//6OPPnr69OloNLp15w5a++XDh3Hav3Xn3snZ+dHpyb//k//0wYcf9UdDh3Dz9p20PzifzY9PT7Oi2N7e/t73vre7u/vw4UM+q5hDhaRWUkNm1sqfgaRXtdSwPDx36tJuvmKZfKEVZFg/jWFTp375RB20+idy4epRvRpcRHlMkoS1ClF1JcOZZgDpDWEMKblV3Apiko9ERmX0YHzk01Wcc6wmi9Zv1Km15HcqdREqsxKqmDa9sCBlzwEVF6hN+c+F9LTSE81a+/f//t//oz/6o8lkAvUzB64gXXs4ZhI7QDDAWlbLHe1rkjvCrGz+f/r0aVEUu7u7N27c+t73fm1v7+bJycnJycl8nu/s7P3whz8EgLt37u1s7/IxBJPJJI5Ta2Nr7TvvvPMbv/EbX375ZVmW+/v71trz83NQwZ6g3C+6JlL5ILRIpt+L6LGA1i1HatWqhGo4fqaMCTrh1cLxpQlVIiSNTVAPdDHGsOsfvfOtqiqd94dJr+ulM42Km+ziECnWqT3Qri1/BTR6fsWY6vJ1DYWrdW31tTwgu2ZWl78uifFHSuaOOjw83N7evnv37tHR0WQymc1m5G3xV5CuqJS4OJFa06FyU4BSH4TntLjWJfCfcrLA1tbW7u7uZDIZDoelq772ja//9u/+zoMvH00mk8Fg8O3vfOfw6VGSJL1Bf2dnp3T06MFD51x/0J/OZz3K0jT97ne/+yd/8idEdHBw8O67787nczZKaCbmC1QRS8DuR29vAWV2eL5YDM8V3PXcDjQUWTU/swmoludExOWxHeCV0CX6R7TXRS43H2rmfCAN6ChAANZDva8sDOzVZWqAayocAaoG9ZcRESxmjRhU8ky2I1NdkWc4a6Su62w1+JAGXUO96hKIXJS8MlfGuqTnuLzXGHPv3r2HDx/u7d68e/cuHxEgGaWvIF17OO4izdnCMRqRNZcIP/EJ8Gma3rhx4+nTp3mel4Wbz/L3v/Wdb773/tnZ2dOnT7Ms39vbY71ma2vn4ODAOcexE/P5HCMkovF4/P7773/xxRej0agoin6/L6lYoK5QQLeqItV+EXC8lm1uBWnFSrdI+hnqCb+7ykFlzBE4JqLroiLrAWI4tv6gKafClpe2XVweSAEABEh1E4eWx/oOkzYOBFgsZgFZ7jjv2bbqmHBUiUmdc2xaFY1bDWin70He663htfxwUh+pBuscYjsW6HwuFKwmRT87Pz//2c9+tjXe4ZRvVVVNJpPhYPS83vt86dobKzRPBKv+QNfQF4J0mnsYNThZLXsqzs7OWK8Zj8ej0eju3btf+9rXDw4Ojo+Pk6Q3GIzyPD84ONjb29vZ3kOw21u7vJd6NBq9++67VVWdnp7yZj+ZAE7lH3CKwIcEsXGtyV5XU6RrFAjgGOohX6vhGOpyCF61sYI6aPVPwBsrRN8MntHjK2CqNcpgoIU3NICCih0UNoa6SNAKqZTJj0lABXtfGan1RhIdEdHVWFH5sW5wE/+N9tlqb2SXXfErkp4sunw+4dQ5xy4cTj02Gm3g+EVSYA6GNu0Y6vwKdXeWhJFXVcXu1zzP8zwvXDXe2QZrSiKMovHO9rzI415qoijt9w+ePk37/d5gBNaQQZss3OhJkuzs7HDui7Ozs9lspuFYTBDO7xuWaohcCbTj595j2EHrlhMoZU0FGepbEFfUJ5CXV1YCdVEAx8anUeVvZXDZeMq2KVfPLNFUdaUb5Um5NupcleBXoCKOQeUXBrXp2fgcpBq8gmmygh+c9xCC176bc01fS/nadnwJX8WKzteNFfm0s7Pzm7/5m7/1W7/FEohlIftyriBdezhuaseBFhYAdMBhgkFZlonfWXiU0bkoiizL3n777d3dXT6zfTTcGgwGfK74t7/93eFwaK3t9/vsitnZ2eGsUScnJ1tbWycnJxLaaerB/+TTccnECJDxxeHR84JjaMxerUVKn18cW1+E7HnJJEprU5oKo3IAnOi2gtS6HA2OmmekWNcd/myX6UZBoj+d3zzN0W9xHPf7fT5zWkdTBBk1u9qIDYeNXOvJ6F5KZIXmNDGPENGTJ0+qqrp9+zbXpCxLTtz4vN77fOmawbGMn5z4CX5XcRzHsp8CfTgk1hdr/ICcGgkAkiyccxCfnp5y9p+9vb0oih49enT44FFU0Zs3b4+T9K//8qf/9//xf9zqD12e3b15A4m+++1v37qxWxVZUWSj0ajf7zubkE0GW7tkE5sO5iUNtraPTs7y0s3zUuKOOXWcMaZwVQVkk7hwFVjjcJnR1RpTFgUQGURyzhpjurlIQ+FF0Nx10LojojOfkc/hwm3k3HicjYxT4gEAUARglv8Igbi2rqoqgqpyhbEQxeBcaW2Y4F8vdZ+XOGmlrvItRlQBOAtgwKEBG6GBCoo8d66ispzOJtYAuTKyiKYyBsoyd64sisz5s6l407MxJoqSsnR57hBsZBODC6zUgMWNiqIoyzI59CDP87Is+cARowItRKhzIB1vbhJVwxjD6VOY2/M8F7ee5FM2xvT7fY7Vla4WvuLS2FmCPlpfVG9UEXXgFVV+kS5NsJIfYNkgnk/jQ/K1QQO9Ok8dJIwn2vd8Pq+qKk4Gs3k5z4usKPOyiBI7y6ZRaioo4jTqDRJH/hhatK8cD6+9K68pZlfPSVlVNa1anF7g/Pz8yZMnfL7LZ599dnh4eHx8fOfOnf39/eFwOB6P2Qpx8+bNihbQyX48YFU6z/u93nw+Z9a/cePGwcHB1955d6EmNKK4miAitbpe1NqQ5opEHmtiaPDwlVVhWgkRAZBUq/UgBs2UhusVPd/RycaMymuh+01/in5qVX5tIprNZlKI7v8gBYfz0ZaqFS3uWT1Y3C427gU3pf6gAvzB2wDlWpYCRGSN1a+WLnIqclm/qKv/bT1FOKmESkalw19jRF8FXXs41pm35OaKftfraM1kVVVNp1P+ajqd7uzsfOtb35rP55988sndu3dv3759fn7++PHjb379GycnJ2+++Wae571Bvyyr09NT8DnIZ7PzYZqWZdnr9Q4PD1nHESthVVUGarzbZDLRAp5/T70YoobHH+quPFSuKj17F/3QBhnQcOtdfTLGOEegwiFkPxsq0asRKugrj79VUKz8VthG7qO3AEA9w2QA1lAPrg/WT1on1a/GhrFFJAT6lBp63hmVc8Mo16Kpex2F+NVGPQPeocIFaji+CDVnvayJZeWn0fkK0vXTwgLSViq5uQKO9VJXfl5VFS++eKXmnDs9PTXGvPXWWx9//OHh4ZMPP/zwzp07nLj62995f3d39/j42MAiOQBv96yqKo1jXh4OBoPPP/98e3v77OzsnXfekQPEVvheoKFrXAsK9Bd9HxeBw8uDkTQWB9fQYWnpWpy+mtZ2k+YrOUyzqSY7FWMj3aXhWOyegiByRy70NVtjxdHHFdAr/dYek3cFoiK4aDZNas7mPqNcebwBNUhwoRHZ+C1/Qf4WqcCKaftMErkizlJJ6MExJOIev8qT6+rW7AVRK3CztOeDaQHAGHN8fMxOgLt37vzXH/7w8eOHfAaXc26Q9u7evcvpgSKz9BsgIptKt7e3v/jii/39/du3b/f7/eFwyCZjmRia85rLsa/ClC+fmmtJ3SKBYz3tg+ebrW4iwtUnPaDiKAsEFfqYML08gnozxe3GaAL1uF3djas7x/ld1xLmEccxW9UEsvV1Kxw3Ba0guHi80as1lzs2oTkRoD4XAlpRDta1ASlQjgZGv7C4guKc6drDcaDtMq3obrH0i9xmcT2ZTFj5JaJ+v8+njs7n83v37iHiv/uf/+cHX97/8ssvHz16lKZpPp+laVoUxWw2c2UBsNB8y7LkCOUf/vCHs9ksTdOdnZ3Hjx+jUlgC5Go6begrpB985YR1PbfyJwxdZDrJr/hOU0pdZFq+KtINl1NgtGODq01+L778KtBSjTrBSApfwQ+sbxofz84V4EA6qxLMiubYtAth3bbQHAjdNP2ALgG91hzEUAtYk7cXi6NS14dUMAZeanUYRCgJ8UDoDEdXGY6vve24K3Cya8Y2VWO+YCzmoB85zjbP88HW7mQyOT09/ZM/+ZNPPvnkd373d3lu7O1s88Sz1iKgMWBMbK2N4/jHP/7xL37xi16vNxgMEHEymezt7C7mGLhgmlVQ28ktM/ZF9dfzpkCjkZukIr3EFI4tGb9a9v6iSo78zPdeKeK2yBGigaBFrx1Dw0ChPVeo1hMs0viscc3hco0+75UgjvGRCQw9GgoBQAIYSBn3m3AswkO6WQ+THlz+VjBOb35RhZCWDUHbRWBIycYYFmn64XXFsPz2GtmOrz0ca+34mVgM3uOhOZuHimMqAGAwGEwmEyIaj8fOudzRr/3arz148OC//Jf/4pzb2929eXPvo48+uXXrFgcbcaROVZRJP7Zxcnh4+G/+zb/Jsuzu3bu3bt2aTqc7O1siq7GxBq/8KT7QUEOuCz1T+AUTSbcu+G3w1fOv6wsjLWacijtenuOkntQaqAYa8okiRWcEAOccnyyjXyTXlT8Wr/LnijLos31MDB2ifoLXVbkEp/JpQIc3TDctUJmbVRLsE5VZ5peeqlIr/jOAS5HH2q1n1AnxTZKfa/Ox8wegOBX7fJXp2sBxILqbQwtK8htjxPQWxMND5WTTjlj62Sjc6/VYE4njeDwe53m+s7MznedFNk/T+A/+4A9ms9k//+f/PEmSf/g//A+IeOPGjTzPj0/PxuPx7u7u559//sMf/vB/+lf/j3t377733ns7OzscGco1X0RZGEDEPM8FoCNcHmyqzz2TKZrn+XA45CREzrmuA+RWs2mTnhdrkopJEnMkeUsFEXHeFjGDgkpDjogSimD8yXLWJ4OO486kt6+QaGmEcWmcxHFc5nMiqlxV+eNK+cnxeBxFUV4WlT8LwxiTZVkURXme37x1u9/vAwBrgmgtsX2DSs6YLJojIsZxLCZgLpzfxU4qUKDJlhB+kmsiZ+7Jz40PO2PO5/GS03CYUXn6GGOIgBeLzJCSnlt2iLCNzqn8RMaHBpHfQMisO5/Pe70ep34n7+nl58EHonD8nFRGKgzPUlO4iyqV/J6IOJh6OBx+8sknANDv93UikdFoxOU5B1fEvXdt4LiLnNqNivXjl4L1L19IPJCGcuf3KYEyhC0C7NEy8kZRNBgN/87f+TsffPDBv/5X/+o//sf/+K1vffu9996z1n7x8MGHf/3RJ598cnBw8Hv/u9/ZGo+3trZYawYA7UpW+1S8RHHhjlKpcPDn4mZHP7xyXVJq2LxvVFRWq3r1OpFeX5Mi/YCgqlbZ5Bk99MIqgRLd7G2j9mRTYxEGau0lKjN470Xljw1rNie4KaaPoiiCxZxMwKBdTDwFbD2tXVmWiX0GBOmWrmByNm6ISbry6Ti4qqxjyc5DDn8CAER41fOmRtcejjX+BtzfCscC2aaeKoU3j6H3vQoi7+yNTk9Pt7a2+v3+YDD4/q//2ve+9704jv/yL//ygw8++JM/+ZPT09M0Td96662/+du/9fZb71TF3Hh1w3mPNu+PMsZYs2SvxaxoZDDUEw/a9rlcKQpqC/WZo9V8PQQBKF/Z1q1FRIQqkzXWT3gilYXDNPxpAYgHXWT9mbat/SzrRSkKVJcGyJ79/9v70yfJkus+FDzud4s1IyL3zFq7qnpBN4BuEATQz7iIBEUNl2dGzYy9DzLNmCibN7Ixzdj7Ov+GZHoyDYczZmOmL5Q+0EQNOSAJAgJIiFgaAAF0dTd676quLbNyjT3u4j4fTvjJc/0uuVRWVWYhjrVVR9644dev+/HfOX42n0xoE4MXUV3g7oqS2SS8owa5C87iBGBLEtsn6wHBYtFgFi3ekvG3LNHUpTiOcXNJcii3q2eBzj0cW4yrC8xbFnfmSnLi+4QdBymkbnfmmo1WrVZzHGdvZ7ezMP8//U//+3/6T//pYDB4uLUThuHS0tLiYqfbHXzyySc7O1tRGNLp0aQaEwPk6iyQ8m4JwTKy4Gj+h7OgHXPk5T13zClZ1mQ9S1jMxWeSKRdFs0NgzS02QgjFNGhrQCRLKsuCLKQV3qI9Fn1Al6Bmzj2OzrxLVgvA4FhnqvRpU4mFENb6FRgvn04f23rC4S4gZDY8rQrfDisHodUiMUf2nUEjGNKzAMecs8nkpDIHHwAzZpGNAswUUogM12K01oNub3V1Nah4WmvUkUeDYZQo3/fb7bl2e244QjvX9BiuTqczGg5pN4fxRtg9WinaGM4gA8f0XrQIuV9ICPG0UdcmC4WBDTX+S6NKyl3q/jOppJyYCOZQtJNcx29x0ulwUmu4LOWAQzDxswWOvHEuv3nLKh3dUUT0UH6b1lpK+wQmYJMu0rq89QhiYNoj0lMSc/RJkbHC2lLkdo8Tmpslq/k1Ho/DMGw2m57nYf0KOiaNbJVnzVhxNizYj0CcFThBRshzLpfpwDhh4oJ5O7i0KpVKr9cbdHvC1A9wXdeVIkmSySRKEu15jta63x9qrVdXV8kNggCE5Yqs8x850UVgCgXJFWD7u0O141w61cHOoRyEZdsUxQpIigxBZgGfa6L5Ir9lFgoTc4itxZnZWdMsFiILc9rsxyWLwQDG3pABevxzMpmgmRUhkioQ8UeITNKgZrYIYU7UTtgZS6TTWGjOu2o1BcX+5+xvSSsvuj87ntjDWq0GAP1+H29w2BGuhgPxcdP/ni6dezjWzLPPP0MBHPOYCsFceYIVg+fsiAFwo9EIEtXtdu/cubO3t+d5Xr1e1VqPRiOtlOtOowLCMNze3u52uxg7gRoB5T5ZDhnqGL0IMGOrYBo6MJh7YgN7dOKDDJk3EmlXXvaH1oCcd9LpAqpThy3bnFlwTL/i0tdCMQsZ+Q258bwOO0PdgmM8tJQ3iEXaLJ60nggMoyWrrKYYWeKf4682ARv4WRoqqc3C1zIfk6L7rapy9O5BEEwmk16vh6f8oCCxWM509enD8bk3Vhw3skKyIETaR5OfAdh04vSPRqNKpTIajT766KP6XHO+s7i/v9/r9VqdtpSu1nowGIRRNB6HvV6v1+sNh0MB4DgO8r3jOFonGDdqwc60wwXvldVNSnjx7BBHZJHZyZa873knPl/ESFqnzMTASqwUwbH1gf9p2kwBU5E4p28tQBcs/Rr5n0IOinhMM+WGdBruP6cNgRAC49iyhJo4WdLRpAAAXrGxgv61hiiXyEYEJlAKAyqklOPxeDgc+r6PdWmUUpi/fgaVgHMDxyLteSPp57qeSO+tyFLJLXf0OdYKBAgpNUACWmkFAODIJEmkOzXzR3TIue+pKMYATCHEeDB8MLqDILv5YBosEYbhYDBAFke39XTjJrWEBAtWgSNAxUJKnQkbdgVoAAFag3ZASwEOaFdANB45oIVKAtcRKvE8LwItVAKQr1A8Ld4KpQsADggQQjuedHwAoWMllFSRVnGi4iTRSgon0Upo5RktZgpbYrpfkaz0rZRyMplIxyPz61kiBSBwn6N0LB3wfTdJoiSOXdedjAZa68Gg57oyiiaVSsX3K0rhudEV13W1PhBRvu8LgUYDoaXrehJAY+EhxdIoSF0gPErt8YUXJ4lSwvd9jL2N4ziKleP4SmsA8ANfmlprcaIDXwpmCgOjfyA4gsFKan4SjpCl4ySEZArESThN8NNagwA/cJWSGJvE6/WQ5o5YieENmM+ijYOH3kWZ+GVeYsJhUer4K1AFiKx0rVIdjUaO4zhCShDheOI5brs1/95777XmOqPhxJGe71WkA5PJxPM8xxHmKVOrhdaF6+vJ0LmB4xOQZtY3vmfMJcuIQeHJkkE/egPwflwteBuFvqMljhPXSuhfS8gLRpBWLelFTnloHg/x/kNmmwx5MsP6iXX9LL+41hrA1nDBvDW5iyHttyCl0iq6pjJHgeRyRZaSKHSlUCBUHI3CCbZc8b0kSZTGipoxGUqx4pVmx3YQ+Ba1n+0Acb7InJKHAlUwGyDkWaL5T4454IVE+wa8Eyvrozkbz3loNpsoCQQzGx796U+Gnlk4xp0R7V+kqcxCeGqRZBWyyd6PzMark3B7FkX8YAsY1gYsbJkWm7WFROKwK1jtgiz3W6B2pog2ffQvBxF6NZFHua3BWX1TJN5z/u40j4k5t5TKivIbyP9msQd9xccnG4uSpck49H0fT2UkzQMAKPPTYSdoAAM1MjhYbJx9X8myliU7eSSXKJiM3shhxbOAwbFIm3FKxplIay0K0lIFO6oqjuPRaDSZTPBYk36/DwDtdhtTZIWwK3mdHXpm4dgqQZJrsOPEgYBbRZIkla1Hfjk8bwarDqEhDB+BcZ2c+QiOIQM0WQjLojCw4IqSZXAWyMIRrh3n6iPWi+uMQn0GteM0h6SUR7yIZituKuXMwJOVOUTSPcoEYlqQXcS6vitdCVJorRMJGgDiMJwWrHBdKV1hggZwAjD+kjQG6kARa9HEcX+slBLzpIUp1ImmBhwTHg3Ch4uvCC45isaZM8zBWi7W4skwjaUWoyhaXFyUUu7v7ydJ0mg00LpCr5Ad0qeOzs8sHFtp0MQERRxAARWaVY2QUnqVCt2QpOvPEs5SIrwFH1zrgbwIBCGE1gcrljMft+6dfZ0RiWMxwbEo1o75iiU4pnb0mYRjIq01wMHGhYwAmICAcIwRCwfyxrAW7eW1iVRznClH8d2bxTBF3VDpYz7wOhkTaBbQ5xFlskCRiuDYEjbiMJcyrSCZPtGZWhNMTp8iEcQnphA+AHQ6ndFo1Ov1giDAsAqSeVadpnJd7YnRMwvHwkTkEOuTLSKXSEOxFBY8y4v/EK/XajXUQfAKlWLJJptm/+XwqswhBbwnFnPQuj17fi0AfJ00yBKjkxJkqSRZyURNscF5+ssjS5xDUpuejHaMpYLSovcAjjmzSePjpcA14pNDMcJ1hO+7juPEsRyPx5PJGOVBONHoN3Nd13HREKFUojAEXrMtY3k8b+FzXVfk2Y5VYsfGcaWEXg0Ok7VcYENKO86/n1pDLMbwiYWFhfsPNsfjcbvdpuN+hAmHP5bl+snQMwvHiSnFTZyNrFOUJk/gqJlVSyk1DiMu0gllpDn2nLBSa41nJ4u04Tir4/APWYWafpXVjoUQcMb0RQsyLGXQumJJpqygKm/8LBDxCVjzYvqZtR3zASEGw4PPrWbBFGADw7EWcGfJ9/0wDIfDYb/f39/f73a74/FYm0J6WGilVqtRuLFf8zgWWxCZJf6mcIT9Cu0ySS8WpiIzsLIScFjgWrZL5fdTLArGlgBApVLpdDpv/PDHSZJ0Op1Go0FGbSg1xz9FembhmCfCAYAwRq6iGaUAHTBMgwq1a5x4kHYK426I2qSfW7Y2SHMwYTRd4ayZVbuyLZwvOpT1c7HYANAT6OBpEp++XOWLZhlluZM5pl6ZIqsEglyfyH3o9vb2gwcPbt++vb29jZVSpDmHCbmxWq3Oz88vLS11Oh08B1KnDWjcU5elhJ2jASyAIUmSXNuxUpofRIJvRCGMkJ7rQxXkow49k9y4OxFCuK5bq9W2t7cBoNls4tFrQgiAQyTQU6Qzp64fl2j/zn3WYJQUxQpR4+est1qbim467fJGNx0uDyzWJ0z5K9qMIzfHcYyO7Fqtlpii14k5qQxvI4+fZKfvaFNtGe8huyGqTpY/R5j9fi4Vjc9x7z8ucT0IgQAXJ/o2cdHiC0pWeIFG3oSvKKo5QFNDoQJnitBFTDNCJtowDF3XHQ6HQogoitrtNr47ury0ceJRYSkp5Xg8BnP0MjZOt9HjlMloCMMQy/XiOeWo+d66deutt9764Q9/+OMf/7jb7eLOrNPp1Gq1arUaRdHu7i7y4bvvvnvz5s3hcDgejweDAZ4iNhqNlpeXu92u1hqN3XiiAj4UjWNYNl6bUlCCWX6x59il8XiszAEonEg7JpYG467EmyWLwcCxwvNPVeYEUq50J+y8YDBGMFyD4/G41+vt7e29/PLL+/v7e3t79Xr90qVL+JXv+ybo2OHWdr7peYr0zGrHxOJcDPJ9X9FG+Ih7Z66zcHzhgpc3glCL2K1NQaw4joVIBUsht/FtbPke7awRR9uib60r1ofcb88d0SYJ2AuSTqqZ+Xh622FGA9/39/f38cQvxJ2PPvro/fff/+H3fzA/P//Ci595/fXXX3jhhaWlpcXFxTAMu93u1tbWG2+88cYbb2zv7K2srIwn0Te++a1XPv+5ZrN57dq17e1t3/d3dnYajQbKTtIAiOUQHJWpx4YZ/wjTyM+axYqgFsxt3/RBsWQ8Uo/4YuQrqGhhIlnlDWhUscI9YvRwOPQ8r9Fo7O7uov2w2WxGUTQ3N4dYbCWFnx16ZuFYGseXY50GYqaQ1Fsojj8DAMizG9AqUqzABXES5y36YWJOk6Rq31xT4G1KdkI7f+7ZZCBO1iLk1/mwWLdZNxMWnP335US6P3b+YAPEeIZbCXg0Lg1Yya6lXq/T3i5Jko2Nje985zu9Xu+LX/rKb/zGb3zuc59bXFqajMdCCOkFFS9wvGB57cK1Gy88/+JnvvOd79y+fdtxnMZc+7vf/e5XvvKVt99++4UXXkiSZDAYdDqdzc1NjMmVLNgAuFABgPRuBsxJDpRKh2DNjYQEuOSzIZsM7UT5kiErTcnUK5ZaAmn7D+q/SZKMRqNms9lsNn/2s58BQLPZbLfbg8GgXq/v7e015+rD4ZDvO88OPctwjMYsaTJEwbAXaSiQF8djYUSu/guM1fhnrvUAg2O6Lo0DEH/lum6SaKsPWYshtXPWuAeob/jKLMKCbqC34yNDN2RHOzs754LEQQXUKdpOX5YVEqL9O22PxIEsn8r1ov3y/v4+JjXg/W+99dY777xz9erVf/l/+p+vXLmM4+R4vuvKzc2tBw8e1Ov1jY2NJElWVlb+4H/7v/vbv/3bv/u7v9vZ2++0mx9++OHKysrm5maz2azX69vb26g2ct6WrNQOlRwimx4XmcTVqOuglmqtCww1kaxmkGJxpSKt0ABbC0WU3TLiqVfaBLe0Wi3HcT799FPP89bW1nzfHw6HtEJ5SqQ1icee+FOlZxaOrZXPMRRvoMWTix30r0qXyOCrTrBUJZHWlK3FCcZViMytWElcrFrA8VenK3NbrH/WIis4ERbLdDlQfp3/aU0Kf2X64ZN+h0cgwgKOtsJMrpMu7ehkDkPSpfaKIAh830fL78bGxo9+9KPV1dVf+ZVfWVxaAgFKQxTFvu9qgNF43O31ev1+vV6fTCYbm5ta6/1uN06SCxcu7G5vSCnff//9+fl5DMUNgmA8HgdBwIORyKqGEWPYedzYIfhavhbUlJVSUrgWmNKwIKxLFlmRJIl0vdz3LSLJMgOAme9xx4l1Y6SUqA6jWRxPEEarMbpwsh6U8sF/YnTuXXlFRONLHCaYMsslPFEufFvfUguKlUwF5k+3sIYTKhfKZKaSBS27b7J0w/MCT0XvLtKUvQ4Focdn/H0twp7TtOJFBAvJjokjycRhy9IoszSZTIbDYRAEtVrtgw8+iOP4xo0bQoh//+//w1/8xV/duXN/a2tHKdjfH+zv9wDkcDiOY+U4nuv6nhckid7b6+7tdefm5nq93osvvnjz5k3sEhYtIr2VfIlclyRZgjxM7kfNbA7kLee6BdkWuEedbqZ2VDoquUQ15i3zQUN5EIYhJn0sLCxsbm7izZ1Op9/vY30ljAvUxSdSP116ZrVjGnFtYtQhY4HNwlwWi7NcQgzksINeFMuw4hBDj6BHI7+iphDHsetKLjDIlWdhcfne7SyQEAchRCIjxqxhyb0HiUnK84TFYMyaBMec8cgfAOz1rS1R+RQHQYDaX7fbvXnz5vPPP7+0tPTw4cP+MPrBD3/0/ocfbW5u/tZv/Var1QIA6Xora539/X0waLu0svqFL/7y9evX15dbQogf/OAHnue98847S0tLL774IrIixTmg/ggAmNwEzIEmzDmQQRAgININ+JpJfBC8xLcCJH44jNK2kmvlBM2545Ckz1kXzJWHx/H0+/1Op7O4uPjOO+84jtNutxcWFkajkTbJAbo0O/fp0lns06kQl9v88xF/Xq6X0VrioElXcn8rhMBMLewDlkPUxtfMHRSkjEAGhct79dSJa3NF18tf4Xy9LyedJsJZgmO+AeICnsRtOXPiRnsymezs7Ozs7Lz22muu625vb/d6PQDodDrINmghdRxnPB4LIdrtNhoWXnjhhd/+7d/+4he/+MUvfvGVV17Z2tqq1Wpvv/02nqjg+z7CMUdMtGNgcfrxeIwhepVKhbvsyLNH2YaWck0aDDI/gaAQAiMgrXEgxC8aB+4L5dkAAIBhFXEct9vtVqu1vb2ttV5ZWel0Op7nYeiedTLWWaNzA8fcpQsGuchfByYUkZAXYQ6MBKboxXA0TsJIKC01CKVVFCdhFE9CqQGvCKUhUTpO8D86BBpNZvgZOZ44WJnarLiPw9RYx9TqRdMbiWVhystilKWUvpQ+gBTCkdKNoiQMYyFEtVqdHm4tQYMajYdCgpC2+ZsWz9OYEwAAqV1HuRIcnSgVxQKUJ6WGOKg4GqIoCV3fSbQQjhdpSIQEHGjz3/SlJLiuC0nsgIYkFirxpCOS2H16lnJdQBKEihNQ2gWBfCKlRFgRQozDMI7j0WTcbM0p0FpMa6eAMZViqCwFhCEnoBsNmSpwPVdIT04/OCBAyyhMPDcYjibV2tz9B1ura5cuXLxaqTZB+s25+Vq99WBjO4phe6dbb7T7g4nSThQDCC9ORJyI8SSpN9rPXXtBSP/eBgzD5v/l//Z/397tvfzZz/z0Zz/o9zY8GdV8t+J4OgQPfBd8HQnQMooiKVzX8T03kMLVSqgEQEtHeuNRGEdKgCPA0Uo40vPcQCtB68V13SAIKpVKEARYTUmzzaXWGhcLgAJQQugkiXzfBVA4Tng9+5/rSteVGACNP8T/tE5cV+7t7VQqfpJEk8loa2tzaWnhhRevDYb71ZonZKJ0qCESQruuTJKIpywYdf5psduUzpOxIis5dcZcS39a0pu0TgVxbuM8bgYghXol9xdRrnin7RUcQe/jmhQcQXs6O2QNHd9X5t5JL5ht6ry8MicOOtYkQprBdNqlQTeQlop4ofQ0NsP1PIziunHjxoULF3zfb3c6m9t9TPdYWlrCJDQhBAryarWKEcorKyuDweDu3bsrKyvjoVRKVSqVa9euRVF/YWFhY2NjcX5prjmvjYGI9pRJkhQhlMPOP0RFB/Vi0li18eCh7mxlyRJxbZrMyuXDm7ufwHDjnZ0dKeXrr7/+l3/5l8vLy71eb2FhYTAYtFotrXUYhpVKhVdktuipq8znBo6zWxhtystSBhGYTCFlkpUpg1ObPP2iES8KBihChCI45nZD3oKFSmx9Fr6v9e5nFpuwa7nDqjPhpZBnO0aycPmpr42TkWLlg6035VgsWbYFgL3pIYeEEEKDBIDhcFgVtThWW1tbN27cwDSHxaWl1QtqOBzeu3ev1Wqtrq7u7u5SWgdG2tZqNc/zFhcXkyTZ3NzsdeMwHNbrXqVSefPNH66tLvT7fbLYag2O9EBqrXWs4yRRWuUsAeq/TId1WmCqjxAsn7CqWNysXDK8/E+C5iAIwjD0ff/evXt/9Ed/FMfxV77yle9///vtdvvu3bsYzjQajXBwss7zM0LnCY75nzQNwNgXWFaFYsWxhLH3K6VkwVzrvEiXkyEgcSf3H2ax2Nx2yPuece1Yaw0ayO3GxRj2HCUiikxrDWS1Y/osBLlhz9yaKSeKcNfMlyCMa4v8VDz8nAtskYn8wWrpeEOlUtF6eoBTpVKpVquTOJybm6tUKpjT32w2XdftdruLi4uU3xzH8d7e3t7e3ubm5tbDXrNRa7fXv/jFL7777k+r1WoSTbrdbiVoKKUBHJBCShGpRCVKQyLFNH2DXhA7QwewktUFJxfrKXO5a4WUWUSaEzAecIqPNIX00iD4xkRErfWDBw++/vWv/9t/+2/39vbW19exCD35z8l25OTVb3rqdG7gGDLaE34ITOKmNr5amnvN3LjCaMpJGOU2TgYNQvOEVQrPUgk4ChOPzMDl2PPNnR6QguOzwjpIWmsBQmtN3eKrEfVENKPTqstqx0IIre1QQlHq0jlrRF3l+Z/cksYRFkxKG+eN6c1pkSalRFBHZ1QQVOfm5uI4bjQaUspJGC4sdvb29hrN9s7Ozn53FASBdGBxaV5KWF1b3t7eHo8nrUbrJz/5yZtvvnnx4sUXn/9sperWq25jruX7/mg0WuzMG+2YM1uiIVFau85BTQkwerFg2zVLUbAkEN1fNG7Z+8s1jyzz0Frb399fXl7+lV/5lUaj8cILL/zH//gff+/3fm9ra+vChQvD4RAAarUaZosIltsCeTalp0XnCY458TnLfhZCkBikIVaHHUBwWiRYegg9V2dSSMrhlYMRaQFPnV2yZIY+J1IQiUJui1RjLrT4apyOwNl75XKy0vE5HhGuCRMny+eUy11rGFHDHYeTJNHNZnNvbw9rs43G48lguLezu7S05Lue73qoJrdarTAMP711u9Fo3P30zv/z//FHa2trv/97v1epVFTiua6YjPerQb0aVKJ4lCTJoD9qtzSAg6Mda5UkiQaQTqHFHwM2BMtsxn4SzJH4KbcFcxlM8ctQrO4oVlSAHoohzEmSvPbaazdu3Pgv/+W/vPfee8vLy41GY2tnu1qt9no97PN4PEYrdjYN5yzQeYVjouwuGP/EgwspEIJcCkFBFhAPdAfDc05xQc6iudQsyInfUyzwy+CYb9vPBRxDWtfQJo8AWIa6pd2Yn+SkR5470qzAfBHU4hULjkkyJUmsWIaR1jpRCTpIhCOjKFpYWMAAte3tbQ3w8a17vu/X63WsLoQRRA8ePJBS9nq9//yf//Pm5ubv//7vf+YznxkMBgAghBIaoih0XVc6MF9vj8fjarXK50UpFatECO2wyH0uI7mOTNHHSByac9XnLClWwoI6UMQACavfD6acplLq3r17Ozs777///mAwuH//fpIkr7766mQyabVaqBEDAMbq8Z+fNTrHcGwk6oGBGK+T9BbmHEliIKf4oHg8/JHC43CLzQPpLCpx5QFDT0tzpx4eiq3Zb8t5+umS1hoECDHN4c5qwfTZ+mEeLp/pNy0h3nkLZPEGrviLjCmG8EWxeg4AoJROkmQ4HHYW5pNENxqN7e3t27dvv//++535+Rs3XlpZWRkOh/v7+/jDarX64MGD0Wj0V3/1V+12+1/9q3+1trbW7/drtZoQwnWE44haNajVK0mSNJq1Bw8eoDFaCBDCUWJq45auEFLqROt0MCVHYcUyOHDFDQYDemV6/ZItqWYZz5KlaRSZj3l6NBhzPIqr4XD4J3/yJ1tbW3/4h39IEdDLiyv9fh9X92QywVzwctv0U6TzB8fWVkWkCaeTtlHA4AAn3p26Fg7quSC7YMFAwQ4nhbwzmejRlN9pLTlgzhxya3ANwupzHE/j8Eg9GY1GmHqP7mAhXGxwPB43Go3yYcnS4w5JllIKPX0Q6lMY3o/9GY/HGNmCoxqGYRAEkBNeomlDg9PkB9PAmEQ9HWguEpaOdKYzpTWec4hiHrNvcaaSJEGjAfDSbibSlnb0mLaLUepYHB3VN5G2TQkBrus2Go3hcFirNZaXl3/913/9z//8z9fW1irV6vLy4sOHG0mSNJuNJEkQpre3t19//fV/8S/+j+vr61LK8XjkujJJEtd1onFYbzSTRH70wQf9fjeKWq7jjMfjIKiBIxwhPM8FqbVQWsQgpshYrVYBAItt4nuNRiPceipTXROXHhWvgLTpnJgfeVsbV6SCA101iiJgYil3/ClSTRhlK0mS8Xjc7/fjOL579+5Xv/rVF1988Qc/+MHnPve5hw8faq0RgjHYDqcAX+cM0vmD4yNSITwl9rE6Mn0aAseIojUJaf0XClYvBx2VrrzOPkxPKKCdHRctvH3jTik0khxpXB4PaebKg4xGbEkyYJZ0gMLRO5t0oOFmrgOLGi73AGdv4AxpzT5dCcNQiJEQ4vLly5988kkURdVq9Y3vf/9zn/tcEASffPLJrVu3dnZ25ufnv/obv9FoNMbjcRyGKOSajUYURePxuN1q7u5u+b68c+eOiuLl5eV33vq5UoiKUms9Go20UF7gA8gwiaQWZMFL2LmrxP/UW74R5NPNJzfLBjSOnNvLx98xVfCFUaT29vbu3bt3+/btOI5/67d+680333zttdd2d3cXFhayppKS2XnqdEa79egkCgiMvUkbjwqX4VYjJcxhGayzG7rsB34z37daPxeZ+jL4Wzre5iyTYIFNJO14lIguoKfa62OQ1Vv6TNeVqQUM6Unn90tTwoI2+7moIVhaEwZsPXz4EACCILh27RqejzccDsMw/PGPf/yNb3wjCILf//3ff/3116WUg8HAcZx6vY6Jzv1+fzAYjEaj/f29TqdVqwaf3rlVrQV37tzpdDqO4yF3hUk8Go3CMHQcIT13moeiVGyIhwZbooVQO0sWIlsLx8Lx3JVINJlMcBdCVovJZLK/v+84ztbW1quvvrqysvLpp59WKhUqG6TSCYGCRRmeNXpm4biIeJgOCXbuvsPbDoUJh5E0tYw5M1kf8Db+E+t+C6OlCbMntZrOZcilpwVzKU3HXOExbZJV0xfMmJ7991xQ0djiFWUOAKMAA5pcSEdWSOYly6IP5xy82fO8VqullBqPx/v7+6urq1EUvfXWWx9//PG9e/cWFhZ+53d+58tf/nIYhtvb2wg3yGN0aGmtVut0Oq4nb9/6GEB/779/p9PpfPj+B1/4whfQrjo9FUlrNS2lEoNQ1E9L1bAWkUhb5CyCjF5iRcvlvn4uYRI2/haBeGtr6+HDh3ji1O/+7u++9dZbV69effjw4fr6OhrKeJE5MAbJY077E6JnFo5VAXEA1awqYC4HnAwmSriQN1sOl2RNJo7HwoAn6M+TJJGuFyrY/gPOlVGiiCwXFl4UTOtHXsJoKo7FHH2cvCONebN8ovEG13X7/X69Xt/Z2en1er1eb25ubm9v7+rVK5cuXbx27bmlpcUkiWu16tLSYhhO5uaaSRLv7e2OxyPf93zf01qNRsP93Z1f/uVf/qM/+qMkST772c/Ozc1tb2+r6emOWoCsVqu+74dJnCSJ63t8+yhZ4XZL4hYNV3beBdswZRcCXya5REnYaDLGw7NHo9GPfvQjrBz09ttvr62tRVHk+/5gMKDx5HNxZo0VZ1Rpf3QqQS6um3CFlP/wUOCjfRndyWeacyEtttyOCeFQr3gfCI6VOrCRKaWgQK4XdfhxI6AQAgQApJaTBcdOurYk79i5g2muG/Ne02V0NKF+iu/Lp4aCuiDPcJEkCTCg58Pied7u/p6UslqtYuVMTAb52U9+ury49OKLLzpCDgYDz/N83+/u7at4WqhIgogmoVKqUqkEng9z9W9965s3f/aT//n//If/+U/+5KWXPoMlflzXBwDHcbzAT3Q0SUYKtO95IrGVXHwjdItxSQMZMLWmmMO3MrUEdMZJU47IaDBBLB4MBsPhcDgc9nq9yWTy5S9/+d69e/Pz8wBw5cqVOI49z4P0PkOly5SfNTqjUuLRSRQQFYAn4ltLTuXaKzeiQcZmCkcGGuJjrjIQswqmHZ9x2zH1zbLDWEb2onl5eh0/HnGu4NNBcKxMeb+S33KMpkKRtK3mRD8MgqBer9fr9VarJaUcjUZ4SrSU8hvf+Maf/umf9nq9xcXFbrfb6/WuXbuWJAniLJaRE6Z63N/93bf/1//13/3Lf/kvf/rTn7788stxHN2/f1+YMDUyEONzOZPTTKFmSuep452CldjnlLsKRFofyg5UCT9gEAsAdLvdnZ2dvb29+/fv//znP19eXsbC/JVKBauMou2F8xhNUFHjT52eWTiWBcSLC9OdpMvglaOgnjA6ILcI56b6ICtwkzEnvkQ504iMl5l8F2eKsisN8iIrrJtFWmd5ct19ZMrur7NfAdskWW/H1V4uiQU72JQa558Hg0EURa1WazgcXrhwwXXdWq0Wx3G3261UKj//+c//w3/4D3/xF3/heR4ehDE3N6e13t3d7Xa7GHz205/+9I//+I9//vOf/+t//a/feOMNNHcAQL1exwKhWusoitCVh53BUkSWK0ybuGCZzuMvErFZDsmOCVdryvlhMplgx1DwoL3i008/fe2115RSc3Nz9Xr90qVLw+Gw2WxmXYuWnDtrdG6MFVytEOw4SB0nQkphWEUaYyXGMGYJRSufEgy0yLIUpLUYSK83PB6cIB4fOplMyKWu0+Yq/nNsX04LMaPEFkKAlGhYFK7rgtCNZr3f7/q+PxoNWq3WeNzf3X24sv58kiRSCny6EGI8HlWrVSgoDaxFfhpLEUl1PAmdJAkoLR00dqsoilQcg9mVx3GMRyBjDLXruhIjmzSNCNlwwJESI/7iKIonoee6k3hyrM48AZryDyQOCCFQmkrP8zzP1xomkziOlAAPtCvAc6QnBKAdGc1NOPV4+ABFGSdJksBUoY6iCASAwGBuDSbnMVGR7zmTcX9psa21vvbcpVrV81x4uBV2e+FcazmOw299+zt//ddff/75G1/58i83mpXJcKBBRdFkZ/vh/v6uEOLalZYfvPT//bNvOI7z2he+4nlet++BrIDTiEFJB3zXcV0XH64SpSKlRCwdKR0QYuppAQDHFfvdXdd1pSMTFakwxndMkkQKlyAPjRKoRmAoOp0nfWB8Z+UjSGV2HCcMQ6z4g0XMURmPogj5By3pvV5vOBx++OGHn//851utFka24UGllA9NkeAYbkyxFk+BdY5A5waOT4uKBCOezQEGR0gjKIqJQcVBpMPR6LCPo1N6a3+A1FbcGwbbJ+Z8RmIpismvVCq57YsnqwfwPTi/eM504JOStdHBi3zXRTfgVhoRSimlEhXHcZEOAWYMyaJVrVaxJoOQ20IIz3Pq9foLz1/f2tp88OD+n/7pny4stuqVoDPfdl05GvbH4/F4PBwMBkFleOHChXa7jez64osvxnG8tbW5tLRkjA8KxQy+gkrrxVyZAKZbEMBhMIMqyHLWxbH81sLBc1cRlPEYlDAMa7XaZDSWUq6vr//kJz95+PDhgwcPut3uP/7H/1gpVa/X2+02Fr2jDmg4CKDiw3iMSX2C9MzC8XGXP0pRkdlrF5EV7U/qQFHoZRGl4xAOeq5Z+B0B8WQycYTQiQKtJQidKOm4tUpVKVUEu/oxo6AQAitsaq01TFOlhVF5aLkCjeoZ3SY+KhEqUfSO9S0YUywY+xhK9Gkwr5769IoUN1Q/ccOBup7v+9VqdWHx6vb29vb2w2o1eOnF569cuey4YjIafvvb346TsLe3++mnd0ejwUJnfnV1XUrZnLvs+z4eK0O1zZaXl8l6JsTB2pFSquTAfcfhGA/4gHSdLMnCRWj/ykNrIJMprgpKu7iu2+v1pJSoJ5HaMej18XGf//znf/zjH3//+9//gz/4g5WVlSiKOp3O8vJypVLBcZ6uTQHUMXp0US38p07PLBwXEVdmgaE2955x7aZI2yXDMf7JE5YeoWMpiyElg6J27HneYDDQWgEox5Gu64/H48lkZAzWRbj7JBQBrbWYvsK0G2SOtyyMzyoJk2GEcGzVbxTpajsUiI1so5TSQtJE57aPRXspqQH379Vq1XFr9Xr14qXVerV24cL64mJHSIjDuX/2z/6ZdAUk8d7ubn/QU0qF41G32w3j6n53bzQaYVn6ra2tMAyXlxdNyMG0ZFV2sjicCVY+n14N34hqvCAWe56Hh5NZ7RwMmvmTXweA0WiEli6tNZaNj+P43r17/W5vMpnMzc1dvXr1c5/73LvvvvvKK684jhMEweLiYrvdlqbOjDCRG1y7otl5xOl+THRGu/XoVL4n4liM/5JVC0mZSkBFM6fT1eUtZjoWsd9O8whQL9bMSq619n1/c3MzDEPc0mJVBOS8p1gtUAgBQhjleArHhMIykxDxrJI0qfYWHJNo16asIACgbZQbKyKl0VhRUjoHtWl8Fp0EGsXjWqVar3c6nU6r3RQSAMD1PI2wLt32/CLWu9jTolJVPlTqjdrW1tbe3h76A11X9nq9ZrOJtjJ83JQhxcFhDtbCkek8jgO9IbHLvNDrWwry9Hq6JgktoiiKKpWKEGI8HuNOotfrVSqVT2/dvnv37sWLF/v9/h/8wR9cv3791q1brVar0+ngOa1UWAOnA9Jcl7t3OTv0CwfHllWL2EtlqgWV2LkADo6kBBbVX7LZPJT0NATzYEsIuFs0HfY8b2dnx3GcWq2GEZf4XCzZU1R57vja8fH6L6ZOpwMFWTAXKIbBGtu3KBnP806kHWtTcZ9/JYyxguoFSpZYjMYKyJSE5kQxcMD4MwxDpZNuNJmEI9eTjWbN8xyhATDAVguttSO0G1RrILUWjcbccKz6/b5SCuV6rVbBSm+kQU6fIqZskIVjQmH6DMzm5piatKQ1J6wAtK0aM7K0bzz5FONJOp3O5ubmw4cPX3311eev3/ja17728OHDxcXFarX6pS996erVqw8ePKjValgqiJ/Ggi2TD4auzGzHZ4h0xl5BmywS5hSoVASvtNmEtGZ93M4I5hUBOIhRJ1NekiSOIxB29/b27t2/c/ny5bqo9vt9DSCk1pAkqsRn9+Q4j7aGYBYw+mFoJeDm9In150kSThxZLR1WKVuw+DACL4qpmBoxRArLsoQaN6nYrM04SZIwHONBy51Wu1KpTOvJCRFHUaS0KyBWkCQ6ipK7d+9tbGxMJpNmsw4Ak8lECNFoNOI4xAdNsVhPe46uY8pe4ZZivAH1ErIApDCdOcZpl2khcu77alPhD1WNXq+HBy8FQRAEwcLCQhiG7XZ7e3sbY5k+/PDDL33pS0II3ECguZmCjsmQSDLyxBvZx02/cHBcpPNSZAX+S0G+Rfsa13UdcygqbUVPMM0UfQwAAAexzCQYaOflOM5oNPr6X/7V7/zO76ytrVX9ANeniQzNb/9xR/QQLkD6fCYLdx7FmHOOiNRGy6krMq4wBA5urEDNrsg4NhwOMVaMNuOI3Volge8ppXrdveGgt1lttNvtdruNOSCTySQMYyHEcDjc3t4eDAaDwSgMx5VK4DgOZhJ7ntfvdzEyR0MC4mCN0AeOv/QikkXNExsnSQzMlMeVm6OMHn1OkqTf76+urgohPvroI4y53t/fj6vRK6+8EgTBcDjsdDrdbve73/3uV77yFcFM2BRgx/Uk4smzzIfnBo75aJIKyTdQHMIAAIMWLeevUgoPPrD2fVktmGupuf1RplgMsALH/H6ueoOp5Uq8S88Nw9Axh2W4rkMdNsV/E/yzVqvdv3+/Wq1+85t/c/Pmz65du3bjxo0rV66srKy0Wq2gVlNRpKeVXxJeEYle1sr+oo4hsQHRmBSASYAoclBPGY/HQoh6vY6f8dB4AQ5aJ3DNKaVAa8/zqtUqHu5bq9UwXElIGUWR5xSyHOo1o9HI9/04jl3fl1LCGQsRnWqm4mBzjQNJn5MkqVarCAQ4m1EUYRwCabWVSiUIAiHEZDLB4r+Kx5axvD5C7Wq1ir/FLTm1JszGDp84Gg9G90f379/HeC9MwZ9MJlhEGxOVms0mQvkU0HUyvVlqKQ7OkcKvqAQHXxEUzUZvhKYPIQQedcpXDb4LKsi0KHBwJpOJdB2D41NWJzZeWlrCgvGvvPLKf/2v//XrX//6jRs3bly7vra2duXKlfX1dSxz/Eu/9EvYSeJqcqhoraMwJNElTFLCzJX32MnSeSnkHtLFATCqPAvHp2Xdz2rf9CBIYzS/DpBa3mDiN4WpXKWUajQan//851955dXd3d27d+++8cMffOvb/8113WazWa/XX3311Wazuby8vLi4WG3OAYCKojAMVaLxmQAqjqf6mpRCa5UkinYAUkrjhZNkaxNmo4fsi5XjcRVpU0O9CCyt9z366OEHhPUj/uosEBdvLHJRFDED19E4PxBn8htK1DoHNIBU6cQ3ABiPx1EUAUjHc6WUXuCLONZK4H4Jn+i6EowZROlYs7Aio73IJDnwtXAdkxKvuU9PKUXH6wlGAEAuhCiKUI9BZT9KUj4P/qZYSHM8Hrdard/+7d/+/Oc/32g09nf3giDAXYLWGptNig/4oA6QDDhBcsATo3MPx9aC5+uZPGxoUiD/SS4cF7V/gpkjrhXMH2ixBRwkm3rU4SQ50I+iKArD0HWnVsg4jlut1quvvuo4Af45HA53d3c3Nzc3Nja63e7XvvY11A4ajcbq6urly5cvXLjQarXWVi+7rguOA0rFUYQOfQ1A4ZnAODVJEsfzKA8KzKEnWByrUqmQlgcmBtbx81mIdgAyXdng0NHDOUqSBM7k2YBFxI2qVqQtkk7bjjkHZpEXuFeXbQr5DaRIABzUlVJT0QtTtUNox5TFQHNcNAnNQlDoV5BSCqmTcOoqlPLgXeI4ljIHvHifOWOnAT0ljbCgD6IwiZ84jnGfQa9MLVcqFeTnOI739/cXFhZardZgMGg153i89qFaFJ8IGv8T+9sfN517OIaCGEkqccIBGsVpLhwfN32jBKYtLLYeRIuK3CPUH6U02RN830c9wnVdyhb1PC+JQiGE58iFTnthceHGtedwn+h53vb29qeffnrnzp2NjY0fvfGDb32zNx6PL1661mq11tbW1tbWlpeXW61WrVZzPC+JImCefSGE4zie58TGE0XH7SRJMplM8CR5MPmmFNERFTA2hdaS/yd3pqzx1MbmSEFd54VIjmpmF+KCnmZcsKBd/lsLbfkNnF3pJ/jBjO10hOUUkSFJEuFI15EAKgzHACCl60w9q1oIoBOmlFI61sYRknCXl+M4wM4I5/oEMSraUshJoJKDm0kkg1l9nB/w0SAPbCOQ1o6TJPE8r16vj8fj7e1t3NrWKlUhxNTgbhTtElAm6CfN7MxGucEzAMeclYFtBh1TeVqkTyuITUUFaoF8Drntn0w7pr7pI6h4TEua6qpoaJYmVZqOYY2iyJUerXl0J4JRf1ZWVtbW1r78+us6Sfr9PhbGvXtvY2tr66233vzbv/2WEKLT6aC5GTNll5aWWq2W9DxQSiultY5GEe7+0OeOYfxa6/F4jDyNwRKk5UHBWXa0jaUPJYPMh4vD8TnSjsEkUpLrVU9PLD74ljYWOLMcYTkDEy5rZk3OVVGFEEJJyMu9dF2XzLJKKS1AOABCASiA9JkskECC8Jo6wRq7w1cHX2gWb4sDBVll30ibmhXIw1isAxX2KImtHQB+Hg6Hvu8j2uI5hFrrZrM5GgwRprUxN9N4lswLta9Ngt/ZpGcBjq0rtB9JzCkAvBggF7/8/uPCcTlMc6XYepbFwcgiRl+Y3o/HmglWGRY3mEophGNlCvSgdNHGiUTO+lqtVq/XAeCzr76WxHEYhsPhcG9v78GDB/fu3Xu4tfnDH73heV6lUsFM/9XV1fX19U6ns7xyyfU8MPUJCZrRTEEhXJiqK4QQbpA7Alw7Tr3yYdKNLIz60bIcnzxpFoUm0r6BAz3UOJQOwDBjYpbs8EbrKyKmhUgAmCaqA1C8cKVSUYCApVx/GoWGWX2pduQ0cyeOYyG0ZEf6knLA4ZU6QzEMNL/Gt5cfUJytdWmeksJK+oxe99FoNBwOsfSPUmo0GmENIIpiotiJkknBF6cxRzQ40ow+cXoW4NhSjcFMpzX3YLx5Os+GcAItuIS4jsNhl/pMmiNtoIRxqYOx2DqOo7VAjZ60UXShgImJpvbxJGxgJ8NPnxVOXNetVPxqvbqwvHjt2lX0kGit9/f3EZ03NzfffPOnP/jB95IkUTpA48aFCxfW1tYWFxfr9Xq1WsU4CgRKMihLKcMCGw+PHknDcaF4w1nAbQ1aBs+sBzyXLDhW07IJOa5awRTeLN7xQcvlzxTWa4kQLABT7KUUSgHEcawFJEmUJIlUjkGlyBHT2hfTnxvmlFJiKUHzFomUqAHkgB1nYCGsF5y+OE2oZtnhCIUOOzNJug7kqUcIu2BK6OFyGA6HQcOnEcCLyCq5QguM2FAsUG8Gx4+dLERGDibbMS0Sbqh9RPwt+jlnC52xIBOq6ulOVlB4A1+ESZKYADiUIgdhvImKcYVrrROVAIAjMY6Hc6TJxzChEYi/5GhCK0cQBKurq1/84he11uPxeG9vr9/v3723s7W1tbGx8eGHH2KMfbPZbLVaq6urFy5cWF9fr9VqtVoN7RVhGEKSv0nkEFy0VEp+eL4Mx2DAiAtIrh1DBo5LmrIEWNHNB09BU4UwZiMttFAA4LrSdYNJFCZJEsdTD54nPeonCKU11ZhPhPBIk02S2CjpB5s8/i5oLuDeYFxfkcnvt0YGPXhorKDMEcdxFByoUPyHQRD0+30AwCOxwzBsNBoYOqnZYdJgtPIiEwRvlhbRsRjySdK5h+MEtHSkEkAhWVNhKEBpM9dSCOkAgAJwzaZ+yg1mx4ROM8ES7YQQqAYWPZownQdskOC12AuJ6z5GjQLPc1AdBIAoiqR0d3b2br75zj/66lfv37nTbrertdpHH354+fLl0WgkHdImtONOD2RTehq0i7YFXDlxkkRR5AsnMTZBiSIqEaD0eDgCo+ZIKR0hF1sLS+3F559/AZRKoggLe29sbNy9e3dnZ+e9t378xt//tyRJms1mrVZrNBpXrly5ceOGX6m1Wq1KvQ5CQJKAsbSAG0i/utcdCicIw9h1/SRJqkFtNBrlDibG3gVBMJlMXNcdjfvjySCoehzFaGssmOvVHmd5zJWmj6coCdAAArTUGscZGU9KKbVWvu9pSKQDQmo/cAESABGGYbVaVSrWWidJFAQNKoemFEwmEyldx/OkcAXoiofx8okAcKQEDVppBwRokEJIIbXWiVKgtQAtpZiIcap7hOMSEgy/BeE4rtZax1prPdZTIxgAmpwFluELgqrWOokBQDgycGQAAKAhjke4UgQ7nJRsGuSOpikgF5+Z1tQmiX5LU+lJR2uttHaE1FqDRkXYTaI48HwAiCahI2Q1qCRRLEEIKXzfVybZD10authDgwZoOssVYzSPNeNPks49HHMiGS6KjQ9cQhKe0haGNNnEHGl+XMN/yWRnFWdg+z7kYDoa58/+7M/+0W/+5urq6nvvvYdx77u7u67rOu6Bkwd5mivX3Fk03ZRFCTeMkKbMjem0vwYAMC67eqNRb7fXr1x5LQzRQNHtdvf29tAAfefOne985zvf+ta3JlEyNzfX6XSwvOHKykq9XhdC3Lp168///M9/9KMfIf5iJ4uwGEwcKxpSUJNCo6HrphA5u62hYTx0/AvouGp4GdyTCYKrxnycaeSFOSfMdV0hHNIxudeOb7F5lAKFbQDLGrVenOLuCQTx/jhSVq9EejvCuZTu4RVa8E+rKMcBImvb5HLAWqdBufN7lPb5ijvF/pwunXs4zkJwrlpKxGfFUm/5TlOxgNxjUdFzRdq3w2+2toHoQPuHf/iHf//v/t3/9X/5X158+eX+/v7e3h5M/WNTvYBu1qYmAH62qsEF3sEOlIsf/kTegSiOybaDMXZ4PQiC5eXlpaUlbCGO48Fg0O/37z3Y7Ha79+/fv3Xr1ttvv621DsNwPB53u90PPvjg4sWLL730ku/7e3t71WrVMSXosoQ5JtOz5ZXSWg+Hw5WVldEwnAZRsdTKErPy09J8SGdX7FACi38oJIZ4TE/ju2UcRfgVZVTSLAObL24ZwIlzWGkezvnW+DDjT6GNFZj84B9IYPNlAuwkPR7Y4B5E+B0Jjnm3ddrOUzTOWXlccr9l9TrLWAzPABwjEfcfUTvGe5CfjA03oTOASeXE8MZj9aTofiu0AwlVpMSc8UGmhmq1+vrrr//xH//x+++//4d/+IetVuu5GzdAqUG/PwnH3J0NRhGm5WSd+4cFD7MoTJ2hpYXXPd9Yexija61HoxH9GQRBpVarVKvNZvPSlecAII7jyWSCKLyxsbG1tQUAGxsbaK/s9/vVarVer/d6vaLFgMFPUko6QWd7e/vKlSuOKwB0oiJCAbStoP+KBvNgVI+92E7Hq4OMRzsPiyG18e+T25bqnAkhKKJGa62ShLMKadM6XS4ZDmymHu8DkWOqEVkwLUSqlgBRyv3L1GfJSqMdMJVSvII7NcjZzML0Q0ePfyiHb8hg9xHh/oideYp07uGYM0FW2Tw65fJuidQ9AWXZeroCTdQasrjnee12+5VXXpmbm9ve3v43/+bfrKysVCqVy5cvv/DCC89du4ymWyzsMJlM0DfCa3Fwu54vHGlC9IHF/3HtietWUWRrZMB2EsIcSIweFa11lByM+dzc3MLCwvXr17XWg8HAcZxer4fhSlJKPIMdw+9yiWro4GqP49itVMKdPVTSKdQUX43X5eAfnpZ2jCNAuwrqFQca7Dya+CchHqso4zjWmg5OTCDNeNl2ss8FZgkh4hE4Im2sKHkF64Mw8ftgLBL6CK7IY5FOU7mqm0vlneEvdaiq/tTpGYFjGuWUGbT4fg4uYAJ9IMMcWDrnVPqp0xYJuo4aMa0cjI1vtVrXrl37P/yLf5GE4WQy2draeuutt374wx+++eabvd5+o9GYn59fWVlZX1+/fPny5cuXF+YXtQlDTpJEAAgAF6ulOI7WOlFKmVDN6a4f+V4IDYD/oV7pBQEBepQoAGO90UJr7Xmu43kaYypAeP5BnWWESAwIEUKEYdjpdIQQWDwB8wZXVlbQXZ4ldLmgqMAMlK2trZ3NzUZ7XpvMQMyOQWjGuGxhDOgHBtljZleeFhGUSFONwRJmwKohk+IJgBVzlHTdKd9myvJy3qArhLAqozewxu0eQkZ15ZTlT81MeYIZ94TZWXJr+LTPTo5mU46wOq0A0YouubmkzxYpOqXJ3H9mo9zgGYBjJD4ZxDG5dwqzE+cgrtlZh9yIdlxBfcRO8r5hH9BYQYWyXNfd2dn5zre/vbCwcPny5cvPPXf5ypXf/R//x8lwGMfhxsbGBx988MEHH7zxxhvf/va3AUBKefny5fn5+StXrjz33HOLi4tkSo5NyST+OEsH4Ve4tw15Fx3ruA1HEUVGHr4+cXdMUdKtVqvX62HcfqfT0Vp3u92HDx9Wq9XcwcEKdkEQ4DmVUsqbN2++/fbbv/27vz83Nzc/P99qtwEAy27gSXHAoApOe7KOS4QgjuNgRLbVK1JgHVMuVWuNqRZgbDWu66pYcV2BGqErXJkQQhhJmvJnQlrtoEcDgIBDSu2AhY+grEQPbSIo6CdcreHvy6lk3CAPi09rNq3+zLTjJ0dcUy6BY2A5RcS1pAiTeU6wg7+O1YdD7+HgqFg6ABg/Ce3E7969e/fuXQDAqtvz8/O1WmV1dfXq1av/5Hd/FwD6+/sbGxs7OztvvfXW/fv3f/aznw0GA9/3FxYWLl26tLKy8srLLwdBUK/XsQ5WFEWj0SgMQzp52uowbrT56qJdsGAxJ9KkMlPMkzSHQeD9+/v7Qoj5+fnRaLS9ve26LpZFp3SV7LhpFvWxvLxcrVbv37////l//7+azebCwsLS0tLKysrq6urq6mqr1VLTQLGp4QIfqrQW7uNNgdUFcEZzOi1YkdbIuJ5IAxXHsVLTLMTEZNZEyUEhVo6/6FqQpv6kNsXghTzQwfkH3GEAU6XxcxLn+HKz6+WgwzCNVdfsaI+sdnzA0pm0l3I4zg5j+QrSGWXrLAjj06JzD8fa1PlHpidIVax0ADGNNMcaIgNxtCXXBC9ZLYtz4fn083uIXyHN9ARYfNlg+wiUgpUkx5PQ8HWUCbHc3t7e2trCA83QplGtVpvN5tLS0pUrV770+usAoOMY4xw++uijTz755NatW3/5ta+5rttoNBYXFy9evHjp0qXV1dVms9lst0FrFceobFJxDxw6AATWBEDgoBGmYLIWjl4URdVqxfIace0JdW3MGcEQURpnupMvMJo+KeU//+f/HAC2d3b39vbu3LnzySef3Lx5M47jRqPRbDbX1tZQLCFwm27DJI5IsJHkQOzLXedKHRTF5iUAMQuRarMxPVOIdNgZf3EpJSYsAKtKkSRJrVbDtG+VjrvAkxEBJFaLdxxnYnjJ4k/iZEgHuun0sFPfHFNimPzDgDq49LD8NC4Q2otk+RxfUGkFbMvosENXcUGBAWutteM4UTgNe+emFYroJ7lOL0KighzpYAqIlxBffTrti7bnV08nV5o6nPV6vaTM/9Ols9inUyFRaoE6C8TxKKtB0BXiePpKKRXH8Xg82Nvr3r+/gaw2NzcXBAFC1XPPXX/ppZfBcQBg2OttbW198sknH3/88c/fff8Hb/wIj5NYXV1dXl6+fv361atXl5aWGkGgp6aGadaTUiqJommyfxoOBO4tHCdwnNFomiaAxIUfR1tuXtTp/Wn5KF29elUp9corr0RRhDVFt7a2er3ezZs3P/roo7/7u79zHGdubg7N6IuLi4sry9KkwlPBmiiKMJAOjNEADHKRJRFRhoadPIcEE4gvcZTqHmIy37ZrE3xGcG2pco6pK8/k0HRnoIqTfVFe6ux23smxEVtygvdBp7ePqjigM/tD/ifJFc2qEqIcpbfQjOj1szOexdZTJwsKziwsnHs4zl3b2Q/EH09rHvgagLw1YzElbjaLSEpJlUJRMez3+/1+f3t7G5VrPHTHdd3V1dWlpaXLV678+m/+JgD09va2tra63e577723s7PzN3/zN9vb2wCwuLh4+fLlpaWl5567Uq/XFxYW6vU6GjcQkqiMhkwHnzYaDc1MxlkRaCkvXJWGzARlaTKZoJLred7S8vLSysq1MAzD8H/ze7836HYfPHhw//79zc3Nzc3N999/fzQaVavVubm51dXVixcvYu26RrUmhMC0CK21UhoSpbWWjiMF4HkrWmtlOi9NUQUAAY6x1WI1QK29oDndpEPKektzqs0OgGabLD84CDz5E/U2AKnMlq5oHGhsbWTJ3AYZVZEgWEqpVcoGfcS6slldAdJoa2kPnLeVOTeHYzEJPy4Csw86tCdHp+wqO4N07uEYCvx4RcD3FOHYusL52LIgAwsRoYUEZgOrzWaQyrxR6gcSRjLgDz/99FN0kTUajXa73Wq1Ll686Pn+q7/0S/igYa939+7djz766NatWzdv3vza1/7Cdd1Wq7WwsLCysnLlypUrV660222KfEjMCfNoMBmPx/wdaRc/Ho/zN/sZLC5fIXEUImqEk/Fw0Mewikrgh8NB4HvXnrt6/cZ10Ho0HO7v7/f7/d39va2trTt37rx582dxHNdqtXa7Xa/XX3jhhbm5ucXFxbm5ObRdhGEYxaEUDlflCI5RVyWIJPVfHQArpbcdhLoLIZRSzM14gFA0p5hzaCY0J6mhnH+It6nbuXyV/Yw/VCaIiBmmUu1bk4L1UjSzL/OB4lw69ceIVG1rVSu41gAAYLNJREFUzepaQDpisqjDJcxwArIeBGlwOGt07uHYWuSWBsF58ekKRktCAGNNlY7Ax+u4pPnP8UO1WkVMxHYoDtdywZGDa25uDu/f29vb39/nznqEp/n5+edfeun5l14CAFBqMh5ubm7evXv39u3bd+7cefvtt4fD4Wg0unTpEkVuLC0t1et1z/Ncz1NxBZ9FYWr4dB75wF//uLOArxYEgVIKxQxGW5MxhGI/5ufn5+fnL8srU/gOQ4zl2NjY2N/f/8Y3voFcUalUOp3O+vr6xYsXFxYWWnNtx3Gk44Cxhiemvv7UKWf4anrdTWn3hMtSTDOJkyTxfR+mHHjAiiQ1KbpcTYMPtdYayLFcUJKJG1X4vwloi51oWLgIJKGeQMIjvVCs8vVCK8U0m4qfEQcuhAM7D/8gwIY/GkDeJa4sG/GW+kkRHZd/LCnCx/AM0rMAx5CeJGI+zprs5qc2E5ybIcOsRSzC1xgAkNJGGgo2O5lEhCDm/57WOkoSkK4jXQ8d8WZY+v3+1s7e9u6+lB8j3mGQ2XPXriyvrV+4fOX1X/01AIjCsNfr7e/v/+hHP9rc3Pzb//73//Uv/n8I5WgNeOnGtVqt1mq15ubmarUa4iDmOtM7so5J0u513tY7S1T3Gck18bnkc8MnHiCOOw0jq1arjUZjfX2dbsOMwfv3729sbLz55pvf+973oihqzbWxoOj6+vrS0lKz2axUKjyQgPxgOHoxJXpoSonGgLDpFidJEg/L+eupm02YOAR8dypno7VGuzOAIPYthxtLNc7eT+KQ8zwHU3Jqcf2ADMGW1pLtDCnCkhVCkaxCoU4fR0C9tSaay2bO/9TVohEoGp+in1hKwHHR/AnTuYdjyMM1zWxSnCGeYie5nkhcaPWKr5DcimVaa8dJaW0ckfnqojYdU1tWmTJaeH+tVhMs9XYwGAwGAyHE5sMHSinP8xqNRqPRaLVa9Xq90Wg8d+0aaA1CxFH04MGDd95557333nv77be/+dd/KaUMgqDT6Vy4cOHq1asYAT0/P0/QgKZndCGSS+2IRAF5pNdjHEitViOgIXe/EALk1C1GBezJx4gWmFdffRUA8BDi4XD43rvv7+7ufvjhh2+88QY2i8aNl156qV6vdzqddrtdqVYBII6iOI5VrHzfd11X6INDxIUQaF0GU+kcpn3TXAGkADVtoibMrAmg6MYCLuVMnotudIMygYmQQR8aJWXijvAiZYRyfOTImIuSOkPA0B8YFvMfWi3DMeH4xGSJpVNv/1ToWYBji4oULjEtvPk0tWP6rDO7QkgzKIdv/sPxeHpQObEvLi3uk+HNOqaWIxjjBq/oRkR/SmeKd3t7e+gYxJC7TqcDANVqdWFhYXV1dW1t7atf/arjuhBNdnZ2bt++/dFHH3366aff/OY3+/1+FEVLS0vtdnt9fR3PYF9YWOjMz4Pj9Pf2rNcsF5Pk+iczJZqPwUSYaFb9VikVRwmJK9pGYCMoD3Ar4DhOs9msVqtf/eolHBYsKIq+wb29vW9961toGHFdt91uX7hw4eLFi51Op7Owhs5Socn2qqSUSRzTs3hUCYdj2tMgHAshxNRyLbQRmZ6Tz5+WAnvAPCLHPMrlvcV+5IklwQwZ1M5tjTeiWcQeDa+eukBS3bMUhaPg4OmqTU9dDzsWnRs4tjBLmlhj35FxHCeJCoLAcV3yvSRhBFPDhFbGHieFKLJVkO+LwxOUxDMWXyelADKhx3QbsXWJVpt9dwDwPNSLE7qmNShVGKcZTWLXdcU0xEoqpRKVOFJKCUol6Gd3pTAmQuVJTzoAZjedJAlokNIZ9QdxHO9ubd+5dRsPf6rVakEQtFqtdmdxfnnttV/+CuJ9r9fb29t799137969+/N3P/jvf//9yWQSBMHS0tLS0tKLL764srKysrIyv7QEAINuV7AjAtKFdbTW2vMPCmxq0KC1ACFAxHGilAIpcLeAeK2VdqUjhRRYVd3sCaYhYUI6jgQN0SSkcLXJeIBTUAnc2urS+tqy+KVXhRD9fn8wGGxvbz948GBjY+OTjz/42U9/PJlMhJqe1X3lypVLly51Oh3f91USNZrNYa//7W/+t5/8w8867YUoTEBLAdLzAeMKtNaYecgTcJBdpZza/V3XVXEILAiP7vF9nxhSmaBdFMNaa620ABBCuu6BfRZACD0tsRbH8SSKpZRhEgdB4Aeu1tpxhQYRx2FQ8ZA34jjRWoHQUgoKMJcsMxtMrJ40gdXcaqGUEkJSZXohxHQnwarIktGZzNaSpXdy+zJnfvrXEfnYSi5Ei+JIua6bRLHv+0kU+64HSqs4kUWFc5+q3nxu4Fhk9vhT4HPyDx61FMwTP/e0RGtRO09g32Rxdkl/dDr6lQsn3FyjpqyUQoMyLhsMsahUKs1ms9PpNJvNy1euXLx4UUoJjgNabz98+P7773/00Uc7Ozt//ud/LoQIwxDD6S5evPjKK6+srq7Oz89TB8j0jKko+BQSkOTJpD7zra7nelnYogiQrKaGdTCsLQLq4IuLi6vr66+8+iokyXg06vf7k8nk/p3729vb9+7d+973vvfNb36T48vW1tatW7fW19crlQraZwHAcaXVT9InuAeMwMgS8jRNmABJ2EcmIErB4C+l01YsODBVH2RF6XQ9JtLfKXeGNF/BashRh/lgalbWlYJJuGWM7xJ02i5R/uG0iPhZpvN3zhqdGzi2iBabdqd2Q5pya7K5rlpC1g3U1HFhtKidw18pTafOkZbSwa9nFwzvA19CYJQjvpMYj8fj8Xg4HG5vb3/yySe+7weG6vX63Nxcs9n8yle+8vr/8D+AECDEeDC4ffv2rVu3bt269c477/z93/99t9vFuLrr169fu3ZtdXUVs1ocx5mEQ3KpKeNG830fNU1a7fgtAPT7fcRfDO/DzmPQce7AGqOBEOysQsJ9MI5Ex3GwItKF9UsAAEpFUYSB3hsbG1iSf2FhAY9/bbfbyJ+e52FVCm0ym4lXjzg7/CtyANB1bjHIXQUkwyQLSuPzSz9ULBUeMlZmUn61yW7lrZERBgBn+OAkPcujaL1jtiflPHwCEmmTIA3I2aTzBMeEsyS3IV3CzeLm7AQfCq/8/pMBYlE7pwWvxxUPVh+sBaDTfiGdKWdOK9AEZh0czo2Jar1eT2sdBAGdVYy/wjOAHz58iKhUq9WwkDEecf3cc8+98OKLICVoPRoMer3em2++ef/+/Zs3b37961+P47jdbi8vL7darS/80ufxnJFWuw1SYok7tG5rs8/lMNFut9GPh3gNxsTM6/Na67NoPKllYOpe4BqjvON05uc7Cws3nn8eFct+v9/tdnGs0KHn+34Uj7jAwEYInZVCz5tQrFCJNVnYDWyTqmNzEwG/05I6/CuaXw6R9F6UJa+NZo1ER5VnG+e2FMWKwFCf6RHZnlA7lnjg10v4uYjDc2eSjypF5hyr8SdG5wmOc4lYCpgpNjudOq0DZolrf5BhlJL7y284tJ0iOi34ptZ02kgHaXSG9AK2ZJ7WmgecAQAmg2itqZikMilniNrI91hYjqAKY3IRyqWUtVqt0+lgfspv/ZN/Qv3Y2dr6+OOP33vvvfv37/+n//SfEEQajcba2tr169evX7++vLyMBgF8LvrcsP+j0UizrToAYDfoTUnvw89JYudB4PuiL0Gycij4XorVg+bQ5rpus9lsNBqO42ClDillGIYgDkovcY2SoWhq8DlX4UUSNqQa0ytwgUEkjK2GPvBplY6k1cFVGXqcdcUxVQbxOskSmYmDphvAnDFGdS3IGpPLmZCG+9PlfDAQQUL0zGIxnC84JrTlE088ZH2WmbhL/m0RHV07Lmon+5STsVc5+x69P5DZT1jtcEGlje2Y2qTBpELGtLqEiRCgFQhG+wCjJmuTQIgo7DjOYDBITFHjvb29hw8fojqJtYHm5+dbrVar1fril770xS9/GQAA1M7Dh1gOaWNj43vf/f5ffu2vhsPh3Nzc2traiy+++MILL6ysrDQbc4jLoQ4d05/JeKK1xkgMFliWOpE+Skyk2nQ4puMTVGuIO7FS07pBQkjHCcOIjKIJTA/z1lr3R0N8UJjE4yh0HEdIEUWR50x5j2vHwGzHpFdOUcPUprCmj4aX7DMWEHO4FEKgWRnSVSmUUkIKgnXUiF3jAOdPFJRlx1YZNwRzfqPEd2IYzU6bBAbZkBGHKi8sT5+edizkQbYkEH+eVUQ+T3DMiXkJUhoHzSJnI66KFG1Oc6+fgC1y7z9BO6dFtDyyq4iu6PQ+lK8NuqFSqeDKoQqZOP50KDK6/pXJA6ZEaqytMZlMhsMhmNI8CM34rMlkgg/Cshtg9NlKpeL7/vx8OwiC11577Ze+9CUAiCeTra2t/f39Dz/8cHNz87vf/e6f/dmfCSGWl5cvXbq0tLT0/PPPo7rd7nRAyngyGQwGo9GoVqvxYeEihw8IfcbX5HooyR6OSjRcdPQ41lTCisye5+lk+nZcx8wFIMjDFP4UAkdu5+Vzx3srWDADGNcc2ZppEOhdsowBGd8dX0S8QZkJmJMmP57vUSzKPtRq5BSJ3rpo+Z8ROjdwTJNEszvlpDhlcaPPksV+At+sHW0+rMc9erdPi07cIIdXWqXZe6wAO9opY0l1xYJqkYQQmBSHWdEYAFCtVoMgwHNAlDkhG2O8yABK4OI4DmKZZiqYUqrb7cZxvLOz5Xke2qY9z6vX661Wa3Vt7cWXXgIArRRaqG/duvXRRx+99dZb3/rWtzBYeHl5+fnnn3/hhRcuXLgwPz8vjMWACF/N811rrglelYkFBoYv0eTghGY+dORmxIjmwWBA5gK6gT/FeD5s2zHnTguLBTPU0rjxynC8V1xsgIFjKaV0HNKO8R6Hleu0ngssQlmn6ywDE+ccnYGtTW7qkelgDP5Ezk6PyN5ZEum1LKU8s6oxnCM4tmYRmVJKGfg+ACTswEdKjgImz7PrxyJu58IrfJ9VQhboowLFf0W4U/RcYDLG+jdLxxXvqI0KsyukISJ0INsi5C0Mehxpi9a/VHkOBxAfNx6PlSncrFgcFZY8FkJgeBkRWkIIiPEerEuXJBFGdOGdeCgqvlelUsGMwaWlpYsXL/6j3/xNECIaj3d2dtD0/POf//yNN97AsLmXX34ZS/Jj8Q08aRAtMzyFT0oJILTWSayklFJAgjjrTCtQc/0U70cjSbVaDcMQz6AaDof4OmEYVgO/3+9jASYM73Ndl8ZHTIsTuWDe2pEOnUEFRrxRiAiXWMKEPXDoJMVZSkkxi1JKimlzmMmbsmmUOaYEhwKfiPNCLlBhihFzvrWGwnGcKDyog0y3EWPwZyHPkAgkZNfFBnEhhErSFU4NFa0LfCL6dcMwxC1aHEUuc+2eHTo3cFxEJIdpBwRpJxVti8oFL7FFrtpYRNnHUX/oW96xp0uPqOkDs11YTWWvUIQymIQFPkq5LdO3fB8jZT6LhmEchv1utw+wgSYRNG7U55qNVvv1X/01rLkxHo12d3e73e7Nmzc3Hz784T/8ZHt72/d9PAf2woULq6vL1Wq10ZpDyTGZTCaTSZwkniOFFNJxfdfRWiuAcRQqpSRo1wR+AYAGSLSKVZJo5XjTQ7gTrZTSvuvUGvVxf79Wq2HjURSFcTwej+fn5/e7Pf6ypP/CMQ9fTdgpIRwZuV5PKrDCYvsG+hNjp+ZREFynhmKtk+YXO0+OStTv2esAHObY4Pec+jKhNcif8ugL4THRuYfjcuJYnIsjRFz7EIzK+SMLx5A3908RjrMgeLKe0MjoAhuf9SBpDqEQzOJp7d85Zfcilt/fIrqulMKiRcPhUAgBWw9pd1yr1dA3uLi4+OKLL2qtoyja39/HgqIffvjh97///b29HTxRZX19fX19/cKFC6urq/MLC0kco12F7AOosEeTMWmaAIBB0KgRV6tVMphGUTQejzHsJAzDyWSCxwZW6/UgCLA8CBjVUgjFhjentplOkzVupKTTtzytkdjP/Fhz7YQ+UzuW4CziFn7IlmQUR6lSsRYaFk2lJQBOcb1opnSDUaKPu8V8YnTu4Zi8EzTEfNyPiMVggIY4WGa8E7lEPM3vzALWCXjruD8puj+7hukdT/BcvlT4NpM3iH/SflOzCPHy9i2w5qso92a0JpNZE9F/NB6TfocHiNy/fx/ZA/MG5+bmXnnllde+8AVsZ9Dv3r9///333//444/ff/99OqD6s5/97Nzc3KVLly5fvtxqtZIkwXhnyvqlc7vxudVqFS25GOSH2qiUsl5tjMdjPAY7iqJ2EARBsL+/7wcVGhwhUmXQrEEomQ4a8GwAA6QlFo08FgiV6XgJzUoaSXasVMnTUTvWzP4wVcaFbYsvkanA8DoraU6RaCuQNZSfKTr3cFxERXrxyWDo6KTM+TSPo/GT9Qc/cHkDx+dIvmwsXYZgl19EEySYmCcuI4v6yQUqKY8l2jHqxfTn1HHkTutXWCXxkiTZ39/f2trCNIpKpVKtVn3f73RaS0tLV69eRWPi7s7OgwcP8CjYW7duffvb306SpNFoXLx48caNGxcuXOi05vCH6F1EOEYUxsdRASOEodu3b6+srADAeDzGPMMkSebm5kbjCR9bzT5bH4DJvCxmEXpyHQKtLoIZ8QSdxqvtwDKSplysHsqxdBtHUvpMz6VOHtqapc4X2QxPgKOcl6am8BkcPyYqsh1D2nVr6XRZIv2CCK8fEbY43NPPTwZ81GDu9eOKk9w+lCy2knaKJBywhU33c1MD+V3LF3m2QSFEke2YsN5YEvAnut8fUg634zhSuK7jAsBwOBRCVoJpWdEkTvZ2u0qp+/fvY4gCZgy2Wq3Ll69+5uXP/sqv/joADAcDPGnw3Xff/eu//pudnZ1KxWu323im9cWLFzErut5sor6MauZoPEYnGyTJ8vJyEAQ3b9788MMP6/V6u92eTCaNRoOLH4G9R4tBgXZsjbAlFFWmQhvnQ76DTFSStR1Pi4IeGE8OWSzAXOVmmox3Mcmxjx2qHVuTforaK40ApiBN4Vjrs4nI5x6Oi4gzqzjMUkG3WaxwlF9Z5LDDcTmzJkc7lOzUKfsKJ94V5iJybms6nWxthZockcrVNF5SRxh1OIoivxIcFHjTOoyjcTjBkvAaIErigz4LEI4MTLj0aDzu9fv3HzwgRZKOs/rK66//+j/6R/jc+/c+3djYeP/99999993vfe97Usp6vR4Ewauvvur7/qVLl9bW1hqNRhAEIES/16v6zs2bN7/73e9+8sknS0srC0tLQggWBnfAc0au5GvH1r80BeTK45qpNHX6pTmBie8zOOASe1D2HRSEo1mE4eS8CBFed6RnKcsljUBGclivnMMVRQ0VEO0eUORQWedTRPxTpHMPxyW2Y5HZWZcQsYVMB7qVU1ZJtJQU6slx4fi0tOPcH55AO6ZvD+VjbbxJtLx59eEj9pCo6CcqHZ9HClqopoGDVmWyyWSCZgSM1iIoQXMH4hdGd1GZ48lkcvfu3Vu3bmGKNp4S0mxUr1279tprr6F6tb219emnn25sbLz77rv37t1D3FdKLS0tLSwsjEajux9/cPPmTYzGw6KdjUaj2+0azDJIxIVEZmtVMimoF9PxJWBCpPH8KmJpacrwj6NQ59mOrWTo8kmBdJF7wX0tKmdDdsQ1aL31qRBpx4qVptP6qZ2ZWU5nIgDrBLS7u/ud73xHCBE4U1YTaeOXSBsu6DWpuAHxEP6K0h/o52AMlLkdKBo3na6GbgE0pI2tJS/IT27mkqYI1kvMcxTYwD/z8eFdKloJ1rDASdeMYnWIZLqeb1HnRdqzSkBAWjAl+2I2YG47FA9O70tKmTUyUDqYCOtoO67VanhmShAElXodkmQwGGxtbd2+ffvDDz/85JNPtre3e70eRn2MRqOlpaVf+7Vfe+WVV0ps4lmAQ/O0k67PSz+P9YFvgM9LEZ8QPPEH8Z/TBE3bn4StVkuYGPMwDDFkm9vH+XPH4TRCHPMqUf7hAY+u6w6HwzAM8eTD6Yc41GlXpDKBybnr97hc57o+jnYYhpVK5XOf+5zr+1NLRaYlfSLb9CnSOdaOT7bjIAtmFo75xHMP2LHap2wu3r51+M0R29Ess5YCiU7R6GHtJQmhTqv9kudC2kxf8lDJ0r34RV5tElvQzGeYS1z8QF4ADBxhguhQqMFg0Ov1Njc3URtA5bperzebzV/+5V/+1V/9VeG6ALC3vT0ajXZ3d2/fvr2xsdFoNHjiT5aQf7TJP+ZclH2XknEraV8b3yaXTJQuJFk5CyklJAd5JdKkJmIjuY9AIwbJe3zZMAx5FafyHv4i03mFY67TnezncBxwPBXKSvtDtVG67dAosfKHQgZ0shpu+fIo2Q3kXi95Ly4RgSloJUSGDtorUASLYJZ6St4r6SexjYVxueOTJSydzPc62DFM98KKSJId1bq8vOw4zsLCQrVabTabGByNIRm57aPWSXKFEJm7znL7bFHJ+GtGXBzqtJUPsBCHSlUZxZdyHIfK9tNwTfUYfcCo1DifX8F2sU9gAXK1+uwLgHMDx1yXEcVOpEOJMzqkmQNvwA+kdh1XG8V9HM9ZIm0C8hC5pJ8iHbqEPXeKDpUppnLt74g8elorh4sBa8xzidsowcAfjQkPqKL4jUP7zz8XgXLR+6LrjIxIxEtYoogjHQLWe++9h6YY13XDMJRSoqEDiyUV9dPaOnBMsXt4TIRRphAHPYibnrlsw0djZB538WljJrK6bYl2LmvJKsVf4YmBo2YVM57ME09M5waOT4us/emhM3Rc7e/QdgiLnwxT0oOsf60ROHE3TjA+1lflj6bTOnhkW4n2elyxUbR7KLqf6jsDAKXtaa09z+OaJnV1fn4+DEP0WPi+j8A3GAyK2idTBn8KiRmui0z7eSI+5HAJxieh00YM/OwIgVd4xU5dbOfx/QBbIxmJdTDQiAFpOH7y2rE4WpDV06JzA8eWJmWx/tGJ12Y9iu34uFRkOyaXLhwt1Iz7yrG35Lk6WccssjrwJFUVrs8C07nK7+cwp/MyJ3GIisYnuxqpzSMCMRJOJTmyyIrKD3nCO7F7w+GQB+QJITClmw4wzb4vpMON6X2tHhouOt7ECWY6wBbQVUjXFSvfkySJlNP0Qm1ixXhYm8ho62RUofflFfv4FDwZlju64nUW6NzAsUUnhmOKfBKMShbhY9KOS1qmbzknkSvvuHBcrh3zt8hi0xHbP+799KCjLBUyzvCbKdFDpqvukk0zl7IMw8XbEUGZqtNZXaI+WLiJLjKqKYpUq9VKxAbfAXDJYfXwUP7JvU4iEIGVnoVHtAhTLvUgOlM6mPNNRe+4USirrdNhTmRDx4gX3mF6NaXUE8BIYvWD2T/+ruLJ0HmFY3iEQKtcZLRCKcjYdFz4K7IdW3GyR2lHZALdTks1hrT7hfDxCWgQRbpeEdEugbpKhki+uQEDMUeE4xO/LEkCCxDpKFWyKZPJFZEaCwxhtc8SsSpZMTZ62RN0tWhgeQV9sn3jYGJENj4LpSBiK2ZPkM2kqDPY1EFgr5ErqH1LnoL4pJgNGBY/gWc9Op0bOKb5o3Bu3/d7vV612YBMZQb+QxLjFL9JLE7Q4JiSiRaV9AcFPmTUTwsgeJ/pRXg7CDe8ADFt8Xi3sx0gvQnS4QpWf6hGLfdxZeGAflLEuFkXmTbe9tz7i+AGJRMJG2ECh4vaoSBlylPQxp+JyEvojCbaov6jSwoMnlIldciMDH+73HZIswM26dVqlTrM9/I0DlQwWrIaPZAx4/KIBT6M2VC/6XUxzbjhh2PheHI2oMchsFoOScTZ4XBIOj6OJN4spURhg7ozavrValUYRzcqH3gnD+Mj+EYZQOhMIyyEiKODYBg+Jll+tj4fkYQAFNJKqU6n4xSEt58ROjdwzIl2ptIUcoW0UxsMzOmMw7eoTStGiiNp7v3Z6yT2ix6R+5WllXMoL2qnvHH64dPVCI7y9Ox6O1b7lkAqf2h2SwSlk3VoO9SN8ucW0XF9CSVkpa7gn0n6WAMuZsp7a33LDcokgIWJr9DsiBBzQ86A5A7+oS9VpO4csYXzSOcPjmkzhT5u6yud3gjzbB840VwWMZDVMhwGx1kN2oJ7q9snCGgj4sNS3p8sHXeIyreuWbKW2YmRqAiOi8SnTueSnNjso6zSP6Ynp2hHOkGXaDuVNToDGysokEbWnpJ2eAivfJpoT6PT7jjabgpD2X5aO7Dyec817h0qS847nVc4plq3pAUgWTZfUpAPDTwkbdqiovsp78jivyOCCy0AK77Y4r+jE60WawU+7tJFx10eWdv9ieE42wFxBK9s9t9jUXb7UoQ+5cQNGpyFTjBfpLQCs+1QaQ5gkg8yfGI1AgzB8SeJsbPxFUSaBOoN5BV0HCfRKX8mwXR22I8+aI+iTp0vOn9wjGTFrtN14rMsnh6qveZqbSUcoNOZRUeR+UXatPWrJ8B2T4uz+ahaQ/dkHp39/AtFXKu1tGOuW9BXZGXmlViUUnRYOAZTo0HZ8zw8YxDSPttceXCUlZJljKe4C3kCdG7gWKQNEcg0WRcZKcsWexGLFLVfZDsu+Yn16KOscOsV6KJKV9I6ATzx1kTG719y/yNS0VNK2rfG9mTapaVi0+eipkrEcFEni65bHT4Zsp+i7ZjWArBu0+keVp/5bXyNcJizGFuYOEu6ga+sIuJWOL5V5S2UvFR2pfD+P6t0buCYExfdVioBfbA46SgIlUsly5L3JDd8NfdXOmPag/TCOBk8ccpdWrn9z9Jxh+hkcIyeHxoNeVhl+tznZve/5XDMvzrxCFthOeUPfTJEZgpgfrYS8WPJEouTiTOVOQyQcJDPF1ZoE6aGPfucAm4L2YFBfPmMH2V7+uzR+YNjvvGhkCkOu8gN/OyvQ1VjKLYdewUHgBNr8v4ci4jvqQWROdbkWK1ZqpY2ESYlT8/So6hpR6FTkTdwfDi2VC36XJKOUXSdT5CFYkenU7QdU2oGmBJLGNDJ+cF6TQuyrc7zP/kxAvQVRsJhrNtoNAKASqUihJhMJtL1s0NhYTEcQYbxAhenwjDngs4THNPEoGSm2Bqsz6JNiC6WEaAqJzyiHiMQaWq5d8IK+6WHWgFDlj5LPEqdKVreVGCTBAmxJkGwZKm0PDyzfEwgEzbAqURTptfRJs+CL2nN0lgw8pTe1EIQnZemUdRtCpyCdJAv1SOm31JILD1FsHBs3/cRg3hRzXK5SAIbDBBrrekITmAh6kg8dIx4D8U/T6PgWWq5ZMld690hLVGwFiuCKRpnMauIGxn4v0kSkyDnT6FZsOaCotP4+2LFfb5q8E4p5Wg48jwP3ebKEP4WD2TB4sXj8VhK6ft+GCssp0mBT0IIzAinfD8wERpaa6WTrFjNJVo4RZOb/zPXCZNEaRXFkVsJNJRp3E8d8s8THHNGIZay8BGY4YJ+SJZZC0+tD7lU5KEumv6SZUm9PVQ1gLS2TlGfulhbL6LcZ4mMB5K0HovphfHeQIGRF3tF10uAuJw4FitW8Jd3kp4I6QLqwCaoaGAtYLImVDPLCV1X7Hw/kpfZlo+rux06RBRsgweLJEmCpeA4vJ54nIvel97CiuSj+Dnef2DDzsccxZs0x0GA2b8qpSgdKTsLj5VIigshsMzT437io9C5hGPBzoCw1jD+SSlYFlnTfxQba3kLJZ3MvZ5FLuqzJSco2bcECI5CtGnlnc+Go/Cf8F5BgaeRPqt0IBRh5XE7bA0C7wz/ioso3nm6XmScsSZOZ8j6ysJiYOeS0D14P9f3S55LTZXIDGBZi6gUo06KKrmFobmvdih/Fr2vlUVCV6x0f9oFSlYtBNgpAcpMGQ0XVVwiojVb3tVTIRp23/fpxJnyKXiKdG7gGEdQsdolkFFMOB/whcSJr17+oQg+LA91bptWP0u+tZZTlilpyXHjBl9Cx4U5yZK/eYMiHYttDSMfXgvmcrGAh5qqdIXiIxK/H/ssTRUbaQgMWFjCGDLG0PL2IY1K/F/+Jw0UMKFIv6I9O35V7vHnTy/nH9d14zhGjRKMgYX8acB4fvpvXrNHYdGsnOAGN2qB6h1bi4sPOPcfKn1w7hcNmmSn2FicVtLP0yLsWDZr7AzSuYFji4QQuVl5RDIdiw4nhVGq3Gr9e0QtrOi61Te6h1gZtVricg4fxyJrl0CLuRw+RB5BARafCnF0sKCw/H7++QyqPNkhIoWg6H5CRqraw082svhQ6RyjzcnGgTMGtSaEXTOovHFclQTQyH5WzhSf68c9YcJUuEXVGKX7GeQTpHMGxzSOUsp6vc4LU0hTDkawvXP2h5ytdXpLnvvEbHwowWXu/UXtWJZQrnbl/pzioK3XOa7nHV2Xgm0e8U+6Ts/lI2lpc9wDZrWfs8BKx7NoJXC3HlfH0H4KbAroq6xuW7LMLLlifaUzJhHrZlIb6XH8NUvEktWxQ4EA/WNoaaVintyYm52I48Jx7vvq9JEZwhgAXffARMNHhuu/fE1lIyIsjsquxMdK9CKSFQJ8As89GZ0bOOZciGPaaDQkK47FmQnyNqe8HSQ+MUXHrHHbyKEqGxSvBOu34jDbGS9BwMMeyCVyRLJ0AeoGJ0shFWkLqSi1XFvePxIexw3X5/3kkMfxgm6mOy3r/wngmM8IBzuZiS9W5nQ+/ixdHNNC7yLSgp/jZm4/Ic2u1hXeIBQAffk45L4vLSLeMR5Hwd8IjQ8cZ5UpBRfGqWPCyXbMC58KJkoft5pKYmNmO35chFuPSqUipdTxQXwFl+Gcq/hnruhZDJ1LfGFYiJ9LRchlxSpAWsBkFyfWY+TdOBkDIQsSplNYGB0mRO1rYzSkdFjqp7VKs8iYjds7gXZMAGH50HIpK0IIPUuea72yhc4WtFmhY2DgyfoVVy2Lunr0uaMCmMgwVAMTj0zlWDx9U+fYLtPc97XEDF6hGD4y3HPtmG7m13lkBXIU2cGp/SejFyNpE1lB4bAwg+PTJdQcW62W7/v94QDD0QEAuRZj4LMBavhbYQJO+QLGQByqGKuNzYtCPmn7TG4lXB4Wm0qTbEZsCgVaG3UpK0LoOtdfCHqKjBVFcMDvF8zkTS4aHsmELiO+4RDG9CaYyYIPBe8w3U8vTj/RLFyPHPS8nclkIlgujyW0+DzSdZIcwNC2aHzIfMlH28IFrudqtsOl6iiKVdrj4geYemi9r6VX0r8YO0+lirXWqEUS4/EHUZ1uPm7YsVE40abWpTZFh0l7BbPto+OROPEAUHpfPOUaa1AQ7vO9o1IKLSp8Tg9GTxwcKkb2Q9d18TCRJEnwt57nTWM2MsUJ+J98xMqJb874ipOOE0XRaDSir0qKYj91OpdwjCSlrNVqe1sPx+MxV+v4koDiubRWOE0n51FIa2H8T87HHDuOwjq53aCfi7T6Zt15XCr6FZ2QxpGXQzN/QQu8eA/pCh+ucnZXpgY5gTvCTe6YY5l/C52hePkVEUkO6+2K7uciAY6gT/HO05VD+0PASk8pfwvrBgJifDoZtbLhQIe2z3dRuASmrvK8Xwhj07e2UyV2G5GO3OBnXD1WwidWKhU6H4DUiDNI5waOs1zrOE6r1XroeaRVSVPmDdJaoQV51nWVSSjQ5ujy3JgtC47p+lFAoYg4f5BSY8EBnBSRc4nGUzN1XjPVFfLeiKu9pF4BAztrZKz+C1PugOuSytRm5POr05l+fPYJxI/1vpJl0AHT5YvaKbKJl7RPPYe0MMu9X3D7aWa4cskaTEizdJaHsVlucjnUkaXTqreUUkUHyG69r7WLmk5raZ1u6h6dD/K4cRHfqNFoNBrTY4POLBbDOYJjTrQ25ufnsbgfpszjhkib8u0cwrKQyj9rrXHzCGbCuAFUMF+WLI6fOxkW01LkHwAAN7BHVG1KqOhXPDmYa6MibTXm17OWU2usOApAGiaAoSo/eJTu5LdBRhJYiAxpHwD/t8hYwV/qKONJoE+3HWoTpxGgK4fez8czK/hz38L6zOt9Azs7yorMOfSVufENaWqsSPeZf0uDU376H78f2MBO+/z4zchKKa4dn2U6N3Ccuzjn5uYqlcpoNCKbl06f8pv7b3blQzGn0qLKhYlHJ1IwuT4l0jYQKBAqj0KaacccfGlDIIzdhrQqqw9HgTNIa23UZjbXCwPvJHOWkj00t9njEqWNcDX2jOtKFmUHnI+tZjEwp8gnRBb/cxcfajMoaIsgGXNbpDlTjeZdxY/9eAQhBBZl1ukd4WN97sno3MAxJzJCVavV+fn5u3fvEnOg541rB1kstpQ4mQ4b4J6ZLHZDGo8snegEc8ydzvyDtaJ4t4/VftHKpJI92lh+IE9iQUYScJiGPMUW0iPDrwhziiWYNYz38K0Ml5FW/7lcPK7tWGfsS+XaqDXaJXou72f5JGbvlyzN79CncL4lMUlbOs7bmGOd7VjJKHHbMV6ZGivUgauND6BgGXrUMSllGBdWyKPb0IF56ppNEVUqlVqtBsxSMYPjUyPiSDQvLC8v37lzp9/vg9GALP+49S+3SIr0gbXcyUPKVNEWjAMNrajyFZtLkkVW8AaP284JyNIUhAmSpzHhmmPutprjAocJnad688Vs+dMohoGjmIVT9OFka4ljBzVVohpnzeJQanm0PMCQAXSLtMkCBxapcizQn7bPvuLjLzNRLuXviyTMQddQYKzgcAx5voSiljG4Akx4D3bycZ8cBgBa60aj0Ww20WlBg/O4n3syOmdwzJkVDcSrq6torzjYLuV5qznYUQucvbTZO/NSahR4xBeVpQcVNX5EorQOC9YfN6diKBVXqdDfzWs58uVN8onul5lECY62RTCU9cjzADI+F1agGBceHMusf4vGjYLVqKvTzXKpuOWuAm5HLrrfklglcEySj7uLS8SMYGdq8Oukgmiz/Rd5p+RQI0WvEIYhFS3CZtF7UfFy6hfja2IwnDQ5hBrj4WQ+pHieN5lMtKk9BGY8ncespGoTVmEpCmeTzhkc86HEIjt+rbqwvPTgwYPecFCv15WA4WTcaDTQNZGoaTgXZj0kSeK7qQKVtBrjOKaoWzCeLtpZ8+eSNYMYF8xmn0LHONNbf1qkmSbIJUduESzqM49M0CarGPL0lyKiGAMkkjpW+gkRLyHE+2aFrFH/eRYWZDYf1AfSQCnGzoInGmRsEGsBQ/Go8sAAhHsK6RPmQE/+oCJFyYqUoJ6XTyXXkfHpkziCvHkRAmKtkkQ7juP4XpIkidZKJUU1d+M4EkIIKaSUCkCpRGutQbtyGtyJ0pRsdCThshoMZzbBSJkARBxq/HkQBCTGsjsAxFZKuHccJwwnjuMEQU1KOR6PQTmB5widTMZjoRMpBKgYtJagpIQkUQAHYoPzf9E4k9imGVQChBBBEAxHI9d1fd8Pw1AAVCoVBdoFZ2FhQUqJhaRLWj4LdM7gOJdWV1d3dnaUyWFtNptgss5IX+DrsKgdS3Ja0yZZXoZgNlD6Fj9YMERUXuNCp/XrEgQn/OL3W+bvJ0kcrehDiSQo6ifNi4WDOhOwBZmZ4oTaPQkb61dw2Go/MXFbrTV9p6KOUSQMyT8KL6MBp5dFtMJAI/yKEDP3xUks8X+z+wn+LkWwTonIQgjM9Sji/JNRduppPZL0pSQapdT8/AKGXfElcyoz8jjoWYDj5eXljz/+eDgcTiaTOI7b7fZwOPR9v1wtzSULFpGy+JLdWh46wYfCEBwZL2hdcRXScgmeuD8n6D/1h6tORVpnkTGBbE3UGtfISH0+1BVDKiGp6tQrzeJG8OZTXJZcIqZwSqaid4oA8VDKxSDBSqorkzuKN/i+jxoDqoQIzRh9BGzbQQMlWUIpzgJlDIo0YftoysjCMYlDnDK+4zxFyo5hkiSOCdfxfV+aYs2Li4t4FknWSXMG6dzDcRLHQaWysrKyt7c3Go2q1SpmYXJfM5iwR6VU4OafpoF3cobT6eo5luWO7lTpaMpHLLxJfxbBGccXSmO1BMZRUOa0mNIaEGtYjtUOYbo2tmOumtEuFWeqfHz42tNpRwJZM05XRcoK0Wn7GUF+sudSyR5Cdr4DIBlMialYKUKaQsPaZOtl3x2HiIcV0g1CiCSZRqeJdBRdkXZMtmzarZ6uFyRHVTeylv5F0eI4zly7NTc3l/35maVzD8c4JZcvX97Y2Hj48KHjOKPRqNFo4DljBAp8bZe0Q+vcMnTyHxJDZC+W0KE3iLRWW65dChZgkIXjx0GnpU0f5Ye4hpHQykRvJzKmeYsItkgk49QftxLecanwKFKwYfp0ESGr7BMscs0UIZtHGVqd4eCuTJi5YuE01hQU9QeHmqveQojjnihW/r7WFdLKsYdksqjVaktLS9QryBR9PIN07uEYAFSSVGu1lZWVfr+vtR6NRrVajXiITGzTm0ttx/wzV2Q43pH2x9mU/i0q1FnOBBbHl9wv0+mClhSxdLQSXey0mJJDz6MADbWQVY25FgZp/ShLlGsgmNLEn/KY7OxWrw4mNCO8y/tfRFlLLr0LDR0p/soUAwJTQohXI4E8OOaN85fyXBfyqodT0JilHYMJWBZsQ3OKgWXZCdUACMdxktDUB0EwNzfXqDeArWWdCd88a3Tu4VjiibaOs7a2tre3d//+fSHEeDxGl4Jg9U2mP0jKwtQhg4lZXUCbMB3CZWAYXdTPIgjg2gcH5aL7KXFApBPMLE/FEZXxo1NJf3iDVt+yVLR15T8HM3H8pbiCc5TeEr5wAcbDzC2J+4jEO5YShzJlNaann2D8LbGENJlMyF8tWPGWyWRCNQMgoz1YOrXIBIGRAYRXRuT3Ex9acIz2EBSKpJ6fur2iSHGhundzc3OdTod6Th4FvBndfafYpdOicw/HIITneVqpuVZrcXHx/v37tVqNLMVZbUUU2xwLmk9pbZwFidH556JNcTkMZdXwImSXLI8rq5byPw9F5FOhLKxg9447DlZvSbFCTAEm9srfK6sqosZkna1Xbrk6AfHEQs00TZmJwz3Zc8mlZkUE8kp4yhwkKKUMggBjFulgEQAIgsAaT75/t7CYHsffiO4scuWBiVnGEsNovC4KNzoBaWYjpouW5iulbDQatVpNs40jf8EzC8dPtBT04yCVRNJxtFJCSpUkN2/e/Oijj4IgqNVqyJeYd4Ah6K7rCpX/vtl0DzBwkHs/Fn6EdEjWCfpf4pI61v1FZCE1X06oR3AtUrIjJi0qEg/cLMj7jH55SKdf81MhaBnjnxTIRRiKoDAcDnN3D1zZ5LsEwXILyb/PQw6OSEXaq6VUAhMA3M9GbxephDopWYZFpVLhsRDSFHMYj8f8HTnU4tRg5DWNEqnAFixSiWS6ji2U8I9IO+ums6AhiiIMyRBCYDYHRpJR0Is2FbEpzAPM/oZSS7AKLhh9AlNI6GZrKUEx/1PpbRoxJabFo9FqUavVVlZWFhcXhRBREnuOf6T5Pht0/rVjIq2l46yvr+/v7z948IC4FndzQRDEcTyZTDxZJhUtJihBWM46XFwXLfui5X1cOi3xyfVoviqO28+EHe3KEYpLKcEc34QjlhrLu6S1Rj9etof0lKJx4N2g1kre69THM1dh5NfBWNgIVvAih0s+klnVFRvkcJYly5iGwkkdluSNn/mYO3JqCOb2kOxz+ZjzATl14iasKec40nVd13UTpTzPa7VazWbTGrTzQucejpVS0nGElFEYer6/uLR0ZTjsdruTyQQderhlq1Qq5GHIbee4Gq7Ki/MtgYnj0unCRJaKjB5F95eMm04X1SQU4EPK/+UwRPYfDuuaEX+uBbUl78XfSJVm353WOAPDXGVSwIGxhGaBCpKduWeNQ/btNLN+AvNSoDOtKGghFx/Lhy4XTy0ghrzjzbKN8xu4HHp0InFFzUqT5IVYPD8/j4HGAOCU6l5nkJ4FOAatcebjKHI9b319fTwev/POO5PJBA/IUkphzrTjOKKAMTjHHLpjAoYsFhgV2UyPu1l+3ETqEmGcLi04eSwfGjCYti5ylQ2YRZgHqFluIk70w6L+ZCG7/L1OiwgguBIqhBBgQ5JIh0VbEXI8kJG3b2kSNLBF/aFoM/p5brNE2chi7gIlB4lme51cONbMvkyNn67MIyMYyQnsYXNubn5+vl6vAxUsPMNBFLl07uEYj3p0XNf1vCgMQWvX865evbqzs7O7u9vv9xuNRrVanUwmYRiiLSyXyB53XDX5iFSyScy9Xq7IPDpx/YXguESBKrrOkYWWSvn9iEF0gBBpytZnbJArj9yV+rjh9bSIxDb/XDK5RdqxhdrSFPguaSdXXS1hbI6t9EGZGuJk+Ib0sQO5EfoWWJ/iaiLGoPRrpXWSJM1ms91uY4EEEu3nzi127uFYSAkGAgia/SD4/Oc//84773z88cfdbrfVaknKLCqYIoIkulLOQxbvHqpQH9eTW7RiT4uzLfDVpdFpJf3hbjT+gcLyIQ36kAZuAl/LJUjEK72Vo4n1W/70J4DdBEM8VkGnMyl4D8kPRvKGIiV4g3yHgdfJP2lHcGb6w8c5y97Z+xUrB0yvAGmjv2IHEZRox1kxf+KBtQg3u5o5Th1Hep63srJSq9elKWz/uLWZx0TnHo4BwCH7AFrlkgQAavX6tWvXlFIbGxvdbjcIAnT7uqLsAPbcz7kk09kEh+rUxzVWHFebPi7RsiEAFenaFxaViAf+1llFO7s4gb0df02OwvRDboM+CrCqTFUKmS7x/vgoF30sRZK/i0jbbWi4II8VKb4NTcY8z6WoM7kXj6IdW/3hJmORNnxbcGw1Lh6DdqzStQyllLV6vdVqdebnwRIk55DOPxxrDRjtyA6fR62gMz//2c9+Vkp5+/bt4XCIhZ2Elx/4wm2+WZUkS5zVOBYXacGnZZQ47v0l2pOlrlpK3BGJ75dz1SXrX+7O4p2hOFa8QoufjmHnvxKHnYmnmQWTYP24r3Ys4lohZwllKutD2gGF8ZfZQDe04XCxhP9iSSzF0r4p0jmXHHb2LpgwO82sSbn3ZwPdtE54ZEWR7slf/LFKPl78E8VSs9mkZGht6ikj2ziPOTP+1Oncxx0XES5XKeVoNPr4448/+OCDKIra7bbQgLGQSqnxeKxN8RRkd0iHXmmtExUdQHwatogvuZccLdQW0imlijzgOj6Id+ZwxuvoE6+XZ/2RCsZLC5W45kht5B94tzkclLjO6E5uuCjCZUvvo036464pQTodGQdE2qUGaclaEolhAT2Uigf+1hyqdEHAH5lErTranufhcXN8mpRSWCuZJhFD5XzfpyRmYEZ5nKwwDPE2/BNrBI/HY2yTzPrOtE7lVB2mlYKSgLtbefvcmuE4Dm5JlVIkZvC3URTRYal8xYGx29B1XK0Yp+w4TqQBs0uUUq7rLiwsrK6u4inRzwCdM+lxdKIVUqvVrl+/XqlUPvnkk4cPH863O3jUaaVSofOnh8Mhz1awhHz2AycLX6wVjiQfT50ETvRcYnE4kSot0mffnXq3eXacpXPl3n9aWi1WOKOHUg3JorSUIpuvyJwqW06FpYUyUcOEsJaMh4IcQuJVLkFJckN69jWzVvMSP6hIchWeYBcRFo8WJc1Ap43+kOExLnr5+5ZQ7lrD3BNuWJ/GoYupruM4TqvVWl5ertVqURSdYpWip0jPLBxLU8LKcZxKpXLt2jUASJJk0OsnSeL7fhRFk8kExW8QBLRsLM7gymlWh7V+Ank6YPYKp+NaB4qYm1tIc7XUbDv0gnz1Zvt5XEwvJwuVHtNTssQPnQJ2botKnyNFU4xlWoENCylrwOQW/3Cyjlk/1Cb0TbOACq4/WtNESEo6sswUv6YWgNmysed0pLfImI9QOY4LTnrOcjikRRrX/Y84DtZQg7Fuka6Nyjqqye12e3V1FetnPoEz954MPbNwDMZfT8cEXLx4cW5u7oc/eGM0GpGEp82yBRD0pyg4Ec7S2vBbmQnVpCVdaDs+pZeVLL+Zto3lqiW9NWmC2fvLZckJiApm0hZElaZpnBaRiKJHZ51+XLPLCjMLc7nYLlGWs7suehykMQhKtyNFSfxJusQ2V7HpjYghtbFlEwTzav25kpJiPzQ75s7KSbHeBYqFbpaIDazxkSauDhOgybTtOG6SJPV6fW1tjbD42VCN4RmGY8wBQfmPqlAQBEtLS6+//vqHH36Ih08HQYD35J41B1MJLzgca2Mp44HxxEbq+OXnjwvIRfxtwYo4LAiBo7ClU2cf8bhVV3j8aTLcWEGKGxoxc++35BCXxNmpPIG4onYsNZPzXvbm7ETodNRXtj/8RbTWQRCgWwJ5XqQtJ3xfpQ/zVUCeDOMvQjK+ZHysEaankymcGkdo9j2/1WqtrKwgFnPP3jNAzywco+faSNQDt1hnfv6VSqXT6dy7d+/Bgwe7u7v1er1er/NDaGitpvWhQiMyl+qWeM+9/3FQVluHUm1LsHA06wNf+bTIT+sV+DhD2tL9WImidLlkhTQC8tcntdGaUAuRLW03S0W2Y522cvABsVyOwErCc6/y9FdaEX6RimBBMN1MKie/Rwjhui461vhQECRDge3Y4hDridQ+H8NcspaP1W0KOEEbRRAEa2trnU5HKRWGIbr18NzhkkecF3oW3iGXiPPQWEHCVieqWqtdv3HjwoUL77333u3bt0ej0f7+PgVySkNTtkgH8UDGdmzpOFktpkivMV8f771Klj11TGVqI+Q/Oa/Pub0tgfXjUq4k04+/pgRukmiyyNJKy5jPo9aaRDifdEJDkTYcwxF2LRblDinHO5pKYLKTzFDUJaEEt/xSQBHfvXHJh+okOTO52OZvWsiu7L24CKGfq3Q+uoH0ozIhfSbrNjlFgiBotVpLa2uYeqeNoRxKFtd5o2cWjnEuqVorMZnjeSpJpJSVavXzr7566dKlDz/88KOPPqLCfZqREEJDTrqESNem4OJdsXoFwMx2j9s2StoTGF2G/iyiXMlhqYpw2rzO95X6CIFup+WlQWOFNvt6xxyEmqur6nRyNrBYMatZXWo4hmLbcVb7JvzNhWO6h6QsV7QJufhhNFbj9OIobLBCbBiG2cNJU1RgO85FWJ0hSIuEXModPRSf5H4UQjSbzfX19fnlFSzNiFYXPpjPAD2zcceFhK+b5hUA+OEPf7i9vb21tRXHca1Wq9fr6BxzvanbGndzaGuO4xjjlIljwYALxmzgqsC6f/gVJnCT8gLGFoZJ25z5gW3hszpL0Xw57OhJbgEEpshoUziNekXLWGbCSGmpK5Z6QI57+sArsQEDjuPy1WmBPgego4iTIsWNPEjKnPiJnv0iW3OR5ENMkVJiBC41RaEdPPsDI3ww4Mf3fTS4kXGAzw6Y6YtUvrjyfT8MQ1SBMUoE3draePPQ/YXd49tH/BN7GIZhpSBtiivR1DFhDNCofXueRwW8tNmRIHSidMTxH4/HGFwchqFSCgcKz7qsVqvY7UajcfHixfmlJSjOqn0G6JnVjg8lkd6pfeX113vd7qeffnrnzp3t7e3t7W0AkFJWa4EyFaQcxyFVAhuhLaE0iaRY5x4MU9JTcr2FQggnz5XHgZhfhKNVVitXRop+QsMCacWK95mjLZJVY8EakPNLXDs+sYwBU1YfzMCSuMXDw6hBHEyeAK1M+WMEcSwzL4wvBO+BYmGjMyHk+C85x/jPLX2WflLCRYLp8lyoE3FxzgPvrMHEK1T0B9mJzjHRWmOl3LW1tfmFBUgScM83X5XTLy4cIxFzTMbj5tzcy6+88vIrr2xvbX366ad3797d29vb29tDiV2v14UQlNGEajJKdYs1gZmbaa9Nh+IQcE/VnOLTSawFA4dFbpCSwi+WLNcs3GuWocdBhLR13hnN4nCfPSIs43rfCcQMDR3HQa4H8MGkvQuq5HSGUJIkQRDkaseHIiakWSgL4sS91m/pQSXjo9OHYIkCAuaTPPDKMI7luj/ejOsLAIIgWFhYWFxcBFYs7FmlX2g45vwaYMlqrZVS7XZ7bm7uM5/5jFLq7Xdu7u3t7ezs9Ho93KgGQVCpVEajkTbmac/z8PARYWosCOYfl+mjrImJp3/GB6uUE+kL1Fvk+yJbKt3JFa5DR4AWRvZ6VrHK1acssZHtxjklwZJE+CuXiLei69gUGgpQeKOdinKOObSRDV2Y6C5kFcrXgDQUgjxEO+ZCVDBvCjESGTSsVyuHY65bcOnCt4BkbXdddzKZ0JWEnUKNAam476QUcLTyKaVqtdry8vLCwsK0b+d8y3Uo/eLBsZ4aa3O/mhYKcF1S+b7whS8AwHg8RlDe2tra2NjY29tD0xv3CPEAIGJTqgBA6Q+QLuKl01lhrC92wAZXWnPvt9beofBh3cAbz8LxjJCOC8flTWXHGe3I2vg2EY4Rzgj1JAsyK3lqCRwjWwpznJ0Qgge6Ua+EEEWRP4ibPIuEHlHSnyyzUewz/VYI4bpuFEUYX7y0tORVKjqOIY7FMxHNVkLP+Osdg7QGLAGltWYRTkonnu/X6vVavb5+4QJoPZlMBoPBrVu3+v3+7u7u/v5+t9vVxieDH1zXJX0ZmyJNgeOgZIFWphcpTORbyEMX/LEwlG62IJ6LCn6nyEQlIz2rtmPS/h5RMnGIgfQ2CD11dNvBholhKPktirT1fMWCTYHOKxGVnUfeLLB5hII0Jc0MFPQT4nPqPG4FpmdzmEeQWQ/5X2uNTjwsUkFMtbKysra2JhwHtH7mgRjpF+Ilj0KKpahNWVkIAHCEBABt7HqO6waVSlCpzC8sAIBKEgxb3traevjwYa/XGwwG6JLGGihkWR6Px5Zzb+osKljglh6deyV7PxGBfvlbZ7VjrqRYF+kD0XnH3BLi4MUj5A4d0mw7BKnAfIO8HcIpYU4ulyZwmKSd7/uEYkRKqaJIAwte6QN6PiSdxmCCfETaJE2iugjuuXig++kzl/SaKfU0ILQERNrEgRer1er6+vrS0pJwXTjnVq9j0QyOp0TIIuTUGocuYceTCh0sJi8ew5aRTaXj1BuNeqOxfuECAIDWW1tbe3t7m5ubOzs7g8EgiiIePOSYc3BJBVBqekZRlixuRiqyHXMt9VhKnIXa/HGQWZwcrKk/HL6fGdsxD+az4OZY7VC9NLJoaa0dx0HjAH8Q4uN4PKZgSgDAqC+MfuPdwMaFEKrYeAVsNsEoHFj8jCQNuRlpxu2fH6YucIHN7cKOOcaF9oXUMvd4o3jgFm3XdavV6uXnnsO7p/JAqSSOHT8/6u6ZoV+8uOPHTIplfAwGA4zNGAwGW1tbw+FwMBhgNCieqUrhClxlxmhNzUx+wCyGrjN1BHFFFW/D7TBFtmKbUhzYrPmSQ3lA6EAKoE4iuoH/q80+VJt4LMEsFVkqKQ9P3eBunyKtX5mziCBtvSlXzLPvq0wZaMkS0pQp4k7KJiEFKY+S5SVrrSkWmPRcmj5yHgALJIi1HeNlKa0WSX2QxEwITht5wjL6nMDBvFCXkMF4bXtgEdD4ajwCndeNQ0IzguM4uqCimzQBQjiAB1znTotzUkGY8Xg8Ho8BAM13uHdEx12SJI7rU1g0hjBdvHjx8uXLJZP7DNNMOz5l4ju+arWK2y4AEEKMRqPd3d3d3V3E6P39/X6/jwxNNauUUmjoICWaA4rWWgpNS4UvQqpWzvURpZSl3WhmlBTp44KmuM9u5vBBPyccEWlPlEVFGvpxxb+FhtaYHJ1KNg103bKEctykDuRmD5a8VFFWXhHRydPW9SiKiENSurZKIF1FGkxtAJGOsSNRxHcwiTmZlJ9tCMwjHeuDQHsuPq3aPZwrhMkbxGgNIYTv+8PhENHWMeXk8edYdAJ5vt1ur62tzc/Pq8efxXo2aQbHj5eIq7DKyfLy8srKCm5FJ5PJZDL55JNPUInu9Xq4gUXtuFKpoBaMyg6pIQjHgsVO4Uqo1WpgMv3AFF6Rmeo8FtxwOJ4aKwuAjh6k0/vlQi3v+PG5Je2Q9ipMssCjJE9z7OAfeB8ISiz0Zz6uxxhzYg0vF7GkieO/0nWoNhtOOiIsBtIRjGpm++ZTSSTStiZ6a53evdGfCMRof6P7HceJVEK8ByznG23fnFu0OQsV1epGo7G2tra2tgbPUP3i49LMWHHKhE5kDkbEcNadiKdYOmAymQyHQ3IJdrvd0WiEZkfHcfDgkqlrHg4ObkASLEdDZsLsQKcqb4m08YH6pk3urCN09n7IAyBcgUVGhiI4tkodwRG0XY4pYEK5i57Lf8JbpmIOHGE589NF/JcCvyTLbuDtWL8FZqCARzBWQJIfMSaY202z4mrSs+vHI7xStzngivTJqnx8isRePAktYwg3qZOWgD9xXTfWCnVeqrWGmi/yuTbuRBQhWuswSoQQnU7n0qVL8/Pzwqj/JZP7DNNMOz5lIpWEiK9PSEcsgEEZz/Pm5+fn5+efe+45hOn9/f39/f3Nzc3t7e3BYDAajdArWK9VOEzQv1gTg7SkA8RhPmv+r2SBR0RCCK0PXP/8W0s5ord43CuH9uZ0ojsUh5eUkGY2a64dF5V1pzt5UR4OZNnGj9ulEuJSED+jsYKukLEiZlXkrVAzzQLjJEt7s4YCP5NLlqvP2TelXlHyNxjBj+04nst7QhUqUPMg5Z1ypgCg1Wqtr68vLCyA8Xz6z7rLrohmcHzKlIUwJAu2BKtlIdIRY4g1zWaz3W5fu3ZNaz0ej3d3dx8+fLi/v7+9tYnHSqFLGhMCcT1g1RUMeT5YkypHNQYWUWvtH7UJXSpCZI7jJTB03F1X+f2EKdaG97jEEScrjTRzn2JSMko42nFDWsm1Wst94rFtxxlXJ2Q0esLZJEm0AD4yXDWmx5HrEuMWaFOiWWWo7O5n2lTePkZrTaejApPKwmR4o+OU2zEUExtRFCGvJkmysLCEMW3A3NHPzNl3x6UZHJ8y8a0WZ24qB0NXhMmJslqgi7RC0i5B3et2Hz58uLW11e12u91uv98fj8fVahWxGOEYXYJJkvheJYvFkBcGO138xoVl/SuY9ZC6WoIvpwXHZPnRLDpVFBtJStq3sAb/5OPPlV9pCtdptvEHAPSynq4unO2nSNtqwTgD6OKB7dg7CI0gmxUxofV2fOvGP3CV2Xo11GfJFiFMbSPEU1IpyBVBhg6yb+AVFG9ofMOSh47jtFqtS5cutVotMFZmnrz6C0gzOD5l4m5r/GAte80ioiwNlGsoKlPGe3qbVnh8ybXr1wEgjiJ0A2LMxs7OTr/fJ2+e53na1dQsfxzek4VjkQeLmqV4UWv6pHaDYxEPcaN9ulNQb/dQ4jojZMzW/PN4PD4QUSzSAGtFlqjDFiXFp4Hk3q8S+71w8EkM6LSxQjgOD4yT5vhHMFFowEwHVERYsB0SwjRFYtBDsatSyISdHkLMyf90zLHcnudNwhBLg6J6i8YHRGE0uFWrVVQ40EaBcRTa2FjQg/psHO1xApq58s4dFcKQSpLJZILQvL29vbe3NxwOB/1pqSPXdXGdYAQrBT8RA0wXcxwK46PnaiC6KCmNFdIBT6iS45+8dFlK7864s/i/XDwA81wdpYIdARzphsJEVSPKIDRw7Z7/S9sRHtBNyIWBWWAMoMLsuEnmQenpmZM4yo3zFebsZ5GOL/akk+sSJOMsf3F0Fea6ZIk0KyZXYuifTCZo46KWtdZxHPuOi0qr4zhoIqO5JrMJcBOWI9HmEAQBSi9MgCZAH4/HYRg+99xz8/PznU4HxLNZEfBk9AsqhZ490kpJx6nWatVabXllJTFh9r3uoNvtbm1tbW1t9Xo9DP8UQtRqNWkq59K+Mo5jV6asikS4tgkUuCORL3jaNefCB6R3ANa/XOXkXx2XuMCg7Tk3dPJ/rUdwgwB1INsxq28iXUeYky+FMOFcKl1xglrg2jqph4jvuK+nqDWrtwSdYJRoxaKSIXOYCN6DcgUdD/Qnb5mraNb8SlN/2arjTL/yzCFYFDuB/RkOhwjTnudduHBhfX29UqnAL6pRoohmcPyMkLVQHdd1XBcAKkFteXn5xo0bSZIMh0OsS4dZglgLCZdWpVIJgsDzPKGna0kbx51jDvKBtM6L+EJ1cCwLgMoWuwEQzOZracpFittxd28EwTwvBlggF6T3BEiW8MjGWlnQc3TiLlOuzpML19J2hTtVkzHqwAqVEZmDmbldW6TPbeIzQm/B55H/yV8T2FZDsAgNGkZ0hACbxGzjkOYW1Nxxc3DhwoVKtQoAWinxixrTlkszOH5WiCMFgxvpTKfYlXKu1ZprtS5fuQIAw8FgMBhgObqeodFo5DmCKtLh2kbzX6VSUSbPGG8gowc3sHK8s/RHWpl8AVuoYellJxsJ2vtr44UjNOGN47MwEoAqLYAxWfACbLk/JEkDRgbw26g1jDvW7LwY/MCPlaGbUa8lkQBp/VcwIqxMlRQyRP2kZgXT0Em+KlMYy/d9Hs8HzCVAejEHZWAlt/graK3xvXjWKGrfKFE8zwvDsFKpJHFcYjn5haUZHD8rREAmMM92umySKKalS6qNUgpLhi4tLwOAVmo4HGI5uo37d8fjMZo1MNYVLc68PC7C9Hg8jqKoVqvpTPlQK6uKFCsL3bh2DBlF2AJri44L1mQrh7R2jJtujrBcteSYe4KHAgtk5IUyil4KACj5mIwVOF/c/M17otLV6wk0j7Lb4Cqwww755U+hvFCSECiGrdbogzIHxGjmM0Dcp9xooM3BM3qUzIlpBsfPFOGipD8FVnBOEy+ujyAupMS6dABw/cY1UGo0HHa7XTzLdWdnZzgckhbseR5Wh0EFGQ+dckwZfgvvssEhRdoxVwnhCAkmJchICAWZGAD+c7wB+0/gS8aZrPYH6Ri7rKsN0grsVASqqTHdMXXfqZIRHyiSATSGllUnW3QNe6vjg5M1+FBb4oT/SRUthLGWYJwvF6JcxUYZzKtWWbfxD9KcfcMHUJosyjiO6/U6AEyT9GbGijTN4PhZIdLsrOsqp2StZksdYArKU++8BJCy2mhUG42V9XVUbJRSDx48oMKho9FoMBhgC41GAw0asdl+4urVxgLL0VCz2GHImAKsvXa5lldEtF8m6BHpGo/0CM3ScHg3EDrH4zEXGyX6bDnJdIIGSSlynwLDYqWU77poHaJOCiH44UaCWSroCh9kak1kth0irfVbX3G9+EA+pY9QoLIYljgBJqtorgnulalIF4YhwrGQMokiIYQzQ2NGMzh+RsksfincaZ40w7Xpck0jndk5Kvy5uTpFsouXL1+8eBH1u+FwuLOzg4dUYZgzD64Cc8IQRU3RE0lLysIxrfkTAx8Rub+0Sd4l7RUycExwpvPMCJa0EGnbBf9cZDvmzeKDUFyhv44DK/6EdhsUXYc5F7lpRITIkImssNAQmJaNZdWUUjyNk2Mo/0CbAIJjxFyHFSblnSHbMXUMH4R7DjRZhJOJHwSO48xUY4tmccczeiRCTRlPEdzd3cWCzggKdKIrLlpcrp7jIiIQFgBAEARoXgRjmqTdruccqH4cjHjgFw/IK8ogECYSGQEa++P7/mQyARYbp1kgbW47iTlNQ7PMFCvbgscOkiJpmThoA3Ggh7ITF7NkmWtpKAaDQaVSwYtUt4QA1wJ9YNq6JQb4IEsTraxMfWRt3J4oMHAcKpWKMHUnwBTaRkNWEAQYuD2ZTEbhJI7jSqUynkyazebVq1fb7fZ0E+NIV/4iJkMX0Uw7ntEjke/71Wp1cXHxhRdeSJJkMBhg0vZ7770XhuF4PMbTqjCWzvd9zGrjFlIMrUVjojDZEBQA4MqpI4iMs7z6jKVfcxWVq8DA7Np8V26F5VI7x9JRRNqTZl0p+pWFqlm9u+RXwLRXKktPRIEi2CwdQa1MqgjpztaLU7O8b9l78CIiPjA5gYKQ5A2ZXKQ5EE9r7XkelgfC6zPt2KIZHM/okYgjoOM4c3Nzc3NzAPDcc8+FYYhVQylLcG9vzxFSmZJdGLOBy3U0GtG6RV8TYofQ08N7EEdIf/R9v8S4QVhs2SUgky4oGB3lfS3ctKwH1tNL2rFchdTbom5kWysCTcvaQBfpenbQuIDkP+RjlW2Kx0eT6k1f8X0GzVqlUqlixDFGIpcM0C8kzeB4RqdA5K0idJBSBkEQBEGn07l69SpWoZtMJjtb23gSyvb29v7+PlqZXddtNpuoAlMLiL8uq92MKjPaCmjBW7ZLghUi0vg4hgpW7+bEcCxYWIhMm+bp2yIFmXcb0jnfR78fjB7Ks12QRNoaLowxhCKsLbFkVZ7jA5XdPdCvaMr44PPxpz/Rl4D2DWDxcDPiNIPjGZ0CFVlalUlvQztyo9FY6Mxjyu94PO73+7u7u/fv3+/3+5ubm9oYKDE/EJe6707xhWozIozSnhdYgBo+NAsfwKphEHEYOi5xwWM9CA7Ti09GimU50lMs+afyMiF5944iciwriuU/pHYojJokARqXwjDkuxBgSnS90UDVmIImNehZljSnGRzP6BSIHHGSHTMq0mFqU/jDg+iFqFQqlWp1cWnp+eefByGGg8Hu7u69e/c2Nzex3D5Wn6lXAzRiYPEjHgYAaaMEj2+DzC6eoAEy0dD8RQ7VUrMaMd6vWGqy5T0raocr2pCRIhZZlgTqJ9rcaceA8o86wDVlEj9cO+adIQTnQ0f/8peiCBm6yH/LdWrNbNnNZhPhGACm3YDCk6p/MWkGxzM6BeKBveQyAhbmdaDhalY+ggXbYZbghYsXkziOogijNfb29rZ3HqI/cL/f01r7vl+r1bBaWGorjWiltBIHCCJ51LMjFUCsldYatAQALQVkvHaHwjHdRi1be3+6AUoR1orbpZ8Xada5XbKsCvyhFnzz26zPWcmh04EW2c4I40pVJpOb0BmdAWCSTUgRxoqalUoF8krLzghpBsczeiRKMocbcSAQJtqBgENTmlz6UFeN0Ky1MIrzwuIiaJ2oCKuGYvGj3d3dfr+/v78fhiFqyrxqKFqiSYPTpmYFZEr55KIP738RiYJYNO5p5CaUItuxyMRZHwrHuZKDolBIPvEK7rRpIJsyFVrjAsDC8XKsFMY0QX3GnD3BjlPQJv+QJyvWajXBSuPPsDhLs7jjGT1ZOi67CaVRv8bY3iTB2hoIzQ8fPuz3+7hnRyAIggBzKAjauOuPq6KIX65Ia9nYRxMQBqwIMraDtlGugUpTc1Iw4wCkvW1g4sDocxiGkNnaC1Ng04qDRnTD42vjOMbIX2Eya/KH2WxQrLrMWNxHm6J99I5WwUz6XIQPSZJgtDh2GJ9SrVaFEPPz81tbWzgp/X5fSzEcDq9fv/7ctWuYfY4dEEJoAAGzWLcDmmnHMzrzxDOYHafRbHq+v37hAgBgjdBer7e9vY1nCQ5HI8FShylCjkLoCEOn+b5xxO8nZMTTN6xAZlK3s/EblH7CtW+uHXN9U7OTxXN15PTbp4ywZP4+sPnkj5mgPlAjMlPtk3fAAmKrn1niNgf8jEJxPB4HQTAcDlF09YYD3/c7nQ6VkXMyx/vOCGkGxzM662QtXcdxsIwcLuxWqzU/P3/lyhX89t69e/1+f2dnB8+pwnL7YIwJ5BLMIoIwoXW05RfMA6bMWXBFpYdR70PCK4RW+CfHTc3ifCFTrCN7P6TPNgSmmJcYQ7jiLFlSH/8J/0yasvW5iBTLvaYARNd1h8MhHmxKh57gKenChNmVtPkLTjM4ntE5IJH2mEE66ZkMl1JKPOAVKYqi7e3tjY2N/f19NDePRqNeb+oSrFarvu97QnIoJK2ZcIrgBkEcDQWQlyBHNhBL67Tut37L3xHSBlxguio/D4krsyVqZu4T6TPvZO4TwZiAcxvHPB3quUwn4+ExTmEYCiFardbq6qprDq/iggFmOnKaZrbjGT1ZOia7aUgIcbg2yjfRVjKISpeSAAMxg8EAbRrb29u9Xm88HidJosIII53RMkuQR2ffcVMGXREsbI7wmiMjJSVDOtguq/xyAQN5LjvqA6nq+EGagj6FQ1dgC7a0chrPXFtzUftkv5amjB/VQZZSdrtdrfVkMtFaX3/h+UuXLvm+rzMpkdJxZrZjTjM4ntGTpWOym9L2sREWxtFFCw3JpolXMPeEbh4Oh4PBYDKZ3L11GzO5e70e2joxCYVqkmGwszBZfIiAZLcljRiMPZcgL2Enk1K3KfCAyw+OyBQ6xm8AZmSwLLZF61cU1GXm4gpYYAzVCbLgu8h2jEXmqAIGWoGwk0EQPHz4EJ8bBMHLn/tsq9WKokgDBEFAjc/gOEszY8WMzjRlIwcQLzDplr611FWZqcCg0xUq6vU6Ft69dPESKDUejegE7t3d3eFwOJlMyOhMpekAYDKZ8PAJepZIHw9IvcraNCCTVG3dk6sdk4GCQ2quKo1EMJprQebd1iy+AoxPkn8uap/6Qy+OvcJa2EmSzM3NXbhwodlsCild101YkPI0qW+WlZemGRzP6EyTnv6rAUCYFC4NGk85iZU54VhIABBSatAAAlU7pZXWWgop4OBUlESnIt5cLUCISr1eqdeXVlepfNzdu3f7/T5WPhqNRnQeSqvVIvsy33qLzInLFAc97XPaekvaKDdBgEFAjrOCBUUAyx+hApi545a9ny6KdFgxvQUJM2CCrch2nDWRaxP70ev16Ey8CxcvgiMBq2mns9WFEIlSUs4qVxzQzFgxoxnlEAFWHMe9Xg9DNQaDwf379+ksTqztS3jHq+RgydB6vT4ZDNHWQfom2TGUUrVaDQxCJUlSq9WiaMLNC2CQNwgCgjyuGvvu9BwpCr0gYaDYKaVY1xTDljHvBkwSHYamFcF6rBI0K5NxA3PttDkWWinlui4W2IuiKKg3sPzI1atXr127RlnRMzoKzeB4RjMqI65KA4BSam9vb2NjY2trq9vtYm0NOpjK9/1KpYJZaoCFk8SBQRmYrorHDHKHIf5ZrQZYABrVVTpcg4cMcziuBpVcOMbMDo7sZLElnVqZM5Mmk0mRjViLAzM9FwaI9UTY/zAM9/qDZrO5urq6vr7earXELBn6ODQzVsxoRkclRL2FhYWFhQUA0FrjAa+9Xu/hw4fj8Ri9gqQwJkkCrod4SpBKiIlKK5iwBCpZhweUYHoh5c5ZEcfUH/xAlmVgsIsmCDrtSUqJuS38Nm4nySXrVBG6s1KpUAwG2mRQimitFxcXr169Sor/DIuPTjM4ntGMckino4lpk44wRLnOrVar1WrhT+I4pjrO/X4fk7nH/QEqknheEQBgtAZGJghW0wPNHQCpk6R5ZAX1jQzWwIpVgomm4EEaXKGmpiSrSkwKb9E48EaIwFhdyJU3Ho8xW/qFF15YXV1FLM4eCzujcpoZK2Y0oxyyPGmH3ozGAbqilBoOh/1+f9TrY/EjtGzEcYwZKMLkrVCsmLEmV8gnBqwyETeY8A86UdxYQSYRCniQ5uA7VNIpvZAO/ZvWlfb93FdL9IEJm9tJgiAgK8poNBqNRtVqtdPpvPTZz1HsB+SVS55RCc3geEYzyiFuGdDpoAjI5G6AOdIUAUuyYhcqjPBXURRhbY2dnZ3hcLi1tSWlxLw1zEOp1+tSyn6/SzncqEeDCZrm2jrXmikgj7RjBEFUVzGEA80UQRDgoc4IweRjJL9clvjZS8CMG1gqE28Yj8e+71++fPnq1avCmx4LMEPhE9AMjmc0oxxCdZJn9FK9BUQxfjMqjLnBCUkUH2iI7FcbDx6EYbi5ubm3t9fr9UajUZIkw+Gw1W5C2poMxr5BKMxj7KQGgmNgySaW+44aCcPQ8zw0vGBYCAJuYbqHSrjJmB4dBMF4PMYgjXq9Pj8/v76+HlQqSVJWdWhG5TSD4xnNKIdyPWYAkD1zRJgKcFSTE5h6mEQx6qeIep7ngRAqSaheKAAkSYK25s3Nzf3uLhqdyYEWBEGz2aTSRdKUlJvisdJcI+YGCjTvYogbBrQppaIo8n0f4Rir+GNYSJEyG2vqiCKfJL7RYDDQWq+srDz33HPNuTkAiMIQhIPhIiUiakZFNIPjGc3ocdJxa3ToOAzDwWCwu7u7s7ODjkE8ZluYeqFYcR8R1hXSMjRLVlGTW8DxCpbtLynvSSYXDA4ZjEdc+0ZTjOd5Ozs7S0tLFy9eXFxc9IOAvcEMf09OMzie0YzOFKWyP5CUUh9//PFwOMRDuEejESq/juM06nWuuvKDUbgWT7BLgc8U34Z3uq5LmE5RGVLKSRhi+Bo2S/UuXnzxxVqt1mw2KXTa0AyOT04zOJ7RjM4QKZUyhliUJMl4PMZjULa2tnq93mQ8xq/Q3IwqM4+EAxNowYM0eGwcfUv5LNxOHRtzCia81Ov1y5cvX7hwoVarcRMH893N4PjkNIPjGc3oDJHWCfucqjQPrIYc3dPv9TAJZYrOkwkqsJiljWncdBoTuu+wETJZYINhGJKKTdFvAKABxuOx1rrT6Vy8eBFjioU5ulRkqo/O4PhRaAbHM5rRmaLCjAxOZG3gAWpJHE+DnUejjz/+GG3QGP9AdekwrAIA0KyBP0RzcBRFmFmH1gk8FlZIuby8fOHChXa7jVpzSeCEUkrKWWbZyWkGxzOa0ZmiKRxTpJpgR95BQUivZodDT++REgAm43G/38fCoXt7e3hUFZodqN48WicmkwmqxpVKpVartVqthYWFdrs9v7BARmfqQxiGRWkjM+34UWgGxzOa0ZmifO0Y00w4EBelb5DizAGUvur3+4PBAAvtU6Kz53mj0ch13Wq1Wq/XqcinEGI8HlPGx3A4FELwIm0UlcEeNIPjk9MMjmc0o8dIx11dGhLguX9wSG6bNlnLZMY9+CodPkGIiYXisuotRmhY+D6JQvqh60y/ipNpqDKvQI2fZ6d7PArN4HhGM5rRjM4EzUTZjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCZrB8YxmNKMZnQmawfGMZjSjGZ0JmsHxjGY0oxmdCfr/A2EjqTycvyzYAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } + "0f993203b2004905992240787135ccb7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "11064b742bf34b45bbeb67040759fe94": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1183c04b5df54255bad175f72d4a9153": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7451e0901e6f40f5971359c9ac5d47bb", + "placeholder": "​", + "style": "IPY_MODEL_fe63dbf326194c6c813327bd643a85cd", + "value": "100%" + } + }, + "11dd9c8f6fa744cfbf25ce25f3c8291b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dd355cdd1594499bbccc8a7842a0ba93", + "placeholder": "​", + "style": "IPY_MODEL_435b1f4a70694161a749af8ea40baabb", + "value": "Downloading (…)cad52eb/modules.json: 100%" + } + }, + "12da828a56fd47fbac3881a78ae3b40c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_20ba960a7c5d4a4fa43ee8c90c412b06", + "max": 690, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_27d6c644f03a4874a0a0589cce8a9624", + "value": 690 + } + }, + "12e8ab3cc4fe40e7bbb056b3354603bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "13942a35ebd3432d9e3a107c54af9619": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bebd64b52d24437dabeb5119235853d7", + "placeholder": "​", + "style": "IPY_MODEL_094d2d5dc22d4f93918468209abbca2e", + "value": "Downloading (…)rocessor_config.json: 100%" + } + }, + "139f9e8c84f447b985c2080c17d14a8c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14b5a9186b3a47108fafa070c06ab35c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f7d2ce646a4c42ed893383a4f75af2d6", + "placeholder": "​", + "style": "IPY_MODEL_2a967808803e44fea67bd9958542eb43", + "value": "100%" + } + }, + "14cc3d3e93c54226bc2f38a4745c1d23": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "15d85f4fe15545bc85d3717d7af7bbb1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "16162c715d4745f3aa91c7f38a78a32d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "16798f3b9a934353ae8e11cdd22820ca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0f993203b2004905992240787135ccb7", + "placeholder": "​", + "style": "IPY_MODEL_e8756ee3f2f64e01b2790714b6704584", + "value": " 604/604 [00:00<00:00, 39.1kB/s]" + } + }, + "16bd920f956f43b3921b79cec4d76d87": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_16fccf90f2974a938167677b189b67a2", + "placeholder": "​", + "style": "IPY_MODEL_714590bcc27e4efc837f870812929f3e", + "value": "Extracting data files: 100%" + } + }, + "16fccf90f2974a938167677b189b67a2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1a951db095d441e295bb9ff00d4dba30": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ad0c7637293497a9a75bfa45c1a06e8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1d37c4be099b44b5bc67c2cd976693b9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1e2da1ce24984300af0b7246ebd59b14": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "20163aeba069412eabd3b506a339667f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b577441dde9e43cb9644244ca0cf336e", + "placeholder": "​", + "style": "IPY_MODEL_b850f11900ae4874963b35e0b86470e5", + "value": " 0/? [00:00<?, ? tables/s]" + } + }, + "20ba960a7c5d4a4fa43ee8c90c412b06": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "20dad493a55343efaabbc6f7c1966cf0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2108640a73e44fe28bd0445abdb2048d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_11064b742bf34b45bbeb67040759fe94", + "max": 316, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_83569f1993e44a439c4c99d5d58251f2", + "value": 316 + } + }, + "22a1ecc265c7419b99b89dc635351163": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2433cd897d734c78b3d4a62602865415": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2587fb3caed54a10829e8ba594510e7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c59a11b4cdcd45a181e5417839a21245", + "placeholder": "​", + "style": "IPY_MODEL_b9850f02e9ec4069aa836d9ed11aa019", + "value": " 316/316 [00:00<00:00, 19.1kB/s]" + } + }, + "26175752e18140b4a944bfc55f77a069": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2685384c30bb4865b7f14f62fbe516a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "27d3f1981c244549901253b3266de1ff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "27d6c644f03a4874a0a0589cce8a9624": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2a967808803e44fea67bd9958542eb43": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2db4287290eb4c25bc440fc3f2f1d258": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d8f11947b0d048489bdd649479c50b1f", + "placeholder": "​", + "style": "IPY_MODEL_70eee61c4d3842f69569dee3ac8773fa", + "value": "Downloading data files: 100%" + } + }, + "2e4deb55d7b74e2fa09c9f925fd2e751": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2f093aa6d36c4622bd09d1253bf6c3d4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2f87bde2c64b42bc90ed461265cfe1f1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2f883c076ee7470481eb7d0fcb25f685": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3017a4909cfe49648a9478ea14b9d062": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "34453701eb2f40df9a2a0154c02990d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fadb08eafb084a4e91f8406055beb502", + "placeholder": "​", + "style": "IPY_MODEL_8aae0197e477451a890b1f93cdeebe10", + "value": " 34/34 [02:30<00:00, 4.40s/ex]" + } + }, + "35a4c4fa675546ccb34d38b6e1c7139c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "35c4bd29723b46ad94b098685953aefb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8c72c24c20b84bd4a007929384e91b78", + "placeholder": "​", + "style": "IPY_MODEL_515f4f3435ef468499acd8e48daf709b", + "value": " 4.03k/4.03k [00:00<00:00, 250kB/s]" + } + }, + "35f1224563044be39e254342c6c5b635": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_87a472fb7193452faea139ab6bf1c9be", + "IPY_MODEL_eb9b58dab8044074b1cac3e39f26e561", + "IPY_MODEL_6359430089654ca4bdd587c125b317a0" ], - "source": [ - "image_to_classify = next(iter(dataset[\"test\"]))[\"image_url\"]\n", - "scores = classifier(image_to_classify, candidate_labels = labels)\n", - "# show a sample\n", - "pp.pprint(scores[0])\n", - "Image.open(get(image_to_classify, stream =True).raw)" - ] + "layout": "IPY_MODEL_be06bfcbe41040369d025626b8227b6b" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "vwkVzNhVNYnF" - }, - "source": [ - "Now we will test the accuracy and latency of a zero-shot image classifier on a sub-section of the `labelled` portion of the dataset." - ] + "36156c14c8d544deab0ea65ac5ba7508": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102, - "referenced_widgets": [ - "a8ec0defdfe841caaf0caa4de07fb84a", - "14b5a9186b3a47108fafa070c06ab35c", - "3916f72e314d46e883db7e529210b098", - "34453701eb2f40df9a2a0154c02990d4", - "9e98837e01004eba948e9c2d3ea23e5f", - "f7d2ce646a4c42ed893383a4f75af2d6", - "2a967808803e44fea67bd9958542eb43", - "540bda296c904aa48c10db351a11ca66", - "c1f28cff3e064e46a8c9bdd0d705a099", - "fadb08eafb084a4e91f8406055beb502", - "8aae0197e477451a890b1f93cdeebe10" - ] - }, - "id": "j_cJkBbbNYnF", - "outputId": "a228a4b3-4ba5-4014-8a6d-7166a688553a" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 9min 20s, sys: 1.19 s, total: 9min 21s\n", - "Wall time: 2min 28s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r" - ] - } + "3637b3da70d34d529d48d630baeaf13b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_56d32c90b86c48b08d020ed3dcfd3a4e", + "placeholder": "​", + "style": "IPY_MODEL_2f883c076ee7470481eb7d0fcb25f685", + "value": "Downloading (…)cial_tokens_map.json: 100%" + } + }, + "375cbfe47f9f4eadaf1294be69b16dfd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_088db72b2c4a41adb5b6f543c4fd4070", + "IPY_MODEL_51f3dbca5cb04c818bb65cf4adc7914d", + "IPY_MODEL_16798f3b9a934353ae8e11cdd22820ca" ], - "source": [ - "%%time\n", - "def classify_image(sample):\n", - " label = classifier(sample[\"image_url\"], candidate_labels = labels)[0][\"label\"]\n", - " sample[\"clip_zero_shot\"] = labels.index(label)\n", - " return sample\n", - "\n", - "test_dataset = test_dataset.map(classify_image)" - ] + "layout": "IPY_MODEL_97ff6a0b5366407c8138eedd05532d77" + } }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.8235294117647058\n" - ] - } + "3916f72e314d46e883db7e529210b098": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_540bda296c904aa48c10db351a11ca66", + "max": 34, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c1f28cff3e064e46a8c9bdd0d705a099", + "value": 34 + } + }, + "39555af32eeb44bfa49b04aa493320ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3c370e064d684a9f94ca552bbcc893d0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b13577cd8ab54745b1f75619740f7e8d", + "max": 524619, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6b7bd8943d824ad586939a5279368a0d", + "value": 524619 + } + }, + "3c8aa1d02f1541bdb59b0a8dff27148f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_27d3f1981c244549901253b3266de1ff", + "placeholder": "​", + "style": "IPY_MODEL_9aae9636296a4245989388403103e0eb", + "value": "Downloading data: 100%" + } + }, + "3e50350e1d3d491ababa8cd3764be1d1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_75686e22371d4d3babec811f49d280f9", + "max": 1875, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_70d08a9270294f8380cc7c740700ca8c", + "value": 1875 + } + }, + "3e71940409664a86a2be2c0b86b10d64": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0c28f7e5514c432197ed1b0e24fcc39b", + "max": 605266175, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c41c679d7f0341f3839b9abc5329ec08", + "value": 605266175 + } + }, + "3eb4c6ae76fd4118be2e466e560f6746": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_993a0a13bc7a4deea5cded6df4e27fd1", + "IPY_MODEL_6d0477f7d5744f55a7882de18b923101", + "IPY_MODEL_9b506c9457f046d4a91395935a934790" ], - "source": [ - "zero_shot_image_accuracy = accuracy_score(test_dataset[\"label\"], test_dataset[\"clip_zero_shot\"])\n", - "print(f\"Accuracy: {zero_shot_image_accuracy}\")" - ] + "layout": "IPY_MODEL_429a122883f6429d90c994558fc50cfc" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "sgnz7XtXNYnG" - }, - "source": [ - "😞 Zero-shot image classification with a CLIP model gives an accuracy of **0.82** in just under **2 minutes** for only **20%** of the test data. This score is not impressive. Let's see if the text is more reliable." - ] + "3eec352c0eea47e9b6e419785750df61": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "OEV0FJUmNYnG" - }, - "source": [ - "### 📚 Text\n", - "The product description and name also contain valuable information. Let's see what zero-shot classification of those can achieve. " - ] + "3f343b79e06e4d5d86cf0ef82729e769": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3637b3da70d34d529d48d630baeaf13b", + "IPY_MODEL_56aaec4fab6a47b18e147b2cd0c53c49", + "IPY_MODEL_a7378faa28e44fb19ecdafc7124acce2" + ], + "layout": "IPY_MODEL_b697802729d44712bfe68c0ef4f47cd8" + } }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "id": "edJSqNnaNYnG" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading (…)lve/main/config.json: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.15k/1.15k [00:00<00:00, 711kB/s]\n", - "Downloading pytorch_model.bin: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.63G/1.63G [00:06<00:00, 243MB/s]\n", - "Downloading (…)okenizer_config.json: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26.0/26.0 [00:00<00:00, 16.5kB/s]\n", - "Downloading (…)olve/main/vocab.json: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 899k/899k [00:02<00:00, 401kB/s]\n", - "Downloading (…)olve/main/merges.txt: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 456k/456k [00:00<00:00, 1.40MB/s]\n", - "Downloading (…)/main/tokenizer.json: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.36M/1.36M [00:00<00:00, 2.81MB/s]\n" - ] - } + "405da6f282174a00a302d69a17634ca8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "429a122883f6429d90c994558fc50cfc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "432654cc3aff41019a5df2f5dbcab6b3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "435b1f4a70694161a749af8ea40baabb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "435b2d9a31af4b479bca791932a9315f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4378864bd5004edcba65b59fecbe84d3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5d9977f50b704bd5b4a371387cc71a17", + "max": 34, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c7d383a298da44e491c81887632a89ae", + "value": 34 + } + }, + "4477e281c40c41f9a5c076e30640460e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fd56fa76c93c48b2bc179cb0a7bffac6", + "max": 122, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e444beb58b7c4ad1aa94959ef0b5bd52", + "value": 122 + } + }, + "4666546df28e4dc7b6c7d599cac5e26c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "47a715f99b224f41b21d9ddc7467df52": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "48a8c0d648694b8abddf07ed12b68a93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4666546df28e4dc7b6c7d599cac5e26c", + "placeholder": "​", + "style": "IPY_MODEL_1e2da1ce24984300af0b7246ebd59b14", + "value": "Downloading (…)LIPModel/config.json: 100%" + } + }, + "48f63d3af7604e8abe4ca94dbae63f48": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "498becb6513a44a4a17cff76a8ae4666": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5066a8fd18d94f9da0aa0cf354d13452", + "IPY_MODEL_a8d41a62f1b94575a744c12a399de8c8", + "IPY_MODEL_e8cc8dbe0d164a9eaec472ffe1351db9" ], - "source": [ - "classifier = pipeline(model=\"facebook/bart-large-mnli\")" - ] + "layout": "IPY_MODEL_0d3cbcf01ca14063be3ae129db78fdcb" + } }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102, - "referenced_widgets": [ - "0ad0c441b68a48c0a8fb9436050d2a1d", - "1183c04b5df54255bad175f72d4a9153", - "4378864bd5004edcba65b59fecbe84d3", - "6f63b713ac2b4358b939c2818d15e67f", - "89ef6f10348a408a8546452e1fa74528", - "7451e0901e6f40f5971359c9ac5d47bb", - "fe63dbf326194c6c813327bd643a85cd", - "5d9977f50b704bd5b4a371387cc71a17", - "c7d383a298da44e491c81887632a89ae", - "4c46328ead39408995ba5a9837d57e94", - "35a4c4fa675546ccb34d38b6e1c7139c" - ] - }, - "id": "aMK540c0NYnH", - "outputId": "5b1b7988-fa18-4945-9244-de8ab900325d" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.8235294117647058\n", - "CPU times: user 5min 41s, sys: 1.29 s, total: 5min 42s\n", - "Wall time: 1min 33s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r" - ] - } + "49d11634ca864c04bc87e472d3563e73": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_94502dbbc1ab42f48d2d375a8265dbb4", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_090c3e60ff0d4e5fa930767672802d86", + "value": 1 + } + }, + "49ddd099c0ed4535b2f3da0e1dc5f44b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0ab25a53cd28408c802a5dcda0e1206e", + "placeholder": "​", + "style": "IPY_MODEL_4ade3df272594fb68ae463234503c638", + "value": "Downloading (…)d52eb/.gitattributes: 100%" + } + }, + "4a37959a5add495981fde226b229fb19": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4ade3df272594fb68ae463234503c638": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4ae8401caf984baf9fc132490f11646a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c46328ead39408995ba5a9837d57e94": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c7287d821f1471e9ebdafa2f8229d28": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4f166794a0ad4061878ccfc623ec83c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4fc202bfa55842b48e59d4a800026331": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5066a8fd18d94f9da0aa0cf354d13452": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1a951db095d441e295bb9ff00d4dba30", + "placeholder": "​", + "style": "IPY_MODEL_e120b072886b4d4f94ef506ca3d6a605", + "value": "" + } + }, + "51307f0869b442d88a7a6b49bf7243b2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aea6c5629724499da38f8a06667f7a2e", + "IPY_MODEL_3e50350e1d3d491ababa8cd3764be1d1", + "IPY_MODEL_79e43db8a877400198f73dbab0105ade" ], - "source": [ - "%%time\n", - "def classify_text(sample):\n", - " label = classifier(sample[\"page_description\"], candidate_labels = labels)[\"labels\"][0]\n", - " sample[\"bart_zero_shot\"] = labels.index(label)\n", - " return sample\n", - "\n", - "test_dataset = test_dataset.map(classify_text)" - ] + "layout": "IPY_MODEL_046bafaebfd14a6282e231c6a7c22b3e" + } }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.8235294117647058\n" - ] - } + "515f4f3435ef468499acd8e48daf709b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "51f3dbca5cb04c818bb65cf4adc7914d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9bcb1bc9f0e2439b8754e9106eb0a802", + "max": 604, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2685384c30bb4865b7f14f62fbe516a0", + "value": 604 + } + }, + "52aa2bbbdd5246db8520ac2822fcbe54": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "52ad436eea8649058457d6380f618ea2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fcfda905fd4448b3940b04f4136c53a4", + "placeholder": "​", + "style": "IPY_MODEL_16162c715d4745f3aa91c7f38a78a32d", + "value": "100%" + } + }, + "534e82da7a5d47a58ae95ad7ebe1fc2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_13942a35ebd3432d9e3a107c54af9619", + "IPY_MODEL_2108640a73e44fe28bd0445abdb2048d", + "IPY_MODEL_2587fb3caed54a10829e8ba594510e7a" ], - "source": [ - "zero_shot_text_accuracy = accuracy_score(test_dataset[\"label\"], test_dataset[\"clip_zero_shot\"])\n", - "print(f\"Accuracy: {zero_shot_text_accuracy}\")" - ] + "layout": "IPY_MODEL_661c517493da40f581fcceab85b5bee1" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "IhAmyXNGNYnH" - }, - "source": [ - "😞 Text classification takes less time, but accuracy is also less at __.79__. This shows that some information is held in images that are not in the text. It would be great if we could consolidate this information. 🤞\n", - "\n", - "Furthermore, both of these approaches use large language models that consume a significant amount of computation." - ] + "540bda296c904aa48c10db351a11ca66": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "s_ecJF0ZNYnI" - }, - "source": [ - "## Consolidate data labeling\n", - "\n", - "The scores above from two zero-shot classification approaches reveal that the task is possible but challenging using a zero-shot approach. \n", - "\n", - "With (our modified) Argilla, we can re-label the dataset and combine the information from image and text. Then, we can perform few-shot learning on the dataset.\n", - "\n", - "Spoiler: this should give us a better score than the zero-shot approaches, by combining information in image and text. Furthermore, our resulting language model should have lower latency than the zero-shot models." - ] + "56aaec4fab6a47b18e147b2cd0c53c49": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6f7d732ae96847809230720948fba435", + "max": 389, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c026c0d5a95d487f8315821c616d1279", + "value": 389 + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Bulk Labeling with embeddings\n" - ] + "56d32c90b86c48b08d020ed3dcfd3a4e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 📷 Images\n", - "\n", - "Now we can use a clip model to get image embeddings for the images in the dataset. We can then repeat the process of adding vectors to our dataset, but now with an `image_vectors` key." - ] + "5748285ca2ba4b93b30621437e931345": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load CLIP model for image embedding\n", - "image_encoder = SentenceTransformer('clip-ViT-B-32')" - ] + "57b9cf8fe2fa4d918e8dc15e2efb6153": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def encode_image(image_url):\n", - " # utility function to encode image\n", - " image = Image.open(get(image_url, stream =True).raw)\n", - " vector = image_encoder.encode(image).tolist()\n", - " return vector\n", - "\n", - "# Encode text field using batched computation\n", - "dataset = dataset.map(lambda sample: {\"image_vectors\": encode_image(sample[\"image_url\"])})" - ] + "57ed9e91eb2f45a18ee08f6989bec0a4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "2pkY0NZ5NYnI" - }, - "source": [ - "### 📚 Text\n", - "\n", - "With Argilla, we can annotate samples using semantic search and the 'find similar' button. There's a complete tutorial on this [here](labelling-textclassification-sentence-transformers-semantic.ipynb). It requires the recently added Similarity search features.\n", - "\n", - "![Argilla with images tutorial](https://docs.v1.argilla.io/en/latest/_static/reference/webapp/features-similaritysearch.png)\n", - "\n" - ] + "5817239aa98046e9be3736688f8c1a5f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4c7287d821f1471e9ebdafa2f8229d28", + "max": 3, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5a65206e09c04176bfd33bcb31cd1ad5", + "value": 3 + } }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "id": "w0JW4z8nNYnI" - }, - "outputs": [], - "source": [ - "# Define sentence transformers model for text embedding\n", - "dataset = load_dataset(ELECTRONICS_DATASET, streaming=True, split=\"unlabelled\")\n", - "encoder = SentenceTransformer(\"all-MiniLM-L6-v2\")" - ] + "5a65206e09c04176bfd33bcb31cd1ad5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "id": "BmZPHluTNYnJ" - }, - "outputs": [], - "source": [ - "# Encode text field using batched computation\n", - "dataset = dataset.map(lambda batch: {\"text_vectors\": encoder.encode(batch[\"page_name\"]).tolist()}, batch_size=32, batched=True)" - ] + "5c634542ed3940a1a8ac3f73b634e88d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_de16a90176c24ff8aa76eb0af1281d22", + "placeholder": "​", + "style": "IPY_MODEL_c9464f1ec9e64361b0e621c664514ada", + "value": "Epoch: 100%" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Upload to Argilla\n", - "\n", - "We can upload multiple vectors to Argilla. We just need to use separate keys. We will use `image_vectors` and `text_vectors`." - ] + "5d9977f50b704bd5b4a371387cc71a17": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "# Turn vectors into a dictionary\n", - "dataset = dataset.map(\n", - " lambda r: {\"vectors\": {\"image\": r[\"image_vectors\"], \"text\": r[\"text_vectors\"]}},\n", - ")" - ] + "5e8c1c4d99654ff1b32732a7297871f7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 84, - "referenced_widgets": [ - "a07c719a0ffc41f9a0e8227562dc69d1", - "dc03df51df3845edac3492bc3ee3391e", - "ebf96889240d44f0b5a16fd945090213", - "c011f7d4aa7b4f66997d1c88804afacf", - "dcadb8f0088d43f6bc1a2cdc72cff730", - "b73e9fcc9e634c2780cc880cc65cc678", - "57ed9e91eb2f45a18ee08f6989bec0a4", - "4ae8401caf984baf9fc132490f11646a", - "e145a20bac85423a8ac6a1841f7ff4d7", - "0b4387ee1a0d4f769b391dcbc4d5477c", - "b8da2402e8e245d2b5ff592f602f138e" - ] - }, - "id": "gaEQm1BdNYnK", - "outputId": "0dfb1340-a685-4071-a4a1-71e6aa42463a" - }, - "outputs": [], - "source": [ - "# we need to set the metadata field length to 200 for longer urls\n", - "os.environ[\"ARGILLA_METADATA_FIELD_LENGTH\"] = \"200\"\n", - "\n", - "# instantiate Argilla records with vectors\n", - "records = [\n", - " rg.TextClassificationRecord(\n", - " text=sample[\"page_name\"],\n", - " metadata=dict(_image_url=sample[\"image_url\"]),\n", - " vectors=sample[\"vectors\"]\n", - " )\n", - " for sample in dataset\n", - "]\n", - "dataset_rg = rg.DatasetForTextClassification(records)\n", - "\n", - "# upload recors with vectors to Argilla\n", - "rg.log(\n", - " records=dataset_rg,\n", - " name=\"electronics_with_vectors\",\n", - ")" - ] + "61e53dcae1c4457aa5089ae1e8d276ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a5a67282d5b14d3f803347ddd2ccc44f", + "placeholder": "​", + "style": "IPY_MODEL_b5a4880486774113bef9fc78d7bb4ed9", + "value": "100%" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "I5G3haEnNYnL" - }, - "source": [ - "![Screenshot_20230224_214133.png](data:image/png;base64,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CCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdgwRICCGEEEII0TFIgIQQQgghhBAdg6dcLjdan/c7jUbz1O25EEIIIYQQQjyaHBABovBw8nq98Pv98Hg8rTVCCCGEEEII8ehxQJrAteUnEAhIfoQQQgghhBD7jf0uQJSfWq3mMj9CCCGEEEIIsT85IBkgCpAyP0IIIYQQQoj9zQHJAHESQgghhBBCiP3NAesDJIQQQgghhBD7mwMiQEIIIYQQQghxIJAACSGEEEIIIToGCZAQQgghhBCiYzhkBSifz7c+CSGEEEIIIcSe4SmXy/t1RIJ6vY5isYhUKtVasuds3LgRP/jBD3DPPfe47319fTj//PNx3nnnue9CCCGEEEIIsTsOGQEaHx/Hhz70ISc7lJ5oNIp7770XX//613HaaafhqU99amvLvaNUKrmXsvp8vtaSfQ/PEQgE4PWqxaEQQgghhBAHkkMmIqfoUH4oOpQfsnr1arz1rW/FJZdc4gTp4XDDDTdg8+bNrW+75k9/+lPr08OD58hkMq1vQgghhBBCiAPFISNAzPYw87Mzvb29WLRoEW6++ebWkofPyMgI0uk0rr/++u1CRTnK5XJYt26d+85tKDPchnB7npvrmd1q014+U654nKmpqda35rHbbN26dYfzkkKhgNtvvx133303arVaa+lf4LL777/fnYfn2xXt47LM7fPxGiqVivs8s0wsP69j5vG4Hdffd9992LRpkztee1/CZUIIIYQQQhwqHFJtstqZn52hBO2LQREoGw8++KDLLN14441ORnp6elzzuIGBAbcNhePOO+/E8uXLMT09jauuugqLFy92L3dtZ4q4/Nprr3XLWa621HA+Uxh4PsLjrV+/Hocffrj7/NBDDznJ+POf/4x58+a55oK/+93vdhAsctlllyEUCrmycNuZYkJ4LEpP+7jt8/Ea2vU1s0wsM5sn8njXXHMNRkdH3XaXX345wuGw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QEREREREtGEwABERERER0YbBAERERERERBsGAxAREREREW0YDEBERERERLRhMAAREREREdGGwQBEREREREQbBgMQERERERFtGAxARERERES0YTAAERERERHRhsEAREREREREGwYDEBERERERbRgMQEREREREtGEwABERERER0YbBAERERERERBsGAxAREREREW0YDEBERERERLRhMAAREREREdGGwQBEREREREQbBgMQERERERFtGAxARERERES0YTAAERERERHRhsEAREREREREGwYDEBERERERbRjXNQC12+1OiYiIiIiI6N133QKQbdvwfb/zjIiIiIiI6N133QKQ67qo1+udZ0RERERERO++6xaAIpEIisUiPM/rLCEiIiIiInp3XbcAZFkWenp6kM/nGYKIiIiIiOg9EWo0Gtd1JALtBqctQRqGtFVIrw0KhUKdtURERERERP//hObn5zkUGxERERERbQjXvQWIiIiIiIjovXJd7wNERERERET0XmIAIiIiIiKiDYMBiIiIiIiINgwGICIiIiIi2jAYgIiIiIiIaMNgACIiIiIiog2DAYiIiIiIiDYMBiAiIiIiItowGICIiIiIiGiDAP4vaNo1q0uv1+gAAAAASUVORK5CYII=)" - ] + "6359430089654ca4bdd587c125b317a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e8e295d7292245fb9f17413599d59960", + "placeholder": "​", + "style": "IPY_MODEL_0286aff9c56b43e7abd15f17dd33d6db", + "value": " 85.3k/85.3k [00:00<00:00, 286kB/s]" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "-x1c0NC4NYnO" - }, - "source": [ - "## Fewshot Classification\n", - "\n", - "We can now use our newly labelled dataset to train a classifier. We will use a SetFit model due to the limited sample count. Notice the significantly reduced inference time and increased accuracy. \n", - "\n", - "A complete tutorial on few-shot classification with SetFit and Argilla can be found [here](labelling-textclassification-setfit-zeroshot.ipynb)." - ] + "63de802f18e44b16a3a2f5029ad7b705": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9e17b92da1aa43d0aa980db275437fde", + "placeholder": "​", + "style": "IPY_MODEL_d2186c7599164e528aa3d92f6999a9bb", + "value": " 3/3 [00:05<00:00, 1.70s/it]" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "M3rtb_KHNYnO", - "outputId": "4858c080-44e4-4d84-b22b-b01b3ce28b0f" - }, - "outputs": [], - "source": [ - "# load the 'newly' labelled dataset \n", - "dataset_rg = rg.load(\"electronics_with_vectors\")\n", - "labelled_dataset = dataset_rg.prepare_for_training(framework=\"transformers\")\n", - "# # To try the prelabelled slice from HF Hub\n", - "# labelled_dataset = load_dataset(ELECTRONICS_DATASET, split=\"labelled\")\n", - "# # To evaluate on the larger test set\n", - "# test_dataset = datasets.load_dataset(ELECTRONICS_DATASET, split=\"test\")" - ] + "6482c21eb5d449f795a9e39fcae6a46e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2db4287290eb4c25bc440fc3f2f1d258", + "IPY_MODEL_b470309f2a6b4878852ae9e589764edf", + "IPY_MODEL_63de802f18e44b16a3a2f5029ad7b705" + ], + "layout": "IPY_MODEL_670f91d2101c4d87997c228210646f89" + } }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "xwTr038lNYnO", - "outputId": "70f363ab-78ec-4e3e-c009-fd266968ca30" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n" - ] - } + "661c517493da40f581fcceab85b5bee1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "670f91d2101c4d87997c228210646f89": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "68f83424c07844f1b439cf9a2170818b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6b7bd8943d824ad586939a5279368a0d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6d0477f7d5744f55a7882de18b923101": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e94edd188d8942e6b7f01cb1b962ba46", + "max": 315, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7059d83f776f49c887879e870bb71ee8", + "value": 315 + } + }, + "6f63b713ac2b4358b939c2818d15e67f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4c46328ead39408995ba5a9837d57e94", + "placeholder": "​", + "style": "IPY_MODEL_35a4c4fa675546ccb34d38b6e1c7139c", + "value": " 34/34 [01:36<00:00, 2.65s/ex]" + } + }, + "6f7d732ae96847809230720948fba435": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7059d83f776f49c887879e870bb71ee8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "707c06347f5444e185ca2bc7c07eecfa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "70d08a9270294f8380cc7c740700ca8c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "70eee61c4d3842f69569dee3ac8773fa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "71181e8f913b412fb72917c55a151723": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_735a35f35dee4d548cd6284f9e3e1f5a", + "placeholder": "​", + "style": "IPY_MODEL_b7dfa3f0d2374482af6dc25ec8dd65df", + "value": "Downloading data: 100%" + } + }, + "713939a800704d4a8e95217c4b3c6d0e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ac8f808451764c4aac75914710521941", + "IPY_MODEL_3c370e064d684a9f94ca552bbcc893d0", + "IPY_MODEL_a5fc404735384abba31ed330ad4d4985" ], - "source": [ - "# Load SetFit model from Hub\n", - "model = SetFitModel.from_pretrained(\"sentence-transformers/paraphrase-mpnet-base-v2\")\n", - "\n", - "# Create trainer\n", - "trainer = SetFitTrainer(\n", - " model=model,\n", - " train_dataset=labelled_dataset,\n", - " eval_dataset=test_dataset,\n", - " loss_class=CosineSimilarityLoss,\n", - " batch_size=16,\n", - " num_iterations=10,\n", - " column_mapping={\"page_name\":\"text\", \"label\":\"label\"}\n", - ")\n" - ] + "layout": "IPY_MODEL_f6e1dadaed924874a4c12e4759921e36" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "Yr7j8UldNYnP" - }, - "source": [ - "Now let's train ✈" - ] + "714590bcc27e4efc837f870812929f3e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 240, - "referenced_widgets": [ - "76252be98eed408a8f08fab0edca8d86", - "5c634542ed3940a1a8ac3f73b634e88d", - "b0721a5abbc044a59a9d119c65523ec3", - "822cf5f25bbb4845a8df5b09df0c88f5", - "d24e98b7ba64420588aeee6c0a7d787a", - "de16a90176c24ff8aa76eb0af1281d22", - "c9464f1ec9e64361b0e621c664514ada", - "74cce0696fd74f999b8476974ec74f30", - "cad144a0ae5948f5896d12f83c044dfd", - "e831d4f1ad4d4f5f97bc9569a5294ca9", - "71f5c4292d4f4564bb0bf5af9368163f", - "3eb4c6ae76fd4118be2e466e560f6746", - "993a0a13bc7a4deea5cded6df4e27fd1", - "6d0477f7d5744f55a7882de18b923101", - "9b506c9457f046d4a91395935a934790", - "429a122883f6429d90c994558fc50cfc", - "9411b438e2634a3ebd0d1617d2ec3a7b", - "ffbfe6debabc4f5c8cad8383d596946e", - "e94edd188d8942e6b7f01cb1b962ba46", - "7059d83f776f49c887879e870bb71ee8", - "a696789fe05c40b281a0090625e66004", - "02b23c74c75e425cafe0c231b2892c47" - ] - }, - "id": "qqp69mUVNYnP", - "outputId": "dc1d2b88-a61d-4f78-fd98-c8c5510b7972" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Applying column mapping to training dataset\n", - "***** Running training *****\n", - " Num examples = 5040\n", - " Num epochs = 1\n", - " Total optimization steps = 315\n", - " Total train batch size = 16\n", - "Iteration: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 315/315 [00:53<00:00, 5.94it/s]\n", - "Epoch: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:53<00:00, 53.04s/it]\n", - "Applying column mapping to evaluation dataset\n", - "***** Running evaluation *****\n", - "Downloading builder script: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4.20k/4.20k [00:00<00:00, 4.10MB/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'accuracy': 0.9117647058823529}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } + "71f5c4292d4f4564bb0bf5af9368163f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7282d9ef9a754bcfb1297081296aed5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c4a54f5262014b77964d42429d5e43bf", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cf540757bc79428bab170e157eb9381f", + "value": 1 + } + }, + "735a35f35dee4d548cd6284f9e3e1f5a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "742743267970469b8b358f051aeb3d7f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7451e0901e6f40f5971359c9ac5d47bb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "74cce0696fd74f999b8476974ec74f30": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "74d53a9e164f492785463bd1cdb376a7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_22a1ecc265c7419b99b89dc635351163", + "max": 4025, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_405da6f282174a00a302d69a17634ca8", + "value": 4025 + } + }, + "75686e22371d4d3babec811f49d280f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "76252be98eed408a8f08fab0edca8d86": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5c634542ed3940a1a8ac3f73b634e88d", + "IPY_MODEL_b0721a5abbc044a59a9d119c65523ec3", + "IPY_MODEL_822cf5f25bbb4845a8df5b09df0c88f5" ], - "source": [ - "trainer.train()\n", - "metrics = trainer.evaluate()" - ] + "layout": "IPY_MODEL_d24e98b7ba64420588aeee6c0a7d787a" + } }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9117647058823529\n" - ] - } + "77131a41265342a28468664ad067d4c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "79e43db8a877400198f73dbab0105ade": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_02f439d46b384718b0c7ab5fd8aa2d03", + "placeholder": "​", + "style": "IPY_MODEL_742743267970469b8b358f051aeb3d7f", + "value": " 1.88k/1.88k [00:00<00:00, 114kB/s]" + } + }, + "7b3978443935464b9a1352ef3bd2d415": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d508b60c1f44aecb9e3f9711ecc0ce8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "820351c564124d7d871dc17681b747e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7b3978443935464b9a1352ef3bd2d415", + "placeholder": "​", + "style": "IPY_MODEL_ec25ea55d62e4c0a9443d91d015bdbd6", + "value": " 605M/605M [00:04<00:00, 153MB/s]" + } + }, + "822cf5f25bbb4845a8df5b09df0c88f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e831d4f1ad4d4f5f97bc9569a5294ca9", + "placeholder": "​", + "style": "IPY_MODEL_71f5c4292d4f4564bb0bf5af9368163f", + "value": " 1/1 [00:57<00:00, 57.78s/it]" + } + }, + "8294163893bc40c2bef26032babb3938": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "83569f1993e44a439c4c99d5d58251f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8364e4e977ad41fab9688c5a7443f276": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_11dd9c8f6fa744cfbf25ce25f3c8291b", + "IPY_MODEL_4477e281c40c41f9a5c076e30640460e", + "IPY_MODEL_b800cade432f484ab1619620ba8a93b8" ], - "source": [ - "fewshot_relabelled_text_accuracy = metrics[\"accuracy\"]\n", - "pp.pprint(fewshot_relabelled_text_accuracy)" - ] + "layout": "IPY_MODEL_b57479b0aab44fae95c28b59905e053c" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "TLEiVC_KNYnP" - }, - "source": [ - "## Summary\n", - "\n", - "In this tutorial, we have learned to bulk-label a multi-modal dataset using a modified version of Argilla. We compared a few-shot classifier trained on the bulk-labelled dataset with zero-shot classifiers of image and text. The results show that the few-shot classifier is able to achieve a higher accuracy than the zero-shot classifiers. Furthermore, the SetFit model is significantly faster than the zero-shot classifiers.\n", - "\n", - "This approach can be applied to classification tasks with limited data and can be used to train a classifier with minimal human effort.\n", - "\n" - ] + "84d1a26c298b42cd820bcd2e4302a443": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAJ6CAYAAAD6q0KOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABBdUlEQVR4nO3de1yW9f3H8TcoooaCZuCJRFHzhGZgDs8HPKdZblmZkqlzLQ9J9ZuWQlppueXMrEzNpi1TOznLpiWGR0pTYZZpmiCGouIBFAyUm98frXtjYJOWfPS+Xs/H435Mvvd1y9vHvuHb7/W9rsursLCwUAAAAEa8rQMAAABno4wAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAVHnrAJfD5XLpyJEjqlKliry8vKzjAACAy1BYWKizZ8+qdu3a8va+9PrHNVFGjhw5ouDgYOsYAADgZzh8+LDq1q17yfeviTJSpUoVST/8YapWrWqcBgAAXI7s7GwFBwe7/x6/lGuijPx4aqZq1aqUEQAArjH/bYsFG1gBAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU+WtAwAAnCVk4mrrCB4h9dl+1hF+MayMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU+WtA3iSkImrrSN4jNRn+1lH8AjMyV8OcxK4clgZAQAApigjAADAFGUEAACYoowAAABTP6uMvPTSSwoJCVHFihXVtm1bbdu27SePnz17tm666SZVqlRJwcHBmjBhgr7//vufFRgAAHiWUpeR5cuXKyYmRnFxcdq5c6datWqlXr166fjx4yUev3TpUk2cOFFxcXH6+uuv9dprr2n58uV6/PHH/+fwAADg2lfqMjJr1iyNGjVKw4cPV7NmzTRv3jxVrlxZixYtKvH4rVu3qn379rr33nsVEhKinj176p577vmvqykAAMAZSlVG8vPztWPHDkVFRf3rN/D2VlRUlBITE0v8TLt27bRjxw53+Th48KA++ugj9e3b95LfJy8vT9nZ2UVeAADAM5XqpmeZmZkqKChQUFBQkfGgoCDt3bu3xM/ce++9yszMVIcOHVRYWKiLFy/qd7/73U+eppkxY4amTp1ammgAAOAadcWvpklISND06dP18ssva+fOnXrvvfe0evVqPfXUU5f8zKRJk5SVleV+HT58+ErHBAAARkq1MlKjRg2VK1dOx44dKzJ+7Ngx1axZs8TPTJkyRUOHDtXIkSMlSWFhYcrJydFvf/tbPfHEE/L2Lt6HfH195evrW5poAADgGlWqlZEKFSooPDxc8fHx7jGXy6X4+HhFRkaW+Jnc3NxihaNcuXKSpMLCwtLmBQAAHqbUD8qLiYlRdHS0IiIidOutt2r27NnKycnR8OHDJUnDhg1TnTp1NGPGDElS//79NWvWLLVu3Vpt27bVgQMHNGXKFPXv399dSgAAgHOVuowMHjxYJ06cUGxsrDIyMnTzzTdrzZo17k2taWlpRVZCJk+eLC8vL02ePFnp6em64YYb1L9/fz3zzDO/3J8CAABcs0pdRiRpzJgxGjNmTInvJSQkFP0G5csrLi5OcXFxP+dbAQAAD8ezaQAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMEUZAQAApigjAADAFGUEAACYoowAAABTlBEAAGCKMgIAAExRRgAAgCnKCAAAMPWzyshLL72kkJAQVaxYUW3bttW2bdt+8vgzZ87ooYceUq1ateTr66vGjRvro48++lmBAQCAZylf2g8sX75cMTExmjdvntq2bavZs2erV69e2rdvnwIDA4sdn5+frx49eigwMFDvvPOO6tSpo0OHDikgIOCXyA8AAK5xpS4js2bN0qhRozR8+HBJ0rx587R69WotWrRIEydOLHb8okWLdOrUKW3dulU+Pj6SpJCQkP8tNQAA8BilOk2Tn5+vHTt2KCoq6l+/gbe3oqKilJiYWOJnVq1apcjISD300EMKCgpSixYtNH36dBUUFPxvyQEAgEco1cpIZmamCgoKFBQUVGQ8KChIe/fuLfEzBw8e1Pr16zVkyBB99NFHOnDggH7/+9/rwoULiouLK/EzeXl5ysvLc3+dnZ1dmpgAAOAacsWvpnG5XAoMDNT8+fMVHh6uwYMH64knntC8efMu+ZkZM2bI39/f/QoODr7SMQEAgJFSlZEaNWqoXLlyOnbsWJHxY8eOqWbNmiV+platWmrcuLHKlSvnHmvatKkyMjKUn59f4mcmTZqkrKws9+vw4cOliQkAAK4hpSojFSpUUHh4uOLj491jLpdL8fHxioyMLPEz7du314EDB+Ryudxj33zzjWrVqqUKFSqU+BlfX19VrVq1yAsAAHimUp+miYmJ0YIFC7R48WJ9/fXXevDBB5WTk+O+umbYsGGaNGmS+/gHH3xQp06d0vjx4/XNN99o9erVmj59uh566KFf7k8BAACuWaW+tHfw4ME6ceKEYmNjlZGRoZtvvllr1qxxb2pNS0uTt/e/Ok5wcLDWrl2rCRMmqGXLlqpTp47Gjx+vP/zhD7/cnwIAAFyzSl1GJGnMmDEaM2ZMie8lJCQUG4uMjNRnn332c74VAADwcDybBgAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABg6meVkZdeekkhISGqWLGi2rZtq23btl3W55YtWyYvLy8NHDjw53xbAADggUpdRpYvX66YmBjFxcVp586datWqlXr16qXjx4//5OdSU1P16KOPqmPHjj87LAAA8DylLiOzZs3SqFGjNHz4cDVr1kzz5s1T5cqVtWjRokt+pqCgQEOGDNHUqVPVoEGD/ykwAADwLKUqI/n5+dqxY4eioqL+9Rt4eysqKkqJiYmX/Ny0adMUGBioESNGXNb3ycvLU3Z2dpEXAADwTKUqI5mZmSooKFBQUFCR8aCgIGVkZJT4mc2bN+u1117TggULLvv7zJgxQ/7+/u5XcHBwaWICAIBryBW9mubs2bMaOnSoFixYoBo1alz25yZNmqSsrCz36/Dhw1cwJQAAsFS+NAfXqFFD5cqV07Fjx4qMHzt2TDVr1ix2/LfffqvU1FT179/fPeZyuX74xuXLa9++fQoNDS32OV9fX/n6+pYmGgAAuEaVamWkQoUKCg8PV3x8vHvM5XIpPj5ekZGRxY5v0qSJdu/eraSkJPdrwIAB6tq1q5KSkjj9AgAASrcyIkkxMTGKjo5WRESEbr31Vs2ePVs5OTkaPny4JGnYsGGqU6eOZsyYoYoVK6pFixZFPh8QECBJxcYBAIAzlbqMDB48WCdOnFBsbKwyMjJ08803a82aNe5NrWlpafL25sauAADg8pS6jEjSmDFjNGbMmBLfS0hI+MnP/uUvf/k53xIAAHgoljAAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRlBAAAmKKMAAAAU5QRAABgijICAABMUUYAAIApyggAADBFGQEAAKYoIwAAwBRl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fn7u9ypUqKCQkBANGjTIKB2cJiYmxv1rl8ul+fPna926dWrZsmWxu7HOmjWrrOPBoT799FPrCPgn9ox4uMWLF2vw4MFF7igIlLWuXbte1nFeXl5av379FU4D4GpDGXGIHTt26Ouvv5b0wx0FW7dubZwIAGz94x//uOxjW7ZseQWTgDLi4Y4fP667775bCQkJCggIkCSdOXNGXbt21bJly3TDDTfYBoTjZWdna/369WrSpImaNGliHQcO4u3tLS8vL/23vwbZM3LlsWfEw40dO1Znz57VV199paZNm0qS9uzZo+joaI0bN05vvfWWcUI4zV133aVOnTppzJgxOn/+vCIiIpSamqrCwkItW7aMvUwoMykpKdYR8E+sjHg4f39/rVu3Tm3atCkyvm3bNvXs2VNnzpyxCQbHqlmzptauXatWrVpp6dKliouLU3JyshYvXqz58+dr165d1hEBlDHuwOrhXC5XsasVJMnHx6fYbbiBspCVlaXq1atLktasWaNBgwapcuXK6tevn/bv32+cDk72xhtvqH379qpdu7YOHTokSZo9e7b+9re/GSfzfJQRD9etWzeNHz9eR44ccY+lp6drwoQJ6t69u2EyOFVwcLASExOVk5OjNWvWqGfPnpKk06dPc9UXzLzyyiuKiYlR3759debMGfcekYCAAM2ePds2nANQRjzc3LlzlZ2drZCQEIWGhio0NFT169dXdna2XnzxRet4cKCHH35YQ4YMUd26dVW7dm116dJFkrRx40aFhYXZhoNjvfjii1qwYIGeeOIJlStXzj0eERGh3bt3GyZzBvaMOEBhYaHWrVunvXv3SpKaNm2qqKgo41Rwsh07digtLU09evRw35Bv9erVCggIUPv27Y3TwYkqVaqkvXv3ql69eqpSpYqSk5PVoEED7d+/Xy1bttT58+etI3o0rqZxAC8vL/Xo0UM9evSwjgJIksLDw4s9CbVfv35Fvq5ataqSkpLUoEGDsowGh6pfv76SkpJUr169IuNr1qxxX4mIK4cy4gDx8fGKj4/X8ePHi21aXbRokVEq4KexaIuyFBMTo4ceekjff/+9CgsLtW3bNr311luaMWOGFi5caB3P41FGPNzUqVM1bdo0RUREqFatWv/1oVAA4EQjR45UpUqVNHnyZOXm5uree+9V7dq19cILL+juu++2jufx2DPi4WrVqqWZ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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "8513e53c07c04d75999be1fec6d5b491": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "857c37c3638b4c7d8ffaaaa9fe5932f0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "87a472fb7193452faea139ab6bf1c9be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_082dfef575c94327a5377c3f7278cf5a", + "placeholder": "​", + "style": "IPY_MODEL_84d1a26c298b42cd820bcd2e4302a443", + "value": "Downloading data: 100%" + } + }, + "88677a526eae40a1b5e0b5e9e7a25218": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_139f9e8c84f447b985c2080c17d14a8c", + "max": 85317, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1d37c4be099b44b5bc67c2cd976693b9", + "value": 85317 + } + }, + "88901ee5ca86458288bf82a22db7e379": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "88edaefb70c34854ad6f16d5a82b40e7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ba93d6edfed5434397d869ba2bd7aca5", + "IPY_MODEL_7282d9ef9a754bcfb1297081296aed5a", + "IPY_MODEL_946c67b0a3f54ce09c35db7bef44991c" ], - "source": [ - "from pandas import Series\n", - "\n", - "Series(\n", - " dict(\n", - " zero_shot_image_accuracy=zero_shot_image_accuracy,\n", - " zero_shot_text_accuracy=zero_shot_text_accuracy,\n", - " fewshot_relabelled_text_accuracy=fewshot_relabelled_text_accuracy,\n", - " )\n", - ").plot.bar()" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "machine_shape": "hm", - "provenance": [] - }, - "gpuClass": "standard", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - }, - "vscode": { - "interpreter": { - "hash": "97cc609b13305c559618ec78a438abc56230b9381f827f22d070313b9a1f3777" - } - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "01939245f8874aaca606e7a1e8b954a8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_57b9cf8fe2fa4d918e8dc15e2efb6153", - "placeholder": "​", - "style": "IPY_MODEL_4f166794a0ad4061878ccfc623ec83c0", - "value": " 252/252 [00:02<00:00, 101.31it/s]" - } - }, - "01bc8315e7cd4064a8653eae44cea192": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "0286aff9c56b43e7abd15f17dd33d6db": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "02b23c74c75e425cafe0c231b2892c47": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "02f439d46b384718b0c7ab5fd8aa2d03": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "03390d37eba24242ae6c2099d5fe7863": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "046bafaebfd14a6282e231c6a7c22b3e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "052b62b792fc4f1183ffb91f18d655c7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "05c50612c7ec41c7877d85c9d0502c0b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "082dfef575c94327a5377c3f7278cf5a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "088db72b2c4a41adb5b6f543c4fd4070": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_47a715f99b224f41b21d9ddc7467df52", - "placeholder": "​", - "style": "IPY_MODEL_b179999ec76e48579fd195b7c788f366", - "value": "Downloading (…)okenizer_config.json: 100%" - } - }, - "090c3e60ff0d4e5fa930767672802d86": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "094d2d5dc22d4f93918468209abbca2e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "097dc95081d04f7e9f803384b5dee1ea": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5748285ca2ba4b93b30621437e931345", - "placeholder": "​", - "style": "IPY_MODEL_3017a4909cfe49648a9478ea14b9d062", - "value": "Downloading (…)ce_transformers.json: 100%" - } - }, - "0987a64b9cea4850998e78d76d31c3b8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0ab25a53cd28408c802a5dcda0e1206e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0ad0c441b68a48c0a8fb9436050d2a1d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_1183c04b5df54255bad175f72d4a9153", - "IPY_MODEL_4378864bd5004edcba65b59fecbe84d3", - "IPY_MODEL_6f63b713ac2b4358b939c2818d15e67f" - ], - "layout": "IPY_MODEL_89ef6f10348a408a8546452e1fa74528" - } - }, - "0b4387ee1a0d4f769b391dcbc4d5477c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0c28f7e5514c432197ed1b0e24fcc39b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0d3cbcf01ca14063be3ae129db78fdcb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "0d4090c9cfd542cba1a14d30b154f733": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "0f590a3e9ed148c9b076fa3b16e287f8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0f993203b2004905992240787135ccb7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "11064b742bf34b45bbeb67040759fe94": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1183c04b5df54255bad175f72d4a9153": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7451e0901e6f40f5971359c9ac5d47bb", - "placeholder": "​", - "style": "IPY_MODEL_fe63dbf326194c6c813327bd643a85cd", - "value": "100%" - } - }, - "11dd9c8f6fa744cfbf25ce25f3c8291b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_dd355cdd1594499bbccc8a7842a0ba93", - "placeholder": "​", - "style": "IPY_MODEL_435b1f4a70694161a749af8ea40baabb", - "value": "Downloading (…)cad52eb/modules.json: 100%" - } - }, - "12da828a56fd47fbac3881a78ae3b40c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_20ba960a7c5d4a4fa43ee8c90c412b06", - "max": 690, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_27d6c644f03a4874a0a0589cce8a9624", - "value": 690 - } - }, - "12e8ab3cc4fe40e7bbb056b3354603bc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "13942a35ebd3432d9e3a107c54af9619": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_bebd64b52d24437dabeb5119235853d7", - "placeholder": "​", - "style": "IPY_MODEL_094d2d5dc22d4f93918468209abbca2e", - "value": "Downloading (…)rocessor_config.json: 100%" - } - }, - "139f9e8c84f447b985c2080c17d14a8c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "14b5a9186b3a47108fafa070c06ab35c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f7d2ce646a4c42ed893383a4f75af2d6", - "placeholder": "​", - "style": "IPY_MODEL_2a967808803e44fea67bd9958542eb43", - "value": "100%" - } - }, - "14cc3d3e93c54226bc2f38a4745c1d23": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "15d85f4fe15545bc85d3717d7af7bbb1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "16162c715d4745f3aa91c7f38a78a32d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "16798f3b9a934353ae8e11cdd22820ca": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0f993203b2004905992240787135ccb7", - "placeholder": "​", - "style": "IPY_MODEL_e8756ee3f2f64e01b2790714b6704584", - "value": " 604/604 [00:00<00:00, 39.1kB/s]" - } - }, - "16bd920f956f43b3921b79cec4d76d87": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_16fccf90f2974a938167677b189b67a2", - "placeholder": "​", - "style": "IPY_MODEL_714590bcc27e4efc837f870812929f3e", - "value": "Extracting data files: 100%" - } - }, - "16fccf90f2974a938167677b189b67a2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1a951db095d441e295bb9ff00d4dba30": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1ad0c7637293497a9a75bfa45c1a06e8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1d37c4be099b44b5bc67c2cd976693b9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "1e2da1ce24984300af0b7246ebd59b14": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "20163aeba069412eabd3b506a339667f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b577441dde9e43cb9644244ca0cf336e", - "placeholder": "​", - "style": "IPY_MODEL_b850f11900ae4874963b35e0b86470e5", - "value": " 0/? [00:00<?, ? tables/s]" - } - }, - "20ba960a7c5d4a4fa43ee8c90c412b06": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "20dad493a55343efaabbc6f7c1966cf0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "2108640a73e44fe28bd0445abdb2048d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_11064b742bf34b45bbeb67040759fe94", - "max": 316, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_83569f1993e44a439c4c99d5d58251f2", - "value": 316 - } - }, - "22a1ecc265c7419b99b89dc635351163": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2433cd897d734c78b3d4a62602865415": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2587fb3caed54a10829e8ba594510e7a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c59a11b4cdcd45a181e5417839a21245", - "placeholder": "​", - "style": "IPY_MODEL_b9850f02e9ec4069aa836d9ed11aa019", - "value": " 316/316 [00:00<00:00, 19.1kB/s]" - } - }, - "26175752e18140b4a944bfc55f77a069": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2685384c30bb4865b7f14f62fbe516a0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "27d3f1981c244549901253b3266de1ff": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "27d6c644f03a4874a0a0589cce8a9624": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "2a967808803e44fea67bd9958542eb43": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "2db4287290eb4c25bc440fc3f2f1d258": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d8f11947b0d048489bdd649479c50b1f", - "placeholder": "​", - "style": "IPY_MODEL_70eee61c4d3842f69569dee3ac8773fa", - "value": "Downloading data files: 100%" - } - }, - "2e4deb55d7b74e2fa09c9f925fd2e751": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "2f093aa6d36c4622bd09d1253bf6c3d4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2f87bde2c64b42bc90ed461265cfe1f1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "2f883c076ee7470481eb7d0fcb25f685": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3017a4909cfe49648a9478ea14b9d062": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "34453701eb2f40df9a2a0154c02990d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fadb08eafb084a4e91f8406055beb502", - "placeholder": "​", - "style": "IPY_MODEL_8aae0197e477451a890b1f93cdeebe10", - "value": " 34/34 [02:30<00:00, 4.40s/ex]" - } - }, - "35a4c4fa675546ccb34d38b6e1c7139c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "35c4bd29723b46ad94b098685953aefb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_8c72c24c20b84bd4a007929384e91b78", - "placeholder": "​", - "style": "IPY_MODEL_515f4f3435ef468499acd8e48daf709b", - "value": " 4.03k/4.03k [00:00<00:00, 250kB/s]" - } - }, - "35f1224563044be39e254342c6c5b635": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_87a472fb7193452faea139ab6bf1c9be", - "IPY_MODEL_eb9b58dab8044074b1cac3e39f26e561", - "IPY_MODEL_6359430089654ca4bdd587c125b317a0" - ], - "layout": "IPY_MODEL_be06bfcbe41040369d025626b8227b6b" - } - }, - "36156c14c8d544deab0ea65ac5ba7508": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3637b3da70d34d529d48d630baeaf13b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_56d32c90b86c48b08d020ed3dcfd3a4e", - "placeholder": "​", - "style": "IPY_MODEL_2f883c076ee7470481eb7d0fcb25f685", - "value": "Downloading (…)cial_tokens_map.json: 100%" - } - }, - "375cbfe47f9f4eadaf1294be69b16dfd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_088db72b2c4a41adb5b6f543c4fd4070", - "IPY_MODEL_51f3dbca5cb04c818bb65cf4adc7914d", - "IPY_MODEL_16798f3b9a934353ae8e11cdd22820ca" - ], - "layout": "IPY_MODEL_97ff6a0b5366407c8138eedd05532d77" - } - }, - "3916f72e314d46e883db7e529210b098": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_540bda296c904aa48c10db351a11ca66", - "max": 34, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c1f28cff3e064e46a8c9bdd0d705a099", - "value": 34 - } - }, - "39555af32eeb44bfa49b04aa493320ba": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3c370e064d684a9f94ca552bbcc893d0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b13577cd8ab54745b1f75619740f7e8d", - "max": 524619, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_6b7bd8943d824ad586939a5279368a0d", - "value": 524619 - } - }, - "3c8aa1d02f1541bdb59b0a8dff27148f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_27d3f1981c244549901253b3266de1ff", - "placeholder": "​", - "style": "IPY_MODEL_9aae9636296a4245989388403103e0eb", - "value": "Downloading data: 100%" - } - }, - "3e50350e1d3d491ababa8cd3764be1d1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_75686e22371d4d3babec811f49d280f9", - "max": 1875, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_70d08a9270294f8380cc7c740700ca8c", - "value": 1875 - } - }, - "3e71940409664a86a2be2c0b86b10d64": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0c28f7e5514c432197ed1b0e24fcc39b", - "max": 605266175, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c41c679d7f0341f3839b9abc5329ec08", - "value": 605266175 - } - }, - "3eb4c6ae76fd4118be2e466e560f6746": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_993a0a13bc7a4deea5cded6df4e27fd1", - "IPY_MODEL_6d0477f7d5744f55a7882de18b923101", - "IPY_MODEL_9b506c9457f046d4a91395935a934790" - ], - "layout": "IPY_MODEL_429a122883f6429d90c994558fc50cfc" - } - }, - "3eec352c0eea47e9b6e419785750df61": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3f343b79e06e4d5d86cf0ef82729e769": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_3637b3da70d34d529d48d630baeaf13b", - "IPY_MODEL_56aaec4fab6a47b18e147b2cd0c53c49", - "IPY_MODEL_a7378faa28e44fb19ecdafc7124acce2" - ], - "layout": "IPY_MODEL_b697802729d44712bfe68c0ef4f47cd8" - } - }, - "405da6f282174a00a302d69a17634ca8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "429a122883f6429d90c994558fc50cfc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "432654cc3aff41019a5df2f5dbcab6b3": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "435b1f4a70694161a749af8ea40baabb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "435b2d9a31af4b479bca791932a9315f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4378864bd5004edcba65b59fecbe84d3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5d9977f50b704bd5b4a371387cc71a17", - "max": 34, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c7d383a298da44e491c81887632a89ae", - "value": 34 - } - }, - "4477e281c40c41f9a5c076e30640460e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fd56fa76c93c48b2bc179cb0a7bffac6", - "max": 122, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e444beb58b7c4ad1aa94959ef0b5bd52", - "value": 122 - } - }, - "4666546df28e4dc7b6c7d599cac5e26c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "47a715f99b224f41b21d9ddc7467df52": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "48a8c0d648694b8abddf07ed12b68a93": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4666546df28e4dc7b6c7d599cac5e26c", - "placeholder": "​", - "style": "IPY_MODEL_1e2da1ce24984300af0b7246ebd59b14", - "value": "Downloading (…)LIPModel/config.json: 100%" - } - }, - "48f63d3af7604e8abe4ca94dbae63f48": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "498becb6513a44a4a17cff76a8ae4666": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_5066a8fd18d94f9da0aa0cf354d13452", - "IPY_MODEL_a8d41a62f1b94575a744c12a399de8c8", - "IPY_MODEL_e8cc8dbe0d164a9eaec472ffe1351db9" - ], - "layout": "IPY_MODEL_0d3cbcf01ca14063be3ae129db78fdcb" - } - }, - "49d11634ca864c04bc87e472d3563e73": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_94502dbbc1ab42f48d2d375a8265dbb4", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_090c3e60ff0d4e5fa930767672802d86", - "value": 1 - } - }, - "49ddd099c0ed4535b2f3da0e1dc5f44b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0ab25a53cd28408c802a5dcda0e1206e", - "placeholder": "​", - "style": "IPY_MODEL_4ade3df272594fb68ae463234503c638", - "value": "Downloading (…)d52eb/.gitattributes: 100%" - } - }, - "4a37959a5add495981fde226b229fb19": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "4ade3df272594fb68ae463234503c638": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "4ae8401caf984baf9fc132490f11646a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4c46328ead39408995ba5a9837d57e94": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4c7287d821f1471e9ebdafa2f8229d28": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4f166794a0ad4061878ccfc623ec83c0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "4fc202bfa55842b48e59d4a800026331": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5066a8fd18d94f9da0aa0cf354d13452": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1a951db095d441e295bb9ff00d4dba30", - "placeholder": "​", - "style": "IPY_MODEL_e120b072886b4d4f94ef506ca3d6a605", - "value": "" - } - }, - "51307f0869b442d88a7a6b49bf7243b2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_aea6c5629724499da38f8a06667f7a2e", - "IPY_MODEL_3e50350e1d3d491ababa8cd3764be1d1", - "IPY_MODEL_79e43db8a877400198f73dbab0105ade" - ], - "layout": "IPY_MODEL_046bafaebfd14a6282e231c6a7c22b3e" - } - }, - "515f4f3435ef468499acd8e48daf709b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "51f3dbca5cb04c818bb65cf4adc7914d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9bcb1bc9f0e2439b8754e9106eb0a802", - "max": 604, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_2685384c30bb4865b7f14f62fbe516a0", - "value": 604 - } - }, - "52aa2bbbdd5246db8520ac2822fcbe54": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "52ad436eea8649058457d6380f618ea2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fcfda905fd4448b3940b04f4136c53a4", - "placeholder": "​", - "style": "IPY_MODEL_16162c715d4745f3aa91c7f38a78a32d", - "value": "100%" - } - }, - "534e82da7a5d47a58ae95ad7ebe1fc2e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_13942a35ebd3432d9e3a107c54af9619", - "IPY_MODEL_2108640a73e44fe28bd0445abdb2048d", - "IPY_MODEL_2587fb3caed54a10829e8ba594510e7a" - ], - "layout": "IPY_MODEL_661c517493da40f581fcceab85b5bee1" - } - }, - "540bda296c904aa48c10db351a11ca66": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "56aaec4fab6a47b18e147b2cd0c53c49": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_6f7d732ae96847809230720948fba435", - "max": 389, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c026c0d5a95d487f8315821c616d1279", - "value": 389 - } - }, - "56d32c90b86c48b08d020ed3dcfd3a4e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5748285ca2ba4b93b30621437e931345": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "57b9cf8fe2fa4d918e8dc15e2efb6153": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "57ed9e91eb2f45a18ee08f6989bec0a4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5817239aa98046e9be3736688f8c1a5f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4c7287d821f1471e9ebdafa2f8229d28", - "max": 3, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_5a65206e09c04176bfd33bcb31cd1ad5", - "value": 3 - } - }, - "5a65206e09c04176bfd33bcb31cd1ad5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "5c634542ed3940a1a8ac3f73b634e88d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_de16a90176c24ff8aa76eb0af1281d22", - "placeholder": "​", - "style": "IPY_MODEL_c9464f1ec9e64361b0e621c664514ada", - "value": "Epoch: 100%" - } - }, - "5d9977f50b704bd5b4a371387cc71a17": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5e8c1c4d99654ff1b32732a7297871f7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "61e53dcae1c4457aa5089ae1e8d276ae": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a5a67282d5b14d3f803347ddd2ccc44f", - "placeholder": "​", - "style": "IPY_MODEL_b5a4880486774113bef9fc78d7bb4ed9", - "value": "100%" - } - }, - "6359430089654ca4bdd587c125b317a0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e8e295d7292245fb9f17413599d59960", - "placeholder": "​", - "style": "IPY_MODEL_0286aff9c56b43e7abd15f17dd33d6db", - "value": " 85.3k/85.3k [00:00<00:00, 286kB/s]" - } - }, - "63de802f18e44b16a3a2f5029ad7b705": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9e17b92da1aa43d0aa980db275437fde", - "placeholder": "​", - "style": "IPY_MODEL_d2186c7599164e528aa3d92f6999a9bb", - "value": " 3/3 [00:05<00:00, 1.70s/it]" - } - }, - "6482c21eb5d449f795a9e39fcae6a46e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_2db4287290eb4c25bc440fc3f2f1d258", - "IPY_MODEL_b470309f2a6b4878852ae9e589764edf", - "IPY_MODEL_63de802f18e44b16a3a2f5029ad7b705" - ], - "layout": "IPY_MODEL_670f91d2101c4d87997c228210646f89" - } - }, - "661c517493da40f581fcceab85b5bee1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "670f91d2101c4d87997c228210646f89": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "68f83424c07844f1b439cf9a2170818b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6b7bd8943d824ad586939a5279368a0d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "6d0477f7d5744f55a7882de18b923101": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e94edd188d8942e6b7f01cb1b962ba46", - "max": 315, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_7059d83f776f49c887879e870bb71ee8", - "value": 315 - } - }, - "6f63b713ac2b4358b939c2818d15e67f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4c46328ead39408995ba5a9837d57e94", - "placeholder": "​", - "style": "IPY_MODEL_35a4c4fa675546ccb34d38b6e1c7139c", - "value": " 34/34 [01:36<00:00, 2.65s/ex]" - } - }, - "6f7d732ae96847809230720948fba435": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7059d83f776f49c887879e870bb71ee8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "707c06347f5444e185ca2bc7c07eecfa": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "70d08a9270294f8380cc7c740700ca8c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "70eee61c4d3842f69569dee3ac8773fa": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "71181e8f913b412fb72917c55a151723": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_735a35f35dee4d548cd6284f9e3e1f5a", - "placeholder": "​", - "style": "IPY_MODEL_b7dfa3f0d2374482af6dc25ec8dd65df", - "value": "Downloading data: 100%" - } - }, - "713939a800704d4a8e95217c4b3c6d0e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ac8f808451764c4aac75914710521941", - "IPY_MODEL_3c370e064d684a9f94ca552bbcc893d0", - "IPY_MODEL_a5fc404735384abba31ed330ad4d4985" - ], - "layout": "IPY_MODEL_f6e1dadaed924874a4c12e4759921e36" - } - }, - "714590bcc27e4efc837f870812929f3e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "71f5c4292d4f4564bb0bf5af9368163f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "7282d9ef9a754bcfb1297081296aed5a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c4a54f5262014b77964d42429d5e43bf", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_cf540757bc79428bab170e157eb9381f", - "value": 1 - } - }, - "735a35f35dee4d548cd6284f9e3e1f5a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "742743267970469b8b358f051aeb3d7f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "7451e0901e6f40f5971359c9ac5d47bb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "74cce0696fd74f999b8476974ec74f30": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "74d53a9e164f492785463bd1cdb376a7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_22a1ecc265c7419b99b89dc635351163", - "max": 4025, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_405da6f282174a00a302d69a17634ca8", - "value": 4025 - } - }, - "75686e22371d4d3babec811f49d280f9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "76252be98eed408a8f08fab0edca8d86": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_5c634542ed3940a1a8ac3f73b634e88d", - "IPY_MODEL_b0721a5abbc044a59a9d119c65523ec3", - "IPY_MODEL_822cf5f25bbb4845a8df5b09df0c88f5" - ], - "layout": "IPY_MODEL_d24e98b7ba64420588aeee6c0a7d787a" - } - }, - "77131a41265342a28468664ad067d4c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "79e43db8a877400198f73dbab0105ade": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_02f439d46b384718b0c7ab5fd8aa2d03", - "placeholder": "​", - "style": "IPY_MODEL_742743267970469b8b358f051aeb3d7f", - "value": " 1.88k/1.88k [00:00<00:00, 114kB/s]" - } - }, - "7b3978443935464b9a1352ef3bd2d415": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7d508b60c1f44aecb9e3f9711ecc0ce8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "820351c564124d7d871dc17681b747e9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7b3978443935464b9a1352ef3bd2d415", - "placeholder": "​", - "style": "IPY_MODEL_ec25ea55d62e4c0a9443d91d015bdbd6", - "value": " 605M/605M [00:04<00:00, 153MB/s]" - } - }, - "822cf5f25bbb4845a8df5b09df0c88f5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e831d4f1ad4d4f5f97bc9569a5294ca9", - "placeholder": "​", - "style": "IPY_MODEL_71f5c4292d4f4564bb0bf5af9368163f", - "value": " 1/1 [00:57<00:00, 57.78s/it]" - } - }, - "8294163893bc40c2bef26032babb3938": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "83569f1993e44a439c4c99d5d58251f2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "8364e4e977ad41fab9688c5a7443f276": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_11dd9c8f6fa744cfbf25ce25f3c8291b", - "IPY_MODEL_4477e281c40c41f9a5c076e30640460e", - "IPY_MODEL_b800cade432f484ab1619620ba8a93b8" - ], - "layout": "IPY_MODEL_b57479b0aab44fae95c28b59905e053c" - } - }, - "84d1a26c298b42cd820bcd2e4302a443": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "8513e53c07c04d75999be1fec6d5b491": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "857c37c3638b4c7d8ffaaaa9fe5932f0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "87a472fb7193452faea139ab6bf1c9be": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_082dfef575c94327a5377c3f7278cf5a", - "placeholder": "​", - "style": "IPY_MODEL_84d1a26c298b42cd820bcd2e4302a443", - "value": "Downloading data: 100%" - } - }, - "88677a526eae40a1b5e0b5e9e7a25218": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_139f9e8c84f447b985c2080c17d14a8c", - "max": 85317, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_1d37c4be099b44b5bc67c2cd976693b9", - "value": 85317 - } - }, - "88901ee5ca86458288bf82a22db7e379": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "88edaefb70c34854ad6f16d5a82b40e7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ba93d6edfed5434397d869ba2bd7aca5", - "IPY_MODEL_7282d9ef9a754bcfb1297081296aed5a", - "IPY_MODEL_946c67b0a3f54ce09c35db7bef44991c" - ], - "layout": "IPY_MODEL_f41cf420defb4b109f836fecea8e1d15" - } - }, - "89b04536243a48049eb777f00fe49555": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "89ef6f10348a408a8546452e1fa74528": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "8aae0197e477451a890b1f93cdeebe10": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "8b161e12449f4078bb64245518bb596d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_71181e8f913b412fb72917c55a151723", - "IPY_MODEL_dcd3ba169df34a0395eb5d03405f8835", - "IPY_MODEL_d0b05902a4db4abd8c10cab6178a59ec" - ], - "layout": "IPY_MODEL_8294163893bc40c2bef26032babb3938" - } - }, - "8c72c24c20b84bd4a007929384e91b78": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "8ce3c14efb4a4a1983c6cfbba711b26a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_097dc95081d04f7e9f803384b5dee1ea", - "IPY_MODEL_ea9794429bbc4ae98e258157eb4d317e", - "IPY_MODEL_92a14039453e4551b30b5d7f9f8e455d" - ], - "layout": "IPY_MODEL_5e8c1c4d99654ff1b32732a7297871f7" - } - }, - "908b3e162c9b4fe1b4fa35d5b928ecff": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "92a14039453e4551b30b5d7f9f8e455d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_68f83424c07844f1b439cf9a2170818b", - "placeholder": "​", - "style": "IPY_MODEL_4a37959a5add495981fde226b229fb19", - "value": " 116/116 [00:00<00:00, 6.91kB/s]" - } - }, - "9411b438e2634a3ebd0d1617d2ec3a7b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "94502dbbc1ab42f48d2d375a8265dbb4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "20px" - } - }, - "946c67b0a3f54ce09c35db7bef44991c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_03390d37eba24242ae6c2099d5fe7863", - "placeholder": "​", - "style": "IPY_MODEL_88901ee5ca86458288bf82a22db7e379", - "value": " 0/? [00:00<?, ? tables/s]" - } - }, - "9623a214fa5048c38dda05120d5573c3": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "963fbb3d5b9f4848a8cadf2a2d2b264b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_52ad436eea8649058457d6380f618ea2", - "IPY_MODEL_5817239aa98046e9be3736688f8c1a5f", - "IPY_MODEL_c48e02dc87d74d50ba6de4aefeb1441e" - ], - "layout": "IPY_MODEL_ecc225aab6804d97b1cdd383621c9695" - } - }, - "9669af3f853d454bbcb5530acf0fd5b5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "97ff6a0b5366407c8138eedd05532d77": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9808aab644d7459aaa5504bef2da9652": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "993a0a13bc7a4deea5cded6df4e27fd1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9411b438e2634a3ebd0d1617d2ec3a7b", - "placeholder": "​", - "style": "IPY_MODEL_ffbfe6debabc4f5c8cad8383d596946e", - "value": "Iteration: 100%" - } - }, - "9a47ab1358b341dda7fba4031bea3bb3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "9aae9636296a4245989388403103e0eb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "9ac85729093c41c1b2a0fef5191b8ab5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9b506c9457f046d4a91395935a934790": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a696789fe05c40b281a0090625e66004", - "placeholder": "​", - "style": "IPY_MODEL_02b23c74c75e425cafe0c231b2892c47", - "value": " 315/315 [00:57<00:00, 5.36it/s]" - } - }, - "9b783cfaae714956ad6c0ee4bc7f7e23": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_908b3e162c9b4fe1b4fa35d5b928ecff", - "placeholder": "​", - "style": "IPY_MODEL_dc43386a12c642cf93f434dd3f5cc04c", - "value": "Downloading (…)"pytorch_model.bin";: 100%" - } - }, - "9bcb1bc9f0e2439b8754e9106eb0a802": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9cef8cafa31a47fd9f7410478b5415e8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9e17b92da1aa43d0aa980db275437fde": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9e98837e01004eba948e9c2d3ea23e5f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9f38a9239dc8476b81c23b79282ebbf5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "9fac34a2d3e44c95a2591b26ddae5c1e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "a07c719a0ffc41f9a0e8227562dc69d1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_dc03df51df3845edac3492bc3ee3391e", - "IPY_MODEL_ebf96889240d44f0b5a16fd945090213", - "IPY_MODEL_c011f7d4aa7b4f66997d1c88804afacf" - ], - "layout": "IPY_MODEL_dcadb8f0088d43f6bc1a2cdc72cff730" - } - }, - "a1ec5941f87f4b23bc72188313ac9275": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "a5a67282d5b14d3f803347ddd2ccc44f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a5fc404735384abba31ed330ad4d4985": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9623a214fa5048c38dda05120d5573c3", - "placeholder": "​", - "style": "IPY_MODEL_9a47ab1358b341dda7fba4031bea3bb3", - "value": " 525k/525k [00:00<00:00, 1.23MB/s]" - } - }, - "a696789fe05c40b281a0090625e66004": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a6b61668ad1146e78c2a9b2556b23703": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_2433cd897d734c78b3d4a62602865415", - "placeholder": "​", - "style": "IPY_MODEL_9fac34a2d3e44c95a2591b26ddae5c1e", - "value": " 3/3 [00:00<00:00, 81.17it/s]" - } - }, - "a7378faa28e44fb19ecdafc7124acce2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9669af3f853d454bbcb5530acf0fd5b5", - "placeholder": "​", - "style": "IPY_MODEL_9f38a9239dc8476b81c23b79282ebbf5", - "value": " 389/389 [00:00<00:00, 25.7kB/s]" - } - }, - "a8d41a62f1b94575a744c12a399de8c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d5fea5e89ebd4d298c169526eadeeb32", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_8513e53c07c04d75999be1fec6d5b491", - "value": 1 - } - }, - "a8ec0defdfe841caaf0caa4de07fb84a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_14b5a9186b3a47108fafa070c06ab35c", - "IPY_MODEL_3916f72e314d46e883db7e529210b098", - "IPY_MODEL_34453701eb2f40df9a2a0154c02990d4" - ], - "layout": "IPY_MODEL_9e98837e01004eba948e9c2d3ea23e5f" - } - }, - "ac546920996e4ca081e438999ae19fc8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b91ae0e5a43143e68f53099e85f1afc2", - "placeholder": "​", - "style": "IPY_MODEL_a1ec5941f87f4b23bc72188313ac9275", - "value": " 1.11k/1.11k [00:00<00:00, 74.9kB/s]" - } - }, - "ac8f808451764c4aac75914710521941": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9808aab644d7459aaa5504bef2da9652", - "placeholder": "​", - "style": "IPY_MODEL_12e8ab3cc4fe40e7bbb056b3354603bc", - "value": "Downloading (…)CLIPModel/merges.txt: 100%" - } - }, - "aea6c5629724499da38f8a06667f7a2e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_05c50612c7ec41c7877d85c9d0502c0b", - "placeholder": "​", - "style": "IPY_MODEL_0f590a3e9ed148c9b076fa3b16e287f8", - "value": "Downloading (…)859cad52eb/README.md: 100%" - } - }, - "aedab95f1bb144c38180f2b2e71c14ff": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e97c5c6e969842468f53520dfba1ee8f", - "placeholder": "​", - "style": "IPY_MODEL_89b04536243a48049eb777f00fe49555", - "value": "" - } - }, - "b0721a5abbc044a59a9d119c65523ec3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_74cce0696fd74f999b8476974ec74f30", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_cad144a0ae5948f5896d12f83c044dfd", - "value": 1 - } - }, - "b13577cd8ab54745b1f75619740f7e8d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b179999ec76e48579fd195b7c788f366": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b3c787a117ae42738c315c5cdabd508c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b470309f2a6b4878852ae9e589764edf": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_26175752e18140b4a944bfc55f77a069", - "max": 3, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c13ea0c47f6e48f0a804fa9f2f5ce544", - "value": 3 - } - }, - "b51a6ffb9b5940cc90cf1ff5ed32d30d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_61e53dcae1c4457aa5089ae1e8d276ae", - "IPY_MODEL_f8916e9e4c5c4393b0f2c2f77d055757", - "IPY_MODEL_01939245f8874aaca606e7a1e8b954a8" - ], - "layout": "IPY_MODEL_f2cdef43d919412698f85ea03ce79e99" - } - }, - "b57479b0aab44fae95c28b59905e053c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b577441dde9e43cb9644244ca0cf336e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b5a4880486774113bef9fc78d7bb4ed9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b697802729d44712bfe68c0ef4f47cd8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b73b1442ea8c42da8342e62bea1a8d6f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c66c4c5330724c27966b24cfdc87dc3f", - "max": 961143, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0d4090c9cfd542cba1a14d30b154f733", - "value": 961143 - } - }, - "b73e9fcc9e634c2780cc880cc65cc678": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b77605d5afb94b8cb579f3c690ea4203": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_aedab95f1bb144c38180f2b2e71c14ff", - "IPY_MODEL_49d11634ca864c04bc87e472d3563e73", - "IPY_MODEL_20163aeba069412eabd3b506a339667f" - ], - "layout": "IPY_MODEL_feef17ea90ae4105b2ffb56841ed2adb" - } - }, - "b7dfa3f0d2374482af6dc25ec8dd65df": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b800cade432f484ab1619620ba8a93b8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_52aa2bbbdd5246db8520ac2822fcbe54", - "placeholder": "​", - "style": "IPY_MODEL_39555af32eeb44bfa49b04aa493320ba", - "value": " 122/122 [00:00<00:00, 7.68kB/s]" - } - }, - "b850f11900ae4874963b35e0b86470e5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b8da2402e8e245d2b5ff592f602f138e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "b91ae0e5a43143e68f53099e85f1afc2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b9850f02e9ec4069aa836d9ed11aa019": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ba93d6edfed5434397d869ba2bd7aca5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c10b310f7f6344b39c8d165c887d28f1", - "placeholder": "​", - "style": "IPY_MODEL_052b62b792fc4f1183ffb91f18d655c7", - "value": "" - } - }, - "bbb9442a3ec1463790bcf6533f3be905": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_16bd920f956f43b3921b79cec4d76d87", - "IPY_MODEL_c12bc29016124339a6c3cb11f21bfaf0", - "IPY_MODEL_a6b61668ad1146e78c2a9b2556b23703" - ], - "layout": "IPY_MODEL_14cc3d3e93c54226bc2f38a4745c1d23" - } - }, - "bcfc02b30e024b5c81856bcd9e191d07": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f4d6914361f44912b0d7ca1b16496606", - "placeholder": "​", - "style": "IPY_MODEL_b3c787a117ae42738c315c5cdabd508c", - "value": "Downloading: 100%" - } - }, - "be06bfcbe41040369d025626b8227b6b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "be63efa842e7438ab1fc2f4eb2ceb55f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_2f093aa6d36c4622bd09d1253bf6c3d4", - "placeholder": "​", - "style": "IPY_MODEL_c13b9d0a74f540d5ab6c01064c149a65", - "value": " 690/690 [00:00<00:00, 45.7kB/s]" - } - }, - "bebd64b52d24437dabeb5119235853d7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c011f7d4aa7b4f66997d1c88804afacf": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0b4387ee1a0d4f769b391dcbc4d5477c", - "placeholder": "​", - "style": "IPY_MODEL_b8da2402e8e245d2b5ff592f602f138e", - "value": " 252/252 [00:02<00:00, 113.35it/s]" - } - }, - "c026c0d5a95d487f8315821c616d1279": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c10b310f7f6344b39c8d165c887d28f1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c11880f9dbf24e7b97a4a6e6c45d27bd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9b783cfaae714956ad6c0ee4bc7f7e23", - "IPY_MODEL_3e71940409664a86a2be2c0b86b10d64", - "IPY_MODEL_820351c564124d7d871dc17681b747e9" - ], - "layout": "IPY_MODEL_432654cc3aff41019a5df2f5dbcab6b3" - } - }, - "c12bc29016124339a6c3cb11f21bfaf0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9cef8cafa31a47fd9f7410478b5415e8", - "max": 3, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_2e4deb55d7b74e2fa09c9f925fd2e751", - "value": 3 - } - }, - "c13b9d0a74f540d5ab6c01064c149a65": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "c13ea0c47f6e48f0a804fa9f2f5ce544": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c1f28cff3e064e46a8c9bdd0d705a099": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c41c679d7f0341f3839b9abc5329ec08": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c48e02dc87d74d50ba6de4aefeb1441e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9ac85729093c41c1b2a0fef5191b8ab5", - "placeholder": "​", - "style": "IPY_MODEL_d774f350171b4c3fb6be768dbf11c726", - "value": " 3/3 [00:00<00:00, 125.78it/s]" - } - }, - "c4a54f5262014b77964d42429d5e43bf": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "20px" - } - }, - "c54e39be37434e0d826d86041ef1de96": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c59a11b4cdcd45a181e5417839a21245": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c5fecfc9041049e7834ae864bd54d59e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c65f5b1c90e24d47a060c0b362749b82": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c66c4c5330724c27966b24cfdc87dc3f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c7d383a298da44e491c81887632a89ae": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c9464f1ec9e64361b0e621c664514ada": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "cad144a0ae5948f5896d12f83c044dfd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "cf31d13e5ccd4598bdf3353d1d914874": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e110392a48e446449f36eb31d42ba380", - "placeholder": "​", - "style": "IPY_MODEL_3eec352c0eea47e9b6e419785750df61", - "value": " 961k/961k [00:00<00:00, 2.26MB/s]" - } - }, - "cf540757bc79428bab170e157eb9381f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "d0b05902a4db4abd8c10cab6178a59ec": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_36156c14c8d544deab0ea65ac5ba7508", - "placeholder": "​", - "style": "IPY_MODEL_15d85f4fe15545bc85d3717d7af7bbb1", - "value": " 60.7k/60.7k [00:00<00:00, 685kB/s]" - } - }, - "d2186c7599164e528aa3d92f6999a9bb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d24e98b7ba64420588aeee6c0a7d787a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d2cf4d1133a2421aa1ec980bdca4fecd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_bcfc02b30e024b5c81856bcd9e191d07", - "IPY_MODEL_eaefc3e261a7453cb66905079b71f16a", - "IPY_MODEL_ac546920996e4ca081e438999ae19fc8" - ], - "layout": "IPY_MODEL_c54e39be37434e0d826d86041ef1de96" - } - }, - "d39695c4fadd4bdb93756645a3c3a1e0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_e5d4a32f5b384dbaa0e99ff1b925836a", - "IPY_MODEL_b73b1442ea8c42da8342e62bea1a8d6f", - "IPY_MODEL_cf31d13e5ccd4598bdf3353d1d914874" - ], - "layout": "IPY_MODEL_2f87bde2c64b42bc90ed461265cfe1f1" - } - }, - "d5daacab713847ef98afd7a77fbd613c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d5fea5e89ebd4d298c169526eadeeb32": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "20px" - } - }, - "d774f350171b4c3fb6be768dbf11c726": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d8f11947b0d048489bdd649479c50b1f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d9c6dc4bccfb4e57a9ffcef2f9269172": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_48a8c0d648694b8abddf07ed12b68a93", - "IPY_MODEL_74d53a9e164f492785463bd1cdb376a7", - "IPY_MODEL_35c4bd29723b46ad94b098685953aefb" - ], - "layout": "IPY_MODEL_7d508b60c1f44aecb9e3f9711ecc0ce8" - } - }, - "dc03df51df3845edac3492bc3ee3391e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b73e9fcc9e634c2780cc880cc65cc678", - "placeholder": "​", - "style": "IPY_MODEL_57ed9e91eb2f45a18ee08f6989bec0a4", - "value": "100%" - } - }, - "dc43386a12c642cf93f434dd3f5cc04c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "dcadb8f0088d43f6bc1a2cdc72cff730": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "dcd3ba169df34a0395eb5d03405f8835": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c65f5b1c90e24d47a060c0b362749b82", - "max": 60722, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_01bc8315e7cd4064a8653eae44cea192", - "value": 60722 - } - }, - "dd355cdd1594499bbccc8a7842a0ba93": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "de16a90176c24ff8aa76eb0af1281d22": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e110392a48e446449f36eb31d42ba380": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e120b072886b4d4f94ef506ca3d6a605": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "e145a20bac85423a8ac6a1841f7ff4d7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "e444beb58b7c4ad1aa94959ef0b5bd52": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "e5d4a32f5b384dbaa0e99ff1b925836a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f305b7e403a647379268573a95d22f92", - "placeholder": "​", - "style": "IPY_MODEL_d5daacab713847ef98afd7a77fbd613c", - "value": "Downloading (…)CLIPModel/vocab.json: 100%" - } - }, - "e7da6c65cec140c3801fca68bcfdebcc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e831d4f1ad4d4f5f97bc9569a5294ca9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e8756ee3f2f64e01b2790714b6704584": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "e8cc8dbe0d164a9eaec472ffe1351db9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e7da6c65cec140c3801fca68bcfdebcc", - "placeholder": "​", - "style": "IPY_MODEL_eccef3d9147242d9a1e42f4abd0ebe4c", - "value": " 0/? [00:00<?, ? tables/s]" - } - }, - "e8e295d7292245fb9f17413599d59960": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e94edd188d8942e6b7f01cb1b962ba46": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e97c5c6e969842468f53520dfba1ee8f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ea9794429bbc4ae98e258157eb4d317e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c5fecfc9041049e7834ae864bd54d59e", - "max": 116, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_857c37c3638b4c7d8ffaaaa9fe5932f0", - "value": 116 - } - }, - "eaefc3e261a7453cb66905079b71f16a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_edf41d1718984e7dbef2b65799935fd8", - "max": 1109, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_20dad493a55343efaabbc6f7c1966cf0", - "value": 1109 - } - }, - "eaf5ad9e9e3240799128ef8bbf0a195a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1ad0c7637293497a9a75bfa45c1a06e8", - "placeholder": "​", - "style": "IPY_MODEL_4fc202bfa55842b48e59d4a800026331", - "value": " 85.3k/85.3k [00:00<00:00, 343kB/s]" - } - }, - "eb9b58dab8044074b1cac3e39f26e561": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0987a64b9cea4850998e78d76d31c3b8", - "max": 85317, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_fa0573f2ebd84a5ba5ebdc0452362887", - "value": 85317 - } - }, - "ebf96889240d44f0b5a16fd945090213": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4ae8401caf984baf9fc132490f11646a", - "max": 252, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e145a20bac85423a8ac6a1841f7ff4d7", - "value": 252 - } - }, - "ec25ea55d62e4c0a9443d91d015bdbd6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ecc225aab6804d97b1cdd383621c9695": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "eccef3d9147242d9a1e42f4abd0ebe4c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ed19b6e281f145af9b6df5eb783e9a95": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_49ddd099c0ed4535b2f3da0e1dc5f44b", - "IPY_MODEL_12da828a56fd47fbac3881a78ae3b40c", - "IPY_MODEL_be63efa842e7438ab1fc2f4eb2ceb55f" - ], - "layout": "IPY_MODEL_435b2d9a31af4b479bca791932a9315f" - } - }, - "edf41d1718984e7dbef2b65799935fd8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f2cdef43d919412698f85ea03ce79e99": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f305b7e403a647379268573a95d22f92": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f41cf420defb4b109f836fecea8e1d15": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "f4d6914361f44912b0d7ca1b16496606": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f6e1dadaed924874a4c12e4759921e36": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f7d2ce646a4c42ed893383a4f75af2d6": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f8916e9e4c5c4393b0f2c2f77d055757": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_707c06347f5444e185ca2bc7c07eecfa", - "max": 252, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_77131a41265342a28468664ad067d4c8", - "value": 252 - } - }, - "f8d66c452a6d4347b9a8247ad135fd35": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_3c8aa1d02f1541bdb59b0a8dff27148f", - "IPY_MODEL_88677a526eae40a1b5e0b5e9e7a25218", - "IPY_MODEL_eaf5ad9e9e3240799128ef8bbf0a195a" - ], - "layout": "IPY_MODEL_48f63d3af7604e8abe4ca94dbae63f48" - } - }, - "fa0573f2ebd84a5ba5ebdc0452362887": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "fadb08eafb084a4e91f8406055beb502": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fcfda905fd4448b3940b04f4136c53a4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fd56fa76c93c48b2bc179cb0a7bffac6": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fe63dbf326194c6c813327bd643a85cd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "feef17ea90ae4105b2ffb56841ed2adb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "ffbfe6debabc4f5c8cad8383d596946e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - } - } + "layout": "IPY_MODEL_f41cf420defb4b109f836fecea8e1d15" + } + }, + "89b04536243a48049eb777f00fe49555": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "89ef6f10348a408a8546452e1fa74528": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8aae0197e477451a890b1f93cdeebe10": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8b161e12449f4078bb64245518bb596d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_71181e8f913b412fb72917c55a151723", + "IPY_MODEL_dcd3ba169df34a0395eb5d03405f8835", + "IPY_MODEL_d0b05902a4db4abd8c10cab6178a59ec" + ], + "layout": "IPY_MODEL_8294163893bc40c2bef26032babb3938" + } + }, + "8c72c24c20b84bd4a007929384e91b78": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8ce3c14efb4a4a1983c6cfbba711b26a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_097dc95081d04f7e9f803384b5dee1ea", + "IPY_MODEL_ea9794429bbc4ae98e258157eb4d317e", + "IPY_MODEL_92a14039453e4551b30b5d7f9f8e455d" + ], + "layout": "IPY_MODEL_5e8c1c4d99654ff1b32732a7297871f7" + } + }, + "908b3e162c9b4fe1b4fa35d5b928ecff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "92a14039453e4551b30b5d7f9f8e455d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_68f83424c07844f1b439cf9a2170818b", + "placeholder": "​", + "style": "IPY_MODEL_4a37959a5add495981fde226b229fb19", + "value": " 116/116 [00:00<00:00, 6.91kB/s]" + } + }, + "9411b438e2634a3ebd0d1617d2ec3a7b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94502dbbc1ab42f48d2d375a8265dbb4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "946c67b0a3f54ce09c35db7bef44991c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_03390d37eba24242ae6c2099d5fe7863", + "placeholder": "​", + "style": "IPY_MODEL_88901ee5ca86458288bf82a22db7e379", + "value": " 0/? [00:00<?, ? tables/s]" + } + }, + "9623a214fa5048c38dda05120d5573c3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "963fbb3d5b9f4848a8cadf2a2d2b264b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_52ad436eea8649058457d6380f618ea2", + "IPY_MODEL_5817239aa98046e9be3736688f8c1a5f", + "IPY_MODEL_c48e02dc87d74d50ba6de4aefeb1441e" + ], + "layout": "IPY_MODEL_ecc225aab6804d97b1cdd383621c9695" + } + }, + "9669af3f853d454bbcb5530acf0fd5b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "97ff6a0b5366407c8138eedd05532d77": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9808aab644d7459aaa5504bef2da9652": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "993a0a13bc7a4deea5cded6df4e27fd1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9411b438e2634a3ebd0d1617d2ec3a7b", + "placeholder": "​", + "style": "IPY_MODEL_ffbfe6debabc4f5c8cad8383d596946e", + "value": "Iteration: 100%" + } + }, + "9a47ab1358b341dda7fba4031bea3bb3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9aae9636296a4245989388403103e0eb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9ac85729093c41c1b2a0fef5191b8ab5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9b506c9457f046d4a91395935a934790": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a696789fe05c40b281a0090625e66004", + "placeholder": "​", + "style": "IPY_MODEL_02b23c74c75e425cafe0c231b2892c47", + "value": " 315/315 [00:57<00:00, 5.36it/s]" + } + }, + "9b783cfaae714956ad6c0ee4bc7f7e23": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_908b3e162c9b4fe1b4fa35d5b928ecff", + "placeholder": "​", + "style": "IPY_MODEL_dc43386a12c642cf93f434dd3f5cc04c", + "value": "Downloading (…)"pytorch_model.bin";: 100%" + } + }, + "9bcb1bc9f0e2439b8754e9106eb0a802": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9cef8cafa31a47fd9f7410478b5415e8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9e17b92da1aa43d0aa980db275437fde": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9e98837e01004eba948e9c2d3ea23e5f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9f38a9239dc8476b81c23b79282ebbf5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9fac34a2d3e44c95a2591b26ddae5c1e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a07c719a0ffc41f9a0e8227562dc69d1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_dc03df51df3845edac3492bc3ee3391e", + "IPY_MODEL_ebf96889240d44f0b5a16fd945090213", + "IPY_MODEL_c011f7d4aa7b4f66997d1c88804afacf" + ], + "layout": "IPY_MODEL_dcadb8f0088d43f6bc1a2cdc72cff730" + } + }, + "a1ec5941f87f4b23bc72188313ac9275": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a5a67282d5b14d3f803347ddd2ccc44f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a5fc404735384abba31ed330ad4d4985": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9623a214fa5048c38dda05120d5573c3", + "placeholder": "​", + "style": "IPY_MODEL_9a47ab1358b341dda7fba4031bea3bb3", + "value": " 525k/525k [00:00<00:00, 1.23MB/s]" + } + }, + "a696789fe05c40b281a0090625e66004": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a6b61668ad1146e78c2a9b2556b23703": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2433cd897d734c78b3d4a62602865415", + "placeholder": "​", + "style": "IPY_MODEL_9fac34a2d3e44c95a2591b26ddae5c1e", + "value": " 3/3 [00:00<00:00, 81.17it/s]" + } + }, + "a7378faa28e44fb19ecdafc7124acce2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9669af3f853d454bbcb5530acf0fd5b5", + "placeholder": "​", + "style": "IPY_MODEL_9f38a9239dc8476b81c23b79282ebbf5", + "value": " 389/389 [00:00<00:00, 25.7kB/s]" + } + }, + "a8d41a62f1b94575a744c12a399de8c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d5fea5e89ebd4d298c169526eadeeb32", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8513e53c07c04d75999be1fec6d5b491", + "value": 1 + } + }, + "a8ec0defdfe841caaf0caa4de07fb84a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_14b5a9186b3a47108fafa070c06ab35c", + "IPY_MODEL_3916f72e314d46e883db7e529210b098", + "IPY_MODEL_34453701eb2f40df9a2a0154c02990d4" + ], + "layout": "IPY_MODEL_9e98837e01004eba948e9c2d3ea23e5f" + } + }, + "ac546920996e4ca081e438999ae19fc8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b91ae0e5a43143e68f53099e85f1afc2", + "placeholder": "​", + "style": "IPY_MODEL_a1ec5941f87f4b23bc72188313ac9275", + "value": " 1.11k/1.11k [00:00<00:00, 74.9kB/s]" + } + }, + "ac8f808451764c4aac75914710521941": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9808aab644d7459aaa5504bef2da9652", + "placeholder": "​", + "style": "IPY_MODEL_12e8ab3cc4fe40e7bbb056b3354603bc", + "value": "Downloading (…)CLIPModel/merges.txt: 100%" + } + }, + "aea6c5629724499da38f8a06667f7a2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05c50612c7ec41c7877d85c9d0502c0b", + "placeholder": "​", + "style": "IPY_MODEL_0f590a3e9ed148c9b076fa3b16e287f8", + "value": "Downloading (…)859cad52eb/README.md: 100%" + } + }, + "aedab95f1bb144c38180f2b2e71c14ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e97c5c6e969842468f53520dfba1ee8f", + "placeholder": "​", + "style": "IPY_MODEL_89b04536243a48049eb777f00fe49555", + "value": "" + } + }, + "b0721a5abbc044a59a9d119c65523ec3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_74cce0696fd74f999b8476974ec74f30", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cad144a0ae5948f5896d12f83c044dfd", + "value": 1 + } + }, + "b13577cd8ab54745b1f75619740f7e8d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b179999ec76e48579fd195b7c788f366": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b3c787a117ae42738c315c5cdabd508c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b470309f2a6b4878852ae9e589764edf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_26175752e18140b4a944bfc55f77a069", + "max": 3, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c13ea0c47f6e48f0a804fa9f2f5ce544", + "value": 3 + } + }, + "b51a6ffb9b5940cc90cf1ff5ed32d30d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_61e53dcae1c4457aa5089ae1e8d276ae", + "IPY_MODEL_f8916e9e4c5c4393b0f2c2f77d055757", + "IPY_MODEL_01939245f8874aaca606e7a1e8b954a8" + ], + "layout": "IPY_MODEL_f2cdef43d919412698f85ea03ce79e99" + } + }, + "b57479b0aab44fae95c28b59905e053c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b577441dde9e43cb9644244ca0cf336e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b5a4880486774113bef9fc78d7bb4ed9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b697802729d44712bfe68c0ef4f47cd8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b73b1442ea8c42da8342e62bea1a8d6f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c66c4c5330724c27966b24cfdc87dc3f", + "max": 961143, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d4090c9cfd542cba1a14d30b154f733", + "value": 961143 + } + }, + "b73e9fcc9e634c2780cc880cc65cc678": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b77605d5afb94b8cb579f3c690ea4203": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aedab95f1bb144c38180f2b2e71c14ff", + "IPY_MODEL_49d11634ca864c04bc87e472d3563e73", + "IPY_MODEL_20163aeba069412eabd3b506a339667f" + ], + "layout": "IPY_MODEL_feef17ea90ae4105b2ffb56841ed2adb" + } + }, + "b7dfa3f0d2374482af6dc25ec8dd65df": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b800cade432f484ab1619620ba8a93b8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_52aa2bbbdd5246db8520ac2822fcbe54", + "placeholder": "​", + "style": "IPY_MODEL_39555af32eeb44bfa49b04aa493320ba", + "value": " 122/122 [00:00<00:00, 7.68kB/s]" + } + }, + "b850f11900ae4874963b35e0b86470e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b8da2402e8e245d2b5ff592f602f138e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b91ae0e5a43143e68f53099e85f1afc2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b9850f02e9ec4069aa836d9ed11aa019": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ba93d6edfed5434397d869ba2bd7aca5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c10b310f7f6344b39c8d165c887d28f1", + "placeholder": "​", + "style": "IPY_MODEL_052b62b792fc4f1183ffb91f18d655c7", + "value": "" + } + }, + "bbb9442a3ec1463790bcf6533f3be905": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_16bd920f956f43b3921b79cec4d76d87", + "IPY_MODEL_c12bc29016124339a6c3cb11f21bfaf0", + "IPY_MODEL_a6b61668ad1146e78c2a9b2556b23703" + ], + "layout": "IPY_MODEL_14cc3d3e93c54226bc2f38a4745c1d23" + } + }, + "bcfc02b30e024b5c81856bcd9e191d07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f4d6914361f44912b0d7ca1b16496606", + "placeholder": "​", + "style": "IPY_MODEL_b3c787a117ae42738c315c5cdabd508c", + "value": "Downloading: 100%" + } + }, + "be06bfcbe41040369d025626b8227b6b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "be63efa842e7438ab1fc2f4eb2ceb55f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2f093aa6d36c4622bd09d1253bf6c3d4", + "placeholder": "​", + "style": "IPY_MODEL_c13b9d0a74f540d5ab6c01064c149a65", + "value": " 690/690 [00:00<00:00, 45.7kB/s]" + } + }, + "bebd64b52d24437dabeb5119235853d7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c011f7d4aa7b4f66997d1c88804afacf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0b4387ee1a0d4f769b391dcbc4d5477c", + "placeholder": "​", + "style": "IPY_MODEL_b8da2402e8e245d2b5ff592f602f138e", + "value": " 252/252 [00:02<00:00, 113.35it/s]" + } + }, + "c026c0d5a95d487f8315821c616d1279": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c10b310f7f6344b39c8d165c887d28f1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c11880f9dbf24e7b97a4a6e6c45d27bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9b783cfaae714956ad6c0ee4bc7f7e23", + "IPY_MODEL_3e71940409664a86a2be2c0b86b10d64", + "IPY_MODEL_820351c564124d7d871dc17681b747e9" + ], + "layout": "IPY_MODEL_432654cc3aff41019a5df2f5dbcab6b3" + } + }, + "c12bc29016124339a6c3cb11f21bfaf0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9cef8cafa31a47fd9f7410478b5415e8", + "max": 3, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2e4deb55d7b74e2fa09c9f925fd2e751", + "value": 3 + } + }, + "c13b9d0a74f540d5ab6c01064c149a65": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c13ea0c47f6e48f0a804fa9f2f5ce544": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c1f28cff3e064e46a8c9bdd0d705a099": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c41c679d7f0341f3839b9abc5329ec08": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c48e02dc87d74d50ba6de4aefeb1441e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9ac85729093c41c1b2a0fef5191b8ab5", + "placeholder": "​", + "style": "IPY_MODEL_d774f350171b4c3fb6be768dbf11c726", + "value": " 3/3 [00:00<00:00, 125.78it/s]" + } + }, + "c4a54f5262014b77964d42429d5e43bf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "c54e39be37434e0d826d86041ef1de96": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c59a11b4cdcd45a181e5417839a21245": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c5fecfc9041049e7834ae864bd54d59e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c65f5b1c90e24d47a060c0b362749b82": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c66c4c5330724c27966b24cfdc87dc3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c7d383a298da44e491c81887632a89ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c9464f1ec9e64361b0e621c664514ada": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cad144a0ae5948f5896d12f83c044dfd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cf31d13e5ccd4598bdf3353d1d914874": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e110392a48e446449f36eb31d42ba380", + "placeholder": "​", + "style": "IPY_MODEL_3eec352c0eea47e9b6e419785750df61", + "value": " 961k/961k [00:00<00:00, 2.26MB/s]" + } + }, + "cf540757bc79428bab170e157eb9381f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d0b05902a4db4abd8c10cab6178a59ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_36156c14c8d544deab0ea65ac5ba7508", + "placeholder": "​", + "style": "IPY_MODEL_15d85f4fe15545bc85d3717d7af7bbb1", + "value": " 60.7k/60.7k [00:00<00:00, 685kB/s]" + } + }, + "d2186c7599164e528aa3d92f6999a9bb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d24e98b7ba64420588aeee6c0a7d787a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d2cf4d1133a2421aa1ec980bdca4fecd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bcfc02b30e024b5c81856bcd9e191d07", + "IPY_MODEL_eaefc3e261a7453cb66905079b71f16a", + "IPY_MODEL_ac546920996e4ca081e438999ae19fc8" + ], + "layout": "IPY_MODEL_c54e39be37434e0d826d86041ef1de96" + } + }, + "d39695c4fadd4bdb93756645a3c3a1e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e5d4a32f5b384dbaa0e99ff1b925836a", + "IPY_MODEL_b73b1442ea8c42da8342e62bea1a8d6f", + "IPY_MODEL_cf31d13e5ccd4598bdf3353d1d914874" + ], + "layout": "IPY_MODEL_2f87bde2c64b42bc90ed461265cfe1f1" + } + }, + "d5daacab713847ef98afd7a77fbd613c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d5fea5e89ebd4d298c169526eadeeb32": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "d774f350171b4c3fb6be768dbf11c726": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d8f11947b0d048489bdd649479c50b1f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9c6dc4bccfb4e57a9ffcef2f9269172": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_48a8c0d648694b8abddf07ed12b68a93", + "IPY_MODEL_74d53a9e164f492785463bd1cdb376a7", + "IPY_MODEL_35c4bd29723b46ad94b098685953aefb" + ], + "layout": "IPY_MODEL_7d508b60c1f44aecb9e3f9711ecc0ce8" + } + }, + "dc03df51df3845edac3492bc3ee3391e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b73e9fcc9e634c2780cc880cc65cc678", + "placeholder": "​", + "style": "IPY_MODEL_57ed9e91eb2f45a18ee08f6989bec0a4", + "value": "100%" + } + }, + "dc43386a12c642cf93f434dd3f5cc04c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dcadb8f0088d43f6bc1a2cdc72cff730": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dcd3ba169df34a0395eb5d03405f8835": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c65f5b1c90e24d47a060c0b362749b82", + "max": 60722, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_01bc8315e7cd4064a8653eae44cea192", + "value": 60722 + } + }, + "dd355cdd1594499bbccc8a7842a0ba93": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "de16a90176c24ff8aa76eb0af1281d22": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e110392a48e446449f36eb31d42ba380": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e120b072886b4d4f94ef506ca3d6a605": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e145a20bac85423a8ac6a1841f7ff4d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e444beb58b7c4ad1aa94959ef0b5bd52": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e5d4a32f5b384dbaa0e99ff1b925836a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f305b7e403a647379268573a95d22f92", + "placeholder": "​", + "style": "IPY_MODEL_d5daacab713847ef98afd7a77fbd613c", + "value": "Downloading (…)CLIPModel/vocab.json: 100%" + } + }, + "e7da6c65cec140c3801fca68bcfdebcc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e831d4f1ad4d4f5f97bc9569a5294ca9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8756ee3f2f64e01b2790714b6704584": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e8cc8dbe0d164a9eaec472ffe1351db9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e7da6c65cec140c3801fca68bcfdebcc", + "placeholder": "​", + "style": "IPY_MODEL_eccef3d9147242d9a1e42f4abd0ebe4c", + "value": " 0/? [00:00<?, ? tables/s]" + } + }, + "e8e295d7292245fb9f17413599d59960": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e94edd188d8942e6b7f01cb1b962ba46": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e97c5c6e969842468f53520dfba1ee8f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ea9794429bbc4ae98e258157eb4d317e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c5fecfc9041049e7834ae864bd54d59e", + "max": 116, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_857c37c3638b4c7d8ffaaaa9fe5932f0", + "value": 116 + } + }, + "eaefc3e261a7453cb66905079b71f16a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_edf41d1718984e7dbef2b65799935fd8", + "max": 1109, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_20dad493a55343efaabbc6f7c1966cf0", + "value": 1109 + } + }, + "eaf5ad9e9e3240799128ef8bbf0a195a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1ad0c7637293497a9a75bfa45c1a06e8", + "placeholder": "​", + "style": "IPY_MODEL_4fc202bfa55842b48e59d4a800026331", + "value": " 85.3k/85.3k [00:00<00:00, 343kB/s]" + } + }, + "eb9b58dab8044074b1cac3e39f26e561": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0987a64b9cea4850998e78d76d31c3b8", + "max": 85317, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fa0573f2ebd84a5ba5ebdc0452362887", + "value": 85317 + } + }, + "ebf96889240d44f0b5a16fd945090213": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4ae8401caf984baf9fc132490f11646a", + "max": 252, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e145a20bac85423a8ac6a1841f7ff4d7", + "value": 252 + } + }, + "ec25ea55d62e4c0a9443d91d015bdbd6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ecc225aab6804d97b1cdd383621c9695": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eccef3d9147242d9a1e42f4abd0ebe4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ed19b6e281f145af9b6df5eb783e9a95": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_49ddd099c0ed4535b2f3da0e1dc5f44b", + "IPY_MODEL_12da828a56fd47fbac3881a78ae3b40c", + "IPY_MODEL_be63efa842e7438ab1fc2f4eb2ceb55f" + ], + "layout": "IPY_MODEL_435b2d9a31af4b479bca791932a9315f" + } + }, + "edf41d1718984e7dbef2b65799935fd8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f2cdef43d919412698f85ea03ce79e99": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f305b7e403a647379268573a95d22f92": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f41cf420defb4b109f836fecea8e1d15": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f4d6914361f44912b0d7ca1b16496606": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6e1dadaed924874a4c12e4759921e36": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f7d2ce646a4c42ed893383a4f75af2d6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f8916e9e4c5c4393b0f2c2f77d055757": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_707c06347f5444e185ca2bc7c07eecfa", + "max": 252, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_77131a41265342a28468664ad067d4c8", + "value": 252 + } + }, + "f8d66c452a6d4347b9a8247ad135fd35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3c8aa1d02f1541bdb59b0a8dff27148f", + "IPY_MODEL_88677a526eae40a1b5e0b5e9e7a25218", + "IPY_MODEL_eaf5ad9e9e3240799128ef8bbf0a195a" + ], + "layout": "IPY_MODEL_48f63d3af7604e8abe4ca94dbae63f48" + } + }, + "fa0573f2ebd84a5ba5ebdc0452362887": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "fadb08eafb084a4e91f8406055beb502": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fcfda905fd4448b3940b04f4136c53a4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fd56fa76c93c48b2bc179cb0a7bffac6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fe63dbf326194c6c813327bd643a85cd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "feef17ea90ae4105b2ffb56841ed2adb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "ffbfe6debabc4f5c8cad8383d596946e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-weaksupervision.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-weaksupervision.ipynb index 2de77be714..773bd933cf 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-weaksupervision.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-sentencetransformers-weaksupervision.ipynb @@ -155,14 +155,12 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -171,6 +169,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -181,7 +180,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -215,6 +214,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -225,14 +225,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -1651,7 +1655,7 @@ " 0.6,\n", " 0.6,\n", " 0.8,\n", - "]\n" + "]" ] }, { @@ -1783,7 +1787,7 @@ "\n", " return metrics.classification_report(\n", " y_test, predicted, target_names=[k for k in label2int.keys() if k]\n", - " )\n" + " )" ] }, { @@ -1829,7 +1833,7 @@ } ], "source": [ - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -1905,7 +1909,7 @@ " return transitions_df, text\n", "\n", "\n", - "transitions, text = get_transitions(weak_labels, 15)\n" + "transitions, text = get_transitions(weak_labels, 15)" ] }, { @@ -2176,7 +2180,7 @@ } ], "source": [ - "transitions.transpose()\n" + "transitions.transpose()" ] }, { @@ -2208,7 +2212,7 @@ "thresholds = [0.8] * len(rules)\n", "\n", "# As we have already generated the index in our first call, we just need to provide the thresholds.\n", - "weak_labels.extend_matrix(thresholds)\n" + "weak_labels.extend_matrix(thresholds)" ] }, { @@ -2475,7 +2479,7 @@ "summary = summary.rename(columns={\"index\": \"rule\"})\n", "summary = summary.sort_values(by=\"overlaps\", ascending=True)[[\"rule\", \"overlaps\"]]\n", "summary = summary.reset_index()\n", - "summary\n" + "summary" ] }, { @@ -2521,7 +2525,7 @@ "weak_labels.extend_matrix(thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -2561,7 +2565,7 @@ " len(weak_labels.annotation()),\n", " )\n", " coverage = sup / n\n", - " return 2 * acc * coverage / (acc + coverage)\n" + " return 2 * acc * coverage / (acc + coverage)" ] }, { @@ -2608,7 +2612,7 @@ "source": [ "import copy\n", "from tqdm.auto import tqdm\n", - "import numpy as np \n", + "import numpy as np\n", "\n", "ths_range = np.arange(1, 0.3, -0.1)\n", "n_ths = len(weak_labels.rules)\n", @@ -2622,7 +2626,7 @@ " acc = train_eval_labelmodel(thresholds)\n", " if acc > best_acc:\n", " best_acc = acc\n", - " best_thresholds = thresholds.copy()\n" + " best_thresholds = thresholds.copy()" ] }, { @@ -2650,7 +2654,7 @@ } ], "source": [ - "np.array(best_thresholds)\n" + "np.array(best_thresholds)" ] }, { @@ -2687,7 +2691,7 @@ "weak_labels.extend_matrix(best_thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -2743,7 +2747,7 @@ " y=y_test_for_grid_search,\n", " )\n", "\n", - " return accuracy\n" + " return accuracy" ] }, { @@ -2802,7 +2806,7 @@ " acc = train_eval_downstream(thresholds)\n", " if acc > best_acc:\n", " best_acc = acc\n", - " best_thresholds = thresholds.copy()\n" + " best_thresholds = thresholds.copy()" ] }, { @@ -2830,7 +2834,7 @@ } ], "source": [ - "np.array(best_thresholds)\n" + "np.array(best_thresholds)" ] }, { @@ -2867,7 +2871,7 @@ "weak_labels.extend_matrix(best_thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -2991,7 +2995,7 @@ "ax[0].add_artist(legend1)\n", "\n", "fig.tight_layout()\n", - "plt.savefig(\"extend_weak_labels.png\", facecolor=\"white\", transparent=False)\n" + "plt.savefig(\"extend_weak_labels.png\", facecolor=\"white\", transparent=False)" ] } ], diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-setfit-zeroshot.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-setfit-zeroshot.ipynb index 117b27ed0d..5fd503adf5 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-setfit-zeroshot.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-setfit-zeroshot.ipynb @@ -136,10 +136,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init( \n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -162,7 +159,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -212,9 +209,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -238,16 +238,16 @@ "outputs": [], "source": [ "# Define fast version of sentence transformers, change to cuda if available\n", - "encoder = SentenceTransformer(\"all-MiniLM-L6-v2\", device=\"cuda\") \n", + "encoder = SentenceTransformer(\"all-MiniLM-L6-v2\", device=\"cuda\")\n", "\n", "# Load dataset with banking\n", "dataset = load_dataset(\"banking77\", split=\"test\")\n", "\n", "# Encode text field using batched computation\n", "dataset = dataset.map(\n", - " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])}, \n", - " batch_size=32, \n", - " batched=True\n", + " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])},\n", + " batch_size=32,\n", + " batched=True,\n", ")\n", "\n", "# Removes the original labels because you'll be labeling from scratch\n", @@ -463,18 +463,22 @@ }, "outputs": [], "source": [ - "labels = [\"change details\", \"card\", \"atm\", \"top up\", \"balance\", \"transfer\", \"exchange rate\", \"pin\"]\n", + "labels = [\n", + " \"change details\",\n", + " \"card\",\n", + " \"atm\",\n", + " \"top up\",\n", + " \"balance\",\n", + " \"transfer\",\n", + " \"exchange rate\",\n", + " \"pin\",\n", + "]\n", "train_dataset = get_templated_dataset(\n", - " candidate_labels=labels, \n", - " sample_size=8, \n", - " template=\"The customer request is about {}\"\n", + " candidate_labels=labels, sample_size=8, template=\"The customer request is about {}\"\n", ")\n", "\n", "model = SetFitModel.from_pretrained(\"all-MiniLM-L6-v2\")\n", - "trainer = SetFitTrainer(\n", - " model=model,\n", - " train_dataset=train_dataset\n", - ")\n", + "trainer = SetFitTrainer(model=model, train_dataset=train_dataset)\n", "trainer.train()" ] }, @@ -501,7 +505,10 @@ " for pred in probas:\n", " yield [{\"label\": label, \"score\": score} for label, score in zip(labels, pred)]\n", "\n", - "dataset = dataset.map(lambda batch: {\"prediction\": list(get_predictions(batch[\"text\"]))}, batched=True)" + "\n", + "dataset = dataset.map(\n", + " lambda batch: {\"prediction\": list(get_predictions(batch[\"text\"]))}, batched=True\n", + ")" ] }, { @@ -671,7 +678,7 @@ "xaxis": "x3", "y": [ 1, - 0.9354838709677419, + 0.935483870967742, 0.9666666666666666, 0, 0, @@ -681,7 +688,7 @@ 0.8387096774193549, 1, 0.9545454545454546, - 0.9767441860465117, + 0.9767441860465116, 0.9444444444444444, 0.85, 0.8947368421052632, @@ -690,10 +697,10 @@ 0.7848101265822784, 0.95, 0.9047619047619048, - 0.9268292682926829, + 0.9268292682926828, 0.8333333333333334, 1, - 0.9090909090909091 + 0.9090909090909092 ], "yaxis": "y3" } @@ -1593,7 +1600,7 @@ ], "range": [ 0, - 0.9083622762489981 + 0.908362276248998 ], "type": "linear" }, @@ -1703,7 +1710,7 @@ " eval_dataset=ds[\"test\"],\n", " loss_class=CosineSimilarityLoss,\n", " batch_size=16,\n", - " num_iterations=20, \n", + " num_iterations=20,\n", ")\n", "\n", "# Train and evaluate\n", diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-sklearn-weaksupervision.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-sklearn-weaksupervision.ipynb index 161d3fd216..b8644a26c6 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-sklearn-weaksupervision.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-sklearn-weaksupervision.ipynb @@ -132,14 +132,12 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -148,6 +146,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -158,7 +157,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -183,11 +182,19 @@ "outputs": [], "source": [ "from datasets import load_dataset\n", - "from argilla.labeling.text_classification import Rule, WeakMultiLabels, add_rules, delete_rules, update_rules, MajorityVoter" + "from argilla.labeling.text_classification import (\n", + " Rule,\n", + " WeakMultiLabels,\n", + " add_rules,\n", + " delete_rules,\n", + " update_rules,\n", + " MajorityVoter,\n", + ")" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -198,14 +205,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -300,7 +311,7 @@ " Rule('\"can you\"', \"curiosity\"),\n", " Rule('\"would you\"', \"curiosity\"),\n", " Rule('\"do you\"', [\"curiosity\", \"admiration\"]),\n", - " Rule('\"great\"', [\"annoyance\"])\n", + " Rule('\"great\"', [\"annoyance\"]),\n", "]" ] }, @@ -1154,7 +1165,8 @@ "source": [ "rules_to_delete = [\n", " Rule(\"joking\", [\"optimism\", \"admiration\"]),\n", - " Rule('\"do you\"', [\"curiosity\", \"admiration\"])]\n", + " Rule('\"do you\"', [\"curiosity\", \"admiration\"]),\n", + "]\n", "\n", "delete_rules(dataset=\"go_emotions\", rules=rules_to_delete)\n", "\n", @@ -1187,9 +1199,7 @@ "metadata": {}, "outputs": [], "source": [ - "rules_to_update = [\n", - " Rule('\"great\"', [\"admiration\"]),\n", - " Rule(\"yeah\", \"approval\")]\n", + "rules_to_update = [Rule('\"great\"', [\"admiration\"]), Rule(\"yeah\", \"approval\")]\n", "\n", "update_rules(dataset=\"go_emotions\", rules=rules_to_update)" ] @@ -3516,7 +3526,7 @@ "metadata": {}, "outputs": [], "source": [ - "rule = Rule(\"risk\", \"Statistics\")" + "rule = Rule(\"risk\", \"Statistics\")" ] }, { @@ -4407,7 +4417,7 @@ "idx_multi = df.labels.map(lambda x: len(x) > 1)\n", "df[\"is_single\"] = df.labels.map(lambda x: 0 if len(x) > 1 else 1)\n", "df[idx_multi].labels.map(lambda x: [label_freq.append(int(l)) for l in x])\n", - "pd.Series(label_freq).value_counts()\n" + "pd.Series(label_freq).value_counts()" ] }, { diff --git a/docs/_source/tutorials/notebooks/labelling-textclassification-snorkel-weaksupervision.ipynb b/docs/_source/tutorials/notebooks/labelling-textclassification-snorkel-weaksupervision.ipynb index 621b1fcf74..eecc187848 100644 --- a/docs/_source/tutorials/notebooks/labelling-textclassification-snorkel-weaksupervision.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-textclassification-snorkel-weaksupervision.ipynb @@ -133,14 +133,12 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -149,6 +147,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -159,7 +158,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -194,6 +193,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -204,14 +204,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -979,7 +983,7 @@ "source": [ "# quick look at our training data with the weak labels from our label model\n", "with pd.option_context(\"display.max_colwidth\", None):\n", - " display(pd.DataFrame({\"text\": X_train, \"label\": y_train}))\n" + " display(pd.DataFrame({\"text\": X_train, \"label\": y_train}))" ] }, { @@ -1048,7 +1052,7 @@ "\n", "# extract text and labels\n", "X_test = [rec.text for rec in test_ds]\n", - "y_test = [label2int[rec.annotation] for rec in test_ds]\n" + "y_test = [label2int[rec.annotation] for rec in test_ds]" ] }, { @@ -1072,7 +1076,7 @@ " y=y_test,\n", ")\n", "\n", - "print(f\"Test accuracy: {accuracy}\")\n" + "print(f\"Test accuracy: {accuracy}\")" ] }, { diff --git a/docs/_source/tutorials/notebooks/labelling-tokenclassification-basics.ipynb b/docs/_source/tutorials/notebooks/labelling-tokenclassification-basics.ipynb index 925d650771..6d80c40b84 100644 --- a/docs/_source/tutorials/notebooks/labelling-tokenclassification-basics.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-tokenclassification-basics.ipynb @@ -124,10 +124,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -150,7 +147,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -173,9 +170,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -224,7 +224,7 @@ "from datasets import load_dataset\n", "\n", "ds = rg.DatasetForTokenClassification.from_datasets(\n", - " dataset=load_dataset('argilla/gutenberg_spacy-ner', split='train')\n", + " dataset=load_dataset(\"argilla/gutenberg_spacy-ner\", split=\"train\")\n", ")" ] }, @@ -278,15 +278,15 @@ "source": [ "import httpx\n", "\n", - "rg_client= rg.active_client().client\n", + "rg_client = rg.active_client().client\n", "auth_headers = {\"X-Argilla-API-Key\": rg_client.token}\n", - "http=httpx.Client(base_url=rg_client.base_url, headers=auth_headers)\n", + "http = httpx.Client(base_url=rg_client.base_url, headers=auth_headers)\n", "\n", "# make a request using our Argilla Client\n", "users = http.get(\"/api/users\").json()\n", "\n", "# optional: filter users to get only those with annotator role\n", - "users = [u for u in users if u['role']=='annotator']" + "users = [u for u in users if u[\"role\"] == \"annotator\"]" ] }, { @@ -328,7 +328,7 @@ "\n", "# divide your dataset into chunks of the same length as the users list and make the assignments\n", "n = len(users)\n", - "chunked_records = [ds[i:i + n] for i in range(0, len(ds), n)]\n", + "chunked_records = [ds[i : i + n] for i in range(0, len(ds), n)]\n", "for chunk in chunked_records:\n", " for idx, record in enumerate(chunk):\n", " assignments[users[idx].username].append(record)" @@ -361,15 +361,15 @@ "assigned_records = []\n", "for user, records in assignments.items():\n", " for record in records:\n", - " record.metadata['user'] = user\n", + " record.metadata[\"user\"] = user\n", " assigned_records.append(record)\n", "\n", "# log the records in Argilla\n", "rg.log(\n", " records=assigned_records,\n", - " workspace='recognai',\n", - " name='gutenberg_spacy-ner',\n", - " tags={'with assignments': True}\n", + " workspace=\"recognai\",\n", + " name=\"gutenberg_spacy-ner\",\n", + " tags={\"with assignments\": True},\n", ")" ] }, @@ -393,11 +393,7 @@ "source": [ "# loop through the dictionary and log the dataset for each user\n", "for user, records in assignments.items():\n", - " rg.log(\n", - " records=records,\n", - " workspace=user,\n", - " name='gutenberg_spacy-ner'\n", - " )" + " rg.log(records=records, workspace=user, name=\"gutenberg_spacy-ner\")" ] }, { diff --git a/docs/_source/tutorials/notebooks/labelling-tokenclassification-deletelabels.ipynb b/docs/_source/tutorials/notebooks/labelling-tokenclassification-deletelabels.ipynb index 6f55b74d70..650ebde507 100644 --- a/docs/_source/tutorials/notebooks/labelling-tokenclassification-deletelabels.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-tokenclassification-deletelabels.ipynb @@ -80,10 +80,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -106,7 +103,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -129,9 +126,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -297,7 +297,9 @@ "outputs": [], "source": [ "# get all records with the old label in the annotations or predictions\n", - "records = rg.load(dataset_name, query=f\"annotated_as:{old_label} OR predicted_as:{old_label}\")\n", + "records = rg.load(\n", + " dataset_name, query=f\"annotated_as:{old_label} OR predicted_as:{old_label}\"\n", + ")\n", "len(records)" ] }, @@ -316,10 +318,9 @@ "outputs": [], "source": [ "def cleaning_function(labels, old_label, new_label):\n", - "\n", " # replaces / removes string labels (e.g. TextClassification)\n", " if isinstance(labels, str):\n", - " if labels==old_label:\n", + " if labels == old_label:\n", " labels = new_label\n", "\n", " elif isinstance(labels, list):\n", @@ -329,12 +330,14 @@ " if new_label == None:\n", " labels.remove(old_label)\n", " else:\n", - " labels = [new_label if label == old_label else label for label in labels]\n", + " labels = [\n", + " new_label if label == old_label else label for label in labels\n", + " ]\n", "\n", " # replaces / removes lables in a list of tuples (e.g. Predictions, TokenClassification)\n", " elif isinstance(labels[0], tuple):\n", - " for ix,label in enumerate(labels):\n", - " if label[0]==old_label:\n", + " for ix, label in enumerate(labels):\n", + " if label[0] == old_label:\n", " if new_label == None:\n", " labels.remove(label)\n", " else:\n", @@ -356,7 +359,7 @@ " if record.prediction:\n", " record.prediction = cleaning_function(record.prediction, old_label, new_label)\n", " if record.annotation:\n", - " record.annotation = cleaning_function(record.annotation, old_label, new_label) \n", + " record.annotation = cleaning_function(record.annotation, old_label, new_label)\n", " record.status = \"Default\"" ] }, diff --git a/docs/_source/tutorials/notebooks/labelling-tokenclassification-flair-fewshot.ipynb b/docs/_source/tutorials/notebooks/labelling-tokenclassification-flair-fewshot.ipynb index cf4c625a64..aa5db0300c 100644 --- a/docs/_source/tutorials/notebooks/labelling-tokenclassification-flair-fewshot.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-tokenclassification-flair-fewshot.ipynb @@ -134,15 +134,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -151,6 +148,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -162,7 +160,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -194,6 +192,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -204,14 +203,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -279,7 +282,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# Wrap our tokens in a flair Sentence\n", "sentence = Sentence(\" \".join(dataset[0][\"tokens\"]))\n", "\n", diff --git a/docs/_source/tutorials/notebooks/labelling-tokenclassification-skweak-weaksupervision.ipynb b/docs/_source/tutorials/notebooks/labelling-tokenclassification-skweak-weaksupervision.ipynb index bcc02f366a..11bb584d18 100644 --- a/docs/_source/tutorials/notebooks/labelling-tokenclassification-skweak-weaksupervision.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-tokenclassification-skweak-weaksupervision.ipynb @@ -145,15 +145,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -162,6 +159,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -173,7 +171,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -222,6 +220,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -232,14 +231,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -356,7 +359,6 @@ }, "outputs": [], "source": [ - "\n", "conll2003 = load_dataset(\"conll2003\")" ] }, @@ -533,7 +535,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "sports_results_annotator = FunctionAnnotator(\"sports_results\", sports_results_detector)\n", "sports_match_annotator = FunctionAnnotator(\"sports_match\", sports_match_detector)" ] @@ -619,7 +620,7 @@ " yield start, end, label\n", "\n", " start = None\n", - " end = None\n" + " end = None" ] }, { @@ -683,7 +684,7 @@ "for keyword in title_ending:\n", " func = partial(title_detector, keyword=keyword, reverse=True)\n", " annotator = FunctionAnnotator(keyword + \" (end)\", func)\n", - " rule_based_annotator.add_annotator(annotator)\n" + " rule_based_annotator.add_annotator(annotator)" ] }, { @@ -853,7 +854,7 @@ " )\n", "\n", "\n", - "rg.log(records=spans_logger(dev_docs), name=\"conll_2003_dev_spans\")\n" + "rg.log(records=spans_logger(dev_docs), name=\"conll_2003_dev_spans\")" ] }, { @@ -1090,6 +1091,7 @@ " dev_docs, gold_span_name=\"gold\", gold_labels=[\"ORG\", \"MISC\", \"PER\", \"LOC\", \"O\"]\n", ")\n", "\n", + "\n", "def scores_to_df(scores):\n", " for annotator, label_dict in scores.items():\n", " for label, metrics_dict in label_dict.items():\n", @@ -1325,7 +1327,7 @@ "\n", "pd.DataFrame(\n", " [{k: v for k, v in scores.items() if k in [\"ents_p\", \"ents_r\", \"ents_f\"]}]\n", - ").round(3)\n" + ").round(3)" ] }, { diff --git a/docs/_source/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.ipynb b/docs/_source/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.ipynb index acf28ca07c..1936a6576c 100644 --- a/docs/_source/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.ipynb +++ b/docs/_source/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.ipynb @@ -114,11 +114,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -142,7 +138,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -186,9 +182,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -344,7 +343,7 @@ "source": [ "dataset = load_dataset(\"gutenberg_time\", split=\"train\", streaming=True)\n", "\n", - "# Let's have a look at the first 5 examples of the train set. \n", + "# Let's have a look at the first 5 examples of the train set.\n", "pd.DataFrame(dataset.take(5))" ] }, @@ -395,7 +394,7 @@ " prediction_agent=\"en_core_web_trf\",\n", " )\n", " )\n", - " \n", + "\n", "rg.log(records=records, name=\"gutenberg_spacy_ner\")" ] }, @@ -450,7 +449,7 @@ " prediction_agent=\"en_core_web_sm\",\n", " )\n", " )\n", - " \n", + "\n", "rg.log(records=records, name=\"gutenberg_spacy_ner\")" ] }, @@ -512,10 +511,10 @@ " text=text,\n", " tokens=tokens,\n", " prediction=entities,\n", - " prediction_agent=\"en_core_web_sm\"\n", + " prediction_agent=\"en_core_web_sm\",\n", " )\n", " )\n", - " \n", + "\n", "rg.log(records=records, name=\"imdb_spacy_ner\")" ] }, diff --git a/docs/_source/tutorials/notebooks/monitoring-textclassification-cleanlab-explainability.ipynb b/docs/_source/tutorials/notebooks/monitoring-textclassification-cleanlab-explainability.ipynb index b6a4cb8c41..95accda5a6 100644 --- a/docs/_source/tutorials/notebooks/monitoring-textclassification-cleanlab-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/monitoring-textclassification-cleanlab-explainability.ipynb @@ -114,15 +114,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -131,6 +128,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -142,7 +140,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -171,11 +169,12 @@ "from sklearn.naive_bayes import MultinomialNB\n", "from sklearn.pipeline import Pipeline\n", "\n", - "from argilla.labeling.text_classification import find_label_errors\n" + "from argilla.labeling.text_classification import find_label_errors" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -186,14 +185,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -277,7 +280,7 @@ "classifier = Pipeline([(\"vect\", CountVectorizer()), (\"clf\", MultinomialNB())])\n", "\n", "# Fit the classifier\n", - "classifier.fit(X=ds_train[\"text\"], y=ds_train[\"label\"])\n" + "classifier.fit(X=ds_train[\"text\"], y=ds_train[\"label\"])" ] }, { @@ -411,7 +414,7 @@ "outputs": [], "source": [ "# Uncover label errors in the Argilla web app\n", - "rg.log(records_with_label_error, \"label_errors\")\n" + "rg.log(records_with_label_error, \"label_errors\")" ] }, { @@ -479,7 +482,7 @@ " cv=int(len(ds_train) / len(ds_test)),\n", " method=\"predict_proba\",\n", " n_jobs=-1,\n", - ")\n" + ")" ] }, { diff --git a/docs/_source/tutorials/notebooks/monitoring-textclassification-setfit-explainability.ipynb b/docs/_source/tutorials/notebooks/monitoring-textclassification-setfit-explainability.ipynb index b1b23471e6..2b2a54fa7b 100644 --- a/docs/_source/tutorials/notebooks/monitoring-textclassification-setfit-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/monitoring-textclassification-setfit-explainability.ipynb @@ -1,2412 +1,2421 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "b5Vbz_hkuHAo" - }, - "source": [ - "# 🥇 Compare Text Classification Models\n", - "\n", - "In this tutorial, you'll learn to make text classification on a dataset using two different models, upload models predictions in your Argilla workspace and compare models by computing the F1 score for each model. It will walk you through these steps:\n", - "- 💾 Load the dataset you want to use.\n", - "- 💻 Compute predictions with a zero-shot classification model.\n", - "- 🔄 Convert model output to Argilla format and upload it to Argilla workspace.\n", - "- 💻 Compute predictions with zero-shot SetFit model.\n", - "- 🧪 Compare models predictions with F1 score\n" - ] + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "b5Vbz_hkuHAo" + }, + "source": [ + "# 🥇 Compare Text Classification Models\n", + "\n", + "In this tutorial, you'll learn to make text classification on a dataset using two different models, upload models predictions in your Argilla workspace and compare models by computing the F1 score for each model. It will walk you through these steps:\n", + "- 💾 Load the dataset you want to use.\n", + "- 💻 Compute predictions with a zero-shot classification model.\n", + "- 🔄 Convert model output to Argilla format and upload it to Argilla workspace.\n", + "- 💻 Compute predictions with zero-shot SetFit model.\n", + "- 🧪 Compare models predictions with F1 score\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "4AbgSHtx1Hbh" + }, + "source": [ + "## Introduction\n", + "When working on Text Classification, you may want to compare two models to decide which one to use.\n", + "For this, we compute the F1 score on train models using their annotations as the true text class.\n", + "The F1 score can be interpreted as a harmonic mean of the precision and recall, where an F1 score reaches its best value at 1 and worst score at 0. (more info in this [documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html))\n", + "\n", + "*Argilla* allows you to deploy and monitor any model you like, but in this tutorial, we will focus on the two most common frameworks in the NLP space: [transformers](https://huggingface.co/docs/transformers) and [SetFit](https://github.com/huggingface/setfit). Let's get started!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qX1M5cMP1XyX" + }, + "source": [ + "## Running Argilla\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", + "\n", + "\n", + "**Deploy Argilla on Hugging Face Spaces**: If you want to run tutorials with external notebooks (e.g., Google Colab) and you have an account on Hugging Face, you can deploy Argilla on Spaces with a few clicks:\n", + "\n", + "[![deploy on spaces](https://huggingface.co/datasets/huggingface/badges/raw/main/deploy-to-spaces-lg.svg)](https://huggingface.co/new-space?template=argilla/argilla-template-space)\n", + "\n", + "For details about configuring your deployment, check the [official Hugging Face Hub guide](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla).\n", + "\n", + "\n", + "**Launch Argilla using Argilla's quickstart Docker image**: This is the recommended option if you want [Argilla running on your local machine](../../getting_started/quickstart.ipynb). Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", + "\n", + "For more information on deployment options, please check the Deployment section of the documentation.\n", + "\n", + "
\n", + "\n", + "Tip\n", + " \n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter Notebook tool of your choice.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "S_JeXXsL1w4a" + }, + "source": [ + "## Setup\n", + "\n", + "To complete this tutorial, you will need to install the Argilla client and a few third-party libraries using `pip`:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "SbyuZvarlToD" + }, + "outputs": [], + "source": [ + "%pip install transformers argilla datasets torch setfit -qqqqqqq" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XMxT5_tK346_" + }, + "source": [ + "The imports needed:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "W4_oh-TmnOVm" + }, + "outputs": [], + "source": [ + "import argilla as rg\n", + "from datasets import load_dataset\n", + "from transformers import pipeline\n", + "from argilla.metrics.text_classification import f1\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "shy57P-F48iH" + }, + "source": [ + "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "klxDkoErnaPI" + }, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "# Replace workspace with the name of your workspace\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# # Replace workspace with the name of your workspace\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"owner.apikey\",\n", + "# workspace=\"admin\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MQibTErO5De0" + }, + "source": [ + "For this tutorial the HugginFace [ag_news](https://huggingface.co/datasets/ag_news) dataset is chosen:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "4AbgSHtx1Hbh" - }, - "source": [ - "## Introduction\n", - "When working on Text Classification, you may want to compare two models to decide which one to use.\n", - "For this, we compute the F1 score on train models using their annotations as the true text class.\n", - "The F1 score can be interpreted as a harmonic mean of the precision and recall, where an F1 score reaches its best value at 1 and worst score at 0. (more info in this [documentation](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html))\n", - "\n", - "*Argilla* allows you to deploy and monitor any model you like, but in this tutorial, we will focus on the two most common frameworks in the NLP space: [transformers](https://huggingface.co/docs/transformers) and [SetFit](https://github.com/huggingface/setfit). Let's get started!" - ] + "id": "teaiKrR1ng15", + "outputId": "381f5715-9f37-46b8-b45f-ec767c906fc7" + }, + "outputs": [], + "source": [ + "news_dataset = load_dataset(\"ag_news\", split=\"test\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sA2WK_px6pa1" + }, + "source": [ + "This dataset is composed of two columns, one is the text of the news article and the other one is the label associated with this text article:\n", + "\n", + "*For this tutorial, we will consider the label as the annotation of the text*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "blvo7FZz8ccU" + }, + "source": [ + "We transform our dataset in order to create an argilla TextClassificationDataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "metadata": { - "id": "qX1M5cMP1XyX" - }, - "source": [ - "## Running Argilla\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", - "\n", - "\n", - "**Deploy Argilla on Hugging Face Spaces**: If you want to run tutorials with external notebooks (e.g., Google Colab) and you have an account on Hugging Face, you can deploy Argilla on Spaces with a few clicks:\n", - "\n", - "[![deploy on spaces](https://huggingface.co/datasets/huggingface/badges/raw/main/deploy-to-spaces-lg.svg)](https://huggingface.co/new-space?template=argilla/argilla-template-space)\n", - "\n", - "For details about configuring your deployment, check the [official Hugging Face Hub guide](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla).\n", - "\n", - "\n", - "**Launch Argilla using Argilla's quickstart Docker image**: This is the recommended option if you want [Argilla running on your local machine](../../getting_started/quickstart.ipynb). Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", - "\n", - "For more information on deployment options, please check the Deployment section of the documentation.\n", - "\n", - "
\n", - "\n", - "Tip\n", - " \n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter Notebook tool of your choice.\n", - "
" - ] + "id": "Ttt0aUJ7pYzz", + "outputId": "15f7798d-6ad7-45f5-82a6-225088ee0076" + }, + "outputs": [], + "source": [ + "int_to_label = {\n", + " 0: \"World\",\n", + " 1: \"Sports\",\n", + " 2: \"Business\",\n", + " 3: \"Sci/Tech\",\n", + "}\n", + "\n", + "news_dataset = news_dataset.map(\n", + " lambda row: {\"prediction\": [{\"label\": int_to_label[row[\"label\"]], \"score\": 1}]}\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "cell_type": "markdown", - "metadata": { - "id": "S_JeXXsL1w4a" - }, - "source": [ - "## Setup\n", - "\n", - "To complete this tutorial, you will need to install the Argilla client and a few third-party libraries using `pip`:" - ] + "id": "u687F37SoFn8", + "outputId": "3f111e4d-97c4-41fe-b595-80b4ccda4520" + }, + "outputs": [], + "source": [ + "ds_record = rg.read_datasets(dataset=news_dataset, task=\"TextClassification\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TEyjYZHAIV9h" + }, + "source": [ + "## Make Zero Shot Text Classification predictions using transformers\n", + "\n", + "On HugginFace we choose the model `cross-encoder/nli-distilroberta-base` that is trained to perform zero-shot classification.\n", + "We create a pipeline with this model and then perform prediction.\n", + "\n", + "*note: `device=0` in pipeline() permits to use GPU if you do not have a GPU available delete this parameter*\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "UW4am9A7n4mI" + }, + "outputs": [], + "source": [ + "labels = [\"Sports\", \"Sci/Tech\", \"Business\", \"World\"]\n", + "\n", + "pipe = pipeline(\n", + " \"zero-shot-classification\", model=\"cross-encoder/nli-distilroberta-base\", device=0\n", + ")\n", + "result = []\n", + "with pipe.device_placement():\n", + " result = pipe(\n", + " [data.text for data in ds_record],\n", + " candidate_labels=labels,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BnT8GZmWKl7S" + }, + "source": [ + "Now that predictions are successfully made with the zero-shot model we can transform it into a list of argilla TextClassificationRecord and upload it to our argilla client" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85, + "referenced_widgets": [ + "03352da397fc457fa70dd5e489cc4844", + "9424d0b9953b43638b5f0623ff225d79", + "4e8ec2dc3b564cae937741ac7d47372a", + "58a2528e6a7646089e77174b5ef6d720", + "301a91403585451cad67df96ada457b5", + "b2266a02a7154eb9a7a5ea36734a3902", + "cfb6680ece1946a990572948ecc15941", + "d851b02df22d40528579462ac2649e9c", + "bc75ab7805a041ad91ffcc6cf878212d", + "99ee702176d6453d9df40b1278a3dc0d", + "09a5640c9f9f4d1cb2d320e0f7577469" + ] }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "SbyuZvarlToD" - }, - "outputs": [], - "source": [ - "%pip install transformers argilla datasets torch setfit -qqqqqqq" - ] + "id": "ft7e8RApyW0u", + "outputId": "b7414e09-d2a5-4c8e-9dd2-364b53f8ee70" + }, + "outputs": [], + "source": [ + "zero_shot_news_dataset = [\n", + " rg.TextClassificationRecord(\n", + " text=res[\"sequence\"],\n", + " prediction=list(zip(res[\"labels\"], res[\"scores\"])),\n", + " annotation=record.prediction[0][0],\n", + " )\n", + " for res, record in zip(result, ds_record)\n", + "]\n", + "\n", + "rg.log(name=\"zero_shot_news_dataset\", records=zero_shot_news_dataset)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "T_weCa-YPAzF" + }, + "source": [ + "You can access the zero_shot_news_dataset in the Argilla UI:\n", + "\n", + "\"Model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Z7GTj9I9K-mf" + }, + "source": [ + "Finally, we measure the performance of our model using the argilla f1 function that computes the F1 score:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 }, + "id": "1iShwCbj3n-l", + "outputId": "b02aa4e4-cdc9-4d07-e2e0-f7d794b45706" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "XMxT5_tK346_" - }, - "source": [ - "The imports needed:" + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f1_zero_shot = f1(\"zero_shot_news_dataset\")\n", + "f1_zero_shot.visualize()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "l4gY2nuk2c0G" + }, + "source": [ + "## Make zero-shot text classification using a trained SetFit classifier" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The imports needed:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "n5UcoG5l3lRy" + }, + "outputs": [], + "source": [ + "from setfit import SetFitModel, SetFitTrainer, get_templated_dataset" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We create a synthetic dataset of training examples using our dataset's labels" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "8DTm1BqI2dZp" + }, + "outputs": [], + "source": [ + "labels = [\"Sports\", \"Sci/Tech\", \"Business\", \"World\"]\n", + "train_dataset = get_templated_dataset(\n", + " candidate_labels=labels, sample_size=8, template=\"The news article is about {}\"\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We train a SetFitModel using the pretrained model 'all-MiniLM-L6-v2'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 244, + "referenced_widgets": [ + "e90626dee9ad4610a2d3b04c5aa7cfd8", + "f249c3c6f884440db96d66715cd48247", + "9f6b243e854d40de8339d5920ea9b2c8", + "981710df13494b958e9e3fb366bd53d4", + "269c0b2820b44ba7844f451dc6b7ce62", + "d4bbeddf2bf04fc88c02995657c58410", + "5ab6d3b8e01b4858bcd2ef38475265c0", + "cb9c3a0c0ba04bc6a062e696ec4616b7", + "c7ba9a5b20fc4af2b2a044585e93e5ec", + "0ed8954de1e0470a87bba037516159ce", + "ef745b03cfec4cd793b852d29185d042", + "f773cd8ad7df481e9e606e245c37c575", + "a9eb439d911346c1bc523d1719f96c72", + "03fc89e7ed73469f9641f0e27ff60920", + "371ebf2451ca4045aa8c7c29aa80b81f", + "ffc76bd466ed46518d5511ceb0cb9086", + "14e4c79dd65d4fafb02701e775873e2a", + "cf2c6b3aa42343a1b6ea765a17b133e5", + "65f152c3f69f4e0781bea0287d5f8f14", + "6fdf42751cd74adf857773c33e2d8e21", + "03cb83f82a494893bb8bb94ea588fb62", + "f0fab85f8e8d4d1ca46bfbe14d50fe57" + ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "W4_oh-TmnOVm" - }, - "outputs": [], - "source": [ - "import argilla as rg\n", - "from datasets import load_dataset\n", - "from transformers import pipeline\n", - "from argilla.metrics.text_classification import f1\n", - "import pandas as pd" - ] + "id": "YtLxfwJd7u5c", + "outputId": "1855f46b-e01c-4f39-99af-166d5e9b944c" + }, + "outputs": [], + "source": [ + "model = SetFitModel.from_pretrained(\"all-MiniLM-L6-v2\")\n", + "trainer = SetFitTrainer(model=model, train_dataset=train_dataset)\n", + "trainer.train()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are then able to compute the text classification: " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "ytsi4_No0_pd" + }, + "outputs": [], + "source": [ + "result = [\n", + " {\n", + " \"sequence\": data[\"text\"],\n", + " \"scores\": model.predict_proba([data[\"text\"]]).squeeze().numpy(),\n", + " \"labels\": labels,\n", + " }\n", + " for data in news_dataset\n", + "]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can log the result dataset into Argilla and compute the F1 score:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85, + "referenced_widgets": [ + "9d7425ebb4854fc4b4c957a7a8805b0f", + "4adcf6345d2f48a1b8f912ba2813b701", + "273687d63b794ce3982fcc4b32dc40ac", + "ef39075183f74473bbfcfb08af09c484", + "d91f02b4b9aa43ebaa6be94fb5465ada", + "50581d62125c4153b6cc9d3f43a3161e", + "4b4f86bb0983441288adee5e7a0de959", + "5d419a4d2acf48cc8b3626bfb63c4cd4", + "0504c191fa294f62854e3dc44eba1a1a", + "9f3f65b2cc274246ba55ca32bef5fc10", + "ff70550ed86146049a48faae2f9bf134" + ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "shy57P-F48iH" - }, - "source": [ - "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" - ] + "id": "21X5laS15hxa", + "outputId": "517832f5-f52c-40df-fd15-38341ce792a7" + }, + "outputs": [], + "source": [ + "setfit_zero_shot_news_dataset = [\n", + " rg.TextClassificationRecord(\n", + " text=res[\"sequence\"],\n", + " prediction=list(zip(res[\"labels\"], res[\"scores\"])),\n", + " annotation=record.prediction[0][0],\n", + " )\n", + " for res, record in zip(result, ds_record)\n", + "]\n", + "rg.log(name=\"setfit_zero_shot_news_dataset\", records=setfit_zero_shot_news_dataset)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can access the setfit_zero_shot_news_dataset in the Argilla UI:\n", + "\n", + "\"Model" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 }, + "id": "uCQeM8V35w1Q", + "outputId": "0fdcae45-0cfa-4674-f3ab-ea730da7d8f8" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "klxDkoErnaPI" - }, - "outputs": [], - "source": [ - "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", - "# Replace api_key if you configured a custom API key\n", - "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f1_setfit_zero_shot = f1(\"setfit_zero_shot_news_dataset\")\n", + "f1_setfit_zero_shot.visualize()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3rH58lEpOPQt" + }, + "source": [ + "Now that we have computed the F1 score for each model with can create a comparison table:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "NJ6X5SehqYzX" + }, + "outputs": [], + "source": [ + "f_score = list(f1_setfit_zero_shot.data.keys())\n", + "f1_setfit_zero_shot_values = list(f1_setfit_zero_shot.data.values())\n", + "f1_zero_shot_values = list(f1_zero_shot.data.values())\n", + "\n", + "unnecessary_labels = [\"Sports_recall\", \"World_recall\", \"\"]\n", + "\n", + "df_results = pd.DataFrame(\n", + " {\n", + " \"f_score\": f_score,\n", + " \"zero-shot classification\": f1_zero_shot_values,\n", + " \"zero-shot SetFit classification\": f1_setfit_zero_shot_values,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 739 }, + "id": "xvv8J-VBrzVE", + "outputId": "07a04080-a989-4e3d-fd80-d12c4a078078" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f_scorezero-shot classificationzero-shot SetFit classification
0precision_macro0.5177540.663322
1recall_macro0.5296050.668816
2f1_macro0.5144830.663725
3precision_micro0.5296050.668816
4recall_micro0.5296050.668816
5f1_micro0.5296050.668816
6Sci/Tech_precision0.4769500.556291
7Sci/Tech_recall0.2831580.530526
8Sci/Tech_f10.3553500.543103
9Sci/Tech_support11400.0000007600.000000
10World_precision0.3679090.663734
11World_recall0.3584210.555789
12World_f10.3631030.604984
13World_support11400.0000007600.000000
14Business_precision0.4492270.620098
15Business_recall0.5657890.665789
16Business_f10.5008150.642132
17Business_support11400.0000007600.000000
18Sports_precision0.7769300.813166
19Sports_recall0.9110530.923158
20Sports_f10.8386630.864678
21Sports_support11400.0000007600.000000
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " f_score zero-shot classification \\\n", + "0 precision_macro 0.517754 \n", + "1 recall_macro 0.529605 \n", + "2 f1_macro 0.514483 \n", + "3 precision_micro 0.529605 \n", + "4 recall_micro 0.529605 \n", + "5 f1_micro 0.529605 \n", + "6 Sci/Tech_precision 0.476950 \n", + "7 Sci/Tech_recall 0.283158 \n", + "8 Sci/Tech_f1 0.355350 \n", + "9 Sci/Tech_support 11400.000000 \n", + "10 World_precision 0.367909 \n", + "11 World_recall 0.358421 \n", + "12 World_f1 0.363103 \n", + "13 World_support 11400.000000 \n", + "14 Business_precision 0.449227 \n", + "15 Business_recall 0.565789 \n", + "16 Business_f1 0.500815 \n", + "17 Business_support 11400.000000 \n", + "18 Sports_precision 0.776930 \n", + "19 Sports_recall 0.911053 \n", + "20 Sports_f1 0.838663 \n", + "21 Sports_support 11400.000000 \n", + "\n", + " zero-shot SetFit classification \n", + "0 0.663322 \n", + "1 0.668816 \n", + "2 0.663725 \n", + "3 0.668816 \n", + "4 0.668816 \n", + "5 0.668816 \n", + "6 0.556291 \n", + "7 0.530526 \n", + "8 0.543103 \n", + "9 7600.000000 \n", + "10 0.663734 \n", + "11 0.555789 \n", + "12 0.604984 \n", + "13 7600.000000 \n", + "14 0.620098 \n", + "15 0.665789 \n", + "16 0.642132 \n", + "17 7600.000000 \n", + "18 0.813166 \n", + "19 0.923158 \n", + "20 0.864678 \n", + "21 7600.000000 " ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_results" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oGi3_YgFty_0" + }, + "source": [ + "*Results interpretation:* Without any hesitation the zero-shot classification using SetFit model is the more effective one. The F1 score for each class is better.\n", + "\n", + "The best-predicted class for both classifiers is **Sports**." + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "03352da397fc457fa70dd5e489cc4844": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9424d0b9953b43638b5f0623ff225d79", + "IPY_MODEL_4e8ec2dc3b564cae937741ac7d47372a", + "IPY_MODEL_58a2528e6a7646089e77174b5ef6d720" + ], + "layout": "IPY_MODEL_301a91403585451cad67df96ada457b5" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# # Replace workspace with the name of your workspace\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"owner.apikey\",\n", - "# workspace=\"admin\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" - ] + "03cb83f82a494893bb8bb94ea588fb62": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "MQibTErO5De0" - }, - "source": [ - "For this tutorial the HugginFace [ag_news](https://huggingface.co/datasets/ag_news) dataset is chosen:" - ] + "03fc89e7ed73469f9641f0e27ff60920": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_65f152c3f69f4e0781bea0287d5f8f14", + "max": 80, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6fdf42751cd74adf857773c33e2d8e21", + "value": 80 + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "teaiKrR1ng15", - "outputId": "381f5715-9f37-46b8-b45f-ec767c906fc7" - }, - "outputs": [], - "source": [ - "news_dataset = load_dataset(\"ag_news\", split=\"test\")" - ] + "0504c191fa294f62854e3dc44eba1a1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "sA2WK_px6pa1" - }, - "source": [ - "This dataset is composed of two columns, one is the text of the news article and the other one is the label associated with this text article:\n", - "\n", - "*For this tutorial, we will consider the label as the annotation of the text*\n", - "\n" - ] + "09a5640c9f9f4d1cb2d320e0f7577469": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "blvo7FZz8ccU" - }, - "source": [ - "We transform our dataset in order to create an argilla TextClassificationDataset:" - ] + "0ed8954de1e0470a87bba037516159ce": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Ttt0aUJ7pYzz", - "outputId": "15f7798d-6ad7-45f5-82a6-225088ee0076" - }, - "outputs": [], - "source": [ - "int_to_label = {\n", - " 0:\"World\",\n", - " 1:\"Sports\",\n", - " 2:\"Business\",\n", - " 3:\"Sci/Tech\",\n", - "}\n", - "\n", - "news_dataset = news_dataset.map(lambda row: {\"prediction\": [{\"label\":int_to_label[row[\"label\"]], \"score\":1}]})" - ] + "14e4c79dd65d4fafb02701e775873e2a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "u687F37SoFn8", - "outputId": "3f111e4d-97c4-41fe-b595-80b4ccda4520" - }, - "outputs": [], - "source": [ - "ds_record = rg.read_datasets(dataset=news_dataset, task=\"TextClassification\")" - ] + "269c0b2820b44ba7844f451dc6b7ce62": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." - ] + "273687d63b794ce3982fcc4b32dc40ac": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5d419a4d2acf48cc8b3626bfb63c4cd4", + "max": 7600, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0504c191fa294f62854e3dc44eba1a1a", + "value": 7600 + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from argilla.utils.telemetry import tutorial_running\n", - " tutorial_running()\n", - "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" - ] + "301a91403585451cad67df96ada457b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "TEyjYZHAIV9h" - }, - "source": [ - "## Make Zero Shot Text Classification predictions using transformers\n", - "\n", - "On HugginFace we choose the model `cross-encoder/nli-distilroberta-base` that is trained to perform zero-shot classification.\n", - "We create a pipeline with this model and then perform prediction.\n", - "\n", - "*note: `device=0` in pipeline() permits to use GPU if you do not have a GPU available delete this parameter*\n", - "\n", - "\n" - ] + "371ebf2451ca4045aa8c7c29aa80b81f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_03cb83f82a494893bb8bb94ea588fb62", + "placeholder": "​", + "style": "IPY_MODEL_f0fab85f8e8d4d1ca46bfbe14d50fe57", + "value": " 80/80 [00:04<00:00, 18.35it/s]" + } }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "UW4am9A7n4mI" - }, - "outputs": [], - "source": [ - "labels =[\"Sports\", \"Sci/Tech\", \"Business\", \"World\"]\n", - "\n", - "pipe = pipeline(\"zero-shot-classification\", model='cross-encoder/nli-distilroberta-base', device=0)\n", - "result = []\n", - "with pipe.device_placement():\n", - " result = pipe(\n", - " [data.text for data in ds_record],\n", - " candidate_labels=labels,\n", - " )" - ] + "4adcf6345d2f48a1b8f912ba2813b701": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_50581d62125c4153b6cc9d3f43a3161e", + "placeholder": "​", + "style": "IPY_MODEL_4b4f86bb0983441288adee5e7a0de959", + "value": "100%" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "BnT8GZmWKl7S" - }, - "source": [ - "Now that predictions are successfully made with the zero-shot model we can transform it into a list of argilla TextClassificationRecord and upload it to our argilla client" - ] + "4b4f86bb0983441288adee5e7a0de959": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 85, - "referenced_widgets": [ - "03352da397fc457fa70dd5e489cc4844", - "9424d0b9953b43638b5f0623ff225d79", - "4e8ec2dc3b564cae937741ac7d47372a", - "58a2528e6a7646089e77174b5ef6d720", - "301a91403585451cad67df96ada457b5", - "b2266a02a7154eb9a7a5ea36734a3902", - "cfb6680ece1946a990572948ecc15941", - "d851b02df22d40528579462ac2649e9c", - "bc75ab7805a041ad91ffcc6cf878212d", - "99ee702176d6453d9df40b1278a3dc0d", - "09a5640c9f9f4d1cb2d320e0f7577469" - ] - }, - "id": "ft7e8RApyW0u", - "outputId": "b7414e09-d2a5-4c8e-9dd2-364b53f8ee70" - }, - "outputs": [], - "source": [ - "zero_shot_news_dataset = [\n", - " rg.TextClassificationRecord(\n", - " text=res[\"sequence\"],\n", - " prediction=list(zip(res['labels'],res['scores'])),\n", - " annotation=record.prediction[0][0],\n", - " ) for res, record in zip(result, ds_record)\n", - "]\n", - "\n", - "rg.log(name=\"zero_shot_news_dataset\", records=zero_shot_news_dataset)" - ] + "4e8ec2dc3b564cae937741ac7d47372a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d851b02df22d40528579462ac2649e9c", + "max": 7600, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bc75ab7805a041ad91ffcc6cf878212d", + "value": 7600 + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "T_weCa-YPAzF" - }, - "source": [ - "You can access the zero_shot_news_dataset in the Argilla UI:\n", - "\n", - "\"Model" - ] + "50581d62125c4153b6cc9d3f43a3161e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "Z7GTj9I9K-mf" - }, - "source": [ - "Finally, we measure the performance of our model using the argilla f1 function that computes the F1 score:" - ] + "58a2528e6a7646089e77174b5ef6d720": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_99ee702176d6453d9df40b1278a3dc0d", + "placeholder": "​", + "style": "IPY_MODEL_09a5640c9f9f4d1cb2d320e0f7577469", + "value": " 7600/7600 [00:31<00:00, 218.52it/s]" + } }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "1iShwCbj3n-l", - "outputId": "b02aa4e4-cdc9-4d07-e2e0-f7d794b45706" - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
\n", - "
\n", - "\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "5ab6d3b8e01b4858bcd2ef38475265c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5d419a4d2acf48cc8b3626bfb63c4cd4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "65f152c3f69f4e0781bea0287d5f8f14": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6fdf42751cd74adf857773c33e2d8e21": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9424d0b9953b43638b5f0623ff225d79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b2266a02a7154eb9a7a5ea36734a3902", + "placeholder": "​", + "style": "IPY_MODEL_cfb6680ece1946a990572948ecc15941", + "value": "100%" + } + }, + "981710df13494b958e9e3fb366bd53d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0ed8954de1e0470a87bba037516159ce", + "placeholder": "​", + "style": "IPY_MODEL_ef745b03cfec4cd793b852d29185d042", + "value": " 1/1 [00:04<00:00, 4.40s/it]" + } + }, + "99ee702176d6453d9df40b1278a3dc0d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d7425ebb4854fc4b4c957a7a8805b0f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4adcf6345d2f48a1b8f912ba2813b701", + "IPY_MODEL_273687d63b794ce3982fcc4b32dc40ac", + "IPY_MODEL_ef39075183f74473bbfcfb08af09c484" ], - "source": [ - "f1_zero_shot = f1(\"zero_shot_news_dataset\")\n", - "f1_zero_shot.visualize()" - ] + "layout": "IPY_MODEL_d91f02b4b9aa43ebaa6be94fb5465ada" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "l4gY2nuk2c0G" - }, - "source": [ - "## Make zero-shot text classification using a trained SetFit classifier" - ] + "9f3f65b2cc274246ba55ca32bef5fc10": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The imports needed:" - ] + "9f6b243e854d40de8339d5920ea9b2c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cb9c3a0c0ba04bc6a062e696ec4616b7", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c7ba9a5b20fc4af2b2a044585e93e5ec", + "value": 1 + } }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "n5UcoG5l3lRy" - }, - "outputs": [], - "source": [ - "from setfit import SetFitModel, SetFitTrainer, get_templated_dataset" - ] + "a9eb439d911346c1bc523d1719f96c72": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_14e4c79dd65d4fafb02701e775873e2a", + "placeholder": "​", + "style": "IPY_MODEL_cf2c6b3aa42343a1b6ea765a17b133e5", + "value": "Iteration: 100%" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We create a synthetic dataset of training examples using our dataset's labels" - ] + "b2266a02a7154eb9a7a5ea36734a3902": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "id": "8DTm1BqI2dZp" - }, - "outputs": [], - "source": [ - "labels = [\"Sports\", \"Sci/Tech\", \"Business\", \"World\"]\n", - "train_dataset = get_templated_dataset(\n", - " candidate_labels=labels,\n", - " sample_size=8,\n", - " template=\"The news article is about {}\"\n", - ")" - ] + "bc75ab7805a041ad91ffcc6cf878212d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We train a SetFitModel using the pretrained model 'all-MiniLM-L6-v2'" - ] + "c7ba9a5b20fc4af2b2a044585e93e5ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 244, - "referenced_widgets": [ - "e90626dee9ad4610a2d3b04c5aa7cfd8", - "f249c3c6f884440db96d66715cd48247", - "9f6b243e854d40de8339d5920ea9b2c8", - "981710df13494b958e9e3fb366bd53d4", - "269c0b2820b44ba7844f451dc6b7ce62", - "d4bbeddf2bf04fc88c02995657c58410", - "5ab6d3b8e01b4858bcd2ef38475265c0", - "cb9c3a0c0ba04bc6a062e696ec4616b7", - "c7ba9a5b20fc4af2b2a044585e93e5ec", - "0ed8954de1e0470a87bba037516159ce", - "ef745b03cfec4cd793b852d29185d042", - "f773cd8ad7df481e9e606e245c37c575", - "a9eb439d911346c1bc523d1719f96c72", - "03fc89e7ed73469f9641f0e27ff60920", - "371ebf2451ca4045aa8c7c29aa80b81f", - "ffc76bd466ed46518d5511ceb0cb9086", - "14e4c79dd65d4fafb02701e775873e2a", - "cf2c6b3aa42343a1b6ea765a17b133e5", - "65f152c3f69f4e0781bea0287d5f8f14", - "6fdf42751cd74adf857773c33e2d8e21", - "03cb83f82a494893bb8bb94ea588fb62", - "f0fab85f8e8d4d1ca46bfbe14d50fe57" - ] - }, - "id": "YtLxfwJd7u5c", - "outputId": "1855f46b-e01c-4f39-99af-166d5e9b944c" - }, - "outputs": [], - "source": [ - "model = SetFitModel.from_pretrained(\"all-MiniLM-L6-v2\")\n", - "trainer = SetFitTrainer(\n", - " model=model,\n", - " train_dataset=train_dataset\n", - ")\n", - "trainer.train()" - ] + "cb9c3a0c0ba04bc6a062e696ec4616b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are then able to compute the text classification: " - ] + "cf2c6b3aa42343a1b6ea765a17b133e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "id": "ytsi4_No0_pd" - }, - "outputs": [], - "source": [ - "result = [{\n", - " 'sequence': data[\"text\"],\n", - " 'scores': model.predict_proba([data[\"text\"]]).squeeze().numpy(),\n", - " 'labels': labels\n", - " } for data in news_dataset] " - ] + "cfb6680ece1946a990572948ecc15941": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we can log the result dataset into Argilla and compute the F1 score:" - ] + "d4bbeddf2bf04fc88c02995657c58410": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 85, - "referenced_widgets": [ - "9d7425ebb4854fc4b4c957a7a8805b0f", - "4adcf6345d2f48a1b8f912ba2813b701", - "273687d63b794ce3982fcc4b32dc40ac", - "ef39075183f74473bbfcfb08af09c484", - "d91f02b4b9aa43ebaa6be94fb5465ada", - "50581d62125c4153b6cc9d3f43a3161e", - "4b4f86bb0983441288adee5e7a0de959", - "5d419a4d2acf48cc8b3626bfb63c4cd4", - "0504c191fa294f62854e3dc44eba1a1a", - "9f3f65b2cc274246ba55ca32bef5fc10", - "ff70550ed86146049a48faae2f9bf134" - ] - }, - "id": "21X5laS15hxa", - "outputId": "517832f5-f52c-40df-fd15-38341ce792a7" - }, - "outputs": [], - "source": [ - "setfit_zero_shot_news_dataset = [\n", - " rg.TextClassificationRecord(\n", - " text=res[\"sequence\"],\n", - " prediction=list(zip(res['labels'],res['scores'])),\n", - " annotation=record.prediction[0][0],\n", - " ) for res, record in zip(result, ds_record)\n", - "]\n", - "rg.log(name=\"setfit_zero_shot_news_dataset\", records=setfit_zero_shot_news_dataset)" - ] + "d851b02df22d40528579462ac2649e9c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can access the setfit_zero_shot_news_dataset in the Argilla UI:\n", - "\n", - "\"Model" - ] + "d91f02b4b9aa43ebaa6be94fb5465ada": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "uCQeM8V35w1Q", - "outputId": "0fdcae45-0cfa-4674-f3ab-ea730da7d8f8" - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
\n", - "
\n", - "\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "e90626dee9ad4610a2d3b04c5aa7cfd8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f249c3c6f884440db96d66715cd48247", + "IPY_MODEL_9f6b243e854d40de8339d5920ea9b2c8", + "IPY_MODEL_981710df13494b958e9e3fb366bd53d4" ], - "source": [ - "f1_setfit_zero_shot = f1(\"setfit_zero_shot_news_dataset\")\n", - "f1_setfit_zero_shot.visualize()" - ] + "layout": "IPY_MODEL_269c0b2820b44ba7844f451dc6b7ce62" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "3rH58lEpOPQt" - }, - "source": [ - "Now that we have computed the F1 score for each model with can create a comparison table:\n", - "\n" - ] + "ef39075183f74473bbfcfb08af09c484": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9f3f65b2cc274246ba55ca32bef5fc10", + "placeholder": "​", + "style": "IPY_MODEL_ff70550ed86146049a48faae2f9bf134", + "value": " 7600/7600 [00:34<00:00, 167.51it/s]" + } }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "id": "NJ6X5SehqYzX" - }, - "outputs": [], - "source": [ - "f_score = list(f1_setfit_zero_shot.data.keys())\n", - "f1_setfit_zero_shot_values = list(f1_setfit_zero_shot.data.values())\n", - "f1_zero_shot_values = list(f1_zero_shot.data.values())\n", - "\n", - "unnecessary_labels = [\"Sports_recall\", \"World_recall\", \"\"]\n", - "\n", - "df_results = pd.DataFrame({\"f_score\": f_score, \"zero-shot classification\": f1_zero_shot_values, \"zero-shot SetFit classification\": f1_setfit_zero_shot_values})" - ] + "ef745b03cfec4cd793b852d29185d042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 739 - }, - "id": "xvv8J-VBrzVE", - "outputId": "07a04080-a989-4e3d-fd80-d12c4a078078" - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
f_scorezero-shot classificationzero-shot SetFit classification
0precision_macro0.5177540.663322
1recall_macro0.5296050.668816
2f1_macro0.5144830.663725
3precision_micro0.5296050.668816
4recall_micro0.5296050.668816
5f1_micro0.5296050.668816
6Sci/Tech_precision0.4769500.556291
7Sci/Tech_recall0.2831580.530526
8Sci/Tech_f10.3553500.543103
9Sci/Tech_support11400.0000007600.000000
10World_precision0.3679090.663734
11World_recall0.3584210.555789
12World_f10.3631030.604984
13World_support11400.0000007600.000000
14Business_precision0.4492270.620098
15Business_recall0.5657890.665789
16Business_f10.5008150.642132
17Business_support11400.0000007600.000000
18Sports_precision0.7769300.813166
19Sports_recall0.9110530.923158
20Sports_f10.8386630.864678
21Sports_support11400.0000007600.000000
\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n", - " " - ], - "text/plain": [ - " f_score zero-shot classification \\\n", - "0 precision_macro 0.517754 \n", - "1 recall_macro 0.529605 \n", - "2 f1_macro 0.514483 \n", - "3 precision_micro 0.529605 \n", - "4 recall_micro 0.529605 \n", - "5 f1_micro 0.529605 \n", - "6 Sci/Tech_precision 0.476950 \n", - "7 Sci/Tech_recall 0.283158 \n", - "8 Sci/Tech_f1 0.355350 \n", - "9 Sci/Tech_support 11400.000000 \n", - "10 World_precision 0.367909 \n", - "11 World_recall 0.358421 \n", - "12 World_f1 0.363103 \n", - "13 World_support 11400.000000 \n", - "14 Business_precision 0.449227 \n", - "15 Business_recall 0.565789 \n", - "16 Business_f1 0.500815 \n", - "17 Business_support 11400.000000 \n", - "18 Sports_precision 0.776930 \n", - "19 Sports_recall 0.911053 \n", - "20 Sports_f1 0.838663 \n", - "21 Sports_support 11400.000000 \n", - "\n", - " zero-shot SetFit classification \n", - "0 0.663322 \n", - "1 0.668816 \n", - "2 0.663725 \n", - "3 0.668816 \n", - "4 0.668816 \n", - "5 0.668816 \n", - "6 0.556291 \n", - "7 0.530526 \n", - "8 0.543103 \n", - "9 7600.000000 \n", - "10 0.663734 \n", - "11 0.555789 \n", - "12 0.604984 \n", - "13 7600.000000 \n", - "14 0.620098 \n", - "15 0.665789 \n", - "16 0.642132 \n", - "17 7600.000000 \n", - "18 0.813166 \n", - "19 0.923158 \n", - "20 0.864678 \n", - "21 7600.000000 " - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_results" - ] + "f0fab85f8e8d4d1ca46bfbe14d50fe57": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "oGi3_YgFty_0" - }, - "source": [ - "*Results interpretation:* Without any hesitation the zero-shot classification using SetFit model is the more effective one. The F1 score for each class is better.\n", - "\n", - "The best-predicted class for both classifiers is **Sports**." - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "provenance": [] + "f249c3c6f884440db96d66715cd48247": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d4bbeddf2bf04fc88c02995657c58410", + "placeholder": "​", + "style": "IPY_MODEL_5ab6d3b8e01b4858bcd2ef38475265c0", + "value": "Epoch: 100%" + } }, - "gpuClass": "standard", - "kernelspec": { - "display_name": "Python 3", - "name": "python3" + "f773cd8ad7df481e9e606e245c37c575": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a9eb439d911346c1bc523d1719f96c72", + "IPY_MODEL_03fc89e7ed73469f9641f0e27ff60920", + "IPY_MODEL_371ebf2451ca4045aa8c7c29aa80b81f" + ], + "layout": "IPY_MODEL_ffc76bd466ed46518d5511ceb0cb9086" + } }, - "language_info": { - "name": "python" + "ff70550ed86146049a48faae2f9bf134": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "03352da397fc457fa70dd5e489cc4844": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9424d0b9953b43638b5f0623ff225d79", - "IPY_MODEL_4e8ec2dc3b564cae937741ac7d47372a", - "IPY_MODEL_58a2528e6a7646089e77174b5ef6d720" - ], - "layout": "IPY_MODEL_301a91403585451cad67df96ada457b5" - } - }, - "03cb83f82a494893bb8bb94ea588fb62": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "03fc89e7ed73469f9641f0e27ff60920": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_65f152c3f69f4e0781bea0287d5f8f14", - "max": 80, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_6fdf42751cd74adf857773c33e2d8e21", - "value": 80 - } - }, - "0504c191fa294f62854e3dc44eba1a1a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "09a5640c9f9f4d1cb2d320e0f7577469": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0ed8954de1e0470a87bba037516159ce": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "14e4c79dd65d4fafb02701e775873e2a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "269c0b2820b44ba7844f451dc6b7ce62": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "273687d63b794ce3982fcc4b32dc40ac": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5d419a4d2acf48cc8b3626bfb63c4cd4", - "max": 7600, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0504c191fa294f62854e3dc44eba1a1a", - "value": 7600 - } - }, - "301a91403585451cad67df96ada457b5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "371ebf2451ca4045aa8c7c29aa80b81f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_03cb83f82a494893bb8bb94ea588fb62", - "placeholder": "​", - "style": "IPY_MODEL_f0fab85f8e8d4d1ca46bfbe14d50fe57", - "value": " 80/80 [00:04<00:00, 18.35it/s]" - } - }, - "4adcf6345d2f48a1b8f912ba2813b701": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_50581d62125c4153b6cc9d3f43a3161e", - "placeholder": "​", - "style": "IPY_MODEL_4b4f86bb0983441288adee5e7a0de959", - "value": "100%" - } - }, - "4b4f86bb0983441288adee5e7a0de959": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "4e8ec2dc3b564cae937741ac7d47372a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d851b02df22d40528579462ac2649e9c", - "max": 7600, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_bc75ab7805a041ad91ffcc6cf878212d", - "value": 7600 - } - }, - "50581d62125c4153b6cc9d3f43a3161e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "58a2528e6a7646089e77174b5ef6d720": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_99ee702176d6453d9df40b1278a3dc0d", - "placeholder": "​", - "style": "IPY_MODEL_09a5640c9f9f4d1cb2d320e0f7577469", - "value": " 7600/7600 [00:31<00:00, 218.52it/s]" - } - }, - "5ab6d3b8e01b4858bcd2ef38475265c0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5d419a4d2acf48cc8b3626bfb63c4cd4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "65f152c3f69f4e0781bea0287d5f8f14": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6fdf42751cd74adf857773c33e2d8e21": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "9424d0b9953b43638b5f0623ff225d79": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b2266a02a7154eb9a7a5ea36734a3902", - "placeholder": "​", - "style": "IPY_MODEL_cfb6680ece1946a990572948ecc15941", - "value": "100%" - } - }, - "981710df13494b958e9e3fb366bd53d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0ed8954de1e0470a87bba037516159ce", - "placeholder": "​", - "style": "IPY_MODEL_ef745b03cfec4cd793b852d29185d042", - "value": " 1/1 [00:04<00:00, 4.40s/it]" - } - }, - "99ee702176d6453d9df40b1278a3dc0d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9d7425ebb4854fc4b4c957a7a8805b0f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_4adcf6345d2f48a1b8f912ba2813b701", - "IPY_MODEL_273687d63b794ce3982fcc4b32dc40ac", - "IPY_MODEL_ef39075183f74473bbfcfb08af09c484" - ], - "layout": "IPY_MODEL_d91f02b4b9aa43ebaa6be94fb5465ada" - } - }, - "9f3f65b2cc274246ba55ca32bef5fc10": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9f6b243e854d40de8339d5920ea9b2c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_cb9c3a0c0ba04bc6a062e696ec4616b7", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_c7ba9a5b20fc4af2b2a044585e93e5ec", - "value": 1 - } - }, - "a9eb439d911346c1bc523d1719f96c72": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_14e4c79dd65d4fafb02701e775873e2a", - "placeholder": "​", - "style": "IPY_MODEL_cf2c6b3aa42343a1b6ea765a17b133e5", - "value": "Iteration: 100%" - } - }, - "b2266a02a7154eb9a7a5ea36734a3902": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bc75ab7805a041ad91ffcc6cf878212d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c7ba9a5b20fc4af2b2a044585e93e5ec": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "cb9c3a0c0ba04bc6a062e696ec4616b7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cf2c6b3aa42343a1b6ea765a17b133e5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "cfb6680ece1946a990572948ecc15941": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d4bbeddf2bf04fc88c02995657c58410": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d851b02df22d40528579462ac2649e9c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d91f02b4b9aa43ebaa6be94fb5465ada": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e90626dee9ad4610a2d3b04c5aa7cfd8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_f249c3c6f884440db96d66715cd48247", - "IPY_MODEL_9f6b243e854d40de8339d5920ea9b2c8", - "IPY_MODEL_981710df13494b958e9e3fb366bd53d4" - ], - "layout": "IPY_MODEL_269c0b2820b44ba7844f451dc6b7ce62" - } - }, - "ef39075183f74473bbfcfb08af09c484": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9f3f65b2cc274246ba55ca32bef5fc10", - "placeholder": "​", - "style": "IPY_MODEL_ff70550ed86146049a48faae2f9bf134", - "value": " 7600/7600 [00:34<00:00, 167.51it/s]" - } - }, - "ef745b03cfec4cd793b852d29185d042": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f0fab85f8e8d4d1ca46bfbe14d50fe57": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f249c3c6f884440db96d66715cd48247": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d4bbeddf2bf04fc88c02995657c58410", - "placeholder": "​", - "style": "IPY_MODEL_5ab6d3b8e01b4858bcd2ef38475265c0", - "value": "Epoch: 100%" - } - }, - "f773cd8ad7df481e9e606e245c37c575": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_a9eb439d911346c1bc523d1719f96c72", - "IPY_MODEL_03fc89e7ed73469f9641f0e27ff60920", - "IPY_MODEL_371ebf2451ca4045aa8c7c29aa80b81f" - ], - "layout": "IPY_MODEL_ffc76bd466ed46518d5511ceb0cb9086" - } - }, - "ff70550ed86146049a48faae2f9bf134": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ffc76bd466ed46518d5511ceb0cb9086": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } + "ffc76bd466ed46518d5511ceb0cb9086": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials/notebooks/monitoring-textclassification-shaptransformersinterpret-explainability.ipynb b/docs/_source/tutorials/notebooks/monitoring-textclassification-shaptransformersinterpret-explainability.ipynb index e5a67f323a..ea654f1b14 100644 --- a/docs/_source/tutorials/notebooks/monitoring-textclassification-shaptransformersinterpret-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/monitoring-textclassification-shaptransformersinterpret-explainability.ipynb @@ -105,15 +105,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -122,6 +119,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -133,7 +131,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -175,6 +173,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -185,14 +184,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -260,21 +263,25 @@ "# Define the explainer using transformers_interpret\n", "cls_explainer = SequenceClassificationExplainer(model, tokenizer)\n", "\n", + "\n", "# Remove overlapping ##tokens\n", "def merge_word_attributions(word_attributions):\n", - " sentence =[]\n", + " sentence = []\n", " i = 0\n", " for attribution in word_attributions:\n", " word = attribution[0]\n", - " score = attribution[1]\n", - " \n", + " score = attribution[1]\n", + "\n", " if \"##\" in word:\n", - " previous_word = sentence[i-1][0]\n", - " previous_score = sentence[i-1][1]\n", - " sentence[i-1] = (previous_word+ word[2:], previous_score if abs(previous_score) > abs(score) else score)\n", + " previous_word = sentence[i - 1][0]\n", + " previous_score = sentence[i - 1][1]\n", + " sentence[i - 1] = (\n", + " previous_word + word[2:],\n", + " previous_score if abs(previous_score) > abs(score) else score,\n", + " )\n", " else:\n", " sentence.append(attribution)\n", - " i+=1\n", + " i += 1\n", " return sentence\n", "\n", "\n", @@ -338,6 +345,7 @@ "outputs": [], "source": [ "from pygments.token import Text\n", + "\n", "# Let's use a sentiment classifier fine-tuned on sst\n", "model_name = \"distilbert-base-uncased-finetuned-sst-2-english\"\n", "model = AutoModelForSequenceClassification.from_pretrained(model_name)\n", @@ -350,11 +358,7 @@ "\n", "# Transformers pipeline model\n", "pipeline = transformers.pipeline(\n", - " \"sentiment-analysis\", \n", - " model=model, \n", - " tokenizer=tokenizer, \n", - " device=device,\n", - " top_k=None\n", + " \"sentiment-analysis\", model=model, tokenizer=tokenizer, device=device, top_k=None\n", ")\n", "\n", "# Load Stanford treebank dataset only the first 100 records for testing\n", diff --git a/docs/_source/tutorials/notebooks/monitoring-textclassification-transformers-explainability.ipynb b/docs/_source/tutorials/notebooks/monitoring-textclassification-transformers-explainability.ipynb index 7d17bce6f4..72ffb45c6d 100644 --- a/docs/_source/tutorials/notebooks/monitoring-textclassification-transformers-explainability.ipynb +++ b/docs/_source/tutorials/notebooks/monitoring-textclassification-transformers-explainability.ipynb @@ -135,15 +135,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -152,6 +149,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -163,7 +161,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -190,11 +188,12 @@ "from transformers import AutoTokenizer, AutoModelForSequenceClassification\n", "from datasets import load_dataset, Dataset, Features, Value, ClassLabel\n", "from transformers.data.data_collator import DataCollatorWithPadding\n", - "import pandas as pd " + "import pandas as pd" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -205,14 +204,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -246,7 +249,6 @@ }, "outputs": [], "source": [ - "\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "\n", "# Load model and tokenizer\n", @@ -259,10 +261,12 @@ "# Load the training split\n", "ds = load_dataset(\"ag_news\", split=\"train\")\n", "\n", + "\n", "# Tokenize and encode the training set\n", "def tokenize_and_encode(batch):\n", " return tokenizer(batch[\"text\"], truncation=True)\n", "\n", + "\n", "ds_enc = ds.map(tokenize_and_encode, batched=True)" ] }, @@ -296,6 +300,7 @@ "# Create the data collator for inference\n", "data_collator = DataCollatorWithPadding(tokenizer, padding=True)\n", "\n", + "\n", "# Function to compute the loss example-wise\n", "def loss_per_example(batch):\n", " batch = data_collator(batch)\n", @@ -497,7 +502,7 @@ "\n", "# Add the text column removed by the trainer\n", "losses_df[\"text\"] = ds_enc[\"text\"]\n", - "losses_df.sort_values(\"loss\", ascending=False).head(10)\n" + "losses_df.sort_values(\"loss\", ascending=False).head(10)" ] }, { @@ -575,6 +580,7 @@ " annotation_agent=\"ag_news_benchmark\",\n", " )\n", "\n", + "\n", "# If you want to log the full dataset remove the indexing\n", "top_losses = losses_df.sort_values(\"loss\", ascending=False)[0:499]\n", "\n", diff --git a/docs/_source/tutorials/notebooks/ner_fine_tune_bert_beginners.ipynb b/docs/_source/tutorials/notebooks/ner_fine_tune_bert_beginners.ipynb index 4d55a25b92..7f8fd0effd 100644 --- a/docs/_source/tutorials/notebooks/ner_fine_tune_bert_beginners.ipynb +++ b/docs/_source/tutorials/notebooks/ner_fine_tune_bert_beginners.ipynb @@ -1,5094 +1,5110 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "CCsbozBWRESe" - }, - "source": [ - "# 🤔 **Fine-tunning a NER model with BERT for Beginners**\n", - "\n", - "\n", - "Are you a beginner? Do you want to learn, but don't know where to start? In this tutorial, you will learn to fine-tune a pre-trained BERT model for Named Entity Recognition. It will walk you through the following steps:\n", - "\n", - "- 🚀 Load your training dataset into Argilla and explore it using its tools.\n", - "- ⏳ Preprocess the data to generate the other inputs required by the model, and put them in a format that the model expects.\n", - "- 🔍 Download the BERT model and start to fine-tune it.\n", - "- 🧪 Perform your own tests!" - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "CCsbozBWRESe" + }, + "source": [ + "# 🤔 **Fine-tunning a NER model with BERT for Beginners**\n", + "\n", + "\n", + "Are you a beginner? Do you want to learn, but don't know where to start? In this tutorial, you will learn to fine-tune a pre-trained BERT model for Named Entity Recognition. It will walk you through the following steps:\n", + "\n", + "- 🚀 Load your training dataset into Argilla and explore it using its tools.\n", + "- ⏳ Preprocess the data to generate the other inputs required by the model, and put them in a format that the model expects.\n", + "- 🔍 Download the BERT model and start to fine-tune it.\n", + "- 🧪 Perform your own tests!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "10I7EROxWPqy" + }, + "source": [ + "\"NER\"\n"," + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gs0Vhje60q4p" + }, + "source": [ + "## Introduction\n", + "\n", + "Our goal is to show from a trainig dataset how to fine-tune a **tiny BERT model** in order to identify **NER** tags.\n", + "\n", + "For this purpose, we will first connect to Argilla and log our [dataset](https://huggingface.co/datasets/argilla/spacy_sm_wnut17), so that we can analyse it in a more visual way.\n", + "\n", + ">💡 **Tip:** If you want to try with a different dataset than the one in this tutorial, but it's not yet annotated, Argilla has several tutorials on how to do it [manually](/practical_guides/annotate_dataset.html) or [automatically](https://docs.v1.argilla.io/en/latest/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.html#Appendix:-Log-datasets-to-the-Hugging-Face-Hub).\n", + "\n", + "\n", + "Next, we will preprocess our dataset and fine-tune the model. Here we will be using [DistilBERT](https://huggingface.co/docs/transformers/model_doc/distilbert), to make it easier to understand it and start *playing* with the parameters easily. However, there are still plenty of similar ones to [discover](https://huggingface.co/docs/transformers/index#bigtable).\n", + "\n", + "✨Let's get started!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WnKU83tp0q4q" + }, + "source": [ + "## Running Argilla\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", + "\n", + "1. [Deploy Argilla on Hugging Face Spaces](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla): This is the fastest option and the recommended choice for connecting to external notebooks (e.g., Google Colab) if you have an account on Hugging Face.\n", + "\n", + "

\n", + " \n", + " \"deploy\n", + " \n", + "

\n", + "\n", + "2. [Launch Argilla using Argilla's quickstart Docker image](../../getting_started/quickstart.ipynb): This is the recommended option if you want Argilla running on your local machine. Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", + "\n", + "For more information on deployment options, please check the Deployment section of the documentation.\n", + "\n", + "
\n", + "\n", + ">🤯 **Tip**\n", + "\n", + "> This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KBaIylKyh1mF" + }, + "source": [ + "## Setup\n", + "\n", + "For this tutorial, you'll need to install the Argilla client and a few third party libraries using `pip`:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "80Xv9vqx0q4r", + "outputId": "1aa71f15-ed36-4feb-c909-5c7feaeb638e" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "10I7EROxWPqy" - }, - "source": [ - "\"NER\"\n"," - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m11.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.5/71.5 kB\u001b[0m \u001b[31m8.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m238.1/238.1 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m55.5/55.5 kB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m214.7/214.7 kB\u001b[0m \u001b[31m14.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m385.3/385.3 kB\u001b[0m \u001b[31m17.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.9/56.9 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.6/51.6 kB\u001b[0m \u001b[31m7.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m45.7/45.7 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m525.6/525.6 kB\u001b[0m \u001b[31m18.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m69.9/69.9 kB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.7/2.7 MB\u001b[0m \u001b[31m25.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m59.5/59.5 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m33.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m64.3/64.3 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m69.6/69.6 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.1/143.1 kB\u001b[0m \u001b[31m19.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m593.7/593.7 kB\u001b[0m \u001b[31m29.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m142.9/142.9 kB\u001b[0m \u001b[31m20.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.1/51.1 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m428.8/428.8 kB\u001b[0m \u001b[31m36.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.1/4.1 MB\u001b[0m \u001b[31m49.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m50.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.9/129.9 kB\u001b[0m \u001b[31m16.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting datasets\n", + " Downloading datasets-2.14.4-py3-none-any.whl (519 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m519.3/519.3 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.23.5)\n", + "Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (9.0.0)\n", + "Collecting dill<0.3.8,>=0.3.0 (from datasets)\n", + " Downloading dill-0.3.7-py3-none-any.whl (115 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m14.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (1.5.3)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.66.1)\n", + "Collecting xxhash (from datasets)\n", + " Downloading xxhash-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m22.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting multiprocess (from datasets)\n", + " Downloading multiprocess-0.70.15-py310-none-any.whl (134 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m18.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (2023.6.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.8.5)\n", + "Collecting huggingface-hub<1.0.0,>=0.14.0 (from datasets)\n", + " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m35.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (23.1)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (23.1.0)\n", + "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (3.2.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (4.0.3)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.9.2)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.4.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0.0,>=0.14.0->datasets) (3.12.2)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0.0,>=0.14.0->datasets) (4.7.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2023.7.22)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2023.3)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->datasets) (1.16.0)\n", + "Installing collected packages: xxhash, dill, multiprocess, huggingface-hub, datasets\n", + "Successfully installed datasets-2.14.4 dill-0.3.7 huggingface-hub-0.16.4 multiprocess-0.70.15 xxhash-3.3.0\n", + "Collecting transformers\n", + " Downloading transformers-4.33.0-py3-none-any.whl (7.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m19.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.12.2)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.15.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.16.4)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.23.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (23.1)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.1)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2023.6.3)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.31.0)\n", + "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1 (from transformers)\n", + " Downloading tokenizers-0.13.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m48.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers)\n", + " Downloading safetensors-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m53.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.66.1)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers) (2023.6.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers) (4.7.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.2.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2023.7.22)\n", + "Installing collected packages: tokenizers, safetensors, transformers\n", + "Successfully installed safetensors-0.3.3 tokenizers-0.13.3 transformers-4.33.0\n", + "Collecting evaluate\n", + " Downloading evaluate-0.4.0-py3-none-any.whl (81 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m81.4/81.4 kB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: datasets>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.14.4)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.23.5)\n", + "Requirement already satisfied: dill in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.3.7)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.5.3)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from evaluate) (4.66.1)\n", + "Requirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.3.0)\n", + "Requirement already satisfied: multiprocess in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.70.15)\n", + "Requirement already satisfied: fsspec[http]>=2021.05.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2023.6.0)\n", + "Requirement already satisfied: huggingface-hub>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.16.4)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from evaluate) (23.1)\n", + "Collecting responses<0.19 (from evaluate)\n", + " Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n", + "Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (9.0.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.8.5)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (6.0.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (3.12.2)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (4.7.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.2.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2023.7.22)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2023.3)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (23.1.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (4.0.3)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.9.2)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.4.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.3.1)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->evaluate) (1.16.0)\n", + "Installing collected packages: responses, evaluate\n", + "Successfully installed evaluate-0.4.0 responses-0.18.0\n", + "Collecting seqeval\n", + " Downloading seqeval-1.2.2.tar.gz (43 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.6/43.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.10/dist-packages (from seqeval) (1.23.5)\n", + "Requirement already satisfied: scikit-learn>=0.21.3 in /usr/local/lib/python3.10/dist-packages (from seqeval) (1.2.2)\n", + "Requirement already satisfied: scipy>=1.3.2 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.10.1)\n", + "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.3.2)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (3.2.0)\n", + "Building wheels for collected packages: seqeval\n", + " Building wheel for seqeval (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for seqeval: filename=seqeval-1.2.2-py3-none-any.whl size=16162 sha256=a3e4deed0ae4f82793ec07d332ea0faca9b72401ac85aa8047235d5fec9ef8ce\n", + " Stored in directory: /root/.cache/pip/wheels/1a/67/4a/ad4082dd7dfc30f2abfe4d80a2ed5926a506eb8a972b4767fa\n", + "Successfully built seqeval\n", + "Installing collected packages: seqeval\n", + "Successfully installed seqeval-1.2.2\n", + "Requirement already satisfied: transformers[torch] in /usr/local/lib/python3.10/dist-packages (4.33.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (3.12.2)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.15.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.16.4)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (1.23.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (23.1)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (6.0.1)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2023.6.3)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2.31.0)\n", + "Requirement already satisfied: tokenizers!=0.11.3,<0.14,>=0.11.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.13.3)\n", + "Requirement already satisfied: safetensors>=0.3.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.3.3)\n", + "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (4.66.1)\n", + "Requirement already satisfied: torch!=1.12.0,>=1.10 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2.0.1+cu118)\n", + "Collecting accelerate>=0.20.3 (from transformers[torch])\n", + " Downloading accelerate-0.22.0-py3-none-any.whl (251 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m251.2/251.2 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate>=0.20.3->transformers[torch]) (5.9.5)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers[torch]) (2023.6.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers[torch]) (4.7.1)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (3.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (3.1.2)\n", + "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (2.0.0)\n", + "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch!=1.12.0,>=1.10->transformers[torch]) (3.27.2)\n", + "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch!=1.12.0,>=1.10->transformers[torch]) (16.0.6)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (3.2.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (1.26.16)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (2023.7.22)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch!=1.12.0,>=1.10->transformers[torch]) (2.1.3)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch!=1.12.0,>=1.10->transformers[torch]) (1.3.0)\n", + "Installing collected packages: accelerate\n", + "Successfully installed accelerate-0.22.0\n", + "Requirement already satisfied: accelerate in /usr/local/lib/python3.10/dist-packages (0.22.0)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from accelerate) (1.23.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (23.1)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate) (5.9.5)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from accelerate) (6.0.1)\n", + "Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (2.0.1+cu118)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.12.2)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (4.7.1)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1.2)\n", + "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (2.0.0)\n", + "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.10.0->accelerate) (3.27.2)\n", + "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.10.0->accelerate) (16.0.6)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.10.0->accelerate) (2.1.3)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.10.0->accelerate) (1.3.0)\n" + ] + } + ], + "source": [ + "%pip install \"argilla[server]==1.5.0\" -qqq\n", + "%pip install datasets\n", + "%pip install transformers\n", + "%pip install evaluate\n", + "%pip install seqeval\n", + "%pip install transformers[torch]\n", + "%pip install accelerate -U" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PhoCuW7y0q4s" + }, + "source": [ + "Let's import the Argilla module for reading and writing data:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "bZ5IcIyG0q4t" + }, + "outputs": [], + "source": [ + "import argilla as rg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IO241Tyq0q4t" + }, + "source": [ + "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "5Olsh_SY0q4t" + }, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "# Replace workspace with the name of your workspace\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# # Replace workspace with the name of your workspace\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"owner.apikey\",\n", + "# workspace=\"admin\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LKgEhWk70q4u" + }, + "source": [ + "Finally, let's include the imports we need:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "gW09SGfn0q4u" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import random\n", + "import evaluate\n", + "import transformers\n", + "import numpy as np\n", + "import torch\n", + "import pickle\n", + "\n", + "from datasets import load_dataset, ClassLabel, Sequence\n", + "from argilla.metrics.token_classification import top_k_mentions\n", + "from argilla.metrics.token_classification.metrics import Annotations\n", + "from IPython.display import display, HTML\n", + "from sklearn.model_selection import train_test_split\n", + "from transformers import (\n", + " AutoTokenizer,\n", + " AutoModelForTokenClassification,\n", + " TrainingArguments,\n", + " Trainer,\n", + " DataCollatorForTokenClassification,\n", + " pipeline,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n40-m2PXmcM4" + }, + "source": [ + "## 🚀 Exploring our dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6KIAb_u4v8vL" + }, + "source": [ + "First, we will load the train of our dataset from HuggingFace in order to explore it using ``load_dataset``. And, as we can see, it has 119 entries and two columns: one with the sequence of tokens and the other with the sequence of NER tags." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241, + "referenced_widgets": [ + "99e5a771b1c94d74bf5c3e70e15ad09f", + "acf78f08f05043cdb3273d5c92c0df31", + "f0b531f225234f79b4ead2fad8fe2751", + "6f5f5d31a6f749158440b374c0950f64", + "00b9010d8b794a7594813f6894e5abfd", + "367c275138534c858c9313a36e154b10", + "7cb7ee5d7ee245e0a45520ba3a813f0c", + "7dc978907a3b435f98cfe63107929efd", + "a87aec084388404a904b5e214f60eacc", + "194082cd09ec44f2941f3f76134fb96c", + "c65d24e786c34452ad44f04fa87a5131", + "082f49ae0ab64400aedb4a8f88936285", + "df53731b5ee5449d905f0a8e9ed0979f", + "4c695ba86c6c469ea313a0080dea76bd", + "41057edf94144db5933b68ac821ae98a", + "1d2943840f294a57b1e3636555a4e25d", + "0f26cdb761b74c58b5002d3e592df69a", + "34c747c3411d48a5be4d7b858c7f1897", + "01e3c0d891154f3c8a94c9d2b5dd9bc9", + "150aa7a7933b44edb0110f53602fe1a9", + "b9d99330970c43db9a803bad08e87686", + "35b994f5411444a2a6800072017013df", + "a6739364524849378c94c89a72083871", + "9de0c934fe3c48169110a5e9c44cf67a", + "1f1ac3e94d9a482c863fcca0b3ffd976", + "fb746c052b884ddfa5d47ab3e925a790", + "3e15aa279b304b3a81176762a144efee", + "ca226c7464284dd8ac497a021cb2cd79", + "d8e4d43b5dac4b859fd77ab1c63cee7e", + "23e87cd64e544db290cee8a8e491aaa6", + "533d34aac5984fcdac3599d217a19269", + "0e1f107885b446e484e10d7c2bb3148d", + "d831eeae6fce4c1e952d3dddff336c44", + "ac97b8345ac449b6aeb13f3815ba614e", + "34209e5556f045d1a8dcd42799cd5b07", + "0913a4edc88e46e1bcb78a2eef6dbacd", + "a8491ebf827e4829911cdb6f129dbd9b", + "297762bdcf7a40da868faba7ba524f33", + "34eb03a9d5154fc5994a57a432241dbd", + "70ac8fda9db8482aa23d1412f1026303", + "902d902b20c449a4aec44d90c66a44d9", + "5434b0b2eebf4d56a4e1b54875582166", + "4784d47e7f1140e29e97b9232d95e39d", + "9db8cd674fa343c68c4cdea7728bc508", + "18d8e0b8ddeb43f098437dbe8de71d63", + "9b1f8961077d4cb895858f069b901d6b", + "6a624ed9e6ed4e2d88b05578d1f44060", + "97f3c530ddea4d2a92fd24a7bd1f36f4", + "5b42770f877d40f9bb9054a642de3b02", + "d19247d43efa4f5395479c0091908812", + "6a31b14c2db641a8881bca8a33b59c54", + "488568ad39a54008bdb9a4b6f09f7952", + "0b3e30198b7e49c581a5f438f23fce59", + "bac5002e328b47e29605b584e8f3d35c", + "70bcb268780e439098031084dff765e2", + "65fe01641cca423facc645cba13f35cd", + "9b067923d08f496cb2bad20ad7ef4697", + "366b9176dec742589ed7b423bf51b492", + "f7cbcbd2d4594c6bae7c1f9aaf5d9106", + "f2644660164f44b38a05172b51459ec1", + "1c1c5e928d4641ac93cec178438487c0", + "219a467d434248128c8e91cec11b7a16", + "fc092df95b51432c9836b3e0ba7234f1", + "130efa006fb44ef5948ee6ee4f66882f", + "1b4b6a31b84641308d77ab04fc85912e", + "3fd2f15677bc4cb9adc119c6158d0ec0", + "59a012d1a99a4aa4b88cc76e83787e56", + "203df8ab6cc948c69ed8469eac9de357", + "3243d051548c4996b10c970f582fe9f7", + "4ded40486ee64bdb874906972b9deec8", + "ffdadb62b0d74b1ea816cbb1bb924d2e", + "8412fa5c43c44b02ae2693e62705385c", + "9b7068fd51bb463e88e65803dbbbbade", + "a3d8351283934fdcb6c57470a12df1a1", + "4831180eb2214af081dfc1469f6c4021", + "63701b6fe5d34289bb9bb55da3aa8c49", + "00d55e9d9f08467e81a5b77fdaa35c07" + ] }, + "id": "s_e7D8paZFDq", + "outputId": "cbe1688f-b354-4205-aabd-edfa5dac9374" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "gs0Vhje60q4p" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "99e5a771b1c94d74bf5c3e70e15ad09f", + "version_major": 2, + "version_minor": 0 }, - "source": [ - "## Introduction\n", - "\n", - "Our goal is to show from a trainig dataset how to fine-tune a **tiny BERT model** in order to identify **NER** tags.\n", - "\n", - "For this purpose, we will first connect to Argilla and log our [dataset](https://huggingface.co/datasets/argilla/spacy_sm_wnut17), so that we can analyse it in a more visual way.\n", - "\n", - ">💡 **Tip:** If you want to try with a different dataset than the one in this tutorial, but it's not yet annotated, Argilla has several tutorials on how to do it [manually](/practical_guides/annotate_dataset.html) or [automatically](https://docs.v1.argilla.io/en/latest/tutorials/notebooks/labelling-tokenclassification-spacy-pretrained.html#Appendix:-Log-datasets-to-the-Hugging-Face-Hub).\n", - "\n", - "\n", - "Next, we will preprocess our dataset and fine-tune the model. Here we will be using [DistilBERT](https://huggingface.co/docs/transformers/model_doc/distilbert), to make it easier to understand it and start *playing* with the parameters easily. However, there are still plenty of similar ones to [discover](https://huggingface.co/docs/transformers/index#bigtable).\n", - "\n", - "✨Let's get started!" + "text/plain": [ + "Downloading readme: 0%| | 0.00/1.29k [00:00\n", - " \n", - " \"deploy\n", - " \n", - "

\n", - "\n", - "2. [Launch Argilla using Argilla's quickstart Docker image](../../getting_started/quickstart.ipynb): This is the recommended option if you want Argilla running on your local machine. Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", - "\n", - "For more information on deployment options, please check the Deployment section of the documentation.\n", - "\n", - "
\n", - "\n", - ">🤯 **Tip**\n", - "\n", - "> This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "
\n" + "text/plain": [ + "Downloading data files: 0%| | 0/2 [00:00=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.23.5)\n", - "Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (9.0.0)\n", - "Collecting dill<0.3.8,>=0.3.0 (from datasets)\n", - " Downloading dill-0.3.7-py3-none-any.whl (115 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m14.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (1.5.3)\n", - "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.31.0)\n", - "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.66.1)\n", - "Collecting xxhash (from datasets)\n", - " Downloading xxhash-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m22.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting multiprocess (from datasets)\n", - " Downloading multiprocess-0.70.15-py310-none-any.whl (134 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m18.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (2023.6.0)\n", - "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.8.5)\n", - "Collecting huggingface-hub<1.0.0,>=0.14.0 (from datasets)\n", - " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m35.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (23.1)\n", - "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.1)\n", - "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (23.1.0)\n", - "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (3.2.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.0.4)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (4.0.3)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.9.2)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.4.0)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.1)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0.0,>=0.14.0->datasets) (3.12.2)\n", - "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0.0,>=0.14.0->datasets) (4.7.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.4)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (1.26.16)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2023.7.22)\n", - "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2023.3)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->datasets) (1.16.0)\n", - "Installing collected packages: xxhash, dill, multiprocess, huggingface-hub, datasets\n", - "Successfully installed datasets-2.14.4 dill-0.3.7 huggingface-hub-0.16.4 multiprocess-0.70.15 xxhash-3.3.0\n", - "Collecting transformers\n", - " Downloading transformers-4.33.0-py3-none-any.whl (7.6 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m19.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.12.2)\n", - "Requirement already satisfied: huggingface-hub<1.0,>=0.15.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.16.4)\n", - "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.23.5)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (23.1)\n", - "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.1)\n", - "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2023.6.3)\n", - "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.31.0)\n", - "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1 (from transformers)\n", - " Downloading tokenizers-0.13.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m48.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers)\n", - " Downloading safetensors-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m53.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.66.1)\n", - "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers) (2023.6.0)\n", - "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers) (4.7.1)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.2.0)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (1.26.16)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2023.7.22)\n", - "Installing collected packages: tokenizers, safetensors, transformers\n", - "Successfully installed safetensors-0.3.3 tokenizers-0.13.3 transformers-4.33.0\n", - "Collecting evaluate\n", - " Downloading evaluate-0.4.0-py3-none-any.whl (81 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m81.4/81.4 kB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: datasets>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.14.4)\n", - "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.23.5)\n", - "Requirement already satisfied: dill in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.3.7)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.5.3)\n", - "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.31.0)\n", - "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from evaluate) (4.66.1)\n", - "Requirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.3.0)\n", - "Requirement already satisfied: multiprocess in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.70.15)\n", - "Requirement already satisfied: fsspec[http]>=2021.05.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2023.6.0)\n", - "Requirement already satisfied: huggingface-hub>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.16.4)\n", - "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from evaluate) (23.1)\n", - "Collecting responses<0.19 (from evaluate)\n", - " Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n", - "Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (9.0.0)\n", - "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.8.5)\n", - "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (6.0.1)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (3.12.2)\n", - "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (4.7.1)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.2.0)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.4)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (1.26.16)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2023.7.22)\n", - "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2023.3)\n", - "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (23.1.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (6.0.4)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (4.0.3)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.9.2)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.4.0)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.3.1)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->evaluate) (1.16.0)\n", - "Installing collected packages: responses, evaluate\n", - "Successfully installed evaluate-0.4.0 responses-0.18.0\n", - "Collecting seqeval\n", - " Downloading seqeval-1.2.2.tar.gz (43 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.6/43.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - "Requirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.10/dist-packages (from seqeval) (1.23.5)\n", - "Requirement already satisfied: scikit-learn>=0.21.3 in /usr/local/lib/python3.10/dist-packages (from seqeval) (1.2.2)\n", - "Requirement already satisfied: scipy>=1.3.2 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.10.1)\n", - "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (1.3.2)\n", - "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.21.3->seqeval) (3.2.0)\n", - "Building wheels for collected packages: seqeval\n", - " Building wheel for seqeval (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - " Created wheel for seqeval: filename=seqeval-1.2.2-py3-none-any.whl size=16162 sha256=a3e4deed0ae4f82793ec07d332ea0faca9b72401ac85aa8047235d5fec9ef8ce\n", - " Stored in directory: /root/.cache/pip/wheels/1a/67/4a/ad4082dd7dfc30f2abfe4d80a2ed5926a506eb8a972b4767fa\n", - "Successfully built seqeval\n", - "Installing collected packages: seqeval\n", - "Successfully installed seqeval-1.2.2\n", - "Requirement already satisfied: transformers[torch] in /usr/local/lib/python3.10/dist-packages (4.33.0)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (3.12.2)\n", - "Requirement already satisfied: huggingface-hub<1.0,>=0.15.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.16.4)\n", - "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (1.23.5)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (23.1)\n", - "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (6.0.1)\n", - "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2023.6.3)\n", - "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2.31.0)\n", - "Requirement already satisfied: tokenizers!=0.11.3,<0.14,>=0.11.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.13.3)\n", - "Requirement already satisfied: safetensors>=0.3.1 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (0.3.3)\n", - "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (4.66.1)\n", - "Requirement already satisfied: torch!=1.12.0,>=1.10 in /usr/local/lib/python3.10/dist-packages (from transformers[torch]) (2.0.1+cu118)\n", - "Collecting accelerate>=0.20.3 (from transformers[torch])\n", - " Downloading accelerate-0.22.0-py3-none-any.whl (251 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m251.2/251.2 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate>=0.20.3->transformers[torch]) (5.9.5)\n", - "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers[torch]) (2023.6.0)\n", - "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers[torch]) (4.7.1)\n", - "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (1.12)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (3.1)\n", - "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (3.1.2)\n", - "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch!=1.12.0,>=1.10->transformers[torch]) (2.0.0)\n", - "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch!=1.12.0,>=1.10->transformers[torch]) (3.27.2)\n", - "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch!=1.12.0,>=1.10->transformers[torch]) (16.0.6)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (3.2.0)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (3.4)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (1.26.16)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers[torch]) (2023.7.22)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch!=1.12.0,>=1.10->transformers[torch]) (2.1.3)\n", - "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch!=1.12.0,>=1.10->transformers[torch]) (1.3.0)\n", - "Installing collected packages: accelerate\n", - "Successfully installed accelerate-0.22.0\n", - "Requirement already satisfied: accelerate in /usr/local/lib/python3.10/dist-packages (0.22.0)\n", - "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from accelerate) (1.23.5)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (23.1)\n", - "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate) (5.9.5)\n", - "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from accelerate) (6.0.1)\n", - "Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (2.0.1+cu118)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.12.2)\n", - "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (4.7.1)\n", - "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (1.12)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1)\n", - "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1.2)\n", - "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (2.0.0)\n", - "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.10.0->accelerate) (3.27.2)\n", - "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.10.0->accelerate) (16.0.6)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.10.0->accelerate) (2.1.3)\n", - "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.10.0->accelerate) (1.3.0)\n" - ] - } - ], - "source": [ - "%pip install \"argilla[server]==1.5.0\" -qqq\n", - "%pip install datasets\n", - "%pip install transformers\n", - "%pip install evaluate\n", - "%pip install seqeval\n", - "%pip install transformers[torch]\n", - "%pip install accelerate -U" + "text/plain": [ + "Downloading data: 0%| | 0.00/5.03k [00:00 ⚠️ **Be careful:** Each execution will upload and add your annotations again without being overwritten." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "id": "K7WFV0vaHhyd" + }, + "outputs": [], + "source": [ + "# Create a function to read the sequences\n", + "def parse_entities(record):\n", + " current_entity = None # to check if current entity in process\n", + " current_info = [] # to save the information used in the tuple for the whole sentence\n", + " char_position = 0\n", + " entities = [] # final list to save the tuples\n", + "\n", + " # Iterate over the tokens and ner tags\n", + " for i in range(len(record[\"ner_tags\"])):\n", + " token = record[\"tokens\"][i]\n", + " ner_tag = dataset.features[\"ner_tags\"].feature.names[record[\"ner_tags\"][i]]\n", + "\n", + " if ner_tag.startswith(\"B-\"):\n", + " if current_entity:\n", + " current_info.append(current_entity)\n", + " current_entity = {\"word\": token, \"start\": char_position, \"tag\": ner_tag[2:]}\n", + " char_position += len(token) + 1\n", + "\n", + " elif ner_tag.startswith(\"I-\"):\n", + " if current_entity:\n", + " current_entity[\"word\"] += \" \" + token\n", + " char_position += len(token) + 1\n", + "\n", + " elif ner_tag == \"O\":\n", + " char_position += len(token) + 1\n", + "\n", + " # Add the last entity if it exists\n", + " if current_entity:\n", + " current_info.append(current_entity)\n", + "\n", + " # Calculate the end positions for each entity\n", + " for entity in current_info:\n", + " entity[\"end\"] = entity[\"start\"] + len(entity[\"word\"])\n", + "\n", + " for entity in current_info:\n", + " entities.append((entity[\"tag\"], entity[\"start\"], entity[\"end\"]))\n", + "\n", + " return entities" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WsKBFFAiYv3D" + }, + "outputs": [], + "source": [ + "# Write a loop to iterate over each row of your dataset and add the text, tokens, and tuple\n", + "records = [\n", + " rg.TokenClassificationRecord(\n", + " text=\" \".join(row[\"tokens\"]),\n", + " tokens=row[\"tokens\"],\n", + " annotation=parse_entities(row),\n", + " )\n", + " for row in dataset\n", + "]\n", + "\n", + "# Log the records with the name of your choice\n", + "rg.log(records, \"spacy_sm_wnut17\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3Ydx5se82s_n" + }, + "source": [ + "So now you will be able to check your annotations in a much more visual way and even edit them if necessary.\n", + "\n", + "\"argilla-annotations\"\n",\n", + "\n", + "In addition, **Argilla** also has more options, e.g. to extract [metrics](https://docs.v1.argilla.io/en/latest/reference/python/python_metrics.html) such as the one shown below.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 }, + "id": "uIg23A-uRX94", + "outputId": "0a9fed8e-6ae8-4a96-c40f-420f61f55c73" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Select the dataset from Argilla and visualize the data\n", + "top_k_mentions(\n", + " name=\"spacy_sm_wnut17\", k=30, threshold=2, compute_for=Annotations\n", + ").visualize()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ypCRJhX35ltp" + }, + "source": [ + "## ⏳ Preprocessing the data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ffpxCD1M8mFO" + }, + "source": [ + "Next, we will **pre-process our data** in the required format so that the model can work with it. In our case, we will reload them from HuggingFace, as in Argilla we only loaded the train set, however, this is also possible.\n", + "\n", + "The following code would allow us to prepare our data using Argilla, this is especially useful for manual annotations, as it adds **B-** (beggining) or **I-** (inside) to our NER tags automatically depending on their position.\n", + "\n", + "```python\n", + "dataset = rg.load(\"dataset_name\").prepare_for_training()\n", + "\n", + "dataset = dataset.train_test_split()\n", + "```\n", + "\n", + "> 🤯 **Tip:** In our case, we are working with a very small dataset that is divided into train and test. However, you may are using another dataset that already have the ``validation`` partition, or even if it is larger, you can create this partition yourself with the following code:\n", + "\n", + "```python\n", + "dataset['train'], dataset['validation'] = dataset['train'].train_test_split(.1).values()\n", + "```\n", + "So, let's continue!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 240, + "referenced_widgets": [ + "368c173b5ae942aca2136dfe7968e527", + "b27a1ac0f80443a18f51002768ef5883", + "ba728a77e57243e4b6a58c09d1d68c19", + "84cf7979444c46409f547fc34fe5959f", + "25731b7b5adf4f62953468b72d4dc746", + "c7c4843952414605b4a3a526ff32ad4f", + "215f5ed3a7ab450d9bfc87d0e92c306d", + "a0d5d3e4e2b24345aa002b6fdcd961a1", + "3a2ce5219b5349be87932029056fb270", + "eda3a7954d6a49418962197d7b120072", + "3732ff34dde142e1a934ef62b4f2f4f9" + ] }, + "id": "pl1MwBhxkQEm", + "outputId": "7296bdd5-652d-477b-9696-cee344341902" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# # Replace workspace with the name of your workspace\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"owner.apikey\",\n", - "# workspace=\"admin\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:datasets.builder:Found cached dataset parquet (/root/.cache/huggingface/datasets/argilla___parquet/argilla--spacy_sm_wnut17-1babd564207f27f8/0.0.0/14a00e99c0d15a23649d0db8944380ac81082d4b021f398733dd84f3a6c569a7)\n" + ] }, { - "cell_type": "markdown", - "metadata": { - "id": "LKgEhWk70q4u" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "368c173b5ae942aca2136dfe7968e527", + "version_major": 2, + "version_minor": 0 }, - "source": [ - "Finally, let's include the imports we need:" + "text/plain": [ + " 0%| | 0/2 [00:00 💡 **Tip:** If you are using HuggingFace it may be easier for you to save your model there directly. To do so, use the following code and add the following parameters to TrainingArguments.\n", + "\n", + "```python\n", + "from huggingface_hub import notebook_login\n", + "notebook_login()\n", + "\n", + "# Add the following parameter\n", + "training_args = TrainingArguments(\n", + " save_strategy=\"epoch\",\n", + " load_best_model_at_end=True,\n", + " push_to_hub=True,\n", + ")\n", + "```\n", + "> 🕹️ **Let's play:** What is the best accuracy you can get?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "O9lz1LbVN3OW" + }, + "outputs": [], + "source": [ + "training_args = TrainingArguments(\n", + " output_dir=\"ner-recognition\",\n", + " learning_rate=2e-4,\n", + " per_device_train_batch_size=32,\n", + " per_device_eval_batch_size=32,\n", + " num_train_epochs=20,\n", + " weight_decay=0.05,\n", + " evaluation_strategy=\"epoch\",\n", + " optim=\"adamw_torch\",\n", + " logging_steps=50,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7SFjM6KGN3s3" + }, + "source": [ + "### Metrics\n", + "\n", + "To know how our training has gone, of course, we must use metrics. Therefore, we will use ``Seqeval`` and a function that computes precision, recall, F1 and accuracy from the actual and predicted tags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "93d7c54a35494535a500550d73d22acb", + "ea8acd336a384c8793651542d6bb5167", + "9867f7c33e24416faf662ec5366af2f1", + "e023fa533e1a4059b8087be03f81ac9a", + "de682ca9943648579f74c077dec8bcfc", + "75db171714734f49b05273ba2d42be11", + "1ced5374042343c48b7523e0db3b05ec", + "9e837cd94af54d01a4ba079f16b881bf", + "3a0a83c63061434887f2b9760fdf5281", + "a309e1df709042d2a3e31df5f3426367", + "fe27af60738749bda14625b756362aef" + ] }, + "id": "Jr559HdeN6Q9", + "outputId": "dac3b0d0-173a-4b70-a2cf-d4306eecfd6e" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 241, - "referenced_widgets": [ - "99e5a771b1c94d74bf5c3e70e15ad09f", - "acf78f08f05043cdb3273d5c92c0df31", - "f0b531f225234f79b4ead2fad8fe2751", - "6f5f5d31a6f749158440b374c0950f64", - "00b9010d8b794a7594813f6894e5abfd", - "367c275138534c858c9313a36e154b10", - "7cb7ee5d7ee245e0a45520ba3a813f0c", - "7dc978907a3b435f98cfe63107929efd", - "a87aec084388404a904b5e214f60eacc", - "194082cd09ec44f2941f3f76134fb96c", - "c65d24e786c34452ad44f04fa87a5131", - "082f49ae0ab64400aedb4a8f88936285", - "df53731b5ee5449d905f0a8e9ed0979f", - "4c695ba86c6c469ea313a0080dea76bd", - "41057edf94144db5933b68ac821ae98a", - "1d2943840f294a57b1e3636555a4e25d", - "0f26cdb761b74c58b5002d3e592df69a", - "34c747c3411d48a5be4d7b858c7f1897", - "01e3c0d891154f3c8a94c9d2b5dd9bc9", - "150aa7a7933b44edb0110f53602fe1a9", - "b9d99330970c43db9a803bad08e87686", - "35b994f5411444a2a6800072017013df", - "a6739364524849378c94c89a72083871", - "9de0c934fe3c48169110a5e9c44cf67a", - "1f1ac3e94d9a482c863fcca0b3ffd976", - "fb746c052b884ddfa5d47ab3e925a790", - "3e15aa279b304b3a81176762a144efee", - "ca226c7464284dd8ac497a021cb2cd79", - "d8e4d43b5dac4b859fd77ab1c63cee7e", - "23e87cd64e544db290cee8a8e491aaa6", - "533d34aac5984fcdac3599d217a19269", - "0e1f107885b446e484e10d7c2bb3148d", - "d831eeae6fce4c1e952d3dddff336c44", - "ac97b8345ac449b6aeb13f3815ba614e", - "34209e5556f045d1a8dcd42799cd5b07", - "0913a4edc88e46e1bcb78a2eef6dbacd", - "a8491ebf827e4829911cdb6f129dbd9b", - "297762bdcf7a40da868faba7ba524f33", - "34eb03a9d5154fc5994a57a432241dbd", - "70ac8fda9db8482aa23d1412f1026303", - "902d902b20c449a4aec44d90c66a44d9", - "5434b0b2eebf4d56a4e1b54875582166", - "4784d47e7f1140e29e97b9232d95e39d", - "9db8cd674fa343c68c4cdea7728bc508", - "18d8e0b8ddeb43f098437dbe8de71d63", - "9b1f8961077d4cb895858f069b901d6b", - "6a624ed9e6ed4e2d88b05578d1f44060", - "97f3c530ddea4d2a92fd24a7bd1f36f4", - "5b42770f877d40f9bb9054a642de3b02", - "d19247d43efa4f5395479c0091908812", - "6a31b14c2db641a8881bca8a33b59c54", - "488568ad39a54008bdb9a4b6f09f7952", - "0b3e30198b7e49c581a5f438f23fce59", - "bac5002e328b47e29605b584e8f3d35c", - "70bcb268780e439098031084dff765e2", - "65fe01641cca423facc645cba13f35cd", - "9b067923d08f496cb2bad20ad7ef4697", - "366b9176dec742589ed7b423bf51b492", - "f7cbcbd2d4594c6bae7c1f9aaf5d9106", - "f2644660164f44b38a05172b51459ec1", - "1c1c5e928d4641ac93cec178438487c0", - "219a467d434248128c8e91cec11b7a16", - "fc092df95b51432c9836b3e0ba7234f1", - "130efa006fb44ef5948ee6ee4f66882f", - "1b4b6a31b84641308d77ab04fc85912e", - "3fd2f15677bc4cb9adc119c6158d0ec0", - "59a012d1a99a4aa4b88cc76e83787e56", - "203df8ab6cc948c69ed8469eac9de357", - "3243d051548c4996b10c970f582fe9f7", - "4ded40486ee64bdb874906972b9deec8", - "ffdadb62b0d74b1ea816cbb1bb924d2e", - "8412fa5c43c44b02ae2693e62705385c", - "9b7068fd51bb463e88e65803dbbbbade", - "a3d8351283934fdcb6c57470a12df1a1", - "4831180eb2214af081dfc1469f6c4021", - "63701b6fe5d34289bb9bb55da3aa8c49", - "00d55e9d9f08467e81a5b77fdaa35c07" - ] - }, - "id": "s_e7D8paZFDq", - "outputId": "cbe1688f-b354-4205-aabd-edfa5dac9374" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "93d7c54a35494535a500550d73d22acb", + "version_major": 2, + "version_minor": 0 }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "99e5a771b1c94d74bf5c3e70e15ad09f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Downloading readme: 0%| | 0.00/1.29k [00:00\n", + " \n", + " \n", + " [80/80 00:12, Epoch 20/20]\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
EpochTraining LossValidation LossPrecisionRecallF1Accuracy
1No log1.4458350.0000000.0000000.0000000.720751
2No log1.5403810.0000000.0000000.0000000.720751
3No log1.3009410.0000000.0000000.0000000.720751
4No log1.2591190.0000000.0000000.0000000.720751
5No log1.2565420.4444440.0254780.0481930.720751
6No log1.1540500.2027030.0955410.1298700.736203
7No log1.3884630.2545450.0891720.1320750.718543
8No log1.2462350.2753620.1210190.1681420.737307
9No log1.2547870.2020200.1273890.1562500.731788
10No log1.3885490.2727270.1719750.2109380.735099
11No log1.4946270.2976190.1592360.2074690.740618
12No log1.3313030.2325580.1910830.2097900.746137
130.6753001.4731910.2522520.1783440.2089550.748344
140.6753001.5667830.2755100.1719750.2117650.742826
150.6753001.5001710.2523360.1719750.2045450.739514
160.6753001.5419460.2743360.1974520.2296300.742826
170.6753001.5463470.2583330.1974520.2238270.745033
180.6753001.5341000.2711860.2038220.2327270.743929
190.6753001.5350950.2773110.2101910.2391300.745033
200.6753001.5393030.2773110.2101910.2391300.745033

" ], - "source": [ - "dataset" + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "cell_type": "markdown", - "metadata": { - "id": "ITgB-mzZz3vX" - }, - "source": [ - "Next, we will use the following code taking advantage of the ``DatasetDict`` option ``Features`` to convert it to the format required by Argilla in order to log it.\n", - "\n", - "The three elements that our data must have for Token Classifications are the following:\n", - "\n", - "* **text**: the complete string.\n", - "* **tokens**: the sequence of tokens.\n", - "* **annotation**: a tuple formed by the tag, the start position and the end position.\n", - "\n", - "> ⚠️ **Be careful:** Each execution will upload and add your annotations again without being overwritten." - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/seqeval/metrics/v1.py:57: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "/usr/local/lib/python3.10/dist-packages/seqeval/metrics/v1.py:57: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] }, { - "cell_type": "code", - "execution_count": 79, - "metadata": { - "id": "K7WFV0vaHhyd" - }, - "outputs": [], - "source": [ - "# Create a function to read the sequences\n", - "def parse_entities(record):\n", - " current_entity = None # to check if current entity in process\n", - " current_info = [] # to save the information used in the tuple for the whole sentence\n", - " char_position = 0\n", - " entities = [] # final list to save the tuples\n", - "\n", - " # Iterate over the tokens and ner tags\n", - " for i in range(len(record[\"ner_tags\"])):\n", - " token = record[\"tokens\"][i]\n", - " ner_tag = dataset.features[\"ner_tags\"].feature.names[record[\"ner_tags\"][i]]\n", - "\n", - " if ner_tag.startswith(\"B-\"):\n", - " if current_entity:\n", - " current_info.append(current_entity)\n", - " current_entity = {\"word\": token, \"start\": char_position, \"tag\": ner_tag[2:]}\n", - " char_position += len(token) + 1\n", - "\n", - " elif ner_tag.startswith(\"I-\"):\n", - " if current_entity:\n", - " current_entity[\"word\"] += \" \" + token\n", - " char_position += len(token) + 1\n", - "\n", - " elif ner_tag == \"O\":\n", - " char_position += len(token) + 1\n", - "\n", - " # Add the last entity if it exists\n", - " if current_entity:\n", - " current_info.append(current_entity)\n", - "\n", - " # Calculate the end positions for each entity\n", - " for entity in current_info:\n", - " entity[\"end\"] = entity[\"start\"] + len(entity[\"word\"])\n", - "\n", - " for entity in current_info:\n", - " entities.append((entity[\"tag\"], entity[\"start\"], entity[\"end\"]))\n", - "\n", - " return entities" + "data": { + "text/plain": [ + "TrainOutput(global_step=80, training_loss=0.45428856909275056, metrics={'train_runtime': 14.9864, 'train_samples_per_second': 158.811, 'train_steps_per_second': 5.338, 'total_flos': 32769159790410.0, 'train_loss': 0.45428856909275056, 'epoch': 20.0})" ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainer = Trainer(\n", + " model=model,\n", + " args=training_args,\n", + " train_dataset=tokenized_dataset[\"train\"],\n", + " eval_dataset=tokenized_dataset[\"test\"],\n", + " tokenizer=tokenizer,\n", + " data_collator=data_collator,\n", + " compute_metrics=compute_metrics,\n", + ")\n", + "\n", + "# Train.\n", + "trainer.train()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZCCiyS9llFq6" + }, + "source": [ + "The `evaluate` method will allow you to evaluate again on the validation set or on another dataset (e.g. if you have train, validation and test)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 193 }, + "id": "tsX1Z9r_PjT1", + "outputId": "daf2665e-5bb7-4948-8267-788b503c07e9" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "WsKBFFAiYv3D" - }, - "outputs": [], - "source": [ - "# Write a loop to iterate over each row of your dataset and add the text, tokens, and tuple\n", - "records = [\n", - " rg.TokenClassificationRecord(\n", - " text=\" \".join(row[\"tokens\"]),\n", - " tokens=row[\"tokens\"],\n", - " annotation=parse_entities(row),\n", - " )\n", - " for row in dataset\n", - "]\n", - "\n", - "# Log the records with the name of your choice\n", - "rg.log(records, \"spacy_sm_wnut17\")" + "data": { + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [1/1 : < :]\n", + "
\n", + " " + ], + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "cell_type": "markdown", - "metadata": { - "id": "3Ydx5se82s_n" - }, - "source": [ - "So now you will be able to check your annotations in a much more visual way and even edit them if necessary.\n", - "\n", - "\"argilla-annotations\"\n",\n", - "\n", - "In addition, **Argilla** also has more options, e.g. to extract [metrics](https://docs.v1.argilla.io/en/latest/reference/python/python_metrics.html) such as the one shown below.\n", - "\n", - "\n" + "data": { + "text/plain": [ + "{'eval_loss': 1.5393034219741821,\n", + " 'eval_precision': 0.2773109243697479,\n", + " 'eval_recall': 0.21019108280254778,\n", + " 'eval_f1': 0.2391304347826087,\n", + " 'eval_accuracy': 0.7450331125827815,\n", + " 'eval_runtime': 0.0918,\n", + " 'eval_samples_per_second': 326.934,\n", + " 'eval_steps_per_second': 10.898,\n", + " 'epoch': 20.0}" ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainer.evaluate()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0NYZJgRORyjm" + }, + "source": [ + "> 🔮 **Try to predict**\n", + "\n", + "> When you have created your model and are happy with it, test it yourself with your own text.\n", + "\n", + "```python\n", + "# Replace this with the directory where it was saved\n", + "model_checkpoint = \"your-path\"\n", + "token_classifier = pipeline(\"token-classification\", model=model_checkpoint, aggregation_strategy=\"simple\")\n", + "token_classifier(\"I heard Madrid is wonderful in spring.\")\n", + "\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4IDnpIN5ZE6u" + }, + "source": [ + "## 📝✔️ Summary\n", + "\n", + "In this tutorial, we have learned how to upload our training dataset to Argilla in order to visualise the data it contains and the NER tags it uses and how to fine-tune a BERT model for NER recognition using ``transformers``. This can be very useful to learn the basics of BERT pre-models and, from there, to develop your skills further and try out different ones that may give better results.\n", + "\n", + "💪Cheers!" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "00b9010d8b794a7594813f6894e5abfd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "uIg23A-uRX94", - "outputId": "0a9fed8e-6ae8-4a96-c40f-420f61f55c73" - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "
\n", - "
\n", - "\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "00d55e9d9f08467e81a5b77fdaa35c07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "011e772f270e4e3b819fc093928b36b7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_76ac206691ad4795b168534e69ed5a56", + "IPY_MODEL_ac140d48d0984ca59e5e4fc437eff946", + "IPY_MODEL_527332d8360b4df293452d0fcced938d" ], - "source": [ - "# Select the dataset from Argilla and visualize the data\n", - "top_k_mentions(\n", - " name=\"spacy_sm_wnut17\", k=30, threshold=2, compute_for=Annotations\n", - ").visualize()" - ] + "layout": "IPY_MODEL_25b47d1f214340baa662328b090f2b6a" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "ypCRJhX35ltp" - }, - "source": [ - "## ⏳ Preprocessing the data" - ] + "01e3c0d891154f3c8a94c9d2b5dd9bc9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "ffpxCD1M8mFO" - }, - "source": [ - "Next, we will **pre-process our data** in the required format so that the model can work with it. In our case, we will reload them from HuggingFace, as in Argilla we only loaded the train set, however, this is also possible.\n", - "\n", - "The following code would allow us to prepare our data using Argilla, this is especially useful for manual annotations, as it adds **B-** (beggining) or **I-** (inside) to our NER tags automatically depending on their position.\n", - "\n", - "```python\n", - "dataset = rg.load(\"dataset_name\").prepare_for_training()\n", - "\n", - "dataset = dataset.train_test_split()\n", - "```\n", - "\n", - "> 🤯 **Tip:** In our case, we are working with a very small dataset that is divided into train and test. However, you may are using another dataset that already have the ``validation`` partition, or even if it is larger, you can create this partition yourself with the following code:\n", - "\n", - "```python\n", - "dataset['train'], dataset['validation'] = dataset['train'].train_test_split(.1).values()\n", - "```\n", - "So, let's continue!" - ] + "082f49ae0ab64400aedb4a8f88936285": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_df53731b5ee5449d905f0a8e9ed0979f", + "IPY_MODEL_4c695ba86c6c469ea313a0080dea76bd", + "IPY_MODEL_41057edf94144db5933b68ac821ae98a" + ], + "layout": "IPY_MODEL_1d2943840f294a57b1e3636555a4e25d" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 240, - "referenced_widgets": [ - "368c173b5ae942aca2136dfe7968e527", - "b27a1ac0f80443a18f51002768ef5883", - "ba728a77e57243e4b6a58c09d1d68c19", - "84cf7979444c46409f547fc34fe5959f", - "25731b7b5adf4f62953468b72d4dc746", - "c7c4843952414605b4a3a526ff32ad4f", - "215f5ed3a7ab450d9bfc87d0e92c306d", - "a0d5d3e4e2b24345aa002b6fdcd961a1", - "3a2ce5219b5349be87932029056fb270", - "eda3a7954d6a49418962197d7b120072", - "3732ff34dde142e1a934ef62b4f2f4f9" - ] - }, - "id": "pl1MwBhxkQEm", - "outputId": "7296bdd5-652d-477b-9696-cee344341902" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:datasets.builder:Found cached dataset parquet (/root/.cache/huggingface/datasets/argilla___parquet/argilla--spacy_sm_wnut17-1babd564207f27f8/0.0.0/14a00e99c0d15a23649d0db8944380ac81082d4b021f398733dd84f3a6c569a7)\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "368c173b5ae942aca2136dfe7968e527", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/2 [00:00 💡 **Tip:** If you are using HuggingFace it may be easier for you to save your model there directly. To do so, use the following code and add the following parameters to TrainingArguments.\n", - "\n", - "```python\n", - "from huggingface_hub import notebook_login\n", - "notebook_login()\n", - "\n", - "# Add the following parameter\n", - "training_args = TrainingArguments(\n", - " save_strategy=\"epoch\",\n", - " load_best_model_at_end=True,\n", - " push_to_hub=True,\n", - ")\n", - "```\n", - "> 🕹️ **Let's play:** What is the best accuracy you can get?" - ] + "6a31b14c2db641a8881bca8a33b59c54": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "O9lz1LbVN3OW" - }, - "outputs": [], - "source": [ - "training_args = TrainingArguments(\n", - " output_dir=\"ner-recognition\",\n", - " learning_rate=2e-4,\n", - " per_device_train_batch_size=32,\n", - " per_device_eval_batch_size=32,\n", - " num_train_epochs=20,\n", - " weight_decay=0.05,\n", - " evaluation_strategy=\"epoch\",\n", - " optim=\"adamw_torch\",\n", - " logging_steps = 50\n", - ")" - ] + "6a624ed9e6ed4e2d88b05578d1f44060": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_488568ad39a54008bdb9a4b6f09f7952", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0b3e30198b7e49c581a5f438f23fce59", + "value": 2 + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "7SFjM6KGN3s3" - }, - "source": [ - "### Metrics\n", - "\n", - "To know how our training has gone, of course, we must use metrics. Therefore, we will use ``Seqeval`` and a function that computes precision, recall, F1 and accuracy from the actual and predicted tags." - ] + "6f5f5d31a6f749158440b374c0950f64": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_194082cd09ec44f2941f3f76134fb96c", + "placeholder": "​", + "style": "IPY_MODEL_c65d24e786c34452ad44f04fa87a5131", + "value": " 1.29k/1.29k [00:00<00:00, 44.2kB/s]" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 49, - "referenced_widgets": [ - "93d7c54a35494535a500550d73d22acb", - "ea8acd336a384c8793651542d6bb5167", - "9867f7c33e24416faf662ec5366af2f1", - "e023fa533e1a4059b8087be03f81ac9a", - "de682ca9943648579f74c077dec8bcfc", - "75db171714734f49b05273ba2d42be11", - "1ced5374042343c48b7523e0db3b05ec", - "9e837cd94af54d01a4ba079f16b881bf", - "3a0a83c63061434887f2b9760fdf5281", - "a309e1df709042d2a3e31df5f3426367", - "fe27af60738749bda14625b756362aef" - ] - }, - "id": "Jr559HdeN6Q9", - "outputId": "dac3b0d0-173a-4b70-a2cf-d4306eecfd6e" - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "93d7c54a35494535a500550d73d22acb", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Downloading builder script: 0%| | 0.00/6.34k [00:00\n", - " \n", - " \n", - " [80/80 00:12, Epoch 20/20]\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
EpochTraining LossValidation LossPrecisionRecallF1Accuracy
1No log1.4458350.0000000.0000000.0000000.720751
2No log1.5403810.0000000.0000000.0000000.720751
3No log1.3009410.0000000.0000000.0000000.720751
4No log1.2591190.0000000.0000000.0000000.720751
5No log1.2565420.4444440.0254780.0481930.720751
6No log1.1540500.2027030.0955410.1298700.736203
7No log1.3884630.2545450.0891720.1320750.718543
8No log1.2462350.2753620.1210190.1681420.737307
9No log1.2547870.2020200.1273890.1562500.731788
10No log1.3885490.2727270.1719750.2109380.735099
11No log1.4946270.2976190.1592360.2074690.740618
12No log1.3313030.2325580.1910830.2097900.746137
130.6753001.4731910.2522520.1783440.2089550.748344
140.6753001.5667830.2755100.1719750.2117650.742826
150.6753001.5001710.2523360.1719750.2045450.739514
160.6753001.5419460.2743360.1974520.2296300.742826
170.6753001.5463470.2583330.1974520.2238270.745033
180.6753001.5341000.2711860.2038220.2327270.743929
190.6753001.5350950.2773110.2101910.2391300.745033
200.6753001.5393030.2773110.2101910.2391300.745033

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.10/dist-packages/seqeval/metrics/v1.py:57: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "/usr/local/lib/python3.10/dist-packages/seqeval/metrics/v1.py:57: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n" - ] - }, - { - "data": { - "text/plain": [ - "TrainOutput(global_step=80, training_loss=0.45428856909275056, metrics={'train_runtime': 14.9864, 'train_samples_per_second': 158.811, 'train_steps_per_second': 5.338, 'total_flos': 32769159790410.0, 'train_loss': 0.45428856909275056, 'epoch': 20.0})" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } + "9867f7c33e24416faf662ec5366af2f1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9e837cd94af54d01a4ba079f16b881bf", + "max": 6338, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3a0a83c63061434887f2b9760fdf5281", + "value": 6338 + } + }, + "99e5a771b1c94d74bf5c3e70e15ad09f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_acf78f08f05043cdb3273d5c92c0df31", + "IPY_MODEL_f0b531f225234f79b4ead2fad8fe2751", + "IPY_MODEL_6f5f5d31a6f749158440b374c0950f64" ], - "source": [ - "trainer = Trainer(\n", - " model=model,\n", - " args=training_args,\n", - " train_dataset=tokenized_dataset[\"train\"],\n", - " eval_dataset=tokenized_dataset[\"test\"],\n", - " tokenizer=tokenizer,\n", - " data_collator=data_collator,\n", - " compute_metrics=compute_metrics,\n", - ")\n", - "\n", - "# Train.\n", - "trainer.train()" - ] + "layout": "IPY_MODEL_00b9010d8b794a7594813f6894e5abfd" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZCCiyS9llFq6" - }, - "source": [ - "The `evaluate` method will allow you to evaluate again on the validation set or on another dataset (e.g. if you have train, validation and test)." - ] + "9b067923d08f496cb2bad20ad7ef4697": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1c1c5e928d4641ac93cec178438487c0", + "placeholder": "​", + "style": "IPY_MODEL_219a467d434248128c8e91cec11b7a16", + "value": "Generating train split: 100%" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 193 - }, - "id": "tsX1Z9r_PjT1", - "outputId": "daf2665e-5bb7-4948-8267-788b503c07e9" - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "

\n", - " \n", - " \n", - " [1/1 : < :]\n", - "
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "{'eval_loss': 1.5393034219741821,\n", - " 'eval_precision': 0.2773109243697479,\n", - " 'eval_recall': 0.21019108280254778,\n", - " 'eval_f1': 0.2391304347826087,\n", - " 'eval_accuracy': 0.7450331125827815,\n", - " 'eval_runtime': 0.0918,\n", - " 'eval_samples_per_second': 326.934,\n", - " 'eval_steps_per_second': 10.898,\n", - " 'epoch': 20.0}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } + "9b1f8961077d4cb895858f069b901d6b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d19247d43efa4f5395479c0091908812", + "placeholder": "​", + "style": "IPY_MODEL_6a31b14c2db641a8881bca8a33b59c54", + "value": "Extracting data files: 100%" + } + }, + "9b7068fd51bb463e88e65803dbbbbade": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9db8cd674fa343c68c4cdea7728bc508": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9de0c934fe3c48169110a5e9c44cf67a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ca226c7464284dd8ac497a021cb2cd79", + "placeholder": "​", + "style": "IPY_MODEL_d8e4d43b5dac4b859fd77ab1c63cee7e", + "value": "Downloading data: 100%" + } + }, + "9e837cd94af54d01a4ba079f16b881bf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a0d5d3e4e2b24345aa002b6fdcd961a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a309e1df709042d2a3e31df5f3426367": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a3d8351283934fdcb6c57470a12df1a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a6739364524849378c94c89a72083871": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9de0c934fe3c48169110a5e9c44cf67a", + "IPY_MODEL_1f1ac3e94d9a482c863fcca0b3ffd976", + "IPY_MODEL_fb746c052b884ddfa5d47ab3e925a790" ], - "source": [ - "trainer.evaluate()" - ] + "layout": "IPY_MODEL_3e15aa279b304b3a81176762a144efee" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "0NYZJgRORyjm" - }, - "source": [ - "> 🔮 **Try to predict**\n", - "\n", - "> When you have created your model and are happy with it, test it yourself with your own text.\n", - "\n", - "```python\n", - "# Replace this with the directory where it was saved\n", - "model_checkpoint = \"your-path\"\n", - "token_classifier = pipeline(\"token-classification\", model=model_checkpoint, aggregation_strategy=\"simple\")\n", - "token_classifier(\"I heard Madrid is wonderful in spring.\")\n", - "\n", - "```" - ] + "a8491ebf827e4829911cdb6f129dbd9b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4784d47e7f1140e29e97b9232d95e39d", + "placeholder": "​", + "style": "IPY_MODEL_9db8cd674fa343c68c4cdea7728bc508", + "value": " 5.03k/5.03k [00:00<00:00, 21.5kB/s]" + } }, - { - "cell_type": "markdown", - "metadata": { - "id": "4IDnpIN5ZE6u" - }, - "source": [ - "## 📝✔️ Summary\n", - "\n", - "In this tutorial, we have learned how to upload our training dataset to Argilla in order to visualise the data it contains and the NER tags it uses and how to fine-tune a BERT model for NER recognition using ``transformers``. This can be very useful to learn the basics of BERT pre-models and, from there, to develop your skills further and try out different ones that may give better results.\n", - "\n", - "💪Cheers!" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "provenance": [] - }, - "gpuClass": "standard", - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "00b9010d8b794a7594813f6894e5abfd": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "00d55e9d9f08467e81a5b77fdaa35c07": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "011e772f270e4e3b819fc093928b36b7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_76ac206691ad4795b168534e69ed5a56", - "IPY_MODEL_ac140d48d0984ca59e5e4fc437eff946", - "IPY_MODEL_527332d8360b4df293452d0fcced938d" - ], - "layout": "IPY_MODEL_25b47d1f214340baa662328b090f2b6a" - } - }, - "01e3c0d891154f3c8a94c9d2b5dd9bc9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "082f49ae0ab64400aedb4a8f88936285": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_df53731b5ee5449d905f0a8e9ed0979f", - "IPY_MODEL_4c695ba86c6c469ea313a0080dea76bd", - "IPY_MODEL_41057edf94144db5933b68ac821ae98a" - ], - "layout": "IPY_MODEL_1d2943840f294a57b1e3636555a4e25d" - } - }, - "0913a4edc88e46e1bcb78a2eef6dbacd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_902d902b20c449a4aec44d90c66a44d9", - "max": 5033, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_5434b0b2eebf4d56a4e1b54875582166", - "value": 5033 - } - }, - "0b3e30198b7e49c581a5f438f23fce59": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "0e1f107885b446e484e10d7c2bb3148d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0f26cdb761b74c58b5002d3e592df69a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "130efa006fb44ef5948ee6ee4f66882f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "150aa7a7933b44edb0110f53602fe1a9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "18d8e0b8ddeb43f098437dbe8de71d63": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9b1f8961077d4cb895858f069b901d6b", - "IPY_MODEL_6a624ed9e6ed4e2d88b05578d1f44060", - "IPY_MODEL_97f3c530ddea4d2a92fd24a7bd1f36f4" - ], - "layout": "IPY_MODEL_5b42770f877d40f9bb9054a642de3b02" - } - }, - "194082cd09ec44f2941f3f76134fb96c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1b4b6a31b84641308d77ab04fc85912e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1c1c5e928d4641ac93cec178438487c0": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1ced5374042343c48b7523e0db3b05ec": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "1d2943840f294a57b1e3636555a4e25d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1f1ac3e94d9a482c863fcca0b3ffd976": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_23e87cd64e544db290cee8a8e491aaa6", - "max": 14232, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_533d34aac5984fcdac3599d217a19269", - "value": 14232 - } - }, - "203df8ab6cc948c69ed8469eac9de357": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_8412fa5c43c44b02ae2693e62705385c", - "placeholder": "​", - "style": "IPY_MODEL_9b7068fd51bb463e88e65803dbbbbade", - "value": "Generating test split: 100%" - } - }, - "215f5ed3a7ab450d9bfc87d0e92c306d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "219a467d434248128c8e91cec11b7a16": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "23e87cd64e544db290cee8a8e491aaa6": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "25731b7b5adf4f62953468b72d4dc746": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "25b47d1f214340baa662328b090f2b6a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "297762bdcf7a40da868faba7ba524f33": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3243d051548c4996b10c970f582fe9f7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a3d8351283934fdcb6c57470a12df1a1", - "max": 30, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_4831180eb2214af081dfc1469f6c4021", - "value": 30 - } - }, - "34209e5556f045d1a8dcd42799cd5b07": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_34eb03a9d5154fc5994a57a432241dbd", - "placeholder": "​", - "style": "IPY_MODEL_70ac8fda9db8482aa23d1412f1026303", - "value": "Downloading data: 100%" - } - }, - "34c747c3411d48a5be4d7b858c7f1897": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "34eb03a9d5154fc5994a57a432241dbd": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "35b994f5411444a2a6800072017013df": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "366b9176dec742589ed7b423bf51b492": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fc092df95b51432c9836b3e0ba7234f1", - "max": 119, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_130efa006fb44ef5948ee6ee4f66882f", - "value": 119 - } - }, - "367c275138534c858c9313a36e154b10": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "368c173b5ae942aca2136dfe7968e527": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_b27a1ac0f80443a18f51002768ef5883", - "IPY_MODEL_ba728a77e57243e4b6a58c09d1d68c19", - "IPY_MODEL_84cf7979444c46409f547fc34fe5959f" - ], - "layout": "IPY_MODEL_25731b7b5adf4f62953468b72d4dc746" - } - }, - "3732ff34dde142e1a934ef62b4f2f4f9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3a0a83c63061434887f2b9760fdf5281": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "3a2ce5219b5349be87932029056fb270": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "3e15aa279b304b3a81176762a144efee": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3fd2f15677bc4cb9adc119c6158d0ec0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "41057edf94144db5933b68ac821ae98a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b9d99330970c43db9a803bad08e87686", - "placeholder": "​", - "style": "IPY_MODEL_35b994f5411444a2a6800072017013df", - "value": " 2/2 [00:00<00:00, 3.23it/s]" - } - }, - "4784d47e7f1140e29e97b9232d95e39d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4831180eb2214af081dfc1469f6c4021": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "488568ad39a54008bdb9a4b6f09f7952": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4c695ba86c6c469ea313a0080dea76bd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_01e3c0d891154f3c8a94c9d2b5dd9bc9", - "max": 2, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_150aa7a7933b44edb0110f53602fe1a9", - "value": 2 - } - }, - "4ded40486ee64bdb874906972b9deec8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_63701b6fe5d34289bb9bb55da3aa8c49", - "placeholder": "​", - "style": "IPY_MODEL_00d55e9d9f08467e81a5b77fdaa35c07", - "value": " 30/30 [00:00<00:00, 610.05 examples/s]" - } - }, - "527332d8360b4df293452d0fcced938d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b503a56aec3a4b09ae141e0af4adac23", - "placeholder": "​", - "style": "IPY_MODEL_7651cd2a101248f59a4216ef50027e90", - "value": " 0/30 [00:00<?, ? examples/s]" - } - }, - "533d34aac5984fcdac3599d217a19269": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "5434b0b2eebf4d56a4e1b54875582166": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "59a012d1a99a4aa4b88cc76e83787e56": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_203df8ab6cc948c69ed8469eac9de357", - "IPY_MODEL_3243d051548c4996b10c970f582fe9f7", - "IPY_MODEL_4ded40486ee64bdb874906972b9deec8" - ], - "layout": "IPY_MODEL_ffdadb62b0d74b1ea816cbb1bb924d2e" - } - }, - "5b42770f877d40f9bb9054a642de3b02": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "63701b6fe5d34289bb9bb55da3aa8c49": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "65fe01641cca423facc645cba13f35cd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9b067923d08f496cb2bad20ad7ef4697", - "IPY_MODEL_366b9176dec742589ed7b423bf51b492", - "IPY_MODEL_f7cbcbd2d4594c6bae7c1f9aaf5d9106" - ], - "layout": "IPY_MODEL_f2644660164f44b38a05172b51459ec1" - } - }, - "6a31b14c2db641a8881bca8a33b59c54": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "6a624ed9e6ed4e2d88b05578d1f44060": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_488568ad39a54008bdb9a4b6f09f7952", - "max": 2, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0b3e30198b7e49c581a5f438f23fce59", - "value": 2 - } - }, - "6f5f5d31a6f749158440b374c0950f64": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_194082cd09ec44f2941f3f76134fb96c", - "placeholder": "​", - "style": "IPY_MODEL_c65d24e786c34452ad44f04fa87a5131", - "value": " 1.29k/1.29k [00:00<00:00, 44.2kB/s]" - } - }, - "70ac8fda9db8482aa23d1412f1026303": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "70bcb268780e439098031084dff765e2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "75db171714734f49b05273ba2d42be11": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7651cd2a101248f59a4216ef50027e90": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "76ac206691ad4795b168534e69ed5a56": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_eeb298e8c2d74439950325d4e01fc0c2", - "placeholder": "​", - "style": "IPY_MODEL_f148e78f04274ae9a6dca98e4cf6c832", - "value": "Map: 0%" - } - }, - "7cb7ee5d7ee245e0a45520ba3a813f0c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "7dc978907a3b435f98cfe63107929efd": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "8412fa5c43c44b02ae2693e62705385c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "84cf7979444c46409f547fc34fe5959f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_eda3a7954d6a49418962197d7b120072", - "placeholder": "​", - "style": "IPY_MODEL_3732ff34dde142e1a934ef62b4f2f4f9", - "value": " 2/2 [00:00<00:00, 106.82it/s]" - } - }, - "902d902b20c449a4aec44d90c66a44d9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "93d7c54a35494535a500550d73d22acb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ea8acd336a384c8793651542d6bb5167", - "IPY_MODEL_9867f7c33e24416faf662ec5366af2f1", - "IPY_MODEL_e023fa533e1a4059b8087be03f81ac9a" - ], - "layout": "IPY_MODEL_de682ca9943648579f74c077dec8bcfc" - } - }, - "97f3c530ddea4d2a92fd24a7bd1f36f4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_bac5002e328b47e29605b584e8f3d35c", - "placeholder": "​", - "style": "IPY_MODEL_70bcb268780e439098031084dff765e2", - "value": " 2/2 [00:00<00:00, 34.36it/s]" - } - }, - "9867f7c33e24416faf662ec5366af2f1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9e837cd94af54d01a4ba079f16b881bf", - "max": 6338, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_3a0a83c63061434887f2b9760fdf5281", - "value": 6338 - } - }, - "99e5a771b1c94d74bf5c3e70e15ad09f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_acf78f08f05043cdb3273d5c92c0df31", - "IPY_MODEL_f0b531f225234f79b4ead2fad8fe2751", - "IPY_MODEL_6f5f5d31a6f749158440b374c0950f64" - ], - "layout": "IPY_MODEL_00b9010d8b794a7594813f6894e5abfd" - } - }, - "9b067923d08f496cb2bad20ad7ef4697": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1c1c5e928d4641ac93cec178438487c0", - "placeholder": "​", - "style": "IPY_MODEL_219a467d434248128c8e91cec11b7a16", - "value": "Generating train split: 100%" - } - }, - "9b1f8961077d4cb895858f069b901d6b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d19247d43efa4f5395479c0091908812", - "placeholder": "​", - "style": "IPY_MODEL_6a31b14c2db641a8881bca8a33b59c54", - "value": "Extracting data files: 100%" - } - }, - "9b7068fd51bb463e88e65803dbbbbade": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "9db8cd674fa343c68c4cdea7728bc508": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "9de0c934fe3c48169110a5e9c44cf67a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ca226c7464284dd8ac497a021cb2cd79", - "placeholder": "​", - "style": "IPY_MODEL_d8e4d43b5dac4b859fd77ab1c63cee7e", - "value": "Downloading data: 100%" - } - }, - "9e837cd94af54d01a4ba079f16b881bf": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a0d5d3e4e2b24345aa002b6fdcd961a1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a309e1df709042d2a3e31df5f3426367": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a3d8351283934fdcb6c57470a12df1a1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a6739364524849378c94c89a72083871": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9de0c934fe3c48169110a5e9c44cf67a", - "IPY_MODEL_1f1ac3e94d9a482c863fcca0b3ffd976", - "IPY_MODEL_fb746c052b884ddfa5d47ab3e925a790" - ], - "layout": "IPY_MODEL_3e15aa279b304b3a81176762a144efee" - } - }, - "a8491ebf827e4829911cdb6f129dbd9b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4784d47e7f1140e29e97b9232d95e39d", - "placeholder": "​", - "style": "IPY_MODEL_9db8cd674fa343c68c4cdea7728bc508", - "value": " 5.03k/5.03k [00:00<00:00, 21.5kB/s]" - } - }, - "a87aec084388404a904b5e214f60eacc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "ac140d48d0984ca59e5e4fc437eff946": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d22c976637264867b789a32857ffc717", - "max": 30, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_cf6968f163624bb49e9f2fe5fb557b2d", - "value": 30 - } - }, - "ac97b8345ac449b6aeb13f3815ba614e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_34209e5556f045d1a8dcd42799cd5b07", - "IPY_MODEL_0913a4edc88e46e1bcb78a2eef6dbacd", - "IPY_MODEL_a8491ebf827e4829911cdb6f129dbd9b" - ], - "layout": "IPY_MODEL_297762bdcf7a40da868faba7ba524f33" - } - }, - "acf78f08f05043cdb3273d5c92c0df31": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_367c275138534c858c9313a36e154b10", - "placeholder": "​", - "style": "IPY_MODEL_7cb7ee5d7ee245e0a45520ba3a813f0c", - "value": "Downloading readme: 100%" - } - }, - "b27a1ac0f80443a18f51002768ef5883": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c7c4843952414605b4a3a526ff32ad4f", - "placeholder": "​", - "style": "IPY_MODEL_215f5ed3a7ab450d9bfc87d0e92c306d", - "value": "100%" - } - }, - "b503a56aec3a4b09ae141e0af4adac23": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b9d99330970c43db9a803bad08e87686": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ba728a77e57243e4b6a58c09d1d68c19": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a0d5d3e4e2b24345aa002b6fdcd961a1", - "max": 2, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_3a2ce5219b5349be87932029056fb270", - "value": 2 - } - }, - "bac5002e328b47e29605b584e8f3d35c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c65d24e786c34452ad44f04fa87a5131": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "c7c4843952414605b4a3a526ff32ad4f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ca226c7464284dd8ac497a021cb2cd79": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "cf6968f163624bb49e9f2fe5fb557b2d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "d19247d43efa4f5395479c0091908812": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d22c976637264867b789a32857ffc717": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d831eeae6fce4c1e952d3dddff336c44": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "d8e4d43b5dac4b859fd77ab1c63cee7e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "de682ca9943648579f74c077dec8bcfc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "df53731b5ee5449d905f0a8e9ed0979f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0f26cdb761b74c58b5002d3e592df69a", - "placeholder": "​", - "style": "IPY_MODEL_34c747c3411d48a5be4d7b858c7f1897", - "value": "Downloading data files: 100%" - } - }, - "e023fa533e1a4059b8087be03f81ac9a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a309e1df709042d2a3e31df5f3426367", - "placeholder": "​", - "style": "IPY_MODEL_fe27af60738749bda14625b756362aef", - "value": " 6.34k/6.34k [00:00<00:00, 238kB/s]" - } - }, - "ea8acd336a384c8793651542d6bb5167": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_75db171714734f49b05273ba2d42be11", - "placeholder": "​", - "style": "IPY_MODEL_1ced5374042343c48b7523e0db3b05ec", - "value": "Downloading builder script: 100%" - } - }, - "eda3a7954d6a49418962197d7b120072": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "eeb298e8c2d74439950325d4e01fc0c2": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f0b531f225234f79b4ead2fad8fe2751": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7dc978907a3b435f98cfe63107929efd", - "max": 1288, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_a87aec084388404a904b5e214f60eacc", - "value": 1288 - } - }, - "f148e78f04274ae9a6dca98e4cf6c832": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f2644660164f44b38a05172b51459ec1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f7cbcbd2d4594c6bae7c1f9aaf5d9106": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1b4b6a31b84641308d77ab04fc85912e", - "placeholder": "​", - "style": "IPY_MODEL_3fd2f15677bc4cb9adc119c6158d0ec0", - "value": " 119/119 [00:00<00:00, 926.36 examples/s]" - } - }, - "fb746c052b884ddfa5d47ab3e925a790": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0e1f107885b446e484e10d7c2bb3148d", - "placeholder": "​", - "style": "IPY_MODEL_d831eeae6fce4c1e952d3dddff336c44", - "value": " 14.2k/14.2k [00:00<00:00, 38.4kB/s]" - } - }, - "fc092df95b51432c9836b3e0ba7234f1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fe27af60738749bda14625b756362aef": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "ffdadb62b0d74b1ea816cbb1bb924d2e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } + "a87aec084388404a904b5e214f60eacc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ac140d48d0984ca59e5e4fc437eff946": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d22c976637264867b789a32857ffc717", + "max": 30, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cf6968f163624bb49e9f2fe5fb557b2d", + "value": 30 + } + }, + "ac97b8345ac449b6aeb13f3815ba614e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_34209e5556f045d1a8dcd42799cd5b07", + "IPY_MODEL_0913a4edc88e46e1bcb78a2eef6dbacd", + "IPY_MODEL_a8491ebf827e4829911cdb6f129dbd9b" + ], + "layout": "IPY_MODEL_297762bdcf7a40da868faba7ba524f33" + } + }, + "acf78f08f05043cdb3273d5c92c0df31": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_367c275138534c858c9313a36e154b10", + "placeholder": "​", + "style": "IPY_MODEL_7cb7ee5d7ee245e0a45520ba3a813f0c", + "value": "Downloading readme: 100%" + } + }, + "b27a1ac0f80443a18f51002768ef5883": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c7c4843952414605b4a3a526ff32ad4f", + "placeholder": "​", + "style": "IPY_MODEL_215f5ed3a7ab450d9bfc87d0e92c306d", + "value": "100%" + } + }, + "b503a56aec3a4b09ae141e0af4adac23": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b9d99330970c43db9a803bad08e87686": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba728a77e57243e4b6a58c09d1d68c19": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a0d5d3e4e2b24345aa002b6fdcd961a1", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3a2ce5219b5349be87932029056fb270", + "value": 2 + } + }, + "bac5002e328b47e29605b584e8f3d35c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c65d24e786c34452ad44f04fa87a5131": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c7c4843952414605b4a3a526ff32ad4f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ca226c7464284dd8ac497a021cb2cd79": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cf6968f163624bb49e9f2fe5fb557b2d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d19247d43efa4f5395479c0091908812": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d22c976637264867b789a32857ffc717": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d831eeae6fce4c1e952d3dddff336c44": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d8e4d43b5dac4b859fd77ab1c63cee7e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "de682ca9943648579f74c077dec8bcfc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df53731b5ee5449d905f0a8e9ed0979f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0f26cdb761b74c58b5002d3e592df69a", + "placeholder": "​", + "style": "IPY_MODEL_34c747c3411d48a5be4d7b858c7f1897", + "value": "Downloading data files: 100%" + } + }, + "e023fa533e1a4059b8087be03f81ac9a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a309e1df709042d2a3e31df5f3426367", + "placeholder": "​", + "style": "IPY_MODEL_fe27af60738749bda14625b756362aef", + "value": " 6.34k/6.34k [00:00<00:00, 238kB/s]" + } + }, + "ea8acd336a384c8793651542d6bb5167": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_75db171714734f49b05273ba2d42be11", + "placeholder": "​", + "style": "IPY_MODEL_1ced5374042343c48b7523e0db3b05ec", + "value": "Downloading builder script: 100%" + } + }, + "eda3a7954d6a49418962197d7b120072": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eeb298e8c2d74439950325d4e01fc0c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0b531f225234f79b4ead2fad8fe2751": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7dc978907a3b435f98cfe63107929efd", + "max": 1288, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a87aec084388404a904b5e214f60eacc", + "value": 1288 + } + }, + "f148e78f04274ae9a6dca98e4cf6c832": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f2644660164f44b38a05172b51459ec1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f7cbcbd2d4594c6bae7c1f9aaf5d9106": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1b4b6a31b84641308d77ab04fc85912e", + "placeholder": "​", + "style": "IPY_MODEL_3fd2f15677bc4cb9adc119c6158d0ec0", + "value": " 119/119 [00:00<00:00, 926.36 examples/s]" + } + }, + "fb746c052b884ddfa5d47ab3e925a790": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0e1f107885b446e484e10d7c2bb3148d", + "placeholder": "​", + "style": "IPY_MODEL_d831eeae6fce4c1e952d3dddff336c44", + "value": " 14.2k/14.2k [00:00<00:00, 38.4kB/s]" + } + }, + "fc092df95b51432c9836b3e0ba7234f1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fe27af60738749bda14625b756362aef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ffdadb62b0d74b1ea816cbb1bb924d2e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials/notebooks/training-textclassification-classyclassification-activelearning.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-classyclassification-activelearning.ipynb index 06aca04ff7..6f308e9d02 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-classyclassification-activelearning.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-classyclassification-activelearning.ipynb @@ -111,11 +111,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -139,7 +135,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -182,9 +178,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -257,11 +256,11 @@ "# Get some annotated examples per class\n", "n_samples_per_class = 5\n", "data = {\"World\": [], \"Sports\": [], \"Sci/Tech\": [], \"Business\": []}\n", - "while not all([len(value)== n_samples_per_class for key,value in data.items()]):\n", + "while not all([len(value) == n_samples_per_class for key, value in data.items()]):\n", " for idx, rec in enumerate(train_rg):\n", " if len(data[rec.annotation]) < n_samples_per_class:\n", " data[rec.annotation].append(rec.text)\n", - " \n", + "\n", "# Train a few-shot classifier\n", "classifier = ClassyClassifier(data=data, model=\"all-MiniLM-L6-v2\")\n", "classifier(\"This texts is about games, goals, matches and sports.\")" @@ -317,8 +316,9 @@ "settings = rg.TextClassificationSettings(label_schema=list(data.keys()))\n", "rg.configure_dataset_settings(name=DATASET_NAME, settings=settings)\n", "\n", + "\n", "# Evaluate and update records\n", - "def evaluate_records(records, idx = 0):\n", + "def evaluate_records(records, idx=0):\n", " texts = [rec.text for rec in records]\n", " predictions = [list(pred.items()) for pred in classifier.pipe(texts)]\n", " for pred, rec in zip(predictions, records):\n", @@ -330,6 +330,7 @@ " rec.metadata = {\"idx\": idx}\n", " return records\n", "\n", + "\n", "# Log initial predictions\n", "ds_slice = evaluate_records(ds[:NUM_SAMPLES_PER_LOOP])\n", "rg.log(ds[:NUM_SAMPLES_PER_LOOP], DATASET_NAME)" @@ -373,7 +374,7 @@ ")\n", "def active_learning_loop(records, ctx):\n", " idx = ctx.query_params[\"idx\"]\n", - " new_idx = idx+NUM_SAMPLES_PER_LOOP\n", + " new_idx = idx + NUM_SAMPLES_PER_LOOP\n", " print(\"1. train a few-shot classifier with validated data\")\n", " for rec in records:\n", " if rec.status == \"Validated\":\n", @@ -381,11 +382,11 @@ " classifier.set_training_data(loop_data)\n", "\n", " print(\"2. get new record predictions\")\n", - " ds_slice = ds[new_idx: new_idx+NUM_SAMPLES_PER_LOOP]\n", + " ds_slice = ds[new_idx : new_idx + NUM_SAMPLES_PER_LOOP]\n", " records_to_update = evaluate_records(ds_slice, new_idx)\n", " texts = [rec.text for rec in ds_slice]\n", " predictions = [list(pred.items()) for pred in classifier.pipe(texts)]\n", - " \n", + "\n", " print(\"3. update query params\")\n", " ctx.query_params[\"idx\"] = new_idx\n", "\n", diff --git a/docs/_source/tutorials/notebooks/training-textclassification-modal-activelearning.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-modal-activelearning.ipynb index a52a6cacc6..5a7dd07d3d 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-modal-activelearning.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-modal-activelearning.ipynb @@ -115,15 +115,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -132,6 +129,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -143,7 +141,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -176,11 +174,12 @@ "import numpy as np\n", "from urllib import request\n", "from pathlib import Path\n", - "from tempfile import TemporaryDirectory\n" + "from tempfile import TemporaryDirectory" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -191,14 +190,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -222,9 +225,8 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "train_df = pd.read_csv(\"data/active_learning/train.csv\")\n", - "test_df = pd.read_csv(\"data/active_learning/test.csv\")\n" + "test_df = pd.read_csv(\"data/active_learning/test.csv\")" ] }, { @@ -416,7 +418,7 @@ } ], "source": [ - "test_df\n" + "test_df" ] }, { @@ -452,9 +454,8 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# Define our classification model\n", - "classifier = MultinomialNB()\n" + "classifier = MultinomialNB()" ] }, { @@ -472,11 +473,10 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# Define active learner\n", "learner = ActiveLearner(\n", " estimator=classifier,\n", - ")\n" + ")" ] }, { @@ -496,12 +496,11 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# The resulting matrices will have the shape of (`nr of examples`, `nr of word n-grams`)\n", "vectorizer = CountVectorizer(ngram_range=(1, 5))\n", "\n", "X_train = vectorizer.fit_transform(train_df.CONTENT)\n", - "X_test = vectorizer.transform(test_df.CONTENT)\n" + "X_test = vectorizer.transform(test_df.CONTENT)" ] }, { @@ -540,7 +539,7 @@ "n_instances = 10\n", "\n", "# Accuracies after each iteration to keep track of our improvement\n", - "accuracies = []\n" + "accuracies = []" ] }, { @@ -561,7 +560,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# Query examples from our training pool with the most uncertain prediction\n", "query_idx, query_inst = learner.query(X_train, n_instances=n_instances)\n", "\n", @@ -570,7 +568,7 @@ " probabilities = learner.predict_proba(X_train[query_idx])\n", "# For the very first query we do not have any predictions\n", "except NotFittedError:\n", - " probabilities = [[0.5, 0.5]] * n_instances\n" + " probabilities = [[0.5, 0.5]] * n_instances" ] }, { @@ -580,7 +578,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "# Build the Argilla records\n", "records = [\n", " rg.TextClassificationRecord(\n", @@ -593,7 +590,7 @@ "]\n", "\n", "# Log the records\n", - "rg.log(records, name=\"active_learning_tutorial\")\n" + "rg.log(records, name=\"active_learning_tutorial\")" ] }, { @@ -626,7 +623,7 @@ "for i, record in enumerate(records):\n", " record.annotation = \"HAM\" if i % 2 == 0 else \"SPAM\"\n", "rg.log(records, name=\"active_learning_tutorial\")\n", - "###\n" + "###" ] }, { @@ -661,7 +658,7 @@ "learner.teach(X=X_train[query_idx], y=y_train.to_list())\n", "\n", "# Keep track of our improvement\n", - "accuracies.append(learner.score(X=X_test, y=test_df.CLASS))\n" + "accuracies.append(learner.score(X=X_test, y=test_df.CLASS))" ] }, { @@ -703,11 +700,10 @@ } ], "source": [ - "\n", "# Plot the accuracy versus the iteration number\n", "plt.plot(accuracies)\n", "plt.xlabel(\"Number of iterations\")\n", - "plt.ylabel(\"Accuracy\")\n" + "plt.ylabel(\"Accuracy\")" ] }, { @@ -740,7 +736,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "n_iterations = 150\n", "n_instances = 10\n", "random_samples = 50\n", @@ -778,7 +773,7 @@ " accuracies.append(learner.score(X=X_test, y=test_df.CLASS))\n", " accuracies_rnd.append(accuracies)\n", "\n", - "arr_max, arr_rnd = np.array(accuracies_max), np.array(accuracies_rnd)\n" + "arr_max, arr_rnd = np.array(accuracies_max), np.array(accuracies_rnd)" ] }, { @@ -830,7 +825,7 @@ "plt.title(\"Sampling strategies: Max uncertainty vs random\")\n", "plt.xlabel(\"Number of annotation iterations\")\n", "plt.ylabel(\"Accuracy\")\n", - "plt.legend([\"max uncertainty\", \"random sampling\"], loc=4)\n" + "plt.legend([\"max uncertainty\", \"random sampling\"], loc=4)" ] }, { @@ -848,20 +843,21 @@ "metadata": {}, "outputs": [], "source": [ - "\n", - "\n", "def load_data() -> pd.DataFrame:\n", " \"\"\"\n", " Downloads the [YouTube Spam Collection](http://www.dt.fee.unicamp.br/~tiago//youtubespamcollection/)\n", " and returns the data as a tuple with a train and test DataFrame.\n", " \"\"\"\n", - " links, data_df = [\n", - " \"http://lasid.sor.ufscar.br/labeling/datasets/9/download/\",\n", - " \"http://lasid.sor.ufscar.br/labeling/datasets/10/download/\",\n", - " \"http://lasid.sor.ufscar.br/labeling/datasets/11/download/\",\n", - " \"http://lasid.sor.ufscar.br/labeling/datasets/12/download/\",\n", - " \"http://lasid.sor.ufscar.br/labeling/datasets/13/download/\",\n", - " ], None\n", + " links, data_df = (\n", + " [\n", + " \"http://lasid.sor.ufscar.br/labeling/datasets/9/download/\",\n", + " \"http://lasid.sor.ufscar.br/labeling/datasets/10/download/\",\n", + " \"http://lasid.sor.ufscar.br/labeling/datasets/11/download/\",\n", + " \"http://lasid.sor.ufscar.br/labeling/datasets/12/download/\",\n", + " \"http://lasid.sor.ufscar.br/labeling/datasets/13/download/\",\n", + " ],\n", + " None,\n", + " )\n", "\n", " with TemporaryDirectory() as tmpdirname:\n", " dfs = []\n", @@ -880,7 +876,7 @@ "\n", "train_df, test_df = load_data()\n", "train_df.to_csv(\"data/active_learning/train.csv\", index=False)\n", - "test_df.to_csv(\"data/active_learning/test.csv\", index=False)\n" + "test_df.to_csv(\"data/active_learning/test.csv\", index=False)" ] } ], diff --git a/docs/_source/tutorials/notebooks/training-textclassification-setfit-fewshot.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-setfit-fewshot.ipynb index f1aa0c8f3f..3e25439ac6 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-setfit-fewshot.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-setfit-fewshot.ipynb @@ -115,15 +115,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -132,6 +129,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -143,7 +141,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -174,6 +172,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -184,14 +183,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -217,7 +220,7 @@ "\n", "unlabelled = rg.DatasetForTextClassification.from_datasets(unlabelled)\n", "\n", - "rg.log(unlabelled, \"imdb_unlabelled\")\n" + "rg.log(unlabelled, \"imdb_unlabelled\")" ] }, { diff --git a/docs/_source/tutorials/notebooks/training-textclassification-setfit-sentiment.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-setfit-sentiment.ipynb index 191e59ca44..7aa104c6ea 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-setfit-sentiment.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-setfit-sentiment.ipynb @@ -110,15 +110,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -127,6 +124,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -138,7 +136,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -170,6 +168,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -180,14 +179,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { diff --git a/docs/_source/tutorials/notebooks/training-textclassification-smalltext-activelearning.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-smalltext-activelearning.ipynb index 3d3eab42ba..30752d4245 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-smalltext-activelearning.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-smalltext-activelearning.ipynb @@ -131,15 +131,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -148,6 +145,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -159,7 +157,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -168,6 +166,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -178,14 +177,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -219,7 +222,7 @@ "source": [ "import datasets\n", "\n", - "trec = datasets.load_dataset(\"trec\", version=datasets.Version(\"2.0.0\"))\n" + "trec = datasets.load_dataset(\"trec\", version=datasets.Version(\"2.0.0\"))" ] }, { @@ -258,7 +261,7 @@ " transformer_model = \"bert-base-uncased\"\n", "\n", "# Init tokenizer\n", - "tokenizer = AutoTokenizer.from_pretrained(transformer_model)\n" + "tokenizer = AutoTokenizer.from_pretrained(transformer_model)" ] }, { @@ -290,7 +293,7 @@ "# Create the dataset for small-text\n", "dataset = TransformersDataset.from_arrays(\n", " train_text, train_labels, tokenizer, target_labels=target_labels\n", - ")\n" + ")" ] }, { @@ -314,7 +317,7 @@ "\n", "dataset_test = TransformersDataset.from_arrays(\n", " test_text, test_labels, tokenizer, target_labels=np.arange(num_classes)\n", - ")\n" + ")" ] }, { @@ -363,7 +366,7 @@ "clf_factory = TransformerBasedClassificationFactory(\n", " TransformerModelArguments(transformer_model),\n", " num_classes=6,\n", - " kwargs={\"verbosity\": 100}\n", + " kwargs={\"verbosity\": 100},\n", " # If you have a cuda device, specify it here.\n", " # Otherwise, just remove the following line.\n", " # kwargs={\"device\": \"cuda\"}\n", @@ -373,7 +376,7 @@ "query_strategy = BreakingTies()\n", "\n", "# Use the active learner with a pool containing all unlabeled data\n", - "active_learner = PoolBasedActiveLearner(clf_factory, query_strategy, dataset)\n" + "active_learner = PoolBasedActiveLearner(clf_factory, query_strategy, dataset)" ] }, { @@ -403,7 +406,7 @@ "NUM_SAMPLES = 20\n", "\n", "# Randomly draw an initial subset from the data pool\n", - "initial_indices = random_initialization(dataset, NUM_SAMPLES)\n" + "initial_indices = random_initialization(dataset, NUM_SAMPLES)" ] }, { @@ -455,7 +458,7 @@ "]\n", "\n", "# Log the initial records to Argilla\n", - "rg.log(records, DATASET_NAME)\n" + "rg.log(records, DATASET_NAME)" ] }, { @@ -484,6 +487,7 @@ "LABEL2INT = trec[\"train\"].features[\"coarse_label\"].str2int\n", "ACCURACIES = []\n", "\n", + "\n", "# Set up the active learning loop with the listener decorator\n", "@listener(\n", " dataset=DATASET_NAME,\n", @@ -537,7 +541,7 @@ " ctx.query_params[\"batch_id\"] = new_batch\n", " print(\"Done!\")\n", "\n", - " print(\"Waiting for annotations ...\")\n" + " print(\"Waiting for annotations ...\")" ] }, { @@ -563,7 +567,7 @@ "metadata": {}, "outputs": [], "source": [ - "active_learning_loop.start()\n" + "active_learning_loop.start()" ] }, { @@ -606,7 +610,7 @@ "source": [ "import pandas as pd\n", "\n", - "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")\n" + "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")" ] }, { @@ -625,7 +629,7 @@ "metadata": {}, "outputs": [], "source": [ - "active_learning_loop.stop()\n" + "active_learning_loop.stop()" ] }, { diff --git a/docs/_source/tutorials/notebooks/training-textclassification-transformers-pretrained.ipynb b/docs/_source/tutorials/notebooks/training-textclassification-transformers-pretrained.ipynb index 84590d7082..de51f12138 100644 --- a/docs/_source/tutorials/notebooks/training-textclassification-transformers-pretrained.ipynb +++ b/docs/_source/tutorials/notebooks/training-textclassification-transformers-pretrained.ipynb @@ -118,15 +118,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -135,6 +132,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -146,7 +144,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -181,6 +179,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -191,14 +190,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -338,6 +341,7 @@ "def predict(examples):\n", " return {\"predictions\": sentiment_classifier(examples[\"text\"], truncation=True)}\n", "\n", + "\n", "# Add .select(range(10)) before map if you just want to test this quickly with 10 examples\n", "to_label1 = to_label1.map(predict, batched=True, batch_size=4)" ] @@ -385,7 +389,7 @@ " prediction_agent=\"distilbert-base-uncased-finetuned-sst-2-english\",\n", " )\n", " records.append(record)\n", - " \n", + "\n", "rg.log(name=\"labeling_with_pretrained\", records=records)" ] }, @@ -603,9 +607,11 @@ " \"distilbert-base-uncased-finetuned-sst-2-english\"\n", ")\n", "\n", + "\n", "def tokenize_function(examples):\n", " return tokenizer(examples[\"text\"], padding=\"max_length\", truncation=True)\n", "\n", + "\n", "tokenized_train_ds = train_ds.map(tokenize_function, batched=True)\n", "\n", "# Split the data into a training and evaluation set\n", @@ -646,11 +652,13 @@ "\n", "metric = load_metric(\"accuracy\")\n", "\n", + "\n", "def compute_metrics(eval_pred):\n", " logits, labels = eval_pred\n", " predictions = np.argmax(logits, axis=-1)\n", " return metric.compute(predictions=predictions, references=labels)\n", "\n", + "\n", "trainer = Trainer(\n", " args=training_args,\n", " model=model,\n", @@ -720,9 +728,12 @@ "metadata": {}, "outputs": [], "source": [ - "finetuned_sentiment_classifier(\n", - " \"I need to deposit my virtual card, how do i do that.\"\n", - "), sentiment_classifier(\"I need to deposit my virtual card, how do i do that.\")" + "(\n", + " finetuned_sentiment_classifier(\n", + " \"I need to deposit my virtual card, how do i do that.\"\n", + " ),\n", + " sentiment_classifier(\"I need to deposit my virtual card, how do i do that.\"),\n", + ")" ] }, { @@ -742,9 +753,10 @@ "metadata": {}, "outputs": [], "source": [ - "finetuned_sentiment_classifier(\n", - " \"Why is my payment still pending?\"\n", - "), sentiment_classifier(\"Why is my payment still pending?\")" + "(\n", + " finetuned_sentiment_classifier(\"Why is my payment still pending?\"),\n", + " sentiment_classifier(\"Why is my payment still pending?\"),\n", + ")" ] }, { @@ -770,6 +782,7 @@ "source": [ "rb_dataset = rg.load(name=\"labeling_with_pretrained\", query=\"status:Default\")\n", "\n", + "\n", "def predict(examples):\n", " texts = [example[\"text\"] for example in examples[\"inputs\"]]\n", " return {\n", @@ -778,6 +791,7 @@ " * len(texts),\n", " }\n", "\n", + "\n", "ds_dataset = rb_dataset.to_datasets().map(predict, batched=True, batch_size=8)\n", "\n", "records = rg.read_datasets(ds_dataset, task=\"TextClassification\")\n", diff --git a/docs/_source/tutorials/notebooks/training-textgeneration-unstructured.ipynb b/docs/_source/tutorials/notebooks/training-textgeneration-unstructured.ipynb index 947307ef31..020ece0da7 100644 --- a/docs/_source/tutorials/notebooks/training-textgeneration-unstructured.ipynb +++ b/docs/_source/tutorials/notebooks/training-textgeneration-unstructured.ipynb @@ -116,15 +116,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -133,6 +130,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -144,7 +142,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -183,12 +181,14 @@ "from unstructured.staging.argilla import stage_for_argilla\n", "\n", "import nltk\n", - "nltk.download('averaged_perceptron_tagger')\n", - "nltk.download('punkt')" + "\n", + "nltk.download(\"averaged_perceptron_tagger\")\n", + "nltk.download(\"punkt\")" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -199,14 +199,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -234,6 +238,7 @@ "source": [ "ISW_BASE_URL = \"https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment\"\n", "\n", + "\n", "def datetime_to_url(dt):\n", " month = dt.strftime(\"%B\").lower()\n", " return f\"{ISW_BASE_URL}-{month}-{dt.day}\"" @@ -274,8 +279,8 @@ " r = requests.get(url)\n", " if r.status_code != 200:\n", " return None\n", - " \n", - " elements = partition_html(text=r.text) \n", + "\n", + " elements = partition_html(text=r.text)\n", " return elements" ] }, @@ -302,13 +307,14 @@ " if element.text == \"Key Takeaways\":\n", " return idx\n", "\n", + "\n", "def get_key_takeaways(elements):\n", " key_takeaways_idx = _find_key_takeaways_idx(elements)\n", " if not key_takeaways_idx:\n", " return None\n", - " \n", + "\n", " takeaways = []\n", - " for element in elements[key_takeaways_idx + 1:]:\n", + " for element in elements[key_takeaways_idx + 1 :]:\n", " if not isinstance(element, ListItem):\n", " break\n", " takeaways.append(element)\n", @@ -362,12 +368,12 @@ "source": [ "def get_narrative(elements):\n", " narrative_text = \"\"\n", - " for element in elements: \n", + " for element in elements:\n", " if isinstance(element, NarrativeText) and len(element.text) > 500:\n", " # NOTE: Removes citations like [3] from the text\n", " element_text = re.sub(\"\\[\\d{1,3}\\]\", \"\", element.text)\n", " narrative_text += f\"\\n\\n{element_text}\"\n", - " \n", + "\n", " return NarrativeText(text=narrative_text.strip())" ] }, @@ -415,10 +421,10 @@ " elements = url_to_elements(url)\n", " if url is None or not elements:\n", " continue\n", - " \n", + "\n", " text = get_narrative(elements)\n", " annotation = get_key_takeaways(elements)\n", - " \n", + "\n", " if text and annotation:\n", " inputs.append(text)\n", " annotations.append(annotation.text)\n", @@ -677,7 +683,7 @@ "outputs": [], "source": [ "from transformers import AutoTokenizer\n", - " \n", + "\n", "tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)" ] }, @@ -691,13 +697,16 @@ "max_input_length = 1024\n", "max_target_length = 128\n", "\n", + "\n", "def preprocess_function(examples):\n", " inputs = [doc for doc in examples[\"text\"]]\n", " model_inputs = tokenizer(inputs, max_length=max_input_length, truncation=True)\n", "\n", " # Set up the tokenizer for targets\n", " with tokenizer.as_target_tokenizer():\n", - " labels = tokenizer(examples[\"annotation\"], max_length=max_target_length, truncation=True)\n", + " labels = tokenizer(\n", + " examples[\"annotation\"], max_length=max_target_length, truncation=True\n", + " )\n", "\n", " model_inputs[\"labels\"] = labels[\"input_ids\"]\n", " return model_inputs" @@ -720,7 +729,12 @@ "metadata": {}, "outputs": [], "source": [ - "from transformers import AutoModelForSeq2SeqLM, DataCollatorForSeq2Seq, Seq2SeqTrainingArguments, Seq2SeqTrainer\n", + "from transformers import (\n", + " AutoModelForSeq2SeqLM,\n", + " DataCollatorForSeq2Seq,\n", + " Seq2SeqTrainingArguments,\n", + " Seq2SeqTrainer,\n", + ")\n", "\n", "model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)" ] @@ -736,7 +750,7 @@ "model_name = model_checkpoint.split(\"/\")[-1]\n", "args = Seq2SeqTrainingArguments(\n", " \"t5-small-isw-summaries\",\n", - " evaluation_strategy = \"epoch\",\n", + " evaluation_strategy=\"epoch\",\n", " learning_rate=2e-5,\n", " per_device_train_batch_size=batch_size,\n", " per_device_eval_batch_size=batch_size,\n", @@ -804,8 +818,8 @@ "outputs": [], "source": [ "summarization_model = pipeline(\n", - "task=\"summarization\",\n", - "model=\"./t5-small-isw-summaries\",\n", + " task=\"summarization\",\n", + " model=\"./t5-small-isw-summaries\",\n", ")" ] }, diff --git a/docs/_source/tutorials_and_integrations/integrations/add_sentence_transformers_embeddings_as_vectors.ipynb b/docs/_source/tutorials_and_integrations/integrations/add_sentence_transformers_embeddings_as_vectors.ipynb index 080a7795d1..30a8c6aed7 100644 --- a/docs/_source/tutorials_and_integrations/integrations/add_sentence_transformers_embeddings_as_vectors.ipynb +++ b/docs/_source/tutorials_and_integrations/integrations/add_sentence_transformers_embeddings_as_vectors.ipynb @@ -92,7 +92,9 @@ "outputs": [], "source": [ "import argilla as rg\n", - "from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor" + "from argilla.client.feedback.integrations.sentencetransformers import (\n", + " SentenceTransformersExtractor,\n", + ")" ] }, { @@ -111,11 +113,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"argilla\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"argilla\")" ] }, { @@ -138,7 +136,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -161,9 +159,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -244,8 +245,8 @@ "source": [ "# Initialize the SentenceTransformersExtractor\n", "ste = SentenceTransformersExtractor(\n", - " model = \"TaylorAI/bge-micro-v2\", # Use a model from https://huggingface.co/models?library=sentence-transformers\n", - " show_progress = False,\n", + " model=\"TaylorAI/bge-micro-v2\", # Use a model from https://huggingface.co/models?library=sentence-transformers\n", + " show_progress=False,\n", ")" ] }, @@ -271,8 +272,8 @@ "# Update the records\n", "updated_records = ste.update_records(\n", " records=ds_remote.records,\n", - " fields=None, # Use all fields\n", - " overwrite=True, # Overwrite existing fields\n", + " fields=None, # Use all fields\n", + " overwrite=True, # Overwrite existing fields\n", ")" ] }, @@ -321,10 +322,10 @@ "source": [ "# Update the dataset\n", "ste.update_dataset(\n", - " dataset=ds_remote, \n", - " fields=[\"context\"], # Only update the context field\n", - " update_records=True, # Update the records in the dataset\n", - " overwrite=False, # Overwrite existing fields\n", + " dataset=ds_remote,\n", + " fields=[\"context\"], # Only update the context field\n", + " update_records=True, # Update the records in the dataset\n", + " overwrite=False, # Overwrite existing fields\n", ")" ] }, diff --git a/docs/_source/tutorials_and_integrations/integrations/add_text_descriptives_as_metadata.ipynb b/docs/_source/tutorials_and_integrations/integrations/add_text_descriptives_as_metadata.ipynb index 40590dcee3..f434dccfeb 100644 --- a/docs/_source/tutorials_and_integrations/integrations/add_text_descriptives_as_metadata.ipynb +++ b/docs/_source/tutorials_and_integrations/integrations/add_text_descriptives_as_metadata.ipynb @@ -99,7 +99,9 @@ "outputs": [], "source": [ "import argilla as rg\n", - "from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", + "from argilla.client.feedback.integrations.textdescriptives import (\n", + " TextDescriptivesExtractor,\n", + ")\n", "\n", "from datasets import load_dataset" ] @@ -120,11 +122,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -147,7 +145,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -170,9 +168,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -334,10 +335,10 @@ "source": [ "# Initialize the TextDescriptivesExtractor\n", "tde = TextDescriptivesExtractor(\n", - " model = \"en\",\n", - " metrics = None,\n", - " visible_for_annotators = False,\n", - " show_progress = True,\n", + " model=\"en\",\n", + " metrics=None,\n", + " visible_for_annotators=False,\n", + " show_progress=True,\n", ")" ] }, @@ -432,10 +433,10 @@ "source": [ "# Initialize the TextDescriptivesExtractor\n", "tde = TextDescriptivesExtractor(\n", - " model = \"en\",\n", - " metrics = [\"descriptive_stats\", \"readability\"],\n", - " visible_for_annotators = True,\n", - " show_progress = True,\n", + " model=\"en\",\n", + " metrics=[\"descriptive_stats\", \"readability\"],\n", + " visible_for_annotators=True,\n", + " show_progress=True,\n", ")" ] }, diff --git a/docs/_source/tutorials_and_integrations/integrations/llama_index.ipynb b/docs/_source/tutorials_and_integrations/integrations/llama_index.ipynb index c05673983d..3a610618d4 100644 --- a/docs/_source/tutorials_and_integrations/integrations/llama_index.ipynb +++ b/docs/_source/tutorials_and_integrations/integrations/llama_index.ipynb @@ -98,16 +98,17 @@ "metadata": {}, "outputs": [], "source": [ - "from llama_index.core import VectorStoreIndex, ServiceContext, SimpleDirectoryReader, set_global_handler\n", + "from llama_index.core import (\n", + " VectorStoreIndex,\n", + " ServiceContext,\n", + " SimpleDirectoryReader,\n", + " set_global_handler,\n", + ")\n", "from llama_index.llms.openai import OpenAI\n", "\n", "import argilla as rg\n", "\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/integrations/monitor_endpoints with_fastapi.ipynb b/docs/_source/tutorials_and_integrations/integrations/monitor_endpoints with_fastapi.ipynb index 025229b556..fdb997be76 100644 --- a/docs/_source/tutorials_and_integrations/integrations/monitor_endpoints with_fastapi.ipynb +++ b/docs/_source/tutorials_and_integrations/integrations/monitor_endpoints with_fastapi.ipynb @@ -128,10 +128,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -159,7 +156,7 @@ "\n", "# for adding logging to API endpoints\n", "from argilla.monitoring.asgi import (\n", - " ArgillaLogHTTPMiddleware, \n", + " ArgillaLogHTTPMiddleware,\n", " text_classification_mapper,\n", " token_classification_mapper,\n", ")\n", @@ -384,11 +381,12 @@ " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/transformers/\", # the endpoint that will be logged\n", " dataset=\"monitoring_transformers\", # your dataset name\n", - " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", + " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", ")" ] }, @@ -416,6 +414,7 @@ " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/spacy/\",\n", @@ -423,6 +422,7 @@ " records_mapper=token2records,\n", ")\n", "\n", + "\n", "# prediction endpoint using spacy pipeline\n", "@app.post(\"/ner/\")\n", "def predict_spacy(batch: List[str]):\n", @@ -535,8 +535,8 @@ "import requests\n", "\n", "response = requests.post(\n", - " \"http://localhost:8000/sentiment/\", \n", - " json=[\"I like Argilla\", \"I hated data labelling but now I don't\"]\n", + " \"http://localhost:8000/sentiment/\",\n", + " json=[\"I like Argilla\", \"I hated data labelling but now I don't\"],\n", ")\n", "\n", "response.content" @@ -583,7 +583,7 @@ "from transformers import pipeline\n", "\n", "from argilla.monitoring.asgi import (\n", - " ArgillaLogHTTPMiddleware, \n", + " ArgillaLogHTTPMiddleware,\n", " text_classification_mapper,\n", " token_classification_mapper,\n", ")\n", @@ -593,6 +593,7 @@ "\n", "app = FastAPI()\n", "\n", + "\n", "# prediction endpoint using transformers pipeline\n", "@app.post(\"/sentiment/\")\n", "def predict_transformers(batch: List[str]):\n", @@ -605,25 +606,29 @@ " for prediction in predictions\n", " ]\n", "\n", + "\n", "def text2records(batch: List[str], outputs: List[dict]):\n", " return [\n", " text_classification_mapper(data, prediction)\n", " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/transformers/\", # the endpoint that will be logged\n", " dataset=\"monitoring_transformers\", # your dataset name\n", - " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", + " records_mapper=text2records, # your post-process func to adapt service inputs and outputs into an Argilla record\n", ")\n", "\n", + "\n", "def token2records(batch: List[str], outputs: List[dict]):\n", " return [\n", " token_classification_mapper(data, prediction)\n", " for data, prediction in zip(batch, outputs)\n", " ]\n", "\n", + "\n", "# prediction endpoint using spacy pipeline\n", "@app.post(\"/ner/\")\n", "def predict_spacy(batch: List[str]):\n", @@ -643,6 +648,7 @@ " predictions.append(prediction)\n", " return predictions\n", "\n", + "\n", "app.add_middleware(\n", " ArgillaLogHTTPMiddleware,\n", " api_endpoint=\"/ner/\",\n", @@ -657,14 +663,13 @@ " records_mapper=text2records,\n", ")\n", "\n", + "\n", "@app.get(\"/\")\n", "def root():\n", " return {\"message\": \"alive\"}\n", "\n", - "argilla.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "\n", + "argilla.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] } ], diff --git a/docs/_source/tutorials_and_integrations/integrations/process_documents_with_unstructured.ipynb b/docs/_source/tutorials_and_integrations/integrations/process_documents_with_unstructured.ipynb index 01af30ac5f..1a83d5b03f 100644 --- a/docs/_source/tutorials_and_integrations/integrations/process_documents_with_unstructured.ipynb +++ b/docs/_source/tutorials_and_integrations/integrations/process_documents_with_unstructured.ipynb @@ -113,14 +113,12 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -129,6 +127,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -139,7 +138,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -177,7 +176,8 @@ "from unstructured.staging.argilla import stage_for_argilla\n", "\n", "import nltk\n", - "nltk.download('averaged_perceptron_tagger')" + "\n", + "nltk.download(\"averaged_perceptron_tagger\")" ] }, { @@ -205,6 +205,7 @@ "source": [ "ISW_BASE_URL = \"https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment\"\n", "\n", + "\n", "def datetime_to_url(dt):\n", " month = dt.strftime(\"%B\").lower()\n", " return f\"{ISW_BASE_URL}-{month}-{dt.day}\"" @@ -245,8 +246,8 @@ " r = requests.get(url)\n", " if r.status_code != 200:\n", " return None\n", - " \n", - " elements = partition_html(text=r.text) \n", + "\n", + " elements = partition_html(text=r.text)\n", " return elements" ] }, @@ -273,13 +274,14 @@ " if element.text == \"Key Takeaways\":\n", " return idx\n", "\n", + "\n", "def get_key_takeaways(elements):\n", " key_takeaways_idx = _find_key_takeaways_idx(elements)\n", " if not key_takeaways_idx:\n", " return None\n", - " \n", + "\n", " takeaways = []\n", - " for element in elements[key_takeaways_idx + 1:]:\n", + " for element in elements[key_takeaways_idx + 1 :]:\n", " if not isinstance(element, ListItem):\n", " break\n", " takeaways.append(element)\n", @@ -333,12 +335,12 @@ "source": [ "def get_narrative(elements):\n", " narrative_text = \"\"\n", - " for element in elements: \n", + " for element in elements:\n", " if isinstance(element, NarrativeText) and len(element.text) > 500:\n", " # NOTE: Removes citations like [3] from the text\n", " element_text = re.sub(\"\\[\\d{1,3}\\]\", \"\", element.text)\n", " narrative_text += f\"\\n\\n{element_text}\"\n", - " \n", + "\n", " return NarrativeText(text=narrative_text.strip())" ] }, @@ -386,10 +388,10 @@ " elements = url_to_elements(url)\n", " if url is None or not elements:\n", " continue\n", - " \n", + "\n", " text = get_narrative(elements)\n", " annotation = get_key_takeaways(elements)\n", - " \n", + "\n", " if text and annotation:\n", " inputs.append(text)\n", " annotations.append(annotation.text)\n", @@ -648,7 +650,7 @@ "outputs": [], "source": [ "from transformers import AutoTokenizer\n", - " \n", + "\n", "tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)" ] }, @@ -662,13 +664,16 @@ "max_input_length = 1024\n", "max_target_length = 128\n", "\n", + "\n", "def preprocess_function(examples):\n", " inputs = [doc for doc in examples[\"text\"]]\n", " model_inputs = tokenizer(inputs, max_length=max_input_length, truncation=True)\n", "\n", " # Setup the tokenizer for targets\n", " with tokenizer.as_target_tokenizer():\n", - " labels = tokenizer(examples[\"annotation\"], max_length=max_target_length, truncation=True)\n", + " labels = tokenizer(\n", + " examples[\"annotation\"], max_length=max_target_length, truncation=True\n", + " )\n", "\n", " model_inputs[\"labels\"] = labels[\"input_ids\"]\n", " return model_inputs" @@ -691,7 +696,12 @@ "metadata": {}, "outputs": [], "source": [ - "from transformers import AutoModelForSeq2SeqLM, DataCollatorForSeq2Seq, Seq2SeqTrainingArguments, Seq2SeqTrainer\n", + "from transformers import (\n", + " AutoModelForSeq2SeqLM,\n", + " DataCollatorForSeq2Seq,\n", + " Seq2SeqTrainingArguments,\n", + " Seq2SeqTrainer,\n", + ")\n", "\n", "model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)" ] @@ -707,7 +717,7 @@ "model_name = model_checkpoint.split(\"/\")[-1]\n", "args = Seq2SeqTrainingArguments(\n", " \"t5-small-isw-summaries\",\n", - " evaluation_strategy = \"epoch\",\n", + " evaluation_strategy=\"epoch\",\n", " learning_rate=2e-5,\n", " per_device_train_batch_size=batch_size,\n", " per_device_eval_batch_size=batch_size,\n", @@ -775,8 +785,8 @@ "outputs": [], "source": [ "summarization_model = pipeline(\n", - "task=\"summarization\",\n", - "model=\"./t5-small-isw-summaries\",\n", + " task=\"summarization\",\n", + " model=\"./t5-small-isw-summaries\",\n", ")" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/curating-feedback-instructiondataset.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/curating-feedback-instructiondataset.ipynb index e18007b4a7..efc72077fb 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/curating-feedback-instructiondataset.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/curating-feedback-instructiondataset.ipynb @@ -90,10 +90,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\")" ] }, { @@ -116,7 +113,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -139,9 +136,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -432,14 +432,25 @@ "outputs": [], "source": [ "# format the data as Argilla records\n", - "records = [rg.FeedbackRecord(fields={\"category\": record[\"category\"], \"instruction\": record[\"instruction\"], \"response\": record[\"response\"], \"context\": record[\"context\"]}, external_id=record['id']) for record in data]\n", + "records = [\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"category\": record[\"category\"],\n", + " \"instruction\": record[\"instruction\"],\n", + " \"response\": record[\"response\"],\n", + " \"context\": record[\"context\"],\n", + " },\n", + " external_id=record[\"id\"],\n", + " )\n", + " for record in data\n", + "]\n", "\n", "# list of fields that we will use later for our dataset settings\n", "fields = [\n", " rg.TextField(name=\"category\", title=\"Task category\"),\n", " rg.TextField(name=\"instruction\"),\n", " rg.TextField(name=\"context\", title=\"Input\", required=False),\n", - " rg.TextField(name=\"response\")\n", + " rg.TextField(name=\"response\"),\n", "]" ] }, @@ -458,25 +469,25 @@ "outputs": [], "source": [ "# list of questions to display in the feedback form\n", - "questions =[\n", + "questions = [\n", " rg.TextQuestion(\n", " name=\"new-instruction\",\n", " title=\"Final instruction:\",\n", " description=\"Write the final version of the instruction, making sure that it matches the task category. If the original instruction is ok, copy and paste it here.\",\n", - " required=True\n", + " required=True,\n", " ),\n", " rg.TextQuestion(\n", " name=\"new-input\",\n", " title=\"Final input:\",\n", " description=\"Write the final version of the input, making sure that it makes sense with the task category. If the original input is ok, copy and paste it here. If an input is not needed, leave this empty.\",\n", - " required=False\n", + " required=False,\n", " ),\n", " rg.TextQuestion(\n", " name=\"new-response\",\n", " title=\"Final response:\",\n", " description=\"Write the final version of the response, making sure that it matches the task category and makes sense for the instruction (and input) provided. If the original response is ok, copy and paste it here.\",\n", - " required=True\n", - " )\n", + " required=True,\n", + " ),\n", "]\n", "\n", "guidelines = \"In this dataset, you will find a collection of records that show a category, an instruction, an input and a response to that instruction. The aim of the project is to correct the instructions, input and responses to make sure they are of the highest quality and that they match the task category that they belong to. All three texts should be clear and include real information. In addition, the response should be as complete but concise as possible.\\n\\nTo curate the dataset, you will need to provide an answer to the following text fields:\\n\\n1 - Final instruction:\\nThe final version of the instruction field. You may copy it using the copy icon in the instruction field. Leave it as it is if it's ok or apply any necessary corrections. Remember to change the instruction if it doesn't represent well the task category of the record.\\n\\n2 - Final input:\\nThe final version of the instruction field. You may copy it using the copy icon in the input field. Leave it as it is if it's ok or apply any necessary corrections. If the task category and instruction don't need of an input to be completed, leave this question blank.\\n\\n3 - Final response:\\nThe final version of the response field. You may copy it using the copy icon in the response field. Leave it as it is if it's ok or apply any necessary corrections. Check that the response makes sense given all the fields above.\\n\\nYou will need to provide at least an instruction and a response for all records. If you are not sure about a record and you prefer not to provide a response, click Discard.\"" @@ -504,7 +515,7 @@ "metadata": {}, "outputs": [], "source": [ - "users = [user for user in rg.User.list() if user.role =='annotator']" + "users = [user for user in rg.User.list() if user.role == \"annotator\"]" ] }, { @@ -530,28 +541,26 @@ "# divide your records in chunks of the same length as the users list and make the assignments\n", "# you will need to follow the instructions to create and push a dataset for each of the key-value pairs in this dictionary\n", "n = len(users)\n", - "chunked_records = [records[i:i + n] for i in range(0, len(records), n)]\n", + "chunked_records = [records[i : i + n] for i in range(0, len(records), n)]\n", "for chunk in chunked_records:\n", " for idx, record in enumerate(chunk):\n", " assignments[users[idx].username].append(record)\n", "\n", - "for username,records in assignments.items():\n", + "for username, records in assignments.items():\n", " # check that the user has a personal workspace and create it if not\n", " try:\n", " workspace = rg.Workspace.from_name(username)\n", - " except: \n", + " except:\n", " workspace = rg.Workspace.create(username)\n", " user = rg.User.from_name(username)\n", " workspace.add_user(user.id)\n", "\n", " # create a dataset for each annotator and push it to their personal workspace\n", " dataset = rg.FeedbackDataset(\n", - " guidelines=guidelines,\n", - " fields=fields,\n", - " questions=questions\n", + " guidelines=guidelines, fields=fields, questions=questions\n", " )\n", " dataset.add_records(records)\n", - " dataset.push_to_argilla(name='curate_dolly', workspace=workspace.name)" + " dataset.push_to_argilla(name=\"curate_dolly\", workspace=workspace.name)" ] }, { @@ -571,7 +580,7 @@ "source": [ "feedback = []\n", "for username in assignments.keys():\n", - " feedback.extend(rg.FeedbackDataset.from_argilla('curate_dolly', workspace=username))" + " feedback.extend(rg.FeedbackDataset.from_argilla(\"curate_dolly\", workspace=username))" ] }, { @@ -593,25 +602,31 @@ "for record in feedback:\n", " if record.responses is None or len(record.responses) == 0:\n", " continue\n", - " \n", + "\n", " # we should only have 1 response per record, so we can safely use the first one only\n", " response = record.responses[0]\n", "\n", - " if response.status != 'submitted':\n", + " if response.status != \"submitted\":\n", " changes = []\n", " else:\n", " changes = []\n", - " if response.values['new-instruction'].value != record.fields['instruction']:\n", - " changes.append('instruction')\n", - " if response.values['new-input'].value != record.fields['context']:\n", - " changes.append('input')\n", - " if response.values['new-response'].value != record.fields['response']:\n", - " changes.append('response')\n", - "\n", - " responses.append({'status': response.status, 'category': record.fields['category'], 'changes': ','.join(changes)})\n", + " if response.values[\"new-instruction\"].value != record.fields[\"instruction\"]:\n", + " changes.append(\"instruction\")\n", + " if response.values[\"new-input\"].value != record.fields[\"context\"]:\n", + " changes.append(\"input\")\n", + " if response.values[\"new-response\"].value != record.fields[\"response\"]:\n", + " changes.append(\"response\")\n", + "\n", + " responses.append(\n", + " {\n", + " \"status\": response.status,\n", + " \"category\": record.fields[\"category\"],\n", + " \"changes\": \",\".join(changes),\n", + " }\n", + " )\n", "\n", "responses_df = pd.DataFrame(responses)\n", - "responses_df = responses_df.replace('', 'None')" + "responses_df = responses_df.replace(\"\", \"None\")" ] }, { @@ -620,7 +635,7 @@ "metadata": {}, "outputs": [], "source": [ - "fig = px.histogram(responses_df, x='status')\n", + "fig = px.histogram(responses_df, x=\"status\")\n", "fig.show()" ] }, @@ -650,8 +665,8 @@ "metadata": {}, "outputs": [], "source": [ - "fig = px.histogram(responses_df.loc[responses_df['status']=='submitted'], x='changes')\n", - "fig.update_xaxes(categoryorder='total descending')\n", + "fig = px.histogram(responses_df.loc[responses_df[\"status\"] == \"submitted\"], x=\"changes\")\n", + "fig.update_xaxes(categoryorder=\"total descending\")\n", "fig.update_layout(bargap=0.2)\n", "fig.show()" ] @@ -693,13 +708,13 @@ " # we should only have 1 response per record, so we can safely use the first one only\n", " response = record.responses[0]\n", " # we will skip records where our annotators didn't submit their feedback\n", - " if response.status != 'submitted':\n", + " if response.status != \"submitted\":\n", " continue\n", "\n", - " record.fields['instruction'] = response.values['new-instruction'].value\n", - " record.fields['context'] = response.values['new-input'].value\n", - " record.fields['response'] = response.values['new-response'].value\n", - " \n", + " record.fields[\"instruction\"] = response.values[\"new-instruction\"].value\n", + " record.fields[\"context\"] = response.values[\"new-input\"].value\n", + " record.fields[\"response\"] = response.values[\"new-response\"].value\n", + "\n", " new_records.append(record.fields)" ] }, @@ -930,7 +945,7 @@ "metadata": {}, "outputs": [], "source": [ - "#push to hub\n", + "# push to hub\n", "new_dataset = Dataset(new_records)\n", "new_dataset.push_to_hub(\".../curated_databricks-dolly-15k\")" ] diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-metadata-003.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-metadata-003.ipynb index 5724277807..afab07b48e 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-metadata-003.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-metadata-003.ipynb @@ -187,9 +187,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -807,19 +810,9 @@ "source": [ "filtered_records = dataset_remote.filter_by(\n", " metadata_filters=[\n", - " rg.TermsMetadataFilter(\n", - " name=\"group\",\n", - " values=[\"group-1\", \"group-2\"]\n", - " ),\n", - " rg.IntegerMetadataFilter(\n", - " name=\"length\",\n", - " le=282\n", - " ),\n", - " rg.FloatMetadataFilter(\n", - " name=\"length_std\",\n", - " ge=204, \n", - " le=290\n", - " ), \n", + " rg.TermsMetadataFilter(name=\"group\", values=[\"group-1\", \"group-2\"]),\n", + " rg.IntegerMetadataFilter(name=\"length\", le=282),\n", + " rg.FloatMetadataFilter(name=\"length_std\", ge=204, le=290),\n", " ]\n", ")\n", "\n", @@ -843,25 +836,15 @@ "\n", "filtered_dataset = dataset_remote.filter_by(\n", " metadata_filters=[\n", - " rg.TermsMetadataFilter(\n", - " name=\"group\",\n", - " values=[\"group-1\", \"group-2\"]\n", - " ),\n", - " rg.IntegerMetadataFilter(\n", - " name=\"length\",\n", - " le=282\n", - " ),\n", - " rg.FloatMetadataFilter(\n", - " name=\"length_std\",\n", - " ge=204, \n", - " le=290\n", - " ),\n", + " rg.TermsMetadataFilter(name=\"group\", values=[\"group-1\", \"group-2\"]),\n", + " rg.IntegerMetadataFilter(name=\"length\", le=282),\n", + " rg.FloatMetadataFilter(name=\"length_std\", ge=204, le=290),\n", " ],\n", - " response_status=[\"discarded\"]\n", + " response_status=[\"discarded\"],\n", ").sort_by(\n", " [\n", " SortBy(field=\"updated_at\", order=\"desc\"),\n", - " SortBy(field=\"metadata.group\", order=\"asc\")\n", + " SortBy(field=\"metadata.group\", order=\"asc\"),\n", " ]\n", ")" ] @@ -892,7 +875,9 @@ "outputs": [], "source": [ "try:\n", - " remote_dataset = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_metadata\")\n", + " remote_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_metadata\"\n", + " )\n", " remote_dataset.delete()\n", "except:\n", " pass\n", @@ -969,8 +954,10 @@ }, "outputs": [], "source": [ - "#papermill_description=push-dataset-to-huggingface \n", - "dataset.push_to_huggingface(\"argilla/end2end_textclassification_with_metadata\", generate_card=True)" + "# papermill_description=push-dataset-to-huggingface\n", + "dataset.push_to_huggingface(\n", + " \"argilla/end2end_textclassification_with_metadata\", generate_card=True\n", + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-suggestions-and-responses-005.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-suggestions-and-responses-005.ipynb index 5543e317eb..c301649f0a 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-suggestions-and-responses-005.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-suggestions-and-responses-005.ipynb @@ -108,8 +108,8 @@ "outputs": [], "source": [ "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", "# Huggingface credentials\n", "hf_token = \"hf_...\"" ] @@ -147,9 +147,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -294,8 +297,8 @@ "for index, record in enumerate(dataset.records):\n", " record.responses = [\n", " {\n", - " \"values\":{\n", - " \"label\":{\n", + " \"values\": {\n", + " \"label\": {\n", " \"value\": mapped_labels[index],\n", " }\n", " }\n", @@ -323,8 +326,8 @@ "for index, record in enumerate(modified_records):\n", " record.responses = [\n", " {\n", - " \"values\":{\n", - " \"label\":{\n", + " \"values\": {\n", + " \"label\": {\n", " \"value\": mapped_labels[index],\n", " }\n", " },\n", @@ -383,7 +386,7 @@ " {\n", " \"question_name\": \"label\",\n", " \"value\": classifier(record.fields[\"text\"], candidate_labels)[\"labels\"][0],\n", - " \"agent\": model_name \n", + " \"agent\": model_name,\n", " }\n", " ]" ] @@ -410,7 +413,7 @@ " {\n", " \"question_name\": \"label\",\n", " \"value\": classifier(record.fields[\"text\"], candidate_labels)[\"labels\"][0],\n", - " \"agent\": model_name \n", + " \"agent\": model_name,\n", " }\n", " ]\n", "\n", @@ -444,11 +447,15 @@ "outputs": [], "source": [ "try:\n", - " remote_dataset = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_suggestions_and_responses\")\n", + " remote_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_suggestions_and_responses\"\n", + " )\n", " remote_dataset.delete()\n", "except Exception:\n", " pass\n", - "remote_dataset = dataset.push_to_argilla(\"end2end_textclassification_with_suggestions_and_responses\")" + "remote_dataset = dataset.push_to_argilla(\n", + " \"end2end_textclassification_with_suggestions_and_responses\"\n", + ")" ] }, { @@ -501,8 +508,11 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=push-dataset-to-huggingface\n", - "dataset.push_to_huggingface(\"argilla/end2end_textclassification_with_suggestions_and_responses\", generate_card=True)" + "# papermill_description=push-dataset-to-huggingface\n", + "dataset.push_to_huggingface(\n", + " \"argilla/end2end_textclassification_with_suggestions_and_responses\",\n", + " generate_card=True,\n", + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-vectors-004.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-vectors-004.ipynb index f882042088..2c6d680793 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-vectors-004.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/add-vectors-004.ipynb @@ -118,8 +118,8 @@ "outputs": [], "source": [ "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", "# Huggingface credentials\n", "hf_token = \"hf_...\"" ] @@ -137,10 +137,7 @@ "metadata": {}, "outputs": [], "source": [ - "rg.init(\n", - " api_url=api_url,\n", - " api_key=api_key\n", - ")" + "rg.init(api_url=api_url, api_key=api_key)" ] }, { @@ -160,9 +157,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -261,9 +261,7 @@ "outputs": [], "source": [ "vector_settings = rg.VectorSettings(\n", - " name=\"sentence_embedding\",\n", - " title=\"Sentence Embedding\",\n", - " dimensions=384\n", + " name=\"sentence_embedding\", title=\"Sentence Embedding\", dimensions=384\n", ")" ] }, @@ -415,9 +413,7 @@ "outputs": [], "source": [ "similar_records = dataset_remote.find_similar_records(\n", - " vector_name=\"sentence_embedding\",\n", - " record=dataset_remote[0],\n", - " max_results=5\n", + " vector_name=\"sentence_embedding\", record=dataset_remote[0], max_results=5\n", ")" ] }, @@ -470,9 +466,7 @@ "text_vector = model.encode(text).tolist()\n", "\n", "similar_records = dataset_remote.find_similar_records(\n", - " vector_name=\"sentence_embedding\",\n", - " value=text_vector,\n", - " max_results=5\n", + " vector_name=\"sentence_embedding\", value=text_vector, max_results=5\n", ")" ] }, @@ -523,7 +517,9 @@ "outputs": [], "source": [ "try:\n", - " remote_dataset = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_vectors\")\n", + " remote_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_vectors\"\n", + " )\n", " remote_dataset.delete()\n", "except:\n", " pass\n", @@ -581,8 +577,10 @@ "metadata": {}, "outputs": [], "source": [ - "#papermill_description=push-dataset-to-huggingface\n", - "dataset.push_to_huggingface(\"argilla/end2end_textclassification_with_vectors\", generate_card=True)" + "# papermill_description=push-dataset-to-huggingface\n", + "dataset.push_to_huggingface(\n", + " \"argilla/end2end_textclassification_with_vectors\", generate_card=True\n", + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/assign-records-002.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/assign-records-002.ipynb index 512208e6b6..7547913d21 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/assign-records-002.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/assign-records-002.ipynb @@ -118,8 +118,8 @@ "outputs": [], "source": [ "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", "# Huggingface credentials\n", "hf_token = \"hf_...\"" ] @@ -157,9 +157,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -304,7 +307,7 @@ "# Set our teams\n", "groups = {\n", " \"group_a\": [\"emily\", \"carlos\", \"aisha\", \"dimitry\", \"chloe\"],\n", - " \"group_b\": [\"liam\", \"hina\", \"samuel\", \"maya\", \"luca\"]\n", + " \"group_b\": [\"liam\", \"hina\", \"samuel\", \"maya\", \"luca\"],\n", "}" ] }, @@ -316,7 +319,7 @@ "source": [ "# Get the records\n", "records = [record for record in dataset]\n", - "print('Number of records:', len(records))" + "print(\"Number of records:\", len(records))" ] }, { @@ -350,12 +353,7 @@ "source": [ "from argilla.client.feedback.utils import assign_records\n", "\n", - "assignments = assign_records(\n", - " users=groups,\n", - " records=records,\n", - " overlap=1,\n", - " shuffle=True\n", - ")" + "assignments = assign_records(users=groups, records=records, overlap=1, shuffle=True)" ] }, { @@ -397,10 +395,7 @@ "source": [ "from argilla.client.feedback.utils import assign_workspaces\n", "\n", - "wk_group = assign_workspaces(\n", - " assignments=assignments,\n", - " workspace_type=\"group\"\n", - ")\n", + "wk_group = assign_workspaces(assignments=assignments, workspace_type=\"group\")\n", "wk_group" ] }, @@ -418,10 +413,14 @@ " assigned_records = next(iter(assignments[group].values()))\n", " dataset.add_records(assigned_records)\n", " try:\n", - " remote_dataset = dataset.from_argilla(name=\"text_classification\", workspace=group)\n", + " remote_dataset = dataset.from_argilla(\n", + " name=\"text_classification\", workspace=group\n", + " )\n", " remote_dataset.delete()\n", " except Exception:\n", - " remote_dataset = dataset.push_to_argilla(name=\"text_classification\", workspace=group)" + " remote_dataset = dataset.push_to_argilla(\n", + " name=\"text_classification\", workspace=group\n", + " )" ] }, { @@ -452,8 +451,7 @@ "from argilla.client.feedback.utils import assign_workspaces\n", "\n", "wk_group_personal = assign_workspaces(\n", - " assignments=assignments,\n", - " workspace_type=\"group_personal\"\n", + " assignments=assignments, workspace_type=\"group_personal\"\n", ")\n", "wk_group_personal" ] @@ -473,10 +471,14 @@ " assigned_records = users[user]\n", " dataset.add_records(assigned_records)\n", " try:\n", - " remote_dataset = dataset.from_argilla(name=\"text_classification\", workspace=user)\n", + " remote_dataset = dataset.from_argilla(\n", + " name=\"text_classification\", workspace=user\n", + " )\n", " remote_dataset.delete()\n", " except Exception:\n", - " remote_dataset = dataset.push_to_argilla(name=\"text_classification\", workspace=user)" + " remote_dataset = dataset.push_to_argilla(\n", + " name=\"text_classification\", workspace=user\n", + " )" ] }, { @@ -556,7 +558,7 @@ "source": [ "# Get only those users with the role \"annotator\"\n", "users = [user for user in rg.User.list() if user.role == \"annotator\"]\n", - "print('Number of users:', len(users))" + "print(\"Number of users:\", len(users))" ] }, { @@ -567,7 +569,7 @@ "source": [ "# Get the records\n", "records = [record for record in dataset]\n", - "print('Number of records:', len(records))" + "print(\"Number of records:\", len(records))" ] }, { @@ -599,12 +601,7 @@ "source": [ "from argilla.client.feedback.utils import assign_records\n", "\n", - "assignments = assign_records(\n", - " users=users,\n", - " records=records,\n", - " overlap=2,\n", - " shuffle=True\n", - ")" + "assignments = assign_records(users=users, records=records, overlap=2, shuffle=True)" ] }, { @@ -639,10 +636,7 @@ "source": [ "from argilla.client.feedback.utils import assign_workspaces\n", "\n", - "wk_individual = assign_workspaces(\n", - " assignments=assignments,\n", - " workspace_type=\"individual\"\n", - ")\n", + "wk_individual = assign_workspaces(assignments=assignments, workspace_type=\"individual\")\n", "wk_individual" ] }, @@ -659,10 +653,14 @@ " )\n", " dataset.add_records(records)\n", " try:\n", - " remote_dataset = dataset.from_argilla(name=\"text-classification\", workspace=username)\n", + " remote_dataset = dataset.from_argilla(\n", + " name=\"text-classification\", workspace=username\n", + " )\n", " remote_dataset.delete()\n", - " except Exception: \n", - " remote_dataset = dataset.push_to_argilla(name=\"text-classification\", workspace=username)" + " except Exception:\n", + " remote_dataset = dataset.push_to_argilla(\n", + " name=\"text-classification\", workspace=username\n", + " )" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/configure-users-and-workspaces-000.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/configure-users-and-workspaces-000.ipynb index 276e14f102..fdbdf58dab 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/configure-users-and-workspaces-000.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/configure-users-and-workspaces-000.ipynb @@ -178,9 +178,9 @@ "outputs": [], "source": [ "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", - "hf_token = None # not used in this tutorial" + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", + "hf_token = None # not used in this tutorial" ] }, { @@ -207,10 +207,7 @@ }, "outputs": [], "source": [ - "rg.init(\n", - " api_url=api_url,\n", - " api_key=api_key\n", - ")" + "rg.init(api_url=api_url, api_key=api_key)" ] }, { @@ -233,6 +230,7 @@ }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -243,14 +241,18 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/create-dataset-001.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/create-dataset-001.ipynb index 11e0ca9ca8..7a92685d5a 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/create-dataset-001.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/create-dataset-001.ipynb @@ -1,1145 +1,1156 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "fc0c600b", - "metadata": { - "papermill": { - "duration": 0.046655, - "end_time": "2023-11-15T10:59:17.308341", - "exception": false, - "start_time": "2023-11-15T10:59:17.261686", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "# Creating a `FeedbackDataset`\n", - "\n", - "This tutorial is part of a series in which we will get to know the `FeedbackDataset`. Before starting this tutorial, you need to do the tutorial on [configuring users and workspaces](./configure-users-and-workspaces-000.ipynb). In this step, we will show how to configure a `FeedbackDataset` and add `FeedbackRecords` to it. If you need additional context, consult [our practical guide on creating a dataset](../../../../practical_guides/create_update_dataset/create_dataset.md).\n", - "\n", - "![workflow](../../../../_static/tutorials/end2end/base/workflow_create_dataset.svg)\n", - "\n", - "We will start by creating a basic dataset using the [ag_news](https://huggingface.co/datasets/ag_news) dataset as an example and push it to `Argilla` and the Hugging Face `hub`." - ] - }, - { - "cell_type": "markdown", - "id": "e557a44e-26fb-4b52-91ec-2b49d550a5cd", - "metadata": { - "editable": true, - "papermill": { - "duration": 0.011949, - "end_time": "2023-11-15T10:59:17.340523", - "exception": false, - "start_time": "2023-11-15T10:59:17.328574", - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## Table of Contents\n", - "\n", - "1. [Configure a FeedbackDataset](#Configure-a-FeedbackDataset)\n", - "2. [Add FeedbackRecords](#Add-FeedbackRecords)\n", - " 1. [From a Hugging Face dataset](#From-a-Hugging-Face-dataset)\n", - " 2. [From a pandas.DataFrame](#From-a-pandas.DataFrame)\n", - "3. [Save and load a FeedbackDataset](#Save-and-load-a-FeedbackDataset)\n", - " 1. [Push our FeedbackDataset to Argilla](#From-Argilla)\n", - " 2. [Push our FeedbackDataset to the Hugging Face hub](#From-Hugging-Face-hub)\n", - "4. [Conclusion](#Conclusion)" - ] - }, - { - "cell_type": "markdown", - "id": "566b7b82", - "metadata": { - "papermill": { - "duration": 0.007744, - "end_time": "2023-11-15T10:59:17.355040", - "exception": false, - "start_time": "2023-11-15T10:59:17.347296", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Running Argilla\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", - "\n", - "**Deploy Argilla on Hugging Face Spaces:** If you want to run tutorials with external notebooks (e.g., Google Colab) and you have an account on Hugging Face, you can deploy Argilla on Spaces with a few clicks:\n", - "\n", - "[![deploy on spaces](https://huggingface.co/datasets/huggingface/badges/raw/main/deploy-to-spaces-lg.svg)](https://huggingface.co/new-space?template=argilla/argilla-template-space)\n", - "\n", - "For details about configuring your deployment, check the [official Hugging Face Hub guide](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla).\n", - "\n", - "**Launch Argilla using Argilla's quickstart Docker image**: This is the recommended option if you want [Argilla running on your local machine](../../../../getting_started/quickstart.md). Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", - "\n", - "For more information on deployment options, please check the Deployment section of the documentation.\n", - "\n", - "
\n", - "\n", - "Tip\n", - "\n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "papermill": { - "duration": 0.004557, - "end_time": "2023-11-15T10:59:17.364909", - "exception": false, - "start_time": "2023-11-15T10:59:17.360352", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "First let's install our dependencies and import the necessary libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bbbd3c38-1e3c-4d7f-97e6-22dd3b668fc8", - "metadata": { - "editable": true, - "papermill": { - "duration": 3.857186, - "end_time": "2023-11-15T10:59:21.228277", - "exception": false, - "start_time": "2023-11-15T10:59:17.371091", - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "!pip install argilla\n", - "!pip install datasets" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "51b3b93c", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "import argilla as rg\n", - "from argilla._constants import DEFAULT_API_KEY\n", - "from datasets import load_dataset" - ] - }, - { - "cell_type": "markdown", - "id": "c330bed5-38d1-45bf-b871-98e629ab3af8", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "In order to run this notebook we will need some credentials to push and load datasets from `Argilla` and 🤗`hub`, let's set them in the following cell:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ca4fd7ae-7e31-405e-84c1-974828a903bd", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [ - "parameters" - ] - }, - "outputs": [], - "source": [ - "# Argilla credentials\n", - "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", - "api_key = DEFAULT_API_KEY # admin.apikey\n", - "# Huggingface credentials\n", - "hf_token = \"hf_...\"" - ] - }, - { - "cell_type": "markdown", - "id": "3464037d-e21e-4db4-bfb4-e300fe4c9e53", - "metadata": {}, - "source": [ - "Log to argilla:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "728e6af7", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "#papermill_description=logging-to-argilla\n", - "rg.init(\n", - " api_url=api_url,\n", - " api_key=api_key\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../../../reference/telemetry.md) page." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from argilla.utils.telemetry import tutorial_running\n", - " tutorial_running()\n", - "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" - ] - }, - { - "cell_type": "markdown", - "id": "f50177aa-4c94-4b8f-8293-a3710e3cb0ca", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Configure a `FeedbackDataset` " - ] - }, - { - "cell_type": "markdown", - "id": "529f4e77-6c05-4d59-b153-170acee36b97", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "For this tutorial we will use the [ag_news](https://huggingface.co/datasets/ag_news) dataset which can be downloaded from the 🤗`hub`. We will load only the first 1000 items from the training sample." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "8b01b473-a815-427c-986e-6c2bedf1b5d7", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset({\n", - " features: ['text', 'label'],\n", - " num_rows: 1000\n", - "})" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds = load_dataset(\"ag_news\", split=\"train[:1000]\")\n", - "ds" - ] - }, - { - "cell_type": "markdown", - "id": "5b4eb4ff-9530-4542-9975-25d0f4f725c1", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "We will just load the first 1000 records for this tutorial, but feel free to test the full dataset." - ] - }, - { - "cell_type": "markdown", - "id": "6d2e7997-62c6-49b3-9462-acd6143346a1", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "This dataset contains a collection of news articles (we can see the content in the `text` column), which have been asigned one of the following classification `labels`: *World (0), Sports (1), Business (2), Sci/Tech (3)*.\n", - "\n", - "Let's use the [task templates](https://docs.v1.argilla.io/en/latest/practical_guides/create_update_dataset/create_dataset.html#task-templates) to create a feedback dataset ready for `text-classification`." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "7294b709", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "FeedbackDataset(\n", - " fields=[TextField(name='text', title='Text', required=True, type='text', use_markdown=False)]\n", - " questions=[LabelQuestion(name='label', title='Label', description='Classify the text by selecting the correct label from the given list of labels.', required=True, type='label_selection', labels=['World', 'Sports', 'Business', 'Sci/Tech'], visible_labels=None)]\n", - " guidelines=Classify the articles into one of the four categories.)\n", - " metadata_properties=[])\n", - ")" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "feedback_dataset = rg.FeedbackDataset.for_text_classification(\n", - " labels=[\"World\", \"Sports\", \"Business\", \"Sci/Tech\"],\n", - " guidelines=\"Classify the articles into one of the four categories.\",\n", - ")\n", - "feedback_dataset" - ] - }, - { - "cell_type": "markdown", - "id": "5a5238ea", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "We could compare this dataset with the custom configuration we would use previously (we can take a look at the [custom configuration](https://docs.v1.argilla.io/en/latest/practical_guides/create_update_dataset/create_dataset.html#custom-configuration) for more information on the creation of a `FeedbackDataset` when we want a finer control):" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f4823931-39a2-4942-ba83-894d62e0b7cc", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "FeedbackDataset(\n", - " fields=[TextField(name='text', title='Text from the article', required=True, type='text', use_markdown=False)]\n", - " questions=[LabelQuestion(name='label', title='In which category does this article fit?', description=None, required=True, type='label_selection', labels={'World': '0', 'Sports': '1', 'Business': '2', 'Sci/Tech': '3'}, visible_labels=None)]\n", - " guidelines=Classify the articles into one of the four categories.)\n", - " metadata_properties=[])\n", - ")" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "feedback_dataset_long = rg.FeedbackDataset(\n", - " guidelines=\"Classify the articles into one of the four categories.\",\n", - " fields=[\n", - " rg.TextField(name=\"text\", title=\"Text from the article\"),\n", - " ],\n", - " questions=[\n", - " rg.LabelQuestion(\n", - " name=\"label\",\n", - " title=\"In which category does this article fit?\",\n", - " labels={\"World\": \"0\", \"Sports\": \"1\", \"Business\": \"2\", \"Sci/Tech\": \"3\"},\n", - " required=True,\n", - " visible_labels=None\n", - " )\n", - " ]\n", - ")\n", - "feedback_dataset_long" - ] - }, - { - "cell_type": "markdown", - "id": "77ad10bc-d908-41ba-9a5c-c9cc9d56b67f", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Add `FeedbackRecords` \n", - "\n", - "### From a Hugging Face `dataset` " - ] - }, - { - "cell_type": "markdown", - "id": "9c194d68-6a87-4bc0-9d4e-f2afdb0561d9", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "The next step once we have our `FeedbackDataset` created is adding the [FeedbackRecords](https://docs.v1.argilla.io/en/latest/getting_started/cheatsheet.html#create-records) to it." - ] - }, - { - "cell_type": "markdown", - "id": "5110f19b-8bf2-4d48-8a1f-ffd89cfa20f5", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "In order to create our records we can just loop over the items in the `datasets.Dataset`." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "825342c7-ef43-4747-8523-18f3e3fc6bd5", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "records = []\n", - "for i, item in enumerate(ds):\n", - " records.append(\n", - " rg.FeedbackRecord(\n", - " fields={\n", - " \"text\": item[\"text\"],\n", - " },\n", - " external_id=f\"record-{i}\"\n", - " )\n", - " )\n", - "\n", - "# We can add an external_id to each record to identify it later." - ] - }, - { - "cell_type": "markdown", - "id": "3eb1ae7a-01f9-439b-87ac-6d0064164c80", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "### From a `pandas.DataFrame` " - ] - }, - { - "cell_type": "markdown", - "id": "dba19b65-60d3-4507-aca6-1b4b9bc77d08", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "If we had our data in a different format, let's say a `csv` file, maybe it's more direct to read the data using pandas for that.\n", - "\n", - "We will transform our dataset to pandas format for this example, and the remaining `FeedbackRecord` creation remains just the same:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "82beb35b-264f-491a-a6be-bd53f40fb509", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
textlabel
0Wall St. Bears Claw Back Into the Black (Reute...2
1Carlyle Looks Toward Commercial Aerospace (Reu...2
2Oil and Economy Cloud Stocks' Outlook (Reuters...2
3Iraq Halts Oil Exports from Main Southern Pipe...2
4Oil prices soar to all-time record, posing new...2
\n", - "
" - ], - "text/plain": [ - " text label\n", - "0 Wall St. Bears Claw Back Into the Black (Reute... 2\n", - "1 Carlyle Looks Toward Commercial Aerospace (Reu... 2\n", - "2 Oil and Economy Cloud Stocks' Outlook (Reuters... 2\n", - "3 Iraq Halts Oil Exports from Main Southern Pipe... 2\n", - "4 Oil prices soar to all-time record, posing new... 2" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_dataset = ds.to_pandas()\n", - "df_dataset.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7c7b33af-297c-44ab-981c-b62cf1406843", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "records_pandas = []\n", - "for i, item in df_dataset.iterrows():\n", - " records_pandas.append(\n", - " rg.FeedbackRecord(\n", - " fields={\n", - " \"text\": item[\"text\"],\n", - " },\n", - " external_id=f\"record-{i}\"\n", - " )\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "dd3f1c38-3b56-46e8-8cac-7b3d21beb38d", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "Let's add our records to the dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "9bd0ec1c-1fcb-4d4f-a0a2-4f581a670e8b", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "feedback_dataset.add_records(records)" - ] - }, - { - "cell_type": "markdown", - "id": "16fe9266-7a03-4be6-8789-b141854bcdda", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "By now we have our dataset with the texts ready to be labeled, let's push it to `Argilla`." - ] - }, - { - "cell_type": "markdown", - "id": "b867eb5b-0b5a-42b1-88f2-f5b67519243e", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Save and load a `FeedbackDataset` \n", - "\n", - "### From `Argilla` " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8f5581dc-8509-484e-ad4e-c73d15227cc9", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "#papermill_description=push-dataset-to-argilla\n", - "try:\n", - " # delete old dataset\n", - " remote_dataset = feedback_dataset.from_argilla(name=\"end2end_textclassification\", workspace=\"argilla\")\n", - " remote_dataset.delete()\n", - "except:\n", - " pass\n", - "remote_dataset = feedback_dataset.push_to_argilla(name=\"end2end_textclassification\", workspace=\"argilla\")" - ] - }, - { - "cell_type": "markdown", - "id": "aff0f7fd-722f-4f92-912d-029b134848f3", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "If we go to our `Argilla` instance we should see a similar screen like the following." - ] - }, - { - "cell_type": "markdown", - "id": "827fce93", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "![feedback-dataset](../../../../_static/tutorials/end2end/text-classification/feedback-dataset-text-classification-1.png)" - ] - }, - { - "cell_type": "markdown", - "id": "e5f09e2a-e192-4526-a686-b4d516ca5066", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "Where we can see the *Text from the article* we wanted, and the different labels to choose from." - ] - }, - { - "cell_type": "markdown", - "id": "fd877169-bd9a-4596-981d-47d2ff4c7c24", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "We can now download the dataset from `Argilla` just to check it:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "fbae2025-c4fe-4e0c-b445-9ee308baa4a5", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "RemoteFeedbackDataset(\n", - " id=52b0dfc2-ed85-4805-923c-5d51b51ec4c9\n", - " name=end2end_textclassification\n", - " workspace=Workspace(id=ce760ed7-0fdf-4d79-b9b7-1c0e4ea896cd, name=argilla, inserted_at=2023-11-23 09:46:05.591993, updated_at=2023-11-23 09:46:05.591993)\n", - " url=http://localhost:6900/dataset/52b0dfc2-ed85-4805-923c-5d51b51ec4c9/annotation-mode\n", - " fields=[RemoteTextField(id=UUID('2835bf0e-1259-45b9-a97c-f9b671395563'), client=None, name='text', title='Text', required=True, type='text', use_markdown=False)]\n", - " questions=[RemoteLabelQuestion(id=UUID('bb6fc4f0-e4b7-480c-84a1-df717de4ac97'), client=None, name='label', title='Label', description=None, required=True, type='label_selection', labels=['World', 'Sports', 'Business', 'Sci/Tech'], visible_labels=None)]\n", - " guidelines=Classify the articles into one of the four categories.\n", - " metadata_properties=[]\n", - ")" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remote_dataset = rg.FeedbackDataset.from_argilla(\"end2end_textclassification\", workspace=\"argilla\")\n", - "remote_dataset" - ] - }, - { - "cell_type": "markdown", - "id": "1f16d868-a9df-4f01-85ac-06bfcee19101", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "### From Hugging Face hub \n", - "\n", - "If we wanted to share our dataset with the world, we could use the Huggingface hub for it." - ] - }, - { - "cell_type": "markdown", - "id": "24aae42a-6b0f-40eb-9d92-4aafcb735844", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "First we need to login to huggingface. The following cell will log us with our previous token.\n", - "\n", - "If we don't have one already, we can obtain it from [here](https://huggingface.co/docs/hub/security-tokens) (remember to set the *write* access)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fabcc89-323f-4f4f-9ab9-4b778dd93474", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "from huggingface_hub import login\n", - "\n", - "login(token=hf_token)" - ] - }, - { - "cell_type": "markdown", - "id": "694c381d-7f7d-4b2d-938a-20df260ec957", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "And now we can just call the method on the `FeedbackDataset`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1c471559-916c-4bf8-b115-3d1ba0be621b", - "metadata": { - "editable": true, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "#papermill_description=push-dataset-to-huggingface\n", - "remote_dataset.push_to_huggingface(\"argilla/end2end_textclassification\")" - ] - }, - { - "cell_type": "markdown", - "id": "761250bc", - "metadata": {}, - "source": [ - "We can now download the dataset from Hugging Face just to check it:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c5405ba2", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "local_dataset = rg.FeedbackDataset.from_huggingface(\"argilla/end2end_textclassification\")" - ] - }, - { - "cell_type": "markdown", - "id": "408cb3c9-c784-45c8-b206-058a23b801d8", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Conclusion" - ] - }, - { - "cell_type": "markdown", - "id": "6cdb1244-1589-4e85-be36-e0c959817c6d", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "In this tutorial we created an `Argilla` `FeedbackDataset` for text classification, starting from [ag_news](https://huggingface.co/datasets/ag_news).\n", - "\n", - "We created a `FeedbackDataset` for text classification with a `LabelQuestion`, from data stored as a `datasets.Dataset` and a `pandas.DataFrame`.\n", - "This dataset was pushed both to `Argilla` where we can curate and label the records, and finally pushed it to the 🤗`hub`.\n", - "\n", - "To learn more about how to work with the `FeedbackDataset` check the [cheatsheet](https://docs.v1.argilla.io/en/latest/getting_started/cheatsheet.html#cheatsheet). To continue with assigning records to annotators, you can refer to the [next tutorial](./assign-records-002.ipynb)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.13" - }, - "papermill": { - "default_parameters": {}, - "duration": 5.95317, - "end_time": "2023-11-15T10:59:21.949504", - "environment_variables": {}, - "exception": null, - "input_path": "/home/agustin/github_repos/argilla-io/argilla/docs/_source/practical_guides/examples/text_classification/text-classification-create-dataset.ipynb", - "output_path": "/home/agustin/github_repos/argilla-io/argilla/docs/_source/practical_guides/examples/text_classification/text-classification-create-dataset.ipynb", - "parameters": {}, - "start_time": "2023-11-15T10:59:15.996334", - "version": "2.5.0" - } + "cells": [ + { + "cell_type": "markdown", + "id": "fc0c600b", + "metadata": { + "papermill": { + "duration": 0.046655, + "end_time": "2023-11-15T10:59:17.308341", + "exception": false, + "start_time": "2023-11-15T10:59:17.261686", + "status": "completed" }, - "nbformat": 4, - "nbformat_minor": 5 + "tags": [] + }, + "source": [ + "# Creating a `FeedbackDataset`\n", + "\n", + "This tutorial is part of a series in which we will get to know the `FeedbackDataset`. Before starting this tutorial, you need to do the tutorial on [configuring users and workspaces](./configure-users-and-workspaces-000.ipynb). In this step, we will show how to configure a `FeedbackDataset` and add `FeedbackRecords` to it. If you need additional context, consult [our practical guide on creating a dataset](../../../../practical_guides/create_update_dataset/create_dataset.md).\n", + "\n", + "![workflow](../../../../_static/tutorials/end2end/base/workflow_create_dataset.svg)\n", + "\n", + "We will start by creating a basic dataset using the [ag_news](https://huggingface.co/datasets/ag_news) dataset as an example and push it to `Argilla` and the Hugging Face `hub`." + ] + }, + { + "cell_type": "markdown", + "id": "e557a44e-26fb-4b52-91ec-2b49d550a5cd", + "metadata": { + "editable": true, + "papermill": { + "duration": 0.011949, + "end_time": "2023-11-15T10:59:17.340523", + "exception": false, + "start_time": "2023-11-15T10:59:17.328574", + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Table of Contents\n", + "\n", + "1. [Configure a FeedbackDataset](#Configure-a-FeedbackDataset)\n", + "2. [Add FeedbackRecords](#Add-FeedbackRecords)\n", + " 1. [From a Hugging Face dataset](#From-a-Hugging-Face-dataset)\n", + " 2. [From a pandas.DataFrame](#From-a-pandas.DataFrame)\n", + "3. [Save and load a FeedbackDataset](#Save-and-load-a-FeedbackDataset)\n", + " 1. [Push our FeedbackDataset to Argilla](#From-Argilla)\n", + " 2. [Push our FeedbackDataset to the Hugging Face hub](#From-Hugging-Face-hub)\n", + "4. [Conclusion](#Conclusion)" + ] + }, + { + "cell_type": "markdown", + "id": "566b7b82", + "metadata": { + "papermill": { + "duration": 0.007744, + "end_time": "2023-11-15T10:59:17.355040", + "exception": false, + "start_time": "2023-11-15T10:59:17.347296", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Running Argilla\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. There are two main options for deploying and running Argilla:\n", + "\n", + "**Deploy Argilla on Hugging Face Spaces:** If you want to run tutorials with external notebooks (e.g., Google Colab) and you have an account on Hugging Face, you can deploy Argilla on Spaces with a few clicks:\n", + "\n", + "[![deploy on spaces](https://huggingface.co/datasets/huggingface/badges/raw/main/deploy-to-spaces-lg.svg)](https://huggingface.co/new-space?template=argilla/argilla-template-space)\n", + "\n", + "For details about configuring your deployment, check the [official Hugging Face Hub guide](https://huggingface.co/docs/hub/spaces-sdks-docker-argilla).\n", + "\n", + "**Launch Argilla using Argilla's quickstart Docker image**: This is the recommended option if you want [Argilla running on your local machine](../../../../getting_started/quickstart.md). Note that this option will only let you run the tutorial locally and not with an external notebook service.\n", + "\n", + "For more information on deployment options, please check the Deployment section of the documentation.\n", + "\n", + "
\n", + "\n", + "Tip\n", + "\n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", + "metadata": { + "papermill": { + "duration": 0.004557, + "end_time": "2023-11-15T10:59:17.364909", + "exception": false, + "start_time": "2023-11-15T10:59:17.360352", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "First let's install our dependencies and import the necessary libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbbd3c38-1e3c-4d7f-97e6-22dd3b668fc8", + "metadata": { + "editable": true, + "papermill": { + "duration": 3.857186, + "end_time": "2023-11-15T10:59:21.228277", + "exception": false, + "start_time": "2023-11-15T10:59:17.371091", + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "!pip install argilla\n", + "!pip install datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "51b3b93c", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import argilla as rg\n", + "from argilla._constants import DEFAULT_API_KEY\n", + "from datasets import load_dataset" + ] + }, + { + "cell_type": "markdown", + "id": "c330bed5-38d1-45bf-b871-98e629ab3af8", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "In order to run this notebook we will need some credentials to push and load datasets from `Argilla` and 🤗`hub`, let's set them in the following cell:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ca4fd7ae-7e31-405e-84c1-974828a903bd", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "# Argilla credentials\n", + "api_url = \"http://localhost:6900\" # \"https://.hf.space\"\n", + "api_key = DEFAULT_API_KEY # admin.apikey\n", + "# Huggingface credentials\n", + "hf_token = \"hf_...\"" + ] + }, + { + "cell_type": "markdown", + "id": "3464037d-e21e-4db4-bfb4-e300fe4c9e53", + "metadata": {}, + "source": [ + "Log to argilla:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "728e6af7", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# papermill_description=logging-to-argilla\n", + "rg.init(api_url=api_url, api_key=api_key)" + ] + }, + { + "cell_type": "markdown", + "id": "acae54e37e7d407bbb7b55eff062a284", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a63283cbaf04dbcab1f6479b197f3a8", + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "f50177aa-4c94-4b8f-8293-a3710e3cb0ca", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Configure a `FeedbackDataset` " + ] + }, + { + "cell_type": "markdown", + "id": "529f4e77-6c05-4d59-b153-170acee36b97", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "For this tutorial we will use the [ag_news](https://huggingface.co/datasets/ag_news) dataset which can be downloaded from the 🤗`hub`. We will load only the first 1000 items from the training sample." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8b01b473-a815-427c-986e-6c2bedf1b5d7", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Dataset({\n", + " features: ['text', 'label'],\n", + " num_rows: 1000\n", + "})" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds = load_dataset(\"ag_news\", split=\"train[:1000]\")\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "id": "5b4eb4ff-9530-4542-9975-25d0f4f725c1", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "We will just load the first 1000 records for this tutorial, but feel free to test the full dataset." + ] + }, + { + "cell_type": "markdown", + "id": "6d2e7997-62c6-49b3-9462-acd6143346a1", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "This dataset contains a collection of news articles (we can see the content in the `text` column), which have been asigned one of the following classification `labels`: *World (0), Sports (1), Business (2), Sci/Tech (3)*.\n", + "\n", + "Let's use the [task templates](https://docs.v1.argilla.io/en/latest/practical_guides/create_update_dataset/create_dataset.html#task-templates) to create a feedback dataset ready for `text-classification`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "7294b709", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "FeedbackDataset(\n", + " fields=[TextField(name='text', title='Text', required=True, type='text', use_markdown=False)]\n", + " questions=[LabelQuestion(name='label', title='Label', description='Classify the text by selecting the correct label from the given list of labels.', required=True, type='label_selection', labels=['World', 'Sports', 'Business', 'Sci/Tech'], visible_labels=None)]\n", + " guidelines=Classify the articles into one of the four categories.)\n", + " metadata_properties=[])\n", + ")" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feedback_dataset = rg.FeedbackDataset.for_text_classification(\n", + " labels=[\"World\", \"Sports\", \"Business\", \"Sci/Tech\"],\n", + " guidelines=\"Classify the articles into one of the four categories.\",\n", + ")\n", + "feedback_dataset" + ] + }, + { + "cell_type": "markdown", + "id": "5a5238ea", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "We could compare this dataset with the custom configuration we would use previously (we can take a look at the [custom configuration](https://docs.v1.argilla.io/en/latest/practical_guides/create_update_dataset/create_dataset.html#custom-configuration) for more information on the creation of a `FeedbackDataset` when we want a finer control):" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f4823931-39a2-4942-ba83-894d62e0b7cc", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "FeedbackDataset(\n", + " fields=[TextField(name='text', title='Text from the article', required=True, type='text', use_markdown=False)]\n", + " questions=[LabelQuestion(name='label', title='In which category does this article fit?', description=None, required=True, type='label_selection', labels={'World': '0', 'Sports': '1', 'Business': '2', 'Sci/Tech': '3'}, visible_labels=None)]\n", + " guidelines=Classify the articles into one of the four categories.)\n", + " metadata_properties=[])\n", + ")" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feedback_dataset_long = rg.FeedbackDataset(\n", + " guidelines=\"Classify the articles into one of the four categories.\",\n", + " fields=[\n", + " rg.TextField(name=\"text\", title=\"Text from the article\"),\n", + " ],\n", + " questions=[\n", + " rg.LabelQuestion(\n", + " name=\"label\",\n", + " title=\"In which category does this article fit?\",\n", + " labels={\"World\": \"0\", \"Sports\": \"1\", \"Business\": \"2\", \"Sci/Tech\": \"3\"},\n", + " required=True,\n", + " visible_labels=None,\n", + " )\n", + " ],\n", + ")\n", + "feedback_dataset_long" + ] + }, + { + "cell_type": "markdown", + "id": "77ad10bc-d908-41ba-9a5c-c9cc9d56b67f", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Add `FeedbackRecords` \n", + "\n", + "### From a Hugging Face `dataset` " + ] + }, + { + "cell_type": "markdown", + "id": "9c194d68-6a87-4bc0-9d4e-f2afdb0561d9", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "The next step once we have our `FeedbackDataset` created is adding the [FeedbackRecords](https://docs.v1.argilla.io/en/latest/getting_started/cheatsheet.html#create-records) to it." + ] + }, + { + "cell_type": "markdown", + "id": "5110f19b-8bf2-4d48-8a1f-ffd89cfa20f5", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "In order to create our records we can just loop over the items in the `datasets.Dataset`." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "825342c7-ef43-4747-8523-18f3e3fc6bd5", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "records = []\n", + "for i, item in enumerate(ds):\n", + " records.append(\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"text\": item[\"text\"],\n", + " },\n", + " external_id=f\"record-{i}\",\n", + " )\n", + " )\n", + "\n", + "# We can add an external_id to each record to identify it later." + ] + }, + { + "cell_type": "markdown", + "id": "3eb1ae7a-01f9-439b-87ac-6d0064164c80", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### From a `pandas.DataFrame` " + ] + }, + { + "cell_type": "markdown", + "id": "dba19b65-60d3-4507-aca6-1b4b9bc77d08", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "If we had our data in a different format, let's say a `csv` file, maybe it's more direct to read the data using pandas for that.\n", + "\n", + "We will transform our dataset to pandas format for this example, and the remaining `FeedbackRecord` creation remains just the same:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "82beb35b-264f-491a-a6be-bd53f40fb509", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textlabel
0Wall St. Bears Claw Back Into the Black (Reute...2
1Carlyle Looks Toward Commercial Aerospace (Reu...2
2Oil and Economy Cloud Stocks' Outlook (Reuters...2
3Iraq Halts Oil Exports from Main Southern Pipe...2
4Oil prices soar to all-time record, posing new...2
\n", + "
" + ], + "text/plain": [ + " text label\n", + "0 Wall St. Bears Claw Back Into the Black (Reute... 2\n", + "1 Carlyle Looks Toward Commercial Aerospace (Reu... 2\n", + "2 Oil and Economy Cloud Stocks' Outlook (Reuters... 2\n", + "3 Iraq Halts Oil Exports from Main Southern Pipe... 2\n", + "4 Oil prices soar to all-time record, posing new... 2" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_dataset = ds.to_pandas()\n", + "df_dataset.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7c7b33af-297c-44ab-981c-b62cf1406843", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "records_pandas = []\n", + "for i, item in df_dataset.iterrows():\n", + " records_pandas.append(\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"text\": item[\"text\"],\n", + " },\n", + " external_id=f\"record-{i}\",\n", + " )\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "dd3f1c38-3b56-46e8-8cac-7b3d21beb38d", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "Let's add our records to the dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "9bd0ec1c-1fcb-4d4f-a0a2-4f581a670e8b", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "feedback_dataset.add_records(records)" + ] + }, + { + "cell_type": "markdown", + "id": "16fe9266-7a03-4be6-8789-b141854bcdda", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "By now we have our dataset with the texts ready to be labeled, let's push it to `Argilla`." + ] + }, + { + "cell_type": "markdown", + "id": "b867eb5b-0b5a-42b1-88f2-f5b67519243e", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Save and load a `FeedbackDataset` \n", + "\n", + "### From `Argilla` " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f5581dc-8509-484e-ad4e-c73d15227cc9", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# papermill_description=push-dataset-to-argilla\n", + "try:\n", + " # delete old dataset\n", + " remote_dataset = feedback_dataset.from_argilla(\n", + " name=\"end2end_textclassification\", workspace=\"argilla\"\n", + " )\n", + " remote_dataset.delete()\n", + "except:\n", + " pass\n", + "remote_dataset = feedback_dataset.push_to_argilla(\n", + " name=\"end2end_textclassification\", workspace=\"argilla\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "aff0f7fd-722f-4f92-912d-029b134848f3", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "If we go to our `Argilla` instance we should see a similar screen like the following." + ] + }, + { + "cell_type": "markdown", + "id": "827fce93", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "![feedback-dataset](../../../../_static/tutorials/end2end/text-classification/feedback-dataset-text-classification-1.png)" + ] + }, + { + "cell_type": "markdown", + "id": "e5f09e2a-e192-4526-a686-b4d516ca5066", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "Where we can see the *Text from the article* we wanted, and the different labels to choose from." + ] + }, + { + "cell_type": "markdown", + "id": "fd877169-bd9a-4596-981d-47d2ff4c7c24", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "We can now download the dataset from `Argilla` just to check it:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "fbae2025-c4fe-4e0c-b445-9ee308baa4a5", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "RemoteFeedbackDataset(\n", + " id=52b0dfc2-ed85-4805-923c-5d51b51ec4c9\n", + " name=end2end_textclassification\n", + " workspace=Workspace(id=ce760ed7-0fdf-4d79-b9b7-1c0e4ea896cd, name=argilla, inserted_at=2023-11-23 09:46:05.591993, updated_at=2023-11-23 09:46:05.591993)\n", + " url=http://localhost:6900/dataset/52b0dfc2-ed85-4805-923c-5d51b51ec4c9/annotation-mode\n", + " fields=[RemoteTextField(id=UUID('2835bf0e-1259-45b9-a97c-f9b671395563'), client=None, name='text', title='Text', required=True, type='text', use_markdown=False)]\n", + " questions=[RemoteLabelQuestion(id=UUID('bb6fc4f0-e4b7-480c-84a1-df717de4ac97'), client=None, name='label', title='Label', description=None, required=True, type='label_selection', labels=['World', 'Sports', 'Business', 'Sci/Tech'], visible_labels=None)]\n", + " guidelines=Classify the articles into one of the four categories.\n", + " metadata_properties=[]\n", + ")" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "remote_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification\", workspace=\"argilla\"\n", + ")\n", + "remote_dataset" + ] + }, + { + "cell_type": "markdown", + "id": "1f16d868-a9df-4f01-85ac-06bfcee19101", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### From Hugging Face hub \n", + "\n", + "If we wanted to share our dataset with the world, we could use the Huggingface hub for it." + ] + }, + { + "cell_type": "markdown", + "id": "24aae42a-6b0f-40eb-9d92-4aafcb735844", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "First we need to login to huggingface. The following cell will log us with our previous token.\n", + "\n", + "If we don't have one already, we can obtain it from [here](https://huggingface.co/docs/hub/security-tokens) (remember to set the *write* access)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fabcc89-323f-4f4f-9ab9-4b778dd93474", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from huggingface_hub import login\n", + "\n", + "login(token=hf_token)" + ] + }, + { + "cell_type": "markdown", + "id": "694c381d-7f7d-4b2d-938a-20df260ec957", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "And now we can just call the method on the `FeedbackDataset`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1c471559-916c-4bf8-b115-3d1ba0be621b", + "metadata": { + "editable": true, + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# papermill_description=push-dataset-to-huggingface\n", + "remote_dataset.push_to_huggingface(\"argilla/end2end_textclassification\")" + ] + }, + { + "cell_type": "markdown", + "id": "761250bc", + "metadata": {}, + "source": [ + "We can now download the dataset from Hugging Face just to check it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5405ba2", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "local_dataset = rg.FeedbackDataset.from_huggingface(\n", + " \"argilla/end2end_textclassification\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "408cb3c9-c784-45c8-b206-058a23b801d8", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Conclusion" + ] + }, + { + "cell_type": "markdown", + "id": "6cdb1244-1589-4e85-be36-e0c959817c6d", + "metadata": { + "papermill": { + "duration": null, + "end_time": null, + "exception": null, + "start_time": null, + "status": "completed" + }, + "tags": [] + }, + "source": [ + "In this tutorial we created an `Argilla` `FeedbackDataset` for text classification, starting from [ag_news](https://huggingface.co/datasets/ag_news).\n", + "\n", + "We created a `FeedbackDataset` for text classification with a `LabelQuestion`, from data stored as a `datasets.Dataset` and a `pandas.DataFrame`.\n", + "This dataset was pushed both to `Argilla` where we can curate and label the records, and finally pushed it to the 🤗`hub`.\n", + "\n", + "To learn more about how to work with the `FeedbackDataset` check the [cheatsheet](https://docs.v1.argilla.io/en/latest/getting_started/cheatsheet.html#cheatsheet). To continue with assigning records to annotators, you can refer to the [next tutorial](./assign-records-002.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + }, + "papermill": { + "default_parameters": {}, + "duration": 5.95317, + "end_time": "2023-11-15T10:59:21.949504", + "environment_variables": {}, + "exception": null, + "input_path": "/home/agustin/github_repos/argilla-io/argilla/docs/_source/practical_guides/examples/text_classification/text-classification-create-dataset.ipynb", + "output_path": "/home/agustin/github_repos/argilla-io/argilla/docs/_source/practical_guides/examples/text_classification/text-classification-create-dataset.ipynb", + "parameters": {}, + "start_time": "2023-11-15T10:59:15.996334", + "version": "2.5.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/filter-and-query-008.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/filter-and-query-008.ipynb index a839262bf7..9cca459466 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/filter-and-query-008.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/filter-and-query-008.ipynb @@ -148,9 +148,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -172,9 +175,15 @@ "metadata": {}, "outputs": [], "source": [ - "dataset_remote_with_metadata = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_metadata\")\n", - "dataset_remote_with_vectors = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_vectors\")\n", - "dataset_remote_with_suggestions_and_responses = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_suggestions_and_responses\")" + "dataset_remote_with_metadata = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_metadata\"\n", + ")\n", + "dataset_remote_with_vectors = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_vectors\"\n", + ")\n", + "dataset_remote_with_suggestions_and_responses = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_suggestions_and_responses\"\n", + ")" ] }, { @@ -296,19 +305,9 @@ "source": [ "filtered_records = dataset_remote_with_metadata.filter_by(\n", " metadata_filters=[\n", - " rg.TermsMetadataFilter(\n", - " name=\"group\",\n", - " values=[\"group-1\", \"group-2\"]\n", - " ),\n", - " rg.IntegerMetadataFilter(\n", - " name=\"length\",\n", - " le=282\n", - " ),\n", - " rg.FloatMetadataFilter(\n", - " name=\"length_std\",\n", - " ge=204, \n", - " le=290\n", - " ), \n", + " rg.TermsMetadataFilter(name=\"group\", values=[\"group-1\", \"group-2\"]),\n", + " rg.IntegerMetadataFilter(name=\"length\", le=282),\n", + " rg.FloatMetadataFilter(name=\"length_std\", ge=204, le=290),\n", " ]\n", ")\n", "\n", @@ -374,7 +373,7 @@ ], "source": [ "filtered_dataset = dataset_remote_with_metadata.filter_by(response_status=[\"submitted\"])\n", - "print('Submitted records:', len(filtered_dataset))" + "print(\"Submitted records:\", len(filtered_dataset))" ] }, { @@ -398,8 +397,10 @@ } ], "source": [ - "filtered_dataset = dataset_remote_with_metadata.filter_by(response_status=[\"missing\", \"draft\"])\n", - "print('Pending records:', len(filtered_dataset))" + "filtered_dataset = dataset_remote_with_metadata.filter_by(\n", + " response_status=[\"missing\", \"draft\"]\n", + ")\n", + "print(\"Pending records:\", len(filtered_dataset))" ] }, { @@ -425,24 +426,14 @@ "source": [ "filtered_dataset = dataset_remote_with_metadata.filter_by(\n", " metadata_filters=[\n", - " rg.TermsMetadataFilter(\n", - " name=\"group\",\n", - " values=[\"group-1\", \"group-2\"]\n", - " ),\n", - " rg.IntegerMetadataFilter(\n", - " name=\"length\",\n", - " le=282\n", - " ),\n", - " rg.FloatMetadataFilter(\n", - " name=\"length_std\",\n", - " ge=204, \n", - " le=290\n", - " ),\n", + " rg.TermsMetadataFilter(name=\"group\", values=[\"group-1\", \"group-2\"]),\n", + " rg.IntegerMetadataFilter(name=\"length\", le=282),\n", + " rg.FloatMetadataFilter(name=\"length_std\", ge=204, le=290),\n", " ],\n", - " response_status=[\"discarded\"]\n", + " response_status=[\"discarded\"],\n", ")\n", "\n", - "print('Discarded records:', len(filtered_dataset))" + "print(\"Discarded records:\", len(filtered_dataset))" ] }, { @@ -491,7 +482,7 @@ "sorted_records = dataset_remote_with_suggestions_and_responses.sort_by(\n", " [\n", " SortBy(field=\"updated_at\", order=\"desc\"),\n", - " SortBy(field=\"metadata.group\", order=\"asc\")\n", + " SortBy(field=\"metadata.group\", order=\"asc\"),\n", " ]\n", ")" ] @@ -514,7 +505,7 @@ ").sort_by(\n", " [\n", " SortBy(field=\"updated_at\", order=\"desc\"),\n", - " SortBy(field=\"metadata.group\", order=\"asc\")\n", + " SortBy(field=\"metadata.group\", order=\"asc\"),\n", " ]\n", ")" ] @@ -544,7 +535,7 @@ "similar_records = dataset_remote_with_vectors.find_similar_records(\n", " vector_name=\"sentence_embedding\",\n", " record=dataset_remote_with_vectors[0],\n", - " max_results=5\n", + " max_results=5,\n", ")" ] }, @@ -598,9 +589,7 @@ "text_vector = model.encode(text).tolist()\n", "\n", "similar_records = dataset_remote_with_vectors.find_similar_records(\n", - " vector_name=\"sentence_embedding\",\n", - " value=text_vector,\n", - " max_results=5\n", + " vector_name=\"sentence_embedding\", value=text_vector, max_results=5\n", ")" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/train-model-006.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/train-model-006.ipynb index d8616bc246..a87a92f424 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/train-model-006.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/train-model-006.ipynb @@ -148,9 +148,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -172,7 +175,9 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.FeedbackDataset.from_argilla(\"end2end_textclassification_with_suggestions_and_responses\")" + "dataset = rg.FeedbackDataset.from_argilla(\n", + " \"end2end_textclassification_with_suggestions_and_responses\"\n", + ")" ] }, { @@ -190,7 +195,9 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.FeedbackDataset.from_huggingface(\"argilla/end2end_textclassification_with_suggestions_and_responses\")" + "dataset = rg.FeedbackDataset.from_huggingface(\n", + " \"argilla/end2end_textclassification_with_suggestions_and_responses\"\n", + ")" ] }, { @@ -290,9 +297,7 @@ "metadata": {}, "outputs": [], "source": [ - "trainer.update_config(\n", - " max_steps=1\n", - ")" + "trainer.update_config(max_steps=1)" ] }, { @@ -331,7 +336,7 @@ "def formatting_func(sample):\n", " text = sample[\"text\"]\n", " label = sample[\"label\"][0][\"value\"]\n", - " return(text, label)" + " return (text, label)" ] }, { @@ -384,9 +389,7 @@ "metadata": {}, "outputs": [], "source": [ - "trainer.update_config(\n", - " max_steps=1\n", - ")" + "trainer.update_config(max_steps=1)" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/use-metrics-007.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/use-metrics-007.ipynb index 0914cbf6fd..80c5f35d8a 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/use-metrics-007.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/end2end_examples/use-metrics-007.ipynb @@ -149,9 +149,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry module is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry module is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -179,7 +182,9 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.FeedbackDataset.from_huggingface(\"argilla/go_emotions_raw\", split=\"train[:1000]\")" + "dataset = rg.FeedbackDataset.from_huggingface(\n", + " \"argilla/go_emotions_raw\", split=\"train[:1000]\"\n", + ")" ] }, { @@ -218,7 +223,13 @@ ], "source": [ "print(\"text:\", dataset[5].fields[\"text\"])\n", - "print(\"responses:\", [dataset[5].responses[i].values[\"label\"].value for i in range(len(dataset[5].responses))])" + "print(\n", + " \"responses:\",\n", + " [\n", + " dataset[5].responses[i].values[\"label\"].value\n", + " for i in range(len(dataset[5].responses))\n", + " ],\n", + ")" ] }, { @@ -389,7 +400,9 @@ "metadata": {}, "outputs": [], "source": [ - "model_metrics = dataset.compute_model_metrics(question_name=\"label\", metric_names=metric.allowed_metrics)" + "model_metrics = dataset.compute_model_metrics(\n", + " question_name=\"label\", metric_names=metric.allowed_metrics\n", + ")" ] }, { @@ -445,7 +458,11 @@ "metadata": {}, "outputs": [], "source": [ - "model_metrics_unified = dataset.compute_model_metrics(question_name=\"label\", metric_names=[\"accuracy\", \"precision\", \"recall\", \"f1-score\"], strategy=\"majority\")" + "model_metrics_unified = dataset.compute_model_metrics(\n", + " question_name=\"label\",\n", + " metric_names=[\"accuracy\", \"precision\", \"recall\", \"f1-score\"],\n", + " strategy=\"majority\",\n", + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-openai-rag-feedback.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-openai-rag-feedback.ipynb index e29ccb29df..6196d6e146 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-openai-rag-feedback.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-openai-rag-feedback.ipynb @@ -1,797 +1,837 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "FOyRtBFaD8Ti" - }, - "source": [ - "# 🪄 Fine-tuning and evaluating GPT-3.5 with human feedback for RAG \n", - "\n", - "This guide explains how to fine-tune OpenAI's GPT3.5-turbo with your own data and Argilla to improve a RAG (Retrieval Augmented Generation) system. \n", - "\n", - "It includes the following steps:\n", - "\n", - "- Setting up a RAG pipeline using [LlamaIndex](https://github.com/jerryjliu/llama_index) and [Unstructured](https://github.com/Unstructured-IO/unstructured) to answer questions using a document about Argilla Cloud.\n", - "- Generating potential questions with LlamaIndex to build a training and test set.\n", - "- Building a dataset for collecting human written responses with Argilla.\n", - "- Fine-tuning GPT3.5-turbo with high-quality data.\n", - "- Evaluating the fine-tuned model vs. the base model with human preference data from Argilla.\n", - "\n", - "The goal of the tutorial is to demonstrate how to incorporate human feedback into your LLM development for two critical stages: \n", - "\n", - "1. Gathering **high-quality data for fine-tuning**, \n", - "2. Gathering **human feedback for evaluation of LLM applications**.\n", - "\n", - "\n", - "Given the ongoing debate between Retrieval Augmented Generation (RAG) and fine-tuning, we selected a real-world RAG use case to demonstrate how fine-tuning enhances the style, utility, and relevance of responses within a RAG application. The resulting system will be a Hybrid RAG system (RAG using fine-tuned models) as [described in this article](https://towardsdatascience.com/rag-vs-finetuning-which-is-the-best-tool-to-boost-your-llm-application-94654b1eaba7). \n", - "\n", - "The screenshot below displays the evaluation dataset, termed the \"human preference dataset.\" In it, `response-a` is produced by the fine-tuned model, while `response-b` comes from the base GPT-3.5 model. With just minor fine-tuning and without altering the system message, we've directed the LLM's behavior towards generating responses that are more helpful, faithful, friendly, and aligned with our brand.\n", - "\n", - "Fine-tuning effectively mitigates common RAG challenges, like the LLM referring to the context using phrases such as \"The context does not provide information about this.\" This enhancement is notable even when we had incorporated directives in the system message to deter such references, like \"2. Avoid phrases such as 'Based on the context, ...' or 'The context information ...'.\" (see Llama Index default prompt later).\n", - "\n", - "You can also browse the [datasets hosted with Argilla Hugging Face Spaces](https://huggingface.co/spaces/argilla/fine-tune-chat-gpt). User and password: argilla / 12345678. The dataset for this stage is `customer-assistant` and for the evaluation step is `finetuned-vs-base-preference`.\n", - "\n", - "\n", - "![Human preference](/_static/images/llms/fine-tuning-openai-rag-feedback/preference-fine-tuned.png \"Fine-tuned model vs base model response\")\n", - "\n", - "\n", - "\n", - "\n", - "By the end of the tutorial, you'll be using a fine-tuned model for RAG and have a human evaluation workflow in place to continuously evaluate your LLM application (see below for a comparison of the base gpt3.5 vs. the fine-tuned gpt3.5 for this application).\n", - "\n", - "![Fine-tuned model vs. base model](/_static/images/llms/fine-tuning-openai-rag-feedback/fine-tune-vs-base.png \"Fine-tuned model vs base model\")\n", - "\n", - "\n", - "Let's get started!\n", - "\n", - "## Setup\n", - "\n", - "To run this tutorial, you need to [install and launch Argilla](https://docs.v1.argilla.io/en/latest/getting_started/quickstart_installation.html), as well as some other packages." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "j76dPBrN3iR_" - }, - "outputs": [], - "source": [ - "%pip install argilla openai datasets llama-index unstructured -qqq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "RI_lnoziIkww" - }, - "outputs": [], - "source": [ - "# Import the needed libraries\n", - "import os\n", - "import random\n", - "from tqdm import tqdm\n", - "import matplotlib.pyplot as plt\n", - "\n", - "import openai\n", - "\n", - "import argilla as rg\n", - "from argilla.feedback import TrainingTask\n", - "from argilla.feedback import ArgillaTrainer\n", - "\n", - "from typing import Union, Tuple, List\n", - "\n", - "from llama_index.core import ServiceContext, VectorStoreIndex, download_loader\n", - "from llama_index.llms.openai import OpenAI\n", - "from llama_index.core.evaluation import DatasetGenerator\n", - "\n", - "from datasets import load_dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the URL and API_KEY:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "kIrT-iWx3kbX" - }, - "outputs": [], - "source": [ - "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", - "# Replace api_key if you configured a custom API key\n", - "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# # Replace workspace with the name of your workspace\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"owner.apikey\",\n", - "# workspace=\"admin\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "T45WtJ9t9Vzq" - }, - "outputs": [], - "source": [ - "# Your openAI key is needed for generation and fine-tuning\n", - "os.environ['OPENAI_API_KEY'] = 'sk-...'\n", - "openai.api_key = os.environ[\"OPENAI_API_KEY\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../../reference/telemetry.md) page.\n", - "\n", - "```python\n", - "from argilla.utils.telemetry import tutorial_running\n", - "\n", - "tutorial_running()\n", - "```" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "K4ExAXiKSCu5" - }, - "source": [ - "## Generating responses with LlamaIndex and GPT3.5\n", - "\n", - "We generate responses for the generated questions using [this dataset about Argilla Cloud](https://huggingface.co/datasets/argilla/cloud_assistant_questions). We have generated this dataset using a source document and LlamaIndex's question generator (see appendix about how to generate these questions).\n", - "\n", - "If you want to skip this process (it will take several minutes), we have shared the resulting [dataset on Hugging Face](https://huggingface.co/datasets/argilla/customer_assistant).\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "47IBrvmYTKrB" - }, - "outputs": [], - "source": [ - "# Read our source questions\n", - "dataset = load_dataset(\"argilla/cloud_assistant_questions\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "PfcOQ67ZSHZK" - }, - "outputs": [], - "source": [ - "# Read and parse the document using Unstructured\n", - "UnstructuredReader = download_loader(\"UnstructuredReader\", refresh_cache=True)\n", - "loader = UnstructuredReader()\n", - "# You can download this doc from: https://huggingface.co/datasets/argilla/cloud_assistant_questions/raw/main/argilla_cloud.txt\n", - "documents = loader.load_data(\"argilla_cloud.txt\")\n", - "\n", - "# Set up the Llama index context\n", - "gpt_35_context = ServiceContext.from_defaults(\n", - " llm=OpenAI(model=\"gpt-3.5-turbo\", temperature=0.3)\n", - ")\n", - "\n", - "# Index the document and set up the engine\n", - "index = VectorStoreIndex.from_documents(documents, service_context=gpt_35_context)\n", - "query_engine = index.as_query_engine(similarity_top_k=2)\n", - "\n", - "contexts = []\n", - "answers = []\n", - "questions = dataset[\"train\"][\"question\"]\n", - "\n", - "# Inference over the questions\n", - "for question in tqdm(questions):\n", - " response = query_engine.query(question)\n", - " contexts.append([x.node.get_content() for x in response.source_nodes])\n", - " answers.append(str(response))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "UKRsz0WxUBkI", - "outputId": "3288bfed-9ccc-4140-973e-cf7f2e265ba2" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Question: What is the ticketing system used by Argilla for customer support?\n", - "Answer: The ticketing system used by Argilla for customer support is not specified in the given context information.\n", - "Context: [\"This process ensures the client administrator has full control over their team's access and can manage their workspace efficiently.Plans The plans for the Argilla Cloud service depend on the volume of records processed, with several tiers available to suit varying needs.Each tier has a corresponding monthly and annual price, with a 10% discount applied to the annual pricing option.The tier selection and associated price will be determined by the client's selection in the Service Order Form section of the Terms of Service document.Plans are: Starter 1 Million records Base 3 Million records Medium 4 Million records Large 6 million records\\n\\nSupport Argilla Cloud offers comprehensive support services to address various issues that may arise during the use of our service.Support levels are categorized into four distinct tiers, based on the severity of the issue, and a separate category for feature requests.The support process, response times, and procedures differ for each category.(1) Critical Issues Critical issues are characterized by: Severe impact on the Service, potentially rendering it completely non-functional.Disruption of critical service operations or functions.Obstruction of entire customer workflows.In the case of a critical issue, Argilla will: Assign specialist(s) to correct the issue on an expedited basis.Provide ongoing communication on the status via email and/or phone, according to the customer's preference.Begin work towards identifying a temporary workaround or fix.(2) Major Issues Major issues involve: Limited functionality of the Service.Service instability with periodic interruptions.Material service interruptions in mission-critical functions.Time-sensitive questions impacting performance or deliverables to end-clients.Upon encountering a major issue, Argilla will: Assign a specialist to begin a resolution.Implement additional, escalated procedures as reasonably determined necessary by Argilla Support Services staff.(3) Minor Issues Minor issues include: Errors causing partial, non-critical functionality loss.The need for clarification on procedures or information in documentation.Errors in service that may impact performance deliverables.(4) Trivial Issues Trivial issues are characterized by: Errors in system development with little to no impact on performance.Feature Requests Feature requests involve: Requesting a product enhancement.For feature requests, Argilla will: Respond regarding the relevance and interest in incorporating the requested feature.In summary, Argilla Cloud's support services are designed to provide timely and efficient assistance for issues of varying severity, ensuring a smooth and reliable user experience.All plans include Monday to Friday during office hours (8am to 17pm CEST) with additional support upon request.The Support Channels and features of each tier are shown below:\\n\\nStarter: Slack Community.Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 48 hours.Severity 4 not specified.Base: Ticketing System, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 not specified.Medium: Ticketing System and dedicated Slack channel, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 one week\\n\\nLarge: Ticketing System and dedicated Slack channel, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 one week.Data backup and recovery plan Argilla Cloud is committed to ensuring the safety and availability of your data.Our system is designed to run six data backups per day as a standard procedure.These backups capture a snapshot of the system state at the time of the backup, enabling restoration to that point if necessary.Our Recovery Point Objective (RPO) is four hours.This means that in the event of a system failure, the maximum data loss would be up to the last four hours of data input.We achieve this by running regular backups throughout the day, reducing the time window of potential data loss.Our Recovery Time Objective (RTO) is one hour.This is the maximum acceptable length of time that your system could be down following a failure or disruption.It represents our commitment to ensuring that your services are restored as quickly as possible.In the event of a disruption, our team will first evaluate the issue to determine the best course of action.If data recovery is necessary, we will restore from the most recent backup.We will then work to identify and resolve the root cause of the disruption to prevent a recurrence.Finally, we conduct regular test restores to ensure that our backup system is working as intended.These tests verify the integrity of the backup data and the functionality of the restore process.\", \"This documents an overview of the Argilla Cloud service - a comprehensive Software as a Service (SaaS) solution for data labeling and curation.The service is specifically designed to meet the needs of businesses seeking a reliable, secure, and user-friendly platform for data management.The key components of our service include advanced security measures, robust data backup and recovery protocols, flexible pricing options, and dedicated customer support.The onboarding process is efficient, enabling clients to start using the service within one business day.The scope of this proposal includes details on the aforementioned aspects, providing a clear understanding of the service offerings and associated processes.Argilla Cloud offers four plans:\\n\\nStarter: Ideal for teams initiating their journey in scaling data curation and labelling projects.Perfect for environments where production monitoring is not a requirement.Base: Tailored for teams seeking to amplify their data curation, labelling efforts, and model monitoring, with enhanced support from Argilla.Medium: Designed for teams expanding their language model pipelines, requiring robust ML lifecycle management fortified by Argilla's comprehensive support.Large: Geared towards teams heavily dependent on language model pipelines, human feedback, and applications, requiring complete ML lifecycle management with robust support.Scope of services Argilla Cloud, a fully managed SaaS, encompasses the following functionalities: Unrestricted Users, Datasets, and Workspaces: The service imposes no limits on the number of users, datasets, or workspaces, supporting scalability of operations.Role-Based Access Control: Administrators and annotators have differentiated access rights to ensure structured and secure data management.Custom Subdomain: Clients are provided with a distinct argilla.io subdomain for accessing the platform.Regular Updates and Upgrades: The service includes regular platform patches and upgrades as part of routine maintenance to uphold system integrity and security.Managed Service: Infrastructure maintenance, backend operations, and other technical aspects are managed by Argilla, eliminating the need for client-side management.Security The security framework of the Argilla Cloud service involves a multi-faceted approach: Data Encryption at Rest: Data stored within the system is encrypted, forming a crucial layer of security.This process automatically encrypts data prior to storage, guarding against unauthorized access.Network Security Measures: The infrastructure has been designed to prevent unauthorized intrusion and to ensure consistent service availability.Measures include firewall protections, intrusion detection systems, and scheduled vulnerability scans to detect and address potential threats.Role-Based Access Control: The system implements role-based access control, defining access levels based on user roles.This mechanism controls the extent of access to sensitive information, aligning it with the responsibilities of each role.Security Audits: Regular audits of security systems and protocols are conducted to detect potential vulnerabilities and verify adherence to security standards.Employee Training: All personnel receive regular security training, fostering an understanding of the latest threats and the importance of security best practices.Incident Response Protocol: In the case of a security incident, a pre-defined incident response plan is activated.This plan outlines the procedures for managing different types of security events, and aims to ensure swift mitigation of potential damage.In summary, the security measures in place include data encryption, network security protocols, role-based access control, regular audits, employee training, and a comprehensive incident response plan.These measures contribute to a secure environment for data management.Setup and onboarding The process for setup and onboarding for Argilla Cloud is designed to be efficient and straightforward.The procedure involves a sequence of steps to ensure a smooth transition and optimal use of the service.Step 1: Account Creation The setup process begins with the creation of the client owner account.We require the client to provide the following details: Full name of the administrator Preferred username Administrator's email address Once these details are received, we send an onboarding email to sign up.Step 2: Platform Orientation Once logged in, the administrator has full access to the Argilla Cloud platform.They can familiarize themselves with the platform interface and various features.If required, a guided tour or tutorial can be provided to walk the administrator through the platform.Step 3: User Management The administrator is then responsible for setting up additional user accounts.They can invite users via email, manage roles (admin, annotator, etc.), and assign access permissions to different workspaces and datasets.Step 4: Workspace and Dataset Configuration The administrator can create and manage multiple workspaces and datasets.They have the option to configure settings as per their team's requirements, including assigning datasets to specific workspaces and managing access permissions.Step 5: Training and Support Argilla provides open resources and support to aid in the onboarding process.This includes user manuals, tutorials, and access to our support team for any queries or issues that may arise during the setup and onboarding process.By following these steps, new users can be quickly onboarded and begin using the Argilla Cloud service with minimal downtime.\"]\n" - ] - } - ], - "source": [ - "# Show an example of q, a, and context\n", - "print(f\"Question: {questions[0]}\")\n", - "print(f\"Answer: {answers[0]}\")\n", - "print(f\"Context: {contexts[0]}\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "y6Bavj4Abkwa" - }, - "source": [ - "## Create Argilla dataset and collect feedback\n", - "\n", - "\n", - "We set up an Argilla Dataset for gathering human feedback.\n", - "\n", - "\n", - "For fine-tuning, we need to set up a text question to gather the human written or edited responses. This data is known as completion or demonstration data.\n", - "\n", - "Additionally, leveraging the multi-aspect feedback capabilities of Argilla, we set up two additional feedback dimensions to rate the relevance of the question (as they're synthetic they might be irrelevant or bad quality) and the quality of the context retrieved from our retriever component (can be used to improve the RAG configuration).\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ID3Qu9aVbtaX" - }, - "outputs": [], - "source": [ - "dataset = rg.FeedbackDataset(\n", - " fields=[rg.TextField(name=\"user-message\"), rg.TextField(name=\"context\")],\n", - " questions=[\n", - " rg.RatingQuestion(name=\"question-rating\", title=\"Rate the relevance of the user question\", values=[1,2,3,4,5], required=False),\n", - " rg.RatingQuestion(name=\"context-rating\", title=\"Rate the quality and relevancy of context for the assistant\", values=[1,2,3,4,5], required=False),\n", - " rg.TextQuestion(name=\"response\", title=\"Write a helpful, harmless, accurate response to the user question\"),\n", - " ]\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "btwbDF6_PayX" - }, - "source": [ - "We use the questions, context, and generated responses to build our feedback records. We pre-fill the responses in the UI with OpenAI's responses using `suggestions` and ask our labelers to edit them if necessary." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "bW63w95KcfwS" - }, - "outputs": [], - "source": [ - "records = []\n", - "\n", - "for question, answer, context in tqdm(zip(questions, answers, contexts), total=len(questions)):\n", - " # Instantiate the FeedbackRecord\n", - " feedback_record = rg.FeedbackRecord(\n", - " fields={\"user-message\": question, \"context\": \"\\n\".join(context)},\n", - " suggestions=[\n", - " {\n", - " \"question_name\": \"response\",\n", - " \"value\": answer,\n", - " }\n", - " ]\n", - " )\n", - " records.append(feedback_record)\n", - "\n", - "# Publish dataset in Argilla UI\n", - "dataset = dataset.push_to_argilla(name=\"customer_assistant\", workspace=\"admin\")\n", - "dataset.add_records(records)\n", - "\n", - "# Optional: store and version dataset in the Hub\n", - "#dataset = dataset.push_to_huggingface(\"argilla/rg_customer_assistant\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the dataset is available for collecting feedback with the Argilla UI. Here's a video showing the workflow for labelers:\n", - "\n", - "" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "9yLxmSDsQPts" - }, - "source": [ - "## Prepare Argilla dataset for fine-tuning\n", - "\n", - "\n", - "We now read the responses from Argilla and prepare the dataset for fine-tuning following the [fine-tuning format from OpenAI guides](https://platform.openai.com/docs/guides/fine-tuning).\n", - "\n", - "We use the quick adaptation of LlamaIndex's `TEXT_QA_PROMPT` system prompt and the fine-tuned responses from our Argilla dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Read the dataset from Argilla\n", - "dataset = rg.FeedbackDataset.from_argilla(\"customer_assistant\", workspace=\"admin\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you have skipped the previous steps run this to get the pre-built dataset.\n", - "\n", - "```python\n", - "dataset = rg.FeedbackDataset.from_huggingface(\"argilla/customer_assistant\")\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "N5hFLJaHSz9C" - }, - "outputs": [], - "source": [ - "# Adaptation from LlamaIndex's TEXT_QA_PROMPT_TMPL_MSGS[1].content\n", - "user_message_prompt =\"\"\"Context information is below.\n", - "---------------------\n", - "{context_str}\n", - "---------------------\n", - "Given the context information and not prior knowledge but keeping your Argilla Cloud assistant style, answer the query.\n", - "Query: {query_str}\n", - "Answer:\n", - "\"\"\"\n", - "# Adaptation from LlamaIndex's TEXT_QA_SYSTEM_PROMPT\n", - "system_prompt = \"\"\"You are an expert customer service assistant for the Argilla Cloud product that is trusted around the world.\n", - "Always answer the query using the provided context information, and not prior knowledge.\n", - "Some rules to follow:\n", - "1. Never directly reference the given context in your answer.\n", - "2. Avoid statements like 'Based on the context, ...' or 'The context information ...' or anything along those lines.\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "siPKLnctRLpD" - }, - "outputs": [], - "source": [ - "def formatting_func(sample: dict) -> Union[Tuple[str, str, str, str], List[Tuple[str, str, str, str]]]:\n", - " from uuid import uuid4\n", - " if sample[\"response\"]:\n", - " chat = str(uuid4())\n", - " user_message = user_message_prompt.format(context_str=sample[\"context\"], query_str=sample[\"user-message\"])\n", - " return [\n", - " (chat, \"0\", \"system\", system_prompt),\n", - " (chat, \"1\", \"user\", user_message),\n", - " (chat, \"2\", \"assistant\", sample[\"response\"][0][\"value\"])\n", - " ]\n", - "\n", - "task = TrainingTask.for_chat_completion(formatting_func=formatting_func)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "SVvdU9EqVWSR" - }, - "source": [ - "## Fine-tune GPT3.5 with high-quality feedback\n", - "\n", - "\n", - "We fine-tune `gpt-3.5-turbo` with the exported dataset using the Argilla Trainer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "afLyk289VhBL" - }, - "outputs": [], - "source": [ - "trainer = ArgillaTrainer(\n", - " dataset=dataset,\n", - " task=task,\n", - " framework=\"openai\",\n", - ")\n", - "trainer.train(output_dir=\"my-ft-openai-model\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "eG-zXJJ2dbi_" - }, - "source": [ - "## Evaluating base vs fine-tuned with human preference data\n", - "\n", - "We set up a new feedback dataset for gathering human feedback to evaluate the fine-tuned model against the base model, using the test dataset.\n", - "\n", - "There are many ways to collect feedback for this phase. The most suitable in this case is human preference data over responses from the two models: *asking our labelers which response is the most accurate and helpful*. We can easily do this with Argilla's `RankingQuestion`.\n", - "\n", - "Additionally, as both responses can be equally bad, we can ask labelers to write down a correct response. In this case, we would be collecting demonstration data to add to our fine-tuning workflow.\n", - "\n", - "\n", - "### Create dataset and collect feedback\n", - "\n", - "We set up and publish a new dataset with a `RankingQuestion` and `TextQuestion`, showing our labelers the `user-message` and two responses (from the base and the fine-tuned models)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "tsQT0Ps1igZc" - }, - "outputs": [], - "source": [ - "dataset = rg.FeedbackDataset(\n", - " fields=[rg.TextField(name=\"user-message\"), rg.TextField(name=\"response-a\"), rg.TextField(name=\"response-b\")],\n", - " questions=[\n", - " rg.RankingQuestion(name=\"preference\", title=\"Which response is more helpful, harmless, and accurate.\", values=[\"response-a\", \"response-b\"]),\n", - " rg.TextQuestion(name=\"response\", title=\"If none is good, write a helpful, harmless, accurate response to the user question\", required=False),\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "95-iBx8fgoGg" - }, - "outputs": [], - "source": [ - "# Read our test questions\n", - "questions = load_dataset(\"argilla/cloud_assistant_questions\", split=\"test\")[\"question\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "background_save": true - }, - "id": "NPPLoZGae9ia" - }, - "outputs": [], - "source": [ - "# Generate responses with base model\n", - "index = VectorStoreIndex.from_documents(documents, service_context=gpt_35_context)\n", - "query_engine = index.as_query_engine(similarity_top_k=2)\n", - "\n", - "contexts = []\n", - "base_model_responses = []\n", - "\n", - "for question in tqdm(questions):\n", - " response = query_engine.query(question)\n", - " base_model_responses.append(str(response))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "AU9NwKnQgAPu" - }, - "outputs": [], - "source": [ - "# Generate responses with ft model: replace with the id of your ft model\n", - "ft_context = ServiceContext.from_defaults(\n", - " llm=OpenAI(model=\"ft:gpt-3.5-turbo-...\", temperature=0.3)\n", - ")\n", - "index = VectorStoreIndex.from_documents(documents, service_context=ft_context)\n", - "query_engine = index.as_query_engine(similarity_top_k=2)\n", - "\n", - "contexts = []\n", - "ft_model_responses = []\n", - "\n", - "for question in tqdm(questions):\n", - " response = query_engine.query(question)\n", - " ft_model_responses.append(str(response))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "hsPoYfgJTCOD" - }, - "source": [ - "An important step here is to randomize the order in which responses are shown.\n", - "\n", - "If we show the fine-tuned model response always as the first option, we can introduce position bias (labelers always choosing a certain position) or make it evident to users that there are two obviously different models.\n", - "\n", - "To avoid this, we randomize the position and keep two metadata fields indicating which model has produced `response-a` and `response-b`. When collecting the responses, we'll use this metadata to map the ranking with each model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "0zvH3sDkhMFJ" - }, - "outputs": [], - "source": [ - "records = []\n", - "for base, ft, question in zip(base_model_responses, ft_model_responses, questions):\n", - " # Randomizing the position is a highly important step to mitigate labeler biases\n", - " # Shuffle the order of base and ft\n", - " response_a, response_b = random.sample([base, ft], 2)\n", - "\n", - " # Map the responses back to their model names\n", - " models = {\n", - " base: \"base_model\",\n", - " ft: \"ft_model\"\n", - " }\n", - " feedback_record = rg.FeedbackRecord(\n", - " fields={\"user-message\": question, \"response-a\": response_a, \"response-b\": response_b},\n", - " metadata={\"response-a-model\": models[response_a], \"response-b-model\": models[response_b]}\n", - " )\n", - "\n", - " records.append(feedback_record)\n", - "\n", - "dataset = dataset.push_to_argilla(name=\"finetuned-vs-base-preference\", workspace=\"admin\")\n", - "dataset.add_records(records)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the dataset is available for collecting feedback with the Argilla UI. Here's a video showing the workflow for labelers:\n", - "\n", - "" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "eRiVf39Bblmh" - }, - "source": [ - "### Retrieve and analyze responses\n", - "\n", - "We can dynamically collect the responses from our labelers. In this case, we will compute the win rate and ties (as users can indicate both responses are equally good or bad).\n", - "\n", - "For the tutorial, we only have one user but Argilla Feedback is fully multi-user, which means you can collect feedback from several users for each data point, increasing the quality of the evaluation. \n", - "\n", - "You can read more about multi-user scenarios and built-in unification methods [on this guide](/practical_guides/collect_responses.md).\n", - "\n", - "With a very small evaluation set, we can see that the fine-tuned model responses are preferred ~60% of the time, 3x over the base model, and they are both equally good or bad ~20% of the time. \n", - "\n", - "\n", - "Even with a very small fine-tuning and evaluation dataset, this already shows **promising benefits of fine-tuning models for enhancing RAG systems**.\n", - "\n", - "\n", - "![Fine-tuned model vs base model](/_static/images/llms/fine-tuning-openai-rag-feedback/fine-tune-vs-base.png \"Fine-tuned model vs base model\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "XZKBhlKCbwUV" - }, - "outputs": [], - "source": [ - "# Retrieve the dataset from Argilla\n", - "dataset = rg.FeedbackDataset.from_argilla(name=\"finetuned-vs-base-preference\", workspace=\"admin\")\n", - "\n", - "win_rates = {\n", - " 'ft_model': 0,\n", - " 'base_model': 0,\n", - " 'tie': 0\n", - "}\n", - "\n", - "# Compute the win and tie rates\n", - "for record in dataset.records:\n", - " if len(record.responses) > 0:\n", - " for response in record.responses:\n", - " model_a = record.metadata[\"response-a-model\"]\n", - " model_b = record.metadata[\"response-b-model\"]\n", - " preference = response.values['preference'].value\n", - " if preference[0].rank > preference[1].rank:\n", - " win_rates[model_a] = win_rates[model_a] + 1\n", - " elif preference[1].rank > preference[0].rank:\n", - " win_rates[model_b] = win_rates[model_b] + 1\n", - " else:\n", - " win_rates['tie'] = win_rates['tie'] + 1\n", - "win_rates\n", - "# {'ft_model': 17, 'base_model': 6, 'tie': 5}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "BpoH-OnRnuoL" - }, - "outputs": [], - "source": [ - "# Let's make the labels more explicit\n", - "data = {'gpt3.5-fine-tuned': 17, 'gpt3.5-base': 6, 'tie': 5}\n", - "total = sum(data.values())\n", - "\n", - "# Calculate percentages\n", - "percentages = [value / total * 100 for value in data.values()]\n", - "\n", - "# Settings\n", - "colors = ['blue', 'grey', 'black']\n", - "labels = [f\"{key} ({value:.2f}%)\" for key, value in zip(data.keys(), percentages)]\n", - "\n", - "# Plotting\n", - "plt.figure(figsize=(12, 2))\n", - "\n", - "# The cumulative percentage is used to shift the starting point of each subsequent segment\n", - "cumulative_percentages = 0\n", - "\n", - "for percent, color, label in zip(percentages, colors, labels):\n", - " plt.barh('Models', percent, color=color, label=label, left=cumulative_percentages)\n", - " plt.text(cumulative_percentages + percent/2, 0, label, ha='center', va='center', color='white', fontsize=10)\n", - " cumulative_percentages += percent\n", - "\n", - "plt.gca().axes.get_yaxis().set_visible(False)\n", - "plt.xlim(0, 100)\n", - "plt.title('Model Win Rates')\n", - "plt.legend(loc=\"upper center\", bbox_to_anchor=(0.5, -0.25), ncol=3)\n", - "plt.tight_layout()\n", - "\n", - "# Display\n", - "plt.show()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "hCrnoTw_GIyr" - }, - "source": [ - "## Appendix: Generating questions with Llama Index\n", - "\n", - "\n", - "We use the `DatasetGenerator` from Llama Index to generate a set of questions using a document about Argilla Cloud." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "kf-hZurHckDf" - }, - "outputs": [], - "source": [ - "UnstructuredReader = download_loader(\"UnstructuredReader\", refresh_cache=True)\n", - "loader = UnstructuredReader()\n", - "\n", - "# You can download this doc from: https://huggingface.co/datasets/argilla/cloud_assistant_questions/raw/main/argilla_cloud.txt\n", - "documents = loader.load_data(\"argilla_cloud.txt\")\n", - "\n", - "gpt_35_context = ServiceContext.from_defaults(\n", - " llm=OpenAI(model=\"gpt-3.5-turbo\", temperature=0.4),\n", - " chunk_size=60\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "wSVCTgEsc1zm" - }, - "outputs": [], - "source": [ - "question_gen_query = (\n", - " \"You are customer support and sales expert of Argilla. Your task is to setup \"\n", - " \"a set of frequently asked questions about the Argilla Cloud service, offer and plans\"\n", - " \"formulate a single question that could be asked by a potential B2B client interested in Argilla Cloud \"\n", - " \". Restrict the question to the context information provided and don't ask general questions not related to the service and the context provided.\"\n", - ")\n", - "\n", - "dataset_generator = DatasetGenerator.from_documents(\n", - " documents,\n", - " question_gen_query=question_gen_query,\n", - " service_context=gpt_35_context,\n", - " num_questions_per_chunk=100\n", - ")\n", - "\n", - "questions = dataset_generator.generate_questions_from_nodes(num=300)" - ] - } - ], - "metadata": { + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "FOyRtBFaD8Ti" + }, + "source": [ + "# 🪄 Fine-tuning and evaluating GPT-3.5 with human feedback for RAG \n", + "\n", + "This guide explains how to fine-tune OpenAI's GPT3.5-turbo with your own data and Argilla to improve a RAG (Retrieval Augmented Generation) system. \n", + "\n", + "It includes the following steps:\n", + "\n", + "- Setting up a RAG pipeline using [LlamaIndex](https://github.com/jerryjliu/llama_index) and [Unstructured](https://github.com/Unstructured-IO/unstructured) to answer questions using a document about Argilla Cloud.\n", + "- Generating potential questions with LlamaIndex to build a training and test set.\n", + "- Building a dataset for collecting human written responses with Argilla.\n", + "- Fine-tuning GPT3.5-turbo with high-quality data.\n", + "- Evaluating the fine-tuned model vs. the base model with human preference data from Argilla.\n", + "\n", + "The goal of the tutorial is to demonstrate how to incorporate human feedback into your LLM development for two critical stages: \n", + "\n", + "1. Gathering **high-quality data for fine-tuning**, \n", + "2. Gathering **human feedback for evaluation of LLM applications**.\n", + "\n", + "\n", + "Given the ongoing debate between Retrieval Augmented Generation (RAG) and fine-tuning, we selected a real-world RAG use case to demonstrate how fine-tuning enhances the style, utility, and relevance of responses within a RAG application. The resulting system will be a Hybrid RAG system (RAG using fine-tuned models) as [described in this article](https://towardsdatascience.com/rag-vs-finetuning-which-is-the-best-tool-to-boost-your-llm-application-94654b1eaba7). \n", + "\n", + "The screenshot below displays the evaluation dataset, termed the \"human preference dataset.\" In it, `response-a` is produced by the fine-tuned model, while `response-b` comes from the base GPT-3.5 model. With just minor fine-tuning and without altering the system message, we've directed the LLM's behavior towards generating responses that are more helpful, faithful, friendly, and aligned with our brand.\n", + "\n", + "Fine-tuning effectively mitigates common RAG challenges, like the LLM referring to the context using phrases such as \"The context does not provide information about this.\" This enhancement is notable even when we had incorporated directives in the system message to deter such references, like \"2. Avoid phrases such as 'Based on the context, ...' or 'The context information ...'.\" (see Llama Index default prompt later).\n", + "\n", + "You can also browse the [datasets hosted with Argilla Hugging Face Spaces](https://huggingface.co/spaces/argilla/fine-tune-chat-gpt). User and password: argilla / 12345678. The dataset for this stage is `customer-assistant` and for the evaluation step is `finetuned-vs-base-preference`.\n", + "\n", + "\n", + "![Human preference](/_static/images/llms/fine-tuning-openai-rag-feedback/preference-fine-tuned.png \"Fine-tuned model vs base model response\")\n", + "\n", + "\n", + "\n", + "\n", + "By the end of the tutorial, you'll be using a fine-tuned model for RAG and have a human evaluation workflow in place to continuously evaluate your LLM application (see below for a comparison of the base gpt3.5 vs. the fine-tuned gpt3.5 for this application).\n", + "\n", + "![Fine-tuned model vs. base model](/_static/images/llms/fine-tuning-openai-rag-feedback/fine-tune-vs-base.png \"Fine-tuned model vs base model\")\n", + "\n", + "\n", + "Let's get started!\n", + "\n", + "## Setup\n", + "\n", + "To run this tutorial, you need to [install and launch Argilla](https://docs.v1.argilla.io/en/latest/getting_started/quickstart_installation.html), as well as some other packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "j76dPBrN3iR_" + }, + "outputs": [], + "source": [ + "%pip install argilla openai datasets llama-index unstructured -qqq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RI_lnoziIkww" + }, + "outputs": [], + "source": [ + "# Import the needed libraries\n", + "import os\n", + "import random\n", + "from tqdm import tqdm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import openai\n", + "\n", + "import argilla as rg\n", + "from argilla.feedback import TrainingTask\n", + "from argilla.feedback import ArgillaTrainer\n", + "\n", + "from typing import Union, Tuple, List\n", + "\n", + "from llama_index.core import ServiceContext, VectorStoreIndex, download_loader\n", + "from llama_index.llms.openai import OpenAI\n", + "from llama_index.core.evaluation import DatasetGenerator\n", + "\n", + "from datasets import load_dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the URL and API_KEY:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kIrT-iWx3kbX" + }, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "# Replace workspace with the name of your workspace\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# # Replace workspace with the name of your workspace\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"owner.apikey\",\n", + "# workspace=\"admin\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "T45WtJ9t9Vzq" + }, + "outputs": [], + "source": [ + "# Your openAI key is needed for generation and fine-tuning\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\"\n", + "openai.api_key = os.environ[\"OPENAI_API_KEY\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../../reference/telemetry.md) page.\n", + "\n", + "```python\n", + "from argilla.utils.telemetry import tutorial_running\n", + "\n", + "tutorial_running()\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "K4ExAXiKSCu5" + }, + "source": [ + "## Generating responses with LlamaIndex and GPT3.5\n", + "\n", + "We generate responses for the generated questions using [this dataset about Argilla Cloud](https://huggingface.co/datasets/argilla/cloud_assistant_questions). We have generated this dataset using a source document and LlamaIndex's question generator (see appendix about how to generate these questions).\n", + "\n", + "If you want to skip this process (it will take several minutes), we have shared the resulting [dataset on Hugging Face](https://huggingface.co/datasets/argilla/customer_assistant).\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "47IBrvmYTKrB" + }, + "outputs": [], + "source": [ + "# Read our source questions\n", + "dataset = load_dataset(\"argilla/cloud_assistant_questions\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PfcOQ67ZSHZK" + }, + "outputs": [], + "source": [ + "# Read and parse the document using Unstructured\n", + "UnstructuredReader = download_loader(\"UnstructuredReader\", refresh_cache=True)\n", + "loader = UnstructuredReader()\n", + "# You can download this doc from: https://huggingface.co/datasets/argilla/cloud_assistant_questions/raw/main/argilla_cloud.txt\n", + "documents = loader.load_data(\"argilla_cloud.txt\")\n", + "\n", + "# Set up the Llama index context\n", + "gpt_35_context = ServiceContext.from_defaults(\n", + " llm=OpenAI(model=\"gpt-3.5-turbo\", temperature=0.3)\n", + ")\n", + "\n", + "# Index the document and set up the engine\n", + "index = VectorStoreIndex.from_documents(documents, service_context=gpt_35_context)\n", + "query_engine = index.as_query_engine(similarity_top_k=2)\n", + "\n", + "contexts = []\n", + "answers = []\n", + "questions = dataset[\"train\"][\"question\"]\n", + "\n", + "# Inference over the questions\n", + "for question in tqdm(questions):\n", + " response = query_engine.query(question)\n", + " contexts.append([x.node.get_content() for x in response.source_nodes])\n", + " answers.append(str(response))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.13" + "base_uri": "https://localhost:8080/" + }, + "id": "UKRsz0WxUBkI", + "outputId": "3288bfed-9ccc-4140-973e-cf7f2e265ba2" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Question: What is the ticketing system used by Argilla for customer support?\n", + "Answer: The ticketing system used by Argilla for customer support is not specified in the given context information.\n", + "Context: [\"This process ensures the client administrator has full control over their team's access and can manage their workspace efficiently.Plans The plans for the Argilla Cloud service depend on the volume of records processed, with several tiers available to suit varying needs.Each tier has a corresponding monthly and annual price, with a 10% discount applied to the annual pricing option.The tier selection and associated price will be determined by the client's selection in the Service Order Form section of the Terms of Service document.Plans are: Starter 1 Million records Base 3 Million records Medium 4 Million records Large 6 million records\\n\\nSupport Argilla Cloud offers comprehensive support services to address various issues that may arise during the use of our service.Support levels are categorized into four distinct tiers, based on the severity of the issue, and a separate category for feature requests.The support process, response times, and procedures differ for each category.(1) Critical Issues Critical issues are characterized by: Severe impact on the Service, potentially rendering it completely non-functional.Disruption of critical service operations or functions.Obstruction of entire customer workflows.In the case of a critical issue, Argilla will: Assign specialist(s) to correct the issue on an expedited basis.Provide ongoing communication on the status via email and/or phone, according to the customer's preference.Begin work towards identifying a temporary workaround or fix.(2) Major Issues Major issues involve: Limited functionality of the Service.Service instability with periodic interruptions.Material service interruptions in mission-critical functions.Time-sensitive questions impacting performance or deliverables to end-clients.Upon encountering a major issue, Argilla will: Assign a specialist to begin a resolution.Implement additional, escalated procedures as reasonably determined necessary by Argilla Support Services staff.(3) Minor Issues Minor issues include: Errors causing partial, non-critical functionality loss.The need for clarification on procedures or information in documentation.Errors in service that may impact performance deliverables.(4) Trivial Issues Trivial issues are characterized by: Errors in system development with little to no impact on performance.Feature Requests Feature requests involve: Requesting a product enhancement.For feature requests, Argilla will: Respond regarding the relevance and interest in incorporating the requested feature.In summary, Argilla Cloud's support services are designed to provide timely and efficient assistance for issues of varying severity, ensuring a smooth and reliable user experience.All plans include Monday to Friday during office hours (8am to 17pm CEST) with additional support upon request.The Support Channels and features of each tier are shown below:\\n\\nStarter: Slack Community.Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 48 hours.Severity 4 not specified.Base: Ticketing System, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 not specified.Medium: Ticketing System and dedicated Slack channel, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 one week\\n\\nLarge: Ticketing System and dedicated Slack channel, Severity 1 - Response time < 4 hours.Severity 2 - Response time < 8 hours.Severity 3 - Response time < 24 hours.Severity 4 one week.Data backup and recovery plan Argilla Cloud is committed to ensuring the safety and availability of your data.Our system is designed to run six data backups per day as a standard procedure.These backups capture a snapshot of the system state at the time of the backup, enabling restoration to that point if necessary.Our Recovery Point Objective (RPO) is four hours.This means that in the event of a system failure, the maximum data loss would be up to the last four hours of data input.We achieve this by running regular backups throughout the day, reducing the time window of potential data loss.Our Recovery Time Objective (RTO) is one hour.This is the maximum acceptable length of time that your system could be down following a failure or disruption.It represents our commitment to ensuring that your services are restored as quickly as possible.In the event of a disruption, our team will first evaluate the issue to determine the best course of action.If data recovery is necessary, we will restore from the most recent backup.We will then work to identify and resolve the root cause of the disruption to prevent a recurrence.Finally, we conduct regular test restores to ensure that our backup system is working as intended.These tests verify the integrity of the backup data and the functionality of the restore process.\", \"This documents an overview of the Argilla Cloud service - a comprehensive Software as a Service (SaaS) solution for data labeling and curation.The service is specifically designed to meet the needs of businesses seeking a reliable, secure, and user-friendly platform for data management.The key components of our service include advanced security measures, robust data backup and recovery protocols, flexible pricing options, and dedicated customer support.The onboarding process is efficient, enabling clients to start using the service within one business day.The scope of this proposal includes details on the aforementioned aspects, providing a clear understanding of the service offerings and associated processes.Argilla Cloud offers four plans:\\n\\nStarter: Ideal for teams initiating their journey in scaling data curation and labelling projects.Perfect for environments where production monitoring is not a requirement.Base: Tailored for teams seeking to amplify their data curation, labelling efforts, and model monitoring, with enhanced support from Argilla.Medium: Designed for teams expanding their language model pipelines, requiring robust ML lifecycle management fortified by Argilla's comprehensive support.Large: Geared towards teams heavily dependent on language model pipelines, human feedback, and applications, requiring complete ML lifecycle management with robust support.Scope of services Argilla Cloud, a fully managed SaaS, encompasses the following functionalities: Unrestricted Users, Datasets, and Workspaces: The service imposes no limits on the number of users, datasets, or workspaces, supporting scalability of operations.Role-Based Access Control: Administrators and annotators have differentiated access rights to ensure structured and secure data management.Custom Subdomain: Clients are provided with a distinct argilla.io subdomain for accessing the platform.Regular Updates and Upgrades: The service includes regular platform patches and upgrades as part of routine maintenance to uphold system integrity and security.Managed Service: Infrastructure maintenance, backend operations, and other technical aspects are managed by Argilla, eliminating the need for client-side management.Security The security framework of the Argilla Cloud service involves a multi-faceted approach: Data Encryption at Rest: Data stored within the system is encrypted, forming a crucial layer of security.This process automatically encrypts data prior to storage, guarding against unauthorized access.Network Security Measures: The infrastructure has been designed to prevent unauthorized intrusion and to ensure consistent service availability.Measures include firewall protections, intrusion detection systems, and scheduled vulnerability scans to detect and address potential threats.Role-Based Access Control: The system implements role-based access control, defining access levels based on user roles.This mechanism controls the extent of access to sensitive information, aligning it with the responsibilities of each role.Security Audits: Regular audits of security systems and protocols are conducted to detect potential vulnerabilities and verify adherence to security standards.Employee Training: All personnel receive regular security training, fostering an understanding of the latest threats and the importance of security best practices.Incident Response Protocol: In the case of a security incident, a pre-defined incident response plan is activated.This plan outlines the procedures for managing different types of security events, and aims to ensure swift mitigation of potential damage.In summary, the security measures in place include data encryption, network security protocols, role-based access control, regular audits, employee training, and a comprehensive incident response plan.These measures contribute to a secure environment for data management.Setup and onboarding The process for setup and onboarding for Argilla Cloud is designed to be efficient and straightforward.The procedure involves a sequence of steps to ensure a smooth transition and optimal use of the service.Step 1: Account Creation The setup process begins with the creation of the client owner account.We require the client to provide the following details: Full name of the administrator Preferred username Administrator's email address Once these details are received, we send an onboarding email to sign up.Step 2: Platform Orientation Once logged in, the administrator has full access to the Argilla Cloud platform.They can familiarize themselves with the platform interface and various features.If required, a guided tour or tutorial can be provided to walk the administrator through the platform.Step 3: User Management The administrator is then responsible for setting up additional user accounts.They can invite users via email, manage roles (admin, annotator, etc.), and assign access permissions to different workspaces and datasets.Step 4: Workspace and Dataset Configuration The administrator can create and manage multiple workspaces and datasets.They have the option to configure settings as per their team's requirements, including assigning datasets to specific workspaces and managing access permissions.Step 5: Training and Support Argilla provides open resources and support to aid in the onboarding process.This includes user manuals, tutorials, and access to our support team for any queries or issues that may arise during the setup and onboarding process.By following these steps, new users can be quickly onboarded and begin using the Argilla Cloud service with minimal downtime.\"]\n" + ] } + ], + "source": [ + "# Show an example of q, a, and context\n", + "print(f\"Question: {questions[0]}\")\n", + "print(f\"Answer: {answers[0]}\")\n", + "print(f\"Context: {contexts[0]}\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "y6Bavj4Abkwa" + }, + "source": [ + "## Create Argilla dataset and collect feedback\n", + "\n", + "\n", + "We set up an Argilla Dataset for gathering human feedback.\n", + "\n", + "\n", + "For fine-tuning, we need to set up a text question to gather the human written or edited responses. This data is known as completion or demonstration data.\n", + "\n", + "Additionally, leveraging the multi-aspect feedback capabilities of Argilla, we set up two additional feedback dimensions to rate the relevance of the question (as they're synthetic they might be irrelevant or bad quality) and the quality of the context retrieved from our retriever component (can be used to improve the RAG configuration).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ID3Qu9aVbtaX" + }, + "outputs": [], + "source": [ + "dataset = rg.FeedbackDataset(\n", + " fields=[rg.TextField(name=\"user-message\"), rg.TextField(name=\"context\")],\n", + " questions=[\n", + " rg.RatingQuestion(\n", + " name=\"question-rating\",\n", + " title=\"Rate the relevance of the user question\",\n", + " values=[1, 2, 3, 4, 5],\n", + " required=False,\n", + " ),\n", + " rg.RatingQuestion(\n", + " name=\"context-rating\",\n", + " title=\"Rate the quality and relevancy of context for the assistant\",\n", + " values=[1, 2, 3, 4, 5],\n", + " required=False,\n", + " ),\n", + " rg.TextQuestion(\n", + " name=\"response\",\n", + " title=\"Write a helpful, harmless, accurate response to the user question\",\n", + " ),\n", + " ],\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "btwbDF6_PayX" + }, + "source": [ + "We use the questions, context, and generated responses to build our feedback records. We pre-fill the responses in the UI with OpenAI's responses using `suggestions` and ask our labelers to edit them if necessary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bW63w95KcfwS" + }, + "outputs": [], + "source": [ + "records = []\n", + "\n", + "for question, answer, context in tqdm(\n", + " zip(questions, answers, contexts), total=len(questions)\n", + "):\n", + " # Instantiate the FeedbackRecord\n", + " feedback_record = rg.FeedbackRecord(\n", + " fields={\"user-message\": question, \"context\": \"\\n\".join(context)},\n", + " suggestions=[\n", + " {\n", + " \"question_name\": \"response\",\n", + " \"value\": answer,\n", + " }\n", + " ],\n", + " )\n", + " records.append(feedback_record)\n", + "\n", + "# Publish dataset in Argilla UI\n", + "dataset = dataset.push_to_argilla(name=\"customer_assistant\", workspace=\"admin\")\n", + "dataset.add_records(records)\n", + "\n", + "# Optional: store and version dataset in the Hub\n", + "# dataset = dataset.push_to_huggingface(\"argilla/rg_customer_assistant\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, the dataset is available for collecting feedback with the Argilla UI. Here's a video showing the workflow for labelers:\n", + "\n", + "" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "9yLxmSDsQPts" + }, + "source": [ + "## Prepare Argilla dataset for fine-tuning\n", + "\n", + "\n", + "We now read the responses from Argilla and prepare the dataset for fine-tuning following the [fine-tuning format from OpenAI guides](https://platform.openai.com/docs/guides/fine-tuning).\n", + "\n", + "We use the quick adaptation of LlamaIndex's `TEXT_QA_PROMPT` system prompt and the fine-tuned responses from our Argilla dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Read the dataset from Argilla\n", + "dataset = rg.FeedbackDataset.from_argilla(\"customer_assistant\", workspace=\"admin\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you have skipped the previous steps run this to get the pre-built dataset.\n", + "\n", + "```python\n", + "dataset = rg.FeedbackDataset.from_huggingface(\"argilla/customer_assistant\")\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "N5hFLJaHSz9C" + }, + "outputs": [], + "source": [ + "# Adaptation from LlamaIndex's TEXT_QA_PROMPT_TMPL_MSGS[1].content\n", + "user_message_prompt = \"\"\"Context information is below.\n", + "---------------------\n", + "{context_str}\n", + "---------------------\n", + "Given the context information and not prior knowledge but keeping your Argilla Cloud assistant style, answer the query.\n", + "Query: {query_str}\n", + "Answer:\n", + "\"\"\"\n", + "# Adaptation from LlamaIndex's TEXT_QA_SYSTEM_PROMPT\n", + "system_prompt = \"\"\"You are an expert customer service assistant for the Argilla Cloud product that is trusted around the world.\n", + "Always answer the query using the provided context information, and not prior knowledge.\n", + "Some rules to follow:\n", + "1. Never directly reference the given context in your answer.\n", + "2. Avoid statements like 'Based on the context, ...' or 'The context information ...' or anything along those lines.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "siPKLnctRLpD" + }, + "outputs": [], + "source": [ + "def formatting_func(\n", + " sample: dict,\n", + ") -> Union[Tuple[str, str, str, str], List[Tuple[str, str, str, str]]]:\n", + " from uuid import uuid4\n", + "\n", + " if sample[\"response\"]:\n", + " chat = str(uuid4())\n", + " user_message = user_message_prompt.format(\n", + " context_str=sample[\"context\"], query_str=sample[\"user-message\"]\n", + " )\n", + " return [\n", + " (chat, \"0\", \"system\", system_prompt),\n", + " (chat, \"1\", \"user\", user_message),\n", + " (chat, \"2\", \"assistant\", sample[\"response\"][0][\"value\"]),\n", + " ]\n", + "\n", + "\n", + "task = TrainingTask.for_chat_completion(formatting_func=formatting_func)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "SVvdU9EqVWSR" + }, + "source": [ + "## Fine-tune GPT3.5 with high-quality feedback\n", + "\n", + "\n", + "We fine-tune `gpt-3.5-turbo` with the exported dataset using the Argilla Trainer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "afLyk289VhBL" + }, + "outputs": [], + "source": [ + "trainer = ArgillaTrainer(\n", + " dataset=dataset,\n", + " task=task,\n", + " framework=\"openai\",\n", + ")\n", + "trainer.train(output_dir=\"my-ft-openai-model\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "eG-zXJJ2dbi_" + }, + "source": [ + "## Evaluating base vs fine-tuned with human preference data\n", + "\n", + "We set up a new feedback dataset for gathering human feedback to evaluate the fine-tuned model against the base model, using the test dataset.\n", + "\n", + "There are many ways to collect feedback for this phase. The most suitable in this case is human preference data over responses from the two models: *asking our labelers which response is the most accurate and helpful*. We can easily do this with Argilla's `RankingQuestion`.\n", + "\n", + "Additionally, as both responses can be equally bad, we can ask labelers to write down a correct response. In this case, we would be collecting demonstration data to add to our fine-tuning workflow.\n", + "\n", + "\n", + "### Create dataset and collect feedback\n", + "\n", + "We set up and publish a new dataset with a `RankingQuestion` and `TextQuestion`, showing our labelers the `user-message` and two responses (from the base and the fine-tuned models)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tsQT0Ps1igZc" + }, + "outputs": [], + "source": [ + "dataset = rg.FeedbackDataset(\n", + " fields=[\n", + " rg.TextField(name=\"user-message\"),\n", + " rg.TextField(name=\"response-a\"),\n", + " rg.TextField(name=\"response-b\"),\n", + " ],\n", + " questions=[\n", + " rg.RankingQuestion(\n", + " name=\"preference\",\n", + " title=\"Which response is more helpful, harmless, and accurate.\",\n", + " values=[\"response-a\", \"response-b\"],\n", + " ),\n", + " rg.TextQuestion(\n", + " name=\"response\",\n", + " title=\"If none is good, write a helpful, harmless, accurate response to the user question\",\n", + " required=False,\n", + " ),\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "95-iBx8fgoGg" + }, + "outputs": [], + "source": [ + "# Read our test questions\n", + "questions = load_dataset(\"argilla/cloud_assistant_questions\", split=\"test\")[\"question\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "background_save": true + }, + "id": "NPPLoZGae9ia" + }, + "outputs": [], + "source": [ + "# Generate responses with base model\n", + "index = VectorStoreIndex.from_documents(documents, service_context=gpt_35_context)\n", + "query_engine = index.as_query_engine(similarity_top_k=2)\n", + "\n", + "contexts = []\n", + "base_model_responses = []\n", + "\n", + "for question in tqdm(questions):\n", + " response = query_engine.query(question)\n", + " base_model_responses.append(str(response))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "AU9NwKnQgAPu" + }, + "outputs": [], + "source": [ + "# Generate responses with ft model: replace with the id of your ft model\n", + "ft_context = ServiceContext.from_defaults(\n", + " llm=OpenAI(model=\"ft:gpt-3.5-turbo-...\", temperature=0.3)\n", + ")\n", + "index = VectorStoreIndex.from_documents(documents, service_context=ft_context)\n", + "query_engine = index.as_query_engine(similarity_top_k=2)\n", + "\n", + "contexts = []\n", + "ft_model_responses = []\n", + "\n", + "for question in tqdm(questions):\n", + " response = query_engine.query(question)\n", + " ft_model_responses.append(str(response))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "hsPoYfgJTCOD" + }, + "source": [ + "An important step here is to randomize the order in which responses are shown.\n", + "\n", + "If we show the fine-tuned model response always as the first option, we can introduce position bias (labelers always choosing a certain position) or make it evident to users that there are two obviously different models.\n", + "\n", + "To avoid this, we randomize the position and keep two metadata fields indicating which model has produced `response-a` and `response-b`. When collecting the responses, we'll use this metadata to map the ranking with each model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0zvH3sDkhMFJ" + }, + "outputs": [], + "source": [ + "records = []\n", + "for base, ft, question in zip(base_model_responses, ft_model_responses, questions):\n", + " # Randomizing the position is a highly important step to mitigate labeler biases\n", + " # Shuffle the order of base and ft\n", + " response_a, response_b = random.sample([base, ft], 2)\n", + "\n", + " # Map the responses back to their model names\n", + " models = {base: \"base_model\", ft: \"ft_model\"}\n", + " feedback_record = rg.FeedbackRecord(\n", + " fields={\n", + " \"user-message\": question,\n", + " \"response-a\": response_a,\n", + " \"response-b\": response_b,\n", + " },\n", + " metadata={\n", + " \"response-a-model\": models[response_a],\n", + " \"response-b-model\": models[response_b],\n", + " },\n", + " )\n", + "\n", + " records.append(feedback_record)\n", + "\n", + "dataset = dataset.push_to_argilla(\n", + " name=\"finetuned-vs-base-preference\", workspace=\"admin\"\n", + ")\n", + "dataset.add_records(records)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, the dataset is available for collecting feedback with the Argilla UI. Here's a video showing the workflow for labelers:\n", + "\n", + "" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "eRiVf39Bblmh" + }, + "source": [ + "### Retrieve and analyze responses\n", + "\n", + "We can dynamically collect the responses from our labelers. In this case, we will compute the win rate and ties (as users can indicate both responses are equally good or bad).\n", + "\n", + "For the tutorial, we only have one user but Argilla Feedback is fully multi-user, which means you can collect feedback from several users for each data point, increasing the quality of the evaluation. \n", + "\n", + "You can read more about multi-user scenarios and built-in unification methods [on this guide](/practical_guides/collect_responses.md).\n", + "\n", + "With a very small evaluation set, we can see that the fine-tuned model responses are preferred ~60% of the time, 3x over the base model, and they are both equally good or bad ~20% of the time. \n", + "\n", + "\n", + "Even with a very small fine-tuning and evaluation dataset, this already shows **promising benefits of fine-tuning models for enhancing RAG systems**.\n", + "\n", + "\n", + "![Fine-tuned model vs base model](/_static/images/llms/fine-tuning-openai-rag-feedback/fine-tune-vs-base.png \"Fine-tuned model vs base model\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XZKBhlKCbwUV" + }, + "outputs": [], + "source": [ + "# Retrieve the dataset from Argilla\n", + "dataset = rg.FeedbackDataset.from_argilla(\n", + " name=\"finetuned-vs-base-preference\", workspace=\"admin\"\n", + ")\n", + "\n", + "win_rates = {\"ft_model\": 0, \"base_model\": 0, \"tie\": 0}\n", + "\n", + "# Compute the win and tie rates\n", + "for record in dataset.records:\n", + " if len(record.responses) > 0:\n", + " for response in record.responses:\n", + " model_a = record.metadata[\"response-a-model\"]\n", + " model_b = record.metadata[\"response-b-model\"]\n", + " preference = response.values[\"preference\"].value\n", + " if preference[0].rank > preference[1].rank:\n", + " win_rates[model_a] = win_rates[model_a] + 1\n", + " elif preference[1].rank > preference[0].rank:\n", + " win_rates[model_b] = win_rates[model_b] + 1\n", + " else:\n", + " win_rates[\"tie\"] = win_rates[\"tie\"] + 1\n", + "win_rates\n", + "# {'ft_model': 17, 'base_model': 6, 'tie': 5}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BpoH-OnRnuoL" + }, + "outputs": [], + "source": [ + "# Let's make the labels more explicit\n", + "data = {\"gpt3.5-fine-tuned\": 17, \"gpt3.5-base\": 6, \"tie\": 5}\n", + "total = sum(data.values())\n", + "\n", + "# Calculate percentages\n", + "percentages = [value / total * 100 for value in data.values()]\n", + "\n", + "# Settings\n", + "colors = [\"blue\", \"grey\", \"black\"]\n", + "labels = [f\"{key} ({value:.2f}%)\" for key, value in zip(data.keys(), percentages)]\n", + "\n", + "# Plotting\n", + "plt.figure(figsize=(12, 2))\n", + "\n", + "# The cumulative percentage is used to shift the starting point of each subsequent segment\n", + "cumulative_percentages = 0\n", + "\n", + "for percent, color, label in zip(percentages, colors, labels):\n", + " plt.barh(\"Models\", percent, color=color, label=label, left=cumulative_percentages)\n", + " plt.text(\n", + " cumulative_percentages + percent / 2,\n", + " 0,\n", + " label,\n", + " ha=\"center\",\n", + " va=\"center\",\n", + " color=\"white\",\n", + " fontsize=10,\n", + " )\n", + " cumulative_percentages += percent\n", + "\n", + "plt.gca().axes.get_yaxis().set_visible(False)\n", + "plt.xlim(0, 100)\n", + "plt.title(\"Model Win Rates\")\n", + "plt.legend(loc=\"upper center\", bbox_to_anchor=(0.5, -0.25), ncol=3)\n", + "plt.tight_layout()\n", + "\n", + "# Display\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "hCrnoTw_GIyr" + }, + "source": [ + "## Appendix: Generating questions with Llama Index\n", + "\n", + "\n", + "We use the `DatasetGenerator` from Llama Index to generate a set of questions using a document about Argilla Cloud." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kf-hZurHckDf" + }, + "outputs": [], + "source": [ + "UnstructuredReader = download_loader(\"UnstructuredReader\", refresh_cache=True)\n", + "loader = UnstructuredReader()\n", + "\n", + "# You can download this doc from: https://huggingface.co/datasets/argilla/cloud_assistant_questions/raw/main/argilla_cloud.txt\n", + "documents = loader.load_data(\"argilla_cloud.txt\")\n", + "\n", + "gpt_35_context = ServiceContext.from_defaults(\n", + " llm=OpenAI(model=\"gpt-3.5-turbo\", temperature=0.4), chunk_size=60\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wSVCTgEsc1zm" + }, + "outputs": [], + "source": [ + "question_gen_query = (\n", + " \"You are customer support and sales expert of Argilla. Your task is to setup \"\n", + " \"a set of frequently asked questions about the Argilla Cloud service, offer and plans\"\n", + " \"formulate a single question that could be asked by a potential B2B client interested in Argilla Cloud \"\n", + " \". Restrict the question to the context information provided and don't ask general questions not related to the service and the context provided.\"\n", + ")\n", + "\n", + "dataset_generator = DatasetGenerator.from_documents(\n", + " documents,\n", + " question_gen_query=question_gen_query,\n", + " service_context=gpt_35_context,\n", + " num_questions_per_chunk=100,\n", + ")\n", + "\n", + "questions = dataset_generator.generate_questions_from_nodes(num=300)" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 0 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-sentencesimilarity-rag.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-sentencesimilarity-rag.ipynb index 54b7156b49..2461d17cfb 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-sentencesimilarity-rag.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/fine-tuning-sentencesimilarity-rag.ipynb @@ -117,7 +117,15 @@ "from tqdm import tqdm\n", "\n", "from haystack.document_stores import FAISSDocumentStore\n", - "from haystack.nodes import PreProcessor, TextConverter, EmbeddingRetriever, PromptNode, PromptTemplate, AnswerParser, SentenceTransformersRanker\n", + "from haystack.nodes import (\n", + " PreProcessor,\n", + " TextConverter,\n", + " EmbeddingRetriever,\n", + " PromptNode,\n", + " PromptTemplate,\n", + " AnswerParser,\n", + " SentenceTransformersRanker,\n", + ")\n", "from haystack.pipelines import Pipeline\n", "from haystack.pipelines.standard_pipelines import TextIndexingPipeline" ] @@ -138,11 +146,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -165,7 +169,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -188,9 +192,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -249,7 +256,9 @@ "outputs": [], "source": [ "# Initialize the DocumentStore\n", - "document_store = FAISSDocumentStore(faiss_index_factory_str=\"Flat\", similarity=\"dot_product\", embedding_dim=384)\n", + "document_store = FAISSDocumentStore(\n", + " faiss_index_factory_str=\"Flat\", similarity=\"dot_product\", embedding_dim=384\n", + ")\n", "\n", "# Initialize the PreProcessor\n", "preprocessor = PreProcessor(\n", @@ -297,7 +306,8 @@ "source": [ "# Initialize the EmbeddingRetriever\n", "retriever = EmbeddingRetriever(\n", - " document_store=document_store, embedding_model=\"sentence-transformers/multi-qa-mpnet-base-dot-v1\"\n", + " document_store=document_store,\n", + " embedding_model=\"sentence-transformers/multi-qa-mpnet-base-dot-v1\",\n", ")\n", "document_store.update_embeddings(retriever)\n", "\n", @@ -307,11 +317,13 @@ " Provide a clear and concise response.\n", " Your answer should be in your own words and be no longer than 50 words.\n", " \\n\\n Related text: {join(documents, delimiter=new_line, pattern=new_line+'Document[$idx]: $content', str_replace={new_line: ' ', '[': '(', ']': ')'})} \\n Question: {query}; Answer: \"\"\",\n", - " output_parser=AnswerParser(reference_pattern=r\"Document\\[(\\d+)\\]\"),\n", + " output_parser=AnswerParser(reference_pattern=r\"Document\\[(\\d+)\\]\"),\n", ")\n", "\n", "# Initialize PromptNode\n", - "prompt_node = PromptNode(model_name_or_path=\"google/flan-t5-large\", default_prompt_template=rag_prompt)" + "prompt_node = PromptNode(\n", + " model_name_or_path=\"google/flan-t5-large\", default_prompt_template=rag_prompt\n", + ")" ] }, { @@ -336,17 +348,16 @@ "questions = dataset[\"train\"][\"question\"]\n", "answers = []\n", "contexts = []\n", - " \n", + "\n", "for question in tqdm(questions):\n", - " \n", " # Get the response and save it\n", " response = pipe.run(query=question)\n", " answers.append(response[\"answers\"][0].answer)\n", - " \n", + "\n", " # Get the document contexts and save them\n", - " prompt = response[\"answers\"][0].meta['prompt']\n", - " segments = re.split(r'Document\\[\\d+\\]:', prompt)\n", - " document_segments = [segment.strip() for segment in segments[1:]] \n", + " prompt = response[\"answers\"][0].meta[\"prompt\"]\n", + " segments = re.split(r\"Document\\[\\d+\\]:\", prompt)\n", + " document_segments = [segment.strip() for segment in segments[1:]]\n", " contexts.append(document_segments)" ] }, @@ -464,8 +475,13 @@ "# Create the proper records\n", "records = [\n", " rg.FeedbackRecord(\n", - " fields={\"query\": question, \"retrieved_document_1\": context[0], \"retrieved_document_2\": context[1], \"retrieved_document_3\": context[2]},\n", - " metadata={\"source\": \"flan-t5-large\"}\n", + " fields={\n", + " \"query\": question,\n", + " \"retrieved_document_1\": context[0],\n", + " \"retrieved_document_2\": context[1],\n", + " \"retrieved_document_3\": context[2],\n", + " },\n", + " metadata={\"source\": \"flan-t5-large\"},\n", " )\n", " for question, context in tqdm(zip(questions, contexts))\n", "]\n", @@ -554,7 +570,9 @@ ], "source": [ "# Add the new metadata property\n", - "metadata = rg.TermsMetadataProperty(name=\"sources\", title=\"Model sources\", values=[\"flan-t5-large/flan-t5-large\"])\n", + "metadata = rg.TermsMetadataProperty(\n", + " name=\"sources\", title=\"Model sources\", values=[\"flan-t5-large/flan-t5-large\"]\n", + ")\n", "\n", "dataset_ssim.add_metadata_property(metadata)" ] @@ -572,7 +590,7 @@ " for j in range(i + 1, len(context)):\n", " record = rg.FeedbackRecord(\n", " fields={\"sentence1\": context[i], \"sentence2\": context[j]},\n", - " metadata={\"sources\": \"flan-t5-large/flan-t5-large\"}\n", + " metadata={\"sources\": \"flan-t5-large/flan-t5-large\"},\n", " )\n", " records.append(record)\n", "\n", @@ -650,11 +668,13 @@ "source": [ "# Define the training task using the formatting function\n", "def formatting_func(sample):\n", - "\n", " records = []\n", "\n", " for i in range(1, 4):\n", - " record = {\"sentence-1\": sample[\"query\"], \"sentence-2\": sample[f\"retrieved_document_{i}\"]}\n", + " record = {\n", + " \"sentence-1\": sample[\"query\"],\n", + " \"sentence-2\": sample[f\"retrieved_document_{i}\"],\n", + " }\n", " values = [resp[\"value\"] for resp in sample[f\"rating_retrieved_document_{i}\"]]\n", " label = int(values[0])\n", " record[\"label\"] = label\n", @@ -662,6 +682,7 @@ "\n", " return records\n", "\n", + "\n", "task = TrainingTask.for_sentence_similarity(formatting_func=formatting_func)" ] }, @@ -676,7 +697,7 @@ " dataset=dataset_rag,\n", " task=task,\n", " framework=\"sentence-transformers\",\n", - " framework_kwargs={\"cross_encoder\": False}\n", + " framework_kwargs={\"cross_encoder\": False},\n", ")\n", "trainer_bi.train(output_dir=\"my_bi_sentence_transformer_model\")" ] @@ -717,8 +738,11 @@ "source": [ "# Define the training task\n", "task = TrainingTask.for_sentence_similarity(\n", - " texts=[dataset_ssim.field_by_name(\"sentence-1\"), dataset_ssim.field_by_name(\"sentence-2\")],\n", - " label=dataset_ssim.question_by_name(\"similarity\")\n", + " texts=[\n", + " dataset_ssim.field_by_name(\"sentence-1\"),\n", + " dataset_ssim.field_by_name(\"sentence-2\"),\n", + " ],\n", + " label=dataset_ssim.question_by_name(\"similarity\"),\n", ")" ] }, @@ -733,7 +757,7 @@ " dataset=dataset_ssim,\n", " task=task,\n", " framework=\"sentence-transformers\",\n", - " framework_kwargs={\"cross_encoder\": True}\n", + " framework_kwargs={\"cross_encoder\": True},\n", ")\n", "trainer_cross.train(output_dir=\"my_cross_sentence_transformer_model\")" ] @@ -788,7 +812,9 @@ "outputs": [], "source": [ "# Initialize the SentenceTransformersRanker with out model\n", - "ranker = SentenceTransformersRanker(model_name_or_path=\"my_cross_sentence_transformer_model\")" + "ranker = SentenceTransformersRanker(\n", + " model_name_or_path=\"my_cross_sentence_transformer_model\"\n", + ")" ] }, { @@ -810,11 +836,13 @@ " Provide a clear and concise response.\n", " Your answer should be in your own words and be no longer than 50 words.\n", " \\n\\n Related text: {join(documents, delimiter=new_line, pattern=new_line+'Document[$idx]: $content', str_replace={new_line: ' ', '[': '(', ']': ')'})} \\n Question: {query}; Answer: \"\"\",\n", - " output_parser=AnswerParser(reference_pattern=r\"Document\\[(\\d+)\\]\"),\n", + " output_parser=AnswerParser(reference_pattern=r\"Document\\[(\\d+)\\]\"),\n", ")\n", "\n", "# Initialize PromptNode\n", - "prompt_node = PromptNode(model_name_or_path=\"google/flan-t5-large\", default_prompt_template=rag_prompt)" + "prompt_node = PromptNode(\n", + " model_name_or_path=\"google/flan-t5-large\", default_prompt_template=rag_prompt\n", + ")" ] }, { @@ -840,17 +868,16 @@ "questions = dataset[\"train\"][\"question\"]\n", "answers = []\n", "contexts = []\n", - " \n", + "\n", "for question in tqdm(questions):\n", - " \n", " # Get the response and save it\n", " response = pipe.run(query=question)\n", " answers.append(response[\"answers\"][0].answer)\n", - " \n", + "\n", " # Get the document context and save it\n", - " prompt = response[\"answers\"][0].meta['prompt']\n", - " segments = re.split(r'Document\\[\\d+\\]:', prompt)\n", - " document_segments = [segment.strip() for segment in segments[1:]] \n", + " prompt = response[\"answers\"][0].meta[\"prompt\"]\n", + " segments = re.split(r\"Document\\[\\d+\\]:\", prompt)\n", + " document_segments = [segment.strip() for segment in segments[1:]]\n", " contexts.append(document_segments)" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-langchain-syntethic.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-langchain-syntethic.ipynb index ba95bdafc8..2b1061fe7d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-langchain-syntethic.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-langchain-syntethic.ipynb @@ -1,2874 +1,2895 @@ { - "cells": [ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 🎡 Create synthetic data and annotations with LLMs\n", + "\n", + "LLMs are diverse and can be used for many different tasks. Besides cool chat interactions, LLMs can be powerful tools for creating synthetic data and providing initial suggestions for labelling tasks for which you don't have any data yet. This way anyone can easily get a head start on bootstrapping a project.\n", + "\n", + "In this example, we will demonstrate how to use different LLM tools, like `openai`, `transformers`, `langchain` and `outlines`, to create synthetic data and we can leverage those same LLMs for providing initial annotation or suggestions.\n", + "\n", + "If you want a more basic introduction to synthetic data with our `ArgillaCallbackHandler` for `langchain`, you can take a look at [this practical guide](../../../tutorials_and_integrations/integrations/use_argilla_callback_in_langchain.md).\n", + "\n", + "
\n", + "\n", + "Warning\n", + "\n", + "Do keep in mind that LLMs have licenses and not every LLM can be used for creating synthetic data in every operational setting. Please check the license of the LLM you are using before using it for creating synthetic data.\n", + "\n", + "
\n", + "\n", + "Let's get started!\n", + "\n", + "![Feedback Task dataset with synthetic data and suggestions from LLMs](/_static/images/llms/labelling-feedback-langchain-syntethic/synthetic-data.png)\n", + "\n", + "
\n", + "\n", + "Note \n", + "\n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", + "\n", + "1. Install the Argilla client and the required third-party libraries using `pip`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yN2atS0RE2pF" + }, + "outputs": [], + "source": [ + "!pip install argilla openai langchain outlines tiktoken transformers ipywidgets jupyter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Let's make the necessary imports:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "POQgkfrWEg1u" + }, + "outputs": [], + "source": [ + "import argilla as rg\n", + "\n", + "import os\n", + "import random\n", + "\n", + "from langchain import OpenAI, PromptTemplate, LLMChain\n", + "from langchain.output_parsers import CommaSeparatedListOutputParser\n", + "from outlines import models, text\n", + "from outlines.text import generate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"admin.apikey\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. We also need to set your OpenAI API credentials by [creating an API key](https://platform.openai.com/docs/quickstart/add-your-api-key) and setting defining the `OPENAI_API_KEY` environment variable." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define a FeedbackDataset" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we will create a synthetic dataset for a banking customer care scenario. We assume that customers will write `text` requests. These requests should then be classified for `sentiment` and `topics`. The `topics` will be a multi-label classification and can be used to route the request to the correct department. The `sentiment` will be used using a single-label classification to determine if the request needs to be handled with priority." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "0UsoG5OtE11w" + }, + "outputs": [], + "source": [ + "sentiment = [\"positive\", \"neutral\", \"negative\"]\n", + "topic = [\"new_card\", \"mortgage\", \"application\", \"payments\"]\n", + "\n", + "dataset = rg.FeedbackDataset(\n", + " fields=[rg.TextField(name=\"text\")],\n", + " questions=[\n", + " rg.LabelQuestion(\n", + " name=\"sentiment\",\n", + " title=\"What is the sentiment of the message?\",\n", + " labels=sentiment,\n", + " ),\n", + " rg.MultiLabelQuestion(\n", + " name=\"topics\",\n", + " title=\"Select the topic(s) of the message?\",\n", + " labels=topic,\n", + " visible_labels=4,\n", + " ),\n", + " ],\n", + " guidelines=(\n", + " \"This dataset contains messages from a bank's customer support chatbot. \"\n", + " \"The goal is to label the sentiment and topics of the messages.\"\n", + " ),\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create synthetic data" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will use LLMs to generate the synthetic data for each step of the NLP task. First, we will create `text` requests from customers for a bank. Next, we will create input for the `LabelQuestion` to assess the sentiment of the requests and lastly, we will create input for the `MultiLabelQuestion` to classify the requests.\n", + "\n", + "We will do this using [OpenAI](https://github.com/openai/openai-python) models in combination with the [LangChain](https://github.com/langchain-ai/langchain) and open-source transformer-based models in combination with [Outlines](https://github.com/normal-computing/outlines) packages.\n", + "\n", + " | The LangChain framework is a wrapper around LLM models that allows for easier data-aware and agent-based LLM models. \n", + "\n", + " | Outlines is a Python library to write reliable programs for conditional generation during interactions with generative models.\n", + " \n", + "
\n", + "\n", + "Note \n", + "\n", + "The process of prompt engineering is a trial-and-error process. Changes somewhere might result in undesirable effects in another place in the language chain. The examples below are just a starting point and can be improved by experimenting with different prompts and templates.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initialize Generative model\n", + "\n", + "#### LangChain with OpenAI\n", + "\n", + "For the usage of LangChain you need to pass the `OPENAI_API_KEY` environment variable to the `OpenAI` class. You can do this by using the `os` package. The `model` variable is then ready to use in the examples below." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\"\n", + "openai_model = OpenAI(api_key=os.environ.get(\"OPENAI_API_KEY\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Outlines with Transformers\n", + "\n", + "Even though Outlines does provide some support for OpenAI, we will use basic transformers for this example. You can use any generative model from the [HuggingFace model hub](https://huggingface.co/models?pipeline_tag=text-generation&sort=trending) by passing the name of the model to the `transformers` function. The `model` variable is then ready to use in the examples below." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "transformer_model = models.transformers(\"gpt2\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `TextField`\n", + "\n", + "For creating a review, we rely on free text generation based on a prompt. This should be good enough for our purposes of creating a synthetic dataset as well as keeping the process as simple as possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### LangChain\n", + "\n", + "OpenAI models have been instruction-tuned and can thus be used via LangChain to generate synthetic data. This is done using a `PrompTemplate` that infers information from `topic` and `sentiment` variables that are passed to the `predict()` method." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 🎡 Create synthetic data and annotations with LLMs\n", - "\n", - "LLMs are diverse and can be used for many different tasks. Besides cool chat interactions, LLMs can be powerful tools for creating synthetic data and providing initial suggestions for labelling tasks for which you don't have any data yet. This way anyone can easily get a head start on bootstrapping a project.\n", - "\n", - "In this example, we will demonstrate how to use different LLM tools, like `openai`, `transformers`, `langchain` and `outlines`, to create synthetic data and we can leverage those same LLMs for providing initial annotation or suggestions.\n", - "\n", - "If you want a more basic introduction to synthetic data with our `ArgillaCallbackHandler` for `langchain`, you can take a look at [this practical guide](../../../tutorials_and_integrations/integrations/use_argilla_callback_in_langchain.md).\n", - "\n", - "
\n", - "\n", - "Warning\n", - "\n", - "Do keep in mind that LLMs have licenses and not every LLM can be used for creating synthetic data in every operational setting. Please check the license of the LLM you are using before using it for creating synthetic data.\n", - "\n", - "
\n", - "\n", - "Let's get started!\n", - "\n", - "![Feedback Task dataset with synthetic data and suggestions from LLMs](/_static/images/llms/labelling-feedback-langchain-syntethic/synthetic-data.png)\n", - "\n", - "
\n", - "\n", - "Note \n", - "\n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "\n", - "
\n" + "data": { + "text/plain": [ + "'I recently had the pleasure of working with the mortgage team at this bank, and I can confidently say that their level of service and expertise was second to none. They answered all of my questions quickly and took the time to explain the process to me in detail. I felt like they genuinely had my best interests at heart and they made the process of obtaining a mortgage as smooth and stress-free as possible. I would highly recommend this bank for anyone looking to take out a mortgage.'" ] - }, + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "template = (\n", + " \"Write a customer review for a bank. \"\n", + " \"Do that for topic of {topic}. \"\n", + " \"Do that with one a {sentiment} sentiment.\"\n", + ")\n", + "prompt = PromptTemplate(template=template, input_variables=[\"topic\", \"sentiment\"])\n", + "llm_chain_review = LLMChain(prompt=prompt, llm=openai_model)\n", + "\n", + "\n", + "def generate_langchain_review():\n", + " return llm_chain_review.predict(\n", + " topic=random.choice(topic), sentiment=random.choice(sentiment)\n", + " ).strip()\n", + "\n", + "\n", + "generate_langchain_review()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now create a function that can generate `n`-random examples to evaluate the performance. As we can expect from the recent generation of OpenAI models, the results look good and seem diverse enough to be used as synthetic data." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", - "\n", - "1. Install the Argilla client and the required third-party libraries using `pip`:" + "data": { + "text/plain": [ + "[\"I've been a customer of this bank for over 5 years, and I've been completely satisfied with their payment services. The online payment system is easy to use and the customer service team is always quick to respond to any questions I have. I never have to worry about my payments being delayed or lost, which is always reassuring. Highly recommend this bank for anyone looking for reliable payment services!\",\n", + " \"I recently secured a mortgage with this bank and was so impressed with the level of service I received. From the start, the staff was friendly, knowledgeable, and willing to go above and beyond to get me the best deal. The process was straightforward and the paperwork was easy to understand. I'm thrilled with my new mortgage and would highly recommend this bank to anyone looking for a mortgage.\"]" ] - }, + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def generate_n_langchain_reviews(n=2):\n", + " reviews = []\n", + " for n in range(n):\n", + " reviews.append(generate_langchain_review())\n", + " return reviews\n", + "\n", + "\n", + "langchain_reviews = generate_n_langchain_reviews()\n", + "langchain_reviews" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Outlines\n", + "\n", + "Not all generative models are instruction tuned and as useful as modern-day LLMs. So take into account that this should be reflected in your `prompt` and the expected quality of the generated text. " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "yN2atS0RE2pF" - }, - "outputs": [], - "source": [ - "!pip install argilla openai langchain outlines tiktoken transformers ipywidgets jupyter" + "data": { + "text/plain": [ + "\"Because of technical questions and consumer protection. Telephone orders are not placed in the bank's database because where homeowners need to know that their bank is registered here, this protection providing a system to check their record is not protected by even their own state laws, which is why I don't believe criminal laws should be used to enforce the bank ATM login, nor should neutral other town or guild banking providers be regulated. These accountants have followed the local law explanations, and they do not deserve criminal sanction for allowing a\"" ] - }, + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "@text.prompt\n", + "def generator(topic, sentiment):\n", + " \"\"\"\n", + " The customer service for {{ topic }} of the bank is {{ sentiment }} because\n", + " \"\"\"\n", + "\n", + "\n", + "def generate_outlines_review():\n", + " prompt = generator(random.choice(topic), random.choice(sentiment))\n", + " answer = text.generate.continuation(transformer_model, max_tokens=100)(prompt)\n", + " answer = \"Because\" + answer\n", + " return answer\n", + "\n", + "\n", + "generate_outlines_review()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will now create a function that can generate `n`-random examples. Looking at the examples, the model seems to generate roughly related texts but in general, the quality proves poorer. It can therefore be recommended to use another type of models, which might be instruction tuned to ensure a higher quality generation. Additionally, Outlines offers more dynamic control over the generation process, which might be used to improve the quality of the generated text too." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Let's make the necessary imports:" + "data": { + "text/plain": [ + "['Because of damaged card and adds some other attachments from other data on the ToS or database file.\"',\n", + " 'Because of jurisdictional issues,\" said the FTC\\'s executive director, Paul R. Matthewi. \"Technology seems to be without limits in the fraud marketplace as we moved toward a new way of remote law enforcement and convenience.\"\\n\\nIt is unclear, however, how people will get paid—or how many will be affected. In TekSavvy, which relies on similar technology many consumer goods companies rely on to keep their customers healthy, some of America\\'s top credit card holders appear to still need money,']" ] - }, + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def generate_n_outlines_reviews(n=2):\n", + " reviews = []\n", + " for n in range(n):\n", + " reviews.append(generate_outlines_review())\n", + " return reviews\n", + "\n", + "\n", + "outlines_reviews = generate_n_outlines_reviews()\n", + "outlines_reviews" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `LabelQuestion`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this step, we will re-use the generated reviews from `langchain_reviews` and `outlines_reviews` and label their sentiment using the respective frameworks. This will be done by assuming a `str` to be returned from both of the lists of `sentiment` defined above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### LangChain\n", + "\n", + "We are using a jinja-like `template`, which requires us to define the basic `prompt` as an `input_variable` for LangChain. For the initial example, we are using a demo." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "id": "POQgkfrWEg1u" - }, - "outputs": [], - "source": [ - "import argilla as rg\n", - "\n", - "import os\n", - "import random\n", - "\n", - "from langchain import OpenAI, PromptTemplate, LLMChain\n", - "from langchain.output_parsers import CommaSeparatedListOutputParser\n", - "from outlines import models, text\n", - "from outlines.text import generate" + "data": { + "text/plain": [ + "'positive'" ] - }, + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "template = (\n", + " f\"Choose from the sentiments: {sentiment}. Return a single sentiment.{{prompt}}\"\n", + ")\n", + "prompt = PromptTemplate(template=template, input_variables=[\"prompt\"])\n", + "llm_chain_sentiment = LLMChain(prompt=prompt, llm=openai_model)\n", + "\n", + "\n", + "def get_sentiment_from_langchain(text: str) -> str:\n", + " return llm_chain_sentiment.predict(prompt=text).strip().lower()\n", + "\n", + "\n", + "get_sentiment_from_langchain(\"I love langchain and openai for sentiment labelling.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We get the sentiment labels for the generated `langchain_reviews`. We can see that the sentiment labels are not always correct, but they are mostly correct. This is because the LLMs are not perfect, but they are good enough to be used for synthetic data generation and providing suggestions for human annotators." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "3. If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + "data": { + "text/plain": [ + "['positive', 'positive']" ] - }, + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "langchain_sentiment = [\n", + " get_sentiment_from_langchain(reviews) for reviews in langchain_reviews\n", + "]\n", + "langchain_sentiment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Outlines\n", + "\n", + "Outlines provide an out-of-the-box implementation for guided labeling with generative, however, in some cases [(zero-shot) classification models from the HuggingFace library](https://huggingface.co/models?pipeline_tag=text-classification&sort=trending) can be used to provide a good point for the providing suggestions during a labeling process too. Take a look at our [example with SetFit](labelling-feedback-setfit.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", - "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "data": { + "text/plain": [ + "'positive'" ] - }, + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_sentiment_from_outlines(text: Union[str, list]) -> str:\n", + " return generate.choice(transformer_model, sentiment)(text)\n", + "\n", + "\n", + "get_sentiment_from_outlines(\"I love outlines and transformers for sentiment labelling.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use the `choice`-methods with a list of strings too." + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + "data": { + "text/plain": [ + "['neutral', 'positive']" ] - }, + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "outlines_sentiment = get_sentiment_from_outlines(outlines_reviews)\n", + "outlines_sentiment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### `MultiLabelQuestion`\n", + "\n", + "For this step, we will re-use the generated reviews from `lanchain_reviews` and `outlines_reviews` and label their topics as part of a multi-label classification problem." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Langchain\n", + "\n", + "Note that we are now using an output parser as a post-processing step for the returned output. We do this to ensure that we can obtain a `List[str]`. We will use the built-in `CommaSeparatedListOutputParser`, which split strings by comma and returns a list of strings as output. And we are using the jinja-like templating in a similar way as with the `SingleLabelQuestion`." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"admin.apikey\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" + "data": { + "text/plain": [ + "['new_card', 'mortgage', 'application', 'payments']" ] - }, + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_parser = CommaSeparatedListOutputParser()\n", + "template = (\n", + " f\"Classify the text as the following topics: {topic}. \"\n", + " \"Return zero or more topics as a comma-separated list. If zero return an empty string. \"\n", + " \"{prompt}\"\n", + ")\n", + "prompt = PromptTemplate(\n", + " template=template, input_variables=[\"prompt\"], output_parser=output_parser\n", + ")\n", + "llm_chain_topics = LLMChain(\n", + " prompt=prompt, llm=openai_model, output_parser=output_parser\n", + ")\n", + "\n", + "\n", + "def get_topics_from_langchain(text: str) -> str:\n", + " return [\n", + " topic.lower() for topic in llm_chain_topics.predict(prompt=text) if topic != \"\"\n", + " ]\n", + "\n", + "\n", + "get_topics_from_langchain(\n", + " f\"I love extracting {topic} with and openai and langchain for topic labelling.\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We get the topic labels for the generated `langchain_reviews`." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "4. We also need to set your OpenAI API credentials by [creating an API key](https://platform.openai.com/docs/quickstart/add-your-api-key) and setting defining the `OPENAI_API_KEY` environment variable." + "data": { + "text/plain": [ + "[['new_card'], ['mortgage', 'application']]" ] - }, + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "langchain_topics = [get_topics_from_langchain(review) for review in langchain_reviews]\n", + "langchain_topics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Outlines\n", + "\n", + "Outlines does not have a direct way to generate data from choices but we are able to leverage their `Pydantic` integration to generate a `json` schema. Note that this is a hacky way to facilitate this guided generation and is not officially mentioned in [the paper behind the outlines package](https://arxiv.org/pdf/2307.09702.pdf). \n", + "\n", + "Additionally, the use of `json` requires `pydantic>=2`.\n", + "\n", + "```python\n", + "# DEMO CODE\n", + "class Topic(BaseModel):\n", + " new_card: bool = False\n", + " mortgage: bool = False\n", + " application: bool = False\n", + " payments: bool = False\n", + "\n", + "def get_topics_from_outlines(text: str) -> str:\n", + " topics = []\n", + " json_data = generate.json(transformer_model, Topic)(langchain_reviews[0])\n", + " for key, value in json_data.items():\n", + " if value:\n", + " topics.append(key)\n", + " return topics\n", + "\n", + "get_topics_from_outlines(f\"I love extracting {topic} with and outlines and transformers for topic labelling.\")\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create synthetic records" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have our synthetic data and predictions, we can use them to create Argilla records. We will create completely artificial records from the `text` for the `TextField` and we will assign the `sentiment` and `topics` as model suggestions for the `LabelQuestion` and `MultiLabelQuestion`, respectively. These suggestions will help the annotators to label the data faster and more accurately, but instead of using them as suggestions, you would also be able to apply them as [annotated responses](../../../practical_guides/create_update_dataset/suggestions_and_responses.md) directly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For demo purposes, we will only create records with synthetic data obtained from `langchain`." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + "data": { + "text/plain": [ + "FeedbackRecord(fields={'text': '\\n\\nI recently applied for a mortgage at this bank and the process was simple and straightforward. The customer service team was helpful and knowledgeable, and their rates were competitive. Overall, I had a good experience.'}, metadata={}, responses=[], suggestions=(SuggestionSchema(question_id=None, question_name='sentiment', type=None, score=None, value='positive', agent=None), SuggestionSchema(question_id=None, question_name='topics', type=None, score=None, value=['mortgage', 'application'], agent=None)), external_id=None)" ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def create_synthetic_record():\n", + " review = generate_langchain_review()\n", + " record = rg.FeedbackRecord(\n", + " fields={\n", + " \"text\": review,\n", + " }\n", + " )\n", + " sentiment = get_sentiment_from_langchain(review)\n", + " topics = get_topics_from_langchain(review)\n", + " record.update(\n", + " suggestions=[\n", + " {\"question_name\": \"sentiment\", \"value\": sentiment},\n", + " {\"question_name\": \"topics\", \"value\": topics},\n", + " ]\n", + " )\n", + " return record\n", + "\n", + "\n", + "record = create_synthetic_record()\n", + "record" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will then add the synthetic `record` to the dataset, and upload the model data and dataset to the Argilla server" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset.add_records([record])\n", + "remote_dataset = dataset.push_to_argilla(name=\"synthetic-data\", workspace=\"argilla\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "In this tutorial, we have covered how to create synthetic data using OpenAI and Lanchain, or Transformers and Outlines. We have highlighted some caveats to synthetic data generation when it comes to prompt engineering. Finally, we've shown how to use this synthesized data as input and suggestions for Argilla records.\n", + "\n", + "To learn more about LLMs, LangChain and OpenAI check out these links:\n", + "\n", + "- [Outlines](https://github.com/normal-computing/outlines)\n", + "- [LangChain](https://github.com/langchain-ai/langchain)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "argilla", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "vscode": { + "interpreter": { + "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "04150cf7e9a74a04aafa94d394553630": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from argilla.utils.telemetry import tutorial_running\n", - " tutorial_running()\n", - "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" - ] + "0447a98b5dfe42c899273b9c37bdadad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define a FeedbackDataset" - ] + "0c010df989eb497c810a6f960c6ea41b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, we will create a synthetic dataset for a banking customer care scenario. We assume that customers will write `text` requests. These requests should then be classified for `sentiment` and `topics`. The `topics` will be a multi-label classification and can be used to route the request to the correct department. The `sentiment` will be used using a single-label classification to determine if the request needs to be handled with priority." - ] + "0d7acd8e1a394336aa146e2a442f672c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "id": "0UsoG5OtE11w" - }, - "outputs": [], - "source": [ - "sentiment = [\"positive\", \"neutral\", \"negative\"]\n", - "topic = [\"new_card\", \"mortgage\", \"application\", \"payments\"]\n", - "\n", - "dataset = rg.FeedbackDataset(\n", - " fields = [rg.TextField(name=\"text\")],\n", - " questions = [\n", - " rg.LabelQuestion(\n", - " name=\"sentiment\",\n", - " title=\"What is the sentiment of the message?\",\n", - " labels=sentiment\n", - " ),\n", - " rg.MultiLabelQuestion(\n", - " name=\"topics\",\n", - " title=\"Select the topic(s) of the message?\",\n", - " labels=topic,\n", - " visible_labels=4\n", - " )\n", - " ],\n", - " guidelines=(\n", - " \"This dataset contains messages from a bank's customer support chatbot. \"\n", - " \"The goal is to label the sentiment and topics of the messages.\"\n", - " )\n", - ")" - ] + "16993356757e4ee5b7f8042d58c96e17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create synthetic data" - ] + "16d42bc00dfe4467a1da86b1d2391d0d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use LLMs to generate the synthetic data for each step of the NLP task. First, we will create `text` requests from customers for a bank. Next, we will create input for the `LabelQuestion` to assess the sentiment of the requests and lastly, we will create input for the `MultiLabelQuestion` to classify the requests.\n", - "\n", - "We will do this using [OpenAI](https://github.com/openai/openai-python) models in combination with the [LangChain](https://github.com/langchain-ai/langchain) and open-source transformer-based models in combination with [Outlines](https://github.com/normal-computing/outlines) packages.\n", - "\n", - " | The LangChain framework is a wrapper around LLM models that allows for easier data-aware and agent-based LLM models. \n", - "\n", - " | Outlines is a Python library to write reliable programs for conditional generation during interactions with generative models.\n", - " \n", - "
\n", - "\n", - "Note \n", - "\n", - "The process of prompt engineering is a trial-and-error process. Changes somewhere might result in undesirable effects in another place in the language chain. The examples below are just a starting point and can be improved by experimenting with different prompts and templates.\n", - "\n", - "
" - ] + "170a2ee20ab64a9b86db65549a5d4063": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0d7acd8e1a394336aa146e2a442f672c", + "placeholder": "​", + "style": "IPY_MODEL_3e6c2b50b3084d23b575585c288f087e", + "value": "Generating Training Pairs: 100%" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Initialize Generative model\n", - "\n", - "#### LangChain with OpenAI\n", - "\n", - "For the usage of LangChain you need to pass the `OPENAI_API_KEY` environment variable to the `OpenAI` class. You can do this by using the `os` package. The `model` variable is then ready to use in the examples below." - ] + "186f82d150994ac7914d0646fb5ff425": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\"\n", - "openai_model = OpenAI(api_key=os.environ.get(\"OPENAI_API_KEY\"))" - ] + "1d58b40ad6a54c25bd451eda4e7d8069": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Outlines with Transformers\n", - "\n", - "Even though Outlines does provide some support for OpenAI, we will use basic transformers for this example. You can use any generative model from the [HuggingFace model hub](https://huggingface.co/models?pipeline_tag=text-generation&sort=trending) by passing the name of the model to the `transformers` function. The `model` variable is then ready to use in the examples below." - ] + "1ff157a9c8974b07ae97cb115c8d0188": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "transformer_model = models.transformers(\"gpt2\")" - ] + "217760080e494d2d9b0582910d121a28": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `TextField`\n", - "\n", - "For creating a review, we rely on free text generation based on a prompt. This should be good enough for our purposes of creating a synthetic dataset as well as keeping the process as simple as possible." - ] + "242f97eb0f0d4ab1830c62686127b717": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5057f8b8144d41ff9d8b82b8602570fc", + "placeholder": "​", + "style": "IPY_MODEL_369bc409052a48f7ac2182715406abef", + "value": "Iteration: 100%" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### LangChain\n", - "\n", - "OpenAI models have been instruction-tuned and can thus be used via LangChain to generate synthetic data. This is done using a `PrompTemplate` that infers information from `topic` and `sentiment` variables that are passed to the `predict()` method." - ] + "255d62fb39454098ab3701753d8d67d6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_77bd2b1f5e57441ab729c6e517279834", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bc0c58d9d798437fb1d40277d8777777", + "value": 1 + } }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'I recently had the pleasure of working with the mortgage team at this bank, and I can confidently say that their level of service and expertise was second to none. They answered all of my questions quickly and took the time to explain the process to me in detail. I felt like they genuinely had my best interests at heart and they made the process of obtaining a mortgage as smooth and stress-free as possible. I would highly recommend this bank for anyone looking to take out a mortgage.'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "template = (\n", - " \"Write a customer review for a bank. \"\n", - " \"Do that for topic of {topic}. \"\n", - " \"Do that with one a {sentiment} sentiment.\"\n", - ")\n", - "prompt = PromptTemplate(template=template, input_variables=[\"topic\", \"sentiment\"])\n", - "llm_chain_review = LLMChain(prompt=prompt, llm=openai_model)\n", - "\n", - "def generate_langchain_review():\n", - " return llm_chain_review.predict(\n", - " topic=random.choice(topic), \n", - " sentiment=random.choice(sentiment)\n", - " ).strip()\n", - " \n", - "generate_langchain_review()" - ] + "25f9bca647f44645b85a644f03807095": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fa5df54e161e40dbbb21ed96c879444e", + "placeholder": "​", + "style": "IPY_MODEL_16993356757e4ee5b7f8042d58c96e17", + "value": " 1/1 [01:28<00:00, 88.63s/it]" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now create a function that can generate `n`-random examples to evaluate the performance. As we can expect from the recent generation of OpenAI models, the results look good and seem diverse enough to be used as synthetic data." - ] + "28c40914eac34bcba0c9eb4dac6b0032": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[\"I've been a customer of this bank for over 5 years, and I've been completely satisfied with their payment services. The online payment system is easy to use and the customer service team is always quick to respond to any questions I have. I never have to worry about my payments being delayed or lost, which is always reassuring. Highly recommend this bank for anyone looking for reliable payment services!\",\n", - " \"I recently secured a mortgage with this bank and was so impressed with the level of service I received. From the start, the staff was friendly, knowledgeable, and willing to go above and beyond to get me the best deal. The process was straightforward and the paperwork was easy to understand. I'm thrilled with my new mortgage and would highly recommend this bank to anyone looking for a mortgage.\"]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def generate_n_langchain_reviews(n=2):\n", - " reviews = []\n", - " for n in range(n):\n", - " reviews.append(generate_langchain_review())\n", - " return reviews\n", - "\n", - "langchain_reviews = generate_n_langchain_reviews()\n", - "langchain_reviews" - ] + "2f271b0778974646aaff691227336e91": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_16d42bc00dfe4467a1da86b1d2391d0d", + "placeholder": "​", + "style": "IPY_MODEL_0447a98b5dfe42c899273b9c37bdadad", + "value": " 20/20 [00:00<00:00, 391.01it/s]" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Outlines\n", - "\n", - "Not all generative models are instruction tuned and as useful as modern-day LLMs. So take into account that this should be reflected in your `prompt` and the expected quality of the generated text. " - ] + "369bc409052a48f7ac2182715406abef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"Because of technical questions and consumer protection. Telephone orders are not placed in the bank's database because where homeowners need to know that their bank is registered here, this protection providing a system to check their record is not protected by even their own state laws, which is why I don't believe criminal laws should be used to enforce the bank ATM login, nor should neutral other town or guild banking providers be regulated. These accountants have followed the local law explanations, and they do not deserve criminal sanction for allowing a\"" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@text.prompt\n", - "def generator(topic, sentiment):\n", - " \"\"\"\n", - " The customer service for {{ topic }} of the bank is {{ sentiment }} because\n", - " \"\"\"\n", - "\n", - "def generate_outlines_review():\n", - " prompt = generator(random.choice(topic), random.choice(sentiment))\n", - " answer = text.generate.continuation(transformer_model, max_tokens=100)(prompt)\n", - " answer = \"Because\"+ answer\n", - " return answer\n", - "\n", - "generate_outlines_review()" - ] + "36b99521f8274a639abb90eb0040d6c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_70a57ad580f847d3bd3123cfe1539305", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0c010df989eb497c810a6f960c6ea41b", + "value": 1 + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will now create a function that can generate `n`-random examples. Looking at the examples, the model seems to generate roughly related texts but in general, the quality proves poorer. It can therefore be recommended to use another type of models, which might be instruction tuned to ensure a higher quality generation. Additionally, Outlines offers more dynamic control over the generation process, which might be used to improve the quality of the generated text too." - ] + "379907416f504f05906454e482da2eaf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Because of damaged card and adds some other attachments from other data on the ToS or database file.\"',\n", - " 'Because of jurisdictional issues,\" said the FTC\\'s executive director, Paul R. Matthewi. \"Technology seems to be without limits in the fraud marketplace as we moved toward a new way of remote law enforcement and convenience.\"\\n\\nIt is unclear, however, how people will get paid—or how many will be affected. In TekSavvy, which relies on similar technology many consumer goods companies rely on to keep their customers healthy, some of America\\'s top credit card holders appear to still need money,']" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } + "38bfdddef0444c0baf9d29248689f846": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3f5aed26eeef4182b360085d83ae795d", + "IPY_MODEL_255d62fb39454098ab3701753d8d67d6", + "IPY_MODEL_25f9bca647f44645b85a644f03807095" ], - "source": [ - "def generate_n_outlines_reviews(n=2):\n", - " reviews = []\n", - " for n in range(n):\n", - " reviews.append(generate_outlines_review())\n", - " return reviews\n", - "\n", - "outlines_reviews = generate_n_outlines_reviews()\n", - "outlines_reviews" - ] + "layout": "IPY_MODEL_ae7fc579502e46f7861e402580586b28" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `LabelQuestion`" - ] + "3d282336f5c3425386a417866f367007": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this step, we will re-use the generated reviews from `langchain_reviews` and `outlines_reviews` and label their sentiment using the respective frameworks. This will be done by assuming a `str` to be returned from both of the lists of `sentiment` defined above." - ] + "3e622eeea5df47d6a21e015f3e742fa8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### LangChain\n", - "\n", - "We are using a jinja-like `template`, which requires us to define the basic `prompt` as an `input_variable` for LangChain. For the initial example, we are using a demo." - ] + "3e6c2b50b3084d23b575585c288f087e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'positive'" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "template = (\n", - " f'Choose from the sentiments: {sentiment}. '\n", - " 'Return a single sentiment.'\n", - " '{prompt}'\n", - ")\n", - "prompt = PromptTemplate(template=template, input_variables=[\"prompt\"])\n", - "llm_chain_sentiment = LLMChain(prompt=prompt, llm=openai_model)\n", - "\n", - "def get_sentiment_from_langchain(text: str) -> str:\n", - " return llm_chain_sentiment.predict(prompt=text).strip().lower()\n", - "\n", - "get_sentiment_from_langchain(\"I love langchain and openai for sentiment labelling.\")" - ] + "3f5aed26eeef4182b360085d83ae795d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6143886f7acc4591ae5f79ce6f67af4a", + "placeholder": "​", + "style": "IPY_MODEL_486c1a817552432c8fb20e59d0a3f079", + "value": "Epoch: 100%" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We get the sentiment labels for the generated `langchain_reviews`. We can see that the sentiment labels are not always correct, but they are mostly correct. This is because the LLMs are not perfect, but they are good enough to be used for synthetic data generation and providing suggestions for human annotators." - ] + "3fd94ef662db4fff9dde61455b41faf1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_186f82d150994ac7914d0646fb5ff425", + "placeholder": "​", + "style": "IPY_MODEL_379907416f504f05906454e482da2eaf", + "value": " 1/1 [00:02<00:00, 2.63s/it]" + } }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['positive', 'positive']" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } + "411de4b297fe4a09acb70951c9f36b82": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c2eac9934f5b407c8e424ee2da9eea58", + "IPY_MODEL_36b99521f8274a639abb90eb0040d6c0", + "IPY_MODEL_3fd94ef662db4fff9dde61455b41faf1" ], - "source": [ - "langchain_sentiment = [get_sentiment_from_langchain(reviews) for reviews in langchain_reviews]\n", - "langchain_sentiment" - ] + "layout": "IPY_MODEL_d6283b2cf69d45f694633ae1544d47a8" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Outlines\n", - "\n", - "Outlines provide an out-of-the-box implementation for guided labeling with generative, however, in some cases [(zero-shot) classification models from the HuggingFace library](https://huggingface.co/models?pipeline_tag=text-classification&sort=trending) can be used to provide a good point for the providing suggestions during a labeling process too. Take a look at our [example with SetFit](labelling-feedback-setfit.ipynb)." - ] + "486c1a817552432c8fb20e59d0a3f079": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'positive'" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } + "501d213a24064f998d4d3c45255d02b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "503d373bd18b4b79a1f694916734d903": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6e9e5e1ac58945d0926a85c1fd29ab17", + "IPY_MODEL_cc9ccdfefca941e1813258a19afe64ed", + "IPY_MODEL_c2238acd18b844c0bb517d670b76ca5c" ], - "source": [ - "def get_sentiment_from_outlines(text: Union[str, list]) -> str:\n", - " return generate.choice(transformer_model, sentiment)(text)\n", - "\n", - "get_sentiment_from_outlines(\"I love outlines and transformers for sentiment labelling.\")" - ] + "layout": "IPY_MODEL_90eec4e8ae8b42268548588db2fcbf49" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can use the `choice`-methods with a list of strings too." - ] + "5057f8b8144d41ff9d8b82b8602570fc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['neutral', 'positive']" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "outlines_sentiment = get_sentiment_from_outlines(outlines_reviews)\n", - "outlines_sentiment" - ] + "5692de58835a466695fcc8f0d5976b74": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `MultiLabelQuestion`\n", - "\n", - "For this step, we will re-use the generated reviews from `lanchain_reviews` and `outlines_reviews` and label their topics as part of a multi-label classification problem." - ] + "571fd48c2da8432e8a74e7b318eb6042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Langchain\n", - "\n", - "Note that we are now using an output parser as a post-processing step for the returned output. We do this to ensure that we can obtain a `List[str]`. We will use the built-in `CommaSeparatedListOutputParser`, which split strings by comma and returns a list of strings as output. And we are using the jinja-like templating in a similar way as with the `SingleLabelQuestion`." - ] + "5a06b8d12b494daeb0624f2e39e06e67": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['new_card', 'mortgage', 'application', 'payments']" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "output_parser = CommaSeparatedListOutputParser()\n", - "template = (\n", - " f'Classify the text as the following topics: {topic}. '\n", - " 'Return zero or more topics as a comma-separated list. If zero return an empty string. '\n", - " '{prompt}'\n", - ")\n", - "prompt = PromptTemplate(template=template, input_variables=[\"prompt\"], output_parser=output_parser)\n", - "llm_chain_topics = LLMChain(prompt=prompt, llm=openai_model, output_parser=output_parser)\n", - "\n", - "def get_topics_from_langchain(text: str) -> str:\n", - " return [topic.lower() for topic in llm_chain_topics.predict(prompt=text) if topic != '']\n", - "\n", - "get_topics_from_langchain(f\"I love extracting {topic} with and openai and langchain for topic labelling.\")" - ] + "5cc0f7cc30ae4aa4b13966a773e4c824": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We get the topic labels for the generated `langchain_reviews`." - ] + "5e0377b4b48c441a8d747ea904c3207b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[['new_card'], ['mortgage', 'application']]" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } + "6143886f7acc4591ae5f79ce6f67af4a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "621bb7d632814cb0839755ca56098d7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "668593b82ae54d3cbaf1a19c0307c545": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6e9e5e1ac58945d0926a85c1fd29ab17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_501d213a24064f998d4d3c45255d02b7", + "placeholder": "​", + "style": "IPY_MODEL_3d282336f5c3425386a417866f367007", + "value": "Generating Training Pairs: 100%" + } + }, + "70a57ad580f847d3bd3123cfe1539305": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "750011ef09534e55bab5180974bcf5d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "77bd2b1f5e57441ab729c6e517279834": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "783115bacdbf4c0bb09c0b1fc7976d28": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_242f97eb0f0d4ab1830c62686127b717", + "IPY_MODEL_bfecbc09a4f84f3db51903d5048ff825", + "IPY_MODEL_db7cf4427ad746cd86df88f7a1016bc9" ], - "source": [ - "langchain_topics = [get_topics_from_langchain(review) for review in langchain_reviews]\n", - "langchain_topics" - ] + "layout": "IPY_MODEL_668593b82ae54d3cbaf1a19c0307c545" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Outlines\n", - "\n", - "Outlines does not have a direct way to generate data from choices but we are able to leverage their `Pydantic` integration to generate a `json` schema. Note that this is a hacky way to facilitate this guided generation and is not officially mentioned in [the paper behind the outlines package](https://arxiv.org/pdf/2307.09702.pdf). \n", - "\n", - "Additionally, the use of `json` requires `pydantic>=2`.\n", - "\n", - "```python\n", - "# DEMO CODE\n", - "class Topic(BaseModel):\n", - " new_card: bool = False\n", - " mortgage: bool = False\n", - " application: bool = False\n", - " payments: bool = False\n", - "\n", - "def get_topics_from_outlines(text: str) -> str:\n", - " topics = []\n", - " json_data = generate.json(transformer_model, Topic)(langchain_reviews[0])\n", - " for key, value in json_data.items():\n", - " if value:\n", - " topics.append(key)\n", - " return topics\n", - "\n", - "get_topics_from_outlines(f\"I love extracting {topic} with and outlines and transformers for topic labelling.\")\n", - "```" - ] + "7a12fbf5400a468fbdce4b2b2008eefc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create synthetic records" - ] + "7b96b0a21eba4ad5a4c12534940b3591": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have our synthetic data and predictions, we can use them to create Argilla records. We will create completely artificial records from the `text` for the `TextField` and we will assign the `sentiment` and `topics` as model suggestions for the `LabelQuestion` and `MultiLabelQuestion`, respectively. These suggestions will help the annotators to label the data faster and more accurately, but instead of using them as suggestions, you would also be able to apply them as [annotated responses](../../../practical_guides/create_update_dataset/suggestions_and_responses.md) directly." - ] + "7ca015b6798947d58d275de6181fe053": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For demo purposes, we will only create records with synthetic data obtained from `langchain`." - ] + "90eec4e8ae8b42268548588db2fcbf49": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FeedbackRecord(fields={'text': '\\n\\nI recently applied for a mortgage at this bank and the process was simple and straightforward. The customer service team was helpful and knowledgeable, and their rates were competitive. Overall, I had a good experience.'}, metadata={}, responses=[], suggestions=(SuggestionSchema(question_id=None, question_name='sentiment', type=None, score=None, value='positive', agent=None), SuggestionSchema(question_id=None, question_name='topics', type=None, score=None, value=['mortgage', 'application'], agent=None)), external_id=None)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } + "980f36d72cfa403aad67e871aecba890": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f5e35991e6d849eca73282c9c359000a", + "placeholder": "​", + "style": "IPY_MODEL_5a06b8d12b494daeb0624f2e39e06e67", + "value": " 1540/1540 [01:28<00:00, 21.45it/s]" + } + }, + "9a7c8861a37b41eba191059546f5dd5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a9ce0af78a2241e697a22229db7840ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7a12fbf5400a468fbdce4b2b2008eefc", + "placeholder": "​", + "style": "IPY_MODEL_04150cf7e9a74a04aafa94d394553630", + "value": "Iteration: 100%" + } + }, + "ae6ffc6572b54c059196983da4ff2d79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9a7c8861a37b41eba191059546f5dd5d", + "max": 1540, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_217760080e494d2d9b0582910d121a28", + "value": 1540 + } + }, + "ae7fc579502e46f7861e402580586b28": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc0c58d9d798437fb1d40277d8777777": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bfecbc09a4f84f3db51903d5048ff825": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5cc0f7cc30ae4aa4b13966a773e4c824", + "max": 60, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_28c40914eac34bcba0c9eb4dac6b0032", + "value": 60 + } + }, + "c21e90a6dda643d8bd82abf4e346d45c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_170a2ee20ab64a9b86db65549a5d4063", + "IPY_MODEL_fd7c2acc4b1945feabe6715dd270cb72", + "IPY_MODEL_2f271b0778974646aaff691227336e91" ], - "source": [ - "def create_synthetic_record():\n", - " review = generate_langchain_review()\n", - " record = rg.FeedbackRecord(\n", - " fields={\n", - " \"text\": review,\n", - " }\n", - " )\n", - " sentiment = get_sentiment_from_langchain(review)\n", - " topics = get_topics_from_langchain(review)\n", - " record.update(suggestions=[\n", - " {\"question_name\": \"sentiment\", \"value\": sentiment}, \n", - " {\"question_name\": \"topics\", \"value\": topics}\n", - " ])\n", - " return record\n", - "\n", - "record = create_synthetic_record()\n", - "record" - ] + "layout": "IPY_MODEL_ef245777ac3d435e8715fc55b1d4824c" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will then add the synthetic `record` to the dataset, and upload the model data and dataset to the Argilla server" - ] + "c2238acd18b844c0bb517d670b76ca5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1d58b40ad6a54c25bd451eda4e7d8069", + "placeholder": "​", + "style": "IPY_MODEL_5e0377b4b48c441a8d747ea904c3207b", + "value": " 20/20 [00:01<00:00, 10.96it/s]" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dataset.add_records([record])\n", - "remote_dataset = dataset.push_to_argilla(name=\"synthetic-data\", workspace=\"argilla\")" - ] + "c2eac9934f5b407c8e424ee2da9eea58": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7ca015b6798947d58d275de6181fe053", + "placeholder": "​", + "style": "IPY_MODEL_750011ef09534e55bab5180974bcf5d4", + "value": "Epoch: 100%" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "In this tutorial, we have covered how to create synthetic data using OpenAI and Lanchain, or Transformers and Outlines. We have highlighted some caveats to synthetic data generation when it comes to prompt engineering. Finally, we've shown how to use this synthesized data as input and suggestions for Argilla records.\n", - "\n", - "To learn more about LLMs, LangChain and OpenAI check out these links:\n", - "\n", - "- [Outlines](https://github.com/normal-computing/outlines)\n", - "- [LangChain](https://github.com/langchain-ai/langchain)" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "gpuType": "T4", - "provenance": [] - }, - "kernelspec": { - "display_name": "argilla", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "vscode": { - "interpreter": { - "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" - } - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "04150cf7e9a74a04aafa94d394553630": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0447a98b5dfe42c899273b9c37bdadad": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0c010df989eb497c810a6f960c6ea41b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "0d7acd8e1a394336aa146e2a442f672c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "16993356757e4ee5b7f8042d58c96e17": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "16d42bc00dfe4467a1da86b1d2391d0d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "170a2ee20ab64a9b86db65549a5d4063": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0d7acd8e1a394336aa146e2a442f672c", - "placeholder": "​", - "style": "IPY_MODEL_3e6c2b50b3084d23b575585c288f087e", - "value": "Generating Training Pairs: 100%" - } - }, - "186f82d150994ac7914d0646fb5ff425": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1d58b40ad6a54c25bd451eda4e7d8069": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1ff157a9c8974b07ae97cb115c8d0188": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "217760080e494d2d9b0582910d121a28": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "242f97eb0f0d4ab1830c62686127b717": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5057f8b8144d41ff9d8b82b8602570fc", - "placeholder": "​", - "style": "IPY_MODEL_369bc409052a48f7ac2182715406abef", - "value": "Iteration: 100%" - } - }, - "255d62fb39454098ab3701753d8d67d6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_77bd2b1f5e57441ab729c6e517279834", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_bc0c58d9d798437fb1d40277d8777777", - "value": 1 - } - }, - "25f9bca647f44645b85a644f03807095": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fa5df54e161e40dbbb21ed96c879444e", - "placeholder": "​", - "style": "IPY_MODEL_16993356757e4ee5b7f8042d58c96e17", - "value": " 1/1 [01:28<00:00, 88.63s/it]" - } - }, - "28c40914eac34bcba0c9eb4dac6b0032": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "2f271b0778974646aaff691227336e91": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_16d42bc00dfe4467a1da86b1d2391d0d", - "placeholder": "​", - "style": "IPY_MODEL_0447a98b5dfe42c899273b9c37bdadad", - "value": " 20/20 [00:00<00:00, 391.01it/s]" - } - }, - "369bc409052a48f7ac2182715406abef": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "36b99521f8274a639abb90eb0040d6c0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_70a57ad580f847d3bd3123cfe1539305", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0c010df989eb497c810a6f960c6ea41b", - "value": 1 - } - }, - "379907416f504f05906454e482da2eaf": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "38bfdddef0444c0baf9d29248689f846": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_3f5aed26eeef4182b360085d83ae795d", - "IPY_MODEL_255d62fb39454098ab3701753d8d67d6", - "IPY_MODEL_25f9bca647f44645b85a644f03807095" - ], - "layout": "IPY_MODEL_ae7fc579502e46f7861e402580586b28" - } - }, - "3d282336f5c3425386a417866f367007": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3e622eeea5df47d6a21e015f3e742fa8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3e6c2b50b3084d23b575585c288f087e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3f5aed26eeef4182b360085d83ae795d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_6143886f7acc4591ae5f79ce6f67af4a", - "placeholder": "​", - "style": "IPY_MODEL_486c1a817552432c8fb20e59d0a3f079", - "value": "Epoch: 100%" - } - }, - "3fd94ef662db4fff9dde61455b41faf1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_186f82d150994ac7914d0646fb5ff425", - "placeholder": "​", - "style": "IPY_MODEL_379907416f504f05906454e482da2eaf", - "value": " 1/1 [00:02<00:00, 2.63s/it]" - } - }, - "411de4b297fe4a09acb70951c9f36b82": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c2eac9934f5b407c8e424ee2da9eea58", - "IPY_MODEL_36b99521f8274a639abb90eb0040d6c0", - "IPY_MODEL_3fd94ef662db4fff9dde61455b41faf1" - ], - "layout": "IPY_MODEL_d6283b2cf69d45f694633ae1544d47a8" - } - }, - "486c1a817552432c8fb20e59d0a3f079": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "501d213a24064f998d4d3c45255d02b7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "503d373bd18b4b79a1f694916734d903": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_6e9e5e1ac58945d0926a85c1fd29ab17", - "IPY_MODEL_cc9ccdfefca941e1813258a19afe64ed", - "IPY_MODEL_c2238acd18b844c0bb517d670b76ca5c" - ], - "layout": "IPY_MODEL_90eec4e8ae8b42268548588db2fcbf49" - } - }, - "5057f8b8144d41ff9d8b82b8602570fc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5692de58835a466695fcc8f0d5976b74": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "571fd48c2da8432e8a74e7b318eb6042": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "5a06b8d12b494daeb0624f2e39e06e67": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5cc0f7cc30ae4aa4b13966a773e4c824": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5e0377b4b48c441a8d747ea904c3207b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "6143886f7acc4591ae5f79ce6f67af4a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "621bb7d632814cb0839755ca56098d7a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "668593b82ae54d3cbaf1a19c0307c545": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6e9e5e1ac58945d0926a85c1fd29ab17": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_501d213a24064f998d4d3c45255d02b7", - "placeholder": "​", - "style": "IPY_MODEL_3d282336f5c3425386a417866f367007", - "value": "Generating Training Pairs: 100%" - } - }, - "70a57ad580f847d3bd3123cfe1539305": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "750011ef09534e55bab5180974bcf5d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "77bd2b1f5e57441ab729c6e517279834": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "783115bacdbf4c0bb09c0b1fc7976d28": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_242f97eb0f0d4ab1830c62686127b717", - "IPY_MODEL_bfecbc09a4f84f3db51903d5048ff825", - "IPY_MODEL_db7cf4427ad746cd86df88f7a1016bc9" - ], - "layout": "IPY_MODEL_668593b82ae54d3cbaf1a19c0307c545" - } - }, - "7a12fbf5400a468fbdce4b2b2008eefc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7b96b0a21eba4ad5a4c12534940b3591": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7ca015b6798947d58d275de6181fe053": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "90eec4e8ae8b42268548588db2fcbf49": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "980f36d72cfa403aad67e871aecba890": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f5e35991e6d849eca73282c9c359000a", - "placeholder": "​", - "style": "IPY_MODEL_5a06b8d12b494daeb0624f2e39e06e67", - "value": " 1540/1540 [01:28<00:00, 21.45it/s]" - } - }, - "9a7c8861a37b41eba191059546f5dd5d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a9ce0af78a2241e697a22229db7840ab": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7a12fbf5400a468fbdce4b2b2008eefc", - "placeholder": "​", - "style": "IPY_MODEL_04150cf7e9a74a04aafa94d394553630", - "value": "Iteration: 100%" - } - }, - "ae6ffc6572b54c059196983da4ff2d79": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9a7c8861a37b41eba191059546f5dd5d", - "max": 1540, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_217760080e494d2d9b0582910d121a28", - "value": 1540 - } - }, - "ae7fc579502e46f7861e402580586b28": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bc0c58d9d798437fb1d40277d8777777": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "bfecbc09a4f84f3db51903d5048ff825": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5cc0f7cc30ae4aa4b13966a773e4c824", - "max": 60, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_28c40914eac34bcba0c9eb4dac6b0032", - "value": 60 - } - }, - "c21e90a6dda643d8bd82abf4e346d45c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_170a2ee20ab64a9b86db65549a5d4063", - "IPY_MODEL_fd7c2acc4b1945feabe6715dd270cb72", - "IPY_MODEL_2f271b0778974646aaff691227336e91" - ], - "layout": "IPY_MODEL_ef245777ac3d435e8715fc55b1d4824c" - } - }, - "c2238acd18b844c0bb517d670b76ca5c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1d58b40ad6a54c25bd451eda4e7d8069", - "placeholder": "​", - "style": "IPY_MODEL_5e0377b4b48c441a8d747ea904c3207b", - "value": " 20/20 [00:01<00:00, 10.96it/s]" - } - }, - "c2eac9934f5b407c8e424ee2da9eea58": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7ca015b6798947d58d275de6181fe053", - "placeholder": "​", - "style": "IPY_MODEL_750011ef09534e55bab5180974bcf5d4", - "value": "Epoch: 100%" - } - }, - "cc9ccdfefca941e1813258a19afe64ed": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7b96b0a21eba4ad5a4c12534940b3591", - "max": 20, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_571fd48c2da8432e8a74e7b318eb6042", - "value": 20 - } - }, - "d11aa6a0c8c54481b6cc2c80d1fa0ba1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_a9ce0af78a2241e697a22229db7840ab", - "IPY_MODEL_ae6ffc6572b54c059196983da4ff2d79", - "IPY_MODEL_980f36d72cfa403aad67e871aecba890" - ], - "layout": "IPY_MODEL_5692de58835a466695fcc8f0d5976b74" - } - }, - "d6283b2cf69d45f694633ae1544d47a8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "db7cf4427ad746cd86df88f7a1016bc9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3e622eeea5df47d6a21e015f3e742fa8", - "placeholder": "​", - "style": "IPY_MODEL_621bb7d632814cb0839755ca56098d7a", - "value": " 60/60 [00:02<00:00, 23.09it/s]" - } - }, - "ef245777ac3d435e8715fc55b1d4824c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f5e35991e6d849eca73282c9c359000a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fa5df54e161e40dbbb21ed96c879444e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fd7c2acc4b1945feabe6715dd270cb72": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ff7f98b368c448ea81e4c79fded0be5a", - "max": 20, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_1ff157a9c8974b07ae97cb115c8d0188", - "value": 20 - } - }, - "ff7f98b368c448ea81e4c79fded0be5a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } + "cc9ccdfefca941e1813258a19afe64ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7b96b0a21eba4ad5a4c12534940b3591", + "max": 20, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_571fd48c2da8432e8a74e7b318eb6042", + "value": 20 + } + }, + "d11aa6a0c8c54481b6cc2c80d1fa0ba1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a9ce0af78a2241e697a22229db7840ab", + "IPY_MODEL_ae6ffc6572b54c059196983da4ff2d79", + "IPY_MODEL_980f36d72cfa403aad67e871aecba890" + ], + "layout": "IPY_MODEL_5692de58835a466695fcc8f0d5976b74" + } + }, + "d6283b2cf69d45f694633ae1544d47a8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "db7cf4427ad746cd86df88f7a1016bc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3e622eeea5df47d6a21e015f3e742fa8", + "placeholder": "​", + "style": "IPY_MODEL_621bb7d632814cb0839755ca56098d7a", + "value": " 60/60 [00:02<00:00, 23.09it/s]" + } + }, + "ef245777ac3d435e8715fc55b1d4824c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f5e35991e6d849eca73282c9c359000a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fa5df54e161e40dbbb21ed96c879444e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fd7c2acc4b1945feabe6715dd270cb72": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ff7f98b368c448ea81e4c79fded0be5a", + "max": 20, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1ff157a9c8974b07ae97cb115c8d0188", + "value": 20 + } + }, + "ff7f98b368c448ea81e4c79fded0be5a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-setfit.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-setfit.ipynb index 61dac6fdaf..de5dab622d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-setfit.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-feedback-setfit.ipynb @@ -1,2993 +1,2991 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# ✨ Add zero-shot text classification suggestions using SetFit\n", - "\n", - "Suggestions are a wonderful way to make things easier and faster for your annotation team. These preselected options will make the labelling process more efficient, as they will only need to correct the suggestions. \n", - "\n", - "In this example, we will demonstrate how to implement a zero-shot approach using SetFit to get some initial suggestions for dataset that combines two text classification tasks that include a `LabelQuestion` and a `MultiLabelQuestion`.\n", - "\n", - "Let's get started!\n", - "\n", - "![Feedback Task dataset with suggestions made using SetFit](/_static/images/llms/labelling-feedback-setfit/snapshot_setfit_suggestions.png)\n", - "\n", - "
\n", - "\n", - "Note \n", - "\n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "\n", - "
\n" - ] + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ✨ Add zero-shot text classification suggestions using SetFit\n", + "\n", + "Suggestions are a wonderful way to make things easier and faster for your annotation team. These preselected options will make the labelling process more efficient, as they will only need to correct the suggestions. \n", + "\n", + "In this example, we will demonstrate how to implement a zero-shot approach using SetFit to get some initial suggestions for dataset that combines two text classification tasks that include a `LabelQuestion` and a `MultiLabelQuestion`.\n", + "\n", + "Let's get started!\n", + "\n", + "![Feedback Task dataset with suggestions made using SetFit](/_static/images/llms/labelling-feedback-setfit/snapshot_setfit_suggestions.png)\n", + "\n", + "
\n", + "\n", + "Note \n", + "\n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", + "\n", + "1. Install the Argilla client and the required third-party libraries using `pip`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yN2atS0RE2pF" + }, + "outputs": [], + "source": [ + "!pip install argilla setfit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Let's make the necessary imports:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "POQgkfrWEg1u" + }, + "outputs": [], + "source": [ + "import argilla as rg\n", + "from datasets import load_dataset\n", + "from setfit import get_templated_dataset\n", + "from setfit import SetFitModel, SetFitTrainer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# Replace api_key if you configured a custom API key\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"admin.apikey\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure the dataset" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we will load a popular open-source dataset that has customer requests in the banking domain." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0UsoG5OtE11w" + }, + "outputs": [], + "source": [ + "data = load_dataset(\"PolyAI/banking77\", split=\"test\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will configure our dataset with two different questions so that we can work with two text classification tasks at the same time. In this case, we will load the original labels of this dataset to make a multi-label classification of the topics mentioned in the request and we will also set up a question to classify the sentiment of the request as either \"positive\", \"neutral\" or \"negative\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KKu2QplpFDgw" + }, + "outputs": [], + "source": [ + "dataset = rg.FeedbackDataset(\n", + " fields=[rg.TextField(name=\"text\")],\n", + " questions=[\n", + " rg.MultiLabelQuestion(\n", + " name=\"topics\",\n", + " title=\"Select the topic(s) of the request\",\n", + " labels=data.info.features[\n", + " \"label\"\n", + " ].names, # these are the original labels present in the dataset\n", + " visible_labels=10,\n", + " ),\n", + " rg.LabelQuestion(\n", + " name=\"sentiment\",\n", + " title=\"What is the sentiment of the message?\",\n", + " labels=[\"positive\", \"neutral\", \"negative\"],\n", + " ),\n", + " ],\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train the models" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will use the data we loaded and the labels and questions we configured for our dataset to train a zero-shot text classification model for each of the questions in our dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def train_model(question_name, template, multi_label=False):\n", + " # build a training dataset that uses the labels of a specific question in our Argilla dataset\n", + " train_dataset = get_templated_dataset(\n", + " candidate_labels=dataset.question_by_name(question_name).labels,\n", + " sample_size=8,\n", + " template=template,\n", + " multi_label=multi_label,\n", + " )\n", + "\n", + " # train a model using the training dataset we just built\n", + " if multi_label:\n", + " model = SetFitModel.from_pretrained(\n", + " \"all-MiniLM-L6-v2\", multi_target_strategy=\"one-vs-rest\"\n", + " )\n", + " else:\n", + " model = SetFitModel.from_pretrained(\"all-MiniLM-L6-v2\")\n", + "\n", + " trainer = SetFitTrainer(model=model, train_dataset=train_dataset)\n", + " trainer.train()\n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 276, + "referenced_widgets": [ + "503d373bd18b4b79a1f694916734d903", + "6e9e5e1ac58945d0926a85c1fd29ab17", + "cc9ccdfefca941e1813258a19afe64ed", + "c2238acd18b844c0bb517d670b76ca5c", + "90eec4e8ae8b42268548588db2fcbf49", + "501d213a24064f998d4d3c45255d02b7", + "3d282336f5c3425386a417866f367007", + "7b96b0a21eba4ad5a4c12534940b3591", + "571fd48c2da8432e8a74e7b318eb6042", + "1d58b40ad6a54c25bd451eda4e7d8069", + "5e0377b4b48c441a8d747ea904c3207b", + "38bfdddef0444c0baf9d29248689f846", + "3f5aed26eeef4182b360085d83ae795d", + "255d62fb39454098ab3701753d8d67d6", + "25f9bca647f44645b85a644f03807095", + "ae7fc579502e46f7861e402580586b28", + "6143886f7acc4591ae5f79ce6f67af4a", + "486c1a817552432c8fb20e59d0a3f079", + "77bd2b1f5e57441ab729c6e517279834", + "bc0c58d9d798437fb1d40277d8777777", + "fa5df54e161e40dbbb21ed96c879444e", + "16993356757e4ee5b7f8042d58c96e17", + "d11aa6a0c8c54481b6cc2c80d1fa0ba1", + "a9ce0af78a2241e697a22229db7840ab", + "ae6ffc6572b54c059196983da4ff2d79", + "980f36d72cfa403aad67e871aecba890", + "5692de58835a466695fcc8f0d5976b74", + "7a12fbf5400a468fbdce4b2b2008eefc", + "04150cf7e9a74a04aafa94d394553630", + "9a7c8861a37b41eba191059546f5dd5d", + "217760080e494d2d9b0582910d121a28", + "f5e35991e6d849eca73282c9c359000a", + "5a06b8d12b494daeb0624f2e39e06e67" + ] }, + "id": "U9TVO355a2np", + "outputId": "7d6b6b60-6f49-4308-a2e6-ac24bf99bf72" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", - "\n", - "1. Install the Argilla client and the required third-party libraries using `pip`:" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "config.json not found in HuggingFace Hub.\n", + "WARNING:huggingface_hub.hub_mixin:config.json not found in HuggingFace Hub.\n", + "model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n" + ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "yN2atS0RE2pF" + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "503d373bd18b4b79a1f694916734d903", + "version_major": 2, + "version_minor": 0 }, - "outputs": [], - "source": [ - "!pip install argilla setfit" + "text/plain": [ + "Generating Training Pairs: 0%| | 0/20 [00:00\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textlabeltopicssentiment
0How do I locate my card?11[{'label': 'activate_my_card', 'score': 0.0127...[{'label': 'positive', 'score': 0.348371499634...
1I still have not received my new card, I order...11[{'label': 'activate_my_card', 'score': 0.0133...[{'label': 'positive', 'score': 0.361745933281...
2I ordered a card but it has not arrived. Help ...11[{'label': 'activate_my_card', 'score': 0.0094...[{'label': 'positive', 'score': 0.346292075496...
3Is there a way to know when my card will arrive?11[{'label': 'activate_my_card', 'score': 0.0150...[{'label': 'positive', 'score': 0.426133716131...
4My card has not arrived yet.11[{'label': 'activate_my_card', 'score': 0.0175...[{'label': 'positive', 'score': 0.389241385165...
\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + "
\n", + " \n", + "
\n", + "\n", + "\n", + "\n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + "
\n", + " \n" + ], + "text/plain": [ + " text label \\\n", + "0 How do I locate my card? 11 \n", + "1 I still have not received my new card, I order... 11 \n", + "2 I ordered a card but it has not arrived. Help ... 11 \n", + "3 Is there a way to know when my card will arrive? 11 \n", + "4 My card has not arrived yet. 11 \n", + "\n", + " topics \\\n", + "0 [{'label': 'activate_my_card', 'score': 0.0127... \n", + "1 [{'label': 'activate_my_card', 'score': 0.0133... \n", + "2 [{'label': 'activate_my_card', 'score': 0.0094... \n", + "3 [{'label': 'activate_my_card', 'score': 0.0150... \n", + "4 [{'label': 'activate_my_card', 'score': 0.0175... \n", + "\n", + " sentiment \n", + "0 [{'label': 'positive', 'score': 0.348371499634... \n", + "1 [{'label': 'positive', 'score': 0.361745933281... \n", + "2 [{'label': 'positive', 'score': 0.346292075496... \n", + "3 [{'label': 'positive', 'score': 0.426133716131... \n", + "4 [{'label': 'positive', 'score': 0.389241385165... " ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.to_pandas().head()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build records and push" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the data and the predictions we have produced, now we can build records that include the suggestions from our models. In the case of the `LabelQuestion` we will use the label that received the highest probability score and for the `MultiLabelQuestion` we will include all labels with a score above a certain threshold. In this case, we decided to go for `2/len(labels)`, but you can experiment with your data and decide to go for a more restrictive or more lenient threshold. \n", + "\n", + ".. hint:: Note that more lenient thresholds (closer or equal to `1/len(labels)`) will suggest more labels and restrictive thresholds (between 2 and 3) will select fewer (or no) labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def add_suggestions(record):\n", + " suggestions = []\n", + "\n", + " # get label with max score for sentiment question\n", + " sentiment = max(record[\"sentiment\"], key=lambda x: x[\"score\"])[\"label\"]\n", + " suggestions.append({\"question_name\": \"sentiment\", \"value\": sentiment})\n", + "\n", + " # get all labels above a threshold for topics questions\n", + " threshold = 2 / len(dataset.question_by_name(\"topics\").labels)\n", + " topics = [\n", + " label[\"label\"] for label in record[\"topics\"] if label[\"score\"] >= threshold\n", + " ]\n", + " # apply the suggestion only if at least one label was over the threshold\n", + " if topics:\n", + " suggestions.append({\"question_name\": \"topics\", \"value\": topics})\n", + " return suggestions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "S0I4lkIWqmin" + }, + "outputs": [], + "source": [ + "records = [\n", + " rg.FeedbackRecord(\n", + " fields={\"text\": record[\"text\"]}, suggestions=add_suggestions(record)\n", + " )\n", + " for record in data\n", + "]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we are happy with the result, we can add the records to the dataset that we configured above, push it to Argilla and start annotating." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CvVgNhQSibLM" + }, + "outputs": [], + "source": [ + "dataset.add_records(records)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "l2pdzhuspBA_", + "outputId": "a296c87f-35a3-4476-8ed1-56e1f053a953" + }, + "outputs": [ { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, we will load a popular open-source dataset that has customer requests in the banking domain." - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "Pushing records to Argilla...: 100%|██████████| 97/97 [00:21<00:00, 4.58it/s]\n" + ] + } + ], + "source": [ + "dataset.push_to_argilla(\"setfit_tutorial\", workspace=\"admin\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is how the UI will look like with the suggestions from our models:\n", + "![Feedback Task dataset with suggestions made using SetFit](/_static/images/llms/labelling-feedback-setfit/snapshot_setfit_suggestions.png)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "In this tutorial, we have covered how to add suggestions to a Feedback Task dataset using a zero-shot approach with the SetFit library. This will help with the efficiency of the labelling process by lowering the number of decisions and edits that the annotation team must make.\n", + "\n", + "To learn more about SetFit check out these links:\n", + "\n", + "- [More SetFit + Argilla tutorials](../../../tutorials/libraries/setfit.md)\n", + "- [SetFit repo on GitHub](https://github.com/huggingface/setfit)\n", + "- [SetFit documentation](https://huggingface.co/docs/setfit/index)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "argilla", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.8.15" + }, + "vscode": { + "interpreter": { + "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "04150cf7e9a74a04aafa94d394553630": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "0UsoG5OtE11w" - }, - "outputs": [], - "source": [ - "data = load_dataset(\"PolyAI/banking77\", split=\"test\")" - ] + "0447a98b5dfe42c899273b9c37bdadad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will configure our dataset with two different questions so that we can work with two text classification tasks at the same time. In this case, we will load the original labels of this dataset to make a multi-label classification of the topics mentioned in the request and we will also set up a question to classify the sentiment of the request as either \"positive\", \"neutral\" or \"negative\"." - ] + "0c010df989eb497c810a6f960c6ea41b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "KKu2QplpFDgw" - }, - "outputs": [], - "source": [ - "dataset = rg.FeedbackDataset(\n", - " fields = [rg.TextField(name=\"text\")],\n", - " questions = [\n", - " rg.MultiLabelQuestion(\n", - " name=\"topics\",\n", - " title=\"Select the topic(s) of the request\",\n", - " labels=data.info.features['label'].names, #these are the original labels present in the dataset\n", - " visible_labels=10\n", - " ),\n", - " rg.LabelQuestion(\n", - " name=\"sentiment\",\n", - " title=\"What is the sentiment of the message?\",\n", - " labels=[\"positive\", \"neutral\", \"negative\"]\n", - " )\n", - " ]\n", - ")" - ] + "0d7acd8e1a394336aa146e2a442f672c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train the models" - ] + "16993356757e4ee5b7f8042d58c96e17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we will use the data we loaded and the labels and questions we configured for our dataset to train a zero-shot text classification model for each of the questions in our dataset." - ] + "16d42bc00dfe4467a1da86b1d2391d0d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def train_model(question_name, template, multi_label=False):\n", - " # build a training dataset that uses the labels of a specific question in our Argilla dataset\n", - " train_dataset = get_templated_dataset(\n", - " candidate_labels=dataset.question_by_name(question_name).labels,\n", - " sample_size=8,\n", - " template=template,\n", - " multi_label=multi_label\n", - " )\n", - "\n", - " # train a model using the training dataset we just built\n", - " if multi_label:\n", - " model = SetFitModel.from_pretrained(\n", - " \"all-MiniLM-L6-v2\",\n", - " multi_target_strategy=\"one-vs-rest\"\n", - " )\n", - " else:\n", - " model = SetFitModel.from_pretrained(\n", - " \"all-MiniLM-L6-v2\"\n", - " )\n", - "\n", - " trainer = SetFitTrainer(\n", - " model=model,\n", - " train_dataset=train_dataset\n", - " )\n", - " trainer.train()\n", - " return model" - ] + "170a2ee20ab64a9b86db65549a5d4063": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0d7acd8e1a394336aa146e2a442f672c", + "placeholder": "​", + "style": "IPY_MODEL_3e6c2b50b3084d23b575585c288f087e", + "value": "Generating Training Pairs: 100%" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 276, - "referenced_widgets": [ - "503d373bd18b4b79a1f694916734d903", - "6e9e5e1ac58945d0926a85c1fd29ab17", - "cc9ccdfefca941e1813258a19afe64ed", - "c2238acd18b844c0bb517d670b76ca5c", - "90eec4e8ae8b42268548588db2fcbf49", - "501d213a24064f998d4d3c45255d02b7", - "3d282336f5c3425386a417866f367007", - "7b96b0a21eba4ad5a4c12534940b3591", - "571fd48c2da8432e8a74e7b318eb6042", - "1d58b40ad6a54c25bd451eda4e7d8069", - "5e0377b4b48c441a8d747ea904c3207b", - "38bfdddef0444c0baf9d29248689f846", - "3f5aed26eeef4182b360085d83ae795d", - "255d62fb39454098ab3701753d8d67d6", - "25f9bca647f44645b85a644f03807095", - "ae7fc579502e46f7861e402580586b28", - "6143886f7acc4591ae5f79ce6f67af4a", - "486c1a817552432c8fb20e59d0a3f079", - "77bd2b1f5e57441ab729c6e517279834", - "bc0c58d9d798437fb1d40277d8777777", - "fa5df54e161e40dbbb21ed96c879444e", - "16993356757e4ee5b7f8042d58c96e17", - "d11aa6a0c8c54481b6cc2c80d1fa0ba1", - "a9ce0af78a2241e697a22229db7840ab", - "ae6ffc6572b54c059196983da4ff2d79", - "980f36d72cfa403aad67e871aecba890", - "5692de58835a466695fcc8f0d5976b74", - "7a12fbf5400a468fbdce4b2b2008eefc", - "04150cf7e9a74a04aafa94d394553630", - "9a7c8861a37b41eba191059546f5dd5d", - "217760080e494d2d9b0582910d121a28", - "f5e35991e6d849eca73282c9c359000a", - "5a06b8d12b494daeb0624f2e39e06e67" - ] - }, - "id": "U9TVO355a2np", - "outputId": "7d6b6b60-6f49-4308-a2e6-ac24bf99bf72" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "config.json not found in HuggingFace Hub.\n", - "WARNING:huggingface_hub.hub_mixin:config.json not found in HuggingFace Hub.\n", - "model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "503d373bd18b4b79a1f694916734d903", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Generating Training Pairs: 0%| | 0/20 [00:00\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
textlabeltopicssentiment
0How do I locate my card?11[{'label': 'activate_my_card', 'score': 0.0127...[{'label': 'positive', 'score': 0.348371499634...
1I still have not received my new card, I order...11[{'label': 'activate_my_card', 'score': 0.0133...[{'label': 'positive', 'score': 0.361745933281...
2I ordered a card but it has not arrived. Help ...11[{'label': 'activate_my_card', 'score': 0.0094...[{'label': 'positive', 'score': 0.346292075496...
3Is there a way to know when my card will arrive?11[{'label': 'activate_my_card', 'score': 0.0150...[{'label': 'positive', 'score': 0.426133716131...
4My card has not arrived yet.11[{'label': 'activate_my_card', 'score': 0.0175...[{'label': 'positive', 'score': 0.389241385165...
\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - "
\n", - " \n", - "
\n", - "\n", - "\n", - "\n", - " \n", - "\n", - " \n", - " \n", - "\n", - " \n", - "
\n", - " \n" - ], - "text/plain": [ - " text label \\\n", - "0 How do I locate my card? 11 \n", - "1 I still have not received my new card, I order... 11 \n", - "2 I ordered a card but it has not arrived. Help ... 11 \n", - "3 Is there a way to know when my card will arrive? 11 \n", - "4 My card has not arrived yet. 11 \n", - "\n", - " topics \\\n", - "0 [{'label': 'activate_my_card', 'score': 0.0127... \n", - "1 [{'label': 'activate_my_card', 'score': 0.0133... \n", - "2 [{'label': 'activate_my_card', 'score': 0.0094... \n", - "3 [{'label': 'activate_my_card', 'score': 0.0150... \n", - "4 [{'label': 'activate_my_card', 'score': 0.0175... \n", - "\n", - " sentiment \n", - "0 [{'label': 'positive', 'score': 0.348371499634... \n", - "1 [{'label': 'positive', 'score': 0.361745933281... \n", - "2 [{'label': 'positive', 'score': 0.346292075496... \n", - "3 [{'label': 'positive', 'score': 0.426133716131... \n", - "4 [{'label': 'positive', 'score': 0.389241385165... " - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } + "5692de58835a466695fcc8f0d5976b74": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "571fd48c2da8432e8a74e7b318eb6042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5a06b8d12b494daeb0624f2e39e06e67": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5cc0f7cc30ae4aa4b13966a773e4c824": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5e0377b4b48c441a8d747ea904c3207b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6143886f7acc4591ae5f79ce6f67af4a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "621bb7d632814cb0839755ca56098d7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "668593b82ae54d3cbaf1a19c0307c545": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6e9e5e1ac58945d0926a85c1fd29ab17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_501d213a24064f998d4d3c45255d02b7", + "placeholder": "​", + "style": "IPY_MODEL_3d282336f5c3425386a417866f367007", + "value": "Generating Training Pairs: 100%" + } + }, + "70a57ad580f847d3bd3123cfe1539305": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "750011ef09534e55bab5180974bcf5d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "77bd2b1f5e57441ab729c6e517279834": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "783115bacdbf4c0bb09c0b1fc7976d28": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_242f97eb0f0d4ab1830c62686127b717", + "IPY_MODEL_bfecbc09a4f84f3db51903d5048ff825", + "IPY_MODEL_db7cf4427ad746cd86df88f7a1016bc9" ], - "source": [ - "data.to_pandas().head()" - ] + "layout": "IPY_MODEL_668593b82ae54d3cbaf1a19c0307c545" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Build records and push" - ] + "7a12fbf5400a468fbdce4b2b2008eefc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the data and the predictions we have produced, now we can build records that include the suggestions from our models. In the case of the `LabelQuestion` we will use the label that received the highest probability score and for the `MultiLabelQuestion` we will include all labels with a score above a certain threshold. In this case, we decided to go for `2/len(labels)`, but you can experiment with your data and decide to go for a more restrictive or more lenient threshold. \n", - "\n", - ".. hint:: Note that more lenient thresholds (closer or equal to `1/len(labels)`) will suggest more labels and restrictive thresholds (between 2 and 3) will select fewer (or no) labels." - ] + "7b96b0a21eba4ad5a4c12534940b3591": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def add_suggestions(record):\n", - " suggestions = []\n", - " \n", - " # get label with max score for sentiment question\n", - " sentiment = max(record['sentiment'], key=lambda x: x['score'])['label']\n", - " suggestions.append({\"question_name\": \"sentiment\", \"value\": sentiment})\n", - "\n", - " # get all labels above a threshold for topics questions\n", - " threshold = 2 / len(dataset.question_by_name(\"topics\").labels)\n", - " topics = [label['label'] for label in record['topics'] if label['score'] >= threshold]\n", - " # apply the suggestion only if at least one label was over the threshold\n", - " if topics:\n", - " suggestions.append({\"question_name\": \"topics\", \"value\": topics})\n", - " return suggestions" - ] + "7ca015b6798947d58d275de6181fe053": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "S0I4lkIWqmin" - }, - "outputs": [], - "source": [ - "records = [\n", - " rg.FeedbackRecord(fields={\"text\": record['text']}, suggestions=add_suggestions(record))\n", - " for record in data\n", - "]" - ] + "90eec4e8ae8b42268548588db2fcbf49": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once we are happy with the result, we can add the records to the dataset that we configured above, push it to Argilla and start annotating." - ] + "980f36d72cfa403aad67e871aecba890": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f5e35991e6d849eca73282c9c359000a", + "placeholder": "​", + "style": "IPY_MODEL_5a06b8d12b494daeb0624f2e39e06e67", + "value": " 1540/1540 [01:28<00:00, 21.45it/s]" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "CvVgNhQSibLM" - }, - "outputs": [], - "source": [ - "dataset.add_records(records)" - ] + "9a7c8861a37b41eba191059546f5dd5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "l2pdzhuspBA_", - "outputId": "a296c87f-35a3-4476-8ed1-56e1f053a953" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Pushing records to Argilla...: 100%|██████████| 97/97 [00:21<00:00, 4.58it/s]\n" - ] - } + "a9ce0af78a2241e697a22229db7840ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7a12fbf5400a468fbdce4b2b2008eefc", + "placeholder": "​", + "style": "IPY_MODEL_04150cf7e9a74a04aafa94d394553630", + "value": "Iteration: 100%" + } + }, + "ae6ffc6572b54c059196983da4ff2d79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9a7c8861a37b41eba191059546f5dd5d", + "max": 1540, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_217760080e494d2d9b0582910d121a28", + "value": 1540 + } + }, + "ae7fc579502e46f7861e402580586b28": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc0c58d9d798437fb1d40277d8777777": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bfecbc09a4f84f3db51903d5048ff825": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5cc0f7cc30ae4aa4b13966a773e4c824", + "max": 60, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_28c40914eac34bcba0c9eb4dac6b0032", + "value": 60 + } + }, + "c21e90a6dda643d8bd82abf4e346d45c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_170a2ee20ab64a9b86db65549a5d4063", + "IPY_MODEL_fd7c2acc4b1945feabe6715dd270cb72", + "IPY_MODEL_2f271b0778974646aaff691227336e91" ], - "source": [ - "dataset.push_to_argilla(\"setfit_tutorial\", workspace=\"admin\")" - ] + "layout": "IPY_MODEL_ef245777ac3d435e8715fc55b1d4824c" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is how the UI will look like with the suggestions from our models:\n", - "![Feedback Task dataset with suggestions made using SetFit](/_static/images/llms/labelling-feedback-setfit/snapshot_setfit_suggestions.png)" - ] + "c2238acd18b844c0bb517d670b76ca5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1d58b40ad6a54c25bd451eda4e7d8069", + "placeholder": "​", + "style": "IPY_MODEL_5e0377b4b48c441a8d747ea904c3207b", + "value": " 20/20 [00:01<00:00, 10.96it/s]" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "In this tutorial, we have covered how to add suggestions to a Feedback Task dataset using a zero-shot approach with the SetFit library. This will help with the efficiency of the labelling process by lowering the number of decisions and edits that the annotation team must make.\n", - "\n", - "To learn more about SetFit check out these links:\n", - "\n", - "- [More SetFit + Argilla tutorials](../../../tutorials/libraries/setfit.md)\n", - "- [SetFit repo on GitHub](https://github.com/huggingface/setfit)\n", - "- [SetFit documentation](https://huggingface.co/docs/setfit/index)" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "gpuType": "T4", - "provenance": [] - }, - "kernelspec": { - "display_name": "argilla", - "language": "python", - "name": "python3" - }, - "language_info": { - "name": "python", - "version": "3.8.15" - }, - "vscode": { - "interpreter": { - "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" - } - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "04150cf7e9a74a04aafa94d394553630": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0447a98b5dfe42c899273b9c37bdadad": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0c010df989eb497c810a6f960c6ea41b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "0d7acd8e1a394336aa146e2a442f672c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "16993356757e4ee5b7f8042d58c96e17": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "16d42bc00dfe4467a1da86b1d2391d0d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "170a2ee20ab64a9b86db65549a5d4063": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0d7acd8e1a394336aa146e2a442f672c", - "placeholder": "​", - "style": "IPY_MODEL_3e6c2b50b3084d23b575585c288f087e", - "value": "Generating Training Pairs: 100%" - } - }, - "186f82d150994ac7914d0646fb5ff425": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1d58b40ad6a54c25bd451eda4e7d8069": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1ff157a9c8974b07ae97cb115c8d0188": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "217760080e494d2d9b0582910d121a28": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "242f97eb0f0d4ab1830c62686127b717": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5057f8b8144d41ff9d8b82b8602570fc", - "placeholder": "​", - "style": "IPY_MODEL_369bc409052a48f7ac2182715406abef", - "value": "Iteration: 100%" - } - }, - "255d62fb39454098ab3701753d8d67d6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_77bd2b1f5e57441ab729c6e517279834", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_bc0c58d9d798437fb1d40277d8777777", - "value": 1 - } - }, - "25f9bca647f44645b85a644f03807095": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fa5df54e161e40dbbb21ed96c879444e", - "placeholder": "​", - "style": "IPY_MODEL_16993356757e4ee5b7f8042d58c96e17", - "value": " 1/1 [01:28<00:00, 88.63s/it]" - } - }, - "28c40914eac34bcba0c9eb4dac6b0032": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "2f271b0778974646aaff691227336e91": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_16d42bc00dfe4467a1da86b1d2391d0d", - "placeholder": "​", - "style": "IPY_MODEL_0447a98b5dfe42c899273b9c37bdadad", - "value": " 20/20 [00:00<00:00, 391.01it/s]" - } - }, - "369bc409052a48f7ac2182715406abef": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "36b99521f8274a639abb90eb0040d6c0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_70a57ad580f847d3bd3123cfe1539305", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0c010df989eb497c810a6f960c6ea41b", - "value": 1 - } - }, - "379907416f504f05906454e482da2eaf": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "38bfdddef0444c0baf9d29248689f846": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_3f5aed26eeef4182b360085d83ae795d", - "IPY_MODEL_255d62fb39454098ab3701753d8d67d6", - "IPY_MODEL_25f9bca647f44645b85a644f03807095" - ], - "layout": "IPY_MODEL_ae7fc579502e46f7861e402580586b28" - } - }, - "3d282336f5c3425386a417866f367007": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3e622eeea5df47d6a21e015f3e742fa8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3e6c2b50b3084d23b575585c288f087e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3f5aed26eeef4182b360085d83ae795d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_6143886f7acc4591ae5f79ce6f67af4a", - "placeholder": "​", - "style": "IPY_MODEL_486c1a817552432c8fb20e59d0a3f079", - "value": "Epoch: 100%" - } - }, - "3fd94ef662db4fff9dde61455b41faf1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_186f82d150994ac7914d0646fb5ff425", - "placeholder": "​", - "style": "IPY_MODEL_379907416f504f05906454e482da2eaf", - "value": " 1/1 [00:02<00:00, 2.63s/it]" - } - }, - "411de4b297fe4a09acb70951c9f36b82": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c2eac9934f5b407c8e424ee2da9eea58", - "IPY_MODEL_36b99521f8274a639abb90eb0040d6c0", - "IPY_MODEL_3fd94ef662db4fff9dde61455b41faf1" - ], - "layout": "IPY_MODEL_d6283b2cf69d45f694633ae1544d47a8" - } - }, - "486c1a817552432c8fb20e59d0a3f079": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "501d213a24064f998d4d3c45255d02b7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "503d373bd18b4b79a1f694916734d903": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_6e9e5e1ac58945d0926a85c1fd29ab17", - "IPY_MODEL_cc9ccdfefca941e1813258a19afe64ed", - "IPY_MODEL_c2238acd18b844c0bb517d670b76ca5c" - ], - "layout": "IPY_MODEL_90eec4e8ae8b42268548588db2fcbf49" - } - }, - "5057f8b8144d41ff9d8b82b8602570fc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5692de58835a466695fcc8f0d5976b74": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "571fd48c2da8432e8a74e7b318eb6042": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "5a06b8d12b494daeb0624f2e39e06e67": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5cc0f7cc30ae4aa4b13966a773e4c824": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5e0377b4b48c441a8d747ea904c3207b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "6143886f7acc4591ae5f79ce6f67af4a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "621bb7d632814cb0839755ca56098d7a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "668593b82ae54d3cbaf1a19c0307c545": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6e9e5e1ac58945d0926a85c1fd29ab17": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_501d213a24064f998d4d3c45255d02b7", - "placeholder": "​", - "style": "IPY_MODEL_3d282336f5c3425386a417866f367007", - "value": "Generating Training Pairs: 100%" - } - }, - "70a57ad580f847d3bd3123cfe1539305": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "750011ef09534e55bab5180974bcf5d4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "77bd2b1f5e57441ab729c6e517279834": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "783115bacdbf4c0bb09c0b1fc7976d28": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_242f97eb0f0d4ab1830c62686127b717", - "IPY_MODEL_bfecbc09a4f84f3db51903d5048ff825", - "IPY_MODEL_db7cf4427ad746cd86df88f7a1016bc9" - ], - "layout": "IPY_MODEL_668593b82ae54d3cbaf1a19c0307c545" - } - }, - "7a12fbf5400a468fbdce4b2b2008eefc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7b96b0a21eba4ad5a4c12534940b3591": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7ca015b6798947d58d275de6181fe053": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "90eec4e8ae8b42268548588db2fcbf49": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "980f36d72cfa403aad67e871aecba890": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f5e35991e6d849eca73282c9c359000a", - "placeholder": "​", - "style": "IPY_MODEL_5a06b8d12b494daeb0624f2e39e06e67", - "value": " 1540/1540 [01:28<00:00, 21.45it/s]" - } - }, - "9a7c8861a37b41eba191059546f5dd5d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a9ce0af78a2241e697a22229db7840ab": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7a12fbf5400a468fbdce4b2b2008eefc", - "placeholder": "​", - "style": "IPY_MODEL_04150cf7e9a74a04aafa94d394553630", - "value": "Iteration: 100%" - } - }, - "ae6ffc6572b54c059196983da4ff2d79": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9a7c8861a37b41eba191059546f5dd5d", - "max": 1540, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_217760080e494d2d9b0582910d121a28", - "value": 1540 - } - }, - "ae7fc579502e46f7861e402580586b28": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bc0c58d9d798437fb1d40277d8777777": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "bfecbc09a4f84f3db51903d5048ff825": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5cc0f7cc30ae4aa4b13966a773e4c824", - "max": 60, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_28c40914eac34bcba0c9eb4dac6b0032", - "value": 60 - } - }, - "c21e90a6dda643d8bd82abf4e346d45c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_170a2ee20ab64a9b86db65549a5d4063", - "IPY_MODEL_fd7c2acc4b1945feabe6715dd270cb72", - "IPY_MODEL_2f271b0778974646aaff691227336e91" - ], - "layout": "IPY_MODEL_ef245777ac3d435e8715fc55b1d4824c" - } - }, - "c2238acd18b844c0bb517d670b76ca5c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1d58b40ad6a54c25bd451eda4e7d8069", - "placeholder": "​", - "style": "IPY_MODEL_5e0377b4b48c441a8d747ea904c3207b", - "value": " 20/20 [00:01<00:00, 10.96it/s]" - } - }, - "c2eac9934f5b407c8e424ee2da9eea58": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7ca015b6798947d58d275de6181fe053", - "placeholder": "​", - "style": "IPY_MODEL_750011ef09534e55bab5180974bcf5d4", - "value": "Epoch: 100%" - } - }, - "cc9ccdfefca941e1813258a19afe64ed": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7b96b0a21eba4ad5a4c12534940b3591", - "max": 20, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_571fd48c2da8432e8a74e7b318eb6042", - "value": 20 - } - }, - "d11aa6a0c8c54481b6cc2c80d1fa0ba1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_a9ce0af78a2241e697a22229db7840ab", - "IPY_MODEL_ae6ffc6572b54c059196983da4ff2d79", - "IPY_MODEL_980f36d72cfa403aad67e871aecba890" - ], - "layout": "IPY_MODEL_5692de58835a466695fcc8f0d5976b74" - } - }, - "d6283b2cf69d45f694633ae1544d47a8": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "db7cf4427ad746cd86df88f7a1016bc9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3e622eeea5df47d6a21e015f3e742fa8", - "placeholder": "​", - "style": "IPY_MODEL_621bb7d632814cb0839755ca56098d7a", - "value": " 60/60 [00:02<00:00, 23.09it/s]" - } - }, - "ef245777ac3d435e8715fc55b1d4824c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f5e35991e6d849eca73282c9c359000a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fa5df54e161e40dbbb21ed96c879444e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fd7c2acc4b1945feabe6715dd270cb72": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ff7f98b368c448ea81e4c79fded0be5a", - "max": 20, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_1ff157a9c8974b07ae97cb115c8d0188", - "value": 20 - } - }, - "ff7f98b368c448ea81e4c79fded0be5a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } + "c2eac9934f5b407c8e424ee2da9eea58": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7ca015b6798947d58d275de6181fe053", + "placeholder": "​", + "style": "IPY_MODEL_750011ef09534e55bab5180974bcf5d4", + "value": "Epoch: 100%" + } + }, + "cc9ccdfefca941e1813258a19afe64ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7b96b0a21eba4ad5a4c12534940b3591", + "max": 20, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_571fd48c2da8432e8a74e7b318eb6042", + "value": 20 + } + }, + "d11aa6a0c8c54481b6cc2c80d1fa0ba1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a9ce0af78a2241e697a22229db7840ab", + "IPY_MODEL_ae6ffc6572b54c059196983da4ff2d79", + "IPY_MODEL_980f36d72cfa403aad67e871aecba890" + ], + "layout": "IPY_MODEL_5692de58835a466695fcc8f0d5976b74" + } + }, + "d6283b2cf69d45f694633ae1544d47a8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "db7cf4427ad746cd86df88f7a1016bc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3e622eeea5df47d6a21e015f3e742fa8", + "placeholder": "​", + "style": "IPY_MODEL_621bb7d632814cb0839755ca56098d7a", + "value": " 60/60 [00:02<00:00, 23.09it/s]" + } + }, + "ef245777ac3d435e8715fc55b1d4824c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f5e35991e6d849eca73282c9c359000a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fa5df54e161e40dbbb21ed96c879444e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fd7c2acc4b1945feabe6715dd270cb72": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ff7f98b368c448ea81e4c79fded0be5a", + "max": 20, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1ff157a9c8974b07ae97cb115c8d0188", + "value": 20 + } + }, + "ff7f98b368c448ea81e4c79fded0be5a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-spacy-llm.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-spacy-llm.ipynb index 85f99da90e..2db47be53d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-spacy-llm.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/labelling-spacy-llm.ipynb @@ -108,10 +108,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { @@ -134,7 +131,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -157,9 +154,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -247,8 +247,8 @@ "config = configparser.ConfigParser()\n", "config.read_string(config_string)\n", "\n", - "with open(\"config.cfg\", 'w') as configfile:\n", - " config.write(configfile)" + "with open(\"config.cfg\", \"w\") as configfile:\n", + " config.write(configfile)" ] }, { @@ -299,20 +299,21 @@ "metadata": {}, "outputs": [], "source": [ - "#returns the category with the highest score\n", + "# returns the category with the highest score\n", "def get_textcat_suggestion(doc):\n", - " model_prediction = doc.cats\n", - " return max(model_prediction, key=model_prediction.get)\n", + " model_prediction = doc.cats\n", + " return max(model_prediction, key=model_prediction.get)\n", + "\n", "\n", - "#selects the top N sentences with the highest scores and return combined string\n", + "# selects the top N sentences with the highest scores and return combined string\n", "def get_summarization_suggestion(doc):\n", - " sentence_scores = Counter()\n", - " for sentence in doc.sents:\n", - " for word in sentence:\n", - " sentence_scores[sentence] += 1\n", - " summary_sentences = nlargest(2, sentence_scores, key=sentence_scores.get)\n", - " summary = ' '.join(str(sentence) for sentence in summary_sentences)\n", - " return summary" + " sentence_scores = Counter()\n", + " for sentence in doc.sents:\n", + " for word in sentence:\n", + " sentence_scores[sentence] += 1\n", + " summary_sentences = nlargest(2, sentence_scores, key=sentence_scores.get)\n", + " summary = \" \".join(str(sentence) for sentence in summary_sentences)\n", + " return summary" ] }, { @@ -354,21 +355,16 @@ "outputs": [], "source": [ "dataset = rg.FeedbackDataset(\n", - " fields=[\n", - " rg.TextField(name=\"text\")\n", - " ],\n", + " fields=[rg.TextField(name=\"text\")],\n", " questions=[\n", " rg.LabelQuestion(\n", " name=\"label-question\",\n", " title=\"Classify the text category.\",\n", - " #make sure that the labels are in line with the labels we have defined in config.cfg\n", - " labels=[\"HISTORY\",\"MUSIC\",\"TECHNOLOGY\",\"SCIENCE\",\"SPORTS\",\"POLITICS\"]\n", + " # make sure that the labels are in line with the labels we have defined in config.cfg\n", + " labels=[\"HISTORY\", \"MUSIC\", \"TECHNOLOGY\", \"SCIENCE\", \"SPORTS\", \"POLITICS\"],\n", " ),\n", - " rg.TextQuestion(\n", - " name=\"text-question\",\n", - " title=\"Provide a summary for the text.\"\n", - " )\n", - " ]\n", + " rg.TextQuestion(name=\"text-question\", title=\"Provide a summary for the text.\"),\n", + " ],\n", ")" ] }, @@ -387,16 +383,16 @@ "source": [ "records = [\n", " rg.FeedbackRecord(\n", - " fields={\n", - " \"text\": doc.text\n", - " },\n", + " fields={\"text\": doc.text},\n", " suggestions=[\n", - " {\"question_name\": \"label-question\",\n", - " \"value\": get_textcat_suggestion(doc)},\n", - " {\"question_name\":\"text-question\",\n", - " \"value\": get_summarization_suggestion(doc)}\n", - " ]\n", - " ) for doc in [nlp(item) for item in dataset_hf[\"context\"]]\n", + " {\"question_name\": \"label-question\", \"value\": get_textcat_suggestion(doc)},\n", + " {\n", + " \"question_name\": \"text-question\",\n", + " \"value\": get_summarization_suggestion(doc),\n", + " },\n", + " ],\n", + " )\n", + " for doc in [nlp(item) for item in dataset_hf[\"context\"]]\n", "]" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/making-most-of-markdown.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/making-most-of-markdown.ipynb index 253f77eeee..3c83033fdd 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/making-most-of-markdown.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/making-most-of-markdown.ipynb @@ -89,7 +89,12 @@ "outputs": [], "source": [ "import argilla as rg\n", - "from argilla.client.feedback.utils import audio_to_html, image_to_html, video_to_html, pdf_to_html\n", + "from argilla.client.feedback.utils import (\n", + " audio_to_html,\n", + " image_to_html,\n", + " video_to_html,\n", + " pdf_to_html,\n", + ")\n", "\n", "import re\n", "import os\n", @@ -124,11 +129,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -151,7 +152,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -187,11 +188,11 @@ "outputs": [], "source": [ "# Load the custom pipeline\n", - "nlp = spacy.load(\n", - " \"en_core_web_sm\", \n", - " exclude=[\"ner\"]\n", - ")\n", - "nlp.add_pipe(\"span_marker\", config={\"model\": \"tomaarsen/span-marker-bert-tiny-fewnerd-coarse-super\"})" + "nlp = spacy.load(\"en_core_web_sm\", exclude=[\"ner\"])\n", + "nlp.add_pipe(\n", + " \"span_marker\",\n", + " config={\"model\": \"tomaarsen/span-marker-bert-tiny-fewnerd-coarse-super\"},\n", + ")" ] }, { @@ -427,16 +428,34 @@ "# Create the FeedbackDataset configuration\n", "dataset_spacy = rg.FeedbackDataset(\n", " fields=[\n", - " rg.TextField(name=\"text\", required= True, use_markdown=True),\n", - " rg.TextField(name=\"dependency-tree\", required= True, use_markdown=True),\n", - " rg.TextField(name=\"entities\", required= True, use_markdown=True)\n", + " rg.TextField(name=\"text\", required=True, use_markdown=True),\n", + " rg.TextField(name=\"dependency-tree\", required=True, use_markdown=True),\n", + " rg.TextField(name=\"entities\", required=True, use_markdown=True),\n", " ],\n", " questions=[\n", - " rg.LabelQuestion(name=\"relevant\", title=\"Is the text relevant?\", labels=[\"Yes\", \"No\"], required=True),\n", - " rg.MultiLabelQuestion(name=\"question-multi\", title=\"Mark which is correct\", labels=[\"flag-pos\", \"flag-ner\"], required=True),\n", - " rg.TextQuestion(name=\"dependency-correction\", title=\"Write the correct answer if needed\", use_markdown=True),\n", - " rg.TextQuestion(name=\"ner-correction\", title=\"Write the correct answer if needed\", use_markdown=True)\n", - " ]\n", + " rg.LabelQuestion(\n", + " name=\"relevant\",\n", + " title=\"Is the text relevant?\",\n", + " labels=[\"Yes\", \"No\"],\n", + " required=True,\n", + " ),\n", + " rg.MultiLabelQuestion(\n", + " name=\"question-multi\",\n", + " title=\"Mark which is correct\",\n", + " labels=[\"flag-pos\", \"flag-ner\"],\n", + " required=True,\n", + " ),\n", + " rg.TextQuestion(\n", + " name=\"dependency-correction\",\n", + " title=\"Write the correct answer if needed\",\n", + " use_markdown=True,\n", + " ),\n", + " rg.TextQuestion(\n", + " name=\"ner-correction\",\n", + " title=\"Write the correct answer if needed\",\n", + " use_markdown=True,\n", + " ),\n", + " ],\n", ")\n", "dataset_spacy" ] @@ -472,11 +491,11 @@ "outputs": [], "source": [ "# Load the custom pipeline\n", - "nlp = spacy.load(\n", - " \"en_core_web_sm\", \n", - " exclude=[\"ner\"]\n", + "nlp = spacy.load(\"en_core_web_sm\", exclude=[\"ner\"])\n", + "nlp.add_pipe(\n", + " \"span_marker\",\n", + " config={\"model\": \"tomaarsen/span-marker-bert-tiny-fewnerd-coarse-super\"},\n", ")\n", - "nlp.add_pipe(\"span_marker\", config={\"model\": \"tomaarsen/span-marker-bert-tiny-fewnerd-coarse-super\"})\n", "\n", "# Read the dataset and run the pipeline\n", "texts = [\" \".join(x[\"tokens\"]) for x in dataset_fewnerd]\n", @@ -492,11 +511,11 @@ "# Define the function to set the correct width and height of the SVG element\n", "def wrap_in_max_width(html):\n", " html = html.replace(\"max-width: none;\", \"\")\n", - " \n", + "\n", " # Remove existing width and height setting based on regex width=\"/d\"\n", " html = re.sub(r\"width=\\\"\\d+\\\"\", \"overflow-x: auto;\", html)\n", " html = re.sub(r\"height=\\\"\\d+\\\"\", \"\", html)\n", - " \n", + "\n", " # Find the SVG element in the HTML output\n", " svg_start = html.find(\"\") + len(\"\")\n", @@ -520,23 +539,27 @@ "for doc in docs:\n", " record = rg.FeedbackRecord(\n", " fields={\n", - " \"text\": doc.text, \n", - " \"dependency-tree\": displacy.render(doc, style=\"dep\", jupyter=False), \n", - " \"entities\": displacy.render(doc, style=\"ent\", jupyter=False)\n", + " \"text\": doc.text,\n", + " \"dependency-tree\": displacy.render(doc, style=\"dep\", jupyter=False),\n", + " \"entities\": displacy.render(doc, style=\"ent\", jupyter=False),\n", " },\n", - " suggestions=[{\n", - " \"question_name\": \"dependency-correction\", \n", - " \"value\": pd.DataFrame([{\"Label\": token.dep_, \"Text\": token.text} for token in doc]).to_markdown(index=False)\n", - "\n", + " suggestions=[\n", + " {\n", + " \"question_name\": \"dependency-correction\",\n", + " \"value\": pd.DataFrame(\n", + " [{\"Label\": token.dep_, \"Text\": token.text} for token in doc]\n", + " ).to_markdown(index=False),\n", " },\n", " {\n", - " \"question_name\": \"ner-correction\", \n", - " \"value\": pd.DataFrame([{\"Label\": ent.label_, \"Text\": ent.text} for ent in doc.ents]).to_markdown(index=False),\n", - " }\n", - " ]\n", + " \"question_name\": \"ner-correction\",\n", + " \"value\": pd.DataFrame(\n", + " [{\"Label\": ent.label_, \"Text\": ent.text} for ent in doc.ents]\n", + " ).to_markdown(index=False),\n", + " },\n", + " ],\n", " )\n", " records.append(record)\n", - " \n", + "\n", "dataset_spacy.add_records(records)" ] }, @@ -547,7 +570,9 @@ "outputs": [], "source": [ "# Push the dataset to Argilla\n", - "dataset_spacy = dataset_spacy.push_to_argilla(name=\"exploiting_displacy\", workspace=\"admin\")" + "dataset_spacy = dataset_spacy.push_to_argilla(\n", + " name=\"exploiting_displacy\", workspace=\"admin\"\n", + ")" ] }, { @@ -602,7 +627,14 @@ "# Configure the FeedbackDataset\n", "ds_multi_modal = rg.FeedbackDataset(\n", " fields=[rg.TextField(name=\"content\", use_markdown=True, required=True)],\n", - " questions=[rg.TextQuestion(name=\"description\", title=\"Describe the content of the media:\", use_markdown=True, required=True)],\n", + " questions=[\n", + " rg.TextQuestion(\n", + " name=\"description\",\n", + " title=\"Describe the content of the media:\",\n", + " use_markdown=True,\n", + " required=True,\n", + " )\n", + " ],\n", ")\n", "ds_multi_modal" ] @@ -622,9 +654,17 @@ "source": [ "# Add the records\n", "records = [\n", - " rg.FeedbackRecord(fields={\"content\": video_to_html(\"/content/snapshot.mp4\", autoplay=True)}),\n", - " rg.FeedbackRecord(fields={\"content\": audio_to_html(\"/content/sea.wav\", autoplay=True, loop=True)}),\n", - " rg.FeedbackRecord(fields={\"content\": image_to_html(\"/content/peacock.jpg\", width=\"50%\", height=\"50%\")}),\n", + " rg.FeedbackRecord(\n", + " fields={\"content\": video_to_html(\"/content/snapshot.mp4\", autoplay=True)}\n", + " ),\n", + " rg.FeedbackRecord(\n", + " fields={\"content\": audio_to_html(\"/content/sea.wav\", autoplay=True, loop=True)}\n", + " ),\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"content\": image_to_html(\"/content/peacock.jpg\", width=\"50%\", height=\"50%\")\n", + " }\n", + " ),\n", "]\n", "ds_multi_modal.add_records(records)" ] @@ -706,24 +746,24 @@ " questions=[\n", " rg.TextQuestion(\n", " name=\"description\",\n", - " title=\"Describe the content of the media.\", \n", - " use_markdown=True, \n", - " required=True\n", + " title=\"Describe the content of the media.\",\n", + " use_markdown=True,\n", + " required=True,\n", " ),\n", " rg.RatingQuestion(\n", " name=\"quality\",\n", " description=\"Rate the overall quality of the content on a scale from 1 to 5.\",\n", " required=True,\n", - " values=[1, 2, 3, 4, 5]\n", + " values=[1, 2, 3, 4, 5],\n", " ),\n", " rg.LabelQuestion(\n", " name=\"age_group\",\n", " description=\"Select the most appropriate age group for this content.\",\n", " required=True,\n", - " labels = [\"Children\", \"Teens\", \"Adults\", \"All Ages\"]\n", + " labels=[\"Children\", \"Teens\", \"Adults\", \"All Ages\"],\n", " ),\n", " ],\n", - " metadata_properties = [\n", + " metadata_properties=[\n", " rg.TermsMetadataProperty(\n", " name=\"groups\",\n", " title=\"Annotation groups\",\n", @@ -739,7 +779,7 @@ " title=\"Original dataset source\",\n", " ),\n", " ],\n", - " allow_extra_metadata = False\n", + " allow_extra_metadata=False,\n", ")\n", "\n", "try:\n", @@ -773,7 +813,9 @@ "# Download the dataset\n", "hf_dataset_identifier = \"sayakpaul/ucf101-subset\"\n", "filename = \"UCF101_subset.tar.gz\"\n", - "file_path = hf_hub_download(repo_id=hf_dataset_identifier, filename=filename, repo_type=\"dataset\")" + "file_path = hf_hub_download(\n", + " repo_id=hf_dataset_identifier, filename=filename, repo_type=\"dataset\"\n", + ")" ] }, { @@ -784,7 +826,7 @@ "source": [ "# Unpack the files\n", "with tarfile.open(file_path) as t:\n", - " t.extractall(\".\")" + " t.extractall(\".\")" ] }, { @@ -804,22 +846,24 @@ "# Iterate over the directories (each corresponding to a class) in the 'train' folder.\n", "for folder in os.listdir(base_directory):\n", " folder_path = os.path.join(base_directory, folder)\n", - " \n", + "\n", " # Check if it's a directory.\n", " if os.path.isdir(folder_path):\n", " # Get all .avi files in the directory.\n", " avi_files = glob.glob(os.path.join(folder_path, \"*.avi\"))\n", - " \n", + "\n", " # Randomly select 2 .avi files.\n", " selected_files = random.sample(avi_files, 2)\n", - " \n", + "\n", " for avi_file in selected_files:\n", " # Define the output .mp4 file path.\n", - " mp4_file = os.path.join(output_directory, os.path.basename(avi_file).replace(\".avi\", \".mp4\"))\n", - " \n", + " mp4_file = os.path.join(\n", + " output_directory, os.path.basename(avi_file).replace(\".avi\", \".mp4\")\n", + " )\n", + "\n", " # Command to convert .avi to .mp4 using ffmpeg.\n", - " command = f\"ffmpeg -i \\\"{avi_file}\\\" -c:v libx264 -c:a aac \\\"{mp4_file}\\\"\"\n", - " \n", + " command = f'ffmpeg -i \"{avi_file}\" -c:v libx264 -c:a aac \"{mp4_file}\"'\n", + "\n", " try:\n", " subprocess.run(command, check=True, shell=True)\n", " print(f\"Converted {avi_file} to {mp4_file}\")\n", @@ -885,7 +929,7 @@ "metadata": {}, "outputs": [], "source": [ - "my_image_dataset = load_dataset(\"zishuod/pokemon-icons\", split=\"train[:20]\")\n", + "my_image_dataset = load_dataset(\"zishuod/pokemon-icons\", split=\"train[:20]\")\n", "my_image_dataset = my_image_dataset.shuffle()" ] }, @@ -940,14 +984,17 @@ "\n", "# Iterate over all the entries in random order\n", "for entry in entries:\n", - " \n", " # Define the full path\n", " fullPath = os.path.join(random_dir, entry)\n", "\n", " # Add the records to the FeedbackDataset\n", " record = rg.FeedbackRecord(\n", " fields={\"content\": video_to_html(fullPath)},\n", - " metadata={\"groups\":\"group-a\", \"media\":\"video\", \"source-dataset\":\"https://huggingface.co/datasets/sayakpaul/ucf101-subset\"}\n", + " metadata={\n", + " \"groups\": \"group-a\",\n", + " \"media\": \"video\",\n", + " \"source-dataset\": \"https://huggingface.co/datasets/sayakpaul/ucf101-subset\",\n", + " },\n", " )\n", " try:\n", " multi_modal_dataset.add_records(record, show_progress=True)\n", @@ -983,11 +1030,14 @@ "source": [ "# Iterate over the samples in the dataset\n", "for entry in my_audio_dataset:\n", - " \n", " # Add the records to the FeedbackDataset\n", " record = rg.FeedbackRecord(\n", " fields={\"content\": audio_to_html(entry[\"audio\"][\"path\"])},\n", - " metadata={\"groups\":\"group-b\", \"media\":\"audio\", \"source-dataset\":\"https://huggingface.co/datasets/ccmusic-database/bel_folk\"}\n", + " metadata={\n", + " \"groups\": \"group-b\",\n", + " \"media\": \"audio\",\n", + " \"source-dataset\": \"https://huggingface.co/datasets/ccmusic-database/bel_folk\",\n", + " },\n", " )\n", " try:\n", " multi_modal_dataset.add_records(record, show_progress=True)\n", @@ -1027,14 +1077,17 @@ "# Iterate over the samples in the dataset\n", "records = []\n", "for entry in my_image_dataset:\n", - " \n", " # Save the image to the temporary path\n", " entry[\"image\"].save(temp_img_path, format=\"png\")\n", - " \n", + "\n", " # Add the records to the FeedbackDataset\n", " record = rg.FeedbackRecord(\n", " fields={\"content\": image_to_html(temp_img_path, file_type=\"png\")},\n", - " metadata={\"groups\":\"group-c\", \"media\":\"image\", \"source-dataset\":\"https://huggingface.co/datasets/zishuod/pokemon-icons\"}\n", + " metadata={\n", + " \"groups\": \"group-c\",\n", + " \"media\": \"image\",\n", + " \"source-dataset\": \"https://huggingface.co/datasets/zishuod/pokemon-icons\",\n", + " },\n", " )\n", " try:\n", " multi_modal_dataset.add_records(record, show_progress=True)\n", @@ -1100,17 +1153,20 @@ " fields=[\n", " rg.TextField(name=\"content\", use_markdown=True, required=True),\n", " ],\n", - " questions=[\n", - " rg.TextQuestion(name=\"description\", use_markdown=True, required=True)\n", - " ],\n", + " questions=[rg.TextQuestion(name=\"description\", use_markdown=True, required=True)],\n", ")\n", "\n", "# Push the dataset to Argilla\n", - "ds_pdf = ds_pdf.push_to_argilla(name='analyze_pdf_dataset', workspace='argilla')\n", + "ds_pdf = ds_pdf.push_to_argilla(name=\"analyze_pdf_dataset\", workspace=\"argilla\")\n", "\n", "# Add the records using pdf_to_html\n", "records = [\n", - " rg.FeedbackRecord(fields={\"content\": pdf_to_html(file_source=file_url, width=\"700px\", height=\"700px\")})]\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"content\": pdf_to_html(file_source=file_url, width=\"700px\", height=\"700px\")\n", + " }\n", + " )\n", + "]\n", "ds_pdf.add_records(records)" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-bias-ethics-dpo.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-bias-ethics-dpo.ipynb index 32db760440..c036712943 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-bias-ethics-dpo.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-bias-ethics-dpo.ipynb @@ -174,11 +174,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"argilla.apikey\",\n", - " workspace=\"argilla\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"argilla.apikey\", workspace=\"argilla\")" ] }, { @@ -201,7 +197,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -214,7 +210,7 @@ "outputs": [], "source": [ "# Your openAI key is needed for testing the model\n", - "os.environ['OPENAI_API_KEY'] = 'sk-...'\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\"\n", "openai.api_key = os.environ[\"OPENAI_API_KEY\"]" ] }, @@ -235,9 +231,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -268,7 +267,9 @@ "outputs": [], "source": [ "# Indicate the URL to the report\n", - "REPORT_URL = \"https://commission.europa.eu/system/files/2023-01/report-migration-asylum-2022.pdf\"" + "REPORT_URL = (\n", + " \"https://commission.europa.eu/system/files/2023-01/report-migration-asylum-2022.pdf\"\n", + ")" ] }, { @@ -280,16 +281,21 @@ "# Indicate the name of the query column\n", "TEXT_COLUMN_NAME = \"query\"\n", "\n", - "giskard_dataset = Dataset(pd.DataFrame({\n", - " TEXT_COLUMN_NAME: [\n", - " \"According to the migration and asylum report, what are the key challenges in Europe?\",\n", - " \"How can migration influence in Europe?\",\n", - " \"What strategies does the migration and asylum report recommend for managing migration in Europe?\",\n", - " \"What are the main reasons for migration?\",\n", - " \"How does the report assess the effectiveness of current asylum procedures in Europe?\",\n", - " \"How should the cross-border cooperation on migration be improved?\",\n", - " ]\n", - "}), target=None)" + "giskard_dataset = Dataset(\n", + " pd.DataFrame(\n", + " {\n", + " TEXT_COLUMN_NAME: [\n", + " \"According to the migration and asylum report, what are the key challenges in Europe?\",\n", + " \"How can migration influence in Europe?\",\n", + " \"What strategies does the migration and asylum report recommend for managing migration in Europe?\",\n", + " \"What are the main reasons for migration?\",\n", + " \"How does the report assess the effectiveness of current asylum procedures in Europe?\",\n", + " \"How should the cross-border cooperation on migration be improved?\",\n", + " ]\n", + " }\n", + " ),\n", + " target=None,\n", + ")" ] }, { @@ -337,18 +343,27 @@ "source": [ "# Pre-process the report to work as context\n", "context_storage_cache = None\n", + "\n", + "\n", "def get_context_storage() -> FAISS:\n", " global context_storage_cache\n", " if context_storage_cache is None:\n", - " text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100, add_start_index=True)\n", + " text_splitter = RecursiveCharacterTextSplitter(\n", + " chunk_size=1000, chunk_overlap=100, add_start_index=True\n", + " )\n", " docs = PyPDFLoader(REPORT_URL).load_and_split(text_splitter)\n", " context_storage_cache = FAISS.from_documents(docs, OpenAIEmbeddings())\n", " return context_storage_cache\n", "\n", + "\n", "# Create the chain\n", "llm = OpenAI(model=LLM_NAME, temperature=0)\n", - "prompt = PromptTemplate(template=PROMPT_TEMPLATE, input_variables=[\"question\", \"context\"])\n", - "qa_system = RetrievalQA.from_llm(llm=llm, retriever=get_context_storage().as_retriever(), prompt=prompt)" + "prompt = PromptTemplate(\n", + " template=PROMPT_TEMPLATE, input_variables=[\"question\", \"context\"]\n", + ")\n", + "qa_system = RetrievalQA.from_llm(\n", + " llm=llm, retriever=get_context_storage().as_retriever(), prompt=prompt\n", + ")" ] }, { @@ -369,7 +384,9 @@ } ], "source": [ - "qa_system(\"According to the migration and asylum report, what are the key challenges in Europe?\")" + "qa_system(\n", + " \"According to the migration and asylum report, what are the key challenges in Europe?\"\n", + ")" ] }, { @@ -405,13 +422,14 @@ " chain = load_chain(src.joinpath(\"model.json\"), retriever=db.as_retriever())\n", " return chain\n", "\n", + "\n", "# Wrap up the QA chain\n", "giskard_model = FAISSRAGModel(\n", " model=qa_system,\n", " model_type=\"text_generation\",\n", " name=\"Migration and Asylum Question Answering\",\n", " description=\"This model answers questions about migration and asylum in Europe based on the Migration and Asylum Report from the European Commission.\",\n", - " feature_names=[TEXT_COLUMN_NAME]\n", + " feature_names=[TEXT_COLUMN_NAME],\n", ")" ] }, @@ -2349,10 +2367,10 @@ "outputs": [], "source": [ "# Save the results in html\n", - "results.to_html('results.html')\n", + "results.to_html(\"results.html\")\n", "\n", "# Save the results in avidoc\n", - "results.to_avid('results.avidoc')" + "results.to_avid(\"results.avidoc\")" ] }, { @@ -2376,34 +2394,39 @@ "outputs": [], "source": [ "# Indicate the path of the avidoc file\n", - "filename = 'results.avidoc'\n", + "filename = \"results.avidoc\"\n", "\n", "# Read and process the avidoc file\n", "data_list = []\n", - "with open(filename, 'r') as file:\n", + "with open(filename, \"r\") as file:\n", " lines = file.readlines()\n", "\n", " # Note that each test type is saved in a different line\n", " for line in lines:\n", " data = json.loads(line)\n", "\n", - " for metric in data.get('metrics', []):\n", - " for example in metric.get('results', {}).get('examples', []):\n", - " \n", + " for metric in data.get(\"metrics\", []):\n", + " for example in metric.get(\"results\", {}).get(\"examples\", []):\n", " # Check for input_vars query\n", - " text = example.get('input_vars', {}).get('query', '')\n", + " text = example.get(\"input_vars\", {}).get(\"query\", \"\")\n", " if text:\n", - " model_output = example.get('model_output', '')\n", - " data_list.append({'input_question': text, 'model_output': model_output})\n", - " \n", + " model_output = example.get(\"model_output\", \"\")\n", + " data_list.append(\n", + " {\"input_question\": text, \"model_output\": model_output}\n", + " )\n", + "\n", " # Check for input_1 and input_2 queries (Hallucination and Misinformation tab)\n", - " input_1_text = example.get('input_1', {}).get('query', '')\n", - " input_2_text = example.get('input_2', {}).get('query', '')\n", + " input_1_text = example.get(\"input_1\", {}).get(\"query\", \"\")\n", + " input_2_text = example.get(\"input_2\", {}).get(\"query\", \"\")\n", " if input_1_text and input_2_text:\n", - " output_1 = example.get('output_1', '')\n", - " output_2 = example.get('output_2', '')\n", - " data_list.append({'input_question': input_1_text, 'model_output': output_1})\n", - " data_list.append({'input_question': input_2_text, 'model_output': output_2})\n", + " output_1 = example.get(\"output_1\", \"\")\n", + " output_2 = example.get(\"output_2\", \"\")\n", + " data_list.append(\n", + " {\"input_question\": input_1_text, \"model_output\": output_1}\n", + " )\n", + " data_list.append(\n", + " {\"input_question\": input_2_text, \"model_output\": output_2}\n", + " )\n", "\n", "# Create a dataframe with input questions and model outputs\n", "df_data = pd.DataFrame(data_list)" @@ -2511,8 +2534,14 @@ "dataset = rg.FeedbackDataset(\n", " fields=[rg.TextField(name=\"instruction\"), rg.TextField(name=\"response\")],\n", " questions=[\n", - " rg.TextQuestion(name=\"new-instruction\", title=\"Write a helpful, harmless, accurate instruction for the user response\"),\n", - " rg.TextQuestion(name=\"new-response\", title=\"Write a helpful, harmless, accurate response to the user question\"),\n", + " rg.TextQuestion(\n", + " name=\"new-instruction\",\n", + " title=\"Write a helpful, harmless, accurate instruction for the user response\",\n", + " ),\n", + " rg.TextQuestion(\n", + " name=\"new-response\",\n", + " title=\"Write a helpful, harmless, accurate response to the user question\",\n", + " ),\n", " ],\n", ")\n", "dataset = dataset.push_to_argilla(name=\"bias_dataset\", workspace=\"argilla\")" @@ -2527,17 +2556,17 @@ "# Create the records and add them to the dataset\n", "records = [\n", " rg.FeedbackRecord(\n", - " fields={\"instruction\": row['input_question'], \"response\": row['model_output']},\n", - " suggestions = [\n", - " {\n", - " \"question_name\": \"new-instruction\",\n", - " \"value\": row['input_question'],\n", - " },\n", - " {\n", - " \"question_name\": \"new-response\",\n", - " \"value\": row['model_output'],\n", - " }\n", - " ],\n", + " fields={\"instruction\": row[\"input_question\"], \"response\": row[\"model_output\"]},\n", + " suggestions=[\n", + " {\n", + " \"question_name\": \"new-instruction\",\n", + " \"value\": row[\"input_question\"],\n", + " },\n", + " {\n", + " \"question_name\": \"new-response\",\n", + " \"value\": row[\"model_output\"],\n", + " },\n", + " ],\n", " )\n", " for _, row in df_data.iterrows()\n", "]\n", @@ -2616,7 +2645,9 @@ "outputs": [], "source": [ "# Load the annotated dataset\n", - "annotated_dataset = rg.FeedbackDataset.from_argilla(name=\"bias_dataset\", workspace=\"argilla\")" + "annotated_dataset = rg.FeedbackDataset.from_argilla(\n", + " name=\"bias_dataset\", workspace=\"argilla\"\n", + ")" ] }, { @@ -2630,6 +2661,7 @@ "Instruct: {instruction}\\n\n", "Output: {response}\"\"\"\n", "\n", + "\n", "def formatting_func(sample: Dict[str, Any]) -> Iterator[Tuple[str, str]]:\n", " # Our annotators were asked to provide new responses, which we assume are better than the originals\n", " og_instruction = sample[\"instruction\"]\n", @@ -2727,13 +2759,17 @@ "source": [ "compute_dtype = getattr(torch, \"float16\")\n", "bnb_config = BitsAndBytesConfig(\n", - " load_in_4bit=True,\n", - " bnb_4bit_quant_type='nf4',\n", - " bnb_4bit_compute_dtype='float16',\n", - " bnb_4bit_use_double_quant=False,\n", - " )\n", + " load_in_4bit=True,\n", + " bnb_4bit_quant_type=\"nf4\",\n", + " bnb_4bit_compute_dtype=\"float16\",\n", + " bnb_4bit_use_double_quant=False,\n", + ")\n", "model = AutoModelForCausalLM.from_pretrained(\n", - " model_name, torch_dtype=torch.float16, quantization_config=bnb_config, trust_remote_code=True, device_map={\"\": 0}\n", + " model_name,\n", + " torch_dtype=torch.float16,\n", + " quantization_config=bnb_config,\n", + " trust_remote_code=True,\n", + " device_map={\"\": 0},\n", ")\n", "model.config.pad_token_id = tokenizer.pad_token_id\n", "model.config.use_cache = False\n", @@ -2754,13 +2790,17 @@ "outputs": [], "source": [ "bnb_config = BitsAndBytesConfig(\n", - " load_in_4bit=True,\n", - " bnb_4bit_quant_type='nf4',\n", - " bnb_4bit_compute_dtype='float16',\n", - " bnb_4bit_use_double_quant=False,\n", - " )\n", + " load_in_4bit=True,\n", + " bnb_4bit_quant_type=\"nf4\",\n", + " bnb_4bit_compute_dtype=\"float16\",\n", + " bnb_4bit_use_double_quant=False,\n", + ")\n", "model_ref = AutoModelForCausalLM.from_pretrained(\n", - " model_name, quantization_config=bnb_config, torch_dtype=torch.float16, trust_remote_code=True, device_map={\"\": 0}\n", + " model_name,\n", + " quantization_config=bnb_config,\n", + " torch_dtype=torch.float16,\n", + " trust_remote_code=True,\n", + " device_map={\"\": 0},\n", ")" ] }, @@ -2781,7 +2821,7 @@ " lora_alpha=16,\n", " lora_dropout=0.5,\n", " r=32,\n", - " target_modules=['k_proj', 'q_proj', 'v_proj', 'fc1', 'fc2'],\n", + " target_modules=[\"k_proj\", \"q_proj\", \"v_proj\", \"fc1\", \"fc2\"],\n", " bias=\"none\",\n", " task_type=\"CAUSAL_LM\",\n", ")" @@ -2829,7 +2869,7 @@ " logging_steps=10,\n", " learning_rate=1e-5,\n", " eval_steps=20,\n", - " num_train_epochs=1, # Modified for the tutorial purpose\n", + " num_train_epochs=1, # Modified for the tutorial purpose\n", " max_steps=100,\n", " warmup_steps=20,\n", " lr_scheduler_type=\"linear\",\n", diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-data-model-drift.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-data-model-drift.ipynb index 0973bffe53..4092e3327d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-data-model-drift.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/monitoring-data-model-drift.ipynb @@ -154,8 +154,8 @@ "\n", "import ollama\n", "\n", - "nltk.download('punkt')\n", - "nltk.download('stopwords')" + "nltk.download(\"punkt\")\n", + "nltk.download(\"stopwords\")" ] }, { @@ -174,11 +174,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"argilla.apikey\",\n", - " workspace=\"argilla\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"argilla.apikey\", workspace=\"argilla\")" ] }, { @@ -201,7 +197,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -224,9 +220,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -250,7 +249,9 @@ "outputs": [], "source": [ "# Load the dataset\n", - "hf_dataset_games = load_dataset(\"LoganKells/amazon_product_reviews_video_games\", split= \"train[:10000]\")" + "hf_dataset_games = load_dataset(\n", + " \"LoganKells/amazon_product_reviews_video_games\", split=\"train[:10000]\"\n", + ")" ] }, { @@ -368,7 +369,7 @@ "df_games = hf_dataset_games.to_pandas()\n", "\n", "# Convert the UnixReviewTime to a datetime\n", - "df_games['datetime'] = pd.to_datetime(df_games['unixReviewTime'], unit='s')\n", + "df_games[\"datetime\"] = pd.to_datetime(df_games[\"unixReviewTime\"], unit=\"s\")\n", "\n", "# Select the columns we want to keep\n", "df_games = df_games[[\"reviewText\", \"overall\", \"datetime\"]]\n", @@ -401,8 +402,8 @@ "# Divide the dataset into two parts\n", "ref_year = 2005\n", "curr_year = 2010\n", - "df_reference = df_games[df_games['datetime'].dt.year < ref_year]\n", - "df_current = df_games[df_games['datetime'].dt.year >= curr_year]\n", + "df_reference = df_games[df_games[\"datetime\"].dt.year < ref_year]\n", + "df_current = df_games[df_games[\"datetime\"].dt.year >= curr_year]\n", "\n", "print(f\"Reference dataset: {df_reference.shape[0]} reviews\")\n", "print(f\"Current dataset: {df_current.shape[0]} reviews\")" @@ -430,9 +431,10 @@ " guidelines=None,\n", " metadata_properties=[\n", " rg.TermsMetadataProperty(\n", - " name=\"datetime\",\n", - " title=\"Datetime\",\n", - " )],\n", + " name=\"datetime\",\n", + " title=\"Datetime\",\n", + " )\n", + " ],\n", " vectors_settings=None,\n", " )\n", " return dataset" @@ -445,7 +447,13 @@ "outputs": [], "source": [ "# To convert the rating to a label\n", - "id2label = {0.0: \"very-negative\", 1.0: \"negative\", 2.0: \"neutral\", 3.0: \"positive\", 4.0: \"very-positive\"}" + "id2label = {\n", + " 0.0: \"very-negative\",\n", + " 1.0: \"negative\",\n", + " 2.0: \"neutral\",\n", + " 3.0: \"positive\",\n", + " 4.0: \"very-positive\",\n", + "}" ] }, { @@ -490,20 +498,10 @@ "records = [\n", " rg.FeedbackRecord(\n", " fields={\"text\": row[\"review\"]},\n", - " responses=[\n", - " {\n", - " \"values\": {\n", - " \"label\": {\n", - " \"value\": id2label[row[\"rating\"]]\n", - " }\n", - " }\n", - " }\n", - " ],\n", - " metadata={\n", - " \"datetime\": str(row[\"datetime\"])\n", - " }\n", + " responses=[{\"values\": {\"label\": {\"value\": id2label[row[\"rating\"]]}}}],\n", + " metadata={\"datetime\": str(row[\"datetime\"])},\n", " )\n", - " for _ , row in df_reference.iterrows()\n", + " for _, row in df_reference.iterrows()\n", "]\n", "\n", "ref_rg_ds.add_records(records)\n", @@ -529,7 +527,7 @@ "task = TrainingTask.for_text_classification(\n", " text=ref_rg_ds.field_by_name(\"text\"),\n", " label=ref_rg_ds.question_by_name(\"label\"),\n", - " label_strategy=None\n", + " label_strategy=None,\n", ")\n", "\n", "trainer = ArgillaTrainer(\n", @@ -579,12 +577,12 @@ "metadata": {}, "outputs": [], "source": [ - "modelfile='''\n", + "modelfile = \"\"\"\n", "FROM gemma:7b-instruct\n", "SYSTEM You are a professional video game reviewer. Your job is to write a new and ambiguous video game review inspired by the given one. Please provide the new review that is within 128 tokens, ensuring that no sentences are left incomplete. Directly provide the new review without any other information.\n", - "'''\n", + "\"\"\"\n", "\n", - "ollama.create(model='data-drift-simulator', modelfile=modelfile)" + "ollama.create(model=\"data-drift-simulator\", modelfile=modelfile)" ] }, { @@ -607,10 +605,10 @@ "source": [ "# Example of using the model\n", "response = ollama.generate(\n", - " model='data-drift-simulator',\n", - " prompt=\"Installing the game was a struggle (because of games for windows live bugs).Some championship races and cars can only be 'unlocked' by buying them as an addon to the game. I paid nearly 30 dollars when the game was new. I don\\'t like the idea that I have to keep paying to keep playing.I noticed no improvement in the physics or graphics compared to Dirt 2.I tossed it in the garbage and vowed never to buy another codemasters game. I\\'m really tired of arcade style rally/racing games anyway.I\\'ll continue to get my fix from Richard Burns Rally, and you should to. :)http://www.amazon.com/Richard-Burns-Rally-PC/dp/B000C97156/ref=sr_1_1?ie=UTF8&qid;=1341886844&sr;=8-1&keywords;=richard+burns+rallyThank you for reading my review! If you enjoyed it, be sure to rate it as helpful.\",\n", - " options={'num_predict':128}\n", - " )\n", + " model=\"data-drift-simulator\",\n", + " prompt=\"Installing the game was a struggle (because of games for windows live bugs).Some championship races and cars can only be 'unlocked' by buying them as an addon to the game. I paid nearly 30 dollars when the game was new. I don't like the idea that I have to keep paying to keep playing.I noticed no improvement in the physics or graphics compared to Dirt 2.I tossed it in the garbage and vowed never to buy another codemasters game. I'm really tired of arcade style rally/racing games anyway.I'll continue to get my fix from Richard Burns Rally, and you should to. :)http://www.amazon.com/Richard-Burns-Rally-PC/dp/B000C97156/ref=sr_1_1?ie=UTF8&qid;=1341886844&sr;=8-1&keywords;=richard+burns+rallyThank you for reading my review! If you enjoyed it, be sure to rate it as helpful.\",\n", + " options={\"num_predict\": 128},\n", + ")\n", "print(response[\"response\"])" ] }, @@ -632,26 +630,26 @@ "\n", "# Iterate over the reviews\n", "for i, review in enumerate(curr_reviews):\n", - " print(f\"Processing review {i+1} of {len(curr_reviews)}\")\n", - " \n", + " print(f\"Processing review {i + 1} of {len(curr_reviews)}\")\n", + "\n", " if i % 100 == 0 and i > 0:\n", " temperature += 0.1\n", " top_k += 10\n", " print(f\"Temperature: {temperature}, Top K: {top_k}\")\n", "\n", " response = ollama.generate(\n", - " model='data-drift-simulator',\n", + " model=\"data-drift-simulator\",\n", " prompt=review,\n", " options={\n", - " 'temperature': temperature,\n", - " 'mirostat_tau': mirostat_tau,\n", - " 'num_predict': num_predict,\n", - " 'top_k': top_k,\n", - " 'top_p': top_p\n", - " }\n", + " \"temperature\": temperature,\n", + " \"mirostat_tau\": mirostat_tau,\n", + " \"num_predict\": num_predict,\n", + " \"top_k\": top_k,\n", + " \"top_p\": top_p,\n", + " },\n", " )\n", - " print(response['response'])\n", - " rewritten_reviews.append(response['response'])" + " print(response[\"response\"])\n", + " rewritten_reviews.append(response[\"response\"])" ] }, { @@ -902,7 +900,7 @@ "classifier = pipeline(\"text-classification\", model=\"model-drift-simulation\")\n", "\n", "# Assuming current_df is your DataFrame with a column named 'text'\n", - "texts = df_current_test['rewritten_reviews']\n", + "texts = df_current_test[\"rewritten_reviews\"]\n", "\n", "# Initialize lists to store labels and scores\n", "labels = []\n", @@ -911,12 +909,12 @@ "# Iterate over each text in the DataFrame and make predictions\n", "for text in texts:\n", " prediction = classifier(text)\n", - " labels.append(prediction[0]['label'])\n", - " scores.append(prediction[0]['score'])\n", + " labels.append(prediction[0][\"label\"])\n", + " scores.append(prediction[0][\"score\"])\n", "\n", "# Add the predicted labels and scores as new columns to the original DataFrame\n", - "df_current_test['predicted_label'] = labels\n", - "df_current_test['predicted_score'] = scores\n", + "df_current_test[\"predicted_label\"] = labels\n", + "df_current_test[\"predicted_score\"] = scores\n", "df_current_test.head()" ] }, @@ -942,26 +940,16 @@ " rg.FeedbackRecord(\n", " fields={\"text\": row[\"rewritten_reviews\"]},\n", " suggestions=[\n", - " {\n", - " \"question_name\": \"label\",\n", - " \"value\": row[\"predicted_label\"],\n", - " \"agent\": \"model_drift\"\n", - " }\n", - " ],\n", - " responses=[\n", " {\n", - " \"values\": {\n", - " \"label\": {\n", - " \"value\": id2label[row[\"rating\"]]\n", - " }\n", - " }\n", + " \"question_name\": \"label\",\n", + " \"value\": row[\"predicted_label\"],\n", + " \"agent\": \"model_drift\",\n", " }\n", " ],\n", - " metadata={\n", - " \"datetime\": str(row[\"datetime\"])\n", - " }\n", + " responses=[{\"values\": {\"label\": {\"value\": id2label[row[\"rating\"]]}}}],\n", + " metadata={\"datetime\": str(row[\"datetime\"])},\n", " )\n", - " for _ , row in df_current_test.iterrows()\n", + " for _, row in df_current_test.iterrows()\n", "]\n", "\n", "curr_rg_ds.add_records(records)\n", @@ -1009,7 +997,11 @@ ], "source": [ "# Compute the model metrics\n", - "model_metrics_unified = curr_rg_ds.compute_model_metrics(question_name=\"label\", metric_names=[\"accuracy\", \"precision\", \"recall\", \"f1-score\", \"confusion-matrix\"], strategy=\"majority\")\n", + "model_metrics_unified = curr_rg_ds.compute_model_metrics(\n", + " question_name=\"label\",\n", + " metric_names=[\"accuracy\", \"precision\", \"recall\", \"f1-score\", \"confusion-matrix\"],\n", + " strategy=\"majority\",\n", + ")\n", "model_metrics_unified" ] }, @@ -1046,15 +1038,16 @@ "def clean_review(review):\n", " review = review.lower()\n", " review = re.sub(r\"http\\S+\", \"\", review)\n", - " review = re.sub(r'[^a-zA-Z\\s]', '', review)\n", - " \n", + " review = re.sub(r\"[^a-zA-Z\\s]\", \"\", review)\n", + "\n", " tokens = word_tokenize(review)\n", - " stop_words = set(stopwords.words('english'))\n", + " stop_words = set(stopwords.words(\"english\"))\n", " tokens = [word for word in tokens if word not in stop_words]\n", - " cleaned_review = ' '.join(tokens)\n", - " \n", + " cleaned_review = \" \".join(tokens)\n", + "\n", " return cleaned_review\n", "\n", + "\n", "# Clean the list of reviews\n", "cleaned_ref_reviews = [clean_review(review) for review in ref_reviews]\n", "cleaned_rew_reviews = [clean_review(review) for review in rewritten_reviews]" @@ -1102,7 +1095,9 @@ "topic_model = BERTopic(verbose=True)\n", "topics, probs = topic_model.fit_transform(total_reviews)\n", "\n", - "topics_over_time = topic_model.topics_over_time(total_reviews, total_datetime, nr_bins=20)" + "topics_over_time = topic_model.topics_over_time(\n", + " total_reviews, total_datetime, nr_bins=20\n", + ")" ] }, { @@ -2483,10 +2478,7 @@ "outputs": [], "source": [ "# Create a dataframe with all the data over time\n", - "data = {\n", - " 'datetime': total_datetime,\n", - " 'text': ref_reviews + rewritten_reviews\n", - "}\n", + "data = {\"datetime\": total_datetime, \"text\": ref_reviews + rewritten_reviews}\n", "df_curr_ref = pd.DataFrame(data)\n", "\n", "# Extract the metrics\n", @@ -2525,32 +2517,29 @@ } ], "source": [ - "# Create the time series subplots \n", - "fig,ax = plt.subplots( 2, 2, \n", - "\t\t\t\t\tfigsize = ( 10, 8)) \n", + "# Create the time series subplots\n", + "fig, ax = plt.subplots(2, 2, figsize=(10, 8))\n", "\n", - "sns.lineplot( x = \"datetime\", y = \"token_length_mean\", \n", - "\t\t\tcolor = 'r', data = metrics_df, \n", - "\t\t\tax = ax[0][0]) \n", + "sns.lineplot(\n", + " x=\"datetime\", y=\"token_length_mean\", color=\"r\", data=metrics_df, ax=ax[0][0]\n", + ")\n", "\n", - "ax[0][0].tick_params(labelrotation = 25) \n", - "sns.lineplot( x = \"datetime\", y = \"token_length_median\", \n", - "\t\t\tcolor = 'g', data = metrics_df, \n", - "\t\t\tax = ax[0][1]) \n", + "ax[0][0].tick_params(labelrotation=25)\n", + "sns.lineplot(\n", + " x=\"datetime\", y=\"token_length_median\", color=\"g\", data=metrics_df, ax=ax[0][1]\n", + ")\n", "\n", - "ax[0][1].tick_params(labelrotation = 25) \n", - "sns.lineplot(x = \"datetime\", y = \"token_length_std\", \n", - "\t\t\tcolor = 'b', data = metrics_df, \n", - "\t\t\tax = ax[1][0]) \n", + "ax[0][1].tick_params(labelrotation=25)\n", + "sns.lineplot(\n", + " x=\"datetime\", y=\"token_length_std\", color=\"b\", data=metrics_df, ax=ax[1][0]\n", + ")\n", "\n", - "ax[1][0].tick_params(labelrotation = 25) \n", + "ax[1][0].tick_params(labelrotation=25)\n", "\n", - "sns.lineplot(x = \"datetime\", y = \"n_tokens\", \n", - "\t\t\tcolor = 'y', data = metrics_df, \n", - "\t\t\tax = ax[1][1]) \n", + "sns.lineplot(x=\"datetime\", y=\"n_tokens\", color=\"y\", data=metrics_df, ax=ax[1][1])\n", "\n", - "ax[1][1].tick_params(labelrotation = 25) \n", - "fig.tight_layout(pad = 1.2) " + "ax[1][1].tick_params(labelrotation=25)\n", + "fig.tight_layout(pad=1.2)" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/train-reward-model-rlhf.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/train-reward-model-rlhf.ipynb index d28e6c4864..79682b58bb 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/train-reward-model-rlhf.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/train-reward-model-rlhf.ipynb @@ -1,3064 +1,3088 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "l1RUBJobMBYN" - }, - "source": [ - "# 🏆 Train a reward model for RLHF\n", - "\n", - "Collecting comparison data to train a reward model is a crucial part of RLHF and LLM evaluation. This phase involves training a reward model to align responses with human preferences. Afterwards, during the reinforcement learning phase, the LLM is fine-tuned to generate better responses based on the reward model. In contrast to how the reward model scores prompt-response pairs, comparison data collection typically requires humans (and machines) to rank several responses to a single prompt.\n", - "\n", - "In this example, we will describe how you can **build a dataset for collecting human preferences and train a reward model using the amazing trl library**. See below the workflow we will be following.\n", - "\n", - "Let's get started!\n", - "\n", - "\"Comparison\n", - "\n", - "
\n", - "\n", - "Note \n", - "\n", - "This tutorial is a Jupyter Notebook. There are two options to run it:\n", - "\n", - "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", - "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", - "\n", - "
" - ] + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "l1RUBJobMBYN" + }, + "source": [ + "# 🏆 Train a reward model for RLHF\n", + "\n", + "Collecting comparison data to train a reward model is a crucial part of RLHF and LLM evaluation. This phase involves training a reward model to align responses with human preferences. Afterwards, during the reinforcement learning phase, the LLM is fine-tuned to generate better responses based on the reward model. In contrast to how the reward model scores prompt-response pairs, comparison data collection typically requires humans (and machines) to rank several responses to a single prompt.\n", + "\n", + "In this example, we will describe how you can **build a dataset for collecting human preferences and train a reward model using the amazing trl library**. See below the workflow we will be following.\n", + "\n", + "Let's get started!\n", + "\n", + "\"Comparison\n", + "\n", + "
\n", + "\n", + "Note \n", + "\n", + "This tutorial is a Jupyter Notebook. There are two options to run it:\n", + "\n", + "- Use the Open in Colab button at the top of this page. This option allows you to run the notebook directly on Google Colab. Don't forget to change the runtime type to GPU for faster model training and inference.\n", + "- Download the .ipynb file by clicking on the View source link at the top of the page. This option allows you to download the notebook and run it on your local machine or on a Jupyter notebook tool of your choice.\n", + "\n", + "
" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "hZb87bUJMBYQ" + }, + "source": [ + "## Setup\n", + "\n", + "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", + "\n", + "1. Install the Argilla client and the required third-party libraries using `pip`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dSw4HgoJMBYT" + }, + "outputs": [], + "source": [ + "%pip install -U argilla pandas trl plotly -qqq" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "JoVCJkSlMBYT" + }, + "source": [ + "2. Let's make the necessary imports:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "IbSU2uDhMBYU" + }, + "outputs": [], + "source": [ + "import random\n", + "\n", + "import torch\n", + "from datasets import Dataset, load_dataset\n", + "from transformers import (\n", + " AutoModelForSequenceClassification,\n", + " AutoTokenizer,\n", + " TrainingArguments,\n", + ")\n", + "from trl import RewardTrainer\n", + "\n", + "import argilla as rg" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "A5gHXENrMBYW" + }, + "source": [ + "3. If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DZRJUFUhMBYW" + }, + "outputs": [], + "source": [ + "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", + "# you can find the Spaces URL under the Embed this space button\n", + "# Replace api_key if you configured a custom API key\n", + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Set the HF_TOKEN environment variable\n", + "# import os\n", + "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", + "\n", + "# # Replace api_url with the url to your HF Spaces URL\n", + "# # Replace api_key if you configured a custom API key\n", + "# rg.init(\n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", + "# api_key=\"admin.apikey\",\n", + "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enable Telemetry\n", + "\n", + "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " from argilla.utils.telemetry import tutorial_running\n", + "\n", + " tutorial_running()\n", + "except ImportError:\n", + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "wmT7RQqlMBYW" + }, + "source": [ + "## Configure the dataset\n", + "As a first step, let's load the dataset and quickly explore the data. This dataset contains a sample of the Dolly curated dataset with the original human responses and generated responses using the Falcon-7b-instruct model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "hZb87bUJMBYQ" - }, - "source": [ - "## Setup\n", - "\n", - "For this tutorial, you will need to have an Argilla server running. If you don't have one already, check out our [Quickstart](../../../getting_started/quickstart.md) or [Installation](../../../getting_started/quickstart_installation.ipynb) pages. Once you do, complete the following steps:\n", - "\n", - "1. Install the Argilla client and the required third-party libraries using `pip`:" - ] + "id": "tYpQbwORMBYX", + "outputId": "07f3808f-5965-4cb9-9375-0d3e92c2436d" + }, + "outputs": [], + "source": [ + "hf_dataset = load_dataset(\n", + " \"argilla/dolly-curated-comparison-falcon-7b-instruct\", split=\"train\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 780 }, + "id": "61DMAbebMBYY", + "outputId": "97009132-c55e-4b64-9dc3-bb922b74e414" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "dSw4HgoJMBYT" - }, - "outputs": [], - "source": [ - "%pip install -U argilla pandas trl plotly -qqq" + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
promptresponse-1response-2categoryoriginal_responseexternal_id
0What is DepreciationWhat is Depreciation – 10 Important Facts to K...What is Depreciation on a Car?\\nDepreciation i...open_qaDepreciation is the drop in value of an asset ...518
1What do you know about the city of Aberdeen in...Aberdeen, the city in which I've lived for the...As an AI language model, I don't have personal...open_qaAberdeen is a city located in the North East o...351
2Describe thunderstorm season in the United Sta...Describe thunderstorm season in the United Sta...Describe thunderstorm season in the United Sta...information_extractionThunderstorm season in the United States and C...10567
3When did Peloton IPO?\\nOn September 26, 2019, ...When did Peloton IPO?\\nPeloton launched its in...When did Peloton IPO?\\nPeloton IPO'd on May 26...closed_qaPeloton became a public company via an initial...12412
4What is the best way to answer an interview qu...The best way to answer an interview question m...Some of the best ways to answer an interview q...creative_writingThe first recommended step is to ask clarifyin...2521
.....................
7396How do i accept the changeHow do i accept the change in my life\\nAccepti...I's a great opportunity to improve. The only t...brainstormingEmbrace the change and see the difference15010
7397Extract the teams that the footballer Sócrates...Extract the teams that the footballer Sócrates...Extract the teams that the footballer Sócrates...information_extractionBrazil, Botafogo-SP, Corinthians, Fiorentina9970
7398Without quoting directly from the text give me...Without quoting directly from the text give me...Without quoting directly from the text give me...summarizationBrendon Small is a stand-up comedian, Creator...14205
7399Is Killing is Sin ? Is it tureIs Killing is Sin ? Is it ture?\\nKilling can b...Is Killing is Sin ? Is it ture?\\nKilling is no...brainstormingKilling a human being should not be sin becaus...11253
7400Who was Otto von Bismarck?\\nOtto, Prince of Bi...Who was Otto von Bismarck?\\nOtto von Bismarck ...Who was Otto von Bismarck?\\nOtto von Bismarck ...information_extractionOtto von Bismarck was a Prussian and German so...12872
\n", + "

7401 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " prompt \\\n", + "0 What is Depreciation \n", + "1 What do you know about the city of Aberdeen in... \n", + "2 Describe thunderstorm season in the United Sta... \n", + "3 When did Peloton IPO?\\nOn September 26, 2019, ... \n", + "4 What is the best way to answer an interview qu... \n", + "... ... \n", + "7396 How do i accept the change \n", + "7397 Extract the teams that the footballer Sócrates... \n", + "7398 Without quoting directly from the text give me... \n", + "7399 Is Killing is Sin ? Is it ture \n", + "7400 Who was Otto von Bismarck?\\nOtto, Prince of Bi... \n", + "\n", + " response-1 \\\n", + "0 What is Depreciation – 10 Important Facts to K... \n", + "1 Aberdeen, the city in which I've lived for the... \n", + "2 Describe thunderstorm season in the United Sta... \n", + "3 When did Peloton IPO?\\nPeloton launched its in... \n", + "4 The best way to answer an interview question m... \n", + "... ... \n", + "7396 How do i accept the change in my life\\nAccepti... \n", + "7397 Extract the teams that the footballer Sócrates... \n", + "7398 Without quoting directly from the text give me... \n", + "7399 Is Killing is Sin ? Is it ture?\\nKilling can b... \n", + "7400 Who was Otto von Bismarck?\\nOtto von Bismarck ... \n", + "\n", + " response-2 \\\n", + "0 What is Depreciation on a Car?\\nDepreciation i... \n", + "1 As an AI language model, I don't have personal... \n", + "2 Describe thunderstorm season in the United Sta... \n", + "3 When did Peloton IPO?\\nPeloton IPO'd on May 26... \n", + "4 Some of the best ways to answer an interview q... \n", + "... ... \n", + "7396 I's a great opportunity to improve. The only t... \n", + "7397 Extract the teams that the footballer Sócrates... \n", + "7398 Without quoting directly from the text give me... \n", + "7399 Is Killing is Sin ? Is it ture?\\nKilling is no... \n", + "7400 Who was Otto von Bismarck?\\nOtto von Bismarck ... \n", + "\n", + " category \\\n", + "0 open_qa \n", + "1 open_qa \n", + "2 information_extraction \n", + "3 closed_qa \n", + "4 creative_writing \n", + "... ... \n", + "7396 brainstorming \n", + "7397 information_extraction \n", + "7398 summarization \n", + "7399 brainstorming \n", + "7400 information_extraction \n", + "\n", + " original_response external_id \n", + "0 Depreciation is the drop in value of an asset ... 518 \n", + "1 Aberdeen is a city located in the North East o... 351 \n", + "2 Thunderstorm season in the United States and C... 10567 \n", + "3 Peloton became a public company via an initial... 12412 \n", + "4 The first recommended step is to ask clarifyin... 2521 \n", + "... ... ... \n", + "7396 Embrace the change and see the difference 15010 \n", + "7397 Brazil, Botafogo-SP, Corinthians, Fiorentina 9970 \n", + "7398 Brendon Small is a stand-up comedian, Creator... 14205 \n", + "7399 Killing a human being should not be sin becaus... 11253 \n", + "7400 Otto von Bismarck was a Prussian and German so... 12872 \n", + "\n", + "[7401 rows x 6 columns]" ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = hf_dataset.to_pandas()\n", + "df" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "-OMxM53bMBYZ" + }, + "source": [ + "For reward modeling, we would like to ask labelers to rank two responses for a prompt from best to worst. For this, we need to configure the fields to show and questions to ask to labelers.\n", + "\n", + "The dataset will show the users three fields `instruction`, which corresponds to the prompt, `response-1` and `response-2`, which correspond to each of the responses to the instruction.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "VZ5prVQNMBYa" + }, + "outputs": [], + "source": [ + "# list of fields that we will use later for our dataset settings\n", + "fields = [\n", + " rg.TextField(name=\"instruction\", title=\"User instruction\"),\n", + " rg.TextField(name=\"response-1\"),\n", + " rg.TextField(name=\"response-2\"),\n", + "]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "VKU888AnMBYa" + }, + "source": [ + "In this use case, we will ask the users to select the best response. You can also ask users to rank more than two responses, but let's keep it straightforward for this example. We also add the annotation guidelines for labelers, based on the guidelines of the InstructGPT paper." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "wJvW18MEMBYb" + }, + "outputs": [], + "source": [ + "question = rg.RatingQuestion(\n", + " name=\"choose-best\",\n", + " title=\"Choose the best response:\",\n", + " description=\"Choose the most helpful, harmless, and truthful response. Select 1 for response-1, 2 for response-2, or discard if both are equally good/bad.\",\n", + " values=[1, 2],\n", + " required=True,\n", + ")\n", + "\n", + "guidelines = \"\"\"These guidelines are based on the paper [Training Language Models to Follow Instructions with Human Feedback](https://cdn.openai.com/papers/Training_language_models_to_follow_instructions_with_human_feedback.pdf)\\n\\n**You are given a text-based description of a task, submitted by a user.**\\n\\nThis task description may be in the form of an explicit instruction (e.g. \\\"Write a story about a wise frog.\\\"). The task may also be specified indirectly, for example by using several examples of the desired behavior (e.g. given a sequence of movie reviews followed by their sentiment, followed by one movie review without a sentiment, you can assume the task is to predict the sentiment of the final review), or by generating the start of a desired output (e.g. given \\\"There once was a wise frog named Julius,\\\" you can assume the task is to continue the story).\\n\\n**You will also be given several text outputs, intended to help the user with their task.** Your job is to evaluate these outputs to ensure that they are helpful, truthful, and harmless, and select the best according to these criteria.\\n\\nIn case **none of the outputs is correct, conforming to the criteria, or they're exactly equal, use the discard option to not rank them**.\\n\\nFor most tasks, being truthful and harmless is more important than being helpful.\\n\\nBy **helpful**, we mean that the output should follow the user's intention and help the user solve their task. Some examples of helpful behavior:\\n\\n- Writing in clear language.\\n- Answering the question they meant to ask, even if they mis-asked it.\\n- Being sensitive to internationality (e.g., \\\"football\\\" shouldn't mean American football, and \\\"the president\\\" doesn't necessarily mean the US president).\\n- If an instruction is too confusing, asking for clarification and explaining why the instruction is confusing.\\n- Not giving overly long or rambling answers, or repeating information from the question.\\n- Not assuming extraneous extra context outside of what's given (besides things like facts about the world), unless that's an implied part of the task. For example, if asked to \\\"write a polite email response to this email: email body,\\\" the output shouldn't assume \\\"I can't make it this time, but am free next weekend.\\\" But if asked to \\\"Write an email to Socrates,\\\" then you can safely assume the output can make up a context.\\n\\nBy **truthful**, we mean that the output contains accurate information and doesn't mislead the user. Some examples of truthful behavior:\\n\\n- On tasks like summarization, where the output should only use information from input, not making up details that are not part of the input description.\\n- Not producing clearly false information about the world (e.g., making up facts or promoting conspiracies). For example, the output should not state that Hillary Clinton has served time in prison.\\n- Avoid generating misleading information or information with questionable authenticity. For example, if the input asks \\\"Why did Hillary Clinton go to jail?\\\", the output should not say \\\"It's not totally clear,\\\" but rather should refute the premise of the question.\\n\\nBy **harmless**, we mean that the output should not cause physical, psychological, or social harm to people; damage to or loss of equipment or property; damage to the environment; or harm to institutions or resources necessary to human well-being. Some examples of harmless behavior:\\n\\n- Treating other humans with kindness, respect, and consideration; not denigrating members of certain groups or using biased language against a particular group.\\n- Not generating abusive, threatening, or offensive language or promoting violence.\\n- Not writing sexual or violent content if it's not asked for.\\n- Not giving bad real-world advice or promoting illegal activity.\\n\\nEvaluating model outputs may involve making trade-offs between these criteria. These trade-offs will depend on the task.\"\"\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "RfZuuRpr07n4" + }, + "source": [ + "## Create records\n", + "\n", + "The next step is to build the records for collecting comparison data. This step typically involves generating responses using one or several instruction-tuned models. \n", + "\n", + ".. tip:: When showing responses from two different models to labelers it's recommended to randomly assign different model responses to `response-1` and `response-2` for each record. Otherwise, labelers might find a pattern and be biased towards a specific model. This is especially relevant for model comparison and evaluation but also applies to comparison data for reward modeling. \n", + "\n", + "In this example, we've already generated a dataset using the instructions from the Dolly curated dataset with the Falcon-7B-instruct model. We will use the original human-written response as `response-1` and a response from Falcon as `response-2`. \n", + "\n", + "You can build the records and publish them for labelers as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "JoVCJkSlMBYT" - }, - "source": [ - "2. Let's make the necessary imports:" - ] + "id": "qZUeAT-1OFfz", + "outputId": "2b605fd6-3708-4f8c-d18a-4dc1f75f981e" + }, + "outputs": [], + "source": [ + "# build records from hf dataset\n", + "records = [\n", + " rg.FeedbackRecord(\n", + " fields={\n", + " \"instruction\": r[\"prompt\"],\n", + " \"response-1\": r[\"original_response\"],\n", + " \"response-2\": r[\"response-2\"],\n", + " }\n", + " )\n", + " for r in hf_dataset\n", + "]\n", + "\n", + "# create dataset\n", + "dataset = rg.FeedbackDataset(fields=fields, questions=[question], guidelines=guidelines)\n", + "\n", + "# add records and publish\n", + "dataset.add_records(records)\n", + "dataset.push_to_argilla(\"comparison-data-falcon\", workspace=\"admin\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the dataset is ready for labeling. This is the Feedback UI we have just configured:\n", + "\n", + "\n", + "\"A\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "4vUhGWWnufDq" + }, + "source": [ + "Additionally, you can push the dataset to the Hub for reproducibility and reuse. This dataset is available in the Hub, feel free to [read the dataset card](https://huggingface.co/datasets/argilla/comparison-data-falcon-with-feedback) to understand its structure, annotation guidelines, and how to import it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0kqc8fADoX4Q" + }, + "outputs": [], + "source": [ + "# dataset.push_to_huggingface(\"comparison-data-falcon\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "aW40aC5xvhrR" + }, + "source": [ + "## Collect feedback and prepare the dataset\n", + "\n", + "Once the data has been labeled using the Argilla UI, we can retrieve it with the Python SDK and prepare it for training the reward model with TRL.\n", + "\n", + "If you are running this tutorial but haven´t labeled any data points, execute the following cell to retrieve the labeled dataset from the Hugging Face Hub. This dataset already contains ranked responses and can be used for the next steps. The dataset is available in the Hub, feel free to [read the dataset card](https://huggingface.co/datasets/argilla/comparison-data-falcon-with-feedback) to understand its structure, annotation guidelines, responses, and how to import it. \n", + "\n", + "If you have labeled some examples jump and execute the second cell. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238, + "referenced_widgets": [ + "b4a7efcf448247c586546cee7ae4e853", + "ad4dd7f68c00437e878e2965e08457c8", + "e7b96b86f6df4826b04171eaec7fa2a6", + "56021dd10ea447029b2d64a3954f50a8", + "ff6274caa2cb4346b9862dcbf1846184", + "a681213d4f1f4c0db8cf2be709734067", + "626d87ba234a4af9aed53f633cefbd95", + "1c28d5ed9c7a41ad87e7fd83380e05a5", + "dab35d7560824b828e1976691e481301", + "23cccf0f1f2240ecaabb5d6efa7a8bbb", + "f5d4cf0d204f478094976a30309de13e", + "1eca0bb4151543098cfbb98b64191f92", + "299f4ae7c6524b9d8a06f22063d5a92f", + "4ed8d36201904c6cb43d0fcdf7b18f34", + "b9ed9f3bcbfd4403b4c1ea9eb3001543", + "a45c853e3a7c4b65ad3bdae9a67607bc", + "fc422a04dbcf4b979fa7569c171ac971", + "a291ef8013ee445b8f3e36be30e1da69", + "7ba0eca5e7984391b4d32608c85bd236", + "0e746ea7187c4b7382de0e5094d6234a", + "324c48fb64fb4021a4acec428fcf53ac", + "841a58e70b3f4621a4419d2872b3d348", + "3cc6da03d28447d0a7259c460b017296", + "ffc2b422e5284a3180e703cab2ebef1e", + "5151b3406f774c57b66c0651e10edb42", + "b04603b9ced743d991a61e42fc0d8ce6", + "99f75e3565334a0cad80b0ddf434156c", + "e295f279b61f48d683784131a8d533cc", + "254c7bb9621c457182976287a0a5ac66", + "9e60f5105a2f430d9c5f382c54b0610c", + "2b34ee7a285a4dbb8c1001d8162b8e44", + "4d451a340eb341ee88002e9ecce1d2a9", + "8c1c4cac8f0444e4a69bd316efde9080", + "b3dff83de3894147838358514c8ef63c", + "ac4deaed71894ca9b8bdba7e14a34212", + "8ed4b17c0dc4464cb5cc8bcfbc6bc803", + "9a45be3cbddc4d0cbcc3591fe2c2883e", + "51d0e514f6244692b2b1e6dbfcc0a460", + "0432b133dc614d1fa8e2d06edc413302", + "ffe071addb80421dba36b5797a594dbe", + "17ed61c237304d2bb77b80bd4def6466", + "809240690fb44738b6173cc53504bcf1", + "5d3a83515f8944d491fe3305ee01a314", + "52d358e242dd4876a66adbdb89fb03fc", + "dd782a3398d1437f9d3626bdf4b87be4", + "f632551058f744b0b9ad9696397c8d53", + "914b7ab6f21d486fa42be37545ea73d7", + "94903b2e56ef43b9b39ddd576a5a06ee", + "902a2c7722484d4283e5ba0757641a0e", + "23ef7fb2393f45d885d11ada8e5a3534", + "3aaa39cccc26416f9c7aeab4d50da8c5", + "04c0309dc09e46419995addb7238f5ee", + "a9dcbe78ae6641d38775818748dd71c4", + "5c23c54cc6bd4475ba755490afb520db", + "bda482b92a8d4229983e72581154eba9" + ] }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "IbSU2uDhMBYU" - }, - "outputs": [], - "source": [ - "import random\n", - "\n", - "import torch\n", - "from datasets import Dataset, load_dataset\n", - "from transformers import (\n", - " AutoModelForSequenceClassification,\n", - " AutoTokenizer,\n", - " TrainingArguments,\n", - ")\n", - "from trl import RewardTrainer\n", - "\n", - "import argilla as rg" - ] + "id": "p-0_iwa8IA2y", + "outputId": "abbc3e3a-6053-4a0e-c1a1-f3f5f32d686c" + }, + "outputs": [], + "source": [ + "# if you haven't ranked any responses with the UI run this cell\n", + "# otherwise ran the next one\n", + "feedback_dataset = rg.FeedbackDataset.from_huggingface(\n", + " \"argilla/comparison-data-falcon-with-feedback\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "A5gHXENrMBYW" - }, - "source": [ - "3. If you are running Argilla using the Docker quickstart image or Hugging Face Spaces, you need to init the Argilla client with the `URL` and `API_KEY`:" - ] + "id": "TZGfBzgmvg1d", + "outputId": "7efee8d2-79b2-4555-a489-f8a55fcbec31" + }, + "outputs": [], + "source": [ + "# run this cell if you have ranked the responses in the UI\n", + "feedback_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"comparison-data-falcon\", workspace=\"admin\"\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next step is to prepare the dataset in the standard format for training a reward model. In particular, we want to select the chosen and rejected responses from the user feedback. We do this by creating a `TrainingTask` instance for reward modeling using a function that returns chosen-rejected tuples." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 537 }, + "id": "cll7j10swNT2", + "outputId": "0e4974e6-74b1-41be-c54c-92bca9732ddc" + }, + "outputs": [], + "source": [ + "from typing import Any, Dict\n", + "from argilla.feedback import TrainingTask\n", + "from collections import Counter\n", + "\n", + "\n", + "def formatting_func(sample: Dict[str, Any]):\n", + " # sample[\"choose-best\"] => [{'user_id': None, 'value': 1, 'status': 'submitted'}, ...]\n", + " values = [\n", + " annotation[\"value\"]\n", + " for annotation in sample[\"choose-best\"]\n", + " if annotation[\"status\"] == \"submitted\"\n", + " ]\n", + "\n", + " # We will only focus on the annotated records in the dataset\n", + " if Counter(values).most_common(1) != []:\n", + " # values => [1]\n", + " winning_response = Counter(values).most_common(1)[0][0]\n", + " print(Counter(values).most_common(1))\n", + " if winning_response == 1:\n", + " chosen = sample[\"response-1\"]\n", + " rejected = sample[\"response-2\"]\n", + " else:\n", + " chosen = sample[\"response-2\"]\n", + " rejected = sample[\"response-1\"]\n", + " return chosen, rejected\n", + "\n", + "\n", + "task = TrainingTask.for_reward_modeling(formatting_func=formatting_func)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we want, we can observe the resulting dataset by preparing it for training with TRL:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "DZRJUFUhMBYW" - }, - "outputs": [], - "source": [ - "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", - "# you can find the Spaces URL under the Embed this space button\n", - "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"admin.apikey\"\n", - ")" + "data": { + "text/plain": [ + "Dataset({\n", + " features: ['chosen', 'rejected'],\n", + " num_rows: 7401\n", + "})" ] - }, + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = feedback_dataset.prepare_for_training(framework=\"trl\", task=task)\n", + "dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" + "data": { + "text/plain": [ + "{'chosen': \"Depreciation is the drop in value of an asset due to wear and tear, age and obsolescence (going out of date) as recorded in an organization's financial records.\",\n", + " 'rejected': 'What is Depreciation – 10 Important Facts to Know?\\nWhen a business buys a new asset, the purchase price of that asset is depreciated over time to reflect its usage and eventual obsolescence. Depreciation expense can be a tax deductible expense and is usually a non-cash expense reported on a company’s income statement and balance sheet. The amount of depreciation expense a company reports each year is the difference between the original purchase price of the asset and what the current value of that asset might be. Here are 10 important facts to know about depreciation:\\n1. Depreciation is a non-cash expense. It is an expense that is reported in a business’s income statement and balance sheet and not a cash flow expense.\\n2. Depreciation is an accounting standard and it is required to be disclosed in a business’s financial statements.\\n3. The amount of depreciation is usually a tax expense and not a cash expense reported on a company’s income statement'}" ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[0]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "UgoIyJanMBYk" + }, + "source": [ + "This dataset is ready to be used as comparison data to train a reward model.\n", + "\n", + "
\n", + "\n", + "Note\n", + "\n", + "The paper Direct Preference Optimization: Your Language Model is Secretly a Reward Model proposes DPO, a promising method for using comparison data directly to model human preference, eliminating the need for a reward model and the RL step. Nevertheless, the comparison data collected in Argilla can be directly used for DPO.\n", + "\n", + "
" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "F8r9_XJi1K9P" + }, + "source": [ + "## Train the reward model with `trl`\n", + "In this step, we will use the `RewardTrainer` from the trl library. To understand this step, we recommend you to [check the trl docs](https://huggingface.co/docs/trl/reward_trainer). \n", + "\n", + "
\n", + "To run this step, you need to rank some examples using the Argilla UI, or run the step above with the load from Hugging Face call: `feedback_dataset = FeedbackDataset.from_huggingface`\n", + "
\n", + "\n", + "To train a Reward Model, you need to choose a base model to fine-tune. In the literature, the base model is typically the supervised fine-tuned model resulting from the instruction-tuning step. In this example, that would mean using the [Falcon-7B-instruct model](https://huggingface.co/tiiuae/falcon-7b-instruct). However, as Reward Models are essentially classifiers you can use a more lightweight backbone model, for this example we will use `distilroberta-base` but feel free to experiment with other models.\n", + "\n", + "The code below fine-tunes a `SequenceClassification` model with our preference dataset. The most interesting part is the `formatting_func` function. This function combines instructions with chosen and rejected responses, creating two new strings. These strings are tokenized, becoming input for a reward model that learns to distinguish between good and bad responses based on these examples. The model will be optimized to assign higher values to preferred responses and lower values to rejected responses.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 516, + "referenced_widgets": [ + "b44d62c0bef242fabab85ff6129b42dc", + "9a872753cf9a4fde9caa69660e85c896", + "2a9d2460cf024776bb0010ff6f1a5fa7", + "8a6d78da941d429b981d82a1b0d249ab", + "8b2770c23c424f8698d7f3ca60bf5d9a", + "9fc9251942db44548dcc9b55312f6963", + "660b25b7377a4bd0a2baf03a437dc060", + "6e00a979fa604747b320018d4d5549ad", + "5ed78905729747d8a3dfe68590950d73", + "fdd275ff03504203b5dbce2ea732fd44", + "7d01e2401fa44199afb31d5dcc443761" + ] }, + "id": "-MtSUam61J_Z", + "outputId": "6680758c-3b9c-444a-e73b-48bbb4c1b4b5" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Set the HF_TOKEN environment variable\n", - "# import os\n", - "# os.environ['HF_TOKEN'] = \"your-hf-token\"\n", - "\n", - "# # Replace api_url with the url to your HF Spaces URL\n", - "# # Replace api_key if you configured a custom API key\n", - "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", - "# api_key=\"admin.apikey\",\n", - "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", - "# )" + "data": { + "text/html": [ + "
[08/08/23 16:36:51] INFO     INFO:ArgillaTRLTrainer:{'eval_loss': 0.1626577377319336, 'eval_accuracy':   trl.py:226\n",
+       "                             0.937204591492235, 'eval_runtime': 6.5907, 'eval_samples_per_second':                 \n",
+       "                             224.709, 'eval_steps_per_second': 28.221, 'epoch': 1.0}                               \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[08/08/23 16:36:51]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:ArgillaTRLTrainer:\u001b[1m{\u001b[0m\u001b[32m'eval_loss'\u001b[0m: \u001b[1;36m0.1626577377319336\u001b[0m, \u001b[32m'eval_accuracy'\u001b[0m: \u001b]8;id=234053;file://C:\\code\\argilla\\src\\argilla\\client\\feedback\\training\\frameworks\\trl.py\u001b\\\u001b[2mtrl.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=146316;file://C:\\code\\argilla\\src\\argilla\\client\\feedback\\training\\frameworks\\trl.py#226\u001b\\\u001b[2m226\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[1;36m0.937204591492235\u001b[0m, \u001b[32m'eval_runtime'\u001b[0m: \u001b[1;36m6.5907\u001b[0m, \u001b[32m'eval_samples_per_second'\u001b[0m: \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;36m224.709\u001b[0m, \u001b[32m'eval_steps_per_second'\u001b[0m: \u001b[1;36m28.221\u001b[0m, \u001b[32m'epoch'\u001b[0m: \u001b[1;36m1.0\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from argilla.feedback import ArgillaTrainer\n", + "\n", + "model_name = \"distilroberta-base\"\n", + "trainer = ArgillaTrainer(\n", + " dataset=feedback_dataset,\n", + " task=task,\n", + " framework=\"trl\",\n", + " model=model_name,\n", + " train_size=0.8,\n", + ")\n", + "trainer.update_config(\n", + " per_device_train_batch_size=16,\n", + " evaluation_strategy=\"steps\",\n", + " logging_steps=200,\n", + ")\n", + "trainer.train(\"./reward_model\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using the Reward Model\n", + "The resulting model is [fully open-source and available on the Hugging Hub](https://huggingface.co/argilla/roberta-base-reward-model-falcon-dolly).\n", + "\n", + "\n", + "This is how you can use it with your own data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from transformers import AutoTokenizer, AutoModelForSequenceClassification\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(\n", + " \"argilla/roberta-base-reward-model-falcon-dolly\"\n", + ")\n", + "\n", + "model = AutoModelForSequenceClassification.from_pretrained(\n", + " \"argilla/roberta-base-reward-model-falcon-dolly\"\n", + ")\n", + "\n", + "\n", + "def get_score(model, tokenizer, prompt, response):\n", + " # Tokenize the input sequences\n", + " inputs = tokenizer.encode_plus(\n", + " prompt,\n", + " response,\n", + " truncation=True,\n", + " padding=\"max_length\",\n", + " max_length=512,\n", + " return_tensors=\"pt\",\n", + " )\n", + "\n", + " # Perform forward pass\n", + " with torch.no_grad():\n", + " outputs = model(**inputs)\n", + "\n", + " # Extract the logits\n", + " logits = outputs.logits\n", + "\n", + " return logits.item()\n", + "\n", + "\n", + "# Example usage\n", + "prompt = \"What is Depreciation\"\n", + "example_less_pref_response = \"What is Depreciation – 10 Important Facts to Know? When a business buys a new asset, the purchase price of that asset is depreciated over time to reflect its usage and eventual obsolescence. Depreciation expense can be a tax deductible expense and is usually a non-cash expense reported on a company’s income statement and balance sheet. The amount of depreciation expense a company reports each year is the difference between the original purchase price of the asset and what the current value of that asset might be. Here are 10 important facts to know about depreciation: 1. Depreciation is a non-cash expense. It is an expense that is reported in a business’s income statement and balance sheet and not a cash flow expense. 2. Depreciation is an accounting standard and it is required to be disclosed in a business’s financial statements. 3. The amount of depreciation is usually a tax expense and not a cash expense reported on a company’s income statement\"\n", + "example_preferred_response = \"Depreciation is the drop in value of an asset due to wear and tear, age and obsolescence (going out of date) as recorded in an organization's financial records.\"\n", + "\n", + "score = get_score(model, tokenizer, prompt, example_less_pref_response)\n", + "print(score)\n", + "# >> -3.915163993835449\n", + "\n", + "score = get_score(model, tokenizer, prompt, example_preferred_response)\n", + "print(score)\n", + "# >> 7.460323333740234" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "cxy90ZY4MBYk" + }, + "source": [ + "## Summary\n", + "\n", + "In this tutorial, we learned how to create a comparison dataset by ranking responses from the Dolly dataset and Falcon. With this dataset, we learned how to train a reward model using the `trl` framework." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "BeKXm3s3IFr9" + }, + "source": [ + "## Appendix: How to build the dataset with pre-loaded responses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "efyVbRYXIL6H" + }, + "outputs": [], + "source": [ + "picker = [\"response-1\", \"response-2\"]\n", + "\n", + "\n", + "def get_chosen_and_not_chosen(l):\n", + " # Generate a random index between 0 and length of the list - 1\n", + " chosen_id = random.randint(0, len(l) - 1)\n", + " not_chosen_id = 1 - chosen_id # This will be 0 if chosen_id is 1 and vice versa\n", + "\n", + " return l[chosen_id], l[not_chosen_id], chosen_id\n", + "\n", + "\n", + "records = []\n", + "\n", + "for r in hf_dataset:\n", + " chosen, not_chosen, chosen_id = get_chosen_and_not_chosen(picker)\n", + " chosen_from_falcon, _, _ = get_chosen_and_not_chosen(picker)\n", + "\n", + " record = rg.FeedbackRecord(\n", + " fields={\n", + " \"instruction\": r[\"prompt\"],\n", + " chosen: r[\"original_response\"],\n", + " not_chosen: r[chosen_from_falcon],\n", + " },\n", + " responses=[{\"values\": {\"choose-best\": {\"value\": chosen_id + 1}}}],\n", + " external_id=r[\"external_id\"],\n", + " )\n", + " records.append(record)\n", + "\n", + "# create dataset\n", + "dataset = rg.FeedbackDataset(fields=fields, questions=[question], guidelines=guidelines)\n", + "\n", + "# add records and publish\n", + "dataset.add_records(records)\n", + "\n", + "dataset.push_to_huggingface(\"argilla/comparison-data-falcon-with-feedback\")" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.17" + }, + "vscode": { + "interpreter": { + "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "0432b133dc614d1fa8e2d06edc413302": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Enable Telemetry\n", - "\n", - "We gain valuable insights from how you interact with our tutorials. To improve ourselves in offering you the most suitable content, using the following lines of code will help us understand that this tutorial is serving you effectively. Though this is entirely anonymous, you can choose to skip this step if you prefer. For more info, please check out the [Telemetry](../../reference/telemetry.md) page." - ] + "04c0309dc09e46419995addb7238f5ee": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from argilla.utils.telemetry import tutorial_running\n", - " tutorial_running()\n", - "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" - ] + "0e746ea7187c4b7382de0e5094d6234a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "wmT7RQqlMBYW" - }, - "source": [ - "## Configure the dataset\n", - "As a first step, let's load the dataset and quickly explore the data. This dataset contains a sample of the Dolly curated dataset with the original human responses and generated responses using the Falcon-7b-instruct model." - ] + "17ed61c237304d2bb77b80bd4def6466": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tYpQbwORMBYX", - "outputId": "07f3808f-5965-4cb9-9375-0d3e92c2436d" - }, - "outputs": [], - "source": [ - "hf_dataset = load_dataset(\"argilla/dolly-curated-comparison-falcon-7b-instruct\", split=\"train\")" - ] + "1c28d5ed9c7a41ad87e7fd83380e05a5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 780 - }, - "id": "61DMAbebMBYY", - "outputId": "97009132-c55e-4b64-9dc3-bb922b74e414" - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
promptresponse-1response-2categoryoriginal_responseexternal_id
0What is DepreciationWhat is Depreciation – 10 Important Facts to K...What is Depreciation on a Car?\\nDepreciation i...open_qaDepreciation is the drop in value of an asset ...518
1What do you know about the city of Aberdeen in...Aberdeen, the city in which I've lived for the...As an AI language model, I don't have personal...open_qaAberdeen is a city located in the North East o...351
2Describe thunderstorm season in the United Sta...Describe thunderstorm season in the United Sta...Describe thunderstorm season in the United Sta...information_extractionThunderstorm season in the United States and C...10567
3When did Peloton IPO?\\nOn September 26, 2019, ...When did Peloton IPO?\\nPeloton launched its in...When did Peloton IPO?\\nPeloton IPO'd on May 26...closed_qaPeloton became a public company via an initial...12412
4What is the best way to answer an interview qu...The best way to answer an interview question m...Some of the best ways to answer an interview q...creative_writingThe first recommended step is to ask clarifyin...2521
.....................
7396How do i accept the changeHow do i accept the change in my life\\nAccepti...I's a great opportunity to improve. The only t...brainstormingEmbrace the change and see the difference15010
7397Extract the teams that the footballer Sócrates...Extract the teams that the footballer Sócrates...Extract the teams that the footballer Sócrates...information_extractionBrazil, Botafogo-SP, Corinthians, Fiorentina9970
7398Without quoting directly from the text give me...Without quoting directly from the text give me...Without quoting directly from the text give me...summarizationBrendon Small is a stand-up comedian, Creator...14205
7399Is Killing is Sin ? Is it tureIs Killing is Sin ? Is it ture?\\nKilling can b...Is Killing is Sin ? Is it ture?\\nKilling is no...brainstormingKilling a human being should not be sin becaus...11253
7400Who was Otto von Bismarck?\\nOtto, Prince of Bi...Who was Otto von Bismarck?\\nOtto von Bismarck ...Who was Otto von Bismarck?\\nOtto von Bismarck ...information_extractionOtto von Bismarck was a Prussian and German so...12872
\n", - "

7401 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " prompt \\\n", - "0 What is Depreciation \n", - "1 What do you know about the city of Aberdeen in... \n", - "2 Describe thunderstorm season in the United Sta... \n", - "3 When did Peloton IPO?\\nOn September 26, 2019, ... \n", - "4 What is the best way to answer an interview qu... \n", - "... ... \n", - "7396 How do i accept the change \n", - "7397 Extract the teams that the footballer Sócrates... \n", - "7398 Without quoting directly from the text give me... \n", - "7399 Is Killing is Sin ? Is it ture \n", - "7400 Who was Otto von Bismarck?\\nOtto, Prince of Bi... \n", - "\n", - " response-1 \\\n", - "0 What is Depreciation – 10 Important Facts to K... \n", - "1 Aberdeen, the city in which I've lived for the... \n", - "2 Describe thunderstorm season in the United Sta... \n", - "3 When did Peloton IPO?\\nPeloton launched its in... \n", - "4 The best way to answer an interview question m... \n", - "... ... \n", - "7396 How do i accept the change in my life\\nAccepti... \n", - "7397 Extract the teams that the footballer Sócrates... \n", - "7398 Without quoting directly from the text give me... \n", - "7399 Is Killing is Sin ? Is it ture?\\nKilling can b... \n", - "7400 Who was Otto von Bismarck?\\nOtto von Bismarck ... \n", - "\n", - " response-2 \\\n", - "0 What is Depreciation on a Car?\\nDepreciation i... \n", - "1 As an AI language model, I don't have personal... \n", - "2 Describe thunderstorm season in the United Sta... \n", - "3 When did Peloton IPO?\\nPeloton IPO'd on May 26... \n", - "4 Some of the best ways to answer an interview q... \n", - "... ... \n", - "7396 I's a great opportunity to improve. The only t... \n", - "7397 Extract the teams that the footballer Sócrates... \n", - "7398 Without quoting directly from the text give me... \n", - "7399 Is Killing is Sin ? Is it ture?\\nKilling is no... \n", - "7400 Who was Otto von Bismarck?\\nOtto von Bismarck ... \n", - "\n", - " category \\\n", - "0 open_qa \n", - "1 open_qa \n", - "2 information_extraction \n", - "3 closed_qa \n", - "4 creative_writing \n", - "... ... \n", - "7396 brainstorming \n", - "7397 information_extraction \n", - "7398 summarization \n", - "7399 brainstorming \n", - "7400 information_extraction \n", - "\n", - " original_response external_id \n", - "0 Depreciation is the drop in value of an asset ... 518 \n", - "1 Aberdeen is a city located in the North East o... 351 \n", - "2 Thunderstorm season in the United States and C... 10567 \n", - "3 Peloton became a public company via an initial... 12412 \n", - "4 The first recommended step is to ask clarifyin... 2521 \n", - "... ... ... \n", - "7396 Embrace the change and see the difference 15010 \n", - "7397 Brazil, Botafogo-SP, Corinthians, Fiorentina 9970 \n", - "7398 Brendon Small is a stand-up comedian, Creator... 14205 \n", - "7399 Killing a human being should not be sin becaus... 11253 \n", - "7400 Otto von Bismarck was a Prussian and German so... 12872 \n", - "\n", - "[7401 rows x 6 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } + "1eca0bb4151543098cfbb98b64191f92": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_299f4ae7c6524b9d8a06f22063d5a92f", + "IPY_MODEL_4ed8d36201904c6cb43d0fcdf7b18f34", + "IPY_MODEL_b9ed9f3bcbfd4403b4c1ea9eb3001543" ], - "source": [ - "df = hf_dataset.to_pandas()\n", - "df" - ] + "layout": "IPY_MODEL_a45c853e3a7c4b65ad3bdae9a67607bc" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "-OMxM53bMBYZ" - }, - "source": [ - "For reward modeling, we would like to ask labelers to rank two responses for a prompt from best to worst. For this, we need to configure the fields to show and questions to ask to labelers.\n", - "\n", - "The dataset will show the users three fields `instruction`, which corresponds to the prompt, `response-1` and `response-2`, which correspond to each of the responses to the instruction.\n" - ] + "23cccf0f1f2240ecaabb5d6efa7a8bbb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "id": "VZ5prVQNMBYa" - }, - "outputs": [], - "source": [ - "# list of fields that we will use later for our dataset settings\n", - "fields = [\n", - " rg.TextField(name=\"instruction\", title=\"User instruction\"),\n", - " rg.TextField(name=\"response-1\"),\n", - " rg.TextField(name=\"response-2\")\n", - "]" - ] + "23ef7fb2393f45d885d11ada8e5a3534": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "VKU888AnMBYa" - }, - "source": [ - "In this use case, we will ask the users to select the best response. You can also ask users to rank more than two responses, but let's keep it straightforward for this example. We also add the annotation guidelines for labelers, based on the guidelines of the InstructGPT paper." - ] + "254c7bb9621c457182976287a0a5ac66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "wJvW18MEMBYb" - }, - "outputs": [], - "source": [ - "question = rg.RatingQuestion(\n", - " name=\"choose-best\",\n", - " title=\"Choose the best response:\",\n", - " description=\"Choose the most helpful, harmless, and truthful response. Select 1 for response-1, 2 for response-2, or discard if both are equally good/bad.\",\n", - " values=[1,2],\n", - " required=True\n", - ")\n", - "\n", - "guidelines=\"\"\"These guidelines are based on the paper [Training Language Models to Follow Instructions with Human Feedback](https://cdn.openai.com/papers/Training_language_models_to_follow_instructions_with_human_feedback.pdf)\\n\\n**You are given a text-based description of a task, submitted by a user.**\\n\\nThis task description may be in the form of an explicit instruction (e.g. \\\"Write a story about a wise frog.\\\"). The task may also be specified indirectly, for example by using several examples of the desired behavior (e.g. given a sequence of movie reviews followed by their sentiment, followed by one movie review without a sentiment, you can assume the task is to predict the sentiment of the final review), or by generating the start of a desired output (e.g. given \\\"There once was a wise frog named Julius,\\\" you can assume the task is to continue the story).\\n\\n**You will also be given several text outputs, intended to help the user with their task.** Your job is to evaluate these outputs to ensure that they are helpful, truthful, and harmless, and select the best according to these criteria.\\n\\nIn case **none of the outputs is correct, conforming to the criteria, or they're exactly equal, use the discard option to not rank them**.\\n\\nFor most tasks, being truthful and harmless is more important than being helpful.\\n\\nBy **helpful**, we mean that the output should follow the user's intention and help the user solve their task. Some examples of helpful behavior:\\n\\n- Writing in clear language.\\n- Answering the question they meant to ask, even if they mis-asked it.\\n- Being sensitive to internationality (e.g., \\\"football\\\" shouldn't mean American football, and \\\"the president\\\" doesn't necessarily mean the US president).\\n- If an instruction is too confusing, asking for clarification and explaining why the instruction is confusing.\\n- Not giving overly long or rambling answers, or repeating information from the question.\\n- Not assuming extraneous extra context outside of what's given (besides things like facts about the world), unless that's an implied part of the task. For example, if asked to \\\"write a polite email response to this email: email body,\\\" the output shouldn't assume \\\"I can't make it this time, but am free next weekend.\\\" But if asked to \\\"Write an email to Socrates,\\\" then you can safely assume the output can make up a context.\\n\\nBy **truthful**, we mean that the output contains accurate information and doesn't mislead the user. Some examples of truthful behavior:\\n\\n- On tasks like summarization, where the output should only use information from input, not making up details that are not part of the input description.\\n- Not producing clearly false information about the world (e.g., making up facts or promoting conspiracies). For example, the output should not state that Hillary Clinton has served time in prison.\\n- Avoid generating misleading information or information with questionable authenticity. For example, if the input asks \\\"Why did Hillary Clinton go to jail?\\\", the output should not say \\\"It's not totally clear,\\\" but rather should refute the premise of the question.\\n\\nBy **harmless**, we mean that the output should not cause physical, psychological, or social harm to people; damage to or loss of equipment or property; damage to the environment; or harm to institutions or resources necessary to human well-being. Some examples of harmless behavior:\\n\\n- Treating other humans with kindness, respect, and consideration; not denigrating members of certain groups or using biased language against a particular group.\\n- Not generating abusive, threatening, or offensive language or promoting violence.\\n- Not writing sexual or violent content if it's not asked for.\\n- Not giving bad real-world advice or promoting illegal activity.\\n\\nEvaluating model outputs may involve making trade-offs between these criteria. These trade-offs will depend on the task.\"\"\"" - ] + "299f4ae7c6524b9d8a06f22063d5a92f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fc422a04dbcf4b979fa7569c171ac971", + "placeholder": "​", + "style": "IPY_MODEL_a291ef8013ee445b8f3e36be30e1da69", + "value": "Downloading data: 100%" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "RfZuuRpr07n4" - }, - "source": [ - "## Create records\n", - "\n", - "The next step is to build the records for collecting comparison data. This step typically involves generating responses using one or several instruction-tuned models. \n", - "\n", - ".. tip:: When showing responses from two different models to labelers it's recommended to randomly assign different model responses to `response-1` and `response-2` for each record. Otherwise, labelers might find a pattern and be biased towards a specific model. This is especially relevant for model comparison and evaluation but also applies to comparison data for reward modeling. \n", - "\n", - "In this example, we've already generated a dataset using the instructions from the Dolly curated dataset with the Falcon-7B-instruct model. We will use the original human-written response as `response-1` and a response from Falcon as `response-2`. \n", - "\n", - "You can build the records and publish them for labelers as follows:" - ] + "2a9d2460cf024776bb0010ff6f1a5fa7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6e00a979fa604747b320018d4d5549ad", + "max": 7401, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5ed78905729747d8a3dfe68590950d73", + "value": 7401 + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "qZUeAT-1OFfz", - "outputId": "2b605fd6-3708-4f8c-d18a-4dc1f75f981e" - }, - "outputs": [], - "source": [ - "# build records from hf dataset\n", - "records = [\n", - " rg.FeedbackRecord(fields={\"instruction\": r[\"prompt\"], \"response-1\": r[\"original_response\"], \"response-2\": r[\"response-2\"]})\n", - " for r in hf_dataset\n", - "]\n", - "\n", - "# create dataset\n", - "dataset = rg.FeedbackDataset(\n", - " fields=fields,\n", - " questions=[question],\n", - " guidelines=guidelines\n", - ")\n", - "\n", - "# add records and publish\n", - "dataset.add_records(records)\n", - "dataset.push_to_argilla(\"comparison-data-falcon\", workspace=\"admin\")\n" - ] + "2b34ee7a285a4dbb8c1001d8162b8e44": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now the dataset is ready for labeling. This is the Feedback UI we have just configured:\n", - "\n", - "\n", - "\"A\n", - "\n" - ] + "324c48fb64fb4021a4acec428fcf53ac": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "4vUhGWWnufDq" - }, - "source": [ - "Additionally, you can push the dataset to the Hub for reproducibility and reuse. This dataset is available in the Hub, feel free to [read the dataset card](https://huggingface.co/datasets/argilla/comparison-data-falcon-with-feedback) to understand its structure, annotation guidelines, and how to import it." - ] + "3aaa39cccc26416f9c7aeab4d50da8c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "0kqc8fADoX4Q" - }, - "outputs": [], - "source": [ - "#dataset.push_to_huggingface(\"comparison-data-falcon\")" - ] + "3cc6da03d28447d0a7259c460b017296": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ffc2b422e5284a3180e703cab2ebef1e", + "IPY_MODEL_5151b3406f774c57b66c0651e10edb42", + "IPY_MODEL_b04603b9ced743d991a61e42fc0d8ce6" + ], + "layout": "IPY_MODEL_99f75e3565334a0cad80b0ddf434156c" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "aW40aC5xvhrR" - }, - "source": [ - "## Collect feedback and prepare the dataset\n", - "\n", - "Once the data has been labeled using the Argilla UI, we can retrieve it with the Python SDK and prepare it for training the reward model with TRL.\n", - "\n", - "If you are running this tutorial but haven´t labeled any data points, execute the following cell to retrieve the labeled dataset from the Hugging Face Hub. This dataset already contains ranked responses and can be used for the next steps. The dataset is available in the Hub, feel free to [read the dataset card](https://huggingface.co/datasets/argilla/comparison-data-falcon-with-feedback) to understand its structure, annotation guidelines, responses, and how to import it. \n", - "\n", - "If you have labeled some examples jump and execute the second cell. " - ] + "4d451a340eb341ee88002e9ecce1d2a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238, - "referenced_widgets": [ - "b4a7efcf448247c586546cee7ae4e853", - "ad4dd7f68c00437e878e2965e08457c8", - "e7b96b86f6df4826b04171eaec7fa2a6", - "56021dd10ea447029b2d64a3954f50a8", - "ff6274caa2cb4346b9862dcbf1846184", - "a681213d4f1f4c0db8cf2be709734067", - "626d87ba234a4af9aed53f633cefbd95", - "1c28d5ed9c7a41ad87e7fd83380e05a5", - "dab35d7560824b828e1976691e481301", - "23cccf0f1f2240ecaabb5d6efa7a8bbb", - "f5d4cf0d204f478094976a30309de13e", - "1eca0bb4151543098cfbb98b64191f92", - "299f4ae7c6524b9d8a06f22063d5a92f", - "4ed8d36201904c6cb43d0fcdf7b18f34", - "b9ed9f3bcbfd4403b4c1ea9eb3001543", - "a45c853e3a7c4b65ad3bdae9a67607bc", - "fc422a04dbcf4b979fa7569c171ac971", - "a291ef8013ee445b8f3e36be30e1da69", - "7ba0eca5e7984391b4d32608c85bd236", - "0e746ea7187c4b7382de0e5094d6234a", - "324c48fb64fb4021a4acec428fcf53ac", - "841a58e70b3f4621a4419d2872b3d348", - "3cc6da03d28447d0a7259c460b017296", - "ffc2b422e5284a3180e703cab2ebef1e", - "5151b3406f774c57b66c0651e10edb42", - "b04603b9ced743d991a61e42fc0d8ce6", - "99f75e3565334a0cad80b0ddf434156c", - "e295f279b61f48d683784131a8d533cc", - "254c7bb9621c457182976287a0a5ac66", - "9e60f5105a2f430d9c5f382c54b0610c", - "2b34ee7a285a4dbb8c1001d8162b8e44", - "4d451a340eb341ee88002e9ecce1d2a9", - "8c1c4cac8f0444e4a69bd316efde9080", - "b3dff83de3894147838358514c8ef63c", - "ac4deaed71894ca9b8bdba7e14a34212", - "8ed4b17c0dc4464cb5cc8bcfbc6bc803", - "9a45be3cbddc4d0cbcc3591fe2c2883e", - "51d0e514f6244692b2b1e6dbfcc0a460", - "0432b133dc614d1fa8e2d06edc413302", - "ffe071addb80421dba36b5797a594dbe", - "17ed61c237304d2bb77b80bd4def6466", - "809240690fb44738b6173cc53504bcf1", - "5d3a83515f8944d491fe3305ee01a314", - "52d358e242dd4876a66adbdb89fb03fc", - "dd782a3398d1437f9d3626bdf4b87be4", - "f632551058f744b0b9ad9696397c8d53", - "914b7ab6f21d486fa42be37545ea73d7", - "94903b2e56ef43b9b39ddd576a5a06ee", - "902a2c7722484d4283e5ba0757641a0e", - "23ef7fb2393f45d885d11ada8e5a3534", - "3aaa39cccc26416f9c7aeab4d50da8c5", - "04c0309dc09e46419995addb7238f5ee", - "a9dcbe78ae6641d38775818748dd71c4", - "5c23c54cc6bd4475ba755490afb520db", - "bda482b92a8d4229983e72581154eba9" - ] - }, - "id": "p-0_iwa8IA2y", - "outputId": "abbc3e3a-6053-4a0e-c1a1-f3f5f32d686c" - }, - "outputs": [], - "source": [ - "# if you haven't ranked any responses with the UI run this cell\n", - "# otherwise ran the next one\n", - "feedback_dataset = rg.FeedbackDataset.from_huggingface(\"argilla/comparison-data-falcon-with-feedback\")" - ] + "4ed8d36201904c6cb43d0fcdf7b18f34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7ba0eca5e7984391b4d32608c85bd236", + "max": 5211692, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0e746ea7187c4b7382de0e5094d6234a", + "value": 5211692 + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "TZGfBzgmvg1d", - "outputId": "7efee8d2-79b2-4555-a489-f8a55fcbec31" - }, - "outputs": [], - "source": [ - "# run this cell if you have ranked the responses in the UI\n", - "feedback_dataset = rg.FeedbackDataset.from_argilla('comparison-data-falcon', workspace=\"admin\")" - ] + "5151b3406f774c57b66c0651e10edb42": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9e60f5105a2f430d9c5f382c54b0610c", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2b34ee7a285a4dbb8c1001d8162b8e44", + "value": 1 + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The next step is to prepare the dataset in the standard format for training a reward model. In particular, we want to select the chosen and rejected responses from the user feedback. We do this by creating a `TrainingTask` instance for reward modeling using a function that returns chosen-rejected tuples." - ] + "51d0e514f6244692b2b1e6dbfcc0a460": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 537 - }, - "id": "cll7j10swNT2", - "outputId": "0e4974e6-74b1-41be-c54c-92bca9732ddc" - }, - "outputs": [], - "source": [ - "from typing import Any, Dict\n", - "from argilla.feedback import TrainingTask\n", - "from collections import Counter\n", - "\n", - "def formatting_func(sample: Dict[str, Any]):\n", - " # sample[\"choose-best\"] => [{'user_id': None, 'value': 1, 'status': 'submitted'}, ...]\n", - " values = [\n", - " annotation[\"value\"]\n", - " for annotation in sample[\"choose-best\"]\n", - " if annotation[\"status\"] == \"submitted\"\n", - " ]\n", - " \n", - " # We will only focus on the annotated records in the dataset\n", - " if Counter(values).most_common(1) != []:\n", - " \n", - " # values => [1]\n", - " winning_response = Counter(values).most_common(1)[0][0]\n", - " print(Counter(values).most_common(1))\n", - " if winning_response == 1:\n", - " chosen = sample[\"response-1\"]\n", - " rejected = sample[\"response-2\"]\n", - " else:\n", - " chosen = sample[\"response-2\"]\n", - " rejected = sample[\"response-1\"]\n", - " return chosen, rejected\n", - "\n", - "task = TrainingTask.for_reward_modeling(formatting_func=formatting_func)" - ] + "52d358e242dd4876a66adbdb89fb03fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we want, we can observe the resulting dataset by preparing it for training with TRL:" - ] + "56021dd10ea447029b2d64a3954f50a8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_23cccf0f1f2240ecaabb5d6efa7a8bbb", + "placeholder": "​", + "style": "IPY_MODEL_f5d4cf0d204f478094976a30309de13e", + "value": " 1/1 [00:04<00:00, 4.35s/it]" + } }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset({\n", - " features: ['chosen', 'rejected'],\n", - " num_rows: 7401\n", - "})" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } + "5c23c54cc6bd4475ba755490afb520db": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5d3a83515f8944d491fe3305ee01a314": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5ed78905729747d8a3dfe68590950d73": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "626d87ba234a4af9aed53f633cefbd95": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "660b25b7377a4bd0a2baf03a437dc060": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6e00a979fa604747b320018d4d5549ad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7ba0eca5e7984391b4d32608c85bd236": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d01e2401fa44199afb31d5dcc443761": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "809240690fb44738b6173cc53504bcf1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "841a58e70b3f4621a4419d2872b3d348": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8a6d78da941d429b981d82a1b0d249ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fdd275ff03504203b5dbce2ea732fd44", + "placeholder": "​", + "style": "IPY_MODEL_7d01e2401fa44199afb31d5dcc443761", + "value": " 7378/7401 [00:23<00:00, 318.13 examples/s]" + } + }, + "8b2770c23c424f8698d7f3ca60bf5d9a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "8c1c4cac8f0444e4a69bd316efde9080": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8ed4b17c0dc4464cb5cc8bcfbc6bc803": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_17ed61c237304d2bb77b80bd4def6466", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_809240690fb44738b6173cc53504bcf1", + "value": 1 + } + }, + "902a2c7722484d4283e5ba0757641a0e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "914b7ab6f21d486fa42be37545ea73d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_04c0309dc09e46419995addb7238f5ee", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a9dcbe78ae6641d38775818748dd71c4", + "value": 1 + } + }, + "94903b2e56ef43b9b39ddd576a5a06ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5c23c54cc6bd4475ba755490afb520db", + "placeholder": "​", + "style": "IPY_MODEL_bda482b92a8d4229983e72581154eba9", + "value": " 1/1 [00:00<00:00, 17.55it/s]" + } + }, + "99f75e3565334a0cad80b0ddf434156c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9a45be3cbddc4d0cbcc3591fe2c2883e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5d3a83515f8944d491fe3305ee01a314", + "placeholder": "​", + "style": "IPY_MODEL_52d358e242dd4876a66adbdb89fb03fc", + "value": " 7401/0 [00:00<00:00, 62827.72 examples/s]" + } + }, + "9a872753cf9a4fde9caa69660e85c896": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9fc9251942db44548dcc9b55312f6963", + "placeholder": "​", + "style": "IPY_MODEL_660b25b7377a4bd0a2baf03a437dc060", + "value": "Map: 100%" + } + }, + "9e60f5105a2f430d9c5f382c54b0610c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9fc9251942db44548dcc9b55312f6963": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a291ef8013ee445b8f3e36be30e1da69": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a45c853e3a7c4b65ad3bdae9a67607bc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a681213d4f1f4c0db8cf2be709734067": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a9dcbe78ae6641d38775818748dd71c4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ac4deaed71894ca9b8bdba7e14a34212": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0432b133dc614d1fa8e2d06edc413302", + "placeholder": "​", + "style": "IPY_MODEL_ffe071addb80421dba36b5797a594dbe", + "value": "Generating train split: " + } + }, + "ad4dd7f68c00437e878e2965e08457c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a681213d4f1f4c0db8cf2be709734067", + "placeholder": "​", + "style": "IPY_MODEL_626d87ba234a4af9aed53f633cefbd95", + "value": "Downloading data files: 100%" + } + }, + "b04603b9ced743d991a61e42fc0d8ce6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4d451a340eb341ee88002e9ecce1d2a9", + "placeholder": "​", + "style": "IPY_MODEL_8c1c4cac8f0444e4a69bd316efde9080", + "value": " 1/1 [00:00<00:00, 26.03it/s]" + } + }, + "b3dff83de3894147838358514c8ef63c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ac4deaed71894ca9b8bdba7e14a34212", + "IPY_MODEL_8ed4b17c0dc4464cb5cc8bcfbc6bc803", + "IPY_MODEL_9a45be3cbddc4d0cbcc3591fe2c2883e" ], - "source": [ - "dataset = feedback_dataset.prepare_for_training(framework=\"trl\", task=task)\n", - "dataset" - ] + "layout": "IPY_MODEL_51d0e514f6244692b2b1e6dbfcc0a460" + } }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'chosen': \"Depreciation is the drop in value of an asset due to wear and tear, age and obsolescence (going out of date) as recorded in an organization's financial records.\",\n", - " 'rejected': 'What is Depreciation – 10 Important Facts to Know?\\nWhen a business buys a new asset, the purchase price of that asset is depreciated over time to reflect its usage and eventual obsolescence. Depreciation expense can be a tax deductible expense and is usually a non-cash expense reported on a company’s income statement and balance sheet. The amount of depreciation expense a company reports each year is the difference between the original purchase price of the asset and what the current value of that asset might be. Here are 10 important facts to know about depreciation:\\n1. Depreciation is a non-cash expense. It is an expense that is reported in a business’s income statement and balance sheet and not a cash flow expense.\\n2. Depreciation is an accounting standard and it is required to be disclosed in a business’s financial statements.\\n3. The amount of depreciation is usually a tax expense and not a cash expense reported on a company’s income statement'}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } + "b44d62c0bef242fabab85ff6129b42dc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9a872753cf9a4fde9caa69660e85c896", + "IPY_MODEL_2a9d2460cf024776bb0010ff6f1a5fa7", + "IPY_MODEL_8a6d78da941d429b981d82a1b0d249ab" ], - "source": [ - "dataset[0]" - ] + "layout": "IPY_MODEL_8b2770c23c424f8698d7f3ca60bf5d9a" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "UgoIyJanMBYk" - }, - "source": [ - "This dataset is ready to be used as comparison data to train a reward model.\n", - "\n", - "
\n", - "\n", - "Note\n", - "\n", - "The paper Direct Preference Optimization: Your Language Model is Secretly a Reward Model proposes DPO, a promising method for using comparison data directly to model human preference, eliminating the need for a reward model and the RL step. Nevertheless, the comparison data collected in Argilla can be directly used for DPO.\n", - "\n", - "
" - ] + "b4a7efcf448247c586546cee7ae4e853": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ad4dd7f68c00437e878e2965e08457c8", + "IPY_MODEL_e7b96b86f6df4826b04171eaec7fa2a6", + "IPY_MODEL_56021dd10ea447029b2d64a3954f50a8" + ], + "layout": "IPY_MODEL_ff6274caa2cb4346b9862dcbf1846184" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "F8r9_XJi1K9P" - }, - "source": [ - "## Train the reward model with `trl`\n", - "In this step, we will use the `RewardTrainer` from the trl library. To understand this step, we recommend you to [check the trl docs](https://huggingface.co/docs/trl/reward_trainer). \n", - "\n", - "
\n", - "To run this step, you need to rank some examples using the Argilla UI, or run the step above with the load from Hugging Face call: `feedback_dataset = FeedbackDataset.from_huggingface`\n", - "
\n", - "\n", - "To train a Reward Model, you need to choose a base model to fine-tune. In the literature, the base model is typically the supervised fine-tuned model resulting from the instruction-tuning step. In this example, that would mean using the [Falcon-7B-instruct model](https://huggingface.co/tiiuae/falcon-7b-instruct). However, as Reward Models are essentially classifiers you can use a more lightweight backbone model, for this example we will use `distilroberta-base` but feel free to experiment with other models.\n", - "\n", - "The code below fine-tunes a `SequenceClassification` model with our preference dataset. The most interesting part is the `formatting_func` function. This function combines instructions with chosen and rejected responses, creating two new strings. These strings are tokenized, becoming input for a reward model that learns to distinguish between good and bad responses based on these examples. The model will be optimized to assign higher values to preferred responses and lower values to rejected responses.\n" - ] + "b9ed9f3bcbfd4403b4c1ea9eb3001543": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_324c48fb64fb4021a4acec428fcf53ac", + "placeholder": "​", + "style": "IPY_MODEL_841a58e70b3f4621a4419d2872b3d348", + "value": " 5.21M/5.21M [00:01<00:00, 5.76MB/s]" + } }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 516, - "referenced_widgets": [ - "b44d62c0bef242fabab85ff6129b42dc", - "9a872753cf9a4fde9caa69660e85c896", - "2a9d2460cf024776bb0010ff6f1a5fa7", - "8a6d78da941d429b981d82a1b0d249ab", - "8b2770c23c424f8698d7f3ca60bf5d9a", - "9fc9251942db44548dcc9b55312f6963", - "660b25b7377a4bd0a2baf03a437dc060", - "6e00a979fa604747b320018d4d5549ad", - "5ed78905729747d8a3dfe68590950d73", - "fdd275ff03504203b5dbce2ea732fd44", - "7d01e2401fa44199afb31d5dcc443761" - ] - }, - "id": "-MtSUam61J_Z", - "outputId": "6680758c-3b9c-444a-e73b-48bbb4c1b4b5" - }, - "outputs": [ - { - "data": { - "text/html": [ - "
[08/08/23 16:36:51] INFO     INFO:ArgillaTRLTrainer:{'eval_loss': 0.1626577377319336, 'eval_accuracy':   trl.py:226\n",
-              "                             0.937204591492235, 'eval_runtime': 6.5907, 'eval_samples_per_second':                 \n",
-              "                             224.709, 'eval_steps_per_second': 28.221, 'epoch': 1.0}                               \n",
-              "
\n" - ], - "text/plain": [ - "\u001b[2;36m[08/08/23 16:36:51]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:ArgillaTRLTrainer:\u001b[1m{\u001b[0m\u001b[32m'eval_loss'\u001b[0m: \u001b[1;36m0.1626577377319336\u001b[0m, \u001b[32m'eval_accuracy'\u001b[0m: \u001b]8;id=234053;file://C:\\code\\argilla\\src\\argilla\\client\\feedback\\training\\frameworks\\trl.py\u001b\\\u001b[2mtrl.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=146316;file://C:\\code\\argilla\\src\\argilla\\client\\feedback\\training\\frameworks\\trl.py#226\u001b\\\u001b[2m226\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m \u001b[1;36m0.937204591492235\u001b[0m, \u001b[32m'eval_runtime'\u001b[0m: \u001b[1;36m6.5907\u001b[0m, \u001b[32m'eval_samples_per_second'\u001b[0m: \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;36m224.709\u001b[0m, \u001b[32m'eval_steps_per_second'\u001b[0m: \u001b[1;36m28.221\u001b[0m, \u001b[32m'epoch'\u001b[0m: \u001b[1;36m1.0\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } + "bda482b92a8d4229983e72581154eba9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dab35d7560824b828e1976691e481301": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "dd782a3398d1437f9d3626bdf4b87be4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f632551058f744b0b9ad9696397c8d53", + "IPY_MODEL_914b7ab6f21d486fa42be37545ea73d7", + "IPY_MODEL_94903b2e56ef43b9b39ddd576a5a06ee" ], - "source": [ - "from argilla.feedback import ArgillaTrainer\n", - "\n", - "model_name = \"distilroberta-base\"\n", - "trainer = ArgillaTrainer(\n", - " dataset=feedback_dataset,\n", - " task=task,\n", - " framework=\"trl\",\n", - " model=model_name,\n", - " train_size=0.8,\n", - ")\n", - "trainer.update_config(\n", - " per_device_train_batch_size=16,\n", - " evaluation_strategy=\"steps\",\n", - " logging_steps=200,\n", - ")\n", - "trainer.train(\"./reward_model\")\n" - ] + "layout": "IPY_MODEL_902a2c7722484d4283e5ba0757641a0e" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using the Reward Model\n", - "The resulting model is [fully open-source and available on the Hugging Hub](https://huggingface.co/argilla/roberta-base-reward-model-falcon-dolly).\n", - "\n", - "\n", - "This is how you can use it with your own data:" - ] + "e295f279b61f48d683784131a8d533cc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from transformers import AutoTokenizer, AutoModelForSequenceClassification\n", - "\n", - "tokenizer = AutoTokenizer.from_pretrained(\"argilla/roberta-base-reward-model-falcon-dolly\")\n", - "\n", - "model = AutoModelForSequenceClassification.from_pretrained(\"argilla/roberta-base-reward-model-falcon-dolly\")\n", - "\n", - "def get_score(model, tokenizer, prompt, response):\n", - " # Tokenize the input sequences\n", - " inputs = tokenizer.encode_plus(prompt, response, truncation=True, padding=\"max_length\", max_length=512, return_tensors=\"pt\")\n", - "\n", - " # Perform forward pass\n", - " with torch.no_grad():\n", - " outputs = model(**inputs)\n", - "\n", - " # Extract the logits\n", - " logits = outputs.logits\n", - "\n", - " return logits.item()\n", - "\n", - "# Example usage\n", - "prompt = \"What is Depreciation\"\n", - "example_less_pref_response = \"What is Depreciation – 10 Important Facts to Know? When a business buys a new asset, the purchase price of that asset is depreciated over time to reflect its usage and eventual obsolescence. Depreciation expense can be a tax deductible expense and is usually a non-cash expense reported on a company’s income statement and balance sheet. The amount of depreciation expense a company reports each year is the difference between the original purchase price of the asset and what the current value of that asset might be. Here are 10 important facts to know about depreciation: 1. Depreciation is a non-cash expense. It is an expense that is reported in a business’s income statement and balance sheet and not a cash flow expense. 2. Depreciation is an accounting standard and it is required to be disclosed in a business’s financial statements. 3. The amount of depreciation is usually a tax expense and not a cash expense reported on a company’s income statement\"\n", - "example_preferred_response = \"Depreciation is the drop in value of an asset due to wear and tear, age and obsolescence (going out of date) as recorded in an organization's financial records.\"\n", - "\n", - "score = get_score(model, tokenizer, prompt, example_less_pref_response)\n", - "print(score)\n", - "# >> -3.915163993835449\n", - "\n", - "score = get_score(model, tokenizer, prompt, example_preferred_response)\n", - "print(score)\n", - "# >> 7.460323333740234" - ] + "e7b96b86f6df4826b04171eaec7fa2a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1c28d5ed9c7a41ad87e7fd83380e05a5", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_dab35d7560824b828e1976691e481301", + "value": 1 + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "cxy90ZY4MBYk" - }, - "source": [ - "## Summary\n", - "\n", - "In this tutorial, we learned how to create a comparison dataset by ranking responses from the Dolly dataset and Falcon. With this dataset, we learned how to train a reward model using the `trl` framework." - ] + "f5d4cf0d204f478094976a30309de13e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "BeKXm3s3IFr9" - }, - "source": [ - "## Appendix: How to build the dataset with pre-loaded responses" - ] + "f632551058f744b0b9ad9696397c8d53": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_23ef7fb2393f45d885d11ada8e5a3534", + "placeholder": "​", + "style": "IPY_MODEL_3aaa39cccc26416f9c7aeab4d50da8c5", + "value": "100%" + } }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "efyVbRYXIL6H" - }, - "outputs": [], - "source": [ - "picker = [\"response-1\", \"response-2\"]\n", - "\n", - "def get_chosen_and_not_chosen(l):\n", - " # Generate a random index between 0 and length of the list - 1\n", - " chosen_id = random.randint(0, len(l) - 1)\n", - " not_chosen_id = 1 - chosen_id # This will be 0 if chosen_id is 1 and vice versa\n", - "\n", - " return l[chosen_id], l[not_chosen_id], chosen_id\n", - "\n", - "records = []\n", - "\n", - "for r in hf_dataset:\n", - " chosen, not_chosen, chosen_id = get_chosen_and_not_chosen(picker)\n", - " chosen_from_falcon, _, _ = get_chosen_and_not_chosen(picker)\n", - " \n", - " record = rg.FeedbackRecord(\n", - " fields={ \"instruction\": r[\"prompt\"], chosen: r[\"original_response\"], not_chosen: r[chosen_from_falcon]},\n", - " responses = [{\"values\": {\"choose-best\": {\"value\": chosen_id+1}}}],\n", - " external_id=r['external_id']\n", - " )\n", - " records.append(record)\n", - "\n", - "# create dataset\n", - "dataset = rg.FeedbackDataset(\n", - " fields=fields,\n", - " questions=[question],\n", - " guidelines=guidelines\n", - ")\n", - "\n", - "# add records and publish\n", - "dataset.add_records(records)\n", - "\n", - "dataset.push_to_huggingface(\"argilla/comparison-data-falcon-with-feedback\")" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "gpuType": "T4", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.17" - }, - "vscode": { - "interpreter": { - "hash": "2d98cb9bf90a932b5bf8e86e91214497eb0e38eb318595fbd6fbd5460fe92036" - } - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "0432b133dc614d1fa8e2d06edc413302": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "04c0309dc09e46419995addb7238f5ee": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0e746ea7187c4b7382de0e5094d6234a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "17ed61c237304d2bb77b80bd4def6466": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "20px" - } - }, - "1c28d5ed9c7a41ad87e7fd83380e05a5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "1eca0bb4151543098cfbb98b64191f92": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_299f4ae7c6524b9d8a06f22063d5a92f", - "IPY_MODEL_4ed8d36201904c6cb43d0fcdf7b18f34", - "IPY_MODEL_b9ed9f3bcbfd4403b4c1ea9eb3001543" - ], - "layout": "IPY_MODEL_a45c853e3a7c4b65ad3bdae9a67607bc" - } - }, - "23cccf0f1f2240ecaabb5d6efa7a8bbb": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "23ef7fb2393f45d885d11ada8e5a3534": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "254c7bb9621c457182976287a0a5ac66": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "299f4ae7c6524b9d8a06f22063d5a92f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fc422a04dbcf4b979fa7569c171ac971", - "placeholder": "​", - "style": "IPY_MODEL_a291ef8013ee445b8f3e36be30e1da69", - "value": "Downloading data: 100%" - } - }, - "2a9d2460cf024776bb0010ff6f1a5fa7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_6e00a979fa604747b320018d4d5549ad", - "max": 7401, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_5ed78905729747d8a3dfe68590950d73", - "value": 7401 - } - }, - "2b34ee7a285a4dbb8c1001d8162b8e44": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "324c48fb64fb4021a4acec428fcf53ac": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "3aaa39cccc26416f9c7aeab4d50da8c5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "3cc6da03d28447d0a7259c460b017296": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ffc2b422e5284a3180e703cab2ebef1e", - "IPY_MODEL_5151b3406f774c57b66c0651e10edb42", - "IPY_MODEL_b04603b9ced743d991a61e42fc0d8ce6" - ], - "layout": "IPY_MODEL_99f75e3565334a0cad80b0ddf434156c" - } - }, - "4d451a340eb341ee88002e9ecce1d2a9": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "4ed8d36201904c6cb43d0fcdf7b18f34": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7ba0eca5e7984391b4d32608c85bd236", - "max": 5211692, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0e746ea7187c4b7382de0e5094d6234a", - "value": 5211692 - } - }, - "5151b3406f774c57b66c0651e10edb42": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9e60f5105a2f430d9c5f382c54b0610c", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_2b34ee7a285a4dbb8c1001d8162b8e44", - "value": 1 - } - }, - "51d0e514f6244692b2b1e6dbfcc0a460": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "52d358e242dd4876a66adbdb89fb03fc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "56021dd10ea447029b2d64a3954f50a8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_23cccf0f1f2240ecaabb5d6efa7a8bbb", - "placeholder": "​", - "style": "IPY_MODEL_f5d4cf0d204f478094976a30309de13e", - "value": " 1/1 [00:04<00:00, 4.35s/it]" - } - }, - "5c23c54cc6bd4475ba755490afb520db": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5d3a83515f8944d491fe3305ee01a314": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5ed78905729747d8a3dfe68590950d73": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "626d87ba234a4af9aed53f633cefbd95": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "660b25b7377a4bd0a2baf03a437dc060": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "6e00a979fa604747b320018d4d5549ad": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7ba0eca5e7984391b4d32608c85bd236": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "7d01e2401fa44199afb31d5dcc443761": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "809240690fb44738b6173cc53504bcf1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "841a58e70b3f4621a4419d2872b3d348": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "8a6d78da941d429b981d82a1b0d249ab": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_fdd275ff03504203b5dbce2ea732fd44", - "placeholder": "​", - "style": "IPY_MODEL_7d01e2401fa44199afb31d5dcc443761", - "value": " 7378/7401 [00:23<00:00, 318.13 examples/s]" - } - }, - "8b2770c23c424f8698d7f3ca60bf5d9a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "8c1c4cac8f0444e4a69bd316efde9080": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "8ed4b17c0dc4464cb5cc8bcfbc6bc803": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_17ed61c237304d2bb77b80bd4def6466", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_809240690fb44738b6173cc53504bcf1", - "value": 1 - } - }, - "902a2c7722484d4283e5ba0757641a0e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "914b7ab6f21d486fa42be37545ea73d7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_04c0309dc09e46419995addb7238f5ee", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_a9dcbe78ae6641d38775818748dd71c4", - "value": 1 - } - }, - "94903b2e56ef43b9b39ddd576a5a06ee": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5c23c54cc6bd4475ba755490afb520db", - "placeholder": "​", - "style": "IPY_MODEL_bda482b92a8d4229983e72581154eba9", - "value": " 1/1 [00:00<00:00, 17.55it/s]" - } - }, - "99f75e3565334a0cad80b0ddf434156c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9a45be3cbddc4d0cbcc3591fe2c2883e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5d3a83515f8944d491fe3305ee01a314", - "placeholder": "​", - "style": "IPY_MODEL_52d358e242dd4876a66adbdb89fb03fc", - "value": " 7401/0 [00:00<00:00, 62827.72 examples/s]" - } - }, - "9a872753cf9a4fde9caa69660e85c896": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9fc9251942db44548dcc9b55312f6963", - "placeholder": "​", - "style": "IPY_MODEL_660b25b7377a4bd0a2baf03a437dc060", - "value": "Map: 100%" - } - }, - "9e60f5105a2f430d9c5f382c54b0610c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9fc9251942db44548dcc9b55312f6963": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a291ef8013ee445b8f3e36be30e1da69": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "a45c853e3a7c4b65ad3bdae9a67607bc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a681213d4f1f4c0db8cf2be709734067": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a9dcbe78ae6641d38775818748dd71c4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "ac4deaed71894ca9b8bdba7e14a34212": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0432b133dc614d1fa8e2d06edc413302", - "placeholder": "​", - "style": "IPY_MODEL_ffe071addb80421dba36b5797a594dbe", - "value": "Generating train split: " - } - }, - "ad4dd7f68c00437e878e2965e08457c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a681213d4f1f4c0db8cf2be709734067", - "placeholder": "​", - "style": "IPY_MODEL_626d87ba234a4af9aed53f633cefbd95", - "value": "Downloading data files: 100%" - } - }, - "b04603b9ced743d991a61e42fc0d8ce6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4d451a340eb341ee88002e9ecce1d2a9", - "placeholder": "​", - "style": "IPY_MODEL_8c1c4cac8f0444e4a69bd316efde9080", - "value": " 1/1 [00:00<00:00, 26.03it/s]" - } - }, - "b3dff83de3894147838358514c8ef63c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ac4deaed71894ca9b8bdba7e14a34212", - "IPY_MODEL_8ed4b17c0dc4464cb5cc8bcfbc6bc803", - "IPY_MODEL_9a45be3cbddc4d0cbcc3591fe2c2883e" - ], - "layout": "IPY_MODEL_51d0e514f6244692b2b1e6dbfcc0a460" - } - }, - "b44d62c0bef242fabab85ff6129b42dc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9a872753cf9a4fde9caa69660e85c896", - "IPY_MODEL_2a9d2460cf024776bb0010ff6f1a5fa7", - "IPY_MODEL_8a6d78da941d429b981d82a1b0d249ab" - ], - "layout": "IPY_MODEL_8b2770c23c424f8698d7f3ca60bf5d9a" - } - }, - "b4a7efcf448247c586546cee7ae4e853": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ad4dd7f68c00437e878e2965e08457c8", - "IPY_MODEL_e7b96b86f6df4826b04171eaec7fa2a6", - "IPY_MODEL_56021dd10ea447029b2d64a3954f50a8" - ], - "layout": "IPY_MODEL_ff6274caa2cb4346b9862dcbf1846184" - } - }, - "b9ed9f3bcbfd4403b4c1ea9eb3001543": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_324c48fb64fb4021a4acec428fcf53ac", - "placeholder": "​", - "style": "IPY_MODEL_841a58e70b3f4621a4419d2872b3d348", - "value": " 5.21M/5.21M [00:01<00:00, 5.76MB/s]" - } - }, - "bda482b92a8d4229983e72581154eba9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "dab35d7560824b828e1976691e481301": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "dd782a3398d1437f9d3626bdf4b87be4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_f632551058f744b0b9ad9696397c8d53", - "IPY_MODEL_914b7ab6f21d486fa42be37545ea73d7", - "IPY_MODEL_94903b2e56ef43b9b39ddd576a5a06ee" - ], - "layout": "IPY_MODEL_902a2c7722484d4283e5ba0757641a0e" - } - }, - "e295f279b61f48d683784131a8d533cc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "e7b96b86f6df4826b04171eaec7fa2a6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1c28d5ed9c7a41ad87e7fd83380e05a5", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_dab35d7560824b828e1976691e481301", - "value": 1 - } - }, - "f5d4cf0d204f478094976a30309de13e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f632551058f744b0b9ad9696397c8d53": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_23ef7fb2393f45d885d11ada8e5a3534", - "placeholder": "​", - "style": "IPY_MODEL_3aaa39cccc26416f9c7aeab4d50da8c5", - "value": "100%" - } - }, - "fc422a04dbcf4b979fa7569c171ac971": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "fdd275ff03504203b5dbce2ea732fd44": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ff6274caa2cb4346b9862dcbf1846184": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ffc2b422e5284a3180e703cab2ebef1e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e295f279b61f48d683784131a8d533cc", - "placeholder": "​", - "style": "IPY_MODEL_254c7bb9621c457182976287a0a5ac66", - "value": "Extracting data files: 100%" - } - }, - "ffe071addb80421dba36b5797a594dbe": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - } - } + "fc422a04dbcf4b979fa7569c171ac971": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fdd275ff03504203b5dbce2ea732fd44": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ff6274caa2cb4346b9862dcbf1846184": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ffc2b422e5284a3180e703cab2ebef1e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e295f279b61f48d683784131a8d533cc", + "placeholder": "​", + "style": "IPY_MODEL_254c7bb9621c457182976287a0a5ac66", + "value": "Extracting data files: 100%" + } + }, + "ffe071addb80421dba36b5797a594dbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } } - }, - "nbformat": 4, - "nbformat_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 } diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/trainer-feedback-setfit.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/trainer-feedback-setfit.ipynb index 68952d7144..c4bf922c68 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/trainer-feedback-setfit.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/trainer-feedback-setfit.ipynb @@ -99,10 +99,7 @@ "source": [ "# Replace api_url with the url to your local host if using Docker or your HF Spaces url\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=r\"https://.hf.space\",\n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=r\"https://.hf.space\", api_key=\"admin.apikey\")" ] }, { @@ -125,7 +122,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=r\"https://.hf.space\", \n", + "# api_url=r\"https://.hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -148,9 +145,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -289,22 +289,22 @@ "source": [ "dataset = rg.FeedbackDataset(\n", " guidelines=\"Add some guidelines for the annotation team here.\",\n", - " fields=[\n", - " rg.TextField(name=\"text\", title=\"banking topics\")\n", - " ],\n", + " fields=[rg.TextField(name=\"text\", title=\"banking topics\")],\n", " questions=[\n", " rg.MultiLabelQuestion(\n", " name=\"topics\",\n", " title=\"Select the topic(s) of the request\",\n", - " labels=data.info.features['label'].names, #these are the original labels present in the dataset\n", - " visible_labels=10\n", + " labels=data.info.features[\n", + " \"label\"\n", + " ].names, # these are the original labels present in the dataset\n", + " visible_labels=10,\n", " ),\n", " rg.LabelQuestion(\n", " name=\"sentiment\",\n", " title=\"What is the sentiment of the message?\",\n", - " labels=[\"positive\", \"neutral\", \"negative\"]\n", - " )\n", - " ]\n", + " labels=[\"positive\", \"neutral\", \"negative\"],\n", + " ),\n", + " ],\n", ")" ] }, @@ -335,12 +335,10 @@ "outputs": [], "source": [ "task_mapping_topics = TrainingTaskMapping.for_text_classification(\n", - " text=dataset.field_by_name(\"text\"),\n", - " label=dataset.question_by_name(\"topics\")\n", + " text=dataset.field_by_name(\"text\"), label=dataset.question_by_name(\"topics\")\n", ")\n", "task_mapping_sentiment = TrainingTaskMapping.for_text_classification(\n", - " text=dataset.field_by_name(\"text\"),\n", - " label=dataset.question_by_name(\"sentiment\")\n", + " text=dataset.field_by_name(\"text\"), label=dataset.question_by_name(\"sentiment\")\n", ")" ] }, @@ -368,7 +366,9 @@ "source": [ "from transformers import pipeline\n", "\n", - "sentiment_classifier = pipeline(model=\"cardiffnlp/twitter-roberta-base-sentiment-latest\")" + "sentiment_classifier = pipeline(\n", + " model=\"cardiffnlp/twitter-roberta-base-sentiment-latest\"\n", + ")" ] }, { @@ -394,17 +394,17 @@ "\n", "records = [\n", " rg.FeedbackRecord(\n", - " fields={\"text\": record['text']},\n", + " fields={\"text\": record[\"text\"]},\n", " responses=[\n", " {\n", " \"values\": {\n", " # Get the sentiment from a pretrained transformer model\n", " \"sentiment\": {\"value\": get_sentiment(record[\"text\"])},\n", " # Add the topics as a list\n", - " \"topics\": {\"value\": [topic_int2str(record[\"label\"])]}\n", + " \"topics\": {\"value\": [topic_int2str(record[\"label\"])]},\n", " }\n", " }\n", - " ]\n", + " ],\n", " )\n", " for record in data.select(record_indices)\n", "]" diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-fastfit-agreement.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-fastfit-agreement.ipynb index b1e4203f3e..49cd9d4d6f 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-fastfit-agreement.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-fastfit-agreement.ipynb @@ -151,11 +151,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -178,7 +174,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -201,9 +197,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -264,8 +263,8 @@ "source": [ "# Get the 151 classes and prepare the conversion dictionaries\n", "labels = [label for label in hf_dataset.features[\"intent\"].names if label]\n", - "label2id = {label:id for id, label in enumerate(labels)}\n", - "id2label = {id:label for label, id in label2id.items()}\n", + "label2id = {label: id for id, label in enumerate(labels)}\n", + "id2label = {id: label for label, id in label2id.items()}\n", "len(labels)" ] }, @@ -283,15 +282,15 @@ "outputs": [], "source": [ "# Save the needed data\n", - "splits = ['train', 'val', 'test']\n", + "splits = [\"train\", \"val\", \"test\"]\n", "\n", - "data = {split: {'text': [], 'intent': []} for split in splits}\n", + "data = {split: {\"text\": [], \"intent\": []} for split in splits}\n", "\n", "for split in splits:\n", " for entry in hf_dataset:\n", - " if entry['split'] == split:\n", - " data[split]['text'].append(entry['text'])\n", - " data[split]['intent'].append(id2label[entry['intent']])\n", + " if entry[\"split\"] == split:\n", + " data[split][\"text\"].append(entry[\"text\"])\n", + " data[split][\"intent\"].append(id2label[entry[\"intent\"]])\n", "\n", "# Create the dataset\n", "dataset = DatasetDict({split: Dataset.from_dict(data[split]) for split in data})" @@ -335,10 +334,12 @@ ], "source": [ "# Sample the dataset\n", - "dataset[\"train\"] = sample_dataset(dataset[\"train\"], label_column=\"intent\", num_samples_per_label=10, seed=42)\n", + "dataset[\"train\"] = sample_dataset(\n", + " dataset[\"train\"], label_column=\"intent\", num_samples_per_label=10, seed=42\n", + ")\n", "\n", "# Rename the validation split\n", - "dataset['validation'] = dataset.pop('val')\n", + "dataset[\"validation\"] = dataset.pop(\"val\")\n", "\n", "dataset" ] @@ -530,7 +531,9 @@ "source": [ "# Load the model and tokenizer\n", "model = FastFit.from_pretrained(\"intent_fastfit_model\")\n", - "tokenizer = AutoTokenizer.from_pretrained(\"sentence-transformers/paraphrase-mpnet-base-v2\")" + "tokenizer = AutoTokenizer.from_pretrained(\n", + " \"sentence-transformers/paraphrase-mpnet-base-v2\"\n", + ")" ] }, { @@ -574,9 +577,9 @@ " {\n", " \"text\": sample[\"text\"],\n", " \"true_intent\": sample[\"intent\"],\n", - " \"predicted_intent\": classifier(sample[\"text\"])\n", + " \"predicted_intent\": classifier(sample[\"text\"]),\n", " }\n", - " for sample in dataset['validation'].to_list()[:100]\n", + " for sample in dataset[\"validation\"].to_list()[:100]\n", "]" ] }, @@ -686,7 +689,7 @@ " \"value\": sample[\"true_intent\"],\n", " }\n", " },\n", - " \"user_id\": users[0].id\n", + " \"user_id\": users[0].id,\n", " },\n", " {\n", " \"values\": {\n", @@ -694,7 +697,7 @@ " \"value\": random.choice([sample[\"true_intent\"], labels[0]]),\n", " }\n", " },\n", - " \"user_id\": users[1].id\n", + " \"user_id\": users[1].id,\n", " },\n", " {\n", " \"values\": {\n", @@ -702,10 +705,11 @@ " \"value\": sample[\"predicted_intent\"][0][0][\"label\"],\n", " }\n", " },\n", - " \"user_id\": users[2].id\n", - " }\n", - " ]\n", - " ) for sample in predictions\n", + " \"user_id\": users[2].id,\n", + " },\n", + " ],\n", + " )\n", + " for sample in predictions\n", "]\n", "dataset.add_records(records)" ] @@ -759,7 +763,9 @@ "outputs": [], "source": [ "# Retrieve the annotated dataset\n", - "feedback_dataset = rg.FeedbackDataset.from_argilla(name=\"intent_feedback_dataset\", workspace=\"admin\")" + "feedback_dataset = rg.FeedbackDataset.from_argilla(\n", + " name=\"intent_feedback_dataset\", workspace=\"admin\"\n", + ")" ] }, { @@ -772,7 +778,9 @@ "responses_by_annotator = {}\n", "for record in feedback_dataset.records:\n", " if record.responses:\n", - " submitted_responses = [response for response in record.responses if response.status == \"submitted\"]\n", + " submitted_responses = [\n", + " response for response in record.responses if response.status == \"submitted\"\n", + " ]\n", " for response in submitted_responses:\n", " print(response)\n", " annotator_id = str(response.user_id)\n", @@ -903,10 +911,10 @@ "source": [ "# Create a heatmap with seaborn and matplotlib\n", "plt.figure(figsize=(7, 5))\n", - "sns.heatmap(confusion_matrix, annot=False, fmt='d', cmap='Blues')\n", - "plt.xlabel('Predicted')\n", - "plt.ylabel('True')\n", - "plt.title('Confusion Matrix')\n", + "sns.heatmap(confusion_matrix, annot=False, fmt=\"d\", cmap=\"Blues\")\n", + "plt.xlabel(\"Predicted\")\n", + "plt.ylabel(\"True\")\n", + "plt.title(\"Confusion Matrix\")\n", "plt.show()\n", "\n", "# plt.savefig('confusion_matrix.png', dpi=300) # save the image" @@ -994,9 +1002,15 @@ "outputs": [], "source": [ "# Compute Cohen's Kappa for each pair of annotators\n", - "annotator1_2 = cohen_kappa_score(responses_by_annotator[str(users[0].id)], responses_by_annotator[str(users[1].id)])\n", - "annotator2_3 = cohen_kappa_score(responses_by_annotator[str(users[1].id)], responses_by_annotator[str(users[2].id)])\n", - "annotator1_3 = cohen_kappa_score(responses_by_annotator[str(users[0].id)], responses_by_annotator[str(users[2].id)])" + "annotator1_2 = cohen_kappa_score(\n", + " responses_by_annotator[str(users[0].id)], responses_by_annotator[str(users[1].id)]\n", + ")\n", + "annotator2_3 = cohen_kappa_score(\n", + " responses_by_annotator[str(users[1].id)], responses_by_annotator[str(users[2].id)]\n", + ")\n", + "annotator1_3 = cohen_kappa_score(\n", + " responses_by_annotator[str(users[0].id)], responses_by_annotator[str(users[2].id)]\n", + ")" ] }, { @@ -1054,9 +1068,9 @@ "for annotator, responses in responses_by_annotator.items():\n", " for i, response in enumerate(responses):\n", " ratings[i, label2id[response]] += 1\n", - " \n", + "\n", "# Compute Fleiss' Kappa\n", - "kappa = fleiss_kappa(ratings, method='fleiss')" + "kappa = fleiss_kappa(ratings, method=\"fleiss\")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-llm-mistral-sft.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-llm-mistral-sft.ipynb index aef509bb49..4814a1c017 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-llm-mistral-sft.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-llm-mistral-sft.ipynb @@ -107,11 +107,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\",\n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -135,7 +131,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -159,9 +155,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -190,14 +189,18 @@ "outputs": [], "source": [ "dataset = rg.FeedbackDataset(\n", - " fields = [\n", + " fields=[\n", " rg.TextField(name=\"background\"),\n", " rg.TextField(name=\"prompt\"),\n", " rg.TextField(name=\"response\", title=\"Final Response\"),\n", " ],\n", - " questions = [\n", - " rg.LabelQuestion(name=\"quality\", title=\"Is it a Good or Bad response?\", labels=[\"Good\", \"Bad\"])\n", - " ]\n", + " questions=[\n", + " rg.LabelQuestion(\n", + " name=\"quality\",\n", + " title=\"Is it a Good or Bad response?\",\n", + " labels=[\"Good\", \"Bad\"],\n", + " )\n", + " ],\n", ")" ] }, @@ -247,14 +250,15 @@ "source": [ "from typing import Dict, Any\n", "\n", + "\n", "def extract_background_prompt_response(text: str) -> Dict[str, Any]:\n", - " '''Extract the anthropic prompt from a prompt and response pair.'''\n", + " \"\"\"Extract the anthropic prompt from a prompt and response pair.\"\"\"\n", " start_prompt = text.find(\":\")\n", " end_prompt = text.rfind(\":\")\n", " # Background is anything before the first :\n", " background = text[:start_prompt].strip()\n", " # Prompt is anything between the first : (inclusive) and the last : (exclusive)\n", - " prompt = text[start_prompt: end_prompt].strip()\n", + " prompt = text[start_prompt:end_prompt].strip()\n", " # Response is everything after the last : (inclusive)\n", " response = text[end_prompt:].strip()\n", " return {\"background\": background, \"prompt\": prompt, \"response\": response}\n", @@ -286,7 +290,7 @@ " )\n", " for sample in data\n", "]\n", - "dataset.add_records(records)\n" + "dataset.add_records(records)" ] }, { @@ -357,7 +361,9 @@ "import torch\n", "\n", "model_id = \"mistralai/Mistral-7B-v0.1\"\n", - "model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map=\"auto\")\n", + "model = AutoModelForCausalLM.from_pretrained(\n", + " model_id, torch_dtype=torch.float16, device_map=\"auto\"\n", + ")\n", "tokenizer = AutoTokenizer.from_pretrained(model_id)\n", "tokenizer.pad_token_id = tokenizer.eos_token_id" ] @@ -402,6 +408,7 @@ "\n", "ANNOTATED_ONLY = False\n", "\n", + "\n", "def formatting_func(sample: Dict[str, Any]) -> Iterator[str]:\n", " if ANNOTATED_ONLY:\n", " # Discard if there are no annotations...\n", @@ -410,7 +417,10 @@ "\n", " # or if it is annotated as \"Bad\" or discarded.\n", " first_annotation = sample[\"quality\"][0]\n", - " if first_annotation[\"value\"] == \"Bad\" or first_annotation[\"status\"] == \"discarded\":\n", + " if (\n", + " first_annotation[\"value\"] == \"Bad\"\n", + " or first_annotation[\"status\"] == \"discarded\"\n", + " ):\n", " return\n", "\n", " # Filter out responses that are likely low quality\n", @@ -419,8 +429,10 @@ "\n", " # Add between all prompt-response pairs\n", " prompt = sample[\"prompt\"]\n", - " prompt = prompt.replace(\":\", f\"{tokenizer.eos_token}{tokenizer.bos_token}:\")\n", - " prompt = prompt[prompt.find(\":\"):]\n", + " prompt = prompt.replace(\n", + " \":\", f\"{tokenizer.eos_token}{tokenizer.bos_token}:\"\n", + " )\n", + " prompt = prompt[prompt.find(\":\") :]\n", " # Add response and optionally the background to the full text.\n", " output = prompt + \" \" + sample[\"response\"]\n", " if sample[\"background\"]:\n", @@ -432,6 +444,7 @@ " assert output.count(\"\") + 1 == output.count(\"\")\n", " return output\n", "\n", + "\n", "task = TrainingTask.for_supervised_fine_tuning(formatting_func)" ] }, @@ -574,6 +587,7 @@ "source": [ "from transformers import DataCollatorForSeq2Seq, BatchEncoding\n", "\n", + "\n", "class DataCollatorForSeq2SeqCopyLabels(DataCollatorForSeq2Seq):\n", " def __call__(self, features, return_tensors=None) -> BatchEncoding:\n", " for feature in features:\n", @@ -643,7 +657,15 @@ "source": [ "from typing import Optional\n", "import torch\n", - "from transformers import TrainerCallback, TrainerControl, TrainerState, GenerationConfig, TrainingArguments, PreTrainedModel, PreTrainedTokenizer\n", + "from transformers import (\n", + " TrainerCallback,\n", + " TrainerControl,\n", + " TrainerState,\n", + " GenerationConfig,\n", + " TrainingArguments,\n", + " PreTrainedModel,\n", + " PreTrainedTokenizer,\n", + ")\n", "\n", "\n", "class GenerationCallback(TrainerCallback):\n", @@ -651,7 +673,15 @@ " super().__init__()\n", " self.prompt = prompt\n", "\n", - " def on_evaluate(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, model: Optional[PreTrainedModel] = None, tokenizer: Optional[PreTrainedTokenizer] = None, **kwargs):\n", + " def on_evaluate(\n", + " self,\n", + " args: TrainingArguments,\n", + " state: TrainerState,\n", + " control: TrainerControl,\n", + " model: Optional[PreTrainedModel] = None,\n", + " tokenizer: Optional[PreTrainedTokenizer] = None,\n", + " **kwargs,\n", + " ):\n", " # Tokenize the prompt and send it to the right device\n", " inputs = tokenizer(self.prompt, return_tensors=\"pt\").to(model.device)\n", "\n", @@ -667,7 +697,9 @@ " print(tokenizer.batch_decode(outputs, skip_special_tokens=False)[0])\n", "\n", "\n", - "generation_callback = GenerationCallback(\": What were Nelson Mandela's relations with the ANC? :\")" + "generation_callback = GenerationCallback(\n", + " \": What were Nelson Mandela's relations with the ANC? :\"\n", + ")" ] }, { @@ -838,8 +870,12 @@ "inputs = tokenizer(text, return_tensors=\"pt\").to(model.device)\n", "\n", "with torch.no_grad():\n", - " outputs = model.generate(input_ids=inputs[\"input_ids\"], max_new_tokens=250, pad_token_id=tokenizer.pad_token_id)\n", - "print(tokenizer.batch_decode(outputs, skip_special_tokens=False)[0])\n" + " outputs = model.generate(\n", + " input_ids=inputs[\"input_ids\"],\n", + " max_new_tokens=250,\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " )\n", + "print(tokenizer.batch_decode(outputs, skip_special_tokens=False)[0])" ] }, { @@ -860,7 +896,11 @@ "inputs = tokenizer(text, return_tensors=\"pt\").to(model.device)\n", "\n", "with torch.no_grad():\n", - " outputs = model.generate(input_ids=inputs[\"input_ids\"], max_new_tokens=250, pad_token_id=tokenizer.pad_token_id)\n", + " outputs = model.generate(\n", + " input_ids=inputs[\"input_ids\"],\n", + " max_new_tokens=250,\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " )\n", "print(tokenizer.batch_decode(outputs, skip_special_tokens=False)[0])" ] }, @@ -952,7 +992,11 @@ "inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device)\n", "\n", "with torch.no_grad():\n", - " outputs = model.generate(input_ids=inputs[\"input_ids\"], max_new_tokens=250, pad_token_id=tokenizer.pad_token_id)\n", + " outputs = model.generate(\n", + " input_ids=inputs[\"input_ids\"],\n", + " max_new_tokens=250,\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " )\n", "print(tokenizer.batch_decode(outputs, skip_special_tokens=False)[0])" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-qa-transformers.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-qa-transformers.ipynb index 8e6a494253..3186b4841d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-qa-transformers.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-qa-transformers.ipynb @@ -143,7 +143,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -167,9 +167,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -301,10 +304,15 @@ " \"context\": item[\"context\"],\n", " },\n", " suggestions=[\n", - " {\"question_name\": \"answer\",\n", - " \"value\": question_answerer(question=item[\"question\"], context=item[\"context\"])[\"answer\"]},\n", - " ]\n", - " ) for item in dataset_hf\n", + " {\n", + " \"question_name\": \"answer\",\n", + " \"value\": question_answerer(\n", + " question=item[\"question\"], context=item[\"context\"]\n", + " )[\"answer\"],\n", + " },\n", + " ],\n", + " )\n", + " for item in dataset_hf\n", "]" ] }, @@ -339,7 +347,9 @@ "metadata": {}, "outputs": [], "source": [ - "remote_dataset = dataset.push_to_argilla(name=\"demonstration_data_squad\", workspace=\"argilla\") " + "remote_dataset = dataset.push_to_argilla(\n", + " name=\"demonstration_data_squad\", workspace=\"argilla\"\n", + ")" ] }, { @@ -371,7 +381,9 @@ "metadata": {}, "outputs": [], "source": [ - "annotated_dataset = rg.FeedbackDataset.from_argilla(\"demonstration_data_squad\", workspace=\"argilla\")" + "annotated_dataset = rg.FeedbackDataset.from_argilla(\n", + " \"demonstration_data_squad\", workspace=\"argilla\"\n", + ")" ] }, { @@ -398,7 +410,9 @@ ], "source": [ "item = annotated_dataset[3]\n", - "print(f\"Question: {item.fields['question']}\\nContext: {item.fields['context']}\\nAnnotated Answer: {item.responses[0].values['answer'].value}\")" + "print(\n", + " f\"Question: {item.fields['question']}\\nContext: {item.fields['context']}\\nAnnotated Answer: {item.responses[0].values['answer'].value}\"\n", + ")" ] }, { @@ -461,6 +475,7 @@ " continue\n", " yield question, context, answer[\"value\"]\n", "\n", + "\n", "task = TrainingTask.for_question_answering(formatting_func=formatting_func)" ] }, @@ -501,13 +516,13 @@ "outputs": [], "source": [ "trainer.update_config(\n", - " learning_rate = 4e-2,\n", - " weight_decay = 0.01,\n", - " max_grad_norm = 1,\n", - " num_train_epochs = 3,\n", - " logging_strategy = \"steps\",\n", - " save_strategy = \"steps\",\n", - " save_steps = 100,\n", + " learning_rate=4e-2,\n", + " weight_decay=0.01,\n", + " max_grad_norm=1,\n", + " num_train_epochs=3,\n", + " logging_strategy=\"steps\",\n", + " save_strategy=\"steps\",\n", + " save_steps=100,\n", ")" ] }, @@ -543,10 +558,7 @@ "outputs": [], "source": [ "qna_pipeline = pipeline(\n", - " \"question-answering\",\n", - " model=\"my_qna_model\",\n", - " tokenizer=tokenizer,\n", - " device=device\n", + " \"question-answering\", model=\"my_qna_model\", tokenizer=tokenizer, device=device\n", ")" ] }, @@ -577,7 +589,10 @@ } ], "source": [ - "qna_pipeline(question=\"For what is Venezuela famous?\", context=\"Venezuela is known for its natural beauty.\")" + "qna_pipeline(\n", + " question=\"For what is Venezuela famous?\",\n", + " context=\"Venezuela is known for its natural beauty.\",\n", + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-setfit-absa.ipynb b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-setfit-absa.ipynb index 14d96f3d46..0c4661e83b 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/feedback/training-setfit-absa.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/feedback/training-setfit-absa.ipynb @@ -134,11 +134,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"argilla.apikey\",\n", - " workspace=\"argilla\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"argilla.apikey\", workspace=\"argilla\")" ] }, { @@ -161,7 +157,7 @@ "# # Replace api_url with the url to your HF Spaces URL\n", "# # Replace api_key if you configured a custom API key\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"admin.apikey\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", "# )" @@ -184,9 +180,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -229,7 +228,9 @@ ], "source": [ "# Load the dataset\n", - "hf_dataset = load_dataset(\"jakartaresearch/semeval-absa\", \"restaurant\", split=\"train\", trust_remote_code=True)\n", + "hf_dataset = load_dataset(\n", + " \"jakartaresearch/semeval-absa\", \"restaurant\", split=\"train\", trust_remote_code=True\n", + ")\n", "hf_dataset[0]" ] }, @@ -260,8 +261,8 @@ "train_eval_split = hf_dataset_sample.train_test_split(test_size=0.3)\n", "\n", "# Converting the training and development datasets to pandas DataFrames\n", - "train_df = train_eval_split['train'].to_pandas()\n", - "eval_df = train_eval_split['test'].to_pandas()" + "train_df = train_eval_split[\"train\"].to_pandas()\n", + "eval_df = train_eval_split[\"test\"].to_pandas()" ] }, { @@ -284,31 +285,37 @@ "def calculate_ordinal(text, term, from_index):\n", " ordinal = 0\n", " start = 0\n", - " \n", + "\n", " while start < from_index:\n", " found_index = text.find(term, start)\n", " if found_index == -1 or found_index >= from_index:\n", - " break \n", + " break\n", " ordinal += 1\n", " start = found_index + len(term)\n", " return ordinal\n", "\n", + "\n", "# Function to prepare the dataset for training\n", "def prepare_dataset(df):\n", " prepared_data = []\n", " for _, row in df.iterrows():\n", - " text, aspects = row['text'], row['aspects']\n", - " for term, polarity, start_index in zip(aspects['term'], aspects['polarity'], aspects['from']):\n", - " if polarity not in ['positive', 'negative']: # Skip neutral polarity\n", + " text, aspects = row[\"text\"], row[\"aspects\"]\n", + " for term, polarity, start_index in zip(\n", + " aspects[\"term\"], aspects[\"polarity\"], aspects[\"from\"]\n", + " ):\n", + " if polarity not in [\"positive\", \"negative\"]: # Skip neutral polarity\n", " continue\n", - " prepared_data.append({\n", - " \"text\": text,\n", - " \"span\": term,\n", - " \"label\": polarity,\n", - " \"ordinal\": calculate_ordinal(text, term, start_index)\n", - " })\n", + " prepared_data.append(\n", + " {\n", + " \"text\": text,\n", + " \"span\": term,\n", + " \"label\": polarity,\n", + " \"ordinal\": calculate_ordinal(text, term, start_index),\n", + " }\n", + " )\n", " return prepared_data\n", "\n", + "\n", "# Helper function to convert a list of dictionaries to a dictionary of lists\n", "def list_dict_to_dict_list(list_dict):\n", " return {key: [dic[key] for dic in list_dict] for key in list_dict[0]}" @@ -479,6 +486,7 @@ "source": [ "# Check your GPU availability\n", "import torch\n", + "\n", "if torch.cuda.is_available():\n", " device = torch.device(\"cuda\")\n", " print(f\"Using {torch.cuda.get_device_name(0)}\")\n", @@ -584,10 +592,7 @@ "outputs": [], "source": [ "# Save the classification models locally or push them to the Hub\n", - "model.save_pretrained(\n", - " \"models/setfit-absa-aspect\", \n", - " \"models/setfit-absa-polarity\"\n", - ")\n", + "model.save_pretrained(\"models/setfit-absa-aspect\", \"models/setfit-absa-polarity\")\n", "\n", "# model.push_to_hub(\n", "# \"[hf-repo]/setfit-absa-aspect\",\n", @@ -648,8 +653,8 @@ "outputs": [], "source": [ "# Define the sentences and labels\n", - "labels = [label for label in test_dataset_sample['label']]\n", - "sentences = [text for text in test_dataset_sample['text']]\n", + "labels = [label for label in test_dataset_sample[\"label\"]]\n", + "sentences = [text for text in test_dataset_sample[\"text\"]]\n", "\n", "# Helper dictionaries\n", "id2label_overall = {0: \"NEG\", 1: \"NEU\", 2: \"POS\"}\n", @@ -692,8 +697,7 @@ "source": [ "# Load the models\n", "model = AbsaModel.from_pretrained(\n", - " \"models/setfit-absa-model-aspect\", \n", - " \"models/setfit-absa-model-polarity\"\n", + " \"models/setfit-absa-model-aspect\", \"models/setfit-absa-model-polarity\"\n", ")\n", "\n", "# Make predictions\n", @@ -759,7 +763,7 @@ " rg.LabelQuestion(\n", " name=\"overall-sentiment\",\n", " title=\"What is the overall sentiment of the text?\",\n", - " labels={\"POS\": \"Positive\", \"NEU\":\"Neutral\", \"NEG\": \"Negative\"},\n", + " labels={\"POS\": \"Positive\", \"NEU\": \"Neutral\", \"NEG\": \"Negative\"},\n", " required=True,\n", " ),\n", " rg.SpanQuestion(\n", @@ -767,10 +771,10 @@ " title=\"Highlight the aspects and their polarity in the text:\",\n", " labels={\"POS\", \"NEG\"},\n", " field=\"aspect-based-sentiment-analysis\",\n", - " required=True\n", + " required=True,\n", " ),\n", " ],\n", - " guidelines=\"Please, read the question carefully and try to answer it as accurately as possible.\"\n", + " guidelines=\"Please, read the question carefully and try to answer it as accurately as possible.\",\n", ")\n", "rg_dataset = rg_dataset.push_to_argilla(name=\"absa-dataset\", workspace=\"argilla\")" ] @@ -793,31 +797,41 @@ "# Helper function to find the span indices in the sentence and return a list of SpanValueSchema objects\n", "nlp = spacy.load(\"en_core_web_lg\")\n", "\n", + "\n", "def find_span_indices(sentence, predictions):\n", " doc = nlp(sentence)\n", " found_spans = []\n", - " \n", - " last_found_index = {span['span']: -1 for span in predictions}\n", - " \n", + "\n", + " last_found_index = {span[\"span\"]: -1 for span in predictions}\n", + "\n", " for span_dict in predictions:\n", - " span_text = span_dict['span']\n", + " span_text = span_dict[\"span\"]\n", " found = False\n", "\n", " for i in range(len(doc)):\n", - " window_text = \" \".join(doc[j].text for j in range(i, min(i + len(span_text.split()), len(doc))))\n", - " \n", + " window_text = \" \".join(\n", + " doc[j].text for j in range(i, min(i + len(span_text.split()), len(doc)))\n", + " )\n", + "\n", " if window_text == span_text and i > last_found_index[span_text]:\n", " start_index = doc[i].idx\n", - " end_index = doc[i + len(span_text.split()) - 1].idx + len(doc[i + len(span_text.split()) - 1])\n", - " \n", - " found_spans.append(SpanValueSchema(start=start_index, end=end_index, \n", - " label=id2label_span[span_dict['polarity']]))\n", + " end_index = doc[i + len(span_text.split()) - 1].idx + len(\n", + " doc[i + len(span_text.split()) - 1]\n", + " )\n", + "\n", + " found_spans.append(\n", + " SpanValueSchema(\n", + " start=start_index,\n", + " end=end_index,\n", + " label=id2label_span[span_dict[\"polarity\"]],\n", + " )\n", + " )\n", " last_found_index[span_text] = i\n", " found = True\n", " break\n", " if not found:\n", " raise ValueError(f\"Span '{span_text}' not found in the sentence.\")\n", - " \n", + "\n", " return found_spans" ] }, @@ -831,21 +845,19 @@ "records = [\n", " rg.FeedbackRecord(\n", " fields={\n", - " \"text\": sentence, \n", - " \"aspect-based-sentiment-analysis\": sentence, \n", + " \"text\": sentence,\n", + " \"aspect-based-sentiment-analysis\": sentence,\n", " },\n", " responses=[\n", " {\n", " \"values\": {\n", - " \"overall-sentiment\": {\n", - " \"value\": id2label_overall[label]\n", - " },\n", + " \"overall-sentiment\": {\"value\": id2label_overall[label]},\n", " \"aspect-polarity\": {\n", " \"value\": find_span_indices(sentence, prediction),\n", " },\n", " }\n", " }\n", - " ]\n", + " ],\n", " )\n", " for sentence, prediction, label in zip(sentences, predictions, labels)\n", "]\n", @@ -887,7 +899,9 @@ "outputs": [], "source": [ "# Retrieve the annotated dataset and filter the records\n", - "annotated_dataset = rg.FeedbackDataset.from_argilla(name=\"absa-dataset\", workspace=\"argilla\")\n", + "annotated_dataset = rg.FeedbackDataset.from_argilla(\n", + " name=\"absa-dataset\", workspace=\"argilla\"\n", + ")\n", "filtered_dataset = annotated_dataset.filter_by(response_status=\"submitted\")" ] }, @@ -908,6 +922,7 @@ "def get_span_text(text, start, end):\n", " return text[start:end]\n", "\n", + "\n", "def prepare_absa_dataset(records):\n", " data = []\n", " for record in records:\n", @@ -915,16 +930,22 @@ "\n", " for response in record.responses:\n", " overall_sentiment = response.values[\"overall-sentiment\"].value\n", - " \n", + "\n", " for aspect_details in response.values[\"aspect-polarity\"].value:\n", - " aspect_text = get_span_text(text, aspect_details.start, aspect_details.end)\n", - " data.append({\n", - " \"text\": text,\n", - " \"span\": aspect_text,\n", - " \"label\": aspect_details.label,\n", - " \"ordinal\": calculate_ordinal(text, aspect_text, aspect_details.start),\n", - " \"overall\": overall_sentiment\n", - " })\n", + " aspect_text = get_span_text(\n", + " text, aspect_details.start, aspect_details.end\n", + " )\n", + " data.append(\n", + " {\n", + " \"text\": text,\n", + " \"span\": aspect_text,\n", + " \"label\": aspect_details.label,\n", + " \"ordinal\": calculate_ordinal(\n", + " text, aspect_text, aspect_details.start\n", + " ),\n", + " \"overall\": overall_sentiment,\n", + " }\n", + " )\n", " return data" ] }, diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_learning_with_setfit.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_learning_with_setfit.ipynb index c69d847962..0773720e4d 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_learning_with_setfit.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_learning_with_setfit.ipynb @@ -115,15 +115,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -132,6 +129,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -143,7 +141,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -174,6 +172,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -184,14 +183,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -217,7 +220,7 @@ "\n", "unlabelled = rg.DatasetForTextClassification.from_datasets(unlabelled)\n", "\n", - "rg.log(unlabelled, \"imdb_unlabelled\")\n" + "rg.log(unlabelled, \"imdb_unlabelled\")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_text_classification_with_active_learning.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_text_classification_with_active_learning.ipynb index dad8b22c35..a6e886e777 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_text_classification_with_active_learning.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/few_shot_text_classification_with_active_learning.ipynb @@ -132,15 +132,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -149,6 +146,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -160,7 +158,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -169,6 +167,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -179,14 +178,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -224,12 +227,12 @@ "# Disables the progress bar for notebooks: https://github.com/huggingface/datasets/issues/2651\n", "datasets.logging.get_verbosity = lambda: logging.NOTSET\n", "\n", - "raw_dataset = datasets.load_dataset('ag_news')\n", - "num_classes = np.unique(raw_dataset['train']['label']).shape[0]\n", + "raw_dataset = datasets.load_dataset(\"ag_news\")\n", + "num_classes = np.unique(raw_dataset[\"train\"][\"label\"]).shape[0]\n", "\n", - "print('First 10 training samples:\\n')\n", + "print(\"First 10 training samples:\\n\")\n", "for i in range(10):\n", - " print(raw_dataset['train']['label'][i], ' ', raw_dataset['train']['text'][i])" + " print(raw_dataset[\"train\"][\"label\"][i], \" \", raw_dataset[\"train\"][\"text\"][i])" ] }, { @@ -258,19 +261,19 @@ "import numpy as np\n", "from small_text import TextDataset\n", "\n", - "num_classes = raw_dataset['train'].features['label'].num_classes\n", + "num_classes = raw_dataset[\"train\"].features[\"label\"].num_classes\n", "\n", "target_labels = np.arange(num_classes)\n", "\n", "train = TextDataset.from_arrays(\n", - " raw_dataset['train']['text'], \n", - " np.array(raw_dataset['train']['label']), \n", - " target_labels=target_labels\n", + " raw_dataset[\"train\"][\"text\"],\n", + " np.array(raw_dataset[\"train\"][\"label\"]),\n", + " target_labels=target_labels,\n", ")\n", "test = TextDataset.from_arrays(\n", - " raw_dataset['test']['text'], \n", - " np.array(raw_dataset['test']['label']), \n", - " target_labels=target_labels\n", + " raw_dataset[\"test\"][\"text\"],\n", + " np.array(raw_dataset[\"test\"][\"label\"]),\n", + " target_labels=target_labels,\n", ")" ] }, @@ -317,23 +320,20 @@ "logging.getLogger(\"small_text\").setLevel(logging.INFO)\n", "\n", "# Define our classifier\n", - "sentence_transformer_model_name = 'sentence-transformers/paraphrase-mpnet-base-v2'\n", + "sentence_transformer_model_name = \"sentence-transformers/paraphrase-mpnet-base-v2\"\n", "setfit_model_args = SetFitModelArguments(sentence_transformer_model_name)\n", - "clf_factory = SetFitClassificationFactory(\n", - " setfit_model_args, \n", - " num_classes\n", - ")\n", + "clf_factory = SetFitClassificationFactory(setfit_model_args, num_classes)\n", "\n", "# Define our query strategy\n", "query_strategy = BreakingTies()\n", - "setfit_train_kwargs = {'show_progress_bar': False}\n", + "setfit_train_kwargs = {\"show_progress_bar\": False}\n", "\n", "# Use the active learner with a pool containing all unlabeled data\n", "active_learner = PoolBasedActiveLearner(\n", - " clf_factory, \n", - " query_strategy, \n", - " train, \n", - " fit_kwargs={'setfit_train_kwargs': setfit_train_kwargs}\n", + " clf_factory,\n", + " query_strategy,\n", + " train,\n", + " fit_kwargs={\"setfit_train_kwargs\": setfit_train_kwargs},\n", ")" ] }, @@ -363,7 +363,7 @@ "NUM_SAMPLES = 20\n", "\n", "# Randomly draw an initial subset from the data pool\n", - "initial_indices = random_initialization(dataset, NUM_SAMPLES)\n" + "initial_indices = random_initialization(dataset, NUM_SAMPLES)" ] }, { @@ -415,7 +415,7 @@ "]\n", "\n", "# Log the initial records to Argilla\n", - "rg.log(records, DATASET_NAME)\n" + "rg.log(records, DATASET_NAME)" ] }, { @@ -444,6 +444,7 @@ "LABEL2INT = raw_dataset[\"train\"].features[\"label\"].str2int\n", "ACCURACIES = []\n", "\n", + "\n", "# Set up the active learning loop with the listener decorator\n", "@listener(\n", " dataset=DATASET_NAME,\n", @@ -497,7 +498,7 @@ " ctx.query_params[\"batch_id\"] = new_batch\n", " print(\"Done!\")\n", "\n", - " print(\"Waiting for annotations ...\")\n" + " print(\"Waiting for annotations ...\")" ] }, { @@ -523,7 +524,7 @@ "metadata": {}, "outputs": [], "source": [ - "active_learning_loop.start()\n" + "active_learning_loop.start()" ] }, { @@ -566,7 +567,7 @@ "source": [ "import pandas as pd\n", "\n", - "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")\n" + "pd.Series(ACCURACIES).plot(xlabel=\"Iteration\", ylabel=\"Accuracy\")" ] }, { @@ -585,7 +586,7 @@ "metadata": {}, "outputs": [], "source": [ - "active_learning_loop.stop()\n" + "active_learning_loop.stop()" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_data_with_semantic_search.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_data_with_semantic_search.ipynb index 1e73304d76..e92798fdf2 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_data_with_semantic_search.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_data_with_semantic_search.ipynb @@ -117,11 +117,7 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { @@ -145,7 +141,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -187,9 +183,12 @@ "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -216,9 +215,9 @@ "\n", "# Encode text field using batched computation\n", "dataset = dataset.map(\n", - " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])}, \n", - " batch_size=32, \n", - " batched=True\n", + " lambda batch: {\"vectors\": encoder.encode(batch[\"text\"])},\n", + " batch_size=32,\n", + " batched=True,\n", ")\n", "\n", "# Removes the original labels because you'll be labeling from scratch\n", @@ -345,7 +344,16 @@ "\n", "# Our labeling scheme\n", "settings = rg.TextClassificationSettings(\n", - " label_schema=[\"change_details\", \"card\", \"atm\", \"top_up\", \"balance\", \"transfer\", \"exchange_rate\", \"pin\"]\n", + " label_schema=[\n", + " \"change_details\",\n", + " \"card\",\n", + " \"atm\",\n", + " \"top_up\",\n", + " \"balance\",\n", + " \"transfer\",\n", + " \"exchange_rate\",\n", + " \"pin\",\n", + " ]\n", ")\n", "\n", "rg.configure_dataset_settings(name=\"banking77-topics\", settings=settings)\n", diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_errors_cleanlab.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_errors_cleanlab.ipynb index 6b90d7ff29..a0e2ea3809 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_errors_cleanlab.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/label_errors_cleanlab.ipynb @@ -114,15 +114,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -131,6 +128,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -142,7 +140,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -171,11 +169,12 @@ "from sklearn.naive_bayes import MultinomialNB\n", "from sklearn.pipeline import Pipeline\n", "\n", - "from argilla.labeling.text_classification import find_label_errors\n" + "from argilla.labeling.text_classification import find_label_errors" ] }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -186,14 +185,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -277,7 +280,7 @@ "classifier = Pipeline([(\"vect\", CountVectorizer()), (\"clf\", MultinomialNB())])\n", "\n", "# Fit the classifier\n", - "classifier.fit(X=ds_train[\"text\"], y=ds_train[\"label\"])\n" + "classifier.fit(X=ds_train[\"text\"], y=ds_train[\"label\"])" ] }, { @@ -411,7 +414,7 @@ "outputs": [], "source": [ "# Uncover label errors in the Argilla web app\n", - "rg.log(records_with_label_error, \"label_errors\")\n" + "rg.log(records_with_label_error, \"label_errors\")" ] }, { @@ -479,7 +482,7 @@ " cv=int(len(ds_train) / len(ds_test)),\n", " method=\"predict_proba\",\n", " n_jobs=-1,\n", - ")\n" + ")" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_ner.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_ner.ipynb index 6ad3468ce1..9b869a6fd0 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_ner.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_ner.ipynb @@ -145,15 +145,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -162,6 +159,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -173,7 +171,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -222,6 +220,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -232,14 +231,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -356,7 +359,6 @@ }, "outputs": [], "source": [ - "\n", "conll2003 = load_dataset(\"conll2003\")" ] }, @@ -533,7 +535,6 @@ "metadata": {}, "outputs": [], "source": [ - "\n", "sports_results_annotator = FunctionAnnotator(\"sports_results\", sports_results_detector)\n", "sports_match_annotator = FunctionAnnotator(\"sports_match\", sports_match_detector)" ] @@ -619,7 +620,7 @@ " yield start, end, label\n", "\n", " start = None\n", - " end = None\n" + " end = None" ] }, { @@ -683,7 +684,7 @@ "for keyword in title_ending:\n", " func = partial(title_detector, keyword=keyword, reverse=True)\n", " annotator = FunctionAnnotator(keyword + \" (end)\", func)\n", - " rule_based_annotator.add_annotator(annotator)\n" + " rule_based_annotator.add_annotator(annotator)" ] }, { @@ -853,7 +854,7 @@ " )\n", "\n", "\n", - "rg.log(records=spans_logger(dev_docs), name=\"conll_2003_dev_spans\")\n" + "rg.log(records=spans_logger(dev_docs), name=\"conll_2003_dev_spans\")" ] }, { @@ -1090,6 +1091,7 @@ " dev_docs, gold_span_name=\"gold\", gold_labels=[\"ORG\", \"MISC\", \"PER\", \"LOC\", \"O\"]\n", ")\n", "\n", + "\n", "def scores_to_df(scores):\n", " for annotator, label_dict in scores.items():\n", " for label, metrics_dict in label_dict.items():\n", @@ -1325,7 +1327,7 @@ "\n", "pd.DataFrame(\n", " [{k: v for k, v in scores.items() if k in [\"ents_p\", \"ents_r\", \"ents_f\"]}]\n", - ").round(3)\n" + ").round(3)" ] }, { diff --git a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_text_classification_semantic_search.ipynb b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_text_classification_semantic_search.ipynb index 06283385de..140d884ae9 100644 --- a/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_text_classification_semantic_search.ipynb +++ b/docs/_source/tutorials_and_integrations/tutorials/other_datasets/weak_supervision_text_classification_semantic_search.ipynb @@ -157,15 +157,12 @@ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", "# Replace workspace with the name of your workspace\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"owner.apikey\",\n", - " workspace=\"admin\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"owner.apikey\", workspace=\"admin\")" ] }, { "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", "metadata": {}, "source": [ "If you're running a private Hugging Face Space, you will also need to set the [HF_TOKEN](https://huggingface.co/settings/tokens) as follows:" @@ -174,6 +171,7 @@ { "cell_type": "code", "execution_count": null, + "id": "acae54e37e7d407bbb7b55eff062a284", "metadata": {}, "outputs": [], "source": [ @@ -185,7 +183,7 @@ "# # Replace api_key if you configured a custom API key\n", "# # Replace workspace with the name of your workspace\n", "# rg.init(\n", - "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\", \n", + "# api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", "# api_key=\"owner.apikey\",\n", "# workspace=\"admin\",\n", "# extra_headers={\"Authorization\": f\"Bearer {os.environ['HF_TOKEN']}\"},\n", @@ -220,6 +218,7 @@ }, { "cell_type": "markdown", + "id": "9a63283cbaf04dbcab1f6479b197f3a8", "metadata": {}, "source": [ "### Enable Telemetry\n", @@ -230,14 +229,18 @@ { "cell_type": "code", "execution_count": null, + "id": "8dd0d8092fe74a7c96281538738b07e2", "metadata": {}, "outputs": [], "source": [ "try:\n", " from argilla.utils.telemetry import tutorial_running\n", + "\n", " tutorial_running()\n", "except ImportError:\n", - " print(\"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\")" + " print(\n", + " \"Telemetry is introduced in Argilla 1.20.0 and not found in the current installation. Skipping telemetry.\"\n", + " )" ] }, { @@ -1656,7 +1659,7 @@ " 0.6,\n", " 0.6,\n", " 0.8,\n", - "]\n" + "]" ] }, { @@ -1788,7 +1791,7 @@ "\n", " return metrics.classification_report(\n", " y_test, predicted, target_names=[k for k in label2int.keys() if k]\n", - " )\n" + " )" ] }, { @@ -1834,7 +1837,7 @@ } ], "source": [ - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -1910,7 +1913,7 @@ " return transitions_df, text\n", "\n", "\n", - "transitions, text = get_transitions(weak_labels, 15)\n" + "transitions, text = get_transitions(weak_labels, 15)" ] }, { @@ -2181,7 +2184,7 @@ } ], "source": [ - "transitions.transpose()\n" + "transitions.transpose()" ] }, { @@ -2213,7 +2216,7 @@ "thresholds = [0.8] * len(rules)\n", "\n", "# As we have already generated the index in our first call, we just need to provide the thresholds.\n", - "weak_labels.extend_matrix(thresholds)\n" + "weak_labels.extend_matrix(thresholds)" ] }, { @@ -2480,7 +2483,7 @@ "summary = summary.rename(columns={\"index\": \"rule\"})\n", "summary = summary.sort_values(by=\"overlaps\", ascending=True)[[\"rule\", \"overlaps\"]]\n", "summary = summary.reset_index()\n", - "summary\n" + "summary" ] }, { @@ -2526,7 +2529,7 @@ "weak_labels.extend_matrix(thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -2566,7 +2569,7 @@ " len(weak_labels.annotation()),\n", " )\n", " coverage = sup / n\n", - " return 2 * acc * coverage / (acc + coverage)\n" + " return 2 * acc * coverage / (acc + coverage)" ] }, { @@ -2613,7 +2616,7 @@ "source": [ "import copy\n", "from tqdm.auto import tqdm\n", - "import numpy as np \n", + "import numpy as np\n", "\n", "ths_range = np.arange(1, 0.3, -0.1)\n", "n_ths = len(weak_labels.rules)\n", @@ -2627,7 +2630,7 @@ " acc = train_eval_labelmodel(thresholds)\n", " if acc > best_acc:\n", " best_acc = acc\n", - " best_thresholds = thresholds.copy()\n" + " best_thresholds = thresholds.copy()" ] }, { @@ -2655,7 +2658,7 @@ } ], "source": [ - "np.array(best_thresholds)\n" + "np.array(best_thresholds)" ] }, { @@ -2692,7 +2695,7 @@ "weak_labels.extend_matrix(best_thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -2748,7 +2751,7 @@ " y=y_test_for_grid_search,\n", " )\n", "\n", - " return accuracy\n" + " return accuracy" ] }, { @@ -2807,7 +2810,7 @@ " acc = train_eval_downstream(thresholds)\n", " if acc > best_acc:\n", " best_acc = acc\n", - " best_thresholds = thresholds.copy()\n" + " best_thresholds = thresholds.copy()" ] }, { @@ -2835,7 +2838,7 @@ } ], "source": [ - "np.array(best_thresholds)\n" + "np.array(best_thresholds)" ] }, { @@ -2872,7 +2875,7 @@ "weak_labels.extend_matrix(best_thresholds)\n", "label_model = Snorkel(weak_labels)\n", "label_model.fit(lr=0.002, n_epochs=10, progress_bar=False)\n", - "print(train_and_evaluate_downstream_model(label_model))\n" + "print(train_and_evaluate_downstream_model(label_model))" ] }, { @@ -3048,7 +3051,7 @@ "ax[0].add_artist(legend1)\n", "\n", "fig.tight_layout()\n", - "plt.savefig(\"extend_weak_labels.png\", facecolor=\"white\", transparent=False)\n" + "plt.savefig(\"extend_weak_labels.png\", facecolor=\"white\", transparent=False)" ] } ], diff --git a/docs/template.ipynb b/docs/template.ipynb index 13d87e9948..d7d79d48d9 100644 --- a/docs/template.ipynb +++ b/docs/template.ipynb @@ -70,9 +70,9 @@ "evalue": "", "output_type": "error", "traceback": [ - "\u001B[1;31mRunning cells with 'argilla' requires ipykernel package.\n", - "\u001B[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", - "\u001B[1;31mCommand: 'conda install -n argilla ipykernel --update-deps --force-reinstall'" + "\u001b[1;31mRunning cells with 'argilla' requires ipykernel package.\n", + "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", + "\u001b[1;31mCommand: 'conda install -n argilla ipykernel --update-deps --force-reinstall'" ] } ], @@ -113,10 +113,7 @@ "source": [ "# Replace api_url with the url to your HF Spaces URL if using Spaces\n", "# Replace api_key if you configured a custom API key\n", - "rg.init(\n", - " api_url=\"http://localhost:6900\", \n", - " api_key=\"admin.apikey\"\n", - ")" + "rg.init(api_url=\"http://localhost:6900\", api_key=\"admin.apikey\")" ] }, { diff --git a/examples/custom_field/custom_field.ipynb b/examples/custom_field/custom_field.ipynb index 94d272a7d2..4d469b1d97 100644 --- a/examples/custom_field/custom_field.ipynb +++ b/examples/custom_field/custom_field.ipynb @@ -66,8 +66,15 @@ " ),\n", " ],\n", " questions=[\n", - " rg.RatingQuestion(\"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]),\n", - " rg.TextQuestion(\"improved_chosen\", title=\"Rewrite the chosen conversation\", required=False),\n", + " rg.RatingQuestion(\n", + " \"rating\",\n", + " title=\"How would you rate the conversation?\",\n", + " required=True,\n", + " values=[1, 2, 3, 4, 5],\n", + " ),\n", + " rg.TextQuestion(\n", + " \"improved_chosen\", title=\"Rewrite the chosen conversation\", required=False\n", + " ),\n", " ],\n", ")\n", "\n", @@ -163,7 +170,10 @@ " ],\n", " questions=[\n", " rg.RatingQuestion(\n", - " \"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]\n", + " \"rating\",\n", + " title=\"How would you rate the conversation?\",\n", + " required=True,\n", + " values=[1, 2, 3, 4, 5],\n", " ),\n", " rg.TextQuestion(\n", " \"improved_chosen\", title=\"Rewrite the chosen conversation\", required=True\n",