diff --git a/examples/marimo/mnist-registry/mnist_registry.py b/examples/marimo/mnist-registry/mnist_registry.py index 689100c3..a12b973d 100644 --- a/examples/marimo/mnist-registry/mnist_registry.py +++ b/examples/marimo/mnist-registry/mnist_registry.py @@ -50,7 +50,7 @@ device_kind = "warn" -@app.cell(hide_code=True) +@app.cell(hide_code=False) def _(): mo.md(r""" # MNIST -> W&B Run -> Registry @@ -99,7 +99,7 @@ def _(): return -@app.cell(hide_code=True) +@app.cell(hide_code=False) def _(): mo.md(r""" ## Configuration @@ -523,7 +523,7 @@ def _(collection_name_v, registry_name_v, run): return -@app.cell(hide_code=True) +@app.cell(hide_code=False) def _(): mo.md(r""" ## Helper functions diff --git a/marimo/convert/alphafold-with-w-b-align-fold-log/alphafold_with_w_b_align_fold_log.py b/marimo/convert/alphafold-with-w-b-align-fold-log/alphafold_with_w_b_align_fold_log.py index d343f753..4f9d1990 100644 --- a/marimo/convert/alphafold-with-w-b-align-fold-log/alphafold_with_w_b_align_fold_log.py +++ b/marimo/convert/alphafold-with-w-b-align-fold-log/alphafold_with_w_b_align_fold_log.py @@ -11,28 +11,21 @@ # ] # /// -"""Predict a protein structure with ColabFold and log it to W&B. - -Run: - - uvx marimo edit alphafold_with_w_b_align_fold_log.py --sandbox -""" +"""Predict a protein structure with ColabFold and log it to Weights & Biases.""" import marimo -__generated_with = "0.24.0" -app = marimo.App(width="medium", app_title="ColabFold with W&B") - +__generated_with = "0.25.1" +app = marimo.App(width="medium", app_title="ColabFold with Weights & Biases") -@app.cell -def _(): +with app.setup: import json import os import re import subprocess import sys + import tempfile import time - import uuid from pathlib import Path import marimo as mo @@ -41,231 +34,145 @@ def _(): import py3Dmol import wandb - return ( - Path, - json, - mo, - np, - os, - plt, - py3Dmol, - re, - subprocess, - sys, - time, - uuid, - wandb, - ) - @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" + # ColabFold with Weights & Biases: Align, Fold, Log + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/alphafold-with-w-b-align-fold-log/alphafold_with_w_b_align_fold_log.py/server) Weights & Biases - # ColabFold with W&B: Align, Fold, Log + This lesson uses [ColabFold](https://github.com/sokrypton/ColabFold) to + align a protein sequence and predict its structure with AlphaFold2. We then + log the experiment configuration, confidence metrics, plots, and a 3D + molecule to Weights & Biases. A prediction table keeps the sequence and results together + for comparison across runs. - This notebook predicts a protein structure with - [ColabFold](https://github.com/sokrypton/ColabFold), then logs the sequence, - alignment summary, confidence plots, timings, and predicted molecule to - Weights & Biases. + This version runs ColabFold from a marimo notebook and adds Weights & Biases + logging so you can compare prediction settings and inspect the saved outputs. - It preserves the **align → fold → log** lesson from - [DeepMind's original AlphaFold Colab](https://github.com/google-deepmind/alphafold/blob/main/notebooks/AlphaFold.ipynb) - and the W&B adaptation described in - [this Report](https://wandb.me/alphafold-short-report). ColabFold replaces - the retired Colab setup with an MMseqs2 alignment service and local - AlphaFold2 inference. - - No Docker image or local genetic database is required. The prediction runs - inside the notebook; only the submitted sequence is sent to the public - ColabFold MSA service. - """) - return + See the [AlphaFold-ed Proteins in Weights & Biases Tables report](https://forge.coreweave.com/wandb/wandb/examples/reports/AlphaFold-ed-Proteins-in-W-B-Tables--Vmlldzo4ODc0MDc) and view an example protein below. + ## Prepare the Runtime -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 0. Runtime + Use a Linux-backed molab runtime, or open the notebook with its declared + dependencies on Linux: - Open this notebook in molab. Its Python dependencies include ColabFold and - the AlphaFold2 inference package. + ```bash + uvx marimo edit --sandbox alphafold_with_w_b_align_fold_log.py + ``` - The first prediction downloads the model parameters. To keep this interactive - tutorial practical, the notebook uses a bounded MSA depth and automatically - selects a compatible inference path for the attached runtime. ColabFold queries - its shared public MSA service for this small demonstration, so submit one - sequence at a time. + The next cell checks the runtime and chooses GPU or CPU inference. It + retains the CPU fallback for compute capability 12.0 devices used by this + example. You can inspect the selected backend before predicting. - Opening the notebook does not query the service, download weights, run a - prediction, or create W&B objects. + The prediction cell queries the public ColabFold MSA service and downloads + model parameters on first use. Submit one sequence at a time and follow + [ColabFold's shared-service guidance](https://github.com/sokrypton/ColabFold). + No local sequence database or Docker image is required for this workflow. """) return -@app.cell(hide_code=True) -def _(mo, subprocess, sys): - _linux_available = sys.platform.startswith("linux") +@app.cell +def _(): + runtime_ready = sys.platform.startswith("linux") try: - _gpu_probe = subprocess.run( - [ - "nvidia-smi", - "--query-gpu=name,compute_cap", - "--format=csv,noheader", - ], + gpu_probe = subprocess.run( + ["nvidia-smi", "--query-gpu=name,compute_cap", "--format=csv,noheader"], check=True, capture_output=True, text=True, ) - _gpu_rows = [ - _row.rsplit(",", maxsplit=1) - for _row in _gpu_probe.stdout.splitlines() - if _row.strip() - ] - _gpu_names = [_name.strip() for _name, _capability in _gpu_rows] - _gpu_compute_caps = [ - _capability.strip() for _name, _capability in _gpu_rows - ] + gpu_rows = [row.rsplit(",", maxsplit=1) for row in gpu_probe.stdout.splitlines() if row.strip()] + gpu_names = [name.strip() for name, capability in gpu_rows] + compute_capabilities = [capability.strip() for name, capability in gpu_rows] except (FileNotFoundError, subprocess.CalledProcessError, ValueError): - _gpu_names = [] - _gpu_compute_caps = [] + gpu_names = [] + compute_capabilities = [] - _blackwell_sm120 = any( - _capability == "12.0" for _capability in _gpu_compute_caps - ) - colabfold_inference_backend = ( - "cpu" if _blackwell_sm120 or not _gpu_names else "gpu" - ) - colabfold_runtime_ready = _linux_available - - if colabfold_runtime_ready: - _runtime_message = mo.callout( - mo.md("Runtime check passed. ColabFold is ready."), - kind="success", - ) - else: - _runtime_message = mo.callout( - mo.md("Open this notebook in a Linux-backed molab runtime."), - kind="warn", - title="Molab runtime needed", - ) - _runtime_message - return colabfold_inference_backend, colabfold_runtime_ready + inference_backend = "cpu" if not gpu_names or "12.0" in compute_capabilities else "gpu" + print(f"Platform: {sys.platform}; inference backend: {inference_backend}") + if not runtime_ready: + print("Structure prediction requires a Linux-backed runtime for this notebook.") + return inference_backend, runtime_ready @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to - use `WANDB_API_KEY` from the molab Secrets panel or credentials already - stored in this runtime. A fresh molab session does not inherit credentials - from your local computer. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - The entity is the team name in a W&B project URL: - `wandb.ai//`. Leave it blank to use your default entity. - Merely editing these fields does not authenticate or create a run. + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `alphafold`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) -def _(mo): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - project=mo.ui.text( - value="alphafold", - label="W&B project", - full_width=True, - ), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="alphafold", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(mo, wandb, wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the authentication form before logging a prediction."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted_login = wandb_login_form.value - _api_key = _submitted_login["api_key"].strip() - _requested_entity = _submitted_login["entity"].strip() - _project = _submitted_login["project"].strip() or "alphafold" try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _resolved_entity = _requested_entity or wandb.Api().default_entity - _login_error = None - except (wandb.errors.Error, ValueError) as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _resolved_entity = None - _login_error = str(_error) mo.stop( - not _login_ok or not _resolved_entity, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - "entity, then submit again.\n\n" - f"W&B reported: `{_login_error or 'No default entity was found.'}`" - ), - kind="danger", - ), + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = {"entity": _resolved_entity, "project": _project} - mo.callout( - mo.md( - f"Connected to W&B. Results will target " - f"`{_resolved_entity}/{_project}` only after you submit the log form." - ), - kind="success", - ) - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## 1. Enter a sequence and make a prediction + ## Choose a Protein and Prediction Settings - Choose a sample protein or paste a custom amino-acid sequence. ColabFold - first creates a multiple-sequence alignment with MMseqs2, then predicts the - structure locally with AlphaFold2. The first run also downloads the model - parameters. + The next cell lists five sample sequences with reference links. The two + helper functions that follow validate an amino-acid sequence and make a + file-safe identifier. We accept the 20 standard amino-acid codes and limit + sequence length to 16–2,000 residues. - ### Sample sequences + In the settings cell, choose a sample from `SEQUENCES`, or replace + `raw_sequence` with your own sequence. A custom sequence receives its own + metadata rather than inheriting the sample's species and reference. - You can also find protein sequences in - [RCSB PDB](https://www.rcsb.org/), - [UniProt](https://www.uniprot.org/), or - [EMBL-EBI](https://www.ebi.ac.uk/). + For this short demo, we use one model, three recycles, no structural + templates, and an MSA cap of `64:128`. These settings reduce the computation needed to try the workflow. + A thorough structure-prediction study requires additional analysis. """) return @@ -312,22 +219,6 @@ def _(): return (SEQUENCES,) -@app.cell(hide_code=True) -def _(SEQUENCES, mo): - _sample_rows = [ - { - "name": _sample["name"], - "species": _sample["species"], - "description": _sample["desc"], - "residues": len(_sample["seq"]), - "reference": _sample["url"], - } - for _sample in SEQUENCES - ] - mo.ui.table(_sample_rows) - return - - @app.function def normalize_sequence(raw_sequence): min_sequence_length = 16 @@ -360,124 +251,104 @@ def safe_sequence_name(name): return normalized or "custom-sequence" -@app.cell(hide_code=True) -def _(SEQUENCES, mo): - colabfold_form = ( - mo.md( - "{sample_name}\n\n{custom_sequence}\n\n{msa_mode}\n\n" - "{num_models}\n\n{num_recycles}\n\n{use_templates}\n\n" - "{output_dir}\n\n{accept_server}" - ) - .batch( - sample_name=mo.ui.dropdown( - options=[_sample["name"] for _sample in SEQUENCES], - value="lithostathine", - label="Sample protein", - full_width=True, - ), - custom_sequence=mo.ui.text_area( - value="", - label="Custom sequence (optional; overrides the sample)", - placeholder="Paste amino-acid letters only", - full_width=True, - ), - msa_mode=mo.ui.dropdown( - options=["mmseqs2_uniref_env", "mmseqs2_uniref"], - value="mmseqs2_uniref_env", - label="MSA database selection", - full_width=True, - ), - num_models=mo.ui.dropdown( - options=["1", "3", "5"], - value="1", - label="Number of AlphaFold2 models", - full_width=True, - ), - num_recycles=mo.ui.dropdown( - options=["3", "6", "12"], - value="3", - label="Prediction recycles", - full_width=True, - ), - use_templates=mo.ui.checkbox( - value=False, - label="Search for structural templates", - ), - output_dir=mo.ui.text( - value="/tmp/colabfold-runs", - label="Output root", - full_width=True, - ), - accept_server=mo.ui.checkbox( - value=False, - label=( - "I will submit this single query to the shared ColabFold " - "MSA service and follow its fair-use guidance" - ), - ), - ) - .form( - submit_button_label="Run alignment and structure prediction", - bordered=True, - ) +@app.cell +def _(SEQUENCES): + sample = SEQUENCES[0] + raw_sequence = sample["seq"] + sequence = normalize_sequence(raw_sequence) + metadata = ( + {key: sample[key] for key in ("name", "species", "desc", "url")} + if sequence == normalize_sequence(sample["seq"]) + else {"name": "custom-sequence", "species": "", "desc": "user-provided sequence", "url": ""} + ) + sequence_id = safe_sequence_name(metadata["name"]) + model_type = "alphafold2_ptm" + msa_mode = "mmseqs2_uniref_env" + num_models = 1 + num_recycles = 3 + use_templates = False + output_root = Path("/tmp/colabfold-runs") + print(f"Protein: {sequence_id}; residues: {len(sequence)}") + return ( + metadata, + model_type, + msa_mode, + num_models, + num_recycles, + output_root, + sequence, + sequence_id, + use_templates, ) - colabfold_form - return (colabfold_form,) -@app.function -def run_colabfold(request): - base_output_dir = Path(request["output_dir"]).expanduser().resolve() - run_id = uuid.uuid4().hex[:10] - run_root = base_output_dir / f"{request['sequence_id']}-{run_id}" - prediction_dir = run_root / "prediction" - prediction_dir.mkdir(parents=True, exist_ok=False) - - fasta_path = run_root / f"{request['sequence_id']}.fasta" - fasta_path.write_text( - f">{request['sequence_id']}\n{request['sequence']}\n", - encoding="utf-8", - ) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Align and Fold + + The following cells provide a start button and run ColabFold's batch command + using this notebook's Python environment. The command reads a FASTA file, obtains an + alignment through MMseqs2, and runs AlphaFold2 inference locally. Each + execution writes to a fresh output directory. + + Click **Align and fold** to start this computation and submit the sequence + to the shared MSA service. The command's logs show alignment and inference + progress. When it finishes, we collect the top-ranked PDB structure, score + JSON, alignment file, and total elapsed time for the Weights & Biases logging step. + """) + return + + +@app.cell +def _( + inference_backend, + metadata, + model_type, + msa_mode, + num_models, + num_recycles, + output_root, + runtime_ready, + sequence, + sequence_id, + use_templates, +): + if not runtime_ready: + raise RuntimeError("Run structure prediction in a Linux-backed runtime.") + + output_root.mkdir(parents=True, exist_ok=True) + prediction_root = Path(tempfile.mkdtemp(prefix=f"{sequence_id}-", dir=output_root)) + prediction_dir = prediction_root / "prediction" + prediction_dir.mkdir() + fasta_path = prediction_root / f"{sequence_id}.fasta" + fasta_path.write_text(f">{sequence_id}\n{sequence}\n", encoding="utf-8") command = [ - sys.executable, - "-m", - "colabfold.batch", - str(fasta_path), - str(prediction_dir), - "--model-type", - "alphafold2_ptm", - "--msa-mode", - request["msa_mode"], - "--num-models", - str(request["num_models"]), - "--num-recycle", - str(request["num_recycles"]), - "--num-seeds", - "1", - "--num-relax", - "0", - "--rank", - "plddt", - "--compile-mode", - "fast", - "--max-msa", - "64:128", + sys.executable, "-m", "colabfold.batch", + str(fasta_path), str(prediction_dir), + "--model-type", model_type, + "--msa-mode", msa_mode, + "--num-models", str(num_models), + "--num-recycle", str(num_recycles), + "--num-seeds", "1", + "--num-relax", "0", + "--rank", "plddt", + "--compile-mode", "fast", + "--max-msa", "64:128", "--overwrite-existing-results", ] - if request["use_templates"]: + if use_templates: command.append("--templates") - if request["inference_backend"] == "gpu": + if inference_backend == "gpu": command.extend(["--use-fast-kernels", "--kernel-backend", "auto"]) command_environment = os.environ.copy() - compilation_cache = Path( - f"/tmp/colabfold-jax-cache-{request['inference_backend']}" - ) + compilation_cache = Path(f"/tmp/colabfold-jax-cache-{inference_backend}") compilation_cache.mkdir(parents=True, exist_ok=True) command_environment.setdefault("JAX_COMPILATION_CACHE_DIR", str(compilation_cache)) command_environment.setdefault("XLA_PYTHON_CLIENT_PREALLOCATE", "false") - if request["inference_backend"] == "cpu": + if inference_backend == "cpu": command_environment["JAX_PLATFORMS"] = "cpu" command_environment["CUDA_VISIBLE_DEVICES"] = "" @@ -485,124 +356,57 @@ def run_colabfold(request): subprocess.run(command, env=command_environment, check=True) wall_time_seconds = time.monotonic() - started_at - relaxed_candidates = sorted( - prediction_dir.glob(f"{request['sequence_id']}_relaxed_rank_001_*.pdb") - ) - unrelaxed_candidates = sorted( - prediction_dir.glob(f"{request['sequence_id']}_unrelaxed_rank_001_*.pdb") - ) - structure_candidates = relaxed_candidates or unrelaxed_candidates - if not structure_candidates: - raise FileNotFoundError( - f"ColabFold finished without a top-ranked PDB file in {prediction_dir}." - ) - - score_candidates = sorted( - prediction_dir.glob(f"{request['sequence_id']}_scores_rank_001_*.json") + structure_candidates = sorted(prediction_dir.glob(f"{sequence_id}_relaxed_rank_001_*.pdb")) + structure_candidates = structure_candidates or sorted( + prediction_dir.glob(f"{sequence_id}_unrelaxed_rank_001_*.pdb") ) - if not score_candidates: - raise FileNotFoundError( - "ColabFold finished without a top-ranked score JSON file in " - f"{prediction_dir}." - ) - - alignment_path = prediction_dir / f"{request['sequence_id']}.a3m" - if not alignment_path.is_file(): - raise FileNotFoundError( - f"ColabFold finished without the expected MSA file: {alignment_path}." - ) - - return { - **request, - "alignment_path": str(alignment_path), + score_candidates = sorted(prediction_dir.glob(f"{sequence_id}_scores_rank_001_*.json")) + alignment_path = prediction_dir / f"{sequence_id}.a3m" + if not structure_candidates or not score_candidates or not alignment_path.is_file(): + raise FileNotFoundError(f"Missing structure, scores, or alignment in {prediction_dir}.") + + fold_result = { + "sequence": sequence, + "sequence_id": sequence_id, + "metadata": metadata, + "model_type": model_type, + "msa_mode": msa_mode, + "num_models": num_models, + "num_recycles": num_recycles, + "use_templates": use_templates, + "inference_backend": inference_backend, "fasta_path": str(fasta_path), "prediction_dir": str(prediction_dir), "pred_output_path": str(structure_candidates[0]), "score_path": str(score_candidates[0]), + "alignment_path": str(alignment_path), "wall_time_seconds": wall_time_seconds, } - - -@app.cell -def _( - SEQUENCES, - colabfold_form, - colabfold_inference_backend, - colabfold_runtime_ready, - mo, -): - mo.stop( - colabfold_form.value is None, - mo.callout( - mo.md( - "Review the inputs, then submit the form when you are ready " - "to query the MSA service and start the structure prediction." - ), - kind="info", - ), - ) - mo.stop( - not colabfold_form.value["accept_server"], - mo.callout( - mo.md( - "Confirm the shared MSA service guidance in the form before " - "submitting the sequence." - ), - kind="warn", - ), - ) - mo.stop( - not colabfold_runtime_ready, - mo.callout( - mo.md("Open this notebook in a Linux-backed molab runtime."), - kind="warn", - ), - ) - - _submitted_fold = colabfold_form.value - _selected_sample = next( - _sample - for _sample in SEQUENCES - if _sample["name"] == _submitted_fold["sample_name"] - ) - _custom_sequence = _submitted_fold["custom_sequence"].strip() - _sequence = normalize_sequence(_custom_sequence or _selected_sample["seq"]) - _sequence_name = "custom-sequence" if _custom_sequence else _selected_sample["name"] - _metadata = ( - { - "name": "custom-sequence", - "species": "", - "desc": "user-provided amino-acid sequence", - "url": "", - } - if _custom_sequence - else {key: _selected_sample[key] for key in ("name", "species", "desc", "url")} - ) - _fold_request = { - "inference_backend": colabfold_inference_backend, - "metadata": _metadata, - "model_type": "alphafold2_ptm", - "msa_mode": _submitted_fold["msa_mode"], - "num_models": int(_submitted_fold["num_models"]), - "num_recycles": int(_submitted_fold["num_recycles"]), - "output_dir": _submitted_fold["output_dir"].strip() or "/tmp/colabfold-runs", - "sequence": _sequence, - "sequence_id": safe_sequence_name(_sequence_name), - "use_templates": _submitted_fold["use_templates"], - } - fold_result = run_colabfold(_fold_request) + print(f"Prediction complete in {wall_time_seconds:.1f} seconds: {prediction_dir}") return (fold_result,) @app.cell(hide_code=True) -def _(fold_result, mo): - mo.callout( - mo.md( - "ColabFold finished. The complete output is at " - f"`{fold_result['prediction_dir']}`." - ), - kind="success", - ) +def _(): + mo.md(r""" + ## Inspect Alignment and Confidence + + The following helpers read the A3M alignment and prediction scores, then + save plots of alignment coverage, per-residue pLDDT, and predicted aligned + error (PAE), when available. Lowercase A3M insertion characters are removed + before calculating coverage. + + pLDDT reports the model’s confidence in local structure on a 0–100 scale. + PAE estimates the positional error between residues after aligning on one + of them, which helps assess how confidently domains are placed relative + to each other. High local confidence alone does not establish + biological function or correct domain placement. See the + [AlphaFold FAQ](https://alphafold.ebi.ac.uk/faq) for interpretation. + + The cells after the helpers display the structure and plots. We use the same + files when logging Weights & Biases media, so local inspection and the experiment record + show the same results. + """) return @@ -714,132 +518,76 @@ def inspect_prediction(fold_result): @app.cell def _(fold_result): prediction_summary = inspect_prediction(fold_result) + print(f"Mean pLDDT: {prediction_summary['mean_plddt']:.1f}") + print(f"Unique MSA sequences: {prediction_summary['msa_sequences']:,}") + if prediction_summary["ptm"] is not None: + print(f"pTM: {prediction_summary['ptm']:.2f}") return (prediction_summary,) @app.cell -def _(Path, prediction_summary, py3Dmol): - _pdb_text = Path(prediction_summary["pred_output_path"]).read_text(encoding="utf-8") +def _(prediction_summary): + pdb_text = Path(prediction_summary["pred_output_path"]).read_text(encoding="utf-8") structure_view = py3Dmol.view(width=800, height=600) - structure_view.addModel(_pdb_text, "pdb") - structure_view.setStyle( - { - "cartoon": { - "colorscheme": { - "prop": "b", - "gradient": "roygb", - "min": 0, - "max": 100, - } - } + structure_view.addModel(pdb_text, "pdb") + structure_view.setStyle({ + "cartoon": { + "colorscheme": {"prop": "b", "gradient": "roygb", "min": 0, "max": 100} } - ) + }) structure_view.zoomTo() structure_view return -@app.cell(hide_code=True) -def _(mo, prediction_summary): - _result_plots = [ +@app.cell +def _(prediction_summary): + result_plots = [ mo.image(prediction_summary["msa_plot_path"]), mo.image(prediction_summary["confidence_plot_path"]), ] if prediction_summary["pae_plot_path"]: - _result_plots.append(mo.image(prediction_summary["pae_plot_path"])) - mo.vstack( - [ - mo.md( - "**pLDDT confidence bands:** very low (0–50), low (50–70), " - "confident (70–90), very high (90–100)." - ), - mo.hstack(_result_plots, widths="equal", wrap=True), - ] - ) - return - - -@app.cell(hide_code=True) -def _(Path, mo, prediction_summary): - _pdb_path = Path(prediction_summary["pred_output_path"]) - _ptm_text = ( - f" \npTM: **{prediction_summary['ptm']:.2f}**" - if prediction_summary["ptm"] is not None - else "" - ) - mo.vstack( - [ - mo.callout( - mo.md( - f"Mean top-ranked pLDDT: **{prediction_summary['mean_plddt']:.1f}**" - f"{_ptm_text} \n" - f"MSA sequences: **{prediction_summary['msa_sequences']:,}** \n" - f"Output directory: `{prediction_summary['prediction_dir']}`" - ), - kind="info", - ), - mo.download( - data=_pdb_path.read_bytes(), - filename=_pdb_path.name, - label="Download the top-ranked PDB", - ), - ] - ) + result_plots.append(mo.image(prediction_summary["pae_plot_path"])) + mo.vstack(result_plots) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Interpreting the prediction - - pLDDT describes local confidence; a high value does not by itself establish - confidence in relative domain placement or biological function. Predicted - aligned error describes confidence in the relative positions of residue - pairs. See the - [AlphaFold methods paper](https://www.nature.com/articles/s41586-021-03819-2) - and the [AlphaFold FAQ](https://alphafold.ebi.ac.uk/faq) for guidance. - """) - return + ## Log the Prediction to Weights & Biases + The next cell creates `prediction_run` with `wandb.init()`. Its configuration + records the sequence, source metadata, model settings, and inference backend. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 2. Log to W&B: Upload the sequence, 3D structure, and results + We use three Weights & Biases media types: - The original tutorial logs sequence metadata, alignment statistics, - pipeline timing, the MSA plot, confidence plots, and the predicted molecule. - The Table below keeps those fields together so runs are easy to compare. + - `wandb.Molecule()` uploads the PDB structure for interactive 3D viewing. + - `wandb.Image()` logs the alignment and confidence plots. + - `wandb.Table()` keeps the sequence, molecule, and plots together in one row. - Submitting the form creates one W&B run and performs one `run.log` call. - Opening the notebook or changing an unsubmitted run name does nothing - remotely. + `prediction_run.log()` records the media alongside numeric metrics: + mean pLDDT, unique MSA sequence count, total runtime, and pTM when present. + The context manager finishes the run after logging. """) return -@app.function -def time_units(duration): - hours, remainder = divmod(duration, 3600) - minutes, seconds = divmod(remainder, 60) - return f"{int(hours):02}:{int(minutes):02}:{seconds:05.2f}" - - -@app.function -def log_prediction(settings, prediction_summary, run_name): - metadata = prediction_summary["metadata"] +@app.cell +def _(entity, prediction_summary, project): run_config = { "sequence": prediction_summary["sequence"], "sequence_length": len(prediction_summary["sequence"]), - "species": metadata["species"], - "description": metadata["desc"], - "reference_url": metadata["url"], + "species": prediction_summary["metadata"]["species"], + "description": prediction_summary["metadata"]["desc"], + "reference_url": prediction_summary["metadata"]["url"], "model_type": prediction_summary["model_type"], "msa_mode": prediction_summary["msa_mode"], "num_models": prediction_summary["num_models"], "num_recycles": prediction_summary["num_recycles"], "use_templates": prediction_summary["use_templates"], + "inference_backend": prediction_summary["inference_backend"], + "max_msa": "64:128", } numeric_metrics = { "mean_plddt": prediction_summary["mean_plddt"], @@ -850,13 +598,12 @@ def log_prediction(settings, prediction_summary, run_name): numeric_metrics["ptm"] = prediction_summary["ptm"] with wandb.init( - entity=settings["entity"], - project=settings["project"], - name=run_name or None, + entity=entity, + project=project, + name=f"colabfold-{prediction_summary['sequence_id']}", config=run_config, job_type="protein-structure-prediction", - reinit="create_new", - ) as run: + ) as prediction_run: molecule = wandb.Molecule(prediction_summary["pred_output_path"]) msa_plot = wandb.Image(prediction_summary["msa_plot_path"]) confidence_plot = wandb.Image(prediction_summary["confidence_plot_path"]) @@ -865,20 +612,13 @@ def log_prediction(settings, prediction_summary, run_name): if prediction_summary["pae_plot_path"] else None ) - prediction_table = wandb.Table( - columns=[ - "tag", - "species", - "sequence", - "molecule", - "MSA coverage", - "confidence", - "predicted aligned error", - ] - ) + prediction_table = wandb.Table(columns=[ + "tag", "species", "sequence", "molecule", "MSA coverage", + "confidence", "predicted aligned error", + ]) prediction_table.add_data( - metadata["name"], - metadata["species"], + prediction_summary["metadata"]["name"], + prediction_summary["metadata"]["species"], prediction_summary["sequence"], molecule, msa_plot, @@ -887,7 +627,6 @@ def log_prediction(settings, prediction_summary, run_name): ) log_payload = { **numeric_metrics, - "wall_time": time_units(prediction_summary["wall_time_seconds"]), "view_3D": molecule, "msa_coverage": msa_plot, "plddt_confidence": confidence_plot, @@ -895,134 +634,43 @@ def log_prediction(settings, prediction_summary, run_name): } if pae_plot is not None: log_payload["predicted_aligned_error"] = pae_plot - run.log(log_payload) - run_url = run.url - - return { - "run_url": run_url, - "run_path": f"{settings['entity']}/{settings['project']}", - } - - -@app.cell(hide_code=True) -def _(mo, prediction_summary, wandb_settings): - _log_context = mo.md( - f"Prediction: `{prediction_summary['metadata']['name']}` \n" - f"W&B target: `{wandb_settings['entity']}/{wandb_settings['project']}`" - ) - prediction_log_form = ( - mo.md("{run_name}") - .batch( - run_name=mo.ui.text( - value=f"colabfold-{prediction_summary['sequence_id']}", - label="W&B run name (optional)", - full_width=True, - ) - ) - .form(submit_button_label="Log prediction to W&B", bordered=True) - ) - mo.vstack([_log_context, prediction_log_form]) - return (prediction_log_form,) + prediction_run.log(log_payload) + return @app.cell(hide_code=True) -def _(mo, prediction_log_form): - mo.stop( - prediction_log_form.value is None, - mo.callout( - mo.md( - "Submit the form above when you are ready to create one W&B " - "run and upload the prediction." - ), - kind="info", - ), - ) - prediction_log_request = {"run_name": prediction_log_form.value["run_name"].strip()} - return (prediction_log_request,) - - -@app.cell -def _(prediction_log_request, prediction_summary, wandb_settings): - logged_prediction = log_prediction( - wandb_settings, - prediction_summary, - prediction_log_request["run_name"], - ) - return (logged_prediction,) - +def _(): + mo.md(r""" + ## Compare Predictions -@app.cell(hide_code=True) -def _(logged_prediction, mo): - mo.callout( - mo.md( - "Prediction logged. Open the " - f"[W&B run]({logged_prediction['run_url']}) and inspect the " - "workspace charts, run configuration, 3D molecule, and " - "`predicted_molecules` Table." - ), - kind="success", - ) - return + Open the Weights & Biases run to inspect its configuration, metrics, + confidence plots, and 3D molecule. The `predicted_molecules` table connects + the sequence to its structure and plots. + Try another sample or increase the number of models. Click **Align and fold** + again to produce a new prediction and Weights & Biases run, then compare confidence and + runtime in your project. The wall time includes alignment, model setup, and + inference; first-run downloads can make it substantially longer. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Verify and next steps - - In the W&B run, verify that: - - - `mean_plddt`, `ptm`, `msa_sequences`, and `wall_time_seconds` appear in - the run history and summary; - - the 3D molecule, MSA coverage, pLDDT, and predicted-aligned-error panels - render correctly; and - - `predicted_molecules` contains the sequence, structure, and plots in one - comparable row. - - Try another short sample, or increase the number of models and compare its - confidence and runtime with the first prediction. - - ## FAQ and troubleshooting - - * **Do I need Docker or local databases?** No. ColabFold queries the public - MMseqs2 MSA service and runs AlphaFold2 inference inside the notebook - environment. - * **Why does the log say that no GPU was detected?** Current molab Blackwell - runtimes have an upstream XLA cold-compilation performance issue. For that - GPU generation, this notebook intentionally uses the much faster CPU path - for the short teaching example. Other supported GPU generations continue to - use GPU inference. - * **Why is this MSA smaller than a production run?** The notebook caps the MSA - at `64:128` sequences so the interactive example finishes promptly. Remove - `--max-msa 64:128` for a production-quality experiment and expect a longer - runtime. - * **Can I submit a batch?** This tutorial intentionally submits one serial - query. The public MSA server is a shared, rate-limited resource. For large - workloads, follow ColabFold's local-database instructions instead. - * **Where should I report ColabFold problems?** Use the - [ColabFold issue tracker](https://github.com/sokrypton/ColabFold/issues). + The public MSA service is intended for small, serial queries. For larger + workloads, follow ColabFold's local-database instructions. """) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## License and disclaimer + ## References - ColabFold is community-supported software and is not an officially - supported Google product. Its code is MIT licensed, while the AlphaFold - implementation, model parameters, dependencies, and remote services have - their own licenses and terms. Review the current + Protein-structure predictions require scientific review and are not for + clinical use. ColabFold, AlphaFold, model parameters, and the MSA service + have their own licenses and terms. Consult the [ColabFold documentation](https://github.com/sokrypton/ColabFold) and - [AlphaFold license information](https://github.com/google-deepmind/alphafold#license-and-disclaimer) - before publishing or distributing results. - - Protein-structure predictions are for theoretical modeling, not clinical - use. Predictions have varying confidence and require scientific review. + [AlphaFold license information](https://github.com/google-deepmind/alphafold#license-and-disclaimer). - Publications based on these results should cite both the - [ColabFold paper](https://doi.org/10.1038/s41592-022-01488-1) and the + Publications should cite the + [ColabFold paper](https://doi.org/10.1038/s41592-022-01488-1) and [AlphaFold paper](https://doi.org/10.1038/s41586-021-03819-2). """) return diff --git a/marimo/convert/configs-in-w-b/configs_in_w_b.py b/marimo/convert/configs-in-w-b/configs_in_w_b.py index b13a0a9d..90302a07 100644 --- a/marimo/convert/configs-in-w-b/configs_in_w_b.py +++ b/marimo/convert/configs-in-w-b/configs_in_w_b.py @@ -1,12 +1,17 @@ # /// script +# requires-python = ">=3.11,<3.14" # dependencies = [ +# "marimo>=0.24.2", # "wandb==0.30.0", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.0" +__generated_with = "0.25.1" app = marimo.App(auto_download=["html"]) with app.setup: @@ -15,16 +20,6 @@ import wandb -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # Configs in W&B - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/configs-in-w-b/configs_in_w_b.py/server) - """) - return - - @app.cell(hide_code=True) def _(): mo.md(r""" @@ -45,475 +40,196 @@ def _(): Weights & Biases by CoreWeave Weights & Biases by CoreWeave - ## Quickstart - Use [Weights & Biases](https://wandb.ai) - for machine learning experiment tracking, dataset versioning, and project collaboration. + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/configs-in-w-b/configs_in_w_b.py/server) -
+ # Save experiment configurations with Weights & Biases - Weights & Biases + A run's `config` records the settings you supply for an experiment, such as + hyperparameters, dataset names, and model types. Saving these values helps + you reproduce a run and compare experiments with different settings. + Save outputs such as loss and accuracy with `wandb.Run.log()`. -
- """) - return + This lesson creates one small example run, adds configuration values from + Python and `argparse`, then updates the finished run with the Public API. + It records example settings without downloading data or training a model. + ## Authenticate with Weights & Biases -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Authentication + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `config_example`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="config_example", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before creating the example run."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again. \n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": "config_example", - "entity": _entity or None, - } - mo.callout(mo.md("Connected to W&B."), kind="success") - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ## What's a `config` for? + ## Start with a Python dictionary - Set [`wandb.config`](https://docs.wandb.ai/guides/track/config) - once at the beginning of your script to save your training configuration: hyperparameters, input settings like dataset name or model type, and include any other independent variables or metadata for your experiments. + The dictionary below records `CelebA` as a dataset name and `baseline` as + a model type. These are example metadata values. This notebook does not + load CelebA or build a model. We will pass it to `wandb.init(config=...)` + when creating the run. Use descriptive keys with underscores or dashes + instead of periods. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Why does that matter? - - This is useful for analyzing your experiments and reproducing your work in the future. You'll be able to group by `config` values in our web interface, comparing the settings of different runs and seeing how these affect the output. - - > Note that output metrics or dependent variables (like loss and accuracy) should be saved with `wandb.log` instead. - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## How do I set up a `config`? - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Your `config` should be set just once at the beginning of your training experiment. - - But workflows differ, so we offer a number of ways to set up your config. - - Let's look at all the ways you can create and send the config dictionary to the Dashboard! - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Setting the `config` at `init`ialization - - The best time to set the `config` values is when you call [`wandb.init`](https://docs.wandb.ai/guides/track/launch), - by passing a dictionary as the `config` keyword argument. - """) - return - - -@app.cell(hide_code=True) -def _(): - create_config_run = mo.ui.run_button( - label="Create the W&B config example run" - ) - mo.vstack( - [ - mo.md( - "This creates one run in the `config_example` project. Use the " - "controls below to apply each config update separately." - ), - create_config_run, - ] - ) - return (create_config_run,) - - @app.cell -def _(create_config_run, wandb_settings): - mo.stop( - not create_config_run.value, - mo.callout( - mo.md("Click the button above when you're ready to create the example run."), - kind="info", - ), - ) - - if wandb.run is not None: - wandb.finish() - - config_run = wandb.init( - project=wandb_settings["project"], - entity=wandb_settings["entity"], - config={"dataset": "CelebA", "type": "baseline"}, - ) - config_run_url = config_run.url - mo.callout( - mo.md(f"Run created: [open it in W&B]({config_run_url})."), - kind="success", - ) - return (config_run,) - - -@app.cell(hide_code=True) def _(): - mo.md(r""" - Open the Run page from the link shown above and head to the [Overview tab](https://docs.wandb.ai/ref/app/pages/run-page#overview-tab) - (top of the list of panels on the left-most side of the screen). - You'll see a "Config" section that looks like this: - """) - return + config = { + "dataset": "CelebA", + "type": "baseline", + } + return (config,) @app.cell(hide_code=True) def _(): mo.md(r""" - - """) - return + ## Collect command-line settings with `argparse` + Training scripts often receive hyperparameters as command-line arguments. + Weights & Biases accepts the `argparse.Namespace` returned by `parse_args()` directly + in `run.config.update()`. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - You give us a (possibly nested) dictionary as your `config`, and we'll flatten the names using dots in our backend. - - > _Side Note_: We recommend that you avoid using dots in your config variable names, and use a dash or underscore instead. Once you've created your `config` dictionary, if your script accesses `wandb.config` keys below the root, use the dictionary access syntax, `["key"]["foo"]`, instead of the attribute access syntax, `config.key.foo`. + Here, `parse_args([])` selects the defaults without reading the notebook + process's arguments. Try `parse_args(["--batch_per_gpu", "16"])` to see + how an override changes the saved configuration. In a standalone training + script, use `parse_args()` to read arguments from the command line. """) return -@app.cell(hide_code=True) -def _(): - add_config_parameters = mo.ui.run_button( - label="Add parameters to the W&B config" - ) - mo.vstack( - [ - mo.md(r""" - ### Adding to the `config` by hand - You can add more parameters to the `config` later if you want: - """), - add_config_parameters, - ] - ) - return (add_config_parameters,) - - @app.cell -def _(add_config_parameters, config_run): - mo.stop( - not add_config_parameters.value, - mo.callout( - mo.md( - "Click the button above to add `epochs` and `batch_size` to " - "this run's config." - ), - kind="info", - ), - ) - - config_run.config.epochs = 4 - config_run.config["batch_size"] = 32 - - manual_config_update = True - dict(config_run.config) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Now, your Config section on the dashboard has been updated: - """) - return - - -@app.cell(hide_code=True) def _(): - mo.md(r""" - - """) - return - - -@app.cell(hide_code=True) -def _(): - add_argparse_parameters = mo.ui.run_button( - label="Add argparse parameters to the W&B config" - ) - mo.vstack( - [ - mo.md(r""" - ### Adding to the `config` with `argparse` - - `config` is a dictionary-like object, and it can be built from lots of dictionary-like objects. - - For example, you can pass in the arguments object produced by `argparse`. - [`argparse`](https://docs.python.org/3/library/argparse.html), short for `arg`ument `parse`r, is a standard library module in Python 3.2 and above that makes it easy to write scripts that take advantage of all the flexibility and power of command line arguments. And it's Pythonic! - - This is especially convenient for tracking results from scripts that are launched from the command line. - """), - add_argparse_parameters, - ] - ) - return (add_argparse_parameters,) - - -@app.cell -def _(add_argparse_parameters, config_run): - mo.stop( - not add_argparse_parameters.value, - mo.callout( - mo.md("Click the button above to add the parsed arguments to this run's config."), - kind="info", - ), - ) - parser = argparse.ArgumentParser() - parser.add_argument('-b', '--batch_per_gpu', type=int, default=8, - help='input batch size for training (default: 8)') - parser.add_argument('-wd', '--weight_decay', type=float, default=0.1, - help='weight decay (default: 0.1)') - - args = parser.parse_args(args=[]) - config_run.config.update(args) - return + parser.add_argument("-b", "--batch_per_gpu", type=int, default=8) + parser.add_argument("-wd", "--weight_decay", type=float, default=0.1) + args = parser.parse_args([]) + args + return (args,) @app.cell(hide_code=True) def _(): mo.md(r""" - Here's the updated Config panel: - """) - return + ## Save and extend the run's configuration + `wandb.init(config=config)` saves the initial dictionary. While the run is + active, add new fields using attribute access or dictionary + access, then merge the parsed arguments with `update()`. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - + The cell displays the combined configuration so you can check all six + fields. The context manager finishes and syncs the run before the next + example queries it. It also saves the actual entity, project, and run ID + in `run_path`, so no ID needs to be copied by hand. """) return -@app.cell(hide_code=True) -def _(): - update_config_with_api = mo.ui.run_button( - label="Update the W&B config with the Public API" - ) - mo.vstack( - [ - mo.md(r""" - ### Updating the `config` with the API - - What if your run has finished, but you realized you forgot to log something? - - Never fear, you can always use the - [public API](https://docs.wandb.ai/ref/python/public-api) - to update your `config` - (or anything else about your run!) - at any time. You just need to know the details of the `run` you want to update. - """), - update_config_with_api, - ] - ) - return (update_config_with_api,) - - @app.cell -def _(config_run, update_config_with_api): - mo.stop( - not update_config_with_api.value, - mo.callout( - mo.md("Click the button above to add `bar` through the W&B Public API."), - kind="info", - ), - ) +def _(args, config, entity, project): + with wandb.init(entity=entity, project=project, config=config) as run: + run.config.epochs = 4 + run.config["batch_size"] = 32 + run.config.update(args) + run_path = f"{run.entity}/{run.project}/{run.id}" + saved_config = dict(run.config) - api = wandb.Api() - - # pulling the relevant info automatically from the run object - # this can also be found on the website - username = config_run.entity - project = config_run.project - run_id = config_run.id - - api_run = api.run(f"{username}/{project}/{run_id}") - api_run.config["bar"] = 32 - api_run.update() - return - - -@app.cell -def _(): - mo.md(r""" - Here's what the final Config panel looks like: - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Using `config` for great good! - The `config` parameters are useful for performing grouping, filtering, and aggregating on your experiments and their results. - - ### The examples below come from the project [here](https://wandb.ai/wandb/DistHyperOpt). - """) - return + saved_config + return (run_path,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### Filtering Runs - Filter tab allows you to display the runs that quality one or more conditions. These conditions can be formed by applying relational operators to any of the parameters logged in the `config` file. - - [Our example project](https://wandb.ai/wandb/DistHyperOpt) compares various hyper-parameter tuning methods and has more than 80 runs. Each run has a "Job Type" logged in the `config` which corresponds - - Let's say you want to visualize only the ones that are generated by a particular tuning algorithm, like Population Based Traing (`pbt`). You can do that by applying a filter on "Job Type". + ## Add metadata after a run has finished - Run the cell below to see this in action! - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.Html(r""" - -

Open the video on YouTube

+ If you forgot to record a setting, use the + [Weights & Biases Public API](https://docs.coreweave.com/products/wandb/ref/python/public-api) + to retrieve the completed run at `entity/project/run_id`. This example + uses the `run_path` captured above and adds a `purpose` field to that run. + Calling `update()` saves the edited configuration to Weights & Biases. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Grouping Runs - You can group your experiments in the dashboard of your project based on a particular column from `config`. A common use case for this would be grouping sub-experiments within a larger project. - - Our runs are grouped based on "Job Type". The Group tab is located next to the Filter Tab. You can group your runs by any parameter present in the config. - - ![Imgur](https://i.imgur.com/gTLKRP7.png?1) - """) +@app.cell +def _(run_path): + api = wandb.Api() + completed_run = api.run(run_path) + completed_run.config["purpose"] = "configuration tutorial" + completed_run.update() + completed_run.config return @app.cell(hide_code=True) def _(): mo.md(r""" - ### Parallel Coordinates Chart - - Often, the main thing we want to do with a group of Runs is make comparisons. - - The W&B Dashboard includes a Chart type for exactly this purpose: - the Parallel Coordinates chart. + ## Verify and compare experiments - A Parallel Coordinates chart represents each Run in the group as a line. - This line passes through as many of the `config` values - or logged metrics as you like, - and is colored by its value on a single metric. - This lets you take in, at a glance, - which hyperparameter configurations were most and least successful. - See the example below. + Open the run link printed by `wandb.init()` and find **Config** on the + run's **Overview** page. Confirm that it contains `dataset="CelebA"`, + `type="baseline"`, `epochs=4`, `batch_size=32`, `batch_per_gpu=8`, and + `weight_decay=0.1` (or your chosen overrides). Refresh after the Public API + step to see `purpose="configuration tutorial"` as well. - Head to a [group of Runs in this project](https://wandb.ai/wandb/DistHyperOpt/groups/dcgan_train) - and build a Parallel Coordinates chart like the one pictured below - by - 1. clicking the + sign in the top-right corner, aligned with "Charts", - 2. selecting "Parallel Coordinates" from the available Charts, and - 3. adding the columns in the image, in order. + Rerun the example with different settings, then open the project's runs + table to filter or group by a config field such as `type` or `batch_per_gpu`. + In a training experiment, log metrics with `run.log()` to compare outcomes + across configurations or build a parallel coordinates chart. - ![Imgur](https://i.imgur.com/ugrpq9K.png) + Explore the [example project](https://wandb.ai/wandb/DistHyperOpt) for a + larger comparison, or read + [Configure experiments](https://docs.coreweave.com/products/wandb/track/config) + for more configuration patterns. """) return diff --git a/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py b/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py index 9d06fd09..dfb3e22d 100644 --- a/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py +++ b/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py @@ -1,7 +1,6 @@ # /// script # requires-python = ">=3.11,<3.14" # dependencies = [ -# "dill>=0.3.8,<1", # "marimo>=0.24.2", # "numpy>=1.26,<3", # "pandas>=2.1,<3", @@ -10,151 +9,73 @@ # "wandb>=0.19.10,<1", # "xgboost>=2.0,<4", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// -"""Build an interpretable vehicle-loan scorecard with XGBoost and W&B.""" +"""Track a vehicle-loan classification pipeline with XGBoost and Weights & Biases.""" import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App( width="medium", - app_title="Vehicle loan scorecards with XGBoost and W&B", + app_title="Vehicle loan classification with XGBoost and Weights & Biases", ) with app.setup: - import importlib.util - import sys + import inspect import tempfile from pathlib import Path - from dill import detect - from dill.source import getsource import marimo as mo import numpy as np import pandas as pd + import xgboost as xgb from scipy.stats import ks_2samp from sklearn import metrics, model_selection - import wandb - - pd.set_option("display.max_columns", None) - data_root = Path(tempfile.gettempdir()) / "wandb-credit-scorecard" - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py/server) - - Weights & Biases
- - Weights & Biases - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # Vehicle Loan Default Prediction with XGBoost - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - In this notebook we'll train an XGBoost model to classify whether submitted loan applications will default or not. Using boosting algorithms such as XGBoost increases the performance of a loan assessment, whilst retaining interpretability for internal Risk Management functions as well as external regulators. - - This notebook is based on a talk from Nvidia GTC21 by Paul Edwards at ScotiaBank who [presented](https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s31327/) how XGBoost can be used to construct more performant credit scorecards that remain interpretable. They also kindly [shared sample code](https://github.com/rapidsai-community/showcase/tree/main/event_notebooks/GTC_2021/credit_scorecard) which we will use throughout this notebook, credit to [Stephen Denton](stephen.denton@scotiabank.com) from Scotiabank for sharing this code publicly. - - **[Click here](https://wandb.ai/morgan/credit_scorecard) to view and interact with a live W&B Dashboard built with this notebook.** - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## In this notebook - - In this notebook we'll cover how Weights & Biases enables regulated entities to - - **Track and version** their data ETL pipelines (locally or in cloud services such as S3 and GCS) - - **Track experiment results** and store trained models - - **Visually inspect** multiple evaluation metrics - - **Optimize performance** with hyperparameter sweeps - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - **Track Experiments and Results** - - We will track all of the training hyperparameters and output metrics in order to generate an Experiments Dashboard like the one below: - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ![W&B experiment dashboard with validation metrics and ROC curves](https://raw.githubusercontent.com/wandb/examples/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/assets/experiment-dashboard.png) - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - **Run a Hyperparameter Sweep to Find the Best HyperParameters** - - Weights and Biases also enables you to do hyperparameter sweeps with [W&B Sweeps](https://docs.wandb.ai/models/sweeps/). See the docs for a full guide to advanced hyperparameter search options. - """) - return + from wandb.integration.xgboost import WandbCallback @app.cell(hide_code=True) def _(): mo.md(r""" - ![W&B sweep parallel-coordinates chart](https://raw.githubusercontent.com/wandb/examples/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/assets/sweep-parallel-coordinates.png) - """) - return + - The setup cell imports the packages declared in this notebook's script - metadata. Runtime data is written under the operating system's temporary - directory, not into the repository. - """) - return + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + # Vehicle Loan Default Prediction with XGBoost and Weights & Biases -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Data - """) - return - + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/credit_scorecards_with_xgboost_and_w_b.py/server) -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### AWS S3, Google Cloud Storage and W&B Artifacts - """) - return + This lesson tracks a classification pipeline from raw data to trained model. + We use Weights & Biases Artifacts to record dataset lineage, Tables to inspect sample rows, + the XGBoost callback to log training, and Sweeps to compare hyperparameters. + The example uses a subset of the + [Vehicle Loan Default Prediction dataset](https://www.kaggle.com/sneharshinde/ltfs-av-data) + and preprocessing code shared by Scotiabank in the + [RAPIDS credit-scorecard example](https://github.com/rapidsai-community/showcase/tree/main/event_notebooks/GTC_2021/credit_scorecard). + The teaching objective is to track the data, settings, and results of a + classification experiment. The code does not construct or validate a + points-based lending scorecard. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ![Amazon Web Services and Google Cloud logos](https://raw.githubusercontent.com/wandb/examples/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/assets/cloud-storage-logos.jpeg) + > On macOS, XGBoost also needs OpenMP. If importing XGBoost reports a missing + `libomp.dylib`, install it with `brew install libomp` and restart. """) return @@ -162,889 +83,421 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - Weights and Biases **Artifacts** enable you to log end-to-end training pipelines to ensure your experiments are always reproducible. + ## Authenticate with Weights & Biases - Data privacy is critical to Weights & Biases, so Artifacts can refer to files in private cloud storage such as Amazon S3 or Google Cloud Storage. Self-Managed W&B deployments are also available. + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - By default, W&B stores artifact files in a private Google Cloud Storage bucket located in the United States. All files are encrypted at rest and in transit. For sensitive files, we recommend a private W&B installation or the use of reference artifacts. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - ### Artifacts Reference Example - **Create an artifact with the S3/GCS metadata** + ## Set your team and project - The artifact only consists of metadata about the S3/GCS object such as its ETag, size, and version ID (if object versioning is enabled on the bucket). - - ``` - run = wandb.init() - artifact = wandb.Artifact('mnist', type='dataset') - artifact.add_reference('s3://my-bucket/datasets/mnist') - run.log_artifact(artifact) - ``` - - **Download the artifact locally when needed** - - W&B will use the metadata recorded when the artifact was logged to retrieve the files from the underlying bucket. - - ``` - artifact = run.use_artifact('mnist:latest', type='dataset') - artifact_dir = artifact.download() - ``` - - See [Create an artifact](https://docs.wandb.ai/models/artifacts/construct-an-artifact) for more on using external references and configuring credentials. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `vehicle_loan_default`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - mo.md(r""" - ## Authentication - - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to - use `WANDB_API_KEY` from the molab Secrets panel or credentials already - stored in this runtime. A fresh molab session does not inherit credentials - from your computer. - - The entity is the team name in `wandb.ai//`. Leave it - blank to use your default entity. Changing an unsubmitted field does not - authenticate or create any W&B objects. - """) - return + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="vehicle_loan_default", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - project=mo.ui.text( - value="vehicle_loan_default", - label="W&B project", - full_width=True, - ), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) - -@app.cell(hide_code=True) -def _(wandb_login_form): + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the form above before running the artifact pipeline."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted = wandb_login_form.value - _api_key = _submitted["api_key"].strip() - _project = _submitted["project"].strip() - mo.stop( - not _project, - mo.callout(mo.md("Enter a W&B project name and submit again."), kind="danger"), - ) try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "molab Secrets configuration and submit again." - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - _entity = _submitted["entity"].strip() or wandb.Api().default_entity - mo.stop( - not _entity, - mo.callout( - mo.md( - "W&B did not return a default entity. Enter a team entity and " - "submit the authentication form again." - ), - kind="danger", - ), - ) - wandb_connection = {"entity": _entity, "project": _project} - mo.callout( - mo.md(f"Connected to W&B as `{_entity}` for project `{_project}`."), - kind="success", - ) - return (wandb_connection,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ### Vehicle Loan Dataset + ## Get the dataset - We will be using a simplified version of the [Vehicle Loan Default Prediction dataset](https://www.kaggle.com/sneharshinde/ltfs-av-data) from L&T which has been stored in W&B Artifacts. + The next cell identifies a dataset Artifact already stored in Weights & Biases, + sets the ID and target column names, and creates a temporary working directory. + The preprocessing run will download this Artifact and record it as an input. + You need access to the source Artifact to run that step. """) return @app.cell def _(): - # specify a folder to save the data, a new folder will be created if it doesn't exist - data_dir = data_root - id_vars = ['UniqueID'] - targ_var = 'loan_default' - return data_dir, id_vars, targ_var - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Create function to pickle functions - """) - return - - -@app.function -def function_to_string(fn): - return getsource(detect.code(fn)) + source_artifact_path = "morgan/credit_scorecard/vehicle_loan_defaults:latest" + id_columns = ["UniqueID"] + target_column = "loan_default" + data_dir = Path(tempfile.mkdtemp(prefix="wandb-credit-scorecard-")) + return data_dir, id_columns, source_artifact_path, target_column @app.cell(hide_code=True) def _(): mo.md(r""" - #### Download Data from W&B Artifacts + The source example treats age, time since disbursement, loan-to-value ratio + (`LTV`), and credit bureau score (`PERFORM_CNS_SCORE`) as numeric features. + Other predictors, including numeric IDs for states and manufacturers, are + categories. Their numeric codes identify groups rather than an ordered scale. - We will download our dataset from W&B Artifacts. First we need to create a W&B run object, which we will use to download the data. Once the data is downloaded it will be one-hot encoded. This processed data will then be logged to the same W&B as a new Artifact. By logging to the W&B that downloaded the data, we tie this new Artifact to the raw dataset Artifact - """) - return - - -@app.cell -def _(wandb_connection): - preprocess_button = mo.ui.run_button( - label="Download, preprocess, and log data" - ) - mo.vstack( - [ - mo.md( - "This creates a preprocessing run and a processed-dataset " - f"Artifact in `{wandb_connection['entity']}/" - f"{wandb_connection['project']}`." - ), - preprocess_button, - ] - ) - return (preprocess_button,) - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Download the subset of the vehicle loan default data from W&B, this contains `train.csv` and `val.csv` files as well as some utils files. + The function below preserves the four numeric features and creates an + indicator column for each category with `pd.get_dummies()`. It retains + the row ID and target in the saved dataset, but excludes both from the + predictor list used for training. Encoding once before the split gives + both partitions the same columns. Although this uses no target values, it + does expose the category vocabulary of the validation data. In a production + evaluation, fit the encoder on training data and handle unseen categories + when transforming validation or test data. """) return @app.function -def load_data_utils(module_dir): - data_utils_path = next(Path(module_dir).rglob("data_utils.py"), None) - if data_utils_path is None: - raise FileNotFoundError("The dataset Artifact did not contain data_utils.py") - - spec = importlib.util.spec_from_file_location( - "credit_scorecard_data_utils", data_utils_path +def one_hot_encode_data(dataset, id_columns, target_column): + numeric_columns = ["AgeInMonths", "DaysSinceDisbursement", "LTV", "PERFORM_CNS_SCORE"] + excluded_columns = id_columns + [target_column] + categorical_columns = sorted(set(dataset.columns) - set(excluded_columns + numeric_columns)) + processed_data = pd.get_dummies( + dataset, + columns=categorical_columns, + prefix_sep="__", + dtype=int, ) - if spec is None or spec.loader is None: - raise ImportError(f"Could not load {data_utils_path}") - module = importlib.util.module_from_spec(spec) - sys.modules[spec.name] = module - spec.loader.exec_module(module) - return module.describe_data_g_targ, module.one_hot_encode_data + predictor_columns = processed_data.columns.drop(excluded_columns).tolist() + return processed_data, predictor_columns @app.cell(hide_code=True) def _(): mo.md(r""" - #### One-Hot Encode the Data - """) - return - - -@app.function -def preprocess_and_log_data(connection, data_dir, id_vars, targ_var): - data_dir.mkdir(parents=True, exist_ok=True) - with wandb.init( - project=connection["project"], - entity=connection["entity"], - job_type="preprocess-data", - reinit="create_new", - dir=str(data_dir), - ) as run: - ARTIFACT_PATH = "morgan/credit_scorecard/vehicle_loan_defaults:latest" - dataset_art = run.use_artifact(ARTIFACT_PATH, type="dataset") - dataset_dir = Path(dataset_art.download(root=str(data_dir / "raw"))) - describe_data_g_targ, one_hot_encode_data = load_data_utils(dataset_dir) - - # Load data into Dataframe - dataset_path = next(dataset_dir.rglob("vehicle_loans_subset.csv")) - dataset = pd.read_csv(dataset_path) - - # One Hot Encode Data - dataset, p_vars = one_hot_encode_data(dataset, id_vars, targ_var) - - # Save Preprocessed data - processed_data_path = data_dir / "proc_ds.csv" - dataset.to_csv(processed_data_path, index=False) - - # Create a new artifact for the processed data, including the function that created it, to Artifacts - processed_ds_art = wandb.Artifact( - name="vehicle_defaults_processed", - type="processed_dataset", - description="One-hot encoded dataset", - metadata={ - "preprocessing_fn": function_to_string(one_hot_encode_data) - }, - ) - - # Attach our processed data to the Artifact - processed_ds_art.add_file(str(processed_data_path)) - - # Log this Artifact to the current wandb run - logged_artifact = run.log_artifact(processed_ds_art) - logged_artifact.wait() - result = { - "artifact_path": logged_artifact.qualified_name, - "data_utils_dir": str(dataset_dir), - "p_vars": list(p_vars), - "run_url": run.url, - } - return result + ## Preprocess and Log a Dataset Artifact + The next cell starts `preprocessing_run`. Calling + `preprocessing_run.use_artifact()` records the raw dataset as this run’s input. + Calling `download()` retrieves its files. We read the CSV and apply the + encoding function (`one_hot_encode_data`) to produce numeric predictors. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### Log Processed Data to W&B Artifacts + We save the processed CSV, attach it to a new `wandb.Artifact()`, and call + `preprocessing_run.log_artifact()`. Consuming and producing Artifacts in + the same run records the transformation in Weights & Biases's lineage graph. + The Artifact metadata also stores the encoding function's source so the + saved dataset can be traced to its transformation. + `wait()` ensures the upload finishes before the next stage fetches it. """) return @app.cell -def _(data_dir, id_vars, preprocess_button, targ_var, wandb_connection): - mo.stop( - not preprocess_button.value, - mo.callout( - mo.md( - "Click **Download, preprocess, and log data** to run this stage." - ), - kind="info", - ), - ) - preprocess_result = preprocess_and_log_data( - wandb_connection, data_dir, id_vars, targ_var - ) - return (preprocess_result,) - - -@app.cell(hide_code=True) -def _(preprocess_result): - mo.callout( - mo.md( - f"Logged `{preprocess_result['artifact_path']}`. " - f"[Open the preprocessing run]({preprocess_result['run_url']})." - ), - kind="success", - ) - return +def _( + data_dir, + entity, + id_columns, + project, + source_artifact_path, + target_column, +): + with wandb.init(entity=entity, project=project, job_type="preprocess-data", dir=str(data_dir)) as preprocessing_run: + source_artifact = preprocessing_run.use_artifact(source_artifact_path, type="dataset") + raw_dataset_dir = Path(source_artifact.download(root=str(data_dir / "raw"))) + raw_csv_path = next(raw_dataset_dir.rglob("vehicle_loans_subset.csv")) + raw_data = pd.read_csv(raw_csv_path) + processed_data, predictor_columns = one_hot_encode_data(raw_data, id_columns, target_column) + + processed_csv_path = data_dir / "proc_ds.csv" + processed_data.to_csv(processed_csv_path, index=False) + processed_artifact = wandb.Artifact( + "vehicle_defaults_processed", + type="processed_dataset", + description="One-hot encoded vehicle-loan data", + metadata={"preprocessing_fn": inspect.getsource(one_hot_encode_data)}, + ) + processed_artifact.add_file(str(processed_csv_path)) + logged_processed_artifact = preprocessing_run.log_artifact(processed_artifact) + logged_processed_artifact.wait() + processed_artifact_path = logged_processed_artifact.qualified_name + return predictor_columns, processed_artifact_path @app.cell(hide_code=True) def _(): mo.md(r""" - ### Get Train/Validation Split - - Here we show an alternative pattern for how to create a wandb run object. In the cell below, the code to split the dataset is wrapped with a call to `wandb.init() as run`. + ## Split the Data and Record Lineage - Here we will: + The next cell consumes the processed Artifact in `split_run`, then makes a + reproducible, stratified train/validation split. Stratification preserves + the target-class proportions approximately in both partitions. - - Start a wandb run - - Download our one-hot-encoded dataset from Artifacts - - Do the Train/Val split and log the params used in the split - - Log the new `trndat` and `valdat` datasets to Artifacts - - Finish the wandb run automatically + The split settings are recorded in the run configuration and Artifact + metadata. Logging the two CSVs as one Artifact connects the raw data, + preprocessing, and split stages. We keep the uploaded version's full path + for subsequent runs so they consume this exact split. """) return -@app.cell(hide_code=True) -def _(preprocess_result): - split_button = mo.ui.run_button(label="Create and log train/validation split") - mo.vstack( - [ - mo.md( - f"Use `{preprocess_result['artifact_path']}` as the input to " - "the next lineage step." - ), - split_button, - ] - ) - return (split_button,) - - -@app.function -def split_and_log_data(connection, data_dir, preprocess_result, targ_var): - split_dir = data_dir / "split" - split_dir.mkdir(parents=True, exist_ok=True) - with wandb.init( - project=connection["project"], - entity=connection["entity"], - job_type="train-val-split", - reinit="create_new", - dir=str(data_dir), - ) as run: - dataset_art = run.use_artifact( - preprocess_result["artifact_path"], type="processed_dataset" - ) - dataset_dir = Path(dataset_art.download(root=str(split_dir / "processed"))) - processed_data_path = next(dataset_dir.rglob("proc_ds.csv")) - dataset = pd.read_csv(processed_data_path) - - # Set Split Params - test_size = 0.25 - random_state = 42 - - # Log the splilt params - run.config.update({"test_size": test_size, "random_state": random_state}) - - # Do the Train/Val Split - trndat, valdat = model_selection.train_test_split( - dataset, - test_size=test_size, - random_state=random_state, - stratify=dataset[targ_var], - ) - print(f"Train dataset size: {trndat[targ_var].value_counts()} \n") - print(f"Validation dataset size: {valdat[targ_var].value_counts()}") - - # Save split datasets - train_path = split_dir / "train.csv" - val_path = split_dir / "val.csv" - trndat.to_csv(train_path, index=False) - valdat.to_csv(val_path, index=False) - - # Create a new artifact for the processed data, including the function that created it, to Artifacts - split_ds_art = wandb.Artifact( - name="vehicle_defaults_split", - type="train-val-dataset", - description="Processed dataset split into train and validation", - metadata={"test_size": test_size, "random_state": random_state}, +@app.cell +def _(data_dir, entity, processed_artifact_path, project, target_column): + split_config = {"test_size": 0.25, "random_state": 42} + + with wandb.init(entity=entity, project=project, job_type="train-val-split", config=split_config, dir=str(data_dir)) as split_run: + split_input_artifact = split_run.use_artifact(processed_artifact_path, type="processed_dataset") + split_input_dir = Path(split_input_artifact.download(root=str(data_dir / "processed"))) + split_data = pd.read_csv(next(split_input_dir.rglob("proc_ds.csv"))) + train_data, validation_data = model_selection.train_test_split( + split_data, + **split_config, + stratify=split_data[target_column], ) + train_csv_path = data_dir / "train.csv" + validation_csv_path = data_dir / "val.csv" + train_data.to_csv(train_csv_path, index=False) + validation_data.to_csv(validation_csv_path, index=False) - # Attach our processed data to the Artifact - split_ds_art.add_file(str(train_path)) - split_ds_art.add_file(str(val_path)) - - # Log the Artifact - logged_artifact = run.log_artifact(split_ds_art) - logged_artifact.wait() - describe_data_g_targ, _ = load_data_utils( - preprocess_result["data_utils_dir"] + split_artifact = wandb.Artifact( + "vehicle_defaults_split", + type="train-val-dataset", + description="Training and validation partitions", + metadata=split_config, ) - trndict = describe_data_g_targ(trndat, targ_var) - result = { - "artifact_path": logged_artifact.qualified_name, - "run_url": run.url, - "train": trndat, - "validation": valdat, - "training_description": trndict, - } - return result - - -@app.cell -def _(data_dir, preprocess_result, split_button, targ_var, wandb_connection): - mo.stop( - not split_button.value, - mo.callout( - mo.md("Click **Create and log train/validation split** to continue."), - kind="info", - ), - ) - split_result = split_and_log_data( - wandb_connection, data_dir, preprocess_result, targ_var - ) - return (split_result,) - - -@app.cell(hide_code=True) -def _(split_result): - mo.callout( - mo.md( - f"Logged `{split_result['artifact_path']}`. " - f"[Open the split run]({split_result['run_url']})." - ), - kind="success", - ) - return + split_artifact.add_file(str(train_csv_path)) + split_artifact.add_file(str(validation_csv_path)) + logged_split_artifact = split_run.log_artifact(split_artifact) + logged_split_artifact.wait() + split_artifact_path = logged_split_artifact.qualified_name + print(f"Training rows: {len(train_data):,}; validation rows: {len(validation_data):,}") + return split_artifact_path, train_data, validation_data @app.cell(hide_code=True) def _(): mo.md(r""" - #### Inspect Training Dataset - Get an overview of the training dataset + ## Inspect Data with Weights & Biases Tables + + The next cell initializes a run (`table_run`) and records the split Artifact as an input. + `wandb.Table(dataframe=...)` turns a reproducible sample of up to 1,000 + training rows into an interactive table. `table_run.log()` saves it under + `processed_dataset` for sorting, filtering, and inspection in the Weights & Biases App UI. """) return @app.cell -def _(split_result): - trndat = split_result["train"] - valdat = split_result["validation"] - trndict = split_result["training_description"] - trndat.head() - return trndat, trndict, valdat +def _(data_dir, entity, project, split_artifact_path, train_data): + with wandb.init(entity=entity, project=project, job_type="log-dataset", dir=str(data_dir)) as table_run: + table_run.use_artifact(split_artifact_path, type="train-val-dataset") + dataset_table = wandb.Table( + dataframe=train_data.sample(min(1000, len(train_data)), random_state=42) + ) + table_run.log({"processed_dataset": dataset_table}) + print(f"View the dataset table: {table_run.url}") + return @app.cell(hide_code=True) def _(): mo.md(r""" - ### Log Dataset with W&B Tables + ## Prepare Predictors and Model Settings - With W&B Tables you can log, query, and analyze tabular data that contains rich media such as images, video, audio and more. With it you can understand your datasets, visualize model predictions, and share insights; learn more in the [W&B Tables guide](https://docs.wandb.ai/models/tables). + The next cell separates predictors from the binary target, computes the + training default rate, and defines the XGBoost parameters. We use histogram trees. + `base_score` initializes predictions at the training default rate before + any trees are added. + + Early stopping monitors the last evaluation metric, validation log loss, + and stops after five rounds without improvement. `n_estimators` caps + training at 25 trees, so the demonstration remains short. + The settings are recorded in the training run and reused as sweep defaults. """) return -@app.cell(hide_code=True) -def _(): - log_table_button = mo.ui.run_button(label="Log a sample W&B Table") - log_table_button - return (log_table_button,) - - -@app.function -def log_dataset_table(connection, data_dir, trndat): - # Create a wandb run, with an optional "log-dataset" job type to keep things tidy - with wandb.init( - project=connection["project"], - entity=connection["entity"], - job_type="log-dataset", - reinit="create_new", - dir=str(data_dir), - ) as run: # config is optional here - # Create a W&B Table and log 1000 random rows of the dataset to explore - table = wandb.Table( - dataframe=trndat.sample(min(1000, len(trndat)), random_state=42) - ) - # Log the Table to your W&B workspace - run.log({"processed_dataset": table}) - run_url = run.url - # Close the wandb run - return {"rows": len(table.data), "run_url": run_url} - - @app.cell -def _(data_dir, log_table_button, trndat, wandb_connection): - mo.stop( - not log_table_button.value, - mo.callout( - mo.md("Click **Log a sample W&B Table** to create the table run."), - kind="info", - ), - ) - table_result = log_dataset_table(wandb_connection, data_dir, trndat) - return (table_result,) - - -@app.cell(hide_code=True) -def _(table_result): - mo.callout( - mo.md( - f"Logged {table_result['rows']} rows. " - f"[Open the table run]({table_result['run_url']})." - ), - kind="success", +def _(predictor_columns, target_column, train_data, validation_data): + X_train = train_data[predictor_columns] + X_validation = validation_data[predictor_columns] + y_train = train_data[target_column].astype(int) + y_validation = validation_data[target_column].astype(int) + base_rate = float(y_train.mean()) + early_stopping_rounds = 5 + model_parameters = { + "objective": "binary:logistic", + "base_score": base_rate, + "gamma": 1, + "learning_rate": 0.1, + "max_depth": 3, + "min_child_weight": 100, + "n_estimators": 25, + "n_jobs": 4, + "random_state": 42, + "reg_alpha": 0, + "reg_lambda": 0, + "eval_metric": ["auc", "logloss"], + "tree_method": "hist", + } + print(f"Training default rate: {base_rate:.2%}; predictors: {len(predictor_columns)}") + return ( + X_train, + X_validation, + early_stopping_rounds, + model_parameters, + y_train, + y_validation, ) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Modelling - """) - return @app.cell(hide_code=True) def _(): mo.md(r""" - ### Fit the XGBoost Model + ## Define Evaluation Metrics - We will now fit an XGBoost model to classify whether a vehicle loan application - will result in a default. + The following helper calculates AUC, log loss, and KS statistics for the + baseline and sweep models from their predicted default probabilities. - Local macOS environments need the OpenMP runtime used by the XGBoost wheel. - Install it once with `brew install libomp`, then restart this notebook. Hosted - Linux environments generally provide the required runtime with the wheel. + - AUC measures how well the model ranks positive examples above negative examples. Higher is better. + - Log loss penalizes incorrect predicted probabilities, especially confident errors. Lower is better. + - KS measures the largest gap between the two classes’ cumulative score distributions. A larger gap indicates stronger separation. - #### Training on GPU - XGBoost 2.x uses the `device` parameter for accelerator selection. To train - with CUDA, add the following alongside `tree_method='hist'`: + The helper uses the full training and validation sets, with a threshold + of 0.5 for validation accuracy. Predictions use XGBoost's best iteration + selected by early stopping. - ``` - 'device': 'cuda' - ``` + These are descriptive model metrics. They do not establish calibration, + fairness, or suitability for lending decisions. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### 1) Initialise a W&B Run - - Training, metric logging, and model-Artifact logging begin only when you - click the button below. - """) - return - - -@app.cell(hide_code=True) -def _(trndict): - train_model_button = mo.ui.run_button(label="Train and log the XGBoost model") - mo.vstack( - [ - mo.md( - f"The training set base rate is `{trndict['base_rate']:.6f}`." - ), - train_model_button, - ] - ) - return (train_model_button,) +@app.function +def evaluate_classifier(classifier, X_train, y_train, X_validation, y_validation): + train_probabilities = classifier.predict_proba(X_train)[:, 1] + validation_probabilities = classifier.predict_proba(X_validation)[:, 1] + false_positive_rate, true_positive_rate, _ = metrics.roc_curve(y_train, train_probabilities) + ks_stat, ks_pval = ks_2samp( + validation_probabilities[y_validation == 1], + validation_probabilities[y_validation == 0], + ) + return { + "best_iteration": classifier.get_booster().best_iteration, + "train_ks_stat": float(np.max(true_positive_rate - false_positive_rate)), + "train_auc": float(metrics.roc_auc_score(y_train, train_probabilities)), + "train_log_loss": float(metrics.log_loss(y_train, train_probabilities)), + "val_ks_2samp": float(ks_stat), + "val_ks_pval": float(ks_pval), + "val_auc": float(metrics.roc_auc_score(y_validation, validation_probabilities)), + "val_acc_0.5": float(metrics.accuracy_score(y_validation, validation_probabilities >= 0.5)), + "val_log_loss": float(metrics.log_loss(y_validation, validation_probabilities)), + } @app.cell(hide_code=True) def _(): mo.md(r""" - #### 2) Setup and Log the Model Parameters - """) - return - - -@app.cell -def _(trndict): - base_rate = round(trndict['base_rate'], 6) - early_stopping_rounds = 40 - return base_rate, early_stopping_rounds - - -@app.cell -def _(base_rate): - bst_params = { - 'objective': 'binary:logistic' - , 'base_score': base_rate - , 'gamma': 1 ## def: 0 - , 'learning_rate': 0.1 ## def: 0.1 - , 'max_depth': 3 - , 'min_child_weight': 100 ## def: 1 - , 'n_estimators': 25 - , 'nthread': 24 - , 'random_state': 42 - , 'reg_alpha': 0 - , 'reg_lambda': 0 ## def: 1 - , 'eval_metric': ['auc', 'logloss'] - , 'tree_method': 'hist' # add `device='cuda'` to train on CUDA - } - return (bst_params,) - + ## Train and Log the Baseline -@app.cell(hide_code=True) -def _(): - mo.md(r""" - The training transaction logs the XGBoost parameters to the W&B run config. - """) - return + The next cell starts `training_run`, records the split Artifact as an input, + and logs hyperparameters in its configuration. Passing + `WandbCallback(log_model=True)` to `XGBClassifier` logs evaluation metrics + and feature importance during training, and uploads the trained booster as + a model Artifact. + After fitting, we add evaluation values to `training_run.summary` and log + validation AUC plus a ROC curve. The curve receives probabilities for both + classes. For large datasets, only the chart is subsampled. The numeric + evaluation metrics still use all validation rows. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### 3) Let's select the data for train/validation + Inspect `validation_0-auc` and `validation_0-logloss` in the run's charts, + then compare the summary's `train_auc` and `val_auc` for signs of overfitting. """) return @app.cell -def _(valdat): - valdat - return - - -@app.cell -def _(preprocess_result, targ_var, trndat, valdat): - ## Extract target column as a series - y_trn = trndat.loc[:,targ_var].astype(int) - y_val = valdat.loc[:,targ_var].astype(int) - p_vars = preprocess_result["p_vars"] - return p_vars, y_trn, y_val - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### 4) Fit the model, log results to W&B and save model to W&B Artifacts - - The current W&B XGBoost integration uses `WandbCallback`. It logs model - configuration, evaluation metrics, feature importance, and—because - `log_model=True` below—the trained booster as a W&B Artifact. See the - [XGBoost integration guide](https://docs.wandb.ai/models/integrations/xgboost). - """) - return - - -@app.function -def train_and_log_model( - connection, +def _( + X_train, + X_validation, data_dir, - bst_params, early_stopping_rounds, - p_vars, - trndat, - valdat, - y_trn, - y_val, + entity, + model_parameters, + project, + split_artifact_path, + y_train, + y_validation, ): - import xgboost as xgb - from wandb.integration.xgboost import WandbCallback - with wandb.init( - project=connection["project"], - entity=connection["entity"], + entity=entity, + project=project, job_type="train-model", dir=str(data_dir), - config={ - **bst_params, - "early_stopping_rounds": early_stopping_rounds, - }, - ) as run: - # Initialize the XGBoostClassifier with the WandbCallback - xgbmodel = xgb.XGBClassifier( - **bst_params, + config={**model_parameters, "early_stopping_rounds": early_stopping_rounds}, + ) as training_run: + training_run.use_artifact(split_artifact_path, type="train-val-dataset") + classifier = xgb.XGBClassifier( + **model_parameters, callbacks=[WandbCallback(log_model=True)], early_stopping_rounds=early_stopping_rounds, ) - - # Train the model - xgbmodel.fit( - trndat[p_vars], - y_trn, - eval_set=[(valdat[p_vars], y_val)], - ) - - bstr = xgbmodel.get_booster() - - # Get train and validation predictions - trnYpreds = xgbmodel.predict_proba(trndat[p_vars])[:, 1] - valYpreds = xgbmodel.predict_proba(valdat[p_vars])[:, 1] - - # Log additional Train metrics - false_positive_rate, true_positive_rate, _thresholds = metrics.roc_curve( - y_trn, trnYpreds - ) - run.summary["best_iteration"] = bstr.best_iteration - run.summary["train_ks_stat"] = max( - true_positive_rate - false_positive_rate - ) - run.summary["train_auc"] = metrics.auc( - false_positive_rate, true_positive_rate - ) - _safe_train_predictions = np.clip(trnYpreds, 1e-7, 1 - 1e-7) - run.summary["train_log_loss"] = -( - y_trn * np.log(_safe_train_predictions) - + (1 - y_trn) * np.log(1 - _safe_train_predictions) - ).sum() / len(y_trn) - - # Log additional Validation metrics - ks_stat, ks_pval = ks_2samp( - valYpreds[y_val == 1], valYpreds[y_val == 0] - ) - run.summary["val_ks_2samp"] = ks_stat - run.summary["val_ks_pval"] = ks_pval - run.summary["val_auc"] = metrics.roc_auc_score(y_val, valYpreds) - run.summary["val_acc_0.5"] = metrics.accuracy_score( - y_val, np.where(valYpreds >= 0.5, 1, 0) - ) - _safe_validation_predictions = np.clip(valYpreds, 1e-7, 1 - 1e-7) - run.summary["val_log_loss"] = -( - y_val * np.log(_safe_validation_predictions) - + (1 - y_val) * np.log(1 - _safe_validation_predictions) - ).sum() / len(y_val) - - # Log the ROC curve to W&B - valYpreds_2d = np.array( - [1 - valYpreds, valYpreds] - ) # W&B expects a 2d array - y_val_arr = y_val.values - stride = max(1, int(np.ceil(len(y_val_arr) / 10_000))) - valYpreds_2d = valYpreds_2d[:, ::stride] - y_val_arr = y_val_arr[::stride] - run.log( - { - "ROC_Curve": wandb.plot.roc_curve( - y_val_arr, - valYpreds_2d.T, - labels=["no_default", "loan_default"], - classes_to_plot=[1], - ) - } - ) - result = { - "model": xgbmodel, - "run_url": run.url, - "validation_auc": float(run.summary["val_auc"]), - } - return result - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### 5) Log Additional Train and Evaluation Metrics to W&B - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### 6) Log the ROC Curve To W&B - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### Finish the W&B Run - """) - return - - -@app.cell -def _( - bst_params, - data_dir, - early_stopping_rounds, - p_vars, - train_model_button, - trndat, - valdat, - wandb_connection, - y_trn, - y_val, -): - mo.stop( - not train_model_button.value, - mo.callout( - mo.md("Click **Train and log the XGBoost model** to run training."), - kind="info", - ), - ) - - # Validate XGBoost before starting a W&B run so a missing native runtime does - # not leave a failed remote run behind. - try: - import xgboost as _xgb # noqa: F401 - except (ImportError, OSError, ValueError) as _error: - _xgboost_error = str(_error) - else: - _xgboost_error = None - - _macos_help = ( - " On macOS, run `brew install libomp`, then restart this notebook." - if "libomp.dylib" in (_xgboost_error or "") - else "" - ) - mo.stop( - _xgboost_error is not None, - mo.callout( - mo.md( - "**XGBoost could not load its native runtime.**" - f"{_macos_help}\n\n" - "Training has not started, so this attempt did not create a W&B run." + classifier.fit(X_train, y_train, eval_set=[(X_validation, y_validation)]) + baseline_metrics = evaluate_classifier(classifier, X_train, y_train, X_validation, y_validation) + training_run.summary.update(baseline_metrics) + + validation_scores = classifier.predict_proba(X_validation) + roc_stride = max(1, int(np.ceil(len(y_validation) / 10_000))) + training_run.log({ + "val_auc": baseline_metrics["val_auc"], + "ROC_Curve": wandb.plot.roc_curve( + y_validation.to_numpy()[::roc_stride], + validation_scores[::roc_stride], + labels=["no_default", "loan_default"], + classes_to_plot=[1], ), - kind="danger", - ), - ) + }) - model_result = train_and_log_model( - wandb_connection, - data_dir, - bst_params, - early_stopping_rounds, - p_vars, - trndat, - valdat, - y_trn, - y_val, - ) - return (model_result,) - - -@app.cell(hide_code=True) -def _(model_result): - mo.callout( - mo.md( - f"Validation AUC: `{model_result['validation_auc']:.4f}`. " - f"[Open the completed training run]({model_result['run_url']})." - ), - kind="success", - ) - return + print(f"Validation AUC: {baseline_metrics['val_auc']:.4f}") + return (baseline_metrics,) @app.cell(hide_code=True) def _(): mo.md(r""" - Now that we've trained a single model, let's optimize its performance by running a hyperparameter sweep. - - ## HyperParameter Sweep - - Weights and Biases also enables you to do hyperparameter sweeps with [W&B Sweeps](https://docs.wandb.ai/models/sweeps/). See the [configuration guide](https://docs.wandb.ai/models/sweeps/define-sweep-configuration) for advanced options. - - **[Click Here](https://wandb.ai/morgan/credit_score_sweeps/sweeps/iuppbs45)** to check out the results of a 1000 run sweep generated using this notebook - """) - return - + ## Define a Hyperparameter Sweep -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ![W&B sweep parallel-coordinates chart](https://raw.githubusercontent.com/wandb/examples/main/marimo/convert/credit-scorecards-with-xgboost-and-w-b/assets/sweep-parallel-coordinates.png) - """) - return + The next cell specifies random search over learning rate, gamma, minimum + child weight, and early-stopping rounds. The objective is to maximize + `val_auc`, which each trial explicitly logs. + The patience values are smaller than the 25-tree limit so every choice + can affect when a trial stops. Learning rate controls each tree's + contribution while the gamma and minimum child weight constrain tree growth. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Define the Sweep Config - First we define the hyperparameters to sweep over as well as the type of sweep to use. We'll do a random search over the learning rate, gamma, minimum child weight, and early-stopping rounds, maximizing validation AUC. + Sweeps automate comparison on this fixed validation split. Repeated tuning + can overfit the validation set. It is recommended that you keep an independent test set to assess the selected model's performance. """) return @@ -1052,273 +505,110 @@ def _(): @app.cell def _(): sweep_config = { - "method" : "random", - "metric": { - "name": "val_auc", - "goal": "maximize" - }, - "parameters" : { - "learning_rate" :{ - "min": 0.001, - "max": 1.0 - }, - "gamma" :{ - "min": 0.001, - "max": 1.0 + "method": "random", + "metric": {"name": "val_auc", "goal": "maximize"}, + "parameters": { + "learning_rate": {"min": 0.001, "max": 1.0}, + "gamma": {"min": 0.001, "max": 1.0}, + "min_child_weight": {"min": 1, "max": 150}, + "early_stopping_rounds": {"values": [3, 5, 10]}, }, - "min_child_weight" :{ - "min": 1, - "max": 150 - }, - "early_stopping_rounds" :{ - "values" : [10, 20, 30, 40] - }, - } } return (sweep_config,) -@app.cell(hide_code=True) -def _(model_result, wandb_connection): - create_credit_sweep_button = mo.ui.run_button(label="Create W&B sweep") - mo.vstack( - [ - mo.md( - "The single-model run has finished. Create the sweep in " - f"`{wandb_connection['entity']}/{wandb_connection['project']}` " - f"after reviewing [that run]({model_result['run_url']})." - ), - create_credit_sweep_button, - ] - ) - return (create_credit_sweep_button,) - - -@app.cell -def _(create_credit_sweep_button, sweep_config, wandb_connection): - mo.stop( - not create_credit_sweep_button.value, - mo.callout(mo.md("Click **Create W&B sweep** to continue."), kind="info"), - ) - sweep_id = wandb.sweep( - sweep=sweep_config, - entity=wandb_connection["entity"], - project=wandb_connection["project"], - ) - sweep_result = { - "id": sweep_id, - "entity": wandb_connection["entity"], - "project": wandb_connection["project"], - "url": ( - f"https://wandb.ai/{wandb_connection['entity']}/" - f"{wandb_connection['project']}/sweeps/{sweep_id}" - ), - } - return (sweep_result,) - - -@app.cell(hide_code=True) -def _(sweep_result): - mo.callout( - mo.md( - f"Created sweep `{sweep_result['id']}`. " - f"[Open the live Sweep dashboard]({sweep_result['url']})." - ), - kind="success", - ) - return - - @app.cell(hide_code=True) def _(): mo.md(r""" - ### Define the Training Function - """) - return + ## Define Training Function + The next cell defines the function the sweep agent calls for each trial. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Then we define the function that will train our model using these hyperparameters. Note that `job_type='sweep'` when initialising the run, so that we can easily filter out these runs from our main workspace if we need to + Each trial consumes the same split Artifact, creates a fresh classifier + and callback, trains, and logs `val_auc`. `job_type="sweep"` distinguishes + these runs from the baseline. We leave `log_model=False` here to avoid + saving every trial's booster. """) return -@app.function -def make_sweep_train( - base_rate, - p_vars, - trndat, - valdat, - y_trn, - y_val, +@app.cell +def _( + X_train, + X_validation, + data_dir, + early_stopping_rounds, + entity, + model_parameters, + project, + split_artifact_path, + y_train, + y_validation, ): - def train(): - import xgboost as xgb - from wandb.integration.xgboost import WandbCallback - - with wandb.init(job_type="sweep") as run: - - bst_params = { - 'objective': 'binary:logistic' - , 'base_score': base_rate - , 'gamma': run.config['gamma'] - , 'learning_rate': run.config['learning_rate'] - , 'max_depth': 3 - , 'min_child_weight': run.config['min_child_weight'] - , 'n_estimators': 25 - , 'nthread': 24 - , 'random_state': 42 - , 'reg_alpha': 0 - , 'reg_lambda': 0 ## def: 1 - , 'eval_metric': ['auc', 'logloss'] - , 'tree_method': 'hist' - } - - # Initialize the XGBoostClassifier with the WandbCallback - xgbmodel = xgb.XGBClassifier(**bst_params, - callbacks=[WandbCallback()], - early_stopping_rounds=run.config['early_stopping_rounds']) - - # Train the model - xgbmodel.fit(trndat[p_vars], y_trn, - eval_set=[(valdat[p_vars], y_val)]) - - bstr = xgbmodel.get_booster() - - # Log booster metrics - run.summary["best_iteration"] = bstr.best_iteration - - # Get train and validation predictions - trnYpreds = xgbmodel.predict_proba(trndat[p_vars])[:,1] - valYpreds = xgbmodel.predict_proba(valdat[p_vars])[:,1] - - # Log additional Train metrics - false_positive_rate, true_positive_rate, _thresholds = metrics.roc_curve(y_trn, trnYpreds) - run.summary['train_ks_stat'] = max(true_positive_rate - false_positive_rate) - run.summary['train_auc'] = metrics.auc(false_positive_rate, true_positive_rate) - _safe_train_predictions = np.clip(trnYpreds, 1e-7, 1 - 1e-7) - run.summary['train_log_loss'] = -(y_trn * np.log(_safe_train_predictions) + (1-y_trn) * np.log(1-_safe_train_predictions)).sum() / len(y_trn) - - # Log additional Validation metrics - ks_stat, ks_pval = ks_2samp(valYpreds[y_val==1], valYpreds[y_val==0]) - run.summary["val_ks_2samp"] = ks_stat - run.summary["val_ks_pval"] = ks_pval - run.summary["val_auc"] = metrics.roc_auc_score(y_val, valYpreds) - run.summary["val_acc_0.5"] = metrics.accuracy_score(y_val, np.where(valYpreds >= 0.5, 1, 0)) - _safe_validation_predictions = np.clip(valYpreds, 1e-7, 1 - 1e-7) - run.summary["val_log_loss"] = -(y_val * np.log(_safe_validation_predictions) - + (1-y_val) * np.log(1-_safe_validation_predictions)).sum() / len(y_val) - run.log({"val_auc": run.summary["val_auc"]}) - - return train + def sweep_train(): + with wandb.init( + entity=entity, + project=project, + job_type="sweep", + dir=str(data_dir), + config={**model_parameters, "early_stopping_rounds": early_stopping_rounds}, + ) as sweep_run: + sweep_run.use_artifact(split_artifact_path, type="train-val-dataset") + trial_parameters = {key: sweep_run.config[key] for key in model_parameters} + trial_classifier = xgb.XGBClassifier( + **trial_parameters, + callbacks=[WandbCallback(log_model=False)], + early_stopping_rounds=sweep_run.config["early_stopping_rounds"], + ) + trial_classifier.fit(X_train, y_train, eval_set=[(X_validation, y_validation)]) + trial_metrics = evaluate_classifier(trial_classifier, X_train, y_train, X_validation, y_validation) + sweep_run.summary.update(trial_metrics) + sweep_run.log({"val_auc": trial_metrics["val_auc"]}) - -@app.cell -def _(base_rate, p_vars, trndat, valdat, y_trn, y_val): - credit_sweep_train = make_sweep_train( - base_rate, p_vars, trndat, valdat, y_trn, y_val - ) - return (credit_sweep_train,) + return (sweep_train,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### Run the Sweeps Agent - """) - return - - -@app.cell(hide_code=True) -def _(credit_sweep_train, sweep_result): - _training_function = credit_sweep_train.__name__ - sweep_agent_form = ( - mo.md( - f"Run an agent for sweep `{sweep_result['id']}` using " - f"`{_training_function}`.\n\n{{count}}" - ) - .batch( - count=mo.ui.number( - start=1, - stop=5, - step=1, - value=5, - label="Maximum sweep trials", - ) - ) - .form(submit_button_label="Start sweep agent and training", bordered=True) - ) - sweep_agent_form - return (sweep_agent_form,) + ## Create the Sweep and Start an Agent + The next cell creates a sweep (`wandb.sweep()`), stores + the sweep ID, then calls `wandb.agent()`. We pass `sweep_train` as the training function and + limit this agent to five training trials (`count=5`). Lower `count` for a quicker experiment. -@app.cell(hide_code=True) -def _(sweep_agent_form, sweep_result): - mo.stop( - sweep_agent_form.value is None, - mo.callout( - mo.md( - "Submit the form above to start the requested W&B training runs." - ), - kind="info", - ), - ) - agent_request = { - "count": int(sweep_agent_form.value["count"]), - "sweep": sweep_result.copy(), - } - return (agent_request,) + Each run closes through its context manager before the next trial starts. + The dashboard compares the selected parameters against validation AUC. + """) + return @app.cell -def _(agent_request, credit_sweep_train): - _sweep = agent_request["sweep"] - # number of runs to execute - wandb.agent( - _sweep["id"], - function=credit_sweep_train, - entity=_sweep["entity"], - project=_sweep["project"], - count=agent_request["count"], - ) - agent_result = { - "count": agent_request["count"], - "url": _sweep["url"], - } - return (agent_result,) - - -@app.cell(hide_code=True) -def _(agent_result): - mo.callout( - mo.md( - f"Completed up to {agent_result['count']} trials. " - f"[Inspect the sweep results]({agent_result['url']})." - ), - kind="success", - ) +def _(baseline_metrics, entity, project, sweep_config, sweep_train): + print(f"Baseline validation AUC: {baseline_metrics['val_auc']:.4f}") + sweep_id = wandb.sweep(sweep=sweep_config, entity=entity, project=project) + wandb.agent(sweep_id, function=sweep_train, entity=entity, project=project, count=5) return @app.cell(hide_code=True) def _(): mo.md(r""" - ## W&B already in your favorite ML library + ## Verify and Explore the Experiment Records - Weights and Biases has integrations in all of your favourite ML and Deep Learning libraries such as: + Open the baseline run to inspect its metrics, + feature importance, ROC curve, and saved model. The Artifacts graph connects + the source dataset, `vehicle_defaults_processed`, `vehicle_defaults_split`, + and the training run. Open the `log-dataset` run's `processed_dataset` + Table to inspect the encoded inputs. - - Pytorch Lightning - - Keras - - Hugging Face - - JAX - - Fastai - - XGBoost - - Sci-Kit Learn - - LightGBM + Open the sweep dashboard to compare hyperparameters and + validation AUC. Inspect parameter trends rather than relying on a single + best trial. - **See [W&B integrations for details](https://docs.wandb.ai/models/integrations/)** + See the [Weights & Biases XGBoost integration](https://docs.wandb.ai/models/integrations/xgboost) + and [Sweeps configuration guide](https://docs.wandb.ai/models/sweeps/define-sweep-configuration) + for more options. """) return diff --git a/marimo/convert/custom-progress-callback/custom_progress_callback.py b/marimo/convert/custom-progress-callback/custom_progress_callback.py index c2952b43..1342332e 100644 --- a/marimo/convert/custom-progress-callback/custom_progress_callback.py +++ b/marimo/convert/custom-progress-callback/custom_progress_callback.py @@ -14,7 +14,7 @@ import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App(width="medium", app_title="Visualize LLM training progress") with app.setup: @@ -43,89 +43,84 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Visualize LLM training progress with W&B Tables + - + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - ## Why should I use W&B? + # Visualize LLM training progress with Weights & Biases Tables - + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/custom-progress-callback/custom_progress_callback.py/server) - - **Unified dashboard**: Central repository for all your model metrics and predictions - - **Lightweight**: No code changes required to integrate with Hugging Face - - **Accessible**: Free for individuals and academic teams - - **Secure**: All projects are private by default - - **Trusted**: Used by machine learning teams at OpenAI, Toyota, Lyft and more + Train GPT-2 on WikiText-2 and inspect how its next-token predictions change + across epochs. A custom Hugging Face Trainer callback logs the same validation + examples to Weights & Biases Tables, alongside the training metrics. - Think of W&B like GitHub for machine learning models— save machine learning experiments to your private, hosted dashboard. Experiment quickly with the confidence that all the versions of your models are saved for you, no matter where you're running your scripts. + > Note: The default GPT-2 model benefits from a GPU. CPU training is supported but slower. We recommend that you start with one epoch and fewer training texts. - W&B lightweight integrations works with any Python script, and all you need to do is sign up for a free W&B account to start tracking and visualizing your models. - """) - return + ## Authenticate with Weights & Biases + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Getting started + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - This follows the Hugging Face + W&B tutorial: train a causal language model on - WikiText-2, then extend `WandbCallback` to compare its token predictions in W&B - Tables after each epoch. + ## Set your team and project - The default GPT-2 model benefits from a GPU. CPU training is supported but slower; - start with one epoch and fewer training texts. Downloads and training begin only - when you submit the training form. The form defaults to a subset of WikiText-2; - set either text limit to zero to use the complete split. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `huggingface`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - mo.md(r""" - ## Authentication - - [Create a W&B account](https://wandb.ai/signup), then enter your - [API key](https://wandb.ai/authorize). You can leave the key blank to use - `WANDB_API_KEY` from the marimo Secrets panel or credentials already stored in - this runtime. A new molab session needs its own credentials. - - If needed, enter a team entity from your W&B workspace URL: - `wandb.ai//`. Choose a team where you can create runs. - """) - return + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="huggingface", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(): - wandb_login_form = mo.md("{api_key}\n\n{entity}").batch( - api_key=mo.ui.text(kind="password", label="W&B API key (optional)", full_width=True), - entity=mo.ui.text(label="W&B entity or team (optional)", full_width=True), - ).form(submit_button_label="Connect to W&B", bordered=True) - wandb_login_form - return (wandb_login_form,) +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() + mo.stop( + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), + ) -@app.cell(hide_code=True) -def _(wandb_login_form): - mo.stop(wandb_login_form.value is None, mo.md("Connect to W&B above before training.")) - _api_key = wandb_login_form.value["api_key"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout("Authentication did not complete. Check your API key or runtime credentials and reconnect.", kind="danger"), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = {"entity": wandb_login_form.value["entity"].strip() or None} - mo.callout("Connected to W&B.", kind="success") - return (wandb_settings,) + + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) @@ -133,22 +128,25 @@ def _(): mo.md(r""" ## Train a language model - In this notebook, we'll see how to train a [Transformers](https://github.com/huggingface/transformers) model on a causal language modeling task: predict the next token in a sentence. Labels copy the input tokens; the model shifts them internally to compute next-token loss. Its causal attention mask prevents access to future tokens. + Causal language modeling trains a model to predict the next token from the + preceding tokens. Here, the labels initially copy the input tokens. GPT-2 + shifts the labels internally when computing loss so each output is compared + with the next token. Its causal attention mask hides later tokens. - We will see how to load and preprocess the dataset for the task and train a model on it using the `Trainer` API. - We will be building a custom trainer callback to visualize the model predictions using Weights & Biases Tables by periodically logging the predictions to the table. + Choose the training budget below. The following cells prepare WikiText-2, + build the prediction callback, and train a fresh GPT-2 model when you submit + the training form. """) return @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): # Reconnecting resets training consent without hiding the configuration form. - _connection_submission = wandb_login_form.value + _connection_submission = wandb_setup_form.value training_form = mo.md( - "{project}\n\n{run_name}\n\n{epochs}\n\n{train_texts}\n\n{validation_texts}\n\n{frequency}" + "{run_name}\n\n{epochs}\n\n{train_texts}\n\n{validation_texts}\n\n{frequency}" ).batch( - project=mo.ui.text(value="huggingface", label="W&B project"), run_name=mo.ui.text(value="gpt2-wikitext2-prediction-progress", label="Run name"), epochs=mo.ui.number(start=1, stop=10, value=3, step=1, label="Epochs"), train_texts=mo.ui.number(start=0, stop=36718, value=2000, step=100, label="Training texts (0 = all)"), @@ -156,21 +154,20 @@ def _(wandb_login_form): frequency=mo.ui.number(start=1, stop=10, value=1, step=1, label="Log predictions every N epochs"), ).form(submit_button_label="Train GPT-2 and log predictions", bordered=True) mo.vstack([ - mo.md("Submitting downloads WikiText-2 and GPT-2, trains the model, and creates one W&B run with metrics, prediction Tables, and model checkpoints."), + mo.md("Submitting downloads WikiText-2 and GPT-2, trains the model, and creates one Weights & Biases run with metrics, prediction Tables, and model checkpoints."), training_form, ]) return (training_form,) @app.cell(hide_code=True) -def _(BLOCK_SIZE, MODEL_NAME, training_form, wandb_settings): +def _(BLOCK_SIZE, MODEL_NAME, entity, project, training_form): mo.stop(training_form.value is None, mo.md("Submit the training form to prepare the dataset and train.")) - mo.stop(not training_form.value["project"].strip(), mo.callout("Enter a W&B project name.", kind="warn")) mo.stop(training_form.value["frequency"] > training_form.value["epochs"], mo.callout("Set the prediction frequency no higher than the number of epochs.", kind="warn")) training_config = dict(training_form.value) - training_config["project"] = training_config["project"].strip() + training_config["project"] = project training_config["run_name"] = training_config["run_name"].strip() or None - training_config["entity"] = wandb_settings["entity"] + training_config["entity"] = entity training_config["model"] = MODEL_NAME training_config["block_size"] = BLOCK_SIZE return (training_config,) @@ -205,18 +202,13 @@ def _(training_config): @app.cell(hide_code=True) def _(): mo.md(r""" - For causal language modeling (CLM) task we are going to take all the texts in our dataset and concatenate them after they are tokenized. - Then we split them in examples of a certain sequence length. This way the model will receive chunks of contiguous text that may look like: - ``` - part of text 1 - ``` - or - ``` - end of text 1 [BOS_TOKEN] beginning of text 2 - ``` - depending on whether they span over several of the original texts in the dataset or not. We copy the inputs to the labels; the model shifts them internally when computing next-token loss. - - We will use the [`gpt2`](https://huggingface.co/gpt2) architecture for this example. You can pick any of the checkpoints listed [here](https://huggingface.co/models?filter=causal-lm) instead. + Tokenize the text, concatenate token sequences within each processing batch, + and split them into fixed-length blocks. A block can cross a boundary between + two source texts. This code does not explicitly insert a separator between them. + + We use the GPT-2 tokenizer and model together. If you choose another model, + update `MODEL_NAME` and check that its tokenizer, context length, and training + requirements fit this example. """) return @@ -256,7 +248,10 @@ def _(datasets, tokenizer): @app.cell(hide_code=True) def _(): mo.md(r""" - Next, we need to concatenate all our texts together then split the result in small chunks of a certain `block_size`. Here we will use a block_size of `128`. + The `group_texts` helper joins token sequences within each batch of 1,000 + source texts and divides them into `BLOCK_SIZE`-token examples. The default + block size is 128. It discards the final incomplete block in each processing + batch and copies the input IDs into `labels` for next-token training. """) return @@ -289,7 +284,7 @@ def _(): Load the pretrained GPT-2 model, evaluate once per epoch, and use the submitted epoch count. `fp16` is enabled only for CUDA. The training function below sets - `report_to="wandb"` explicitly and gives the W&B run a descriptive name. + `report_to="wandb"` explicitly and gives the Weights & Biases run a descriptive name. ### WandbPredictionProgressCallback @@ -361,12 +356,13 @@ def _(): First instantiate `Trainer` with the model, training arguments, and train and evaluation datasets. Our callback needs the trainer itself, so add it afterward - with `add_callback`. Remove the automatically installed `WandbCallback` first; - the custom subclass already provides that integration. + with `add_callback`. Remove the automatically installed `WandbCallback` first + to avoid duplicate logging from the base integration and our subclass. The complete run lifecycle is inside `train_model`. Each submission creates a fresh model and closes the run when training completes or fails. Checkpoints - are uploaded as W&B Artifacts; temporary local checkpoints are removed afterward. + are uploaded as Weights & Biases Artifacts. Temporary local checkpoints are + removed after the run finishes. """) return @@ -405,7 +401,7 @@ def train_model(training_config, lm_datasets, tokenizer, callback_class): report_to="wandb", seed=42, ) - # W&B already owns the display name. Use its unique run ID for + # Weights & Biases already owns the display name. Use its unique run ID for # checkpoint Artifacts, even when the display name has spaces. training_args.run_name = None trainer = Trainer( @@ -438,15 +434,6 @@ def _(lm_datasets, tokenizer, training_config): training_result = train_model( training_config, lm_datasets, tokenizer, WandbPredictionProgressCallback ) - return (training_result,) - - -@app.cell(hide_code=True) -def _(training_result): - mo.md(f""" - Training complete: [{training_result['name']}]({training_result['url']}). " - "Open the run to inspect its metrics and prediction Tables. - """) return @@ -461,46 +448,11 @@ def _(): validation examples change during training. In **Artifacts**, inspect the model checkpoints logged by the inherited `WandbCallback`. - The screenshot below illustrates the prediction Table from the source tutorial. - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ![Example prediction Table from the original tutorial](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACxoAAARQCAYAAADQ58aTAAAMQWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnluSkEBooUsJvQkiNYCUEFoA6UUQlZAECCXGQFCxI4sKrgUVC9jQVRHFDogFRRQLi2LviwUVZV0s2JU3KaDrvvK9+b65899/zvznzLkz994BQO0ERyTKRdUByBMWiGNDAujjklPopKeAAghAGeDAhMPNFzGjoyMALEPt38u76wCRtlccpFr/7P+vRYPHz+cCgERDnM7L5+ZBfBAAvJorEhcAQJTy5lMLRFIMK9ASwwAhXijFmXJcLcXpcrxXZhMfy4K4DQAlFQ5HnAmA6iXI0wu5mVBDtR9iJyFPIARAjQ6xb17eZB7EaRDbQBsRxFJ9RvoPOpl/00wf1uRwMoexfC6yohQoyBflcqb/n+n43yUvVzLkwwpWlSxxaKx0zjBvN3Mmh0uxCsR9wvTIKIg1If4g4MnsIUYpWZLQBLk9asjNZ8GcAR2InXicwHCIDSEOFuZGRij49AxBMBtiuELQaYICdjzEehAv5OcHxSlsNoknxyp8oQ0ZYhZTwZ/liGV+pb7uS3ISmAr911l8tkIfUy3Kik+CmAKxRaEgMRJiVYgd83PiwhU2Y4qyWJFDNmJJrDR+C4hj+cKQALk+VpghDo5V2Jfl5Q/NF9uUJWBHKvD+gqz4UHl+sDYuRxY/nAt2iS9kJgzp8PPHRQzNhccPDJLPHXvGFybEKXQ+iAoCYuVjcYooN1phj5vxc0OkvBnErvmFcYqxeGIBXJByfTxDVBAdL48TL8rmhEXL48GXgQjAAoGADiSwpoPJIBsIOvsa++CdvCcYcIAYZAI+cFAwQyOSZD1CeI0DReBPiPggf3hcgKyXDwoh/3WYlV8dQIast1A2Igc8gTgPhINceC+RjRIOe0sEjyEj+Id3DqxcGG8urNL+f88Psd8ZJmQiFIxkyCNdbciSGEQMJIYSg4m2uAHui3vjEfDqD6szzsA9h+bx3Z7whNBFeEi4Rugm3JokKBb/FOVY0A31gxW5SP8xF7gV1HTDA3AfqA6VcR3cADjgrtAPE/eDnt0gy1LELc0K/Sftv83gh6ehsCM7kVGyLtmfbPPzSFU7VbdhFWmuf8yPPNb04Xyzhnt+9s/6Ifs82Ib/bIktxA5g7dhJ7Bx2FGsEdKwFa8I6sGNSPLy6HstW15C3WFk8OVBH8A9/Q09Wmsl8pzqnXqcv8r4C/jTpOxqwJoumiwWZWQV0Jvwi8OlsIddxJN3ZydkFAOn3Rf76ehMj+24gOh3fufl/AODTMjg4eOQ7F9YCwD4PuP0Pf+dsGPDToQzA2cNcibhQzuHSCwG+JdTgTtMHxsAc2MD5OAN34A38QRAIA1EgHiSDiTD6LLjOxWAqmAnmgVJQDpaBVWAd2Ai2gB1gN9gPGsFRcBKcARfAJXAN3IGrpwe8AP3gHfiMIAgJoSI0RB8xQSwRe8QZYSC+SBASgcQiyUgakokIEQkyE5mPlCMVyDpkM1KL7EMOIyeRc0gXcgt5gPQir5FPKIaqoFqoEWqFjkIZKBMNR+PRCWgmOgUtQkvQJegatAbdhTagJ9EL6DW0G32BDmAAU8Z0MFPMAWNgLCwKS8EyMDE2GyvDKrEarB5rhs/5CtaN9WEfcSJOw+m4A1zBoXgCzsWn4LPxxfg6fAfegLfhV/AHeD/+jUAlGBLsCV4ENmEcIZMwlVBKqCRsIxwinIZ7qYfwjkgk6hCtiR5wLyYTs4kziIuJ64l7iCeIXcRHxAESiaRPsif5kKJIHFIBqZS0lrSL1EK6TOohfVBSVjJRclYKVkpREioVK1Uq7VQ6rnRZ6anSZ7I62ZLsRY4i88jTyUvJW8nN5IvkHvJnigbFmuJDiadkU+ZR1lDqKacpdylvlJWVzZQ9lWOUBcpzldco71U+q/xA+aOKpoqdCkslVUWiskRlu8oJlVsqb6hUqhXVn5pCLaAuodZST1HvUz+o0lQdVdmqPNU5qlWqDaqXVV+qkdUs1ZhqE9WK1CrVDqhdVOtTJ6tbqbPUOeqz1avUD6vfUB/QoGmM1ojSyNNYrLFT45zGM02SppVmkCZPs0Rzi+YpzUc0jGZOY9G4tPm0rbTTtB4topa1FlsrW6tca7dWp1a/tqa2q3ai9jTtKu1j2t06mI6VDlsnV2epzn6d6zqfdI10mbp83UW69bqXdd/rjdDz1+Prlent0bum90mfrh+kn6O/XL9R/54BbmBnEGMw1WCDwWmDvhFaI7xHcEeUjdg/4rYhamhnGGs4w3CLYYfhgJGxUYiRyGit0SmjPmMdY3/jbOOVxseNe01oJr4mApOVJi0mz+nadCY9l76G3kbvNzU0DTWVmG427TT9bGZtlmBWbLbH7J45xZxhnmG+0rzVvN/CxGKsxUyLOovblmRLhmWW5WrLdsv3VtZWSVYLrBqtnlnrWbOti6zrrO/aUG38bKbY1NhctSXaMmxzbNfbXrJD7dzssuyq7C7ao/bu9gL79fZdIwkjPUcKR9aMvOGg4sB0KHSoc3jgqOMY4Vjs2Oj4cpTFqJRRy0e1j/rm5OaU67TV6c5ozdFho4tHN49+7WznzHWucr7qQnUJdpnj0uTyytXele+6wfWmG81trNsCt1a3r+4e7mL3evdeDwuPNI9qjxsMLUY0YzHjrCfBM8BzjudRz49e7l4FXvu9/vJ28M7x3un9bIz1GP6YrWMe+Zj5cHw2+3T70n3TfDf5dvuZ+nH8avwe+pv78/y3+T9l2jKzmbuYLwOcAsQBhwLes7xYs1gnArHAkMCywM4gzaCEoHVB94PNgjOD64L7Q9xCZoScCCWEhocuD73BNmJz2bXs/jCPsFlhbeEq4XHh68IfRthFiCOax6Jjw8auGHs30jJSGNkYBaLYUSui7kVbR0+JPhJDjImOqYp5Ejs6dmZsexwtblLczrh38QHxS+PvJNgkSBJaE9USUxNrE98nBSZVJHWPGzVu1rgLyQbJguSmFFJKYsq2lIHxQeNXje9JdUstTb0+wXrCtAnnJhpMzJ14bJLaJM6kA2mEtKS0nWlfOFGcGs5AOju9Or2fy+Ku5r7g+fNW8nr5PvwK/tMMn4yKjGeZPpkrMnuz/LIqs/oELME6wavs0OyN2e9zonK25wzmJuXuyVPKS8s7LNQU5gjbJhtPnja5S2QvKhV1T/GasmpKvzhcvC0fyZ+Q31SgBX/kOyQ2kl8kDwp9C6sKP0xNnHpgmsY04bSO6XbTF01/WhRc9NsMfAZ3RutM05nzZj6YxZy1eTYyO3126xzzOSVzeuaGzN0xjzIvZ97vxU7FFcVv5yfNby4xKplb8uiXkF/qSlVLxaU3Fngv2LgQXyhY2LnIZdHaRd/KeGXny53KK8u/LOYuPv/r6F/X/Dq4JGNJ51L3pRuWEZcJl11f7rd8R4VGRVHFoxVjVzSspK8sW/l21aRV5ypdKzeupqyWrO5eE7Gmaa3F2mVrv6zLWnetKqBqT7Vh9aLq9+t56y9v8N9Qv9FoY/nGT5sEm25uDtncUGNVU7mFuKVwy5OtiVvbf2P8VrvNYFv5tq/bhdu7d8TuaKv1qK3dabhzaR1aJ6nr3ZW669LuwN1N9Q71m/fo7CnfC/ZK9j7fl7bv+v7w/a0HGAfqD1oerD5EO1TWgDRMb+hvzGrsbkpu6jocdri12bv50BHHI9uPmh6tOqZ9bOlxyvGS44MtRS0DJ0Qn+k5mnnzUOqn1zqlxp662xbR1ng4/ffZM8JlT7cz2lrM+Z4+e8zp3+DzjfOMF9wsNHW4dh353+/1Qp3tnw0WPi02XPC81d43pOn7Z7/LJK4FXzlxlX71wLfJa1/WE6zdvpN7ovsm7+exW7q1Xtwtvf74z9y7hbtk99XuV9w3v1/xh+8eebvfuYw8CH3Q8jHt45xH30YvH+Y+/9JQ8oT6pfGrytPaZ87OjvcG9l56Pf97zQvTic1/pnxp/Vr+0eXnwL/+/OvrH9fe8Er8afL34jf6b7W9d37YORA/cf5f37vP7sg/6H3Z8ZHxs/5T06ennqV9IX9Z8tf3a/C38293BvMFBEUfMkf0KYLCiGRkAvN4OADUZABo8n1HGy89/soLIz6wyBP4Tlp8RZcUdgHr4/x7TB/9ubgCwdys8fkF9tVQAoqkAxHsC1MVluA6d1WTnSmkhwnPApqiv6Xnp4N8U+Znzh7h/boFU1RX83P4LLKR8Rjt5rh4AAACKZVhJZk1NACoAAAAIAAQBGgAFAAAAAQAAAD4BGwAFAAAAAQAAAEYBKAADAAAAAQACAACHaQAEAAAAAQAAAE4AAAAAAAAAkAAAAAEAAACQAAAAAQADkoYABwAAABIAAAB4oAIABAAAAAEAAAsaoAMABAAAAAEAAARQAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdGVi394AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHYaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjExMDQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+Mjg0MjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgou/kQyAAAAHGlET1QAAAACAAAAAAAAAigAAAAoAAACKAAAAigAAoSHWHgLGAAAQABJREFUeAHs3XeYFdXdB/AfIL0qonQFUezYu2LBjjUaTSyJJvGN0cQkGo0lGjXRqLFGU4yxxC527CUGe8GCiIoiYAFURLo0wXfOmLsu7C5tL9678DnPw+7cKeec+cyZa/747i/1ZsyY8VVoBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqCRQT9C4koZNAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRyAUFjC4EAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSoCgsZVSOwgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEDQ2BogQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCKgKBxFRI7CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAQNLYGCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoIiBoXIXEDgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAcBIYNGxajRo2KSZMmxZw5c8phSuZAoKwE6tevH61atYpOnTpFjx49ij43QeOik+qQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqI3A1KlTY+DAgTFhwoTadONaAsuUQJs2bWKTTTaJ5s2bF+2+BY2LRqkjAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBgCAwYMyEPGKTjZs2fPaNeuXTRo0KAYXeuDwFIlMHv27Bg7dmwMHTq04p3p3bt30e5R0LholDoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEaiswbNiwGDJkSKSQ8TbbbCNgXFtQ1y8TAilw/PTTT+dh43XWWSd69OhRlPsWNC4Ko04IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBYggUqhlvvvnm0b59+2J0qQ8Cy4TAxx9/HC+88EIe0i9WVWNB42Vi6bhJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQNwT69+8fc+bMib59+6pmXDcemVmWiUCqanzfffdF/fr1Y6+99irKrASNi8KoEwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAYAvfcc0/ezT777FOM7vRBYJkSKPb7I2i8TC0fN0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpboNhByfK+W7MjUFyBYr8/gsbFfT56I0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGohUOygZC2m4lICdU6g2O+PoHGdWwImTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEll6BYgcll14pd0agqkCx3x9B46rG9hAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIlEih2ULJEt2FYAiURKPb7I2hcksdoUAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKA6gWIHJasbwz4CS6tAsd8fQeOldaW4LwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUAcFih2UrIMEpkxgsQWK/f4IGi/2o3AhAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUGyBYgcliz0//REoZ4Fivz+CxuX8tJfyuX311Vcx77/qbrlevXox77/qzrOPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOq+QLGDknVfxB0QWHiBYr8/gsYLb+/MIgikYPGcOXMqAsaL02UhdFy/fv08gLw4fbiGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpToNhByfK8S7MisGQEiv3+CBovmeek12oEZs+enYeMqzm02LtS2LhBgwaLfb0LCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC8BIodlCyvuzMbAktWoNjvj6Dxkn1ees8EUgXjFDJeki2FjVPoWCNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBui1Q7KBk3dYwewKLJlDs90fQeNH8nb2IAkuiinFNU1DduCYZ+wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFB3BIodlKw7d26mBGovUOz3R9C49s9EDzUIfJsh48IUhI0LEn4TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgbgoUOyhZNxXMmsDiCRT7/RE0Xrzn4KoFCJQiZFyYkrBxQcJvAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1D2BYgcl656AGRNYfIFivz+CxovwLMaN+zxO/d0Z+RV79d0j9txj90W4+ptTi9XPNz2W11YpQ8YFCWHjgoTfBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqFsCxQ5K1q27N1sCtRMo9vsjaLwIz+Pjjz+O737v0PyKI354eBzxg8MX4epvTi1WP9/0WD5bc+bMiRQ0LofWoEGDSIFjjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTqjkCxg5J1584XPNO33nor7rjjjqhXr16ceuqpC75gnjMeeuihGDhwYKy66qpx6KFf5yHnOWWZ/vj888/HY489FiuuuGL89Kc/rZMWxX5/6kzQ+LNx4+KAAw9e7Id28YUXxIYbbrDY16cLixUQLlY/tbqZJXTxrFmzllDPi9dtw4YNF+9CVxEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBASQSKHZQsyU38b9AxY8bk2cP0cfXVV48WLVrUajpDhgyJm2++OQ8an3322YvcV//+/eOFF16I7t27x5FHHrnI1y/tFzz99NORwtjt2rWL4447rk7ebrHfnzoVNN7/gIMW+6FdetGfBY0XW2/hLkyVjFNF43JqqaJxqmysESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDdECh2ULKUd3311VfH8OHD8ynsvPPO0bt371pNR9C4VnwLvFjQuCpRnQkaz/ryyxgy5M2qd5DtufjSy2LEiJHRvHnzOPeP1Sf0e6zWvdZ/CVCsSsTF6qdajBLt/Oqrr+LL7BmVY1tuueXyv94ox7mZEwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMLbC0BI2nTJkS5513XrRs2TImTZoU7du3j2OPPXbum13ET4LGiwi2iKcLGlcFqzNB46pT/2bPMT8/Lga/MSRat24d/e++45sDRd4qVkC4WP0U+fZq1V2xqhmPGj06+t1+Z7z8yiv5l+oFfzqnVvNKF6tqXGtCHRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOBbE1hagsYvvPBC9O/fP/r06ROvvvpqjBs3Ln75y1/GiiuuuNiWgsaLTbdQFwoaV2USNK5qUuOeygHhI4/4Qfzw8MNqPHd+Byr3c8QPD48jfnD4/E6vE8dSNeNU1Xhx2+133hX39r8/Ro0aVdFFl86d49qr/1nxeXE36tWrF6mqsUaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC5S+wtASNr7rqqhg5cmQcffTRedD4+eefj5122il22GGHxX4Ib775Ztx0002RcnFnn332Ivdz//33x3PPPRfdu3ePI488cpGvX9ovEDSu+oSXyaDxxIkT49nnno93h70X7747LEaPGROdO3WM1bIX5+CDvhsrrdSuqlS2p3JA+Kgf/ygOPeR78f77H8R//vvfGDRocN7PGqv3iLXWXDP23mvPvNx5dR1V7mdBQeM5WXj3kUcejVdfGxRvvvVW1K9XP9ZYY/Xotf56scceu2ef61U3RL5v2Hvvxe133JV9Ub0fY8eOjc6dO0WPHj1i2222jg16rV/jdYt6IAWMU9C4Nu0P5/wpXho4MO9i1qxZMWPGzChW0Dh1moLG6YtVI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHyFlgagsaTJ0+O888/P5o2bRonn3xyDBs2LK677rosn7hS/OIXv1jgAxgxYkS89tpr8cEHH+Tnds4Kd2622WZZtm5GXHvttQsMGr/yyisxdOjQvPhnixYtokuXLrHttttGqrI8YMCARQoap4B0yj2m69u2bRupqnLq+/3334/GjRtn2cTOsemmm0aHDh1qvK90/VtZBnJMltdM2w0aNIj27dvHlltuGV27dq32ulQNes6cObHPPvvkx1PI+p133olk07Bhw/yedtlll9y42g6ynbNnz440/3RNGrtVq1bRsWPH2HrrrWOFFVaocpmgcRWSWKaCxlOmTIlbbu0XqXruF198UVUj29O6des4+8wzqg3iVg4I/99RP84X8LXX/jtmVROyTaHeP/3xD9kL0KXKOJX7mV/Q+LOsTPrZfzw3+0uG16r0kXZsssnGcfqpp0SbNq2rHL/239dnXyb/jhRUrq5t33u7+PUvj6v22urOn9++9CKnl7FYrd/td8Tfr7yqqEHj9KVUv379Yk1RPwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwhASWhqBxqhqcqgdvtNFGsf/+++fFPM8999w8KJyCxilwXF1LhT+feOKJ/F/artxSsc1UbPTdd9+tMWg8ffr0uOOOO/JQb+Vr03aTJk3ycVN4eVEqGl9//fV5sHi33XaL4cOH52HfeftOwd8DDjgg1llnnbkOjR8/Ph566KFIIeHC/aT7KGynbN93vvOdWH/9qsVTzzrrrJg5c2acdNJJ8cADD8TgwYPn6jt9WH755ePnP/95NGrUqMqxcVkG87bbbsvD1ulgCn0nnzR2Ckin+a611lpzXSdoPBdH/qHGoPHUqVPj2WefzR/ChhtumKfHq16+4D2pOu2gQYNi0qRJ0bt378XuZ34jHfPz42LwG0PykHD/u++o8dS77r4nLr70L/nxtbPFsX5WFXjNnmvki+algS/HAw8+lB9bOXuBb77x33kV3MqdVQ4IN8kW2fTsLwParbhibJNVCE4Vhj/55NN4Pkv7p+rDqbVs2TJuyfpJvyu3yv3UFDROL9cPjvxxTJgwMdJY3//+wVn4uVcelh38xhtx3b9vyBf8utlL+dfLL63cfV4Z+IQTT87vK93fLjv3iY2yZzjm4zHZsVfi3v73Rfdu3eJvV1yWp/rnungxPqSQcQobF6stiaBxChmnLySNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpbYGkIGl955ZV5NeJDDjmkIsx6yy23xBtZ/m+HHXaInXbaqdqHkHKbKVSb2nrrrZdXEV4xyymOHTs2Ung5VTlOLYV1zz777Hy78o8bb7wxDxmn4zvuuGMe4G3WrFketn300UcrQreLEzRO46QcXqpsvO6662aFTtvERx99FPfdd1989tln+bHjjz8+rxpcmFPKjl588cV59eBURThVVk6VhNP56Tmn0HOquHzCCSdUyWwWgsapgGwqLpvG7dmzZzRv3jwr4Ppq/Oc//8lzknvuuWdeGbkwZvr9ZVZA9rLLLovPP/88Vl999ejbt29ejTllWl966aV4+OGH8/HSfJNPoQkaFyS++T3foHFKxafkdrt27fKy1osa1EwP5OWXX45PP/00D7SmEtWL2sc3U615a2GDxikQe8aZZ8deffeMzTfbtEqH11z377gmqwKc2iknnxS77bLzXOdUDginAzvtuEOccPyvonmlRZa8Lrns8kih5tSOPOIH8cPDD8u3Cz8q91NT0PiP554XDz/yaB6eTkHiLllp8cptxIiR8eOjfppXUz7v3D/GlltsXnH4nOzah7JrGy63XNx+2815WLziYLbxwQcf5s+jQ4f2lXcv9nZ6IQt/XbDYnVS6cEkEjdOX5nKZh0aAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC5S1Q14PGEyZMiAsvvDDPrJ1yyikVBUFT0dZ+/fpFCg7/8pe/rPIQUpj2oosuyouQbrzxxrHvvvvmgeLKJz711FN5SLa6oPF7770X11xzTX56qhKcisxWbqmg6E033RRvv/32YlU0TtWDv/e970XHjh0rd5uHgFOYeNq0aZHCxLvvvvtcx0ePHh0dOnSoci9TpkyJCy64IFK286CDDsqD1ZUvLASNU7HXww47rMq41157bQwbNixWW221OOKIIypfGo8//nheFXqVVVaJH//4x1XGfvDBB+OZZ57Jw8u77rprxbWCxhUUFRs1Bo1TcHTUqFF56jttpzLdm2666UIHhSuHjFM12Q022CA6zxOWrZhFLTcWNmi8oGHSot1nvwPy8O6eu+8WJ514wlyXVA4I752FlVPIuLqWgrffOfDgGJ99WbRq1Sruuv3Wii+KdH7lfqoLGr/++uA49riv+z7jd6fmgebqxvnzRZfk1Yk33mjDuPjCCypOOfqYn8eQN9+KVLX573/9uoJzxcElsJGedTHbkggap/ml0uwaAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJS3QF0PGhfCqmuuuWYceuihFdjTp0+Pc845J1Lg99hjj4327ecuFjpgwIBIVYcbNWoUqdJuqtw7bxsyZEjcfPPN1VY0LgRvO3XqFEcfffS8l+af+/fvHy+88MJiBY0322yz2HvvvavtN1VhTtWYU2byxBNPrPac6nb+7W9/y7Oqffr0ie23336uUwpB4wMPPDB69eo117H04cknn4xHHnkkL6Z73HHHVRxPvunalOVMDslj3pYqKl9yySV5APqYY46pOFx4dqlAb+U+K06oAxvFfn9qDBoni4Sdwsap1HYhbLzJJpsssDJsdSHj9KBSgn5JtGIFjdPcDv7+YTF6zJiYN7ybji0oIJzOKbQr/vr3uLXf7fnH6665Krqtumrh0AL7KVyb0v/33Nmv4rp5NwY8+VT87owzs3LeK2Rh5tsqDl98yWVx1z335s/pwvP/lP1VwgYVx5bEhqDxklDVJwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJZNgWIHJb9txUJ4dr/99otUmbhySxWHU+Xh3r17x84771z5UNx2223x+uuvx7wB5conzS9ofN5558XkyZNjjz32iK222qryZRXbSypoXHlev//972ssapuyqOPHj49PPvkk//fSSy/FxIkT80K4++yzT8U800YhaFxdteN0/JVXXok777wzmjZtGqeeemralbdPP/00Lrvssnx/qihdXXY1VVFO80yh7t/97neFS0PQuIKiYmO+QeN0Vgobf/TRR3nYOH1OlY3nFzb+tkPGaU6LGzROcx2WvbDDh4+I4SNGxogRI+L1wW/EzJkzo2vXLnHDdV+XEE9jpLYoQeP7H3gwzrvgwvy68879Y2y5xeb59sL0c/xvfhsvDRwYO2zfO0479eSK6+bdeGfoO3H0sb/Idz/y0P3RpHHjfDvdT9qfypA3aNAgdt5px9h/v32zL5+e83ZRlM+CxkVh1AkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZAJ1OWicQrQXXvh1dnDrrbeOZs2azfVMhw8fngeN27ZtG7/61a/mOnb55ZfnOcVtttkmdtttt7mOFT5UDvSeffbZhd2RqiX/4Q9/yD8fdthh0bNn9XnBJRU0fv/99+Of//xnPv6vf/3rWGGFFSrmljZSsHhglotMhW9TtjG1FACuX79+pNDvRhttFPvvv3++v/BjQUHjQYMGRb9+/aJJkyZx2mmnFS6LwYMHx6233prnJ+f1rzgp25gyZUpehDcFjRv/L38paFxZ6OvtBQaN02kpbPzBBx/kSfn0uaawcSlCxmk+ixo0HpGFivvf/0BWMvvRmJSl9wttueWWyzdTuexUgfnmG64rHMp/L0rQ+LnnX4iTTv46If+rX/4i9tvnm3LhC+pn/wMOis/GjZtr7AV9SHOtXN771dcGxbl/Oj8+zl7OQlute/esbHnf6LvH7tGwYcPC7lr/FjSuNaEOCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOB/AnU5aPzkk09m2cRHFupZ/uxnP4uOHTtWnHv++efHpEmTok+fPrH99ttX7K+8UVPQeFyWObz44ovzU3/yk5/EKqusUvmyiu0lFTROhV7/9a9/5eOccMIJ0aZNm4oxH3300RgwYED+uUuXLtGrV68877jyyivngeChQ4cWNWj84osvxr333pvnJCvnKismNM/GEUccUVGBWdB4Hpzs40IFjdNlKWycEucp6Z3avGHjUoWM01wWJWh85VX/ihtuvDldlpe87r3dtrHpJhtHjx6r5S/Wz475RQx9551aB42ffubZOOW00/NxTjzh19F3zz3y7fRjfkHjVBa8z657RPJsnv0lQ+vWrSuum9/G3664LJZffvm5Tpk+Y0b2styXharvz57dBxXHOnRoHyefdGJs0Gv9in212UjB7DTvYrV+t98Rf7/yqujSuXNce/XXf+FQ277TXz4UguS17cv1BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILDkBOpy0Pivf/1rjB49OjbccMPo2rVrtUjPPvtsjB07NrbddtvYddddK8658sor86Kwm222WVZU9JviphUnZBs1BY1Tju/MM8/Ms3wHHXRQrLfeepUvq9heUkHjV155Je6888483Hv66afn1YrToIXgbqo6fMghh0S3bt0q5pI2rr/++ih20LgQem7UqFGkasUpP7iwrTDfdu3axXHHHbewl5XVecV+fxY6aJwUUnnqkSNHxhtvvJHDF8LGKWT68ssvx6effpqXsd5ggw3yoO6iPJzaKC9s0PifV10d1994Uz7UfvvuEz/50RHRokWLuYb+yf/9rChB4xSW/csVf8v7vvzSi2P99b95aecXNE4XHPGjo+K9rDz61lttGef+8ZvS5nNNdBE/vP764Ljltn6RAtCppXLgf7v8suylXTX7VLuW1kUKoherLYmgcSqv3qBBg2JNUT8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsIQEih2UXELTrNJt5arCxx9/fJXioYULnnjiiXj88cfz4+m8QuvXr18MGjQoL5qaqhJX12oKGqdzzzvvvJg8eXJeDTlVRa6uLamg8d133x0DBw6MDh06xDHHHFMxdCF4vddee8Xmm29esb+wsSSCxl988UWcc845+RBpLmlOC9sEjatKLVLQOF2eQqUp7Z0WawoSr7jiinm4uFQh4zSnhQkap3nvsde+MW3atNhl5z5x2im/TZdWacUKGv/5wovj3vvuz/u/567bY/lKZcAXFDQ+6w/nxGOP/ydWWGGFuPuO26rMsTY7Hv/PE3F21v+cLBy+915944Rf/7I23eXXppBx8i1WWxJB4xQyTmFjjQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKW6CuBo3/+9//xmOPPRbt27ePY489tkbkTz75JP7yl7/kx3/6059G586d8+0XX3wx7r333ny7poDsU089FQ8//HCe3zz77LkLmd56660xePDgvADrCSecEMstt9xcc0hFZW+44Ya8gnD37t3jyCOPnOt4TR8KYeCaKi2ncPOFF14YqaryTjvtFDvssEPeVRrvjDPOyAuZpmrGa6211lxDpONXXXVVvP/+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CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRLoFDVOFVm7dmzZ7Rr107guFi4+lmqBFLAeOzYsTF06NA8ZFzMasYJStB4qVouboYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNR9galTp8bAgQPz4GTdvxt3QODbEUgh40022SSaN29etAEFjYtGqSMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmALDhg2LUaNGxaRJk2LOnDnF7FpfBJYKgfr160erVq2iU6dO0aNHj6Lfk6Bx0Ul1SIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDuCwga1/1n6A4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIFF1A0LjopDokQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUPcFBI3r/jN0BwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKLiBoXHRSHRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCo+wKCxnX/GboDAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkUXEDQuOqkOCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNR9AUHjuv8M3QEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBogsIGhedVIcECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE6r6AoHHdf4bugAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDRBQSNi06qQwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ1X0DQuO4/Q3dAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoOgCgsZFJ9UhAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbovIGhc95+hOyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQdAFB46KT6pAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA3Reok0HjcePGxZQpU2LGjBnx1Vdf1f2n4A4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILKJAvXr1onHjxtGiRYto27btIl694NPrVNB41qxZMXr06Jg+ffqC78wZBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJYRgSZNmkTHjh2jYcOGRbvjOhU0fv/99/OQcdOmTWOllVbK09f169cvGoaOCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNQVgTlz5sSUKVPi008/jWnTpkUKG6+yyipFm36dCRqPGzcuPvvss0gh4+7du4eAcdHWgI4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTqsEAKHA8fPjwPG6+44orRtm3botxNnQkaF6oZp5R1q1atinLzOiFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwNAhMmjQpUt62mFWN60zQ+J133omvvvoq1llnHdWMl4bV7B4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSKJpCqGg8ZMiTq1asXa6yxRlH6rTNB46FDh+Y3vN566xXlxnVCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYGkSGDx4cH47PXv2LMptCRoXhVEnBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEorIGisonFpV6DRCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEylJA0FjQuCwXpkkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUVkDQWNC4tCvQ6AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmUpIGgsaFyWC9OkCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESisgaCxoXNoVaHQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGyFBA0FjQuy4VpUgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqUVEDQWNC7tCjQ6AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAWQoIGgsal+XCNCkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHSCggaCxqXdgUanQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCwFBI0FjctyYZoUAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAaQUEjQWNS7sCjU6AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCWAoLGgsZluTBNigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLQCgsaCxqVdgUYnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoSwFBY0HjslyYJkWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBaAUFjQePSrkCjEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlKWAoLGgcVkuTJMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAorYCgsaBxaVeg0QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpSQNBY0LgsF6ZJESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlFZA0FjQuLQr0OgECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJlKSBoLGhclgvTpAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEorIGgsaFzaFWh0AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBshQQNBY0LsuFaVIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKlFRA0FjQu7Qo0OgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFkKCBoLGpflwjQpAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB0goIGgsal3YFGp0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAsBQSNBY3LcmGaFAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQGkFBI0FjUu7Ao1OgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQlgKCxoLGZbkwTYoAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC0AoLGgsalXYFGJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKEsBQWNB47JcmCZFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQWgFBY0Hj0q5AoxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJSlgKCxoHFZLkyTIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKK2AoLGgcWlXoNEJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTKUkDQWNC4LBemSREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJRWQNBY0Li0K9DoBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZSkgaCxoXJYL06QIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRKKyBoLGhc2hVodAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbIUEDQWNC7LhWlSBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECpRUQNBY0Lu0KNDoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBZCggaCxqX5cI0KQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdIKCBoLGpd2BRqdAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgLAUEjQWNy3JhmhQBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBpBQSNBY1LuwKNToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUJYCgsaCxmW5ME2KAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgtAKCxoLGpV2BRidAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEChLAUFjQeOyXJgmRYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUFoBQWNB49KuQKMTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUpYCgsaBxWS5MkyJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECitgKCxoHFpV6DRCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEylJA0FjQuCwXpkkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiUVkDQWNC4tCvQ6AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmUpIGgsaFyWC9OkCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESisgaCxoXNoVaHQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGyFBA0FjQuy4VpUgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAqUVEDQWNC7tCjQ6AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAWQoIGgsal+XCNCkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHSCggaCxqXdgUanQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCwFBI0FjctyYZoUAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQJDRoc0AAEAASURBVIAAAQIECBAgQIBAaQUEjQWNS7sCjU6AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCWAoLGgsZluTBNigABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLQCgsaCxqVdgUYnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoSwFBY0HjslyYJkWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBaAUFjQePSrkCjEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIlKWAoLGgcVkuTJMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAorYCgsaBxaVeg0QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMpSQNBY0LgsF6ZJESBAgAAB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EEAgtgU4N43tT4D1I4AAAgggEFyAoDFB4+BHBWMQQAABBBBAAAEEEEAAAQQQQAABBBBA4IET4GLuA/eRs8MIIIAAAggggAACCCCAQJwT4Nw0zn0kbBACCCCAAAJC0JigMV8DBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBAuJjLQYAAAggggAACCCCAAAIIIBDbApybxvYnwPoRQAABBBAILkDQmKBx8KOCMQgggAACCCCAAAIIIIAAAggggAACCCDwwAlwMfeB+8jZYQQQQAABBBBAAAEEEEAgzglwbhrnPhI2CAEEEEAAASoalyZozNcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCQmzdvSsCtW1YiaZIkkihRIlQQQAABBBBAAAEEEEAAAQQQuKcCnJveU25WhgACCCCAQLgEqGhM0DhcBwozIYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgg8WAIEjQkaP1hHPHuLAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBAuAYLGBI3DdaAwEwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDAgyVA0Jig8YN1xLO3CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALhEiBoTNA4XAcKMyGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIPFgCBI0JGj9YRzx7iwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQLgGCxgSNw3WgMBMCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAwIMlQNCYoPGDdcSztwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC4RIgaEzQOFwHCjMhgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCDxYAgSNCRo/WEc8e4sAAggggAACCCCAAAIIIIAAAggg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ypYprXfzSZAggTd+npAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACcQfAlQ0pqJxnK7N6zZslG+//S6oPMCCEyzW+nORVTQ2k7Vt27SS6lWrOD5q84cfS59+/eXxTJlk2ZL/JnrdJrBNJG8WfVt+//13R4vG27Zvl46du0m2rLDMNc/c4j3CytXSpcvlzNmzkjJlCm11KkeOHHqr3J8PHIiwja7bxLw3QnUSrqIx4rh+44ZMmz5D1q3fKH/99ZeO9tn8+aVVy+aS54nc+re//8w2xVCsnjVzmtybLJkOju2Ja9auJ5hMX7F0kaRNm9Ynml27vpHpM2fJDz/u01sL58qZU3LkyK6sif2mJ/IxMT918kTvPYEUjZcsXSbjJkwSN0Xjug0ayYEDB2XIoAHyxuuFvfEG4ouyRJk6KRqjDqAuwG3etEHuuy+1N16cxKeyjur27QOKP0iABEiABEiABEiABGI9gXC/B92+t4281qZVS6lRvWpQ+XeS0yBvvPZGEb1Yceb0KfJk3rwR4nJTNMbCzxat2kYI73She9fOUqZ0KScv7zWTJ+8FlxPIRuvfW+X1Nfd16dRRypcr471uTvzJQtjdZ8XK1Xp3lytXruhbMmbMIE0bN3Jd7Gni5ZEESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCDuEaCiMRWN416ttaQYW8pu2LjJcsX9tGaNatKiWVP3AMonsorGZvvcBvXrSpNGDR2ftXLVGhk5eoy2NmVVanWawLZGEK6i8aQp02TBwkXyyCPppXnTJvJ64dfknnvu0VH37ttfPvzo4zuuaGzydf262i74g82yXFmHPn36jCRKlEjGjBohL77wvAniejSWuzChXeStt+TPP/7QdeGGsviLCfnSpUr63Aurz9179tbbIzdp3FBKvVNCzDbFsEINa9RxXdE4vpV1VLdvnwrBHyRAAiRAAiRAAiRAArGeQLjfg26Kxt169JLPtnwu9erUlmZNGweVfzc5rViJUnrB4vixox3lFzdFY+zsAmvIsGg8euRwv2nI8OijkipVKr9hIOPA+jFkUOya4+YgA2KhpnGRUTQ2cfzf//2ffLF1m17suHfvt/qyfbccE5ZHEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBuEuAisZUNI67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QAIkQAIkQAIkELcJUNGYisZxuwYz9XcdgW9275FWbdpJ8WJFpF+f3o75h1WukqXLKQvHHvnog416+2LHgLxIAiRAAiRAAiRAAiRAAiRAAnGAwKrVa2Ts+IlS5K03pU+vHnEgxbeTGFfTHWcAM6EkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcAcIUNGYisZ3oJrxESQQdQRg0bj4O6UkUaJE0qNbF3mt0Ks+WxwfOXpMBg8ZJvv275eG9etJ40YNou7hjIkESIAESIAESIAESIAESIAE7jCB87/8IpWqVJcWzZpKjepV7/DTw39cXE13+DnmnSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQPwlQ0ZiKxvGzZjNX8ZrAx598Kn36DZB//vlHEiZMKNmyZpV06dLK2bPn5Njx43JvsmRSs0Z1adSwfrzmwMyRAAmQAAmQAAmQAAmQAAncHQROnjolmR57LM5lNq6mO86BZoJJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIBoJUNGYisbRWL0YNQlEH4GLFy/K+g2b5OChQ3Lx4iVJliypZHj0UcmSJbO8U6KE3Hdf6uh7OGMmARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggbuAABWNqWh8F1RzZpEESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCBUAlQ0pqJxqHWG4UmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABO4CAlQ0pqLxXVDNmUUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFQCVDRmIrGodYZhicBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABErgLCFDRmIrGd0E1ZxZJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARCJUBFYyoah1pnGJ4ESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESOAuIEBFYyoa3wXVnFkkARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIlQAVjaloHGqdYXgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIG7gAAVjalofBdUc2aRBEggthC4ceOmLFqyRBImSCiNGzWILcliOqKAgClbRNWkUUNJkCBBFMTKKO4mAtFRh6IjzrupTJjX+EEgOtpBdMQZP2gzFyRAAiRAAjFB4OChQ/LZls/lkfTppUzpUjGRhDj1TL7H41RxhZTYz7/YKj8fOCDP5s8vLzz/XEj3RlXg6EhDdMQZVfllPCQQlwj8+++/smTpctm9Z49cvXZNHsuYUVo2bybp0qWNS9mItWn9Yus2+ennn+XpfPnk5ZdejLXpZMJIgARIgARIgARIgARIgARIgARIIFwCVDSmonG4dSfW3IcBslu3bun0pEiRwjVdHo9Hfv/9d+2fPHlyKsG5kqIHCUQfgfO//CLlKlSWhAkTypdbt0TfgxjzHSdgyhYPRtmijGPCoZ9Hf+/PQQka7wG62EUgOupQdMQZu6gxNSQQmEB0tIPoiDNwTmJniG3bt8uIkWPkySfzyqAB/WJnIuN4qijvxfECZPLjHQG0yU5dusmRo8ekR7cuMabMaAW76f0PpP/AwVqxZ9qUiVYvnjsQiA3v8VOnTkv9Ro116pYtXiQPPfSgTJg0WdauWy+vFiwofXv3dEg5LwUiMHDwUNmwcZPUr1dHmjZuFCh4tPhHRxqiI85oyXw0Rxob+99oznKMR3/23Dn9zkucOLGMGjFM0jz0UIynKTIJ6Najl16YgziQJ7jNm9aLvzkVHYj/BUVg8JBhsm7DRqlRvaq0adUyqHsYiARIgARIgARIgARIgARIgARIgATiEgEqGlPROC7VV8e0njhxUqrWqKX9dm7/wjEMLv72229SrMRtyzbr1qziSn1XUvQggegjYCY0qWgcfYyjK+br16/LhYuXJF3aNJIqVaoIjzFlC4+YVDR+p3RZuXz5SoT0WS/cf//98sHG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lns73y3XXH1VxjHDYvfevfu0jBknHAVKGwEY2R5/3HFyuNLbg9XR0PhgffLMNwmQAAmQAAmQAAmQAAmQAAmQAAmQQDYSoKExDY2zUW8pc5YS+Pvvv+Xtd97VrynBRPIv6mSZIkWKSIkSJ8mlF1/MU1yy9LlSbBIggdQQ+GrNGsHrncqUKS2nnnJKahJhrCRAAiRAAiRAAiSQJAIc7yUJJKMhARLwTWDt2nWybPly2bp1mz6h6thjj1VzTMXlzAoV5PoqleWwww7zHRc9kgAJpJ/AH3/8ITihHO7aa66WfPnypV8IpkgCJEACJEACJEACJEACJEACJEACJEACJOCLAA2NaWjsS1HoiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARI4OAiQENjGhofXBrP3JIACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACfgiQENjGhr7UhR6IgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESOLgI0NCYhsYHl8YztyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAr4I0NCYhsa+FIWeSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEDi4CNDSmofHBpfHMLQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgC8CNDSmobEvRaEnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBg4sADY1paHxwaTxzSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4IsADY1paOxLUeiJBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjg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iOiBBEiABEiABEiABNJOAKciPT50uOBVzd3Uq2xr1qiedhmYIAmQAAmQAAmQAAmQAAmQAAmQQN4iMH/BQhk2YpRUqXyd9OrRPW9ljrkhARIgARIgARIgARIgARIgARIgARIggZAEaGhMQ+OQqnPwBKOh8cHzrJlTEiABEiABEiCB7CGw7IXlMnzkaOnXu6dcdNGF2SM4JSUBEiABEiABEiABEiABEiABEshIAlgLqNegsdzZrq00adwwI2WkUCRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQGwRoaExD49zQu6xKk4bGWfW4KCwJkAAJkAAJkMBBQuD333+XvXv3SZEihQ+SHDObJEACJEACJEACJEACJEACJEACqSawZetWKXXyyalOhvGTAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFYRoKExDY2zSmFzQ9g//vhDVr31tk762muulnz58uWGGEyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNJKgIbGNDROq8IxMRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggewgQENjGhpnh6ZSShIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggbQSoKExDY3TqnBMjARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIDsI0NCYhsbZoamUkgRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIK0EaGhMQ+O0KhwTIwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESyA4CNDSmoXF2aCqlJAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSCsBGhrT0DitCsfESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEsoMADY1paJwdmkopSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE0kqAhsY0NE6rwjExEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCB7CBAQ2MaGmeHplLKpBF4c8VK+WrNGjm3YkW59JKLkxYvI4olsGHDRpk992nZvHmLFCx4hFSpfJ3UrFE91lOAX/v3/yIzZ8/WIdq0vl3y5csXIHRmeAWPvXv3SrVbbpYSJ52UdqHeeHOFrFm7Vi6+8EKpVOm8tKfPBHOPwLr16+W119+Q4sWKSY3q1XJPkAApZ3OZz0bedo9mztx5smfvHrnpxhukdKlSdl4y/pqp986vVEkuuvCCjJeXAmYOgVS02dTHzHm+lCSWwPoNG+TV116XwoULS51aNWNv8hcJZDmBvFD3/vLLLzJj1oGxcKsWzeWwww7LyqeSirY1K0FQaFsCqSireWVcZgss4MVU8A0oAr2TQNYSYPuVtY+OgpMACZAACZAACZAACZAACZAACZBA0gnQ0JiGxklXqnRFuHv3btn0zWbZv3+/lC17hhQtUiRdSWd1OgMfeVQWL3lemjRuKJ06dsjqvGSq8DDkbtu+o/z5559yyCGHaDGbNmksHdq3DS3yzu++k1p16uvwb614PRpv6AhDBPz777/lt99+yxGyYMGCvuSpU6+hfLtjh4wcPjRXDN76DxwkS55fKm3vaC0tWzTLkY8wFyKRiOzc+Z0yKN8shxx6qFQoX06OPvroMFHlapg//vhD/vrrLzn88MOTtnA/afIUWbjoWWnSqJE0bdIoV/O3dNkL0rf/QL3BYvzYUbkqi9/EM6HM+5U13l828o7PA37XbdBYtm/fLkMGD5IrLr/MzkvGXzP1Huo81H257aztyBFHHCGHqnozr7iVq1bJY0OGytlnnyUD+vXJ+mylos3ONH3M+oeURzOQij6JF6oXlr8ovfv2l/LlysnUyROj3lFnde32oGz8epN0f7BbrvRfo8J4fGGf1BlQXqufnXNqfycv1L3ff/+D1KhdV2fwtZeXq428Be0zm+FXU9G2ZniWKV4AAqkoq3llXBYAo6PXVPB1TIw3SMCFgHVMfNRRR7n49H8r1X1Wtl/+nwV9kgAJkAAJkAAJkAAJkAAJkAAJkEBeJ0BDYxoaZ52Ob//2Wxk1eqw+ndIq/PHHH6dPjL29ZQvJnz+/9Ra/WwjkBUPj//73v7Jl6zY5ulAhKVKksCV3mfEVBgkrVq6Siy+6UB5SRgmQ83//+58cc8wxjgLu27dPvv9hlxQpfKKtoWomGB3idOaGTW7NkQcYUx9/3HFy2mmn6tOKr73matsymNsT02ZhKVmGxh999LEMHTFS1q1bH8Pk5JNLCk6dvr5K5Zjrmfzj4Z695eVXXpXWt7eU1q1axogatrxVq1lHdu3aJaVLl5K5s2bExJnuH9m4wJoJZT7sc0oF781btmhx0nmycFBD47BlJSxnhPPiYuq9TDE0fuXV16R7j146y+3atJYWzZOz6SMRhskK26tPP1n+4kv6jQNLnl0oJ5xwfLKizpV4UtFmp0sfvcpFrgBlor4JuPVJfEcS0KOTofG2bdulXsPGOjacdHx/1y4BY06Pd/ZJ3TnntfrZPbc57ya77s2N/k4YQ2Ov8XVOUold8cMlFW1rYlIzdCYRSHZZRd5SMS6zY5bu8mYng9e1VPD1StNPveAVB+/nPQLWudV3Vr2ZI4No8/apQ1VKqblFvyf4p7rPmgntF8tTDlXhBRIgARIgARIgARIgARIgARIgARLIFQI0NKahca4oXthEd/34ozRvebv8+ONP+hS8iuecLaeUKSN43e269RsEJ2DhdONhjw8RGB7T5SSQFwyN8frHZi0OGHL263PAYClnTnPvSvVadeWHH37QJxpWvu5aX4LMmTtPhimj1W5d75PatWrkCJMJRofWyfAqla/TMuL0tL1798pWZYixc+dOfQ2GxjjN0ZzmbDKT2xPTZmEpGYbG77//gdx9732CU0OOPPJIbVSOk0jWrF0rmzZ9o6/feMP10rvnw9rozDDI1E83o56w5e3NFSsFhjs1qleTSy+5OFeznq4F1mRmMhPKfNj8pIJ3lRurSoECBeT5xYvCihU4XFBD47BlJbBglgBeXEy9lymGxg889LCsXPWWbh+wKWPm9KmW3GT3V5x4OnXadDlHnWjcoH697M6Mkj4VbXa69NGrXGT9w8njGXDrk6Qq606GxkjvqRkzZcPGr/VGLNRbmebYJ/V+InmtfvbOcayPZNe9udHfCWNo7DW+jqWU+C8/XFLRtiYuOWPIFALJLqvIVyrGZXa80l3e7GTwupYKvl5p+qkXvOLg/bxHwDq3amdofP8DDwnm0+bOniFBNlqnss+aCe0Xy1PeKwvMEQmQAAmQAAmQAAmQAAmQAAmQQHYSSLahMQw9I9nw9+mnn0bwR5ddBB7s3iNyyWVXRjrf2zWyb9/+GOGV8XHkvvsfiHR7sHtEGf/F3OOPfwkMGDhIMxw+ctS/F7Ps23vvf6DzoAwRMlLySy+/Ssu3des23/KNmzBRh1mw8FnbMDt27tT3of/qdGRbP6m++M03m6My2KX11ttvR66+7nrtZ/FzS3J4qV23gb6H55cbrt+AR3T6k6dMSyh58K9arYaOa+KkyRF1qkZMfF+tWRNp1OS2yOw5T8dcz+Qf6oTRA/l5cnIOMTO9vOUQ2ObC80uX6fy1adfB5m5mXsqEMh+WTLJ5//XXX/r53Vy9ZliRQoWrU7+RTledUO8rfLrLih8upt5DG5Pb7tdff41ceU3lSPsOnSJdunbTbNGu0GUmgVS02enQRz/lIjOJUypDwK1PYvwk+3PZC8t1ndS8ZetkR53S+NgnTSnePBN5suvedPd38CC+++57XUYxFkZ/wo/zGl/7iSOIHz9cUtG2BpGRfjObQLLLKnKb7HGZE8F0lzcnOdyup4KvW3q456de8IqD9/MeAa+5Vcxbob37ZnPmjJUzof1iecp7ZYE5IgESIAESIAESIAESIAESIAESRdct1QAAQABJREFUyE4Cxt42WbbB+RBRNthcr1WnTsKdk+QTjX/++edsyD5lJAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESyGMEjjvuuKTmKNknGtPQmIbGSVVQRkYCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJOCPAA2N/XHy9JWqE409E6YHEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEsgCAjzR+JxzsuAxUUQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSC8BGhrT0Di9GsfUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEsoIADY1paJwVikohSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE0kuAhsY0NE6vxjE1EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBrCBAQ2MaGmeFolJIEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCB9BKgoTENjdOrcUyNBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggKwjQ0JiGxlmhqBSSBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggvQRoaExD4/RqHFMjARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARLICgI0NKahcVYoKoUkARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJILwEaGtPQOL0ax9RIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgASyggANjWlonBWKSiFJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgATSS4CGxjQ0Tq/GMTUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGsIEBDYxoaZ4WiUkgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIH0EqChMQ2N06txTC3tBGbPfVr27t0r1W65WUqcdFJa0t+zZ69MnTZd1q5bL3/97y+p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rp6fMfLaq68ILILTkUCkBNauXSe79uwRlKENG37US5hPnzbVdjnISOOMb/5g0fipZ8rqpeBferGrru+x/LpxO3bukr79BsjGTZukUYP60qRxQ3OK2wgJxJc2PsLsXjXeErLQGMvwVq1eS1o2bya1a9W4au6Znwv9cMVHAl4LFy4WLGdbsODtMmn8WF3n+YmPYUjAjgBFR3ZUeIwESIAESIAEEh8BtvmJ757yikiABEiABEiABEiABEjgchD4/fffZe++ffLLLyckg9J75MiRXVKkSHE5kmYaJEACJEACJJAoCVBoTKFxoizYkV7Ub7/9Ju06dNJCNoS54Ya0cnuBAnLu3O+yc9cuOXPmjP79Svdukid37kij9ezvzbemy7jxE3U4WKxs37a1VKxQ3nM8DEAC8YkABm+nT5+RTJkyxqdsMS8JgEC75zvKV19/o3OaOXNm6dWjuxQqdFcCyLm3LK746GPp0fM1wcclSZMmlVtvuUU/LwcPHpJdu3dLStUe1KldS31Z3cBbxPStCcSXNp63I5hAQhYa40rwUtL6YVrw1fEXCPz999/yxFPPyDnVD4ArWrSIrsczZmR/QAPhv5gRoOgoZigZEQmQAAmQAAnEawJs8+P17WHmSIAESIAESIAESIAESIAESIAESIAESIAErhICFBpTaHyVFHXny8SSzqvXfKUtCcPy2q9qqfpMmTJJtmxZpUTx4pfFEisEZevWrZeMGdPLnXfcIenSpXPOMM+QAAmQQCIn8O1338u+ffslV64cUvD22wUfYCRWd/ToUXln6buydds2OXr0mLrWFJIta1bJkye3PFO6tP4AJrFe++W4rvjQxl+O60xIafy0ebNg2bLcuXPJLXnyJKSsM68REvjrr7/ks1WfC8T++fLllfz58umPKSIMTm8kEDGB1WvW6A9EixYpLDfeeGPE4eiRBEiABEiABEggYRFgm5+w7hdzSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkDgJUGhMoXHiLNm8KhIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggagIUGhMoXFUBYiBSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEEicBCo0pNE6cJZtXRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBUBCo0pNI6qADEwCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBA4iRAoTGFxomzZPOqSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEoiJAoTGFxlEVIAYmARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJInAQoNKbQOHGWbF4VCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAVAQoNKbQOKoCxMAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKJkwCFxhQaJ86SzasiARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARKIigCFxhQaR1WAGDj+Efhs1efy0+bNUrhQISlxX/GYZPDTz1bJ5i1b5O6iReXee4rFJE5GYk8gvrKeOXuOnD59WsqWeUayZc1qn3keJQESIAESIAESIAESIAESSDQEtm7bJp+s/FSyZM4s5cuVTTTXxQshARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARLwRoBCYwqNvZUY+o73BPr2GyBLli6T2rVqSNvWrWKS3959+8vSZe9Kg/p1pVmTxjGJ02skf//9t/zxxx9BwZImTSopU6YMOub3x/nz56Vz1xdlx85d8tKLXT0Lqj//4gsZNHiY3HnnHdLntZ5+syGxZg1mYHfttdfKNddc4ztflavWkIOHDsmoEcM8s/GdKAOSAAmQAAmQAAmQAAmQQDwkgLHDuXPngnJ23XXXSbJkyYKOOf1Avxpjj+TJk8uQQQMkQ/r0Tl4v+XG3cdC7770vvXr31R+xThg3+pLnJdIEYjX2ijQ9+iMBEiABEiABEiABEiABEiABEiABEiAB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Co1NPvDR5i158sgtt+SRO5Tot2yZZ/QHq+a8des0PoHV3dlz58kc9QdhsXEQ6larWlmaqD54yuuuM4f1Fh9Dvv7G1MA4K1myZLJsyUJJly5d1OMgM8bp3PF5yZw5swweOiww7jUfYGLca/3I05q55R98qMeBsPQMl+6GG6Sc+siyRbMmakWhcTJz1mxbobHfsZdJGx/lYlWiFR99LH///bc+jPxirPhCl876g13j12zNtWKFH6z0E+ooNA4lwt8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJXEwEKjSk0TnDlHcLD7Tt2qmVok2ursuEEql4vEBaoILyFtaVbb7lVWzwKFwfEvQhz6tRpPamMieDL4ZDejp07tJVcWL2KxkFovW//fjl8+Ge9FG/u3Lmiic427B9//KHu3Q45/895yaMm4WE9OqG5o0ePCqxKp06TWvLeeqteDjnSa4Dl6wP7D8jNmW+WbFmzOgoPIo0vVv4izReED+uUhe8cOXNoi9126Xu9x5GkDaEBrJdbrSjbpc1jJEACJEACJEACJEACJJBYCODjPIx706ZNIzly5IgjMLZeJ4S127fvUKuvJNFj2Es5ztqvxjPH1Fj5ttvyu+bJ5A8i4527dktyJYDOly9vnI9CjT+7bTRjL8SH8cuOnTu12BgfieKjYDoSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAHvBCg0ptDYe6lhCBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggURPgEJjCo0TfSHnBZIACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACXgnQKExhcbeSw1DkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJJHoCFBpTaJzoCzkvkARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIwDsBCo0pNPZeahiCBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEgg0ROg0JhC40RfyHmBJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEAC3glQaEyhsfdSwxAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKJngCFxhQaJ/pCzgskARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARLwToBCYwqNvZcahiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkj0BCg0ptA40RdyXiAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIB3AhQaU2jsvdQwBAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQKInQKExhcaJvpDzAkmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABLwToNCYQmPvpYYhSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEEj0BCo0pNE70hZwXSAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4J0AhcYUGnsvNQxBAiRAAiRAAiRAAiRAAiRAAiRAAvGYwNZt2+STlZ9KlsyZpXy5svE4p8waCZBAJATOnv1V3p45U3tt2riRJEmSJJJg9EMCV5RAfG6LZs6eI6dPn5ayZZ6RbFmzXlFOsUz8089WyeYtW+TuokXl3nuKxTLqeBFXfKsLT506LVPfnCZbtm6Tv//5W24vcJu0b9uGdXS8KC3MRLQEtm/fIa++1lv69OopuXLljDY6hicBEiABEiABEiABEiABEiABEiCBBE+AQmMKjRN8IY6PF3D+/Hk5d+5cUNauu+46SZYsWdCxxPQD19y564uyY+cueenFrpftZf6VSjcx3TteCwmQAAmQAAmQAAmQAAnERwLnfv9dzv/zT8RZw3gL4y64d997X3r17iuFCxWSCeNGRxwHPZLA1UYgoYypD//8s1SsXE3fni9XrZSkSZNebbeK13sFCBw8dEi/60qePLkMGTRAMqRP7ykX8bktqly1huD6Ro0Ydtne4XmC59Nz7779Zemyd6VB/brSrEljn7HE32DxqS5EP61Wnbpy+PBhDQzPyW3588vrk8bHX4AJPGfR1kkJ/PIve/Zf7dVb8PHC0sULJFWqVJc9fSZIAiRAAiRAAiRAAiRAAiRAAiRAAvGNAIXGFBrHtzKZKPKzZ89eqVH72aBrwcvW7NmzSe5cuaSAsu5Qo3o1SXlxEjzIYwL9sX//Aalao5bOfeWKFaRL544xuZK//vpL9u7bL2lSp5ZMmTLGifNSpRsnIR4gARIgARIgARIgARIgARK4rASaNG8pGzb8GHGaD9xfQoYOHqj9x2dxV8QXRI8kcBkIJJQxdXwS112G28Ik4gmBJe8slb79/21Xevd6VUo9/lhQzo4cOSpnzp6VnDmyyzXXXBN0Dj/ic1tEoXGc2xUvDpw5c0aOHD0mmTJmkDRp0sTJU3yqC2EVe8TI0ZL55pulT++ekj9fPjl16pRkyJAhTr7NgXDveY2/S7E9dvy4LFy4WE6cPCl1atdMkJa8w9VJl4KbnzjDlWM/cV7uMD8fOSKoJyuULyddOnWIKPkvvlwt7y//QGDNHquq3HnHHVK1SiVJly5dROHpiQRIgARIgARIgARIgARIgARIgATiOwEKjSk0ju9lNEHmzyo0vr9ECX0Nv5z4RXD8d2XtAS5rlizyQtfOUvzee/TvxPDvrelvy/YdO6VxwwaSQ02yxMLhxVzd+o3kiVKPy2s9e9hGeSnStU2IB0mABEiABEiABEiABEiABC4bgYGDh8oONb6wur379smJEye0iCV0qfe77rxDWrdqob3HZ3GX9Xq4TwLxgUBCGFPHJ3FdfLhnzMPlIXD27K8ydvwEgfGAls2bBqzmm9S7vNBNPlv1ucyeOV1y5cxpDge28bktotA4cJvi1c6s2XNl+MhR0rVzJ6lUsXycvMWnurBHz9dk+QcfSpXKlaRzx+fj5NXuQCTvee3CRXMMgujVq9fI2nU/CITOcBPHjZFChe6KJtorEjZcnXRFMmWTaLhybBMk3h2CiB5lZ8b0N+WWPHnC5m/w0GEyb/5CSZIkiTY2c0x9MACr31myZJZB/ftJ3ry3ho2DHkiABEiABEiABEiABEiABEiABEggvhOg0JhC4/heRhNk/qxC4zVffBa4hgsXLuiJ8gGDhwQsc/Xv21tKPvJwwA93ggl88+130qbd865C4+AQ/EUCJEACJEACJEACJEACJJBYCbzWp58se/c9qVmjmrRv28bxMuOzuMsx0zxBAiTgSCA+iescM8kTVx2BZi1ayw/r11NoHI/ufO++/WXpsnelQf260qxJ43iUs8iyMmHSZJkydVqCEBq3atNOvvt+rXR7oYuUL1c2ogu8Eu95ny5TXk4qK8ZWl1CFxtZriM/74cpxfM478gZL9eUrVpGCtxeQMaNGhM3uio8+lpdfeVUbXhk8sL/+8OT8+fMye+48GTV6rKRV1skXLpibqFa3DAuFHkiABEiABEiABEiABEiABEiABBIlAQqNYyw0hmUlOhIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARK43ARuvPHGmCZJoTGFxjEtUIyMBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgyhCg0DhG3Lds2aJjuivGQuMYZY/RkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMAVJUCLxhQaX9ECyMRJgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgATiJwEKjSk0jp8lk7kiARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARK4ogQoNKbQ+IoWQCZOAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQPwlQaEyhcfwsmcwVCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAFSVAoTGFxle0ADJxEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCB+EmAQmMKjeNnyWSuSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAErigBCo0pNL6iBZCJkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxE8CFBpTaBw/SyZzRQIkQAIkQAIkQAIkQAIkQAIk8H/2rgNsamKLXiug2GmKgIKKXfHZERsIIkgHKdKRIlaQonQQBBHp0qT3DgoqihUV1GdD6VUFQaoC6rO8lzdn8MZsNslm8u/+7OIdvp9kM+3OmTv9zIwgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoLAEUVAiMZCND6iCiiRCwKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCKQnAkI0FqJxemqmSCUICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCBwRBEQorEQjY+oAkrkgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAumJgBCNhWicnpopUgkCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgcUQSEaCxE4yOqgBK5ICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCQHoiIERjIRqnp2aKVGmPwPSZs+jAgQNUscI9VPCcc2x5Dx36maZOn65/N2/WlI455hjbzvRl//791OGpzlS/Xl0qdUtJU+/Z4v7d95bR2nXr6Pprr6USJa7OljizIxJO1zUlStB11/4rO6KUOASBbEVg/YYN9PY779LZBQpQpXsrJiXuVISZFMHSKBC/tiONREw7UTKtPv75559pyrTD/YAmjRrSCSeckHaYpkIgLv/nFixIFe4pn4oodJhShrIOLedVMut/U6nSQQZTmcV95iMQNE4Lssu0lM+eM5eWr/iI+j3TO9vboEwp2+nQt0gHGTJNt0Xe8AiIfoXHSlx6IyA6RJTdbZrfOCcd+igsW2U1d1RAzSGlwqRDOlORLglTEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEji4EhGgsROOjS6MlNdmGQLUa99H3O3bQ0MEDY4ioO3/4gapUq6nl+HDZO3TsscdGlul///sf1ahVh/LkzUOjRwyPHI7b42+//UZ//vknnXjiiaEWn5HOdh2epOOPP54G9O9Hec46yw7y6T59adHiV6jFA82ocaMG9vdMf+F0IU1ImxhB4GhD4JVXX6OeT/ehq668kkaNGJaU5KUizKQIlkaB+LUdaSRi2omSafXxrl27qVLV6hrHt5cuoVy5cqUdpqkQiMs/Nuegb5QqI2Uo68hyXpnW/0H9QVOpospgGo+4/2ci8OK48TR/wUKqW7s21atb2wYhaJwWZPf+Bx9Q/+cG0uWXX0a9e/Www0vHF4wfq9eqTQXy56cRw4dGEhEbZkyMc0yZKWU7HfoW6SCDST6L28xCQPQrs/IrHaUVHSLK7jbNb5wT1EfJLt1h2TB3hDFEKkw6pDMV6cpKmMkcf2VFDvErCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCfyMgRGMhGv+tDUfR2969+2js+Ak6RWVK30E4lTUrZufOnbTs/Q9o9Zq1tGfvXh1UsaLnU7GiRan4RRfRRRddmJXgPf2uW7eelqlF3a1bv6G9Ks7cuXNTsWLF6IJiRenyyy6NfIICFl/nzpuvT3navv17uuCCYnT11VdRtSqV6bjjjvOUxesjT7KmkmiMeHEq4rDhI2jMqBF0hVrcTobp3LU7LX3zLWrWtDE1a9I4YZAvvbyI+vR9Vrt7umd3KlP6TtsPLz5kGtH4m2+/1WkoUriwnRbnC6dLiMZOVJL7DjLewUOHqHChc0MR3pMbu4SWikWzVITplVMHDx6kXbv3UD61CeOUU07xcpK23/zajrQVOA0Ey7T6WIjGmUU0zuT6JGrxjFpXB/UHTWWJKoNpPP909+hnLV++gj797HPavXs3/frrr1SoUCE9nsK46uqrrjQa/zCeKz76mN5b9j7/jHueddaZ1LRxo7jv2fWhYuVqtGfPHipSpDDNnDbFjjaIwBJk161HL1ry+hv6pppFC+cT0peu5o2lb1KXbj00Ibr0nXcYi4nNqLfc9vdYL0wAD7VuRffXraOdpkvZzoSxXqb1b8LogrjJPgQSjaXTWb8SyZ59KEpMQQiksw4FyZ1Mu+xu0/zmCoL6KMlMb1BYLFumEY0T9QeC0pwOdskcf6VDekQGQUAQEAQEAUFAEBAEBAFBQBAQBAQBQeBoQECIxkI0Phr0OC4N7Ts+ZS/+tnnsEapVs0acmzAfsDg9aNAQWqxOvoQ5+eST6dJLLtan9G7atNkmHYN4+kSbx+j0008PE2ygG0wC9uzVh1atXq3d5cmThy4uXpwOHDxAmzdvJlylhmvIGzWsTw3r369P2Q0M0GEJv23ataeVK7/SYZxz9tm0bft2+u9//6tPJcYJVaeeeqrDh/8rT7Kmmmh84MABwmL5TTfeoK+/9ZcovI0p0Ri4vTBylMb6wZbNKWfOnHZkvPiQaUTjMuXKU44cOWjxSwvstDhfOF1CNHaiktx3rqdmTp9CfoTv5MYooTkRSMWiWSrCdMrM7zNmzqZBQ4ZSh3ZPUNUqlfhzRjz92o6MEP4ICZlp9bEQjTOLaJzJ9UnUIhm1rg7qD5rKElUG03j+qe6xsXLajJk0esxY+v333/W450K1uRLjqi1btxI2W8INNot26fQkXXjBBUZQjRg5miZO/pvA6/bsJvi67VP9GyTo15a8TpXU9d433nC9HV0QUSfIbtPmLTRh4iS96TPquNoWIsUvDRo3pX379tPCebMjkcgxLn7woUfjpFy9Zg398ccfdN55Rei0U0+Lsa9erQqVvauM/pYuZTsTxnqZ1r+JyXT5ccQRSDSWTmf9SiT7EQdXBNAIpLMOZVcWZXeb5jdXENRHyS4sWLZMIxon6g9kF35R40nm+CuqDOJPEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEYhEQorEQjWM14ij4hdOWcOrSSSedRL/88gtFJRqvWPER9Van2ILo+kCzJlSqZEkqXLiQPsmJYfrppwP0ymuv0chRYyiXIp/27NGNrr/uWrY2emKxe+as2TRChXXmGWfQg61aUAl10nDevHljwsHpyuMmTCLs6sdpxM/1eyb06cbP9h9A89Q1ureUvJl6dOuiidM42euZfv3p9TeW0o2KzDtoQP+Y+Px+8CRrqonGiB8T/JjgnjFtsjr9tZCfSKG/mxKNgwLmxYdMIhpjAb3krXfo08iEaByUu6m1a9HqIfpy5UoSonFqcfYLPRWLZqkI00v+UWNepPGqHRCisRc6R983bmcyZeOHEI0zi2icyfVJ1NKeXXV1kHzpIEOQfJls9+1331Gvp/vQV1+voiqVK1GlihXowgsviLk94j//+Q998u9P6bkBA2nvvn3UssUD9om0YdLer/9zNH/BS1Svbm21GfLGOC+5cuWkyy69NO77kf4QRNQJsjvScoeNH3n68KOP67F7sk+UrlqjFu3YsZOe7duHbi11i69I6VC2M2Wsl2n9G99MF4sjgkCisXQ661ci2Y8IoBJpHALprENxwqboQ3a3adk5z2wKGcuWSUTjMP0BUxzEvSAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCQjQWovFRVQr27N1Lde9vqMjApE4Vuotmz5kbiWgMAheIFzi9uFvXzglPG/3uu23UqUs3tVC9V5Fhp9ApuXMb4QqS8eNt29FHH39C5e8uR20ff4xy5z45MAxc2YtrYS+77NJQ5GBcn3tvleqUW53KPG/urBgZLcui+o2a0MaNm2jCuDH6BOXAyJUlT7JmB9F43br11LBJM30yNYjjWTX/dKLx/v37qXzFyqGIxk0aN6TmzZpmFXLx74FA7Xr1aevWb4Ro7IFNdnxKxaIZh4mr2Ee+MCxlyXj2uedp3vwFGU00HjZkEF37r2tShtHRFDAvcmdKfYy+WMVKVXUWvL10CeXKletoyg7ftHD5v+7azCIaZ3J94psZCSw4r1JdVweJkQ4yBMmXqXYff/JvatfhST2O6vRkR7r5pngSsDNtP//8M/VTGzHfWPomjR4xnK644nKnte87xn1vvvU29VcbPkvdUtLXXbpZBJGJg+zSLR1+8uCU0A+Xr1CnGc/R4xw/d1G+mxKNj2T9kiljPe7fZMpGqih6I35Sh0CisTTrVzr2nxPJnjrUJGQTBFiH/sl1VHb3V7NzntlEF+CWZcskonGY/oApDuJeEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAEhGgvR+KgqBVhYXvb+B9Sx/RO09ZtvCNdBm55ovHbdOmrSrAXdVaY0de38VOgrVzdv2UL1GzZRV9RW0OQvE2BnzppDAwcPofbt2lK1KpVDe12w8CXq++xz1EudpAx5g8wHHy6ntu060O233Up9+zwd5/TV15ZQj169qVzZMuq0465x9u4PPMnqRzQ+9thj6cNl79DXq1bRy4teoS+++JKOP+F4Rd6+hO6rWUOfxuwOM+g3rnsrUKAATZk4PshZKDtTojFOrh40ZKgOG9crI21sePHB60RjEKRnqFOqTzjhBHrkodZx5HEshAP31avXUM6cOah48eJUu1ZNfY0zhx/mCZLElGnT6auvvlZ6/y2dW/AcTUCvX68unX766XYQBw8dUqegTqQfftilyREnnngilb7zDtsecRcvfpH+7U7XkteXqoX75fTllyvpDHXidsmSN1GTRg1jsLADUi8gz89VRMjlKo0bFIG9QP58dOmll1Bj5ef002KvG2Z8QeyvWaM6Abf5SrdxqvgN6rrnJzu0cwbt+Q4i/dTpMwnlF8R/nHx91VVXUL06dWJwX7nyKx02CP04ffzd95bp07IRJxaQKle6l9Zv2EDTZ8yiM888gx5u/WBcfDiFeMHCl3Uc8OM0uJ4bJ5Mv++BDdS33dsqXN5/OzxrVq9rXck+eMpW+37FD5f3rhBP1QFDJ/dfmBFxvXa7sXXaQSMuSN96g9es3KLk26pPTcSpfs6aNA0/3DosHIjLJK7jHqShL33ybvvjyCyXXRqVPP6jT3gtTqVIltf4eg50eDsP5e8nFxfVmge3ff0+LFr9Cn3zyKUFOnMzeonkzGx+HV/361tvvKLxfom+//Y5yqHJy0YUXar1FXZYVw4tmV115JWGxyMsA/+kzZ9HatWsJ5MkLihVT5Nh/qXRUp+OPPz7OC4cJAi2ItCAuvfPue7Rq1WrKmy8vXX7ZZdS4YX069dRT4/ziQ6K0wv6zzz9X5eojAo44LREn7cMUKJCfUA85DYjsqIMQP+oJXBGPtsJZ7tl9mLIBtygrk5QOY2MK9Bf6CExwbTjqukSG2w5gjrxc8NLLShf+reuJQueeS9WqVqYype/0DMZE93DTwA+7dukyDbKPl4FefanqBMRX8uabYpwko342kTcmctePrNTHpjJweQ1TH+MKedSVn3z6qd40gevkb7n5ZrqnfDm66+4KOhUmROOwdRHXwSeffJLq4z0a1w5NnTaDNm7aRLfdWkr3eZxwYkMXyum69evpzz//1BurUB7uuP02p7OY90Tlkh1z+fciGuPK1yFDh9EfKs46tWtp3Wd/eJroG5chd//LNDzT+iRsX4PlYF2KWvdzOHi+OHa8rvNwMm2JElc7rQin12KD4LGq7XnqyQ5x/XbcdILNeaj7mHTqzivoFOprnIaKNgx1Ndr/006Lras5TRDA3R9kocK2v1Fl4HjkGY8AbrKpU6+BvrFlxPChcfkX7+PwF/TdatetrzZF5KSJ48d6tu9uvw8/1ka3XWPHjMzSycXc9t5drizdcP11tHzFCnXLzJuqj/Wl7nOgbULfFHqJOnfhS4vUWPd9XecWLVpU9QcbecaPm28+V2MvnLzrrN+CyMRBdiwn+tfuvi9jY1q/cpic9i/UGGPpm4nLIcfnfmLjbFnV9uRX/aFkjBfd4ZsSjbktCFu/cHxh20J273ym61jPKaPznfs3fiQ+9MNNxkGs961aNFfj1dP1+AG3NqHu7tmjq72ZGu3/7Lnz6L1l79M3as4IN2EVv+giwtiYTd68eejBli34p36a9KvhwVR+jixsOwL3pvoStV8YtS0P24fitId5hh1Ls37xPE0q5zMgN8aKEyZOopVqTmavei9SuIiek6mr+n2YP4EJK7t2rP4z6R8OHjqcfvvtN2r/RBs9xsZczFtvvaM3/I0Z9YI9TktGnmA8ivlFzFFs2bKV8mGce/nl1FKN6VGe3CasbPBnkmZ3PPzbVM/Zn/vJOuRXR8G9advH9RRuUsinbq9DHXV4nu2rUPNsmzZvoUmTJ6uxzAZdt51XpHDcDXc1q1fTc2/u9Dh/hx3TZ7W/alpH+Y1zgvoonC7TsQr8hZm/4/BZNi+iMY83zjn7bH2rAvvBE20zyj76Pdu/30HnqzEz+gh169SOG7eESWeY8Ez6Ayxrdusyx5vomWj8FVaXveLJytwvwjOtT037EV4yyzdBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIB0QEKKxEI3TQQ+TIgMTZUtcfRUNHzqYnnt+kD7x0YRojEWnxk2b0/4ff6QZUyfHEBQhJBYwd+3erSeE3WQ62A8eMkyTuuarE4ML5M+PTwkNCIf11CnM11xTggb07xfnHovKBw4c9DyVCZO2IEVjEnHurOlxfp0f5sydrzAZqBervYibkAMTp0XPP5+mTZno9Or5zpOsbqILT4yCcAZC8bQZMzVuWOzbt2+/DitXzpxqsa+b0QlgIHFv2ryZ3nhtsSYQeAoV8mPnrt3VQvZbmqzZrEnjhL44TXAI8nQYojFOjmjU5AFNdOvWpZM+qZojwsIHiOXIE4SFiebfVT5v27Zdkxs6KaIMFt3DGFwL3bV7D32VL3Qyf758WkehGyDKdu3ciUBehcF1v1gk9zPOq4Cdiyqb1WIGCLkgViJc/MFUuKe8Jtq4w9u7dx917tadPv/8C8qRI4dK33l6sQuLb3nVYsqA/n1jSFaML8iZjz3yMD3Q8kH69ddfNamiWtUq1K7t4+4oYn6DHIQTGQ8ePKj95Fdlb7cqp8AZ5PTpSp/5RE1eKMEpzVhA7v3M32Wud68emoD5viIJP9G+I517bkGaMzO+XHEYboIq6g9cg7pq9WotBwiYkAm4I5+xIQCEtirVa9HOnTtj0sA/at9XU2MAjJ/p158Wv/Kqxhv+8yuyNkjisDtZnUw+fOgge8Gc/eNpgodpXmFRsU/fZ7WuIi6Qxi31D5P/MCBJ9+jWRb/zf5y/wKtB/XrUvUcvXWehjkD9BgM9mTjuRQJR0WmwKDld1SEwBQsW1IR8LGYCA5DS2z7+qNO50btfPnIgWAR8ftAQTaaFrKjDdu3ara0vVpsCnu7ZXesIu8eTw4Q9yh8WSuEX+nfgwGGMkI6BA56NI4qHSSuugl+sSJJeBqTdSRPG2lYvL1pMAwYO1vKjHJx6yim0ZetWjXn1alXjyhXLHlQ2QMjo8GQnXaeDgIe0bNq0WS9qg8Q8YeyYmPrRFsbxwm0H6sWJk6dospRTF+AUBD7UL05jqnsvjBylFmGnqtsNylDP7vGbZ9Ce45R/TeaYNIGKFSuqo0tW/WwqrzOt7veo9XEUGbi8JqqPURY6duqsN8pAXpDnQW7AH3QBxAOYsERjk7oIdW2DRk0JG7zcfTzoI25oOOWU3DRr+jSbaAg/2DCEdhcGt0Ycd9xxjrqrDHXs0F5v5tAO/vovTLlk91yGmFzG31FftW3XURMIQZQFGZZNFH3jMuTufyFMk/BM6hOTvganjXUpSt3PYfATeYfNg1UqV9KbCfk7nthoNWz4CP0JJ9JeeeUVTmvdp8BGLJwyz5sOOK9uuvFGRQK6hMaNn6jbFWddVKjQuar/MCmGdMppQgTu/iC+mbS/UWVAPGK8Eeg/YCDNX7CQQKjCRhy3QX1/muq3IJ/dBhtVsWG1u7rJJkwfHH18bG6bP2cWnX12AXdwoX+zHjRqqDauqXZpwqTJWudQltFOwYA0BqI85AMZ16mneB+l9B6bQ5zG2W44NyEF6XCQHcvp7vsizqj1K4eJtOfMcSKNfnFcqHLoTKfzHW0CbjbCBj6cNJ1sY0o0Nq1fIK9JW+iVvnQd63nJim9+ehp1HMThob5fqDayYX4I42OUpVcXLdQkPmySa96qte6nYGyL/s7qNWvtfjrLivHr9KmT+KfaOB2+Xx1VfkRm0o6Y6ktW+oVR2nKTPpQNdIiXMGNpBMP6AJJoyucz1Ni+QeNmWo9QL4O4/t2273Q/E33OSRPGEQiIYWU36c8xZOgfYpPlklcWUXM1n4I6Efp/XpEiti5nNU8Qfo+evfXGV8SbU83rnabGAPgOU0SRXse/ODqObBxGtihp1pG6/oui564g7J9OHXK2pXAQte3jMPs901vXUdiUHHaeDXUa/AOrguecQ3ny5FGbZlfa8vILz2vxb/fTZEzPbXV2tWl+45ygPgrSF2WsgjwMM3/H+LFsbqIx+mYPPfKYntNCHxRz6mwwN9ipS3c9/6fnT1S+faM20IMUjTEL1gCcNyImSmfY8Ez6A0dClxmfMM8gTEx02SuuqHO/CMu0PjXpR3jJKt8EAUFAEBAEBAFBQBAQBAQBQUAQEAQEgXRCINlEYxAMrEz4W7lypYU/MUcHAopUaJUpd491e+myljrlUSeq77P9rRtuLmWp00VDJ1Kd9qr9KFJljB9FerR69+lrlStfUdtXrV7LUgRA65bb7rTUSZG2W7UbXturk6bsb4leHnr0ceuOMuUsRSCMcbpt2zbr0cfbWrfeUUaH+WibJ6yRo8fodKqJZdutIl5o+0OHDtnfvF6QJuBR4746XtaWIvzp9ADDMAYYIDx1RXGM8x07d+rvsLu51O3W2HETrH379mk3e/bstdq266Dt1WmHljp5LMZv0A91Fa729+lnnwU5C2WnrjvWYY0ZOy6Ue2eanNjDc6/ez+iwFEnFDgtYtmjVWn8fPmKk/Z1f1Gmg2k6RFCzkM5uvvv7aKl+xktYHRXbnz77PAwcPavfAWpGnrR9//Em7hS70H/C8jgP5yboF2Xft2mUpkrW2u7tCJf0b3/CHupsNp+umW26zKtxbxVLXQ1tqMlzLqwiw2j/sgI3bPNamnbZXJ2RrP2y/8OVFFvw0faAlf9JPxrdytZoW/qD3yGfIm0iv165dp8MEBurqa0uROXWYKLPI38lTp8XEhXILt5AB5VdtSLDUqRKWWnS206/IJtpN9Vq1Y/zyDw6jecvW/Ek/1YK29ocytnvPHttOnZxp9Xy6j44DH9WisMYbcuDvs8+/sPPh4MG/y7EikFstWz9sqRMWbb+wf1jVGfDX5on2dhz8YoqHaV4pkq+Fsjt+4iRrx44dHK2lFsg0npBr9Zo19ne8cP4Cb+S/IndbGzdt1nWOOsHH4rpEEZhj/KkTjHU64Qdlgw3qE7hVp9bzp0hPv3xEYOokKuvGkrdqeadMnW7rBtKiiPBaroaNm2kddUbOYQIHtBfqZBsLugiD9gE6BbtHHmvj9GaFTSvKPMoq9BfhTJo8xdYdtbnBDhN4QX6UcXUyjf0desl+l6/4yP6OF5Y9qGxUrFxNx6tOsbXTrk4BsiZOmmIhL8MYzm/kK7CE/qvFLUud3mi1av2IDt+rnTLVPbUxRYeFOtBZt7GMiA8Y1q3fkD/pZ7LqZ1N5Y4Rw/YhaH0eRgctrovq49cOPavzgDuVFkWq0TqiTY+0yDXzDtvOmdZE6EUrr+J133W2hb8EGfSXEi/rYaaCj+I6+ojo1TMsKmdUp/VaFSlW1ndoA5PQSulyyJy5DaqGZP+kn+gGIu+WDD+l6z2kZRd+4DLn7XwjXJLyw9YlpX4PTx7pkWvezf+dT3Y6gMfRql1GflrvnXm0/esxYpzfrF1X/lrz1Dj0+QN+MDecV6iHIp07BtjCWQFpR55e6vbQO77Ulr7MX/eQ0IT/d/UHT9jeqDDECyQ8bAXV6r64TBg0ean/jF/QFuf29/c67rLffedcqXfZundfsBs8yZctbg4YMc37yfedyqMgPliL+6Pb4tSVvGPdNWA8w3oPezZ0330JfD32cbj16aT2EzLVq17Nq1amn+4TQZfRV1SnM2l5tAIqTk9sNjB2dJkiHg+xYTnffF2FHqV/hj8NE2k3KIfx6mUV/9fGfHzTYyzrL36pUr6nxds8TuAPmdJnWLwjHtC10x52uYz23nPzbT09hH2UcxOGhvcX8yrTpMyyMqXl8iHB5jIyxOvcf0E8c9sLhttpLf6L0q6PIb9qOmOpLVvqFpm152LEN8sTUhB1Lsz6gLKZ6PqNr9566fsA8k7Pvi/ZmxMjRdhLDym7Sn+PAuV2C/qPNwDgUus36n4w8wbgP7akiu1obNmy0+0KYT6lctYbGAP0ot0kkG9xHSbM7HvyOoude4eAb65C7LYVd1LaPw0TbZ6KXmHtBfwB9UOQtxjEwSO8991bWdR7a8TDGZEyf3W0a64p7nBPUR4k6Vgk7f8eYsmyYR2CDfiDmXFDPqFO++bN+oj+HvIEd5k84z1COMJ+FvHTPFwel0yQ8k/5AdutyDEghfgRhYqLLXlFFnfs1rU+j9CO85JVvgoAgIAgIAoKAICAICAKCgCAgCAgCgkC6IMB8W8w/JuNPiMbpkrP/MDmYvKquQbdTbko0BtEJC8wgqTgNJi3VqcF6chCTgVjEBMGPSWhMIoMfkBXxXZ1G5QzC933N2rV6chFkMacBIQ2TlSBOvDBilAWC5n1179dhN2seS9IEWQwTlCD6BBmeCINbvDsNFqw7PtVZhwN7Jqw63bjfeZI1aAIYRCC3Ac73VjlMVlOnHbutfX+DAATZQJLNqkk10RiEV8gKcjRPJrPMmIjGAgF0DaQWt5k3f6H2O2rMi26ruN+8UIrFJHc8cPxkpy46LOSt04DEC/kw6e1neAGk7v0NbKIyu0VcIJd55QcW0/AdZEU3CQf+QYiGPcizbJwTx1j0dZKB2I3XE+E3aNxUh4eNAGEML5RABvekPvuPOtnM+T7mxXAEdsiAPz/CLBplL/PNt99qf6hrQKJiY4pHlLxCXKjnvEyXbj20XEOHvRBj7cxfbIxwG3VysPYHwozTMCEeZOtUGNYFN2kGONZr0EjL5FUOkS+VqlTX9rPmzI0RjcNE+fAq31iE5XxXVzzafk3TCkwQDuoLt4H86gR4be9e7ILbzVu26PYMZc1pWHaE61U2QPCGHYgGWByLarjtQD3sDmfb9u02Pk7iNMdlqnvqZFsdHnTdbbDJAOnBwhqbZNbPCNNUXpbD/YxaH0eRwVle/epjrjugC99///eGA5YbG76ALf6cZAu2dz85PJN2A2FwnYtNLTAfK1I94kQ/ydkmYmH+tr8W5p1tj/ak/sPGB+7TYWMIG9NyyWXISTRWJxNqmdQJWHF9q6j6xmXI3f+KGl5QfQIsovY1nLpkUvcz/s4nyhKTf3nzFOxRh4Co8dyAgZqs4e4jg/gOnXBvzOG8Atn0s88+d0al37v3fFr7U7clxNg504S6lo1p+wt/UWXgOOUZiwDGgmXLV7A397AtjwcxvgOhBOMJED6gF9APp0Ed5N4I5LR3vqMfjzBYL/GOP9QlPVWdxMQupx+vd6ceYOOD00C/kSaE26xFq7gwsbEVdhgzug23G25ylJ8Ow3+QHcvp7jNFrV8RH4dpWg7h18swSQ1knlQYU6KxabqitoVeaU23sZ6XjPjmp6ewMx0HOcNDucAGFS8DYh/s3RvkMP+BjSmoH5wbXaP2q03lN21HouqLad/UWS+YtOWmfSivvEr0DfmIP7+xNOtXdsxnYK4OsoTdFB8ke9T+HPcP0W5gY6rbJCtP/HRI3SigMWjc9AF31PYmRD/ZoqY5LqK/PvjJ6Ddf4RcO61BcWxpxbIF4OExTvWR8QSJ3G2ySgk4NHpp4s5TpmD5qWx21jmI9do9znHWRsw8OLKKOVXgsGXb+jmVjojH0jOcjvea21e1SOl/c82OQGX08kPMxRsWBDmyC0hklvET9gaz046LqMqc17NMPE1Nd9oov6tyvSX0atR/hJa98EwQEAUFAEBAEBAFBQBAQBAQBQUAQEATSBQEhGqdLTogckRHg04seb9suJgxeWA57ovZRzG8AAAPbSURBVDFOwsLkrJN0hAAxKYjvOKWKDYiQONWzTr0G/Ml+YhESJ1CFMTjtF2E7T+uEP0zO49Q9nMjIZu3addotJlGdBhODCANk5ESGJ9bvb9BYE3IwoY8JYJBiMMmJkwERFp/uExQeT7KaTABzeCBPIx51BTB/Svjkk5vnzl+Q0G0iB6kkGoPsjrSB6OckgbJMICbCHqQYLwNyIuzdpBgvt9BBuPVbSAWREfZYMHUudiaabEZcPGnsXlRhOVDeELZ7Qp0J62+9/Q47jXmiHMGf86Qb58Tx16tWxbgP+gHCJMLCorDXYpqXX14owWmzfgS4qJPNrKMgqYY5kRqy489vcdRLfv6GU1rhFxiwMcUjSl5xXF5PnAgJmZ7q3DXG2pm/7kUhOFy1eo32h/rHafiEeJxIhk0ZyTasC27SzMaNm7Q8IK/99NPhU8LdcUPvkVacyOs0fmE63YAIB79OIoxpWoOIgSBNInwsXvoZnBgMHXIalt2vbIC4iXYJYTs39TjDCPPu13awXyaEOonYbOf39NM9nGQHedH2OQ3SglNsQQhDG8ommfUzh+n19JPXyy2+Ra2P/cLDdz8ZnOXVrz5GGQeuWJz1MiCCwh5/fvWs01/UughEIM5HbGzCQi/aOydZGPHMmj1Hy4JNY37mifYdtZsRo/4+/dO0XHIZYqIx5IA+o25z1tUsQ1R98ytDUcMLqk8ga9S+hlOXTOp+xsf95NP8gTMbEMehZyCMQS+R/zjtiw2fJu0mR3Feuet/9ocTcBEu9MJp/NJk2v4izKgyOOWR98MIoI+LsoYbMZwGm22QjxgTOk3bdofLu3tDC26fwGbIMAb9dLidPWeehfYKf9AzJiC7N/n5hZlID0AwRhrcOozwsNEDdmjL3Bt3/NoNPx1GeEF2fnJGrV8Rn1+YsIPxK4eHbeP/5/Ke6MTheJ/hvpgSjU3rl6htoZf06TbW85IR3/z01M89f/caBznDc28cZ3/oN3CZ8Rqn880azrmZqP1qjtPr6SW/aTuSTH2BjGH6hSZtuWkfygunRN+Ql/jzG0sn0q9kzmfw7VvY/IaN9YlMkOxR+3PcP3QfYsCypDpP+BAFHJbgNolki5pmdzyJfvvpuZ8/Px3KStvnFybL4KeXuLEBejNs+Ah2aj+xaQ527n6Q7cDxYjqmj9pWR62jWFdM5pmjjlVM5+9YNiYa4+R64I4bu7wMiPXoo7n7m+yWTzV23ggW1BeLEl6i/sCR0GVOf9inHyamuuwVX9S5X5P6NBX9CK+0yDdBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIDsRSDbR+P8AAAD//+hq63YAAEAASURBVOxdBbxVRRMf7AIDsbu7uwNBBOku6W5EQJQ0ABFpJKS7QVCxGywkROkOBSQExb7f/vc599t73tlT9z7efTDL73HOPVuz/53dnd2dnaU//vgjlhP+Fi9eHMOfuJyNwLZt22L5CxSKPfJo4dj2HTsSCtO1+0ux2++6NzZx0uSE77YfI0aN1uHnzZsfD7Jr167Y/Q89EmvUpFn8G15+/fXX2B133xfr0KlLwnf8KFy0RKx7j56Zvrt9aNKsRezOe+6P/bZ/f9z7088+13QMGz4y/g0v/H3m67MTvm/YsFGHf/e99xO+u/1AeZq2eFKHBzb8V71mbY3fPfc/FMPfv//+6xY94VuJUmV1/C+/+jrh+9Yff4yn+88//yT48Y/Zb7ypw1R5ogZ/8n1++NHHOg7qKVnX7tkOOq0hrw0LlJRXmbo8/6JOC/W1ePESjR9w/fqbBa5pM1/26Nkrhjpz/r3z7nuat8pWqOQanz+C37n+ftm7lz8nPFGP9z7wsA63fMWKuN83Cxbob489Xiz+zfnC5Xp18BCnl/4N3kf+TgzLlq+kv0+dPiNT2VDWIUOHaf9u3XvE0/XCNx7I5QVYgYZyFSu7+Lp/mvMf79Wp19A9gPr6yaef6XRLlS3vGsaWxt69+2IVKlXVcR965NFYr959Y2vWrnVNAx+5/tatX28NA4/ff/899vY77+r0GjdtHkO9cVyTz8LiEaWuTEJRtpGjxsTad+wcq1S1Wpz36zVoZAaL+dXvpk2b4uVJiKh+MJ+hn0S7RX8TpH9ypuP221aPc99+R9NTuWp1t2j625LvvtNhHi7waEIYW5pmoM7PvaDjvtK7j/k5VFnrNWys05g2fWZCGvgBXgF/NGzc1LUNoh2izSDMzz/vjMcPQvvMWa/reIhbu16D2JtvzdUyXzyRAC+2sYOjPl68pM5jwYJv+VOmZ1DeQz8J3nng4QIJdC5ctEjn4ewHUtU/OwkOSq8zHv+O2h9zfDyD0uDXXpEW93NvzX0HPzO5n37aFueT3377LZO/80MyfdEHH36k84IsCL7s2au3M/nYi90y5EE3Pw6MvgzxW7Vuy5/0M0wfxG0IMuOu3btjxUqW0WkOHvJaQpr8Iyq/2dpQ1PS8+pNkZA0/XvLq+xkj8zlu/ASNJ/pQdgMGDtLf0JdNmjxFv0NeZFejVl39bfWaNfxJP7munH0AB4KsDX6o37AJf9JPW5nCjr9ILCoNCQTJD43A4iUZY3K/Aa8mIFKtRm09T3T2Q/iOscbp2nfsFCtfsYrzs/X3n3/+mclv+fIVetwB/3z19TeZ/J0f/PigZavWmhcnTMw8n923b5/2Q17oc0xnGzdsPIy4Xn42OpPpX21pcjls7ZD9nU/uA805jzNMMr+Ll8ro0z/6+BPPZKKWK5mx0ElQus31nPTxbxufsj+eQedBCBskPa7HzVu2IEqCw/wb7WnHjp/j36PK1ZxAUPrDjiPJ8kuq5EKvsTyMDMV4hXmirvBnm0v78QPTl4r1DPQ7mG+AHshpo8eOi+3c+f95lrNcXrRzXxZ2vcgmH5p5c5lTMbdG+aZOm67l7Fp16sWw/sHlcs7X/WiLWmazbG7vQfncLS6+2XgombHPlibTwHXk5EteQ+3U5XkOGn9y/wEcg7gwc/oDPabZeMUmoyQzVwm7fse0YS1hzNjxmt+xX+CUM1EHGEfQHgoVKWpdk2nb7lkdBvXHzlbOqOn5yQPZwctc1qBPGyaIH4aX3fKLuvaLtLit+vWnycoRbnTLN0FAEBAEBAFBQBAQBAQBQUAQEAQEAUEguxFgfdtU6QbnQkKUA9zy5cs1lddee20OoFZItCHQ4smn6PN586no40XogfvvSwg2eco0mjd/PhUvVpTuu/ceOuWUk+mKyy9PCGP+6NmrDyklBZo9azqdmjev9vr0s8/oyafa0rPt2lLhxwrFgy9Z8h0pJStq2qQRVShXNv5d8T+pDQZq0bwplSlVMv7d9lL5ier05x9/0qQJY+NBevftT+MnTKTpUybRmWeeEf+uFGzp1UFDaNTw1+iyyy6Nf58//wtq1rIVjR09ki6+6ML4d6+XhYsW08qVK0ltfNHNN9+scLmMdu3aTYWLFqdzzz2HJk8Y5xVd+5UsXY62bN1KfXu/QrfecnM8/I8//UTFS5bRvz//5EM67LDD4n78ohbzSCnz0KmnnkqzZ07jz55PpdBGalGdmjZuSBXKl/MM6+f5TPuOpJTtqFbN6lSrRnW/4ORVpude6Eqz57xBJYoXpY8/+ZR27txFqmOnm268kfr37UW5cuVKSL9+oyb07bcLE765/ciXLx+9PmOqm5f+tuDbb6lBo6Z0/PHH03tvv2kNV6Z8Rdq4cRN16dSBHsn/cELcvHlPoTmzZrjG5XJVr1aV6taulSkM6gJ1UrtWDapZvZr2V4rlpBSbSW0sZQrv/FCwwCPUqcOz+rMXvs545u+hrw2nocOG0z1330U9unc1vazvb7z5FiklJbr+uuto0MB+ruGUUr9q923onHPOpikTx2cK45XG3n37aNDgITTr9TmkFFB0XPBCo4b16aorr0hISx1W0L8njh9D5593XoIffqA/6T9wEL2paEa64Am01csuvZQmTp5M+/b9Sv369KJbbr5Jxw2DR9S6QkZfffU1DR76Gi35bikdccQRdPlll9Gll15Cv/zyC73/wYd0w/XX0asD/o+tX/2qjX4qVaa8bivzPv1Il4X/Ay+hL0f/pw5K6M+oF/Ak8zOHDfu01SPjeO89d9NL3V50TXbHjh1UpFhGH482hLYEZ0vTTKR3n340fuIkKlggv2oD7eNeYcrK/UjrVk/qvieeiHph+s1vtnfwN/CEC0I7wmHM6dNvAK1ZuxY/KXfu3HocrFypAh111FH6m9d/trGD4xQrUZp+2raNBvbvSzfecD1/1s+wvIdI6kAPKQV16vrCc3E54eVXeiu+mkpPtWpJJYsXi+fBuMY/WF78+meOFoVejms+o/THHD8sDX7tFePbfQ/mp7/++ouGDh5I11x9NWcVf27btp2Kliilf3/w7lw69thj437Ol2T6IqSFdqMUBkkpmtKRRx5Jb8yeSblPOCEhG65Xp8xmBpr79rvUoVNn3RejT2YXpl1yGwLf5sp1GGGchgyQJ09umjh+LJ104omcrH4yXQkfXX44+c3WhqKmx/Hc+pNkZA0/XvLq+11g0H1OxcpP0Bmnn04zpk3WQWrUqqNk2T9o3JiRtHr1GlKHXqhUyRLUqmVzUpv+pA4i0sknnaRlezNNriubLPD67Dn0/Ivd6OabIMv1jke1lYn73VTKIzYa4sTISxwBpVxObZ5+hjp3bE8FHsmvv6tDofRwgUJUuNCj9OwzT8fDok1jrnb7bbdmGuNr1q5Hp52Wj158vks8fJQXzHEw12lYvy5VqVzJMwk/XsQ8FPPR5k2bULmypRPSAo8rxS79be4bs+nEE/PE/W3jho2HEdHLz0Yn9x9R+ldbmlyIsG2A5/Ju8gOnmcyzROmytHXrj9S96wt6bcGWVpRyJTsWOmnhvjtd5npO+vi3jU/hH3YehDhe6cEfjvmkSOHHqF3b1vG5+nvvf0DqUCNdesklNHrksIzA6n/u3+MfPF5MuTos/ZxPkHEkGX5JtVzoNZaHkaE8YLV6+c2l/fghlesZIHL9hg3Uq3c/mv/FF3o9CPPkgmpMql+vjl73MgviRTv3q2Z4t/eg8qEZNxV1gjrvq+aCWDP5+++/6cILLlDrk5eo9da8eh0T+TnXAW2yK9MWtcwc3/kMy+fO+PzbxkNMb5Sxz5Ym5+nGl/Dbvn07lS5XUfPW6BHD6PzzM9aPsOakDs7RMrXH0e3F5+n+++7lpDyfQef0B3pMs/GKTUbh8S7KuigACrN+x7RhjVQdUtV1gbkx1pSxtmw6psv8Znt/us1Tek8D/n7ltKVhfjfTYzps8kB28LJJa5B3GyYcNygvc3jzmczab9D+lMd3M1/buylH2MLId0FAEBAEBAFBQBAQBAQBQUAQEAQEAUEgHRBYsmSJJuNyD/3LUHSqBXWxaJzd6uOHSP6mFSe2nOH1VIqDnsjAKics4plu1Jix2sLAtwsXmZ+15Q7khdPvpvvs83k6vGll1PR3vitFtdhTbZ5O+NysRavYXfc+EFMbSAnfn36mvU7baS1BLfLH7r7vwZibVa2EBHx+sIVOWEwN4tiag1LgSgjuZW2AA8LaLfCD5ZOg7rVhI3QcpdQbNIo1XFZYNGbeUwvxMbagB0tcTsdWKwYNGRr7Ydky65/T+p4znTXKmizyhPUEpfDl9I7/LlioiA5nWlXzs2qByH6WVjp2fk6nqxR943nhhfODtS+v8oFP2AXhGQ5rPidNmappqFW3vvnZ893PIgsiJ2PVgjNXSrfamjqsIqOe0Ka/+PIr9tZP5hk3K0z7lZXzBo2a6LiwqIg6UwvZ8fiFHy+u/cx6DYtHlLpSyvTacjEsZcNSE6yks5s+Y6amqW79RGvRfvW7afNmHQ9W4m0OPK4UAGJseRPY2ayE2tJwfrfxwpSp01zLYcZH++R6NfteW5pmXO5/YInTzQUpK+PgZtFYKWZr2pq3bOXZBtE+1eZwnIQgtMcDq5dFixZrKy7og4AFrLh69UUc1zZ2sH/R4qV0egu+Xcif9DMK7yEilwuWKuHQjnDzAMbN3bv36G/8X6r6Z6QXlV6mxXxG7Y+j0ODXXkEXbpFAnTv7NKY5rEXjKH0R5zVuwkRNywPKmhRocrP6yfITxl2b43bj7L84fJB2ybwGOvD3QtfuMchoeIfFI6eLym+2NhQ1Pa/+JBlZw4+XgvT9TswgNwNPxMU4i/5HHRyIB4PVsNLlKujfn8/LkMkhrzgd15XNovGs/ywaYxw2na1MYcdfpBmVBpMeec9AgK2ZrVi5Mg7J0qXfa17B/MF0a9eu09979+1nftYWgdUhiphXP5EQweMHLCuDT03r27bgfnzQslUbnZZb34YbdpAP/pzjmW3csPEw6PPys9GZTP9qS5OxsrVD9nc+Yf0RWCDdrHBsCTdZi8a2ciUzFjrLm25zPSd9/NvGp1HmQUjTlh7nhycsDFepVkPzCm5hQR+BcQLjiTqEEFu1arUZPMbyQRi5Ogr9YceRKPySFXJhkLE8iAyVAHrAH9z/uc2lkYQfP6RyPcMkGVaeMQ7wbRuYd0A2Np0X7VHlOZt8aObL71HrRB1g1zcCgH5Yz123bj0nGVOK1vExybmW6Udb1DLHMzdeovC5ET3h1cZDyYx9tjQ5Yxtfwp8toz6Yv6CWfyGzsCV2paDMSYR6+s3po47VUfooEG7jFZuMksxcxQQqyPod0wb+x81WWAuHJW/cCgg6TMfrRZibeK2Lwg95s7OVM2p6fvJAdvEylzfI04aJM64fLzvD43cq1n79+tMocoQbrfJNEBAEBAFBQBAQBAQBQUAQEAQEAUFAEEgnBFJt0RiWR0TROJ1q+CCmBcpd2JCx/eFadywAKgtXOow6qe6JBjYDsMGEjSF22NRFGlA8YwclJSgH4/u8+V/wZ628BMXZKk/UyKQkHA/keIFCKv5Mx2mbC5W40o2Vr0ylNlyTiw0xXKuYrHuldx9dJpvymzN9XmSNomiM68uBX5ANeM6XF+SxcZCsY0U/53WEtnS9FjaZLpSHlW6XLVuueSl/wcdiuM7bdEOGZmyCJ1tnWMyEohzyNTd4zLywYA1//JlXd/otNiMNLterg4eYScbfbRsgrLCE6+yDOi98vdIA76FsBQoVDtzm/DZKkB/aNdLFpqCbC5IGx4MiZ7eXXtbpKUuL/Fk/uW7cNkf5+kv0D2ab5wTcFI3D4hGlrngjy60dZqWiMZcbT2VJOwalZPw5FWvMcH7vtnqEgivq5rHHiyUod5vpgb8RplzFyuZnX8UxBK5ctbqOi+tP/ZytrFx3borG3L4rVnnCL/kEfxseCYFcfkCxizcSg7R729jBSfNY51Q0jsJ7SBOHc3ClKTYD0W+y8llLdR2906Wqf0a6Uel10oTfUfvjKDQE6Y+rVq+peXjGzFlu5GplCu7fnIej3CIwPwfhHzO+sm6kZSDwDK6sxiYvFI63bNlqBtNjM+jB2G9zUFZFGPTXfs7WLrkNIR1lSVsr8v+mZEplcVmnPf+LLxOSjspvtjYUNT3G360/SUbW8OOlIMpJCYCpH8oKnMYSdaCs2Op3czzCoUHgD96A/IJ31IvTcV2lStE47PgLeqLS4CyL/FZy27z5uq7xZIexCfUPBQrT8eGE/gNfNT/H8BtjhVMZLCFQwB+Y3yDvgYPcZWgzGT8+SHdFY8x9UNYo/atf2W0KuSZ+5vvESRnz9qDzOzNukPesVjTmvjjsWOhGO8uCkGVtLqpskUo6bTREmQehnLb0TAxwSLJCpap6zQbyDNp9mXIVY8+r8WXbtkRlUMRjLMPI1VHoDzuORKmHrJALw47lNhnKrKOg7+h78Oc2l0YafvyQyvUMN5r37NkTP4BuHopCWC/ao8pzNvnQjTbzW5g66da9h6a9V+++ZhL6PRlF46hlzkSE+hCFz93SwTcbDyUz9tnSZBpsfAl/rEtjzRprxo8WLhrDeiNkWdRhss42p486Vkfpo1AGGx/b5hXJzFXcMPNav2PasA6LPhuO9wyw/2AaBgBdMDaAth5mzcqrnFHS4zHMJg9kFy+7YW/7ZsPEFt7Gy27hU7n2i/Td+lOugzByhBut8k0QEAQEAUFAEBAEBAFBQBAQBAQBQUAQSCcERNE4nWpDaEkpArCwgUU9bDoGcW/NfVuHX/r9D/HgbOW3Wo3aWplTXVenLd5gQRdpDx8xUis4YhGRF4yxiBTUqWuZtZKMuSCprmDTaWOTGorEK1eu0lZ3OE+2rgzF0Seq19KWBbGJkYyDdWhYxYAlL6dirC1dXmTlBVYO57cICKUjtoaIDeSgjq27wpJDsi4rFI1bt22XQFaPl1/R9ehUcICiEXgHGwPJ1hsr00Nx280xL5UsUz7BGzwOGmCV1k2JFYGZn8MqGkNRHWk3CmgZG3n58QzCuDm0D5QB+WEDJIjz2yhBGrBkhTRtlsK5b7EpKDnpwIY20sOmkGlBFhvb+O5UqER85h8b/tgoQFzTonFYPMLWFTZIuBxufAMlNfg7LYL61W/YDWrgU75iFZ1XUOvxiON0Nl74Ze9erayIskCRzc01bd5S5w+lBNPZ0uQwixcviWO4YcNG/uz5dCsrrKqBPmwMOR0OGIC3oIjN44UzjNtvP9rd4vC37j16anqCWJm2jR2clpuicVTe4zSf7dBJ04f+F4pfwA4WoZwuVf1zsvQ66YrSH0elwa+9gjZYzHJr60w3LLnBH39BFI3D9kWcD26qQB7gXThY9cJvKPma7ktlTR7fMV7s2PGz6aXfQSMOrCBM0I16t3bJbQjKaJCr2L3/wYc6bfC+eZgtKr/Z2lDU9Lz6E5Qhqqzhx0tR+v5333tfY/nSyz1jOCCHcRWH8djhAAfzBOQQvEN2dzquK9s4blNwtJUp7PgLeqLS4CyL/I5p5UDU9Wh10wI7WC3F3AmHTCArwPrv2HET9PiIvqBV67b6G8LjoBR4KaiCKvjAaa3RzLdYidKa94IojPrxQborGifTv/qV3dYOGWvnk28WCnOQ1ZmG1++sVjSOOha60Zxucz03GvHNJt9EmQd5pWfmzweL3JSKzXD8HkWujkJ/2HEkLL9klVwYZSx3k6EY7zBPr7k00rHxF+dhU+gMiy2n5/ZkuQXWs03nRXtUec4mH5r52t6D1knFylX1+OZcA0S6UPjGWIw/5xjpR1vUMjvLE5XPnenwbxsPJTP22dLkPG18iT4CsgpuTMkq5zanjzpWR21HNl6xyeDAIupcxYajbf2OaTP3GMDrfJB86rTpCUnCEAnaw7DhIxO+e/3wKmeU9PzkgezgZa/yu/l5YeIWHt/ceNktbKrXfpGHsz+NIke40SrfBAFBQBAQBAQBQUAQEAQEAUFAEBAEBIF0QkAUjdOpNoSWlCLAyoDmIqBXBrzA9PrsOQnBsJCLxUG2oFm9Zm2tqNKwcVP9vWTpcjFclwYrenPffichLv8ADVD2NC0jw2/S5Ck6jc1btnBQrYQCq8jIEwvJeMKCGxSAWREGVnigBIm8YcUvqIMS9NTpMxKCQ6mufsMmOh+bwmpChP9+gAbQZloPg5e5CAilH1MhEe+s5AtLI6bSpVse5jds7uL6SVMpG/5QIIFiIyxmBFWSZhrCKBSgrPhzbprwRoFz8RiKL7gmD3FwHZvpWKkHFjVNBRmEQfmWLw9Wp7DMCR6BwoQzj4WLFsWv63T6bd+xQ9MF2hDOzXG5bIqutg0QKFextV1YpnHiBcUPXFttOpNnnOHNcG7vbP0GWAMP02EDedSYseYnX8UeBEYZYBkT+MDyHfMcnmz5G35OBaXxEybp9sXhOWMoriE82qvpYD0L3528gzBsidFpBRm0PdO+Y7z+TEVjxAuDR9i6QvvlPsmpPAPlDrZqmypFYyjJok9yKipu3bo1TgesVrKDonOpsuX1Fcj8zev53vsfaBydVuURZ8zY8doPm0lOhWC+2hj9Pvof0/FGHPoq53gAK4m8OYtDJqYLW9YXu2UcpGnUpJmZTPwdylbgLeDhZuULVl6cbY1pd/I1J4rNTVgLNccr+IHfS5eroPN74823OLj1yRt0bhvUiOSmaByV95gIVj6CFS7UAW4CMBU+ORyeqeifk6XXpAfvUfrjqDQE6Y9XqcMYkInAY06ZAgonsPQNP/w526+zbPgdti9CHPRBSB/WCJmXMb6gn8V38LPpWjz5lP7etMWTCTQBJ1ZEr16rTjwtxA3bLrkNubVLPpzQp19/k6xI/GaTv5BwFP7160+iyhp+vBRFOQkHtDAOQRZH3Tv7b4z7qH8ow+MAHTZ63RzXla2/syk4epUpzPgLmqLS4Faeg+0b6g915zws4yXz4xCj89pwYMzW38A3OOSHQ6SvDRuh+QRyC1sc79tvQEL7t2GKeVOxkmX0gQaMi6ZDfwIlV/Ag5n1B+j8/Pki1ojFoBn34w01UpvPy86IzSv+KfL3ShL+tHcLPzaF/wNiEOaGbs83H3cK6fctqReMoY6EbnfiWbnM9G504NAJexM1Spos6D/KTl5BHzdr1NJ/YbgQy6eD3sHJ1VPrDjCNh+SWr5ELbWB5Whgo7j0PdeM2l4e/HD6laz8BcCGuPbgYHcCgVPI71PNP50R5FnvObY4WtE5NefofchPI4LTTDmjGvYcKfZXOO50cbwkUpM6fPz6h8zvGdT1sfhXBRx76ofMmWVzFvScaFndNHHavD9lFcJts8x0tGiTpXCbt+x3zsXEPFYXLIH871oe+WLtXzFqwtut2wiLEaf6bzKmeU9ILIAweal3EgAHsQOICBdQU/Z5t/heVlt3zAp1HWfsP2p2HlCDda5ZsgIAgIAoKAICAICAKCgCAgCAgCgoAgkE4IpFrROBc2rCgHuOXLl2sqr7322hxArZAYBYFuL/Wg6TNmUYtmTahsmdK+SSilV1KWr+jSSy+hQQP60WGHHRaPoxSiSClm0dVXXknXX3+d9tvx8880d+479P0PP9Cll1xMDz30IJ137rnxOPyiNh5IKQjTvn2/0kknnkhvvfE6e5FakKQ69RtS1SqVqEG9uvHvykIyvf/BR7Rz1066/bZb6aILL9R+oOH99z+krT9upWuvuZYKFshPuXPnjsfzekGaZcpXoh9//JGuufpquvHGG0hZaqAvv/qKtm3brn93e+E5ypMnj1cycb8XXuxGs2bPodtuvYWaNGpIlygM4JTiHxUvWYZyn3AC/fHnn3TKKafoMEcddSR98eVXtHHjJjrmmGOoR/eudMvNN8XT83pR/QqpRVu69ZabqVfPHglBx42fSEpxR39r2aIZlSlVMsHf7YdS1CRlXYZOPDGPqpOT3ILQ0UcfTaNGvKb9uEz48fknHybwhto0otlz3qC6tWtR9WpVE9JSCqaklB7o9NNOownjRtOxxx6bkZ6qg3oNm+i6yJcvH917z9107jlna+y+/vobWrd+A40bM5LOP++8hPTcfrw6eCiNGDlK03TnHbcr/r2U1q1bR0qxjlDnRR8vQk+3eSpT1PoNG5NaHKXjjjuOCj1akI5TtN2s6uOO22/TYblcKBPK5nQoF8pXu1YNqlm9WoI38lbK3KSUvuiyyy6l2265hU4++WRSG1CklJ51XhPHj6EjjjhCx/PCNyFhlx9qM4nUArVqh8voyCOPJGBw8cUXKQzWK97+mpQFOxoyaKBqL1fr2EoRkpQSCF1/3XU0aGA/lxQzPiEMwsKhHq6++ipS1j5ovypTowb1Cf2LmYayUqHaV0Xas+cX1R9corC8UdXpObRw0WJdF0rZRNcD6oOd2kym14aP0HV337330GWq7lAf5cuVoR+WLSO1EU7oP2684XrdD2zZspU+n/8FKdVOOuH4EzSe/fr0SmhHYfEIW1fqmk5S19TTSSedRA/cfx/ly3cqffvtQvpmwbeKzhtowbff0g2qj3xV9aHs/OpXKa5SqTLlKVeuXDTv0484GqnDHDpdtJE7FV9edtlltH79evrok090n1WwwCPUqcOz8fDFS5XVbQofZkydRGeccUbcz+0F/V7REqXoqKOOovr16lCFcmXjwdTmKDVu2kKX54QTjqe777qLzjj9dFq8ZIluN4cffriuz8KPFYrHwQvzV968p5A6+EBXXH453XDDdaQ2U2je/PmaP84680waPGgAnZo3bzxu2LICb8SBu+qqK+neu+8mZeWe0AfCgf5mLVvRV6oNoC976MEH6KKLLqR9e/fpMUspqNPTbVtT0SKFdXj8x7SbfB33VC/gVfAs+u+777qTrrzyCvp9/++aHzA2oZ2MGD6UjlX+Xk4pgtKWrVupb+9XdJ/uDKssQdJP27bRwP59Ne+zfxTe47jAo0ixkrpPUgrG9GjBAtSx/TPsnfDEGJmK/jkZehMIUj+i9sdRaPBrr0wby1j4ffNNN9IVV1yu2udG1WYXUL5TT9XyC+SeD96dGx/7OK7bM0xfhP60XMUqpJQOacirA+jaa6+JJwk5Qyn1allmohp3MfbAbd36I9Vt0FD3HWeeeQbddeedagw6nJQFNUX3Bi0PoD9F/80ubLvkNgRZBfxtuk2bNlOFylV12xw+dDBdfvll2jsKv9nkLyQYJT2//gTpRpE1/HjJ1vcjPy+HsRFjJFzVypWoXt3aCcHLV6pCmzdv0TJQubKlqXnTJgn++MF1Zevv1KFDUgdCNG/379s7Ht+rTGHH36g0xIk5SF+WqTm6uklGl+7BB+6nF5/vEi+pl8zfuFkLWrZsOY0fOyphfF29eo2e65ypxl7MqSCLQz5WN9mQsnSs+yuMaZgXBXGQ955s3VbP4SB3XqHaMvqgv/78i+Z98QWhreP7qwP60tVXXeWbpB8fPPlUW/r0s880H4OfTYe+EPMjuLlvzNb9GPt7jRulylZQbWQzlShelBrUr6fnbBzP5udFZ5T+Ffl5pQl/WzuEn82pgy5K9v+NXp8xVcuVHM5rPs5h/J4lSpfVY0n3ri8Q5HabS6ZcYcZCW/78PZ3mekyT84l2qJQ96eyzz1Y83pjuufsuHSTqPMiL7znvga8OppGjx6g5TD69RpE79wnaK1euw3QbOlPNH0DH8ccfz1FCy9VR6Q87joTll6yQC21jeVgZKuw8DpXjNZeGvx8/pGo9A3JU46bN1Rw9puc216h1B6zRqQP5epzBmgdkP6xRsPOjPYo85zfHClsnTKv5nDBxMvXq01ePc2gnV15xhZbJ5qs1igsuuECvQ2G9xLlm5kcb8ohSZpM2fo/C5xzX+bT1UQgXdeyLypdYZ1IHXvR8Fmuw5557Tnw97eijjiasP1xzzTV0lZqje7mwc/oDPaZ5zXNsMgrKG3auEmX9jvkY64iYQ5gO8wbILVgj66rW1dlxW8fvu+68Q6/dHKHWklauWq3XUR5W+wjOdQmvckZJz08eONC8rJTXSSnca4iwnvZsu7YMl+vTNv8Ky8uuiauPYdd+kU7Y/jTK+pyNXvkuCAgCgoAgIAgIAoKAICAICAKCgCAgCKQDAkuUzgzc5UoXJhVOFI1TgaKkkRIEWAkmqKIxMh0/cRL17tMvsHJyUEKh9ALll3uUMliP7hkLahxXXd1Ln6tNiGFDBsUVT9gv1U8od2FBb5FSfsSGKxwUG4s+XpgaN2xAUJ4L6qDE2aFTF62sXKP6E1SnVk0dlRcBsWCKb8oiNC1avDieLJR4OnV8Nq48HffweIFCMxac27ZuRcWKPp4QEmkrawj621ClUAqlOz/HisZe4aBM9+F7b+sgXCb8cG6a8EZBXaWM61Q0Rnhe1IWyO3iRHZQD+vQboJV1oUjNDsqH5ZSiaemSJQIpZyEeFBB6vNxLKypzOqeccrKuUygRu7kNGzdS6zbtaO26dXFvUyGHyxVF0RgJQoFBWUlUipoL47yG76j/ak9UISiPsDK/F76I4+dwSGD4iFGkrA8TlAjZYfOlWZPGWimSv/ltlHC43Xv20LPtOxIUMuFAKzbS2rR+ks4+6yyt2OFUUNq9ezcNHDREHQb4gPbu28dJaUW3urVrUvFiRePf8AIewAbnRx9/Ev8OfEaPHKZ/YwFeWVDWhxTwAcoxaFdNGzekwUrhc/KUqeRUNEa4MHggfJi6wuEEtHu0f3YXqk3Fhg3q0nXq4E6BQkVSpmgMRaCJk6eQsvyulQM5PyjwlCldUim510xQah0xarRSuh+tN9+e69yR8j/8EEexPlu3bac3eFC/aO9Imx36SGV5hEaOGqPrir/jUMXTbVq7buIxf7Vq2VwrOvfo+YrehERc5AHFlHZKwdd5QCRsWZEeNlaUVcZ4+0L/PWfWdK0EDn9sdk+aPJWGjRihFZzxDQ59GzZ0cMAFhyDYMe1OvmZ/PMGryhI8rVmzNp4vvqNcUOaDAqef4w26sIrGUXjPpKVnrz6al/DtlZe7q0MJd5jeCe+p6J+TpdckKGp/HIWGMP3xmHHjaehrw3WbA73grQKP5NfKQo2aNKel338fWNEY8YP2RcqKmu7/nIcNkAZch06dae7b7+o+AH0BO/TLL/fspQ8aoZ+EQ7uEkmGbp1rpDXoOi2fYdsltyE3RGOkNHvoaKQv2WtaDwgnyhgvLbzb5SycWIT3E8+tPECasrOHHSzblJOTl5cwNdrcxkPkDaeBQGyuumWlyXdn6O5uCo1+Zwoy/UWkwy3EwvkOOUxaDCQogOMhYsUK5eDG9ZH4cOFNXSuvxyFTwiEdO4QvkA3U9tuqHphHkadNB+edJJQO4HT41w/G7Hx9khaLx6DFj1Vg+nKDU6GxDNj8/OsP2ryi/X5q2dsjYuT1Z0ahvr550q6oL03nNx81wtvcDoWiMvIOOhTY6+Xs6zfWYJucTB7ebqIN9a9auzTR/iDIP8pOXkD/4HrIo8rY5HJqDQrnJQ2Hl6ij0g54w4wjCh+GXrJALbWN5WBkqyjzOby7txw9eisZhsV2llAb79h+g1z5QdnaYN7Zs1jTTYRY/2hE/rHzoN8cKWydcBvOJ8a+XWi9VN7XF54JQcC1XpgxVrlSBqlSrQTjg41wz86ON8whbZo5nPqPwuRnffPfqoxAuytiXDF9OnDRFrw+ZNDrfMa/p9uLzcSVkpz9+h5nTJztWh+mjQJvXPMcmoyAeXNi5Stj1O+ZjN0VjrB+WVYY9IL9CDoXCMTsc/u6h5qAwvMAO80AYeahZo1qmg2l+5Qybnp88AJoOJC/v2LFDH+rHWvT5559HE8eNYVhcn17zrzC87Jq4+hhl7TdKfxpWjrDRK98FAUFAEBAEBAFBQBAQBAQBQUAQEAQEgXRAQBSNxaJxOvBh2tCAhXN13SqtXLGSer2SYbE0FcQh3WXLV2irV6xYwunC6iWs3OU7NS/1fPmlBMUvDpPqJ6yMrFixQiu7XXD++XFll7D5YHFtobKKe+5552prn7b4WOxfs3adUi6+IG5d0BbW7XvVajXVZuAOmjltSoIiIIfFwiOsoZpKc+yX7k/wBhacwQcXqEXWU089NTLJWLBdpywznnP2Wb7WXJEJ8t64aZOyHvOTxu6CC86PnLctIpSoV61eTf/+8y9deOGFBOuwWeWwcAtLcrCGCivgULZO1oG3YBkRVsuDWvtGnlDq36xoOf2M07VispcSP6xywgLzCblPoEsuvjiBx6Fws0pt1h155BHa4rGz//AqX1g8wtQVcFZXGCp6L4rUpr3odvPDJhBwyJMnt7Lec26CgrEZHsqFUDK0KbGaYfkdGy9oOzdcf71rXwgcEeZnpZBw8UUXJ1gM5DS8nsAKm5SwYOpn7RfpBC0rwmJDCBvbhx2WS9Nma1/g440bNipF4DPprLPOdC0n0gvqMIasWrlKBz/vvPNCYxI0H7dwB5L3UtE/H0h63fDCt6ykARitVf0XFAOuVFaN2VK9jZYg38P0RUHSc4aB7LJ6zRqtzIPDHbD67efCtEu/tGz+YfgtiPwVJj3QFLQ/CStr2Mp7MH8PO/4ezFhEKRv6E9ziwLelmGl4yfxsqRQHX8qWKZVg0dZMI5XvkPd+UnL0YYcf5jkOpzLPVKQFy4iwuoobP0zLrUjby88v7yj9q1+aYfx37tylFNVLa6uBULQyHfpE23zcDJcu76kYC1HmnDDXU9fB6xtGcLuL6ZKZB5np8DvwwK07sGbet3dPJZcfS7/t/00dzstQQF6nlJ5mzpqt2wZu6sANPG4uqFydDP1hx5Ew/JKVcqEbXkFlqCjzOOTnNZd2oyfstzDYwmrlWrXuBcU1HHo+TVnOxjqVzQWhPaw8Z8vL/B60Tsw45jv6WigJYv3tnHPONr1S8p6KMqeSz219FBf2QIx9uCmrubqx6BF1mBq3MW3fvoP+VvwGB9n8++9/ICjsw3Xp1IEeyf+wfvf670DO6cO0I695ThAZJcpcJcz6nRemXn5QQsbaKA6dYx3ePOTujBeknGHSCyoPHAhe5rLiRrhTTj7F86Y5Duv3TAUvR137jdKfBpUj/Mot/oKAICAICAKCgCAgCAgCgoAgIAgIAoJAdiEgisaiaJxdvJe2+W7cuEkpGzdS19DvUhZIH890pSwTjo2jd957n4ooy5BhlP84vvl8/4MPtZVQKOjAMi42x93S3LZtOy357jtt1dSMfzC/L1nyHdWu10BfjV2tapWDuahSNkFAEEgSgTZPP0O4vnbmtMnaWnuSyUl0QUAQEAQEAUFAEMghCEA5okHjpoS5w0033kitn2pJUBZ0OihbfPrZ5/qWjSCW+J3x5Xd6I9C1ew+a9fpsmjZloudB2PQuhVCXFQjMn/8FNVOKelDSe6JKZdcsli1fTtVq1NYKYB+9/47rmoxrRPmYNAIyj0saQkngIEagZu16Wrl77huvWxVUn3yqjZZv6tWppW4Rq3oQoyFFy+kI4LB85Seq6/0Pt5sBc3r5hH5BQBAQBAQBQUAQEAQEAUFAEBAEBAFB4GBHQBSNRdH4YOfxSOXbt+9XGjR4CE2dPkNbuoNFLVjuhOXG3bt2a8tAX371Fe3f/7s+fX/N1VdHyseMBAXnl17uqa+KgyVWWNm76KKLtJWQH3/6UVs8/errb7T1AyjRBbHAZ6afU9/bd+xMn3z6Gc2aPkWXPaeWQ+gWBASBrEMA1yC//EpvwjXbrVu1pGJFH8+6zCRlQUAQEAQEAUFAEEhLBKBEjPkb5nG///4HXXjBBXSxmsPhpou///6bNm3erG9jgeW6xg0bUKWK5dOyHEJUdARwC0X5ilWocqUK1KBe3egJScyDDoHBQ1+jYcNHUtvWraxzhflffEnNWjxJ1113LQ0e2P+gwyAdCyTzuHSsFaEpnRCA/HLfg/kpb9689PqMqa6kwQp6HWWgYcl3S6lvr5506623uIaTj4JAdiMA69zPtO9IeZRl5yGDBmS6WSO76ZP8BQFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBwB8BUTQWRWN/LjmEQ8CizXvvf6iuP1yrr0Dc+uOP6mqvk+lMdfX8zTfdRCWLF6PTTsuXUoQ+/Ohj+kZd54mrCNeofHFlGq4kPPvss+jBB+6nQo8WpGOPPTaleaZrYrAqXbREKSpTqiQ1bdIoXckUugQBQSCbEXjzrbnUu29/6tKxvWyqZXNdSPaCgCAgCAgCgkB2I/Dzzzu1VdvVa9boedwGdaDzmGOOobPUHO7yyy6jkiWK0RWXX57dZEr+WYQALKMuXLiIXp85zWr5MYuylmTTGIHPPp9HLVu1pjPOOIM6d3iWrrrqSsKNUuzmzZ9Pnbq8QPv27aMe3bvSHbffxl7yzEIEZB6XheBK0gcNAtVr1qEfli2jKpUrUfmyZZTS8Snxsu3atYv6DxxEs+e8QbfecjO98vJLCX1bPKC8CAJpgECpMuXpmmuupjbq0M+xSjYXJwgIAoKAICAICAKCgCAgCAgCgoAgIAgIAjkPAVE0FkXjnMe12UgxrETkypXrgFKQHXke0AJ6ZIayw5oxFAFSrdDtka14CQKCQA5D4Pfff6dfftkr/UQOqzchVxAQBAQBQUAQOBAIHMrzqQOBb7rlsXoNDuvupptuvDHdSBN6shkB3IAyeUqGRVDcEHXlFZfTkUcdRRvWb6Cftm3Tc4kWzZrSA/ffl82UHjrZyzzu0KlrKWl0BGCIomHjpgRjDHBnnnkGXaxuwNux42fCoap//vlHG6Zo17Y1HXfccdEzkpiCQBYjgJsnzjv33CzORZIXBAQBQUAQEAQEAUFAEBAEBAFBQBAQBASBrERAFI1F0Tgr+UvSFgQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEsh2B5ctX0Jtz59JGZekcSnsnnXSSuj3qTLrqyivpkfwPixXsbK8hIUAQEATcENi/fz+9/c679LW6AW/Hjh30999/65sazjn7HCrwSH46//zz3KLJN0FAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIKUIiKKxKBqnlKEkMUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBIGDAwFRNBZF44ODk6UUgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAilFQBSNRdE4pQwliQkCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgcHAiIorEoGh8cnCylEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEEgpAqJoLIrGKWUoSUwQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUHg4EBAFI1F0fjg4GQphSAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgkBKERBFY1E0TilDSWKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCBwcComgsisYHBydLKQQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEARSioAoGouicUoZKh0SGz9xEv3yyy9UpPBjdPZZZ6UDSUJDkgisWLmSPvjwIzrzjDOo6ONFkkwt+egTJk6mPb/soUcLFqDzzzsv+QQPghRWrlpF73/wIeXLl49KFi92EJRIiiAICAI5DQHb+L9v3680dvx4XZw6tWpSrly5srRov/76K40Zl5FfjWpP0JFHHpml+aUi8Y8/+ZR+WLaMrr/uOrrj9ttSkWRapbFq1Wrq2OU5er5zJzr//ENj3P7o409o2fLldNONN9Ktt9ycVvWRDDG7du2i1k8/Q1UqVaR777k7maRSEvdgxTkl4EgiBx0CIu8fdFUqBQqAQE7i+5wogwaoAgnigQDLIbfdcgvdeOMNHiHFSxDIuQjY5vk5t0RC+aGEQLrNXw8l7KWsgoAgIAgIAoKAICAICAKCgCAgCAgCWYOAKBqLonHWcFY2plqydDnasnUr9e39ykGlWJGNkGZ71m+8+RZ1fu4FrQA1aGC/bKenVNkKtHnzZurRvSvdc/ddnvT8+++/1Kp1W1q9Zi21a9v6oOXJt+a+TR07P0dXXH45jRg2xBMT8Tw4Efj0s8/opR6v0DXXXE3Pd+l0cBZSSpXWCNjG/x9/+omKlyyjaf/8kw/psMMOy9JybNu2nYqWKKXz+ODduXTsscdmaX6pSPyFF7vRrNlzqGKFctSkUcNUJBkojaHDhtP0GTOpYvnyVKli+UBxogTC+ARFjNkzp9Hxxx8fJYkcF+e5F7rS7DlvUPVqValu7Vqh6E9n2QW0lVZy2Kn5TqXBA/uHKpdbYKS3f/9+Ny/rN7Rp7kei4ixjphVe8UhjBETeT+PK8SANayOYjx5xxBH08kvd6NS8eT1Ci5cTgZzE9zlRBnXiLb/DIcByCGQ9yHziwiGwceMmql6rto40cdxYypv3FOrbfwDNnPW6Wuu7mzq2fyZcghFCJyt3HwoypW2eHwFuiRIQgZwmOyTbjgLCEilYquevkYiQSIKAICAICAKCgCAgCAgCgoAgIAgIAoJAChEQRWNRNE4hO2V9Un/99RdtUAvBuU84gU47LZ9rhrIA6QpLln0MUifJZp6TFY03bdpMpctV0BDA0u9TrVomC0daxk+nDdgDwZNpWQnZTFSHTl1o7tvvaGuxs2dO15t02UySZH+IIWAb/0XR2J8RskvRuEixkrRjxw5tZXjiuDH+hEYI8dO2bQTeKFb0cXrqyRYRUsiZUVjxxKZovH7DBl0wt5sZ0l12gcXwfv0H0pBBA+ladbglGfflV19Tk2bh+GLY0MF01ZVX6Gz9cLbRJmOmDZmc9/1QkjvTSd7fu3cvbdu+g05Thw5y586d8xjnAFI86/XZ9ELX7jrH5zp3pPwPP3QAc8/5WaUT3/uhKYrGfggdfP4sh4iicbS6/fHHH6l4qbI68ttvzqY8efJQn379adz4iVSwQH7q1KF9tISNWH5ygp/cjXa9d98+Ou/cc1xvysnpMqUfPoDSNs83YM7W1yBlyFYCXTL3k6PSTXbww9ivHblAcEA/pXL+ekAJl8wEAUFAEBAEBAFBQBAQBAQBQUAQEAQEARcERNFYFI1d2CJ9P61YuZKqVqtJj+R/mLp06uBKaLovQLoSnYM/BqmTZIuXkxWNUfbRY8bSqtVrqFaN6nSu2hw4GF06bcAeCJ48GOsw2TLBaveIkaO00lfZMqWTTU7iCwKhEbCN/6Jo7A9ldikaf/zJp4Txo+jjReiO22/zJzRCiN59+hGu2x03ZiRddOGFEVLImVFY8cSmaJy/YCE6+uijac6sGa4FTGfZ5ZdffiEoqd95x+3U7cXnXekP+vH7H5YReMR0f/31J+E73DVXX02HH3646U1Pt3lKK8fjox/OCRGNHzJmGmDk8NdDSe5MJ3l/wsTJ1KtPX2rd6kkqUbxoDueirCV/375facCrg7RF4wb16tAxxxyTtRkeZKmnE9/7QSuKxn4IHXz+LIeIonG0ut29Zw89+tjjOvInH76nFXmHDB1Grw0foQ8ptm3dKlrCRqwgcoKX3P1Um6cJc6aJ48eQ2wHBnC5TBsHHNs83YM7W1yBlyFYCXTL3k6PSTXYIgrFXO3KB4IB+SuX89YASLpkJAoKAICAICAKCgCAgCAgCgoAgIAgIAi4IiKKxKBq7sEX6fvrq62+ocdPmomicRlUUpE6SJTenKxonW/6cED+dNmAPBE/mhDoRGgWBQw0B2wakKBr7c0J2KRr7U5ZcCFj/Klq8lLY+279v7+QSy2GxWfHETdH4n3/+obvve1BbnrcpGqd7cVE+yIcTxo1WFt7OTSm5pnW7d+e+SSeccLw1fS+crZHE46BC4FCSO9NJ3h80ZCgNHzFKFI0PqtaUnoVJJ773Q0gUjf0QOvj8WQ4RReNodfvvv//SvQ88TMceewxB5oObOm06vfTyK+QmQ0fJJVk5oW79RrRo8WKronEUmtIpThB8bPP8dClHkDKkC61MR06To3Iixow1P7Ny/sp5yFMQEAQEAUFAEBAEBAFBQBAQBAQBQUAQOBAIiKJxDlU03rzrD/pq9V5a+eNvtHnnn5Q39xF0bt5jqPANeSlfniMPBO9kSx7vvf8BtXu2QyBF4359etEtN9+ULXQeSpkGqZNk8WBF4xuuv45eHZBodS7ZtKPEL1u+Em3YuJF6dO9K99x9V5QkDro4b7/zLrXv2JmuuPxyGjFsSLaW70DwZLYWUDIXBAQBVwRsG5AHWtF4x88/U5GiJTSNH7w7V21cH+tKbzp97Nq9B82YOYsqVihHTRo1TCfSkqKFLTW9+HwXevCB+5NKK6dFZsUTNyWJXbt2UaEixXK0ovHy5SvoiRq1CBb0WzRrktLqiaJoXKP6E1SnVs2U0iGJ5QwEDiW5M53k/e49etK06TNE0ThnNJMcTWU68b0fkDlRBvUrk/h7I8Dynigae+Pk5YtbMo4/7jityItwH370MbV5+hl6skVzKl0qY07nFd/PL1k5oXylKrRu3fqDVtE4CD48z0/Xdf4gZfDjkwPtn9PkqJyIsbNOs3L+6sxLfgsCgoAgIAgIAoLA/xH4+eed9Pa779J33y2llStX0cknn0wXX3wRVSxfjs455+z/B5Q3QUAQEAQEAUFAEAiMgCga5zBF43/+jdHUL7fThHnb6O9/Ypkq+vDDclGdh8+iQtefkskvJ39YsWIlzXnzTVq2bIW25HDmmWfQDddfHy9Sm6ee1Nc/4wMvQA4a2I8uu/RSmjHrdfrqq69p5arVdO4551DJEsUo/8MPxeM6X7CAO2HSZFq69Hv69ddf6bLLLtWKzQ8/9GA86P7ff6eX1OZmLBZTCjkNtGAa9zRe+vUfSD/v3Em1alSjs8+2C6yzXp9N3y5cRPXq1qZ8p55KM2fNpk8/+4zWrl1HN954AxV4JD/dftutOuXt27fTrNlz9NV5v/32G1191VXUuGEDrSxiZE1//vknvdjtJf0JChi5c+c2vWnPnl/0dbP42P6ZpylXrlwJ/lgAGzVmLK1SuP2uynvppZcoxe2bqVTJ4vo6wTB1kpCw8eP9Dz7Uik0bNmyko485WtcXcH7g/vuMUKQt1nV+7gW69ZabqW/vVzQPvPPuewSLBqAb11oDgxNPzJMQj3/ASslUtRE9b958zQdnnH4aXXXVlcpCyRN00okncrBMT+SBxcxly5bTKXlPoRtvuJ6qVa1CDZs0I5Q/qKJx7779affu3VS1SiW68IIL4vksXryEpivFrkcLFtD1u3DRYnr3veDliifkeNm4cZO+Jn7ZsmWEzcZLLr5Y113ZMqX0lbmO4HFeuOrKK6hM6VKEugdd8+d/Qberq+zN6yIxKRs9diwtXvId7dy5SykWX0ZFCj+m20Kr1m09FY2DtC2mjdtE/bp1VPs6SfMJNnnBt507tdf5cFh+huVJtO8x48bTElWWdes30Dlnn0VXX30VValUkU466SRONtDz77//pslTp+l2uX79ejqm8omIAABAAElEQVRObVRdftlldNRRR8Xj58t3KjWoV1f/5rov9GhBuu3WW+ijjz/RfA7soRRWrGjG9Z0IHIbOd997nz77fB5de+01VLJ4sXjeeEE7eKFrd4IlSycvwn/Z8uU0cdIUuvSSS7SyIb6FcVwmWJZEGUzH9Yk+7rR8+Qh1+fm8ebRo0RLdf959951UQ7XHww47zIzm+Q4+n/vOO7otrlALBMeqa6DRT9WqWT2wdUvuB1FX5cuVIZThjbfmqv54IR1+2OG6nyhTqiRdrvjc6bhMQXg0bJvkvP766y+aMHESoW9AX4xFELTT8uXLupbxc9XHvano//77H9S12Ecrui+n8mXL6HGM0zSfQftgxAkT1szD+Y66x9WvWNTBGHqlKs9jhR6Nj3EcHnz67nsfqLIvVHW8in766Sc677zz6N5779Zlco5ZiMfjP8YJjBfsgigaw/ItrtoED2zeslX11efrNCpWKE+HH344J5XwRP2MnzCJvvrmG735e4GKc89dd6nyFKRHHi2sw4ZRNI46VgXFFASBN6bNmKn7vVxKZrz6yiupcuWKNEvJHeMVr5mKxnPffofmf/Gla3/CQCxRC3RQ9MLiXOWKFfhzYH7hdnTfvfdkUgSGHDNRyWOffPY5bd68WfUdp2lexoY/+qkgDuPSJ59+Ru+8NSeTHGSLjzH7DyX3PNWqJeE65WnTZqj+aj5B5sKYWOzxIoS6hkO/OeeNt7T/8ccfR3fefrvug4480v3QH+oYcinGV4xZeZTcggM6pUuWcG2nychyrHhiKhqDz4ePGKna0zYt32CMMuVb9Bfc39lkF+43r7zicq3ku3nLFpo95w0la39DO3bsoEsuuZjq1qllraOw46WtnvA9f8FCdMYZZ9CYkcO9goX2i6JozAo+c9/m8W2x5/jmNWamgvdDFzpNIiTD8yhC2LEqSt/PUKENB52fIk4YeY7z8HqGlS2Y54LInuks76OOF3z7rZrXfaHG6y16LnzeeRlWzc8443RCWzRdKnEPyl+Dh75GW7f+qGVxyOROZ+tf/eoIawJQDIJr2qSRdR7bq09fPWfiNQjutxHv2XZttby9f//+SGkhDbioMktG7GD/o54xr0Fbw7rIaaflo2uuuYbqqTEGcy2nY5ki6nwjGb530oLfYXmP6ynInDwZGTRMv+fHk+ac1YkB1wdkAqy5TFFWYr9W6zer16yliy68gG5RsnolJWc7539hcAgrV5k0QibGITvMI3EA61K1dnjXXXdQcTUPd9IUBjPkgTWYESNH6TWTn9X7+eedr9cZKqo5HOZzpgsT1ozH7yzvsRzC3/HE2gLWNiGX4iAh39DAdRO1rYTBHXPYseMnUJ48ual508wHw0aNHktr160jt7kA1iG7vfSyXlPhNSnmj6hyqIkPv1erUVv3KQP6Zdx+gvlN7br1qesLz2Vam0ScoONvGDnBbVzA3HTL1q1qfv+2XpO99567VR2eoMm+Q81JChZ4RL9zO3Vbh9EBQtDM4TnNVK9Vcvp4hsGH5/lZuc5v0oY6DrLWFLQMyci33F791p2CjplB5Shua8CFZQcTI7xHHefCtN+gGIMet3aE71yWMPkiHjusCaBPx/rl1h9/1GuaF154QcJYgTGtsFrX8nNZNX/1y1f8BQFBQBAQBASBQxUB7Lu+qPZEMZ7DYd8Xe/Vw2POBbgTL1fqj/CcICAKCgCAgCAgCgRAQReMcpmj89Zq91HnaOl25xx2tlKDOPo5OPv4Iwvddv/6tv0PZuHvFi+nSM9Lfgl4gLlWB5rzxJnV5/kVrcPNaY16A7PBsOxo5eoxW/sHC+l9KIYgdFskKP1aIf8afrysF3pdf6a0XcaG4kEcp52LRG3FLKSWQVi2bx8M2btZCKzA3a9JYK6jFPf57YSUFCK5zZk23KiohOG8OYCEbmx1Q7DFpxvuwoYN0ys1bPqUVOUx/bLpNHD9WK9r9lz1h8/DB/AX1z9dnTKV8SrnPdF6KV1ACa922nVYCg/IulKRXr15Df/zxh1aEGfHaEK3MFrROzHz5HQuA4ydM1D+RPpTisIGITQsou7Zs3pSDxhWN77zjDrVBcyUNGz5ShzMxOPfcc2j8mFGZFGmxYfhMh4707bcLtTI6FH2hCIMNHWDy8ktdtYJzPDP1gvqGdUfwHdzRRx+t/3755Ret0J2Lcun4QRWNmSedym9sqbnaE1XpmKOPosFDhwUulybM5T8sQvfs1UfzMPCBki6uUIWDMtNznTtmOqXJvAAL4ODn2vUaaP6BIl/JEsXjfA9l+GfadyBgCpdXKV/v2rVb0wyFfCwA2ywah2lbSJvbBCxYz1RKWVCeBD1QTHxz9sxMG3SIE6afwOZR+46dtBIA0j39tNNom1LiB/+dcsrJaoLZjrB5E8RhA6xO/Ya6/EcccYS2pP79D8sI/GI68N74saP0J657WD+EAvLzL3aLB32+S6e44ldYOtF2n2rztFZCnTRhbDxNvICmGrXq6G/YoAffme7VQUNoxKjR2iIjLDOGdVym66+7jrABZDquz24vPq/rElaCgBXwxh8c+mT0zX4O4XGIAvWNd2wEn64OD0BxDr+PP/546t+3l6syujNt5n0oSd580000ecpUHQTtBor0cMcoBeZOHZ6l+++7V//m/7hMfjwapU0iD7Sn9p066zEMv9Hefvttv26b6JMG9u+rlY7hB6XcV3r3oSlTp2s8oCT7p+rHNm3arHFu17a1PtCAsOzC9MFhwnL6zicWc557vqs+RAM/1BOUHLGxD9eyRTOCUjccNsmgFA/64aCcEFP/sEEEh8Uf1InT2fparmeE//yTDxM2hPBt6fffq9sSOhLGbT3mnXUWrVcHYLBxdt1116pxohvl/m9TF+Hh0K+2afeMVtzF7zx58ugxksdJ1B9cUEXjKGNVGExBCw5D9O7Tj6DoiXYDPke+GCvOUeMw5B1T0RgbzOjbgP9sJcegzTodtwMoDpQrW1p7h+EXjm8qwyIR0IhrglE36KMvvfQS2rt3r+6zQXuXTh3i/aSTJvP3o4WL6jH9vbczxnPTz/YOPsIG4ugRw7QsBEU2U944W/HHmNEj6OOPP1Vj1YuaVixMgmY4HJaCPOd0kDvad+is+Rt+p+bNS1BcAc8AWyji4KCL6ZKR5dywheJbidJlzSwS3rt3fUEreuCjX3tCX49DKx07ddHlMDFCHzVy2FBihWzOJMp4yXHdnlWeqKEUltZoRXL0KalyLMMjPXOO4Za+ifMapTyFBWzUJ8Yj/MG5jW+2MTNVvO9Ga074lgzPh+l7gEWUvt/EMLvkTtAQRbZgnvOTPdNd3u+iDp/OefMtsyri7zhkPGrEa/HfYeXoeESXlzD8BaU1HESBrOK2YWXrX4PUUa069em7pUsJB62LFyuaidL1GzZQuQqV9VwJaxAYM21yUJS0kGEUmSUToR4fftq2jTp1fj4+XkIWP1HJWfgOd/7559HwoYMzKRtzfxxlvpEM37sVJQrvcT35zcmTkUHD9ntBeNKt/PjG9fFElcr0rjq8jUNjUHT966+/teyDMDhMD5nJvP0jKA5R5CrkibH51cFDaMzY8fodYzZkMuQLhxswcBMGu7CYQYaoWr2WXguAbIQDrRs3bdTzGJR/lJIvzzrzTJ18mLBMj/PJODsVjTHHQl+EdoO1URwyYcdxorSVsLhjTQTyOHDHfAJYs8M3HM7EnOtWdfi6b6+MgxTs/6UyGNFErbuiTcCSLRzzRxQ5lNN1PrF+hkPL9etlrJWgjWE9tG2bVpnWCsOMv2HkBLdxoXipsnp+6qQXv3FIGmt3cNxO3dZh4B+GZoSH4zRTuVaZkfL//4+CT1av84Mnw6w1BS1DMvItt1fbuhPWfcKMmUHlKG5rqDG3NZRkxrkw7TcoxqDTrR3hO5clTL6IB7dm7Vq9LoG1CKwJXX3N1fTNNwv0GkNGiIz/nXtGpp/5nlXzVzMPeRcEBAFBQBAQBASBDASw5l75ieq0Y/sOaty4IT2k5nrQ11i5apWeD8LICtawsY+K/WFxgoAgIAgIAoKAIBAcgVQrGmPBOJYT/hYvXhzDX050Iz/eGnthxrrY3v1/x8n/999YrNXYVbHHX1qs/xDmYHJqUS62bdu2WK/efWO333VvTFmo07/xDX9qMTBe3BKlyuowd95zf0wpTMYWfLswpjbtYwsXLYrVb9hE+5UuVyEenl+WfPdd7I6774upRfDYF19+xZ9j23fsiNWsXU/Hmzf/i/h3ZTlUf6tSrUb8m/mirBxqf2WBw/zs+q4UdnXY+x7MHytWonRMWe6JKYsHsa+/WRDPGzQ/9MijuuyrVq+JKWWN2NRp02MPF3hUx500eUpC2srynv4OvICR0yklmri/UlJL8FZXB2o/lIH9QM/IUWNiynKiDhumThISVz+UBWOdPuoIuLPbuXNnTCmXxdatX8+f9FMtLMbD33P/Q7Gx4ybElGXn2C9798bUBlHs3gce1v5vzX07IR5+NGvRSvt16vJ8TG1gxP1nvj47hvxRt0732rAROg7SVQvsui4QRi0wxho0yuAh4KqsJDqjuv5mnlQbJQn+XC7Ue9hyJST03w9lZVjzMMoFXNAXw6Gu0RZA8xPVa8Xr9L9o2h9+xUqW0X9Nm7eMfbNggQ63b98+HUxtEMUKFCqs02jUpJmOAw/wwZSp02IPPFwgnj6ny8+wbQvxuE3Ua9AophTmY+PGT4jt2r07BjpsLihPgm8KFSmq6X2mfcfY7t17dJIo60sv99TfUR6luGrLKuE7x6lbv2Fsx46ftR+w7zfgVZ1Wz169E8LjB9c9+A9136Nnr5iy+KzbNddbFDrB43ff96DO19nulRKx5nnUI3B1ulp1Mvo5s006w3j95jLVqdcwUzCuT/B64ceLx5SlcN0eN23aFFMbOZpe8C14NYhTSuKxeg0bx5RVc40Z4uzduy/WuGlznVaLJ58Kkkyc98H/d937QGzosOExpTyh46IuW7ZqrdPLX/CxGPpU03GZvHg0aptEXkWLl9J5o+1u3LhJZ43+GGNP+46dE9qxsj6vw6rN5BgwZYe6BK+jDaH9sAvTB4cJy+m7PdVmraaxcNESemzjseX7H37Q/bTaDI9HU4dOYmrTOTZ85KjY1q3/l2eUgrpuL6gvxHM6W1/rNd6Bbx57vJhuGxjzWJ7AmIfxCHn1H/iqM6tYw8ZNtR/6TdQz4qFM6qBQjOlAXCffZErovw9RxqowmEIWAj3469Ovv24vyBq4ow+D/AO/3n37JZBYoVJV/V0dYkj4jh+QrdCfoO1CVoILyy/cjpTCh47P/6kDJjpfyD6cNvyWr1gRUzccxNs9h3d7gndQpspVq7t5W79x/aG/Qj3/sGyZlgPQx4F/kWbV6jV1uQcOGqLpA43qFgvtB/9Vq1ZnSh9jK/wqVnlC9/cIoA42xSCPYByAn1JSTYiXjCznhi14FGMDy7CQefGb/3j8ARGMg1N24fYEmlH36qBMDHIpygIZkeOh/ThdlPHSmYb5Wx2s0bhBZkmlY95BnaCP8HKMM7AIM77ZxsxU8L4XvenuF5Xnw/Y9Uft+E7/skjujyhbMc56yZw6Q9yEfo8/i+fmo0WPifZgpS0SRo836Nd/D8hfmW+g/3OamSJf7SWf/GqSOJk+ZptNupGReN6cO5Gp/zC3Ycb8Nmlj+gl+UtBAvisyCeEEdZLBSZcvHlHJVTN2AEacZcyWslaAcmOs6HffHYecbycxznTTgd1Te43rympMj/agyaJR+LwhPgiY3x/WB+oIsppS5dV1Cfvzgw49iDzz0iK5LddNCQvSgOESRq5CRui1D5ws5Ztr0mfE1E8hy7Z7toOlkgqJghnkayoy0zHkAyjzw1cGctH6GCZsQ0fjBOKPts4NMhrUJ0OE2j+E4YdsK0o+Ce41adTUtzj4R4xlohDyKtTescZpuwMBB2h/rkOyYP6LIoZxG1GfY8TeonAB63MYFrEtgvANG+MN8jmV2Uz7lduq2DhOWZsaG0wSPAOswa7Ccht8zCj6Qt7NynR80h1lrClqGqPIt6OH2alt3CjtmBpWjuK2B90zZATQlO86Fab9BMQZdbu0I37ksYfJFPKzxYO4ODJRRmngfBXkTchi+Y40qjMuq+WsYGiSsICAICAKCgCBwKCGA9RysJTgd9oQhG2A8d85TnGHltyAgCAgCgoAgIAhkRoD1bbGvnIo/UTTOjHHKv/xfpTYx6bcX74wrGr84M7PglBg6Z/4aMnSYFvygHGhzvLCEhX0suJlu0+bNOj6ER3MjEotm6lS59oOSr9NBwRQLmlisZ4fFeyyII61VLgolWOSFHzZU/BwvHGIBy1SoQbxly5bHaVZXpWZa4OvVp5/2f/qZ9gnZRF3IhLIv6IaQ7cQvIYP/fgSpE2c8VnCBomAQx4vcUKpesODbTFE6dn5O0wx8TIfNHJQFG9HOhVGEAx/BH8qK7KBcev9/m16sVM1+eGKhEZt/iJcqReOw5TLp4XeUr1LVapquQUOG8uf4Ex08Ky5OmjI1/h0vvOiKMoHHwdtOh0VV+FesXNXVX1ks1v7YWDddlLaF+NwmkOe8efPNJH3f/XiSFZ2wUM9KhWaibds9q8vS5ulnzM/WdygWgU4nv2CyCqVf9B2ssM2JME8jntvmH8JFpRPlQrrKCjRnp5/YlEb9Pduhk6bL3Pj8TSmMQ9EWvOjWVhISsvzgMrltcHF9In+nArfZptA3BHHgZzenrLjpskNpEmXycybvL1qU+fARNsIfL55x8GLchIkJyXGZbDyaTJtU1ol1OcpVrOza3kxClHUWvVGfv0AhfQDD9MM7NtBBo9kvhOmDw4R15s2/oTwJGjCuYBwO4pwbzRwH/Iu0+vYbwJ/iTx7/nYo7Zj07+Zv7Nrf0MAZCoQVjgnlQhccWlGfLlv8rQjMhygKuphF0mu2M/Z1PTi/MWBUGU7Mf7tr9JWf2+jcO44Bep6IxK2NAqdnpgDPioG9hF5ZfuB05FY1xSAtpoz+P6pYu/V6ngcNpYRzzEXjNOR7i0AvoQr/+1tx3MiULBWT44yCY6XC4At/Rx7odmMGBHfiD37CZyi6qLIf4NmzhB8Vc5Acle5tjHLza04SJkzNFV1bTdNrlK1bJ5BdlvMyUiPGB+8qgY4cR1fM1iqJx2PHNNmamgvc9C5fmnlF5PmzfE6Xvt0F3IOXOZGQL5jm0fZvsybjkBHkf80iUBXKOm4sqR7ulFZa/klU09qojHBzj+YW5nsF0s0KMeXDQJgdFSSuKzMK0hXna5MDpMzLk2uo1a2dKjse9sP1xVL7PRMB/H6LynllPtjk54x9FBuVyhpF5g/QbNhy4PnBw021diecoWFMz53ZBcIgqV2EeygeknXNlt3JEwQzzN7ThIIegwoR1ow/fGGdT0ZhlCSi0ua13cJywbSUq7oOHvKYxeV4dHjAdH/DH4VJghgObpuOD0OYBU5M/wsqhZtph35MZf/3kBNBik7vhB2zw5zTIAD84bqfOdZhkaOY0U7FWmUGl/f8w+GT1Oj+oNPsjk2qvtSa/MkSVb5E/t1fwgG1tNMqY6SdHmW0NvGS6VIxzYduvH8agz9aOzLKEyZfrHHN/GDsx3SeffqrbpXMN3Azj9p5V81e3vOSbICAICAKCgCAgCHgjwAeHMB8RJwgIAoKAICAICALhEBBF43B4pXXo6V9tjysaz16QYVkurQmOQFwyC0ucHSuRLl++gj9pS2xYtMNCu83Bqh42JUzHFkthHdB0sISJhSgodrot7Jth8c4Lh05FG/hhU4YXllesXIlPCW72nDe0PxbhTRd1IRP0wnon8pwxc5aZpOt7kDpxRkQ5kD6sbMJSoJ/jRW7nwjnHGz12nE7vyafa8Cf9hKIo8nn/gw8TvvMPKAnB37SIxMo+UJCx1V3JMuV1vFQpGoctF9NvPlcpZXeUBRZH9uzZY3rF36EoiTCwAGI6c9FVXcVresXfCz72uI5rU+bBRh3Sdi6ywsohvodtW9wmmrZ4Mk5D0Bc/noSlVNBkW6RH3wB/tGHbJgPTAgVihLUptrIVdXOzH3GZpwsWKmJVRIxKJ2/UAUN22HjAhjSUDJnHP/3sc/aOwVo7yoHNyKiOy+TGz1yfbn0c8mveMsPyuFOZNwotvHmMAyJ+zuR95+YJx2VLSk5lRS6TjUeTaZN+7Y1pwxMHB1B3PV5+xfwcf8eGCPxNK89h+uAwYeOZOl5wEAY0OA+DOIIF+glrSkjLebgGkYNsLDnrGRZ50X7dlHWQJls1Nje4uTy2GwugxAAa8Yex2M9FGauYhiCYoi2AFhwmgBUsN4eNf4RxKhpDKZYtWTnHFlZigAVWdmH5hduRs2/ABiDowQEa0xo35xPkyf0aNvPCOBsfIQ3ceAG6oNjv5jr/p7CNfsN0bH0acqObg6zHh9e+VHmwiyrLIb4NW/ilStHY2Z6Q9tLvf9AY4RYO00UdL800nO/MJ1Onz3B6JfU7iqKxk4eZANv4ZhszuUzJ8D7nnROfUXk+bN8Tpe+34Xkg5c5kZAvmOS/Z00/+SCd5309BJqoc7VbPYfkrWUVjrzoCfS1btdH9LJRuTQclNIxRmKuazkveDZtWFJnFpCXZd6wdoIzgVafzGvcQ1tYfR+V7Z/78OyrvmfVkm5Oz/BdFBo3S7wXpN7jczqdffaC/x/wU9YkbK9gFwSGqXMXzYNzYYVvrYTrwjIIZW6vEIT4cWvVyYcLa0mGcWdEYa3jAFIYUbAdvOU5Y2SUq7osXL9E0QcY2HRTqy5avFOO5irmuCv7A3AXtyZQ3Tf4wv3O6NjmU/aM+kxl//eQE0OQ1/0B94i+sonEyNHPbd1vbAb22NVj4hXXJ4oP8UrnO70W/ba3JrwxR5VvQwu3Vtu7kRa/XmOknR3m1tVSMc2Hbrx/GwMHWjrzKgni2fgO3OqHtVa9VB8ESHA4kYwyDNfYwjud6qZ6/hqFBwgoCgoAgIAgIAoJATM8xipfKMCiGA73iBAFBQBAQBAQBQSAcAqJoHA6vtA29cN3eWLk+S7WicfGXl8R27stskTRtiQ9BWDILS5wNW6c0LePCEikWj2CVD4qUbn9sbQTX17HDFfVQUIKFNnORDJbskJ65UM5x3J68cGhb6OfFTGxyOh0vfGGzxHTJLGTytc0oA5RSsalsU7gMUicmXfzeoVMXjRGUOWGVAhbzbJs9fovcuHYctEKp03TYtMB3LOC51SnT3q17j3g0tszgduU3BzpQisa2cjEd5nPu2xlK015XxEPZFXjAKonp/BZdoeSFePhzWnHgdGyKB1Hbll+b4HzdnlyvbpbPYTGcy4Lr/twc+BCLxQhnbnq6hcU3npBuVlZMna5shQwexOED0/nxdDJ0LvvPCjroYgfrQCgP2gFvOPXs1Zu9Y3xoAlcoR3VeZfKrT+4Phrw2LFT2UKAGj/Xq3TfWWF1dCOucXL9ff7PANy0/3kcCs994U6eJzVrT+ZUpapvEGMNlgIV5PwflcYTHFdlu/dw7776nxynwoukY8yB9cJiwZh78zu0A9IV12HjGdbnt1TXEULxjhQRY7na6sBtLaJfArlCRoq7YgV62cA4c2WG8RTw3i7YIE1bROMpYFQZTtj6GA1M2Z1M0Rni2dmxa6YXMg/aG+nBa6A3DL7Z2hOuAGWcorKKNgxfCOB5/xk+YFCaadYMSifBmrU3RGHSCNyBLmK5MuYr6u9fVqnwVtUlvMrKcDVvQlZWKxpCNgQH+nC7KeOlMw/wNPJHPiFGjzc9Jv6dS0Zjbg3N8s42ZqeD9pAHIxgSS4XnG2m9ci9r322A5kHJnVNkCtNt4jsuV0+R9LwWZZORoxsP5DMpfiJesorFNsYtpgnyCvg/Wd0wHRUN8d64peMm7YdOKIrOYNIZ9hywM+ePFbi/FcLAaMgHKiD/n2oHXuId8uQ7N/jgZvncrSzK851VPnBfLRmFl0Kj9nl+/wXS5Pf3qA3FYLsBNHeyC4BBVrsK6D3jHpqjNNOAZFTOsH/D6HeYmUMi0zenChDVpM98ZZ7R/KPTyXMlrLsxxnH0Fp+vWVuAXFXfMGyA7A3vIWHAY72GdHXWBtgylbnMtC4fCER5zMdP58YeXHGqmE/Y9mfHXS05gOmzzWPgDB/yFVTROhma/th9mrZLLaHsmiw/STeU6P9MZZq3JrwzJyLd+7ZXpxTPMmOklRyEtW1vLynHOq/36YQyabe3IVhbEgbPly3NC3DrkdLxuB7kojMuq+WsYGiSsICAICAKCgCBwqCMAOY/1ADAH8TsgeqjjJeUXBAQBQUAQEATcEBBFYzdUcsi3d5bsjLWfvCZWe/CyuCXjBsOWx1Zu9beel0OKmInMZBaWODFYGcYi7YJvF/InfTU3L976PTdu3BSPhxe+XgOW89jxN9NqMvu5Pf0WDmH5F3S5KRrzdV1Oi7HJLGSCRizs80YW8oaVY1xt6FQ4DlInbmXGZgNO8rMFP+RRqmx5rTToDO+3yM3XdDdo1CQeFZMDKBr41Sf8ocDGjusOim02d6AUjd3KZaOJ68Fp1dkMz5ZNUWZsnLHzW3RdtGixxtHLUoNN0ZjpClIPZtvyaxNMu9uT83RTNGblKqelRWc6UMgDzVBU83N8pSpoNje8eePe3DDjtPx4Ohk6QQNb5mLlZ1yRy1Zbtb+ypGxea1+jVl1dXtvmFdPt9fQqk199duz8nM5/6LDhXlnE/bAYANx5w7JIsZIx8D6uZYUiPeruq6+/iYe3vfjxPuLxYY7CRUskJONXJubDsG2S6x79fhDHG0R+bQwYmS5MHxwmrJkH3s2+GEqaQR2suvJ1udiEBo9CyYQVf2EBy+nCbiwx1n7YwZ+t9qL98Aa+01I50xNG0djEx48OHqvMOEEwHT4iQ/EIiqw256VozGNAzdr/vzmBv7nxdxh+8WpHOAyCRT8++AF8cKAIFoeCOL5ePGi/wmna+Aj+fJDDqmjcp5/uf0wL42Z9ecmFbD0bhwfYJSPLeWHLvA9lcZuz4eDXb27avFljgDHH6aKMl840zN9vvPmWzmvc+Anm56TfeVMZPAfFXy/nhTPi2cY3rzEzWd73ojfd/ZLh+aB9D/O/X58Lf+77vXDj8f5AyJ2cl1vfyzTa5H0vnkNc7tdzirzP8s+06YlWfVEWruNUyvtB+Qv5Z7WiMeRglA1zXfNGhopVntB94rp160FG3Hn122HSMsczv/bDMkuciJAvGEtat22nFRGRF+Yt7Tt2ivX6b5zFN9SJ6aL0x8nwvZk3vyfDe171hPSTkUGZLr96g7/Z7/n1G1xut6dffSBOlWo1NM+aN2n54WDyYVi5ivsN3JDi56JihnQxp27WopWefwNTzGVw64Xboe0wYd1oZpwhP0Kug/yFPCEzg2fcHMexKRq7yS7J4A4aeA73+uw5mqTPPp+n6cSBSDi0d9DOhh34ILSzj/fjDy85VGcU8b9kxl+O6yYnMDk2uRv+3G5tazW2dsr5ZoXMEGatkstoezKdUfFBuqlc54+y1uRXhmTkW7/2ivJHGTO5P3S2MaQHZ2tr3DdGkbFsaWbkmFEO8LvbPNIPY6Rha0fJ5IvD7qAJBghMx8pJpgEH09/2nlXzV1t+8l0QEAQEAUFAEBAEMhCAAZP+A1/VB5BxyBHjOw6i2m6BEdwEAUFAEBAEBAFBwBsBUTT2xietfQe8vSmuYPz4S4tjJXsuiX230XszPK0LFIC4ZBaWOHm3BUhY8YRgies0obTj9YcFdtOxpUDeTINlP1zxF+ZUu9/CYXYoGnMZsfkGiyastNuoSbMYrghjF6ROOKzbE2kBQ17kRD1AWdB0toVzDmNb5Ma1s0gPFnK86hSLjuywwYE4A18dzJ8yPdNR0ZivAXVTvuMCrF6zRpcN/Ilr2tn5LbquWrVax8NirxmP4+NpUzSO2rb82oSZt/PdiycxoUT9gp9NPnamwbwTRFkVGxG8SQorq1DIx+Yc8oA1I+DndH48nSyd6I9QTrQNONCHBXJ2fO3utm3bYr/++qumFX1jMs6rTH716baZaaNl//79MRwqQPmwgYqNDnMTFRbm4Rek7vx4HzTAIjrSM5Us8d2vTFHb5KrVGe0U/GNrb8ifHW/aDhoy1LOfQ/t3c0H6YI4XJizHwZMXb75QysNBHJS7ocwLZSdYATOVaHBNOOrDra8Lu7HEfSIsGnuNEfAzrfbyVaG28oRRNAYe3N+EGavCYDpp8hSNWa269a3weykaIxIfPNqwYaNOgxV9vA5jBOEXv3aEzID9xEmT9WEk1D3GMBv2mrj//sPNFQiPPMI4Gx8hjSiKxojHhz+8+iWzLSMOXFZtSvMG8YFWNI4yXmYg4f4/xlvU8ew5b7gHiPg1uxWNmeyovM/xc+IzGZ7n8vr1PVH7fk7f+TyQcmdU2QI0e8lp8M9p8j7PHd0UZJKVo4GHzfnxF+JltaIx8uDxkxU012/YoPvDqtVrwjvB+cm7YdKKIrMkEBPgBw6fsnVKKE+aitNcTvT9qVA0Tobv3YqSDO/51RPyiyqDRu33/PoNNwz4G/OVTZkV4SCDoy7NQ/tBcIgqV7V5+hmdn9daD9MfFTOOjyesZEJhlg/H4uAq5gluLkxYMz7jDBzxByU2PkQMq7NujuPY6sY2N4+KO2jgW9OQNhxuAcH60u7de/RvvhWOrXVXr1VHlwcKlKbz44+sUjROZvz1khO4bF7zD67bsIrGydDs1/Zta7BcnjDPZPFBXqla54+61uRXhmTkW7/2GnXM9JKjgKmtrWXlOOfVfv0wBs22dmQrC+LAeeWLdgdjBuivnu3QKQbr8bgNE+2yvDoEFVY5Kavmrxklkf8FAUFAEBAEBAFBwIYAH/Zh2RoHtbE+Lk4QEAQEAUFAEBAEoiEgisbRcEuLWB//sCvW/fUNsacnrNZKxlA2Lqr+er25Mbbnt/8rgqYFsSkiIpmFJSbBbQGSFS4gXIZ12GzEBgkUCrEoydfTmVdy+qXpt3AYRdEYCmosNLNikEmH30KbGRbvsKbMG4uwEsguSJ1wWL8nlFWxeGduOCBO1EVuXjg16fWjgZWnsIBoc+moaAwL3ahvKA2ZSpdmGdi6Y7mKlc3P1gVkDgRFVOYlbO66OZuicdS25dcm3Gjgb148ifYKi0Ioj7lpzXHxhGIPl9d2zakZHkqQUMKr8kSNGDb373/oEX2tKBT3oMjr5vx4Olk6eeIMGvbs2aPbFDbz2PFGH8J9+dXXurzAPBnnVSa/+rRtZrrR886772l6sYHqpoibakVjWCgBP3R+7oUEcvzKFLVNokxQMkaeblbsE4hQP5jfe/Ts5fQK/dvWB7slFCYsrgBHeWDFPogrW6GSDg+FY6dLpaIx2hmUVkEbb3I783P7jXaOOKzc4wwTVtE4ylgVBlO++cBplduk20/RGIq+KDNbB8bVyQ+ovi7oxpqNX/zakUkjDnrhemXQYR6cMMOY7ytXrtJhcSAhjLNtUCKNqIrGfDgCBxdsjq0lwRo+u2RkOS9seWw+0IrGUcZLxsLtyWV06yvcwgf9li6KxkxvWN7neDnxmQzPu5XXre+J2ve7pY9vPA67WeJLVp5z5hlVtkA6XnIa/HOavM9jp5uicapxBz5uzo2/EA6H07zkBNs441dHJg04uII8YDUVbtSYsfq3m6VWv3l/mLQY9zDza5PuIO+wKoSymXMXjpdqReNk+J5pMp/J8J5fPSGfqDJo1H4vDE+aOOCdx2ibMqs558a4yy4IDlHlKtAC3nqqzdOcnfUZFTO3BDEfZ+Vf3O7g5cKERTqMM8rFcjrkVcwncSsZWwg28+Q4trqxzc2j4o68uV6xlgaHW59wGJodlCVRhufU+sUff/yh12xKli7H3vEnp4OwzsMGCOSlMBhPJMJLMuOvl5zApNjGBfijrPgLq2icDM1+bT8nKBrzfCfMOn/UtSa/Ok5GvvVrr1HHTB7P3eQo8J2trWXlOOfVfv0wBs22dmQrC+LAeeWLW6xgvblx0+Yx9ElYA0HfhT0fHKIN67g+Uz1/DUuHhBcEBAFBQBAQBA41BHbt3q0PuOKWAuwvsM4FDDZBVhMnCAgCgoAgIAgIAuEQEEXjcHilbei9+/+O9XlrY9zCcccpa9OW1mQIg2VDLLBigdvmbAtLHN5N0RibHFAOhILrtwsXcdDAT1y5AbqgHIIrPfFuU8h0S5QXmmwL/Sz0uimdsQJRxcpVMyXNFm++/ibzyTxYIQSd+HNboM+UmPrQvUdPHd60OBykTtzSsn2DRQDQZNIcdZF7wMBBOq1GakEwqMNVjsgfmLtdlw0lXuahTz79LFCyNp6MWi63THHNNhY8QfuHH33sFiTWtHlL7Q+FMtP5LboibLESpXVcWE11c7CWg7xhwct0UduWX5sw83C++/Fk7XoNNK22K+5Gjhqj/XkTzJm+8zdfBW9TKnaGx2+/ukeYZOjcseNn3Z9BARpWUlE3n372OZLVbsuWrfobcB4+YqR+xyGJZJxXmfzq07aZ6UZPj5df0fTa+ksozqG8XpZDOV0/3oflGe5HzWuEEd+vTMm0yWo1asfrh2m1Ped/8aUO+2jholqp3BYu6He3PtgWN2jYPv36axqhnOq8FcCZNhR+UX82i87YCIN/KiwaI+9adTKUgWCZJqjrpK4+ttGANGCRDP74Aw/5uShjVRhMsXEG+Qb02NoFbi6Af+++/VzJBT/f92D+GA6q4PASwnodyHFLxI1f/NqRMx0oqiJv8IcfL7G19uKlyjiT8fxtG7MRKaqi8cBBGYotOJDi5rCBiXJB8R39s+m4DzLlIvb3kuW8sF36/Q86P1gNty2m2nDw6ze9NmqjjJdcVrcnK7zA6mAqXbopGqNsYXg/lVhkR1pRed5Gq1vfE6Xvt6V/IOXOZGQLLzmNy5aT5H3cRIR+kxXruAz8TEaO5jSCPN34i2/IMefMnBbWCHhuj8N+pgtSRxwe83dY/cUNEBjvUF6MjW7zEb9+O0xaUWQWpjnoE+saqFsnPogPRTv44c+5huE17iGubb4Rle+RppuLynt+9YS8kpFBo/R7YXjSiYVffQwfOUrXI9ZWzIPSQXCIKldhPgzewcFjyOt+LgpmtjSxVoi8cQOSnwsTlnFGv2M6njPjJiOn4zi2+bStrUTFnfPHPAIYoB1jboL5jOkgs0P+xK1qCPdit5dMb/3uxx9ecmimxEJ8SGb89ZMTQIZN7oYf1qqBBxSH3ZytnSZDsy1Nzj+VisbJ4gOaeI3WxCjKWiS3G1vbsK01BSlDVPnWr71GHTP95CivtpZV45xX+w2Csa0deZUF/OOVLw4DYx3LHKcQJ6rLqvlrVHokniAgCAgCgoAgcKgigAOePD8JYzTuUMVLyi0ICAKCgCAgCDgREEVjJyI5+LfSf4xVHfB9XNl4256D7xQWWwvGQmtYxQiuWrcFSPjxolWpsuVdLUVAyde5mcVpYlEKC+UtW7XWVkNgaSaM81s45M3IsIrGbDUFmwvmSXtsXLAVRyxYm+XCyT6c4tu8ZUtCEbCoVrpcBb3ADSuo7ILUCYflJ5S5oeTpVMCCYgc2SEHTjz/9xMF9lTJti9z79u2LsXVTWD8wy4nEgcnatevi+eAFfFWkWElNAxSvYK2BHSxW88YxaEwnRWPQOGbseE03FledVqwnTZmq/WCJYfv27Vwk/fRbdEWgyVOm6fi49hMKUabDVadIF5g4FY0RLkrb8msTZv7Odz+eXLr0e81nULBy1uHCRYviV5s6/Zz58G9YLUP7t1lI5nDm02/jBmGTpRMKbWhPL3Ttrts7lBBMh74OvIINBtDvtN68ePGSGDYtsKGNTRo/51Umv/q0bWa65YlNH/Ca06Ip2jusCcIPfzaFSjNNk/ehRA/rSezQF7R7toNOCxZ2nUqNfmVCOlHbJFvfQf2hfzMdaMR1i2b/yZtEGIOcByTQdy9fvsJMQh+oCdoHh+2vEzL67weUhwsUKqyxxIax2a8iCA54LF+RQSNw53HAaS3vs8/nxS3ruykaQ7EedT9v3vwEMjCuMV+YdYxA3y1dqvODoo6pjM8JbN+xI4Y/061atVq3GaTptFALeYAXqeBv1pOZhvkeZawKgynyatvuWY0BrIc5LZuNGDU6Xh6bojHSYOUWfuKgk9OF5RdbOxo/YZLG1rmhB+uRwNXNwpmTFvxGPwF5x9l+3cLyN9sGJfyjKhqbdezcuMaYzNaM3fCPIsuB1pdezjgchiu7nQ48zW0C456bs+Fg9ptOuQrpeG3URhkv3Wjjb1BIgVzi5BP4g0+hABjlAGF2KhqnivcZo5z4jMLzYfueKH2/DcsDLXdGlS285DQuW06S9yFPoB9r1KQZk5/wTFaONhMLy1/od0EbFFNw+I8d5p08N4W/U5E2SB1xWnj27TdA54NbByA72Q5j+/XbYdIyx7Og82uMc5DbYD3RKYOY5eF3vrXBafkVStqY3/D45RyDbDIFp2ubbyTD95y2+YzKe0HqKRkZNEq/F5YnTRy4PjAW44CT6RYs+FZfRY+6hGxnuv+xdxXwVhVfd4NgESoIonSHimK3qISI0o10N4KAokgoiEiHpDTSEgKK3YABSCggpYAoooKgGP/P+82a577OPe/0ve/xHuzh9zjnnuk1M3tqzR4/OJj1MOi4CjddIF6QiK31ccvWbREc4mITFDOMR4YOe972Cl6+PQQae2GCuOX02D0ZZ+uhScwJcfMa8mpd12A/Vuw4fKe2Eg/uCHvUmLE6PayB1TpnG/zsc9qeyZ5Yt7Qar/rhNg61hhX0d9j+12ucgHQ4jbthh74E5WgtY9jBuLXTsGl2CxNxOq3BBpX3CCtefBBGotb5w641+clDmPEt8ubVXsP2mV7jKLe2llL9nFv79YOxUztyywswdooXewZYK8WBJOsaFvyFMSk1fw2TFvEjCAgCgoAgIAic7QiwAh/Mm8QIAoKAICAICAKCQDAEEk00zgACB6UDs3PnTp3Kq6++Oh2k1n8SH523h3Yd/l17eLZBEboyXxb/ntOBy5Mnf6NqNWuTIu5Qnssuo/vvr0zHjh2j1i2b06WXXqpzoMgn9N3hwzRuzCi68Ybrk+VKLRDRD0eO0MQJ46jctddE7dVGFXXv2Ys+/fQzOu+88+jee8pTkSKF6eSJk/TlV1+RIq1R38f7ULUHq0b9mC9du/cgtVmoP3Xp1JEaN2pgWru+q80GWrV6DbVo3pTatWmdzK0iceo8z5k1nYoXKxZj/+FHH9GjvR+noiqt8+bMirFDmAgb5qKLstMdt99OX375FSkNItSpY3tS19jT0aNH6eMP3qWMGTNqdy/OmElq05DOP/98uv22W6l06VL0x6k/SF3rRYroTAULFKCZM6bRBcoexk+ZaIfGf526dKPPN26iXLly0a0330QlSpSgb1Sa3vvgAzpy5EeqXKkiDezfL+pDEZtp0DND6JqyZWnyxPHR7/yiSGqkNiXo+uvK0YRxY/izfipiGimyIKkFQhVPcbrphhvokksuIbVRSWrDhS684AJaOH8uZcqUKepPLWCSIqiQ2vyhIoUL0/XXX0eKpEmffPIpnVLhXJozp/Y/fNhQheltUX9OL051Mp582cWFOtylWw/auGkTZc2aRZXfbbqdbNm6ldQGOZ1zzjnU97HeVPWBKjHeFambatSqq7+ZdcF0pBZVqUXrtqQ2N3X7uPWWmylv3itILTCT2pCjUqVK6rpVqmRJmjl9qumVwrQtrzYRE4Hlh586OWnKNJo5a7au98hL8eLFaf/+/YT6grxWe+hBjZUlaNufEydNoVlz5ur6fNONN1C2bFm1uwwZMup2d3mePLqeZMnynzz2KnuOKJ50Tpg4mebMnUeZM2fW5TN10gscrH4qDeX08rLl2r5QwYIE+WKap1WbW63aHky/J/tS1Sr3m9bJ3t3y5FWeaG9qk5natG5JrVo0Txa2+eGrHTtIkdV0+4QMv/mmG0lpAKWP128gtWVLWbNk1e1z/NjRdINqu26G636GDBkIf7mVTLpJhXfuuZlpg2rv6gpXLQvR1q1heeUJ8YZtk/A7YuRoWrz0ZbzStdeUJYxX0N9BDqEP69C+LTVr8rC2//7776l9p66EJ+TqnXfcTvnz5SXk7zPVd+3/5lt6ae4sLb/hIYgMDuJWJ8bhP7Vpr+W4InxSwYIFdP8Mubtx42bdt6Acx4waoX2r64x1n3PxxRdT+bvvUnm6lDZt2qz7jXLXXqtlHDCZ9EJsfzBE9QMrVX+Adti1cycqVqxoNDW16zWkQ4cOUc0a1ahjh/aULWtSO4UD9Hno+2Buu/UWKlOmNGVS8vJrJe/Q99137z004KkntT3/99zzw2nZ8pX6J/oeyMBvvjmg0riRcqnxyM+//Kz7x3feXEsXqH7Gy4Tpq4Jgqg5CUJt2HejEyZOUM2cOuuWmm+jCCy8kpSVXjwkgu9G2GjWsr7GzS+9WJeuV9iJtlS1bNlrzSpL8MN0GrS927UgdbKC6DRrR8eO/6jHP9deXU/U5H23+YouW0RgDoi+DnPYyw54fQS8vX0GLFsyjAvnzeznX9k59NiwVaZ+atWyt688ba9ckC2/MuAk0f8FCqlu7FvXs0T3GXhHZSR38IkWmpzJqbHX9ddepevKLzhPadgnVD02eNCE6vmLPYcZy8Pva2tdpwKBnVF+dlx7p1iXZeKVDpy56bIB6UEWNpzEewnjnFjUug3HCgeUm3NiNGdRBNapdt4GWqes+fA/OoiZMfxn1bHlRc07C+Bhj/dEjh8fY7lDzPKUZXn+7p/zd9Ozgp2PsvX5AltaoXU87e3Ptq3pM5eTHrg6bbp36N7s+M5F130xDensPU+eDyh5gEkb222GZ2uPOsGMLuzpnzU96Gu9jLolyh0G/faea56pDczGyN55xtIlN0PqF8UbdBo31WBXj8LvuvIN++uknPWfCuAZzTHUDTbL1Cj9lZKYL87KHm7XQ4wx1INZxrcJLbiNMv2HBbdAxy0vzF5LSXAqvunzQR7oZrFGMHjtOz1Ew1y5dqpQeo6xXY/1ChQrpORvm5NY+KKw8jqfeO+UjTN3zU06IL54xaFC5F7ROmnhweWANQi1T6/F5saJF9bxkwyef6Dn3rbfcQiOHP6fHDOzXLw5hx1X71Jy/Y+dupG4K0OtCGPdcljs3bVdrfp+rcXFWNUdYsWxJdDwWBDPIpS7dHtH5xfjkqquuVGsD2UgRavWYG3OfGdOmUNGiRfS8xq9bxsbuyTi3U+uIWE80DebXGIcgfwtemhOdk7Afp/VHp7ELwg6LO/yiDWPNFXIRdQJjaV5XhP1bb7+j1+5gj77u1VUr9XoK7Nh41Q+3cSiHEfYZtv/1M05wGncjrVwHsWaL/gRzBozfG9RPWsNza6dh0+wWJtLktAYbVN4jrHjxQRiJWucPu9bkJw9hxrfIm1d7Ddtneo2jvNpaSvRzbu3XD8ZO7cgrL27xYg1l67btut1hvHn++eehWNR6USbdhxQuXEivSaKv8zIpOX/1ilvsBQFBQBAQBAQBQSA5AuAigG8C43cPJ3ko8kUQEAQEAUFAEDg7Ediq+GcwJRW/IBFGiMaJQNEljKMn/qYX3jhE7SvkpdzZM8e4/Pnk39T+xV30x9//UAZlM7dzGcp2vvdCR0wg6eAHFrYHKuIEyDJshg55RpOR8NtpYYndOi1Awh6L3YsWL6XpM2dqggv7AekW5MymTRrrRXr+bj7ffuddTSABWW35y4sd3Zl++N1r4TAs0RibmOMmTNSkF44rnyKftWnVSpF5K2iyDEgz1k26997/gNR1IbR37z69Ecp+saj9SLeudPnlefiTfnqVSYxj9QObeQsXL1FYL9HEYrbHhkLdOrUU2bBVzIZD2EVuDhebvUpbgyKnbY7JD0jbzZs1IZBQmGjNfkAaB7kZRGwY2F9X7lp6XJGblq94RRM40xrRGOlEmSsNwjRr9lxNTsc3GBDu+j7WR5Obkr7897/Xoiu7xIau0j5DILchHhiQttEualavRuXvq0R2RGO4C9q2vNoEwnQzfuokSPrDR4zWZEwOK0eOSwgHBUC68mtAGoPcOaoIBE4GG2jDhg6hGxUBEsarTpvhhE2nuXHQskUzaqvalWlAcHisbxJ50o5cqE70qjYwWJE2fqFaNapT7149Te/J3t3y5FWebpuZySJSH5SGHVIakfSmFOxB5AQZtFuXTjRFkUYXL1lKQYjG2PSdPnUyKQ2gehOB44SMGDignz5wwN/46ZUndhemTbJfbLaOHjuelGYg/qQ3q1s0a0r169XRhwfYAuTLseNf0IRtbGCwwcGI+moTsk6tmtHN5SAyOIhbjtPp+fXu3TTk2WEEEiBkAgzkPtpbZ3X4JXv27PobNv6VRvno4R18LKyIJZ06tqOyinBdqcqDmnxtJRpDbsMf/FvrPEj3U1+coUmednUDh4yGK3I3DqGwgdwH+aBVy+Z0ZZky/Dn6nPvSfJqmwsRBFhiMFSpVrKBJnZ27PkLbv/wy0CJVmL7KL6ZIHzbQ+vUfqA+F4DcMSN+PPtI9eiDEThYkuUz6v3GTZrRHjQ2cDmMErS9O7QjEW3U9M72t2oA53kOf065NK6qh+hw/BuXaRR0Ea67aTPu2yQ9y2YXhNo6Mh2iMuED4HvzsUNqmDulwG0C9AemqrcoX2oPVhB3LoU/qqg4f7d23z7a9fHvgAPV57AkC4YYN5ArGeTBOOHiNGdw2asP0l5w26xOHCnC44PE+vah6tYdirEG4q64OUIG4i0MHqNdBzOkiGiONiar7QfKb1tyGqfNBZQ/nOYzsZ7/mMzXHnYg3zNjCbZxm5iU9jfdxSEjd8hCdl4DksXrlMsJBJTZhx9HsH88w9QsHVzH/5DHCxRddRA+pAzId2rWJzs+tB6P9lpGZNhCNQRJG/7Fm1YqYg1Tszktuszs/YbHbIGOWL7ZsIaVFVnudNnmiJoZzOHZP1G+Mf5csfTlatjgkVb9uXXq4cUNq0rwl7dmzN9kahtOYguNwm2/EU+85fOszaN3zW06IJ54xaBC5F6ZOMg5cHjhEirnWbHUwFzjDYOzTsEE9tS7VMtk6TBAcwoyrED/62udHjCKse+EQJAzG/TjE2qtnD0VoL6i/8X9BMEN7HDfhBb32BNnBBusxPbt3o3JqTYlNELfsx/pknO2IxnDLB8vq1a1DPbontUP2E4ZojDDD4o45asX7q+r5mN2h0WPHj1OVqtX0GNlpXcmrfriNQ5H2eE2Y/hdxeo0TnMbd8It5PuQX6isbrFPwQXGvdhomzV5hOhGNg8p7zk88+CCMRK7zh11r8soDyiHM+rxXew3bZwI3t3GUV1uD/0T3c17t1wtjp3bklRe3eKFwpWnz2LVU5N00ea+4Qh2CH6cP/Zvfre8pOX+1xiW/BQFBQBAQBAQBQSAJAfTlOKhnZ3jfAErsVq142c6JfBMEBAFBQBAQBAQBBwSEaKwIK+nF/KNIOU8s3EfbD/5GWRWBuMJVl9BV+bNQ9gsy0ed7T9C7Xx2jH47/pbNT4vILaXjjoukla4HTCaICiBPqOkCtoTF37lyBw/DygIWoA98eUKTay+mKKy5PtgFi9Q+Nx9BIYrdgbnWb2r+hFXDv3r2UR2lWtZKE3dKCjaDdX+/WTgooTcbQiuxkwpYJNnl2q43C7NmzUX6lbdDUaOIUV9jv2NjYvWcP/fN//1DhwoVdNdRxHCCbQEN2SaV12dRIy/Zp9QkCE0hE0J5VtEhR17ILmgfgCHIbtKiA/AdyfRATtG0FCdt067dOgkwOja/5lIZmtJEgBov60JgNraDjxoxU9fcC+v3U72pzjPQGGrQkr1i5SmvhgjZwaM8Oa+JJZ9g4QXCtprTAg5CPzcu0ZEAkg+zInDmTXiywHhbwk1Zzw2H9R+9rL+oKNwaQ1gAAQABJREFUXVUfvlHk4kKaSO8nHD9u4mmTIAxiQ/fyPJep/ugK1zaHOgmyLPJRSJFIWdu/UxqDyOAgbp3iw3doiIcsBkEcWuNBPrAzBw8eInXNJRUrWsR3WWBDf7PS4J6/QH6t0d0MF30htBRdrbSLOclzEBORNmgfg6ZvO+KnGSbw3qfKBhvApZVWY6e8mH683sP0VX4xRdzAYc/ePVpLMDRgBzHtOnQmbCDbkbWt4SSqvqAPPqTqwmWq/mMTz4+2IDMtTVu0UmT9o7RSaafzKk/TX0q+QyMT+lGQ6wsrMosf+RV2LKeu/VZa2s+1XVRF/T1w8KDShv6DPiBnJdYkEoNE95fY8D3601Fa8bJ9uaJNQtu9qdk8kflJjbDirfupkcaUjCNsnQ8je4LKfrt8p8a40xpvPGMLa1jW3+llvI/DKCDrZcyYQc95cKuLnUnUODpI/QLJeO++/fqWhOLFi7mO3+zSnB6++R2zYMyNOSM0q/o1OOyIwzDwk08dlk4NE2+9t0tjouqeNex4x6CJkHvWNJm/mRzXumULat2qhSb0YuyTUd36g7456HjODNv6HmZchTAwb9in2uipP07pcZLXLSRBMPs/pZEXYYM8mz9/Pn1zjtO6SRC31ryfzt9hcT+daU5U3GH6X7/jBKc0Ym0GawJZs2VV8+Oigec1YdLslBa372HkPcKLFx+3NLGd37XIsGtNfvIQdnzLeXB6hu0z/Y6jnOLF95Tq5+zi9IOxnb8w37Cm1rFLV32r38jnn1OHVI7TX/8eIDmpxp971LrRrDnz9OEV3JzVp9ejrtGcDfNXVwDEUhAQBAQBQUAQSGUE5r20gCZMnKRvBn24UcOYNRmMydDP4xAzlMz1e+LxVE6dRCcICAKCgCAgCKRvBIRonI6IxqhqKz8/SjPf/57+939JmgDtqt9FF2aiEYpknPuic+2s5VsKIdCzVx99jWi/J/tS1Sr3p1AsEqwgIAikJQT4+s8O7dtSsyYP2yaNr3AHwe29t9/wRSizDeg0fITW8ZGjx9LkiePpmrJlT0MKUjZKk2hs1eyesjFL6IJA+kPgy692UKs27egKdQBr8cKX0o0sgxb+pwYMooH9+6nbHCqmP+DPkBQnsr/cunUbtWnfkdorzaDNmzY5QxCSbAgCgoAgIAgIAmcOAkw0dtKae+bkVHIiCAgCgoAgcCYiMGHiZH2b4VR1GwMOq9uZl+YvVDeLTdC3140bPdLOif4m81dHaMRCEBAEBAFBQBBIMQQ++nidVhKFQ+BQKoP9zZIlitOPSvHUO+qGahy4yps3L82cPtX2dqgUS5gELAgIAoKAICAInAEICNE4nRGNUed2f3+KXvr4B/paPY//nnTNH76fo7T4QMtxvVtyU67sya9ehhsxKYMArmvvqq7mxpWey5cuDqxZImVSJaEKAoJASiMwZdqLNH3GLNur2znu9Rs+oe49HqWyZa+mKRMn8Oc0/1z68jJ9bXGF++6l/v2eSPPpDZNAIRqHQU38nI0IQGtex85dafMXW/S1y7h+Ob0YaImrU78h5cyRk6ZNmZhekn3GpTOR/SWI4x98+JHWUo2FYjGCgCAgCAgCgoAgkLYQEKJx2ioPSY0gIAgIAoJAMATad+ys1z8WL3hJa6a38/3CpMk0W2k1bt6sKbVv63wLnMxf7dCTb4KAICAICAKCQMojcPjw9zR56jR69733CYRjNrhhp/pDD6rbd1pSjhyX8Gd5CgKCgCAgCAgCgoBPBIRonA6JxmbZHj3xNx36+U/KkTUz5bn4XMp8TgbTWt5TEAFc6b5x82baoEiEGKSCyDJs6BC66847UjBWCVoQEATSEgI4FQtt5nny5KFBSltmmTKlKVOmTNEkrlu/ngY+PYRwrd7wYUPplptvitql5RcQcOvUa0gd27ejRg3rp+WkxpU2IRrHBZ94PgsQeOPNtwjtZNmyFfTd4cNaxk2d9EJCr7tODRhZO/us6dOoZMkSqRGlxGFBIFH9Ja4FrlazNtWtXYu6de1siUV+CgKCgCAgCAgCgkBaQECIxmmhFCQNgoAgIAgIAmERGDfhBcKV6zffdCP17NGdCuTPHw3qr7/+omXLV9KYceOV0pmkA82X5c4dtTdfZP5qoiHvgoAgIAgIAoLA6UEAJONvDxwg9MuXqr47f/58dN55552exEisgoAgIAgIAoLAGYCAEI3TOdH4DKiD6TYLs+bMpYmTpuj0n3/++dRdkR1qVK+WbvMjCRcEBIFwCIwYNYYWL1mqPWNyWrpUScp87rn07Tff0g9HjlDu3LmUBtBuVP7uu8JFcJp8YeJtLqSfpmSkaLRCNE5ReCXwdI7A//73P6pY+QE69e9p/3LlrtUHKnLlypXucoY8vPvue1Sxwn0xh0HSXUbSeYIT0V9GIhGtzbhUyZK6f03nkEjyBQFBQBAQBASBMxIBIRqfkcUqmRIEBAFB4KxB4Pfff6du6na6rVu36TxfdFF2td5bik6d+oP27ttHJ06c0L+f6teXChcq5IiLzF8doRELQUAQEAQEAUFAEBAEBAFBQBAQBASBdIqAEI2FaJxOq+7pT/a+/ftp8+YtlCtXTrrqyivp4osvPv2JkhQIAoLAaUFg585d9OratXTgwEF9KhbyIG/ey6lM6dKa2JY5c+bTki6J1B2BP//8k6BlE+ae8ndThgxyK4A7YmJ7NiHw999/0/sffEjYYCtevBiVKF6cMmbMeDZBIHlNAQSkv0wBUCVIQUAQEAQEAUEgjSHw1Y4dhGtqCxUqSEUKF05jqZPkCAKCgCAgCAgC3gj8888/tG79Bn2TJRQV/KZuq8utNBfnzXsF3XLTTXTjjTd4ByIuBAFBQBAQBAQBQUAQEAQEAUFAEBAEBIEzDAEhGgvR+Ayr0pIdQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEgUQgIERjIRonoh5JGIKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAJnGAJCNBai8RlWpSU7goAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAolAQIjGQjRORD2SMAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEATOMASEaCxE4zOsSkt2BAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBBKBgBCNhWiciHokYQgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAicYQgI0ViIxmdYlZbsCAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCCQCASEaC9E4EfVIwhAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBA4wxAQorEQjc+wKi3ZEQQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEEgEAkI0FqJxIuqRhCEICAIpjMB7739AO3bupOvKlaMbb7g+hWOT4M82BP755x+av2ARfb5xIx07fpzy58tHnTq0p9y5c51tUKSb/O76+mt659336PI8eajaQw8mJN0pEWZCEpYOAjl58jeaN3++Tmnb1q0oQ4YM6SDVzklcsHAxHf/1ON1fuRIVLFDA2aHYCAKCgCCQRhCQsXIaKYhUSMb8hYvo119/pQerPkB5r7giFWKUKASBMxeBtCA7U6JNp4V8nbm1JnVzJvOS//CW+fp/WMibICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCwOlBQIjGQjQ+PTVPYhUEBIFACDwzZCitWr2GWjRvSu3atA7k18nxhx99RM8PH0VXXXUlDX56oJMz+X4WIPD4E/00aRVZzZQpk87x2jWvUJYsWc6C3KfPLK559TUa9MwQuqZsWZo8cXxCMpESYSYkYekgkO9/+IFq1KqrU/rxB+9SxowZ00GqnZNYu15DOnToEA0fNpTuuP02Z4diIwgIAoJAghDAoadTp04FCu2CCy6IytuUGCsHSow4TjUEatWpT98dPkzjxow6bQcwp02fQcuWr6BGDRpQ40YNUi3vdhHJnM4OFfnmF4G0IDtTok2nhXz5LQNx545A0HlJWpLP1pxhrNOrz+O0Z+8+euLxPoH7MJmvWxGV34KAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKpjYAQjYVonNp1TuITBASBEAiE2Sg7cuRHOnHyJBXIn48yZ86cLNb+A5+mta+/oTVvrlqxjHLmzJHMjXw48xHYtetratoiSQPr0wP70z3l76Yff/yR8ihNuWLSLgIpscmYEmHaIXjixAk68uNRyp3rUsqWLZudk3T37XQRjb3kfFggg27oh41H/CUGgZSqB4lJnYQiCPhD4JNPP6Ou3Xv4c/yvq+nTplCZ0qX0rzBj5UCRieM0g0BKkBKDZu7B6rXo6NGjVLBgAVr40tyg3gO595LxMqcLBOdZ5/ibb7/VeXa6oSItyM6UaNOplS8vfM+6CpcCGQ46L3GTz6d7Hnrw4CGqU7+hRqlWjerUu1fPGMS85H1qzddjEiU/AiNwJsqFnTt30QdKWcX+/d/QTz/9RFmzZqWiRYtSsaJF6Kory4ReP0S469avp42bNtMPR47o25Ruu/UWfWtXej+8HbjiiAdBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIJ0gIERjIRqnk6oqyRQEzm4EwmyU9X6sL73/wYe0cP5cvVhrRRBaVGbOmk1XK43G9erWsVrL77MEgZWvrKIhQ4dR4UKFaP682WdJrtN/NlNikzElwrRDGtffjh47jvr0epRq1qhm5yTdfTtdRGMvOR8WyKAb+mHjEX+JQSCl6kFiUiehCAL+EPjyqx00Zmyshv6///6L8B3mqiuvpHPOOScmsL6P9dZET3wMM1aOCUx+pBsEUoKUGDTzmGO9tvZ1TYS55eabgnoP5N5LxsucLhCcZ53jCpWr0HnnnUerVy63zXtakJ0p0aZTK19e+NqCLh8DIRB0XuImn9PCPHTO3Hm0e89eat2yBeVXSgFM4yXvU2u+bqZJ3oMjcCbJBZCmBz09hLZ/+aUG4tJLL6VSJUvSryd+pb1799LJk79pxRbNmzWhZk0ejt6Q5gc1tIWJk6cSNH3jlhLcrobDADDXXlOWxo4eSeeee66foMSNICAICAKCgCAgCAgCgoAgIAgIAoKAICAIpCICQjQWonEqVjeJShAQBMIiEGajrF2HzvTFli2OROOwaRF/ZxYCL86YSVOnTafKlSrSwP79zqzMncG5SYlNxpQI064IJk+dRjNmzhaisR04Ab+llJwPuqEfMNniPMEIpFQ9SHAyJThBIDAC33//PdWoXU/7e3Ptq0p7WhbHMMKMlR0DE4s0jUBKkBLTcoZFxqfl0knbafu///s/uv2ue/TNRUI0TnxZ+cE38bGefSEmcl6S1uehXvI+tebrZ18tS1yOzxS5APLvwkWLNRE4xyWXUMcO7ajctddQrly5YsDCWH26WtuBAoNixYrS8Oee9aXdeMq0F2n6jFlUtEhh6tK5E11/XTlNWAah+Ykn+xMOcjdv2oTat2sTE5/8EAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEgdOPgBCNhWh8+muhpEAQEAQ8EQhDnmjQuIm+1s5Jo7FnpOLgrEBg2oszaNr0GVS1yv3U78m+Z0Wez4RMpsQmI4cJ7TGTXojVKplIzIYNH0kvL1suROMEgJpScr5eg8b07YEDNHzYULrj9tsSkFIJIiURSKl6kJJplrAFAT8IhCEat2zRjNq2buUneHGTThFgovH4saPphuuvS6e58J9skfH+sRKXsQj88ssvVOXB6r6IxqdTdnKbHjdmFN14w/WxmQj5i9dPUjJffvANmXzxZiCQyHlJWp+Hesn71JqvG/DLa0AEzgS5AJLxIz170YZPPqUq91emno90dz3sB4jWb/iE+vUfSFdeWYZGj3jeE7WffvqZQPzvqkjG1oOErHn8oouy09o1qzzDEgeCgCAgCAgCgoAgIAgIAoKAICAICAKCgCCQuggI0ViIxqlb4+KMbcy4CfTnH39Q71496djx4/Tyy8vp43Xr6ffff6eb1ZWl1R96kAoVKqhj2bFzJ61e85q2z5LlQrr15pupdasW+oS8XTI2btpEH328jnbt+pr27dtPuXPnoquuuorat21NF154YdTL2tff0AtoV199FdWqUT363XzZum27JlEVLVqEHm7U0LSyfcci3vKVr9D69Rt0/NnVYhquIqtTqyaVKFHc1g9//PLLr2j5ipW06+vdhAXN4sWL02233UI1qj1EGTNmZGf6+ffff9OChYto8xdbaPfuPXSJ0kpQpnQpatCgHhXInz/qdtfXX9P8BYsoR45LqEunjtHv/AItuctXvKL9tGjelD/rpy6jP/+k3o/2oKNHj9JSRSZ7++139TVoUye/4Ig/PO/cuYtm4xpBlbY/VDkXL15MbR5fT7Vr1bD1B9wQ/jpVB75WfvJclpvKlClNLZo3o4svuiiarldfW0uffPoZXVP2aqpRvVr0u/myafMXSRoYihalxo0amFaarLtAaXLYvv1L+u2333SZVKxwH9137z0x7vADWhwQVod2bRW+F+uyef2NN+n48V9p0MCndLnC3YEDB2ntG2/o8kbZXXD++Tq/qKNmWcAtDG+UAe92bVonfXT4H9fPfXf4ML362usaxzvvuF0t3GbVrnG1LzTXwmzZspWWqbqD+GzLMYXamt9y04lU/x396SeaOWs2bdm6jX5S7wULFNSL141UvUUd9mNOnDxJa5Q8+PKrr+hrhffvp05RMdU+a9WsQbfdeotnEPG2+/37vyG/dQiJCVo//NY7M6NHjvxILy1YQBs3blby42vKe8UVVFa1EZiG9evFyB7U+7kvzaetqgz2f/Mt5ct7hS6DJo0b0cUXX2wGq99R30ePHaflS906tXXbRl2DjIOsfrxPr2R+Tqn69rwioEYiEbXZ0NGxbMdPmEg//fyzumq0OeXNmzcaTtA0/vXXX/Tsc0kbID26d6Vs2bJFw8IL5wHvTykCdoYMGfCqDeMN7Sq5lUYXtPGP162jL77YqtN9++23Ukslh6wymP3jiuvZc+bQTtXfIJ5CBQsk0/pSt3YtLc/Yj/XJm4zXlC1Lkyfak4JRj+Yrmb9jxw7djoop+QaZWq9ubdsrLTlMkHZA3nnjzbfo3ffe17IvF/pEdW19C3UlZvbs2a3JIeAJjTcffPQxHTp0SOGSW9ehOrVrUvFixbT7t995l9DXrlu3gQ599x1dWaYMFSiQ1PfkyXNZMtkWpN2wPMNG2E033kDvvf8BIT/oVyDfqqs+ESZoP6M9+fgPGndq1Kqry/zjD96lbdu30yur1tBm1R9kypxJtYXSVL9uHa3lxxoctPkcPvy9HlNgbGE16FePHTtGTZs0psKFCmlrv3LeGpb1N8r4rbffUXVkJ+XImUNrKYLmoE5du+v+yYloDJmKNAD3Q98dVukqqIkhjRo2oHPOOccaTfQ32gquM4YcRlsvrcYgD6hDDjffdGPUDbc9jE+85EfQ/gQapt586x01DlJyb9du+kGVW4ECBejOO2+nBvXqxrRzTlDQPihomvy0HU6L9Rm0HmCzWLeLXbvof//7nx6TYCxzT/m7rUF7/kY+g45dzXH8KdUPY/z6yaefq+uj91D+fPlUn1ydKtx3r2PcfsexHADmCBgDYqx8/vnnUUk1tkY5e42t2b88Tz8CYYjGGCdD7q99nfvmLb765rByzUQJdfyPP07pgzToF5YuXabnBT/9/BOVLlVK1+977ylvetHvfvswOA463jEj8yOD2X2QPhh+gvSvQdxyeswnkxJxKOqKyy+nRYuX0MbNm+nYL8d0v4J5Wvm77zK9xLwHldMxnv/9wWPBu+68I0aGch9WulRJNd6qo8c7q1avoU+VrMPcGNr+2qn1BR4b2YXN3/zKeK4/dnM6TifGrLnUdecrVq6iDz/6SK93lCt3LVWqWCHaB//444+0ctVq3U9jfQXjNKwF5FTjAycTRM7G099x/GH6cfaLJ+oe5mTZs2ejR7p1Na2i75AFI0eN0esPj/V+NGY8H1ROwH2QOSiXpdd4NppYhxfEO2PmLDXOOaLHebh63ly7QF9YsmQJ7ZvXGU6n7OQ27UY0DjqG4Xzh4MnDjRvSoiVLVTv8jPbt309FChdW84UbqUH9pLG7FUavsV8QfDnsIG3F75oa5lYYS3377QE6T41zSqi1QJSzm/zj9Hg9g9bdRMi+sPMSa15Y7pnyOeg8lMPE2uS8+QscZcbsOfN0nTLjYr9Y03zu+RGE9meuf8Qzt+P5Ogj5aC9YmwVun372uZ7HYL4OuQ2Cpl8TtKy9wvVT179S6xOLFi/V67bduna2DRLzX2AF/PqoPQBzbQVp9jsX9ZKrldT6aDzrUJx4P3KhiNLeizUopzUvzJPfefc92zVaxDNpyjQ9f23TuqUe/3DceAaVkaZf6/vCRUto1Jixeu/Fad/D6ge/IY+GDhtOTw/sTxiLhTVYq6xeq47G6dVVKxzXBsOGL/4EAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUEgPgSEaCxE4/hqUCr7xgbEYXUt15yZ06nP40/ojbvMmTMTiAcwIMrNnTOT3n//Q0XMfFaTKEB4AZkCBgvuQ4c8o9/5vx+OHKGBgwZr8hO+na8InxcpEhW+wxRUBLAZ06ZEycZYpGzboZNeEF21cpktWYs3NbB5Vb9eHR2O03/YxHiq/6Bo/JfmzElYoPxTkXUzZcqkNyJB5rMabJBOmjKV5s6bT3iHW/jFpjYMSCPPDn466m2XIrQ9NXCQJs3iIzYMf//9FIHocd5559HECUmkQNh9qIhij/Z+jPLly0tLFs7HpxjDi9t2BDeUEbCD1oG27TvS3n379IJ3oYIFaf682THhmD+woIoyxYIrFsVBINyzZ6/GAYSQmS9OjVlYhvaDJ/sPoE2bNuv0g3yFzVvgiavcRjw/VG+0IA5oVuje41H9feWyJbZEImhewAJ9z0e6aWITp+0Vtdk6Qm00YpMgT548lF2REbE5hTpXWxHBe/V8hJ3qJ5c9Nr5XKPI4CC4gKCJfWCC9SBGgsbC8es2rutywWH6ZIkhjExDlmCVLFpowbnSUkMyBc7h+iMa4YhrEDDuDzbTuXbtoK69yTHRbQ6RByg3ukY+mLVrTr7/+qjd7S5YoQQcOHtDkTGi9mK1kAQgGbmbx0pdpilqQR7uCuSx3bn1QAW0MZYNNCycCOocbT7sPUodQB+KpH071zo6QDSJk67YdOIsxz+fVdYcgqMPg4MRTAwZqIiTwAn5HFBEBacVhhKeefIJAYDcNky5BWEV9a6NkAWQN/IPcbW037LdL9x56Axh+UFethglHIDevVvKXCY1h0oj03FOhso7ileVLk18B+S9xFA5AHDU3trg9PvfsYN3GQcaFDAYm+IOp+kAV6vfE4/rd/A8yAf5BlECfdakifWCD0GoGPz0whhBgtXdrv3CLDdaRo8dq2YV+EgcfsGEDg4MszwwaoGW8/vDvfxwm7FG22CSE3wsuuEC3QTiDbB41YljMgQj0sbjmFddcooyLFy9GJ06c0HUGuGGjCZveTz8zhFYr8q+dwcb47JkvRq2CtBt44rSDTJAr16U0+NnnomExlkH7mWgAPl64zgMvEIpfWrBQy33g/vPPv+gQcKBkkMKC2xYH27xlG8LhqIH9+0UPgrAdnnbkC79y3gzHfEcfhk1A9EUwGAfgD7IW44MM6h/6Uzuisb7OtN8ALZ91f63q8TeK4ADyGw4rjHj+Ocr27+EWjhOHw54ZPFSTm/ANfR02jXFACqZnj+4Ecj0MY+klP4L2JyC5Dxk6jA4ePKTjwYGkiPoHYgQMDuGgDEwTtA8Kmia/bcdMk/nutx4gHhz+WKJIjzDoPyE//8t7BXqsT2996MkM3+k97NiVx/EvzZ1FfZ94So+nzHE84oPchPy0miDjWMhXbI4jv5BBIML/peo8yh6y+onH+9D9lStZo5DfaRAB7veRtDfXvppM45mZZO6bMVbeu3efPnDit28OI9fMuPmd5TXGMThEArImxiyQrTw+wKGRju3bsRf99NOHwWGY8Q78BZHBcB+0Dw7SvwZxi7TYGcYZRN41r75KJ0/+lgxnpzlTUDltFz++mfXNPATKfRjmySjrAQOf1nMQU9ahv501fRrxAWmnOPzKeK4/dnNzTifWQEAAwrzYTAvep0+brJPwSM/eej5t2uPw9cL585L1D0HlbLz9HRIYph+3Yos5/YPVa+o6g3Enxp9Ww3jefdedhLE+m6ByIswclON2G89yetyeOMBWs049RyfDhg4hECNhuI6kBdlpRzQOO4bhfGEOArLoN99+q/uQv//+n15jQt5vveUWGjJ4UEz99jP2wzjZL75B2wrSBRnntaYGAuZ8Nd+AwfwMB6qgMAF9DQ7qYV0rrAlTd+ORffHMS+zyyGVv9gNB5qFmmOi/769aTeOK9V+subIB1hXvr6rnQDeqg67jRo9kK/2EsoOuan2DD/GyJfdhZn0PKu9Rd6+8sjRNnzFLp82U2/nz56P5c2frMS/H6fQMU9ZOYQWp6+i3H3iouj6svGjBvJi1BQ5/2fKViqg9PNk6flBZ7Eeuhl2H4rTi6VfuNm3eSh/0HzTgKX3Yxwyjx6O99RoM9iXeeG217q/ZHgfzK1Z+QJeraRdWRnK41ieUVjR+uBldd105Pa+32qO9/vrrCdtDSGgTLVu30+OepYuS7yVYw3L6jbXa+ypV0WtmryscrGsLTv7kuyAgCAgCgoAgIAgIAoKAICAICAKCgCAgCKQOAokmGmPBNpIe/rZs2RLBn5j0hUDN2vUiN992Z+SueypEOnXpFlFaECJKM05EEWUiVavV1HZNW7SK3HrH3ZGJk6dGfjx6VP8pDZjaDn7VJkNMpuG/dr0GEbUYHVEa9iJqcVTbKy1Okeo162h/iswb46dh46b6u9oojfmOH2qRL1KpSlWdBsTvZbo90lOH1ahJswjihFELd5EVr6yK3HH3vdpOaWZMFozSHKnt4OblZSt0u4MjxPlEv/4RpVU36kdtckeq1ait3SvCX+TAgYPaDnl98623I08NGBTNNyw++PAj7Ra42BngDSzbtu+UzJrLqH3HzhF1xWFEaYLVaVML9Mncmh8erF5Lh6k0KUfTgrKZNXtuRGnfMp3q9+49emn3A58eHFHkpqg9cEP5t2rTPvoN+VSL2Nr9F18kb/dqwzFS/r5K2t/PP/8c9bd127bILbffFVEbCxGlHSL6HRgjfGCwbv2G6He8PD34Wf0d+VckxshL8xdEfjl2LGLmX5E2I+07dYkorSMRxA1z4sTJSJduj2i/anFZfzP/43AVudz8bPuuNtAjR44c0WEhjRs3bda/8Q3xsPFTjolsa4g3SLnBPeom8oA6jXrMRmn5iEycNIV/uj7VpnpEbeZEXlv7euTYsePaLdop/CPsyg88FC0Ht4DCtPswdSie+uFW76x5g5xBnRg9ZpzGoe+TT0XrCfpxmF9PnIhUebCatn/yqQFR/E6ePBl5fsRI/R1tRxHlY4JXJHVtV71W3Qj+IOc+37hRt234dTKQRyiTJs1b2jqBfIC90gwUtQ+bRtQnhIU/4GA1nAfYc7/Abrg9on1UfahGRGmE1XLo4MGDEUUU12FCDiEM0xw+fDhS/t6K2h6yUW3EaGu1KaxlFGSG1Y/p33x3a79K+7eWXUgD+i8uT4SNPgB5ataidbJ8cZiwr1zlQS2/FSFbR6u0Xuu+EnZqw9RMSkQdqtBh1qnfUPdBbLlz167IoGeGRNsXygpYs/ycPWdutM4pwil7i4RpN5x2hI1+cfjI0bpPhYzl/AftZ6IJ8vFi1pfb7iwfeXH6zAj3J0eP/hTp2auPxkhtRsfIMgSNsgCukFF2hvtVtVkdtfYr56MeLC9IH+K8s/x9EbX5qsdScKIOB0U6du6q7WCP8YBp0IegP0XdQnvkOoz+WpF4tb8JEyeZXvS7Okik7TBW++zzJFkAC6VlXvcLZvkzll7yI2h/gnYG/GfMmh1BW2SjDgpEx1tIj2mC9kFB0+S37ZhpMt/91gOMpVCeFSo/EFHa13XbR9lhTMTjZ0XMNYN2fQ87duW6DNkJWYTxCfrjzV98EenQKaneQY5YTdBxrLodQ+dXkfgjkMtsIFvQp0HWYmwmJu0jgLaKuos/cwxrl3LumyGfgvTNYeWaXRq4jiO9GFfx3A51eOqL06N5sc5H/PRhYcc7SGcQGRymDw7SvwZxa4cxvllxVgRC7dSKM8ZDVhNUTlv982+ub9a5GfdhGIugLqqDT5Hde/bq+T3mtJx29Jlexq+M5/pjNzfndELuYm1D3eCk+3z0xTweg9y9t+L9kV59Htdpxdhp6cvLIvdVul/XWaUxOllSg8rZePs7JCBMP54s4erDsOFJcxjMgewMcEAbxryETRg5EWYOymXpNp7lNLk9MXfBmJvnVljPwG/+47ExwuA6khZkpznW5fyFHcNwvlCWDzdtoccawAXjDqwl8Jxs5uw5HJV++hn7BcE3aFtBIlhOOK2pKQ3Guo6izCCz2WDuAdmy/5ukdUX+HvQZpu7GI/vCzkuc8sVlb8pnv/NQuzAVcVLjbZ2roY9B/UL7wpyK1/Y4jBcmTtb2qMOm4fI163tQeY+yRz8z76UFEaWNXq/bYN6PdCBN1rSa8ZvvYcra9G++B63rjz/RT6dVaV83g4m+d+7aXdujvbIJI4v9yFWWlUHWoThN/PQrF8a/MEnnC+MD02B9DmtrqE8oQ/TTplEHhfR3zMNME1ZGmmGY753VujTmStY1PsypEDfGE0hftx6PRtDGML9E3tksWJi0V+G27sdunZ5YK0cc2FMQIwgIAoKAICAICAKCgCAgCAgCgoAgIAgIAmkPAebbYp05EX9CNE57ZXxGpYgXZJX2Wb1ZZ2YOhE4sRGHB9bW1b5hW+h0EZNhj08xqrAvCbL9s+Qrtp0WrNvxJP5nki01bq8FiMeIBEdrLgJwGt9jEM4mo7G/J0pe1PTYFmewFOyz4YQESfpV2THbu+AR5BG7rN3o4GW52nhJBNAbZGhtZfgw2RJA+LJSDrORlsNAM99iAMxc02R8IkbDH4iQbJlMq7cT8Kfrk8MwFW4TbpFlLHQ42ZK0GZCzUtXYdYsnWvKmB+NetW2/1pn+bG3umA2ySwx/Izb//S+5jew7X3CxhO6cnwsKf00YTL7jbbUqnRFtjnIOUG+os8gCSaliDsrSrV/j+UI0kgrtdGVvjC9ruw9aheOoHsHKqd9b88O+p05KIL4MUad9qmEyMTU4mFJpueHPosb5Pmp81WZbrH9oINk38GLjjjZXdu2MPhcA/6irCNQ9ShE1jIojGjR5ummwDBjiBIIl0mgQFpJ/7FLsNk9Fjx2s/Y8aNh1NP49R+Ue8aN22uw5o8dVqycFC/qv178ERdIRxjz2Ei/diwtBoQprhc1dXTUWsQv/EddcmPwUELuMchGasJ22447QjXjugatJ+xpsvrN2+uI36lAT2Zc5AaWN4obccx9mGIxhwA4sOfk5xnd+YTY4i7/yW82x3kMeuwlWiMPhTxjRv/ghmkfoecxXgFYZsHgHBYCn7Qxx88dCiZP+sHE0sn+RGmP0E8TuM9jCvt8hWkDwqTpqBtx4oV/0ba8WdXD0DU5PI2x0XsFwQ4jDswpsHhAC8TduyKcHlsgcND1n4ZdYPzYRLP4S/IOFZp1NPkoQqVqtjKMcgdxGMnHxGXmLSFQBiicdC+OYxcc0KJ67gTaYbnKOrmmJggvPowOA473gkig8P0wUH61yBuYwCy/IjirA6O2BknnMPIabvw8c1pbmb2YSDbWI26cULLoAaNmlitHH+zbLST8fDE9cduTsfpxKFm6yHoHTt2RuUuyLcof9Pw2BSkedOEkbOJ6u+C9uNmuvkdh8uBKQ6eYHxmGswPQNTDWosZVxg5ATytfR3iwnceE1rnoFyWSJ/deNZMq593zKERFg6JOZloHQk4rwmDiVMauE2bxEu4jWcMw/nCYT+7cuDxAOae5vw7yNjPC98wbQX5Zjyc1tSYFIk5VUqYMHU3rOyLZ17ilHcue7u1M7d5qFN4U6a+qNvRYKWcwjRMkMYhRrQzEEFN07ptknIC60FGLl9rfYdfhIM/L3mPNeSNGzeZ0en3AYOe0f4h0/2YMGVtF26Yug7FHcgr1i6sBnMBzE2QT7P9hpE7fuRqmHUoa5r5t5dcAIEY+a5VtwF70U+sceE7Dj/gCaK6aZi4bipCiUdGmmHzO5S5IG4cCDcNDp1DVkJJA9IBBR+QlZhDop6bBso4EIbdYS/Tndt7/4FP6zD8ro25hSV2goAgIAgIAoKAICAICAKCgCAgCAgCgoAgkHgEhGiceEwlxBREwG1BFhpnsZgFYoGdAYnObrHOzi1/40U2LKaZBqRgnOIHaeb48SQNqWzPm2jQ2uNlWLsUNBrYGSyoMunuE5U/NkxAhoZVO/Ifu+Mn0o+8W0lvbG99JoJobF2YtMZh/kYeoAUBaYRGDS8DUiPcvv3Ou7ZOQTSHvbkAyxup0KJlxYw3o6HVkQ2INwgDZAUnA+1P2IQ0DW9qQLtDGMMEchCZTcPh2m2WmO7Md6Qff16bFHab0inR1sKUW+/H+uo8QHO1dSPYzGvYd9YyijblZYK2+7B1yC0dXvUjTL1zIxpD+yfqkBN5GWRT2GMTyNygNTcat23f7palZHas4WXs+AkxdtAKi3hAkjXbcNg0JoJo7NQeH+mZpHHdSijlAw/Qsm812CgEluaBB6sb8zdvmFnb7+7de3Q46KOs/RP7R7oQFzSKmsYpTNMNb5hCmy0b1lqDTUI/WkLdNnjDthtOOzQxo2ytJmg/Y/Xv9dus89iwtTO8OQhNeaZJbaIxjyFAcjLbkpkmbHyijliJxiA8YEPRSgRlv6zV2NxQB0EJYfnd8DaxdJIfYfoTTqPdE9rAkEYrmSpIHxQmTUHbjl3a8Q1px59dfw9NlLCDNjYnA9Ij3OA2EC8TduyKcN3GFrBnQrR5kAHfg4xjcYACeRk+YhS8JjM4RAF7u9sjkjmWD6cdgTBE46B9cxi55gSMVx1nbXQgzpjGqw+D27DjnSAyOEwfHKR/DeLWxMf6HhbnMHLaGjf/dpqbmX2Y3Xhg+5dfaRkEDcJ+DWQW/uxkPMLg+mMdE8LOKZ2ww1oDhw0SkdWsWr1G21tJRGHkbKL6O2sa+bdTP8721idrKP3wo49jrJjACa22pkmknEC4TnNQLkun8ayZJj/vXoQ3hOFWR2DvNK9JJCZObTqeMYxXvjBfwHoe2oB50CrI2M8L3zBtBZgzHk5ramivSDe0jmLNMjWNU90NK/vimZc45dut7N3moU7h4RAp8Ea5mAYHInGAGGt3sDfXL1C/cMsN+m5rX8DlGw/R2E7eI21z5r2k02I90GSm2++7U1nb+Q9T10HuhRwBdnwzAYfNBwFw86Bpwsgdv3I16DqUmS7z3UsuoO/ldT20GzY4BAkscCgI+wC4mcU0fAuB2V/HIyPNsPmdyfOmpnTYQfkK1uz37N3LTiO8xo6DcKbhsTvIyGEM7+2g7TitZ4UJV/wIAoKAICAICAKCgCAgCAgCgoAgIAgIAoJA4hAQonHisJSQUgEBtwVZJgU7EY2Z4GVdBDOTDS1L0Hj87HPP61P52ADEQh/+rGQcEB/x3dSQjAVkaIvBhoWdhmIzLrzXrd9Ih4Fru50MSGeIxyR1PTdsuP4GUrOXwRV8nAfkz49JBNHYbtHcLW6+ThVpBfkNmppN4qLpF4v5GvtlyzV5GhuC5h8TJ4GTaVg7jXldMTQVYZEXpDyTnAYtj4gDmqnNsM13Dg8Ys3Hb1GA3/ETciAd1s4u6ng51h8vKek1ekHA5fA4rzKZ0SrS1MOWGTT9ehEeasHHitx4zDvxEG0a9BAEFG4gg0oG4CpygpcaPCdLuw9YhTkdK1w+Oh9uLVaMxNji4DuGqUTsDTPl6TnOD1muj0S4s/oYrGUFkxLXn5qYcZC3SY27gxZNGtHfOn532dbc8eLVH1sCCa9JNs2rNqzpO1COreePNt7Td0GHPW61sf/OGmXWTce3rSQctcEWwk8HGEfLuRHSyhmmGM+iZIdovNIyywRWmOPiCMNFvQqZZD0uwWzzdNnjDthsnPMx4g/Qzpj8/7271hf1z+UNbvmlSm2jMWjHdrm23IxqD7I8yhgZAsy8031nLOeozm3oNk/psuPNj/GAZpj8x40b9xDWzIBKBIM9EE2hvN02QPihMmoK2HTNt5jvLMrv+HmNa2I8cnfxGBw6Dr9y1kuDZ3nyGHbsiDLexBexZw6OpoS3oOBYyFPkdPnK0bT1F3UQfg3opJu0jwGQFlCnai5sJ0zeHlWtO6fCq40758erD4hnvBJHBYfvgIP1rELeJxjmMnHZKg1N98+rDMM5lme0UtvU7u7eT8XDrVn+c0slx8DzLJC6xHWubxBjPNGHkbKL6O06H336c3Vufr6xarcvBesCIifkmATleORFkDupWltY8+PntRXhDGF51xG5eEy8m1rQ7yc54xjBe+UIaatROuoUGmt/ZBBn7eeEbpq0gHU54cBrx5HLBegZuisA6h3XN0nQf5j1I3Q0r+8LOS9zy41b2bvNQpzCxJoF1Zshi9OMwWEu4/a57IliTBU4gwJrzbxzUhnvMjazGrXzjkfeIB+ROhNGhU1drtK6/g5S1XUBh6zor6rDeBNG5a3edD3NdOazc8StXg6xD2WHA37zkAtz17JV0yBPrA2xwqAdrzDB91O2JaNvHjiUpNmHiOgjIZjuPR0ZyvOaza/ceOl7zhj30h6hT02fMMp1G+LuVUPzttwe0e79zfzNQrDvWqlNf+/ejDML0K++CgCAgCAgCgoAgIAgIAoKAICAICAKCgCCQeggkmmicAcRASgdm586dOpVXX311OkitJJERUAtO9N3hwzRuzCi68Ybr+bN+Ku1n1Kxla8qWNSu9sXZNjB1+jBk3geYvWEh1a9einj26x9gf+u47UteAk1ooI6U1lQoXKkQlShSjHDlyaj9w/PEH71LGjBmj/pRWC2rboRNddeWVNG3KRP2dv915x+30/HPPRt3avajFalIEPVKLhDR7xosqvuJ2zkgtHJLakKWaNapRn16PajcdOnelTZs2U9fOnahRw/q2/vjjxk2bqGPnbnThhRfS22+8xp9dn8BBacCgfPny0pKF85O5VZp/SZHN6JqyZWnyxPEx9m5lFOPQ5sf69RtorCoHtXGobbNly0YN69ejhxs3pHPPPVd/M3GzCSLmU+VKFWlg/37Rb+oKOpo0eSrVq1uHenTvqr8rkjcp7VZU4b576ZlBA6Jup704g6ZNnxH97fYCjIAVjNK4QUr7E7Vo3pTatWlt603JSZowcTK9qnA8cfIk5cqVi0qVLEElihenhYsX08mTv9H4saPphuuvi/r3E27U8b8vikij3xbOn0sFCxSwWlPYcgzT1uIpN6XdhEaPGU/rN2wg1T1SpkyZqHLFCtShfVu69NJLk+XL7sPipS/TggWLCG09a9YsCu+SVFzhjXa0Q/UHLVs0o7atW9l5jfnGbdxPuw9bh1KrfnDGOJ1Vq9xP/Z7sy5+JZUeWLFnorddfjX63vtRt0IgOHDhITw/sTxUr3Ket1dWZVKNWXf1ulZ1W/3a/u3TvQZ9++hmNHjmcbrn5Ju2Ev5nyMp40njp1ipQWKB32K8uX6nZopsUtD17tURGJSR2WoDatW1KrFs2jwSpNmlSnfiNdj+fMnE4FCya1S6XVhhS5V9fF554dTHffdWfUj9OLU/vl8nTrh44ePUpKu7sOevXK5ZQzZw797hSmmYYxY8fT/IWLqHKlCkq+PhW1giybPGUqrXxlNSE/MNeVK0edO3WgMqVLRd3hhfsw9Gno20zD6Te/Ob2bstdP2hGOn37GKT637271hf2pQzykiJxabq1a8TJ/JqWtSJc9+iv0W1bj1q96yXlrWPjNbalj+3bUtEljOydUu15DOnToEA0fNpTuuP027Ybbm60Hy8e+j/Wmag89SKbsnzl9qpa9FqfJfnphaYaZzLPlg3UcALkyZdqLtHXbdt2XlCxRQvUFxUgdDiN1SwJde01ZmvRC7LjGTx8UT5qCtB1L9qI/3eoBt7duXTvrMVXUk/Gy9vU3qf/AQXqsgDGDkzHzacpiq3u7sSvcuNVl2FevWYd+OHKEJk4YR+WuvQafon2R33Es51d7dvkPYy/IfjFpG4Hvv/+eatSupxP55tpX9RjOKcVh+uYwcs0pfnz3quO//fYb3Vepig5i8YKXKH/+fPrdqw/jdAYdk5lt1o8MDtsHIxNB+tcgbjVAlv/C4GxiYQku2U9r35HMgfrgVN+8+jDMRWrXbUAZMmSgdR++Zxd0sm9uMh6O3eqPUzo5EnVAjBSBiebMmk7FixXjz/r54UcfqTWBx6lokcI0b86sqF1YOZuI/i5MPx5NuPGiDnSqsXBNNWb9m9a8skLLFoxflQZ9te6QmTA+xpwThtuf4d3xlcc/7CDoHNStLDnMIE9OO8b6yJOd8aojdvMaDtcuPOs3KyZWe/x2atNc18KMYbzyhXibtmhFu3Z9TY/36UXVqz2ET9r4GfvBIePghC+nPylU5/+tYxInPMwQsI64eMnLhDUuddOItsKaFNageE5uug/6HrTuhpV9YeclbvlxK3suE7t5qFuY6hCCnis82fcxerDqA/TxuvWkbsegIc8MonvvKa/XFBVhXbezHDku0et9c+bO02u41vmuW/nGI++RfnWIggY/+xxdf105mjBujFuWonZByzrq0XhhXI1Ptq/Wur516zZSiiaoWLGiNHdW0vrrsWPH6IGHaqj1+By0ctmS6Do8tzfbgC0fTbkTRK5yffRah7JEF/OT0+kkF+B4ydJlNHzkKHpArcE9pdbgMD5UGnypVs3q9GiPR1TbXkojRo2hwU8PpPvuvUePsbr37KXbNtbd2DDuYWQkh2E+H27Wgv768y9atGBe9DPvpSxbsoguvzxP9Duvr1vnhBjjIa0YN2D84Nf8/fff1L3Ho/T5xk10T/m7ddvCWEmMICAICAKCgCAgCAgCgoAgIAgIAoKAICAIpD0Etm7dqhNVUnGuEmJANE4Pf8ywTj1Ot8SUCATcND/s2LFTn3p31Gg8dry2H265SlkR5KIa1KCFYf/+b6JJxfVtrFFCbU5Gv/MLa3DEiX2Y0f/GAW1QfgxfBf3pZ587OmftgLhGjQ1f+zpx0hT+5PjkK3ChDQFXtPkxp0OjsZkuaByGhhbWNgttFmrRMeoEV4miXKB5Bpqsnf6gVcU03313WGuxUwS7qBaIfv0H6rA++PBD02lEbdro77gq1Cl8/q7I6VG/btpT4EiRGyMdO3fVYUPLCLRdmBopoMUVebPWCa9wowkwXrjuhtF+lRJtLWy5cZagYQTXGbI2marVakZ++OEIWzs++QpEaCyCtlf0UWy4/M32xXZOT7/tPkwdSs36wflz0mi8V2n8RB1COzTbH/vjJ5erWWe9NBqxX6fnW2+/o+Pma4uhIR5Xj0ITnWniSWNKajQeMOgZnX51WMFMrn5nbYG46lZtHkVQ91jboJ2m42QB/PvBSTMPXz+Lq1ydDK68RNkCU7NfcArTDAcas+D3hYmTzc/Rd5TVwkWLI7XrNYjGgesvTeOmSSpMu0HYftJupsGrnzHd+nn3U+eXKi38wM56BXlqazSGhiSkw20MYafRmOsNNBpz/+f0NG914CtxrfXACVc/WLLcCTIOgGZGaC6GFnZox1ekjGgSli1foTFxazdefVCYNEUToF78tB3TvfmO8sSfXX/P2hnd+jlud2755/jCjl3h321sAftqNWrrfGzctBk/tQk6jjXHzU71E9/Nq385LnmmPQScNADbpdRrrGzXN4eVa3bx45tXHcc8E20VYyvcXMHGqw+LZ7wTRAazLAg6/+F84Bmkfw3i1owjCM7muD9eOW2mwam+efVhBw8d0nVAkcnM4Fzf3WQ8PLrVH6d0coQYjyJ8O43GmB/DrtHDsRqN45WzYfu7ePtxzjM/WZMqtGzDcH6xJmSasHIizBzUrSzNNPl996NZ06uOnE7ZGc8YxitfwBBjWtTx9Rs+sYXUa+znhW/YtuIl48zEYp6OuTPPr5Afv7c1meGY72HqbljZF3ZeYqbX+u5W9ozTy8tWWL25/mZt/GgPMLjBB3KcNc7y7UuvrX1D27do3VbXLch8q3ErX5Qf/uzG9AjHS0as/FejMdYc/ZgwZW0Xbti6jrAU8VrnGevvMDwvw/q6acLKYi/MzDj8rkOZfqzvXnIB7rEPgXLG3AeGbxB459339O99+/Zre76BaPyEifo3ytc08chIMxx+x1o5bn8zTfcevfS6kXVPhOPGuppplBIXre3bXGcy7Z3eWUt7oybNIqZGZSf38l0QEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAROHwLMt00UN5gSFVBKh8MZP33QS8xhEHBbkN0Rkmj83LDhesEOC8VW40U0BpkKi4NMJsN10uXvreh7UYwJpyAfORlc6Y04zGvHJk2Zqr9ZFwDtwsDiHhN27TYQ7fysW79Bhw8ip51xW6h1KyO7sNy+Ib28IcwLrnDPmwPmN7dwTDuQaIDn9u1favLkfZXujyjNEcmIlLw4jEXOIMZtUwPh4MpuxN+ydbsYgh/HcSYTjeMpN8YHz+PHj2v8gCOImm6Gr1wvf1+lyJEjyUnJYYjGftt9mDqUmvWDcXMiGmPTEteBAmfzAAb7wxNEAdjj7+eff45aeW00Rh06vCBubPyi3EC+BkEccUx9cXqMj3jSCNnIaefDImbgbnnwaud2G/IcNojAkMmQ37j6skLlByJKm3FEaUBmJ76eTnIYBD3k64GHqsccYjADheyEG76ak+2cwmR7PHElLPya13ya9vyOAxh8FSr6MdOwLLDb4A3TbhC2n7SbaeB3p36G7f0+3eoLhzFy9BiNnboRgD/pZ6s27fX35StWxnznH279Ktdhp81oDsN88qEoyD8nY0c0RnsDOR1x8qa6k3/zO+o3/CxYuNj87PjuB0uuQ0HGAUzox0au1fCGth+irVMfFCZN1nTgt1vbsXOPb271AGNU2OOQgJNBXwo3aLNeJuzYFeG61WXY2xGNg45juU8bPnI0ghSTzhFIaaJxWLnmBKtXHVc3qei2hsNvpvHqw+IZ7wSRwWH7YDMv/B6kfw3iFuGHxTlRchppcBoLevVhZwLROFFyNmh/l6h+HOUH8/XXu3V7ZEIeX0G/ceOmJAf//h9GToSdg3rJgpiE+fjBbRrzAifjVJfZvd28JgwmHJ7d06lNxzOG8cqXOY9FX+NmnMZ+XviGbStOeLilEXaYT4L8ap+9/g0AAEAASURBVBJgvfxY7cPW3bCyL+y8xJpu87db2XM/YDcPNcOwvnP+MEeCwZy4SfOWUWdMHFXalPXBdqyjgEBrZ9zK121Mj7C8ZEQQonHYsrbLU9i6jrBwGBL5nj13ng4axFb8xsFA04SVO16YWePwsw5l+rG+e8kFds8EayhPwDoB1oggl9iA9Mt1iMdyqIemiUdGmuHwO9ap8WcarFuhPHDojc2JEyej8zaTUPzLsWN6DS/oPAzkZMSBvkrd/MDRyFMQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEATSKALMt00Ur1eIxmm0oM+UZLktyIYlGkNDDxa0Pvn0s2QwgbgDO/xZT+/D8a8nTkTuuqeCJmuBqAZ3bsQdawQTJycRhps0+2+B2nSzdds2HSaIPdDGy+bDjz7W37F4DS0rXkZdy67dY8Hdj9m9e080fHPRkP1Cyw/yisVOq3ErI6tbP7+HDR+p4zK1skCTJuLv3O0RP0HEuGEyEcL4RGnZRDhWrUXwgAXeuxVpHJs0mzZ/EROG2w+3TQ34g0ZtxAmyuJ3BwirsTe2wcOcVrl1YSD/CMjUDmu7cFtzdyjFsW4un3Mx04x3Ee+StfcfOVquY32+/8652Z1dX4fDJpwZoezdNjzEBqh9+232YOpSa9YPzxZtCg54ezJ+iT3WNpcYHGx92ZtbsudqeN9zYDW/EoYzsZCe7c3tOmDhJh42yfmrAQP3OWm5Mf2HTiDBwyABp/OzzjWaQ+p01D9vlwas92m3II1BsvGADiTXTJIs0wAen9ov6iQMvSDcITXam2yM9tf1gtRFqGqcw2c2WLVu1P+TBjpzN7vgJjbFIB9ybmt+hKRHf+ZAOu8czTLuBP6+0w42TsetnnNw6ffeq89D0w/XNqomINXmZ/RzHgzrP2gbtxilecp7DMZ/qSl2NP8LFJqHVQMs+Ez5xw4FpoI0ZZTd9xizzs+v72PETtB8cxjLrgZMnLyzhL2h/AmI010W7cQ3IBrD3QzRG/HZ9UNA0IRwn49R2nNy71QMe60CT89GjPyULAnWTNZ76OfAQduyKiN3GFrDnemcdtwQZx0IrIcoSBzlADBKTvhFIaaIx0Akj15xQ9arjXdTcBfWTb2zgcPz0YWHHO0FkcNg+mPNhfQbpX4O49Ysza57kdCVSTjuNBb36sDBEYzcZj7y51R+ndDImPMYA2dtqWMOvVaNxIuWs3/4u0f045xWHvTBO/fHo0QhIXfizm7sElRNh56BuZclpDvLc/uVXWuZgDGA3/kFYXnXEaV4TFBO3dDu16XjGMF75mjFrtsames06joczzTTbjf288A3bVpzwMNPj9N6gUROdL7v5rZMf83vYuhtW9sUzLzHTbb67lb3bPNQMw+4dh3TRh2OdGOuE6F9Ng0NEKDto64c7HF6wM27lG4+8R1xBiMZhy9ouT2HrOsJiBR+QKZiX4AYa601WHGcYuRNUrvpdh+I0WZ9ecoHd86FsaFHGngDmO6bB4WTUI5DYse+AubTVxCMjrWHh9+Bnn9NEYfPWPV7zQ3qwnoVDOiDZ48A80sfr5VA8gJuasOYRZA7Gc0uEh70IMYKAICAICAKCgCAgCAgCgoAgIAgIAoKAIJD2ERCicdovI0mhgYDbgmxY8iNrBrBqRsViJxb7sHCGP7sNJyQNV93Dnp/YkPNrTp48GWENtlbi6Y8//hhhbcZjxsVeGYfwO3TqquPFQis0UZhmy9ZtEZDk2LBGBWyiWQlOOGXw4vSZekGX3SNdWNxFvl5asDC68YLFxlFjxurvsLMjb7qVEYdvfWKxEhvuVs0FiK9O/YY6vjWvvhb1ZuIGkqS1bHAVMa6aszPYQNcL1w0bR0m/VkIL+8PV6shn7XoNbK8uxIasNW63TQ2Ey9qorRo+kScmvSJOK9GYr3bF1YZ+DRaiEZYTIcxtwd2tHMO2taDlhvIHCRz112pAkETeoDHGzYCYB3cg5ZvtBGFjwZy1cwYhGiM+bu/8dGr3QetQ2PrhVe/cMHIjGkPzN+QGNqethMPNX3wRqVCpisbXaue10eiWHrYDEQMbeD179dGbGE1btGKrmGfYNCIQaGtB/cC1j+YV5thI5roB+6Dt3GlDnrXFBzmQEpNZ4wdf62nVOAMnc+fN1/lCO7YSghctWart7q14fwT9jGlYJqBcoUXaNNC0wwdzsAFlmvkLFkWgmR/tyjQgLQI/1sTDdqwxrnPX7vwp5hm03cAzp92uX4J90H4GpGrkF20c/YaXMes85IlJ5sA7tMkCC2jjs5Jt+cpayGyTCIp+jMcI8GtHNPaS83bpRnpApEGY/Qc+HaPRHxrEmfgMe2vb3rZ9u5YJ6Edx6MlqQNTBn2lADmIiK8oe2qhMA4LBzl27op9MLK1tjx0F7U+QZ8gy5MmqBfmjj9dFb08wicZB+6CgaUJegrYdzr/16VUPejzaW+e9W49HY8Z7wIU1++OKZye8zfjMfAYdu7qNLRCHE9E46DiWSSToP6xkepTrzp3/1Tczb/Ke9hBIDaJxGLnmhBTX8Ud7P5asj0V7hwyC/LQeFPXqwxBf2PFOUBkctA8O0r8GceuEMb4zzr36PJ6sz4nB2XJlvSm/gs4hrelxGnt79WFhiMZeMt6t/jilk/MThmgMv0HlbLz9XZh+nPPo9mSSI8/poF3VzgSVE2HnoG5liXThYBTWJrB+48dgTAa5gz/M3eyMVx1xmtcExcQubv7WsHHS4f9169bzp+gz7BiG8wXi7ZdffRUNDy/QWo2brYDLa2tfj9oFHfv5wTdoW0FiWMbZjf1hD2IfDgKDlGka9Jk83v3+hx+iVkHqTdi6G1b2xTMviWbQ8sJlbx2nwpnXPNQSVMxPXgvlW/Gs9RVzZNQpPjyONQU741a+8ch7xBWEaBy2rO3yhG9h6jqH1aJVG732s2jxEo2h3YFkuA0jd7zkKqeBn37Xodi99elHLsDPe+9/oPOKQ+hot9a1Xsgmsz7hQJadCSsj7cJi/M21eawP8N4Iyxesw2J9lef4kOGsxduc19vFYX7jtUjcZIayFSMICAKCgCAgCAgCgoAgIAgIAoKAICAICALpA4FEE40zgLRI6cDs3LlTp/Lqq69OB6mVJDICiqxE3x0+TOPGjKIbb7ieP+unIg1Qs5atKVvWrPTG2jUxdvgxZtwEmr9gIdWtXYt69ugetVdXedPoseMoc+bMdMftt1HpUqVIXdFG69dvoEKFCtH+/fvp1B9/0McfvEsZM2aM+uOXrVu3kdIwpX9my5aN1ryyXIfF9l5PRdQhRXIjtcBOZUqXouuvu45+/uUXUsQXOnbsGJUoXpwmT5pAF5x/fkxQ+1S6OnbuRkoLEF1yySV0y8030WW5c9P2r76izz/fSFkVDiuWLYn6GzFyNC1e+rIO49pryhLqPsJXGhDohyNHqEP7ttSsycPROAY9M4QUuVf/LligAF15ZRntFlh07tiBnnt+OF1TtixNnjg+6gcvbmUU49D48eKMmaQWGOl8lcfbb7uVSisc/jj1B6nrzUmReQnxz5wxLZoXeAU+irhFihxIJUoUp5tuuEHjoAjipIhRdOEFF9DC+XMpU6ZMRkxJr4/1fZKUpk+6QLm5KHt2WrZ0EWXIkCGZO0W4oe49e9Gnn35G5513Ht17T3kqUqQwnTxxktRmFSkyMPV9vA9Ve7Bq1K9acKVVq9dQi+ZNqV2b1tHv/IK6pTQnkdrEonLXXkM333QjKW3V9LGqb5HIP5Q1S1ZCHsaPHU03XH8deyO1yExqk4/y5s1Lj3Troutq1NLhBZgCW9Tbu+68Q9elCy+8kBrUr6t9oHxRzkHLMWxbQ6RByu3zjZtIaX5TuER0e7/qqisJbUxt6JDS0KPLdsa0KVS0aBEHBIjU5hs1aNyEjhz5Udeju+++kxTJjzZs+IS+PXCQSpUsQVu3baeWLZpR29atHMOxWvht90HrUNj64VXvrOk3f097cQapjRyqWuV+6vdkX9NKv0+aMo1mzpqt69Gtt9xMxZVMglxEWSrCIFV76EHq+1jvGH9qY5Nq1EqqZ06yM8aDw4+u3XuQ2gDTtl06daTGjRrYugyTRgSEtgrsYC66KLtqV7fTl19+RUpLEXXq2J7QPxw9ejSZ/PfCW5EVSJFsqU3rltSqRXMdPv47fvxXUpqOtNy66cYbKH/+fFEZdd6551HOnDnoqquu0n1B1JPDC+p0tZq16dxzz9Xyu2H9elGXqHdduvWgjZs2qb4gi5Krt1Geyy6jLVu3ktqYpnPOOUeXWdUHqkT94IVlAtKhNo5U+yhJ115bVvUVx2nd+vU6/VdcfjlNmfwCXZozp/arSLhUt0EjbVe8WDG6/vpylD9fPtr8xRZdR9AGUT9QT9igbXfq0k3/LFOmNN2pcFcacKJ9c9B2g4A47XbyDPZB+5mnlWxc/W8fiHaB9uFmuM5jDPKn6s9z5MhBKONzz81MG1Q/qzQR6T5u+LChMbIdYR46dEhh2Fj3CxiLQF7/9NNPqry2Ufm779Lf0WfZjX285LxTmhWRnFBP0RcVKVxYldt19Ntvv0X7eZQv+iKkF2Mj03Cc+HbbrbcQyjCTqlNf796j++377r2HBjz1pOmF1OEn3d9A/hYsWEDLdPTPGzdu1v08+sIxo0ZoP4wlfrjJjyD9CcJS177q9F188cUa11y5LqVNmzYT6mO5a6/V7QXjo0kvJI1rwvRBQdIUpu0gH3aGy8Spvz98+Htq17GT7gsvvzyPKrdblew5h5T2Mfrmm2+1/MO4A23Yjwk7dvUaIyqtgnpMOnHCOD1GMtMSZBz7/fffU/tOXQnPXLly0Z133K7kUl5C3fpMjd32qzy/NHeWHheYcch72kMAZVijdlL/9ubaV3Wf5pTKsH0zwuM2hHe/cg1urYbrOPpZzGswP8uTB/3vNsLYEaZj+3bUtEnjGK9efRg7DjveCSKDg/bBQfrXIG45z3ZPxhnjlT/++JMwPr3sstyeOCOsIHLaLm7+5lTfvPowRd6h2nUb6Lnnug/f4+Bcn1w/nWS8W/1xSidHqA6e6fnSnFnTk/UBH370ET3a+3Eqqua/8+bMYi/6GUTOJqq/C9qPxyTY4QfWEh6sXpNOnvxNu5jx4hS9HmTnnMsBdl5yIuwc1K0sES/kIbCHWa7WMPLkyaPf3f7r0KmLHv9jHaDK/ZX1OgnGfZBPMF51xGleA79BMIF7JzPk2edo5arVeuzctXMnKlasaNRp2DEM5wtjWqyv3aTGmsWLFqV9+79RY/NP9Dz21ltuoZHDn4uuBYUZ+3nhG6StcKZZxtmN/eEG8yikFWOcW1U5lihRQo3nvqH3PvhAj/UqV6pIA/v34+AC1ZuwdTce2RfPvCSaSeOFy95uTQ64uc1DjWCSvWKNGOuDmK9hjQrrzuY6rToIrNcoYY++9NVVK/UY2xqQW/lymwoj7xGPOjxBivCs1pXL0YRxY6xRx/wOW9YxgRg/wtR19r54yVJSyj/0Gq0ittKShfMpnxq72xnGCHZeshhuvOQq3FiN33Uoqz/+7SUX4A74V6ryoJY/WFcbO3qkloEcxs8//0Lqxjtd32D/3LOD6e677mTr6DOsjIwGYLyow9bUtkMnPU7FeJUN4n/7nfeULP1Zr2Fj/QAG6/Vvv/0uHf7+MF191dVUuVIFvWbL/tyeL81fSEoruHaC+emll15KKPu///o7mTes7YsRBAQBQUAQEAQEAUFAEBAEBAFBQBAQBASBtIPAVsU5gSmpuCSJMEI0TgSKEoYjAm4LsmHJjyDZKM01tESRcPEOg03L+nXr0sONG5K6Eoz27NnrSnZp3KQZ7dm7z5Zw55gZw2K/2uwY/OxQ2rb9S71gDStsToMU3bZNK0fiMojCz48YRUoTgiZPwh8WpEFg7dWzhyJKF8SnqMHCN/KqtFhGv4G42aJZU6pfr44mn7HFsePHqd9TAzSZFt8QLkjYj/V5lPJecQVhU9KO0OVWRhy23RN5mPridNqrcORygDsQrh7p1pWw8Gg1IGcpjSSKHLQ5xg+IMs2bNaF7yt+t0231B8IWyMYwTRo30oRCqxv+jQ2ERYuX0vSZMzWRjr+jfEDSA1EABG82bpsa7EZp1CClDSW6oQnCM4hZ3bp0oimKHIxFdivR+KginXVVxMG9+/aRSYTiMO2eWLjGxiCwZQNssJEM47bg7laOYdsapyFIue1WxLVxE17QZYzFbTbYfOzZvRuVK3ctf3J8gjgKkva3Bw5oNyB/oI3gwAEIVqgLQYnGCMhvuw9ah8LUDz/1zgkgL6Ix/IFoMHzEaE3S4nBy5LiEQP7FhrXVeG00Wt07/VbXeeqDGDgIsPzlxTFtzeonaBrhH7Jm3ISJ+hAKh5cvX15q06qV3iTB4RXUdyvZ0Qtvtw35hYuW6PbP8dk9ceACG0l2ByVM90rzrCZOQj6/+9brMX0F8qa0EpLS3K03sdgf2k7fx/rYkplZJvTq+YgmLgwfOYqwcQXDm51PqMMV6DdMg75IXXmpNpneoRMnT0atcAimnerDalSvFv3GLyAbKW1sUdmNdrl65TICCRQmaLvhtNv1SxxnkH4GBMxBzwxWBOhfqFaN6tS7V08OxvbJdR6yHIcWlGYi+mLLlqhbyN6BA/ppUm/0o/GCDXb0ZyC8wFx80UX0kCJnd2jXJlpH7cgGXnLeiCLZK0j8OGwCMj0Myvg6JVMfV8Tw5SteoTlz59kSjeEWB3CGqwNMICOzgX+QVlq1bE5XlinDn6PPr3fvpiHPDqMd6rAfyhcGG/GQIZ0VsT+7OvgDw1ji3dr28M00QfoTHMxSGpyjhxcQTuFChdQYoB2VVYevsNFr7V/D9EFB0hSm7Zj553c/9QBtE2RdpV0tZswIefNY71567Mvh+XmGGbu6jS0QpxvRGPZBxrHAZOz4F/ShD3UQFt61AeGovjpwVadWTU1m4O/yTJsIgLSSGkRj5D6MXLOixnV86JBn9KFGEHx5XoNxU+9He+qDDlZ/fvow9hNmvAO/fmUw3Abtg4P0r0HcIi12Bjj/rsgoixe+RKPHjNMHMkHqgnHDmcMKIqfZj/XpNBb06sPCEI29ZLxb/XFKJ+cnLNEY/oPI2UT0d2H6cc6n2xPj3SVLl2lSG8htbiaInAgzB3UrS6Rr5uw56gDoHD1efGbQAKpw371uydV2mAP3eewJRbDdH3WLtR+sscB41RG3eQ38B8EE7u0MxqQYo6GM7eblYcYwnK+5s2bQekUsVrc8RedEWMtp2KCemvO1TLZeFHTs54Uv8hukrcA99yV2Y3/YY11k4eIlap1qiSYW4xsMxtV169RSh11bxRBgg9abMHU3XtkXz7wkKff//c9lb0c0hiuveeh/IcW+YTxZ8f6qWkmEdc4Al1hDrVK1mu5DcWB35vSpsQH8+8utfOOR9wg+CNEY7sOUNfw5maB1ncNB21c37miCNg6xTp86ma1sn0HkjpdctYsgyDqUnX8/cgH+mJCMtvumIq5DwYVp1E14ej8C8+zXX13teOAujIw04zHf1W0R9LFS7oAyKKkUM6SUUZqYdTx+wl//0ft+nIkbQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQSCUEhGgsGo1Tqaql/WhAJsLmC0ijIJoFMe06dNaEIis5NEgYcAtNOtgEBtmmsCIJYzHRj8FGw7590Lx8SmutBXHVzYC0CoLI5UrD1hWKNGynzZf9Y8Pg0KHvlIajolESENulxBMak3d/vVsHXUBpMoaWUS+DBf/de/bQP//3DxUuXNhx8dUrHC97YHHg2wOK9Hy5wu1y3+VjF+4ptTm+WxHYM2fOpMvMb1mr6+S0BlNouvZrQCxHeWfNlpWKKS0+WMROCyZIuYE8gDqOzRtogc2ttPe41Vtr/uAfJG20sVKlSsZsvFnd+v0dpt37rUNh64fftId1B0IiNEHmy3uFLw1aYeNhf9AaDq3Wdht57Mb6DJNGaBreu3evzpPdoQZrHGF/Q8uvulKUKipSALTI//jjUfrfv8QYpBsbfdgIhnl6YH+qWOE+z6iwiQW/115zja1MAlkIbqAht2iRor5kqhnpwYOHCH0GNplMjU2mG/Mdtw4cUn4uU/0LDqWAQOxksCGGzfyMGTPotEH7sp3x227s/Np989vPQHZWUxpWcXClnY2GeruwzW/YMN2r5FaRwoW0xn3Tzu4dJGO4h3bg4sWLBZJx8ch5EPlQbiWVNrQsWezLwC69+AYtheh/QT4vVLCgr/4FmpPhB2MVaEPyItQ7xW1+D9KfoE6r651Vf1jEV7kgnjB9UJA0IY4gbQfu7YyfeoAx4x4l76BdGgR464a2Xbhu38KOXd3C9LILMo4FyROEeGhpL6S0aUNblhhBwA2BMHKNw2Py0Avjx6iDG+U0uWznrq8pl6p3QeeXHKbTM8x4B2EFlcFB+mC//SvSEcQt3LsZhLVjx87AOAeV025pSA07PzI+NdJhjSOonI23vwvTj1vTbP6ePHUazZg525bgaroz3/3KiZSYg659/U1Fyh1ke9OFmUbzHWV04OBBpQ35B73eZT2QbroN++4XE6fwMT7ZrG5eyV8gv76Jxc5dPGMYYADtmxnUPxy8dJujIO4gYz+/+AZtK3YYWL+BxI91pezZs6l1kvyO87Wg9SYl6q417Xa/45mX2IXn9M3vPNTJf0p/T015nxJlnRJ13Q7zeOWOXZj4FmYdyhqWX7lg9RfP73hkJMeLOVPDh5uqMVVOGjniedfD/uxHnoKAICAICAKCgCAgCAgCgoAgIAgIAoKAIHB2ISBEYyEan101PgVy++VXO6hVm3aE6+ShVckvYTQFkiJBCgKCQCohIO0+dYDu2auPvuK635N9qWqV+1Mn0hSMpVWb9vpAy9o1rzgSMh/t/ZjSIP0xtW/bWhFcm6ZgaiRoLwSgJWzk6LE0eeJ4rcHfy73YCwKCgCAgCJzdCDDR2EkL5dmNjuReEEh7COBwZ536DZUm3WN6LQeH5NK6wW08n2/cRCvUbS8XXnhhWk+upC+NICD1Jo0UhCQjXSBwpq1DBQUdGp2hZR4HgnHgul7d2rZ7HUeO/Ehbt23TN/QFjUPcCwKCgCAgCAgCgoAgIAgIAoKAICAICAKCQPpFQIjGQjROv7U3DaQcGgo6du5K0FLZo3tXtfhWJw2kSpIgCAgCKYmAtPuURPe/sHF9atfuPShnzhy0fOliR2Lufz7S9hu0h951TwWVn5z0yvKltomF9uG27TuqzZrtNG70SLrxxhts3cnHlEdg6cvLaPTY8fpK6v79nkj5CCUGQUAQEAQEgXSPgBCN030RSgbOMgQmTZ6qbxMpf/ddNHTIM2k693/99ReNGDWGXlm1mvr06knVqz2UptMriUsbCEi9SRvlIKlIPwicaetQYZE/cOAgPT9iJAGPHDku0TfhFClSRGs4/v6H7/WtedD8jJuNcPAl3ltywqZT/AkCgoAgIAgIAoKAICAICAKCgCAgCAgCgkDqIyBEYyEap36tOwNifOPNtwjXyC5btkJfdV2mTGmaOukFz+sXz4CsSxYEgbMWAWn3KV/0uAp54+bNtGHDJ/Tue+/rK2uHDR1Cd915R8pHngoxtGjVlr7asYOaPNyYGtSrq0nUHO0vv/xCEyZOplWr19CNN1xPo9Q1ldAgIyb1EUD/XqdeQ+rYvh01alg/9RMgMQoCgoAgIAikSwSEaJwui00SfZYhsGnTZtr3zTf06mtraevWbZQ1axaaO3sm5bnssjSNBNI7ZtwEenrAU3IYMU2XVNpKnNSbtFUekpq0icCZvg4VD+pYl/v88436Zq69+/bR8eO/arJx3rxX0D3l76Yq91emCy64IJ4oxK8gIAgIAoKAICAICAKCgCAgCAgCgoAgIAikMwSEaCxE43RWZU9/cqGVsmLlB+jUH3/oxJQrdy0N6t+PcuXKdfoTJykQBASBFEFA2n2KwJos0Flz5tLESVP09/PPP5+6d+1MNapXS+YuvX7Yt38/derSjX7++Redhcsvz0NFlVaYo0d/oj1792piNTZrnni8j1yFfJoL+dsDB6hA/vynORUSvSAgCAgCgkB6QkCIxumptCStZysC3R7pSRs++VRn///ZOw8wKYq1C38gCFxFRYJINiBG1GvOCQOCRAmiIkgGRRTJKhkRMSAgUSUHUQmCAmZBwYyYyCiCICAZ8V6v7l+n8Ju/p7d7etKGmT3Fs8xMd3WFt3LVqerSpUvbuZyqVc/J9Tj+MPNP+/btl1KlOO+U6xMrFwWQ+SYXJQaDkmsJpPs8VDLB4y1c+fLlS6aTdIsESIAESIAESIAESIAESIAESIAESCDFCFBoTKFximXZnA/un3/+KR8uWSq///67VK58qpxWubLkz58/5wPGEJAACWQZAZb7LEMb5jCEuCtWrDQbN4rL2WedJccdd1zY/XT4cejQIVn81tvyuTkVZufOnQIRe5kyJ0q5suXkphurScWKFdIhmowDCZAACZAACeQ5AsuWL5dDh/6Q8887V4oVK5bn4s8Ik0AqEEAfHK+Er1ixvJx5xhmCzY00JEACJEACeZdAXpiHyrupy5iTAAmQAAmQAAmQAAmQAAmQAAmQAAkkmwCFxhQaJztP0T0SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIE0IEChMYXGaZCNGQUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFkE6DQmELjZOcpukcCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJAGBCg0ptA4DbIxo0ACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJBsAhQaU2ic7DxF90iABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNKAAIXGFBqnQTZmFEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABJJNgEJjCo2TnafoHgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBoQoNCYQuM0yMaMAgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQLIJUGhMoXGy8xTdIwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSAMCFBpTaJwG2ZhRIIH0I/D+Bx/KW2+/I1u3bpXjjy8udzZpLOefd262R/TAgYMydfp062/rli0kX7582R4GepgaBJhXUiOdGEoSIAESIAESIIHcTeDvv/+W6TNeli++/FL27N0r5cuVkw7t2kqpUiVzd8CjDN3BgwdlyrTD44t7m90jBQsWjPJJf2tr1q6V997/QE4sXVpq3VbT3yLvZAuB6TNfln379knNGrdK2TJlssVPekICJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJC1BCg0ptA4a3MYXScBEoiZwKxXX5Onnn7WPlegQAH53//+J88+9aRceuklMbuV6APbfv1V6tRrYJ35eMn7kj9//kSd5PMxEoDYpEu3HrJ+w0bp1aObXHThBTG6kD3WmVeyhzN9IQESIAESIAESSG8CPXo9akWziCXGAjCL3nhdjjrqKPs91f/bvn2H1Kpb30bjvbcXSZEiRRKO0htvLpR+AwbJuVWryphRIxJ2L1YHft2+XR7u0l3y5c8nTw8dIiWKF4/ViZSzv/Sjj+TJoc/I2WefJQP79w0Lf73bG8kvZsPs8GHP5NqxS1iA+YMESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCCQAIXGFBoHZhJayN0Edv72m8yePVd279ljT73NqRODDh06JB8uWSpffrVCvvnmWznq6KPk1FNOlrua3CFly5bN3RBzUeggKq5Zq649vQynGLe8t7ng1K9jjz02Kad9xRpVikdjJZZ8+5s3b5HbG91hHa5Xp7Z07dI5+Z4kwUXmlSRApBMkQAIkQAIkQAJ5msCaNWulafPDbxHp37e3XHftNbJjxw4pbU7qTReTE0Jj+Ln/wAGpUL5cloypVOiMNBrQr49Uu+H6dEku33j07ttfFi1+y77xZv7c2VK8+PEhuxQah1DwCwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmkDQEKjSk0TpvMnNcigteRLlu2XL5a8bX8+eefNvpjR42UqlXPyXYUOK0IJzht2LjR+l2iRAnZtWuX4CTWQoUKSe9He8n1112b7eFKRQ+dotI358+VYsWK5Wg0KB7NUfwhzydPmSrr1m+wwvPyRiCRGw3zSm5MFYaJBEiABEiABEgglQjMe32+DBo8RE6qVEmmT52USkGPOqw5ITTu2r2n3RQ7c/oUqVihQtRhjdYiNt2OHDXaiG7zS4d2baRw4cLRPpqy9vC2lQkTJ8k55kTjhg1uD4sHhcZhOPiDBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNKCAIXGFBqnRUbOi5G4pUYt2WNOMXaanBAa79q1W5rc1VT27tsnzZs1lZo1bpUyJ54o//nPf2TUmLEyY+YsKVq0qMycNkWOPz5nRbNOVrn1O4Tj7TrcLyVLlpTX57ya48GkeDTHkyBlAsC8kjJJxYCSAAmQAAmQAAnkUgIvvDRBxo1/UW6+6Ubp2/vRXBrKxIKVE0LjNu3uk69XrpSsEhonRiT9nqbQOP3SlDEiARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQqNkyw03r17N3MVCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACWQ7gWLFknsgKIXGFBpneyamhyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAsknQKFxkpiuXr3aunROkoXGSQoenSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBHCXAE40pNM7RDEjPSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEcicBCo0pNM6dOZOhIgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESyFECFBpTaJyjGZCekwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ5E4CFBpTaJw7cyZDRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkKMEKDSm0DhHMyA9JwESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESyJ0EKDSm0Dh35kyGigRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIIEcJUGhMoXGOZkB6TgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkDsJUGhMoXHuzJkMFQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQ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IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSBsCFBpTaJw2mZkRIQESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSB4BCo0pNE5ebqJLJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACaUOAQmMKjdMmMzMiJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACySNAoTGFxsnLTXSJBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggbQhQaEyhcdpkZkaEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggeQQoNKbQOHm5KU1dmj7zZdm3b5/UrHGrlC1TJk1jGR6tvBjncAL8RQIkQAIkQAIkQAIkQAIkkBsJ5PRY5cCBgzJ1+nSLpnXLFpIvX77ciIlhioNATuetOILMR0iABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggWwhQaEyhcbZktOz0ZPyLL8nsOXOlSePGcmeTxgl7Xe/2RvLL1q0yfNgzctGFFyTsXpAD8KtLtx5SoEABeerJJ6RE8eJB9icbfwAAQABJREFUjyT9fnbHOekRoIMkQAIkQAIkQAIkQAIkQAJpSSCnxyrbfv1V6tRrYNl+vOR9yZ8/f1pyTsVI/f3333Lo0KGYgl6kSJFQGuZ03oop4LRMAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtlIgEJjCo2zMbtlj1c1a9eTnTt3SsWKFWTmtCkJe5rIYuP27Ttk/4EDUqF8OSlYsGBUYZn3+nwZNHiItTugXx+pdsP1UT0XraU///xTNv28WYoefbSUKlXS87FE4uzpYC6/+NOmTTaEFStU8Azp/v37ZfuOnVKqZAkpWrSopx1eJAESIAESIAESIAESIAESSIxAKoxVKDROLI2z8ulPP/tcOnZ6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+zwhARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJI+QSwq/GevXvl2LGfJbvakC5fvrySMWPGlB9whpAESIAESIAEUigBCo0pNE6hWTPxwdq5a5e079hZdyThe+7cueTaa66RI0eOyvYdO+Sff/6RB0rfL/369JLMmTMnPgD0kQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARSEQEKjSk0TkXZNf6gnj59Wt56+x35+ps1SmB8RP7++2+58srckjdPXilfrqwUKJA//ofQBxIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARI4BwhQaEyh8TmQjRkFEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBRBOg0JhC40TnKfpHAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRwDhCg0JhC43MgGzMKJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACiSZAoTGFxonOU/SPBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgHCBAoTGFxudANmYUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEEk2AQmMKjROdp+gfCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAOUCAQmMKjc+BbMwokAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJJJoAhcYUGic6T9E/EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBc4AAhcYU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QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKpQYCGxjQ0Tg1JZC5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARSigANjWlonFICycyQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmkBgEaGtPQODUkkbkgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJIKQI0NKahcUoJJDNDAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQGgRoaExD49SQROaCBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggpQjQ0JiGxiklkMwMCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAahCgoTENjVNDEpkLEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBlCJAQ2MaGqeUQDIzJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACqUGAhsY0NE4NSUyhXHz40VJZs3atXHLxxXL5ZZeG5czrXpjHFPqxbv16WbzkQzmteHGpXatmwnM2dfoM+fPPP6Xm7bdJidNPT3h6qZhAOspJvDhOmz5T9v65V26tfouUKV06XtHGHA/lMmaEjCBGAqnaNvyKFe8+JBH6Md559GPC+/4EWCf+jHKij717/5QJEyfJ2nXr5e9//paK51SQe7vdI7ly5cqJOFjmFCeQFXosEX1kimNm9kggjEBWtLuwDCToB9t2gsA6RJtdZcihqGGXgsx3GFYlS5SQ22+rERZfKvzYv/+ATJk6VWelQ7u2aTleTIW2H0Q2/Oo/EXH6pRnr/ewgT7Ey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gARIgARIgARIgARIgARIIDUJ0NCYhsapKZnMFQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQJYSoKExDY2zVACZOAmQAAkz1Q3IAABAAElEQVSQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQGoSoKExDY1TUzKZKxIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggSwlQENjGhpnqQAycRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggdQkQENjGhqnpmQyVyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAllKgIbGNDTOUgFk4iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAqlJgIbGNDROTclkrkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABLKUAA2NaWicpQLIxEmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABFKTAA2NaWicmpLJXJEACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACWQpARoa09A4SwWQiZMACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACaQmARoa09A4NSUzC3O1bv16WbzkQzmteHGpXatm1Dn58KOlsmbtWrnk4ovl8ssujTp8qgeIlY+9fMnkNXX6DPnzzz+l5u23SYnTT7dnJct+f7T0Y/lhzRq58IIL5Korr8iyfOSkhIPIgpH9kiVKyO231UgYriB5S1hmGHG2JpBM/ZuVIE3bDdKvUz/Hr+ZiqYf45YIxpSqB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D3l+9BiZ/9YCufyyS+W5Z54Om68y/ngkARJIPgEaGiePOQ2Nk8eaKZEACZAACZAACZAACZAACZAACZAACURGgIbGNDSOTFJSwBcM7E4uXFiOPfbYFMhN9sjCM88Nl5mvH909Jl++fFLxnAqSV/Hd/PNmwQ7SxYoVVTumdpcbrr8upQo88dXJMvrFl3Se8ufPL/d26yp169ROqTwyMyQQTwLY8ala9dvk4KFDOtqLL75IvyBQtGjReCbDuEiABEiABNKIwKL3P5A+/Z7QL1zlzp1bzjrzTD12++WX7fpT5AXUGKlF82bSrm3rNCoVs0oCJEACJEACJJCqBOL5XPrjTz9Jl3u6y+7df+jinnZacT2W2bXrd9m4aZMe39x4w/WCF6qOO+64VEXCfJFAjiNAQ+PkVTkNjZPHmimRAAmQAAmQAAmQAAmQAAmQAAmQAAlERoCGxjQ0jkxS6CvbEli7dp28vXChbNmyVS/wnHTSSVKixGlybsWKUq3qzZI3b96UKzsWpFasWClFixaR8ypVEuSZjgSyM4HDhw/LR0s/lr/++kvKlTtbypcrJzAqoyMBEiABEsjZBHbu3Cnz5i/QX/3YuXOX5M+fT0qcfrqccUZZua1GDTnxxEI5GxBLTwIkQAIkQAIkEDcC8X4uPXjwoLz73iL56utvZNeuXQJD5tNPP01Kligpt1SrKmXKlI5b3hkRCZBAfAhgJ/Lt23+VsmXLyJlnnBGfSBmLIwF8bfDgwUNy8UUXSmG1+QodCZAACZAACZAACZAACZAACZAACZAACWQ1ARoa09A4q2WQ6ZMACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACaQgARoa09A4BcWSWSIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEshqAjQ0pqFxVssg0ycBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkhBAjQ0pqFxCools0QCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJDVBGhoTEPjrJZBpk8CJEAC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CCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIJKoAQWOCxonaANk4AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEB4ChA0Jmgcni2TWiWowOw5H+nUqVOq+Pxzyp0rV4JuO743tmbt19r8558qVbKkyt13b3xvjvIRQAABBBBAAAEEEEAAAW3dtk2rVn+lnDlyqHKliogggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggELECBI0JGkds46XicSdQvWZt/X3ggEaPHK57ypaJu4LDoKR+/Qdq0eIlqle3ttq1aR0GNaIKCCCAAAIIIIAAAgggEAkC586f1+VLl4KuaooUKZQmTRp7+aXLPlOvPv3sGx4njh8TdBksiAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEC4CRA0Jmgcbm2S+iSCAEHjREBnkwgggAACCCCAAAIIIBDWAs1atNKGDX8EXcf7y5fTsCGD7OUJGgfNxoIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJhLkDQmKBxmDdRqpcQAgSNE0KZbSCAAAIIIIAAAggggEAkCQwaMkw7duz0qPLefft0/PhxZc2aVblz5fKYd+cdt6tN65b2NILGHjSMIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIRLAAQWOCxhHcfKl6XAkQNI4rScpBAAEEEEAAAQQQQACBpCzQu29/LVm6THVq11KHdm397ipBY780zEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIgwAYLGBI0jrMlS3fgQSMpB4wGDhmjBwkWqV7e22rVpHR98lIkAAggggAACCCCAAALXiUBsg8Z3lSqpCePGXCc67CYCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBSFCBoTNA4Ytv1uXPnZB5la4b27doo4803+9yXEaNG6+TJU2rauKFy587tWuby5cuaN3+Bvvvue23bvkM5bsmu2267VY0aNohWllnflHPbrSVUq2YNbdmyVfOt8Or33/+g++67Vx3at9Vgqy5XrlyxwqytlClTJtd23F+MGTteR48di1YX92XM60WfLta69b+p+StN7bp8/Ml8/fzzL9qxc5cKFSygsmXLqH7dOkqePLn3qrp06ZJWfrFK639br61bt+vQoUPKly+fHnywguq8UEvJkiWLtk6goHFsrKIV/v8TnH1q2fwVyyejHf79fMVK+9j06vm2ShQv7lp19+49+vCjudq4cZPOnDmjYsWK6sknHtfjjz3qWsb7xaZNm/XJgoXasOEPJUueTLffeqtefLGeFi1arNlzPiJo7A3GOAIIIIAAAggggAACESIQyjlOfO1abIPG91jnbqNHDtdvv/+uFSu/0E/WeZ05J7vj9tvVtnUr3XzzTX6r+q11rrrss+Uy5zpp0qRWceucyZzTmfMjBgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQSSoCgMUHjhGpr8bKdpq+01B8bN+rNzq+rapXK0baxZ+9e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y803yd69++TjNZ9IJPKvZM2SVZTArIwcPlRuvOH6qDslVCJKAEry5s0rHdq1kTvvuD36Lkzaoo4tN0G5KmEgeejRctrl4oULJFeunFFfZs6aI0qrpf7dqWN7qV61SvSd082RI7+KWtwTJQQpN990o1x+eT4588wztdVzzj5HLr44h1xzzTVydfGros5nz5knQ4ePkLPOOktzKH7VVQKuaxTDggULyo4dO+S48u/jD9+TzJkzR90pIUvZu2+fjBg2RG668Yboc9woQXN5olETyZY1q7y1clmCd/gxbMQomTV7jk4P0mUM8k+lKtX1T3t4eAg3cHvP3XdJ/xf7GmfRK8JE2C/27S333XtP9HnXp56WDz5cJdmzZ5d777lb5dlLZN26L+WLtetUvrlO1q5bJ9ddW0rGvDIy6sYvLsYi8jTyNsyFF16gGN4h3377nSoDO6VVy+YCvgcPHkzAr1WbdjpslJ3bbrlZihYtKjuV/fc//FAOHPhJHn7oQenZ4zkThOM1aPyUMLWo4+Z1nihatIjcfOONctFFF+lyoYST5PzzzpM5s6ZH80kYVoig0t4sSmhFlEZjKVAgv84TyHtr134pSoBPl81hQwZH0+KVf2BJaZGTHw8ckNGjRuiyHXVou8E3bNOugyrvER3mNdeUkGzZsokS0hSlZVqna9KEcVKo0JVRl7EwQZ1Us049UUL/Mn7MK1Ky5DVRfz759DNRi+hywQUXyJyZ0zRXvER9VK1GbV0+8PuG60tLVlUW1AKD5L70Urn33rtl0uSpierCsGWx34v9ZfGSpbrMt23dSgoXLoRgXU1qqouPHftNKlSuqut+sHnkkYfll19+kSaNGsgll1yi0xCmjMGhXzphRwmh6Hx7balSMnb0qfKPdzAtWrURJSgj559/vjyq4obycoNqS25V5dZqUOeWq1hZkB6YSa+OE9SlsRjUue07ddF1MfIz6s7zzj036oXSxqrLMupqJcghy5cs1nVO1IK68asXlECOVK1eSzJlyiSrV71vdarb83i362pBXpSgkzRt0kgaN2yQIDynH0HyQ9i6A8zA9zNVDs855xy5/7575UrVpzh29Jh8+913ojYkydPdu0mFcmWdoiZKe7kuw3jZplVLqVunlqM9p4d+edGNU9g6wcThqaeflffe/0DOU/n2QlVPLVwwV397895ck8rG+BOmDwK3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EfI500gCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAjAQoaU9A4xixD6yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhmBAAWNKWicEfI500gCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAjAQoaU9A4xixD6yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhmBAAWNKWicEfI500gCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAjAQoaU9A4xixD6yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhmBAAWNKWicEfI503iaCGzeskXefe99yZM7t1QoX+40hXp6g3n/gw9l46ZNcn3p0nLTjTec3sAdQnvv/Q/krbffkX379kmOHBdL3Tq1pPR11zrY5KO0SsArz82aM1d+/fVXKVf2Mcl72WVpNYlpPt5bt26TF3r3kb69ekqBAvnTfHqYABLIaAQOHz4s3Z5+VurVrSN33XlHqkv+sWO/yYxZs3S8nmzSWDJlypTq4sgIkUC8CKT3vk1qK89Hjvwqk6dMlU2bt8jf//wtxa8qJu3btmE9E68MTX9IIACBEydOSKMmzaRxowZy7z13B3BBKyRAAumBQJ9+L8mFF14gbVq1TA/JcUzD7Dnz5MivR+SRhx+SAvnT1lxJeu+TOn6wZHqYEdYLkgkdvSUBEiABEiABEiABEiABEiABEiCBVEeAgsYUNE51mZIRSrsEli1fIb369JNrS5WSsaNHpt2EeMQcCwFLli6Thg3qS7OmTTxsJv+reQtek8EvD9UBnXnmmfL333/L0MED5dZbb0n+wBlCXAms+ugjGThoiFxzTQnp27tnAr+98lyVajVlrxIyHzFsSALBdzzr0q27IF8MHthfLrn44gR+8kd8CbzQq49AIHzJotckS5Ys8fWc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/brt1lvtUVBl7FwpcfXViZ6n5AMzjxpLW5yS8Y01bAoax0osfdo3+fzaUqVk7OiRKZLI9NBnSBFwDJQESIAESIAESIAESIAESIAESIAEbAQoaBxnQePDhw/bEPMnCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACSQ/gXgrTaCgMQWNkz/XMgQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFkJ0BB4zgh3rRpk/apJAWN40SU3pAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACaQkAQoax4k+BY3jBJLekAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpAoCFDSO02dILkHjOEWP3pAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAihLYsGGDDr9YsWJxiUemP//8MxIXn5LZEwoaJzNgek8CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJCmCVDQuGTJNP0BGXkSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSA4CFDSmoHFy5Cv6SQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkMYJUNCYgsZpPAsz+iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAslBgILGFDROjnxFP0mABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNI4AQoaU9A4jWdhRp8ESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCA5CFDQmILGyZGv6CcJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAaJ0BBYwoap/EszOiTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkkBwEKGlPQODnyFf0kARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJI4wQoaExB4zSehRl9EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCB5CBAQWMKGidHvqKfJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACaZwABY0paJzGszCjTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkBwEKGhMQePkyFf0kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIII0ToKBxOhc0PnbsN5kxa5ac+OuEY1bNlCmT3HXnHVKqVEnH93xIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQMQlQ0DidCxqvXrNGOnTqKhdfnEPOOOOMRLn88OFf5I7bb5OX+vVJ9I4PSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEMi4BChqnc0Hjj1evkY6du8qCubMkb968iXJ6y9bt5IILslHQOBEZPiABEiABEiABEiABEiABEiABEiABEkiNBP799185duyYnHnmmXL++eenxigyTorAkSO/yuQpU2XT5i3y9z9/S/Grikn7tm0Ep2vRkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpAyB9z/4UDZu2iTXly4tN914Q8pEgqGSQColsHnLFnn3vfcl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kU0igAACCCCAAAIIIIAAAggggAACEQkQNE6YqVFcM9tpaR7B6Tfjxq+/seHbosVe8GhIN7Fh06Zv7fx6seKjjz/xm10v6BR99nm7ncBpOuOFCBrrdlxwWi9a+Q7depytRqEVnhkQQAABBBBAAAEEEEAAAQQQQODSFUgonBdKxVURrl6rjufPP/+0s5w+fdpT5uUKth/EhY/dsi70q/0kgU9V0qxO5arV7XKBYWFd/vUZs+w0DaYFhtXmzJtvp2no9scff3Sbs69um+HCc27mfgPOPvmqSbMWblSirxow1vCfhm59h5MnT3pcKE+n+waNfz52zNOtRy/Pvv37fRexFYFfrlDJrm/J0mV+00J90ArCevO8rv+Z517024bOr9+Hmmlou12HTnYVejO9zq83ouuT3n1vRtf5tThjuQqV7TwJVRItX6mKnUfDkro+DQVeqOFc9tu1rVWbdra9zVu18Wiw2A1aKdlVa61Vt773WHbTBw05GwAfNSa4erSOUwN18w0wayDbVbTW6Sk5aKym2i/41dq1bpe9r/pb1Pb38Qnw62+sQaM426epVXB9hy+/WuvRAK/v/G56z9597bR16ze4UVF7TehcptV8i71Qwu5XYMVo/Q3ob0arHn/8yadB7fvxyBGP/nNDUu303OCOC63a686bbn16/tRjJ3Bwv8vzCUAnFjTWY1S/a31yn+/3qvuoRTRctedwQWM9ry9f4f+0PL/zeojCrpWqnD3nr169JnCXPe7mj9Zt2wdVYNY2bd68JWiZlDYiuYPGqfSkLTEwbN682bYyT548MdBamogAAggggAACCCCAAAIIIIAAAgggoALx8fGydetWueeee6RWrVqgBAiYx1JKi1Zt5KeffpYnCz8hDzyQVw4dOiRvLVikTyKTrp07yosvPB+wVOiP4yZMlKmvTZPLLrtMCjz6iOTMmVN27doln3y6Wsyj96RkieLSqUO7oIUbNWkm69atT9K2TFUgOW3ap4O203SsSqpUqSRPnvu9669csYLdJzdi3759ots6fPhHefSRhyWf2dev1q4Tc7FLst5+u4wZPVIyZczoZucVAQQQQAABBBBAAAEEEEAAAQQuMQFTgdf2kdyUObNceeWVYfd+0MB+tg+hQuVqYkKHEj9ujF+fxGeffyGmwrBce+21MnvmdLn++uvtukyAVnr1eUVSp04tJmAn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AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEYFCBoTNI7RQ5dmI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghEU4CgMUHjaB5frBsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEYFCBoTNI7RQ5dmI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghEU+CSDRpv2bJFPB6P3HfffXLZZZdF05h1I4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEFMCf/31l2zatElSpUoluXLlSpa2pzpz5ownWdYU5ZXs3r1bTp8+LdmyZZNrr702yltj9QgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCMSOwPHjx0XztldeeaXN2yZHy2MmaHz06FE5cuSIpEuXTrJnz05V4+T49lkHAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDMC2g14x07dsipU6ckU6ZMkjFjxmTZp5gJGuveuqrGGjbOnDmzpE+fnsBxshwGrAQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAINYENGB88uRJOXz4sA0ZJ2c1Y7WIqaDxH3/8Ifv375fTp0/H2vdIexFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIiagIaMb7nlFkmbNm2ybSOmgsZur48ePWrT12fOnBGPx+NG84oAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMAlI5AqVSq54oorJH369JIxY8Zk3++YDBonuwIrRAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAE/AYLGfhx8QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEVIGjMcYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACQQIEjYNIGIEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACBI05BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgSICgcRAJIxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAoDHHAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggECRA0DiJhBAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggQNOYYQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEgAYLGQSSMQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAGCxhwDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIBAkQNA4iIQRCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIEDQmGMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBIIECBoHkTACAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAgacwwggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQJAAQeMgEkYggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAEFjjgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCBIgaBxEwggEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ+B8g7sK6jFihxQAAAABJRU5ErkJggg==) - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Track key information effortlessly by default - Weights & Biases saves a new run for each experiment. Here's the information that gets saved by default: - - **Hyperparameters**: Settings for your model are saved in Config - - **Model Metrics**: Time series data of metrics streaming in are saved in Log - - **Terminal Logs**: Command line outputs are saved and available in a tab - - **System Metrics**: GPU and CPU utilization, memory, temperature etc. - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Learn more! + ## Learn more - [Documentation](https://docs.wandb.ai/models/integrations/huggingface): docs on the Weights & Biases and Hugging Face integration - [Videos](https://wandb.me/youtube): tutorials, interviews with practitioners, and more on our YouTube channel - Contact: Message us at contact@wandb.com with questions - """) - return - -@app.cell(hide_code=True) -def _(): - mo.md(r""" ## Helper functions These helpers tokenize and group the text, reduce evaluation memory, and align @@ -553,10 +505,5 @@ def decode_predictions(tokenizer, predictions): } -@app.cell -def _(): - return - - if __name__ == "__main__": app.run() diff --git a/marimo/convert/huggingface-wandb/huggingface_wandb.py b/marimo/convert/huggingface-wandb/huggingface_wandb.py index 7c13e88c..1528877d 100644 --- a/marimo/convert/huggingface-wandb/huggingface_wandb.py +++ b/marimo/convert/huggingface-wandb/huggingface_wandb.py @@ -1,88 +1,79 @@ # /// script +# requires-python = ">=3.11,<3.14" # dependencies = [ # "accelerate", # "datasets", # "evaluate", -# "fsspec[http]==2026.6.0", -# "transformers @ git+https://github.com/huggingface/transformers", -# "wandb==0.29.0", +# "marimo>=0.24.2", +# "scikit-learn==1.9.1", +# "scipy==1.18.1", +# "torch==2.14.1", +# "transformers==4.57.6", +# "wandb==0.30.0", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.0" +__generated_with = "0.25.2" app = marimo.App(auto_download=["html"]) with app.setup: import marimo as mo import os - import sys - import uuid import subprocess + import sys + import tempfile + from importlib.metadata import version + from pathlib import Path + from urllib.request import urlopen + + # The training subprocess needs these packages in the notebook's interpreter. + # Explicit imports also expose them to marimo's package management. + import accelerate + import datasets + import evaluate import torch + import transformers import wandb - import fsspec - - # Optional: log both gradients and parameters - os.environ['WANDB_WATCH'] = 'all' - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # Hugging Face + W&B - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/huggingface-wandb/huggingface_wandb.py/server) - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Visualize your [Hugging Face](https://github.com/huggingface/transformers) model's performance quickly with a seamless [W&B](https://wandb.ai/site) integration. - - Compare hyperparameters, output metrics, and system stats like GPU utilization across your models. - - Hugging Face and Weights & Biases integration - """) - return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Why should I use W&B? + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + + # Hugging Face + Weights & Biases - Use [Weights & Biases](https://wandb.com) for machine learning experiment tracking, dataset versioning, and project collaboration. + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/huggingface-wandb/huggingface_wandb.py/server) - Weights & Biases features + This notebooks shows how to train and monitor Hugging Face models with Weights & Biases. Microsoft Research Paraphrase Corpus (MRPC) provides labeled sentence pairs and is part of the GLUE language-understanding benchmark. - - **Unified dashboard**: Central repository for all your model metrics and predictions - - **Lightweight**: No code changes required to integrate with Hugging Face - - **Accessible**: Free for individuals and academic teams - - **Secure**: All projects are private by default - - **Trusted**: Used by machine learning teams at OpenAI, Toyota, Lyft and more + We will use Hugging Face's `run_glue.py` script to handle data preparation and training. Its built-in `Trainer` integration sends metrics to Weights & Biases when you pass `--report_to wandb`. The Trainer callback handles metric logging for you. - Think of W&B like GitHub for machine learning models— save machine learning experiments to your private, hosted dashboard. Experiment quickly with the confidence that all the versions of your models are saved for you, no matter where you're running your scripts. + A GPU is recommended for the full BERT run below. The first run downloads + the pretrained model and MRPC data. CPU execution works but takes longer. - W&B lightweight integrations works with any Python script, and all you need to do is sign up for a free W&B account to start tracking and visualizing your models. + Example of Hugging Face training metrics in Weights & Biases """) return @@ -90,258 +81,206 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Getting started - - In this tutorial, we work with the Hugging Face and Weights & Biases libraries, and the GLUE dataset and training script. - - [Hugging Face Transformers](https://github.com/huggingface/transformers): Natural language models and datasets - - [Weights & Biases](https://docs.wandb.com/): Experiment tracking and visualization - - [GLUE dataset](https://gluebenchmark.com/): A language understanding benchmark dataset - - [GLUE script](https://github.com/huggingface/transformers/blob/master/examples/run_glue.py): Model training script for sequence classification - """) - return + ## Run with the notebook's dependencies + From this notebook's directory, launch it with its declared Python and package versions: -@app.cell -def _(): - run_glue_url = ( - "https://raw.githubusercontent.com/huggingface/transformers/" - "refs/heads/main/examples/pytorch/text-classification/run_glue.py" - ) - run_glue_path = "run_glue.py" + ```bash + uvx marimo edit --sandbox huggingface_wandb.py + ``` - with fsspec.open(run_glue_url, "rb") as _source: - with open(run_glue_path, "wb") as _destination: - _destination.write(_source.read()) - return (run_glue_path,) + The training script uses the same Python interpreter as the notebook. + Opening this file in an existing marimo environment does not install the + dependencies listed at the top of the file. That environment must also + contain `evaluate`, `accelerate`, `datasets`, PyTorch, and Transformers. + The sandbox command installs the declared dependencies in an isolated environment. + """) + return @app.cell(hide_code=True) def _(): mo.md(r""" - In the Hugging Face Transformers repo, we've instrumented the Trainer to automatically log training and evaluation metrics to W&B at each logging step. + ## Authenticate with Weights & Biases - Here's an in depth look at how the integration works: [Hugging Face + W&B Report](https://app.wandb.ai/jxmorris12/huggingface-demo/reports/Train-a-model-with-Hugging-Face-and-Weights-%26-Biases--VmlldzoxMDE2MTU). - """) - return + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Authentication + ## Set your team and project - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `huggingface-demo`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="huggingface-demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before running the training example."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again. \n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": "huggingface-demo", - "entity": _entity or None, - } - mo.callout( - mo.md("Connected to W&B."), - kind="success", - ) - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - Optionally, we can set environment variables to customize W&B logging. See [documentation](https://docs.wandb.com/library/integrations/huggingface). - """) - return - + ## Download the training script -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Train the model - Next, call the downloaded training script [run_glue.py](https://huggingface.co/transformers/examples.html#glue) and see training automatically get tracked to the Weights & Biases dashboard. This script fine-tunes BERT on the Microsoft Research Paraphrase Corpus— pairs of sentences with human annotations indicating whether they are semantically equivalent. + Download `run_glue.py` from the same Transformers release installed by this + notebook. Matching the versions keeps the script's arguments and APIs + compatible with the library. The script is saved in temporary storage so + it can be launched in the next steps. """) return -@app.cell(hide_code=True) -def _(): - gpu_available = torch.cuda.is_available() - - ( - mo.callout( - mo.md( - f"GPU ready: **{torch.cuda.get_device_name(0)}**. " - "The training script will use it automatically." - ), - kind="success", - ) - if gpu_available - else mo.callout( - mo.md( - "No GPU is attached to this session. In Molab, click the " - "notebook specs button in the header, attach a GPU, then save " - "and restart. Reconnect to W&B after the restart. Training is " - "paused to prevent an unexpectedly slow CPU run." - ), - kind="warn", - title="GPU not available", - ) - ) - return (gpu_available,) - - @app.cell -def _(wandb_settings): - task_name = "MRPC" - wandb_run_id = uuid.uuid4().hex - wandb_run_entity = ( - wandb_settings["entity"] or wandb.Api().default_entity - ) - - run_environment = os.environ.copy() - run_environment.update( - { - "WANDB_RUN_ID": wandb_run_id, - "WANDB_ENTITY": wandb_run_entity, - "WANDB_PROJECT": wandb_settings["project"], - } +def _(): + transformers_version = version("transformers") + run_glue_url = ( + "https://raw.githubusercontent.com/huggingface/transformers/" + f"v{transformers_version}/examples/pytorch/text-classification/run_glue.py" ) - wandb_run_url = wandb.Settings( - entity=wandb_run_entity, - project=wandb_settings["project"], - run_id=wandb_run_id, - ).run_url - return run_environment, task_name, wandb_run_url - + run_glue_path = Path(tempfile.mkdtemp(prefix="huggingface-glue-")) / "run_glue.py" -@app.cell -def _(gpu_available, run_environment, run_glue_path, task_name): - mo.stop(not gpu_available) - - subprocess.run( - [ - sys.executable, - run_glue_path, - "--model_name_or_path", - "bert-base-uncased", - "--task_name", - task_name, - "--do_train", - "--do_eval", - "--max_seq_length", - "256", - "--per_device_train_batch_size", - "32", - "--learning_rate", - "2e-4", - "--num_train_epochs", - "3", - "--output_dir", - f"/tmp/{task_name}/", - "--report_to", - "wandb", - "--logging_steps", - "50", - ], - env=run_environment, - check=True, - ) - return + with urlopen(run_glue_url, timeout=60) as source: + run_glue_path.write_bytes(source.read()) + return (run_glue_path,) @app.cell(hide_code=True) -def _(wandb_run_url): - mo.md(f""" - ## Visualize results in dashboard - - [**Open this training run in W&B**]({wandb_run_url}) - - Click the link above, or go to [wandb.ai](https://app.wandb.ai) to see your results stream in live. The link to see your run in the browser will appear after all the dependencies are loaded — look for the following output: "**wandb**: View run at [URL to your unique run]" - - **Visualize Model Performance** - It's easy to look across dozens of experiments, zoom in on interesting findings, and visualize highly dimensional data. +def _(): + mo.md(r""" + ## Configure Weights & Biases for the training process - ![](https://gblobscdn.gitbook.com/assets%2F-Lqya5RvLedGEWPhtkjU%2F-M79Y5aLAFsMEcybMZcC%2F-M79YL90K1jiq-3jeQK-%2Fhf%20gif%2015.gif?alt=media&token=523d73f4-3f6c-499c-b7e8-ef5be0c10c2a) + The script runs in a separate Python process. The next cell copies the runtime + environment and adds your selected project and team. Existing environment + credentials are inherited, and credentials saved by the SDK are available + to the child process in the same runtime. - **Compare Architectures** - Here's an example comparing [BERT vs DistilBERT](https://app.wandb.ai/jack-morris/david-vs-goliath/reports/Does-model-size-matter%3F-Comparing-BERT-and-DistilBERT-using-Sweeps--VmlldzoxMDUxNzU) — it's easy to see how different architectures effect the evaluation accuracy throughout training with automatic line plot visualizations. - ![](https://gblobscdn.gitbook.com/assets%2F-Lqya5RvLedGEWPhtkjU%2F-M79Y5aLAFsMEcybMZcC%2F-M79Ytpj6q6Jlv9RKZGT%2Fgif%20for%20comparing%20bert.gif?alt=media&token=e3dee5de-d120-4330-b4bd-2e2ddbb8315e) + `WANDB_WATCH="all"` adds parameter and gradient histograms to the run. + Set it to `"false"` if you only need metrics and want to reduce logging + overhead. The Trainer creates the Weights & Biases run when training starts. """) return +@app.cell +def _(entity, project): + run_environment = os.environ.copy() + run_environment["WANDB_PROJECT"] = project + run_environment["WANDB_WATCH"] = "all" + if entity is not None: + run_environment["WANDB_ENTITY"] = entity + return (run_environment,) + + @app.cell(hide_code=True) def _(): mo.md(r""" - ### Track key information effortlessly by default - Weights & Biases saves a new run for each experiment. Here's the information that gets saved by default: - - **Hyperparameters**: Settings for your model are saved in Config - - **Model Metrics**: Time series data of metrics streaming in are saved in Log - - **Terminal Logs**: Command line outputs are saved and available in a tab - - **System Metrics**: GPU and CPU utilization, memory, temperature etc. + ## Fine-tune BERT on MRPC + + The arguments below select `bert-base-uncased`, tokenize sentence pairs to + at most 256 tokens, and train for three epochs with a batch size of 32 and + learning rate of `2e-4`. `--logging_steps 50` records training metrics every + 50 optimizer steps, while `--eval_strategy epoch` evaluates on the validation + set after each epoch. MRPC evaluation reports accuracy and F1. + + `--report_to wandb` enables experiment tracking. The process prints a link + to the run as training begins. It uses the same Python environment as the + notebook and automatically selects an available accelerator or CPU. + + Each execution saves the final model and metric files in a new temporary + output directory. For a quick check, add `--max_train_samples 64` and + `--max_eval_samples 32`, reduce `--num_train_epochs` to `1`, and set + `--logging_steps` to `1`. Those small samples help check that the workflow runs. Use a larger, fixed + validation set when comparing model quality. """) return +@app.cell +def _(run_environment, run_glue_path): + output_dir = tempfile.mkdtemp(prefix="bert-mrpc-") + training_command = [ + sys.executable, + str(run_glue_path), + "--model_name_or_path", "bert-base-uncased", + "--task_name", "mrpc", + "--do_train", + "--do_eval", + "--max_seq_length", "256", + "--per_device_train_batch_size", "32", + "--learning_rate", "2e-4", + "--num_train_epochs", "3", + "--logging_steps", "50", + "--eval_strategy", "epoch", + "--save_strategy", "no", + "--output_dir", output_dir, + "--run_name", "bert-base-mrpc", + "--report_to", "wandb", + ] + + subprocess.run(training_command, env=run_environment, check=True) + return + + @app.cell(hide_code=True) def _(): mo.md(r""" - ## Learn more! - - [Documentation](https://docs.wandb.ai/tutorials/huggingface/): docs on the Weights & Biases and Hugging Face integration - - [Videos](http://wandb.me/youtube): tutorials, interviews with practitioners, and more on our YouTube channel - - Contact: Message us at contact@wandb.com with questions + ## Verify the run and compare experiments + + Open the run link printed by Weights & Biases during training, or find the run named + `bert-base-mrpc` in your chosen project. In the run's workspace, inspect + `train/loss`, `eval/loss`, `eval/accuracy`, and `eval/f1`. The training step + is the horizontal axis, and evaluation points appear after each epoch. + Check the run's config for settings such as `learning_rate`, + `num_train_epochs`, and `per_device_train_batch_size`. The system metrics + show resource usage. Parameter and gradient histograms are logged + periodically when `WANDB_WATCH` is `"all"`. + + Try another learning rate or change `--model_name_or_path` to + `distilbert-base-uncased`, give the experiment a descriptive `--run_name`, + and rerun training. Compare the runs' validation accuracy and F1 alongside + training time in the project workspace. + + See the [Hugging Face + Weights & Biases Report](https://app.wandb.ai/jxmorris12/huggingface-demo/reports/Train-a-model-with-Hugging-Face-and-Weights-%26-Biases--VmlldzoxMDE2MTU) + for an example dashboard, and the + [BERT versus DistilBERT report](https://app.wandb.ai/jack-morris/david-vs-goliath/reports/Does-model-size-matter%3F-Comparing-BERT-and-DistilBERT-using-Sweeps--VmlldzoxMDUxNzU) + for a comparison of architectures. """) return diff --git a/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py b/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py index 81c40dc8..5af49da0 100644 --- a/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py +++ b/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py @@ -6,14 +6,18 @@ # "tensorflow>=2.16,<3", # "wandb>=0.18,<1", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// -"""Optimize a TensorFlow classifier with W&B Sweeps.""" import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="TensorFlow hyperparameter sweeps with W&B") - +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="TensorFlow hyperparameter sweeps with Weights & Biases", +) with app.setup: import marimo as mo @@ -28,31 +32,36 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Weights & Biases Sweep + TensorFlow 2.x - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py/server) + -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Use Weights & Biases for machine learning experiment tracking, dataset versioning, and project collaboration. + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Weights & Biases - """) - return + # Tune a TensorFlow model with Weights & Biases Sweeps + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/hyperparameter-optimization-in-tensorflow-using-w-b-sweeps/hyperparameter_optimization_in_tensorflow_using_w_b_sweeps.py/server) -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Use Weights & Biases Sweeps to automate hyperparameter optimization and explore the space of possible models, complete with interactive dashboards like this: + A sweep is a collection of experiments that explores a hyperparameter search + space. In this notebook, each trial trains the same MNIST digit classifier with a + different batch size and learning rate. Weights & Biases selects the settings, and its + Keras integration logs the metrics used to compare trials. - ![Example W&B Sweeps dashboard](https://i.imgur.com/AN0qnpC.png) + First define a search space and a metric to optimize. Then write a function + that trains one model using `run.config`. Finally, start a sweep agent to + request settings and call that function for each trial. + This example launches up to ten trials with two epochs each. """) return @@ -60,86 +69,43 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Why Should I Use Sweeps? - - * **Quick setup**: With just a few lines of code you can run W&B sweeps. - * **Transparent**: We cite all the algorithms we're using, and [our code is open source](https://github.com/wandb/wandb). - * **Powerful**: Our sweeps are completely customizable and configurable. You can launch a sweep across dozens of machines, and it's just as easy as starting a sweep on your laptop. + ## Authenticate with Weights & Biases - **[Check out the official documentation $\rightarrow$](https://docs.wandb.ai/models/sweeps/)** + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - ## What this notebook covers + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - * Simple steps to get started with W&B Sweeps and TensorFlow. - * Use Keras' current `WandbMetricsLogger` callback to track each training run. - * Find the best hyperparameters for an image classification task. + ## Set your team and project - **Note**: Sections starting with _Step_ are all you need to perform a hyperparameter sweep in existing code. - The rest of the code is there to set up a simple example. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `sweeps-tensorflow`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - mo.md(r""" - ## Setup and Authentication - - ### Step 1: Import W&B and log in - - The setup cell imports TensorFlow, NumPy, W&B, and the dedicated - `WandbMetricsLogger` callback. W&B's former all-in-one `WandbCallback` is - [legacy](https://docs.wandb.ai/models/integrations/keras); new Keras - workflows should use the dedicated metrics, checkpoint, or evaluation - callbacks for the behavior they need. This tutorial only needs metrics. - - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to - use `WANDB_API_KEY` from the molab Secrets panel or credentials already - stored in this runtime. A fresh molab session does not inherit your local - login. If needed, [create a free W&B account](https://wandb.ai/signup). - - The entity is the team name in your W&B project URL: - `wandb.ai//`. Leave it blank to use your default entity. - Changing either field does nothing until you submit the form. - """) - return + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="sweeps-tensorflow", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) - +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) -@app.cell(hide_code=True) -def _(wandb_login_form): + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the form above to authenticate before creating a sweep."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted = wandb_login_form.value - _api_key = _submitted["api_key"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): @@ -147,121 +113,82 @@ def _(wandb_login_form): mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "molab Secrets configuration and submit again." - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_connection = {"entity": _submitted["entity"].strip() or None} - mo.callout(mo.md("Connected to W&B."), kind="success") - return (wandb_connection,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ## Prepare Dataset - - MNIST is downloaded and converted into shuffled training batches and stable - validation batches only after you explicitly start the sweep agent. Opening - this notebook does not download data or start training. - """) - return + ## Prepare data shared by every trial + MNIST contains 28 × 28 grayscale images with integer labels from 0 to 9. + Flatten each image to 784 features and convert pixel values from 0–255 to + floating-point values from 0–1. -@app.function -def prepare_datasets(batch_size): - # Prepare the training dataset - (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() - - x_train = x_train / 255.0 - x_test = x_test / 255.0 - x_train = np.reshape(x_train, (-1, 784)) - x_test = np.reshape(x_test, (-1, 784)) - - # build input pipeline using tf.data - train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)) - train_dataset = ( - train_dataset.shuffle(buffer_size=1024) - .batch(batch_size) - .prefetch(buffer_size=tf.data.AUTOTUNE) - ) - - val_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test)) - val_dataset = val_dataset.batch(batch_size).prefetch(buffer_size=tf.data.AUTOTUNE) - return train_dataset, val_dataset - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Define the Model and Training Workflow - - ### Build a Simple Classifier MLP + Load and normalize the data once. Use the first 50,000 training examples + for fitting and the remaining 10,000 for validation, keeping that split + fixed across trials. The official test set is reserved for evaluating the + model after hyperparameter selection. """) return -@app.function -def Model(): - inputs = keras.Input(shape=(784,), name="digits") - x1 = keras.layers.Dense(64, activation="relu")(inputs) - x2 = keras.layers.Dense(64, activation="relu")(x1) - outputs = keras.layers.Dense(10, name="predictions")(x2) +@app.cell +def _(): + (images, labels), _ = keras.datasets.mnist.load_data() + images = images.reshape(-1, 784).astype(np.float32) / 255.0 - return keras.Model(inputs=inputs, outputs=outputs) + train_images, train_labels = images[:-10000], labels[:-10000] + val_images, val_labels = images[-10000:], labels[-10000:] + return train_images, train_labels, val_images, val_labels @app.cell(hide_code=True) def _(): mo.md(r""" - ### Write a Training Workflow + ## Keep the model architecture fixed - #### Step 3: Log metrics with `WandbMetricsLogger` + Each trial creates a fresh multilayer perceptron with two hidden layers of + 64 ReLU units. The ten outputs are class scores, or logits. The training + function will use a loss with `from_logits=True`, so the final layer does + not apply softmax. - `WandbMetricsLogger` receives the training and validation metrics produced by - `model.fit`. With `log_freq=20`, it logs batch metrics every 20 batches and - epoch metrics at the end of each epoch. The callback is constructed only - inside an active W&B run. + Keeping the architecture fixed lets us compare the effect of the two + hyperparameters in the search space. """) return @app.function -def train( - train_dataset, - val_dataset, - model, - epochs=10, - log_step=200, -): - # 3️⃣ log metrics using WandbMetricsLogger - return model.fit( - train_dataset, - validation_data=val_dataset, - epochs=epochs, - callbacks=[WandbMetricsLogger(log_freq=log_step)], - verbose=2, - ) +def build_model(): + inputs = keras.Input(shape=(784,), name="digits") + hidden = keras.layers.Dense(64, activation="relu")(inputs) + hidden = keras.layers.Dense(64, activation="relu")(hidden) + outputs = keras.layers.Dense(10, name="predictions")(hidden) + return keras.Model(inputs=inputs, outputs=outputs) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Step 4: Configure the Sweep - - This is where you will: - - * Define the hyperparameters you're sweeping over. - * Provide your hyperparameter optimization method. W&B supports `random`, `grid`, and `bayes` methods. - * Provide an objective and a `metric` if using `bayes`; here we minimize `epoch/val_loss`, the validation-loss key logged by `WandbMetricsLogger`. - * Use `hyperband` for early termination of poorly-performing runs. - - ### [Check out more on Sweep configurations $\rightarrow$](https://docs.wandb.ai/models/sweeps/define-sweep-configuration) + ## Define the search space and objective + + `method="random"` samples a batch size and learning rate from the listed + values for each trial. The objective is to minimize `epoch/val_loss`. + That exact key is logged by `WandbMetricsLogger` at the end of each epoch. + The sweep metric name must match the logged name exactly. + + Hyperband can stop weaker trials early. Its `min_iter=1` sets the first + comparison point after one report of the objective metric, which here + corresponds to one epoch. Checks happen asynchronously, so these short + two-epoch trials may finish before they can be stopped. Longer trials + provide more opportunity for early termination. """) return @@ -270,22 +197,11 @@ def _(): def _(): sweep_config = { "method": "random", - "metric": { - "name": "epoch/val_loss", - "goal": "minimize", - }, - "early_terminate": { - "type": "hyperband", - # Trials run for two epochs, so pruning must be allowed after epoch one. - "min_iter": 1, - }, + "metric": {"name": "epoch/val_loss", "goal": "minimize"}, + "early_terminate": {"type": "hyperband", "min_iter": 1}, "parameters": { - "batch_size": { - "values": [32, 64, 128, 256], - }, - "learning_rate": { - "values": [0.01, 0.005, 0.001, 0.0005, 0.0001], - }, + "batch_size": {"values": [32, 64, 128, 256]}, + "learning_rate": {"values": [0.01, 0.005, 0.001, 0.0005, 0.0001]}, }, } return (sweep_config,) @@ -294,287 +210,143 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Step 5: Wrap the Training Workflow - - You'll need a zero-argument function, like `sweep_train` below, that calls - `wandb.init()` and uses the resulting run configuration before training. - A context manager finishes every run before the agent starts its next trial. + ## Define one complete trial + + The agent calls a function with no arguments. Inside `sweep_train`, + `wandb.init()` starts the run with default settings. The sweep’s selected + batch size and learning rate override those defaults in + `run.config`. The context manager finishes the run when training ends. + + Each trial resets Keras and uses the same random seed before building a + fresh model. The selected batch size controls the `tf.data` pipelines, and + the selected learning rate configures SGD. The training dataset shuffles + before batching. `model.fit(shuffle=False)` leaves that order to the + pipeline. Validation data uses the same examples and order for every trial. + + `WandbMetricsLogger(log_freq=20)` logs batch metrics every 20 batches and + training and validation metrics after each epoch. In addition to the + optimized `epoch/val_loss`, inspect `epoch/acc` and `epoch/val_acc` for digit + classification accuracy. To change the training budget, edit `epochs` in + the defaults below. """) return -@app.function -def sweep_train(): - # Set default values - config_defaults = { - "batch_size": 64, - "learning_rate": 0.01, - # Specify the other hyperparameters to the configuration, if any - "epochs": 2, - "log_step": 20, - "architecture_name": "MLP", - "dataset_name": "MNIST", - } - - # Initialize wandb with a sample project name - # Sweep values overwrite these defaults. - with wandb.init(config=config_defaults) as run: - config = run.config - - train_dataset, val_dataset = prepare_datasets(config.batch_size) - - # initialize model - tf.keras.backend.clear_session() - model = Model() - - # Instantiate an optimizer to train the model. - optimizer = keras.optimizers.SGD(learning_rate=config.learning_rate) - # Instantiate a loss function. - loss_fn = keras.losses.SparseCategoricalCrossentropy(from_logits=True) - - # Prepare the metrics. - metrics = [keras.metrics.SparseCategoricalAccuracy(name="acc")] +@app.cell +def _(entity, project, train_images, train_labels, val_images, val_labels): + def sweep_train(): + config_defaults = { + "batch_size": 64, + "learning_rate": 0.01, + "epochs": 2, + "log_step": 20, + "seed": 42, + "architecture_name": "MLP", + "dataset_name": "MNIST", + } + + with wandb.init(entity=entity, project=project, config=config_defaults) as run: + config = run.config + keras.backend.clear_session() + keras.utils.set_random_seed(config.seed) + + train_dataset = ( + tf.data.Dataset.from_tensor_slices((train_images, train_labels)) + .shuffle(buffer_size=1024, seed=config.seed) + .batch(config.batch_size) + .prefetch(tf.data.AUTOTUNE) + ) + val_dataset = ( + tf.data.Dataset.from_tensor_slices((val_images, val_labels)) + .batch(config.batch_size) + .prefetch(tf.data.AUTOTUNE) + ) - model.compile(optimizer=optimizer, loss=loss_fn, metrics=metrics) - training_history = train( - train_dataset, - val_dataset, - model, - epochs=config.epochs, - log_step=config.log_step, - ) - run_url = run.url + model = build_model() + model.compile( + optimizer=keras.optimizers.SGD(learning_rate=config.learning_rate), + loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), + metrics=[keras.metrics.SparseCategoricalAccuracy(name="acc")], + ) + return model.fit( + train_dataset, + validation_data=val_dataset, + epochs=config.epochs, + callbacks=[WandbMetricsLogger(log_freq=config.log_step)], + shuffle=False, + verbose=2, + ) - return {"url": run_url, "epochs": len(training_history.history["loss"])} + return (sweep_train,) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Step 6: Initialize the Sweep and Run an Agent + ## Register the sweep - Creating a sweep registers a new object in W&B. Enter a project and submit - the form when you are ready; changing the unsubmitted field is inert. + `wandb.sweep()` sends the search configuration to Weights & Biases and returns the + sweep’s ID. Registration creates the sweep in your chosen team and project. + Training begins when an agent starts. Weights & Biases prints a link to the sweep + dashboard. Rerunning this cell creates a new sweep. """) return -@app.cell(hide_code=True) -def _(sweep_config, wandb_connection): - _entity_note = ( - f"The sweep will belong to entity `{wandb_connection['entity']}`." - if wandb_connection["entity"] - else "The sweep will use your default W&B entity." - ) - _parameter_note = ", ".join(f"`{name}`" for name in sweep_config["parameters"]) - sweep_creation_form = ( - mo.md("{project}") - .batch( - project=mo.ui.text( - value="sweeps-tensorflow", - label="W&B project", - full_width=True, - ) - ) - .form(submit_button_label="Create W&B sweep", bordered=True) - ) - mo.vstack( - [ - mo.md(f"{_entity_note} This configuration searches {_parameter_note}."), - sweep_creation_form, - ] - ) - return (sweep_creation_form,) - - -@app.cell(hide_code=True) -def _(sweep_config, sweep_creation_form, wandb_connection): - mo.stop( - sweep_creation_form.value is None, - mo.callout( - mo.md("Submit the form above when you are ready to create the sweep."), - kind="info", - ), - ) - _project = sweep_creation_form.value["project"].strip() - mo.stop( - not _project, - mo.callout( - mo.md("Enter a W&B project name and submit again."), - kind="danger", - ), - ) - sweep_request = { - "config": sweep_config.copy(), - "entity": wandb_connection["entity"], - "project": _project, - } - return (sweep_request,) - - -@app.cell -def _(mo, sweep_request): - sweep_entity = sweep_request["entity"] or wandb.Api().default_entity - mo.stop( - not sweep_entity, - mo.callout( - mo.md( - "W&B did not return a default entity. Enter a team entity in " - "the authentication form and reconnect before creating the sweep." - ), - kind="danger", - ), - ) - sweep_id = wandb.sweep( - sweep=sweep_request["config"], - entity=sweep_entity, - project=sweep_request["project"], - ) - sweep_result = { - "id": sweep_id, - "entity": sweep_entity, - "project": sweep_request["project"], - "url": ( - f"https://wandb.ai/{sweep_entity}/{sweep_request['project']}" - f"/sweeps/{sweep_id}" - ), - } - return (sweep_result,) - - -@app.cell(hide_code=True) -def _(sweep_result): - mo.callout( - mo.md( - f"Created sweep `{sweep_result['id']}`. " - f"[Open the live Sweep dashboard]({sweep_result['url']})." - ), - kind="success", - ) - return - - -@app.cell(hide_code=True) -def _(sweep_result, sweep_train): - _training_function = sweep_train.__name__ - sweep_agent_form = ( - mo.md( - f"Run an agent for sweep `{sweep_result['id']}`. The original " - "tutorial uses 10 trials; lower the count for a quicker test." - f" Each trial calls `{_training_function}`.\n\n{{count}}" - ) - .batch( - count=mo.ui.number( - start=1, - stop=10, - step=1, - value=10, - label="Maximum sweep trials", - ) - ) - .form(submit_button_label="Start sweep agent and training", bordered=True) - ) - sweep_agent_form - return (sweep_agent_form,) - - -@app.cell(hide_code=True) -def _(sweep_agent_form, sweep_result, sweep_train): - mo.stop( - sweep_agent_form.value is None, - mo.callout( - mo.md( - "Submit the form above to download MNIST and start the requested " - "number of W&B training runs." - ), - kind="info", - ), - ) - agent_request = { - "count": int(sweep_agent_form.value["count"]), - "function": sweep_train, - "sweep": sweep_result.copy(), - } - return (agent_request,) - - @app.cell -def _(agent_request): - if wandb.run is not None: - wandb.run.finish() - - _sweep = agent_request["sweep"] - wandb.agent( - _sweep["id"], - function=agent_request["function"], - entity=_sweep["entity"], - project=_sweep["project"], - count=agent_request["count"], - ) - agent_result = { - "count": agent_request["count"], - "url": _sweep["url"], - } - return (agent_result,) - - -@app.cell(hide_code=True) -def _(agent_result): - mo.callout( - mo.md( - f"The agent completed up to {agent_result['count']} trials. " - f"[Open the Sweep dashboard]({agent_result['url']}) to compare " - "`epoch/val_loss`, batch size, and learning rate across runs." - ), - kind="success", - ) - return +def _(entity, project, sweep_config): + sweep_id = wandb.sweep(sweep_config, entity=entity, project=project) + return (sweep_id,) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Visualize Results + ## Start an agent - After creating the sweep, open the **Sweep dashboard** link above to see - results arrive live. Compare parallel coordinates, parameter importance, - and the `epoch/val_loss` chart to understand which configurations work best. + The agent requests hyperparameters from Weights & Biases and calls `sweep_train` for + each trial. `count=10` limits how many trials this agent starts. Lower the count for a quicker experiment. + + To add trials to an existing sweep, use its ID as `sweep_id` and run the + agent cell again, keeping the same entity and project. Sweep coordination + requires a connection to your Weights & Biases server. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Example Gallery - - See examples of projects tracked and visualized with W&B in our [Gallery →](https://wandb.ai/gallery). - """) +@app.cell +def _(entity, project, sweep_id, sweep_train): + wandb.agent( + sweep_id, + function=sweep_train, + count=10, + entity=entity, + project=project, + ) return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Best Practices + ## Verify and compare results - 1. **Projects**: Log multiple runs to a project to compare them. `wandb.init(project="project-name")` - 2. **Groups**: For multiple processes or cross validation folds, log each process as a run and group them together. `wandb.init(group="experiment-1")` - 3. **Tags**: Add tags to track your current baseline or production model. - 4. **Notes**: Type notes in the table to track the changes between runs. - 5. **Reports**: Take quick notes on progress to share with colleagues and make dashboards and snapshots of your ML projects. - """) - return + Open the sweep link printed during registration. In the runs table, check + that `batch_size` and `learning_rate` vary between trials. Each run's config + also records the fixed epoch budget, seed, architecture, and dataset. + Compare `epoch/val_loss` across runs and inspect the corresponding + `epoch/val_acc` curves. Use the parallel-coordinates plot to connect + hyperparameter choices to validation loss. Parameter importance becomes + more informative as you collect more trials. This reference dashboard + illustrates the views to look for: -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Advanced Setup + ![Example Weights & Biases Sweeps dashboard](https://i.imgur.com/AN0qnpC.png) - 1. [Environment variables](https://docs.wandb.ai/models/track/environment-variables): Set API keys in environment variables so you can run training on a managed cluster. - 2. [Offline mode](https://docs.wandb.ai/models/ref/cli/wandb-offline): Set `WANDB_MODE=offline` to train without syncing, then upload the saved run later with `wandb sync`. - 3. [Self-managed W&B](https://docs.wandb.ai/guides/hosting/): Run W&B in your own infrastructure, including private-cloud and air-gapped environments. + Try `method="bayes"` or expand the search space, then register a new sweep + and compare the results. After selecting hyperparameters, evaluate the + chosen model on the reserved test set to estimate performance on unseen + data. """) return diff --git a/marimo/convert/intro-to-weights-biases-keras/intro_to_weights_biases_keras.py b/marimo/convert/intro-to-weights-biases-keras/intro_to_weights_biases_keras.py index 5d798ae7..b7a3d625 100644 --- a/marimo/convert/intro-to-weights-biases-keras/intro_to_weights_biases_keras.py +++ b/marimo/convert/intro-to-weights-biases-keras/intro_to_weights_biases_keras.py @@ -5,14 +5,19 @@ # "tensorflow>=2.16,<3", # "wandb>=0.18,<1", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// -"""Learn the W&B experiment-tracking workflow with simulated and Keras runs.""" +"""Learn the Weights & Biases experiment-tracking workflow with simulated and Keras runs.""" import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="Introduction to W&B with Keras") - +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Introduction to Weights & Biases with Keras", +) with app.setup: from pathlib import Path @@ -30,40 +35,38 @@ @app.cell(hide_code=True) def _(): mo.md(r""" + + + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + # Introduction to Weights & Biases with Keras [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/intro-to-weights-biases-keras/intro_to_weights_biases_keras.py/server) - Weights & Biases - Use [Weights & Biases](https://wandb.ai/site?utm_source=keras_intro_colab&utm_medium=code&utm_campaign=keras_intro) for experiment tracking, model checkpointing, and collaboration. This tutorial starts with simulated metrics, then trains a small Keras classifier, and finishes with a scriptable alert. - Nothing is sent to W&B, no dataset is downloaded, and no model is trained - until you explicitly connect and submit the corresponding action form. - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## A shared dashboard for your experiments - - With just a few lines of code, you can create rich, interactive, shareable - dashboards like this [example W&B project](https://wandb.ai/wandb/wandb_example). + Running the code cells creates Weights & Biases runs, downloads MNIST, and uploads metrics + and model checkpoints. Edit the Python configuration before running the + examples. - ![Example W&B dashboard](https://i.imgur.com/Pell4Oo.png) - ## Data and privacy - - W&B encrypts data in transit and at rest. Organizations that need to keep - data in their own environment can use - [W&B Self-Managed](https://docs.wandb.ai/platform/hosting/hosting-options/self-managed). - You can also query and export logged data with the - [W&B Public API](https://docs.wandb.ai/models/ref/python/public-api/). + ![Example Weights & Biases dashboard](https://i.imgur.com/Pell4Oo.png) """) return @@ -71,55 +74,45 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Connect to W&B + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to - use `WANDB_API_KEY` from the molab Secrets panel or credentials already - configured in this runtime. A new molab session does not inherit a login - from your computer. + ## Set your team and project - The entity is the team name in a W&B project URL: - `wandb.ai//`. Leave it blank to use your default entity. - Editing either field is inert until you submit the form. + Enter your Weights & Biases team name and choose projects for simulated metrics and training runs. The fields below contain this lesson’s defaults. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{simulation_project}\n\n{training_project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + simulation_project=mo.ui.text(value="basic-intro", label="Simulation project", full_width=True), + training_project=mo.ui.text(value="keras-intro", label="Training project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _simulation_project = _submission["simulation_project"].strip() + _training_project = _submission["training_project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the form above before starting any W&B run."), - kind="info", - ), + not _entity or not _simulation_project or not _training_project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted = wandb_login_form.value - _api_key = _submitted["api_key"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): @@ -127,455 +120,283 @@ def _(wandb_login_form): mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "molab Secrets configuration and submit again." - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_connection = {"entity": _submitted["entity"].strip() or None} - mo.callout(mo.md("Connected to W&B."), kind="success") - return (wandb_connection,) + entity = _entity + simulation_project = _simulation_project + training_project = _training_project + mo.md("✓ Connected to Weights & Biases.") + return entity, simulation_project, training_project @app.cell(hide_code=True) def _(): mo.md(r""" - ## Run a simulated experiment + ## Run simulated experiments + + The basic Weights & Biases workflow has three steps: - The basic W&B workflow has three steps: + 1. Start a run with `wandb.init()` and record its configuration. + 2. Log metrics from training. + 3. Open the printed run links to compare results in the dashboard. - 1. Start a run and record the hyperparameters in its config. - 2. Log metrics from a training or evaluation loop. - 3. Open the run links to compare results in the dashboard. + The next cell creates five runs and logs eight generated loss and accuracy + values to each. No model is trained in this step. The synthetic curves make + it easy to see how configuration, history, and run comparisons fit together. - The original tutorial launched five runs. Choose a smaller count for a quick - test or keep five for the full comparison. Submitting the form creates that - many remote runs in the selected project. + A fixed seed makes the examples reproducible. """) return -@app.cell(hide_code=True) -def _(): - quickstart_form = ( - mo.md("{project}\n\n{run_count}\n\n{seed}") - .batch( - project=mo.ui.text( - value="basic-intro", - label="W&B project", - full_width=True, - ), - run_count=mo.ui.number( - start=1, - stop=5, - step=1, - value=5, - label="Number of simulated runs", - ), - seed=mo.ui.number( - start=0, - stop=10_000, - step=1, - value=42, - label="Random seed", - ), - ) - .form(submit_button_label="Create simulated W&B runs", bordered=True) - ) - quickstart_form - return (quickstart_form,) +@app.cell +def _(entity, simulation_project): + simulation_count = 5 + simulation_seed = 42 + simulation_rng = random.Random(simulation_seed) - -@app.cell(hide_code=True) -def _(quickstart_form, wandb_connection): - mo.stop( - quickstart_form.value is None, - mo.callout( - mo.md("Submit the form to create and log the simulated runs."), - kind="info", - ), - ) - - _submitted = quickstart_form.value - _project = _submitted["project"].strip() or "basic-intro" - _rng = random.Random(int(_submitted["seed"])) - _run_links = [] - - # Launch simulated experiments. Each context manager finishes its run. - for _index in range(int(_submitted["run_count"])): - _config = { - "learning_rate": 0.02, - "architecture": "CNN", - "dataset": "CIFAR-100", - } + for simulation_index in range(simulation_count): with wandb.init( - entity=wandb_connection["entity"], - project=_project, - name=f"simulated-run-{_index + 1}", - config=_config, - ) as _run: - _offset = _rng.random() / 5 - for _step in range(2, 10): - _accuracy = 1 - 2**(-_step) - _rng.random() / _step - _offset - _loss = 2**(-_step) + _rng.random() / _step + _offset - # Log metrics from the simulated training loop. - _run.log({"accuracy": _accuracy, "loss": _loss}) - _run_links.append((_run.name, _run.url)) - - quickstart_result = { - "project": _project, - "runs": tuple(_run_links), - } - return (quickstart_result,) - - -@app.cell(hide_code=True) -def _(quickstart_result): - _links = "\n".join( - f"- [{_name}]({_url})" if _url else f"- {_name} (URL unavailable)" - for _name, _url in quickstart_result["runs"] - ) - mo.callout( - mo.md( - f"Created {len(quickstart_result['runs'])} runs in " - f"`{quickstart_result['project']}`:\n\n{_links}" - ), - kind="success", - ) + entity=entity, + project=simulation_project, + name=f"keras-intro-simulation-{simulation_index + 1}", + config={"dataset": "synthetic", "seed": simulation_seed, "epochs": 8}, + ) as simulation_run: + offset = simulation_rng.random() / 5 + for simulation_epoch in range(2, 10): + simulated_accuracy = 1 - 2**(-simulation_epoch) - simulation_rng.random() / simulation_epoch - offset + simulated_loss = 2**(-simulation_epoch) + simulation_rng.random() / simulation_epoch + offset + simulation_run.log({ + "epoch": simulation_epoch - 1, + "accuracy": simulated_accuracy, + "loss": simulated_loss, + }) return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Train a simple Keras classifier + ## Train a Keras classifier This example downloads MNIST, trains a small dense classifier, and streams - metrics to W&B. It uses the current dedicated callbacks: + metrics to Weights & Biases. Two callbacks handle the logging: - `WandbMetricsLogger` records Keras training and validation metrics. - - `WandbModelCheckpoint` saves the best model and logs it as a W&B Artifact. + - `WandbModelCheckpoint` saves each epoch's model and logs it as a Weights & Biases Artifact. - The former all-in-one `WandbCallback` is - [legacy](https://docs.wandb.ai/models/integrations/keras); new workflows - should select the dedicated callback for each behavior they need. + Checkpoints are written to a temporary directory and removed after Weights & Biases has + finished the run. - Checkpoints are written to a temporary directory and removed after W&B has - finished the run, so rerunning this notebook does not leave model files in - the repository. + ### Configure the experiments + + The dictionary below defines the model's layers, optimizer, and training + settings. We train five fresh models with reproducibly sampled dropout + rates. Weights & Biases records each model's settings so you can compare + dropout against validation loss and accuracy. Reduce `experiment_count` + or `epochs` for a quicker run. """) return +@app.cell +def _(): + training_config = { + "layer_1": 512, + "activation_1": "relu", + "layer_2": 10, + "activation_2": "softmax", + "optimizer": "sgd", + "loss": "sparse_categorical_crossentropy", + "metric": "accuracy", + "epochs": 6, + "batch_size": 256, + "seed": 42, + "dataset": "MNIST", + } + experiment_count = 5 + dropout_rng = random.Random(training_config["seed"]) + dropout_values = [dropout_rng.uniform(0.01, 0.80) for _ in range(experiment_count)] + return dropout_values, training_config + + @app.cell(hide_code=True) def _(): - keras_form = ( - mo.md("{project}\n\n{experiment_count}\n\n{epochs}\n\n{batch_size}\n\n{seed}") - .batch( - project=mo.ui.text( - value="keras-intro", - label="W&B project", - full_width=True, - ), - experiment_count=mo.ui.number( - start=1, - stop=5, - step=1, - value=5, - label="Number of Keras experiments", - ), - epochs=mo.ui.number( - start=1, - stop=10, - step=1, - value=6, - label="Epochs per experiment", - ), - batch_size=mo.ui.dropdown( - options=[128, 256, 512], - value=256, - label="Batch size", - ), - seed=mo.ui.number( - start=0, - stop=10_000, - step=1, - value=42, - label="Random seed", - ), - ) - .form( - submit_button_label="Download MNIST and train Keras experiments", - bordered=True, - ) - ) - keras_form - return (keras_form,) + mo.md(r""" + ### Prepare MNIST once + + The next cell downloads MNIST, normalizes pixels to `[0, 1]`, + and samples 12,000 training images and 500 held-out images for a shorter demo. + The held-out sample comes from the official test split but is used here to + compare dropout settings. Treat it as validation data for this exercise. + """) + return + + +@app.cell +def _(): + (x_train, y_train), (x_validation, y_validation) = tf.keras.datasets.mnist.load_data() + x_train = x_train[::5].astype("float32") / 255.0 + y_train = y_train[::5] + x_validation = x_validation[::20].astype("float32") / 255.0 + y_validation = y_validation[::20] + return x_train, x_validation, y_train, y_validation @app.cell(hide_code=True) -def _(keras_form, wandb_connection): - mo.stop( - keras_form.value is None, - mo.callout( - mo.md("Submit the form to download MNIST and start training."), - kind="info", - ), - ) +def _(): + mo.md(r""" + ### Train and log with Keras callbacks - _submitted = keras_form.value - _project = _submitted["project"].strip() or "keras-intro" - _seed = int(_submitted["seed"]) - _rng = random.Random(_seed) - - # Download and normalize MNIST only after explicit form submission. - (_x_train, _y_train), (_x_test, _y_test) = tf.keras.datasets.mnist.load_data() - _x_train, _x_test = _x_train / 255.0, _x_test / 255.0 - _x_train, _y_train = _x_train[::5], _y_train[::5] - _x_test, _y_test = _x_test[::20], _y_test[::20] - - _run_summaries = [] - with tempfile.TemporaryDirectory(prefix="wandb-keras-checkpoints-") as _checkpoint_dir: - for _index in range(int(_submitted["experiment_count"])): - tf.keras.backend.clear_session() - tf.keras.utils.set_random_seed(_seed + _index) - _config = { - "layer_1": 512, - "activation_1": "relu", - "dropout": _rng.uniform(0.01, 0.80), - "layer_2": 10, - "activation_2": "softmax", - "optimizer": "sgd", - "loss": "sparse_categorical_crossentropy", - "metric": "accuracy", - "epochs": int(_submitted["epochs"]), - "batch_size": int(_submitted["batch_size"]), - } + Each `wandb.init()` creates a separate `training_run`. A fresh model and + optimizer are built for each dropout value. The seed is reset for each + experiment to make comparisons easier to reproduce. + + `WandbMetricsLogger` sends training and validation metrics after each epoch. + `WandbModelCheckpoint` saves the model after each epoch and uploads the + checkpoint as a model Artifact. The `{epoch:02d}` filename placeholder keeps + checkpoints separate. The run's summary also records its final validation accuracy. + """) + return - with wandb.init( - entity=wandb_connection["entity"], - project=_project, - name=f"keras-mnist-{_index + 1}", - config=_config, - ) as _run: - _model = tf.keras.Sequential( - [ - tf.keras.Input(shape=(28, 28)), - tf.keras.layers.Flatten(), - tf.keras.layers.Dense( - _run.config["layer_1"], - activation=_run.config["activation_1"], - ), - tf.keras.layers.Dropout(_run.config["dropout"]), - tf.keras.layers.Dense( - _run.config["layer_2"], - activation=_run.config["activation_2"], - ), - ] - ) - _model.compile( - optimizer=_run.config["optimizer"], - loss=_run.config["loss"], - metrics=[_run.config["metric"]], - ) - _checkpoint_path = str( - Path(_checkpoint_dir) - / f"experiment-{_index + 1}-best.keras" +@app.cell +def _( + dropout_values, + entity, + training_config, + training_project, + x_train, + x_validation, + y_train, + y_validation, +): + for experiment_index, dropout in enumerate(dropout_values): + tf.keras.backend.clear_session() + tf.keras.utils.set_random_seed(training_config["seed"]) + with tempfile.TemporaryDirectory(prefix="wandb-keras-checkpoints-") as checkpoint_directory: + with wandb.init( + entity=entity, + project=training_project, + name=f"keras-mnist-{experiment_index + 1}-dropout-{dropout:.2f}", + config={**training_config, "dropout": dropout}, + ) as training_run: + run_config = training_run.config + model = tf.keras.Sequential([ + tf.keras.Input(shape=(28, 28)), + tf.keras.layers.Flatten(), + tf.keras.layers.Dense(run_config.layer_1, activation=run_config.activation_1), + tf.keras.layers.Dropout(run_config.dropout), + tf.keras.layers.Dense(run_config.layer_2, activation=run_config.activation_2), + ]) + model.compile( + optimizer=run_config.optimizer, + loss=run_config.loss, + metrics=[run_config.metric], ) - _history = _model.fit( - x=_x_train, - y=_y_train, - epochs=_run.config["epochs"], - batch_size=_run.config["batch_size"], - validation_data=(_x_test, _y_test), + checkpoint_path = str(Path(checkpoint_directory) / "model-{epoch:02d}.keras") + history = model.fit( + x=x_train, + y=y_train, + epochs=run_config.epochs, + batch_size=run_config.batch_size, + validation_data=(x_validation, y_validation), callbacks=[ WandbMetricsLogger(log_freq="epoch"), - WandbModelCheckpoint( - filepath=_checkpoint_path, - monitor="val_loss", - mode="min", - save_best_only=True, - ), + WandbModelCheckpoint(filepath=checkpoint_path), ], verbose=2, ) - _run_summaries.append( - { - "name": _run.name, - "url": _run.url, - "val_accuracy": float( - _history.history["val_accuracy"][-1] - ), - } - ) - - keras_result = { - "project": _project, - "runs": tuple(_run_summaries), - } - return (keras_result,) + training_run.summary["final_validation_accuracy"] = float(history.history["val_accuracy"][-1]) + return @app.cell(hide_code=True) -def _(keras_result): - _rows = "\n".join( - ( - f"- [{_run['name']}]({_run['url']}): " - f"final validation accuracy `{_run['val_accuracy']:.3f}`" - if _run["url"] - else ( - f"- {_run['name']}: final validation accuracy " - f"`{_run['val_accuracy']:.3f}` (URL unavailable)" - ) - ) - for _run in keras_result["runs"] - ) - mo.callout( - mo.md( - f"Finished {len(keras_result['runs'])} Keras experiments in " - f"`{keras_result['project']}`:\n\n{_rows}" - ), - kind="success", - ) +def _(): + mo.md(r""" + ### Inspect your results + + Open the project link printed by Weights & Biases. Compare dropout values in the run + configurations against the `epoch/val_loss` and `epoch/val_accuracy` charts + and the `final_validation_accuracy` summary. In a run's **Artifacts** tab, + find the saved Keras model. You can download it and load it with + `tf.keras.models.load_model()` to reuse the checkpoint. + """) return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Try W&B Alerts + ## Try Weights & Biases Alerts - [W&B Alerts](https://docs.wandb.ai/models/runs/alert) can notify you through + [Weights & Biases Alerts](https://docs.wandb.ai/models/runs/alert) can notify you through Slack or email when code detects a condition such as low accuracy. Before trying this section, enable **Scriptable run alerts** and configure a - destination in your W&B user settings. + destination in your Weights & Biases user settings. + + The next cell logs synthetic accuracy values between zero and one. The + first value at or below `accuracy_threshold` triggers `alert_run.alert()` + and ends the loop. These values are independent of the MNIST results. - The demo logs simulated accuracy values and calls `run.alert()` on the first - value at or below the threshold. Submitting this form creates one run and - may send a real external notification. + Set the threshold and random seed below, then run the cell to create an + alert-demo run. With notifications configured, this can send a real Slack + or email alert. `wait_duration=300` limits repeated alerts with the same + title to one every five minutes. """) return -@app.cell(hide_code=True) -def _(): - alert_form = ( - mo.md("{project}\n\n{threshold}\n\n{max_steps}\n\n{seed}") - .batch( - project=mo.ui.text( - value="keras-intro", - label="W&B project", - full_width=True, - ), - threshold=mo.ui.number( - start=0.0, - stop=2.0, - step=0.05, - value=0.3, - label="Low-accuracy threshold", - ), - max_steps=mo.ui.number( - start=1, - stop=1_000, - step=1, - value=1_000, - label="Maximum simulated steps", - ), - seed=mo.ui.number( - start=0, - stop=10_000, - step=1, - value=7, - label="Random seed", - ), - ) - .form( - submit_button_label="Run demo and send alert if triggered", - bordered=True, - ) - ) - alert_form - return (alert_form,) - - -@app.cell(hide_code=True) -def _(alert_form, wandb_connection): - mo.stop( - alert_form.value is None, - mo.callout( - mo.md("Submit the form to create the alert demo run."), - kind="info", - ), - ) - - _submitted = alert_form.value - _project = _submitted["project"].strip() or "keras-intro" - _threshold = float(_submitted["threshold"]) - _rng = random.Random(int(_submitted["seed"])) - _trigger = None +@app.cell +def _(entity, training_project): + accuracy_threshold = 0.3 + max_alert_steps = 1000 + alert_seed = 7 + alert_rng = random.Random(alert_seed) with wandb.init( - entity=wandb_connection["entity"], - project=_project, - name="low-accuracy-alert-demo", - ) as _run: - for _step in range(int(_submitted["max_steps"])): - _accuracy = round(_rng.random() + _rng.random(), 3) - _run.log({"accuracy": _accuracy}) - - if _accuracy <= _threshold: - _run.alert( + entity=entity, + project=training_project, + name="keras-low-accuracy-alert-demo", + job_type="alert-demo", + config={"accuracy_threshold": accuracy_threshold, "seed": alert_seed}, + ) as alert_run: + for alert_step in range(max_alert_steps): + alert_accuracy = round(alert_rng.random(), 3) + alert_run.log({"step": alert_step, "accuracy": alert_accuracy}) + if alert_accuracy <= accuracy_threshold: + alert_run.alert( title="Low accuracy", text=( - f"Accuracy {_accuracy} at step {_step} is below the " - f"acceptable threshold {_threshold}." + f"Accuracy {alert_accuracy} at step {alert_step} is at or below " + f"the threshold {accuracy_threshold}." ), level=AlertLevel.WARN, wait_duration=300, ) - _trigger = {"step": _step, "accuracy": _accuracy} + print(f"Alert triggered: {alert_run.url}") break - _run_url = _run.url - - alert_result = { - "run_url": _run_url, - "trigger": _trigger, - "max_steps": int(_submitted["max_steps"]), - } - return (alert_result,) - - -@app.cell(hide_code=True) -def _(alert_result): - if alert_result["trigger"] is None: - _message = ( - f"No accuracy value crossed the threshold in " - f"{alert_result['max_steps']} steps, so no alert was sent." - ) - else: - _message = ( - f"Sent the alert at step {alert_result['trigger']['step']} with " - f"accuracy `{alert_result['trigger']['accuracy']}`." - ) - - _run_link = ( - f"[Open the alert demo run]({alert_result['run_url']})." - if alert_result["run_url"] - else "The run URL is unavailable." - ) - mo.callout(mo.md(f"{_message}\n\n{_run_link}"), kind="success") + else: + print("No value crossed the threshold; no alert was sent.") return @app.cell(hide_code=True) def _(): mo.md(r""" - ## What's next? + ## Verify and next steps + + In your W&B workspace, check: + + - **Simulation project** (default `basic-intro`): each simulation has eight logged accuracy and loss values. + - **Training project** (default `keras-intro`): compare `dropout` in each training run's config with + `epoch/val_loss`, `epoch/val_accuracy`, and `final_validation_accuracy`. + Open a training run's **Artifacts** tab to find its per-epoch Keras models. + - **Alert demo**: inspect the accuracy history in the run named + `keras-low-accuracy-alert-demo`. With the default seed, the second value + crosses the threshold. Check your configured notification destination + for the warning. Continue with [Organizing hyperparameter sweeps in PyTorch](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py/server) diff --git a/marimo/convert/intro-to-weights-biases/intro_to_weights_biases.py b/marimo/convert/intro-to-weights-biases/intro_to_weights_biases.py index a254a42e..e6c76a65 100644 --- a/marimo/convert/intro-to-weights-biases/intro_to_weights_biases.py +++ b/marimo/convert/intro-to-weights-biases/intro_to_weights_biases.py @@ -6,16 +6,17 @@ # "torchvision>=0.16", # "wandb>=0.18", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.0" +__generated_with = "0.25.1" app = marimo.App(width="medium", app_title="Intro to Weights & Biases") - with app.setup: - import math import random import tempfile from pathlib import Path @@ -28,27 +29,43 @@ import wandb MNIST.mirrors = [ - mirror - for mirror in MNIST.mirrors + mirror for mirror in MNIST.mirrors if "http://yann.lecun.com/" not in mirror ] - device = "cuda:0" if torch.cuda.is_available() else "cpu" @app.cell(hide_code=True) def _(): mo.md(r""" - # Intro to Weights & Biases + + + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + + # Introduction to Weights & Biases [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/intro-to-weights-biases/intro_to_weights_biases.py/server) - """) - return + A Weights & Biases run records one experiment's configuration, metrics, and outputs. + This lesson starts with simulated metrics, then tracks real PyTorch training, + prediction tables, and model checkpoints. An optional final example shows + how to send a Weights & Biases alert. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Weights & Biases + Running the code cells creates experiment runs, downloads MNIST, and uploads + metrics and checkpoints. The optional alert has its own Python setting + near the end of the lesson. """) return @@ -56,224 +73,162 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - Use [W&B](https://wandb.ai/site?utm_source=intro_colab&utm_medium=code&utm_campaign=intro) for machine learning experiment tracking, model checkpointing, collaboration with your team and more. See the full W&B Documentation [here](https://docs.wandb.ai/). + ## Authenticate with Weights & Biases - In this notebook, you will create and track a machine learning experiment using a simple PyTorch model. By the end of the notebook, you will have an interactive project dashboard that you can share and customize with other members of your team. [View an example dashboard here](https://wandb.ai/wandb/wandb_example). - """) - return + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Authentication + ## Set your team and project - The notebook's dependencies install the W&B SDK automatically. Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team entity. You can leave the key blank when this environment already has credentials, such as `WANDB_API_KEY` configured in the marimo Secrets panel. If you are new to W&B, [create a free account](https://wandb.ai/signup). + Enter your Weights & Biases team name and choose projects for simulated metrics and training runs. The fields below contain this lesson’s defaults. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{simulation_project}\n\n{training_project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + simulation_project=mo.ui.text(value="basic-intro", label="Simulation project", full_width=True), + training_project=mo.ui.text(value="pytorch-intro", label="Training project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _simulation_project = _submission["simulation_project"].strip() + _training_project = _submission["training_project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B before creating runs."), - kind="info", - ), + not _entity or not _simulation_project or not _training_project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _login_error = None - except wandb.errors.Error as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - f"try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = {"entity": _entity or None} - mo.callout(mo.md("Connected to W&B."), kind="success") - return (wandb_settings,) + entity = _entity + simulation_project = _simulation_project + training_project = _training_project + mo.md("✓ Connected to Weights & Biases.") + return entity, simulation_project, training_project @app.cell(hide_code=True) def _(): mo.md(r""" - ## Simulate and track a machine learning experiment with W&B + ## Track Simulated Experiments - Create, track, and visualize a machine learning experiment. To do this: + The next cell creates five `simulation_run` objects in sequence. Each call + to `wandb.init()` starts a separate experiment and records its configuration. + `simulation_run.log()` sends one accuracy and loss measurement per epoch. - 1. Initialize a [W&B run](https://docs.wandb.ai/guides/runs) and pass in the hyperparameters you want to track. - 2. Within your training loop, log metrics such as the accuracy and loss. + The fixed seeds make the examples reproducible while giving each run a + different curve. These values are generated mathematically, without training + a model or loading a dataset. + Each context manager finishes its run before the next experiment begins. """) return -@app.function -def run_simulated_experiments(wandb_settings): - """Create five runs with synthetic accuracy and loss metrics.""" - if wandb.run is not None: - wandb.finish() - - # Launch 5 simulated experiments - total_runs = 5 - run_urls = [] - for run_index in range(total_runs): - # 1. Start a new run to track this script +@app.cell +def _(entity, simulation_project): + for experiment_index in range(5): + simulation_config = {"epochs": 10, "seed": experiment_index, "dataset": "synthetic"} + simulation_rng = random.Random(simulation_config["seed"]) + offset = simulation_rng.random() / 5 with wandb.init( - # Set the project where this run will be logged - project="basic-intro", - entity=wandb_settings["entity"], - # Pass a run name (otherwise it is randomly assigned) - name=f"experiment_{run_index}", - # Track hyperparameters and run metadata - config={ - "learning_rate": 0.02, - "architecture": "CNN", - "dataset": "CIFAR-100", - "epochs": 10, - }, - ) as basic_run: - # This simple block simulates a training loop logging metrics - epochs = 10 - offset = random.random() / 5 - for epoch in range(2, epochs): - accuracy = 1 - 2 ** (-epoch) - random.random() / epoch - offset - loss = 2 ** (-epoch) + random.random() / epoch + offset - - # 2. Log metrics from your script to W&B - basic_run.log({"acc": accuracy, "loss": loss}) - run_urls.append(basic_run.url) - # Exiting the context manager marks the run as finished - - return run_urls + project=simulation_project, + entity=entity, + name=f"simulation-{experiment_index + 1}", + config=simulation_config, + ) as simulation_run: + for simulation_epoch in range(1, simulation_config["epochs"] + 1): + simulated_accuracy = 1 - 2 ** -simulation_epoch - simulation_rng.random() / 10 - offset + simulated_loss = 2 ** -simulation_epoch + simulation_rng.random() / 10 + offset + simulation_run.log({ + "epoch": simulation_epoch, + "acc": simulated_accuracy, + "loss": simulated_loss, + }) + return @app.cell(hide_code=True) -def _(run_simulated_experiments, wandb_settings): - simulate_runs_button = mo.ui.run_button( - label="Create five simulated W&B runs" - ) - _entity_note = ( - f" for entity `{wandb_settings['entity']}`" - if wandb_settings["entity"] - else " using your default entity" - ) - mo.vstack( - [ - mo.md( - f"Clicking the button runs `{run_simulated_experiments.__name__}` " - "to create five runs in the `basic-intro` project and log " - f"synthetic accuracy and loss metrics{_entity_note}." - ), - simulate_runs_button, - ] - ) - return (simulate_runs_button,) +def _(): + mo.md(r""" + ## Compare runs in your project + Open a run link printed by Weights & Biases in the previous cell. In the simulation project you selected, select the five simulation runs and compare their `acc` and `loss` + curves. Choose `epoch` as the horizontal axis to compare the same training + point across runs. Inspect each run's config to see its seed and epoch count. -@app.cell(hide_code=True) -def _(simulate_runs_button, wandb_settings): - mo.stop( - not simulate_runs_button.value, - mo.callout( - mo.md("Click the button above when you are ready to create the runs."), - kind="info", - ), - ) - - _simulated_run_urls = run_simulated_experiments(wandb_settings) - _run_links = "\n".join( - f"- [Experiment {index}]({url})" - for index, url in enumerate(_simulated_run_urls, start=1) - ) - mo.callout( - mo.md(f"Created five runs:\n\n{_run_links}"), - kind="success", - ) - return + Next, we apply the same logging pattern to a real MNIST classifier. + ## Set the PyTorch Experiment Configuration -@app.cell(hide_code=True) -def _(): - mo.md(r""" - View how your machine learning peformed in your W&B project. Copy and paste the URL link that is printed from the previous cell. The URL will redirect you to a W&B project that contains a dashboard showing graphs the show how + The next cell chooses CUDA when available, otherwise CPU, and defines common + training settings. We train three fresh models with dropout values 0.1, 0.3, + and 0.5 so you can compare them in Weights & Biases. - The following image shows what a dashboard can look like: + To keep the lesson short, we use every fifth MNIST example. This gives us + 12,000 training images and 2,000 held-out images. We repeatedly evaluate the + held-out subset when comparing dropout rates, so it serves as validation + data. An independent final evaluation would require another test set. """) return -@app.cell(hide_code=True) +@app.cell def _(): - mo.md(r""" - ![](https://i.imgur.com/Pell4Oo.png) - """) - return + device = "cuda:0" if torch.cuda.is_available() else "cpu" + training_config = { + "epochs": 5, + "batch_size": 128, + "lr": 1e-3, + "seed": 42, + "sample_stride": 5, + "architecture": "MLP", + "dataset": "MNIST", + } + dropout_values = [0.1, 0.3, 0.5] + return device, dropout_values, training_config @app.cell(hide_code=True) def _(): mo.md(r""" - Now that we know how to integrate W&B into a pseudo machine learning training loop, let's track a machine learning experiment using a basic PyTorch neural network. The following code will also upload model checkpoints to W&B that you can then share with other teams in in your organization. - - ## Track a machine learning experiment using PyTorch - - The following code cell defines and trains a simple MNIST classifier. During training, you will see W&B prints out URLs. Click on the project page link to see your results stream in live to a W&B project. + ## Load MNIST batches - W&B runs automatically log [metrics](https://docs.wandb.ai/ref/app/pages/run-page#charts-tab), - [system information](https://docs.wandb.ai/ref/app/pages/run-page#system-tab), - [hyperparameters](https://docs.wandb.ai/ref/app/pages/run-page#overview-tab), - [terminal output](https://docs.wandb.ai/ref/app/pages/run-page#logs-tab) and - you'll see an [interactive table](https://docs.wandb.ai/guides/data-vis) - with model inputs and outputs. + `get_dataloader()` loads MNIST into temporary storage and selects every + `sample_stride`-th image. `ToTensor()` converts each grayscale image to a + tensor with pixel values between 0 and 1. - ### Set up PyTorch Dataloader - The following cell defines some useful functions that we will need to train our machine learning model. The functions themselves are not unique to W&B so we'll not cover them in detail here. See the PyTorch documentation for more information on how to define [forward and backward training loop](https://pytorch.org/tutorials/beginner/nn_tutorial.html), how to use [PyTorch DataLoaders](https://pytorch.org/tutorials/beginner/basics/data_tutorial.html) to load data in for training, and how define PyTorch models using the [`torch.nn.Sequential` Class](https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html). + Training batches are shuffled. Validation batches retain the same order + across runs so we can compare predictions on the same images. Calling + this helper downloads missing data. `num_workers=0` works across notebook + runtimes, and pinned memory helps transfer batches to CUDA when available. """) return @app.function -def get_dataloader(is_train, batch_size, sample_stride=5): - """Get a sampled MNIST training or validation DataLoader.""" +def get_dataloader(is_train, batch_size, sample_stride): dataset = MNIST( root=Path(tempfile.gettempdir()) / "wandb-intro-mnist", train=is_train, @@ -281,21 +236,32 @@ def get_dataloader(is_train, batch_size, sample_stride=5): download=True, ) sampled_dataset = torch.utils.data.Subset( - dataset, - indices=range(0, len(dataset), sample_stride), + dataset, indices=range(0, len(dataset), sample_stride), ) return torch.utils.data.DataLoader( - dataset=sampled_dataset, + sampled_dataset, batch_size=batch_size, shuffle=is_train, - pin_memory=device.startswith("cuda"), - num_workers=2, + pin_memory=torch.cuda.is_available(), + num_workers=0, ) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ### Build a classifier to compare dropout rates + + The MLP flattens each 28-by-28 image, learns 256 hidden features, and outputs + ten logits, one per digit. Cross-entropy loss accepts these logits directly. + `dropout` controls how many hidden activations are randomly zeroed during + training. Each call creates a fresh model on the selected device. + """) + return + + @app.function -def get_model(dropout): - """Build the small multilayer perceptron used in this tutorial.""" +def get_model(dropout, device): return nn.Sequential( nn.Flatten(), nn.Linear(28 * 28, 256), @@ -306,387 +272,218 @@ def get_model(dropout): ).to(device) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ### Evaluate on the held-out images + + `model.eval()` turns off dropout and uses batch normalization's learned + statistics. `torch.inference_mode()` avoids tracking gradients during + validation. The helper averages loss by image count, so a smaller final + batch contributes the correct weight, and computes accuracy across the + entire validation subset. + + It also returns the first batch's images, predictions, labels, and softmax + probabilities on the CPU. We will use that fixed batch to build a Weights & Biases Table. + """) + return + + @app.function -def validate_model( - training_run, - model, - valid_dl, - loss_func, - log_images=False, - batch_idx=0, -): - """Evaluate the model and optionally log one prediction table.""" +def evaluate_model(model, validation_loader, loss_function, device): model.eval() - validation_loss = 0.0 + loss_sum = 0.0 correct = 0 + prediction_batch = None with torch.inference_mode(): - for index, (images, labels) in enumerate(valid_dl): + for batch_index, (images, labels) in enumerate(validation_loader): images, labels = images.to(device), labels.to(device) - - # Forward pass outputs = model(images) - validation_loss += loss_func(outputs, labels).item() * labels.size(0) - - # Compute accuracy and accumulate - predicted = outputs.argmax(dim=1) - correct += (predicted == labels).sum().item() - - # Log one batch of images to the dashboard, always same batch_idx. - if index == batch_idx and log_images: - log_image_table( - training_run, - images, - predicted, - labels, - outputs.softmax(dim=1), + predictions = outputs.argmax(dim=1) + loss_sum += loss_function(outputs, labels).item() * len(labels) + correct += (predictions == labels).sum().item() + if batch_index == 0: + prediction_batch = ( + images.cpu(), predictions.cpu(), labels.cpu(), + outputs.softmax(dim=1).cpu(), ) - return ( - validation_loss / len(valid_dl.dataset), - correct / len(valid_dl.dataset), + loss_sum / len(validation_loader.dataset), + correct / len(validation_loader.dataset), + prediction_batch, ) @app.cell(hide_code=True) def _(): mo.md(r""" - ### Create a table to compare the predicted values versus the true value + ## Build a Prediction Table - The following cell is unique to W&B, so let's go over it. - - In the cell we define a function called `log_image_table`. Though technically, optional, this function creates a W&B Table object. We will use the table object to create a table that shows what the model predicted for each image. - - More specifically, each row will conists of the image fed to the model, along with predicted value and the actual value (label). + The next helper function creates a `wandb.Table` with one row per image. Each row + contains a viewable `wandb.Image`, the predicted digit, the true label, + and ten class probabilities. """) return @app.function -def log_image_table(training_run, images, predicted, labels, probabilities): - """Log a W&B Table with images, predictions, labels, and class scores.""" - # Create a W&B Table to log images, labels, and predictions - table = wandb.Table( - columns=["image", "pred", "target"] - + [f"score_{index}" for index in range(10)] +def make_prediction_table(images, predictions, labels, probabilities): + prediction_table = wandb.Table( + columns=["image", "pred", "target"] + [f"score_{digit}" for digit in range(10)] ) - for image, prediction, target, probability in zip( - images.to("cpu"), - predicted.to("cpu"), - labels.to("cpu"), - probabilities.to("cpu"), - ): - table.add_data( - wandb.Image(image[0].numpy() * 255), - int(prediction), - int(target), - *probability.numpy(), + for image, prediction, label, scores in zip(images, predictions, labels, probabilities): + prediction_table.add_data( + wandb.Image(image), + prediction.item(), + label.item(), + *scores.tolist(), ) - training_run.log({"predictions_table": table}, commit=False) + return prediction_table @app.cell(hide_code=True) def _(): mo.md(r""" - ### Train your model and upload checkpoints + ## Train, Log Metrics, and Save Checkpoints + + The next cell runs one experiment per dropout value. `training_run.config` + records the settings, and every run starts with a fresh model and optimizer. + + `training_run.log()` records training loss by batch, validation metrics by + epoch, and a prediction table after the final epoch. The scalar summary + `final_validation_accuracy` makes the final result easy to compare across runs. - The following code trains and saves model checkpoints to your project. Use model checkpoints like you normally would to assess how the model performed during training. + At each epoch, `torch.save(model.state_dict(), ...)` saves model weights + to a separate file so later epochs cannot overwrite an earlier checkpoint. + `training_run.log_model()` uploads that checkpoint as a model Artifact with + an epoch alias. The model architecture and dropout are recorded in the run + configuration. Recreate that architecture before loading the saved weights. - W&B also makes it easy to share your saved models and model checkpoints with other members of your team or organization. To learn how to share your model and model checkpoints with members outside of your team, see [W&B Registry](https://docs.wandb.ai/guides/registry). + Checkpoints are kept in a temporary directory until the run finishes logging. """) return -@app.function -def train_mnist_experiments(wandb_settings): - """Train three MNIST models and log metrics and checkpoints to W&B.""" - if wandb.run is not None: - wandb.finish() - - run_urls = [] - # Launch 3 experiments, trying different dropout rates - for _experiment_index in range(3): - with tempfile.TemporaryDirectory() as checkpoint_directory: - # Initialize a W&B run. The context manager closes it after training. +@app.cell +def _(device, dropout_values, entity, training_config, training_project): + for dropout in dropout_values: + torch.manual_seed(training_config["seed"]) + with tempfile.TemporaryDirectory(prefix="wandb-mnist-checkpoints-") as checkpoint_directory: with wandb.init( - project="pytorch-intro", - entity=wandb_settings["entity"], - config={ - "epochs": 5, - "batch_size": 128, - "lr": 1e-3, - "dropout": random.uniform(0.01, 0.80), - }, + project=training_project, + entity=entity, + config={**training_config, "dropout": dropout}, ) as training_run: - # Copy your config - config = training_run.config - - # Get the data - train_dl = get_dataloader( - is_train=True, - batch_size=config.batch_size, - ) - valid_dl = get_dataloader( - is_train=False, - batch_size=2 * config.batch_size, - ) - n_steps_per_epoch = math.ceil( - len(train_dl.dataset) / config.batch_size - ) - - # A simple MLP model - model = get_model(config.dropout) - - # Make the loss and optimizer - loss_func = nn.CrossEntropyLoss() - optimizer = torch.optim.Adam(model.parameters(), lr=config.lr) - - # Training + run_config = training_run.config + train_loader = get_dataloader(True, run_config.batch_size, run_config.sample_stride) + validation_loader = get_dataloader(False, 2 * run_config.batch_size, run_config.sample_stride) + model = get_model(run_config.dropout, device) + loss_function = nn.CrossEntropyLoss() + optimizer = torch.optim.Adam(model.parameters(), lr=run_config.lr) example_count = 0 - for epoch in range(config.epochs): + for epoch in range(run_config.epochs): model.train() - for step, (images, labels) in enumerate(train_dl): + for step, (images, labels) in enumerate(train_loader): images, labels = images.to(device), labels.to(device) outputs = model(images) - train_loss = loss_func(outputs, labels) + train_loss = loss_function(outputs, labels) optimizer.zero_grad() train_loss.backward() optimizer.step() - example_count += len(images) - train_metrics = { + training_run.log({ "train/train_loss": train_loss.item(), - "train/epoch": ( - step + 1 + n_steps_per_epoch * epoch - ) - / n_steps_per_epoch, + "train/epoch": epoch + (step + 1) / len(train_loader), "train/example_ct": example_count, - } - if step + 1 < n_steps_per_epoch: - # Log train metrics to W&B - training_run.log(train_metrics) - - validation_loss, accuracy = validate_model( - training_run, - model, - valid_dl, - loss_func, - log_images=epoch == config.epochs - 1, - ) + }) - # Log train and validation metrics to W&B + validation_loss, validation_accuracy, prediction_batch = evaluate_model( + model, validation_loader, loss_function, device, + ) validation_metrics = { + "epoch": epoch + 1, "val/val_loss": validation_loss, - "val/val_accuracy": accuracy, + "val/val_accuracy": validation_accuracy, } - training_run.log({**train_metrics, **validation_metrics}) + if epoch == run_config.epochs - 1: + validation_metrics["predictions_table"] = make_prediction_table(*prediction_batch) + training_run.log(validation_metrics) - # Save the model checkpoint to W&B - checkpoint_path = Path(checkpoint_directory) / "my_model.pt" - torch.save(model, checkpoint_path) + checkpoint_path = Path(checkpoint_directory) / f"model_weights_epoch_{epoch + 1}.pt" + torch.save(model.state_dict(), checkpoint_path) training_run.log_model( str(checkpoint_path), - "my_mnist_model", - aliases=[ - f"epoch-{epoch + 1}_dropout-{round(config.dropout, 4)}" - ], + name=f"mnist-{training_run.id}", + aliases=[f"epoch-{epoch + 1}"], ) print( - f"Epoch: {epoch + 1}, " - f"Train Loss: {train_loss.item():.3f}, " - f"Valid Loss: {validation_loss:.3f}, " - f"Accuracy: {accuracy:.2f}" + f"Dropout {dropout}, epoch {epoch + 1}: " + f"validation loss {validation_loss:.3f}, accuracy {validation_accuracy:.2%}" ) - # If you had a test set, this is where you could log it as a - # Summary metric. This tutorial records validation accuracy. - training_run.summary["final_validation_accuracy"] = accuracy - run_urls.append(training_run.url) - - return run_urls - - -@app.cell(hide_code=True) -def _(train_mnist_experiments, wandb_settings): - train_models_button = mo.ui.run_button( - label="Download MNIST, train three models, and log to W&B" - ) - _entity_note = ( - f" for entity `{wandb_settings['entity']}`" - if wandb_settings["entity"] - else " using your default entity" - ) - mo.vstack( - [ - mo.md( - f"This runs `{train_mnist_experiments.__name__}` to download " - "MNIST, train three five-epoch models, and upload metrics, " - f"prediction tables, and model checkpoints{_entity_note}." - ), - train_models_button, - ] - ) - return (train_models_button,) - - -@app.cell(hide_code=True) -def _(train_models_button, wandb_settings): - mo.stop( - not train_models_button.value, - mo.callout( - mo.md("Click the button above when you are ready to train."), - kind="info", - ), - ) - - _training_run_urls = train_mnist_experiments(wandb_settings) - _training_links = "\n".join( - f"- [Training run {index}]({url})" - for index, url in enumerate(_training_run_urls, start=1) - ) - mo.callout( - mo.md(f"Training finished:\n\n{_training_links}"), - kind="success", - ) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - You have now trained your first model using W&B. Click on one of the links above to see your metrics and see your saved model checkpoints in the Artifacts tab in the W&B App UI - """) + training_run.summary["final_validation_accuracy"] = validation_accuracy return @app.cell(hide_code=True) def _(): mo.md(r""" - ## (Optional) Set up a W&B Alert - - Create a [W&B Alerts](https://docs.wandb.ai/guides/track/alert) to send alerts to your Slack or email from your Python code. - - There are 2 steps to follow the first time you'd like to send a Slack or email alert, triggered from your code: - - 1) Turn on Alerts in your W&B [User Settings](https://wandb.ai/settings) - 2) Add `wandb.alert()` to your code. For example: - - ```python - wandb.alert( - title="Low accuracy", - text=f"Accuracy is below the acceptable threshold" - ) - ``` - - The following cell shows a minimal example below to see how to use `wandb.alert` + ## Inspect Metrics, Predictions, and Models + + In your selected training project, compare the three runs' `val/val_loss` and + `val/val_accuracy` curves. Use the config column `dropout` to identify each + experiment and `final_validation_accuracy` to compare their final results. + Open a run's `predictions_table` and filter `pred != target` to inspect + mistakes alongside the ten class probabilities. In **Artifacts**, open its + `mnist-` model collection and inspect the versions with `epoch-1`, + `epoch-2`, and later aliases. + + ## Optional: Send an Alert + + The next cell demonstrates `alert_run.alert()`. To try it, enable notifications + in your [Weights & Biases user settings](https://wandb.ai/settings) and change + `send_example_alert` to `True`. This creates a separate run and can send a + real notification through the email or Slack settings you configured. + + We log three synthetic accuracy values. The final value crosses a threshold + of 0.3 and triggers an alert. This is independent of the MNIST results and + does not run until you opt in with the Python setting below. """) return -@app.function -def create_low_accuracy_alert(wandb_settings): - """Log synthetic accuracy values and alert when one is too low.""" - if wandb.run is not None: - wandb.finish() - - # Start a W&B run. The context manager marks it finished on exit. - with wandb.init( - project="pytorch-intro", - entity=wandb_settings["entity"], - ) as alert_run: - # Simulate a model training loop - accuracy_threshold = 0.3 - for training_step in range(1000): - # Generate a random number for accuracy - accuracy = round(random.random() + random.random(), 3) - print(f"Accuracy is: {accuracy}, threshold: {accuracy_threshold}") - - # Log accuracy to W&B - alert_run.log({"Accuracy": accuracy}) - - # If accuracy is below the threshold, fire a W&B Alert and stop. - if accuracy <= accuracy_threshold: - # Send the W&B Alert - alert_run.alert( - title="Low Accuracy", - text=( - f"Accuracy {accuracy} at step {training_step} is below " - f"the acceptable threshold, {accuracy_threshold}" - ), - ) - print("Alert triggered") - return alert_run.url, training_step, accuracy - - return alert_run.url, None, None - +@app.cell +def _(entity, training_project): + send_example_alert = False -@app.cell(hide_code=True) -def _(create_low_accuracy_alert, wandb_settings): - send_alert_button = mo.ui.run_button( - label="Create a run and send a low-accuracy alert" - ) - _entity_note = ( - f" for entity `{wandb_settings['entity']}`" - if wandb_settings["entity"] - else " using your default entity" - ) - mo.vstack( - [ - mo.callout( - mo.md( - f"This runs `{create_low_accuracy_alert.__name__}` to create " - f"a run in `pytorch-intro`{_entity_note}. If W&B Alerts are " - "enabled, it may also send a real Slack or email notification." - ), - kind="warn", - ), - send_alert_button, - ] - ) - return (send_alert_button,) - - -@app.cell(hide_code=True) -def _(send_alert_button, wandb_settings): - mo.stop( - not send_alert_button.value, - mo.callout( - mo.md("Click the button above when you are ready to test an alert."), - kind="info", - ), - ) - - _alert_run_url, _alert_step, _alert_accuracy = create_low_accuracy_alert( - wandb_settings - ) - if _alert_step is None: - _alert_result = mo.callout( - mo.md( - "The simulation completed without crossing the threshold. " - f"[Open the run in W&B]({_alert_run_url})." - ), - kind="warn", - ) - else: - _alert_result = mo.callout( - mo.md( - f"Alert triggered at step {_alert_step} with accuracy " - f"{_alert_accuracy:.3f}. [Open the run in W&B]({_alert_run_url})." - ), - kind="success", - ) - _alert_result + if send_example_alert: + with wandb.init(project=training_project, entity=entity, job_type="alert-demo") as alert_run: + accuracy_threshold = 0.3 + for alert_step, alert_accuracy in enumerate([0.8, 0.65, 0.25]): + alert_run.log({"step": alert_step, "accuracy": alert_accuracy}) + if alert_accuracy < accuracy_threshold: + alert_run.alert( + title="Low accuracy", + text=f"Demo accuracy {alert_accuracy} is below {accuracy_threshold} at step {alert_step}.", + ) + print(f"Alert triggered: {alert_run.url}") + break return @app.cell(hide_code=True) def _(): mo.md(r""" - You can find the full docs for [W&B Alerts here](https://docs.wandb.ai/guides/track/alert). + ## Next Steps + + You have used the same run/log pattern for simulated metrics and real + training, then added Tables, checkpoint Artifacts, and an optional alert. - ## Next steps - The next tutorial you will learn how to do hyperparameter optimization using W&B Sweeps: - [Hyperparameters sweeps using PyTorch](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py/server) + Next, automate hyperparameter comparisons with + [Weights & Biases Sweeps using PyTorch](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py/server). + See the [Weights & Biases Alerts guide](https://docs.wandb.ai/guides/track/alert) + for notification settings. """) return diff --git a/marimo/convert/lcm-diffusers/lcm_diffusers.py b/marimo/convert/lcm-diffusers/lcm_diffusers.py index 0b15f648..67ef0d60 100644 --- a/marimo/convert/lcm-diffusers/lcm_diffusers.py +++ b/marimo/convert/lcm-diffusers/lcm_diffusers.py @@ -13,7 +13,7 @@ import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App(auto_download=["html"]) with app.setup: @@ -38,9 +38,9 @@ def _(): - Generate images from text with [Latent Consistency Models](https://huggingface.co/docs/diffusers/api/pipelines/latent_consistency_models) and [Diffusers](https://huggingface.co/docs/diffusers). - Manage image-generation experiments with [Weights & Biases](https://wandb.ai/site). - - Log prompts, generated images, and experiment configuration to W&B for visualization. + - Log prompts, generated images, and experiment configuration to Weights & Biases for visualization. - ![Diffusers autologging in W&B](https://raw.githubusercontent.com/wandb/examples/main/colabs/diffusers/assets/diffusers-autolog-4.gif) + ![Diffusers autologging in Weights & Biases](https://raw.githubusercontent.com/wandb/examples/main/colabs/diffusers/assets/diffusers-autolog-4.gif) """) return @@ -48,84 +48,84 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials. If this is your first time using W&B, [create a free account](https://wandb.ai/signup). + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - A [Hugging Face token](https://huggingface.co/settings/tokens) is optional. Supplying one avoids anonymous Hub rate limits and can make the initial model download more reliable. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `diffusers_logging`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - _hf_token_input = mo.ui.text( - kind="password", - label="Hugging Face token (optional)", - placeholder="Uses cached Hugging Face credentials when blank", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{hf_token}") - .batch( - api_key=_api_key_input, - entity=_entity_input, - hf_token=_hf_token_input, - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="diffusers_logging", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before generating and logging images."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() - hf_token = wandb_login_form.value["hf_token"].strip() or None try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": "diffusers_logging", - "entity": _entity or None, - } - mo.callout(mo.md("Connected to W&B."), kind="success") - return hf_token, wandb_settings + entity = _entity + project = _project + wandb_settings = {"entity": entity, "project": project} + mo.md("✓ Connected to Weights & Biases.") + return (wandb_settings,) + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ### Optional Hugging Face authentication + + A [Hugging Face token](https://huggingface.co/settings/tokens) authenticates + model downloads, which can help if anonymous requests are rate-limited. Leave the field blank to use cached Hugging Face credentials. + """) + return + + +@app.cell(hide_code=True) +def _(): + hf_token_form = mo.ui.text(kind="password", label="Hugging Face token (optional)").form( + submit_button_label="Set Hugging Face token" + ) + hf_token_form + return (hf_token_form,) + + +@app.cell(hide_code=True) +def _(hf_token_form): + hf_token = (hf_token_form.value or "").strip() or None + return (hf_token,) @app.cell(hide_code=True) @@ -133,7 +133,8 @@ def _(): mo.md(r""" ## Generate and log images - The example uses two prompts and a fixed seed so you can reproduce the result. When you click the button below, the notebook downloads `SimianLuo/LCM_Dreamshaper_v7`, generates four images, and creates one W&B run in the `diffusers_logging` project. It uses CUDA, Apple Silicon's MPS backend, or CPU, in that order. + The example uses two prompts and a fixed seed to make repeated runs easier + to compare. Results can still differ across devices and library versions. When you click the button below, the notebook downloads `SimianLuo/LCM_Dreamshaper_v7`, generates four images, and creates one Weights & Biases run in your selected project. It uses CUDA, Apple Silicon's MPS backend, or CPU, in that order. """) return @@ -147,7 +148,7 @@ def _(): ] # Make the experiment reproducible by controlling randomness. - # The seed is automatically logged to W&B. + # The seed is automatically logged to Weights & Biases. seed = 10 # LCMs are designed for fast inference in very few denoising steps. @@ -167,7 +168,7 @@ def generate_images_with_wandb( wandb_settings, hf_token, ): - """Generate images and let W&B Diffusers autolog capture the experiment.""" + """Generate images and let Weights & Biases Diffusers autolog capture the experiment.""" if wandb.run is not None: wandb.finish() @@ -195,7 +196,7 @@ def generate_images_with_wandb( # A CPU generator produces repeatable results on both CPU and GPU runtimes. generator = torch.Generator(device="cpu").manual_seed(seed) - # W&B Diffusers autologging records the prompts, generated images, pipeline + # Weights & Biases Diffusers autologging records the prompts, generated images, pipeline # architecture, and experiment configuration used by the pipeline call. try: autolog(init=wandb_settings) @@ -223,7 +224,7 @@ def _( wandb_settings, ): generate_button = mo.ui.run_button( - label="Download the model, generate images, and log to W&B" + label="Download the model, generate images, and log to Weights & Biases" ) _entity_note = ( f" for entity `{wandb_settings['entity']}`" @@ -237,7 +238,7 @@ def _( f"This runs `{generate_images_with_wandb.__name__}`, downloads " f"model weights, generates {len(prompt) * num_images_per_prompt} " f"images in {num_inference_steps} denoising steps with seed " - f"`{seed}`, and creates one remote W&B run{_entity_note}." + f"`{seed}`, and creates one remote Weights & Biases run{_entity_note}." ), kind="warn", ), @@ -298,7 +299,7 @@ def _(generation_result): _run_url = generation_result["run_url"] _run_message = ( f"Generation finished on `{generation_result['torch_device']}`. " - f"[Open the W&B run]({_run_url}) to inspect the prompts, images, and configuration." + f"[Open the Weights & Biases run]({_run_url}) to inspect the prompts, images, and configuration." if _run_url else f"Generation finished on `{generation_result['torch_device']}`." ) diff --git a/marimo/convert/log-a-confusion-matrix-with-w-b/log_a_confusion_matrix_with_w_b.py b/marimo/convert/log-a-confusion-matrix-with-w-b/log_a_confusion_matrix_with_w_b.py index f30d2e96..1c7449e9 100644 --- a/marimo/convert/log-a-confusion-matrix-with-w-b/log_a_confusion_matrix_with_w_b.py +++ b/marimo/convert/log-a-confusion-matrix-with-w-b/log_a_confusion_matrix_with_w_b.py @@ -12,12 +12,15 @@ # "wandb==0.30.0", # ] # /// -"""Fine-tune InceptionV3 and log a confusion matrix to W&B.""" +"""Fine-tune InceptionV3 and log a confusion matrix to Weights & Biases.""" import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="Plot a Confusion Matrix with W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Plot a Confusion Matrix with Weights & Biases", +) with app.setup: import shutil @@ -31,7 +34,7 @@ import PIL import tensorflow as tf import wandb - from tensorflow.keras.applications.inception_v3 import InceptionV3 + from tensorflow.keras.applications.inception_v3 import InceptionV3, preprocess_input from tensorflow.keras.callbacks import Callback from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.models import Model @@ -39,31 +42,58 @@ from wandb.integration.keras import WandbMetricsLogger, WandbModelCheckpoint DATASET_URL = "https://storage.googleapis.com/wandb_datasets/nature_12K.zip" - PROJECT_NAME = "confusion_matrix" RUNTIME_CACHE_ROOT = ( - Path(tempfile.gettempdir()) / "wandb-examples" / "inaturalist-12k" + Path(tempfile.gettempdir()) / "data" / "marimo"/ "inaturalist-12k" ) @app.cell(hide_code=True) def _(): mo.md(r""" - # Plot a Confusion Matrix with W&B + - ## Method: `wandb.plot.confusion_matrix()` + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - - More info and customization details: [Confusion Matrix](https://wandb.ai/wandb/plots/reports/Confusion-Matrix--VmlldzozMDg1NTM) - - More examples in this W&B project: [Custom Charts](https://app.wandb.ai/demo-team/custom-charts). + # Plot a Confusion Matrix with Weights & Biases - This notebook explores a transfer learning problem: finetuning InceptionV3 with ImageNet weights to identify 10 types of living things (birds, plants, insects, etc) from 10K photos via [iNaturalist 2017](https://github.com/visipedia/inat_comp). + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/log-a-confusion-matrix-with-w-b/log_a_confusion_matrix_with_w_b.py/server) + + Learn to log a confusion matrix after each training epoch and use it to + identify which classes a model confuses. The example trains a classification + head on a frozen InceptionV3 backbone using a ten-class sample from + [iNaturalist 2017](https://github.com/visipedia/inat_comp). ![confusion_matrix](https://i.imgur.com/rvKx8RF.png) - Note: Hyperparameters like number of epochs and training dataset size are set to minimum values here for demo efficiency. On the full training data, the model should get to the low 80s in validation accuracy within an epoch or so. + The small training defaults are intended to demonstrate logging. They do + not establish an expected accuracy. Inspect the confusion matrix alongside + validation loss and accuracy before deciding what to change. + """) + return + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + Edit these values to compare runs. Training and validation use whole batches, + rounded up to cover the requested example counts (up to the dataset size). + Increase `num_train` or the epoch count to test whether additional training + improves validation performance. + The confusion matrix uses the first `num_log_batches` validation batches each + epoch. Increase this value to include more examples in the chart. """) return @@ -71,105 +101,100 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases - Enter a [W&B API key](https://wandb.ai/authorize) and an optional team entity below. Leave the key blank when `WANDB_API_KEY` is configured in the Molab Secrets panel or this runtime already has W&B credentials. If needed, [create a free W&B account](https://wandb.ai/signup). + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Your entity is the first path segment after `wandb.ai` when you open a W&B workspace. The API key is used only for `wandb.login()` and is never included in the run configuration or notebook output. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `confusion_matrix`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="confusion_matrix", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B before configuring the experiment."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "Molab Secrets configuration and submit again.\n\n" - f"W&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": PROJECT_NAME, - "entity": _entity or None, + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell +def _(): + training_config = { + "num_train": 100, + "num_val": 500, + "fc_size": 1024, + "img_width": 299, + "img_height": 299, + "batch_size": 32, + "pretrain_epochs": 1, + "num_log_batches": 15, + "random_seed": 23, } - _entity_note = ( - f" Runs will be logged to `{wandb_settings['entity']}`." - if wandb_settings["entity"] - else " Runs will use your default W&B entity." - ) - mo.callout(mo.md(f"Connected to W&B.{_entity_note}"), kind="success") - return (wandb_settings,) + return (training_config,) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Setup: Access the remote dataset - - The iNaturalist sample contains 10,000 training images and 2,000 validation images, evenly distributed across 10 classes of living things like birds, insects, plants, and mammals. **The archive is approximately 3.6 GB, so the first transfer and extraction can take several minutes.** - - The `dataset_fs` value below exposes the public archive through an `fsspec` reference filesystem, so you can browse it in marimo's data side panel without transferring the whole file. - - Training still requires local image directories. The first time you submit the training form, `ensure_dataset()` streams the archive into a temporary runtime cache and extracts it there. Later submissions reuse that cache; no dataset files are written beside the notebook. + ## Prepare the iNaturalist sample + + The [iNaturalist 2017](https://github.com/visipedia/inat_comp) sample contains + 10,000 training images and 2,000 validation images across 10 classes. + **The archive is about 3.6 GB**, even when training on a small sample. + The cells below expose the archive and define a download helper. The call + to `ensure_dataset()` downloads and extracts it. Later cells load ImageNet + weights and start training. Download and training time depend on your network + and hardware. + + `dataset_fs` exposes the public archive in marimo's data side panel without + downloading it. `ensure_dataset()` streams it into a temporary runtime cache + and reuses the extracted directories on later runs. """) return @app.cell def _(): - # Expose the remote dataset as a named filesystem so it appears in - # marimo's data side panel. dataset_fs = fsspec.filesystem( "reference", - fo={ - "version": 1, - "refs": {"nature_12K.zip": [DATASET_URL]}, - }, + fo={"version": 1, "refs": {"nature_12K.zip": [DATASET_URL]}}, ) return (dataset_fs,) @@ -182,7 +207,7 @@ def ensure_dataset(dataset_fs): validation_path = RUNTIME_CACHE_ROOT / "inaturalist_12K" / "val" if train_path.is_dir() and validation_path.is_dir(): - return str(train_path), str(validation_path), "Reused the extracted dataset." + return str(train_path), str(validation_path) RUNTIME_CACHE_ROOT.mkdir(parents=True, exist_ok=True) if not archive_path.exists(): @@ -203,19 +228,64 @@ def ensure_dataset(dataset_fs): "inaturalist_12K/val." ) - return str(train_path), str(validation_path), "Streamed and extracted the remote dataset." + return str(train_path), str(validation_path) + + +@app.cell +def _(dataset_fs): + train_data, val_data = ensure_dataset(dataset_fs) + return train_data, val_data @app.cell(hide_code=True) def _(): mo.md(r""" - ## Training code + ## Build the data generators and model - Feel free to try different values for "NUM_TRAIN" and "NUM_EPOCHS" below so you can see a variety of confusion matrices (generally better ones with more training examples/longer training time). + InceptionV3 expects pixels scaled to `[-1, 1]`, so both generators use its + `preprocess_input()` function. Only training images are augmented and shuffled. + Validation keeps a fixed order, and class names follow the generator's numeric + IDs so each row and column of the confusion matrix has the correct label. + + `build_model()` freezes the ImageNet backbone and trains a new classification + head. Only the new head’s weights are updated in this example. """) return +@app.cell +def _(train_data, training_config, val_data): + tf.keras.utils.set_random_seed(training_config["random_seed"]) + + train_datagen = ImageDataGenerator( + preprocessing_function=preprocess_input, + shear_range=0.2, + zoom_range=0.2, + horizontal_flip=True, + ) + validation_datagen = ImageDataGenerator(preprocessing_function=preprocess_input) + + train_generator = train_datagen.flow_from_directory( + train_data, + target_size=(training_config["img_height"], training_config["img_width"]), + batch_size=training_config["batch_size"], + class_mode="categorical", + seed=training_config["random_seed"], + ) + + class_names = list(train_generator.class_indices) + + val_generator = validation_datagen.flow_from_directory( + val_data, + classes=class_names, + target_size=(training_config["img_height"], training_config["img_width"]), + batch_size=training_config["batch_size"], + class_mode="categorical", + shuffle=False, + ) + return class_names, train_generator, val_generator + + @app.function def build_model(fc_size, num_classes): """Load InceptionV3 with ImageNet weights, freeze it, @@ -244,142 +314,50 @@ def build_model(fc_size, num_classes): return model -@app.function -def pretrain(config_defaults, wandb_settings, train_data, val_data): - """Main training loop. - - This is called "pretrain" because it freezes the InceptionV3 layers of the - model and only trains the new top layers on the new data. A subsequent - training phase would unfreeze all the layers and finetune the whole model - on the new data. - """ - if wandb.run is not None: - wandb.finish() - - checkpoint_cache = RUNTIME_CACHE_ROOT / "checkpoints" - checkpoint_cache.mkdir(parents=True, exist_ok=True) - with tempfile.TemporaryDirectory( - prefix="confusion-matrix-", dir=checkpoint_cache - ) as checkpoint_directory: - checkpoint_path = Path(checkpoint_directory) / "checkpoint.keras" - # The checkpoint directory remains alive until the run context finishes - # and W&B has flushed the checkpoint Artifact. - with wandb.init( - project=wandb_settings["project"], - entity=wandb_settings["entity"], - config=config_defaults, - ) as run: - cfg = run.config - - # Set the random seed. - tf.random.set_seed(cfg.random_seed) - - # Also set the NumPy seed to control the train/validation data. - np.random.seed(cfg.random_seed) - - # Create train and validation data generators. - train_datagen = ImageDataGenerator( - rescale=1.0 / 255, - shear_range=0.2, - zoom_range=0.2, - horizontal_flip=True, - ) - validation_datagen = ImageDataGenerator(rescale=1.0 / 255) - - train_generator = train_datagen.flow_from_directory( - train_data, - target_size=(cfg.img_width, cfg.img_height), - batch_size=cfg.batch_size, - class_mode="categorical", - ) - val_generator = validation_datagen.flow_from_directory( - val_data, - target_size=(cfg.img_width, cfg.img_height), - batch_size=cfg.batch_size, - class_mode="categorical", - ) - - # Instantiate the model and callbacks. - model = build_model(cfg.fc_size, cfg.num_classes) - callbacks = [ - WandbMetricsLogger(), - WandbModelCheckpoint(str(checkpoint_path)), - PRMetrics( - run, - val_generator, - cfg.num_log_batches, - ), - ] - - # Train! - history = model.fit( - train_generator, - steps_per_epoch=max(1, cfg.num_train // cfg.batch_size), - epochs=cfg.pretrain_epochs, - validation_data=val_generator, - callbacks=callbacks, - validation_steps=max(1, cfg.num_val // cfg.batch_size), - ) - - final_validation_accuracy = history.history.get( - "val_accuracy", [None] - )[-1] - result = { - "run_url": run.url, - "final_validation_accuracy": ( - float(final_validation_accuracy) - if final_validation_accuracy is not None - else None - ), - } - - return result +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Log a confusion matrix after each epoch + + The custom Keras callback collects validation images and their labels from + the same batches, predicts class probabilities, and takes `argmax` to get + class IDs. `wandb.plot.confusion_matrix()` builds a Weights & Biases chart from those IDs + and the true labels. `training_run.log()` saves it under the stable key + `conf_mat`, making it easy to compare epochs and runs. Diagonal entries are + correct predictions. Off-diagonal entries show which classes are confused. + The matrix covers the validation batches selected by `num_log_batches`, + which may be fewer examples than the validation metrics cover. + """) + return @app.class_definition -class PRMetrics(Callback): - """Custom callback to compute metrics at the end of each training epoch.""" +class ConfusionMatrixLogger(Callback): + """Log predictions for a bounded validation sample after each epoch.""" - def __init__(self, run, generator=None, num_log_batches=1): + def __init__(self, training_run, generator, class_names, num_log_batches): super().__init__() - self.run = run + if num_log_batches < 1: + raise ValueError("num_log_batches must be at least 1") + self.training_run = training_run self.generator = generator - self.num_batches = num_log_batches - - # Store full names of classes in class-ID order. - self.flat_class_names = [ - name - for name, _class_id in sorted( - generator.class_indices.items(), key=lambda item: item[1] - ) - ] + self.class_names = class_names + self.num_batches = min(num_log_batches, len(generator)) def on_epoch_end(self, epoch, logs=None): - # Collect validation data and ground truth labels from the generator. - val_data, val_labels = zip( + images, labels = zip( *(self.generator[index] for index in range(self.num_batches)) ) - val_data, val_labels = np.vstack(val_data), np.vstack(val_labels) - - # Use the trained model to generate predictions for the given number - # of validation data batches (num_batches). - val_predictions = self.model.predict(val_data, verbose=0) - ground_truth_class_ids = val_labels.argmax(axis=1) - - # Take the argmax for each set of prediction scores to return the class - # ID of the highest-confidence prediction. - top_pred_ids = val_predictions.argmax(axis=1) - - # Log the confusion matrix. The key "conf_mat" is the ID of the plot; - # keep it stable so subsequent runs appear on the same plot. - self.run.log( + probabilities = self.model.predict(np.concatenate(images), verbose=0) + self.training_run.log( { + "epoch": epoch, "conf_mat": wandb.plot.confusion_matrix( probs=None, - preds=top_pred_ids, - y_true=ground_truth_class_ids, - class_names=self.flat_class_names, - ) + preds=probabilities.argmax(axis=1), + y_true=np.concatenate(labels).argmax(axis=1), + class_names=self.class_names, + ), } ) @@ -387,148 +365,84 @@ def on_epoch_end(self, epoch, logs=None): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Run the experiment + ## Train and save the results to Weights & Biases - After connecting to W&B above, submit this training form to materialize the remote dataset in the runtime cache if necessary, download the InceptionV3 weights if necessary, train the model, and create one run in the `confusion_matrix` project. A later submission finishes any prior active run before it starts another. + `wandb.init()` records the experiment configuration. `WandbMetricsLogger` + logs loss and accuracy, `WandbModelCheckpoint` saves a model Artifact each + epoch, and `ConfusionMatrixLogger` logs the validation chart. + + The temporary checkpoint directory stays alive until the run finishes and + Weights & Biases flushes the Artifact. The run context finishes automatically, including + when training raises an error. """) return -@app.cell(hide_code=True) -def _(wandb_settings): - _workflow_ready = callable(ensure_dataset) and callable(pretrain) - _num_train_input = mo.ui.number( - start=32, - stop=10_000, - step=1, - value=100, - label="Training examples", - ) - _num_epochs_input = mo.ui.number( - start=1, - stop=20, - step=1, - value=1, - label="Epochs", - ) - training_form = ( - mo.md("{num_train}\n\n{num_epochs}") - .batch( - num_train=_num_train_input, - num_epochs=_num_epochs_input, - ) - .form( - submit_button_label="Prepare data, train, and log to W&B", - submit_button_disabled=not _workflow_ready, - bordered=True, - ) - ) - _destination = ( - f"`{wandb_settings['entity']}/{wandb_settings['project']}`" - if wandb_settings["entity"] - else f"`{wandb_settings['project']}` in your default entity" - ) - mo.vstack( - [ - mo.md(f"This run will be created in {_destination}."), - training_form, - ] - ) - return (training_form,) - - -@app.cell(hide_code=True) -def _(training_form, wandb_settings): - mo.stop( - training_form.value is None, - mo.callout( - mo.md("Review the workflow above, then submit the form to begin."), - kind="info", - ), - ) - - training_request = { - "wandb_settings": dict(wandb_settings), - "num_train": int(training_form.value["num_train"]), - "num_epochs": int(training_form.value["num_epochs"]), - } - return (training_request,) - - @app.cell -def _(training_request): - # Experiment configuration saved to W&B - config_defaults = { - # Number of images used to train; set low for demo training speed. - # You can set this up to 10,000 for the full dataset. - # GOOD CONFIG TO TRY: 100, 500, 1000, 2000 - "num_train": training_request["num_train"], - # Number of images used to validate; set low for demo training speed. - # You can set this up to 2,000 for the full dataset. - "num_val": 500, - "num_classes": 10, - "fc_size": 1024, - - # InceptionV3 settings - "img_width": 299, - "img_height": 299, - "batch_size": 32, - - # Number of epochs; set low for demo training speed. - # GOOD CONFIG TO TRY: 3, 5, 10 - "pretrain_epochs": training_request["num_epochs"], - # Number of validation data batches used to compute metrics at the end - # of each epoch. - "num_log_batches": 15, - # Random seed - "random_seed": 23, - } - config_defaults - return (config_defaults,) +def _( + class_names, + entity, + project, + train_generator, + training_config, + val_generator, +): + with tempfile.TemporaryDirectory( + prefix="confusion-matrix-" + ) as checkpoint_directory: + with wandb.init( + project=project, + entity=entity, + name="inaturalist-inceptionv3-confusion-matrix", + config={**training_config, "num_classes": len(class_names)}, + ) as training_run: + model = build_model(training_config["fc_size"], len(class_names)) + callbacks = [ + WandbMetricsLogger(), + WandbModelCheckpoint( + str(Path(checkpoint_directory) / "checkpoint.keras") + ), + ConfusionMatrixLogger( + training_run, + val_generator, + class_names, + training_config["num_log_batches"], + ), + ] + history = model.fit( + train_generator, + steps_per_epoch=min( + len(train_generator), + max(1, int(np.ceil( + training_config["num_train"] / training_config["batch_size"] + ))), + ), + epochs=training_config["pretrain_epochs"], + validation_data=val_generator, + validation_steps=min( + len(val_generator), + max(1, int(np.ceil( + training_config["num_val"] / training_config["batch_size"] + ))), + ), + callbacks=callbacks, + ) + run_url = training_run.url + return @app.cell(hide_code=True) -def _(config_defaults, dataset_fs): - train_data, val_data, dataset_status = ensure_dataset(dataset_fs) - mo.callout( - mo.md( - f"{dataset_status} Training will use " - f"{config_defaults['num_train']:,} images per epoch." - ), - kind="success", - ) - return train_data, val_data - - -@app.cell -def _(config_defaults, train_data, training_request, val_data): - # Run this cell to launch your experiment! Charts appear in the run page - # under "Media" or "Custom Charts", which you may need to expand. - experiment_result = pretrain( - config_defaults=config_defaults, - wandb_settings=training_request["wandb_settings"], - train_data=train_data, - val_data=val_data, - ) - return (experiment_result,) +def _(): + mo.md(r""" + Open the run in Weights & Biases App UI and find `conf_mat` in the **Custom Charts** panel. + Compare the mistakes across classes, then increase the training sample or + epoch count and run again. + ## Next steps -@app.cell(hide_code=True) -def _(experiment_result): - _accuracy = experiment_result["final_validation_accuracy"] - _accuracy_note = ( - f" The final validation accuracy was `{_accuracy:.3f}`." - if _accuracy is not None - else "" - ) - mo.callout( - mo.md( - f"Training finished.{_accuracy_note} " - f"[Open the run in W&B]({experiment_result['run_url']}) and find " - "`conf_mat` under **Custom Charts** to inspect the confusion matrix." - ), - kind="success", - ) + - More info and customization details: [Confusion Matrix](https://wandb.ai/wandb/plots/reports/Confusion-Matrix--VmlldzozMDg1NTM) + - More examples in this Weights & Biases project: [Custom Charts](https://app.wandb.ai/demo-team/custom-charts). + """) return diff --git a/marimo/convert/log-almost-anything-with-w-b-media/log_almost_anything_with_w_b_media.py b/marimo/convert/log-almost-anything-with-w-b-media/log_almost_anything_with_w_b_media.py index e87eb763..2db2f74b 100644 --- a/marimo/convert/log-almost-anything-with-w-b-media/log_almost_anything_with_w_b_media.py +++ b/marimo/convert/log-almost-anything-with-w-b-media/log_almost_anything_with_w_b_media.py @@ -12,12 +12,11 @@ import marimo -__generated_with = "0.24.0" +__generated_with = "0.25.1" app = marimo.App(auto_download=["html"]) with app.setup: import io - import warnings import fsspec import marimo as mo @@ -27,8 +26,6 @@ import soundfile as sf import wandb - warnings.filterwarnings("ignore", category=UserWarning) - @app.cell(hide_code=True) def _(): @@ -52,41 +49,21 @@ def _(): Use [Weights & Biases](https://wandb.com) for machine learning experiment tracking, dataset versioning, and project collaboration. -
- - Weights & Biases - -
- - # Log (Almost) Anything with W&B Media + # Log (Almost) Anything with Weights & Biases Media [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/log-almost-anything-with-w-b-media/log_almost_anything_with_w_b_media.py/server) - """) - return + Learn how to log numeric metrics and rich media to Weights & Biases. Each + section uses a small generated example or a downloaded asset to demonstrate + one data type. You can apply the same logging calls to model inputs and + predictions in your own experiments. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - In this notebook, we'll show you how to visualize a model's predictions with Weights & Biases: images, videos, audio, tables, HTML, metrics, plots, 3D objects, and point clouds. - - Follow along with the video below, or [open the tutorial on YouTube](https://wandb.me/media-video). View the finished examples in the interactive [W&B dashboard](https://app.wandb.ai/lavanyashukla/visualize-predictions/reports/Visualize-Model-Predictions--Vmlldzo1NjM4OA). - """) - return + For the original walkthrough, [open the tutorial on YouTube](https://wandb.me/media-video). View the finished examples in the interactive [Weights & Biases dashboard](https://app.wandb.ai/lavanyashukla/visualize-predictions/reports/Visualize-Model-Predictions--Vmlldzo1NjM4OA). + ![](https://paper-attachments.dropbox.com/s_C0EC7008D045FC80715C08E7386E0BBDA59DC92DEE34C734FEA67BF25E4BA5CC_1578297638486_image.png) -@app.cell(hide_code=True) -def _(): - mo.Html(r""" - + Running the following cells uploads examples to Weights & Biases. Each section creates a + separate named run. Its context manager finishes the run when the block exits. + Rerunning a logging cell creates a new run. """) return @@ -94,356 +71,278 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ![](https://paper-attachments.dropbox.com/s_C0EC7008D045FC80715C08E7386E0BBDA59DC92DEE34C734FEA67BF25E4BA5CC_1578297638486_image.png) - """) - return + ## Authenticate with Weights & Biases + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. -@app.cell -def _(): - # Stream tutorial assets: audio, video and other data files to log - fs = fsspec.filesystem("github", org="wandb", repo="examples") - asset_base_url = "examples/data" - return asset_base_url, fs + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + ## Set your team and project -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Authentication - - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `visualize-predictions`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="visualize-predictions", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before running a logging example."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again. \n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), - ) - - wandb_settings = { - "project": "visualize-predictions", - "entity": _entity or None, - } - mo.callout( - mo.md("Connected. Each button below creates one separate W&B run."), - kind="success", + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - return (wandb_settings,) - -@app.function -def finish_active_run(): - """Finish a run left open by an interrupted demonstration.""" - if wandb.run is not None: - wandb.finish() + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ## Run the demonstrations + ## Load tutorial assets - Use the button in each section to create only the run you want to inspect. This keeps reactive edits from launching every W&B logging example at once. + We read the original tutorial's stock prices, image, video, piano recording, + HTML, and mesh from the Weights & Biases examples repository using `fsspec`. """) return +@app.cell +def _(): + fs = fsspec.filesystem("github", org="wandb", repo="examples") + asset_base_url = "examples/data" + return asset_base_url, fs + + @app.cell(hide_code=True) def _(): - metrics_button = mo.ui.run_button(label="Log metrics") - mo.vstack([mo.md("### Log metrics"), metrics_button]) - return (metrics_button,) + mo.md(r""" + ### Log metrics + + Read the last 1,000 rows of the bundled Apple stock-price dataset, then log + each closing price with + `metrics_run.log()`. Each call advances Weights & Biases's default step, producing a + time-series chart. The source is + [Macrotrends' Apple stock price history](https://www.macrotrends.net/stocks/charts/AAPL/apple/stock-price-history). + """) + return @app.cell def _(asset_base_url, fs): # Apple stock prices from # https://www.macrotrends.net/stocks/charts/AAPL/apple/stock-price-history - with fs.open(f"{asset_base_url}/apple.csv", "rb") as _apple_file: - apple_prices = pd.read_csv(_apple_file).tail(1000) + with fs.open(f"{asset_base_url}/apple.csv", "rb") as apple_file: + apple_prices = pd.read_csv(apple_file).tail(1000) apple_prices.head() return (apple_prices,) @app.cell -def _(apple_prices, metrics_button, wandb_settings): - mo.stop(not metrics_button.value) - finish_active_run() - - with wandb.init(name="metrics", **wandb_settings) as _metrics_run: +def _(apple_prices, entity, project): + with wandb.init(name="metrics", project=project, entity=entity) as metrics_run: for price in apple_prices["close"]: - _metrics_run.log({"Stock Price": price}) - _metrics_run_url = _metrics_run.url - - mo.callout( - mo.md(f"Metrics logged. [Open the W&B run]({_metrics_run_url})."), - kind="success", - ) + metrics_run.log({"Stock Price": price}) return @app.cell(hide_code=True) def _(): - plots_button = mo.ui.run_button(label="Log a plot") - mo.vstack([mo.md("### Log plots"), plots_button]) - return (plots_button,) + mo.md(r""" + ### Log plots + Log a Matplotlib figure directly. Weights & Biases converts this line plot to an interactive + Plotly chart, so you can inspect Fibonacci values in the run dashboard. + """) + return -@app.cell -def _(plots_button, wandb_settings): - mo.stop(not plots_button.value) - finish_active_run() - _fibonacci = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] +@app.cell +def _(entity, project): + plot_values = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] fig, ax = plt.subplots() - ax.plot(_fibonacci) + ax.plot(plot_values) ax.set_ylabel("Fibonacci values") - with wandb.init(name="plots", **wandb_settings) as _plots_run: - _plots_run.log({"plot": fig}) - _plots_run_url = _plots_run.url - - mo.vstack( - [ - fig, - mo.callout( - mo.md(f"Plot logged. [Open the W&B run]({_plots_run_url})."), - kind="success", - ), - ] - ) + with wandb.init(name="plots", project=project, entity=entity) as plots_run: + plots_run.log({"plot": wandb.Image(fig)}) + + fig return @app.cell(hide_code=True) def _(): - histograms_button = mo.ui.run_button(label="Log histograms") - mo.vstack([mo.md("### Log histograms"), histograms_button]) - return (histograms_button,) + mo.md(r""" + ### Log histograms + + Wrap an array in `wandb.Histogram` to track a distribution. Logging scaled + Fibonacci values across nine steps shows how the distribution changes. + """) + return @app.cell -def _(histograms_button, wandb_settings): - mo.stop(not histograms_button.value) - finish_active_run() - - _fibonacci = np.array([0, 1, 1, 2, 3, 5, 8, 13, 21, 34]) - with wandb.init(name="histograms", **wandb_settings) as _histograms_run: +def _(entity, project): + histogram_values = np.array([0, 1, 1, 2, 3, 5, 8, 13, 21, 34]) + with wandb.init(name="histograms", project=project, entity=entity) as histograms_run: for i in range(1, 10): - _histograms_run.log({"histograms": wandb.Histogram(_fibonacci / i)}) - _histograms_run_url = _histograms_run.url - - mo.callout( - mo.md(f"Histograms logged. [Open the W&B run]({_histograms_run_url})."), - kind="success", - ) + histograms_run.log({"histograms": wandb.Histogram(histogram_values / i)}) return @app.cell(hide_code=True) def _(): - images_button = mo.ui.run_button(label="Log an image") - mo.vstack([mo.md("### Log images"), images_button]) - return (images_button,) - + mo.md(r""" + ### Log images -@app.cell -def _(asset_base_url, fs, images_button, wandb_settings): - mo.stop(not images_button.value) - finish_active_run() + Wrap image pixels in `wandb.Image` and add a caption. Weights & Biases displays the image + in a Media panel, making it useful for inspecting inputs or predictions. + """) + return - with fs.open(f"{asset_base_url}/cafe.jpg", "rb") as _image_file: - im = plt.imread(_image_file, format="jpg") - with wandb.init(name="images", **wandb_settings) as _images_run: - _images_run.log({"img": [wandb.Image(im, caption="Cafe")]}) - _images_run_url = _images_run.url +@app.cell +def _(asset_base_url, entity, fs, project): + with fs.open(f"{asset_base_url}/cafe.jpg", "rb") as image_file: + im = plt.imread(image_file, format="jpg") - mo.callout( - mo.md(f"Image logged. [Open the W&B run]({_images_run_url})."), - kind="success", - ) + with wandb.init(name="images", project=project, entity=entity) as images_run: + images_run.log({"img": [wandb.Image(im, caption="Cafe")]}) return @app.cell(hide_code=True) def _(): - videos_button = mo.ui.run_button(label="Log a video") - mo.vstack([mo.md("### Log videos"), videos_button]) - return (videos_button,) - + mo.md(r""" + ### Log videos -@app.cell -def _(asset_base_url, fs, videos_button, wandb_settings): - mo.stop(not videos_button.value) - finish_active_run() + Read an existing MP4 into a byte buffer and pass it to `wandb.Video`. + Weights & Biases stores the clip with the run so you can replay behavior such as an agent + acting in an environment. + """) + return - with fs.open(f"{asset_base_url}/openai-gym.mp4", "rb") as _video_file: - _video = io.BytesIO(_video_file.read()) - with wandb.init(name="videos", **wandb_settings) as _videos_run: - _videos_run.log({"video": wandb.Video(_video, format="mp4")}) - _videos_run_url = _videos_run.url +@app.cell +def _(asset_base_url, entity, fs, project): + with fs.open(f"{asset_base_url}/openai-gym.mp4", "rb") as video_file: + video = io.BytesIO(video_file.read()) - mo.callout( - mo.md(f"Video logged. [Open the W&B run]({_videos_run_url})."), - kind="success", - ) + with wandb.init(name="videos", project=project, entity=entity) as videos_run: + videos_run.log({"video": wandb.Video(video, format="mp4")}) return @app.cell(hide_code=True) def _(): - mo.Html(r""" - + mo.md(r""" + ### Log audio + + Use `wandb.Audio` for either a recording or a generated waveform. Supply the + sample rate so playback uses the correct timing, and a caption to identify + each example. The next two cells log piano audio and a synthetic chirp. """) return -@app.cell(hide_code=True) -def _(): - audio_file_button = mo.ui.run_button(label="Log the piano recording") - generated_audio_button = mo.ui.run_button(label="Log generated audio") - mo.vstack( - [ - mo.md("### Log audio"), - mo.hstack([audio_file_button, generated_audio_button], justify="start"), - ] - ) - return audio_file_button, generated_audio_button - - @app.cell -def _(asset_base_url, audio_file_button, fs, wandb_settings): - mo.stop(not audio_file_button.value) - finish_active_run() - - with fs.open(f"{asset_base_url}/piano.wav", "rb") as _audio_file: - _samples, _sample_rate = sf.read(_audio_file, dtype="float32") - - with wandb.init(name="audio_file", **wandb_settings) as _audio_file_run: - _audio_file_run.log( +def _(asset_base_url, entity, fs, project): + with fs.open(f"{asset_base_url}/piano.wav", "rb") as audio_file: + samples, piano_sample_rate = sf.read(audio_file, dtype="float32") + + with wandb.init( + name="audio_file", project=project, entity=entity + ) as audio_file_run: + audio_file_run.log( { "examples": [ wandb.Audio( - _samples, + samples, caption="Piano", - sample_rate=_sample_rate, + sample_rate=piano_sample_rate, ) ] } ) - _audio_file_run_url = _audio_file_run.url - - mo.callout( - mo.md(f"Audio file logged. [Open the W&B run]({_audio_file_run_url})."), - kind="success", - ) return @app.cell -def _(generated_audio_button, wandb_settings): - mo.stop(not generated_audio_button.value) - finish_active_run() - - _sample_rate = 44_100 - length = 3 - xs = np.linspace(0, length, num=_sample_rate * length) - waveform = np.sin(_sample_rate * 2 * np.pi / 40 * xs**2) +def _(entity, project): + generated_sample_rate = 44_100 + duration_seconds = 3 + sample_times = np.linspace( + 0, duration_seconds, num=generated_sample_rate * duration_seconds, endpoint=False + ) + waveform = np.sin(generated_sample_rate * 2 * np.pi / 40 * sample_times**2) - with wandb.init(name="audio_generated", **wandb_settings) as _generated_audio_run: - _generated_audio_run.log( + with wandb.init( + name="audio_generated", project=project, entity=entity + ) as generated_audio_run: + generated_audio_run.log( { "examples": [ wandb.Audio( waveform, caption="Boop", - sample_rate=_sample_rate, + sample_rate=generated_sample_rate, ) ] } ) - _generated_audio_run_url = _generated_audio_run.url - - mo.callout( - mo.md(f"Generated audio logged. [Open the W&B run]({_generated_audio_run_url})."), - kind="success", - ) return @app.cell(hide_code=True) def _(): - tables_button = mo.ui.run_button(label="Log tables") - mo.vstack([mo.md("### Log tables"), tables_button]) - return (tables_button,) + mo.md(r""" + ### Log tables + Tables keep examples, predictions, and labels together for inspection. + The following cell demonstrates two equivalent ways to build a `wandb.Table`: + supply all rows at once, or add rows individually with `add_data()`. + """) + return -@app.cell -def _(tables_button, wandb_settings): - mo.stop(not tables_button.value) - finish_active_run() - with wandb.init(name="tables", **wandb_settings) as _tables_run: +@app.cell +def _(entity, project): + with wandb.init(name="tables", project=project, entity=entity) as tables_run: # Create tabular data, method 1. data = [ ["I love my phone", "1", "1"], ["My phone sucks", "0", "-1"], ] - _tables_run.log( + tables_run.log( { "a_table": wandb.Table( data=data, @@ -458,92 +357,79 @@ def _(tables_button, wandb_settings): ) table.add_data("I love my phone", "1", "1") table.add_data("My phone sucks", "0", "-1") - _tables_run.log({"another_table": table}) - _tables_run_url = _tables_run.url - - mo.callout( - mo.md(f"Tables logged. [Open the W&B run]({_tables_run_url})."), - kind="success", - ) + tables_run.log({"another_table": table}) return @app.cell(hide_code=True) def _(): - html_button = mo.ui.run_button(label="Log HTML") - mo.vstack([mo.md("### Log HTML"), html_button]) - return (html_button,) + mo.md(r""" + ### Log HTML + + Use `wandb.Html` for custom visualizations or reports. Here we log both a + downloaded HTML document and an inline string. `data_is_not_path=True` tells + Weights & Biases to treat the strings as HTML content. + """) + return @app.cell -def _(asset_base_url, fs, html_button, wandb_settings): - mo.stop(not html_button.value) - finish_active_run() +def _(asset_base_url, entity, fs, project): + with fs.open(f"{asset_base_url}/some_html.html", "rt") as html_file: + html = html_file.read() - with fs.open(f"{asset_base_url}/some_html.html", "rt") as _html_file: - _html = _html_file.read() - - with wandb.init(name="html", **wandb_settings) as _html_run: - _html_run.log( + with wandb.init(name="html", project=project, entity=entity) as html_run: + html_run.log( { - "custom_file": wandb.Html(_html, data_is_not_path=True), + "custom_file": wandb.Html(html, data_is_not_path=True), "custom_string": wandb.Html( 'Link', data_is_not_path=True, ), } ) - _html_run_url = _html_run.url - - mo.callout( - mo.md(f"HTML logged. [Open the W&B run]({_html_run_url})."), - kind="success", - ) return @app.cell(hide_code=True) def _(): - objects_button = mo.ui.run_button(label="Log a 3D object") - mo.vstack([mo.md("### Log 3D objects"), objects_button]) - return (objects_button,) + mo.md(r""" + ### Log 3D objects + + Load the tutorial's wolf mesh and wrap its text buffer in `wandb.Object3D`. + `file_type="obj"` identifies the mesh format for Weights & Biases's 3D viewer. + """) + return @app.cell -def _(asset_base_url, fs, objects_button, wandb_settings): - mo.stop(not objects_button.value) - finish_active_run() - - with fs.open(f"{asset_base_url}/wolf.obj", "rt") as _object_file: - _object = io.StringIO(_object_file.read()) +def _(asset_base_url, entity, fs, project): + with fs.open(f"{asset_base_url}/wolf.obj", "rt") as object_file: + mesh_buffer = io.StringIO(object_file.read()) - with wandb.init(name="3d_objects", **wandb_settings) as _object_3d_run: - _object_3d_run.log( - {"3d_object": wandb.Object3D(_object, file_type="obj")} + with wandb.init(name="3d_objects", project=project, entity=entity) as object_3d_run: + object_3d_run.log( + {"3d_object": wandb.Object3D(mesh_buffer, file_type="obj")} ) - _object_3d_run_url = _object_3d_run.url - - mo.callout( - mo.md(f"3D object logged. [Open the W&B run]({_object_3d_run_url})."), - kind="success", - ) return @app.cell(hide_code=True) def _(): - point_clouds_button = mo.ui.run_button(label="Log a point cloud") - mo.vstack([mo.md("### Log point clouds"), point_clouds_button]) - return (point_clouds_button,) + mo.md(r""" + ### Log point clouds + Generate 250 reproducible 3D points and two labeled bounding boxes. + `wandb.Object3D` also accepts a scene dictionary, allowing you to inspect + point clouds and annotations together in Weights & Biases. + """) + return -@app.cell -def _(point_clouds_button, wandb_settings): - mo.stop(not point_clouds_button.value) - finish_active_run() +@app.cell +def _(entity, project): points = np.random.default_rng(42).uniform(size=(250, 3)) - _scene = { + scene = { "type": "lidar/beta", "points": points, "boxes": np.array( @@ -581,14 +467,9 @@ def _(point_clouds_button, wandb_settings): "vectors": np.array([]), } - with wandb.init(name="point_clouds", **wandb_settings) as _point_cloud_run: - _point_cloud_run.log({"point_scene": wandb.Object3D(_scene)}) - _point_cloud_run_url = _point_cloud_run.url - - mo.callout( - mo.md(f"Point cloud logged. [Open the W&B run]({_point_cloud_run_url})."), - kind="success", - ) + with wandb.init( + name="point_clouds", project=project, entity=entity) as point_cloud_run: + point_cloud_run.log({"point_scene": wandb.Object3D(scene)}) return @@ -597,13 +478,13 @@ def _(): mo.md(r""" ## Verify and next steps - Open the run link produced by each demonstration and verify the result in the W&B workspace: + Open the run URL printed by each demonstration and verify the result in the Weights & Biases workspace: - **Metrics, plots, and histograms:** inspect the run charts. - **Images, video, audio, HTML, and 3D data:** inspect the run's Media panels. - **Tables:** open the logged Tables panels and compare the two construction methods. - Try changing the generated waveform or point cloud, then click that section's button again to create a new run you can compare. + Try changing the generated waveform or point cloud, then rerun that section's logging cell to create a new run you can compare. ## More resources diff --git a/marimo/convert/openai-api-autologger-quickstart/openai_api_autologger_quickstart.py b/marimo/convert/openai-api-autologger-quickstart/openai_api_autologger_quickstart.py index 7b042630..9c634165 100644 --- a/marimo/convert/openai-api-autologger-quickstart/openai_api_autologger_quickstart.py +++ b/marimo/convert/openai-api-autologger-quickstart/openai_api_autologger_quickstart.py @@ -1,11 +1,11 @@ # /// script -# dependencies = ["openai", "wandb"] +# dependencies = ["marimo"] # /// import marimo __generated_with = "0.24.0" -app = marimo.App() +app = marimo.App(app_title="Deprecated: OpenAI API Autologger Quickstart") @app.cell @@ -18,153 +18,38 @@ def _(): @app.cell(hide_code=True) def _(mo): mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/openai-api-autologger-quickstart/openai_api_autologger_quickstart.py/server) + # OpenAI API Autologger Quickstart — Deprecated - Weights & Biases - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - # 🏃‍♀️ OpenAI API Logger - - Use the **[Weights & Biases](https://wandb.ai/site?utm_source=openai_autologger_colab&utm_medium=code&utm_campaign=openai_autologger)** OpenAI API logger to seamlessly log all all inputs and outputs to your OpenAI API. See the full Weights & Biases **[OpenAI Autologger Documentationhere](https://docs.wandb.ai/guides/integrations/openai)** for more - - ### Logging with just 1 line of code - With just 1 line of code you can log all of the inputs and outputs from your OpenAI python libray to Weights & Biases for analysis later - - 1️⃣. **Call autolog** and login to wandb with your wandb api key - - 2️⃣. **Run OpenAI API** to generate preductions as normal - - 3️⃣. **Visualize results** by doing to the wandb run link generated in step 1️⃣ - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### 🪄 1. Install `wandb` and `openai` - """) - return - - -@app.cell -def _(): - # packages added via marimo's package management: wandb openai !pip install wandb openai -qU - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### 🪄 2. Import and call `autolog` - - When you call `autolog` you will be prompted to login to Weights & Biases. If you haven't already, create a new API key at [wandb.ai/settings](https://wandb.ai/settings) and store it securely. API keys can only be viewed once when created. - - You can optionally pass a dictionary with arguments for [wandb.init()](https://docs.wandb.ai/ref/python/init) such as a project name, team name, entity, and more. For more information about wandb.init, see the [API Reference Guide](https://docs.wandb.ai/ref/python/init). - """) - return - - -@app.cell -def _(): - import openai - from wandb.integration.openai import autolog + **This tutorial is retired. Use + [Weights & Biases Weave's OpenAI integration](https://docs.wandb.ai/weave/guides/integrations/openai) + for automatic logging in new applications.** - autolog({"project":"my_llm_project"}) - return autolog, openai + The original Weights & Biases lesson used + `wandb.integration.openai.autolog` to record two chat conversations, model + responses, token usage, and latency in a Weights & Biases run. It then disabled logging + with `autolog.disable()`. + That integration depends on the legacy `openai.ChatCompletion.create()` + interface. [Weights & Biases's compatibility documentation](https://docs.wandb.ai/models/integrations/openai-api) + limits it to OpenAI Python SDK 0.28.1 and earlier. This notebook no longer + installs those libraries or executes the old API calls. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Once you login, a **Weights & Biases run link will be generated**. This will take you to your workspace where you will be able to see all of the inputs and outputs to your OpenAI API calls. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### 🪄 3. Use the OpenAI API as normal - """) - return - - -@app.cell -def _(openai): - # pass your OpenAI key - openai.api_key = 'sk-foo' - return + ## Continue with Weave + Weave automatically traces supported OpenAI calls after `weave.init()`. + Follow the [OpenAI integration guide](https://docs.wandb.ai/weave/guides/integrations/openai) + to capture inputs, outputs, latency, and token usage with the modern SDK, + then inspect those calls in Weave. -@app.cell -def _(openai): - # make some calls to OpenAI - # Call 1 - chat_request_kwargs = dict( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the superbowl in 2014?"}, - {"role": "assistant", "content": "The Seattle Seahawks"}, - {"role": "user", "content": "Where was it played?"}, - ], - ) - - response_1 = openai.ChatCompletion.create(**chat_request_kwargs) - print(response_1) - - # Call 2 - chat_request_kwargs = dict( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"}, - {"role": "assistant", "content": "The Los Angeles Dodgers"}, - {"role": "user", "content": "Where was it played?"}, - ], - ) - - response_2 = openai.ChatCompletion.create(**chat_request_kwargs) - print(response_2) - return + See the [official OpenAI SDK documentation](https://platform.openai.com/docs/libraries) + for client setup. This notebook’s retirement concerns the legacy Python SDK + interface and Weights & Biases autologger. + ## Historical reference -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### 🪄 4. View your logged results in Weights & Biases - - You can find your interactive dashboard by clicking the 👆 wandb links above in step (2) - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### 🪄 5. Disable `autolog` - Call disable() to close all W&B processes when you are finished using the OpenAI API. - """) - return - - -@app.cell -def _(autolog): - autolog.disable() - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - # What's next 🚀 ? - Doing more advanced LLM system chaining or using LangChain? - ## 👉 [Try W&B Prompts to understand your LLM systems](https://docs.wandb.ai/guides/prompts?utm_source=openai_api_colab&utm_medium=code&utm_campaign=openai_api_colab) + The [original Weights & Biases tutorial source](https://github.com/wandb/examples/blob/main/colabs/openai/OpenAI_API_Autologger_Quickstart.ipynb) + is retained for historical context. Its API calls and dependency assumptions + should not be copied into a new project. """) return diff --git a/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py b/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py index 55f13ed9..26a951da 100644 --- a/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py +++ b/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py @@ -5,7 +5,7 @@ # "datasets>=3.0", # "evaluate>=0.4", # "fsspec[http]>=2025.7.0", -# "ipython>=9.0", +# "ipython>=9,<10", # "marimo>=0.24.0", # "numpy>=1.26", # "protobuf>=5", @@ -13,1153 +13,607 @@ # "scipy>=1.13", # "sentencepiece>=0.2,!=0.1.92", # "torch>=2.6", -# "transformers @ git+https://github.com/huggingface/transformers.git", +# "transformers @ git+https://github.com/huggingface/transformers.git@02d8fb9784e8f14a1251e4c992cd82a5762417c6", # "wandb>=0.18", # ] # /// import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App( width="medium", app_title="Optimize Hugging Face Models with Weights & Biases", ) - -@app.cell -def _(): +with app.setup: import os import subprocess import sys - import tempfile - import uuid + from pathlib import Path + # This lesson uses PyTorch; avoid optional TensorFlow/Keras imports. + os.environ["USE_TF"] = "0" + + # Check subprocess dependencies during setup, before starting a training run. + import accelerate + import evaluate import fsspec import marimo as mo + import numpy as np import torch import wandb - - # This is a PyTorch tutorial; skip optional TensorFlow/Keras imports. - os.environ["USE_TF"] = "0" - return fsspec, mo, os, subprocess, sys, tempfile, torch, uuid, wandb + from datasets import load_dataset + from transformers import ( + AutoModelForSequenceClassification, + AutoTokenizer, + Trainer, + TrainingArguments, + set_seed, + ) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py/server) + -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - # Optimize Hugging Face models with Weights & Biases - """) - return + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/optimize-hugging-face-models-with-weights-biases/optimize_hugging_face_models_with_weights_biases.py/server) -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - [Hugging Face](https://huggingface.co/) provides tools to quickly train neural networks for NLP (Natural Language Processing) on any task (classification, translation, question answering, etc) and any dataset with PyTorch and TensorFlow 2.0. + # Track Hugging Face training with Weights & Biases - Coupled with [Weights & Biases integration](https://docs.wandb.ai/models/integrations/huggingface_transformers), you can quickly train and monitor models for full traceability and reproducibility without any extra line of code! The notebook metadata provides the libraries; use the submitted authentication form below to sign in before starting an experiment. + This lesson shows two ways to connect Hugging Face training to Weights & Biases. + First, run an existing BERT training script on MRPC. Then build a custom + DistilBERT topic-classification workflow with `Trainer`. - **Note**: To enable logging to W&B, set `report_to` to `wandb` in your `TrainingArguments` or script. - """) - return + Both examples use `report_to="wandb"` to log training and evaluation metrics. + The settings below also enable parameter and gradient histograms and upload + the final model as an Artifact. These records help you compare experiments + and identify the settings and model files used by each run. + ## Environment setup -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - W&B integration with 🤗 Hugging Face can automatically: - * log your configuration parameters - * log your losses and metrics - * log gradients and parameter distributions - * log your model - * keep track of your code - * log your system metrics (GPU, CPU, memory, temperature, etc) + The notebook declares its dependencies in the script metadata. Open it with + `uvx marimo edit optimize_hugging_face_models_with_weights_biases.py --sandbox` + from this notebook's folder to install and use those dependencies. + If you use an existing Python environment instead, install the declared + dependencies there too. The training subprocess uses the notebook's Python + interpreter; it does not install packages from the script metadata. + + The examples use Transformers + for models and training, tokenizers to convert text to token IDs, and Datasets + to load and prepare examples. The GLUE script also needs Evaluate to compute + metrics and Accelerate to run the Trainer. + + Transformers and `run_glue.py` use the same pinned source revision. Keep those + versions aligned when updating the notebook so the script’s arguments match + the installed library. """) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Here's what the W&B interactive dashboard will look like: + `WANDB_LOG_MODEL="end"` + tells the Transformers callback to log the trained model as a Weights & Biases Artifact. + `WANDB_WATCH="all"` enables gradient and parameter histograms. Both examples + enable metrics with `report_to="wandb"` and give the run a descriptive name. - ![](https://i.imgur.com/dF6d8HB.png) + > Note: Running this notebook downloads BERT and MRPC, then starts a 300-step + training run. The custom example downloads Yahoo! Answers and DistilBERT. """) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Installation and set-up - - We need the following 🤗 Hugging Face libraries: - * [transformers](https://huggingface.co/transformers/) contains an API for training models and many pre-trained models - * [tokenizers](https://huggingface.co/docs/tokenizers) is automatically installed by transformers and "tokenize" our data (ie it converts text to sequence of numbers) - * [datasets](https://huggingface.co/docs/datasets/) contains a rich source of data and common metrics, perfect for prototyping + ## Authenticate with Weights & Biases - The notebook dependency metadata includes these libraries, the current - Transformers development version required by `run_glue.py`, and `wandb` - for automatic experiment tracking. - """) - return + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Authentication + ## Set your team and project - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your - team or entity. Leave the key blank to use `WANDB_API_KEY` from molab's - Secrets panel or credentials already configured in this runtime. Merely - editing the fields does not authenticate, download assets, or create a run. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `huggingface-demo`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) -def _(mo): - _api_key_input = mo.ui.text( - value="", - kind="password", - label="W&B API key (blank uses runtime credentials)", - full_width=True, - ) - _entity_input = mo.ui.text( - value="", - label="W&B entity or team (blank uses your default)", - full_width=True, - ) - _project_input = mo.ui.text( - value="huggingface-demo", - label="W&B project", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=_api_key_input, - entity=_entity_input, - project=_project_input, - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="huggingface-demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(mo, wandb, wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the authentication form to continue."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted_login = wandb_login_form.value - _api_key = _submitted_login["api_key"].strip() - _requested_entity = _submitted_login["entity"].strip() - _project = _submitted_login["project"].strip() or "huggingface-demo" try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _resolved_entity = _requested_entity or wandb.Api().default_entity - _login_error = None - except wandb.errors.Error as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _resolved_entity = None - _login_error = str(_error) mo.stop( - not _login_ok or not _resolved_entity, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - "entity, then submit again.\n\n" - f"W&B reported: `{_login_error or 'No default entity was found.'}`" - ), - kind="danger", - ), - ) - - wandb_settings = { - "entity": _resolved_entity, - "project": _project, - } - mo.callout( - mo.md( - f"Connected to W&B as entity `{_resolved_entity}`. " - f"Runs will use project `{_project}`." - ), - kind="success", + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - return (wandb_settings,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Configuration tips - - W&B integration with Hugging Face can be configured to add extra functionalities: - - * auto-logging of final models as artifacts: set the `WANDB_LOG_MODEL` environment variable to `end` - * log histograms of gradients and parameters: by default gradients are logged, you can also log parameters by setting environment variable `WANDB_WATCH` to `all` - * set custom run names with `run_name` arg present in scripts or as part of `TrainingArguments` - * organize runs by project with the `WANDB_PROJECT` environment variable - - For more details refer to [W&B + HF integration documentation](https://docs.wandb.ai/models/integrations/huggingface_transformers). - """) - return - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Let's log each final trained model. - """) - return + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell def _(): - WANDB_LOG_MODEL = "end" - return (WANDB_LOG_MODEL,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Training a new model the quick way! - - When working on a new problem, you should always check [the task guides](https://huggingface.co/docs/transformers/tasks) as there will often be a script that can already solve your task. At a minimum they will be a great source of inspiration for your own custom pipeline. - - Let's use the Hugging Face script responsible for training on any GLUE task, such as sequence classification. - """) + os.environ["WANDB_LOG_MODEL"] = "end" + os.environ["WANDB_WATCH"] = "all" return @app.cell(hide_code=True) -def _(torch): - if torch.cuda.is_available(): - torch_device = torch.device("cuda") - elif torch.backends.mps.is_available(): - torch_device = torch.device("mps") - else: - torch_device = torch.device("cpu") - return (torch_device,) - - -@app.cell(hide_code=True) -def _(mo, wandb_settings): - _run_name_input = mo.ui.text( - value="demo", - label="W&B run name", - full_width=True, - ) - _max_steps_input = mo.ui.number( - start=30, - stop=1000, - value=300, - step=30, - label="Maximum training steps", - ) - quick_training_form = ( - mo.md("{run_name}\n\n{max_steps}") - .batch(run_name=_run_name_input, max_steps=_max_steps_input) - .form( - submit_button_label="Download run_glue.py and train", - bordered=True, - ) - ) - _ready_note = ( - f"The submitted run will use W&B project `{wandb_settings['project']}` " - f"under entity `{wandb_settings['entity']}`." - ) - mo.vstack([mo.md(_ready_note), quick_training_form]) - return (quick_training_form,) - - -@app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - These scripts are automatically instrumented with logging when `wandb` is installed and logged in. + ## Train with an existing Hugging Face script + + The [task guides](https://huggingface.co/docs/transformers/tasks) provide + ready-made training workflows. Here we use `run_glue.py` to fine-tune BERT on + MRPC, a sentence-pair classification task. - Just set `report_to` to `wandb` to enable logging through W&B. + The next cells download the script from the same source revision as the + installed Transformers library, then run it with this Python environment. + `--report_to wandb` activates the integration. Weights & Biases prints the run link in + the subprocess output. The script finishes its run when the process exits. - **Note**: This cell can take up to 5 minutes to run. + We evaluate and save every 30 steps, retain two checkpoints, and reload the + checkpoint with the best accuracy. `WANDB_LOG_MODEL="end"` then logs that + model as an Artifact. Files remain in `hf_assets/` and `hf_outputs/` so you + can inspect and reuse them. This example can take several minutes. """) return -@app.cell(hide_code=True) -def _( - WANDB_LOG_MODEL, - mo, - os, - quick_training_form, - uuid, - wandb, - wandb_settings, -): - mo.stop( - quick_training_form.value is None, - mo.callout( - mo.md( - "Review the settings, then submit the form when you are ready " - "to download the script and create a W&B run." - ), - kind="info", - ), - ) - _submitted_quick_run = quick_training_form.value - _run_name = _submitted_quick_run["run_name"].strip() or "demo" - _run_id = uuid.uuid4().hex - quick_run_environment = os.environ.copy() - quick_run_environment.update( - { - "WANDB_ENTITY": wandb_settings["entity"], - "WANDB_PROJECT": wandb_settings["project"], - "WANDB_RUN_ID": _run_id, - "WANDB_NAME": _run_name, - "WANDB_LOG_MODEL": WANDB_LOG_MODEL, - } +@app.cell +def _(): + transformers_revision = "02d8fb9784e8f14a1251e4c992cd82a5762417c6" + quick_run_name = "bert-mrpc-300-steps" + quick_max_steps = 300 + quick_output_dir = Path("hf_outputs/mrpc") + return ( + quick_max_steps, + quick_output_dir, + quick_run_name, + transformers_revision, ) - quick_run_url = wandb.Settings( - entity=wandb_settings["entity"], - project=wandb_settings["project"], - run_id=_run_id, - ).run_url - quick_training_request = { - "max_steps": int(_submitted_quick_run["max_steps"]), - "output_dir": f"/tmp/MRPC-{_run_id}", - "run_id": _run_id, - "run_name": _run_name, - } - return quick_run_environment, quick_run_url, quick_training_request @app.cell -def _(fsspec, quick_training_request): +def _(transformers_revision): run_glue_url = ( "https://raw.githubusercontent.com/huggingface/transformers/" - "refs/heads/main/examples/pytorch/text-classification/run_glue.py" + f"{transformers_revision}/examples/pytorch/text-classification/run_glue.py" ) - run_glue_path = f"/tmp/run_glue-{quick_training_request['run_id']}.py" - with fsspec.open(run_glue_url, "rb") as _source: - with open(run_glue_path, "wb") as _destination: - _destination.write(_source.read()) + run_glue_path = Path("hf_assets") / f"run_glue-{transformers_revision[:12]}.py" + run_glue_path.parent.mkdir(parents=True, exist_ok=True) + with fsspec.open(run_glue_url, "rb") as glue_source: + run_glue_path.write_bytes(glue_source.read()) return (run_glue_path,) -@app.cell(hide_code=True) -def _(mo, quick_run_url): - mo.callout( - mo.md( - f"[Open this training run in W&B]({quick_run_url}) to watch " - "metrics and system telemetry appear live." - ), - kind="info", - ) - quick_run_link_ready = True - return (quick_run_link_ready,) - - @app.cell def _( - quick_run_environment, - quick_run_link_ready, - quick_training_request, + entity, + project, + quick_max_steps, + quick_output_dir, + quick_run_name, run_glue_path, - subprocess, - sys, ): - assert quick_run_link_ready - subprocess.run( + # Pass the project and entity to the separate Python process. + quick_environment = os.environ.copy() + quick_environment["WANDB_PROJECT"] = project + if entity: + quick_environment["WANDB_ENTITY"] = entity + else: + quick_environment.pop("WANDB_ENTITY", None) + + quick_training_process = subprocess.run( [ sys.executable, - run_glue_path, - "--report_to", - "wandb", - "--model_name_or_path", - "bert-base-uncased", - "--task_name", - "MRPC", - "--learning_rate", - "1e-4", + str(run_glue_path), + "--report_to", "wandb", + "--model_name_or_path", "bert-base-uncased", + "--task_name", "mrpc", + "--learning_rate", "1e-4", "--do_train", "--do_eval", - "--max_steps", - str(quick_training_request["max_steps"]), - "--logging_steps", - "30", - "--eval_strategy", - "steps", - "--output_dir", - quick_training_request["output_dir"], - "--run_name", - quick_training_request["run_name"], + "--max_steps", str(quick_max_steps), + "--logging_steps", "30", + "--eval_strategy", "steps", + "--eval_steps", "30", + "--save_steps", "30", + "--save_total_limit", "2", + "--load_best_model_at_end", "true", + "--metric_for_best_model", "accuracy", + "--output_dir", str(quick_output_dir), + "--run_name", quick_run_name, ], - env=quick_run_environment, + env=quick_environment, check=True, ) - quick_training_complete = True - return - - -@app.cell(hide_code=True) -def _(mo, quick_run_url): - mo.callout( - mo.md( - "Training finished and the script closed its W&B run. " - f"[Inspect the completed run]({quick_run_url})." - ), - kind="success", - ) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - You just trained a model and can now visualize your metrics in your dashboard! - - Use the live run link above to open the - [run page](https://docs.wandb.ai/models/runs/view-logged-runs) while training is - in progress or after it finishes. - - It should look something like this: - """) + quick_training_complete = quick_training_process.returncode == 0 return @app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ![](https://i.imgur.com/yHafV82.png) - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - In addition, your model files have been saved and versioned, along with associated metadata (evaluation & training metrics). - - Just check the ["Artifacts" tab](https://docs.wandb.ai/models/runs/view-logged-runs#artifacts) on your run page -- it's the one with the ["stacked pucks" icon](https://stackoverflow.com/questions/2822650/why-is-a-database-always-represented-with-a-cylinder). - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwYAAAHTCAYAAACdqg9hAAAgAElEQVR4Ae297ZMdZ5nm6U9863+H6IDgH+ADTRDBl42N2DDhgI3YjlgW7JmJiWEG2GF6aJpZZhoYNmZZBsaMQfKL3rCQhGW3LMkIsIxxqUot5LWFcEuyjEvWqwtjPRtXMlfp1q0nz8mTVao6meeXEUf59rz+8tL9PFfmyVMPrK2tFT4wQANoAA2gATSABtAAGkADi62BBxDAYguA68/1RwNoAA2gATSABtAAGpAGMAY8MeGJERpAA2gADaABNIAG0AAawBjgkHHIaAANoAE0gAbQABpAA2iAJwa4Y9wxGkADaAANoAE0gAbQABrgq0S4Y9wxGkADaAANoAE0gAbQABqQBnjHAIeMQ0YDaAANoAE0gAbQABpAAxgDHDIOGQ2gATSABtAAGkADaAAN8MQAd4w7RgNoAA2gATSABtAAGkADfJUId4w7RgNoAA2gATSABtAAGkAD0gDvGOCQcchoAA2gATSABtAAGkADaABjgEPGIaMBNIAG0AAaQANoAA2gAZ4Y4I5xx2gADaABNIAG0AAaQANogK8Sza87/i/f/X+LPrjX+b1GXBuuTRcNHDlypPzVX/1VuXDhAv+fRzLxePHFk+Vzj/zz8ubly1zTkVzTLv+XSUPMXwQNLPQ7BlevXSt/87d/V/6n//l/Wf8o4G/3hddgo0FHbVMbt7s981C/TNKn/9f/rZw9++pdPMwqXkNtx+voNPHYPPSpSxv2/WR/td/K28akS7kbSTNknhvpd1veU6dOlb/8y78sf/EXf3HX56//+q/LO++8U77yla8055VOZSyyUdD/X/0/9v/X2v/pNs4bOa56P/fwP78nfvQtc7v+7/VtL/mY0KIBNNBVAwtrDDy5iXflPWhpMtYVIOnu/382XSuZJH3ytfF1jJP+fB1raYZy3dRfTaLa+j3LxMpGOLLqw6EPT7U//l/rU++85tGE/2Mf+1jxxH9aOxfVGEgDWa/S4lbced9sYzDtGnP+/o8LMIYxGrg/GlhYY6BJSu2OPAPI/RHaRv4Da/Kga/X4k0/dM7lsm6RqEuLr25ZmI23aqrzqx3/8+281n/j0SEz+9Re/3PRRmu3SHozB/dE2xmA6V5v1jZrSLjqvpSGuT79GNW4cgxsaWDwNLKQx8ERRk64sek+edK4tnQa3eOfLg54fj8fBT9uaoB47/kJz51d3xzTBzXfJXK/vqmrtbbdRbXIdMX82ObV25za7zCGs1T/1XZw1GVb/3G73NTLXOaUfmzFQ/91vMXn0h481POJxndc568QMskbjU4h8znlcVy5TRkVpIvO2Mqxrt0drl+9r53NR07Hued+eZgzyE4K8r/6pjPh1JKVxv/V1JH0tyV9V8leUfH4I6/j/cVJ7a/FSOomxL2pXZUl7iguOcdZT1qe+SqRj0pnSxBge22Rdqs543OWrPpejtE6T/w+4fh/3vtKr7Kh3/z/R/12Xx3rxJmRcc675PGhgIY1BLVDHi6Hg7MlLbUDTeQdwlRW/u+pBxYOA1hqEnF715DQ6lsuJdeh8bofK9cCS82r/X/2bL911l1n5Yxtif+d5O7KK225z7ZjOqa++hm1pXMY8r33dtNZHbVV/PBHSWtfbfZikmxoHHRMnrV22dOW6dCyy1L41bY13LSPqTxMhGQy3fcgTo40ag5xfLynrZWWbgx/+8IeNMZBBEH/t66PtIXxmubbWVtSKjuX9OKmXhrTv/+9iIv3W0jhmKk3WdWSp/LE8p3c71KZYltowaRxQPudVWTL1Nira1/+h/H85toftYWid68R1GoMGFtYYxCCeL2QcFLoE/DiJUlna9yCQBxDXlQeKWKfSxPO1QcODrcrXeQ1S2nb9Gng84XPa3E63ZZ7XmV/konbnvuuY8siMmUctzTz3ObbNWpIONZHWtVS/dG1///s37ppMKI0mF+qvy9C2JxxdOUTGWf8qt0s5sQzlyftuX1zn/wPx3Dxv57v9urOvu/86rnbnJwR5Xy8n54m+9nVc+bX29jxzaGtbLf74/2i+c6/jccJdKzPrr6bRXGctzaS6cvpcZ84rfef46v+76kPUtsrS/1/FaOfJ5dX6zTEmnWgADWyFBhbWGOhukoJxDbKCvO8W5QFGefI5DW75ozJUdlvAj8ddR2xPnEhpkFJ7cx3adx6nV1maQC6dWm7aqfMaiDw5rPV3no+5X25j5KZjHrAjm3inMKYxK5c1hLUnF76u0oKO6ZOvq/oXOXjbPMyqxiFrzBrPvCfxbCtDefJ1NHu3yW2dNil0vnla5zv+uW3ZCMT9/DUhf11Ia5sBP0HQsWwgcl3zuO/4Jg3k9kkz8SZNTW/OI81bJ1prX+dyGTqW66ylmVSX87sOpfX/CZUf8zptbJu33edYv/LqeCxT9Tit+8uaSSAaQAPboYGFNAaejDjoR/AO8vFcDOAK3j7ncnQ+lhG3da422XE9Oq9BI9/pVT0eKNrKyPVo4NJdZK3VNg82XfLHsuZl23w9yMa1+qR2Oo33a23vkqaWbx6O+RqqLdrW+yn+Co76FQ2fzsfJS25/jYN1aPPgelyOysz6zeVMK0NlRj27XTqma+prN1SdbsQYeNIvs2AubWunlUHokr6tnO04rmttTcX644RZx2saUBrp0/mtN2lTeXIZOtYlTa2u2Dadd51qv+vL7cz/H2IZ3nZ7VKbK0cf/f30TJ5bvfKyZGKIBNLDVGlhIYyDICsIO+hG6AnecJOmcA7jOxYmYztUmPLm8PLHyebXBA47WPp7L7TLw2Fw8c/jZdUOhY5pE1n7NJ9Y1r9u1a+EB1ry6sOmSZl4ZWCNqnydIse9Rj7UJUuxXjYMYZ33G/xu1a5DLmVaG2qA2u93uS7xTrGO1cmL753V7I8ZAfZr1q0Kzpp8HbtaurnFsT9ZsTQNZO44B0qnKymXoWNZoLU2trtg2laH/X0oX/58pTc6b2xjL8bbSRGOv4zqmmJ3Ldx7WTArRABrYag0srDHwwBHNgQcvDzjxYiiAa5KtjwYmn6vlefXV/68ZmJQmDyDOp7XyakBQG5QunssDjdqUDUvM48FSLx27/R7YNAHzsVjHvG9nBm6v+uLJrK9jZOF0XndJ47TztlZfxUHt8jV2X319pSO3W2nNxnl0R9Lb0lrUgsqKutK+7uL7/4Xr9L7KUf58p39SGc4Ty/D/G/fF+7HtyjeEz0aNgfLrnYT4NaHl5eX1v5T8jW98Y/19BX/1KKYdAiNrIOpEx2r6yxqQpqN2tC/9WcfWjv+fqNycR2n6GFGVU4v7andsp9vgNqkNcRxwX9UGxXz939Uxpc/HdJwPDNAAGtguDSysMTBwDzIaaOJkx+e99oQpBn6f86DgMhToPRnLA4jzaO1JVxxgfF7t0sf7Wqtu16G1BiwPMDqv9HngrR2LZc7rtpmKX26jz4lHl0l/lzS5jnnZVx+zDtw29at2p1Hpo070kqO0pnzWsc673Jhe20oTJ2Lm5zLdpnhtZinDeo96Vn36PxMnTe7nvK9nNQY2AvFnR33M7xjoD6a9+OKLjTnYtWvXXT9l6ncP5p1LrX1Rf9KTteC0Op+PZf0pjfQm/Sif4oFiru7GW6O5DKfRelJdPue12+u64vFaHYq/620I44DyOW6p7S6ndsznWDMxRANoYDs0sPDGYDugUyf/2dEAGkADm6OB2qQftpvDFo5wRAOLpwGMAY9t1+9eEQAWLwBwzbnmQ9cAxgAND13DtB8Nz5MGMAYYA4wBGkADaGCwGsAYMKmap0kVbUGPQ9cAxoAJwWAnBEP/z0f7GUDQABpAA2gADaCBedIAxgBjgDFAA2gADaABNIAG0AAaQAMFY4AICARoAA2gATSABtAAGkADaABjME+Pb2gLjxPRABpAA2gADaABNIAGtksDPDHAHXKHAA2gATSABtAAGkADaAAN8MRguxwZ9XI3AA2gATSABtAAGkADaGCeNMATA9whdwjQABpAA2gADaABNIAG0ABPDObJpdEW7hqgATSABtAAGkADaAANbJcGeGKAO+QOARpAA2gADaABNIAG0AAa4InBdjky6uVuABpAA2gADaABNIAG0MA8aYAnBrhD7hCggYXVwF98ZW9Z1M88DUS0hYkRGkADaGA+NIAxYFK4sJNCgtB8BKHtvA6LagrU7+3kTt3830MDaAANzKcGHvjtb39b+MAADaABNIAG0AAaQANoAA3Mnwa20kTxxIAnBtw5RANoAA2gATSABtAAGkADvHy8lS6MuubzsRnXheuCBtAAGkADaAANoIE1jAEiIBCgATSABtAAGkADaAANoAGMAY/NeGyGBtAAGkADaAANoAE0gAbWMAaIgECABtAAGkADaAANoAE0gAYwBjw247EZGkADaAANoAE0gAbQABqQBvhVIhwyDhkNoAE0gAbQABpAA2gADWAMcMg4ZDSABtAAGkADaAANoAE0wBMD3DHuGA2gATSABtAAGkADaAAN8FUi3DHuGA2gATSABtAAGkADaAANSAO8Y4BDxiGjATSABtAAGkADaAANoAGMAQ4Zh4wG0AAaQANoAA2gATSABnhigDvGHaMBNIAG0AAaQANoAA2gAb5KhDvGHaMBNIAG0AAaQANoAA2gAWmAdwxwyDhkNIAG0AAaQANoAA2gATSAMcAh45DRABpAA2gADaABNIAG0ABPDHDHuGM0gAbQABpAA2gADaABNMBXiXDHuGM0gAbQABpAA2gADaABNCAN8I4BDhmHjAbQABpAA2gADaABNIAGMAY4ZBwyGkADaAANoAE0gAbQABrgiQHuGHeMBtAAGkADaAANoAE0gAb4KhHuGHeMBtAAGkADaAANoAE0gAakAd4xwCHjkNEAGkADaAANoAE0gAbQAMYAh4xDRgNoAA2gATSABtAAGkADPDHAHeOO0QAaQANoAA2gATSABtAAXyXCHeOO0QAaQANoAA2gATSABtCANMA7BjhkHDIaQANoAA2gATSABtAAGsAY4JBxyGgADaABNIAG0AAaQANogCcGuGPcMRpAA2gADaABNIAG0AAa4KtEd9zxqeWV8n88/M/Kyul/RBgEBzSABtAAGkADaAANoIGF0wDvGPwP0R87fhxjQABYuADAY9M7NwdgAQs0gAbQABpYdA30MgZvvPFGeeKpXeX1c+fKu+++O4rJ1PNHj2EMMAaj0PKiBzX6z8COBtAAGkADaKCfBnobg7/56t82E+mvfu3r5fjxF8o771ydeVL19upq+Q/f+E9l95695cbNm+X4Cz8vX/w/v1Ie+Rf/spz57W/Xy9O5X/zil+X/+o9/Xx7+Z/+i/Mt/9W/K9/7rD8prr73Waky65vnFr37VlKevEeWPniIgrH7Cghvc0AAaQANoAA2gATQwLA30Mga6yNevXy8v/+Y35f/+L/9PM1nXZP6/P/bjmZ4i2Bjo6cO+n+xfn5j/23/374ueSqiea9euNeXmSbv2ZRJkSvJTi1ny+CtEtfIxBsMSM8GH64UG0AAaQANoAA2ggf4a6G0MIvS33vpDOfSzZ5q7/Zpgd32KYGOgPF/6t/+uMRq3bt0q+miyr/XT+3/aGAY9Wfjt2bPNcZmSX/zyV+Vff+nLzd3++MJwnzzqi55aqB2xrNhHtvuLDHawQwNoAA2gATSABtDA/GtgU4yBL7Qm5Zq868mBniDEO/9OE9c2BvpqkH4VKJ7T9j9duFC+8jdfbT7nf//nJwgxza9+9WLz1OCHj/24+SpS3zzKhzGYf7HGa8821wsNoAE0gAbQABpAA5urgbkwBnoaIJOQL66+qqS7+Lv37rvn60JK+4e3327eO/ibr36tXLh4scnfJ4/KwhhsrrDytWQfvmgADaABNIAG0AAamG8NbIox2OhXidqMgb//3/Zdf32l6Pv/7dHma0jnz/++MQZ98kikGIP5FiqBhOuDBtAAGkADaAANoIH7q4HexmAzXz7GGNzfi8x/IviiATSABtAAGkADaAANTNNAL2OgXwzazJ8rbTMGv3rx5MxfJeqTR5B4YsB/lmn/WTiPRtAAGkADaAANoIExa6C3MdiMP3Dml4/bjIFfPv73f/t3zYvI+UJMevl4ljwq18ag9hJ0rpd9ggIaQANoAA2gATSABtDA2DTQyxhsFoRpxqDPT4/2yaP+/PTAwebpxGM/2lGuXb/e/FTqlXfeueeF6M3qO+UQTNAAGkADaAANoAE0gAbmSQNzbQwESn+s7L/98L83k3b9QlH8TPoDZ7Pm0c+s6mdTY/kyC/N0sWgLwQMNoAE0gAbQABpAA2jgfmlg7o2BOn7j5s3yi1/8svlpUpkBTeC/919/UF577bXqz5j2yaM/qPbK0lL5u//wjcYc6O8nHD1+vLX8+3VBKJf/7GgADaABNIAG0AAaQAPboYFtNQbb0WHq5D8aGkADaAANoAE0gAbQABq4VwMYg7V7oSAUmKABNIAG0AAaQANoAA0smgYwBhgD3qNAA2gADaABNIAG0AAaQAMFY4AICARoAA2gATSABtAAGkADaABjsGiPiOgvj0XRABpAA2gADaABNIAGahrgiQHukDsEaAANoAE0gAbQABpAA2iAJwY1t8QxXDQaQANoAA2gATSABtDAommAJwa4Q+4QoAE0gAbQABpAA2gADaABnhgsmhOkv9z9QANoAA2gATSABtAAGqhpgCcGuEPuEKABNIAG0AAaQANoAA2gAZ4Y1NwSx3DRaAANoAE0gAbQABpAA4umAZ4Y4A65Q4AG0AAaQANoAA2gATSABnhisGhOkP5y9wMNoAE0gAbQABpAA2igpgGeGOAOuUOABtAAGkADaAANoAE0gAZ4YlBzSxzDRaMBNIAG0AAaQANoAA0smgZ4YoA75A4BGkADaAANoAE0gAbQABrgicGiOUH6y90PNIAG0AAaQANoAA2ggZoGeGKAO+QOARpAA2gADaABNIAG0AAa4IlBzS1xDBeNBtAAGkADaAANoAE0sGga4IkB7pA7BGgADaABNIAG0AAaQANooP8Tg2vXrpU33nijnD17tvz2t7/lAwM0gAbQABpAA2gADaABNLDNGtDcXHN0zdVnfeLR64mBKlKlN27cKCwQgAAEIAABCEAAAhCAwPwQ+OMf/9jM1Wc1B72MgVwIpmB+Lj4tgQAEIAABCEAAAhCAQCQgc6A5+yxPDXoZAz0tYIEABCAAAQhAAAIQgAAE5peA5uz33RjonQIWCEAAAhCAAAQgAAEIQGB+CWjOjjGY3+tDyyAAAQhAAAIQgAAEILAlBDAGW4KZSiAAAQhAAAIQgAAEIDDfBDAG8319aB0EIAABCEAAAhCAAAS2hADGYEswUwkEIAABCEAAAhCAAATmmwDGYL6vD62DAAQgAAEIQAACEIDAlhDAGGwJZiqBAAQgAAEIQAACEIDAfBPAGMz39aF1EIAABCAAAQhAAAIQ2BICGIMtwUwlEIAABCAAAQhAAAIQmG8CgzYGt2/fLq+//no5cOBAeeKJJ8qOHTuaz65du8rzzz9f3nrrrfmmT+sgAAEIQAACEIAABCAwJwQGawxWV1fL/v37G0Nw5MiRxiDo2B/+8IeysrLSmIWdO3eWF154obz33ntzgptmQAACEIAABCAAAQhAYD4JDNIYXL58uezZs6ccPny43Lhxo5Xs73//+ybds88+izlopcQJCEAAAhCAAAQgAAEIlDI4Y3D9+vXmSUHXyb5NxIkTJ4q+esQCAQhAAAIQgAAEIAABCNxLYHDG4OTJk+UnP/lJuXr16r29aTmi9xB2795d3njjjZYUHIYABCAAAQhAAAIQgMBiExiUMdDTApmCV155Zaar9qc//an87Gc/K8eOHZspnxMfOnSoPPLII+ufRx991Ke2Za36t7sN29JxKoUABCAAAQhAAAIQuG8EBmUMzp8/X/bu3du8YDwrkd/85jfNV5Bu3bo1U1aZgq985SvlypUrTT7l/9a3vlV0fLsWjMF2kadeCEAAAhCAAAQgMF4CgzIG+rUh/RLRzZs3Z74i586da0yFfrmo6zIPJqDWVoxBjQrHIAABCEAAAhCAAAQ2QgBjMIWeJuF6QjDpSYOeJuipgr9ulJ8mqAyf01pPL7xoW+X/8pe/bNLEpxMx3xe+8IUic6PFxiB+xUnHWCAAAQhAAAIQgAAEINCXwKCMwauvvtq8Y/DOO+/M3N/Tp083ea9duzZTXk3GNSnPE3oXYlPgyX5+yqDJezQK2o6Tf+VT2Xlir/2Y7syZM80TD9Wrc8rjct1Gt8FtYw0BCEAAAhCAAAQgAIGuBAZlDN5+++3m7xLIIMy66MVj/d2DPj9Z6sm+JuNxQq42aHKeJ/V+ClB7yqBJvCb8vvuvtNEAqMycJvdV9cU63T4bhZyefQhAAAIQgAAEIAABCEwjMChjoEn9P/zDPzQT/Fn+mvFbb73VGIp//Md/nMZj6vl8t977Ng1e568f5XS+u18zBrVjsWEqSx8vGAOTYA0BCEAAAhCAAAQg0JfAoIyBOnnp0qXmbxKcOnWqU59lIPTH0HQ3fRYzMalwlaWJv75GpPWkO/Wa5MsseCKfv3pUMwEqLz9FiO3BGEQabEMAAhCAAAQgAAEIbAaBwRkDdVqm4MknnyxLS0sTvxq0trZWnn/++Sat/sjZZi1x4m6TUPvaUO1OfhdjwFeJNutKUQ4EIAABCEAAAhCAQFcCgzQG+krR8vJyeeKJJ8rBgwfLP/3TP91lEPRkQOf114737dvXpNmzZ0/ztKErGKXTBF0vHscnAp7Y+5j3/URA+fRUQx8bA5/zvp4g6EmBltoTAx1XnvjUQG3RC8g+5zK173LdpiYR/0AAAhCAAAQgAAEIQGAGAoM0Bu6f/iaB3jnYuXNn89m1a1d56qmnyo4dO5r1Sy+9VPTUQEbhueeea94z0IS966JJv9Jrgu53B7TOE3CbA6eRmdDPj2qxudA5HdfkXl8/mmYMlFeT/1im/ribj2MMGhT8AwEIQAACEIAABCCwSQQGbQzMQBN//WKRJt36ytDVq1fveoKgdH3NgetgDQEIQAACEIAABCAAgTETGIUx6HqBZA70zoG+VnT58uWu2UgHAQhAAAIQgAAEIACB0RNYKGOgqylz8Ktf/ap5L2H0V5cOQgACEIAABCAAAQhAoCOBhTMGHbmQDAIQgAAEIAABCEAAAgtFAGOwUJebzkIAAhCAAAQgAAEIQKBOAGNQ58JRCEAAAhCAAAQgAAEILBQBjMFCXW46CwEIQAACEIAABCAAgToBjEGdC0chAAEIQAACEIAABCCwUAQwBgt1ueksBCAAAQhAAAIQgAAE6gQwBnUuHIUABCAAAQhAAAIQgMBCEcAYLNTlprMQgAAEIAABCEAAAhCoE8AY1LlwFAIQgAAEIAABCEAAAgtFAGOwUJebzkIAAhCAAAQgAAEIQKBOAGNQ58JRCEAAAhCAAAQgAAEILBQBjMFCXW46CwEIQAACEIAABCAAgToBjEGdC0chAAEIQAACEIAABCCwUAS2zBioIj4wQANoAA2gATSABtAAGkAD86uBtbW10vXzQNeEMZ0uPgsEIAABCEAAAhCAAAQgML8ENGePc/hp2xiD+b2WtAwCEIAABCAAAQhAAAK9CWAMeqMjIwQgAAEIQAACEIAABMZDAGMwnmtJTyAAAQhAAAIQgAAEINCbAMagNzoyQgACEIAABCAAAQhAYDwEMAbjuZb0BAIQgAAEIAABCEAAAr0JYAx6oyMjBCAAAQhAAAIQgAAExkMAYzCea0lPIAABCEAAAhCAAAQg0JsAxqA3OjJCAAIQgAAEIAABCEBgPAQwBuO5lvQEAhCAAAQgAAEIQAACvQlgDHqjIyMEIAABCEAAAhCAAATGQwBjMJ5rSU8gAAEIQAACEIAABCDQmwDGoDc6MkIAAhCAAAQgAAEIQGA8BAZnDC5fvlyWlpY6f5SeBQIQgAAEIAABCEAAAhCYTGBwxuDw4cPl6NGjnYzBM888U5588sly7ty5yRQ4CwEIQAACEIAABCAAgQUnMEhjsLKy0umynThxouzdu7fs3r0bc9CJGIkgAAEIQAACEIAABBaVwOiNgczBqVOnMAeLqnD6DQEIQAACEIAABCDQicBCGAORwBx00gOJIAABCEAAAhCAwOgIvHn93fLxx35etGZpJzB6Y3Ds2LGyurrafF566aWya9cuvlbUrgfOQAACEIAABCAAgdERuHjt3fLRR48XrVnaCYzaGJw/f77s27evMQMyBProZWS9wDzPy61bt8oXvvilsmfvvt7NfO2118uDD326aM0CAQhAAAIQgAAEFpkAxqDb1R+1Magh0IvL82YMbAQ++KGPlI994pPl6NHjzfqb3/5OrQudjr148qWi8rRmgQAEIAABCCwaAd0Y05iqsTB+GBcXTQl/7i/GoNt1H4UxWFtbK2fPni1vv/32eq+1rWM6F5d5NAZ6MvDgQ58pq1euxKayDQEIQAACEBgUgTwZj0++tR0n6NqON8ByXj05142zSYtvgqmsPI6qvPzkXOllFnSOZbEIYAy6Xe/BGwMFjf3795c9e/YUfXXIi7Z1TOdiYJlXY9AlALpvrCEAAQhAAALzRsCTdN+R182uz37+kfVJuIxBNAKx/XkS7yfpbemVN+dR+XEszeeVx+VGwxLbwfZ4CWAMul3bwRuDK1euND9Fqp8lzYuO6W8YKI2XPsZAwSU+joyBKp/LwUYBUoFqeWVlvYx4V0Pp4x0U7dcClwKs8sW0+W6L+6h1Dogu0/lj8HT62MfcD/VZx2J7I4dYN9sQgAAEILBYBDzG5LEjUtCYMcu4obLyWDWpPI+TNiZ5HFTeLu2MdbA9XAJ//NP75dcXrhSttWRjkM8Pt6eb2/LBG4ObN282TwXajIGeGCiNl1mNgSf+DnYKKj/e+Xgz8fY5ByEHJadVnTqnybiDm4NSDI45+DmNy8nlet/1um9xnQNirkP7Lr9LP9Re9aMtT0Dc25AAACAASURBVKybbQhAAAIQWCwCGpfi04Fa7zWOeAypnY/H8rgUz2nb42QcB33MdeRxUPl0Lt6cy+WyPx4Cmvg/fOCV5qPtaAzyufH0euM9GYUxePrpp0ubMdC5jRgDBbI4iY/Ia+cUpGLQyfvKr8Bko1Db7xLcanXHtuWAOCl97Vxud06T2xjrZhsCEIAABBaLgMYcGQONHX76nL/Lr3HET621jmOlaWl8bDvnNFq33SBTHdEYuC2xXrWRZTEIRANw/p2bzc+Vah0Nw2KQ6N7LQRsDTU4PHjzYfF3o4sWL9/Rax/RVIqVRWi2zPDGYNPltO5cn5HmCrTbMagxyXW0BMQLI7XAeBUcHTaXPZbuMnB9jYDKsIQABCEAgE9CYoUl4vOkVxz+NNceOv7D+voHHnpg+lukxS2NPbfH5PMmPY1Uex1SO620rt1YXx4ZNwObgU7tOlg9/90jRWsZAx1nuJTBoY3D79u3yu9/9rvn7BCdPnrynd/6DZkqjtFpmMQYOPHEi7Urazjk4OljFwOi8sxoD5VM58Y5HrU0uX+taQNRxt1tlqUzv5/JyP2KwVTkOrjlfbAPbEIAABCCwGAQ0ZuiJgcYULx5fPB76uNdt45TPK19+6uBzHoNi2T7mcamt/FpbXS7rcRKQCfjcT18pH/jy7maNKWi/zoM2BurW/X7HIE+II8raOQWp+Hg07yu/gla8S5L3c3BTcJ323c3YLm23BUSni22P2z6f253T5DY6H2sIQAACEFg8AjUTUDsWyUwbp6adz+NSrq8tv8a3NsMR28f2uAjIDMSXkcfVu83rzeCNwbVr15q/btz2joH+8rHSeJnliYHyKLAogPgOhI797JnDzR1zn1OQ0eKgFNPmCbbSZSOQ9/Ok2+W6nqay8I/TR7ORA+L3vv+Dex7hup1d+pEDsOt0GaE5bEIAAhCAwAIS0HgQb4zFsS1uC43HEI0tWnJen4/jmtLECX0e53Id+bzq8XjqepvK+WeUBM68da3sOX1h6kfpWO4QGI0xOHLkyF1/zEx/2EzHNmoMhMoTZ3+VR3fvL/yPdxryOQWmuGyGMVB5Ksf1e+0A6UAXA3IMiDovM6P0zpuD4rR+YAziVWUbAhCAAARqBDQGepyJY9KFCxeayb/PaZ3HoZhX56MpUF1Kr+PxJlkcG2N9Sp/HNdedx+laPzg2fALLb16dagpkHJSO5Q6BwRsDvTtw6tSpsnfv3nLmzJn1nmlbx3TO7xfo5KxPDNYL3MYNBb4cINWcPFmPTYzGIB5nGwIQgAAEIAABCEAAAjUCgzcGtU5NOjZEY6C7G/lOiJ8StN35kJnIeSZx4RwEIAABCEAAAhCAwGITwBgM5Pr7EaofhebHqe5GfHTaZhqcljUEIAABCEAAAhCAAARMYJDG4OjRo2VpaanXR3kPHz7s/rOGAAQgAAEIQAACEIAABEopgzMGq6urZXl5uZcpsJm4fPkyFx8CEIAABCAAAQhAAAIQCAQGZwxC29mEAAQgAAEIQAACEIAABDaJAMZgk0BSDAQgAAEIQAACEIAABIZMAGMw5KtH2yEAAQhAAAIQgAAEILBJBDAGmwSSYiAAAQhAAAIQgAAEIDBkAhiDIV892g4BCEAAAhCAAAQgAIFNIoAx2CSQFAMBCEAAAhCAAAQgAIEhE8AYDPnq0XYIQAACEIAABCAAAQhsEgGMwSaBpBgIQAACEIAABCAAAQgMmQDGYMhXj7ZDAAIQgAAEIAABCEBgkwhgDDYJJMVAAAIQgAAEIAABCEBgyAQwBkO+erQdAhCAAAQgAAEIQAACm0QAY7BJICkGAhCAAAQgAAEIQAACQyaAMRjy1aPtEIAABCAAAQhAAAIQ2CQCGINNAkkxEIAABCAAAQhAAAIQGDKBLTMGqogPDNAAGkADaAANoAE0gAbQwPxqYG1trXT9PNA1YUyni88CAQhAAAIQgAAEIAABCMwvAc3Z4xx+2jbGYH6vJS2DAAQgAAEIQAACEIBAbwIYg97oyAgBCEAAAhCAAAQgAIHxEMAYjOda0hMIQAACEIAABCAAAQj0JoAx6I2OjBCAAAQgAAEIQAACEBgPAYzBeK4lPYEABCAAAQhAAAIQgEBvAhiD3ujICAEIQAACEIAABCAAgfEQwBiM51rSEwhAAAIQgAAEIAABCPQmgDHojY6MEIAABCAAAQhAAAIQGA8BjMF4riU9gQAEIAABCEAAAhCAQG8CGIPe6MgIAQhAAAIQgAAEIACB8RDAGIznWtITCEAAAhCAAAQgAAEI9CaAMeiNjowQgAAEIAABCEAAAhAYDwGMwXiuJT2BAAQgAAEIQAACEIBAbwKDNAY3btwoKysrZWlpaeLn1VdfLe+//35vOGSEAAQgAAEIQAACEIDAohAYnDFYW1srBw4cKDt27Oj0ee6558p77723KNeTfkIAAhCAAAQgAAEIQKAXgcEZg5s3b5b9+/eXQ4cOldXV1dbPyy+/vG4cMAe9tEEmCEAAAhCAAAQgAIEFIjBYY3D48OGJl0lfNXriiSfKwYMHy86dOwvmYCIuTkIAAhCAAAQgAIHREnjz+rvl44/9vGjN0k5g9Mbg3Llz5cSJE5iDdg1wBgIQgAAEIAABCIyawMVr75aPPnq8aM3STmDwxuDSpUt3vYCsJwVXr14tp0+fbszAU089VXbt2tVs672E559/vty+fbudCGdGT+Cb3/5O0YcFAhCAAAQgAIHFIIAx6HadB20Mbt261bxvkF9E1teGdO7o0aNl9+7djTGQOXj88ceb9HpPYYyL+vyFL36p7Nm7bxDdW71ypTz40GfKiydf6tTeLv2bNul3neKk8lggAAEIQGCcBF577fXysU98sjomatz54Ic+ctc5jZ06Fj8aozRusAyfAMag2zUctDFQFzXJzy8h65eLaoveS9CLy1ttDBRstuIOdZeJc43Ldh3zJH0rjcF29ZV6IQABCCwSAY15mpRrcu7FE3VPvPMNGo9hbeddTlx7gq88eRLv+nI9yq/2KU+8kabtnFbp8rFYP9vDIYAx6HatRmkMslGwEcAYdBPFVqXCGGwVaeqBAAQgsHUENMF+8KFPNx8bA611zPs2AfGmmbYn7ece5DLzxF7nNanXx/WqDI09n/38I+WrX/v6VGOQ68htYH84BDAG3a7VoI2BAoueAOSvEuV9/4JRH2OguxEKKseOv7D+eDHeBflzALz7UaMD3jf+0zebvL77oXW886C8PhfL1KVzGapXeeKdDQUqpXdeB1LnUbk65vPa77q4jFivyhEHT+S1n+/MqPxJ/XH9sV0KyupbfmIQ00Rebtuk/iivP+6/9uPi8z6mfZUZ25/zOC1rCEAAAhBoJ+CJ9M+eOXyXEajlUMx1jHd8j+OBytIEXmNPbcmx3GOUy3D+733/B3cZAJ1XvRiDGtXxHPvjn94vv75wpWitJRuDfH48Pd9YTwZtDNT12leJ8hMDf7WorzHQBDNOFLXtibGDWZysOjBqrSUHLx1TepehfQWqaA5cbjymdCpTx1yf0v145+PNcefxRL5Wro5NWlxGrFd1RTPgNJHJtP6oTqX3IKB99Tm21Wlyuc7jet33Wj+UN5bpgSKWqe28rzwu14w9uNTq4RgEIAABCNxNIMboPA7enfLOWBbjrGJwHHtyrI5luK6Y38diLJexUBqZAJ3XonKVxmuXq2Meb3TM5cXxwmlZzz8BTfwfPvBK89F2NAb53Pz3ZutaiDGYwloBJU7gldyTTQekHEwccFx0Dm45fy2dA5LKiksuK56r5WmrK+aL27UyagE+9rmtjtjWWhk5n9Lku0NKo2M6V2tbbLu2Y50+l69hTpP3u9TjsllDAAIQgMCfCcRYWov5SqWxI95oyux8XmniJD2ny+OHz6sNHjc9ply4eLExBtqPY0pMG9umuv3J47/rYT0MAtEAnH/nZvNzpVpHwzCMnmxdKwdtDDSB24qvEuXA4IDk4BMDjSeVNg26lDFYan9SwHQgdDmuQ/lqx6JUaufd1tiemCdv18qotVftcltr51VuTJMn5zqf26Y0DsZx7TtItbbl9mfWOq9yXYb2c5q836WeXC/7EIAABBaZQI7xbeOCGTn+K/560bbGFZ3TWuNAHAOdTmvnV71xifFcbfDNJpWjj4756YHSxvK17XHNZSq9xo9cj8+znn8CNgef2nWyfPi7R4rWMgY6znIvgUEbA3Xn+vXr9/wqUf4q0UZePs7BTnXWApIDTAxExh0DlY6pzDhRdToFJZuQ2uTU9cZA5rxaT8rTNajVylCf4ktjqisG0C79iX1zm90fty2W6TRxXWtbPK/tzFrHVL651tLkPF3qyfWyDwEIQGCRCSiOxhs6cbttzIpjR23srI09Zuw47fFDx33M9cUytS1D8KMdO9fNgNrstMrfNgbpuNKyDJeATMDnfvpK+cCXdzdrTEH7tRy8MdiKdwzipFIoa8EqBp0cQLQfj+UJsS9PTJcDXC2Nj3ldy9NWl/Pkda2MWn9jAG2rI/YnDgCuM+er1eO0WtfaFs9rO9bpc7GttTQ5T5d6XDZrCEAAAhC4l8C0eK4cMY3GiHy3Po8RuZYcu3N6le8nBo7rcTxXfo0PXvJY4eNKl9vmc6yHQ0BmIL6MPJyWb21LB20M9B+9y1eJnn322YbqRl4+dvBwcFGgiIuP6y5JvIOhNLVgo2MxQOWJs8tzva5LgU5PG+Jx/fqD0tfy5EDpctrWtTJi8Ha+3Keu/YnBVXkyL3GNXNSe5ZWVptrcNu/HMpU/Po0xr3hNlCZev7zvciNj95s1BCAAAQhMJ5DHjTxGOM46fnusinE359F+ju/xabbOuzy1UG2wMdC+zufYr2Necn4d19iRxymnZz3fBM68da3sOX1h6kfpWO4QGLQxUDcuXbpUlpaWWj/Ly8vNV42Utq8x0ERVP3fmR6Mx8NxB+eegEye1PueAp/zxvIKQy4zBTvkcNGPQcnme7DqvAp9erqrlcd1xYuxyautaGTnAK18tgE7qj/K4LW630itI57bpmNNoLfZqlxafUx6XF5nqvB4V6xq5jMxQafTxkvdrDJyWNQQgAAEITCfQNm44Lmudx1LHdKeJsV01KlbrXBwztN2WPhuD3GqVF8eHOIa5zDw25zLYn18Cy29enWoKZByUjuUOgcEbgztdmb61EWOggDVtyRPMaek5DwEIQAACEIAABCAAgXkhMFhjcOjQoakvHeeXkJVHXz3yy8hdLoLuRuS7FrV8tbsjtXTbeSzeWfHdkLiOd2G2s53UDQEIQAACEIAABCCw9QQGZwz0x8oOHDgw9a8d579+7H09Nbh9+3Zn0tOMgQyBHjVqgs3EujNWEkIAAhCAAAQgAAEIzBmBwRkD8btx40ZZWVlpfa+g7Z2DM2fOFP8V5Dm7DjQHAhCAAAQgAAEIQAAC20pgkMZgW4lROQQgAAEIQAACEIAABEZIAGMwwotKlyAAAQhAAAIQgAAEIDArAYzBrMRIDwEIQAACEIAABCAAgRESwBiM8KLSJQhAAAIQgAAEIAABCMxKAGMwKzHSQwACEIAABCAAAQhAYIQEMAYjvKh0CQIQgAAEIAABCEAAArMSwBjMSoz0EIAABCAAAQhAAAIQGCEBjMEILypdggAEIAABCEAAAhCAwKwEMAazEiM9BCAAAQhAAAIQgAAERkgAYzDCi0qXIAABCEAAAhCAAAQgMCsBjMGsxEgPAQhAAAIQgAAEIACBERLAGIzwotIlCEAAAhCAAAQgAAEIzEoAYzArMdJDAAIQgAAEIAABCEBghAQwBiO8qHQJAhCAAAQgAAEIQAACsxLAGMxKjPQQgAAEIAABCEAAAhAYIYEtMwaqiA8M0AAaQANoAA2gATSABtDA/GpgbW2tdP080DVhTKeLzwIBCEAAAhCAAAQgAAEIzC8BzdnjHH7aNsZgfq8lLYMABCAAAQhAAAIQgEBvAhiD3ujICAEIQAACEIAABCAAgfEQwBiM51rSEwhAAAIQgAAEIAABCPQmgDHojY6MEIAABCAAAQhAAAIQGA8BjMF4riU9gQAEIAABCEAAAhCAQG8CGIPe6MgIAQhAAAIQgAAEIACB8RDAGIznWtITCEAAAhCAAAQgAAEI9CaAMeiNjowQgAAEIAABCEAAAhAYDwGMwXiuJT2BAAQgAAEIQAACEIBAbwIYg97oyAgBCEAAAhCAAAQgAIHxEMAYjOda0hMIQAACEIAABCAAAQj0JoAx6I2OjBCAAAQgAAEIQAACEBgPgcEZg8uXL5elpaXOH6VngQAEIAABCEAAAhCAAAQmExicMTh8+HA5evRoJ2PwzDPPlCeffLKcO3duMgXOQgACEIAABCAAAQhAYMEJDNIYrKysdLpsJ06cKHv37i27d+/GHHQiRiIIQAACEIAABCAAgUUlMHpjIHNw6tQpzMGiKpx+QwACEIAABCAAAQh0IrAQxkAkMAed9EAiCEAAAhCAAAQgMDoCb15/t3z8sZ8XrVnaCYzeGBw7dqysrq42n5deeqns2rWLrxW164EzEIAABCAAAQhAYHQELl57t3z00eNFa5Z2AqM2BufPny/79u1rzIAMgT56GVkvMA9hee2118uDD326aM0yTAJcw2FeN1oNAQhAAALjIoAx6HY9R20Magj04vJQjMGevfvKBz/0kfLiyZdqXbnn2K1bt8oXvvilonz3e/nmt79T9GGZTEDXbpZrOLk0zkIAAhCAQFcCujHzsU98sonBisP+dB1Tu9ZDumEQwBh0u06jMAZra2vl7Nmz5e23317vtbZ1TOfiMiRjENvdZbuPMVCAlJlQ3lkWjMEstEgLAQhAYDEIeBxqG1cmnc8T+S43uXzzRZP+Bx/6TFm9cmUddO2JrdLLLOgcy2IRwBh0u96DNwYKMvv37y979uwp+uqQF23rmM7FSS/GwIT+vMYY3M2DPQhAAAIQ6EcgTtJrxmDSeZmAOGHXBF8T/UnmIE/8lTbWm8+rVzYmk8rt13tyzTsBjEG3KzR4Y3DlypXmp0j1s6R50TH9DQOl8TKrMXBw8iPI+PUZbSu4aO3zMSi5TqXx+XxHQ2kUvOLjTtdRC2qxLJUZg9usAS+2W2XFtuU2xXrUZuV1O7XvgB/TxfIjF7dTeWKamFdlat/c4oChc5MWtf2zn3+kaZO5um9up8qN7Vd5+Vo7j+tSerUptjn2y+niOl9D9939yvm7cFcbIpvcj1g/2xCAAAS2moDibI5tsQ3TzjutYtuk+JbPO4arfC05/uqYY7BiKMu4CfzxT++XX1+4UrTWko1BPj9uGt17N3hjcPPmzeapQJsx0BMDpfEyqzHIgUf7Djra1gTP+w5KOu5FwScGSKWNE05PBB2kFLR+vPPxJqDloKa8sWztxwlzn4CX26d2u025X26j0qgdbktuZz6v/ViP2xnZ5b7kMrX/1a99/a6nPyq3trj95h7ri20WO/dRaVS+8mpxHqfXMW3HNteud25P7kfkoLTaN1e3221y+T4f2+BjOU+un30IQAACW01AMczxt1b3tPPOo5gbY7CPa+0Y7XgZj8X4mH/AQ+fiGBzLZHtcBDTxf/jAK81H29EY5HPj6vnGejMKY/D000+XNmOgc32NgQOPg0xGXQtaClIOOprY6c61J5vK7zIdzGpluJ48qfRxrz1xdFkuu629zhfXSpsDeK1NsV/K7zSu023QObVb/Vb7vEQWzhPbmfuS63M5XdY1brmftTbksnMe9zmmm9bO3JZaGS6vdi6Xn9N06YfLZw0BCEBgKwgobuVxJdY77bzSKnbGmzcxv7bzmOHzipEeW1yGn9B6rfpZFoNANADn37nZ/Fyp1tEwLAaJ7r0ctDHQpOjgwYPN14UuXrx4T691TF8lUhql1TLrE4MYWHIwyZM0la80vosf8zogea100yZ1yp/vdqgOBT2Xo7WD4LTyGgDpnzz5bSsjt8V919pGyEWrb7F93jaXWh21IK+ylXfSAOM64zq3Vee69tPtcJtj39znWFe83vG4t3NbYvm+bkpbY6LjOX9uQ1s+188aAhCAwFYTUFycFLennXdcU7xrWxxLVVZcYozM8VPpupQdy2N7+ARsDj6162T58HePFK1lDHSc5V4CgzYGt2/fLr/73e+av09w8uTJe3rnP2imNEqrZVZj4EIVYDSx9eRWx2MAcjoFKU8m47bPx7UDW5wgxvM5qLkNDrgOcM6f92NZbdt5wtzWJtftIKy+a/IsHjIvMYDnMnPdtXa6Xpcf87iuWEc8n7czN53Pbaq1wfW4Dfn66XxuQ07TpS1K4/6Kocrwvq+ly6lxj22o9cN5WUMAAhDYDgKKaR6navVPOu+Y5nG0ll/HnE5lefExx9HaWKC0Op6farsM1uMkIBPwuZ++Uj7w5d3NGlPQfp0HbQzUrfv9jkFEl4NObaIYJ6Ce7MXAFcvTdq0Mp8lBLafN7cn7LmfSOrbX6XI9Oq4+xECtNN7P7cz7LtfrWjunscr1u6zaulZ/7mduQy1PrrPGJZeb21MrN6aJZcZtp5nWhtwP52MNAQhAYLsIKG71MQaOZ/EG3KQ+5JiZx5G2+Kv2da1jUv2cGxYBmYH4MvKwWr91rR28Mbh27Vrz143b3jHQXz5WGi+zPDFQkFLgUbDRkoOOzsXgoiCkfQUdL5o4xjQ6Hs87j9J5+dkzh5u7ITmoqb4YbLWvO87O66DqfZc3aa22eILvdG6T2+l+x3JVtz5eam2L5aptyysrTfJaO12H69Q61qft2HfXW1tnbkqT8+c25D57P/ZBfYzX0mncZpcZ25nb8r3v/6C5W6U2Ob37mcszE59Xnsw9l1HjwTEIQAACW0lAMTHGwVx37bxjWYyxOZ9iYTyf42uO8/m8ynNcjeNXrof9cRA489a1suf0hakfpWO5Q2A0xuDIkSN3/TEz/WEzHduIMbhw8WLZu+8nd31fPk/S9Es2CoD+Tno8b8w65vNaK4+CkxdPCJ1GjzhVdw5qDmhOp+Cq4Bbr1L7Oe7LqOtrWDsbKkwOu9l1XrENl5Qmq2xYHA7fFZWhSrPpcZyzT+d3uY8dfuItrnKC39cXHMzcdV12xbbU2KI3bqrQyMvFxs/oz6Xq7D7GtsS06L9MXuarMuGQtREZKl7nX+hHLYxsCEIDAVhHIMV/xNMbDSecV+x1/4zqOS87vcUL9ivliXTqX46nLzXF1q/hQz9YSWH7z6lRTIOOgdCx3CAzeGOjdgVOnTpW9e/eWM2fOrPdM2zqmc36/QCdneWKwXljLRp6ktSTj8EgI9Lne0RiMBAPdgAAEIAABCEBgpAQGbwxmvS6LYgx8J9l3SPI63j2fleF2po93h3KftB/vJG12O/sYA7Un38Xa7HZRHgQgAAEIQAACENgMAhiDDVDsM1HcQHVk3WYCs1zv+Aibx9bbfOGoHgIQgAAEIACBTgQGaQyOHj1alpaWen2U9/Dhw53gkAgCEIAABCAAAQhAAAKLQmBwxmB1dbUsLy/3MgU2E5cvX16U60s/IQABCEAAAhCAAAQg0InA4IxBp16RCAIQgAAEIAABCEAAAhCYiQDGYCZcJIYABCAAAQhAAAIQgMA4CWAMxnld6RUEIAABCEAAAhCAAARmIoAxmAkXiSEAAQhAAAIQgAAEIDBOAhiDcV5XegUBCEAAAhCAAAQgAIGZCGAMZsJFYghAAAIQgAAEIAABCIyTAMZgnNeVXkEAAhCAAAQgAAEIQGAmAhiDmXCRGAIQgAAEIAABCEAAAuMkgDEY53WlVxCAAAQgAAEIQAACEJiJAMZgJlwkhgAEIAABCEAAAhCAwDgJYAzGeV3pFQQgAAEIQAACEIAABGYigDGYCReJIQABCEAAAhCAAAQgME4CGINxXld6BQEIQAACEIAABCAAgZkIYAxmwkViCEAAAhCAAAQgAAEIjJPAlhkDVcQHBmgADaABNIAG0AAaQANoYH41sLa2Vrp+HuiaMKbTxWeBAAQgAAEIQAACEIAABOaXgObscQ4/bRtjML/XkpZBAAIQgAAEIAABCECgNwGMQW90ZIQABCAAAQhAAAIQgMB4CGAMxnMt6QkEIAABCEAAAhCAAAR6E8AY9EZHRghAAAIQgAAEIAABCIyHAMZgPNeSnkAAAhCAAAQgAAEIQKA3AYxBb3RkhAAEIAABCEAAAhCAwHgIYAzGcy3pCQQgAAEIQAACEIAABHoTwBj0RkdGCEAAAhCAAAQgAAEIjIcAxmA815KeQAACEIAABCAAAQhAoDcBjEFvdGSEAAQgAAEIQAACEIDAeAhgDMZzLekJBCAAAQhAAAIQgAAEehPAGPRGR0YIQAACEIAABCAAAQiMh8DgjMHly5fL0tJS54/Ss0AAAhCAAAQgAAEIQAACkwkMzhgcPny4HD16tJMxeOaZZ8qTTz5Zzp07N5kCZyEAAQhAAAIQgAAEILDgBAZpDFZWVjpdthMnTpS9e/eW3bt3Yw46ESMRBCAAAQhAAAIQgMCiEhi9MZA5OHXqFOZgURVOvyEAAQhAAAIQgAAEOhFYCGMgEpiDTnogEQQgAAEIQAACEBgdgTevv1s+/tjPi9Ys7QRGbwyOHTtWVldXm89LL71Udu3axdeK2vXAGQhAAAIQgAAEIDA6AhevvVs++ujxojVLO4FRG4Pz58+Xffv2NWZAhkAfvYysF5jHsHzz298p+izastF+37p1q3zhi18qe/buWzR09BcCEIAABCCwkAQwBt0u+6iNQQ2BXlzeCmPw4smXyoMPfaasXrlSa8aGj6lcla8Jria6Y140gf/ghz7SfH60Y+eG+212i2iqxqwT+gYBCEAgEnjttdfLxz7xyfXxw+OIxmeWxSOAMeh2zUdhDNbW1srZs2fL22+/vd5rbeuYzsVlVmOgSeRnP/9IUYCZZbnfxmCWtgw5rQM7gXzIV5G2QwACi0DA8doT8PxUNt7kcZp4g2Za/hpDlYBKDAAAHXpJREFUjQ0uK9+MU3kPPvTpu8ZvpZdZ0DmWxSKAMeh2vQdvDHS3fP/+/WXPnj1FXx3yom0d07l4Rx1jYELDWNcC+zBaTishAAEILA4BTfrjhNtPZqM50HY0ApFOl/wxvbbz+KAy4lP0fF55+Cppprg4+xiDbtd68MbgypUrzU+R6mdJ86Jj+hsGSuNlFmMQ70T4joTvXDvo+XgOdkoX7144fQxaCmLOH9OqrcqvtMsrK+uPQnMa1el6Xb7L89rtVZlK6+OxHQ6Ux46/0NSpNGpblyXXG8vN59xWl6ug3TyNef1cw0r1xoFF5+NjYJcd+62y3H73zWund31eO33sY7wWsQ3KM60fXa6V62YNAQhAYFEI5Fid96dxmJY+n3es9riHMZhGeNzn//in98uvL1wpWmvJxiCfHzeN7r0bvDG4efNm81SgzRjoiYHSeJnFGChPLbA4+Hhi6YmmgpQXBSZP5H3e6ZVG23HiGtPrvPY1wXUalxHryEHRdWutc87r/Zg31u+y84Q4llfbNodYrt4BkJnxOffZdcS0nvibk9sZ213jrzJcTi7X+6631u6cJteh/a9+7euN4ejSjy7XqtYOjkEAAhAYM4EYq9VP7U+KzZlFzh/PO44r/nrxMdeRY7vS6Vwcc5yX9fgIaOL/8IFXmo+2ozHI58bX+/49GoUxePrpp0ubMdC5zTYGCixx8ir8OQDFib7SeyKrtJps5vcWHNAc5GJ+X95cb1vQVLo4yVfbVJ/q9RLb4LqVb5YltyfmrZ3LjPK+8ud+19LEfnvibm4qo1Z3bFvub64zpq2VldtUy1/LF8tlGwIQgMCYCShOahyKsVmx2090tZ40Qa/lj7xqsV/nVYfirxaXEevUdmxTLJPt8RGIBuD8OzebnyvVOhqG8fV6Yz0atDHQBO/gwYPN14UuXrx4Dwkd01eJlEZptWzGE4M4MXWlOUh5svizZw43gTAGorZgFQOW86tcL3myWWuHy3ZgVF6VlQOj9m0e8kTZ9U1b1+p3ntq5zEhtrb0YFgeLWppcdtzv0pdaGpUhJtnwxbLdt9yPLtfKeVlDAAIQGDsBx1jFTy86pq+rKqZrcZocc+O5mN/leJ3jsI/HmF0bP1zvpLJdFutxELA5+NSuk+XD3z1StJYx0HGWewkM2hjcvn27/O53v2v+PsHJkyfv6Z3/oJnSKK2WjRqDtqDiIOUJeZyM/++fe/iuOyO1iWRufC3NNGPgtuVAm/PlupzPbc/na/vOUwuubecyo1rQzv2upYmBX21TGpkcm59am2If3L5af5VX5WjtdLm83I/cZtU1jXlsD9sQgAAExkLAcTPe4GnrWy2+d83vdIq/XnzMsb1WvtLqeH6K7jJYj5OATMDnfvpK+cCXdzdrTEH7dR60MVC3tuMdg9qkLwcgBStNMLXOwcoTyxjQ8iXSuRxYc72asMZJq877KUAsL7ctntN2bl8+37af2xPT1c7lduR95c/9rqWJ/XbbJ7GM7dK286iNtSW2oUs/YnqXV8vnc6whAAEIjJGAY2ttHKr1N8f3WfPHsUDl57E1l+82KGZ3baPzsB4+AZmB+DLy8Ht0f3oweGNw7dq15q8bt71joL98rDReZn1ikAONyvExTywdzOIkPU8WcyBS3hyYlMZLzq/jebIZg6ICoMpzm1yO10objYbarJeEtbj9bXldRl6bQ+y3HhXruM+5TNcR09aCdu53LU3st8t1PbmN2te5yDrnUZ0xv7b91KVLP3KbXafLqLWJYxCAAATGRMBxNcba2L8YV3Xc6T0meL8tv/LkWJ7Hh1xHPq8yHNNdb2wj2+MicOata2XP6QtTP0rHcofAaIzBkSNH7vpjZvrDZjq2UWMgVAo2/pqKtrU4uPh4DjK1yaLSxKAXy1U5+iUclaullj8HPZXnenNZbpfK8aK0Pq71977/gyY4OyC7b07fZZ056J0BG458zm11ubWgnftdSxP7rbKURlxj37Ttvrvf3s/9jT/TqnzRQKn8af3IbVaefK3cZ9YQgAAExkhAcTDHYO17zLtw4cJdY6nOxTFhWn4xy7Fcx2K+HLvbxoY+Y90Yr9nY+7T85tWppkDGQelY7hAYvDHQuwOnTp0qe/fuLWfOnFnvmbZ1TOf8foFOzvrEYL1ANuaSgAJ/7buikybm2RjMZcdoFAQgAAEIQAACENhiAoM3BrPywhh0IxbvwtTuAun8PCxqh+9IuT2e+Me7UT6ntZ8AzEsfYtvYhgAEIAABCEAAAttFAGOwXeSpd9MI6OlANi+1R8U2DErL9/83DT8FQQACEIAABCAwEgKDNAZHjx4tS0tLvT7Ke/jw4ZFcProBAQhAAAIQgAAEIACBzSEwOGOwurpalpeXe5kCm4nLly9vDj1KgQAEIAABCEAAAhCAwEgIDM4YjIQ73YAABCAAAQhAAAIQgMBcEcAYzNXloDEQgAAEIAABCEAAAhDYHgIYg+3hTq0QgAAEIAABCEAAAhCYKwIYg7m6HDQGAhCAAAQgAAEIQAAC20MAY7A93KkVAhCAAAQgAAEIQAACc0UAYzBXl4PGQAACEIAABCAAAQhAYHsIYAy2hzu1QgACEIAABCAAAQhAYK4IYAzm6nLQGAhAAAIQgAAEIAABCGwPAYzB9nCnVghAAAIQgAAEIAABCMwVAYzBXF0OGgMBCEAAAhCAAAQgAIHtIYAx2B7u1AoBCEAAAhCAAAQgAIG5IoAxmKvLQWMgAAEIQAACEIAABCCwPQQwBtvDnVohAAEIQAACEIAABCAwVwQwBnN1OWgMBCAAAQhAAAIQgAAEtofAlhkDVcQHBmgADaABNIAG0AAaQANoYH41sLa2Vrp+HuiaMKbTxWeBAAQgAAEIQAACEIAABOaXgObscQ4/bRtjML/XkpZBAAIQgAAEIAABCECgNwGMQW90ZIQABCAAAQhAAAIQgMB4CGAMxnMt6QkEIAABCEAAAhCAAAR6E8AY9EZHRghAAAIQgAAEIAABCIyHAMZgPNeSnkAAAhCAAAQgAAEIQKA3AYxBb3RkhAAEIAABCEAAAhCAwHgIYAzGcy3pCQQgAAEIQAACEIAABHoTwBj0RkdGCEAAAhCAAAQgAAEIjIcAxmA815KeQAACEIAABCAAAQhAoDcBjEFvdGSEAAQgAAEIQAACEIDAeAhgDMZzLekJBCAAAQhAAAIQgAAEehPAGPRGR0YIQAACEIAABCAAAQiMhwDGYDzXkp5AAAIQgAAEIAABCECgN4FBGoMbN26UlZWVsrS0NPHz6quvlvfff783HDJCAAIQgAAEIAABCEBgUQgMzhisra2VAwcOlB07dnT6PPfcc+W9995blOtJPyEAAQhAAAIQgAAEINCLwOCMwc2bN8v+/fvLoUOHyurqauvn5ZdfXjcOmINe2iATBCAAAQhAAAIQgMACERisMTh8+PDEy6SvGj3xxBPl4MGDZefOnQVzMBEXJyEAAQhAAAIQgMBoCbx5/d3y8cd+XrRmaScwemNw7ty5cuLECcxBuwY4AwEIQAACEIAABEZN4OK1d8tHHz1etGZpJzB4Y3Dp0qW7XkDWk4KrV6+W06dPN2bgqaeeKrt27Wq29V7C888/X27fvt1O5D6eefHkS+XBhz5TVq9c6VxLnzydCx94wm9++ztFHxYIQAACEIAABCAwiQDGYBKdO+cGbQxu3brVvG+QX0TW14Z07ujRo2X37t2NMZA5ePzxx5v0ek9hOxZNYj/2iU+W1157vXP1ffJ0LnyOE06b9MtcyWR94Ytfaq71HHeFpkEAAhCAQA8CGisffOjTd42ZGtsV932TzWPBBz/0kRI/e/bu61EjWcZMAGPQ7eoO2hioi5rk55eQ9ctFtUXvJejF5VmMgYLOZz//yF2BqVY2xzaXwDRjsLm1URoEIAABCGyUgCbyuvnlCfq0ybkn+U6fb/TUjIHGhpjOxkBP1724HfGYz7FeXAIYg27XfpTGIBsFGwGMQTdRzEMqjME8XAXaAAEIQKAbAZmA+ETcE/Y2c+DJezyfJ/3ZGCitnxS4Va4nmwDGEBNibQIYA5OYvB60MWj7KlH+apF/wWhWY6BA4zsZXuuY73IcO/5Cc+dC5xSwHKCcNgcw5Y3HtK87H8srK+t3WeJ5Xbo+edw+t8PreJdlsixK891959Na7fCiYK2nKDqmgcCDwbR6lb6tTJfttYO61s6j7bg4jY9pX9dBn7Y8TssaAhCAAATuL4Eco6fVlse7aAw8fmgdF4+7+fisdccy2R4HgT/+6f3y6wtXitZasjHI58fR6433YtDGQN2vfZUoPzHwV4tmNQYqPwYm4/YE2BNiHdexr37t6+tfOXIaBScvOeg50HnCvhl5chne12S56+LJtdNrPxoWMVHf3W6lcz3ur/ddbw7e2ld+rWuLyomGxPldvvJoO+8rj+t0O/OAUauPYxCAAAQgsLkEcoyeVnoeIz3++ngcc1yWx4YY57Udx2enZb1YBDTxf/jAK81H29EY5HOLRWZybzEGk/lMNAaegLYVofMxkDm4eTKc91XORvPUgmQus629bccdnLXWkvd1bFq9tTxt9el4bUDJvHKavJ/NyaT6OAcBCEAAAptHQDFfk3PF7S6L47XiuBeXoRs+Gkt1gyqPux57/JTY65zOZbJeLALRAJx/52bzc6VaR8OwWESm93bQxkCBRC8T568O5f2+XyUSvtqE1gGsFnhykIp32vPENu+rvjyJz2nyfi1PnCBPaus0eagcB1mtVbeWGhMdn1av+qZyIpO2NsSynEb1x7tAOU3e30jfXSdrCEAAAhCYjYBjr2Jy10XjQx4bbAx8vJbGY67HJ9enuuONOR9nvXgEbA4+tetk+fB3jxStZQx0nOVeAoM2BurO9evX7/lVovxVoo28fFybBDvoKUjFRYEoTqDzJH7avspSmTGY9cnjYOpJ/SzBWW1QncrrfDnw1pgoX9d61UeVH/sZOWpbdbt+n8sscpq833adXB5rCEAAAhDYXAKOu57MdyndY4JifFzyWOOy49iQxyfn13F+UdA0WMsEfO6nr5QPfHl3s8YUtGti8MZgO98xiMYgBzAhzxPZafvKs1Fj4MCZA2y7BO4+4/yxbznw1vrqfF3rrZURW5In+TU2OU3ed5tiX2IdbEMAAhCAwOYRcMyNT3anla74rBtFtThdGyc0xsTy8/jk+pR3lq8yOR/r8RKQGYgvI4+3pxvr2aCNgYJQl68SPfvssw2lPi8f14KOg18MZDkIeT/eNdlKYxDbNotE3DffkfG+Arcn/bVg7XRt9SrP977/g/WmRBbOG58gqP4Y/M3TbVBB2QjkfZfb1qb1xrABAQhAAAIbIuB4G+N2LNDnY5xXbG4zBco7aazxGDVpjI51xbawvRgEzrx1rew5fWHqR+lY7hAYtDFQNy5dulSWlpZaP8vLy81XjZS2jzFQPgcvBzAHuDzhjOkUkPQzpHqUqcClJU6Ga/uuKwazPnk8iVZ74ydOqpsGtfwT8yvIqx9qk/PXgrWKivlyvSpDv9rk43HwcGCPJkpB/0c7djb1Ok/mnY1A3m+7Ti3d5jAEIAABCPQkoPHBsTquHetznPd+TOttx/ppY43StZVj49CzO2QbAYHlN69ONQUyDkrHcofA4I3Bna5M3+prDKaXPD8pFEijGXHLFECj4fDxzVpvV72b1X7KgQAEIAABCEAAAotOYLDG4NChQ1NfOs4vISuPvnrkl5HHePF118Z3aNw/3znXHRQZBN+Vyeucz/m7rKfV26UM0kAAAhCAAAQgAAEIbB+BwRkD/bGyAwcOTP2J0vyTpd7XU4Pbt29vH/EtqLk2+dex+71sV733u1+UDwEIQAACEIAABBaBwOCMgS7KjRs3ysrKSut7BW3vHJw5c6b4ryAvwsWljxCAAAQgAAEIQAACEOhKYJDGoGvnSAcBCEAAAhCAAAQgAAEIdCOAMejGiVQQgAAEIAABCEAAAhAYNQGMwagvL52DAAQgAAEIQAACEIBANwIYg26cSAUBCEAAAhCAAAQgAIFRE8AYjPry0jkIQAACEIAABCAAAQh0I4Ax6MaJVBCAAAQgAAEIQAACEBg1AYzBqC8vnYMABCAAAQhAAAIQgEA3AhiDbpxIBQEIQAACEIAABCAAgVETwBiM+vLSOQhAAAIQgAAEIAABCHQjgDHoxolUEIAABCAAAQhAAAIQGDUBjMGoLy+dgwAEIAABCEAAAhCAQDcCGINunEgFAQhAAAIQgAAEIACBURPAGIz68tI5CEAAAhCAAAQgAAEIdCOAMejGiVQQgAAEIAABCEAAAhAYNQGMwagvL52DAAQgAAEIQAACEIBANwJbZgxUER8YoAE0gAbQABpAA2gADaCB+dXA2tpa6fp5oGvCmE4XnwUCEIAABCAAAQhAAAIQmF8CmrPHOfy0bYzB/F5LWgYBCEAAAhCAAAQgAIHeBDAGvdGREQIQgAAEIAABCEAAAuMhgDEYz7WkJxCAAAQgAAEIQAACEOhNAGPQGx0ZIQABCEAAAhCAAAQgMB4CGIPxXEt6AgEIQAACEIAABCAAgd4EMAa90ZERAhCAAAQgAAEIQAAC4yGAMRjPtaQnEIAABCAAAQhAAAIQ6E0AY9AbHRkhAAEIQAACEIAABCAwHgIYg/FcS3oCAQhAAAIQgAAEIACB3gQwBr3RkRECEIAABCAAAQhAAALjIYAxGM+1pCcQgAAEIAABCEAAAhDoTQBj0BsdGSEAAQhAAAIQgAAEIDAeAhiD8VxLegIBCEAAAhCAAAQgAIHeBAZpDG7cuFFWVlbK0tLSxM+rr75a3n///d5wyAgBCEAAAhCAAAQgAIFFITA4Y7C2tlYOHDhQduzY0enz3HPPlffee29Rrif9hAAEIAABCEAAAhCAQC8CgzMGN2/eLPv37y+HDh0qq6urrZ+XX3553ThgDnppg0wQgAAEIAABCEAAAgtEYLDG4PDhwxMvk75q9MQTT5SDBw+WnTt3FszBRFychAAEIAABCEAAAqMl8Ob1d8vHH/t50ZqlncDojcG5c+fKiRMnMAftGuAMBCAAAQhAAAIQGDWBi9feLR999HjRmqWdwOCNwaVLl+56AVlPCq5evVpOnz7dmIGnnnqq7Nq1q9nWewnPP/98uX37djsRzkAAAhCAAAQgAAEIjIoAxqDb5Ry0Mbh161bzvkF+EVlfG9K5o0ePlt27dzfGQObg8ccfb9LrPYWhLN/89neKPiwQgAAEIAABCHQn8Nprr5cHH/p00dqL5gZf+OKXyoMPfaasXrnSHNYY+8EPfeSuj9IoLct4CGAMul3LQRsDdVGT/PwSsn65qLbovQS9uDxmY6BA99nPP3JXIKyx8LFZ0zsfawhAAAIQgEAkoAn4xz7xyfUJ9p69++LpZlyK52uTb0/ca+fuKqyUe8rT5D5O+GvGQCYgl51vwLkN3JTLxIe9jzHodv1GaQyyUbARwBjcKwqMwb1MOAIBCEAAArMRkAnQpN935zW2aJJuc5An6bXJ94snX1o3FXnyXmuNytSNMNVVW3Kdaks0Ds6TjYGOqy21tM7DengEMAbdrtmgjYECi54A5K8S5X3/gtGsxqAWRGrBTEHFjyFrgcQB0mliwFPgmnQHxQEr1qHt2hKDquv6hyNHm+AW8yid6vzJ0z9db7fT6xwLBCAAAQhAYKMEPH61laMxNo6HTqdxqHbc571WutqY6/PRGCitxrnaGFdr57SyXQfr+SXwxz+9X3594UrRWks2Bvn8/PZka1s2aGMgVLWvEuUnBv5q0azGwBP6GEhioFH9CigxgGUz4TLixPxHO3aW5ZWV5i6H8vpuh9OqDC/KF4OZ08TynFbr3L58zPndp1r6WB7bEIAABCAAgT4ENE5NGqt0g8pjUSxfx+K4Gs/F7WnpPL4pnQxEW5m5nR4n41gc62V7GAQ08X/4wCvNR9vRGORzw+jR1rQSYzCFcw4Y8Q6Hg47WXvxEwQElpneaSetcX95XXgc5Ba+81NqkNG6HTEkMjm3pc7nsQwACEIAABLoS0NhSm/hrLNLNrkl3+qdN+N0GpfPTbq91zIvboHMa91Snx2an0VrjrPN7HcfJmJbtYRGIBuD8OzebnyvVOhqGYfXo/rd20Mbgfn+VSPjjJNyTfgeeeC5eqjiZj9sxTdyOwcsBTHVpqeVXvQq4ypcXHcu/wqA0vgOS87Wlz+WyDwEIQAACEOhCwGOlxq+2xWNSLY3GuC4Tcz15P3b8hfUqNOmPY5zHVpsQnff2eqYe42zMy/b8E7A5+NSuk+XD3z1StJYx0HGWewkM2hioO9evX7/nV4nyV4k28vKxA5wClYJMfNFpUpBRUFPg07oW+NR2lx0DmcqMAbHNGNSCm8psm+g7QMa6JqXXORYIQAACEIDALAQ8rrWNUbGstptcXY1BLEvbrlvjqJY8Hvp8HpNr46zy67jLagrkn8ESkAn43E9fKR/48u5mjSlov5SDNwb38x0DY1NgcICIASUHHaV34HEw0TpO9F2m1gp+OXjm9LWAldPEMqe1KeetpY/lsQ0BCEAAAhDoQsDjX74B1Za3bfy5X8ZA7aiZkdo4677EMb+tHxwfBgGZgfgy8jBavfWtHLQx0H/cLr9K9OyzzzZkZ3352JdDwUtPCjTBV1CJi4JGnPhr4h0n+7XHpXr0qeM5QGm/9lWiGGTVFu27Hbl87/u82qptt8nn1U4t3o/pY//YhgAEIAABCEwj4Il0HK9injw2On0cP51e41HtuMpw+TVTkeuopXG9ccJfMwaxLreL9bAInHnrWtlz+sLUj9Kx3CEwaGOgbly6dKksLS21fpaXl5uvGiltX2PgQOLJ9R18f95SUPELS7U0nnzfSfPp5leJlDvm1XYOiDrmF4adXwHLi41CDKI677R//63/3GzHib+2dd7HYvpYtutgDQEIQAACEJhEwOOKxx6vPZFX3jjW6Hwct3Q+jofOH8dUn1ddGlf1joHKr6VVeTVj4OPK5/HO5bocrWO9ysMyPALLb16dagpkHJSO5Q6BwRuDO12ZvtXXGEwvmRQQgAAEIAABCEAAAhAYNoHBGoNDhw5Nfek4v4SsPPrqkV9GHvalo/UQgAAEIAABCEAAAhDYPAKDMwb6Y2UHDhyY+teO818/9r6eGty+fXvzCFISBCAAAQhAAAIQgAAERkBgcMZAzG/cuFFWVlZa3ytoe+fgzJkzxX8FeQTXji5AAAIQgAAEIAABCEBg0wgM0hhsWu8pCAIQgAAEIAABCEAAAhBoCGAMEAIEIAABCEAAAhCAAAQgUDAGiAACEIAABCAAAQhAAAIQwBigAQhAAAIQgAAEIAABCECgYAwQAQQgAAEIQAACEIAABCCAMUADEIAABCAAAQhAAAIQgEDBGCACCEAAAhCAAAQgAAEIQABjgAYgAAEIQAACEIAABCAAARHgV4nQAQQgAAEIQAACEIAABCCAMUADEIAABCAAAQhAAAIQgABPDNAABCAAAQhAAAIQgAAEIMBXidAABCAAAQhAAAIQgAAEICACW/KOwdmzZ8v7778PcQhAAAIQgAAEIAABCEBgDglorq45+9raWufPA7Mkdto33nijXLlyZQ4R0CQIQAACEIAABCAAAQhAQHN1zdk9f++y7mUMrl271jgQVciTA4QHAQhAAAIQgAAEIACB+SCgubnm6HpaoDl7F0PgNL2MgTKrIrkQVarvL/GBARpAA2gADaABNIAG0AAa2F4NaG6uOfqspkDz+97GwM6CdffvbcEKVmgADaABNIAG0AAaQAPzqgGMwQwvZMzrRaRdBBg0gAbQABpAA2gADaCBjWoAY4AxmOm7ZxsVHPkJWmgADaABNIAG0AAamE8NYAwwBhgDNIAG0AAaQANoAA2gATTAOwY41vl0rFwXrgsaQANoAA2gATSABrZWAzwxwB1yhwANoAE0gAbQABpAA2gADfDEACe6tU4U3vBGA2gADaABNIAG0MB8aoAnBrhD7hCgATSABtAAGkADaAANoAGeGOBY59Oxcl24LmgADaABNIAG0AAa2FoN8MQAd8gdAjSABtAAGkADaAANoAE0UP5/YLsIyb9YUvgAAAAASUVORK5CYII=) - """) - return - - -@app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Advanced usage & custom training - - Let's create our own logic for a more customized training. - """) - return - + Open the Weights & Biases run link printed by the script to inspect training loss, MRPC + evaluation metrics, and system telemetry. Open the run's **Artifacts** tab + to find the saved model and its evaluation metadata. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### Preparing a dataset + ## Advanced usage: customize a Trainer workflow - The dataset will vary based on the task you work on. Let's work on sequence classification! + Now build a topic classifier with DistilBERT and Yahoo! Answers. This path + makes dataset preparation, tokenization, model loading, metrics, and the Weights & Biases + run lifecycle explicit. - Our dataset will be composed of sentences and their associated classes. For example if you wanted to identify the subject of a conversation, you could create a dataset such as: + A sequence classifier maps text to a class. For example: - input | class - --- | --- - The team scored a goal in the last seconds | sports - The debate was heated between the 2 parties | politics - I've never tasted croissants so delicious ! | food + | Input | Class | + | --- | --- | + | The team scored a goal in the last seconds | sports | + | The debate was heated between the two parties | politics | + | I've never tasted croissants so delicious! | food | - The objective of our trained model will be to correctly identify the class associated to new sentences. + The [Datasets Hub](https://huggingface.co/datasets) provides many starting + points. We use [Yahoo! Answers Topic Classification](https://huggingface.co/datasets/community-datasets/yahoo_answers_topics), + which has ten topics such as Society & Culture, Science & Mathematics, and + Health. We use `question_title` as the input and `topic` as the target. + The following cells download and preprocess the full dataset, which can + take time and disk space. """) return -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### Finding a dataset - - If you don't have the right dataset, you can always explore the [Datasets Hub](https://huggingface.co/datasets). The ["topic classification" category](https://huggingface.co/datasets?filter=task_ids:topic-classification) contains many datasets suitable for prototyping this model. - - We select ["Yahoo! Answers Topic Classification"](https://huggingface.co/datasets/community-datasets/yahoo_answers_topics) and visualize it with the [Datasets viewer](https://huggingface.co/datasets/community-datasets/yahoo_answers_topics/viewer/default/train). - - ![image.png](data:image/png;base64,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) - - Each topic number represents a unique subject: - - * 0:"Society & Culture" - * 1:"Science & Mathematics" - * 2:"Health" - * etc… - - They correspond to the output we will try to predict from the model. - """) - return +@app.cell +def _(): + model_checkpoint = "distilbert-base-uncased" + custom_run_name = "distilbert-yahoo-topics" + custom_max_steps = 30_000 + custom_output_dir = Path("hf_outputs/topic_classification") + return ( + custom_max_steps, + custom_output_dir, + custom_run_name, + model_checkpoint, + ) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Loading a dataset + ### Load and inspect the dataset - Any dataset from the Datasets Hub can easily be loaded and is automatically downloaded if not present locally. + `load_dataset()` downloads data when it is not cached. The resulting + `DatasetDict` shows the splits, features, and row counts. Inspect one row, + then use the `ClassLabel` feature's `int2str()` and `str2int()` methods to + translate between topic IDs and names. """) return -@app.cell(hide_code=True) -def _(mo, wandb_settings): - prepare_advanced_button = mo.ui.run_button( - label="Download the dataset, tokenizer, and model", - kind="success", - ) - _ready_note = ( - "This downloads the Yahoo! Answers dataset and DistilBERT assets. " - "It does not create a W&B run; training has a separate confirmation." - ) - mo.vstack( - [ - mo.md( - f"The custom experiment will use W&B project " - f"`{wandb_settings['project']}` under entity " - f"`{wandb_settings['entity']}`.\n\n{_ready_note}" - ), - prepare_advanced_button, - ] - ) - return (prepare_advanced_button,) - - -@app.cell(hide_code=True) -def _(mo, prepare_advanced_button): - mo.stop( - not prepare_advanced_button.value, - mo.callout( - mo.md( - "Click the button above when you are ready to download the " - "advanced tutorial assets." - ), - kind="info", - ), - ) - advanced_setup_request = True - return (advanced_setup_request,) - - @app.cell -def _(advanced_setup_request): - assert advanced_setup_request - from datasets import load_dataset - +def _(): dataset = load_dataset("community-datasets/yahoo_answers_topics") - return (dataset,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Just printing our dataset object gives us a lot of information. - """) - return - - -@app.cell -def _(advanced_setup_request, dataset): - assert advanced_setup_request dataset - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - We can easily access any element. - """) - return - - -@app.cell -def _(advanced_setup_request, dataset): - assert advanced_setup_request - dataset['train'][0] - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - `str2int` and `int2str` help us go from class label to their integer mapping. - """) - return - - -@app.cell -def _(advanced_setup_request, dataset): - assert advanced_setup_request - dataset['train'].features['topic'].int2str(4) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - For our topic classification task, we use `question_title` as input and try to predict `topic`. - """) - return + return (dataset,) @app.cell -def _(advanced_setup_request, dataset): - assert advanced_setup_request - label_list = dataset['train'].unique('topic') - label_list.sort() - label_list - return (label_list,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - This particular dataset is split between 10 different topics, that will be represented by 10 classes from our model output. - """) +def _(dataset): + dataset["train"][0] return @app.cell -def _(advanced_setup_request, label_list): - assert advanced_setup_request - num_labels = len(label_list) - num_labels - return (num_labels,) +def _(dataset): + topic_feature = dataset["train"].features["topic"] + label_names = topic_feature.names + num_labels = topic_feature.num_classes + print(f"{num_labels} topics: {label_names}") + topic_feature.int2str(4) + return label_names, num_labels @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - The "topic" class needs to be renamed to "labels" for the `Trainer` to find it. + Rename `topic` to `labels`, the target column expected by `Trainer`. Keep the + original dataset available for inspection and give each preparation stage + its own name so marimo can track the dependencies. """) return @app.cell -def _(advanced_setup_request, dataset): - assert advanced_setup_request - dataset_1 = dataset.rename_column('topic', 'labels') - return (dataset_1,) +def _(dataset): + labeled_dataset = dataset.rename_column("topic", "labels") + return (labeled_dataset,) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Tokenizing the dataset + ### Tokenize the text - In order to train a neural network, we need to convert our inputs to numbers: - * the tokenizer divides a sequence of characters into tokens, ie sub-sequences (such as words, characters, sub-words…) - * each unique token is mapped to a unique integer + A tokenizer splits text into tokens and maps them to integer IDs. + `AutoTokenizer` loads the tokenizer associated with the model checkpoint. + Inspect a single title and its tokenization before applying it in batches + with `Dataset.map()`, which caches the processed data locally. - There are many [types of tokenizers](https://huggingface.co/transformers/tokenizer_summary.html). 🤗 Transformers can auto-select the right `Tokenizer` associated to a specific model. + Truncation limits inputs to the model's supported length. During training, + passing the tokenizer as `processing_class` lets `Trainer` dynamically pad + each batch. The tokenized rows include `input_ids` and `attention_mask`. """) return @app.cell -def _(advanced_setup_request): - assert advanced_setup_request - from transformers import AutoTokenizer - tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased') +def _(model_checkpoint): + tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) return (tokenizer,) -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - The tokenizer let us quickly preprocess our data. - """) - return - - @app.cell -def _(advanced_setup_request, dataset_1): - assert advanced_setup_request - sample_input = dataset_1['train'][0]['question_title'] - sample_input - return (sample_input,) - - -@app.cell -def _(advanced_setup_request, sample_input, tokenizer): - assert advanced_setup_request +def _(labeled_dataset, tokenizer): + sample_input = labeled_dataset["train"][0]["question_title"] + print(sample_input) tokenizer(sample_input) return -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - The tokenizer can quickly process an entire dataset and cache the results locally to avoid any future tokenization of the same data. - - We leverage `dataset.map(fn)` function which can efficiently apply any function to a dataset. We also take advantage of batch processing which is supported by the tokenizer and makes the operation even faster. - """) - return - - -@app.cell -def _(advanced_setup_request, dataset_1, tokenizer): - assert advanced_setup_request - dataset_2 = dataset_1.map(lambda x: tokenizer(x['question_title'], truncation=True), batched=True) - return (dataset_2,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - We truncate the data to the max length supported by the model. During training, we will pass the tokenizer to pad inputs to the longest sequence of the batch (the model requires same length inputs in a single batch). - - Our dataset now contains new keys: `input_ids` (tokens) and `attention_mask` (needed for certain models). - """) - return - - @app.cell -def _(advanced_setup_request, dataset_2): - assert advanced_setup_request - dataset_2['train'][0] - return +def _(labeled_dataset, tokenizer): + tokenized_dataset = labeled_dataset.map( + lambda batch: tokenizer(batch["question_title"], truncation=True), + batched=True, + ) + tokenized_dataset["train"][0] + return (tokenized_dataset,) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Loading a model - - Plenty of models are available and can be explored on the [Model Hub](https://huggingface.co/models). - - Once a model has been selected, it can be automatically loaded and adapted to one of its supported tasks. - """) - return - - -@app.cell -def _(advanced_setup_request, num_labels): - assert advanced_setup_request - from transformers import AutoModelForSequenceClassification - model = AutoModelForSequenceClassification.from_pretrained('distilbert-base-uncased', num_labels=num_labels) - return (model,) + ### Load a model and inspect an initial prediction + Explore supported architectures on the [Model Hub](https://huggingface.co/models). + `AutoModelForSequenceClassification` loads a pretrained encoder and adds a + classification head for our ten topics. The new head has not learned the + topic labels yet, so its initial predictions are not meaningful topic classifications. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - In this case, we are loading a pre-trained network to which a custom head has been added for sequence classification and presents 10 classes corresponding to the possible topics of this dataset. - - Let's make a function to return the topic prediction from a sample question. + `get_topic()` tokenizes a sentence, moves its tensors to the model's device, + and selects the largest output logit. Evaluation mode disables dropout. + `torch.no_grad()` avoids building a gradient graph for inference. """) return @app.cell -def _( - advanced_setup_request, - dataset_2, - model, - tokenizer, - torch, - torch_device, -): - assert advanced_setup_request - def get_topic(sentence, tokenize=tokenizer, model=model): - # tokenize the input - inputs = tokenize(sentence, return_tensors='pt') - # Ensure the model and inputs are on the selected device. - inputs = {name: tensor.to(torch_device) for name, tensor in inputs.items()} - model = model.to(torch_device) - # get prediction - 10 classes "probabilities" (not really true because they still need to be normalized) - with torch.no_grad(): - predictions = model(**inputs).logits.cpu().numpy() - # get the top prediction class and convert it to its associated label - top_prediction = predictions.argmax().item() - return dataset_2['train'].features['labels'].int2str(top_prediction) - - return (get_topic,) +def _(label_names, model_checkpoint, num_labels): + set_seed(42) + untrained_model = AutoModelForSequenceClassification.from_pretrained( + model_checkpoint, + num_labels=num_labels, + id2label=dict(enumerate(label_names)), + label2id={label: index for index, label in enumerate(label_names)}, + ) + return (untrained_model,) -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Let's test a prediction on a sample sentence. - """) - return +@app.function +def get_topic(sentence, model, tokenizer): + model.eval() + model_device = next(model.parameters()).device + inputs = tokenizer(sentence, truncation=True, return_tensors="pt") + inputs = {name: tensor.to(model_device) for name, tensor in inputs.items()} + with torch.no_grad(): + predicted_id = model(**inputs).logits.argmax(dim=-1).item() + return model.config.id2label[predicted_id] @app.cell -def _(advanced_setup_request, get_topic): - assert advanced_setup_request - get_topic('Why is cheese so much better with wine?') - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Obviously the model has not been trained yet so the results are still random. - """) - return +def _(tokenizer, untrained_model): + sample_sentence = "Why is cheese so much better with wine?" + initial_topic_prediction = get_topic(sample_sentence, untrained_model, tokenizer) + initial_topic_prediction + return initial_topic_prediction, sample_sentence @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Training the model - - We now need to fine-tune the model based on our dataset. - - The `Trainer` class let us easily train a model and is very flexible. + ### Define an evaluation metric - **Note:** set `report_to` to `wandb` in `TrainingArguments` to enable logging through W&B. + `Trainer` passes model logits and reference labels to `compute_metrics()`. + Convert logits to the most likely class with `argmax`, then compute accuracy + with NumPy. You can use metrics from the [Evaluate library](https://huggingface.co/docs/evaluate) + here for tasks that need other scores. """) return -@app.cell -def _(): - from transformers import Trainer, TrainingArguments - - ADVANCED_MAX_STEPS = 30000 - ADVANCED_RUN_NAME = "custom_training" - return ADVANCED_MAX_STEPS, ADVANCED_RUN_NAME, Trainer, TrainingArguments - - -@app.cell -def _(TrainingArguments, advanced_run_request): - args = TrainingArguments( - report_to = 'wandb', # enable logging to W&B - output_dir = advanced_run_request['output_dir'], # temporary output directory - eval_strategy = 'steps', # check evaluation metrics at intervals - learning_rate = 5e-5, # we can customize learning rate - max_steps = advanced_run_request['max_steps'], - logging_steps = 100, # we will log every 100 steps - eval_steps = 5000, # we will perform evaluation every 5,000 steps - save_steps = 10000, - load_best_model_at_end = True, - metric_for_best_model = 'accuracy', - run_name = advanced_run_request['run_name'] # name of the W&B run - ) - return (args,) +@app.function +def compute_metrics(eval_pred): + logits, labels = eval_pred + predictions = np.argmax(logits, axis=-1) + return {"accuracy": float(np.mean(predictions == labels))} @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - For more customization, refer to [`TrainingArguments` documentation](https://huggingface.co/transformers/main_classes/trainer.html#transformers.TrainingArguments). - """) - return - + ### Configure training and Weights & Biases logging -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - We can optionally define metrics to calculate in addition to the loss through the `compute_metrics` function. + The next cell configures `Trainer` for 30,000 steps. `report_to="wandb"` + installs the Transformers Weights & Biases callback, which logs the model configuration, + training loss, evaluation accuracy, and other metrics automatically. - Several [metrics](https://huggingface.co/docs/evaluate) are readily available from the Evaluate library to monitor model performance. + Evaluate and save every 5,000 steps so each evaluated model has a checkpoint. + At the end, reload the checkpoint with the best accuracy and log it as a + model Artifact. + To try a shorter run, reduce `custom_max_steps` and the evaluation and save + intervals together. Local checkpoints remain in `custom_output_dir`. """) return @app.cell -def _(advanced_setup_request): - assert advanced_setup_request - import evaluate - import numpy as np - - accuracy_metric = evaluate.load("accuracy") - - def compute_metrics(eval_pred): - predictions, labels = eval_pred - predictions = np.argmax(predictions, axis=1) - # metrics from the Evaluate library have a `compute` method - return accuracy_metric.compute(predictions=predictions, references=labels) - - return (compute_metrics,) - - -@app.cell(hide_code=True) -def _(ADVANCED_MAX_STEPS, advanced_setup_request, mo, wandb_settings): - assert advanced_setup_request - advanced_training_button = mo.ui.run_button( - label="Evaluate the baseline and train with W&B", - kind="success", - ) - _runtime_note = ( - "The button below starts baseline evaluation and the full " - f"{ADVANCED_MAX_STEPS:,}-step fine-tuning run." - ) - mo.vstack( - [ - mo.callout( - mo.md( - f"{_runtime_note}\n\nThis will create a run in " - f"`{wandb_settings['entity']}/{wandb_settings['project']}`." - ), - kind="warn", - title="Long-running example", - ), - advanced_training_button, - ] - ) - return (advanced_training_button,) - - -@app.cell(hide_code=True) -def _( - ADVANCED_MAX_STEPS, - ADVANCED_RUN_NAME, - WANDB_LOG_MODEL, - advanced_training_button, - mo, - tempfile, - uuid, - wandb, - wandb_settings, -): - mo.stop( - not advanced_training_button.value, - mo.callout( - mo.md( - "Click the button above when you are ready to evaluate the " - "baseline, create a W&B run, and start fine-tuning." - ), - kind="info", - ), - ) - mo.stop( - wandb.run is not None, - mo.callout( - mo.md( - "Another W&B run is active in this Python process. Finish it " - "before starting the custom training example." - ), - kind="warn", - ), +def _(custom_max_steps, custom_output_dir, custom_run_name): + training_args = TrainingArguments( + report_to="wandb", + output_dir=str(custom_output_dir), + eval_strategy="steps", + learning_rate=5e-5, + max_steps=custom_max_steps, + logging_steps=100, + eval_steps=5_000, + save_steps=5_000, + save_total_limit=2, + load_best_model_at_end=True, + metric_for_best_model="accuracy", + run_name=custom_run_name, ) - - _advanced_run_id = uuid.uuid4().hex - advanced_run_request = { - "max_steps": ADVANCED_MAX_STEPS, - "output_dir": tempfile.mkdtemp( - prefix=f"wandb-hf-{_advanced_run_id[:8]}-" - ), - "run_id": _advanced_run_id, - "run_name": ADVANCED_RUN_NAME, - } - advanced_run_env = { - "WANDB_ENTITY": wandb_settings["entity"], - "WANDB_PROJECT": wandb_settings["project"], - "WANDB_RUN_ID": _advanced_run_id, - "WANDB_NAME": ADVANCED_RUN_NAME, - "WANDB_LOG_MODEL": WANDB_LOG_MODEL, - } - advanced_run_url = wandb.Settings( - entity=wandb_settings["entity"], - project=wandb_settings["project"], - run_id=_advanced_run_id, - ).run_url - return advanced_run_env, advanced_run_request, advanced_run_url + return (training_args,) @app.cell(hide_code=True) -def _(advanced_run_url, mo): - mo.callout( - mo.md( - f"[Open this custom training run in W&B]({advanced_run_url}) " - "to watch evaluation and training metrics appear live." - ), - kind="info", - ) - advanced_run_link_ready = True - return (advanced_run_link_ready,) +def _(custom_max_steps): + mo.md(f""" + ### Evaluate the baseline and train + The next action runs baseline evaluation on Yahoo! Answers and starts + **{custom_max_steps:,} training steps**. It creates a Weights & Biases run and uploads + metrics and the trained model. This can take substantial time and compute. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - The `Trainer` handles all the training & evaluation logic. + We load a fresh copy of the pretrained checkpoint for each run. The explicit + `with wandb.init(...) as training_run` block connects the callback to that + run and finishes it when training exits, including after an error. """) return @app.cell def _( - Trainer, - advanced_run_link_ready, - args, - compute_metrics, - dataset_2, - model, + custom_run_name, + entity, + initial_topic_prediction, + label_names, + model_checkpoint, + num_labels, + project, + tokenized_dataset, tokenizer, + training_args, ): - assert advanced_run_link_ready - trainer = Trainer( - model=model, # model to be trained - args=args, # training args - train_dataset=dataset_2['train'], - eval_dataset=dataset_2['test'], - processing_class=tokenizer, # for padding batched data - compute_metrics=compute_metrics, # for custom metrics - ) - return (trainer,) - + set_seed(training_args.seed) -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - We first call `evaluate()` to verify that the untrained model has about 10% accuracy (random predictions over 10 classes). We then start fine-tuning by calling `train()`. - - The cell scopes its W&B environment to this run and closes the run in a `finally` block, even if evaluation or training fails. - """) - return - - -@app.cell -def _(advanced_run_env, advanced_run_link_ready, mo, os, trainer, wandb): - assert advanced_run_link_ready - if wandb.run is not None: - raise RuntimeError( - "Another W&B run is active. Finish it before starting this example." + training_model = AutoModelForSequenceClassification.from_pretrained( + model_checkpoint, + num_labels=num_labels, + id2label=dict(enumerate(label_names)), + label2id={label: index for index, label in enumerate(label_names)}, + ) + with wandb.init(project=project, entity=entity, name=custom_run_name) as training_run: + print(f"Initial sample prediction: {initial_topic_prediction}") + trainer = Trainer( + model=training_model, + args=training_args, + train_dataset=tokenized_dataset["train"], + eval_dataset=tokenized_dataset["test"], + processing_class=tokenizer, + compute_metrics=compute_metrics, ) - - _previous_wandb_env = { - _key: os.environ.get(_key) for _key in advanced_run_env - } - try: - os.environ.update(advanced_run_env) initial_metrics = trainer.evaluate() - mo.output.append(initial_metrics) + print(f"Baseline metrics: {initial_metrics}") training_result = trainer.train() - finally: - try: - if wandb.run is not None: - wandb.finish() - finally: - for _key, _previous_value in _previous_wandb_env.items(): - if _previous_value is None: - os.environ.pop(_key, None) - else: - os.environ[_key] = _previous_value - - advanced_training_complete = True - (initial_metrics, training_result) - return + trained_model = trainer.model + training_run_url = training_run.url + return (trained_model,) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - We can monitor losses, metrics, gradients and parameters as the model trains. + ### Predict with the trained model - ![image.png](data:image/png;base64,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) - - When training is complete, our model is logged and versioned along with its performance as metadata. - - ![image.png](data:image/png;base64,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) - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - We can now use the trained model for better predictions. + The next cell consumes `trained_model`, which is returned only after + training and Weights & Biases cleanup finish. It classifies the same sentence as the + baseline so you can compare the predictions. """) return @app.cell -def _(get_topic): - trained_topic_prediction = get_topic('Why is cheese so much better with wine?') +def _(sample_sentence, tokenizer, trained_model): + trained_topic_prediction = get_topic(sample_sentence, trained_model, tokenizer) trained_topic_prediction - return (trained_topic_prediction,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - `wandb.finish()` closes a W&B run explicitly. The guarded training cell above calls it automatically before restoring the previous W&B environment. - """) return @app.cell(hide_code=True) -def _(advanced_run_url, mo, trained_topic_prediction): - mo.callout( - mo.md( - "Custom training finished and the W&B run is closed. " - f"The sample's new predicted topic is `{trained_topic_prediction}`. " - f"[Inspect the completed run]({advanced_run_url})." - ), - kind="success", - ) - return - +def _(): + mo.md(f""" + ## Verify and next steps -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Once you're happy with a model, don't forget to [share it with the world](https://huggingface.co/docs/transformers/model_sharing) on the Model Hub! - """) - return + Inspect `train/loss`, `eval/loss`, and `eval/accuracy`, the recorded configuration, + and gradient/parameter histograms. The **Artifacts** tab contains the + trained model with its performance metadata. + Once you are happy with a model, you can + [share it on the Hugging Face Hub](https://huggingface.co/docs/transformers/model_sharing). -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" ## Resources - * [Hugging Face and W&B integration documentation](https://docs.wandb.ai/models/integrations/huggingface) contains tips for making the most of W&B + * [Hugging Face and Weights & Biases integration documentation](https://docs.wandb.ai/models/integrations/huggingface) contains tips for making the most of Weights & Biases * [🤗 Transformers documentation](https://huggingface.co/docs/transformers/) is extremely thorough and full of examples """) return -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Questions about W&B - - If you have any questions about using W&B to track your model performance and predictions, visit the [W&B Community](https://community.wandb.ai/). - """) - return - - if __name__ == "__main__": app.run() diff --git a/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py b/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py index dc4d7e28..905e7c02 100644 --- a/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py +++ b/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py @@ -12,15 +12,19 @@ import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="PyTorch Lightning with W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="PyTorch Lightning with Weights & Biases", +) with app.setup: + from pathlib import Path + import marimo as mo import lightning.pytorch as pl import torch import wandb - from pathlib import Path from lightning.pytorch import Trainer from lightning.pytorch.callbacks import Callback, ModelCheckpoint from lightning.pytorch.loggers import WandbLogger @@ -35,33 +39,38 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Pytorch Lightning models with Weights & Biases - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py/server) + - ```python - from lightning.pytorch.loggers import WandbLogger - from lightning.pytorch import Trainer + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - wandb_logger = WandbLogger() - trainer = Trainer(logger=wandb_logger) - ``` + # Track PyTorch Lightning training with Weights & Biases - W&B integration with Pytorch Lightning can automatically: + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/optimize-pytorch-lightning-models-with-weights-biases/optimize_pytorch_lightning_models_with_weights_biases.py/server) - * log your configuration parameters - * log your losses and metrics - * log your model checkpoints - * keep track of your code - * log your system metrics (GPU, CPU, memory, temperature, etc.) + Train an MNIST classifier and use `WandbLogger` to record its hyperparameters, + metrics, prediction examples, and checkpoints. Lightning organizes the training + loop, while the logger sends the values recorded with `self.log()` to Weights & Biases. - ## Docs + This example also adds `watch()` for gradient and parameter histograms, a + custom callback for prediction Tables, and `ModelCheckpoint` for saved weights. + These require explicit configuration, which the following sections explain. - You can find the PyTorch Lightning WandbLogger docs [here](https://lightning.ai/docs/pytorch/stable/extensions/generated/lightning.pytorch.loggers.WandbLogger.html) and the Weights & Biases docs [here](https://docs.wandb.ai/models/integrations/lightning) + The basic connection is to pass a `WandbLogger` to the Lightning `Trainer`. + The training cell below supplies an existing Weights & Biases run so its + team, project, name, and lifecycle are controlled by the notebook. """) return @@ -69,73 +78,98 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Connect to W&B so that experiments are associated with your account. Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to use `WANDB_API_KEY` from the marimo Secrets panel or credentials already available in this runtime. A new molab session does not inherit credentials from your computer. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - Set the team entity to choose where runs are stored. Find it in your W&B team's URL, `wandb.ai/`, or leave it blank to use your account's default team. + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `MNIST`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch( - api_key=mo.ui.text(kind="password", label="W&B API key (optional)", full_width=True), - entity=mo.ui.text(label="W&B entity or team (optional)", full_width=True), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="MNIST", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout("Connect to W&B before submitting a training run.", kind="info"), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() + try: - _connected = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - except wandb.errors.Error: - _connected = False + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): + _login_ok = False + mo.stop( - not _connected, - mo.callout( - "W&B authentication did not complete. Check the API key or this runtime's credentials, then reconnect.", - kind="danger", - ), + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = {"entity": wandb_login_form.value["entity"].strip() or None} - mo.callout("Connected to W&B. Configure and submit the training form below.", kind="success") - return (wandb_settings,) + + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell +def _(): + run_name = "lightning-mnist-128x128" + epochs = 5 + batch_size = 64 + seed = 42 + return batch_size, epochs, run_name, seed @app.cell(hide_code=True) def _(): mo.md(r""" - ## Setting up the dataloader + ## Set up the dataloaders - For the context of this tutorial we use vanilla PyTorch dataloaders on the MNIST dataset. The helper preserves the 55,000 / 5,000 training and validation split. A fixed seed makes that split reproducible across runs. + Download MNIST, convert its images to tensors, and normalize them using the + dataset's mean and standard deviation. Split its 60,000 examples into 55,000 + training and 5,000 validation images. Seeded generators make the split and + training shuffle reproducible. Validation keeps a fixed order so the callback + can show the same examples after each epoch. """) return -@app.function -def load_mnist(batch_size=64): - transform = transforms.Compose([ +@app.cell +def _(batch_size, seed): + mnist_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)), ]) - dataset = MNIST(root="./data", download=True, transform=transform) + mnist_dataset = MNIST(root="./data", download=True, transform=mnist_transform) training_set, validation_set = random_split( - dataset, [55000, 5000], generator=torch.Generator().manual_seed(42) + mnist_dataset, [55000, 5000], generator=torch.Generator().manual_seed(seed) + ) + training_loader = DataLoader( + training_set, + batch_size=batch_size, + shuffle=True, + generator=torch.Generator().manual_seed(seed), ) - training_loader = DataLoader(training_set, batch_size=batch_size, shuffle=True) validation_loader = DataLoader(validation_set, batch_size=batch_size) return training_loader, validation_loader @@ -145,9 +179,13 @@ def _(): mo.md(r""" ## Defining the Model - **Tips**: + The following `LightningModule` defines a three-layer MNIST classifier, its + Adam optimizer, and shared prediction, loss, and accuracy calculations. + `validation_step()` returns predictions for the media callback below. + + **Weights & Biases integration points**: - * Call `self.save_hyperparameters()` in `__init__` to automatically log your hyperparameters to **W&B**. + * Call `self.save_hyperparameters()` in `__init__` to automatically log your hyperparameters to **Weights & Biases**. * Call `self.log` in `training_step` and `validation_step` to log the metrics. """) return @@ -171,7 +209,7 @@ def __init__(self, n_classes=10, n_layer_1=128, n_layer_2=256, lr=1e-3): # optimizer parameters self.lr = lr - # save hyper-parameters to self.hparams (auto-logged by W&B) + # save hyper-parameters to self.hparams (auto-logged by Weights & Biases) self.save_hyperparameters() def forward(self, x): @@ -234,21 +272,12 @@ def _get_preds_loss_accuracy(self, batch): return preds, loss, acc -@app.cell -def _(): - model = MNIST_LitModule(n_layer_1=128, n_layer_2=128) - model - return - - @app.cell(hide_code=True) def _(): mo.md(r""" - The model is now ready! The training helper creates a fresh `MNIST_LitModule(n_layer_1=128, n_layer_2=128)` for each submission. - ## Save Model Checkpoints - The `ModelCheckpoint` callback is required along with the `WandbLogger` argument to log model checkpoints to W&B. Monitor `val_accuracy` with `mode="max"` to save the best validation checkpoint. + The `ModelCheckpoint` callback is required along with the `WandbLogger` argument to log model checkpoints to Weights & Biases. Monitor `val_accuracy` with `mode="max"` to save the best validation checkpoint. ```python checkpoint_callback = ModelCheckpoint(monitor="val_accuracy", mode="max") @@ -256,18 +285,18 @@ def _(): ## Tracking Experiments with WandbLogger - PyTorch Lightning has a `WandbLogger` to easily log your experiments with Weights & Biases. Just pass it to your `Trainer` to log to W&B. The helper below passes an explicit W&B run to the logger so each submission has a clear name and lifecycle. Its entity comes from the authentication form. + PyTorch Lightning has a `WandbLogger` to easily log your experiments with Weights & Biases. Just pass it to your `Trainer` to log to Weights & Biases. The training cell below passes `training_run` as the logger's `experiment`, keeping the run name, project, and lifecycle explicit. ### `lightning.pytorch.loggers.WandbLogger()` | Functionality | Argument or function | Notes | | --- | --- | --- | - | Logging models | `WandbLogger(..., log_model="all")` or `log_model=True` | Log new checkpoints during training with `"all"`, or at the end with `True`. | + | Logging models | `WandbLogger(..., log_model="all")` or `log_model=True` | Use `"all"` to upload saved checkpoints during training. `True` usually uploads at the end, but also uploads during training when `save_top_k=-1`. | | Set custom run names | `WandbLogger(..., name="my_run_name")` | This notebook names the explicit run passed as `experiment`. | - | Organize runs by project | `WandbLogger(..., project="my_project")` | Set the project in the training form. | + | Organize runs by project | `WandbLogger(..., project="my_project")` | Choose the project in the setup form. | | Log gradients and parameters | `wandb_logger.watch(model, log="all")` | Adds histograms during training. | | Log hyperparameters | `self.save_hyperparameters()` | Call in `LightningModule.__init__`. | - | Log custom objects | `wandb_logger.log_text`, `log_image`, `log_table` | Includes text, images, and W&B Tables. | + | Log custom objects | `wandb_logger.log_text`, `log_image`, `log_table` | Includes text, images, and Weights & Biases Tables. | See the [WandbLogger docs](https://lightning.ai/docs/pytorch/stable/extensions/generated/lightning.pytorch.loggers.WandbLogger.html) for all parameters. """) @@ -279,13 +308,13 @@ def _(): mo.md(r""" ## Using WandbLogger to log Images, Text and More - Pytorch Lightning is extensible through its callback system. We can create a custom callback to automatically log sample predictions during validation. `WandbLogger` provides convenient media logging functions: + PyTorch Lightning is extensible through its callback system. We can create a custom callback to automatically log sample predictions during validation. `WandbLogger` provides convenient media logging functions: * `WandbLogger.log_text` for text data * `WandbLogger.log_image` for images - * `WandbLogger.log_table` for [W&B Tables](https://docs.wandb.ai/models/tables). + * `WandbLogger.log_table` for [Weights & Biases Tables](https://docs.wandb.ai/models/tables). - An alternative to `self.log` in the model class is `trainer.logger.experiment.log({...})` for custom W&B media. + An alternative to `self.log` in the model class is `trainer.logger.experiment.log({...})` for custom Weights & Biases media. In this case we log the first 20 images in the first batch of the validation dataset along with the predicted and ground truth labels. We skip Lightning's initial sanity check so it does not log a duplicate set of untrained predictions. Images are moved to CPU and unnormalized for display. """) @@ -335,130 +364,88 @@ def on_validation_batch_end( @app.cell(hide_code=True) def _(): mo.md(r""" - ## Train Your Model - - Choose a project, a readable run name, and the number of epochs. **Train model and log to W&B** downloads MNIST if needed, trains a new model, and creates one W&B run with metrics, prediction images, a predictions Table, and model checkpoint Artifacts. Each submission starts a fresh run; adding a short experiment description to the name helps compare results. - - The helper keeps the featured integration together: create the run and `WandbLogger`, attach the callbacks to `Trainer`, then call `trainer.fit`. The context manager finishes the run even if training raises an error. + ## Train the model and log to Weights & Biases + + The next cell creates a fresh model with two hidden layers of 128 units, then + starts `training_run`. Passing it to `WandbLogger(experiment=training_run)` + connects Lightning's `self.log()` calls to this run. `watch()` adds gradient + and parameter histograms every 100 training steps. + + Attach the prediction callback and a `ModelCheckpoint` callback to `Trainer`. + The checkpoint callback saves a checkpoint when validation accuracy improves. + `log_model="all"` uploads each newly saved checkpoint as an Artifact, with + `latest` and `best` aliases. The checkpoints also remain available locally. + + `trainer.fit()` runs training and validation. Its metrics, prediction images, + and Tables go to Weights & Biases through the logger. Exiting the `with` block finishes the + run, including if training raises an error. Rerunning this cell starts a fresh + model and run. Give each configuration a descriptive run name. Resetting the + training loader's generator also repeats the shuffle order on each rerun. """) return -@app.cell(hide_code=True) -def _(wandb_login_form): - # Recreate the form after authentication is submitted, requiring a fresh training submission. - _connection_is_submitted = wandb_login_form.value is not None - training_form = ( - mo.md("{project}\n\n{run_name}\n\n{epochs}\n\n{batch_size}") - .batch( - project=mo.ui.text(value="MNIST", label="W&B project"), - run_name=mo.ui.text(value="lightning-mnist", label="Run name"), - epochs=mo.ui.slider(start=1, stop=10, value=5, label="Epochs", show_value=True), - batch_size=mo.ui.dropdown(options=[32, 64, 128], value=64, label="Batch size"), - ) - .form(submit_button_label="Train model and log to W&B", bordered=True) - ) - training_form - return (training_form,) - - -@app.cell(hide_code=True) -def _(training_form): - mo.stop(training_form.value is None, mo.md("Submit the training form when you are ready.")) - mo.stop( - not training_form.value["project"].strip() or not training_form.value["run_name"].strip(), - mo.callout("Enter a project and run name, then submit again.", kind="warn"), - ) - training_config = { - **training_form.value, - "project": training_form.value["project"].strip(), - "run_name": training_form.value["run_name"].strip(), - } - return (training_config,) - - -@app.function -def train_model(config, wandb_settings, model_class, prediction_callback_class, loaders): - training_loader, validation_loader = loaders - pl.seed_everything(42, workers=True) - model = model_class(n_layer_1=128, n_layer_2=128) - log_predictions_callback = prediction_callback_class() +@app.cell +def _( + batch_size, + entity, + epochs, + project, + run_name, + seed, + training_loader, + validation_loader, +): + pl.seed_everything(seed, workers=True) + training_loader.generator.manual_seed(seed) + model = MNIST_LitModule(n_layer_1=128, n_layer_2=128, lr=1e-3) + log_predictions_callback = LogPredictionsCallback() - # A context manager closes this run before a new submission can create one. with wandb.init( - project=config["project"], # group runs in the selected project - entity=wandb_settings["entity"], - name=config["run_name"], - config={"epochs": config["epochs"], "batch_size": config["batch_size"], "seed": 42}, + project=project, + entity=entity, + name=run_name, + config={"epochs": epochs, "batch_size": batch_size, "seed": seed}, job_type="train", - ) as run: - wandb_logger = WandbLogger( - experiment=run, - log_model="all", # log all new checkpoints during training - ) + ) as training_run: + wandb_logger = WandbLogger(experiment=training_run, log_model="all") checkpoint_callback = ModelCheckpoint( - dirpath=str(Path(run.dir) / "checkpoints"), + dirpath=str(Path(training_run.dir) / "checkpoints"), monitor="val_accuracy", mode="max", save_top_k=1, ) wandb_logger.watch(model, log="all", log_freq=100, log_graph=False) trainer = Trainer( - logger=wandb_logger, # W&B integration - callbacks=[ - log_predictions_callback, # logging of sample predictions - checkpoint_callback, # our model checkpoint callback - ], - accelerator="auto", # use GPU when available + logger=wandb_logger, + callbacks=[log_predictions_callback, checkpoint_callback], + accelerator="auto", # Use an available GPU, or fall back to CPU. devices=1, - max_epochs=config["epochs"], # number of epochs + max_epochs=epochs, log_every_n_steps=10, ) trainer.fit(model, training_loader, validation_loader) - result = { - "run_url": run.url, - "run_id": run.id, - "best_val_accuracy": float(checkpoint_callback.best_model_score.cpu()), - "checkpoint": checkpoint_callback.best_model_path, - } - return result - - -@app.cell -def _(training_config, wandb_settings): - training_result = train_model( - training_config, - wandb_settings, - model_class=MNIST_LitModule, - prediction_callback_class=LogPredictionsCallback, - loaders=load_mnist(training_config["batch_size"]), - ) - return (training_result,) + best_val_accuracy = float(checkpoint_callback.best_model_score.cpu()) + checkpoint_path = checkpoint_callback.best_model_path + return @app.cell(hide_code=True) def _(): mo.md(r""" - When we want to close a W&B run, we call `run.finish()` (or `wandb.finish()` for the active run). Here, exiting the `with wandb.init(...) as run` block does this automatically before the result below is available. - """) - return + ## Verify and next steps + The training cell’s output shows the best validation accuracy, the local checkpoint, + and a run link when logging online. In the Weights & Biases workspace, inspect: -@app.cell(hide_code=True) -def _(training_result): - _run_link = ( - f"[Open the W&B run]({training_result['run_url']})" - if training_result["run_url"] else "Offline run finished; its files are stored locally." - ) - mo.callout( - mo.md( - f"{_run_link}\n\nBest validation accuracy: **{training_result['best_val_accuracy']:.1%}**. " - "Inspect `train_loss`, `train_accuracy`, `val_loss`, and `val_accuracy` in Workspace. " - "Open `sample_images` and `sample_table` to compare predictions with labels, and " - "the run's Artifacts tab for the checkpoint with the `best` alias." - ), - kind="success", - ) + - `train_loss`, `train_accuracy`, `val_loss`, and `val_accuracy` charts. + - `sample_images` and `sample_table` to compare predictions with true labels. + - Gradient and parameter histograms recorded by `watch()`. + - The run's Artifacts tab for model checkpoints and the `best` alias. + + Change the learning rate or hidden-layer sizes in the training cell, give the + experiment a new run name, and rerun it to compare results. + """) return @@ -477,12 +464,9 @@ def _(): mo.md(r""" ## Resources - * [Pytorch Lightning and W&B integration documentation](https://docs.wandb.ai/models/integrations/lightning) contains a few tips for taking most advantage of W&B. - * [Pytorch Lightning documentation](https://lightning.ai/docs/pytorch/stable/extensions/logging.html) is thorough and full of examples. - - ## Questions about W&B - - If you have any questions about using W&B to track your model performance and predictions, please contact support@wandb.com. + * [PyTorch Lightning and Weights & Biases integration documentation](https://docs.wandb.ai/models/integrations/lightning) contains a few tips for taking most advantage of Weights & Biases. + * [PyTorch Lightning documentation](https://lightning.ai/docs/pytorch/stable/extensions/logging.html) is thorough and full of examples. + * [PyTorch Lightning WandbLogger docs](https://lightning.ai/docs/pytorch/stable/extensions/generated/lightning.pytorch.loggers.WandbLogger.html) and the [Weights & Biases docs](https://docs.wandb.ai/models/integrations/lightning). """) return diff --git a/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py b/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py index 3808c241..354315e8 100644 --- a/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py +++ b/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py @@ -7,14 +7,14 @@ # "wandb>=0.18,<1", # ] # /// -"""Organize a PyTorch hyperparameter search with W&B Sweeps.""" +"""Organize a PyTorch hyperparameter search with Weights & Biases Sweeps.""" import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App( width="medium", - app_title="PyTorch hyperparameter sweeps with W&B", + app_title="PyTorch hyperparameter sweeps with Weights & Biases", ) with app.setup: @@ -44,13 +44,26 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Organizing Hyperparameter Sweeps in PyTorch with W&B + - Weights & Biases + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + + # Organizing Hyperparameter Sweeps in PyTorch with Weights & Biases + + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py/server) """) return @@ -58,25 +71,18 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - Finding a machine learning model that meets your desired metric (such as model accuracy) is normally a redundant task that can take multiple iterations. To make matters worse, it might be unclear which hyperparameter combinations to use for a given training run. + Comparing hyperparameters requires repeated training runs. A sweep defines + which settings to vary and which metric to compare, then records the + configuration and results of each trial. - Use W&B Sweeps to create an organized and efficient way to automatically search through combinations of hyperparameter values such as the learning rate, batch size, number of hidden layers, optimizer type and more to find values that optimize your model based on your desired metric. + This example samples optimizer, hidden-layer size, dropout, learning rate, + and batch size for a small MNIST classifier. It minimizes training loss to + demonstrate sweep mechanics. Use a validation metric when selecting settings + for a model you intend to deploy. - In this tutorial you will create a hyperparameter search with W&B PyTorch integration. Follow along with a [video tutorial](https://wandb.me/sweeps-video)! + In this tutorial you will create a hyperparameter search with Weights & Biases PyTorch integration. Follow along with a [video tutorial](https://wandb.me/sweeps-video). ![](https://i.imgur.com/WVKkMWw.png) - - ## Sweeps: An Overview - - Running a hyperparameter sweep with Weights & Biases is very easy. There are just 3 simple steps: - - 1. **Define the sweep:** we do this by creating a dictionary or a [YAML file](https://docs.wandb.ai/models/sweeps/define-sweep-configuration) that specifies the parameters to search through, the search strategy, the optimization metric, and so on. - - 2. **Initialize the sweep:** with one line of code we initialize the sweep and pass in the dictionary of sweep configurations: - `sweep_id = wandb.sweep(sweep_config)` - - 3. **Run the sweep agent:** also accomplished with one line of code, we call `wandb.agent()` and pass the `sweep_id` to run, along with a function that defines your model architecture and trains it: - `wandb.agent(sweep_id, function=train)` """) return @@ -84,276 +90,104 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - The setup cell imports W&B, PyTorch, and torchvision from the packages - declared at the top of this notebook. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to - use `WANDB_API_KEY` from the molab Secrets panel or credentials already - stored in this runtime. A fresh molab session does not inherit credentials - from your computer. + ## Set your team and project - The entity is the team name in `wandb.ai//`. Leave it - blank to use your default entity. Nothing is sent to W&B until you submit - the form. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `pytorch-sweeps-demo`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - project=mo.ui.text( - value="pytorch-sweeps-demo", - label="W&B project", - full_width=True, - ), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="pytorch-sweeps-demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): - mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the form above before creating a sweep."), - kind="info", - ), - ) +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) - _submitted = wandb_login_form.value - _api_key = _submitted["api_key"].strip() - _project = _submitted["project"].strip() + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - not _project, - mo.callout(mo.md("Enter a W&B project name and submit again."), kind="danger"), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False - mo.stop( - not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "molab Secrets configuration and submit again." - ), - kind="danger", - ), - ) - _entity = _submitted["entity"].strip() or wandb.Api().default_entity mo.stop( - not _entity, - mo.callout( - mo.md( - "W&B did not return a default entity. Enter a team entity and " - "submit the authentication form again." - ), - kind="danger", - ), - ) - wandb_connection = {"entity": _entity, "project": _project} - mo.callout( - mo.md(f"Connected to W&B as `{_entity}` for project `{_project}`."), - kind="success", + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - return (wandb_connection,) - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Step 1: Define a sweep - - A W&B Sweep combines a strategy for trying numerous hyperparameter values with the code that evaluates them. - Before you start a sweep, you must define your sweep strategy with a _sweep configuration_. - - :::info - The sweep configuration you create for a sweep must be in a nested dictionary if you start a sweep in a Jupyter Notebook. - - If you run a sweep within the command line, you must specify your sweep config with a [YAML file](https://docs.wandb.ai/models/sweeps/define-sweep-configuration). - ::: - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Pick a search method - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - First, specify a hyperparameter search method within your configuration dictionary. [There are three hyperparameter search strategies to choose from: grid, random, and Bayesian search](https://docs.wandb.ai/models/sweeps/sweep-config-keys#method). - - For this tutorial, you will use a random search. Within your notebook, create a dictionary and specify `random` for the `method` key. - """) - return - - -@app.cell -def _(): - search_method = { - 'method': 'random' - } - return (search_method,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - Specify a metric that you want to optimize for. You do not need to specify the metric and goal for sweeps that use random search method. However, it is good practice to keep track of your sweep goals because you can refer to it at a later time. - """) - return + ## Define a sweep + The next cell defines the complete search space in one nested dictionary. + Weights & Biases supports `grid`, `random`, and `bayes` search. -@app.cell -def _(): - metric = { - 'name': 'loss', - 'goal': 'minimize' - } - return (metric,) + The objective of the hyperparameter search in this notebook is to minimize the metric named `loss`, which the training function will log once per epoch. + Under `parameters`, use: -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Specify hyperparameters to search through - - Now that you have a search method specified in your sweep configuration, specify the hyperparameters you want to search over. - - To do this, specify one or more hyperparameter names to the `parameter` key and specify one or more hyperparameter values for the `value` key. + - `values` for equally likely choices: optimizer, hidden-layer size, and dropout. + - `value` for a fixed setting: one epoch per trial. + - `distribution` for a sampled range: a uniform learning rate between 0 and + 0.1, and a logarithmically sampled batch size between 32 and 256, rounded + to a multiple of 8 by `q`. - The values you search through for a given hyperparameter depend on the type of hyperparameter you are investigating. - - For example, if you choose a machine learning optimizer, you must specify one or more finite optimizer names such as Adam or stochastic gradient descent. + See the [sweep configuration reference](https://docs.wandb.ai/models/sweeps/sweep-config-keys) for the full set of options. The command-line equivalent uses a YAML file. """) return @app.cell def _(): - categorical_parameters = { - 'optimizer': { - 'values': ['adam', 'sgd'] - }, - 'fc_layer_size': { - 'values': [128, 256, 512] + sweep_config = { + "method": "random", + "metric": {"name": "loss", "goal": "minimize"}, + "parameters": { + "optimizer": {"values": ["adam", "sgd"]}, + "fc_layer_size": {"values": [128, 256, 512]}, + "dropout": {"values": [0.3, 0.4, 0.5]}, + "epochs": {"value": 1}, + "learning_rate": { + "distribution": "uniform", + "min": 0, + "max": 0.1, }, - 'dropout': { - 'values': [0.3, 0.4, 0.5] + "batch_size": { + "distribution": "q_log_uniform_values", + "q": 8, + "min": 32, + "max": 256, }, - } - return (categorical_parameters,) - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Sometimes you want to track a hyperparameter, but not vary its value. In this case, add the hyperparameter to your sweep configuration and specify the exact value that you want to use. For example, in the following code cell, `epochs` is set to 1. - """) - return - - -@app.cell -def _(): - fixed_parameters = { - 'epochs': { - 'value': 1} - } - return (fixed_parameters,) - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - For a `random` search, - all the `values` of a parameter are equally likely to be chosen on a given run. - - Alternatively, - you can specify a named `distribution`, - plus its parameters, like the mean `mu` - and standard deviation `sigma` of a `normal` distribution. - """) - return - - -@app.cell -def _(): - distribution_parameters = { - 'learning_rate': { - # a flat distribution between 0 and 0.1 - 'distribution': 'uniform', - 'min': 0, - 'max': 0.1 - }, - 'batch_size': { - # integers between 32 and 256 - # with evenly-distributed logarithms - 'distribution': 'q_log_uniform_values', - 'q': 8, - 'min': 32, - 'max': 256, - } - } - return (distribution_parameters,) - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - When we're finished, `sweep_config` is a nested dictionary - that specifies exactly which `parameters` we're interested in trying - and the `method` we're going to use to try them. - - Let's see how the sweep configuration looks like: - """) - return - - -@app.cell -def _( - categorical_parameters, - distribution_parameters, - fixed_parameters, - metric, - search_method, -): - parameters_dict = { - **categorical_parameters, - **fixed_parameters, - **distribution_parameters, - } - sweep_config = { - **search_method, - 'metric': metric, - 'parameters': parameters_dict, + }, } pprint.pprint(sweep_config) return (sweep_config,) @@ -362,320 +196,168 @@ def _( @app.cell(hide_code=True) def _(): mo.md(r""" - For a full list of configuration options, see [Sweep configuration options](https://docs.wandb.ai/models/sweeps/sweep-config-keys). + ## Initialize the sweep - :::tip - For hyperparameters that have potentially infinite options, - it usually makes sense to try out - a few select `values`. For example, the preceding sweep configuration has a list of finite values specified for the `layer_size` and `dropout` parameter keys. - ::: - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Step 2: Initialize the Sweep + `wandb.sweep()` registers the configuration with a Weights & Biases-managed controller + and returns `sweep_id`. The controller chooses hyperparameters. An agent on + this machine requests those values and executes the training function. + Rerunning this cell creates a new sweep. Weights & Biases prints its dashboard link. - Once you've defined the search strategy, it's time to set up something to implement it. - - W&B uses a Sweep Controller to manage sweeps on the cloud or locally across one or more machines. For this tutorial, you will use a sweep controller managed by W&B. - - While sweep controllers manage sweeps, the component that actually executes a sweep is known as a _sweep agent_. - - /// attention - - By default, sweep controllers components are initiated on W&B's servers and sweep agents, the component that creates sweeps, are activated on your local machine. - /// - - Within your notebook, you can activate a sweep controller with the - `wandb.sweep` method. Pass the sweep configuration dictionary to the - `sweep` argument. Creating the controller is a remote write, so the button - below is the explicit consent boundary. + In a terminal, register the same configuration with `wandb sweep config.yaml`. + See the [Sweeps guide](https://docs.wandb.ai/models/sweeps/) for details. """) return -@app.cell(hide_code=True) -def _(wandb_connection): - create_sweep_button = mo.ui.run_button(label="Create W&B sweep") - mo.vstack( - [ - mo.md( - f"Create the controller in `{wandb_connection['entity']}/" - f"{wandb_connection['project']}`." - ), - create_sweep_button, - ] - ) - return (create_sweep_button,) - - @app.cell -def _(create_sweep_button, sweep_config, wandb_connection): - mo.stop( - not create_sweep_button.value, - mo.callout( - mo.md("Click **Create W&B sweep** when you are ready."), - kind="info", - ), - ) - sweep_id = wandb.sweep( - sweep=sweep_config, - entity=wandb_connection["entity"], - project=wandb_connection["project"], - ) - sweep_result = { - "id": sweep_id, - "entity": wandb_connection["entity"], - "project": wandb_connection["project"], - "url": ( - f"https://wandb.ai/{wandb_connection['entity']}/" - f"{wandb_connection['project']}/sweeps/{sweep_id}" - ), - } - return (sweep_result,) - - -@app.cell(hide_code=True) -def _(sweep_result): - mo.callout( - mo.md( - f"Created sweep `{sweep_result['id']}`. " - f"[Open the live Sweep dashboard]({sweep_result['url']})." - ), - kind="success", - ) - return +def _(entity, project, sweep_config): + sweep_id = wandb.sweep(sweep=sweep_config, entity=entity, project=project) + return (sweep_id,) @app.cell(hide_code=True) def _(): mo.md(r""" - The `wandb.sweep` function returns a `sweep_id` that you will use at a later step to activate your sweep. - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - /// attention - On the command line, this function is replaced with - ```python - wandb sweep config.yaml - ``` - /// - - For more information on how to create W&B Sweeps in a terminal, see the [W&B Sweeps guide](https://docs.wandb.ai/models/sweeps/). - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Step 3: Define your machine learning code + ## Define the PyTorch training code - Before you execute the sweep, - define the training procedure that uses the hyperparameter values you want to try. The key to integrating W&B Sweeps into your training code is to ensure that, for each training experiment, that your training logic can access the hyperparameter values you defined in your sweep configuration. + The following helpers handle the repeated work in each trial: - In the following code example, the helper functions `build_dataset`, `build_network`, `build_optimizer`, and `train_epoch` access the sweep hyperparameter configuration dictionary. + - `build_dataset` normalizes MNIST images and takes every fifth training + example to keep trials short. + - `build_network` creates a fully connected classifier with a configurable + hidden-layer size and dropout, then moves it to the available device. + - `build_optimizer` selects Adam or SGD with the sampled learning rate. + - `train_epoch` performs forward and backward passes and logs `batch loss`. + It weights each batch loss by its number of examples so the epoch's mean + stays comparable when the sweep changes batch size. - Run the following machine learning training code in your notebook. The functions define a basic fully-connected neural network in PyTorch. - """) - return - - -@app.function -def train(config=None): - # Initialize a new wandb run - with wandb.init(config=config) as run: - # If called by wandb.agent, as below, - # this config will be set by Sweep Controller - config = run.config - - loader = build_dataset(config.batch_size) - network = build_network(config.fc_layer_size, config.dropout) - optimizer = build_optimizer(network, config.optimizer, config.learning_rate) - - for epoch in range(config.epochs): - avg_loss = train_epoch(run, network, loader, optimizer) - run.log({"loss": avg_loss, "epoch": epoch}) - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Within the `train` function, you will notice the following W&B Python SDK methods: - * [`wandb.init()`](https://docs.wandb.ai/models/ref/python/functions/init) – Initialize a new W&B run. Each run is a single execution of the training function. - * [`run.config`](https://docs.wandb.ai/models/track/config) – Access the sweep configuration with the hyperparameters you want to experiment with. - * [`run.log()`](https://docs.wandb.ai/models/track/log) – Log the training loss for each epoch. - - The following cell defines four functions: - `build_dataset`, `build_network`, `build_optimizer`, and `train_epoch`. - These functions are a standard part of a basic PyTorch pipeline, - and their implementation is unaffected by the use of W&B. + This lesson optimizes mean training loss. For model selection in your own + project, log a held-out validation metric and use it as the sweep objective. """) return @app.function def build_dataset(batch_size): - transform = transforms.Compose( - [transforms.ToTensor(), - transforms.Normalize((0.1307,), (0.3081,))]) - # download MNIST training dataset - dataset = datasets.MNIST(data_root, train=True, download=True, - transform=transform) + transform = transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)), + ]) + dataset = datasets.MNIST( + data_root, train=True, download=True, transform=transform + ) sub_dataset = torch.utils.data.Subset( - dataset, indices=range(0, len(dataset), 5)) - loader = torch.utils.data.DataLoader(sub_dataset, batch_size=batch_size) - - return loader + dataset, indices=range(0, len(dataset), 5) + ) + return torch.utils.data.DataLoader(sub_dataset, batch_size=batch_size) @app.function def build_network(fc_layer_size, dropout): - network = nn.Sequential( # fully-connected, single hidden layer + network = nn.Sequential( nn.Flatten(), - nn.Linear(784, fc_layer_size), nn.ReLU(), + nn.Linear(784, fc_layer_size), + nn.ReLU(), nn.Dropout(dropout), nn.Linear(fc_layer_size, 10), - nn.LogSoftmax(dim=1)) - + nn.LogSoftmax(dim=1), + ) return network.to(device) @app.function def build_optimizer(network, optimizer, learning_rate): if optimizer == "sgd": - optimizer = optim.SGD(network.parameters(), - lr=learning_rate, momentum=0.9) - elif optimizer == "adam": - optimizer = optim.Adam(network.parameters(), - lr=learning_rate) - return optimizer + return optim.SGD(network.parameters(), lr=learning_rate, momentum=0.9) + if optimizer == "adam": + return optim.Adam(network.parameters(), lr=learning_rate) + raise ValueError(f"Unknown optimizer: {optimizer}") @app.function -def train_epoch(run, network, loader, optimizer): - cumu_loss = 0 - for _, (data, target) in enumerate(loader): +def train_epoch(sweep_run, network, loader, optimizer): + network.train() + total_loss = 0.0 + total_examples = 0 + for data, target in loader: data, target = data.to(device), target.to(device) optimizer.zero_grad() - - # ➡ Forward pass loss = F.nll_loss(network(data), target) - cumu_loss += loss.item() - - # ⬅ Backward pass + weight update loss.backward() optimizer.step() - run.log({"batch loss": loss.item()}) + batch_loss = loss.item() + total_loss += batch_loss * data.size(0) + total_examples += data.size(0) + sweep_run.log({"batch loss": batch_loss}) - return cumu_loss / len(loader) + return total_loss / total_examples @app.cell(hide_code=True) def _(): mo.md(r""" - For more details on instrumenting W&B with PyTorch, see [the PyTorch notebook](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py/server). + The sweep agent needs a zero-argument function to call for each trial. `train()` + starts `sweep_run` with `wandb.init()` and reads the controller's sampled + hyperparameters from `sweep_run.config`. It builds fresh data, model, and + optimizer objects, then logs the epoch's mean loss under the exact `loss` + key named in `sweep_config`. + + The run name identifies its optimizer and hidden-layer size, with the run ID + to distinguish trials. Exiting the context manager finishes each run before + the agent starts the next one. """) return +@app.function +def train(): + with wandb.init(job_type="sweep-trial") as sweep_run: + config = sweep_run.config + sweep_run.name = ( + f"mnist-{config.optimizer}-h{config.fc_layer_size}-{sweep_run.id}" + ) + loader = build_dataset(config.batch_size) + network = build_network(config.fc_layer_size, config.dropout) + optimizer = build_optimizer(network, config.optimizer, config.learning_rate) + + for epoch in range(config.epochs): + avg_loss = train_epoch(sweep_run, network, loader, optimizer) + sweep_run.log({"loss": avg_loss, "epoch": epoch}) + + @app.cell(hide_code=True) def _(): mo.md(r""" - ## Step 4: Activate sweep agents - Now that you have your sweep configuration defined and a training script that can utilize those hyperparameter in an interactive way, you are ready to activate a sweep agent. Sweep agents are responsible for running an experiment with a set of hyperparameter values that you defined in your sweep configuration. - - Create sweep agents with the `wandb.agent` method. Provide the following: - 1. The sweep the agent is a part of (`sweep_id`) - 2. The function the sweep is supposed to run. In this example, the sweep will use the `train` function. - 3. (optionally) How many configs to ask the sweep controller for (`count`) - - /// tip - You can start multiple sweep agents with the same `sweep_id` - on different compute resources. The sweep controller ensures that they work together - according to the sweep configuration you defined. - /// - - The form below activates a sweep agent that runs the training function - (`train`) up to 5 times. Submitting it downloads MNIST and creates the - requested W&B runs; opening the notebook does neither. - """) - return + ## Run a sweep agent + Set `trial_count` below, then run the agent cell. `wandb.agent()` asks the + controller for hyperparameters and calls `train()` up to that many times. + Lower the count for a quicker experiment. Rerunning the agent cell adds + trials to the existing sweep. -@app.cell(hide_code=True) -def _(sweep_result): - sweep_agent_form = ( - mo.md( - f"Run an agent for sweep `{sweep_result['id']}`.\n\n{{count}}" - ) - .batch( - count=mo.ui.number( - start=1, - stop=5, - step=1, - value=5, - label="Maximum sweep trials", - ) - ) - .form(submit_button_label="Start sweep agent and training", bordered=True) - ) - sweep_agent_form - return (sweep_agent_form,) + You can run additional agents with the same `sweep_id` on other machines. + The controller coordinates their trials using the sweep configuration. + Because this sweep uses random search, each requested configuration is + sampled from the search space above. + """) + return -@app.cell(hide_code=True) -def _(sweep_agent_form, sweep_result): - mo.stop( - sweep_agent_form.value is None, - mo.callout( - mo.md( - "Submit the form above to download MNIST and start the requested " - "number of W&B training runs." - ), - kind="info", - ), - ) - agent_request = { - "count": int(sweep_agent_form.value["count"]), - "sweep": sweep_result.copy(), - } - return (agent_request,) +@app.cell +def _(): + trial_count = 5 + return (trial_count,) @app.cell -def _(agent_request): - _sweep = agent_request["sweep"] +def _(entity, project, sweep_id, trial_count): wandb.agent( - _sweep["id"], + sweep_id, function=train, - entity=_sweep["entity"], - project=_sweep["project"], - count=agent_request["count"], - ) - agent_result = { - "count": agent_request["count"], - "url": _sweep["url"], - } - return (agent_result,) - - -@app.cell(hide_code=True) -def _(agent_result): - mo.callout( - mo.md( - f"Completed up to {agent_result['count']} trials. " - f"[Inspect the sweep results]({agent_result['url']})." - ), - kind="success", + entity=entity, + project=project, + count=trial_count, ) return @@ -683,19 +365,13 @@ def _(agent_result): @app.cell(hide_code=True) def _(): mo.md(r""" - /// attention - Since the `random` search method was specified in the sweep configuration, the sweep controller provides randomly-generated hyperparameter values. - /// - - For more information on how to create W&B Sweeps in a terminal, see the [W&B Sweeps guide](https://docs.wandb.ai/models/sweeps/). - """) - return - + ## Verify and visualize sweep results -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Visualize Sweep Results + Open the sweep dashboard link printed by Weights & Biases. Confirm that completed runs + contain the sampled configuration, a `batch loss` chart, and an epoch-level + `loss` chart. Sort runs by `loss` to find the lowest training loss. Five + trials demonstrate the workflow. Larger searches provide more evidence for + the comparison plots below. """) return @@ -715,12 +391,15 @@ def _(): def _(): mo.md(r""" ### Hyperparameter Importance Plot - The hyperparameter importance plot surfaces which hyperparameters were the best predictors of your metrics. - We report feature importance (from a random forest model) and correlation (implicitly a linear model). + The hyperparameter importance plot estimates which settings best predict + the observed metric values. Use it to choose settings worth investigating + further, rather than treating it as proof that a parameter caused an improvement. + With only a few trials, these estimates can be unstable. ![](https://assets.website-files.com/5ac6b7f2924c652fd013a891/5e190367778ad820b35f9af5_s_194708415DEC35F74A7691FF6810D3B14703D1EFE1672ED29000BA98171242A5_1578695757573_image.png) - These visualizations can help you save both time and resources running expensive hyperparameter optimizations by honing in on the parameters (and value ranges) that are the most important, and thereby worthy of further exploration. + Compare these patterns with individual runs before narrowing the search + space. Repeat promising settings to check whether the improvement persists. """) return @@ -728,7 +407,7 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Learn more about W&B Sweeps + ## Learn more about Weights & Biases Sweeps We created a simple training script and [a few flavors of sweep configs](https://github.com/wandb/examples/tree/main/examples/keras/keras-cnn-fashion) for you to play with. We highly encourage you to give these a try. diff --git a/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py b/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py index 271535c2..887624fb 100644 --- a/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py +++ b/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py @@ -10,79 +10,67 @@ import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App( width="medium", - app_title="Pipeline Versioning with W&B Artifacts", + app_title="Pipeline Versioning with Weights & Biases Artifacts", ) @app.cell def _(): import os - import random import tempfile import marimo as mo import torch + import torch.nn.functional as F import torchvision import wandb from torch.utils.data import TensorDataset - return TensorDataset, mo, os, random, tempfile, torch, torchvision, wandb + return F, TensorDataset, mo, os, tempfile, torch, torchvision, wandb @app.cell(hide_code=True) def _(mo): mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py/server) + -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - # Artifacts + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - In this notebook, we'll show you how to use W&B Artifacts (🏺) - to track your ML experiment pipelines (🧪). - Our sophisticated mathematical models predict the following result: + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/pipeline-versioning-with-w-b-artifacts/pipeline_versioning_with_w_b_artifacts.py/server) - $$ - {\Huge - 🧪 + 🏺 = 😃} - $$ - """) - return + # Pipeline Versioning with Weights & Biases Artifacts + Track an MNIST pipeline from raw data to an evaluated model. This Weights & Biases + lesson is based on the PyTorch [Basic MNIST Example](https://github.com/pytorch/examples/tree/master/mnist/). + Watch the [original video tutorial](https://youtu.be/Hd94gatGMic). -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Follow along with the video tutorial + An **Artifact** is a versioned collection of files, such as a dataset or model. + Each run in this lesson records one pipeline step. `log_artifact()` records + an output, and `use_artifact()` records an input. Together these relationships form a directed + acyclic graph showing which data and model versions produced a result. - Watch the tutorial below, or [open it on YouTube](https://youtu.be/Hd94gatGMic). - """) - return + We'll create five runs: load data, preprocess data, initialize a model, train, + and evaluate. The initialized model is saved separately so later experiments + can start from the same weights. - -@app.cell(hide_code=True) -def _(mo): - mo.Html(r""" - -

Open the video on YouTube

+ > Running the pipeline downloads MNIST, trains a small CNN for five epochs, and + uploads datasets, checkpoints, metrics, and example images. """) return @@ -90,1065 +78,531 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ## What are Artifacts and Why Should I Care? - - An "artifact", like a Greek [amphora 🏺](https://en.wikipedia.org/wiki/Amphora), - is a produced object -- the output of a process. - In ML, the most important artifacts are _datasets_ and _models_. - - And, like the [Cross of Coronado](https://indianajones.fandom.com/wiki/Cross_of_Coronado), these important artifacts belong in a museum! - That is, they should be cataloged and organized - so that you, your team, and the ML community at large can learn from them. - After all, those who don't track training are doomed to repeat it. - - Using our Artifacts API, you can log `Artifact`s as outputs of W&B `Run`s or use `Artifact`s as input to `Run`s, as in this diagram, - where a training run takes in a dataset and produces a model. - - ![](https://gblobscdn.gitbook.com/assets%2F-Lqya5RvLedGEWPhtkjU%2F-M94QAXA-oJmE6q07_iT%2F-M94QJCXLeePzH1p_fW1%2Fsimple%20artifact%20diagram%202.png?alt=media&token=94bc438a-bd3b-414d-a4e4-aa4f6f359f21) - - Since one run can use another's output as an input, Artifacts and Runs together form a directed graph -- actually, a bipartite [DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph)! -- with nodes for `Artifact`s and `Run`s - and arrows connecting `Run`s to the `Artifact`s they consume or produce. - """) - return + ## Authenticate with Weights & Biases + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 0. Setup - """) - return + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + ## Set your team and project -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - The notebook metadata declares W&B, PyTorch, and torchvision. The visible - import cell above is the complete shared runtime setup. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `artifacts-example`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(mo): - mo.md(r""" - ### Authentication - - Submit the form before running the pipeline. Leave the API key blank to - use `WANDB_API_KEY` from molab's Secrets panel or credentials already - configured in this runtime. Editing an unsubmitted field does not log in, - download MNIST, or create a W&B run. - """) - return + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="artifacts-example", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(mo): - _wandb_entity = mo.ui.text( - value="", - label="W&B entity -- a team you belong to (blank uses your default)", - full_width=True, - ) - _wandb_project = mo.ui.text( - value="artifacts-example", - label="W&B project", - full_width=True, - ) - _wandb_api_key = mo.ui.text( - value="", - kind="password", - label="W&B API key (blank uses runtime credentials)", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=_wandb_api_key, - entity=_wandb_entity, - project=_wandb_project, - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) - +def _(mo, wandb, wandb_setup_form): + mo.stop(wandb_setup_form.value is None) -@app.cell(hide_code=True) -def _(mo, wandb, wandb_login_form): + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the authentication form to continue."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _login_values = wandb_login_form.value - _api_key = _login_values["api_key"].strip() + try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "configure `WANDB_API_KEY` in molab's Secrets panel, then submit again." - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_session = { - "entity": _login_values["entity"].strip() or None, - "project": _login_values["project"].strip() or "artifacts-example", - } - mo.callout( - mo.md( - f"Connected. Pipeline runs will be written to " - f"**{wandb_session['project']}** only after you click a step button." - ), - kind="success", - ) - return (wandb_session,) - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 1. Log a Dataset - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - First, let's define some Artifacts. - - This example is based off of this PyTorch - ["Basic MNIST Example"](https://github.com/pytorch/examples/tree/master/mnist/), - but could just as easily have been done in TensorFlow, in any other framework, - or in pure Python. - - We start with the `Dataset`s: - - a `train`ing set, for choosing the parameters, - - a `validation` set, for choosing the hyperparameters, - - a `test`ing set, for evaluating the final model - - The first cell below defines these three datasets. - """) - return + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell -def _(random, torch, torchvision): - # Ensure deterministic behavior - torch.backends.cudnn.deterministic = True - random.seed(0) +def _(torch): torch.manual_seed(0) - torch.cuda.manual_seed_all(0) - - # Device configuration + torch.backends.cudnn.deterministic = True if torch.cuda.is_available(): device = torch.device("cuda:0") elif torch.backends.mps.is_available(): device = torch.device("mps") else: device = torch.device("cpu") + return (device,) - # Data parameters - num_classes = 10 - input_shape = (1, 28, 28) - # drop slow mirror from list of MNIST mirrors - torchvision.datasets.MNIST.mirrors = [mirror for mirror in torchvision.datasets.MNIST.mirrors - if not mirror.startswith("http://yann.lecun.com")] - return device, input_shape, num_classes +@app.cell(hide_code=True) +def _(mo): + mo.md(r""" + ## Log the raw dataset + + First define the data-loading logic. MNIST provides 60,000 training images and + 10,000 test images. We reserve the last 10,000 training images for validation, + leaving the official test set for final evaluation. Each split contains image + and label tensors. + """) + return @app.cell def _(TensorDataset, torchvision): - def load(data_root, train_size=50_000): - """ - # Load the data - """ - - # the data, split between train and test sets - train = torchvision.datasets.MNIST(data_root, train=True, download=True) - test = torchvision.datasets.MNIST(data_root, train=False, download=True) - (x_train, y_train), (x_test, y_test) = ( - (train.data, train.targets), - (test.data, test.targets), + def load_mnist(data_root, train_size=50_000): + # Skip the slow original mirror, keeping the fallback mirrors. + torchvision.datasets.MNIST.mirrors = [ + mirror for mirror in torchvision.datasets.MNIST.mirrors + if not mirror.startswith("http://yann.lecun.com") + ] + train_data = torchvision.datasets.MNIST(data_root, train=True, download=True) + test_data = torchvision.datasets.MNIST(data_root, train=False, download=True) + return ( + TensorDataset(train_data.data[:train_size], train_data.targets[:train_size]), + TensorDataset(train_data.data[train_size:], train_data.targets[train_size:]), + TensorDataset(test_data.data, test_data.targets), ) - # split off a validation set for hyperparameter tuning - x_train, x_val = x_train[:train_size], x_train[train_size:] - y_train, y_val = y_train[:train_size], y_train[train_size:] - - training_set = TensorDataset(x_train, y_train) - validation_set = TensorDataset(x_val, y_val) - test_set = TensorDataset(x_test, y_test) - - datasets = [training_set, validation_set, test_set] - - return datasets - - return (load,) + return (load_mnist,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - This sets up a pattern we'll see repeated in this example: - the code to log the data as an Artifact is wrapped around the code for - producing that data. - In this case, the code for `load`ing the data is - separated out from the code for `load_and_log`ging the data. - - This is good practice! - """) - return + Now create `loading_run` and an Artifact named `mnist-raw` with type `dataset`. + An Artifact name identifies a collection of versions. Its type, such as + `dataset` or `model`, describes the kind of files it contains. A run's + `job_type` labels its role in the pipeline. Keeping related runs in one project + makes their lineage easier to explore. + `new_file()` both creates a file inside the Artifact and attaches it. We save + one `.pt` file per split and record the source and split sizes as JSON metadata. + After `log_artifact()`, `wait()` ensures the upload has completed before the + next stage fetches it. We pass its fully qualified, versioned name downstream, + rather than the mutable `latest` alias. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - In order to log these datasets as Artifacts, - we just need to - 1. create a `Run` with `wandb.init`, - 2. create an `Artifact` for the dataset, and - 3. save and log the associated `file`s with `run.log_artifact`. - - Check out the example code below, then click **Log raw dataset** to run - this pipeline step. + Each stage uses a temporary directory for downloaded data and Weights & Biases runtime + files. Each run finishes before its temporary directory is removed. + The separate Weights & Biases Artifact cache can persist across stages. """) return @app.cell -def _(load, tempfile, torch, wandb): - def load_and_log(session): - workspace_context = tempfile.TemporaryDirectory( - prefix="wandb-artifacts-load-" - ) - workspace = workspace_context.name - # 🚀 start a run, with a type to label it and a project it can call home +def _(entity, load_mnist, project, tempfile, torch, wandb): + with tempfile.TemporaryDirectory(prefix="wandb-mnist-load-") as loading_workspace: with wandb.init( - project=session["project"], - entity=session["entity"], - job_type="load-data", - reinit="create_new", - dir=workspace, - ) as run: - datasets = load(workspace) # separate code for loading the datasets - names = ["training", "validation", "test"] - - # 🏺 create our Artifact + project=project, entity=entity, job_type="load-data", + name="mnist-load-data", dir=loading_workspace, + ) as loading_run: + raw_datasets = load_mnist(loading_workspace) raw_data = wandb.Artifact( "mnist-raw", type="dataset", - description="Raw MNIST dataset, split into train/val/test", + description="Raw MNIST dataset, split into train/validation/test", metadata={ "source": "torchvision.datasets.MNIST", - "sizes": [len(dataset) for dataset in datasets], + "sizes": [len(dataset) for dataset in raw_datasets], }, ) + for _split, _dataset in zip(["training", "validation", "test"], raw_datasets): + with raw_data.new_file(_split + ".pt", mode="wb") as _file: + torch.save(_dataset.tensors, _file) - for name, data in zip(names, datasets): - # 🐣 Store a new file in the artifact, and write something into its contents. - with raw_data.new_file(name + ".pt", mode="wb") as file: - x, y = data.tensors - torch.save((x, y), file) - - # ✍️ Save the artifact to W&B. - logged_artifact = run.log_artifact(raw_data).wait() - result = { - "artifact_path": logged_artifact.qualified_name, - "run_url": run.url, - } - - workspace_context.cleanup() - return result - - return (load_and_log,) - - -@app.cell(hide_code=True) -def _(mo): - log_raw_data = mo.ui.run_button(label="Log raw dataset") - log_raw_data - return (log_raw_data,) - - -@app.cell -def _(load_and_log, log_raw_data, mo, wandb_session): - mo.stop( - not log_raw_data.value, - mo.md("Click **Log raw dataset** to create the first W&B Artifact."), - ) - raw_data_result = load_and_log(wandb_session) - mo.callout( - mo.md( - "Raw MNIST Artifact logged. " - f"[Open the W&B run]({raw_data_result['run_url']})." - ), - kind="success", - ) - return (raw_data_result,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `wandb.init` - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - When we make the `Run` that's going to produce the `Artifact`s, - we need to state which `project` it belongs to. - - Depending on your workflow, - a project might be as big as `car-that-drives-itself` - or as small as `iterative-architecture-experiment-117`. - - > **Rule of 👍**: if you can, keep all of the `Run`s that share `Artifact`s - inside a single project. This keeps things simple, - but don't worry -- `Artifact`s are portable across projects! - - To help keep track of all the different kinds of jobs you might run, - it's useful to provide a `job_type` when making `Runs`. - This keeps the graph of your Artifacts nice and tidy. - - > **Rule of 👍**: the `job_type` should be descriptive and correspond to a single step of your pipeline. Here, we separate out `load`ing data from `preprocess`ing data. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `wandb.Artifact` - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - To log something as an `Artifact`, we have to first make an `Artifact` object. - - Every `Artifact` has a `name` -- that's what the first argument sets. - - > **Rule of 👍**: the `name` should be descriptive, but easy to remember and type -- - we like to use names that are hyphen-separated and correspond to variable names in the code. - - It also has a `type`. Just like `job_type`s for `Run`s, - this is used for organizing the graph of `Run`s and `Artifact`s. - - > **Rule of 👍**: the `type` should be simple: - more like `dataset` or `model` - than `mnist-data-YYYYMMDD`. - - You can also attach a `description` and some `metadata`, as a dictionary. - The `metadata` just needs to be serializable to JSON. - - > **Rule of 👍**: the `metadata` should be as descriptive as possible. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `artifact.new_file` and `run.log_artifact` - """) - return + uploaded_raw_data = loading_run.log_artifact(raw_data) + uploaded_raw_data.wait() + raw_artifact_path = uploaded_raw_data.qualified_name + print(f"Raw dataset: {raw_artifact_path}") + return (raw_artifact_path,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - Once we've made an `Artifact` object, we need to add files to it. - - You read that right: _files_ with an _s_. - `Artifact`s are structured like directories, - with files and sub-directories. + ## Consume the raw Artifact and log preprocessed data - > **Rule of 👍**: whenever it makes sense to do so, split the contents - of an `Artifact` up into multiple files. This will help if it comes time to scale! - - We use the `new_file` method - to simultaneously write the file and attach it to the `Artifact`. - Below, we'll use the `add_file` method, - which separates those two steps. - - Once we've added all of our files, we need to `log_artifact` to [wandb.ai](https://wandb.ai). - - You'll notice some URLs appeared in the output, - including one for the Run page. - That's where you can view the results of the `Run`, - including any `Artifact`s that got logged. - - We'll see some examples that make better use of the other components of the Run page below. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 2. Use a Logged Dataset Artifact - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - `Artifact`s in W&B, unlike artifacts in museums, - are designed to be _used_, not just stored. - - Let's see what that looks like. - - The cell below defines a pipeline step that takes in a raw dataset - and uses it to produce a `preprocess`ed dataset: - `normalize`d and shaped correctly. - - Notice again that we split out the meat of the code, `preprocess`, - from the code that interfaces with `wandb`. + The next helpers handle tensor files and preprocessing. `read_dataset()` loads + only tensors using `weights_only=True`. `preprocess()` converts pixel values to + floating point in `[0, 1]` and adds a channel dimension, changing image shapes + from `(28, 28)` to `(1, 28, 28)` for the CNN. """) return @app.cell -def _(TensorDataset, torch): - def preprocess(dataset, normalize=True, expand_dims=True): - """ - ## Prepare the data - """ - x, y = dataset.tensors +def _(TensorDataset, os, torch): + def read_dataset(data_dir, split): + images, labels = torch.load( + os.path.join(data_dir, split + ".pt"), weights_only=True, + ) + return TensorDataset(images, labels) + def preprocess(dataset, normalize=True, expand_dims=True): + images, labels = dataset.tensors if normalize: - # Scale images to the [0, 1] range - x = x.type(torch.float32) / 255 - + images = images.to(torch.float32) / 255 if expand_dims: - # Make sure images have shape (1, 28, 28) - x = torch.unsqueeze(x, 1) - - return TensorDataset(x, y) + images = images.unsqueeze(1) + return TensorDataset(images, labels) - return (preprocess,) + return preprocess, read_dataset @app.cell(hide_code=True) def _(mo): mo.md(r""" - Now for the code that instruments this `preprocess` step with `wandb.Artifact` logging. + `preprocessing_run.use_artifact()` records the raw dataset as this run's input. + `download()` materializes its files under the supplied directory, reusing Weights & Biases's + content-addressed cache when possible. Download time depends on the cache and + network. - Note that the example below both `use`s an `Artifact`, - which is new, - and `log`s it, - which is the same as the last step. - `Artifact`s are both the inputs and the outputs of `Run`s! + We save the transformed splits in `mnist-preprocess` and record the preprocessing + options in its metadata. The CNN below expects normalized images with an explicit channel dimension, + so keep both preprocessing options enabled. - We use a new `job_type`, `preprocess-data`, - to make it clear that this is a different kind of job from the previous one. + Artifact references look like `entity/project/mnist-raw:v0`. You can also request + `mnist-raw:latest` or a custom alias such as `best`, but aliases can move to a new + version. This pipeline uses the exact version produced by the preceding cell. """) return @app.cell -def _(TensorDataset, os, torch): - def read(data_dir, split): - filename = split + ".pt" - x, y = torch.load( - os.path.join(data_dir, filename), - weights_only=True, - ) - - return TensorDataset(x, y) - - return (read,) - - -@app.cell -def _(os, preprocess, read, tempfile, torch, wandb): - def preprocess_and_log(raw_artifact_path, session, steps): - workspace_context = tempfile.TemporaryDirectory( - prefix="wandb-artifacts-preprocess-" - ) - workspace = workspace_context.name +def _( + entity, + os, + preprocess, + project, + raw_artifact_path, + read_dataset, + tempfile, + torch, + wandb, +): + preprocessing_steps = {"normalize": True, "expand_dims": True} + with tempfile.TemporaryDirectory(prefix="wandb-mnist-preprocess-") as preprocessing_workspace: with wandb.init( - project=session["project"], - entity=session["entity"], - job_type="preprocess-data", - reinit="create_new", - dir=workspace, - ) as run: + project=project, entity=entity, job_type="preprocess-data", + name="mnist-preprocess-data", dir=preprocessing_workspace, + ) as preprocessing_run: + raw_input = preprocessing_run.use_artifact(raw_artifact_path, type="dataset") + raw_directory = raw_input.download(root=os.path.join(preprocessing_workspace, "raw")) processed_data = wandb.Artifact( - "mnist-preprocess", - type="dataset", - description="Preprocessed MNIST dataset", - metadata=steps, - ) - - # ✔️ declare which artifact we'll be using - raw_data_artifact = run.use_artifact(raw_artifact_path, type="dataset") - - # 📥 if need be, download the artifact - raw_dataset = raw_data_artifact.download( - root=os.path.join(workspace, "raw-data") + "mnist-preprocess", type="dataset", + description="Normalized MNIST images with a channel dimension", + metadata=preprocessing_steps, ) + for _split in ["training", "validation", "test"]: + _dataset = preprocess(read_dataset(raw_directory, _split), **preprocessing_steps) + with processed_data.new_file(_split + ".pt", mode="wb") as _file: + torch.save(_dataset.tensors, _file) - for split in ["training", "validation", "test"]: - raw_split = read(raw_dataset, split) - processed_dataset = preprocess(raw_split, **steps) - - with processed_data.new_file(split + ".pt", mode="wb") as file: - x, y = processed_dataset.tensors - torch.save((x, y), file) - - logged_artifact = run.log_artifact(processed_data).wait() - result = { - "artifact_path": logged_artifact.qualified_name, - "run_url": run.url, - } - - workspace_context.cleanup() - return result - - return (preprocess_and_log,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - One thing to notice here is that the `steps` of the preprocessing - are saved with the `preprocessed_data` as `metadata`. - - If you're trying to make your experiments reproducible, - capturing lots of metadata is a good idea! - - Also, even though our dataset is a "`large artifact`", - the `download` step is done in much less than a second. - - Expand the markdown cell below for details. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - preprocess_data = mo.ui.run_button(label="Preprocess dataset") - preprocess_data - return (preprocess_data,) - - -@app.cell -def _(mo, preprocess_and_log, preprocess_data, raw_data_result, wandb_session): - mo.stop( - not preprocess_data.value, - mo.md("Click **Preprocess dataset** after logging the raw dataset."), - ) - steps = {"normalize": True, - "expand_dims": True} - - preprocess_result = preprocess_and_log( - raw_data_result["artifact_path"], - wandb_session, - steps, - ) - mo.callout( - mo.md( - "Preprocessed MNIST Artifact logged. " - f"[Open the W&B run]({preprocess_result['run_url']})." - ), - kind="success", - ) - return (preprocess_result,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `run.use_artifact` - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - These steps are simpler. The consumer just needs to know the `name` of the `Artifact`, plus a bit more. - - That "bit more" is the `alias` of the particular version of the `Artifact` you want. - - By default, the last version to be uploaded is tagged `latest`. - Otherwise, you can pick older versions with `v0`/`v1`, etc., - or you can provide your own aliases, like `best` or `jit-script`. - Just like [Docker Hub](https://hub.docker.com/) tags, - aliases are separated from names with `:`, - so the `Artifact` we want is `mnist-raw:latest`. - - > **Rule of 👍**: Keep aliases short and sweet. - Use custom `alias`es like `latest` or `best` when you want an `Artifact` - that satisfies some property - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `artifact.download` - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Now, you may be worrying about the `download` call. - If we download another copy, won't that double the burden on memory? - - Don't worry friend. Before we actually download anything, - we check to see if the right version is available locally. - This uses the same technology that underlies [torrenting](https://en.wikipedia.org/wiki/Torrent_file) and [version control with `git`](https://blog.thoughtram.io/git/2014/11/18/the-anatomy-of-a-git-commit.html): hashing. - - `artifact.download()` materializes a version under the `root` you provide - and reuses W&B's content-addressed cache when possible. This notebook passes - an isolated temporary root to every pipeline stage, then removes it after - the run and Artifact upload finish. That keeps downloaded tensors and W&B - runtime files out of the repository. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - In your own workflow, pass a persistent `root=` to `artifact.download()` if - you want to inspect the materialized files after the stage completes. - """) - return + uploaded_processed_data = preprocessing_run.log_artifact(processed_data) + uploaded_processed_data.wait() + processed_artifact_path = uploaded_processed_data.qualified_name + print(f"Preprocessed dataset: {processed_artifact_path}") + return (processed_artifact_path,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - ### The Artifacts page on [wandb.ai](https://wandb.ai) - - Now that we've logged and used an `Artifact`, - let's check out the Artifacts tab on the Run page. - - Navigate to the Run page URL from the `wandb` output - and select the "Artifacts" tab from the left sidebar - (it's the one with the database icon, - which looks like three hockey pucks stacked on top of one another). - - Click a row in either the "Input Artifacts" table - or in the "Output Artifacts" table, - then check out the tabs ("Overview", "Metadata") - to see everything logged about the `Artifact`. - - We particularly like the "Graph View". - By default, it shows a graph - with the `type`s of `Artifact`s - and the `job_type`s of `Run` as the two types of nodes, - with arrows to represent consumption and production. - """) - return - + ## Log an initialized model -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 3. Log a Model - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - That's enough to see how the API for `Artifact`s works, - but let's follow this example through to the end of the pipeline - so we can see how `Artifact`s can improve your ML workflow. - - This first cell here builds a DNN `model` in PyTorch -- a really simple ConvNet. - - We'll start by just initializing the `model`, not training it. - That way, we can repeat the training while keeping everything else constant. + This small ConvNet has two convolution/pooling blocks, dropout, and a linear + classifier. Its constructor calculates the flattened feature size from the + input shape and layer settings. Saving the architecture settings alongside the + weights lets another run reconstruct the model. """) return @app.cell -def _(input_shape, num_classes): +def _(): from math import floor import torch.nn as nn class ConvNet(nn.Module): - def __init__(self, hidden_layer_sizes=[32, 64], - kernel_sizes=[3], - activation="ReLU", - pool_sizes=[2], - dropout=0.5, - num_classes=num_classes, - input_shape=input_shape): - - super(ConvNet, self).__init__() - + def __init__( + self, hidden_layer_sizes=(32, 64), kernel_sizes=(3,), + activation="ReLU", pool_sizes=(2,), dropout=0.5, + num_classes=10, input_shape=(1, 28, 28), + ): + super().__init__() self.layer1 = nn.Sequential( - nn.Conv2d(in_channels=input_shape[0], out_channels=hidden_layer_sizes[0], kernel_size=kernel_sizes[0]), - getattr(nn, activation)(), - nn.MaxPool2d(kernel_size=pool_sizes[0]) + nn.Conv2d(input_shape[0], hidden_layer_sizes[0], kernel_sizes[0]), + getattr(nn, activation)(), + nn.MaxPool2d(pool_sizes[0]), ) self.layer2 = nn.Sequential( - nn.Conv2d(in_channels=hidden_layer_sizes[0], out_channels=hidden_layer_sizes[-1], kernel_size=kernel_sizes[-1]), - getattr(nn, activation)(), - nn.MaxPool2d(kernel_size=pool_sizes[-1]) - ) - self.layer3 = nn.Sequential( - nn.Flatten(), - nn.Dropout(dropout) + nn.Conv2d(hidden_layer_sizes[0], hidden_layer_sizes[-1], kernel_sizes[-1]), + getattr(nn, activation)(), + nn.MaxPool2d(pool_sizes[-1]), ) - - fc_input_dims = floor((input_shape[1] - kernel_sizes[0] + 1) / pool_sizes[0]) # layer 1 output size - fc_input_dims = floor((fc_input_dims - kernel_sizes[-1] + 1) / pool_sizes[-1]) # layer 2 output size - fc_input_dims = fc_input_dims*fc_input_dims*hidden_layer_sizes[-1] # layer 3 output size - - self.fc = nn.Linear(fc_input_dims, num_classes) + self.layer3 = nn.Sequential(nn.Flatten(), nn.Dropout(dropout)) + feature_width = floor((input_shape[1] - kernel_sizes[0] + 1) / pool_sizes[0]) + feature_width = floor((feature_width - kernel_sizes[-1] + 1) / pool_sizes[-1]) + self.fc = nn.Linear(feature_width * feature_width * hidden_layer_sizes[-1], num_classes) def forward(self, x): x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) - x = self.fc(x) - return x + return self.fc(x) return (ConvNet,) -@app.cell -def _(ConvNet): - model_preview = ConvNet() - model_preview - return - - @app.cell(hide_code=True) def _(mo): mo.md(r""" - Here, we're using W&B to track the run, - and so using the [`wandb.config`](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/configs-in-w-b/configs_in_w_b.py/server) - object to store all of the hyperparameters. + Choose the model settings below. `wandb.init(config=...)` records them with + `initialization_run`. We also copy that configuration into the model Artifact’s + metadata for later reconstruction. - The `dict`ionary version of that `config` object is a really useful piece of `metadata`, so make sure to include it! + Here we save the checkpoint with `torch.save()` and attach the existing + file to `convnet` with `add_file()`. In contrast, `new_file()` above writes directly into + the Artifact. The initialized model is independent of the dataset preprocessing + stage. Training will consume both the initialized model and preprocessed data. """) return @app.cell -def _(ConvNet, os, tempfile, torch, wandb): - def build_model_and_log(config, session): - workspace_context = tempfile.TemporaryDirectory( - prefix="wandb-artifacts-initialize-" - ) - workspace = workspace_context.name - with wandb.init( - project=session["project"], - entity=session["entity"], - job_type="initialize", - config=config, - reinit="create_new", - dir=workspace, - ) as run: - run_config = run.config - - model = ConvNet(**run_config) - - model_artifact = wandb.Artifact( - "convnet", - type="model", - description="Simple AlexNet style CNN", - metadata=dict(run_config), - ) - - checkpoint_path = os.path.join(workspace, "initialized_model.pth") - torch.save(model.state_dict(), checkpoint_path) - # ➕ another way to add a file to an Artifact - model_artifact.add_file(checkpoint_path, name="initialized_model.pth") - - logged_artifact = run.log_artifact(model_artifact).wait() - result = { - "artifact_path": logged_artifact.qualified_name, - "run_url": run.url, - } - - workspace_context.cleanup() - return result - - return (build_model_and_log,) - - -@app.cell(hide_code=True) -def _(mo): - initialize_model = mo.ui.run_button(label="Initialize model") - initialize_model - return (initialize_model,) +def _(): + model_config = { + "hidden_layer_sizes": [32, 64], + "kernel_sizes": [3], + "activation": "ReLU", + "pool_sizes": [2], + "dropout": 0.5, + "num_classes": 10, + } + return (model_config,) @app.cell -def _( - build_model_and_log, - initialize_model, - mo, - preprocess_result, - wandb_session, -): - mo.stop( - not initialize_model.value, - mo.md("Click **Initialize model** after preprocessing the dataset."), - ) - model_config = {"hidden_layer_sizes": [32, 64], - "kernel_sizes": [3], - "activation": "ReLU", - "pool_sizes": [2], - "dropout": 0.5, - "num_classes": 10} - - _ = preprocess_result - initialized_model_result = build_model_and_log( - model_config, - wandb_session, - ) - mo.callout( - mo.md( - "Initialized model Artifact logged. " - f"[Open the W&B run]({initialized_model_result['run_url']})." - ), - kind="success", - ) - return (initialized_model_result,) +def _(ConvNet, entity, model_config, os, project, tempfile, torch, wandb): + with tempfile.TemporaryDirectory(prefix="wandb-mnist-initialize-") as initialization_workspace: + with wandb.init( + project=project, entity=entity, job_type="initialize", + name="mnist-initialize-model", config=model_config, dir=initialization_workspace, + ) as initialization_run: + initial_model = ConvNet(**initialization_run.config) + initialized_model_artifact = wandb.Artifact( + "convnet", type="model", description="Initialized MNIST ConvNet", + metadata=dict(initialization_run.config), + ) + initialized_checkpoint = os.path.join(initialization_workspace, "initialized_model.pth") + torch.save(initial_model.state_dict(), initialized_checkpoint) + initialized_model_artifact.add_file(initialized_checkpoint, name="initialized_model.pth") - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### `artifact.add_file` - """) - return + uploaded_initial_model = initialization_run.log_artifact(initialized_model_artifact) + uploaded_initial_model.wait() + initialized_artifact_path = uploaded_initial_model.qualified_name + print(f"Initialized model: {initialized_artifact_path}") + return (initialized_artifact_path,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - Instead of simultaneously writing a `new_file` and adding it to the `Artifact`, - as in the dataset logging examples, - we can also write files in one step - (here, `torch.save`) - and then `add` them to the `Artifact` in another. + ## Train using dataset and model Artifacts - > **Rule of 👍**: use `new_file` when you can, to prevent duplication. + Before training, define an evaluation helper that computes mean cross-entropy + loss and accuracy across a loader without tracking gradients. Training will use + it on validation data after each epoch. Final evaluation will use the same + logic on the held-out test set. """) return -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 4. Use a Logged Model Artifact - """) - return +@app.cell +def _(F, device, torch): + def evaluate_loader(model, loader): + model.eval() + total_loss = 0.0 + correct = 0 + with torch.no_grad(): + for images, labels in loader: + images, labels = images.to(device), labels.to(device) + logits = model(images) + total_loss += F.cross_entropy(logits, labels, reduction="sum").item() + correct += (logits.argmax(dim=1) == labels).sum().item() + return total_loss / len(loader.dataset), 100.0 * correct / len(loader.dataset) + + return (evaluate_loader,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - Just like we could call `use_artifact` on a `dataset`, - we can call it on our `initialized_model` - to use it in another `Run`. + The training cell declares **two Artifact inputs**: the preprocessed dataset and + the initialized model. It loads weights and reconstructs the architecture from + model metadata, then trains using the editable settings below. - This time, let's `train` the `model`. + `training_run.log()` records training loss and validation loss/accuracy, with the + epoch and number of examples seen. Weights & Biases advances its default step on each log + call. `model.train()` at the start of each epoch restores dropout after validation + switches the model to evaluation mode. - For more details, see the notebook on - [instrumenting W&B with PyTorch](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py/server). + Finally, save a new `trained-model` Artifact. Its metadata records the architecture + and training settings, while the run's input edges identify the exact dataset + and initialization used. The upload must finish before the evaluation run fetches it. + For more training details, see the + [PyTorch integration lesson](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py/server). """) return @app.cell def _(): - import torch.nn.functional as F - - return (F,) - - -@app.cell -def _(F, device, evaluate_loader, torch): - def train(model, train_loader, valid_loader, config, run): - optimizer = getattr(torch.optim, config.optimizer)(model.parameters()) - example_ct = 0 - for epoch in range(config.epochs): - # Evaluation switches the model to eval mode, so restore training mode - # before every epoch (important for the Dropout layer). - model.train() - for batch_idx, (data, target) in enumerate(train_loader): - data, target = data.to(device), target.to(device) - optimizer.zero_grad() - output = model(data) - loss = F.cross_entropy(output, target) - loss.backward() - optimizer.step() - - example_ct += len(data) - - if batch_idx % config.batch_log_interval == 0: - print( - "Train Epoch: {} [{}/{} ({:.0%})]\tLoss: {:.6f}".format( - epoch, - batch_idx * len(data), - len(train_loader.dataset), - batch_idx / len(train_loader), - loss.item(), - ) - ) - - train_log(run, loss, example_ct, epoch) - - # evaluate the model on the validation set at each epoch - loss, accuracy = evaluate_loader(model, valid_loader) - validation_log(run, loss, accuracy, example_ct, epoch) - - return (train,) + train_config = { + "batch_size": 128, + "epochs": 5, + "batch_log_interval": 25, + "optimizer": "Adam", + } + return (train_config,) @app.cell -def _(F, device, torch): - def evaluate_loader(model, test_loader): - model.eval() - test_loss = 0 - correct = 0 - with torch.no_grad(): - for data, target in test_loader: - data, target = data.to(device), target.to(device) - output = model(data) - test_loss += F.cross_entropy(output, target, reduction="sum") - pred = output.argmax(dim=1, keepdim=True) - correct += pred.eq(target.view_as(pred)).sum() - - test_loss /= len(test_loader.dataset) - accuracy = 100.0 * correct / len(test_loader.dataset) - - return test_loss, accuracy - - return (evaluate_loader,) - - -@app.function -def train_log(run, loss, example_ct, epoch): - loss = loss.detach().item() - - # where the magic happens - run.log({"epoch": epoch, "train/loss": loss}, step=example_ct) - print(f"Loss after " + str(example_ct).zfill(5) + f" examples: {loss:.3f}") - +def _( + ConvNet, + F, + device, + entity, + evaluate_loader, + initialized_artifact_path, + os, + processed_artifact_path, + project, + read_dataset, + tempfile, + torch, + train_config, + wandb, +): + with tempfile.TemporaryDirectory(prefix="wandb-mnist-train-") as training_workspace: + with wandb.init( + project=project, entity=entity, job_type="train", + name="mnist-train-convnet", config=train_config, dir=training_workspace, + ) as training_run: + training_data_artifact = training_run.use_artifact(processed_artifact_path, type="dataset") + training_data_directory = training_data_artifact.download( + root=os.path.join(training_workspace, "data") + ) + training_dataset = read_dataset(training_data_directory, "training") + validation_dataset = read_dataset(training_data_directory, "validation") + train_loader = torch.utils.data.DataLoader( + training_dataset, batch_size=training_run.config.batch_size, + ) + validation_loader = torch.utils.data.DataLoader( + validation_dataset, batch_size=training_run.config.batch_size, + ) -@app.function -def validation_log(run, loss, accuracy, example_ct, epoch): - loss = float(loss) - accuracy = float(accuracy) + initialization_input = training_run.use_artifact(initialized_artifact_path, type="model") + initialization_directory = initialization_input.download( + root=os.path.join(training_workspace, "initialized-model") + ) + training_model_config = dict(initialization_input.metadata) + training_run.config.update(training_model_config) + training_model = ConvNet(**training_model_config).to(device) + training_model.load_state_dict(torch.load( + os.path.join(initialization_directory, "initialized_model.pth"), + map_location=device, weights_only=True, + )) + + optimizer = getattr(torch.optim, training_run.config.optimizer)(training_model.parameters()) + example_count = 0 + for epoch in range(training_run.config.epochs): + training_model.train() + for batch_index, (batch_images, batch_labels) in enumerate(train_loader): + batch_images, batch_labels = batch_images.to(device), batch_labels.to(device) + optimizer.zero_grad() + training_loss = F.cross_entropy(training_model(batch_images), batch_labels) + training_loss.backward() + optimizer.step() + example_count += len(batch_images) + if batch_index % training_run.config.batch_log_interval == 0: + training_run.log({ + "epoch": epoch, "examples": example_count, + "train/loss": training_loss.item(), + }) + + validation_loss, validation_accuracy = evaluate_loader(training_model, validation_loader) + training_run.log({ + "epoch": epoch, "examples": example_count, + "validation/loss": validation_loss, + "validation/accuracy": validation_accuracy, + }) + print(f"Epoch {epoch + 1}: validation accuracy {validation_accuracy:.2f}%") - # where the magic happens - run.log( - { - "epoch": epoch, - "validation/loss": loss, - "validation/accuracy": accuracy, - }, - step=example_ct, - ) - print( - f"Loss/accuracy after " - + str(example_ct).zfill(5) - + f" examples: {loss:.3f}/{accuracy:.3f}" - ) + trained_model_artifact = wandb.Artifact( + "trained-model", type="model", description="Trained MNIST ConvNet", + metadata={ + "model_config": training_model_config, + "training_config": train_config, + }, + ) + trained_checkpoint = os.path.join(training_workspace, "trained_model.pth") + torch.save(training_model.state_dict(), trained_checkpoint) + trained_model_artifact.add_file(trained_checkpoint, name="trained_model.pth") + uploaded_trained_model = training_run.log_artifact(trained_model_artifact) + uploaded_trained_model.wait() + trained_artifact_path = uploaded_trained_model.qualified_name + print(f"Trained model: {trained_artifact_path}") + return (trained_artifact_path,) @app.cell(hide_code=True) def _(mo): mo.md(r""" - We'll run two separate `Artifact`-producing `Run`s this time. + ## Evaluate the trained model and inspect hard examples - Once the first finishes `train`ing the `model`, - the `second` will consume the `trained-model` `Artifact` - by `evaluate`ing its performance on the `test_dataset`. + The final run consumes `trained-model` and the same preprocessed dataset version. + It evaluates only the test split, keeping test results separate from training and + hyperparameter selection. - Also, we'll pull out the 32 examples on which the network gets the most confused -- - on which the `categorical_crossentropy` is highest. - - This is a good way to diagnose issues with your dataset and your model! + The next helper ranks individual test images by cross-entropy loss and returns + the 32 highest-loss examples (or all examples for a smaller test set). This helps + diagnose confident mistakes or ambiguous images. """) return -@app.cell -def _(evaluate_loader, get_hardest_k_examples): - def evaluate(model, test_loader): - """ - ## Evaluate the trained model - """ - - loss, accuracy = evaluate_loader(model, test_loader) - highest_losses, hardest_examples, true_labels, predictions = ( - get_hardest_k_examples(model, test_loader.dataset) - ) - - return loss, accuracy, highest_losses, hardest_examples, true_labels, predictions - - return (evaluate,) - - @app.cell def _(F, device, torch): def get_hardest_k_examples(model, testing_set, k=32): model.eval() - loader = torch.utils.data.DataLoader(testing_set, 1, shuffle=False) - - # get the losses and predictions for each item in the dataset losses = [] predictions = [] with torch.no_grad(): - for data, target in loader: - data, target = data.to(device), target.to(device) - output = model(data) - loss = F.cross_entropy(output, target) - pred = output.argmax(dim=1, keepdim=True) - - losses.append(loss.detach().cpu()) - predictions.append(pred.detach().cpu().squeeze(1)) - + for images, labels in loader: + images, labels = images.to(device), labels.to(device) + logits = model(images) + losses.append(F.cross_entropy(logits, labels).detach().cpu()) + predictions.append(logits.argmax(dim=1).detach().cpu()) losses = torch.stack(losses) predictions = torch.cat(predictions) - argsort_loss = torch.argsort(losses) - hardest_indices = argsort_loss[-k:] - - highest_k_losses = losses[hardest_indices] - hardest_k_examples = testing_set.tensors[0][hardest_indices] - true_labels = testing_set.tensors[1][hardest_indices] - predicted_labels = predictions[hardest_indices] - - return highest_k_losses, hardest_k_examples, true_labels, predicted_labels + hardest_indices = torch.argsort(losses)[-k:] + return ( + losses[hardest_indices], + testing_set.tensors[0][hardest_indices], + testing_set.tensors[1][hardest_indices], + predictions[hardest_indices], + ) return (get_hardest_k_examples,) @@ -1156,263 +610,98 @@ def get_hardest_k_examples(model, testing_set, k=32): @app.cell(hide_code=True) def _(mo): mo.md(r""" - These logging functions don't add any new `Artifact` features, - so we won't comment on them: - we're just `use`ing, `download`ing, - and `log`ging `Artifact`s. + `evaluation_run.summary.update()` stores the final test loss and accuracy. + `evaluation_run.log()` records high-loss images with their predicted label, true + label, and loss in the captions. These Media panels complement aggregate metrics + with concrete examples of the model's behavior. + + The trained Artifact stores architecture and training settings separately in + its metadata. We use `model_config` to reconstruct the CNN. The training + settings remain available for inspection. """) return @app.cell -def _(ConvNet, device, os, read, tempfile, torch, train, wandb): - def train_and_log( - config, - initialized_model_path, - processed_data_path, - session, - ): - workspace_context = tempfile.TemporaryDirectory( - prefix="wandb-artifacts-train-" - ) - workspace = workspace_context.name - with wandb.init( - project=session["project"], - entity=session["entity"], - job_type="train", - config=config, - reinit="create_new", - dir=workspace, - ) as run: - run_config = run.config - - data = run.use_artifact(processed_data_path, type="dataset") - data_dir = data.download(root=os.path.join(workspace, "data")) - - training_dataset = read(data_dir, "training") - validation_dataset = read(data_dir, "validation") - - train_loader = torch.utils.data.DataLoader( - training_dataset, - batch_size=run_config.batch_size, - ) - validation_loader = torch.utils.data.DataLoader( - validation_dataset, - batch_size=run_config.batch_size, - ) - - model_artifact = run.use_artifact( - initialized_model_path, - type="model", - ) - model_dir = model_artifact.download( - root=os.path.join(workspace, "initialized-model") - ) - model_path = os.path.join(model_dir, "initialized_model.pth") - model_config = model_artifact.metadata - run_config.update(model_config) - - model = ConvNet(**model_config) - model.load_state_dict( - torch.load(model_path, map_location=device, weights_only=True) - ) - model = model.to(device) - - train(model, train_loader, validation_loader, run_config, run) - - trained_model_artifact = wandb.Artifact( - "trained-model", - type="model", - description="Trained NN model", - metadata=dict(model_config), - ) - - trained_model_path = os.path.join(workspace, "trained_model.pth") - torch.save(model.state_dict(), trained_model_path) - trained_model_artifact.add_file( - trained_model_path, - name="trained_model.pth", - ) - logged_model = run.log_artifact(trained_model_artifact).wait() - result = { - "artifact_path": logged_model.qualified_name, - "run_url": run.url, - } - - workspace_context.cleanup() - return result - - return (train_and_log,) - - -@app.cell -def _(ConvNet, device, evaluate, os, read, tempfile, torch, wandb): - def evaluate_and_log( - processed_data_path, - session, - trained_model_path, - config=None, - ): - workspace_context = tempfile.TemporaryDirectory( - prefix="wandb-artifacts-evaluate-" - ) - workspace = workspace_context.name +def _( + ConvNet, + device, + entity, + evaluate_loader, + get_hardest_k_examples, + os, + processed_artifact_path, + project, + read_dataset, + tempfile, + torch, + trained_artifact_path, + wandb, +): + with tempfile.TemporaryDirectory(prefix="wandb-mnist-evaluate-") as evaluation_workspace: with wandb.init( - project=session["project"], - entity=session["entity"], - job_type="report", - config=config, - reinit="create_new", - dir=workspace, - ) as run: - data = run.use_artifact(processed_data_path, type="dataset") - data_dir = data.download(root=os.path.join(workspace, "data")) - testing_set = read(data_dir, "test") - - test_loader = torch.utils.data.DataLoader( - testing_set, - batch_size=128, - shuffle=False, + project=project, entity=entity, job_type="report", + name="mnist-evaluate-convnet", dir=evaluation_workspace, + ) as evaluation_run: + evaluation_data_artifact = evaluation_run.use_artifact(processed_artifact_path, type="dataset") + evaluation_directory = evaluation_data_artifact.download( + root=os.path.join(evaluation_workspace, "data") ) + testing_set = read_dataset(evaluation_directory, "test") + test_loader = torch.utils.data.DataLoader(testing_set, batch_size=128, shuffle=False) - model_artifact = run.use_artifact(trained_model_path, type="model") - model_dir = model_artifact.download( - root=os.path.join(workspace, "trained-model") + evaluation_model_artifact = evaluation_run.use_artifact(trained_artifact_path, type="model") + evaluation_model_directory = evaluation_model_artifact.download( + root=os.path.join(evaluation_workspace, "trained-model") ) - model_path = os.path.join(model_dir, "trained_model.pth") - model_config = model_artifact.metadata - - model = ConvNet(**model_config) - model.load_state_dict( - torch.load(model_path, map_location=device, weights_only=True) - ) - model = model.to(device) - - loss, accuracy, highest_losses, hardest_examples, true_labels, preds = ( - evaluate(model, test_loader) - ) - - run.summary.update( - {"loss": float(loss), "accuracy": float(accuracy)} - ) - - run.log( - { - "high-loss-examples": [ - wandb.Image( - hard_example.detach() - .cpu() - .clamp(0, 1) - .mul(255) - .round() - .to(torch.uint8), - caption=str(int(pred)) + "," + str(int(label)), - ) - for hard_example, pred, label in zip( - hardest_examples, - preds, - true_labels, - ) - ] - } + evaluation_model_config = evaluation_model_artifact.metadata["model_config"] + evaluation_model = ConvNet(**evaluation_model_config).to(device) + evaluation_model.load_state_dict(torch.load( + os.path.join(evaluation_model_directory, "trained_model.pth"), + map_location=device, weights_only=True, + )) + test_loss, test_accuracy = evaluate_loader(evaluation_model, test_loader) + highest_losses, hardest_images, true_labels, predicted_labels = get_hardest_k_examples( + evaluation_model, testing_set ) - result = { - "accuracy": float(accuracy), - "loss": float(loss), - "run_url": run.url, - } - - workspace_context.cleanup() - return result - - return (evaluate_and_log,) - - -@app.cell(hide_code=True) -def _(mo): - train_and_evaluate = mo.ui.run_button(label="Train and evaluate") - train_and_evaluate - return (train_and_evaluate,) - - -@app.cell -def _( - evaluate_and_log, - initialized_model_result, - mo, - preprocess_result, - train_and_evaluate, - train_and_log, - wandb_session, -): - mo.stop( - not train_and_evaluate.value, - mo.md("Click **Train and evaluate** after initializing the model."), - ) - train_config = {"batch_size": 128, - "epochs": 5, - "batch_log_interval": 25, - "optimizer": "Adam"} - - trained_model_result = train_and_log( - train_config, - initialized_model_result["artifact_path"], - preprocess_result["artifact_path"], - wandb_session, - ) - evaluation_result = evaluate_and_log( - preprocess_result["artifact_path"], - wandb_session, - trained_model_result["artifact_path"], - ) - mo.callout( - mo.md( - "Training and evaluation complete. " - f"Validation artifacts: [training run]({trained_model_result['run_url']}); " - f"[evaluation run]({evaluation_result['run_url']}). " - f"Test accuracy: **{evaluation_result['accuracy']:.2f}%**." - ), - kind="success", - ) + evaluation_run.summary.update({"loss": test_loss, "accuracy": test_accuracy}) + evaluation_run.log({ + "high-loss-examples": [ + wandb.Image( + image.cpu().clamp(0, 1).mul(255).round().to(torch.uint8), + caption=f"predicted={int(prediction)}, true={int(label)}, loss={float(loss):.3f}", + ) + for image, prediction, label, loss in zip( + hardest_images, predicted_labels, true_labels, highest_losses, + ) + ] + }) + print(f"Test loss: {test_loss:.4f}; test accuracy: {test_accuracy:.2f}%") + print(f"Evaluation run: {evaluation_run.url}") return @app.cell(hide_code=True) def _(mo): mo.md(r""" - You may have noticed a button labeled "Explode". Don't click that, as it will set off a small bomb underneath your humble author's desk in the W&B HQ! - - Just kidding. It "explodes" the graph in a much gentler way: - `Artifact`s and `Run`s become separated at the level of a single instance, - rather than a `type`: - the nodes are not `dataset` and `load-data`, but `dataset:mnist-raw:v1` and `load-data:sunny-smoke-1`, and so on. + ## Inspect the pipeline in Weights & Biases - This provides total insight into your pipeline, - with logged metrics, metadata, and more - all at your fingertips -- - you're only limited by what you choose to log with us. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Verify and next steps + Open the run links printed by Weights & Biases and inspect: - In the W&B project, open the runs created by this notebook and inspect: + - **Artifacts:** `mnist-raw`, `mnist-preprocess`, `convnet`, and `trained-model`. + - **Lineage graph:** follow the raw dataset into preprocessing, then follow + the processed dataset and initialized model into training. Confirm that + evaluation consumes the trained model and the processed dataset. + - **Metadata:** dataset sizes, preprocessing settings, and model configuration. + - **Training charts:** `train/loss`, `validation/loss`, and `validation/accuracy`. + - **Evaluation:** final `loss` and `accuracy`, plus the `high-loss-examples` panel. - - the **Artifacts** tab for `mnist-raw`, `mnist-preprocess`, `convnet`, and - `trained-model`; - - the Artifact graph to confirm each run consumes the previous step's - output and produces the next Artifact; - - the training run charts for `train/loss`, `validation/loss`, and - `validation/accuracy`; - - the report run summary for `loss` and `accuracy`, plus the - `high-loss-examples` media panel. + The graph can group nodes by Artifact `type` and run `job_type`, or show individual + runs and Artifact versions. This lets you trace a result back to its exact inputs. - Re-run the model initialization or training steps with different - hyperparameters to create new Artifact versions and compare them in W&B. + Edit the model or training settings and rerun the affected stages to create and + compare versions. Weights & Biases deduplicates unchanged file contents. For a controlled + training comparison, keep the initialized model and dataset versions fixed. """) return diff --git a/marimo/convert/plot-roc-curves-with-w-b/plot_roc_curves_with_w_b.py b/marimo/convert/plot-roc-curves-with-w-b/plot_roc_curves_with_w_b.py index a7438fdd..4e84edf5 100644 --- a/marimo/convert/plot-roc-curves-with-w-b/plot_roc_curves_with_w_b.py +++ b/marimo/convert/plot-roc-curves-with-w-b/plot_roc_curves_with_w_b.py @@ -1,8 +1,7 @@ # /// script # requires-python = ">=3.11,<3.14" # dependencies = [ -# "fsspec[http]", -# "marimo>=0.24.0", +# "marimo>=0.24.2", # "numpy>=1.26", # "pandas>=2.2", # "pillow==12.3.0", @@ -11,26 +10,32 @@ # "tensorflow==2.21.0", # "wandb==0.30.0", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// -"""Fine-tune InceptionV3 and log multiclass ROC curves to W&B.""" import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="Plot ROC Curves with W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Plot ROC Curves with Weights & Biases", +) with app.setup: import shutil import tempfile import zipfile from pathlib import Path + from urllib.request import urlopen - import fsspec import marimo as mo import numpy as np + import pandas as pd import tensorflow as tf import wandb - from tensorflow.keras.applications.inception_v3 import InceptionV3 + from tensorflow.keras.applications.inception_v3 import InceptionV3, preprocess_input from tensorflow.keras.callbacks import Callback from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.models import Model @@ -38,7 +43,6 @@ from wandb.integration.keras import WandbMetricsLogger DATASET_URL = "https://storage.googleapis.com/wandb_datasets/nature_12K.zip" - PROJECT_NAME = "custom_roc_curve" RUNTIME_CACHE_ROOT = ( Path(tempfile.gettempdir()) / "wandb-examples" / "inaturalist-12k" ) @@ -47,22 +51,40 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Plot ROC Curves with W&B + - Learn how to log [receiver operating characteristic (ROC) curves](https://scikit-learn.org/stable/modules/model_evaluation.html#receiver-operating-characteristic-roc) backed by [Vega](https://vega.github.io/vega/docs/) in [Weights & Biases](https://wandb.ai). This example fine-tunes InceptionV3 with ImageNet weights to identify 10 types of living things from the [iNaturalist 2017 dataset](https://github.com/visipedia/inat_comp). + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - These simple cases explain the basics; W&B's query editor supports more sophisticated custom charts. + # Plot ROC Curves with Weights & Biases - ![ROC curves in W&B](https://i.imgur.com/CqGXSzj.png) + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/plot-roc-curves-with-w-b/plot_roc_curves_with_w_b.py/server) + + Learn to log multiclass ROC curves with `wandb.plot.roc_curve()`. This lesson + trains a classification head on a frozen, ImageNet-trained InceptionV3 model + to identify ten groups of living things from an iNaturalist image sample. - The defaults intentionally use few training examples and one epoch so you can exercise the workflow. The original tutorial reports validation accuracy in the low 80s after roughly one epoch on the complete training dataset. + An ROC curve plots the true-positive rate against the false-positive rate + as the decision threshold changes. For multiclass predictions, each curve + treats one class as positive and all other classes as negative. - ## Method: `wandb.plot.roc_curve()` + ![Example ROC curves in Weights & Biases](https://i.imgur.com/CqGXSzj.png) - - Read about [ROC curve customization](https://wandb.ai/wandb/plots/reports/Plot-ROC-Curves--VmlldzoyNjk3MDE). - - Explore more examples in the [Custom Charts project](https://app.wandb.ai/demo-team/custom-charts). + The small training defaults let you try the workflow on a CPU. More data + and epochs let you test whether additional training improves class separation. + A GPU can reduce training time. """) return @@ -70,422 +92,398 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Enter a [W&B API key](https://wandb.ai/authorize) and an optional team entity below. Leave the key blank when `WANDB_API_KEY` is configured in the Molab Secrets panel or this runtime already has W&B credentials. If needed, [create a free W&B account](https://wandb.ai/signup). + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - Your entity is the first path segment after `wandb.ai` when you open a W&B workspace. The API key is used only for `wandb.login()` and is never included in the run configuration or notebook output. + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `custom_roc_curve`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="custom_roc_curve", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B before configuring the experiment."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key or " - "Molab Secrets configuration and submit again.\n\n" - f"W&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": PROJECT_NAME, - "entity": _entity or None, - } - _entity_note = ( - f" Runs will be logged to `{wandb_settings['entity']}`." - if wandb_settings["entity"] - else " Runs will use your default W&B entity." - ) - mo.callout(mo.md(f"Connected to W&B.{_entity_note}"), kind="success") - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ## Setup: Access the remote dataset + ## Experiment configuration - The iNaturalist sample contains 10,000 training images and 2,000 validation images, evenly distributed across 10 classes such as birds, insects, plants, and mammals. **The archive is approximately 3.6 GB, so the first transfer and extraction can take several minutes.** + Start with 100 training images, 500 validation images, and one epoch. We + sample evenly across the ten classes so every class has positive and + negative examples for its ROC curve. Keep the seed and validation size + fixed when comparing experiments. - The `dataset_fs` value below exposes the public archive through an `fsspec` reference filesystem, so you can browse it in marimo's data side panel without transferring the whole file. - - Training still requires local image directories. The first time you submit the training form, `ensure_dataset()` streams the archive into a temporary runtime cache and extracts it there. Later submissions reuse that cache; no dataset files are written beside the notebook. + Passing this dictionary to `wandb.init(config=config)` records the settings + with the run. Try increasing `num_train` or `epochs` after your first run. """) return @app.cell def _(): - # Expose the remote dataset as a named filesystem so it appears in - # marimo's data side panel. - dataset_fs = fsspec.filesystem( - "reference", - fo={ - "version": 1, - "refs": {"nature_12K.zip": [DATASET_URL]}, - }, - ) - return (dataset_fs,) + config = { + "num_train": 100, + "num_val": 500, + "num_classes": 10, + "fc_size": 1024, + "img_width": 299, + "img_height": 299, + "batch_size": 32, + "epochs": 1, + "random_seed": 23, + } + return (config,) -@app.function -def ensure_dataset(dataset_fs): - """Materialize and extract the remote dataset once, then return its paths.""" - archive_path = RUNTIME_CACHE_ROOT / "nature_12K.zip" - train_path = RUNTIME_CACHE_ROOT / "inaturalist_12K" / "train" - validation_path = RUNTIME_CACHE_ROOT / "inaturalist_12K" / "val" +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Prepare the dataset - if train_path.is_dir() and validation_path.is_dir(): - return str(train_path), str(validation_path), "Reused the extracted dataset." + The [iNaturalist sample](https://github.com/visipedia/inat_comp) contains + 10,000 training images and 2,000 validation images across ten classes. + **The first run downloads and extracts an approximately 3.6 GB archive,** + even with the small training defaults. Later runs reuse the temporary + runtime cache. - RUNTIME_CACHE_ROOT.mkdir(parents=True, exist_ok=True) - if not archive_path.exists(): - partial_path = archive_path.with_suffix(".zip.part") - # Keras needs local directories, so stream the remote archive into the - # runtime cache without loading 3.6 GB into memory. - with dataset_fs.open("nature_12K.zip", "rb") as source: - with partial_path.open("wb") as destination: - shutil.copyfileobj(source, destination) - partial_path.replace(archive_path) - - with zipfile.ZipFile(archive_path) as archive: - archive.extractall(archive_path.parent) + `sample_images` selects the requested number of files from each split, + distributing them across classes. The download and sampling helpers are + defined at the end of the notebook. + """) + return - if not train_path.is_dir() or not validation_path.is_dir(): - raise FileNotFoundError( - "The archive did not contain inaturalist_12K/train and " - "inaturalist_12K/val." - ) - return str(train_path), str(validation_path), "Streamed and extracted the remote dataset." +@app.cell +def _(config): + train_path, validation_path = ensure_dataset() + train_samples = sample_images(train_path, config["num_train"], config["random_seed"]) + validation_samples = sample_images( + validation_path, config["num_val"], config["random_seed"] + ) + class_names = sorted(train_samples["class"].unique()) + return class_names, train_samples, validation_samples @app.cell(hide_code=True) def _(): mo.md(r""" - ## Training code + ## Prepare image batches + + Augment the training images with shear, zoom, and horizontal flips. Both + generators use InceptionV3's [preprocessing function](https://keras.io/api/applications/inceptionv3/inception_v3_preprocessing/), + which scales pixel values to the range −1 to 1. + + Validation images are neither augmented nor shuffled. The same selected + images, class IDs, and class order are used for validation and ROC logging + at every epoch. + """) + return + + +@app.cell +def _(class_names, config, train_samples, validation_samples): + train_datagen = ImageDataGenerator( + preprocessing_function=preprocess_input, + shear_range=0.2, + zoom_range=0.2, + horizontal_flip=True, + ) + validation_datagen = ImageDataGenerator(preprocessing_function=preprocess_input) + + train_generator = train_datagen.flow_from_dataframe( + train_samples, + x_col="filename", + y_col="class", + classes=class_names, + target_size=(config["img_height"], config["img_width"]), + batch_size=config["batch_size"], + class_mode="categorical", + shuffle=True, + seed=config["random_seed"], + ) + validation_generator = validation_datagen.flow_from_dataframe( + validation_samples, + x_col="filename", + y_col="class", + classes=class_names, + target_size=(config["img_height"], config["img_width"]), + batch_size=config["batch_size"], + class_mode="categorical", + shuffle=False, + ) + return train_generator, validation_generator + - The model freezes the ImageNet-trained InceptionV3 base and trains a new classification head. At the end of each epoch, `ROCCurveLogger` predicts several validation batches and sends the ground-truth class IDs and per-class probabilities to `wandb.plot.roc_curve()`. +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Build and compile the model - Change the number of training examples or epochs in the form to compare ROC curves. The small defaults favor demo speed over accuracy. + Freeze the pretrained InceptionV3 base and train a new classification head. + The final softmax layer produces one probability per class. Rerun the model + creation cell before each new experiment to start with a fresh head. + Rerunning only the training cell continues from the current model weights. """) return @app.function def build_model(fc_size, num_classes): - """Freeze an ImageNet-trained InceptionV3 base and add a classifier head.""" base = InceptionV3(weights="imagenet", include_top=False) - for layer in base.layers: - layer.trainable = False - - features = base.get_layer("mixed10").output - features = GlobalAveragePooling2D()(features) + base.trainable = False + features = GlobalAveragePooling2D()(base.output) features = Dense(fc_size, activation="relu")(features) - predictions = Dense(num_classes, activation="softmax")(features) + probabilities = Dense(num_classes, activation="softmax")(features) + return Model(inputs=base.input, outputs=probabilities) + - model = Model(inputs=base.input, outputs=predictions) +@app.cell +def _(config): + tf.keras.backend.clear_session() + tf.keras.utils.set_random_seed(config["random_seed"]) + model = build_model(config["fc_size"], config["num_classes"]) model.compile( optimizer="rmsprop", loss="categorical_crossentropy", metrics=["accuracy"], ) - return model + model.summary() + return (model,) -@app.function -def make_roc_curve_logger(run, generator, num_log_batches): - """Create a Keras callback that logs multiclass ROC curves each epoch.""" - - class ROCCurveLogger(Callback): - def __init__(self): - super().__init__() - self.generator = generator - self.num_batches = num_log_batches - self.class_names = [ - name - for name, _class_id in sorted( - generator.class_indices.items(), key=lambda item: item[1] - ) - ] - - def on_epoch_end(self, epoch, logs=None): - validation_batches = [ - self.generator[index] for index in range(self.num_batches) - ] - validation_data = np.vstack( - [batch_data for batch_data, _batch_labels in validation_batches] - ) - validation_labels = np.vstack( - [batch_labels for _batch_data, batch_labels in validation_batches] - ) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Log ROC curves at each epoch - validation_probabilities = self.model.predict( - validation_data, verbose=0 - ) - ground_truth_class_ids = validation_labels.argmax(axis=1) - - # Keep this key stable so curves from multiple runs share a panel. - run.log( - { - "roc_curve": wandb.plot.roc_curve( - ground_truth_class_ids, - validation_probabilities, - labels=self.class_names, - ) - } - ) + The callback passes three values to [`wandb.plot.roc_curve`](https://docs.wandb.ai/models/ref/python/custom-charts/roc_curve): - return ROCCurveLogger() + - Ground-truth class IDs, with shape `(num_images,)`. + - Predicted probabilities, with shape `(num_images, num_classes)`. + - Class names in the same order as the probability columns. + Pass probabilities so the chart can evaluate many decision thresholds. + Predicted class IDs alone discard the scores needed to build the curves. The callback processes one batch of images + at a time and collects only labels and probabilities for the chart. + + Keep the `roc_curve` logging key consistent so runs can share a chart panel. + """) + return -@app.function -def train_and_log(config, wandb_settings, train_path, validation_path): - """Train the model and complete one W&B run.""" - if wandb.run is not None: - wandb.finish() - - with wandb.init( - project=wandb_settings["project"], - entity=wandb_settings["entity"], - config=config, - ) as run: - run_config = run.config - tf.random.set_seed(run_config.random_seed) - np.random.seed(run_config.random_seed) - - train_datagen = ImageDataGenerator( - rescale=1.0 / 255, - shear_range=0.2, - zoom_range=0.2, - horizontal_flip=True, - ) - validation_datagen = ImageDataGenerator(rescale=1.0 / 255) - train_generator = train_datagen.flow_from_directory( - train_path, - target_size=(run_config.img_width, run_config.img_height), - batch_size=run_config.batch_size, - class_mode="categorical", +@app.class_definition +class ROCCurveLogger(Callback): + def __init__(self, run, generator): + super().__init__() + self.run = run + self.generator = generator + self.class_names = sorted( + generator.class_indices, key=generator.class_indices.get ) - validation_generator = validation_datagen.flow_from_directory( - validation_path, - target_size=(run_config.img_width, run_config.img_height), - batch_size=run_config.batch_size, - class_mode="categorical", - # Shuffle so the validation subset logged to the ROC chart samples - # every class instead of the first few directory-ordered classes. - shuffle=True, - seed=run_config.random_seed, + + def on_epoch_end(self, epoch, logs=None): + class_ids = [] + probabilities = [] + for index in range(len(self.generator)): + images, labels = self.generator[index] + class_ids.append(labels.argmax(axis=1)) + probabilities.append(self.model.predict_on_batch(images)) + + self.run.log( + { + "roc_curve": wandb.plot.roc_curve( + np.concatenate(class_ids), + np.concatenate(probabilities), + labels=self.class_names, + ) + } ) - model = build_model(run_config.fc_size, run_config.num_classes) - callbacks = [ - WandbMetricsLogger(), - make_roc_curve_logger( - run, - validation_generator, - run_config.num_log_batches, - ), - ] + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Train + + Create a Weights & Biases run, then pass both callbacks to `model.fit`. + `WandbMetricsLogger` records loss and accuracy. `ROCCurveLogger` records + per-class ROC curves. Training and validation use all of their selected + images, including the final partial batch. + + The context manager finishes the run when training ends. + """) + return + + +@app.cell +def _(config, entity, model, project, train_generator, validation_generator): + with wandb.init(entity=entity, project=project, config=config) as run: history = model.fit( train_generator, - steps_per_epoch=max(1, run_config.num_train // run_config.batch_size), - epochs=run_config.pretrain_epochs, + epochs=config["epochs"], validation_data=validation_generator, - callbacks=callbacks, - validation_steps=max(1, run_config.num_val // run_config.batch_size), + callbacks=[ + WandbMetricsLogger(), + ROCCurveLogger(run, validation_generator), + ], ) - - final_validation_accuracy = history.history.get("val_accuracy", [None])[-1] - result = { - "run_url": run.url, - "final_validation_accuracy": ( - float(final_validation_accuracy) - if final_validation_accuracy is not None - else None - ), - } - - return result + return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Run the experiment + ## Explore your results - After connecting to W&B above, submit this training form to materialize the remote dataset in the runtime cache if necessary, download the InceptionV3 weights if necessary, train the model, and create one run in the `custom_roc_curve` project. A later submission finishes any prior active run before it starts another. + Open the run link printed by Weights & Biases and find the `roc_curve` + custom chart. Check that it contains all ten class names. Compare curves + across epochs and runs: a curve closer to the upper-left corner indicates + better separation of that class from the others. + + Inspect `epoch/loss`, `epoch/val_loss`, and `epoch/val_accuracy` alongside + the curves. Increase `num_train` or `epochs`, rebuild the model, and train + again while keeping the validation sample fixed. + + See [ROC chart customization](https://wandb.ai/wandb/plots/reports/Plot-ROC-Curves--VmlldzoyNjk3MDE) + and the [Custom Charts project](https://app.wandb.ai/demo-team/custom-charts) + for more examples. """) return @app.cell(hide_code=True) -def _(wandb_settings): - _workflow_ready = callable(ensure_dataset) and callable(train_and_log) - _num_train_input = mo.ui.number( - start=32, - stop=10_000, - step=1, - value=100, - label="Training examples", - ) - _num_epochs_input = mo.ui.number( - start=1, - stop=20, - step=1, - value=1, - label="Epochs", - ) - training_form = ( - mo.md("{num_train}\n\n{num_epochs}") - .batch( - num_train=_num_train_input, - num_epochs=_num_epochs_input, - ) - .form( - submit_button_label="Prepare data, train, and log to W&B", - submit_button_disabled=not _workflow_ready, - bordered=True, - ) - ) - _destination = ( - f"`{wandb_settings['entity']}/{wandb_settings['project']}`" - if wandb_settings["entity"] - else f"`{wandb_settings['project']}` in your default entity" - ) - mo.vstack( - [ - mo.md(f"This run will be created in {_destination}."), - training_form, - ] - ) - return (training_form,) +def _(): + mo.md(r""" + ## Helper functions + Cache the archive and extracted directories, then select a reproducible + sample of images from each class. Use at least ten images per split to + include every class, up to 10,000 for training and 2,000 for validation. + """) + return -@app.cell(hide_code=True) -def _(training_form, wandb_settings): - mo.stop( - training_form.value is None, - mo.callout( - mo.md("Review the workflow above, then submit the form to begin."), - kind="info", - ), - ) - training_request = { - "wandb_settings": dict(wandb_settings), - "num_train": int(training_form.value["num_train"]), - "num_epochs": int(training_form.value["num_epochs"]), - } - return (training_request,) +@app.function +def dataset_classes_with_images(directory): + directory = Path(directory) + if not directory.is_dir(): + return () + class_dirs = sorted(path for path in directory.iterdir() if path.is_dir()) + if not class_dirs or any( + not any( + path.is_file() and path.suffix.lower() in {".jpg", ".jpeg", ".png"} + for path in class_dir.rglob("*") + ) + for class_dir in class_dirs + ): + return () + return tuple(path.name for path in class_dirs) -@app.cell -def _(training_request): - # Experiment configuration saved to W&B. - config_defaults = { - "num_train": training_request["num_train"], - "num_val": 500, - "num_classes": 10, - "fc_size": 1024, - "img_width": 299, - "img_height": 299, - "batch_size": 32, - "pretrain_epochs": training_request["num_epochs"], - "num_log_batches": 15, - "random_seed": 23, - } - config_defaults - return (config_defaults,) +@app.function +def ensure_dataset(): + """Materialize and extract the remote dataset once, then return its paths.""" + archive_path = RUNTIME_CACHE_ROOT / "nature_12K.zip" + train_path = RUNTIME_CACHE_ROOT / "inaturalist_12K" / "train" + validation_path = RUNTIME_CACHE_ROOT / "inaturalist_12K" / "val" + train_classes = dataset_classes_with_images(train_path) + if len(train_classes) == 10 and train_classes == dataset_classes_with_images(validation_path): + return str(train_path), str(validation_path) -@app.cell(hide_code=True) -def _(config_defaults, dataset_fs): - train_path, validation_path, dataset_status = ensure_dataset(dataset_fs) - mo.callout( - mo.md( - f"{dataset_status} Training will use " - f"{config_defaults['num_train']:,} images per epoch." - ), - kind="success", - ) - return train_path, validation_path + RUNTIME_CACHE_ROOT.mkdir(parents=True, exist_ok=True) + if not archive_path.exists(): + partial_path = archive_path.with_suffix(".zip.part") + # Keras needs local directories, so stream the remote archive into the + # runtime cache without loading 3.6 GB into memory. + with urlopen(DATASET_URL, timeout=60) as source: + with partial_path.open("wb") as destination: + shutil.copyfileobj(source, destination) + partial_path.replace(archive_path) + with zipfile.ZipFile(archive_path) as archive: + archive.extractall(archive_path.parent) -@app.cell -def _(config_defaults, train_path, training_request, validation_path): - experiment_result = train_and_log( - config=config_defaults, - wandb_settings=training_request["wandb_settings"], - train_path=train_path, - validation_path=validation_path, - ) - return (experiment_result,) + train_classes = dataset_classes_with_images(train_path) + if len(train_classes) != 10 or train_classes != dataset_classes_with_images(validation_path): + raise ValueError( + "The extracted dataset must contain the same ten classes with images " + f"in both train and val. Check {archive_path}; replace an incomplete " + "archive and rerun dataset preparation." + ) + return str(train_path), str(validation_path) -@app.cell(hide_code=True) -def _(experiment_result): - _accuracy = experiment_result["final_validation_accuracy"] - _accuracy_note = ( - f" The final validation accuracy was `{_accuracy:.3f}`." - if _accuracy is not None - else "" - ) - mo.callout( - mo.md( - f"Training finished.{_accuracy_note} " - f"[Open the run in W&B]({experiment_result['run_url']}) and find " - "`roc_curve` under **Custom Charts** to inspect the ROC curves." - ), - kind="success", - ) - return + +@app.function +def sample_images(directory, num_images, seed): + class_dirs = sorted(path for path in Path(directory).iterdir() if path.is_dir()) + if not class_dirs: + raise ValueError(f"No class folders found in {directory}. Rerun dataset preparation.") + if num_images < len(class_dirs): + raise ValueError("Choose at least one image per class.") + per_class, remainder = divmod(num_images, len(class_dirs)) + samples = [] + for index, class_dir in enumerate(class_dirs): + filenames = sorted( + str(path) + for path in class_dir.rglob("*") + if path.is_file() and path.suffix.lower() in {".jpg", ".jpeg", ".png"} + ) + requested = per_class + (index < remainder) + if len(filenames) < requested: + raise ValueError( + f"Class '{class_dir.name}' in {directory} has {len(filenames)} images, " + f"but sampling requires {requested}. Rerun dataset preparation if " + "files are missing, or reduce the requested sample size." + ) + class_images = pd.DataFrame({"filename": filenames, "class": class_dir.name}) + samples.append( + class_images.sample(n=requested, random_state=seed) + ) + return pd.concat(samples, ignore_index=True) if __name__ == "__main__": diff --git a/marimo/convert/report-api-quickstart/report_api_quickstart.py b/marimo/convert/report-api-quickstart/report_api_quickstart.py index 1bb7ac3f..bf824469 100644 --- a/marimo/convert/report-api-quickstart/report_api_quickstart.py +++ b/marimo/convert/report-api-quickstart/report_api_quickstart.py @@ -4,7 +4,6 @@ # "marimo>=0.24", # "pandas>=2.0", # "pillow>=10.0", -# "requests>=2.31", # "wandb>=0.19.10", # "wandb-workspaces>=0.1", # ] @@ -12,19 +11,19 @@ import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="W&B Report API Quickstart") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Weights & Biases Report API Quickstart", +) with app.setup: import math import random - import string - from io import BytesIO from itertools import product import marimo as mo import pandas as pd - import requests import wandb import wandb_workspaces.reports.v2 as wr from PIL import Image @@ -33,17 +32,32 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # W&B Report API + - Programmatically create, manage, and customize Reports by defining configurations, panel layouts, and runsets with the wandb-workspaces W&B library. Load and modify Reports with URLs, filter and group runs using expressions, and customize run appearances using Report templates. + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + + # Weights & Biases Report API Quickstart + + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/report-api-quickstart/report_api_quickstart.py/server) - [wandb-workspaces](https://github.com/wandb/wandb-workspaces) is a Python library for programmatically creating and customizing W&B Workspaces and Reports. + Use Workspaces and Reports API ([wandb-workspaces](https://github.com/wandb/wandb-workspaces)) to create and + customize Weights & Biases Reports. A report combines narrative blocks with panel grids. A grid’s runsets + select the runs to include, and its panels visualize data from those runs. - In this tutorial you will see how to use wandb-workspaces to create and customize W&B Reports. + This tutorial covers how to create, save, and load a report. Along the way you will learn how to add common UI elements such as text, media, and panels to your report. """) return @@ -51,962 +65,621 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases - The notebook dependencies install the W&B SDK and `wandb-workspaces` automatically. Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, a team entity. You can leave the key blank when this environment already has credentials, such as `WANDB_API_KEY` configured in the marimo Secrets panel. If you are new to W&B, [create a free account](https://wandb.ai/signup). + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Connecting only authenticates and resolves your entity. It does not create runs or Reports. `wandb-workspaces` is currently in Public Preview, and Report objects are uploaded only when the tutorial explicitly calls `report.save()` after you click a creation button. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `report-api-quickstart`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - _project_input = mo.ui.text( - value="report-api-quickstart", - label="Report project", - full_width=True, - ) - _lineage_project_input = mo.ui.text( - value="lineage-example", - label="Artifact lineage project", - full_width=True, - ) - wandb_login_form = ( - mo.md( - "{api_key}\n\n{entity}\n\n{project}\n\n{lineage_project}" - ) - .batch( - api_key=_api_key_input, - entity=_entity_input, - project=_project_input, - lineage_project=_lineage_project_input, - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="report-api-quickstart", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B before using the Report API examples."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _submitted_entity = wandb_login_form.value["entity"].strip() try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _login_error = None - except wandb.errors.Error as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - f"try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - ENTITY = _submitted_entity or wandb.Api().default_entity - mo.stop( - not ENTITY, - mo.callout( - mo.md( - "W&B did not return a default entity. Enter a team entity in " - "the form above and reconnect." - ), - kind="danger", - ), - ) - PROJECT = wandb_login_form.value["project"].strip() or "report-api-quickstart" - LINEAGE_PROJECT = ( - wandb_login_form.value["lineage_project"].strip() or "lineage-example" - ) - mo.callout( - mo.md( - f"Connected to W&B as `{ENTITY}`. Report examples will use " - f"`{PROJECT}` and lineage examples will use `{LINEAGE_PROJECT}`." - ), - kind="success", - ) - return ENTITY, LINEAGE_PROJECT, PROJECT - - -@app.function -def get_image(url): - response = requests.get(url, timeout=30) - response.raise_for_status() - return Image.open(BytesIO(response.content)) - - -@app.function -def log_dummy_data(entity, project): - run_names = [ - "adventurous-aardvark-1", - "bountiful-badger-2", - "clairvoyant-chipmunk-3", - "dastardly-duck-4", - "eloquent-elephant-5", - "flippant-flamingo-6", - "giddy-giraffe-7", - "haughty-hippo-8", - "ignorant-iguana-9", - "jolly-jackal-10", - "kind-koala-11", - "laughing-lemur-12", - "manic-mandrill-13", - "neighbourly-narwhal-14", - "oblivious-octopus-15", - "philistine-platypus-16", - "quant-quail-17", - "rowdy-rhino-18", - "solid-snake-19", - "timid-tarantula-20", - "understanding-unicorn-21", - "voracious-vulture-22", - "wu-tang-23", - "xenic-xerneas-24", - "yielding-yveltal-25", - "zooming-zygarde-26", - ] + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project - opts = ["adam", "sgd"] - encoders = ["resnet18", "resnet50"] - learning_rates = [0.01] - for (i, run_name), (opt, encoder, lr) in zip( - enumerate(run_names), product(opts, encoders, learning_rates) - ): - config = { - "optimizer": opt, - "encoder": encoder, - "learning_rate": lr, - "momentum": 0.1 * random.random(), - } - displacement1 = random.random() * 2 - displacement2 = random.random() * 4 - with wandb.init( - entity=entity, - project=project, - config=config, - name=run_name, - reinit="create_new", - ) as run: - for step in range(1000): - run.log( - { - "acc": 0.1 - + 0.4 - * ( - math.log(1 + step + random.random()) - + random.random() * run.config.learning_rate - + random.random() - + displacement1 - + random.random() * run.config.momentum - ), - "val_acc": 0.1 - + 0.4 - * ( - math.log(1 + step + random.random()) - + random.random() * run.config.learning_rate - - random.random() - + displacement1 - ), - "loss": 0.1 - + 0.08 - * ( - 3.5 - - math.log(1 + step + random.random()) - + random.random() * run.config.momentum - + random.random() - + displacement2 - ), - "val_loss": 0.1 - + 0.04 - * ( - 4.5 - - math.log(1 + step + random.random()) - + random.random() * run.config.learning_rate - - random.random() - + displacement2 - ), - } - ) - - with wandb.init( - entity=entity, - project=project, - config=config, - name=run_names[i + 1], - reinit="create_new", - ) as run: - img = get_image( - "https://www.akc.org/wp-content/uploads/2017/11/Shiba-Inu-standing-in-profile-outdoors.jpg" - ) - image = wandb.Image(img) - df = pd.DataFrame( - { - "int": [1, 2, 3, 4], - "float": [1.2, 2.3, 3.4, 4.5], - "str": ["a", "b", "c", "d"], - "img": [image] * 4, - } - ) - run.log({"img": image, "my-table": df}) - - -@app.class_definition -class Step: - def __init__(self, j, r, u, o, at=None): - self.job_type = j - self.runs = r - self.uses_per_run = u - self.outputs_per_run = o - self.artifact_type = at if at is not None else "model" - self.artifacts = [] +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Create example data for the report -@app.function -def create_artifact(name: str, type: str, content: str): - art = wandb.Artifact(name, type) - with art.new_file("test-name", mode="w") as f: - f.write(content) + The next cells create synthetic metrics, an image, a Table, and a small + Artifact pipeline. These give the report panels data to display without + training a model. The run names identify the examples, and the color mapping + makes those runs easier to follow across charts. + """) + return - img = get_image( - "https://www.akc.org/wp-content/uploads/2017/11/Shiba-Inu-standing-in-profile-outdoors.jpg" - ) - image = wandb.Image(img) - df = pd.DataFrame( - { - "int": [1, 2, 3, 4], - "float": [1.2, 2.3, 3.4, 4.5], - "str": ["a", "b", "c", "d"], - "img": [image] * 4, - } - ) - art.add(wandb.Table(dataframe=df), "dataframe") - return art +@app.cell +def _(): + demo_run_colors = {} -@app.function -def log_dummy_lineage(entity, lineage_project): - pipeline = [ - Step("dataset-generator", 1, 0, 3, "dataset"), - Step("trainer", 4, (1, 2), 3), - Step("evaluator", 2, 1, 3), - Step("ensemble", 1, 1, 1), + demo_rng = random.Random(0) + demo_run_names = [ + "adventurous-aardvark-1", "bountiful-badger-2", + "clairvoyant-chipmunk-3", "dastardly-duck-4", "eloquent-elephant-5", ] - for i, step in enumerate(pipeline): - for _ in range(step.runs): - with wandb.init( - entity=entity, - project=lineage_project, - job_type=step.job_type, - reinit="create_new", - ) as run: - # use - uses = step.uses_per_run - if type(uses) == tuple: - uses = random.choice(list(uses)) - - if i > 0: - prev_step = pipeline[i - 1] - input_artifacts = random.sample(prev_step.artifacts, uses) - for a in input_artifacts: - run.use_artifact(a) - # log output artifacts - for j in range(step.outputs_per_run): - # name = ''.join(random.choices(string.ascii_lowercase + string.digits, k=6)) - name = f"{step.artifact_type}-{j}" - content = "".join( - random.choices(string.ascii_lowercase + string.digits, k=12) - ) - art = create_artifact(name, step.artifact_type, content) - run.log_artifact(art) - art.wait() - - # save in pipeline - step.artifacts.append(art) - - -@app.cell(hide_code=True) -def _(ENTITY, LINEAGE_PROJECT, PROJECT): - _log_dummy_runs = mo.ui.checkbox( - value=True, - label="Log demo runs and Artifact lineage", - ) - demo_data_form = ( - mo.md("{log_dummy_runs}") - .batch(log_dummy_runs=_log_dummy_runs) - .form( - submit_button_label="Create 13 runs + Artifacts / skip unchecked", - bordered=True, - ) - ) - mo.vstack( - [ - mo.md( - "The original tutorial can create five metric/media runs in " - f"`{ENTITY}/{PROJECT}` and eight lineage runs plus Artifacts in " - f"`{ENTITY}/{LINEAGE_PROJECT}`. Keep the box checked to create " - "that remote demo data, or clear it to skip the optional setup. " - "Changing the checkbox does nothing until you submit the form." - ), - demo_data_form, - ] - ) - return (demo_data_form,) - - -@app.cell(hide_code=True) -def _(ENTITY, LINEAGE_PROJECT, PROJECT, demo_data_form): - mo.stop( - demo_data_form.value is None, - mo.callout( - mo.md("Submit the demo-data choice above to continue."), - kind="info", - ), - ) - LOG_DUMMY_RUNS = bool(demo_data_form.value["log_dummy_runs"]) - if LOG_DUMMY_RUNS: - log_dummy_data(ENTITY, PROJECT) - log_dummy_lineage(ENTITY, LINEAGE_PROJECT) - _demo_status = "Created the optional metric/media runs and Artifact lineage." - else: - _demo_status = "Skipped the optional demo runs and Artifact lineage." - mo.callout(mo.md(_demo_status), kind="success") - return + demo_colors = ["#e84118", "#fbc531", "#4cd137", "#00a8ff", "#9c88ff"] + return demo_colors, demo_rng, demo_run_colors, demo_run_names @app.cell(hide_code=True) def _(): mo.md(r""" - ## Quickstart! + The next cell creates four runs with synthetic training curves, one media + run with an image and Table, and eight runs that log a simulated Artifact + pipeline. All of them use your selected project. + + The optimizer and encoder names are example configuration values. No models + are trained. The Artifact inputs and outputs create lineage for the report’s + lineage panel. """) return -@app.cell(hide_code=True) -def _(PROJECT): - create_quickstart_report = mo.ui.run_button( - label="Create and update the Quickstart Report" - ) - mo.vstack( - [ - mo.md( - f"This action creates one Report in `{PROJECT}`, then saves " - "each of the changes shown in the next four code cells. A new " - "button click intentionally performs the sequence again." - ), - create_quickstart_report, - ] - ) - return (create_quickstart_report,) +@app.cell +def _(demo_colors, demo_rng, demo_run_colors, demo_run_names, entity, project): + # Log psuedo training metrics such as accuracy and loss + for demo_index, (optimizer_name, encoder_name) in enumerate(product( + ["adam", "sgd"], ["resnet18", "resnet50"], + )): + with wandb.init( + entity=entity, project=project, name=demo_run_names[demo_index], + config={"optimizer": optimizer_name, "encoder": encoder_name, + "learning_rate": 0.01, "momentum": demo_rng.random() / 10}, + ) as metrics_run: + for step in range(100): + progress = 1 - math.exp(-step / 30) + noise = demo_rng.uniform(-0.02, 0.02) + metrics_run.log({ + "acc": 0.2 + 0.75 * progress + noise, + "val_acc": 0.2 + 0.7 * progress + noise, + "loss": 1.5 * (1 - progress) + 0.1, + "val_loss": 1.7 * (1 - progress) + 0.15, + }) + demo_run_colors[metrics_run.id] = demo_colors[demo_index] + + + # Create a color gradient image + demo_image = Image.new("RGB", (64, 64)) + + demo_image.putdata([(4 * x, 4 * y, 128) for y in range(64) for x in range(64)]) + table_image = wandb.Image(demo_image, caption="Synthetic color gradient") + + demo_dataframe = pd.DataFrame({ + "int": [1, 2, 3, 4], "float": [1.2, 2.3, 3.4, 4.5], + "str": ["a", "b", "c", "d"], "img": [table_image] * 4, + }) + + # Log color gradient image + with wandb.init( + entity=entity, project=project, name=demo_run_names[-1], job_type="media", + ) as media_run: + media_run.log({"img": table_image, "my-table": wandb.Table(dataframe=demo_dataframe)}) + demo_run_colors[media_run.id] = demo_colors[-1] + pipeline = [ + ("dataset-generator", 1, 0, 3, "dataset"), + ("trainer", 4, (1, 2), 3, "model"), + ("evaluator", 2, 1, 3, "model"), + ("ensemble", 1, 1, 1, "model"), + ] + previous_artifacts = [] -@app.cell(hide_code=True) -def _(ENTITY, PROJECT, create_quickstart_report): - mo.stop( - not create_quickstart_report.value, - mo.callout( - mo.md("Click the button above when you are ready to create the Report."), - kind="info", - ), - ) - quickstart_target = {"entity": ENTITY, "project": PROJECT} - return (quickstart_target,) + # Log artifact + for job_type, run_count, uses_per_run, output_count, artifact_type in pipeline: + stage_artifacts = [] + for lineage_index in range(run_count): + with wandb.init( + entity=entity, project=project, job_type=job_type, + name=f"report-demo-{job_type}-{lineage_index + 1}", + ) as lineage_run: + input_count = demo_rng.choice(uses_per_run) if isinstance(uses_per_run, tuple) else uses_per_run + for input_artifact in demo_rng.sample(previous_artifacts, input_count): + lineage_run.use_artifact(input_artifact) + for output_index in range(output_count): + lineage_artifact = wandb.Artifact(f"{artifact_type}-{output_index}", type=artifact_type) + with lineage_artifact.new_file("stage.txt", mode="w") as stage_file: + stage_file.write(f"{job_type}/{lineage_index}/{output_index}/{demo_rng.random()}") + lineage_artifact.add(wandb.Table(dataframe=demo_dataframe), "dataframe") + uploaded_artifact = lineage_run.log_artifact(lineage_artifact) + uploaded_artifact.wait() + stage_artifacts.append(uploaded_artifact) + previous_artifacts = stage_artifacts + + print("Created demo metrics, media, tables, and Artifact lineage.") + return @app.cell(hide_code=True) def _(): mo.md(r""" - ### Create, save, and load reports - - NOTE: Reports are not saved automatically to reduce clutter. Explicitly save the report by calling `report.save()` - """) - return + Use the logged runs as data for the report below. + ## Build a Report -@app.cell -def _(quickstart_target): - report = wr.Report( - entity=quickstart_target["entity"], - project=quickstart_target["project"], - title="Quickstart Report", - description="That was easy!", - ) # Create - report.save() # Save - wr.Report.from_url(report.url) # Load - return (report,) - + ### Text and image blocks -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Add content via blocks - - Use blocks to add content like text, images, code, and more - - See `wr.blocks` for all available blocks + Define content with `TableOfContents`, headings, paragraphs, and images. These + are Report objects, separate from marimo's display elements. The image below is + from the original Weights & Biases tutorial. Nothing is uploaded while building these lists. """) return @app.cell -def _(report): - report.blocks = [ +def _(): + text_blocks = [ wr.TableOfContents(), wr.H1("Text and images example"), - wr.P("Lorem ipsum dolor sit amet. Aut laborum perspiciatis sit odit omnis aut aliquam voluptatibus ut rerum molestiae sed assumenda nulla ut minus illo sit sunt explicabo? Sed quia architecto est voluptatem magni sit molestiae dolores. Non animi repellendus ea enim internos et iste itaque quo labore mollitia aut omnis totam."), + wr.P("Use a Report to explain an experiment, show results, and share conclusions with your team."), wr.Image("https://api.wandb.ai/files/telidavies/images/projects/831572/8ad61fd1.png", caption="Craiyon generated images"), - wr.P("Et voluptatem galisum quo facilis sequi quo suscipit sunt sed iste iure! Est voluptas adipisci et doloribus commodi ab tempore numquam qui tempora adipisci. Eum sapiente cupiditate ut natus aliquid sit dolor consequatur?"), + wr.P("Panel grids connect this narrative to the underlying experiment data."), ] - report.save() - report_with_content = report - return (report_with_content,) + return (text_blocks,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### Add charts and more via Panel Grid - - `PanelGrid` is a special type of block that holds `runsets` and `panels` - - `runsets` organize data logged to W&B - - `panels` visualize runset data. For a full set of panels, see `wr.panels` + ### Panel grids and run colors + + A `PanelGrid` combines runsets and panels. The first runset selects all runs in + the project. The second searches for `elephant`, matching the demo media run. + Panels show validation accuracy, accuracy bars, images, and differing run settings. + + `custom_run_colors` maps **run IDs** to colors. The demo-data cell records + those IDs as it creates runs. For existing data, edit the mapping with IDs from + your own project. The `WeaveBlockArtifact` below embeds Artifact lineage from + the selected project. In this API, `WeaveBlockArtifact` names a Report block + for Artifact views. """) return @app.cell -def _(ENTITY, PROJECT, report_with_content): - pg = wr.PanelGrid( +def _(demo_run_colors, entity, project): + panel_grid = wr.PanelGrid( runsets=[ - wr.Runset(ENTITY, PROJECT, "First Run Set"), - wr.Runset(ENTITY, PROJECT, "Elephants Only!", query="elephant"), + wr.Runset(entity, project, "All runs"), + wr.Runset(entity, project, "Elephants only", query="elephant"), ], panels=[ wr.LinePlot(x="Step", y=["val_acc"], smoothing_factor=0.8), wr.BarPlot(metrics=["acc"]), wr.MediaBrowser(media_keys=["img"], num_columns=1), - wr.RunComparer(diff_only="split", layout={"w": 24, "h": 9}), + wr.RunComparer(diff_only="split", layout=wr.Layout(w=24, h=9)), ], ) - - report_with_content.blocks = report_with_content.blocks[:1] + [wr.H1("Panel Grid Example"), pg] + report_with_content.blocks[1:] - report_with_content.save() - report_with_panel_grid = report_with_content - return pg, report_with_panel_grid - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Add data lineage with Artifact blocks - - There are equivalent weave panels as well - """) - return - - -@app.cell -def _(ENTITY, LINEAGE_PROJECT, report_with_panel_grid): + panel_grid.custom_run_colors = dict(demo_run_colors) artifact_lineage = wr.WeaveBlockArtifact( - entity=ENTITY, - project=LINEAGE_PROJECT, - artifact="model-1", - tab="lineage", + entity=entity, project=project, artifact="model-1", tab="lineage", ) - - report_with_panel_grid.blocks = report_with_panel_grid.blocks[:1] + [wr.H1("Artifact lineage example"), artifact_lineage] + report_with_panel_grid.blocks[1:] - report_with_panel_grid.save() - report_with_lineage = report_with_panel_grid - return (report_with_lineage,) + return artifact_lineage, panel_grid @app.cell(hide_code=True) def _(): mo.md(r""" - ### Customize run colors - - Pass in a `dict[run_name, color]` - """) - return + ### Assemble, save, load, and update + `Report(...)` creates a local object. Assign its block list to define the + content order, then call `save()` to publish it to Weights & Biases. -@app.cell -def _(pg, report_with_lineage): - pg.custom_run_colors = { - "adventurous-aardvark-1": "#e84118", - "bountiful-badger-2": "#fbc531", - "clairvoyant-chipmunk-3": "#4cd137", - "dastardly-duck-4": "#00a8ff", - "eloquent-elephant-5": "#9c88ff", - } - report_with_lineage.save() - quickstart_report = report_with_lineage - quickstart_report_complete = quickstart_report.url - return quickstart_report, quickstart_report_complete - - -@app.cell(hide_code=True) -def _(quickstart_report_complete): - mo.callout( - mo.md(f"Quickstart complete: [open the saved Report]({quickstart_report_complete})."), - kind="success", - ) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## FAQ + The next cell publishes a report, reloads it with `Report.from_url()`, updates + its description, and saves the change. Inspect the block definitions before + running this cell. Rerunning the whole cell constructs and publishes a new + report. To update an existing report, load its URL and save that object. """) return -@app.cell(hide_code=True) -def _(PROJECT, quickstart_report_complete): - create_faq_reports = mo.ui.run_button(label="Create the FAQ example Reports") - mo.vstack( - [ - mo.md( - f"This action clones the [Quickstart Report]({quickstart_report_complete}) and creates seven more " - f"Reports in `{PROJECT}` for the examples below. Each click " - "intentionally creates a fresh set of eight Reports." - ), - create_faq_reports, - ] - ) - return (create_faq_reports,) - +@app.cell +def _(artifact_lineage, entity, panel_grid, project, text_blocks): + quickstart_report = wr.Report( + entity=entity, project=project, title="Quickstart Report", + description="A Report built with the Weights & Biases Report API", + ) + quickstart_report.blocks = [ + text_blocks[0], wr.H1("Panel grid example"), panel_grid, + wr.H1("Artifact lineage example"), artifact_lineage, *text_blocks[1:], + ] -@app.cell(hide_code=True) -def _(create_faq_reports, quickstart_report): - mo.stop( - not create_faq_reports.value, - mo.callout( - mo.md("Click the button above when you are ready to create the FAQ Reports."), - kind="info", - ), - ) - faq_source_report = quickstart_report - return (faq_source_report,) + quickstart_report.save() + loaded_report = wr.Report.from_url(quickstart_report.url) + loaded_report.description = "Created, loaded, and updated with the Weights & Biases Report API" + loaded_report.save() + return (quickstart_report,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### My report is too wide/narrow - - Change the report's width to the right size for you. - """) - return + ## FAQ examples: build more local drafts + ### Resize panels -@app.cell -def _(faq_source_report): - report2 = faq_source_report.save(clone=True) - report2.width = "fluid" - report2.save() - faq_report_urls = [report2.url] - return (faq_report_urls,) + Report width can be `readable`, `fixed`, or `fluid`. The publishing example below + will clone the main Report and set its width to `fluid`. - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### How do I resize panels? - - Pass a `dict[dim, int]` to `panel.layout` - - `dim` is a dimension, which can be `x`, `y` (the coordiantes of the top left corner) `w`, `h` (the size of the panel) - - You can pass any or all dimensions at once - - The space between two dots in a panel grid is 2. + Panel layout controls position (`x`, `y`) and dimensions (`w`, `h`) in grid units. + The following parallel coordinates plot uses the full 24-unit panel-grid width. + Configuration fields use a `c::` prefix. For example, `c::encoder` selects + the `encoder` value logged in each run’s configuration. """) return @app.cell -def _(ENTITY, PROJECT, faq_report_urls): +def _(entity, project): resize_report = wr.Report( - entity=ENTITY, - project=PROJECT, - title="Resizing panels", - description="Look at this wide parallel coordinates plot!", - blocks=[ - wr.PanelGrid( - panels=[ - wr.ParallelCoordinatesPlot( - columns=[ - wr.ParallelCoordinatesPlotColumn(metric="Step"), - wr.ParallelCoordinatesPlotColumn(metric="c::model"), - wr.ParallelCoordinatesPlotColumn(metric="c::optimizer"), - wr.ParallelCoordinatesPlotColumn(metric="Step"), - wr.ParallelCoordinatesPlotColumn(metric="val_acc"), - wr.ParallelCoordinatesPlotColumn(metric="val_loss"), - ], - layout=wr.Layout(w=24, h=9) # Adjusting the layout for the plot size - ), - ] - ) - ], - ) - resize_report.save() - faq_report_urls_after_resize = [*faq_report_urls, resize_report.url] - return (faq_report_urls_after_resize,) + entity=entity, + project=project, + title="Resizing panels", + description="Look at this wide parallel coordinates plot!", + blocks=[ + wr.PanelGrid( + panels=[ + wr.ParallelCoordinatesPlot( + columns=[ + wr.ParallelCoordinatesPlotColumn(metric="Step"), + wr.ParallelCoordinatesPlotColumn(metric="c::encoder"), + wr.ParallelCoordinatesPlotColumn(metric="c::optimizer"), + wr.ParallelCoordinatesPlotColumn(metric="Step"), + wr.ParallelCoordinatesPlotColumn(metric="val_acc"), + wr.ParallelCoordinatesPlotColumn(metric="val_loss"), + ], + layout=wr.Layout(w=24, h=9) # Adjusting the layout for the plot size + ), + ] + ) + ], + ) + return (resize_report,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### What blocks are available? - - See `wr.blocks` for a list of blocks. - - In an IDE or notebook, you can also do `wr.blocks.` to get autocomplete. + ### Block gallery + + `wr.blocks` exposes the available block classes. This draft demonstrates headings, + formatted text, inline code and LaTeX, code blocks, tables, Artifact views, images, + lists, quotes, callouts, separators, and video. The Artifact table view references + `model-1:v0` to select an exact version. """) return @app.cell -def _(ENTITY, LINEAGE_PROJECT, PROJECT, faq_report_urls_after_resize): +def _(entity, project): block_gallery_report = wr.Report( - entity=ENTITY, - project=PROJECT, - title="W&B Block Gallery", - description="Check out all of the blocks available in W&B", - blocks=[ - wr.H1(text="Heading 1"), - wr.P(text="Normal paragraph"), - wr.H2(text="Heading 2"), - wr.P( - text=[ - "here is some text, followed by", - wr.InlineCode(text="select * from code in line"), - "and then latex", - wr.InlineLatex(text="e=mc^2"), - ] - ), - wr.H3(text="Heading 3"), - wr.CodeBlock( - code="this:\n- is\n- a\ncool:\n- yaml\n- file", - language="yaml", - ), - wr.WeaveBlockSummaryTable(entity=ENTITY, project=PROJECT, table_name="my-table"), - wr.WeaveBlockArtifact(entity=ENTITY, project=LINEAGE_PROJECT, artifact="model-1", tab="lineage"), - wr.WeaveBlockArtifactVersionedFile(entity=ENTITY, project=LINEAGE_PROJECT, artifact="model-1", version="v0", file="dataframe.table.json"), - wr.MarkdownBlock(text="Markdown cell with *italics* and **bold** and $e=mc^2$"), - wr.LatexBlock(text="\\gamma^2+\\theta^2=\\omega^2\n\\\\ a^2 + b^2 = c^2"), - wr.Image(url="https://api.wandb.ai/files/megatruong/images/projects/918598/350382db.gif", caption="It's a me, Pikachu"), - wr.UnorderedList(items=["Bullet 1", "Bullet 2"]), - wr.OrderedList(items=["Ordered 1", "Ordered 2"]), - wr.CheckedList(items=[wr.CheckedListItem(text="Unchecked", checked=False), wr.CheckedListItem(text="Checked", checked=True)]), - wr.BlockQuote(text="Block Quote 1\nBlock Quote 2\nBlock Quote 3"), - wr.CalloutBlock(text="Callout 1\nCallout 2\nCallout 3"), - wr.HorizontalRule(), - wr.Video(url="https://www.youtube.com/embed/6riDJMI-Y8U"), - ], - ) - block_gallery_report.save() - faq_report_urls_after_blocks = [ - *faq_report_urls_after_resize, - block_gallery_report.url, - ] - return (faq_report_urls_after_blocks,) + entity=entity, + project=project, + title="Weights & Biases Block Gallery", + description="Check out all of the blocks available in Weights & Biases", + blocks=[ + wr.H1(text="Heading 1"), + wr.P(text="Normal paragraph"), + wr.H2(text="Heading 2"), + wr.P( + text=[ + "here is some text, followed by", + wr.InlineCode(text="select * from code in line"), + "and then latex", + wr.InlineLatex(text="e=mc^2"), + ] + ), + wr.H3(text="Heading 3"), + wr.CodeBlock( + code="this:\n- is\n- a\ncool:\n- yaml\n- file", + language="yaml", + ), + wr.WeaveBlockSummaryTable(entity=entity, project=project, table_name="my-table"), + wr.WeaveBlockArtifact(entity=entity, project=project, artifact="model-1", tab="lineage"), + wr.WeaveBlockArtifactVersionedFile(entity=entity, project=project, artifact="model-1", version="v0", file="dataframe.table.json"), + wr.MarkdownBlock(text="Markdown cell with *italics* and **bold** and $e=mc^2$"), + wr.LatexBlock(text="\\gamma^2+\\theta^2=\\omega^2\n\\\\ a^2 + b^2 = c^2"), + wr.Image(url="https://api.wandb.ai/files/megatruong/images/projects/918598/350382db.gif", caption="It's a me, Pikachu"), + wr.UnorderedList(items=["Bullet 1", "Bullet 2"]), + wr.OrderedList(items=["Ordered 1", "Ordered 2"]), + wr.CheckedList(items=[wr.CheckedListItem(text="Unchecked", checked=False), wr.CheckedListItem(text="Checked", checked=True)]), + wr.BlockQuote(text="Block Quote 1\nBlock Quote 2\nBlock Quote 3"), + wr.CalloutBlock(text="Callout 1\nCallout 2\nCallout 3"), + wr.HorizontalRule(), + wr.Video(url="https://www.youtube.com/embed/6riDJMI-Y8U"), + ], + ) + return (block_gallery_report,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### What panels are available? - - See `wr.panels` for a list of panels - - In an IDE or notebook, you can also do `wr.panels.` to get autocomplete. - - Panels have a lot of settings. Inspect the panel to see what you can do! + ### Panel gallery + + `wr.panels` exposes chart and comparison panel classes. This gallery includes + line, scatter, bar, scalar, parallel coordinates, parameter importance, media, + code/run comparison, and custom charts. It also demonstrates grouping, smoothing, + axis settings, and legends. Adjust these settings for the metrics in your project. + + Embedded summary tables and Artifact views belong directly in `report.blocks`, + while charts belong inside `PanelGrid.panels`. """) return @app.cell -def _(ENTITY, LINEAGE_PROJECT, PROJECT, faq_report_urls_after_blocks): +def _(entity, project): panel_gallery_report = wr.Report( - entity=ENTITY, - project=PROJECT, - title="W&B Panel Gallery", - description="Check out all of the panels available in W&B", - width="fluid", - blocks=[ - wr.PanelGrid( - runsets=[wr.Runset(project=LINEAGE_PROJECT), wr.Runset()], - panels=[ - wr.MediaBrowser(media_keys=["img"]), - wr.MarkdownPanel(markdown="Hello *italic* **bold** $e=mc^2$ `something`"), - - # LinePlot with various settings enabled - wr.LinePlot( - title="Validation Accuracy over Time", - x="Step", - y=["val_acc"], - range_x=(0, 1000), - range_y=(1, 4), - log_x=True, - log_y=False, - title_x="Training steps", - title_y="Validation Accuracy", - ignore_outliers=True, - groupby="encoder", - groupby_aggfunc="mean", - groupby_rangefunc="minmax", - smoothing_factor=0.5, - smoothing_type="gaussian", - smoothing_show_original=True, - max_runs_to_show=10, - font_size="large", - legend_position="west", - ), - wr.ScatterPlot(title="Validation Accuracy vs. Validation Loss", x="val_acc", y="val_loss", log_x=False, log_y=False, running_ymin=True, running_ymean=True, running_ymax=True, font_size="small", regression=True), - wr.BarPlot(title="Validation Loss by Encoder", metrics=["val_loss"], orientation="h", range_x=(0, 0.11), title_x="Validation Loss", groupby="encoder", groupby_aggfunc="median", groupby_rangefunc="stddev", max_runs_to_show=20, max_bars_to_show=3, font_size="auto"), - wr.ScalarChart(title="Maximum Number of Steps", metric="Step", groupby_aggfunc="max", groupby_rangefunc="stderr", font_size="large"), - wr.CodeComparer(diff="split"), - wr.ParallelCoordinatesPlot(columns=[wr.ParallelCoordinatesPlotColumn("Step"), wr.ParallelCoordinatesPlotColumn("c::model"), wr.ParallelCoordinatesPlotColumn("c::optimizer"), wr.ParallelCoordinatesPlotColumn("val_acc"), wr.ParallelCoordinatesPlotColumn("val_loss")]), - wr.ParameterImportancePlot(with_respect_to="val_loss"), - wr.RunComparer(diff_only=True), - wr.CustomChart(query={"summary": ["val_loss", "val_acc"]}, chart_name="wandb/scatter/v0", chart_fields={"x": "val_loss", "y": "val_acc"}), - ], - ), - # Add WeaveBlock types directly to the blocks list - wr.WeaveBlockSummaryTable(entity="your_entity", project="your_project", table_name="my-table"), - wr.WeaveBlockArtifact(entity="your_entity", project="your_project", artifact="model-1", tab="lineage"), - wr.WeaveBlockArtifactVersionedFile(entity="your_entity", project="your_project", artifact="model-1", version="v0", file="dataframe.table.json"), - ], - ) - panel_gallery_report.save() - faq_report_urls_after_panels = [ - *faq_report_urls_after_blocks, - panel_gallery_report.url, - ] - return (faq_report_urls_after_panels,) + entity=entity, + project=project, + title="Weights & Biases Panel Gallery", + description="Check out all of the panels available in Weights & Biases", + width="fluid", + blocks=[ + wr.PanelGrid( + runsets=[wr.Runset(entity, project, "Metrics and media"), wr.Runset(entity, project, "Artifacts")], + panels=[ + wr.MediaBrowser(media_keys=["img"]), + wr.MarkdownPanel(markdown="Hello *italic* **bold** $e=mc^2$ `something`"), + + # LinePlot with various settings enabled + wr.LinePlot( + title="Validation Accuracy over Time", + x="Step", + y=["val_acc"], + range_x=(1, 100), + range_y=(0, 1), + log_x=True, + log_y=False, + title_x="Training steps", + title_y="Validation Accuracy", + ignore_outliers=True, + groupby="encoder", + groupby_aggfunc="mean", + groupby_rangefunc="minmax", + smoothing_factor=0.5, + smoothing_type="gaussian", + smoothing_show_original=True, + max_runs_to_show=10, + font_size="large", + legend_position="west", + ), + wr.ScatterPlot(title="Validation Accuracy vs. Validation Loss", x="val_acc", y="val_loss", log_x=False, log_y=False, running_ymin=True, running_ymean=True, running_ymax=True, font_size="small", regression=True), + wr.BarPlot(title="Validation Loss by Encoder", metrics=["val_loss"], orientation="h", range_x=(0, 2), title_x="Validation Loss", groupby="encoder", groupby_aggfunc="median", groupby_rangefunc="stddev", max_runs_to_show=20, max_bars_to_show=3, font_size="auto"), + wr.ScalarChart(title="Maximum Number of Steps", metric="Step", groupby_aggfunc="max", groupby_rangefunc="stderr", font_size="large"), + wr.CodeComparer(diff="split"), + wr.ParallelCoordinatesPlot(columns=[wr.ParallelCoordinatesPlotColumn("Step"), wr.ParallelCoordinatesPlotColumn("c::encoder"), wr.ParallelCoordinatesPlotColumn("c::optimizer"), wr.ParallelCoordinatesPlotColumn("val_acc"), wr.ParallelCoordinatesPlotColumn("val_loss")]), + wr.ParameterImportancePlot(with_respect_to="val_loss"), + wr.RunComparer(diff_only=True), + wr.CustomChart(query={"summary": ["val_loss", "val_acc"]}, chart_name="wandb/scatter/v0", chart_fields={"x": "val_loss", "y": "val_acc"}), + ], + ), + # Add WeaveBlock types directly to the blocks list + wr.WeaveBlockSummaryTable(entity=entity, project=project, table_name="my-table"), + wr.WeaveBlockArtifact(entity=entity, project=project, artifact="model-1", tab="lineage"), + wr.WeaveBlockArtifactVersionedFile(entity=entity, project=project, artifact="model-1", version="v0", file="dataframe.table.json"), + ], + ) + return (panel_gallery_report,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### How can I link related reports together? - - Suppose have have two reports like below: - """) - return + ### Related Reports, grouped colors, and combined blocks + These two drafts use the original tutorial's public CleanRL runs in + `openrlbenchmark/cleanrl`. They show reinforcement-learning metrics and videos. + Viewing the data requires access to that project. `RunsetGroup` assigns colors to + specific configuration groups, using each configuration field as the key and + its observed setting as the value. -@app.cell -def _(ENTITY, PROJECT, faq_report_urls_after_panels): - report1 = wr.Report( - entity=ENTITY, - project=PROJECT, - title="Report 1", - description="Great content coming from Report 1", - blocks=[ - wr.H1(text="Heading from Report 1"), - wr.P(text="Lorem ipsum dolor sit amet. Aut fuga minus nam vero saepeA aperiam eum omnis dolorum et ducimus tempore aut illum quis aut alias vero. Sed explicabo illum est eius quianon vitae sed voluptatem incidunt. Vel architecto assumenda Ad voluptatem quo dicta provident et velit officia. Aut galisum inventoreSed dolore a illum adipisci a aliquam quidem sit corporis quia cum magnam similique."), - wr.PanelGrid( - panels=[ - wr.LinePlot(title="Episodic Return", x="global_step", y=["charts/episodic_return"], smoothing_factor=0.85, groupby_aggfunc="mean", groupby_rangefunc="minmax", layout=wr.Layout(x=0, y=0, w=12, h=8)), - wr.MediaBrowser(media_keys=["videos"], num_columns=4, layout=wr.Layout(w=12, h=8)), - ], - runsets=[wr.Runset(entity="openrlbenchmark", project="cleanrl", query="bigfish", groupby=["env_id", "exp_name"])], - custom_run_colors={ - wr.RunsetGroup(runset_name="Run set", keys=(wr.RunsetGroupKey(key="bigfish", value="ppg_procgen"),)): "#2980b9", - wr.RunsetGroup(runset_name="Run set", keys=(wr.RunsetGroupKey(key="bigfish", value="ppo_procgen"),)): "#e74c3c", - }, - ), - ], - ) - report1.save() - - report2_1 = wr.Report( - entity=ENTITY, - project=PROJECT, - title="Report 2", - description="Great content coming from Report 2", - blocks=[ - wr.H1(text="Heading from Report 2"), - wr.P(text="Est quod ducimus ut distinctio corruptiid optio qui cupiditate quibusdam ea corporis modi. Eum architecto vero sed error dignissimosEa repudiandae a recusandae sint ut sint molestiae ea pariatur quae. In pariatur voluptas ad facere neque 33 suscipit et odit nostrum ut internos molestiae est modi enim. Et rerum inventoreAut internos et dolores delectus aut Quis sunt sed nostrum magnam ab dolores dicta."), - wr.PanelGrid( - panels=[ - wr.LinePlot(title="SPS", x="global_step", y=["charts/SPS"]), - wr.LinePlot(title="Episodic Length", x="global_step", y=["charts/episodic_length"]), - wr.LinePlot(title="Episodic Return", x="global_step", y=["charts/episodic_return"]), - ], - runsets=[ - wr.Runset(entity="openrlbenchmark", project="cleanrl", name="DQN", groupby=["exp_name"]), - wr.Runset(entity="openrlbenchmark", project="cleanrl", name="SAC-discrete 0.8", groupby=["exp_name"]), - wr.Runset(entity="openrlbenchmark", project="cleanrl", name="SAC-discrete 0.88", groupby=["exp_name"]), - ], - custom_run_colors={ - wr.RunsetGroup(runset_name="DQN", keys=(wr.RunsetGroupKey(key="dqn_atari", value="exp_name"),)): "#e84118", - wr.RunsetGroup(runset_name="SAC-discrete 0.8", keys=(wr.RunsetGroupKey(key="sac_atari", value="exp_name"),)): "#fbc531", - wr.RunsetGroup(runset_name="SAC-discrete 0.88", keys=(wr.RunsetGroupKey(key="sac_atari", value="exp_name"),)): "#00a8ff", - }, - ), - ], - ) - report2_1.save() - faq_report_urls_after_linked_pair = [ - *faq_report_urls_after_panels, - report1.url, - report2_1.url, - ] - return faq_report_urls_after_linked_pair, report1, report2_1 - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - #### Combine blocks into a new report + You can combine two Reports by concatenating their block lists. Publishing later + also creates a Report with `wr.Link` objects pointing to these two saved Reports. + `MarkdownBlock` supports ordinary Markdown links as well. """) return @app.cell -def _(ENTITY, PROJECT, faq_report_urls_after_linked_pair): - report_4 = wr.Report( - entity=ENTITY, - project=PROJECT, - title="Report with links", - description="Use `wr.Link(text, url)` to add links inside normal text, or use normal markdown syntax in a MarkdownBlock", - blocks=[ - wr.H1("This is a normal heading"), - wr.P("And here is some normal text"), - - wr.H1(["This is a heading ", wr.Link("with a link!", url="https://wandb.ai/")]), - wr.P(["Most text formats support ", wr.Link("adding links", url="https://wandb.ai/")]), +def _(entity, project): + related_report_one = wr.Report( + entity=entity, + project=project, + title="Report 1", + description="Great content coming from Report 1", + blocks=[ + wr.H1(text="Heading from Report 1"), + wr.P(text="Compare the public CleanRL experiments using the panels below."), + wr.PanelGrid( + panels=[ + wr.LinePlot(title="Episodic Return", x="global_step", y=["charts/episodic_return"], smoothing_factor=0.85, groupby_aggfunc="mean", groupby_rangefunc="minmax", layout=wr.Layout(x=0, y=0, w=12, h=8)), + wr.MediaBrowser(media_keys=["videos"], num_columns=4, layout=wr.Layout(w=12, h=8)), + ], + runsets=[wr.Runset(entity="openrlbenchmark", project="cleanrl", query="bigfish", groupby=["exp_name"])], + custom_run_colors={ + wr.RunsetGroup(runset_name="Run set", keys=(wr.RunsetGroupKey(key=wr.Config("exp_name"), value="ppg_procgen"),)): "#2980b9", + wr.RunsetGroup(runset_name="Run set", keys=(wr.RunsetGroupKey(key=wr.Config("exp_name"), value="ppo_procgen"),)): "#e74c3c", + }, + ), + ], + ) - wr.MarkdownBlock("""You can also use markdown syntax for [links](https://wandb.ai/)"""), - ], - ) - report_4.save() - faq_report_urls_after_links = [ - *faq_report_urls_after_linked_pair, - report_4.url, - ] - return (faq_report_urls_after_links,) + related_report_two = wr.Report( + entity=entity, + project=project, + title="Report 2", + description="Great content coming from Report 2", + blocks=[ + wr.H1(text="Heading from Report 2"), + wr.P(text="Compare the public CleanRL experiments using the panels below."), + wr.PanelGrid( + panels=[ + wr.LinePlot(title="SPS", x="global_step", y=["charts/SPS"]), + wr.LinePlot(title="Episodic Length", x="global_step", y=["charts/episodic_length"]), + wr.LinePlot(title="Episodic Return", x="global_step", y=["charts/episodic_return"]), + ], + runsets=[ + wr.Runset(entity="openrlbenchmark", project="cleanrl", name="DQN", groupby=["exp_name"]), + wr.Runset(entity="openrlbenchmark", project="cleanrl", name="SAC-discrete 0.8", groupby=["exp_name"]), + wr.Runset(entity="openrlbenchmark", project="cleanrl", name="SAC-discrete 0.88", groupby=["exp_name"]), + ], + custom_run_colors={ + wr.RunsetGroup(runset_name="DQN", keys=(wr.RunsetGroupKey(key=wr.Config("exp_name"), value="dqn_atari"),)): "#e84118", + wr.RunsetGroup(runset_name="SAC-discrete 0.8", keys=(wr.RunsetGroupKey(key=wr.Config("exp_name"), value="sac_atari"),)): "#fbc531", + wr.RunsetGroup(runset_name="SAC-discrete 0.88", keys=(wr.RunsetGroupKey(key=wr.Config("exp_name"), value="sac_atari"),)): "#00a8ff", + }, + ), + ], + ) + return related_report_one, related_report_two @app.cell -def _(ENTITY, PROJECT, faq_report_urls_after_links, report1, report2_1): - report3 = wr.Report( - entity=ENTITY, - project=PROJECT, - title="Combined blocks report", - description="This report combines blocks from both Report 1 and Report 2", - blocks=[*report1.blocks, *report2_1.blocks], +def _(entity, project, related_report_one, related_report_two): + combined_report = wr.Report( + entity=entity, project=project, title="Combined blocks report", + description="Blocks from both related Reports", + blocks=[*related_report_one.blocks, *related_report_two.blocks], ) - report3.save() - faq_reports_complete = [*faq_report_urls_after_links, report3.url] - return (faq_reports_complete,) - - -@app.cell(hide_code=True) -def _(faq_reports_complete): - mo.callout( - mo.md( - f"Created {len(faq_reports_complete)} FAQ example Reports. " - f"[Open the combined Report]({faq_reports_complete[-1]})." - ), - kind="success", - ) - return + return (combined_report,) @app.cell(hide_code=True) def _(): mo.md(r""" - ### I tried mutating an object in list but it didn't work! - tl;dr: It should always work if you assign a value to the attribute instead of mutating. If you really need to mutate, do it before assignment. - - --- + ### Publish the FAQ examples - This can happen in a few places that contain lists of wandb objects, e.g.: - - `report.blocks` - - `panel_grid.panels` - - `panel_grid.runsets` + The next action loads the saved Quickstart Report into a fresh object, changes + its width, and calls `save(clone=True)` to create a separate copy. Loading a fresh + object matters: `save(clone=True)` changes the saved object's ID in the current + library, so cloning the original draft directly would change its save target. - The current `wandb-workspaces` release keeps the assigned block object by reference, so the in-place mutation below is visible through `report.blocks`. Explicitly reassigning the block list still makes the intended update unambiguous before a later `save()`. - - The following object stays local because none of these cells calls `save()`. + It then saves the six drafts above and creates a links Report after both related + Report URLs exist. The first execution creates eight FAQ Reports. Rerunning the publishing + cell updates the six saved drafts and creates another width clone and links + Report, provided you have not rebuilt those drafts. Save the Quickstart Report first. """) return @app.cell -def _(ENTITY, PROJECT): - report_5 = wr.Report(entity=ENTITY, project=PROJECT) - return (report_5,) +def _( + block_gallery_report, + combined_report, + entity, + panel_gallery_report, + project, + quickstart_report, + related_report_one, + related_report_two, + resize_report, +): + wide_report = wr.Report.from_url(quickstart_report.url) + wide_report.width = "fluid" + wide_report.save(clone=True) + + for faq_draft in [ + resize_report, block_gallery_report, panel_gallery_report, + related_report_one, related_report_two, combined_report, + ]: + faq_draft.save() + + links_report = wr.Report( + entity=entity, project=project, title="Report with links", + description="Link related Reports with rich text or Markdown", + blocks=[ + wr.H1(["Results from ", wr.Link("Report 1", url=related_report_one.url)]), + wr.P(["Compare these results with ", wr.Link("Report 2", url=related_report_two.url)]), + wr.MarkdownBlock(f"Also visit [Report 1]({related_report_one.url}) and [Report 2]({related_report_two.url})."), + ], + ) + links_report.save() + return @app.cell(hide_code=True) def _(): mo.md(r""" - Good: Assign `b` - """) - return - - -@app.cell -def _(report_5): - b = wr.H1(text=["Hello", " World!"]) - report_5.blocks = [b] - assert b.text == ["Hello", " World!"] - assert report_5.blocks[0].text == ["Hello", " World!"] - initial_assignment_done = True - return (b,) + ## Update lists of blocks explicitly + A Report contains lists such as `report.blocks`, `panel_grid.panels`, and + `panel_grid.runsets`. Object-reference behavior can vary across library versions. + To make an update explicit, edit the block and then reassign the block list. + Keep related mutations in one cell so marimo doesn't need to infer their order. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Current behavior: Mutate `b` without reassigning + The following example changes only the local object. It does not call `save()`. """) return @app.cell -def _(b, report_5): - b.text = ["Something", " New"] - assert b.text == ["Something", " New"] - assert report_5.blocks[0].text == ["Something", " New"] - - # Older releases could leave the previously assigned value here. - mutation_example_done = True +def _(entity, project): + assignment_report = wr.Report(entity=entity, project=project) + heading = wr.H1(text=["Hello", " World!"]) + assignment_report.blocks = [heading] + heading.text = ["Something", " New"] + assignment_report.blocks = [heading] + print(assignment_report.blocks[0].text) return @app.cell(hide_code=True) def _(): mo.md(r""" - Recommended: Mutate `b` and then reassign it - """) - return + ## Verify the saved Reports + Open the URLs printed by the publishing cells and check the narrative, panels, + Artifact lineage, and FAQ examples. If a panel is empty, confirm that its runset + points to a project with the requested metrics or media keys. If you skipped the + demo data, adapt the runsets and Artifact names to your existing data. -@app.cell -def _(b, report_5): - report_5.blocks = [b] - assert b.text == ["Something", " New"] - assert report_5.blocks[0].text == ["Something", " New"] + Inspect `wr.blocks` and `wr.panels` in your editor for more options. Edit local + drafts first, then publish only the examples you want to keep. + """) return diff --git a/marimo/convert/run-quickstart/run_quickstart.py b/marimo/convert/run-quickstart/run_quickstart.py index 1918ca36..432ad221 100644 --- a/marimo/convert/run-quickstart/run_quickstart.py +++ b/marimo/convert/run-quickstart/run_quickstart.py @@ -8,217 +8,213 @@ import marimo -__generated_with = "0.23.16" -app = marimo.App() +__generated_with = "0.25.1" +app = marimo.App(width="medium", app_title="W&B Run Quickstart") + +with app.setup: + import random -with app.setup(hide_code=True): import marimo as mo import wandb - import random @app.cell(hide_code=True) def _(): mo.md(r""" - # W&B Quickstart - - Use W&B to track, visualize, and manage machine learning experiments of any size. - - ## Create a machine learning training experiment + - Next, initialize a W&B run with [`wandb.init()`](https://docs.wandb.ai/models/ref/python/functions/init). The run records the config, metrics, and other information from the training script. + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Inside the training loop, the script simulates an accuracy and loss value for each epoch. It then logs those values to W&B with `run.log()`. After the script runs, you can view the logged metrics in the W&B App. + # Weights & Biases Run Quickstart - ### Authentication + A Weights & Biases run represents one experiment. It records your configuration, metrics, + and results so you can inspect an experiment or compare it with other runs. - To save your experiment in W&B, you need to authenticate. + This lesson simulates training to focus on three Weights & Biases operations: + `wandb.init()` starts a run, `training_run.log()` records metrics, and + `wandb.Api()` retrieves the results. - Authenticate with W&B one of two ways: run **`wandb login`** in - your shell before starting marimo, or paste your key into the - **W&B API key** field in the form below. Get your key from - [wandb.ai/authorize](https://wandb.ai/authorize). + Running the code cells creates a Weights & Biases run and uploads its simulated metrics. """) return @app.cell(hide_code=True) def _(): - epochs = mo.ui.slider( - start=1, - stop=20, - step=1, - value=10, - label="Epochs", - show_value=True, - ) - - lr = mo.ui.slider( - start=0.001, - stop=0.1, - step=0.001, - value=0.01, - label="Learning rate", - show_value=True, - ) - api_key = mo.ui.text( - value="", - kind="password", - label="W&B API key (blank uses your shell login)", - ) - project = mo.ui.text(value="my-awesome-project", label="W&B project") - entity = mo.ui.text( - value="", - label="W&B entity \u2014 a team you belong to (blank uses your default)", - ) + mo.md(r""" + ## Authenticate with Weights & Biases - # Batch every control into one form so training only kicks off on submit. - # `form.value` is None until the user clicks Train model, then becomes a dict - # keyed by the names below - the training cell gates on that. - form = ( - mo.md( - """ - **Training** + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - {epochs} + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - {lr} + ## Set your team and project - **W&B run.** + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `my-awesome-project`. Then select **Connect to Weights & Biases**. + """) + return - {api_key} - {project} +@app.cell(hide_code=True) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="my-awesome-project", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) - {entity} - """ - ) - .batch( - epochs=epochs, - lr=lr, - api_key=api_key, - project=project, - entity=entity, - ) - .form(submit_button_label="Start run", bordered=False) - ) - form - return (form,) +@app.cell(hide_code=True) +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() + mo.stop( + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), + ) -@app.cell -def _(form): - run_path = None + try: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): + _login_ok = False mo.stop( - form.value is None, - mo.md( - "Configure the run and click Start run to simulate training and log " - "accuracy and loss to W&B." - ), + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - # Get the data from the form - cfg = form.value + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Define the Experiment Configuration + + The next cell defines a configuration dictionary. Passing it to + `wandb.init(config=config)` records these settings with the run so you can + compare experiments by hyperparameter. + + We simulate ten epochs with a fixed random seed. The learning rate is + recorded to demonstrate configuration tracking. It does not affect our + synthetic metrics. In real training, you would use it to configure an + optimizer. + """) + return - # Dictionary with hyperparameters + +@app.cell +def _(): config = { - "epochs": cfg["epochs"], - "lr": cfg["lr"], + "epochs": 10, + "lr": 0.01, + "seed": 42, } + return (config,) + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Start a Run and Log Metrics + + The next cell starts `training_run` with `wandb.init()`. Inside the loop, + `training_run.log()` records a dictionary containing the epoch, accuracy, + and loss. In your own training code, replace the simulated values with + measured metrics. + + The context manager finishes the run and completes logging when the block + exits. We keep its URL for the dashboard and its + `entity/project/run_id` path for the API query that follows. + """) + return + - # Authenticate and start the run. Finish any prior run first (marimo keeps the - # kernel alive across re-submits). A key pasted into the form wins; otherwise - # fall back to ambient login (shell `wandb login`, WANDB_API_KEY, or netrc). - # The key is never written to the run config. - if wandb.run is not None: - wandb.finish() - if cfg["api_key"]: - wandb.login(key=cfg["api_key"]) - - with wandb.init(project=cfg["project"], entity=cfg["entity"] or None, config=config) as run: - offset = random.random() / 5 - print(f"lr: {config['lr']}") - - # Simulate a training run - for epoch in range(1, config['epochs'] + 1): - acc = 1 - 2**-config['epochs'] - random.random() / config['epochs'] - offset - loss = 2**-config['epochs'] + random.random() / config['epochs'] + offset - print(f"epoch={epoch}, accuracy={acc}, loss={loss}") - run.log( - { - "epoch": epoch, - "accuracy": acc, - "loss": loss - } - ) - - run_path = f"{run.entity}/{run.project}/{run.id}" +@app.cell +def _(config, entity, project): + rng = random.Random(config["seed"]) + offset = rng.random() / 5 + + with wandb.init(project=project, entity=entity, config=config) as training_run: + for epoch in range(1, config["epochs"] + 1): + accuracy = 1 - 2 ** -epoch - rng.random() / config["epochs"] - offset + loss = 2 ** -epoch + rng.random() / config["epochs"] + offset + training_run.log({ + "epoch": epoch, + "accuracy": accuracy, + "loss": loss, + }) + print(f"Epoch {epoch}: accuracy={accuracy:.4f}, loss={loss:.4f}") + + # For demo: Store run path to retrieve run info (see following cell) + run_path = f"{training_run.entity}/{training_run.project}/{training_run.id}" return (run_path,) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Get the logged run results from W&B + ## Retrieve the Logged Results + + The next cell uses `wandb.Api().run(run_path)` to fetch the completed + experiment. `logged_run.config` contains its settings, and + `logged_run.summary` includes the latest logged metric values. + + `scan_history()` iterates over every recorded row containing the requested + keys. We collect those rows in a list so we can inspect the complete epoch + history, rather than a sampled subset. """) return @app.cell def _(run_path): - history = [] - remote_run = None - - mo.stop( - run_path is None, - mo.md("Run an experiment above to load its logged results from W&B."), - ) + api = wandb.Api() + logged_run = api.run(run_path) + history = list(logged_run.scan_history(keys=["epoch", "accuracy", "loss"])) + history + return - _api = wandb.Api() - remote_run = _api.run(run_path) - history = [ - { - "epoch": row["epoch"], - "accuracy": round(row["accuracy"], 4), - "loss": round(row["loss"], 4), - } - for row in remote_run.scan_history( - keys=["epoch", "accuracy", "loss"] - ) - ] - return history, remote_run +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Explore the Run in Weights & Biases + Open the Weights & Biases run to view the accuracy and loss charts. Its + configuration contains the settings from this notebook, and its summary + shows the most recently logged metric values. -@app.cell -def _(history, remote_run): - mo.stop( - not history, - mo.md("The run finished, but no metric history is available yet."), - ) + Change the seed or epoch count and rerun the experiment. Weights & Biases creates a new + run that you can compare with the previous one in your project. In a real + training workflow, changing the learning rate would let you compare how that + hyperparameter affects measured performance. - final = history[-1] - - mo.vstack( - [ - mo.callout( - mo.md( - f"**Run complete:** " - f"[{remote_run.name}]({remote_run.url})\n\n" - f"Final accuracy: **{final['accuracy']:.2%}** \n" - f"Final loss: **{final['loss']:.4f}**" - ), - kind="success", - ), - mo.ui.table(history, selection=None), - ] - ) + See the [Weights & Biases quickstart](https://docs.wandb.ai/models/quickstart) + for more examples. + """) return diff --git a/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py b/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py index 516638a1..e473a367 100644 --- a/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py +++ b/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py @@ -9,11 +9,14 @@ # "tqdm>=4.66", # "wandb>=0.18", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App(width="medium", app_title="Simple PyTorch Integration") with app.setup: @@ -41,34 +44,36 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # W&B + PyTorch + -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Use [Weights & Biases](https://wandb.com) for machine learning experiment tracking, dataset versioning, and project collaboration. + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Weights & Biases - """) - return + # Weights & Biases + PyTorch + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/simple-pytorch-integration/simple_pytorch_integration.py/server) -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## What this notebook covers: + In this notebook you will learn how to integrate Weights & Biases with your PyTorch code to add experiment tracking to your pipeline. - We show you how to integrate Weights & Biases with your PyTorch code to add experiment tracking to your pipeline. + The example trains a small convolutional network on every fifth MNIST image: + 12,000 training examples and 2,000 test examples. A GPU is optional. Running + the experiment downloads MNIST into `data/`, trains for five epochs, and + creates one Weights & Biases run with metrics and an ONNX model. - ### The resulting interactive W&B dashboard will look like: - ![Example PyTorch training dashboard](https://i.imgur.com/z8TK2Et.png) + In pseudocode, what we'll do is: - ### In pseudocode, what we'll do is: ```python # import the library import wandb @@ -100,122 +105,70 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - Follow along with a [video tutorial](https://wandb.me/pytorch-video)! - **Note**: Sections starting with _Step_ are all you need to integrate W&B in an existing pipeline. The rest just loads data and defines a model. - """) - return - + ## Authenticate with Weights & Biases -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Import and Log In + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - The example trains a small convolutional network on every fifth MNIST image: 12,000 training examples and 2,000 test examples. A CUDA GPU is optional; CPU training is supported. MNIST downloads into `data/` only after you submit **Train model and log to W&B**. That submission creates one W&B run and, by default, saves its ONNX model. - """) - return + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + ## Set your team and project -@app.cell(hide_code=True) -def _(): - mo.callout(mo.md(f"**Training device:** `{device}`."), kind="info") - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Authentication - - ### Step 1: Import W&B and Login - - To log data, [create a W&B account](https://wandb.ai) and get your [API key](https://wandb.ai/authorize). Enter the key below, or leave it blank to use `WANDB_API_KEY` from marimo's **Secrets** panel or credentials already configured in this runtime with `wandb login`. A fresh molab runtime does not inherit your computer's login. - - Set **W&B entity or team** to a team you can write to. You can find the entity in a project URL, `wandb.ai//`. Leave it blank to use your default entity. Connecting authenticates this session; training has a separate submission below. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `pytorch_demo`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch( - api_key=mo.ui.text( - kind="password", label="W&B API key (optional)", full_width=True - ), - entity=mo.ui.text(label="W&B entity or team (optional)", full_width=True), - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="pytorch_demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before running the training example."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() + try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check your API key or this runtime's credentials and connection, then submit again." - ), - kind="danger", - ), - ) - wandb_settings = {"entity": wandb_login_form.value["entity"].strip() or None} - mo.callout( - mo.md("Connected to W&B. Configure and submit training below."), kind="success" + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - return (wandb_settings,) - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Define the Experiment and Pipeline - """) - return + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ### Step 2: Track metadata and hyperparameters with `wandb.init` - """) - return + ## Define the experiment settings + The `config` dictionary holds the settings the training code will use, including + the learning rate, batch size, and epoch count. It also records the dataset + and architecture so you can distinguish this experiment from other runs. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Programmatically, the first thing we do is define our experiment: - what are the hyperparameters? what metadata is associated with this run? - - It's a pretty common workflow to store this information in a `config` dictionary - (or similar object) - and then access it as needed. - - For this example, we're only letting a few hyperparameters vary - and hand-coding the rest. - But any part of your model can be part of the `config`! - - We also include some metadata: we're using the MNIST dataset and a convolutional - architecture. If we later work with, say, - fully-connected architectures on CIFAR in the same project, - this will help us separate our runs. + Pass this dictionary to `wandb.init(config=config)`. Inside the run, read + settings from `run.config` so the logged values and training inputs agree. """) return @@ -238,28 +191,20 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - Now, let's define the overall pipeline, - which is pretty typical for model-training: - - 1. we first `make` a model, plus associated data and optimizer, then - 2. we `train` the model accordingly and finally - 3. `evaluate` it to see how training went. - - We'll implement these functions below. + The `model_pipeline` function keeps one experiment inside a Weights & Biases + run. It calls `make` to build the model, data loaders, loss, and optimizer, + then calls `train` and `evaluate`. Exiting the run’s context manager finishes + logging. The helper functions are defined below. """) return @app.function -def model_pipeline(hyperparameters, project, entity=None, name=None, export_onnx=True): +def model_pipeline(hyperparameters, entity, project): seed_everything(hyperparameters["seed"]) - if wandb.run is not None: - wandb.run.finish() # tell wandb to get started - with wandb.init( - project=project, entity=entity, name=name, config=hyperparameters - ) as run: + with wandb.init(entity=entity, project=project, config=hyperparameters) as run: # access all HPs through run.config, so logging matches execution! config = run.config @@ -271,40 +216,20 @@ def model_pipeline(hyperparameters, project, entity=None, name=None, export_onnx train(model, train_loader, criterion, optimizer, config, run) # and test its final performance - test_accuracy = evaluate(model, test_loader, run, export_onnx=export_onnx) - result = { - "url": run.url, - "name": run.name, - "test_accuracy": test_accuracy, - "export_onnx": export_onnx, - } + evaluate(model, test_loader, run) - return model, result + return model @app.cell(hide_code=True) def _(): mo.md(r""" - The only difference here from a standard pipeline - is that it all occurs inside the context of `wandb.init`. - Calling this function sets up a line of communication - between your code and our servers. - - Passing the `config` dictionary to `wandb.init` - immediately logs all that information to us, - so you'll always know what hyperparameter values - you set your experiment to use. - - To ensure the values you chose and logged are always the ones that get used - in your model, we recommend using the `run.config` copy of your object. - Check the definition of `make` below to see some examples. - - > *Side Note*: We take care to run our code in separate processes, - so that any issues on our end - (e.g. a giant sea monster attacks our data centers) - don't crash your code. - Once the issue is resolved (e.g. the Kraken returns to the deep) - you can log the data with `wandb sync`. + `wandb.init()` starts the run and records the supplied configuration. + The model, optimizer, and data loaders use `run.config` to read those settings. + + The `with` block keeps metric logging and the final model file associated + with this run. A new call to `model_pipeline` creates a fresh model and run, + which lets you compare experiments after changing a setting. """) return @@ -331,7 +256,7 @@ def _(): ## Define the Data Loading and Model Now, we need to specify how the data is loaded and what the model looks like. - This part is very important, but it is no different from what it would be without W&B. + This part is very important, but it is no different from what it would be without Weights & Biases. `get_data` uses every fifth MNIST image to keep this tutorial small. `make` combines the data, model, loss, and optimizer. The loaders use the notebook process so the same code works in local and hosted sessions. """) @@ -369,20 +294,15 @@ def make_loader(dataset, batch_size, shuffle): @app.cell(hide_code=True) def _(): mo.md(r""" - Defining the model is normally the fun part! - - But nothing changes with `wandb`, - so we're gonna stick with a standard ConvNet architecture. - - Don't be afraid to mess around with this and try some experiments -- - all your results will be logged on [wandb.ai](https://wandb.ai)! + The ConvNet applies two convolution-and-pooling stages, then maps the flattened + features to ten digit scores. It returns logits for cross-entropy loss. + Change the channel sizes in `config["kernels"]` to compare model capacity + while keeping the dataset and training budget fixed. """) return @app.class_definition -# Conventional and convolutional neural network - class ConvNet(nn.Module): def __init__(self, kernels, classes=10): super(ConvNet, self).__init__() @@ -407,53 +327,37 @@ def forward(self, x): return out -@app.cell -def _(config): - model = ConvNet(config["kernels"], config["classes"]) - model - return (model,) - - @app.cell(hide_code=True) def _(): mo.md(r""" - ## Define Training Logic - """) - return - + ## Define the training loop -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Moving on in our `model_pipeline`, it's time to specify how we `train`. + For each batch, compute predictions and cross-entropy loss, clear the old + gradients, call `loss.backward()`, then update the weights with `optimizer.step()`. + The order matters because the optimizer uses the gradients from the backward pass. - Two `wandb` functions come into play here: `watch` and `log`. + `run.watch(..., log="all", log_freq=10)` records parameter and gradient + histograms. The loop logs loss every 25 batches and on the final batch, + using the number of examples seen as the logging step. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Step 3. Track gradients with `run.watch` and everything else with `run.log` - """) - return - +@app.function +def train_batch(images, labels, model, optimizer, criterion): + images, labels = images.to(device), labels.to(device) -@app.cell(hide_code=True) -def _(): - mo.md(r""" - `run.watch` will log the gradients and the parameters of your model, - every `log_freq` steps of training. + # Forward pass ➡ + outputs = model(images) + loss = criterion(outputs, labels) - All you need to do is call it before you start training. + # Backward pass ⬅ + optimizer.zero_grad() + loss.backward() - The rest of the training code remains the same: - we iterate over epochs and batches, - running forward and backward passes - and applying our `optimizer`. - """) - return + # Step with optimizer + optimizer.step() + return loss.item() @app.function @@ -474,74 +378,34 @@ def train(model, loader, criterion, optimizer, config, run): # Report metrics every 25th batch if batch_ct % 25 == 0 or batch_ct == total_batches: - train_log(loss, example_ct, epoch, run) + run.log({"epoch": epoch, "loss": loss}, step=example_ct) + print(f"Loss after {str(example_ct).zfill(5)} examples: {loss:.3f}") @app.cell(hide_code=True) def _(): mo.md(r""" - The only difference is in the logging code: - where previously you might have reported metrics by printing to the terminal, - now you pass the same information to `run.log`. - - `run.log` expects a dictionary with strings as keys. - These strings identify the objects being logged, which make up the values. - You can also optionally log which `step` of training you're on. - - > *Side Note*: I like to use the number of examples the model has seen, - since this makes for easier comparison across batch sizes, - but you can use raw steps or batch count. For longer training runs, it can also make sense to log by `epoch`. - """) - return + `run.log()` accepts a dictionary whose keys name the recorded metrics. + This example logs `loss` and `epoch`, with the number of examples seen passed + as `step`. Use a consistent step convention when comparing runs. + ## Evaluate and save the model -@app.function -def train_log(loss, example_ct, epoch, run): - # Where the magic happens - run.log({"epoch": epoch, "loss": loss}, step=example_ct) - print(f"Loss after {str(example_ct).zfill(5)} examples: {loss:.3f}") + The evaluation helper switches the model to evaluation mode, predicts the + held-out MNIST digits, and logs the fraction classified correctly as + `test_accuracy`. It then exports the trained network to ONNX and uploads + `model.onnx` with `run.save()`. - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Define Testing Logic - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - Once the model is done training, we want to test it: - run it against some fresh data from production, perhaps, - or apply it to some hand-curated "hard examples". - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Optional Step 4: Call `run.save` - - This is also a great time to save the model's architecture - and final parameters to disk. - For maximum compatibility, we'll `export` our model in the - [Open Neural Network eXchange (ONNX) format](https://onnx.ai/). - - Passing that filename to `run.save` ensures that the model parameters - are saved to W&B's servers: no more losing track of which `.h5` or `.pb` - corresponds to which training runs! - - For more advanced `wandb` features for storing, versioning, and distributing - models, check out our [Artifacts tools](https://www.wandb.com/artifacts). + If you repeatedly use this score to choose hyperparameters, that held-out + subset serves as validation data. Use a separate test set for a final estimate + of generalization. For versioned model collections and lineage, see the + [Weights & Biases Artifacts documentation](https://docs.wandb.ai/models/artifacts). """) return @app.function -def evaluate(model, test_loader, run, export_onnx=True): +def evaluate(model, test_loader, run): model.eval() # Run the model on some test examples @@ -558,197 +422,54 @@ def evaluate(model, test_loader, run, export_onnx=True): print(f"Accuracy of the model on the {total} test images: {test_accuracy:%}") run.log({"test_accuracy": test_accuracy}) - if export_onnx: - # Save the model in the exchangeable ONNX format - model_path = Path(run.dir) / "model.onnx" - # Use the classic exporter, which needs only the onnx dependency. - torch.onnx.export(model, images[:1], str(model_path), dynamo=False) - run.save(str(model_path), base_path=run.dir, policy="now") - - return test_accuracy - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Run training and watch your metrics live on wandb.ai! - """) - return + # Save the trained model alongside this run's metrics. + model_path = Path(run.dir) / "model.onnx" + torch.onnx.export(model, images[:1], str(model_path), dynamo=False) + run.save(str(model_path), base_path=run.dir, policy="now") @app.cell(hide_code=True) def _(): mo.md(r""" - Now that we've defined the whole pipeline and slipped in - those few lines of W&B code, - we're ready to run our fully-tracked experiment. - - We'll report a few links to you: - our documentation, - the Project page, which organizes all the runs in a project, and - the Run page, where this run's results will be stored. + ## Run training and inspect the logged results - Navigate to the Run page and check out these tabs: + Run the experiment cell after submitting the setup form. It builds a fresh + model, trains it, evaluates the held-out images, and uploads the ONNX file. - 1. **Charts**, where the model gradients, parameter values, and loss are logged throughout training - 2. **System**, which contains a variety of system metrics, including Disk I/O utilization, CPU and GPU metrics, and more - 3. **Logs**, which has a copy of anything pushed to standard out during training - 4. **Files**, where, if model saving is enabled and training is complete, you can click on the `model.onnx` to view our network with the [Netron model viewer](https://github.com/lutzroeder/netron). - - Once the run is finished - (i.e. the `with wandb.init` block is exited), - we'll also print a summary of the results in the cell output. + Open the run URL printed by Weights & Biases. Inspect the loss curve and the + parameter and gradient histograms, then check `test_accuracy` in the summary. + Under **Files**, find `model.onnx`. The configuration records the settings + used to create these results. """) return -@app.cell(hide_code=True) -def _(config, wandb_login_form): - _connection_submission = wandb_login_form.value - _entity = ( - _connection_submission["entity"].strip() - if _connection_submission is not None - else "" - ) - _entity_note = ( - f"Runs will use **{_entity or 'your default entity'}** after authentication." - ) - training_form = ( - mo.md( - "{project}\n\n{run_name}\n\n{epochs}\n\n{batch_size}\n\n{learning_rate}\n\n{seed}\n\n{export_onnx}" - ) - .batch( - project=mo.ui.text(value="pytorch-demo", label="W&B project"), - run_name=mo.ui.text(value="", label="Run name (blank auto-generates)"), - epochs=mo.ui.number( - start=1, stop=20, step=1, value=config["epochs"], label="Epochs" - ), - batch_size=mo.ui.dropdown( - options=[32, 64, 128, 256], - value=config["batch_size"], - label="Batch size", - ), - learning_rate=mo.ui.number( - start=0.0001, - stop=0.1, - step=0.0001, - value=config["learning_rate"], - label="Learning rate", - ), - seed=mo.ui.number( - start=0, - stop=2**32 - 1, - step=1, - value=config["seed"], - label="Random seed", - ), - export_onnx=mo.ui.checkbox(value=True, label="Save model.onnx to the run"), - ) - .form(submit_button_label="Train model and log to W&B", bordered=True) - ) - mo.vstack([mo.md(_entity_note), training_form]) - return (training_form,) - - -@app.cell(hide_code=True) -def _(config, training_form, wandb_settings): - mo.stop( - training_form.value is None, - mo.md( - "Submit **Train model and log to W&B** to download MNIST and create one training run." - ), - ) - _values = training_form.value - mo.stop( - not _values["project"].strip(), mo.md("Enter a W&B project and submit again.") - ) - training_config = dict( - config, - **{ - key: _values[key] - for key in ("epochs", "batch_size", "learning_rate", "seed") - }, - ) - training_settings = { - "project": _values["project"].strip(), - "entity": wandb_settings["entity"], - "name": _values["run_name"].strip() or None, - "export_onnx": _values["export_onnx"], - } - return training_config, training_settings - - @app.cell -def _(training_config, training_settings): - # Build, train and analyze the model with the pipeline - trained_model, training_result = model_pipeline(training_config, **training_settings) - return trained_model, training_result - - -@app.cell(hide_code=True) -def _(training_result): - _run_link = ( - f"[Open run {training_result['name']}]({training_result['url']})" - if training_result["url"] - else "The run completed offline; results are saved in the local wandb directory." - ) - mo.callout( - mo.md( - f"**Test accuracy:** {training_result['test_accuracy']:.2%}. {_run_link}" - ), - kind="success", - ) +def _(config, entity, project): + model_pipeline(config, entity, project) return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Test Hyperparameters with Sweeps - - We only looked at a single set of hyperparameters in this example. - But an important part of most ML workflows is iterating over - a number of hyperparameters. - - You can use Weights & Biases Sweeps to automate hyperparameter testing and explore the space of possible models and optimization strategies. - - ### [Check out Hyperparameter Optimization in PyTorch using W&B Sweeps $\rightarrow$](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/organizing-hyperparameter-sweeps-in-pytorch-with-w-b/organizing_hyperparameter_sweeps_in_pytorch_with_w_b.py/server) - - Running a hyperparameter sweep with Weights & Biases is very easy. There are just 3 simple steps: + ## Verify your experiment - 1. **Define the sweep:** We do this by creating a dictionary or a [YAML file](https://docs.wandb.ai/models/sweeps/sweep-config-keys) that specifies the parameters to search through, the search strategy, the optimization metric et all. + Open the run link printed by Weights & Biases. Check that its **Config** matches the + Python dictionary above, that the loss and gradient charts contain data, + and that `test_accuracy` appears in the run summary. Under **Files**, look + for `model.onnx`. - 2. **Initialize the sweep:** - `sweep_id = wandb.sweep(sweep_config)` - - 3. **Run the sweep agent:** - `wandb.agent(sweep_id, function=train)` - - And voila! That's all there is to running a hyperparameter sweep! - Weights & Biases - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Example Gallery - - See examples of projects tracked and visualized with W&B in our [Gallery →](https://app.wandb.ai/gallery) - """) - return + Change `learning_rate` or `batch_size` in `config`, then run the experiment + cell again. This creates a new run. Compare both runs in your selected project to see how the change affected loss and test accuracy. + ## Next steps: Test Hyperparameters with Sweeps -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Advanced Setup + We only looked at a single set of hyperparameters in this example. + But an important part of most ML workflows is iterating over + a number of hyperparameters. - 1. [Environment variables](https://docs.wandb.ai/models/track/environment-variables): Set API keys in environment variables so you can run training on a managed cluster. - 2. [Offline mode](https://docs.wandb.ai/models/track/run): Set `WANDB_MODE=offline` to train offline and sync results later. - 3. [On-prem](https://docs.wandb.ai/platform/hosting): Install W&B in a private cloud or air-gapped servers in your own infrastructure. We have local installations for everyone from academics to enterprise teams. - 4. [Sweeps](https://docs.wandb.ai/models/sweeps): Set up hyperparameter search quickly with our lightweight tool for tuning. + You can use [Weights & Biases Sweeps](https://docs.coreweave.com/products/wandb/sweeps) to automate hyperparameter testing and explore the space of possible models and optimization strategies. """) return @@ -758,33 +479,15 @@ def _(): mo.md(r""" ## Helper functions - ### Training and reproducibility helpers - - The forward pass, backward pass, and optimizer step are standard PyTorch. Resetting numeric seeds for every submitted experiment makes comparisons repeatable on the same device and software stack. + Resetting the random seeds before each experiment makes runs easier to + compare on the same device and software stack. """) return -@app.function -def train_batch(images, labels, model, optimizer, criterion): - images, labels = images.to(device), labels.to(device) - - # Forward pass ➡ - outputs = model(images) - loss = criterion(outputs, labels) - - # Backward pass ⬅ - optimizer.zero_grad() - loss.backward() - - # Step with optimizer - optimizer.step() - return loss.item() - - @app.function def seed_everything(seed): - # Ensure deterministic behavior + # Reset random number generators before each experiment. random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) diff --git a/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py b/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py index 90baf76b..b1f64f9e 100644 --- a/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py +++ b/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py @@ -9,351 +9,230 @@ # "peft==0.21.0", # "torch==2.6.0", # "transformers==5.17.0", -# "trl==1.13.0", # "wandb==0.30.0", # ] # /// import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="torchtune and W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="LoRA fine-tuning with Weights & Biases", +) - -@app.cell -def _(): - import os - import uuid +with app.setup: + import tempfile from pathlib import Path import marimo as mo import torch import wandb from datasets import load_dataset - from huggingface_hub import HfApi - from peft import LoraConfig, TaskType - from transformers import AutoModelForCausalLM, AutoTokenizer - from trl import SFTConfig, SFTTrainer - - return ( - AutoModelForCausalLM, - AutoTokenizer, - HfApi, - LoraConfig, - Path, - SFTConfig, - SFTTrainer, - TaskType, - load_dataset, - mo, - os, - torch, - uuid, - wandb, + from peft import LoraConfig, TaskType, get_peft_model + from transformers import ( + AutoModelForCausalLM, AutoTokenizer, DataCollatorForSeq2Seq, + Trainer, TrainingArguments, ) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py/server) + - This notebook uses the maintained Hugging Face training stack: - [Transformers](https://huggingface.co/docs/transformers), - [TRL](https://huggingface.co/docs/trl), and - [PEFT](https://huggingface.co/docs/peft). You will stream a conversational - dataset, train a compact LoRA adapter, and inspect the live metrics and saved - adapter in W&B. + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - The default model is the Apache-2.0 licensed - [`HuggingFaceTB/SmolLM2-135M-Instruct`](https://huggingface.co/HuggingFaceTB/SmolLM2-135M-Instruct), - whose model weights are roughly 269 MB. - """) - return + # Fine-tune SmolLM2 with LoRA and Weights & Biases + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/torchtune-and-wandb/torchtune_and_wandb.py/server) -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Prerequisites + This lesson uses [Transformers](https://huggingface.co/docs/transformers) and + [PEFT](https://huggingface.co/docs/peft) to fine-tune a small language model + with LoRA. You will track the experiment in Weights & Biases, inspect training metrics, + and save the trained adapter as a model Artifact. - Storage use is deliberately bounded: the dataset is streamed instead of fully - cached, the base model is much smaller than the former 7B checkpoint, and PEFT - saves only the trained LoRA adapter. Opening the notebook does not download a - model, start training, or create a W&B run. + The public model `HuggingFaceTB/SmolLM2-135M-Instruct` has 135 million + parameters. We stream a small sample of conversational data and train for + ten steps to demonstrate the integration. This is a short workflow example, + not an evaluation of model quality. + + The default model and dataset are public. For a private or gated repository, configure `HF_TOKEN` as well. """) return @app.cell(hide_code=True) -def _(torch): - _cuda_available = torch.cuda.is_available() - _mps_available = ( - torch.backends.mps.is_built() and torch.backends.mps.is_available() - ) - - if _cuda_available: - training_device = "cuda" - model_dtype = ( - torch.bfloat16 - if torch.cuda.is_bf16_supported() - else torch.float16 - ) - elif _mps_available: - training_device = "mps" - model_dtype = torch.float32 - else: - training_device = "cpu" - model_dtype = torch.float32 - return model_dtype, training_device +def _(): + mo.md(r""" + ## Authenticate with Weights & Biases + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Authentication and remote storage + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to use - `WANDB_API_KEY` from molab Secrets or existing credentials. The entity is the - team name in `wandb.ai//`. + ## Set your team and project - The default Hugging Face model and dataset are public, so the Hugging Face token - is optional. Creating the `HfApi` client also makes the Hub available in - marimo's **Files → Remote Storage** panel. The client is read-only in this - notebook. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `smollm2-lora`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) -def _(mo): - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}\n\n{hf_token}") - .batch( - api_key=mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ), - entity=mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ), - project=mo.ui.text( - value="smollm2-lora", - label="W&B project", - full_width=True, - ), - hf_token=mo.ui.text( - kind="password", - label="Hugging Face token (optional)", - placeholder="Only needed for private or gated repositories", - full_width=True, - ), - ) - .form(submit_button_label="Connect", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="smollm2-lora", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(HfApi, mo, wandb, wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the authentication form to continue."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted_login = wandb_login_form.value - _api_key = _submitted_login["api_key"].strip() - _requested_entity = _submitted_login["entity"].strip() - _project = _submitted_login["project"].strip() or "smollm2-lora" - _hf_token = _submitted_login["hf_token"].strip() try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _resolved_entity = _requested_entity or wandb.Api().default_entity - _login_error = None - except (wandb.errors.Error, ValueError) as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _resolved_entity = None - _login_error = str(_error) mo.stop( - not _login_ok or not _resolved_entity, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - "entity, then submit again.\n\n" - f"W&B reported: `{_login_error or 'No default entity was found.'}`" - ), - kind="danger", - ), + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "api_key": _api_key, - "entity": _resolved_entity, - "project": _project, - } - hf_settings = {"token": _hf_token} - hf = HfApi(token=_hf_token or None) - mo.callout( - mo.md( - f"Connected to W&B. Training will target " - f"`{_resolved_entity}/{_project}`." - ), - kind="success", - ) - return hf, hf_settings, wandb_settings + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) -def _(hf, mo): - _hf_endpoint = hf.endpoint - mo.md(f""" - ## Choose the training job - - The public `hf` client connected to `{_hf_endpoint}` lets you browse model and - dataset repositories in marimo's Remote Storage panel. PyTorch still needs - model tensors locally while training, so the notebook minimizes that footprint - by using a 135M-parameter model. The Capybara dataset is loaded with - `streaming=True`, which avoids a full dataset download and Arrow cache. - - Submitting the form below is the only action that downloads the model, creates - a W&B run, or starts training. +def _(): + mo.md(r""" + ## Choose the Device and Training Settings + + The next cell selects CUDA, Apple MPS, or CPU and sets a suitable model + dtype. CUDA uses bfloat16 when supported and float16 otherwise. MPS and CPU + use float32. + + Edit the model, dataset, sample count, and step limit here. A small batch size + and a 256-token limit keep this demo modest. A GPU is faster, but the default + model can also train on CPU. Each execution saves to a new folder under + `output_root` so artifacts contain only that experiment's files. """) return -@app.cell(hide_code=True) -def _(mo): - lora_training_form = ( - mo.md( - "{model_id}\n\n{dataset_id}\n\n{sample_count}\n\n" - "{max_steps}\n\n{run_name}\n\n{output_dir}" - ) - .batch( - model_id=mo.ui.text( - value="HuggingFaceTB/SmolLM2-135M-Instruct", - label="Hugging Face model", - full_width=True, - ), - dataset_id=mo.ui.text( - value="trl-lib/Capybara", - label="Streaming dataset", - full_width=True, - ), - sample_count=mo.ui.number( - start=32, - stop=2000, - step=32, - value=128, - label="Training examples", - ), - max_steps=mo.ui.number( - start=1, - stop=200, - step=1, - value=10, - label="Maximum training steps", - ), - run_name=mo.ui.text( - value="smollm2-lora-demo", - label="W&B run name", - full_width=True, - ), - output_dir=mo.ui.text( - value="/tmp/smollm2-lora-wandb", - label="Adapter output directory", - full_width=True, - ), - ) - .form(submit_button_label="Fine-tune with W&B", bordered=True) +@app.cell +def _(): + if torch.cuda.is_available(): + training_device = "cuda" + model_dtype = torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16 + elif torch.backends.mps.is_built() and torch.backends.mps.is_available(): + training_device = "mps" + model_dtype = torch.float32 + else: + training_device = "cpu" + model_dtype = torch.float32 + + model_id = "HuggingFaceTB/SmolLM2-135M-Instruct" + dataset_id = "trl-lib/Capybara" + sample_count = 128 + max_steps = 10 + batch_size = 2 if training_device == "cuda" else 1 + learning_rate = 2e-4 + max_length = 256 + run_name = "smollm2-lora-demo" + cache_dir = "/tmp/huggingface" + output_root = Path("/tmp/smollm2-lora-wandb") + print(f"Training device: {training_device}; dtype: {model_dtype}") + return ( + batch_size, + cache_dir, + dataset_id, + learning_rate, + max_length, + max_steps, + model_dtype, + model_id, + output_root, + run_name, + sample_count, + training_device, ) - lora_training_form - return (lora_training_form,) -@app.cell -def _(Path, lora_training_form, mo, model_dtype, training_device, uuid): - mo.stop( - lora_training_form.value is None, - mo.callout( - mo.md( - "Review the settings, then click **Fine-tune with W&B** to start." - ), - kind="info", - ), - ) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Stream Conversational Training Data - _values = lora_training_form.value - _model_id = _values["model_id"].strip() - _dataset_id = _values["dataset_id"].strip() - _output_dir = _values["output_dir"].strip() - mo.stop( - not _model_id or not _dataset_id or not _output_dir, - mo.callout( - mo.md("Provide a model, dataset, and adapter output directory."), - kind="warn", - ), - ) + The next cell loads `trl-lib/Capybara` with `streaming=True`, shuffles + with a fixed seed, and takes a small sample. Streaming avoids downloading + and caching the entire dataset. Examples contain conversations that + we format with the model's chat template before training. - _batch_size = 2 if training_device == "cuda" else 1 - _max_steps = int(_values["max_steps"]) - _sample_count = int(_values["sample_count"]) - mo.stop( - _sample_count < _max_steps * _batch_size, - mo.callout( - mo.md("Choose at least one streamed example per training batch."), - kind="warn", - ), - ) + Because this dataset is iterable, we set `max_steps` explicitly in the + training configuration rather than relying on a known dataset length. + """) + return - lora_training_request = { - "batch_size": _batch_size, - "cache_dir": "/tmp/huggingface", - "dataset_id": _dataset_id, - "device": training_device, - "dtype": model_dtype, - "max_steps": _max_steps, - "model_id": _model_id, - "output_dir": str(Path(_output_dir).expanduser()), - "run_id": uuid.uuid4().hex, - "run_name": _values["run_name"].strip() or "smollm2-lora-demo", - "sample_count": _sample_count, - } - return (lora_training_request,) + +@app.cell +def _(cache_dir, dataset_id, sample_count): + train_dataset = load_dataset( + dataset_id, + split="train", + streaming=True, + cache_dir=cache_dir, + ) + train_dataset = train_dataset.shuffle(seed=42, buffer_size=1000).take(sample_count) + return (train_dataset,) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Configure LoRA and W&B logging + ## Configure LoRA - LoRA freezes the base model and adds small trainable matrices to selected - attention projections. TRL's `SFTTrainer` accepts this PEFT configuration and - reports metrics through the standard Transformers W&B integration. + The next cell creates a PEFT configuration for the model's attention + projections. LoRA freezes the base weights and trains small added matrices. - Only the adapter is saved and uploaded as a W&B Artifact; the 269 MB base model - is not duplicated in the output directory. + `r` controls their rank, `lora_alpha` controls their scaling, and + `lora_dropout` applies dropout on the adapter path. We pass this + configuration to `get_peft_model`, which constructs the trainable adapter. + The parameter counts logged later show how much of the model is trainable. """) return -@app.cell(hide_code=True) -def _(LoraConfig, TaskType, lora_training_request, mo, wandb_settings): +@app.cell +def _(): lora_config = LoraConfig( task_type=TaskType.CAUSAL_LM, target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], @@ -361,209 +240,180 @@ def _(LoraConfig, TaskType, lora_training_request, mo, wandb_settings): lora_alpha=16, lora_dropout=0.05, ) - - mo.md( - f"**Model:** `{lora_training_request['model_id']}` \n" - f"**Dataset:** `{lora_training_request['dataset_id']}` (streamed) \n" - f"**Steps:** `{lora_training_request['max_steps']}` \n" - f"**W&B target:** `{wandb_settings['entity']}/{wandb_settings['project']}`" - ) return (lora_config,) @app.cell(hide_code=True) -def _(Path, lora_training_request, wandb, wandb_settings): - _request = lora_training_request - _wandb_dir = Path("/tmp/wandb") - _hf_cache_dir = Path(_request["cache_dir"]) - _wandb_dir.mkdir(parents=True, exist_ok=True) - _hf_cache_dir.mkdir(parents=True, exist_ok=True) - - lora_run_environment = { - "WANDB_ENTITY": wandb_settings["entity"], - "WANDB_PROJECT": wandb_settings["project"], - "WANDB_RUN_ID": _request["run_id"], - "WANDB_NAME": _request["run_name"], - "WANDB_DIR": str(_wandb_dir), - "HF_HOME": str(_hf_cache_dir), - } - if wandb_settings["api_key"]: - lora_run_environment["WANDB_API_KEY"] = wandb_settings["api_key"] - - lora_run_url = wandb.Settings( - entity=wandb_settings["entity"], - project=wandb_settings["project"], - run_id=_request["run_id"], - ).run_url - return lora_run_environment, lora_run_url - - -@app.cell(hide_code=True) -def _(lora_run_url, mo): - mo.callout( - mo.md( - f"[Open the live training run in W&B]({lora_run_url}) while the " - "training cell runs." - ), - kind="info", - ) +def _(): + mo.md(r""" + ## Fine-tune and Track the Experiment + + The next cell loads a fresh model and tokenizer, then starts + `fine_tuning_run` with `wandb.init()`. The run configuration records the + dataset, training settings, and LoRA hyperparameters for comparison later. + + In `TrainingArguments`, `report_to="wandb"` enables the Transformers Weights & Biases + integration. `logging_steps=1` reports metrics at every training step. + The trainer uses the active Weights & Biases run, so its metrics and our model Artifact + belong to the same experiment. + + We use the standard Transformers `Trainer` so training does not require + TRL's fused Triton loss kernels. Each conversation is tokenized with the + chat template and truncated to `max_length`. The model learns to predict + the next token throughout the conversation; padding is excluded from the loss. + + After training, `trainer.save_model()` saves the PEFT adapter and + `tokenizer.save_pretrained()` saves the tokenizer. We add that directory + to a `wandb.Artifact(type="model")` and upload it with + `fine_tuning_run.log_artifact()`. The saved files contain the adapter rather + than a full copy of the base model. The Artifact metadata identifies the + base model needed to load the adapter. + + Finally, we add the trainable parameter count and percentage to + `fine_tuning_run.summary`. The context manager finishes the run once + training and artifact logging complete. + """) return @app.cell def _( - AutoModelForCausalLM, - AutoTokenizer, - SFTConfig, - SFTTrainer, - hf_settings, - load_dataset, + batch_size, + cache_dir, + dataset_id, + entity, + learning_rate, lora_config, - lora_run_environment, - lora_training_request, - os, - torch, - wandb, - wandb_settings, + max_length, + max_steps, + model_dtype, + model_id, + output_root, + project, + run_name, + sample_count, + train_dataset, + training_device, ): - _request = lora_training_request - _hf_token = hf_settings["token"] or None - _previous_environment = { - _key: os.environ.get(_key) for _key in lora_run_environment - } - os.environ.update(lora_run_environment) - - try: - _dataset = load_dataset( - _request["dataset_id"], - split="train", - streaming=True, - token=_hf_token, - cache_dir=_request["cache_dir"], - ) - _dataset = _dataset.shuffle(seed=42, buffer_size=1000).take( - _request["sample_count"] + tokenizer = AutoTokenizer.from_pretrained(model_id, cache_dir=cache_dir) + if tokenizer.pad_token is None: + tokenizer.pad_token = tokenizer.eos_token + + model = AutoModelForCausalLM.from_pretrained( + model_id, + dtype=model_dtype, + cache_dir=cache_dir, + ) + model.config.use_cache = False + model = get_peft_model(model, lora_config) + + def _tokenize_conversation(example): + encoded = tokenizer.apply_chat_template( + example["messages"], + tokenize=True, + add_generation_prompt=False, + truncation=True, + max_length=max_length, + return_dict=True, ) + encoded["labels"] = encoded["input_ids"].copy() + return encoded + + tokenized_dataset = train_dataset.map(_tokenize_conversation) + # Pad labels with -100, preserving real EOS tokens even when EOS is also PAD. + data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer, label_pad_token_id=-100) + + output_root.mkdir(parents=True, exist_ok=True) + adapter_output_dir = tempfile.mkdtemp(prefix="run-", dir=output_root) + training_args = TrainingArguments( + output_dir=adapter_output_dir, + max_steps=max_steps, + per_device_train_batch_size=batch_size, + gradient_accumulation_steps=1, + learning_rate=learning_rate, + logging_steps=1, + save_strategy="no", + report_to="wandb", + run_name=run_name, + bf16=training_device == "cuda" and model_dtype == torch.bfloat16, + fp16=training_device == "cuda" and model_dtype == torch.float16, + optim="adamw_torch", + dataloader_pin_memory=training_device == "cuda", + use_cpu=training_device == "cpu", + seed=42, + ) - _tokenizer = AutoTokenizer.from_pretrained( - _request["model_id"], - token=_hf_token, - cache_dir=_request["cache_dir"], - ) - if _tokenizer.pad_token is None: - _tokenizer.pad_token = _tokenizer.eos_token - - _model = AutoModelForCausalLM.from_pretrained( - _request["model_id"], - dtype=_request["dtype"], - token=_hf_token, - cache_dir=_request["cache_dir"], + with wandb.init( + entity=entity, + project=project, + name=run_name, + config={ + "model_id": model_id, + "dataset_id": dataset_id, + "sample_count": sample_count, + "max_steps": max_steps, + "batch_size": batch_size, + "learning_rate": learning_rate, + "max_length": max_length, + "device": training_device, + "lora_r": lora_config.r, + "lora_alpha": lora_config.lora_alpha, + "lora_dropout": lora_config.lora_dropout, + }, + ) as fine_tuning_run: + trainer = Trainer( + model=model, + args=training_args, + train_dataset=tokenized_dataset, + processing_class=tokenizer, + data_collator=data_collator, ) - _model.config.use_cache = False - - _training_args = SFTConfig( - output_dir=_request["output_dir"], - max_steps=_request["max_steps"], - per_device_train_batch_size=_request["batch_size"], - gradient_accumulation_steps=1, - learning_rate=2e-4, - logging_steps=1, - save_strategy="no", - report_to="wandb", - run_name=_request["run_name"], - max_length=256, - packing=False, - bf16=( - _request["device"] == "cuda" - and _request["dtype"] == torch.bfloat16 - ), - fp16=( - _request["device"] == "cuda" - and _request["dtype"] == torch.float16 - ), - optim="adamw_torch", - dataloader_pin_memory=_request["device"] == "cuda", - use_cpu=_request["device"] == "cpu", - seed=42, - ) - - with wandb.init( - entity=wandb_settings["entity"], - project=wandb_settings["project"], - id=_request["run_id"], - name=_request["run_name"], - config={ - "model_id": _request["model_id"], - "dataset_id": _request["dataset_id"], - "sample_count": _request["sample_count"], - "max_steps": _request["max_steps"], - "device": _request["device"], - "lora_r": lora_config.r, - "lora_alpha": lora_config.lora_alpha, - "lora_dropout": lora_config.lora_dropout, + trainable_parameters, total_parameters = trainer.model.get_nb_trainable_parameters() + training_result = trainer.train() + trainer.save_model(adapter_output_dir) + tokenizer.save_pretrained(adapter_output_dir) + + adapter_artifact = wandb.Artifact( + name=f"{fine_tuning_run.id}-lora-adapter", + type="model", + metadata={ + "base_model": model_id, + "dataset": dataset_id, + "trainable_parameters": trainable_parameters, + "total_parameters": total_parameters, }, - ) as _run: - _trainer = SFTTrainer( - model=_model, - args=_training_args, - train_dataset=_dataset, - processing_class=_tokenizer, - peft_config=lora_config, - ) - _trainable_parameters, _total_parameters = ( - _trainer.model.get_nb_trainable_parameters() - ) - _result = _trainer.train() - _trainer.save_model(_request["output_dir"]) - _tokenizer.save_pretrained(_request["output_dir"]) - - _artifact = wandb.Artifact( - name=f"{_run.id}-lora-adapter", - type="model", - metadata={ - "base_model": _request["model_id"], - "dataset": _request["dataset_id"], - "trainable_parameters": _trainable_parameters, - "total_parameters": _total_parameters, - }, - ) - _artifact.add_dir(_request["output_dir"]) - _run.log_artifact(_artifact) - _run.summary["trainable_parameters"] = _trainable_parameters - _run.summary["trainable_percent"] = ( - 100 * _trainable_parameters / _total_parameters - ) - _run.summary["adapter_output_dir"] = _request["output_dir"] - - lora_training_summary = { - "adapter_artifact": _artifact.name, - "output_dir": _request["output_dir"], - "run_url": _run.url, - "train_loss": _result.metrics.get("train_loss"), - "trainable_parameters": _trainable_parameters, - "total_parameters": _total_parameters, - } - finally: - for _key, _previous_value in _previous_environment.items(): - if _previous_value is None: - os.environ.pop(_key, None) - else: - os.environ[_key] = _previous_value - return (lora_training_summary,) + ) + adapter_artifact.add_dir(adapter_output_dir) + fine_tuning_run.log_artifact(adapter_artifact) + + fine_tuning_run.summary["trainable_parameters"] = trainable_parameters + fine_tuning_run.summary["trainable_percent"] = 100 * trainable_parameters / total_parameters + fine_tuning_run.summary["adapter_output_dir"] = adapter_output_dir + run_url = fine_tuning_run.url + + print(f"Training loss: {training_result.metrics.get('train_loss')}") + print(f"Trainable parameters: {trainable_parameters:,} / {total_parameters:,}") + print(f"Adapter saved to: {adapter_output_dir}") + print(f"View the Weights & Biases run: {run_url}") + return @app.cell(hide_code=True) -def _(lora_training_summary, mo): - mo.callout( - mo.md( - "Fine-tuning finished. Open the " - f"[W&B run]({lora_training_summary['run_url']}) to inspect the loss " - "and system metrics, then open the model Artifact to find the LoRA " - f"adapter. The local adapter is in " - f"`{lora_training_summary['output_dir']}`." - ), - kind="success", - ) +def _(): + mo.md(r""" + ## Inspect Metrics and the Saved Adapter + + Open your Weights & Biases run to inspect training loss, learning rate, + and system metrics. The configuration records the settings you chose, and + the run summary includes the percentage of trainable parameters. + + In **Artifacts**, open the logged model Artifact to browse the adapter + weights, tokenizer files, and base-model metadata. To use the adapter later, load it alongside the base model named in its metadata. + + Try changing the learning rate or LoRA rank, rerun the training cell, and + compare the experiments in your Weights & Biases project. The ten-step demo exercises the logging workflow. Assess model quality + with a suitable training budget and held-out evaluation data. + """) return diff --git a/marimo/convert/train-and-debug-yolov5-models-with-weights-biases/train_and_debug_yolov5_models_with_weights_biases.py b/marimo/convert/train-and-debug-yolov5-models-with-weights-biases/train_and_debug_yolov5_models_with_weights_biases.py index 71dd0636..9fc9babe 100644 --- a/marimo/convert/train-and-debug-yolov5-models-with-weights-biases/train_and_debug_yolov5_models_with_weights_biases.py +++ b/marimo/convert/train-and-debug-yolov5-models-with-weights-biases/train_and_debug_yolov5_models_with_weights_biases.py @@ -11,9 +11,12 @@ # "ultralytics>=8.4.149,<8.5", # "wandb>=0.18,<0.29", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// -"""Train a current Ultralytics YOLO model while tracking it with W&B. +"""Train a current Ultralytics YOLO model while tracking it with Weights & Biases. Run: @@ -22,17 +25,14 @@ import marimo -__generated_with = "0.24.2" +__generated_with = "0.25.1" app = marimo.App( width="medium", app_title="Train and Debug Ultralytics YOLO Models with Weights & Biases", ) - -@app.cell -def _(): +with app.setup: import io - import tempfile import zipfile from pathlib import Path from urllib.request import urlopen @@ -41,498 +41,336 @@ def _(): import torch import wandb import yaml + from PIL import Image from ultralytics import YOLO, settings as yolo_settings from ultralytics.utils import ASSETS as yolo_assets - return ( - Path, - YOLO, - io, - mo, - tempfile, - torch, - urlopen, - wandb, - yaml, - yolo_assets, - yolo_settings, - zipfile, - ) + if torch.cuda.is_available(): + device = 0 + elif torch.backends.mps.is_available(): + device = "mps" + else: + device = "cpu" + + # Avoid the observed YOLO26 loss-indexing failure on Apple's MPS backend. + training_device = 0 if torch.cuda.is_available() else "cpu" @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" + + + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/train-and-debug-yolov5-models-with-weights-biases/train_and_debug_yolov5_models_with_weights_biases.py/server) # Train and Debug Ultralytics YOLO Models with Weights & Biases - This notebook fine-tunes the current **Ultralytics YOLO26** model on a - chess-piece dataset and tracks the experiment with Weights & Biases. - You will: - - 1. run pretrained object detection, - 2. version a custom dataset with a W&B Artifact, - 3. fine-tune YOLO26 with the built-in W&B callback, and - 4. inspect metrics, diagnostic plots, and the best-model Artifact. + In this lesson, you will use a pretrained object detector, fine-tune it to + recognize chess pieces, and use Weights & Biases to inspect its training metrics, + predictions, dataset, and model checkpoint. - The notebook uses the maintained [`ultralytics`](https://pypi.org/project/ultralytics/) - package and its [W&B integration](https://docs.ultralytics.com/integrations/weights-biases/). + The original Colab used YOLOv5. This version uses **YOLO26** through the + maintained [`ultralytics`](https://docs.ultralytics.com/) package and its + [Weights & Biases integration](https://docs.ultralytics.com/integrations/weights-biases/). + The lesson still covers object detection and experiment tracking, using + the Python API in place of the original command-line scripts. - Opening the notebook does not create a W&B run or upload anything. Those - actions begin only after you submit the training form. + Open the notebook in the marimo editor and submit the setup form before + running the training example. The prediction and data-preparation cells + download their inputs when executed. Review the settings before running + training. After changing a setting, rerun the dependent cells. """) return @app.cell(hide_code=True) -def _(torch): - if torch.cuda.is_available(): - training_device = 0 - elif torch.backends.mps.is_available(): - training_device = "mps" - else: - training_device = "cpu" +def _(): + mo.md(r""" + ## Authenticate with Weights & Biases - return (training_device,) + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Prepare the data + ## Set your team and project - The tutorial uses a small public dataset whose images and labels already - follow Ultralytics' YOLO format. The download is gated so opening the - notebook does not write files. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `yolo-wandb-demo`. Then select **Connect to Weights & Biases**. """) return -@app.cell -def _(Path, io, tempfile, urlopen, yaml, zipfile): - def download_chess_dataset(): - """Download and validate the public chess-piece dataset.""" - workspace_path = Path(tempfile.mkdtemp(prefix="wandb-yolo26-")) - dataset_url = "https://public.roboflow.com/ds/1BpjFZe9ST?key=KXD7eDvwTa" - - with urlopen(dataset_url, timeout=120) as dataset_response: - with zipfile.ZipFile(io.BytesIO(dataset_response.read())) as archive: - for member in archive.infolist(): - member_path = (workspace_path / member.filename).resolve() - if ( - workspace_path.resolve() != member_path - and workspace_path.resolve() not in member_path.parents - ): - raise ValueError( - f"Unsafe path in dataset archive: {member.filename}" - ) - archive.extractall(workspace_path) - - data_yaml_path = workspace_path / "data.yaml" - if not data_yaml_path.exists(): - raise FileNotFoundError("The downloaded dataset did not contain data.yaml") - - dataset_config = yaml.safe_load(data_yaml_path.read_text()) - dataset_config.update( - { - "path": str(workspace_path), - "train": "train/images", - "val": "valid/images", - } - ) - data_yaml_path.write_text(yaml.safe_dump(dataset_config, sort_keys=False)) - return workspace_path, data_yaml_path - - return (download_chess_dataset,) +@app.cell(hide_code=True) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="yolo-wandb-demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(mo): - prepare_data_button = mo.ui.run_button( - label="Download the chess dataset", - kind="success", - tooltip="Downloads public files into a temporary workspace", +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() + mo.stop( + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - prepare_data_button - return (prepare_data_button,) + try: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): + _login_ok = False -@app.cell(hide_code=True) -def _(download_chess_dataset, mo, prepare_data_button): mo.stop( - not prepare_data_button.value, - mo.callout( - mo.md("Click the download button when you are ready."), - kind="info", - ), + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - dataset_root, data_yaml_path = download_chess_dataset() - mo.callout( - mo.md(f"The chess dataset is ready at `{dataset_root}`."), - kind="success", - ) - return data_yaml_path, dataset_root + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell +def _(): + run_name = "chess-yolo26n" + config = { + "model": "yolo26n.pt", + "epochs": 3, + "imgsz": 640, + "batch": 16, + } + yolo_settings.update({"wandb": True}) + return config, run_name @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" ## Detect objects with a pretrained model - YOLO26 is pretrained on the COCO dataset. Before fine-tuning, run it on a - sample street image to see the base model's predictions. This step downloads - the small `yolo26n.pt` checkpoint but does not contact W&B. + YOLO26 is pretrained on the COCO dataset, which includes objects such as + people, buses, and stop signs. If your application needs those classes, a + pretrained model may already be useful without additional training. + + Run the detector on a sample street image. This downloads the small + `yolo26n.pt` checkpoint. `conf=0.25` filters out predictions whose confidence + is below 0.25. The image shows the remaining boxes, labels, and scores. """) return -@app.cell(hide_code=True) -def _(mo): - run_detection_button = mo.ui.run_button( - label="Run pretrained YOLO26 detection", - kind="success", - ) - run_detection_button - return (run_detection_button,) - - @app.cell -def _(YOLO, mo, run_detection_button, training_device, yolo_assets): - mo.stop( - not run_detection_button.value, - mo.callout( - mo.md("Click the detection button above to run inference."), - kind="info", - ), - ) - - _prediction_model = YOLO("yolo26n.pt") - _prediction = _prediction_model.predict( +def _(config): + pretrained_model = YOLO(config["model"]) + prediction = pretrained_model.predict( source=str(yolo_assets / "bus.jpg"), - imgsz=640, + imgsz=config["imgsz"], conf=0.25, - device=training_device, + device=device, save=False, - verbose=False, )[0] - _detection_rows = _prediction.summary() - _annotated_image = _prediction.plot()[:, :, ::-1] - - mo.vstack( - [ - mo.image( - _annotated_image, - width=600, - ), - mo.ui.table(_detection_rows, label="Detections"), - ] - ) + # Ultralytics plots use BGR; PIL expects RGB. + Image.fromarray(prediction.plot()[:, :, ::-1]) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Connect to Weights & Biases - - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your - team or entity. Leave the key blank to use `WANDB_API_KEY` from molab's - Secrets panel or credentials already configured in the runtime. - - Submitting this form authenticates the SDK. It does not create a run. + ## Prepare the chess-piece dataset + + Chess pieces are not among the COCO classes. To recognize them, we will + fine-tune the pretrained detector on + [chessboard images with labeled bounding boxes](https://public.roboflow.com/object-detection/chess-full). + Starting from pretrained weights lets us reuse features the model has + already learned. + + The download contains images, YOLO-format text labels, and `data.yaml`. + The YAML file tells the trainer where the training and validation images + are and how class IDs map to names. The helper at the end downloads the + dataset into `data/chess` and fixes its paths for this runtime. """) return -@app.cell(hide_code=True) -def _(mo): - _api_key_input = mo.ui.text( - value="", - kind="password", - label="W&B API key (blank uses runtime credentials)", - full_width=True, - ) - _entity_input = mo.ui.text( - value="", - label="W&B entity or team (blank uses your default)", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) +@app.cell +def _(): + dataset_root, data_yaml_path = download_chess_dataset() + print(data_yaml_path.read_text()) + return data_yaml_path, dataset_root @app.cell(hide_code=True) -def _(mo, wandb, wandb_login_form): - mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Submit the authentication form to continue."), - kind="info", - ), - ) - - _submitted_login = wandb_login_form.value - _api_key = _submitted_login["api_key"].strip() - _requested_entity = _submitted_login["entity"].strip() - try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _resolved_entity = _requested_entity or wandb.Api().default_entity - _login_error = None - except wandb.errors.Error as _error: - _login_ok = False - _resolved_entity = None - _login_error = str(_error) - - mo.stop( - not _login_ok or not _resolved_entity, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - "entity, then submit again.\n\n" - f"W&B reported: `{_login_error or 'No default entity was found.'}`" - ), - kind="danger", - ), - ) - - wandb_settings = {"entity": _resolved_entity} - mo.callout( - mo.md(f"Connected to W&B as entity `{_resolved_entity}`."), - kind="success", - ) - return (wandb_settings,) +def _(): + mo.md(r""" + ## Fine-tune the detector and track the experiment + Weights & Biases helps connect a model's behavior to the data and settings that produced + it. In the next cell: -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## Fine-tune YOLO26 and track the run + 1. `wandb.init` starts a run and records our configuration. + 2. `wandb.Artifact` and `run.log_artifact` version the dataset used by this run. + 3. `YOLO.train` fine-tunes the model. The built-in Weights & Biases integration logs + losses, validation metrics, prediction images, and diagnostic plots. + With `save=True`, it also logs the best checkpoint as a model Artifact. - The current Ultralytics integration automatically logs training and - validation metrics, diagnostic images, performance curves, system metrics, - and the best checkpoint as a model Artifact. + The run is closed when training completes or raises an error. Its link + appears in the cell output while training is underway. - Dataset versioning is explicit below: the notebook creates a W&B dataset - Artifact with `wandb.Artifact` and `run.log_artifact` before training. - This keeps the W&B workflow visible and reusable with other training - libraries. + The default three epochs demonstrate the workflow. A GPU can reduce training + time for longer runs. Training uses CUDA when available and otherwise CPU, + including on Macs, to avoid an observed MPS error during loss computation. + CPU training can take longer. Local training + outputs are stored under `runs/chess`, outside the versioned dataset. """) return -@app.cell(hide_code=True) -def _(dataset_root, mo, wandb_settings): - _project_input = mo.ui.text( - value="yolo-wandb-demo", - label="W&B project", - full_width=True, - ) - _run_name_input = mo.ui.text( - value="chess-yolo26n", - label="W&B run name", - full_width=True, - ) - _epochs_input = mo.ui.number( - start=1, - stop=20, - value=3, - step=1, - label="Training epochs", - ) - yolo_training_form = ( - mo.md("{project}\n\n{run_name}\n\n{epochs}") - .batch( - project=_project_input, - run_name=_run_name_input, - epochs=_epochs_input, - ) - .form( - submit_button_label="Train YOLO26 and log to W&B", - bordered=True, - ) - ) - mo.vstack( - [ - mo.md( - f"The dataset is ready at `{dataset_root}`. The run will be " - f"logged under entity `{wandb_settings['entity']}`." - ), - yolo_training_form, - ] - ) - return (yolo_training_form,) - - @app.cell -def _( - data_yaml_path, - dataset_root, - mo, - training_device, - wandb, - wandb_settings, - yolo_training_form, -): - mo.stop( - yolo_training_form.value is None, - mo.callout( - mo.md( - "Review the settings, then submit the form when you are ready " - "to create a W&B run and upload the dataset Artifact." - ), - kind="info", - ), - ) - - _submitted_training = yolo_training_form.value - _project = _submitted_training["project"].strip() or "yolo-wandb-demo" - _run_name = _submitted_training["run_name"].strip() or "chess-yolo26n" - _epochs = int(_submitted_training["epochs"]) - - if wandb.run is not None: - wandb.finish() - - _run = wandb.init( - entity=wandb_settings["entity"], - project=_project, - name=_run_name, +def _(config, data_yaml_path, dataset_root, entity, project, run_name): + with wandb.init( + entity=entity, + project=project, + name=run_name, job_type="training", - config={ - "model": "yolo26n.pt", - "dataset": "chess-pieces", - "epochs": _epochs, - "device": str(training_device), - }, - ) - training_run_url = _run.url - - _artifact_name = f"{_project}-chess-dataset".replace("/", "-").replace( - " ", "-" - ) - _dataset_artifact = wandb.Artifact( - name=_artifact_name, - type="dataset", - description="Chess-piece object-detection dataset in YOLO format", - metadata={"data_yaml": data_yaml_path.name}, - ) - _dataset_artifact.add_dir(str(dataset_root)) - _run.log_artifact(_dataset_artifact, aliases=["latest"]) - - yolo_training_request = { - "epochs": _epochs, - "run_name": _run_name, - "local_project_dir": str(dataset_root / "runs"), - } - return training_run_url, yolo_training_request - - -@app.cell(hide_code=True) -def _(mo, training_run_url): - mo.callout( - mo.md( - f"[Open the live W&B run]({training_run_url}) while YOLO26 trains." - ), - kind="info", - ) - training_run_link_ready = True - return (training_run_link_ready,) - + config=config, + ) as run: + dataset_artifact = wandb.Artifact( + name="chess-pieces", + type="dataset", + description="Chess-piece images and YOLO bounding-box labels", + ) + dataset_artifact.add_dir(str(dataset_root)) + run.log_artifact(dataset_artifact, aliases=["latest"]) -@app.cell -def _( - Path, - YOLO, - data_yaml_path, - training_device, - training_run_link_ready, - wandb, - yolo_settings, - yolo_training_request, -): - assert training_run_link_ready - _original_wandb_setting = yolo_settings["wandb"] - yolo_settings.update({"wandb": True}) - try: - _training_model = YOLO("yolo26n.pt") - _training_results = _training_model.train( + training_model = YOLO(run.config.model) + training_results = training_model.train( data=str(data_yaml_path), - epochs=yolo_training_request["epochs"], - imgsz=640, + epochs=run.config.epochs, + imgsz=run.config.imgsz, + batch=run.config.batch, device=training_device, - project=yolo_training_request["local_project_dir"], - name=yolo_training_request["run_name"], - exist_ok=True, + workers=0, + project=str(Path("runs/chess").resolve()), + name=run.id, plots=True, save=True, ) - finally: - if wandb.run is not None: - wandb.finish() - yolo_settings.update({"wandb": _original_wandb_setting}) - - training_output_dir = Path(_training_results.save_dir) - training_metrics = { - _name: round(float(_value), 4) - for _name, _value in _training_results.results_dict.items() - } - return training_metrics, training_output_dir + + training_results.results_dict + return @app.cell(hide_code=True) -def _(mo, training_metrics, training_output_dir, training_run_url): - mo.vstack( - [ - mo.callout( - mo.md( - "Training finished and the W&B run is closed. " - f"[Inspect the completed run]({training_run_url})." - ), - kind="success", - ), - mo.ui.table( - [ - {"metric": _name, "value": _value} - for _name, _value in training_metrics.items() - ], - label="Final validation metrics", - ), - mo.md(f"Local outputs: `{training_output_dir}`"), - ] - ) +def _(): + mo.md(r""" + ## Verify and compare your experiments + + Open the Weights & Biases run link and inspect: + + - **Config:** the model, epoch count, image size, and batch size you chose. + - **Charts:** training losses, precision, recall, mAP50, and mAP50-95. + Losses describe training progress. Mean average precision (mAP) measures detection quality on + held-out images, including whether the predicted boxes match the labels. + - **Images and plots:** validation predictions, confusion matrix, and + performance curves. Look for missed pieces or confused classes. + - **Artifacts:** the `chess-pieces` dataset and the best model checkpoint. + These record the input data and the model produced by this experiment. + + Increase `epochs` in the configuration, then rerun setup and training. + Compare the runs in the same Weights & Biases project. Does validation mAP improve, and + do the prediction images show fewer mistakes? + """) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Verify and next steps + ## Resume interrupted training + + Ultralytics saves `last.pt` in the run's local `weights` directory. To resume + an **unfinished** training job, use its actual checkpoint path: + + ```python + model_to_resume = YOLO("runs/chess//weights/last.pt") + model_to_resume.train(resume=True) + ``` + + This restores the training state stored in that checkpoint. Keep the + dataset available at the paths recorded by the original job. The best-model + Artifact is useful for inference or a new fine-tuning run. Resuming an + interrupted job requires a checkpoint that includes its training state. + + See the [Ultralytics training guide](https://docs.ultralytics.com/modes/train/#resuming-interrupted-trainings) + for checkpoint resume behavior. The old YOLOv5 `wandb-artifact://` command + syntax is not used by this notebook. + """) + return - In the W&B run, verify that you can find: - - training and validation losses across epochs; - - precision, recall, mAP50, and mAP50-95 charts; - - training mosaics, validation predictions, and performance curves; - - the input dataset under **Artifacts** with the `latest` alias; and - - the best YOLO checkpoint as a model Artifact with the `best` alias. +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Dataset helper - Next, increase the epoch count or switch from `yolo26n.pt` to a larger - YOLO26 checkpoint and compare the runs in W&B. For interrupted training, - use Ultralytics' current local checkpoint flow (`YOLO("last.pt").train(resume=True)`), - or download a checkpoint Artifact with `run.use_artifact()` before - resuming on another machine. + This helper downloads and unpacks the public dataset once, checks the + archive paths, and updates its YAML file for the local folder layout. """) return +@app.function +def download_chess_dataset(): + dataset_root = Path("data/chess").resolve() + data_yaml_path = dataset_root / "data.yaml" + if not data_yaml_path.exists(): + dataset_url = "https://public.roboflow.com/ds/1BpjFZe9ST?key=KXD7eDvwTa" + with urlopen(dataset_url, timeout=120) as response: + with zipfile.ZipFile(io.BytesIO(response.read())) as archive: + for member in archive.infolist(): + member_path = (dataset_root / member.filename).resolve() + if not member_path.is_relative_to(dataset_root): + raise ValueError(f"Unsafe path in dataset archive: {member.filename}") + archive.extractall(dataset_root) + + if not data_yaml_path.exists(): + raise FileNotFoundError("The downloaded dataset did not contain data.yaml") + + dataset_config = yaml.safe_load(data_yaml_path.read_text()) + dataset_config.pop("path", None) + dataset_config.update({"train": "train/images", "val": "valid/images"}) + if (dataset_root / "test/images").exists(): + dataset_config["test"] = "test/images" + else: + dataset_config.pop("test", None) + data_yaml_path.write_text(yaml.safe_dump(dataset_config, sort_keys=False)) + return dataset_root, data_yaml_path + + if __name__ == "__main__": app.run() diff --git a/marimo/convert/use-wandbevalcallback-in-your-keras-workflow/use_wandbevalcallback_in_your_keras_workflow.py b/marimo/convert/use-wandbevalcallback-in-your-keras-workflow/use_wandbevalcallback_in_your_keras_workflow.py index 181c2052..275ffc1e 100644 --- a/marimo/convert/use-wandbevalcallback-in-your-keras-workflow/use_wandbevalcallback_in_your_keras_workflow.py +++ b/marimo/convert/use-wandbevalcallback-in-your-keras-workflow/use_wandbevalcallback_in_your_keras_workflow.py @@ -1,18 +1,25 @@ # /// script # requires-python = ">=3.10" # dependencies = [ -# "marimo>=0.23.11", +# "marimo>=0.24.2", # "tensorflow>=2.16,<3", # "tensorflow-datasets>=4.9,<5", +# "importlib-resources>=6", # "wandb>=0.18,<1", # "pillow>=10", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="Keras evaluation with W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Keras evaluation with Weights & Biases", +) with app.setup: import marimo as mo @@ -28,17 +35,36 @@ @app.cell(hide_code=True) def _(): mo.md(r""" + + + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave + # Using Keras Evaluation Callbacks with Weights & Biases [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/use-wandbevalcallback-in-your-keras-workflow/use_wandbevalcallback_in_your_keras_workflow.py/server) - This notebook introduces `WandbEvalCallback`, an abstract callback you can subclass to visualize datasets and model predictions using W&B Tables. See the [current Keras integration](https://docs.wandb.ai/models/integrations/keras). + This notebook introduces `WandbEvalCallback`, an abstract callback you can subclass to visualize datasets and model predictions using Weights & Biases Tables. See the [Keras integration](https://docs.wandb.ai/models/integrations/keras). - Use Weights & Biases for machine learning experiment tracking, dataset - versioning, and project collaboration. - A CPU is sufficient; a GPU speeds up training. The first - training submission downloads Fashion-MNIST and ImageNet weights. + + This example can run on CPU. A GPU can reduce training time. Running the data and model + cells downloads Fashion-MNIST and ImageNet weights the first time. + + Run the cells from top to bottom in the marimo editor. Editing a cell + marks its dependents as stale until you run them again. """) return @@ -46,109 +72,92 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication - - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to use - `WANDB_API_KEY` from the marimo Secrets panel or credentials already stored - in this runtime. A fresh molab session does not inherit your local login. - If needed, [create a free W&B account](https://wandb.ai/signup). - - The entity is the team name in your W&B project URL: - `wandb.ai//`. Leave it blank to use your default entity. - A blank run name lets W&B generate a name for each experiment. - - Submit the form to authenticate, download data and weights, create one W&B - run, and train the model. Training also uploads validation images and predictions as W&B Artifacts. + This lesson requires an online Weights & Biases run. The evaluation callback + uploads validation images as an Artifact and retrieves their table for reuse in + each epoch's prediction table. """) return @app.cell(hide_code=True) def _(): - training_form = ( - mo.md( - """ - {api_key} - - {entity} + mo.md(r""" + ## Authenticate with Weights & Biases - {project} + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - {run_name} + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - ## Hyperparameters + ## Set your team and project - A Python dictionary records these hyperparameters in the W&B run - config so experiments can be compared and reproduced. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `intro-keras`. Then select **Connect to Weights & Biases**. + """) + return - {epochs} {batch_size} - {learning_rate} - """ - ) - .batch( - api_key=mo.ui.text(kind="password", label="W&B API key (optional)", full_width=True), - entity=mo.ui.text(label="W&B entity or team (optional)", full_width=True), - project=mo.ui.text(value="intro-keras", label="W&B project", full_width=True), - run_name=mo.ui.text(label="Run name (blank auto-generates)", full_width=True), - epochs=mo.ui.number(start=1, stop=50, step=1, value=10, label="Epochs"), - batch_size=mo.ui.dropdown(options=[32, 64, 128, 256], value=64, label="Batch size"), - learning_rate=mo.ui.number(start=0.00001, stop=0.1, step=0.00001, value=0.001, label="Learning rate"), - ) - .form(submit_button_label="Download data and train with W&B", bordered=True) - ) - training_form - return (training_form,) +@app.cell(hide_code=True) +def _(): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="intro-keras", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(training_form): - mo.stop( - training_form.value is None, - mo.callout(mo.md("Submit the form above to download data and train."), kind="info"), - ) - _submitted = training_form.value +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - not _submitted["project"].strip(), - mo.callout(mo.md("Enter a W&B project name and submit again."), kind="danger"), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = _submitted["api_key"].strip() + try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout( - mo.md("W&B authentication did not complete. Check your API key or runtime secret, then submit again."), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": _submitted["project"].strip(), - "entity": _submitted["entity"].strip() or None, - "name": _submitted["run_name"].strip() or None, - } - training_request = { - "epochs": int(_submitted["epochs"]), - "batch_size": int(_submitted["batch_size"]), - "learning_rate": float(_submitted["learning_rate"]), - } - mo.callout(mo.md("Authenticated. Preparing the submitted training run."), kind="success") - return training_request, wandb_settings + + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Hyperparameters + + Use a Python dictionary to define the experiment. Passing it to + `wandb.init(config=configs)` records these settings with the run, so you + can compare experiments and reproduce the model's configuration. + """) + return @app.cell -def _(training_request): +def _(): configs = dict( dataset="fashion_mnist", num_classes=10, shuffle_buffer=1024, - batch_size=training_request["batch_size"], + batch_size=64, image_size=28, image_channels=1, - learning_rate=training_request["learning_rate"], - epochs=training_request["epochs"], + learning_rate=0.001, + epochs=10, seed=42, ) return (configs,) @@ -161,9 +170,12 @@ def _(): We use [Fashion-MNIST](https://www.tensorflow.org/datasets/catalog/fashion_mnist) from the TensorFlow Datasets catalog to build a simple image classification - pipeline. Labels become one-hot vectors; images keep their 0–255 range - until the model applies MobileNetV2 preprocessing. Validation examples stay + pipeline. Labels become one-hot vectors. The input pipeline keeps image pixels in + the 0–255 range. The model later applies MobileNetV2 preprocessing + after its trainable convolution. Validation examples stay in a fixed order. + + > Note: The `get_dataloader()` function is defined at the end of the notebook to keep the focus on the main concepts rather than data-loading implementation details. """) return @@ -182,8 +194,10 @@ def _(): ## Model A frozen ImageNet MobileNetV2 supplies image features. The model resizes each - grayscale image to 32 × 32, learns a three-channel convolution, applies - MobileNetV2 preprocessing, and trains a ten-class classification head. + grayscale image to 32 × 32 and uses a trainable convolution to produce + three channels. It then applies MobileNetV2 preprocessing and trains a + ten-class classification head. The convolution and head learn while the + backbone weights stay fixed. """) return @@ -214,8 +228,8 @@ def _(): Adam uses the learning rate recorded in `configs`. Alongside cross-entropy loss, track accuracy and top-five accuracy on training and validation data. - The same cell creates and compiles the model so training always receives a - fresh, compiled model after a new submission. + Rerun this cell before training when you want to start a fresh experiment. + Running only `model.fit` again continues from the model's current weights. """) return @@ -251,52 +265,46 @@ def _(): Artifact version at `on_epoch_end`. Below, `WandbClfEvalCallback` records 100 validation images and their predicted classes at every epoch. - ### How the memory footprint is reduced - Once the validation table uploads, the base callback waits for its Artifact and exposes the stored table as `data_table_ref`. Prediction rows reuse `self.data_table_ref.data[idx][n]` instead of uploading each image again. - This Artifact round trip requires an online W&B run. """) return -@app.cell -def _(): - class WandbClfEvalCallback(WandbEvalCallback): - def __init__( - self, validloader, data_table_columns, pred_table_columns, num_samples=100 - ): - super().__init__(data_table_columns, pred_table_columns) - self.val_data = validloader.unbatch().take(num_samples).cache() - - def add_ground_truth(self, logs=None): - for idx, (image, label) in enumerate(self.val_data): - self.data_table.add_data( - idx, wandb.Image(image.numpy()), int(tf.argmax(label, axis=-1)) - ) - - def add_model_predictions(self, epoch, logs=None): - # Get predictions - preds = self._inference() - table_idxs = self.data_table_ref.get_index() - for idx in table_idxs: - self.pred_table.add_data( - epoch, - self.data_table_ref.data[idx][0], - self.data_table_ref.data[idx][1], - self.data_table_ref.data[idx][2], - preds[idx], - ) - - def _inference(self): - preds = [] - for images, labels in self.val_data.batch(32): - predictions = self.model(images, training=False) - preds.extend(tf.argmax(predictions, axis=-1).numpy().tolist()) - return preds - - return (WandbClfEvalCallback,) +@app.class_definition +class WandbClfEvalCallback(WandbEvalCallback): + def __init__( + self, validloader, data_table_columns, pred_table_columns, num_samples=100 + ): + super().__init__(data_table_columns, pred_table_columns) + self.val_data = validloader.unbatch().take(num_samples).cache() + + def add_ground_truth(self, logs=None): + for idx, (image, label) in enumerate(self.val_data): + self.data_table.add_data( + idx, wandb.Image(image.numpy()), int(tf.argmax(label, axis=-1)) + ) + + def add_model_predictions(self, epoch, logs=None): + # Get predictions + preds = self._inference() + table_idxs = self.data_table_ref.get_index() + for idx in table_idxs: + self.pred_table.add_data( + epoch, + self.data_table_ref.data[idx][0], + self.data_table_ref.data[idx][1], + self.data_table_ref.data[idx][2], + preds[idx], + ) + + def _inference(self): + preds = [] + for images, labels in self.val_data.batch(32): + predictions = self.model(images, training=False) + preds.extend(tf.argmax(predictions, axis=-1).numpy().tolist()) + return preds @app.cell(hide_code=True) @@ -304,8 +312,8 @@ def _(): mo.md(r""" ## Train - Create the W&B run before constructing its callbacks. `WandbMetricsLogger` - records metrics every ten batches and at epoch end; `WandbClfEvalCallback` + Create the Weights & Biases run before constructing its callbacks. `WandbMetricsLogger` + records metrics every ten batches and at epoch end. `WandbClfEvalCallback` logs ground truth once and predictions after each epoch. The context manager closes the run when training finishes or raises an exception. """) @@ -313,15 +321,9 @@ def _(): @app.cell -def _(WandbClfEvalCallback, configs, model, trainloader, validloader, wandb_settings): - if wandb.run is not None: - wandb.run.finish() - - # Initialize a W&B run - with wandb.init(**wandb_settings, config=configs) as training_run: - wandb_run_url = training_run.url - # Train your model - training_history = model.fit( +def _(configs, entity, model, project, trainloader, validloader): + with wandb.init(entity=entity, project=project, config=configs) as run: + history = model.fit( trainloader, epochs=configs["epochs"], validation_data=validloader, @@ -333,36 +335,27 @@ def _(WandbClfEvalCallback, configs, model, trainloader, validloader, wandb_sett data_table_columns=["idx", "image", "ground_truth"], pred_table_columns=["epoch", "idx", "image", "ground_truth", "prediction"], num_samples=100, - ), # Notice the use of WandbEvalCallback here + ), ], ) - # Close the W&B run - training_result = { - "url": wandb_run_url, - "epochs": len(training_history.history["loss"]), - } - return (training_result,) - - -@app.cell(hide_code=True) -def _(training_result): - mo.callout( - mo.md( - f"Training finished after {training_result['epochs']} epochs. " - f"[Open the W&B run]({training_result['url']}).\n\n" - "Inspect the loss and accuracy charts, then open Artifacts: " - "`val` contains the `val_data` ground-truth table; " - "`run__pred` contains a version of `eval_data` for each epoch. " - "Compare `ground_truth` and `prediction` alongside each image." - ), - kind="success", - ) return @app.cell(hide_code=True) def _(): mo.md(r""" + ## Verify and next steps + + Open the run link printed by Weights & Biases in the previous cell. Select the **Artifacts** tab in the Weights & Biases UI to view the `val` artifact you logged. In it, you will find a table with 100 validation images and labels. + + Open the run’s workspace to view training and validation loss, + accuracy, and top-five accuracy charts. + + Try changing the learning rate, recreate and compile the model, then train + again. Use the same project to compare the runs. To adapt the callback to + another task, change the table columns and the two methods that add ground + truth and predictions. + ## Helper functions The input pipeline maps images and labels, shuffles only training examples, @@ -375,7 +368,6 @@ def _(): def parse_data(example, num_classes): # Get image image = example["image"] - # image = tf.image.convert_image_dtype(image, dtype=tf.float32) image = tf.cast(image, tf.float32) # Get label diff --git a/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py b/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py index 57c0fc99..b10d2195 100644 --- a/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py +++ b/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py @@ -7,12 +7,18 @@ # "tensorflow-datasets>=4.9,<5", # "wandb>=0.18,<1", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.2" -app = marimo.App(width="medium", app_title="Keras metrics with W&B") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Keras metrics with Weights & Biases", +) with app.setup: import marimo as mo @@ -25,46 +31,35 @@ from wandb.integration.keras import WandbMetricsLogger -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # Using Keras MetricsLogger in your Keras workflow - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py/server) - - This notebook introduces the `WandbMetricsLogger` callback for [experiment tracking](https://docs.wandb.ai/models/integrations/keras). It logs training and validation metrics along with system metrics to Weights & Biases. - - A CPU is sufficient; a GPU speeds up training. The first - training submission downloads Fashion-MNIST and ImageNet weights. - """) - return - - @app.cell(hide_code=True) def _(): mo.md(r""" - ## Why should I use W&B? + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Weights & Biases by CoreWeave - Weights & Biases by CoreWeave + # Using WandbMetricsLogger in your Keras workflow - Use Weights & Biases for machine learning experiment tracking, dataset versioning, and project collaboration. + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/use-wandbmetriclogger-in-your-keras-workflow/use_wandbmetriclogger_in_your_keras_workflow.py/server) - Weights & Biases features + This notebook introduces the `WandbMetricsLogger` callback for [experiment tracking](https://docs.wandb.ai/models/integrations/keras). It logs training and validation metrics along with system metrics to Weights & Biases. + + + + This notebook is designed to run on your local machine's CPU. """) return @@ -72,109 +67,82 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Enter your [W&B API key](https://wandb.ai/authorize), or leave it blank to use - `WANDB_API_KEY` from the marimo Secrets panel or credentials already stored - in this runtime. A fresh molab session does not inherit your local login. - If needed, [create a free W&B account](https://wandb.ai/signup). + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - The entity is the team name in your W&B project URL: - `wandb.ai//`. Leave it blank to use your default entity. - A blank run name lets W&B generate a name for each experiment. + ## Set your team and project - Submit the form to authenticate, download data and weights, create one W&B - run, and train the model. The callback streams training and validation metrics to that run. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `intro-keras`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - training_form = ( - mo.md( - """ - {api_key} - - {entity} - - {project} - - {run_name} - - ## Hyperparameters - - A Python dictionary records these hyperparameters in the W&B run - config so experiments can be compared and reproduced. - - {epochs} {batch_size} - - {learning_rate} - """ - ) - .batch( - api_key=mo.ui.text(kind="password", label="W&B API key (optional)", full_width=True), - entity=mo.ui.text(label="W&B entity or team (optional)", full_width=True), - project=mo.ui.text(value="intro-keras", label="W&B project", full_width=True), - run_name=mo.ui.text(label="Run name (blank auto-generates)", full_width=True), - epochs=mo.ui.number(start=1, stop=50, step=1, value=10, label="Epochs"), - batch_size=mo.ui.dropdown(options=[32, 64, 128, 256], value=64, label="Batch size"), - learning_rate=mo.ui.number(start=0.00001, stop=0.1, step=0.00001, value=0.001, label="Learning rate"), - ) - .form(submit_button_label="Download data and train with W&B", bordered=True) - ) - training_form - return (training_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="intro-keras", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(training_form): - mo.stop( - training_form.value is None, - mo.callout(mo.md("Submit the form above to download data and train."), kind="info"), - ) - _submitted = training_form.value +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - not _submitted["project"].strip(), - mo.callout(mo.md("Enter a W&B project name and submit again."), kind="danger"), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = _submitted["api_key"].strip() + try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) except (wandb.errors.Error, ValueError): _login_ok = False + mo.stop( not _login_ok, - mo.callout( - mo.md("W&B authentication did not complete. Check your API key or runtime secret, then submit again."), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": _submitted["project"].strip(), - "entity": _submitted["entity"].strip() or None, - "name": _submitted["run_name"].strip() or None, - } - training_request = { - "epochs": int(_submitted["epochs"]), - "batch_size": int(_submitted["batch_size"]), - "learning_rate": float(_submitted["learning_rate"]), - } - mo.callout(mo.md("Authenticated. Preparing the submitted training run."), kind="success") - return training_request, wandb_settings + + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Hyperparameters + + Use a Python dictionary to define the experiment. Passing it to + `wandb.init(config=configs)` records these settings with the run, so you + can compare experiments and reproduce the model's configuration. + """) + return @app.cell -def _(training_request): +def _(): configs = dict( dataset="fashion_mnist", num_classes=10, shuffle_buffer=1024, - batch_size=training_request["batch_size"], + batch_size=64, image_size=28, image_channels=1, - learning_rate=training_request["learning_rate"], - epochs=training_request["epochs"], + learning_rate=0.001, + epochs=10, seed=42, ) return (configs,) @@ -187,9 +155,12 @@ def _(): We use [Fashion-MNIST](https://www.tensorflow.org/datasets/catalog/fashion_mnist) from the TensorFlow Datasets catalog to build a simple image classification - pipeline. Labels become one-hot vectors; images keep their 0–255 range - until the model applies MobileNetV2 preprocessing. Validation examples stay + pipeline. Labels become one-hot vectors. The input pipeline keeps image pixels in + the 0–255 range. The model later applies MobileNetV2 preprocessing + after its trainable convolution. Validation examples stay in a fixed order. + + The data-loading helpers are defined at the end of the notebook. """) return @@ -208,8 +179,10 @@ def _(): ## Model A frozen ImageNet MobileNetV2 supplies image features. The model resizes each - grayscale image to 32 × 32, learns a three-channel convolution, applies - MobileNetV2 preprocessing, and trains a ten-class classification head. + grayscale image to 32 × 32 and uses a trainable convolution to produce + three channels. It then applies MobileNetV2 preprocessing and trains a + ten-class classification head. The convolution and head learn while the + backbone weights stay fixed. """) return @@ -240,8 +213,8 @@ def _(): Adam uses the learning rate recorded in `configs`. Alongside cross-entropy loss, track accuracy and top-five accuracy on training and validation data. - The same cell creates and compiles the model so training always receives a - fresh, compiled model after a new submission. + Rerun this cell before each new experiment to start with a fresh model. + Rerunning only the training cell continues from the current model weights. """) return @@ -268,9 +241,9 @@ def _(): mo.md(r""" ## Train - Initialize W&B before constructing `WandbMetricsLogger`, then pass the + Initialize Weights & Biases before constructing `WandbMetricsLogger`, then pass the callback to `model.fit`. `log_freq=10` logs training metrics every ten - batches; epoch and validation metrics are also logged at epoch end. Use + batches. Training and validation metrics are also logged at epoch end. Use `log_freq="epoch"` for epoch-only logging or `"batch"` for every batch. The context manager finishes the run after training, including if training @@ -280,41 +253,33 @@ def _(): @app.cell -def _(configs, model, trainloader, validloader, wandb_settings): - if wandb.run is not None: - wandb.run.finish() - - # Initialize a W&B run - with wandb.init(**wandb_settings, config=configs) as training_run: - wandb_run_url = training_run.url - # Train your model - training_history = model.fit( +def _(configs, entity, model, project, trainloader, validloader): + with wandb.init(entity=entity, project=project, config=configs): + history = model.fit( trainloader, epochs=configs["epochs"], validation_data=validloader, shuffle=False, # The tf.data training pipeline already shuffles. - callbacks=[WandbMetricsLogger(log_freq=10)], # Notice the use of WandbMetricsLogger here + callbacks=[WandbMetricsLogger(log_freq=10)], ) - # Close the W&B run - training_result = { - "url": wandb_run_url, - "epochs": len(training_history.history["loss"]), - } - return (training_result,) + return @app.cell(hide_code=True) -def _(training_result): - mo.callout( - mo.md( - f"Training finished after {training_result['epochs']} epochs. " - f"[Open the W&B run]({training_result['url']}).\n\n" - "In the run's Workspace, inspect `epoch/loss`, `epoch/accuracy`, " - "`epoch/val_loss`, and `epoch/val_accuracy`, then compare the " - "`batch/*` charts. Check Config for the batch size and learning rate." - ), - kind="success", - ) +def _(): + mo.md(r""" + ## Explore your results + + Open the run link printed by Weights & Biases. In the run's Workspace, inspect + `epoch/loss`, `epoch/accuracy`, `epoch/val_loss`, and `epoch/val_accuracy`. + Compare these epoch summaries with the more frequent `batch/*` metrics. + Check Config for the batch size and learning rate recorded with the run. + + Try a different learning rate in `configs`, rebuild the model with the + compile cell, and train again. Compare validation loss and accuracy across + the two runs in your project. You can also change `log_freq` to see how + logging frequency affects the detail in your training charts. + """) return @@ -333,7 +298,6 @@ def _(): def parse_data(example, num_classes): # Get image image = example["image"] - # image = tf.image.convert_image_dtype(image, dtype=tf.float32) image = tf.cast(image, tf.float32) # Get label diff --git a/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py b/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py index 4a421e03..c3f3ef19 100644 --- a/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py +++ b/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py @@ -1,73 +1,69 @@ # /// script +# requires-python = ">=3.10" # dependencies = [ +# "importlib-resources==7.1.0", +# "marimo>=0.23.11", # "tensorflow==2.21.0", # "tensorflow-datasets==4.9.10", # "wandb==0.30.0", # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.0" -app = marimo.App(auto_download=["html"]) +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Keras checkpoints with Weights & Biases", +) with app.setup: import marimo as mo import os import tensorflow as tf - from tensorflow.keras import layers - from tensorflow.keras import models import tensorflow_datasets as tfds + from tensorflow.keras import layers, models - # Weights & Biases integrations + # Weights and Biases related imports import wandb - from wandb.integration.keras import WandbMetricsLogger - from wandb.integration.keras import WandbModelCheckpoint - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # Using Keras Checkpoint callback with Weights & Biases - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py/server) - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - This notebook introduces the `WandbModelCheckpoint` callback. Use this callback to log your model checkpoints to Weights & Biases [Artifacts](https://docs.wandb.ai/guides/data-and-model-versioning). - """) - return + from wandb.integration.keras import WandbMetricsLogger, WandbModelCheckpoint @app.cell(hide_code=True) def _(): mo.md(r""" - ## Why should I use W&B? + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Weights & Biases by CoreWeave - Weights & Biases by CoreWeave + # Using WandbModelCheckpoint in your Keras workflow + + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/use-wandbmodelcheckpoint-in-your-keras-workflow/use_wandbmodelcheckpoint_in_your_keras_workflow.py/server) - Use Weights & Biases for machine learning experiment tracking, dataset versioning, and project collaboration. + This notebook introduces the `WandbModelCheckpoint` callback. It saves Keras + model checkpoints and logs them as versioned Weights & Biases [Artifacts](https://docs.wandb.ai/models/artifacts). + Use `WandbMetricsLogger` alongside it to track training and validation metrics. - Weights & Biases features + + + This notebook is designed to run on your local machine's CPU. The data + and model cells download Fashion-MNIST and ImageNet weights the first time. """) return @@ -75,71 +71,57 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials. If this is your first time using W&B, [create a free account](https://wandb.ai/signup). + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `intro-keras`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="intro-keras", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B above before preparing data or training the model."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() try: _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) - _login_error = None - except wandb.errors.Error as _error: + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - wandb_settings = { - "project": "intro-keras", - "entity": _entity or None, - } - mo.callout(mo.md("Connected to W&B."), kind="success") - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) @@ -147,67 +129,25 @@ def _(): mo.md(r""" ## Hyperparameters - Use of a proper config system is a recommended best practice for reproducible machine learning. We can track the hyperparameters for every experiment using W&B. In this notebook we use a simple Python `dict` as our config system. - - Choose the training values below. Submitting the form downloads Fashion-MNIST and ImageNet weights, starts a W&B run, trains the model, and logs model checkpoints. + Use a Python dictionary to define the experiment. Passing it to + `wandb.init(config=configs)` records these settings with the run, so you + can compare experiments and reproduce the model's configuration. """) return -@app.cell(hide_code=True) -def _(): - _epochs_input = mo.ui.number( - start=1, - stop=50, - step=1, - value=10, - label="Epochs", - ) - _batch_size_input = mo.ui.number( - start=16, - stop=256, - step=16, - value=64, - label="Batch size", - ) - training_form = ( - mo.md("{epochs}\n\n{batch_size}") - .batch(epochs=_epochs_input, batch_size=_batch_size_input) - .form(submit_button_label="Download data and train with W&B", bordered=True) - ) - training_form - return (training_form,) - - -@app.cell(hide_code=True) -def _(training_form, wandb_settings): - mo.stop( - training_form.value is None, - mo.callout( - mo.md("Choose the hyperparameters and submit the form to continue."), - kind="info", - ), - ) - mo.stop( - not wandb_settings, - mo.callout(mo.md("Connect to W&B before training."), kind="info"), - ) - training_request = dict(training_form.value) - return (training_request,) - - @app.cell -def _(training_request): +def _(): configs = dict( dataset="fashion_mnist", num_classes=10, shuffle_buffer=1024, - batch_size=int(training_request["batch_size"]), + batch_size=64, image_size=28, image_channels=1, - earlystopping_patience=3, - learning_rate=1e-3, - epochs=int(training_request["epochs"]), + learning_rate=0.001, + epochs=10, + seed=42, ) return (configs,) @@ -217,56 +157,21 @@ def _(): mo.md(r""" ## Dataset - In this notebook, we use the [Fashion-MNIST](https://www.tensorflow.org/datasets/catalog/fashion_mnist) dataset from the TensorFlow Datasets catalog. We aim to build a simple image classification pipeline using TensorFlow/Keras. + We use [Fashion-MNIST](https://www.tensorflow.org/datasets/catalog/fashion_mnist) + from the TensorFlow Datasets catalog to build a simple image classification + pipeline. Labels become one-hot vectors. The input pipeline keeps image pixels in + the 0–255 range. The model later applies MobileNetV2 preprocessing + after its trainable convolution. Validation examples stay + in a fixed order. + + The data-loading helpers are defined at the end of the notebook. """) return @app.cell def _(configs): - train_ds, valid_ds = tfds.load( - configs["dataset"], - split=["train", "test"], - ) - return train_ds, valid_ds - - -@app.cell -def _(configs): - AUTOTUNE = tf.data.AUTOTUNE - - - def parse_data(example): - # Get image - image = example["image"] - # image = tf.image.convert_image_dtype(image, dtype=tf.float32) - - # Get label - label = example["label"] - label = tf.one_hot(label, depth=configs["num_classes"]) - - return image, label - - - def get_dataloader(ds, configs, dataloader_type="train"): - dataloader = ds.map(parse_data, num_parallel_calls=AUTOTUNE) - - if dataloader_type=="train": - dataloader = dataloader.shuffle(configs["shuffle_buffer"]) - - dataloader = ( - dataloader - .batch(configs["batch_size"]) - .prefetch(AUTOTUNE) - ) - - return dataloader - - return (get_dataloader,) - - -@app.cell -def _(configs, get_dataloader, train_ds, valid_ds): + train_ds, valid_ds = tfds.load(configs["dataset"], split=["train", "test"]) trainloader = get_dataloader(train_ds, configs) validloader = get_dataloader(valid_ds, configs, dataloader_type="valid") return trainloader, validloader @@ -276,54 +181,62 @@ def _(configs, get_dataloader, train_ds, valid_ds): def _(): mo.md(r""" ## Model + + A frozen ImageNet MobileNetV2 supplies image features. The model resizes each + grayscale image to 32 × 32 and uses a trainable convolution to produce + three channels. It then applies MobileNetV2 preprocessing and trains a + ten-class classification head. The convolution and head learn while the + backbone weights stay fixed. """) return @app.function -def get_model(configs): - backbone = tf.keras.applications.mobilenet_v2.MobileNetV2(weights='imagenet', include_top=False) +def get_model(configs, weights="imagenet"): + backbone = tf.keras.applications.mobilenet_v2.MobileNetV2( + weights=weights, include_top=False + ) backbone.trainable = False - inputs = layers.Input(shape=(configs["image_size"], configs["image_size"], configs["image_channels"])) + inputs = layers.Input( + shape=(configs["image_size"], configs["image_size"], configs["image_channels"]) + ) resize = layers.Resizing(32, 32)(inputs) - neck = layers.Conv2D(3, (3,3), padding="same")(resize) - preprocess_input = tf.keras.applications.mobilenet.preprocess_input(neck) - x = backbone(preprocess_input) + neck = layers.Conv2D(3, (3, 3), padding="same")(resize) + preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input(neck) + x = backbone(preprocess_input, training=False) x = layers.GlobalAveragePooling2D()(x) outputs = layers.Dense(configs["num_classes"], activation="softmax")(x) - return models.Model(inputs=inputs, outputs=outputs) -@app.cell -def _(configs): - tf.keras.backend.clear_session() - model = get_model(configs) - model.summary() - return (model,) - - @app.cell(hide_code=True) def _(): mo.md(r""" ## Compile model + + Adam uses the learning rate recorded in `configs`. Alongside cross-entropy + loss, track accuracy and top-five accuracy on training and validation data. + Rerun this cell before each new experiment to start with a fresh model. + Rerunning only the training cell continues from the current model weights. """) return @app.cell -def _(model): +def _(configs): + tf.keras.utils.set_random_seed(configs["seed"]) + model = get_model(configs) model.compile( - optimizer="adam", + optimizer=tf.keras.optimizers.Adam(learning_rate=configs["learning_rate"]), loss="categorical_crossentropy", metrics=[ "accuracy", tf.keras.metrics.TopKCategoricalAccuracy(k=5, name="top@5_accuracy"), ], ) - compiled_model = model - return (compiled_model,) + model.summary() + return (model,) @app.cell(hide_code=True) @@ -331,64 +244,96 @@ def _(): mo.md(r""" ## Train - The submitted action creates a W&B run, trains the classifier, logs its metrics, and saves each model checkpoint to W&B Artifacts. + Initialize Weights & Biases before constructing the callbacks, then pass + them to `model.fit`: + + - `WandbMetricsLogger(log_freq=10)` logs training metrics every ten batches, + plus epoch and validation metrics at the end of each epoch. + - `WandbModelCheckpoint` saves the full model to `models/model.keras` at + the end of each epoch and logs it as a Weights & Biases Artifact of type `model`. + The `.keras` file includes the model architecture, weights, and optimizer + state, so it can be loaded with `tf.keras.models.load_model`. + + The local file is overwritten each epoch. Weights & Biases versions the checkpoints + under the run's model artifact, so you can inspect earlier versions. + + The context manager finishes the run after training, including if training + raises an exception. """) return @app.cell -def _(compiled_model, configs, trainloader, validloader, wandb_settings): +def _(configs, entity, model, project, trainloader, validloader): os.makedirs("models", exist_ok=True) - if wandb.run is not None: - wandb.finish() - - # Initialize a W&B run - with wandb.init( - project=wandb_settings["project"], - entity=wandb_settings["entity"], - config=configs, - ) as _run: - wandb_run_url = _run.url - mo.output.replace( - mo.callout( - mo.md( - f"[**Open this training run in W&B**]({wandb_run_url})\n\n" - "Metrics will stream to W&B while the model trains." - ), - kind="info", - title="Training in progress", - ) - ) - - # Train your model - training_history = compiled_model.fit( + with wandb.init(entity=entity, project=project, config=configs): + history = model.fit( trainloader, epochs=configs["epochs"], validation_data=validloader, + shuffle=False, # The tf.data training pipeline already shuffles. callbacks=[ WandbMetricsLogger(log_freq=10), - # Notice the use of WandbModelCheckpoint here - WandbModelCheckpoint(filepath="models/model.keras"), + WandbModelCheckpoint( + filepath="models/model.keras", + save_freq="epoch", + ), ], ) + return + - mo.output.replace(None) - return (wandb_run_url,) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Explore your results + + Open the run link printed by Weights & Biases. In the run's **Artifacts** + tab, find the artifact of type `model` and inspect its versions. Each version + contains a `model.keras` checkpoint. The `latest` alias points to the most + recent version. In the **Workspace**, inspect `epoch/loss`, `epoch/val_loss`, and + `epoch/val_accuracy`. Check **Config** for the hyperparameters used to + produce these checkpoints. + + To keep a separate local checkpoint for each epoch, change `filepath` to + `"models/model-{epoch:02d}.keras"`. Rebuild the model with the compile cell + and train again, then compare the local files with the Weights & Biases Artifact versions. + """) + return @app.cell(hide_code=True) -def _(wandb_run_url): - mo.callout( - mo.md(f""" - ### Training complete +def _(): + mo.md(r""" + ## Helper functions + + The input pipeline maps images and labels, shuffles only training examples, + then batches and prefetches them. + """) + return - [**Open this training run in W&B**]({wandb_run_url}) - Open the run's **Artifacts** tab to inspect the model checkpoints logged by `WandbModelCheckpoint`. - """), - kind="success", +@app.function +def parse_data(example, num_classes): + # Get image + image = example["image"] + image = tf.cast(image, tf.float32) + + # Get label + label = example["label"] + label = tf.one_hot(label, depth=num_classes) + return image, label + + +@app.function +def get_dataloader(ds, configs, dataloader_type="train"): + dataloader = ds.map( + lambda example: parse_data(example, configs["num_classes"]), + num_parallel_calls=tf.data.AUTOTUNE, ) - return + if dataloader_type == "train": + dataloader = dataloader.shuffle(configs["shuffle_buffer"], seed=configs["seed"]) + return dataloader.batch(configs["batch_size"]).prefetch(tf.data.AUTOTUNE) if __name__ == "__main__": diff --git a/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py b/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py index 890cef52..addde32d 100644 --- a/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py +++ b/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py @@ -5,23 +5,29 @@ # "numpy>=1.26", # "scikit-learn>=1.5", # "wandb>=0.18", -# "xgboost>=2.1", +# "xgboost>=2.1,<3.3", # Preserve the tree-versus-linear booster lesson. # ] +# +# [tool.marimo.runtime] +# on_cell_change = "lazy" # /// import marimo -__generated_with = "0.24.0" -app = marimo.App(width="medium", app_title="W&B Sweeps with XGBoost") +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Weights & Biases Sweeps with XGBoost", +) - -with app.setup(): +with app.setup: from urllib.request import urlopen import marimo as mo from numpy import loadtxt from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split + from xgboost import XGBClassifier import wandb DATASET_URL = ( @@ -31,252 +37,119 @@ @app.cell(hide_code=True) -def _(mo): - mo.md(r""" - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py/server) - """) - return - - -@app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - Weights & Biases - - Use Weights & Biases for machine learning experiment tracking, dataset versioning, and project collaboration. + -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - # Using W&B Sweeps with XGBoost + Weights & Biases by CoreWeave + Weights & Biases by CoreWeave - Squeezing the best performance out of tree-based models requires - [selecting the right hyperparameters](https://blog.cambridgespark.com/hyperparameter-tuning-in-xgboost-4ff9100a3b2f). - How many `early_stopping_rounds`? What should the `max_depth` of a tree be? + # Using Weights & Biases Sweeps with XGBoost - Searching through high dimensional hyperparameter spaces to find the most performant model can get unwieldy very fast. - Hyperparameter sweeps provide an organized and efficient way to conduct a battle royale of models and crown a winner. - They enable this by automatically searching through combinations of hyperparameter values to find the most optimal values. + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/using-w-b-sweeps-with-xgboost/using_w_b_sweeps_with_xgboost.py/server) - In this tutorial we'll see how you can run sophisticated hyperparameter sweeps on XGBoost models in 3 easy steps using Weights and Biases. + Hyperparameter sweeps search combinations of model settings and record + their performance. In this lesson, compare XGBoost's tree and linear + boosters while exploring learning rate, tree depth, and row sampling. - For a teaser, check out the plots below: - """) - return + There are three steps: + 1. **Define the sweep:** choose the search strategy, parameters, and metric. + 2. **Initialize the sweep:** register the configuration with `wandb.sweep`. + 3. **Run an agent:** call `wandb.agent` with a training function and run count. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ![image.png](data:image/png;base64,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) + This notebook runs on a CPU. On macOS, install the OpenMP runtime with + `brew install libomp` before starting the notebook if it is not installed. """) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## Sweeps: An Overview + ## Authenticate with Weights & Biases - Running a hyperparameter sweep with Weights & Biases is very easy. There are just 3 simple steps: + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - 1. **Define the sweep:** we do this by creating a dictionary-like object that specifies the sweep: which parameters to search through, which search strategy to use, which metric to optimize. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - 2. **Initialize the sweep:** with one line of code we initialize the sweep and pass in the dictionary of sweep configurations: - `sweep_id = wandb.sweep(sweep_config)` + ## Set your team and project - 3. **Run the sweep agent:** also accomplished with one line of code, we call `wandb.agent()` and pass the `sweep_id` along with a function that defines your model architecture and trains it: - `wandb.agent(sweep_id, function=train)` - - And voila! That's all there is to running a hyperparameter sweep! - - In the notebook below, we'll walk through these 3 steps in more detail. - - We highly encourage you to fork this notebook, tweak the parameters, or try the model with your own dataset! - - ### Resources - - [Sweeps docs →](https://docs.wandb.com/library/sweeps) - - [Launching from the command line →](https://www.wandb.com/articles/hyperparameter-tuning-as-easy-as-1-2-3) + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `XGBoost-sweeps`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - mo.md(r""" - ## Authentication - - To run this tutorial, authenticate with W&B and choose where to create the - sweep. Get an API key from [wandb.ai/authorize](https://wandb.ai/authorize), - or leave the key blank to use `WANDB_API_KEY` from marimo's Secrets panel, - an existing W&B settings file, or a prior `wandb login` in this runtime. - - If you work in a team, enter its entity slug. You can find it in the URL of - your team's W&B workspace; leave it blank to use your default entity. - - When running locally on macOS, XGBoost also needs the OpenMP runtime. Install - it once with `brew install libomp`. Hosted Linux environments generally - provide the required runtime with the XGBoost wheel. - - Submitting the form creates a new Sweep Controller and then starts the - requested number of W&B runs. Editing fields without submitting does not - create anything in W&B. Editing the `sweep_config` or `train` code below - resets the form so you can review and submit those changes explicitly. - Submitting again creates and runs a new sweep. - """) - return + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="XGBoost-sweeps", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(sweep_config, train): - # Check the native XGBoost runtime before creating a Sweep Controller. - # On macOS, the XGBoost wheel requires libomp from Homebrew. - try: - from xgboost import XGBClassifier as _XGBClassifier # noqa: F401 - except (ImportError, OSError, ValueError) as _error: - _xgboost_error = str(_error) - else: - _xgboost_error = None - - _macos_help = ( - " On macOS, run `brew install libomp`, then restart this notebook." - if "libomp.dylib" in (_xgboost_error or "") - else "" - ) - mo.stop( - _xgboost_error is not None, - mo.callout( - mo.md( - "**XGBoost could not load its native runtime.**" - f"{_macos_help}\n\n" - "The sweep has not been created, so fixing the runtime and " - "resubmitting will not leave failed runs behind." - ), - kind="danger", - ), - ) - - _api_key_input = mo.ui.text( - value="", - kind="password", - label="W&B API key (blank uses runtime credentials)", - ) - _entity_input = mo.ui.text( - value="", - label="W&B entity (blank uses your default)", - ) - _project_input = mo.ui.text(value="XGBoost-sweeps", label="W&B project") - _run_count_input = mo.ui.number( - start=1, - stop=50, - value=25, - step=1, - label="Number of sweep runs", - ) - - sweep_form = ( - mo.md( - """ - {api_key} - - {entity} - - {project} - - {run_count} - """ - ) - .batch( - api_key=_api_key_input, - entity=_entity_input, - project=_project_input, - run_count=_run_count_input, - ) - .form( - submit_button_label="Create sweep and run agent", - bordered=False, - ) - ) - - mo.vstack( - [ - mo.md( - f"Ready to submit a `{sweep_config['method']}` sweep using " - f"the `{train.__name__}` training function." - ), - sweep_form, - ] - ) - return (sweep_form,) - +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) -@app.cell(hide_code=True) -def _(sweep_form): + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - sweep_form.value is None, - mo.md( - "Review the sweep configuration below, then submit the form above " - "when you are ready to create the Sweep Controller and launch its runs." - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _submitted = sweep_form.value - _api_key = _submitted["api_key"].strip() try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _login_error = None - except wandb.errors.Error as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. " - f"Check the API key and try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - sweep_request = { - "entity": _submitted["entity"].strip() or None, - "project": _submitted["project"].strip() or "XGBoost-sweeps", - "run_count": int(_submitted["run_count"]), - } - mo.callout( - mo.md("Connected to W&B. The submitted sweep will start now."), - kind="success", - ) - return (sweep_request,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## 1. Define the Sweep + ## Define the sweep - Weights & Biases sweeps give you powerful levers to configure your sweeps exactly how you want them, with just a few lines of code. The sweeps config can be defined as - [a dictionary or a YAML file](https://docs.wandb.ai/guides/sweeps/configuration). + A sweep configuration can be a [Python dictionary or YAML file](https://docs.wandb.ai/models/sweeps/define-sweep-configuration). + Here we use a dictionary with three main fields: - Let's walk through some of them together: - * **Metric** – This is the metric the sweeps are attempting to optimize. Metrics can take a `name` (this metric should be logged by your training script) and a `goal` (`maximize` or `minimize`). - * **Search Strategy** – Specified using the `"method"` key. We support several different search strategies with sweeps. - * **Grid Search** – Iterates over every combination of hyperparameter values. - * **Random Search** – Iterates over randomly chosen combinations of hyperparameter values. - * **Bayesian Search** – Creates a probabilistic model that maps hyperparameters to probability of a metric score, and chooses parameters with high probability of improving the metric. The objective of Bayesian optimization is to spend more time in picking the hyperparameter values, but in doing so trying out fewer hyperparameter values. - * **Parameters** – A dictionary containing the hyperparameter names, and discrete values, a range, or distributions from which to pull their values on each iteration. + - **Metric:** the logged metric to optimize and whether to maximize or + minimize it. Our training function logs validation accuracy as `accuracy`. + - **Method:** `random` samples combinations, `grid` tries every combination, + and `bayes` uses previous results to choose promising settings. + - **Parameters:** the values, ranges, or distributions to search. - You can find a list of all configuration options [here](https://docs.wandb.com/library/sweeps/configuration). + Both boosters use `learning_rate`. The [tree parameters](https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster) + `max_depth` and `subsample` affect only `gbtree`, so the training function + applies them only to tree models. Their sampled values are still recorded + in every run’s config. Filter to tree runs when comparing those parameters. """) return @@ -300,256 +173,164 @@ def _(): @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ## 2. Initialize the Sweep - """) - return + ## Initialize the sweep + `wandb.sweep` registers this configuration with Weights & Biases and returns a sweep ID. + The sweep service supplies parameter choices to agents and tracks the + metrics their runs report. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Calling `wandb.sweep` starts a Sweep Controller -- - a centralized process that provides settings of the `parameters` to any who query it - and expects them to return performance on `metrics` via `wandb` logging. + Running this cell creates a new sweep. To add trials to the same sweep, + rerun only the agent cell below with the existing `sweep_id`. """) return @app.cell -def _(sweep_config, sweep_request): - sweep_id = wandb.sweep( - sweep=sweep_config, - entity=sweep_request["entity"], - project=sweep_request["project"], - ) +def _(entity, project, sweep_config): + sweep_id = wandb.sweep(sweep=sweep_config, entity=entity, project=project) return (sweep_id,) @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - ### Define your training process - Before we can run the sweep, - we need to define a function that creates and trains the model -- - the function that takes in hyperparameter values and spits out metrics. - - We'll also need `wandb` to be integrated into our script. - There's three main components: - * `wandb.init()` – Initialize a new W&B run. Each run is single execution of the training script. - * `wandb.config` – Save all your hyperparameters in a config object. This lets you use [our app](https://wandb.ai) to sort and compare your runs by hyperparameter values. - * `wandb.log()` – Logs metrics and custom objects – these can be images, videos, audio files, HTML, plots, point clouds etc. - """) - return + ### Prepare the dataset + Download the Pima Indians Diabetes CSV once and reuse it across trials. + The first eight columns are features and the last column is the binary + target. Each trial uses the same split seed and held-out fraction so its + accuracy can be compared with other trials. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - We also need the Pima Indians Diabetes dataset. Each sweep run reads this - small public CSV directly from its source, so the notebook does not rely on - a repository checkout or leave a downloaded data file behind. + Because the sweep uses this held-out split to select hyperparameters, it + serves as validation data. Use a separate test set for a final evaluation. """) return -@app.function -def train(): - # XGBoost model for Pima Indians dataset - from xgboost import XGBClassifier +@app.cell +def _(): + with urlopen(DATASET_URL, timeout=30) as dataset_response: + dataset = loadtxt(dataset_response, delimiter=",") + X, y = dataset[:, :8], dataset[:, 8] + return X, y - if wandb.run is not None: - wandb.finish() - config_defaults = { - "booster": "gbtree", - "max_depth": 3, - "learning_rate": 0.1, - "subsample": 1, - "seed": 117, - "test_size": 0.33, - } +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ### Define the training function - # The sweep agent overrides these defaults with each sampled configuration. - with wandb.init(config=config_defaults) as run: - config = run.config - - # Load data and split it into predictors and targets. - with urlopen(DATASET_URL, timeout=30) as dataset_response: - dataset = loadtxt(dataset_response, delimiter=",") - X, y = dataset[:, :8], dataset[:, 8] - - # Split data into train and test sets. - X_train, X_test, y_train, y_test = train_test_split( - X, - y, - test_size=config.test_size, - random_state=config.seed, - ) - - # Fit the model on the training data. - model = XGBClassifier( - booster=config.booster, - max_depth=config.max_depth, - learning_rate=config.learning_rate, - subsample=config.subsample, - ) - model.fit(X_train, y_train) - - # Make predictions on the test set. - y_pred = model.predict(X_test) - predictions = [round(value) for value in y_pred] - - # Evaluate and log the result. - accuracy = accuracy_score(y_test, predictions) - print(f"Accuracy: {accuracy:.0%}") - run.log({"accuracy": accuracy}) + The agent calls `train()` once per trial. Inside the function: + - `wandb.init(config=config_defaults)` starts a run. Values supplied by the + sweep override the defaults. + - `run.config` provides that trial's hyperparameters. + - `run.log({"accuracy": accuracy})` reports the metric named in the sweep + configuration. -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ## 3. Run the Sweep with an agent + The context manager finishes each run before the next trial begins. """) return +@app.cell +def _(X, y): + def train(): + config_defaults = { + "booster": "gbtree", + "max_depth": 3, + "learning_rate": 0.1, + "subsample": 1, + "seed": 117, + "test_size": 0.33, + } + + with wandb.init(config=config_defaults) as run: + config = run.config + X_train, X_valid, y_train, y_valid = train_test_split( + X, + y, + test_size=config.test_size, + random_state=config.seed, + ) + + model_params = { + "booster": config.booster, + "learning_rate": config.learning_rate, + "random_state": config.seed, + "n_jobs": 2, + } + if config.booster == "gbtree": + model_params.update( + max_depth=config.max_depth, + subsample=config.subsample, + ) + model = XGBClassifier(**model_params) + model.fit(X_train, y_train) + + predictions = model.predict(X_valid) + accuracy = accuracy_score(y_valid, predictions) + print(f"Validation accuracy: {accuracy:.1%}") + run.log({"accuracy": accuracy}) + + return (train,) + + @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" - Now, we call `wandb.agent` to start up our sweep. + ## Run the sweep agent - You can call `wandb.agent` on any machine where you're logged into W&B that has - - the `sweep_id`, - - the dataset and `train` function + The agent requests hyperparameters from Weights & Biases and calls `train` for each trial. + `count` limits how many runs this agent launches. Without a limit or a + manual stop, a random-search agent can keep requesting trials. Start with a smaller `run_count` for a quick check. - and that machine will join the sweep! - - > _Note_: a `random` sweep will by default run forever, - trying new parameter combinations until the cows come home -- - or until you [turn the sweep off from the app UI](https://docs.wandb.ai/ref/app/features/sweeps). - You can prevent this by providing the total `count` of runs you'd like the `agent` to complete. + Agents on other machines can join the same sweep using its ID, entity, + project, and the same training function and dataset. The count applies to + each agent, rather than the whole sweep. """) return @app.cell -def _(sweep_id, sweep_request): +def _(entity, project, sweep_id, train): + run_count = 25 wandb.agent( sweep_id, function=train, - count=sweep_request["run_count"], - ) - sweep_complete = { - "entity": sweep_request["entity"], - "project": sweep_request["project"], - "run_count": sweep_request["run_count"], - "sweep_id": sweep_id, - } - return (sweep_complete,) - - -@app.cell(hide_code=True) -def _(sweep_complete): - mo.callout( - mo.md( - f"**Sweep complete.** Agent `{sweep_complete['sweep_id']}` finished " - f"{sweep_complete['run_count']} runs in project " - f"`{sweep_complete['project']}`." - ), - kind="success", + count=run_count, + entity=entity, + project=project, ) return @app.cell(hide_code=True) -def _(mo): +def _(): mo.md(r""" ## Visualize your results - """) - return - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - Now that your sweep is finished, it's time to look at the results. + Click on the link returned by Weights & Biases in the previous cell. The link will look similar to the following: - Weights & Biases will generate a number of useful plots for you automatically. - """) - return + ```bash + 🧹 View sweep at https://wandb.ai/wandb/XGBoost-sweeps/sweeps/wna9genj + ``` + Navigate to the **Sweep** panel. By default, Weights & Biases plots [parallel coordinates](https://docs.coreweave.com/products/wandb/app/features/panels/parallel-coordinates#parallel-coordinates), [scatter plot, and a parameter importance plot](https://docs.coreweave.com/products/wandb/sweeps/visualize-sweep-results#scatter-plot-and-parameter-importance). -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### Parallel coordinates plot + ## Verify and next steps - This plot maps hyperparameter values to model metrics. It’s useful for honing in on combinations of hyperparameters that led to the best model performance. + Check that the agent's runs finished and that each run has an `accuracy` + value and the sampled parameters in **Config**. Inspect the parallel + coordinates and parameter importance panels, filtering to tree runs when + evaluating `max_depth` and `subsample`. - This plot seems to indicate that using a tree as our learner slightly, - but not mind-blowingly, - outperforms using a simple linear model as our learner. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ![image.png](data:image/png;base64,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TgIkQAJNSkD/QzeLGroTkZqW3qTpM3ISIAESqC8B3V4ZxZL6XstwJEACJPCoBLQoSzH1UQnyOhIggcYmoAVj8xiusdNhfF4CFGVpCSRAAiRAAk1CQP9DN4sc8jsiehBstny/GWl6hoj+5tPZJrktjJQEwoaAbkN0m2D+bsw2gqJs2JgFM0oCLYoARdkWdTtZGBJoEQRkrGaeXdsiChaihaAoG6I3htkiARIggZZAwPx6jIgq/CffEu4sy0ACLYsARdmWdT9ZGhIIFwIUZcPlTjGfJNDyCYgYK2M1s6uUll/y5i0hRdnm5c/USYAESIAESIAESIAESIAESIAESIAESIAESIAEWhkBirKt7IazuCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAs1LgKJs8/Jn6iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAq2MAEXZVnbDWVwSIAESIAESIAESIAESIAESIAESIAESIAESIIHmJUBRtnn5M3USIAESIAESIAESIAESIAESIAESIAESIAESIIFWRoCibCu74SwuCZAACZAACZAACZAACZAACZAACZAACZAACZBA8xKgKNu8/Jk6CZAACZAACZAACZAACZAACZAACZAACZAACZBAKyNAUbaV3XAWlwRIgARIgARIgARIgARIgARIgARIgARIgARIoHkJUJRtXv5MnQRIgARIgARIgARIgARIgARIgARIgARIgARIoJURoCjbym44i0sCJEACJEACJEACJEACJEACJEACJEACJEACJNC8BCjKNi9/pk4CJEACJEACJEACJEACJEACJEACJEACJEACJNDKCFCUbWU3nMUlARIgARIgARIgARIgARIgARIgARIgARIgARJoXgIUZZuXP1MnARIgARIgARIgARIgARIgARIgARIgARIgARJoZQQoyga44ZevXEX0oHdRWFgUIAQPkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDDCVCUDcCsPqKsCLajx07A/fspAWLhYRIgARJoXALLlq9A+zc7qs/efZ/WGbkxfKAHTcYw9YmzzkQZgARIoNUTkD6StDnSvpg36Tf16P12g9oycxz8TQIk0LIJuFxlmDZjlvrIfl2bDq/7SDKWM2/s75iJ8DcJkICRgLQbug2R9qe2tkfGTDqs8Vv6N1ofsgpj1S8y5oH7rY8ARdkA95yibAAwPEwCJNBsBOQfu+4gaMEjkIiqzxv/8cu+vl4XoiFx6mv4TQIkQAK1ETAOQoxtkFwj54wDFi3QWgkotaXBcyRAAi2XQEOEEU1B2hrd3li1K+zvaFL8JgESsCIg7UbUoCE+QdVq3GR1nfGY+Rppd3S7ZAzHfRIwEqAoa6Rh2Kcoa4DBXRIggWYnoEVWo3Ah+2aRtbaMmjsbjRFnbenxHAmQQOsmUN/BiAxYOGhp3bbC0pOAFYH69nPM/RuJy9j+sL9jRZfHSIAEjATMfRFpNxryVrS0V8aHzhK3OU5jetwnAU2g1Yqy+p+zcaq57OtBgVQqee3u8JGjvmnpxld/5bz5Wjkmm8ShOwLGOM1pShjzJsd0vMb0zOH4mwRIoHURsBpwWB2rjYo5vPm3XGt1rLY4eY4ESIAEAhHQfaFA5/VxDlo0CX6TAAkYCcjYqj4Pn/W4TcZaejMes+rbWB3T1/KbBEigdRHQ7k+M+ozVsUBUAoXVulCg63icBIRAqxRltTiqK53+rUVVASP7RkFVjkmlMgqlgf6ZSzi51hifOQ2riiv5MXY8jJ0JmisJkEDrJmDVHki70tAnuMY2rDHibN13haUnARKojUB9RFmr/lBtcfIcCZBA6yEg/RTj2ChQyc1jKAkn4zTpIxUV2dWYzNj/kfMN7UMFSpvHSYAEwp+AWavRJaqvqFqXLqQn3dWnPdNp87v1EGiVoqxVpZEKJx+9BRIr5B+6nJPNKh45bo5LjlkNTIwdDauOgR6o6PRUog//pKen49q1a7V+rl+/Dvlc6zIBV9sM44cMaANhagO3ek3FxbPn1UOh7GvxuN5hrLqXaV9cUscunj6HhOGLa72/uUmpKqy0T7kfH8OjxHl92ZZa2xxpk3ztTp8puNp2KK699i6utXsXN9oPxt1OUbj/dl88GNYBBRPbwT7tVX7IgDbQQm3AsX0W9u7ahWXLlkP2req7c09stY/Z+LsoXtSzRri0bQvr3e7kLekH+4w/qk/xrD+gZM4rcMx/Gc5Fv4Ur9jf8kAFtIJxsYFUHXDp3CtNmzETpneMB7517/xTs3bNHibclZzd6w63qgOS7t5R/yJQb53Hp/DnVB8pPugbXsldVGNvNE+rY5XOn4Vw/BLmTXkP8kC643LcPLi56v97tTuf/+hAvPT0bb31/Bt55ZgqG/2QiZv5iHJb+1yhs/u0wXOo0AMn9eiNzcDdkD++C3NGdkDepM4re64ziuB4oWRMJx6cz4Dq3Fu67h+HJvWcc8nGfBEggCARqE2WNGlGgrFg9GBIt5/SZsz4ftVrbCSTMFhYW1tnu6LHWjRvXEF6f6ygpKQmEr9Ufb5WirK4QUnlks6qEtYmy+rqGiLJSmfUTEuO3rpQSl3ElYmMYK1FWKm1SUlKtn7vnTiiBJHloFJIj3uaHDGgDYWoDqWNG4OJZ74DiQXwC7r8bre5l9pXLahZI0o2bkDCB6nnppQu+mf75mZnq+vrGmdizH253iMLNNwbi5oSFuL73s9o/+z9X7c7NfhNwo/0gXG8/GNfbDVHi7NU2Q/2F47bv4tZb0Uh+uy+yR3SAbUL76s/E9rBNeRO2aR2QP7Mz8md3RcG8HihY0IsfMqANhIENlOyJw57dXlFW9s11t/Cj0biflKT6PtKvcpzcrsLkz++FzGm9cG9sTySM6Iqk2NG4e3Q34o/vqv4c24X4Y7vVR87dPb5PtTsPYvujYNqrKJz2KoosxG7b9HZ4MKsTMub0RNrcPvyQAW0ghG0gc+kwXDx7RomyBbfOB7xXebvex56Homzumf0qnFybdPum6iPlJtzAxYeibF5SPO5PGIDEQT2RffWiOn/v1g3kTx+AS2/3xAe/G4x3XpiIrv+7ClvWnvB9tq07gV0bj2HfpqPYv/koDm45is+3H1XtzpR2cej49zPwp7+dhV/95Tz88KmFeObJGL/Pr787BwOfn4K4X43G0TZDkNAl0vdJ7DYAyb3eQco7vZAZ3Q0PRngfXJfM/j1KF7wCZ9wf4figPUrWdIdz+7twHZwF16mVcN/4FBVZt1q9mEEAJNAYBKz0IIlXNByt/QRKx6wtBQonx0XXMfud1eGdTmet2o5oPwkJCardSbq2FZlXpobFJ/XKYpXn4uJiXVR+mwi0SlFWGEiFMAqf5spWmyirRdL6irL1qahW6ZnuVYN/5ufnqwqQO6M73PdvN/h6XkACJBA6BKzaG6tjVjmW9k3aO9126TBW19+7E69mliTduIV7UWN8g4b4zpGI7xyBpJ6DcX/MdGSt2KCj8fuWB0YyW7asrMzveNb7K5HUbyjiO0Xhbodo3H5zEG68PgTX2hqE2rbDED9sPlKXrEPG8rVImTwPSf1H+PKgBjE9BiF51HSkL/oAD7btQdGZi3ClZfqlxR8kQAKhQUDankAzTPQASB5O2wsc2D7pKib/+37M+fEc7HszGtnT2qjZbKULXkb+5NeQMSUauRuWwnH9fI3C2e121e7IgMa4Oe/dR87iOcga0Qe5I99EwaS2vpm4RUv6w3FiCzwOu/ES7pMACYQQAem36AkstWVLj6MK8sEbVGMAACAASURBVPNRlnQLjutncfmS922inItnkXT5ourbJN+5rQTY25FRuHPhijp2/fJdvPzMCp+I+ou/mI+3fzANY346ERHPTUX/Z6Zh4n/Ow9mVn/tlQWZ9SX+ntLTU77j8uHIxC3EzzqD/G7vxb99ehh8/sQTPPbHYl8ZPnlqEP353Pgb9w3v48D/H4XbnSCR0jfDv73SJRFL3/rjfpy/SI3sosbZQ2rAZr6Jk9h/gmP8KXDHyFsCLcMa+BOf7f4Djoy5w7hwKx5EYuG8dgKfEViNvPEACJFCTgJVeY3Ws5pXWE/yswskxq7FXoLBWx/U4K/vyWFReeDYsPiUX/6DaSoqyVnfUe6xVirIyEKjLD6P+5y5h9WauRObfOpwMQMyDEBmY1Nap0IMTs2ii43yUby3KPpjUF7njez5KFLyGBEggRAjojoGxjZD92toVyboWZOXbvBnjzF6xHinjZ+HypcuYNn0m8i9eR0LnCCR0i0bqtIXmSwP+1p0FsyhrvKAsNV0JrnqmSHzHSNx+cyButB8CPZv2WvuRuDd/PYou30VliQOltxOQ/9kxZK7ahJQZi5AUPdZv8JLYYxBSJs1FzqaPUXLtFqrKK4xJcp8ESKAZCAQSZXWfR1xC5WTasL7tPJx5pxfsC15RQmzJoj8gf3Jb5LzbCblrVsCdnlZr7gOJssaLXOnpyJg9GxlR3ZE7vCPyx1e7UCnePhvu1JvG4NwnARIIAQJ19XM8zlKUXvoC+empamyXHB+P/Gn9Ubp/E/bu3Ydlyz7ArSVbcfvjc5g2fRYuXbqC7QuvYOCbu3Hx4mVMnT4Lxw8kocc/TMeCfx2HVf8zEhP+cSJefHouev3qQ6TH5wakUJsoG+iiqcOP4T//vxX48ZOxfiLtC08sxv/8+QeI+OsP8HHHlbg/dhYS33kXCd2qZ9TqPlNy73eQ1r8Xsgd2Rd7wjrCNehMFE15D8Yw/oWTuK3AtfsnrwuGhqwpn7G/gEMH2w45wbhsM56E5cF3diQq6SQh0m3i8lRIw91nqoxkJqkCakBVGadPM/q2twgU6psdZ2ZfHwXP+ubD4lF78I0XZQDf04fFWK8oafcNaMZIKIzPLtJChxQuj2KoHFRLWuFmJsjqs8fqcnBzIR2+Slnk6uzluHbY+39WibB/YxreD48Kx+lzGMCRAAiFKQNoI/Y9ctym6jZIsm9sQ3Y4Z2x1j0Vz5+WrQEj1wiHLjouIcOEQdg8N/pqvxutr2dWehNlHWeH3mB+uR0HOQn8B6p0O0n0B7s880ZO88gkqXf548rjI4Eu+j8NhpZK/fjrQ5cbj37kQlJCd0H4j7E2ar48WXb6DKXW5MlvskQAJBICBtkrH9KXrgROLFHPUwydzfgduB4u3vIfvdTsh4NwIFu3fCYzEDzSrb9RFljdc9WLsOqZH9kCWixugOKJr+UKD9cBjKM+4ag3KfBEigGQlIP8b48LmypAiOa2dx+cIF7xtAFy/BFjsZtkOHlQArD5VlzCYiSY9eb+PixStIu1EIR6kbe/buQ1R0dX9H9uXY1TkbMe4fJ+K/vjMP//jNhZjea1u9Svwooqw54snvHsUL34jFM08s8s6ifSIG//bny/Dal1cj4q+3Yev4K3DbCpD78T6kTFuIpAGjkNDVX6hN7BmB+5EDkDm0L/JGdEDeyA6wjXkLhRO9Qm3pvJfhXPwbuPTnoVgrfraVYLu8LRwb+8FxeAEq7p8D4DFnk79JoFUQUO1G77d9bxZK/8XY/uhxlVmfCSTKSh/IeL0euxn7RQ0Fq8dZFGUbSi60w7dKUVZuia5URhcGxgGC7gRs277T5+bAWKn0bZXKpuOQfdmkollVNl0RdXhJT5w/GzdjfBJu/sIYJZYYw9R3X4uyeTO7wzb2dWSO6FvfSxmOBEggRAlI26LbEN3m6Kzqc9J+6QdJOqzxW8LZduxDQpcIFJ+9pNorfd4cp467vt+6s1BfUVbF6/Egc8UGr5jaJRKJvUSkjUB8pwjceWsQrr/2rvJFe+2tMUhd8THK8gprzY4IsCLEZq3eguSR07yCb7doNfMka81WFF+6Bo/TVWscPEkCJPBoBAK1PdKH2jP3Oo4fOutrw3S7I9/SJ0q6dg35ez+Gx+loUOINFWV15LkbNyJtQB9kRvRAzugeKHrvLa97g01TUfHgvg7GbxIggSAT0P0ZYxshD6Xzrl9CwfIZ2LN7j2pHpM+ypONJjP3ZXtiyipUAoq+RvpDtgQNdf7sNz341Bp9uT6jR3zm5544SQ194ahFm9/+4QaVsDFFWJ1hid+OlH6/GswZftD/9yhK88uer0OPLGzH91wfhdlbq4HBn5SB78y4kT5iNhHeGqz6Tnkmb2Gcw0kaNRva0Ycgb29Ur1MriYhO6omBiexRPexXO2b+HY+Hv4Ij9PRxLXoFriWF27eLfwPn+H1G6tidcB6bDffMAPG4u0OODz50WTcCoEZm1H63TmMdKco2eNGOEk52d43tjUbdL5muN4euzr8dZFGXrQyt8wrRKUVYqjrmSyS2TDoB8WsqmRdkHc/urf8g5wzqiaN+mllI8loMESOARCYgQG98lAnc7R8B+6MwjxmJ9me4sNEiUfRhVhcOB1JkxD2fNRuB+9Ajlx1bcKMR3jPLOnm07DOLa4P6SrSgvqJ/D+MriEhScOIv0uI+q3R50jULy6OnKHYL9/BVUOvx9UVqXjkdJgAQelcC9czZ8MXkZXJ/NtYyiqrwclaWPNvB/VFFWMuJxuZC1aJF6HTh9QA/kzhmCojkdYJ/WBsW7F6OqrGECsWXheJAESKBeBDylxXBeOQV3+r0a4V02O2J/tRJ9vrIOu6Z73Y2kXMlHaaG7Rlg5MGfcF3jmSe8M1N88PQdr/neUehCtA8dMPYtnn1yEqJc/QkV5teCpz9f13ZiirDGtZfPO4yffWeLL+w+fiMUrf7YKPb60AWN+uhf5mRb9FXcF8vYeQvK4WUiQB9vifkotJhaFpIgRSJ86BQ9ipiBvUm+vSCszaif2hG16HxRM7Qj7FK+/bYeItbGvoXRpGziXvKz81cqMWuW39v3feX3W7hoL16Wt8JQEdu1gLA/3SYAEGo+AHmdlXxoHz7nnwuJTeoHuC+qygFYpysoTCvPTDD2L9XGfXtQFPJjntShbcvMc8ka8pfwNZQ7uCRn4cCMBEmg9BGRRLlmkSzrosmBXYtdolF650iQAdGfhUURZnSHxOZvQ+12V36So0UifMlWJyD5x9q0huPbGKFx9fZSaOVtR0jDRpCwrB7YDR5E2930kvj3MO3DpGoX7k+ep4yLiciMBEnh0AtcOZmLKrw6oGV6RT2/H0RnbUbqmp/Jz6PyoE8qu7UHRwb1Ij+6LzAkj6vQZW1dOHkeU1XGLz9nUgRFIH9AT6cMGonjvUhTNegNF87vBef2oDsZvEiCBRibgcZSg5OR+5C+ZgLyRHZVo+GBiX9yZOBVb34hD9LdWq7ak/7e3YkmnEzi79T7KSq39xhfmu9D999vU7NcfPLEIf/r+Aux+WWaSRuL8a+/icPQy/PNfeoXaX/7VImQl5z9yaZpKlNUZKimpwOv/tRnPPrVIuTf40Vdi0e7Lq5U4O/j7O5B8MfAiXjKTNvODdUiMHof4rlHefo6ItL0GIXXqXOTv3IiCdQuRN21AtUg7tits7/VD4cwuKJ76qvetgVltULq8Jxyr+8Cx4i0448Tv94sPfdbKAmO/RenKN9XiYq5THz50f6BLwG8SIIHGJqDHWUqUPfscPGHwKT1PUbYuO2iVoqxAsXotRmbQtqRNi7IVFRXIn9AOeaPfQHpET9jWLGpJxWRZSIAEAhCw37/v7Yh3FjE2Ane7RKDkyq0AoRvnsO4sPI4oq3Li8SB54hyV//geA1F88SpSx4yrFpc7ReBW3/Fq1uy1DmORse5TVDoewSVBVRWcicnI3bEPKVMXQBYMk8XNxHdbwecnUFnaMMG3cSgyFhIITwJGMTbqe9uxf855lO6erAbwjpVvouzKTlSWFiN7wSwlfuauXtEoD4obQ5RVxMWVyty5SOvfE2kD+qLk7EnY147zihOrR6GysHodgPC8Q8w1CYQGgaoyF0rPH0H+8mnIG9UZuaO7IDdmIq7OXIHlr25Gr69sUkKstCMr+p7GlX3pqKyoCph5l6sCUZ324rmnFuMHT8TgNz9Yjt0vj1Z9iMuvD8bp6BhsnXsUz301BiLW9vv1qoBx1fdEU4uyxnzI7NlnHro2+McnluCNL69V4mz/72zBhU9SjUEt922fHUOSuHPSAm3nCCT2HoKMBctRevs2Ss8fReHm92GbPViJtHI/bPPeRUHccBTN6+ZtA6e9iqJZr8O+diQcn0yBY8dwlK7pCsf7v/f6q33oq9YZ+xJKV74B166xcN/4FPBYC+iWGeVBEiCBWgnocVb2xXHwnHk+LD6l5yjK1npTAbRaUbYuMC3hvFGUtb33tvonaxvfHumRPVBpL2oJRWQZSIAEAhC4Hzna9/pafJdIpC8OjmsW3Vl4bFH2YbnyPj3sm+FhO3gMFQU2pAweZihbNBLGxSqfs9e7TkTe4fMBiNTvsLzKXHDsNFJmxDxcMCxa7RccPUUXB/VDyFCtkEDm3SLM+PVnSkQZ+H92YP/CW3DeuwQRYuXVV8fn84FKN9w52WpmbPq7A1B8QRaUaZyt0UTZh9kpOHwEaQN6K5cG+fv3w3XlEOxzOipBwnX5s8bJNGMhgVZGoKqiHI6rp1Hw0VwlwsqsWNvSyUha9wmWdvwcvZ/crNqQIX//MdYMPIfbx7JRFViH9dFb+/5lvPCNxUq0/Je/XYYPOyzGtTcH4dqbA3G812y4i0oxred2PPNEDJ5/ahF2f9A4bpuCKcrqwr7x35vwgycXKWH5n78Sh45fWofuX9qIyKe3IeuOXQer9Tv/8Akkj57hm0Gr3qDqPwJZa7cB7gpUFNpQcnwvbHGTkDeqk3f28oLhKFz3Huzrp6JoYQ+fSGuf2wn2zdPgOLcbrrPr4PzsPZSu6QFn3O/8ZtQ6lrWBY+sguM5tAFz1y2etheBJEmilBPQ4i6JsyzIAirIt6376lcYoypbbcmEb9SbyJ74G8Zn2IGaSX1j+IAESaBkEMtdsg4iwXlcFEUjsMySoBdOdhcYSZSXzZffTkdB9oCpTzvodqjyu+FtI7OZ1xyCzgJNHzMDdkYuVOBs/eglcWXmPXW5xY2Dbfxj3J3hn7Mos2tT3YpVoK+ItNxJo7QRcJeVYO/gcej+xCX2/vhk7Jl+F2+GC88iih7Nj30B5uvctJMet60gf3A+Z44ejPK9xfRE2tigr99WdnYPUyH5q1uyDtetQac+D/cNhSowo3jwdVW62Aa3d/ln+ehCoqoLr9mUUbFiMvPE9vRNE5g1D0cGdOPH+JbVAlyxkJW1IzBvHcPNwVj0i9QZJSy7Cr59bpWbGPvu1GMwduAfH23hnx37RZiTybnj90vZ78SMV5mffXIT0xMZre5pDlJWSZ2eX4BffW6pEZpn1+69PLEXnL21Q4qy4jalsgHvcgqMnkTx2JhK6aRcHUWpGbdG5Swqyx1kKx7kjyF85C7ljHi4aNnswCrfEoXj/KhRvn+0v0k5vC/vqUXCc2oGK9JtwnVwOx8Z+cC79Y/Vs2sUvwhH3BzjW94XzWBw8BWn1vucMSAKtnYAeZ2VfGAfP6efD4sOZsnVbLUXZuhmFbQijKCuFEBcGIszmTu6uhFl3Rt2vu4Rt4ZlxEmhtBHLt6rU0ryArrgoiUZaSEnQKurPQmKKsFMJtK0BCnyFqhmz6wuWqXJVOB1LfHeb1NytCdPdo5Hx8GDJj9mr7kcqlgae8cV6bc+fakLtzH+4Nn+KdudtjkPJJW3jyXKO8fh30G8UESeAxCRxblYiov9muZrbFdjyO/IxSVObchXNtDyXIOvfPQJW7VKVSsH8P0iN6Ieu9KfA4vMceM3m/y5tClJUEPLL44OAopPfvgcz584EqD0qPrIddhIfFfVCRc98vH/xBAiTgJVB27zYKti1H7qS+Xp+l0/qjcNcaPLiUoB7kDPjONtV2DP7+TuycchVFORaLV9UCc1ifA3j2qzHK12qbX67H+fkf48rrg3G3UySOdZuFKo93iu2rz8mCWTH496cXobiwcd0RNZcoq7HsXHcLzz/lnSEss4D/9JWPFNOef7YBn8y8oYPV+9u2/wiSBo3zPdhP6DlYuTdw5zz0XatnOq9fhLwJvbz3dco7KNjyPkrPHIDjzG7Y142vnkUr7g7i+qPk4Eq4U24AbodaIMy5Ywgcy9vCuVgWEPN+ZFGx0o+6wnFwFirSLtc7zwxIAq2NgB5nKVH21PPwhMGn9CzdF9RlpxRl6yIUxufNoqxt8VDvE+oZXZAR2R3Z04aGcemYdRIgAU0g6/3Vhtf5I5C9bK0+FfRv3VlobFFWCiKzUxMjRilRVFYY1lv+5vVeX7OdI9RgInf7Ptybv0HNmr3VfxYc9zJ00Eb5dqVlInv9diRFj/UKtL0GI23BMhSevoCqRhKBGyWjjIQEmoBAXkoJpv33QTX4H/fzvYg/9UCJla4zH8EV9zKcH7RD+b3TvpRz132o/Mc+WPE+qioa5yGJL/KHO00lyqroPR6kjR6hypA6bgzg8cCdelPNDiua0Y6LgJlvBn+3WgLl6clKeM2b1t8r2I3rgcLNcXDGX8flvemY8/vP0fPPNqrPey8fwoWPU33iaX2hxd+w4Z/+eqkSWn/y7SU4+EkCjveejbudonD19UG4+cEuFZXbVaGEWBFk//RsXH2jb1C45hZldWZ7/mHHQ5cGMfj5U3Ho9qWNyt9sv29tQeKFwIuB6evN3xUFhchYvBIJvQZ7+zhdIpEUNQYPtu1R7Z8O77pzRQnveZO9LvJyx3RD/ooZcFw4Ctf1YyjeOQ/2eZ2rRdp5XWDfMRdlt0563zTwVMB96wBce8Z7FwuLfckn0rpkAbHV3b0zaUsaXgadR36TQEsjoMdZFGVb1p2lKNuy7qdfacyiLCrK1WJfasbsnLfVAKP06kW/a/iDBEggvAgkDxihBFmZIZsYObbZM687C00hyurCJY+ZqQYKMmtVb+LOIKl7xENxNhL3R06D/VoCbvaZphYDy9xyCHg4c0Zf0xjfpXcSkfHBOiT1G6HylPj2UGSt2Qp33qOv6NwY+WIcJNDYBMS3o/iKFTcF8tk3/6by91hZmKFeT1W+Yz8ZhSrnQ5/1VVXI/egD1dfI27imsbPjF1+TirIPU8p8z7s4WerIYUqYqHKV+GaFlR5u2vL5FZY/SCCUCHg8KL1wDLaFI71C7OjO6lV355VT8LjdOLE6CSNf2K0e4kQ+vR3rh57Hg+TiRyrB7DEnvLNjn4zBwC57YE95gONtvA9qv2gzwueuQATZX/6V+F2NgbguaKotVERZKd+xA/fx7FMx3sXAnohBh2+tV+4Mun9pA8b8bB8q3Q3waWAAVnL5uneBsC4P3Rt0i0La/GXwlPjPOnanJHgF+XneCUB543qoGbQyY1pmyRYf+AD2uH4+gVYeaMmsWse5PfCUFPhSdCecgGPXGIgPWlfsiw9F2hfhXPYqHDuHw333sC8sd0igNRLQ4ywlyp58Hp4w+JSe4UzZumyVomxdhML4fA1RVlwYTGqPvBFvwXFyCzIHdkXGqAGolxf9MObArJNAiySQa4cszqB8x4qrgvjguyqw4qo7C00pykq69yfNVWVPHj3dlw3lzmD48OpX77oPhCM5Hckxm9Ss2TtDF6Isu4lmXHg8KL50HelqdskQ5Uoibf5SlN5O8OWPOyQQrgQe3CvG5H/fr4QV8VmoRZXylItwLv0DnMvboOzm/uriVVVBZsamD+iJvO2bqo830V4wRFnJelZsrHfG7OhRvpKUHlnnFRo2TAIq3L7j3CGBlkzA43Sg+NAO5E31zorNndwX9v2bUFlciMqKKny+9C6G/sMnqs2QtuP46kSUlz2aMJiX68CLL6xSguPPn34fd67l4t7OE7jQbohyV3C8u7gr8CjcFeWVaoasCLLD265v0lsQSqKsLuj/Prfqoa/ZGPzH91ag559vVPdAZiif3pSsgzX4W95Uyl6zBQnvDH/Y74xC8oTZcGfl1IirPDsNhTs/9LmusL03CMWfbVMLiFXmZ8F5cjvsq0Z43cBMe9Xbfi4fCGlLK7KSquNzl8B16kOUrusLZ9zLvlm0TjWLtgvKjsfCY6+ZfnUE3COBlkdAj7Moyrase0tRtmXdT7/SWIqya2Z6n2RP74qCpYPU4KLo0D6/6/iDBEggtAlkfrgZCV3kVf0IxHeNDqnM6s5CU4uyUmjt3/X+1Pl+DPK3rffy6RypBFr76YsoOHMD1ztPwLW3xiDvUOOt+u6X8MMfHlcZ8vYewr1B4x8KxzPU4mBN9eq2VR54jAQai8DJDffQ92ub8c5fbMFncXd80bpvfgrXkt/CuaYbKosMi/NUVSFn2WJv/+JgcPoXwRJlpfAZs2aqsqVPmuhj4bx6GPYZ7VC0NAqVRY+/yKAvYu6QQIgRqMjN8vqKHdvN6xJt3jA4zh1GVUU5yss8ajb9oP+7UwmBs1/5HMkXH+9B6Mfrb+H5ry9WQmOPV7aL9xBcmrEWtzpE4bLBXYHG9J/f884WjXq56WbI6rRCUZSVvC2bd1752hXXDc98NQaDf74bPb60ETJrdvr/fKaz/8jfjjuJqv+l1zBIGjoRJTeq/zf4IvZ44Lx5AfkfzUHe6C7IG9kRtrhJcJw/CpS7IW8buK4cgn3zNBS996ZvFq3465a3D0TANW6VObfh/HQKHCveqPZHu/hFOJf+Cc6dQ+G+8/hlM6bHfRIIRQJ6nJV9fhw8XzwfFp/S05wpW5ctUZSti1AYn7cSZaU4trGvo2B8O1TaUpD9bidkDO6jfDWGcVGZdRJoNQSSIkerV/RllmzyyOrX90MFgO4sBEOUlTInDpmohE95nc64lVy9gIRuAx6KsxHI2fIJygvsiB8Tp2bN3puztun9v1ZVKT+zKRPnqDwmDhiJB1t3o7K4xJhV7pNASBIoK61AXJcvlLgy8zefqYW8dEadx5eqWUvOLVGoKvO35wcfLlWiZeHhgzp4k38HU5SVwoggK7OA0997z1c2d+otFM3pgKL53VCRl+47zh0SaAkEXIk3lFsCEdbkk79yFlwJ11XR3M5K7Jp1HVHf8y78N/ePh5Fy9fFd+PR/Y5cSY5//Wgy2rfYuXHV6YKx6S+jca+/Cdi3RD+1v/8676FX3X67wO95UP0JVlJXylpRU4GfffV+5cPjBk4vQ+b+2oPeTm1R73udrm5FyvfCxscgCqGnTYxD/0LVBkvRxtu22jNfjLEXJiU9hWzhKifm5Y7uhYEMMXPHX1BubVZXlKEu4gOLdi1G0sGe1QLtiCBxnPoHHaXJ54alQi4aVboqAI+73PlcHztiX4PioCxyHF8BT1LjrCVgWjAdJIMgE9Dgr+9x4eE68EBaf0lN/wvXr11FcbKrHQWYXyslRlA3lu/OYeQsoyk5+S7kwKD68HcWbxquBhW1z0z9Rfszi8HISaN0Eysq8r+XLYladI5Cz9dOQ5KE7C8ESZWXaTOJA74Jb8mqdcSu7F4+kHhFIUG4eIpA2x7vYR/aOI8rP7K3I2U3nzsCYEQDOeylIX/gBErpFI6HHQKQvWQVXCoUbEyb+DBEC9y/nq1eP+3x1M/Yvuu3LVVWlG45dY72C7N5JkIG0cbPt2Kz6FAW7dxoPN/l+sEVZKVDq6FGqrDkrqgUgEWNFlLXP7YSKbMNruE1OgAmQQBMQ8FSi9PxR2BaM8L5lN647inasgMyWla200I3tk64i4q+2KbFvftsjSLtR7R/0UXNUYnfjV3//gXJX8Mv/sxRZaXYV1ZGOU9QDztNth8GelOkXfed/Wa7Cv/GTpX7Hm/JHKIuyutwj+h7AD56MUeLsL763VPmXlVmz8lk//LwO9ljf4togY+kaxPcYqO5PQo9ByFq7LWCc5Q8yvf5np/bz2tW0ASjasx4Vedm+a9wpN1GyK0Y96LKLi4MZr8G+YSLKbhwHTP935CJPQRqch+bCsaoTRJgVH+fycS5/Fa69E+HJ9RfwfQlxhwTCjIAeZ1GUDbMbV0d2KcrWASicTwcSZUWMzRvRAflT3kKlPQe5o95EemQvVNofLs4RzoVm3kmgBRLI37zbu4BVF3kdPwKwewcooVhU3VkImigrEDweJPT3LrRlO3jMD4t0/u/1FmHW+0kePEGdL7mbguvdJuJ6x7EounzX75qm/OG2FaiFwBL7DlWDl/uT58F+/gp9ezcldMbdIAL75t1C7yc3Y8jffYy069UCS5XLDsem/t7B7umaD3KLDh9UImXumpUNSq8xAjeHKCvtjiz6ld6/B/L3V/vTrSzIQVFMb/U6rjv5WmMUj3GQQFAJyKzG4s+2I0+LZtMjUHJ0F8SPrGzFtjJsHHEB/b61FeKrdNHrxxpFjJW4z5/IwI++GYsfPLEIHX/tfdBa7nThaBvvw9cTbUbClVfdLsk103tvU6Ljb/8+VuUvWH/CQZQVFjeuPMAL4gLiyRg897UYbJ58BT2+vEEtBDb4+zsgM50ba5OZswl6UbDuA5G1fA1QUWEdfVUVXHeuoGDtAuSKe4MRHWCLGYOSk/vhcXltTdxilN08AfvGyV5hdtqrKJr9Fuw758OdfBVAlUXcHrhvHVAuDcS1gXfBMHFz8Ee1iFhF1i2La3iIBMKDgB5nKVH2+A/hCYNP6alXOVO2DvOiKFsHoHA+HUiUlTLlj28H29j2qnil++YjPaIHHiydF87FZd5JoEUSSFuwzOs7tksk7vUdGvJl1J2FoIqyosu6XEjoPQTxXSPhuBXvx6nSXoDk/t5F0WRhtAThWFkJd4Edd95dgKtthyNjwwG/a5r6h/I7u+9z3Bs8QYmz4n82b+9n8DhdTZ004ycBGMqF1AAAIABJREFUSwIyMJeZbj2+vBHzXj0CZ3H1LNjKwgw4P+oMV9zvUB5/tMb1JRfOemeNxi1slgcMzSLKCgWPB2mDo5DWvydKr3tfr1aHSwpgj+sP+8x2KLt7tgYvHiCBUCSg/MVuXYbcMV5/sfmx4+G4cspXp8tdldgx+Sre+eYWJcYu7nAcGbcf/zV4zWLp7LN45slFePbJGMRMPaUOu4tKIUKs/O8+1nYMKp3+i+ltnHNMCbj/9t1FOpqgfYeLKKuByCJgInaLOHtibwr6/cUW1d4/7iJgOn797XE4kDY3DgldHy5G2y1avSnkcQTu33hcTpSeOYT82HFKnBWRtnDLUsiDdb2JCwNxZWD/YLDPvYG4Oig5uBIVuWk6WI1vWQzMeXAOHB+0h2uxdwat4/3fw7FjGNz3G2e2cI1EeYAEmoiAHmdRlG0iwM0ULUXZZgIfjGRrE2XzpnbyzpZdPwdVziLYJr6lBlRl6anByBrTIAESqAeB+2NnKpcF4q4gY9779bii+YPozkKwRVkpuTsnF/HiHqBbNGRGqnHzlDlxP1perYvwvl7Xa7ASZlHpwf2YzcrPbOLUlfCUB5jRYYysMferqmA/dxkpk+aqfMkM2gfb9lCcbUzGjKtOAg+SizHyhd0QdwUHFle7K5ALKzJvwLm8jfrIvnlz3L6J9MjeyJ47HfA03owrczq1/W42UVb4FBYgbUAfpA7oA/eDB75sVjlLYF8xRK0wTmHWh4U7IUigIv8BCtYtVL5i80Z3RsH6RXCnVbvfqKoCjn+UCFnAq+efb8KSzieQFd+4b9cN7rZPCYYvfCMWX3x2X1EqsxXhZJvh6n/jkXYTUCWrfBm2Cwfu4tknF+HHX1+EYpt3ZqXhdJPvhpsoK0A6vbj5oZ/ZGLUg2KzfHVIzZtUiYL9uXD/g8rA8PWYlErpFeftdXaPUb7hr72eV56SjcFOcb/Zs/ooZcCX4/++RRcBKPluFokW9qgXaZdFwnNqBypLADwo8JTavmwMRaGNf9Lo4iHsFjq2D4E7wf9OqyQ2ICZDAIxDQ4ywlyh77ITxh8Ck9yZmydd1qirJ1EQrj87WJsq6bZ5Vf2fxJ3tmyzuMrkBHZHVkzxoZxiZl1Emg5BJKjx3p9yHaJQNHJ8HmSrzsLzSHKyt0vuXzT2/nvM6TmAoaeSvW6sXfF4EgkdB+IyhLvIkV5h87h6msjcGfIAlQUB39wJ3lXfmdjViChezQS3xmO3E/2o8pdPVux5Vg3SxJKBK5/lon+396KqL/ZDvEla9xkVqzMjpVZsjJb1ry5szKQPugdZE2fAE9Zmfl00H43pygrhXTcuoPUAb2QGtUfVU5ndbkrymBfPRr2Ge1Qlnix+jj3SCAECHiKC1GwZSnyRnVG3qhOKNgYi4qCPL+c3TmejTE/3aNmVL738iFk3AosePld2IAff/rFWjV789+/vxyF+d7ZlKUZuTjVZpj6f36s64waseWk2PDC12RW7SLcPucVcWsEauID4SjKCpLxAw/5/MwO7rEXpzclo+efbVD3+J1vbUGlu5EfrlVUIGvZWtXnUm8rdYtGxooN6k2D2m6Rp9QO+/5NyJ3U1+vaYMEIlF44ZrquCuImRtwZKLcG4n92elvY146D8+rnQEXg/0ueknw4Ds+HY8XrcC1+KNAueRmyeJi4P+BGAqFIQI+zcs6OR9XRH4bFx/EFRdm6bImibF2Ewvh8baKsFKtgQjvYxrwBVJQDlW7kz+igZsuWXAofASiMbw+zTgIBCSS9PdTnsqAsPiVguFA8oTsLzSXKCpPcXQfUQC5p2GRLROkzJnmFW/HR2y0alUVeYdZ+NR7XOozFzT7T4MrMtbw2GAfdD/KQsWQVErpGIbH/SOTtPQRPOcXZYLBvbWnsmnldzXwb9/O9KMoxiIkAym7u984i2hIF8Sdr3jyOUmSMHYr04dG+hxvmMMH63dyirJSz4LNDyo1B2ugRfsUWn4j2j0aiaEa7hz4Q/U7zBwkEnYDHUYLCTz5C7piuanZswZr5fossSYayE+yY+8fDSqgb8dxuXDtY/Rp5Y2XYbndBhFh5nf6N/97ki1YW8Trb9l3Ed47EycjFvuPGnX/5y0VqZu3OuJPGw0HdD1dRViBtXXkNP3hyEZ55YhF+//O1KMl3os/XNqn73euJjchKqNnmPzZcj0eJs+qNJnEl1XMQHmzdVWe00oaKa4O8OUOUOJs3rT9Kjnzi83Hsi6CyHM5rR2BfN94rzIr/2ffeRPGeJZBFGGvblED7+SKUrnjD6zddFglb8ls4NrwD19VParuU50ggqAT0OEuJskd+iKow+DhOUJSty0goytZFKIzP1yXK5s3q7f3ntsQ7gCi7vANZg7ogc1SU6SlkGENg1kkgzAio1Ws7RyhRtiyj5sy0UC+O7iw0pygrjFJnL1HCa/ZH3oVCzNxyli5C4sPFv+TVusoi76uYzrRs3OgxGdc7joP9evOu1luWkYW0+Uu9AnPkaNgOHkVVoAUzzAXkbxKohUB5mcfnPzbmjWMoL/OfGVV+9zBcsS/BuX0wqir9fTiqaKuqkD1vJtKj+6IsJbmWlIJzKhREWSnpgw9XqYfb8m3cqtwu2JcPQtHM1+FOvWk8xX0SCBoBZYf7NyNvfA+vC7OVs1Ce5e+2rDjPhZX9TqPXVzYh8untyp2Jp9JqMaXHy3ZKUhF++u0lSlgd2qt6VmJpei7OtB2KO50icX78h5aJdPmXZUrIndF3u+X5YB0MZ1FWGF08laX894oo/k9PL1XYhv6/XcqdgSwEdml37ULmo3IWtwZp85b6fM4m9BoM22f1cx0gC4PZlk31jl/H9UDhjpWoKKj5EF1cGIgrg6Jl0dXuDVaPQtmtk0CVvxsMczk8jnyUHV0M58o3fT5onbEvoXRtL7gubQU8tbtfMMfH3yTQmAT0OCvnzHhUHf5RWHwcx9twoa86jICibB2Awvl0XaJsZW4a8ka+iYKJ7bzFrPKgaEEnNaAoPLgvnIvOvJNAWBJQr3XJ7IEuEUAzvgr8OPB0Z6G5RVkpQ1LUGMWy6NwVyyLlbvgQicK7c6TyeeZ+KMyW59txO2oOrrYbgbzDzf/mgCslHSkzZEXjSCQNHIf8w1/wwZnlHeXB+hCQGbHj/mmfWqhHZsqat/LEE3At+S2cW6LUWzTm8/Lbtnmd6isUn2m+WWrGfIWKKCt5Shs7GmkDesJ+xn+BL/ExW7SkP4pmvQF3+l1j9rlPAk1KQGYalhzdhTz9Gvj7k/x8xkri8mDmkxnX0e9bW9H7yc1YO/gcnPameUPj4skMPP/1xcq36YJJX/jK7sjOVy4LbnWIxrUF1g9UV089pK579bklvuuaayfcRVnhlp1dgue+5l3864ffWAx57jvvT4fR40sblDi7bcLlJsNbUViIlCnzfW8uidumonOX6pWen99Zcb2xel4Nm9YRVWTfg33nPBTNbK8EWlkcrPTYxlp9z+pr4S6B83gcHB92qPZBG/uSmkHrTjrhC8YdEggWAT3OoigbLOLBSYeibHA4N0sqdYmykqn8ie1gG/Umym3ep4xltw8hZ2hHZAx6u+ZrIc1SCiZKAq2AQFmZr1N6t0tk2Aqycqd0ZyEURNmKQrta9EsW/pJ9qy1v7QqvKCuzk2WBsIfCbKWrDPHjl6oFwLJ3HLG6NOjHSu8m4v64WcpW7g2ZiIITZ3yrYgc9M0wwLAnIK8mDv78Tfb66CZf31FytuvzeaSXIOjb1R1W5vzsDXWARYtMH9IRt6wZ9qNm/Q0mUlZXHUyPeVot/ySJgxs1TUgB77NsomtMBFQ/8Zygaw3GfBBqFgMeDklMHkDe1v5pZaFs0Gq7EmjO1v1ibhCF/97F6dX1+2yPITrT+f9kYeTr4SQKe+WqMmum6dXV1XlyFxTjZZgTudorC1XmbLZO6fSYFzzy5CD/5xkJUlPvP7re8oIkPtgRRViP6yXdi1T154eteYVbE2O5f2qjEWRFpm3JzZ+UgaeQ0bz+4cwSSBo1DWVr93hTz+p3d7PM7mx87Hs7rZy37RvJgzHFiS/XiYDPboXj7bJSn36lf8dwlXh+0y1+rdnEgi4R9PBIe2736xcFQJPCYBPQ4i6LsY4IMscspyobYDWnM7NRHlM1bOND7Csicd3xJF694Ww24cjd85DvGHRIggSYikGtXszllFuTdzhFNlEjwotWdhVAQZaXURWcvKb6JEaMCQsha8J5vMCDCLJwPX9f2VOHevHVKmM1Y92nA64N9ovjKDSSPnuEVZ4dNRuHpC5YDkGDni+mFNoGkc3kY8J1t6iP75q085YJa1Mux4W1Uua0XuxNXBeKyQFwXQJZkD5EtlERZQVJ6/QbS+/dE6pCBNQhVFuWiaF4XFC3oBhFpuZFAoxOoqkLpxeOwzfL28W3zh8N580KNZDLvFmHKrw4oMXb0T/ZAFvVqym33ljtKVH3uqcU4fqB6ca5KpxvHXx2lfMieG/OBZRZEhP3pN2RhrxjcPNX8LlMkky1JlJXy/Ov/XeEnzIr7AnFjIOLs8Gea3q+qIz5JCbIJyoVXJFJnLILH4V34zdIoDAfNfmdts6JRcuJToNzK/Y4HZbdPeRdhlIXB5LN8IJwX9wOV9ZsdLiKsiLHOuFd8Aq1jWRs4D80FLHywG7LKXRJ4LAJ6nJVzejyqPv9RWHzovqDuW05Rtm5GYRuiPqIsnKXIG/0G8ic8dGEgrzClX1HH0iN6oTz3QdiWnxkngVAnIIt4xavX5yMQ373m4D3U82+VP91ZCBVRVvKYHvOBEjBT53l9plnlO23CGO+MWVn8q3s04K7uyKcs36GE2dSlzeu/zpxvEWPvDZ2sypY8ajrsF6+Zg/A3CSgCMitWZsfKLFmZLWve5P++M+53cKzrhaoy78J35jAepxMZIwepxb1kka9Q2kJNlBU2OWvWqAfcGXPm1EAlr9MWzXodRXEDUOW2npFc4yIeIIF6EHDeOI+8eUO9M2NnD4bzck0XIxXuSmyfeAV9vroZ0X+7A0dWxDf5M5YNy68qQfX5ry2GuC/Qm/hJP9ZmtPo/9kW/BfpwjW9xV/CDJ2IQN2JvjXPNdaClibLC0SzMyoJfsvBXjy9vxNvf2KIWBGtq3upheu8hyibE53/W2m0NStLP7+ykvmpRMLWotUUssgBY8e7FakEwJc7O7YTi/ctRWVD/BxTuO5+jZH0fiN9ZV+xvlJsDx6rOcJ1fT/+zFsx56PEI6HGWEmUP/QhVYfBxHKNP2bruOkXZugiF8fl6ibKyYvDE9sgb8RachleaSjcORkZEdzyInRvGBJh1EghhArl2ryDbJRKJvQeHcEYbljXdWQglUVZKIP5lZSXnopMBfMRWeZAy9OEgQITZnoP8Ci4zZa+2GaZmzjb56NUv5Tp+VFWh8Nhp3Bs0Tg1gxL1B8dVbdVzE062JwJEPEpT/2DE/3QPxJ2veKjJvwPn+7+Fc2x1VTu+Cd+Yw8jtnyXykRfWFO72m2wOr8ME8FoqirJRf/MuKq4eiEzV9D5YlXoR9xmsoWj0KVfWcnRVMpkwrvAiUJd+BuCfIG9EBeTMi4Th32HI2u8ySH/H8biWyyYJerpL6zQx8HBofxlxSC3o9//VYxN+w+UV1pN149b/raIcpfseNP5aO+lTN4Gz7QvP7kTXmqyWKslK+X3xvqW/GrMtVgUp3JQZ8d5uyGVkArii3+qG1kUdj72ev2eJ1QSWTF/oMUW8+NSSN8sz7yF85y1snJr+NkmN7IDNqrTZ5OOY48wnsS/o9XBisDezrJ6IsXvqM9XwrxFMB16mV3gXCYl9UAq0z9rdwbOwP+p+1os5jj0JAj7NyTk9A1Wc/DouP42hbLvRVx82mKFsHoHA+XV9RNu/Dad5/WNO7+opbmZuo/M3KYMIZX09fO76ruUMCJFArgbIyxHeOUAORpF5Dag0abid1ZyHURFntXza+20BUOKxfzUZ5OZIjoyGvzqlF1/qP9MOftfWQEmYTp38IVNa+eq/fhUH4IbONbAeOIililMp7yvSFKMvKCULKTCKUCeybd0sNpN97+RDKSmuuGF2RfQfOpX+Ac3UXeErzAxal6MhnSlwsPHwwYJjmPBGqoqz2L5s6oC9k37w5rx1RAkDxlhnmU/xNAvUiUFFoQ/6q2d5+/JR3vK9se2r6W5VFu0SE7flnGzHsB7tw92Rw/j/IQl7PPBGDH30zFknx/u46jvXwug462nZswLKmx+fi2RDyI2vMaEsVZaWMWph9/qnFEGFWtgm/3K9cGfT6ykbkZ9Z8wGdk01j70m56FwOLUH2zpGGTID5oG7K505KQv/zhWHdqf5Sc3A/pMwXa1AOzDRNhn9bGK9DGvg3nqR2octX/DRFPSS6cn06Dc+kffe4NnHG/h2vXWFTYql13BMoDj5NAIAJ6nEVRNhCh8DxOUTY871u9cl1fUVYis419HQXjq10YyDHHronIHNgVmZNH1ys9BiIBEqgfAeWyQJ78i//SFrbpzkKoibKCueCLs2q2bPLo6QGpV9oLcK/vAJ9ofm/ENL+wOXu/UMKsLAJWVR64U+93URB/SJ7ydh+ErGKc0H0gstdvh8dVFsQcMKlQIbBp1EUlyC5sfxRVnpozfeThq3PZq3Cu6oiqUv/Za8YyyMxYmSGbvXC28XBI7YeqKCuQii9eQlr/nkgfO8aSmawCLq/Nlh5ea3meB0nAkoCnEsWHtiN3TDfkje6Cot1rEegV7Yu70hD1N9vR+4lN2Dz6IsrLaoq2lmk85sFFk0/hmScW4cffWoKsNH+3KeI7Vh5+ii9Zj9t69qIk/+9Pe/3IXjmS8Ji5afzLW7IoK7SshNlF7Y8pYVbEfXFtEKzNkZCMxEivmwuxm7Q5cYC7YX0wd2oCbEsnP5yIFIHSM4cAT+AH7JWFOcqVgX1OR9VGF816A8WfLmuwL/CKtMtwbImCc8lvfQKtY/lrcBwO7K4jWFyZTvgR0OMsirLhd+9qyzFF2drohPm5Bomyk99QLgyKD1f7TKwszEDRtDZqdoz95PEwp8Hsk0BoENAzZOVV+pa46c5CKIqywvv+pLlqtoVt/5GA+N0ZqbjXc4B3tmznCKTOjPELm/fZWSXM3h29BJ4QFGYls5UOJzJXbkBC1ygkRY5G0amai7z4FYo/WhSBFW+fUoLs0u5fWHrbqLTdh3N5WzhWvolKe+BZR1Xl5cgcN1z5kvWU1n+WULBhhrIoKywy5s9Xfam8jz+2RFP8yUI16Hfd/MLyPA+SgJGAK+EGbO95F/HKj5uIitws42nfvrgrWdjuqGoLxv3TPqTfLPSda+qdpbPPKkH2R9+KRU6Wv5/q60t24m6nKJxpMxTugsDC3oj269Rr9IP/uLqps/tI8bd0UVag/Oy7XlcGMmO2pMQrgmphtsefbUT6Lf/Zz48EsgEX2fYfVg+c1dtM3Qei8EhNn8l1RadcfSweq8RZWQyv9PxRS1cfvngq3HBd3I+ipVFecXZGOxTvikFlYcPXXXFd2YbSj7rCuVh8z/4GztjfoHRdX7jvn/Mlxx0SqI2AHmflnJqIqoM/CYuP4wjdF9R2T+UcRdm6CIXx+YaIsgW7Vnr/OU15y6/Ezs/nI2tIZ2SMiIQMzriRAAk8OoGEbgOV0CczZVvqpjsLoSrKyqyI+B6DlFjptgUeTJTeuorE7gOU318R0DOXrvG7ZXmHzvlmzIaaKwNjRl3303B/vPcVUXkFsCzDevBuvIb74UugqgoQIVYWZRFh1mqTWbGOFe3Vp7Iw0yqI71ju6hWQRT9d9xJ9x0JxJ9RFWWl3UqMHIK1/b7gfWAzkqzzKt2zRzPaoyAmNleVD8T639jzJmxwFa+Z7Z/pN7W+5iJdm9FncHfT/9lb0/fpm7J170/LhjA7b2N8fLRYfsjH44TdjkZFS7Bd9yt5TuPFWNC62G4KCO4Ff45aZsc8+GYN//vZCv+tD6UdrEGWF90//Mk6J4899LcZCmN2A5IuB37Rokvvl8aiZsvqts6Shk1Fbfy5QHlzx12DT4qxeFE/+idayue9dgX3NGCXOik/w4h1zIYuFNXhzl8D5+Tw4l77qmz3rXPonOD8L3TdSGlxGXtAkBPQ4K+fkRFQd+ElYfByHKcrWZQwUZesiFMbnGyLKSjHzx7eHbWx7vxLLoh/Fc72zZfN37fA7xx8kQAL1J5DUd4iaoRnfJQIoa7mvk+vOQsiKsgCKzl1RbgwSo8fVegNLzp5AQtcIFVY6/3m7/P1palcGiZNX1PoKXK2JBOlkwdFTSOw3Agndo5G1ejM8TleQUmYywSIgLgrEVYEIshtHBJgZXVEGx7recL7/B1Taahf/Sq9fUbM7bZ80bOXrYJXXmE7Ii7IAnPHxyo1B6hD/RQR1OapcJbAv7oOihT3gcQSePajD87sVEaiqQvHRXcgb1wN5ozuj8JPVqHJbt+GZd4sw5VcHVDsw7b8P4EGyvyja1NQ2fHBVCXgiyCYn+D/4zLuSgMvtB+Pq64OQdfxqrVn52TcX4ZknF+H2mcDCba0RBOFkaxFlBaUWZp//2mIfWd+M2S9vxO0vsn3Hg7WjXBqIqyZZnLVLFLLWbHmkpF23L8O2cJT3YcfcoXBeP1tnPBWZCRBf4F6/s23UfsWDR7NVmSVbsr6PmjXrnT37Ehzr34a4PeBGAmYCepylRNn9P0FVGHwoyprvYs3fFGVrMmkxRxoqytqmdlL/kPI3+Pu4cZ1cgdwRbyE9ui8q7YFXZm4x4FgQEmhkAvf6jfQKe50jYL//aJ22Rs5Sk0WnOwuhLMpK4VNmLlYd+Zz1tT9sKtz/CRK6eBeYEEG95Op1P3bZHx9VM2aTZqwCLPx2+gVu5h9GlwaJA0ah4PiZZs4Rk28sApUVVZj7p8NKiJHFvay3Kjg+HglX7Esor+NVycrSEmQMi0LW9Am1v9ZpnVDQj4aDKCtQsuLilNCdveojS0YVD1JRNPN12D8chqpKvp1kCamVHXSnxCNvzrve/nncRJTnBJ6Vt3PqNdUGyAzZIyuC74N1x9obSpB94Rs1BVl3USnOth2mZskmbTta613s+R8rVDzTela7VKv1gmY62ZpEWUH842/Fqvvys79630c85vVjyuZ6fHkDbh4OvjArGRExNqFrpOrTiT99571H62c7b16Abf5wVddsC0bAdeuir5yBdirzs1CyaxHsM9t5Z8+un4jyjLuBgtd63COzZw/N8V8cbNmryvesx11zochaI+PJFktAj7MoyrasW0xRtmXdT7/SNFSUdd08q/zK5k9+3S+eKrcTpbHt1EAid9Vyv3P8QQIkUDuBe8OnK1FPBL2ik+drD9wCzurOQqiLsvI6cULvIWp2hTun9lfvcpaJgOudMSs+Wivz/R9OZW09pITZe3PCY6Eeo0sDcW3gSstoAZbXeovgqazCvFePqIHxgcW3A4JwnVjqfU3ywqaAYfSJB8sWIz2qD9w5zTPI1vmo73e4iLJSntSBkUjr3wvubGu2ZTdPqMF98Y459S0+w7VAAp5SOwo2LPbO3pvyDkovBl7bITvRjom//FS1AQteOwrxJRvsbe+2u0qwe/7rixF/I7dG8kfbjlYPp6/Mrb39OfnxDeWL9j+e9vflXiPCEDjQ2kRZQS4zZZ95MgYvvlD9YCm243GfMHvhk9RmuTPivuDesMk+F2Fp85c98htMzmtnfA9CbDFj4Lpb+6xuKbCnpADFBz5A0XtvesXZ1aPhTnr0ma4V986g1G/27G/g2NgPFRnXmoUvEw0dAnqcRVE2dO5JY+SEomxjUAzROBoqykoxCia0g23MGzVWcHVd2Iy8ce2RHtETZenN8w83RDEzWyQQkEDq1IWqgyiCnv3A4YDhWtIJ3VkIeVEWQMmNeHV/7g0aX+ctSB0x1HsvO0cgvns0UOm/enX6mr1KmE1ZGtoze4wFFZcGSf1HKP+6WR9uUouDGc9zP/QJiMuCmDe8M5X2Lww0QxYou3XAu6jIgRl1Fqrk0nn1ELZg/546w4ZKgHASZZ2JSUgb0BOpw94NiK/084/UwN55fm/AMDzRQglUVaHkxKfIm9ALeaM6o3DnqoCuCoTAwdg76PPUZvT71lZ8se7/Z+87wNtIzrPPjk93jp3EiR3HfxynXcs5jh3HcS/x6YrP9ulO7U5HFYqqFEmJVKNEUY3qXWIR1Xuhem9U7/VUKIoqBDvBDpAACGDR8f7PzGopEASwuygkFth5nn12d+ab9s0CO/PuN+9X2iVKuXqmAm+8koW3vpqFxwUdAdnLg1le80sD+P9/fvj1FZRLVq9hsGbtevTq248ex0+c5O1bRUUlYocMp/LkTO5dAymDK487kzr8DdEIyhJnX4Trl3AGD/rwYJvqssMAmCWNIY6/imNZ/w2KwSnQ3uC3dm3rhOuF00k5m9WLUljL2ex0EAdhfIHQ0Bgu5UG7tD8Lzq4fB/PTAHYlWYyUZ5ZZ9afn3LPvwLimB8wXswGbha85cnoEaoBbZ9VfmwHHyf+SxGE49wkKCwvR2tq5dDpSGn4ZlJXSaIlsqz+grGrBEPar/MrUdrWRbXTGtX1RkzQYdYvntEuTb2QNyBroqIG69TvbrCvJdbQEbrIgBVCWjEnF7GUUbFUdyfc5RE4Tg7LhCSyVQf9ElCRO7iBfufYABWZr95ztkBauEZTSYP0OCswSgLb5/FVJbFcPV312ZruIP5KVMVeohdKRBe1pNVzbYa9/AlPu+2D2jgGcDtekDteEtkA5bpRkaAu4DkgJlCVtrs3MpMC36tAhrgtuZyd029KhndcTtrquAdrcGiTfdoIGzFUlbdunm3Om+aQq0NQxWPDeWfr7n/f7MyD3XRGePmzCm1/NpqDs3Wsdd13cX7CDWshe7ZEKp8P3/8/Yj7ZSK8wNcy6AAKhz5i2AyWSGRqPF6ORxNM5bHzmZ+w9Yq0ZydgdmSZmBgLDudUcjKEt0UHDvXueWAAAgAElEQVSrjvL9vv5yJmZPvNSmlhzyPnopD4TK4OklzzsB2oRDeWGzoWrB8x1O/RNQmbEUsNj8q9HphOGLS1AvGEPXx83r58PWJMBhKlk33z5KecJ1cz6CdnUimMKLvO9gX42k1rPbBoPJ7s5+ZM15F8a9yXCoy3xlk9MiTAPcOqv+6gw4TvyXJA7DWRmU5XsMZVCWT0MSTvcHlLU3VUM1qS9aZvTs0HNz0Sm0ZHxMFxL6+35+eexQqhwhayDyNGC8XQBCV0CcD9QuWh15HfTRI26yIBVQlkzUFYPGoHjgaDiMnh2ncN01lzxDycBR1GEbGduq+R23V5Yt20GBWdXZ21w2SZwppUH6fPrMVqTPB7mXQ3hrYO2Q6xSQ2TvN+xZJu64BzLpPwGwZAKdZz9uh+uylqE4aJhnaAq5DUgNlCX1KVdJIVMcPgcNg4LrR7uxk9NAuHwhtZhycZplPsJ1yIuzGYdSjZc8qqCb1gypjOAx3Lvjs4c09FRj1t/vo79+XhbzPQoKQWFejw9tfY3lGT+7vyKNZdeImij4dg7s9x6K1otZnjYr7NdQCk1jKugOsJCMBWTmQ1lNBntIJAOsKwrrfeypHTFy0grJER3s3PMRrxGK2WyZ2b3qxpf7aznIMemknfTYrH2jEqDPossbHxZSmijoCi02G/r73j5e8lTsc0F8+zlqwc872zL7njLRMpwPMwwsUlCXgrG7lSJjunwkInIVJByZ/AYyr/shaz2Z3h3FjP1gK5Z0VvOMYAQLcOqv+ykw4jv9QEofhTE/ZUpbn2ZNBWR4FSTnZH1CW9Ld5Rk+oJ/eFVd1xC5JxWxxqUwaiZuoEv7l6pKxTue2yBoRogAKyMQkoTZkuRDyiZLjJgmRAWULbcvEaBVorpi7iHQvNuRMoIZ5+YxKhiElEfd7h9nkcTihmrkXBJxOhuV3UPi3c75xOainLURrUrN0Gu14Gg8Jx2DbG36CL3m0p3sF/wgfPbIsFs7YH7BrfgAjpo+7mNfrRVZMvvYWd5EBZou/bd6CMj4Vyhvf3hFX5DLq5H0O3c2Y4PoZym4KgAeJcSDVzKFSTP4f2wAY4TN4tXo1aCzj+zvQfHkfts/b85kFojuAidDoTfvh3qyj/6+bsex3ytVbW44ueY/H4sySUH/bOh8tl/M23M2lZN489prQDSclj29EPECoC9zguLzl7soJ1B2oJKEvkghWiGZQlOswYdx6vvZxJrZuvX3jhgO5M7hMWmP1yHuqe6oKlbv/KcThQvTiXztfIvK1qXmZA61eHoRUte9fQDyhNGcNguHlW8O4i87Nb0G5KpbQG2szBMN4OnCLI8uw8jJv7w/TcetaY+0cwZ5eAOA2TQ2RqgFtnyaBsZI2vDMpG1ni2642/oGzT8mSWwmDxiHblkRtL6XVo5/2JXbidPdUhXY6QNRDtGlDEsBayxQOSolIV3GRBSqAsGaiy8RkUaBViSVG7bMELftmYRBiL2vOMOaw2PE1ZhoJek6B/6p8X4K58eNpRGoxMhe62d0vMrmxntNa9O+0eBWQJMOs1OB0w7h8H08r3YBXgGIRYa9aMT5AcbQHXfymCsqTtylkZFJjVXrnCdaXD2XBtP13EG6/u7ZAmR0hXA9Q6dtsKdr69KAVWZbnPzhSeqcWYfzxAf/v7ZzzwKRvqRJvNgZ99dw0F5BaleQZcr348ib4nb03ZwNucVWknKbAX8+M1VJaAqYSugFjMcoFcp6VPbwfUcmnk7Ep3wMW7l0NAWY5Llpx9Wd6SMqxWq8+D+98xeLF259oRyec+v93VBszW1LywjN2cdJs+q3FfyQuL7rcWFEERl8LO3eKSQe4DCdb6ajSvnMb+fpeMF8Q3y9VnrXkGXV4GC86uiAXlDne091PAyQo929QVYA6MBZPz3gtqgz1JcDSVCC1ClpOIBrh1lgzKSmTABDZTBmUFKkqKYv6CsmAMUKX1QfP0jhQGRA/MniTUT+gP5bh4OBjZikqKz4bc5tBooHxUKrW4JJay0Rq4yYLUQFlbiwYESFfEjRVkRVGZ/NyRRP9EKPonAUx7hws2vRGPR85HYb90MNVdyK0WwINoLClHWcp0uohRZq6TrWYD0GWwsp5YWkQXuoS6wFdgLmTRhZnlkTCr16ZNa6BMHAJLXUdOSF/1hEsaB44wjHcrw3Bpq2s7CBheNWooqhKGAzbvnIfEUpZYzFoqAth+61qxfN2lGjA9fYCmmcOotZ3myFY4fYy91WTHxlE36e9+/L8fRuntjrvYOrsz77y1kYKoEwZ7tjrlHHtd7MNv4d3S0Io3X8nEf7yaCZOBfY+6g6mkf54oDVz7zTn5InlJ4O45cJdw0964easN1CX3BJT1BswSoJU4pvF1KBQKmh7NoCzR9c/+cQ19Ht54Ndt1SLD0z+fpczv01V3t4rvshtDGPOeaJTudlItWCprv+WovU3gLqvlJFJxt2boMthbhv09bY0UbOKvLHgrmAbG69c277KstNM1mgfH8crg6BmM2fgZTwQunbLxlyAJhrQFunUVB2WM/gkMCh+F0L5m+gOepkkFZHgVJOdlvUJZSGPSCKvVTMCUdvyQSpyGGpR9Qa1nVrm1SVpHcdlkDQdOAMns9tbQs7p8IMw93WtAqDcOCuMmC1EBZosraLXtYADJrHa9m7ZoWlA0Z1eb4SzFiQoc8ZpUGhYNm0oNcSzE4rVbUbtpF9VIyMhWt915wx0mxP1Ju89VtpXSBu/yTiyBOvrwFAsSacrqDudiR89hTHkbxjL7Pmw/u8ZQsiTipgrJEuc0nTlL91y5f7lXXhFNWlz0M2mUD4GBk78VeFRXmCQ6TES07symAo144BuZKhc8W1zzRYOIbR+jvnljGE4C2q8PAD/ZRAK7v73Z7bErR6iN0LnS9xwQ4LFaPMq6Rn7y9Cq+9nIW9K15Yi3sDZX1ZypIyST7OEpaArQSE5UBZ1zq5ayLv7gyMS7PZbGhpafF5NDU1yaDsc4W9/bVs+lz8+Nvt/SjM/PlJ+vyO/NvwsfQnO6IUccnPrWZTQLhnAwnko0rr2f1QTR2EpikDoDu1C7DxP/tcnbZaBXTbplLLWV1uPMyPiPW5j5c8l5HnbHl6BsbNn7tQG3wI5swiwCIbVPGoLqyTuXVW/eWZcBz9kSQOGZTlf6RkUJZfR5KVCASUVW2aw27JmDPAY/+NR6eiacqnUCYMgVXV6FFGjpQ1EC0a4Bx7FcckoG7Vlmjptsd+cpMFKYKypEMl8WTLZRIs6haP/XON1Bd8AcUAAswSa9lEVM/PcU2m18RKlljLPo5fALtBWlZ8rp0xPClGaWIa7acye4NsNeuqnE64LjhZg8F/sQtzfnsadpv3xZq9/jGlLCDUBYIsbhx21E5PRc2UcaIWkZ3QZVFVSBmUJR2tTp2A6vg4mKpf8DK6K8BWXwbdvJ7Q7ZjhniTfS0ADpuKHUM0awVrHHtwEJw9oc35tMYZ9dTcSvrkf5PcfDmHx1CsUQP3Nv3mmJGh5WoGC3sko6JMM9UP+bdO3Tz7B6y9n4b1/aW9h6Yk/1lMcn04I6OrNEpbk9adM1zqjnVPWVRcmkw1vvJJJn48B77b/wJf47f0UmJ345hHXLF177XCgcs6KNmOK2lWbA26Po1XT9tFFNScehrsvPjQIKdxSVQTdxgksrcHqJBAO2mAEQm1g3JcCJufd59QG3WHYlQB7w5NgFC+X0cka4NZZFJQ98iM4JHAY8mVLWb7HRAZl+TQk4fRAQFnSbXV6b7R4oTCwa2rAZH4AZWIcGnO9W3dIWH1y02UNCNOA2Qzq2Kt/YlQ69nJXEjdZkCooayytpMBjWeps9655vG/et4N1IEGcf/VPgPrC1Q5yrUVlKOiZimeTsgPeKteh8E6McJhMqF27jeqHWs0GyMnWiU2XdFUlt1QY+soupP3gGMwG71vcnRYDjBv6gtnUD+RaSGg+epBaaRqfdNwVIyR/uMhIHZQlYGx1/GBUp03yqVLj1X10wU45CH1KyonhogGn2QTN7lzW0GF+Ei/3JPmNZ/a+REGsjF/mQ1MfHh/z9m4potyhP/jGSuj17el6iK6JteDVHql4+nkiitYJA9/+92+z8Ea3LChL2m/55qgFCKjKBT6AlZNzPfM59iJl+rKkdS3L07UMyrbXypNHjdRalgDt81IvtkskFAaDXsrDoj+cbRff1TfaW/dQHMtazZYkpMHSpA64ScQCXr1iMmsRv2IyL1+0e4WW0nvQrR/LWs6uHwdLaXB4/R0WI5hzy2Fc9SEFZ03Z78CwoS9MD/a5N0G+D2MNcOssGZQN40Hyo2kyKOuH0qSSJWBQNqMPpTBoPb/fY5eZM4vRPKMnXdAxJYFt/fBYgRwpa0ACGiB0BcRKMlode7kPETdZkCooS/pTMX0R5QbW3u7oUdq9v+S+Zvb05559WSdvlgZVB7Gmc7dR0GMCypfu6JAmtQh94ROUjJpMn/ualZtAHIPJITQaqH2qRfzf7MW4fz2EVpXJZyXGw2kw5b4Pe6PvLdFcIdbGBihHD0Pj2o4W3pyMVM5SB2WJnmuWLKHzKe11Hw7cAOi2ToF2QW/Y1LVSGZ6obae59DFUs+MpOKPZt47XGr3ifjPG/9thahW/b9oDOB3ereI7U6l3r9XgjVey8NZfZqNc4XkXyaXP59B3wpWRywQ1bemYoxTAS/6D591FxHEXB5hyfLIkjgsEUCVUBRxwS2T2HXjBm+man+RxdwTGlUmAW3+DDMp21FzBrTo6rq91y8SVcy8cnTJ6OwZ/hQVmt4653TFjV8ZYbChPn0/nfYoBiVCdPB+U1hi+uATV7JHUOp7QlhBLWjHB/PQmtKsTWXB24wQQS9pgBUptsLFfO2oD4/llgMP7h99g1S2XE5gGuHWWDMoGpsdwyy2DsuE2IkFsT6CgLAFjVamfQZ3xmcdWOQ3NYFZ+AGXKENTOTvcoI0fKGohkDXCOvQgoKwdWA9xkQcqgrMNoQnH/JJQMHSdsWB12VCQmgUzmFTEJUAxO9phPufkoBWbr9p3zmC6lSALE1uRsZK1mR00O2JOxlPreWW1VKw0Y/Z0DSPz7/VBV6n1Wa763j1q+mO8Lt3ipXzIXyrGjYNdLn6M0EkBZYoleTZx+JY30OdZ2fQt0S2OgXTMaCNBjt8+K5ET/NWC1oGXvGtY6dm4CCDjLF04sK8LQV3Yj6R/248ml8HEO2dSgx9tfz6YWrZfzX4Bsrv0pXHmQbgO/+PEU12iv160aI956NRPf/+oKOOzegWcCmHIcsa6ALCmY3JM0Lr6ispJSFXDy7rQF9fUNbXk4GS6v14byJMigrGcFLZpymdIYvN4tC3r9C5CvoUxHLcBjX9qJ40v5fxOeSw9dbNORfDqnIfO48umLfDpfFNoKp8UE3YmdaErrD9XUWLSeO+jTsV/Hcp2UY1aXO5IFZ7dPA+GgDVZwNJXAkBcPJqc7az278j2YjqTDYWwOVhVyOUHWALfOqr+cAcfh/5bEYTjVW3b0xfMcyKAsj4KknBwoKEv63jy1J9TpvbyqwXR1HbRzPmKtO65c8ConJ8gaiDQN1C7JaeOi0j8Iv8llV+mbmyxIGZQluqtZt4NOzuu2eHZm4q5fU001Sga9cPxVMXWhuwi9L5mzAQUfT0TLzcjwok4cf5WOTKW6qlm9FQRYkkPgGjBqLUh98yhGfH0Pqgs9W6ZxtRDLWGIhSyxlhYbWOzfZ9/aFM0KzhLVcJICyRMFNe/bQcalb59vZoFnxBV2g60+tDetxicbGmcufQjU3gQKyLXtWAdaOW/1d9WLQWLDoD+coWDW/+xnom82uyV1+/ZN/WE0tH9cvu+OxLbrSWjzonYK7vcbC0qLzKOMeOehn62iZG2eG11Z293by3cugrHcN/eFHW+gYv/319jsxis7XY9BLOymVwb0T3jm0vZcc2hSmugaK4RNYcDYucCdgXGttLU1o2byE/VAzPwlMoUhrYacDpgdnocseyoKzu2bB1uj5IwlXp5gzAWGZI+lgCChLHIVmd4cxLx4EtJVDeGmAW2fVX8qA49B/S+IwnJRBWb6nSAZl+TQk4fRggLKq2Z/TF0jzjsUeNeG0MGDWfoy6iXFQpo6Bwxxek0mPjZYjZQ0EqAHi2EvRP4FaRUa7Yy93VXKTBamDsqRfirgUKAYkgVjOCgnNB/LYiTx5NvonQHO+I7+s02rDk+SlKOg9Ccay8HDeIqRvvmTsrXpULcyhfSfOwAi9gRz81wCxHJv963wMeXkXHl+o81kQ4Y4lHLJieGSJV+iaySmozUgDnN6t1HxWHGaJkQLKErVWJiehOn4IrM2+wXj9sRy6OLeUveDdDLNhia7m2KzQHNjAgi6zR8L07AFv/59da0Dydw/S3/rRhY945Ttb4P0fsMDaxKEvaAPc23D5o8l49nkSnm7Nd0/yeP/oRgV17vXLb2V5TJdSpAzK+h6tt7+WTYHZP/54azvBS5sUINaysV/aicoH4rb0tysohDfVS3LpnIZQlNVt3BW0mkyKR1AvSqH/E+rcmbA2ipwHOuwgnOLaFbHQzemB1gNLYNd2pMzyu8EOG4wXsmDM/eNz3tnuMG7uD4tCnNMyv+uXM/JqgFtn1V/MgOPgjyVxGE7IoCzfwMqgLJ+GJJweDFDWVHSL8so2z/RhLfvFLugX/5FadzQf2ithjclNlzUgTAOcY6+ykb6dsggrLbKkuMlCJICyLRdv0El5+QzPH6U8jVzVlEnPHX+x/LJ2rbaDmFXTikexGSgcNBPWFulvHec62HLpBkqGj6c6Iw7BZKtZTjPizqsGXKVWc9d2lPFmFMsjSwpsPryPvq9NZaW85UtFIJJAWX1hIZTxsVDOnOFT/U6bFdrcUdAuGwinSZhjN58Fyol+a8BSpYB6wWgKtLTszIKDMfosi3wLOTTnIeK+sgtj//kQSm+3d3TlM3MnJY6JOUYBtY9/vtNrjZdHLqP/9xf7z/cq457w23/IpqDsgwvB24LtXkdn3cugrG9N19fr6Vi/9nIWcuddbye8Z8o9CswO/vJOaBvCk5eeOgEbNJo+4yWjp8LWEjwAWX8tH6oZQ+l/hu6UeNCX/P8br+yBdtFn0M7vBf2ZjXCaff/vtBsAATfEAZhxXS+Yct6hAK1x7Scw3ZG+XwQBXQ9rEW6dJYOyYT1Mohsng7KiVSadDMEAZUlvW6b3hCqtj1cHBU67lXp8bkiPhXL0UFibZR4a6TwlckvFaqDk+QRN5pH1rDlushAJoCzpYWnKNDohNz4VtoXLrmtB2ZBRUAxgQdniIWM9KoqprMPDPml4Om454HB4lJFipFWjQ9X8LKoz2WpW/AgenldIAdldk/mdzJkLDtGFkhgeWVtLM+vca91K8Y0L4xyRBMoSNVdPn4bq+MEgAK2vYGushG7ux2jdv8iXmJwWQg1oDm9hrWNnjYDpCf/vltAVzPv9afo7X/rRBTCt1hC2zr+id64toGDaj/9+tdfXU9n+S3jSLwnXe0wQzJG5feEFCvT2+s9V/jUszHLJoCz/gGzKvIvXX86k415T1Z4bPSfmCgVmh7wijCaKv7bgSziMRpSkTKdzmuKBo6G9cTdolTiMehAHYNR/y6IUEOoTscHBtEJ/YhV083pSrnHjzcNB5xq3VNyGYcugNnCWyf0QzLmlgM03NYvYvsjywjTArbNkUFaYvqQiJYOyUhkpP9oZLFBWtWAIfWE0ZU/w2gpz0SkYl78PZUIcGtdHxmTLa2flhKjVQMW0hSBWsuSARZ6MeHoQuMlCpICyTFUNCzAmCXNgQnSiu36J5qEUF/0TUbWoPacap7eWm4+o46/KnD1cVMScW85fpY7SyMcL1XFp8wZ21qDc2ltBgZplPfj52e2qcjC5H4jikSX9aFiVCeXo4SDgbCSFSANlycftqlFxqBo7hneYDBd2UBoD87NbvLKyQPA0YFM3QL1sIp0ft+zIhMPEb6VWWdCM5H9i6QpOLg9PLvriR2q8/koW3vrLbNRUet7JQbhj73wyDkWfjUb91YeClfr9r2bijW6ZaFXz60pwoV0oKIOywpTf+5e7KCj71lezO2SY9PZR+t4b92+HO6SFU0Tdtn3P53WJqF23PahNM5U8arO01+xeBQcjfueDvbkOrXvmsXyzOcNhKupInxVoox0t1WD2pbRzCmY8MhkOvTrQouX8IjTArbPqL86C48D/SOIwnOgjO/riGWMZlOVRkJSTgwXK2puqoZ7cFy0zevpUh3F7HFQzPqfbIs2V5T5l5URZA1LTgPbaHRTHEEA2Eep9R6TW/E5rLzdZiBRQliiuYja7RVNz4ZpgPdYunM1O4OkzkwDdNc9OHZRbj1Ngtin/puCypSJoUbegMmMp1UPl3EzYNB2pHKTSl1C3s/SOCkO67caMn56E1Wz3WZ3TyoDZ0l8cjywApvgpfT+3HD3os3wpJkYaKEvGoDYzkx2v0zzO2JwOaFclQre0PxxGYY6WpDjG4dRmY8ENNKUPpAe5FhKubC3F0Fd2I+nb+1FyM/zoCkgf9HoL/usbuXjt5UxcOOGdPuVCL9Zy8NqYjiCbN11M77+HAnPje2zzJiK5eBmUFT5k3/+rHDr+f/qfjoAmcWg56KU8rPz8svACu0CS7JhSxCbTOQ2xnhXqb0BIUykdzbEdUKXFQJUxHMx94fNN1/KtNc+gW5fCgrPrUkDugx4sRjAnZ4HJfZ91CpbTHcadI2BvkP0JBF3XHgrk1lkUlN3/P3BI4DAcl0FZD0PZLkoGZdupI7JuggXKEq00T+9FgVmr2vtE0lJ2A0zWu1AmD0Xd/JmRpUy5N1GvAQLGEqu/chEWk9GoNG6yEEmgLNm+RsZeMWSc8CG1WlE2knX4RfIWD0gEGA/W1U4nFNPXoKBnKvTFlcLLl5Ck5uZdyjVbMmIidF/ITonch66xvBUJ39yPlO8dFOR5nTk2Habc92FvFMHJ6HCgdvok6uDLabO5N0Hy95EIyhJO5qpRQ1GVOJJ3fCiNwbye1FKKV1gW8F8DxJnXrlx2u/GyiSDWsnyBfGRZN/Q6tQac/ZvTYcufSfrBOfaal3rRa7cKlu6m78PLH6V5lXFPsJhsePOVTPzHq5mwWX1/dHLPG873MigrfHQ0GhOlMSD8sovS2zuN0jczINyyBJg9tyYEIKLwZvJK2oxGlE6YSX8DxbFjoH9UzJtHjIC1vhrqzDT6H9O8dg5sLd7X3b7KNT+5Dt3KkRScbd09F8SSNvjBAdOVNWBW/5l1CpbzDgybB8BWfT/4VckltmmAW2fVX5gFx76fSOIwHOsrW8q2jaDnCxmU9ayXiIgNJiirzhzLTkIXDvepG2ZPElrm9qHWHa13Is/yy2fn5cSI1UDJwCQWlItJiNg+Bqtj3GQhkkBZohtl1jr6DDTuOSpYVYbHBSih3LIsv2xJoudFrN1oQtGwuRHn+MtVUcSTfMX0xVSHNeu2w2kNPx5F1/Z21jXhk5z4xhHEf2Mv6or5LYnNhcdZHtl7+0Q1UXM2n30vf+HZYltUYWEoHImgLFFz/ZYtdNwat/M7VzFc3kUX4KHYthqGQ97pTbI2KKFeOIbOhTUHNgjibVRXG5D+w+MUkN0+7g6cDment1tohROG5lNLxp6/yvOapbWyHvd7peBhn2RoSqq9yrknjPz9Jlr2ovjIstKXQVn3kfZ9v3vTQ2qF/Vq3TCietKfQeXq5AYNe2onYL+1EZWHwHGr5bpH/qfWb9zx36pqIhh37/S/IU06nE/qrJ6GaFkut8VsvHgGId0CxwemA8dZRaJf2p5yzhHuWcNCGIlge54PZ0Pc5ONsdxo39YCuTcYBQ6JpbZ8mgbCi023VlyqBs1+k+5DUHE5SFzUqdfTVP901hYK9/AlN2d9ROGIGatLGCyf9Drgy5AlkDfmqgevkaEG5QYimLJnlrKJ8auclCpIGyxNtJ8aDRIJYRXj2feFBOw9psFtB/bmndsMczbxpTVY+HfVnHXw5r5FkyUtU4nWjcfxyKQaNRNm4GTFU1HjQWXVEL3z+LwX+xC08u1fN23E743FZ9KJpH1mEwQDl2FOoWzuKtQ6oCkQrKkvGoShhOLWbBZ+HsdEC3Nhm6xf3g0LdIdSjDst366/lomjIAqulxgpx5kU4Una/DqL/dB7I1+/4x4QBmVyjgwLZHbY69bDbvjicvfjKVvs/uL/AO3Lq3v6FSjde7ZeIHX8t0T5L8vQzKih/CmO57KUD/xitZHTIfnP0QsS/lIe4rebBbwt+iWnv7ARQDR9PfROmkOYAluHM3R6sGzZsX0w9BqqXjYa2t6KAzIRFOCwPDuS3QLugN7aLPYLyyB4QuIRSBWMkatsZSLMBELGc39IHl2flQVBW1ZXLrLBmUjaxHQAZlI2s82/UmqKAsoTCY0Ruq1E9hKvLtTII5PgPahT1YLrRTx9q1Sb6RNSAlDZgrK58Dsgmo3Ri+3mHDSafcZCHiQFlitbZjP518V6/cJErlFWPGtAH7hMrA0uB5yyvn+Kt8Kb9VnKgGhJmwsaQcZcnToIgdA/XJ6J2s75v2gFrQHV/ySNAIGbcNBrP5czjN7T1Y82VW7dxCnXBaaiMXBI9kUFZ99DidT9XmeHYY6Dr+NnUNtYgi21XlELgGHCYGLZuXsDvFstNh0whzaHMgowCDv5yH1LeOoqE0NJZpgfeOLaG6XIs3X/Xt2ItI3pu3jb7/LvaZIarqPj9YRUG4XUu8UyKIKjCMhGVQ1r/B+M+/yaXPxO9e29ChgIXvn6PvxcRvBdn6tENNwYmwaTQoSZhMfxuKuBQYFcH3qcI8ugPV7JFQTf4cmsObAasHKiwB3SEf63QHl0E392NoMweDeUCcsPphgSukrqYyyjPL5HSn1rPGtZ/AUnRCQE5ZhE8D3Dqr/vws2Pf+RBKH/qhMX8A3rjIoy6chCacHHZTdOp+dmM7p71Mrdk0NTCvfQ8QxWIcAACAASURBVF16PJQpI2E3iFtA+ixcTpQ10IkaUMSwPLJlIyZ2Yq3SroqbLEQiKEtGhvDKKgYkgfA9Cg2mmmqUDhoFBaUySIRiqHduWuXmY9TxV2O+MOcxQtsQbnJEf9VLV9OFTNX8LNj14r0Nh1ufxLSHWM7FfikPWX0uCcpmurwKppx3YasT50jD2tQIZeJQNG3tuPgVVLFEhCIZlCVDUJ2ShOr4OBAAgC8YL++mNAbm4jt8onK6Dw1YleVQzU2AalI/6E7sFLR9mNFZQazfyW97Rc+LsDDhb+33k++soVaypw9756gmtAUFfZJx55NxsLQI3zFU+qCG8oj+4puRZyVLHh0ZlPXxA/KRRPllu2XCE78syZbwrX30N0QAWqmEmuVrURyTSHfVNR0KPvjoNJugPbCB/h+p5oyCqfih36qhHOTbp9H3hHZ1IiwVhX6XxZfRoa2DcV8KmJx3KTjLrP0IptvCLe35yo/GdG6dRUHZPT+BXQKHDMryP6kyKMuvI8lKBBuUJYpQp/dC8zTfFAZEjjm3DIalf6DWHaptGyWrQ7nh0auBslGp7JfvmMToVYIfPecmC5EKymouXKPPReU8cYvM5mOslS1x+EWsZWtyvIBkTieeTcpGQa9JMFbU+jEC0sqiPn2JWsyWjJoE/ePgOswIV03UPNFg+Nf2UK5Jq9n7VmGu/VblQ5an7epaLkrwuWFNNpRjhsOu4+erFVxoGApGOiiru3WHzqdq5gqwgHU6oM2Nh3b5IMBmDsPRCv8m6S8eoV7Qm2YOg6mkSFCDlUUajP2XQxjSbTdOZYr7eCKoghAIDetxkFospgw87rP0Sx+n49nnSSjdc8GnnHvie9/LpoDvtUPCdgO45w/3exmU9X+ETu4vps8G4Zd9cLe9EypCXUAoDAiVAaE0kEpouXyTfrQnc7wqkXNEoX20KMugWsz6eWnZthz2Vv/f7QSMJaCsbs5H0OVlwN7CT6MktJ0d5Ew6MEemvABnV/8Jpute5sEdMssRrhrg1ln152bBvvt/JXHoj3wqO/pyHUQP1zIo60EpkRIVElA2oy+1lm0973tbiZPRgln1RzTOG8Vum2xo/8KNFB3L/YhMDWjOXKQE/oqYBJgrKiOzkyHqFTdZiFRQlqitdNQkCqzaWvit1lzVXD2V5CP8xAn0+fIGQtp0ejwaNBNFw+fBbop8UMVUqURZynSq0/qdB1xVFnHXBo0F4/71EOWabK7htw4mXHDMxs9g3D5EkGMhV4WZlVUUyGs+uNc1utOuNRotRiePw5q16z3WaTKZMWfeAnqQ60BCpIOyRDdVkyagetRgmJRKXlVZlM/oFlXi2EUOwjXgMOqhXp3B7gpbnSEY8Lh7uApDX92NMf/vAMrvCqM4EN6q0Eju2VRIrVh/+c/rfFbQRlswaIFPOffE2yefUEvI9/+Fn3bDPa9U7mVQNrCRGvrRQfqMvPlqdoeCiLMv4vSLOP8qOBXenMyujbc0qKEYOp7OZwitgcNodE0OzrXDgdZzB1me6xlDwdy/FkC5TjD38llnYPN7Qn96A5wW4TvBxFbssBhhyp8PZuX7rOVs7ocwX8oFwP+BWmxdkSrPrbNkUDayRlgGZSNrPNv1JhSgLAFjCa+sOuPTdnV5uiFfwJjM96BMHo6GFYs8ichxsgbCUgPEqRf50l0xRYBVUlj2oOsaxU0WIhmU1d6+R5+PyoylohRNrBXLhoxCCaEyiEmgDq+8FaB/VomCT1JROn+zN5GIiid0BsrMdezvbtpC2Fr8t/4IV8UQz+vzfn9GsGMv0g/mzGKYcj+AXS3ewUfd4jmoGZcgimojWLo7fuIkevXtRw9PoOz9BwVt6QSYlUFZfs0zxQpUxw+GcqYwTk/9yTXUAooAtHLg14C5/ClUGcOhmhxDAQ/+HKzErsl36Vbr2b85jVZ1YB8XhNYZqFxdjY7yyL799WyomryDRrrSWhT0Tsa1j1JFV/m772ThtZczobgfuVzWMigr+rHokOH7f51DrbV7/3JXh7Rza55h0Et5iP1yHhh9+FOBtHXA4UD51AXsPC82Gcbi0rakYF7Y1A1Qr5hMPyI1r58Hh8F//mryAbj11FrKSa5dPhDMgxBTRzhsMF7IApP7IQvOrvwAzNklgCO4ztKCqe9wKYtbZ8mgbLiMSHDaIYOywdFjWJYSClCWdLRlWk+o03vz9pla+Kz9GOpFw6m1jqGwgDePLCBroKs1UBxLnDIlojgmoaubIsn6uclCJIOyZGBKk9IpdxixihATtJfP0eerZNBz4H/Wcq/Z6/adiwp+WVcFqE9fRElsMkpHpsLwxDvHoWseqVxvH3uHgjenVjwW1GRr1V2WtuD2dkHyrkL6h/fpe1dz9pRrdKdfE3DWEyjLNYSAszIoy2mD/1ydNhnK+MEwlQtwJmMzUwoDQmUAp2yF5Eu7rWf3s1yNcxNgrhT2v0P4Yhd/yDol2pp8G+Sji1TCz767lgJhl/PLfDb5Qs9peNIvCZUnxXGcX9xfQAHZP79BLOAiN8igbOBjW1Ojoc8i4Zc9c6jjb29Fz4v0vZn0bd87NANvSfBLaNh1kM4Ti/snQX1KHPWH4NY4nWi9eARNaf2hmjkUTNEXgrN6ErSpa6F7zjerW5cCW11oAGXXuk03N4NZ/WcWnM15D6b8uYDNP2dmruVG6jW3zqo/Nxv2XT+VxKE//JlMX8DzQMqgLI+CpJwcKlBWNWcA/Sqn2jiHVz3m+/tgyn4XNRMTUDt1AuCQFwa8SpMFukwDjdv3vgBkm4Q7s+iyBodhxdxkIdJB2daCIvqsEGsIsUE5lXjqTWh71kwl3gEWRca6qOGX5fTIlFWiNGkK5WZrOhh8hxlcPZ15vrW3gi4sV8ZcEVSt06yHcX1vMLsJp7VIsMfpRM3MyaiZMq7L37kyKCtouAULtVnLTpsqKA9x9kX4Ag2XZMcqnhRGnOcQCzNV6mdQ586Ew+TdatQ1f2N5Kyb9x1EMfWU3ru3wDWy65guH65G9D1MQbNa4iz6bU7jyIH1HXRw436ecp8RffSuLUiNUPW30lBwxcTIoG5yhzBh3nj4vb7zimas/4e9Yx185At+fwWlVcErR3y9E8aDR1AlY7arQ7XyyNtZCvWwi/S9r2bYChIolkGApuQddznDo5vSA7uAy2PXi6Lr8qdtUcBjGtZ+8AGePpAOWwPrhTzvCPQ+3zqKgbN5PYZfAoT8kg7J8z5UMyvJpSMLpoQJlmZIiSmHQPJPfWpZYZzCbP4dm+UDWaudcvoQ1Kjc90jVAaAuIhWzl/BWR3tWQ9Y+bLEQ6KEsUWDJ6KrWCYKrFbc+0a1oohUFpXCK7vW3wGK/jYTeaUDRkdtTwy3KKsBuMIM7UiNU6OZN7qYZ6hY469pr8/aMQ4tiL9JM5PpPystu14vnYddcu0fdt681AeOaCo+1ggLJWqxVqtdrn0dDQQK0wGIYJTsPDuBRl+hRKYyDIWhZA674F0M3vCXuz+GcpjNUQcNOsjTVQLxhNLWR1J3cBTmEfPx5frEf83+xF0j/sR8X95oDb0ZkFHNn9lDpX6v62b3DIrNbibq+xuP3JODgsVlFNPLHpDrWS7fn9yLaSJUqRQVlRj4ZP4f/+5mr6seB3b3R0Dk2oCwiFQexLO3HvKD+nts+KuiDRptGA8MuS+Uzp+AzAEqIt+sRq9uwBqNL6gzopfPogsN467GCu7Yd2YV9oF30K5vp+0dz2/jTA8vQ8mI2fPgdn34XxyBTAJBvKcLrk1ln1Z+fAvvNnkjj0B2VQlhs/b2cZlPWmmQiIDxUoS1TTPL0nVGl9AIbfUYn56Tn6x1o3PQXKcaPgYKS7uI6Ax0LughcNFA9IYi0XByR5kZCjhWiAmyxEAyhLrGWLYxJRPlk893DzoV30eSsZxD531SvWelWvsVRJrWXLlojfxu61UIkkNB06SS1mieUssaCVWmBarUh98yhG/vVeNFUIs/iwKi7Td6b5wUHx3XU4UDM5BbWzhVlSiq9AXI5ggLKcE6/CwkIKvHo6l5aWRg0oS8BYwi1bnZ4maDCIhRNZUOu2TBYkHw1CZItv05SBUE2LhUkEcEGoR+K+sgszfnoS2gZpfQBoatDjra9m4/tfz4FO43tr8MVPZ+HZ54kozjsr+nH4+Tcz8Xq3TES6lSxRjAzKin48vGYwmWzU6dfrL2dix6qOYCIBYwkoS8BZfbO0fntcp6vmZbEf4uNSYKlr4KKDfrY2KKFaMp61mt2ZLXgHgLeGkHeI7sASuuuCWM8SK9rOCJaK2zBuioEp+x0wOd3BHJwAh76pM6oO6zq4dZYMyob1MIlunAzKilaZdDKEEpRVLR5B/+yblicLUogxbwRas/pQ6x317ugDFgQpSRbqMg1ULVtFt5NTHlmzNBx1dJmyeCrmJgvRAMoSVZSmTIMiJhFMmXhHTJUTxkIxIIFa2xI6A6bSuwVIw/GrlF9Wdf4OzwhEXjLhli2Jn0S5ZtX5vrfchlvvF/2B5Zx8mC/MmtphaAaztgeYfcLere791Z4/Td+zxkfhweEeDFCW9NFms/k8tFpt1ICyRB/K6dMoMEvoDIQE5u4puqBmCkLsvEVIY7pSxumE5vAWOn9VLR4LW7Ow7fV2mxOEeiT2S3n0TO6lFn79rxso6HU53/e7igCxBJC9+GmG6C7uz75GrR37/GCV6LxSzCCDssEdtTULbtFn9LVuWbB5MCYl9AXkN0joDKQayIdmwjGrGJAI7Y27oeuGww5d/h6o0mKgmjUCpuKHAddFnEZq14xmwdkdM0D4Zzsj2GoewrB5AEw5LDhr3JsMR2voQO3O6FMgdXDrLBmUDUSL4ZdXBmXDb0yC1qJQgrJWdRPUk/uieUZPQe21Kh9Qy5+GRROhTBwKq0rYRFhQ4bKQrIFANGA2o7g/C4zVrdoSSElyXgDcZCFaQFnj0xLWWnbiLNHjb6mpQsnAUSgdylrLKgb7BuJK5mzAwz5pMNWpRNcl9QxWjQ6VM5dQ6+Lq5WvgtHpYsYVZJ48sKKQLyL1T7wtumfHAeOrwwtEq3hrEabVCOXE06uZNF1xfqAWDBcrytZOzpo0G+gKiC5NSSR1+VU9O5VNNW7pubTK0ywbAaY7O3UrEM3nzymms9djWZYBN2Lb8VpWJWsYOeXkX8rOftOlTSheTR+RTsHRcrG+ObofNjhs9xuNuz7EgFAZiw/9+g7WSra8Q5wBTbD3hIi+DssEfiV/98zr6rP7vd9Z4LJw4/CLA7Iqe0vpA69oZY3EpFHHJ1Bikfuse16SgX1vrKqFalEL/9zR7VoPwaAcWnDA9OAvtsoHQzeuJ1vx1II69OyPY6h7DsC0WpuzuYLK7w7A7EQ4/KJ46o62hrINbZ9WfmQv7jp9L4tAf7Ec/nLe2toZSNZIuWwZlJT18vhsfSlCW1EwAWdWkvrA3VftuyPNU5tAkGLP/DOXo4WjMlTk7BSlNFgq5BhTki3X/RDwb4J3XM+SNEFEB8WTeq28/ehDAQ0ggHs5JHnL2FFzLDNQTOjdZiBZQluizbNxMCswSgFZsaNyQS58/xaDR9FyzapvXIgi/7KPBGXgyejFgj0KniU4n6rayzvjKUmfD0hi+4PTjC3UY/OU8zPv9aaFUlTAXHGJpC56c9voM+ErQ5B9nrWSfPvYl1qlpMigbOnUrZ86g460vLBRUia2+FLq5H0N/crUg+UgSslSXUmsx1eQY6C8fF9y16sIWjPnHA9Qy79k1aVpm3bpcTUGun39vHW+/L8cupO+hRzniPd1vW3CB1hPzY89gGm/lEhSQQdnQDNob3TKp468lU692qMCVX/bGLu9OUjtkDMOIktFT6O+tcvbykLbOabNBdyIPqsmfQzU7HubSwOcIBIjVn95A+crJxz7T/TPinZL62WtHUxkM2+LaLGcNefFwtAjDIoRUya2ZyLqJb01E5jjcmsz1HDtkOCoqOlJukfWWtzQhbSMy3DqLgrLbfw67BA79ARmU5RtfGZTl05CE00MNyjatTmO3gC0YIkhLdnUlTDnvoilrEl1IMCXFgvLJQrIGQqWB+jXbqGMvwgsqhUBe/twEQaPRYnTyOPgCZk0mM5XnJgqeQFkyQeDKJDog9+TwN3CThWgCZQl1AXmGysbN8EttFYlJKB2UQK0m+GgMWh+Xo+Djiaha5wffqF+tC79M2pt3oYhNRsmw8dA/DHxxEeweauoZCuIk/9NBGHi4G7m6Ha2NYFb/EcbDwnhCuXzcmVjJ1oxPQP2yBVxUWJxlUDZ0w9BmLZs6XnAl+uMrKTBra6wSnEfqgoY7F+kW3qaMYbBUCp933j1chaGv7kbaD45BVSWMDzrcdEV4Ov/zr3Lw5qvZqKvx7Sin8uQNPOmXhIufTPOrGz/+60y80S0L2iZ+XxN+VRCGmWRQNjSDcnD7Y+qQ7rWXM6HRdLTsbOOX/ZJ0+WU5zRFAVhGTAMKb7zB17CsnF4yzVVkO9cIxrNXsvnWA1Te3tJA6CYWBbucMSmlAqA0IxUFnBQLO6ncMpZyzhNrAmDcyYHCWAKlJyWPbAFX3NZKQvnnLw4G9wQJl687MhW3bLyRx6Pd/LlvK8jw8MijLoyApJ4calCW6UU/pg5bpwigMiDyTPw+mle9DOTEJtbPTBXu7lfI4yG0PXw0QII3wgRJwNtwDB8K6Aqvk2hVQ9dYHDpx1zUtkPcWTCcmyFVk0zVt5vuKjEZQl+iifOIu1li3t+GXcl75ImlnxmHLLlg4fw1rNDhnnM0vNzlOUX1Z7V5pbaX12TmCiqaoGZcnTqBOwxv3CLd8EFu+3mNPhRMYvToFsdRbjmZ3ZPxbM2o/hZMRvGSaNbTl+iH7sNJWJt9b2u7NeMnL/K9zHIO7s+l9FFi1cPHcmH5nI/5w/IdroCzgdKWfPouNuKBBmLUuoC3RLYqDbIBzI5eqS2tlps6IlL4cCEOqsKbC3agR3YU/6fbpFOvuzy4LzhKNgj5/uAAG2dm3gfz5ufDwBBX2SoSsXzxO5a8lFaiU78KfeHVaGo34CbZMMygaqQe/53/vBZvpM/dff5noUWj/8Oga9lIf4vwnt9n+PlQc5sn7bPvaj/JBxsDSIpy4S0xzyv6g5shWqSf2gmpsAc/lTMdm9yhLnX8QJmG7OR9AdXAaH0b93udcKfCTYmspg3DmC0hqYcrrTa4e6zEcO70lkbkIOLpA5SVr69DaQlov3dibrLE+gK7eG27f/YDvQ11s5vuK5dZYMyvrSkvTSZFBWemMmuMWdAco2z+wDVeqnMBXdEtQuu64BTO4HaFk9ni4kdFcuCMonC8kaCLYGnj33eq8YkBTsokNSnvvXW1KJpzhPlXMgiTsoS2TdJyBEJhBwhJssRJOlLNGjsbTSb25Zkr9uxSIKyJbE8tMYkP3wz1KzURgzHVZN9PIz2Y0MKueuoHqrWkA8DIfWysTTb8s9jgNziJd2ocH8+DRLW/A4X2iWdnKk38qUeDRkL2kXH0030QrKWhobRXPLMvdOs06/7vlHkyGF58rWooJ66QTWIuzABsAhjO7Fwtix/JOLFJA9NCdwxzhdqatVC2+xdALd+UGrK6PY/9FbU/gpDjz1iXDJki3nLQ3R9T6SQVlPT0Pw4l5/NYt+VJg80vO7cfT/O0B/qws+OBu8SruopJaL19iP8gOToL9fFPJWmCsVUM1PouCs5uAmwRzbPhvmsMN4eTe0C3pDt7gfmDvkg3nnOUW0qSvag7M7hkMMOMutlVx3IHqK86YDX7LcTsenz4oDBmVbVA3U6lQGZb2NhDTjZVBWmuMmqNWdAcq2HNnAUhjM/lxQm4iQ6fIqugCtnTkRNROS4JC93QvWnSwYHA2oD5+kABrhkoVEnj9PYKnQL7jcRMETKMt9vSXWauQLLvnC60mOaJ4ArU1NTT6Puro6OlmINlCW6Kd07Az6XDFVNeIfVLsN5SMSUDpoVBuNgaXOu0NEa7MOhf2mojg9Orxce1Wo04nGvUfpYobQR5hr6ryKhjrh0dlaukBc8ufzgqsilrHEQpZYyvobmg/tpR85zVW+var7W74U8kUrKEvGpnrmDFTHDwbzVPi2UWIpSyxmI9Hpl0lRCNX0ODRNGQimUJjBANGjtoFB+g+PY9hXd+Pe0eDxE3bF76eyVIs3XsnCf30jlxePVj8sQdGnY3Dlo8l+NfXoupsU/P38v6OHS5ZTlAzKcpoIzfn6BSVLY9AtEw01HSlE7BY7Bv9FHmJf2okLG4T//4WmtYGXalSUQxHL7phqOuIZiA68FpcSiNXswU0UmCW0BsQpWDCCXauCLi+jjdKA8Jl3ZqDgbN7IF5azAsFZbj3kvgYixiuuQK23vngzlHGNd732VI7NZvO5xiJrsKr7p1hQ9vRc2Lb+QhKHfp9MX+BpvF3jZFDWVRsRdt0ZoCxRWcvUXmieJpzCwGnWg1nzEXQbR9OFZPNB/q/4ETY0cne6WAOEv4lQF1TOXdbFLRFevTdQlli1uk8g3Ev1BcqSCQIBYrktxK5bjN3L0Wq1dCJQWFjo9VxaWhq1oKzxcTEFB8unzHdXnaB7/f3bFJAtGzmWtZgYNsFnvpbrBZTGoP6ItLfY+uykwMTW+4UoGToOirgU6L54IDBX8MQ4Htmx/3wIjE6YV3dSO3NyDuWSJZyy/gSH0QDlmOFoiHLnmdEMyhJOawLKKtOnCH6ECKcsdfp1LEdwHikI6i8eaduWa20U/nGs/K4ao79zAMnfPYiqhy1S6KrPNv7sH9fg9W6ZuHeDXwcEjH3UdzQIOOtP+Pk3syhwVlfe7E92SeeRQdnQD1/vX+6ioP8P/84zjUHR+XoKyg7+Uh6IEzCpB1uLBiUjJlCeWWXWhk7pjqmkiDoAU6X1R+vFI0Gr01x8B9rMOOjm9EDr0Ww4TZ3LN90RnB3m03LWFyjrSmngTUGcNSxZc3GBW39xoC4fKMswjNf1Fbf2evrFeSpTJ4OynJoj4iyDshExjJ470VmgrHp2P2otS6xmhQbTF3nUWrZ+2UwoRw+DtTn6JnNCdSXLBVcDBLQhFrLFxEpWQsEbKCuE64ibFLiDt+4TEO7eFzDLp7JopS/g9FI6Jp0+W/7ygikzplFgtmTQc2uJPYe5oj2ey5fvREGvSTDVhJaHzGPlYRZprmtA2fgM+vtu2O1bb8Fsur88stbKOyxtwb29fjdHvXcnlAlxsNTygy9+VyKBjNEMypLhqU5Po8CsqVopeLT0J1ZRS6bOtmIS3EAxgg47WnZms/yxa2bDYTIKzk2sYoe+sgvT/ucEWlVdT4EiuOFeBCcOPUlBLHLmC7embqD/l1fi/ftAfX7nfbq9/JO3o3PHhgzK8j1hwUl/49VMvP5yJlbMvO6xwFUDrtBdKknfOeAxXXKRDgdKJ82hv83ytLmd0nwHY0DL5iXsf+jqDDh0wjm4fTbQboX+7Cbo5veEbml/mB6c8SkeikQWnI1/YTm7cwRInHvg1kDuayUhlrLcOosDX7myyb0rJRwfKMvl83Y2n58E1clJLCibPxe2Lb+UxKHfG0Pb3NoaXRQ33sbRU7wMynrSSoTEdRYoa759lvLKNmf0Faw5p90K44a+0G8YDOXooWhct1JwXllQ1oC/GtBeuo7iGOLlPhFo8u2J2N86QpXP04vcU5yn+rnJgvtEg9y7A7BkUiIE6PVUD4mLdlCWcIERS+zKjKXeVOQz3tbSjJLBo1A6LJE+p8UDEgGLdw+5dsaMomFz8WTMUsAujDfRZwMknugwmVG1aCXVHTmT+1CHvVNZp0DHlz4SXpXNTN+Bxrx4vznXHAYD/agpvz+BaAdlCXWBctRgKGfOEPwMtjn9WpssOE84CjoMOhBHXqrUz6A7sVNUEw/PfdhGOWI1S9/KjljGEgtZYinLFyxaA+71SsGtj8fDKZBz173M332H5fysKKp3T4qKexmU7ZxhPranmIL/r3XLhM3muc74b+yljr+2j/3Cs4AEY5Ur1tK5TEnCZDiMnfPByHDzHJrSB0I1YyiYR3eCpjWbuga6LZNZR2AbxsHW2BEUDVplXgpqZzmb3R1k/uVoeUFVw62VXIFVT3GeivcF6HI7Ed3PrvV4KtM9ztbwELZtv4DqwcEXoOzmX8ImgUMGZd1Hs+O9DMp21EnExHQWKEsU1jy9J9TpvUXpzlx0kloJNa2Zx/LhVZaLyi8LyxoQqwECxhLArHzSLLFZu1yemxi4AqueQFVPDfWUl8h5yu9tYuGpXE9x0Q7KEp2UxKeCgKkWtX/bYBt3bmIn4iPGseexMz2pui1O/6wSBR9PhHLz0ba4aL8glrLk9142IQOWJnXI1PHkUn0bqCOmEuZCFkwr34PdZUEgJj+RVR/YTd+dlvqu49EV2+ZQyUc7KEv0Wp06gTr9Is6/hAbm/hm6SDbePSU0S1jJWWsr6bbbprT+YB7eFNw2h92JnH6X6W93d9pdwfnCWZDgqoRD9o1Xs0A4ZfnCxX6sJd6zLfwWtZ7Kun70MbVe/PDfI4sCw1NfvcXJoKw3zQQ//rf/vp5agP/ie2s9Fk44oWO/lIdBL+2E8rF/cy+PBXdxZOPeI6yfgbixsNQ1dEprbE11UC+byO6C3bM6OE7AnreceXgB2mUDKX1O68nVXcJrTsHZnSMoBmHKeQcGF3CWAKWuVAVCDVWEGskIlfM00ObD/WHZ80domlUyKOtJQRKPk0FZiQ+gr+Z3JiirnhdL/7xV64RbaZC2G7fHwbDuU9SMT0TdfN/Ag6++ymmyBvg0UJoyg4I0BJSVanDdBsOBp65fWsk14YclL33X4A2U5eLdy3DdauNajpBrGZQFNBdYL7qV8zKFqMyjTHnSGJQMGkWpEBQxidDevu9RjotUbj1OgVndo851qMDVH45n3e37UAxORsmIiTA8UQS9iYYWC5K+vR9j/vGAKB5Ze2Mxuxi4Lpzyx73xDhMDZfKIqOeS5fQig7KAwiGfMwAAIABJREFUoaAQyvhY1MwVt91Vt34sdEtj4LR0jiUWN2aBngkI2zRlAFSzRsBSLfx/z6i1YPZvTmNIt924nlcWaDPCJv+gD/dT0GrDcn5LweqzX+Dp54m48Mk0v9v/3veyKSj74ELw/1v9blQnZ5RB2c5V+BvdCI1BFvZueOix4mMLC6m17LCv7faYLtVIdk6ZBMXA0TA+9Y/7WXTfHXZoj21/4QRMGTzDKbJLo5XQ58z9GNrlxCHjRdHNC0YGV3CWyekO4+F0VJSXtXN4TABa1x2FxJiFWLy6GsiQtggFW4XKuffPWnyMWslai4+27UisOzUP1k2/ksTRukemL3AfU/d7GZR110gE3XcmKGtX1UE16VM0z+wlSoOWsht0careuoBa/OiuXxGVXxaWNSBEA+aKWvZLc0wCjLcLhGQJWxkyQeC2wLiCqaTBXBo3WSAvf1cnXp7yccAslxYIIEvaIIOy7KNTMnwiFP2TYDMK5zZ0feiYZ0VQDEhAZdJ4at1dPGi0a3LHa4eTUhg8GjwLhNJADqwGTJVKlCam0cVMy/mrQVXLwg/OYfCX81ByUwSfr8MOZttgMFv6Aw7/t0s3Hz3IWskqX2y9C2rnJFaYDMqyA1Y9PgVVo+JgbRZuKWarVVBrWcPZTZIZdd2p3Sz34fJJcLQK5z5sqtBj4utHQLY6l9xSSaa/fA09vu8ZBUj/8KNtfKI0/WqPVBR+Oga60lpB8u5CT25X0Pre+W62e1JQ77k5DZmfuM93PFXkOufx9IGa5BFbpqd6uDgZlOU00TnnDcvvUVD2jVe8f/Ae968HqcXsip5dA/SFShMEjCWgLJlXEpC2s8ILJ2AxII4U4XQGrWpCYaBbl8xSGmyZDEJx0BXBoS6DcccwmLLfgXnfaNy/+0XbOssVkCVtI/9Dnv6PyLpLyPrJL1DWYaEWssRSlgRunSWDsl3xtISuThmUDZ1uu7zkzgRlSWdbCIXB5L4AI867IrN/LJhVf0btrDQoU8cEdZtElw+C3ICw0ADHI1sybHxYtCeSG8FNFszm6AYGm46fpZbZVUtX+z3cNXNnsk6/ho6lZdVkr/NZFnH29bBPGsqXbvcpF22J9lY9KqYtZHW4bjvgJ3+iq97ys5/Qhd++6b4tmF3zkGvTjc30Q6S97rF7kuB7p9UC5dhRaMhcJDhPpAvKoCw7wtrLVyhYX7N4saghb92/mDpisWvDHKi0WdG8eTEFZMnZabMK7mfp7SYkfHM/BWXrS6TFKe+rkyaTDf/xtRy89ZfZ0Gm8849zZdxKf+7cK2EFFyX6/KfXV1KOT0JhEKpAwA8OEPG0M8i9Xk6G+yhNzu7ArNgy3etwv5dBWXeNhP7+x99aRS3C//jjrR4rs1vs9GMpoTEoOBVZHy0JfYEijswHE0BoDTortHMCtnJ68JyA0Q44Ybp7CrolMdDN6wn9mY2Ajf9/LBR9J+CsfsdQCs4yhHN2Xwocus6hjPDVH/PdNdRKlnDKksCtsygou/HXsErgaN3dX3b05WuQCfVdSQksFotfx0v+ZiSVyiH0GuhsULZp+WjWcmGpuO3h9qZSukjV7WOtZZsP7wu9cuQaokYDyuz1INu/i/uLey6jRkFB7ig3WYh2UJaoVTFkLBTEUZefIKBdp0Xp4FEoG56I4hiWD9ne7JsrsOHoFRT0mADN7aIgj6zEi7M7ULOS5eqtnLkEdr24j4euva99pqXe2jN+mQ+nQ7jVCOGPNeV+AObcctfiRF+3nDpGgTem+KnovJGaQQZlX4xsdUoSqkfFwS7CSp+Asdr5vdG6Wxz1wYtaQ39l06ihXjqBzjN1p/eKqvDW3oq236xBAHApqvAuFu79m10UIN23hd/RoFmtpc69bvSY4LdzL2VJE63vN9/2bq0YqErcAVZSHgFZOZDWU/me0olVLDlI8KdMT/W4xsmgrKs2OudaozHhtZezqMXs7ctKj5Xe3ldFuWXjvpLnMV3KkcThV0n8JPqRmTgC68xgvH0BqqmDgu4EjPTByejRengFtZrVZsbB/ORGZ3atXV0EnDVsi4MpuzsIrQFzcDwc+tD5JmhXuduNw6iGdcfvYD6X2pbCrbPqTs6DdcOvJXG07pJB2bYB9HIhg7JeFBMJ0Z0NyhILWdXkPtRiVqz+mBOzYMp9Hw3Zi6g3aWtzs9giZHlZAx41UEydeyWibr04r8weC5MjeTXATRZkUBaozzvw3DpzB6/evAmo9m6nZZQmTaDnklEvJmbe8hSnrcSjATNg0/kPPHorW+rxqhPn6BbAsuSpMNeI9xhuNdkx6T+OIv5v9kJTx4hQh5N6+jVu6AunxT9KC1KZ02qlHOz1i2aLqDvyRWVQ9sUYN584SUH72txVLyIFXOnPb6MLYktV+H3QsVQqoJo5jHLIMkX8nKmu3T089yG1as/qewk2i/+UIa5lhsv10T1PKUD6yS+EzW8u9ptNP/CV7rngdxdifryGWiqe2SZuHMRU6GmLr6c41zKJFSwHwHLxrkCtp/ye4ri8Qs4yKCtES8GXmTwynwKzb33VO33GjF+cpL/7SW9HoANUhwOlk1hHfeVTFwZfwT5KtKkboM5Mox/HNEF2AkaqtVQ9hjZ3FEtpsGM67Brhjit9NNuvJFv9Uxi2xbaBs8aDE+Ewdi4+Yb48E7btv4aj9QXVDLfOkkFZv4Y1bDPJoGzYDk3gDet0UJZQGMzsRbllmXJxW5ocrY0UlNXvn0ZB2cZ1KwNXgFxC1GtAEZdCgSwCzMqhczTATRZkUBbUQlYxaAyKB40JSPltTr8GjqYW35pzl3yWZ1Zp8PDTKSjJYC2EfApHYaL+0VOUDB1HD33hE1Ea2DDiBl3o3Tsqbluk+f5+uiPEWnlHVH3uwppz+RRw0z8UR5vgXk6k3cugbPsRrUocgapRQ8VZ6dut1Cu2dnVS+8K6+M5w5wJUaTFQzY6Htba9E0tfTXPYncjtf5X+XvdOjbzfi05norQFhLqAXPOFNudevabziXpN16hb8Ua3LPzPX/tPfeC1cJcEAqa68zMSS9e09OkdHJly2VypCbg4rhytVkctbcWUabfbYTAYfB7cOovIyaFzNfD9v1pJPw6M+OSQ14rjuuVRx19ncsW9570WGGYJ1cvWUJ8DpWOmivuvD7QfDgd0J3aGxAkY1zTj9QPQLuhDd3AYr+zhorvkbG94CsPWgTDlvEMtZ42HJgGm0FPgONRPKW2B5Vb7/1tunVV3cj6s638jiaM1b4BMX8Dz9MqgLI+CpJzMTRZsNlundUO1aQ5LYTBvoOg6TRdz6KJVtXU1XXSaK4Pn6VF0Y+QMkteAubiS3fLdPwHmmq4hj5e8Ev3oADdZkEFZVnlVK9bTDwONB0/4oU02C3H6VTIgARUpxOlXIooJJQJPaDp9k9IYqM4HBgLyVCPZZHNdA0pHp0MxIAnq075Bbq6Td49UU4BnY/xNLkrQ2WlQg1n9JzDH/AdDaEUOO5QTR6N29lRB9UaTkAzKth/t+s1b6DyqIW9X+wSeO6bgPLVQYu6e4pHshGSnE5pDm9g5ZdYUOAzCF8Fmgw1zfpuPIS/vwtXtpZ3Q2M6v4uOf7aDOtoi1rJAQqHMvUseYD7ZQIGx5cmitDzkwlQCxXPBEP8ClkTOxeiUcsiSv6z0BYn2BsiSdy+NaHgFaCwsLfR4KhYKmy6Csq+Y657qqTEOfxde7ZaGhRu+x0vK7asS+lIfBX8qDtknMzhaPxYVlZO2GHXStUzJyIhx6/3fh+NM5VydgrecPBtUJGGmPXaeCbvccltJgdSKsNc/8aWbQ8thqHsKwpT/LOZvzLpgjU4AAdj7xNcxybDCsu96D09L+ow+3zpJBWT4NSitdBmWlNV6iWtsVoCxpoHpKb7RM6ymqrUTYadaDWf1nGHYlo2ZCEurmzxRdhpxB1gCnAQJeKfononx0OhclnztBA9xkQQZlWWUT/i/yHJYMnxCQ9msXzqbOHUrjJ7LP9TT+LWvF01ZTi1lrS2tAdUdqZsIryzkAq920y+eCQtvIUI/txHO71SxuCzRzPAPM6j+CgLOBBO3l8xRoa70jDhQOpE6p5JVBWbeRcjhQHT8EVYkj3RL4b3Xrx0K3NAZOC7/1JX9p/kk4TAya17If+Vu2LQccwn9zmnoGaf95DCP/ei+eXBJPUeJfizs3F+GPJbyan/1emAXZrSnr6Hvj2ugsvxtKLI/fejUTb7/a3mrL7wJ9ZPQGyvqylCXFkXzEMzo5CP/sjZu3qMWtL1DWW5kOh8OnlSwBYrl1lgzK+hjMECYNeHcPBWZ/8I1cr7WsGnCFfkxN/PvI9VfSuO8YKFVbXAosDYHNM7wq0kuCuxMwwv0d7GB+ehPa5YOgm9MDrcdWwmnuXPDZvT+26vswbvqcGpIxOe/BdHwmHEEGZ61lZ1kr2ccd/+O5dVbdifmwrPutJA5d3kDZUtb9QXK7l0FZN4VE0i03WehMS1miP/WsvlClforW8wdEq9N0Zyf9k2s5sJ4uPnU3roouQ84ga6B2SQ7d0kOcI8mhczXATRZkUPaF3isyltIFsfaa/1arThNDnX6VD0ugFAYE6DWVe3ZywdVMwNjCz6eCgLNy8KIBuwPKLNaauXLuCjgYz0DUvN+fxpBuu1H1sMVLQZ6jrcqH9J1m+kKcxaKn0mqnTkTtjMmekqI+TgZlOz4C9ZmZdB7VcuZsx0QfMbZaBbVMMpzd5EMqdEmUs3BhMt0aS62vRFRV/agFY/7fAST/00HUPn1hZSmiiLAX1WkseOsvs/H9r+fAZOLfCefq3CuQzs2O20cBsAkfbwukGEF5PXG9eorjK4yAtJxzME/5PcXxlemaLnPKumqja67ffCWbfqCYl3rRawPiv7GX0hjsmXLPq4zUE1ou30Rx/yQUDxwDY3Hn7w6gNDNTY6GaHgfT0wdBV6fTwqD15Gro5n4M7bIBIEBtVwdb2U0wGz+ltAamle/BlD8XsFkCbpbTboVlXw9YDvQGnB0/SHLrLBmUDVjVYVWADMqG1XAEtzFdBcoSMFaV+hnUsz4V3SHyR0QcoRi3Dkbt7HQoU8cANqvocuQM0a2B4pgEus27eXdot9hFt5Y9956bLMig7Av9WOoaWCvX0VNeRPpxpT6yl4K7FRPT6VkxZCxvKeqrDyiNQePJa7yy0SzQdPgUpTIon5ABS6OqnSpOLn9MLW2OLuT3bu6akbzPmK0DYdw2GHA6XJNEXxPrWOWowdBe9t9Bj+hKJZRBBmU7DpZNq0N1fByqxiV3TOSJad2/GLr5PWFv6VxLUzNx6DU9DqqpsaIX9o/O1mL41/Zg6n8fB7Fsj9Tw559so7QFZ44IA14uBMG5F9HlD7+WiTdfyYTJEDjowDc2JpOZgqkEVOWCK8DKxfGdieMvwjVLQrDKdK1TBmVdtdE116ePKejv4fVumV4b0FzLIPalnYj90s6IpTEgnW8tKELxgCRKcaX9IvjAqFcFP08gH9RUS8ZTDEB7dFtIeG5tdSXQrk5kHYHtngOHXtyHcr4++JNuUVyBcX0flnN25XtgTi8GHPwfzLzVZXm4jVrJ2pQ3PIpw6ywZlPWoHslGyqCsZIeOv+FdBcqSljVP6wl1ei/+RnqQMBedpJZFutOb6SJUfShyt5x46L4cFaAGimOTKWD1rP/oAEuSs/ujAW6yIIOy7bVXNmEm5f0yKgLjyq5MSUbJoFEoGcw6savf0nFrU/uagdIFW/CwbxrMTV0/eXVvWzjd6+4+hGJwMkpGTIThGQt4EGu7oa/swuxf58PpFNda062t9F1mqwvcyUjtnGnsR0oR27jFtVba0jIo63n8lBkzoYyPhaHgBbjlWbJ9rF2rog5WWnfPbZ8Qwjvm0W00pfWHatYIWBvE8cBf2lSCwX+xC/PfPQOrqaNlUQib3alF79lUSK0CY7rz/++ThrU59+o9I6B25i2+RK1k+/9kTUDliMlMwFTOMRfHJ8sBrKQcAtISmgIOuCUy+w4cbKvCNT8X6RrnqUxOTuhZBmWFaiq0cj/77hr6fP7fmxu8VrR1zO2IpzEgnTdX16A4dgxdBzWfv+JVH6FKcNps0B5Y38YFbteFYN7pdMB4dS99R2kXfQbmzvFQdUdUuZbH+TCu/YTO+5jc92E8v5x4/BVVhtOshXXnO7Cc9u4gmFtn1Z1YAMva30ni0O0cJNMX8DwJMijLoyApJ3clKKue05/+ITdvW+yXCollEbGYbVi5DMrRw2FtbvarHDlTdGmAbA8nVrLF/RMAnXCnINGlpdD2lpssyKBsez3rHz2llBrlqXPaJ4i8M5cVU6dflRMmsNay/RMBu28Qwq5n8GjADBSnrRRZW/SJmyqVKBk1GYpBY9B85Q4mvX0UI76+B5o6cZZ3dl09mNw/gMmfH7ASDUUP6QdKTX54LDwC7lAICpBBWc9KZUpKUR0/GNVpkzwL+IjVn99GrZE6w7mK/sJhSlegWjwODp3GR6s6JuVNukvBlrVDrsPpEPnlpGNxYRuj05kobcHbX88WRFtAOnKlxyQU9EmGvroxoH797JuZIJaIypKmgMoRm5lYunIcsa6ALCmH3JM0Lr6ispJa13LyHG2Be52+ynSX5buXQVk+DXVOul5vo6Ds6y9n4cHdOq+VRgONAem8Rd0CspOK+NZo2PXiQ4VXxYQggXl0B6ppsVDNHCp614PQ5pCdHNpNqazV7MYJsKl8U3oJLTdQOUvRCRjXfvwcnP0DmMveOY/d67JcXwDb9l/Boa1yT2q759ZZFJRd8ztYJHDodsigbNsAermQQVkviomE6K4EZU1FtyivbPOM3n6p0lp5l/6ZGc6thTJxKBrXC/9D86tCOVNEaKD48wQKVJWPlZ3EddWAcpMFGZTtOAKloybRSbKlIbCFbe2iOSwdQjJLYyAE6G25+YilMcj3vB2qY2ujN8am0aJs4iw6Vqu/vxg391SIVobxcBqYNR/BaQrcyVr98oVQjhsFpzX024ZFdzRMMsigrPeBqJo0gQKzFqXIBavdCu2ygdBtDMxJofeWEQ+vTmh25bJWVatniXIuZrPYkdX3EgVkjywo9FlNJCT2/FUeXns5E0d2PxXUnQeLd9H5UCDOvUhF1w4Rp2KZ+PDfcwTVG01CMigbPqOd1O8oBWa//1fePz7XKXSIfSkv4mkMyKgQJ7MlCZPpf0Dtuh1dMlC25iaol02kH9y0x7b7dKYaSAOZB2ehWxJDKXcMF3aAUEeFQzAVHAaz+k8UzzCu+hCma+t9NosAsQSQtVzz/TGfW2fVHV8Ay+rfSeLQbZdBWZ+DD0AGZfk0JOH0rgRlidqap/eEanIfvzlhmYMTwKz+M9S7WBoDc2Vg234lPJRy0wVooHoF612YWskKkJdFQqMBbrIgg7Id9as+fYlOkCvnBOa92q7ToiR2FCoSkmh55Jk3lXv/qs61pHTeJjz8LB3EAZgcfGugKL8Sp95hQW9l9kZR3GjWsht0Em4uOOy7EgGp5soKaiXbfHCvAOnoFZFBWe9jr7t5iz5D1bNneRfyksLcP0OtkExFIXC6arOied1cCsi27MgUtWA3aCzI+GU+db539zD/f5+X7kkmmgCxBBjt/RthDgMdFiu+6DkOtz8ZB6dD3PZZd6W8971sCnbdPadwT4r6exmUDa9HgHP6tSjd+7b9NUNu0A85Y76zP7waH4rWOBwoTZlGd2kpV6wNRQ38ZTrs0BzezO6eXTkNIaEzICA004rW/YtYq9nckeiMHR78nWclTLd3glnFgbN/hOn2do9ZLaeTKXUBoTDwFbh1lgzK+tKS9NJkUFZ6Yya4xV0NyqoWj2CtH7LGC26zq6C9qRSmnHdhPLscNROSUDdftn501Y983V4DBJgiHukbtgnjWmufW74Llga4yYIMynrWqCIuhTpi8JwqPLZp61oW4J02m54Vw/it2Ww6Awo/nwrF9M7jBRTeo/CRNGotSPqH/Uj5p4Ooyt5M9VuRsRQOxsTfSOLca+OnMO4czi8rQKJhdRaqk4bBpvM9SRdQVESLyKCs7+GtGpOIqlFxvoW8pGpzR0G3ckTAzupci3cY9awFVepn0J0W98FBXW3AxNePgGxFLr4e2LZ81zaF67XJZAOhLCAHoTAQEq4MX0r/twqzAwOeSh/UUED2l9/KElJt1MnIoGx4DfnB7Y8p57Ivp1+kxSP+ai8GvZSHg3MfhlcHQtSaslR2nlg5a1mIauAv1vTkHuvEkdAZKEK3s8FSeh/azMHQzekB/YlVcFrEUU/x98R/CdP1jaAWszndWQvaBy985hCnXrZtv4Dl4VbeCrh1lgzK8qpKUgIyKCup4RLX2K4GZa3qJqgm9UXzdP8cfpHeMqfmwpT7PjT5h6ilh+6696+f4rQjS0eSBoqHp7LAVExCJHVLkn3hJgsyKOt5+Oo25NFntWY1/8TLcwkvYstHJKBsSAIUg8dQSwjVybMvEr1cqS7epTQGTedue5GQo1cNuEotaZ5da6DKUB07A8WAJJRPyIBF5Zvf3HR1HUwr3wP5qBhosDY1QpkQB9WOTYEWFfH5ZVDW9xA37d9P51C1ueKpoMyKL6j1kfH2Ud+VCEy1NdVBNS8RqrQYMA+uC8zFilU+aEbi3+/HuH89hPqS6OCN/+z/domiLdCUVKPw0zG43CNNlG49Ccf8mHWgtHFGvqfkqI+TQdnwewT+9zvsM/uHH23x2jhXGgNG75uT32shEkuompdF554EoEWA1vP+dt2mUUOdmUbpDHQn8kTtjhBVp82M1hOrKDCrXT4I5B0WTsF0ZQ31OWAi4OyaHrAUHYPlQG9Y9vUQRL3ArbNqjy2AedX/SeLQbpPpC/ieQRmU5dOQhNO7GpQlqmuZ0YsCs3aVd+J1Xyp2tDaCyf0AzLHpqJ2dTr1PO8xmX1nktCjTgLmmhvJrEktZc0VtlPU+/LrLTRZkUNbL2DgcUAxIhCI22YuA8Gjt5TN0kq2cnUGd2ykGJgnKTCxlicWsTGPQUV1fHKqigCzx1OwadF88gOL/s/ce4FEkZ/r42nds8Dncne0Lvv/FZR3uzn+Hs8/pnO2z97ywhGXJEhkFEFlkwZIzEjktWQhEzmERAhaWJWeQRlmjPCNpgiaH9/fU17QYSRO6Z3qkmVHV8/Qz3VVfpa+6e6re/ur94saiYNQUWErKPZOaz52NFfQR0ZwTGj2FWGDdrm1QJw3lji5Fhfj55aCsH+WwJJcLZQnDUZYYnAW3fuc06FYMCNnqyFr8XLCWmhUHdi4nPDxXgeFv7MfM756Csb5zzAPPH1Oha5d0dPuhdE7I3F5peN4vCVVXHshRbxtZS5ONnHt963Vl3mdtKoiBCA7KRt4gNjv9ejUdqme+P6KKNAbj/rFjHGF1hOYq122nD/iFY2Z0GDDL/ot0J/cSMFvP6AwM8hw7ytEbozDQrx9FHxUNBxfDaQxfXXLaJci6YM1dQxiHdfPPyUrWcmWFpGLEdRaBsut/CWsUHByUDTy0HJQNrKOolYgEUFazbipRGGgWDw1aj5arGwWnXzc/esGtx7enB63MGMyYxwCuAUlQxYcOcsWgetq9S+JkgYOyvlVfuiCd7lnt2Yu+hSSmlE+eiIJBiSh84dChdGHgBTQDYxm3LKcxaKlkXY2ZtkRPfus47Na21jOmgmIUjJxM7xrDvbbb70zZKTBt7Qm3zdSy4CCunE1GqJOHoXaLb6clQRQbs1k4KBt4aCvXrKU5lOaEfItXR3URLWybcnYHrsiHhPnxTbKO1cwfDXtNhQ8p79GXtqgQ/2dZWPbHi7Bb2j6b3nNFdywzZvuPL6zDNz4nnbag9MwnyOuXhNz35fMHt9ZWau+9RF3AfnnwrgEOynrXS0fHik6//vNL/v8/R/7FAaIxOJP+tKOb3G71V23PQn7/JBSMToXLIo0OJRyNsxQ8Qd2c4aibOzysdAbM6VdT7l5yAsacgTGnYJEU3BYd7Ht+Dvv2nwoOwbb2gqPoht8miuusypNLYF33q6g4dLvi8OjRIxgM3KeFr8HloKwvzcRAfCSAskyN2um90DC7R9AadVuNMG/uDvP+JNRuWgP1mOHccihobcZWxuqjpwULwf5JsdWxKO6NOFngoKzvQbRpG8i6uzAx9O2l1tIiFAxMRPl0wcsusxh36oy+K3+RUvfRTaIx0F65G1C2swgs+s0FDPnzLJQ+8G1dY6vVoGh8GtEZMMdtYrA++0hw7vX0vBgV0m/9sYMEoNmq5IFXIVUaxZk5KBt48Bw6PcpHx6NsQnAfMJmlkW5xL7iMDYErayVhyDlCllHME7fTII8feV/qHbJe3zz0OtzuVgXH8OXwd48SKJq5RbrF69VuqXjYOwWmat/vMKkqYxayjJuTWczy4F0DHJT1rpdIiP366xno2iUD6xf6pkgpfdSIwa9kIu6zmbCZO8fHHjY2tdnHoeqfBNXwiXA0dpz1KPsv0K6bLdAZnM0KH50BAIdGDf3W8fRxUbd9CpyNkcFHbruxkqxkXXXPYTm3AOa1v4VlzW9g2tEPjgrvnMfiOouDspHwplGuDRyUVU6XEVdSpICy9XN6QzOlDyxPPg1aR5bb+2nBa757lkBZ5vyEB66B/P6JtBWnZNZSrowI0YA4WeCgrP8BKZo0h6xlTfmhc49WLv6AQN7imYIzh4Lk6f4rf5GaP2MDHg2cDacxchwhSGp4GIRyNucT8HNw9r2ApTubTCiZvYzGr2r3QcBhJQtZ88HgwK7WFbrtdqgnJKB6xaLWSfzahwY4KOtDMa2i1XPSoB4dB3NBQauUwJdsEatf+C6Mx2XMv9xuNGatF5y+bvwAcNgDV/RCwmFzYm3fK/RcHl/c1jJdckFRKHj/ZhXxyP7mWzskt/7+six6J11LCrxbIlCh2z84T4Bwv+9zp5D+dMVBWX/a6dg00enXW6+l+21Ieh/hHTP+X476lYu1RO2Fy/S+UA1Jga1G23G/UPkDAAAgAElEQVTdc7uhP7df+Gi3fk5Y6QwAN0yfHoduyXt0mG4cA4vrqOAyVMKx52ewXvFwZG4zwXJ8BsxrfwPL2l+jaXccXNqiFk0U11kclG2hlqi/4KBs1A+h7w5ECihrPLNLoDCY1893YwOluF0wb+8L865BqD+aTRZE5oL8QLl4egxroJyBIi9A2RjuZtR1TZwscFDW/9AZHjyh+7d42kL/ghJSnXodCgcnoCQxGYxXlllA6D+5EzCntbYBD9+bhuJVmQFlY1lAU2rE8M/tx4zvnILbJW2C7nY4UL5yIy1q6leNEpx7NSpj1aq7fJH+44z3A49hLI+LnL5xUFaathgYq06IR3nabGkZWkkZz2yCfkF3OOrKWqV4uXTYUb9lAc3/GDArx8zVrLdj3v+cx9BX9+POMQl1eak+mqO+/zcb8NZrGagolbbV02Wz43aPCbj57gS4FXDi8+MvpxMorC6oi2Y1hr3tHJQNu4pDquD7X9lIHxe6/3CP33KGvbG/09EYMIXort1C/oBkqAaPhblcmfmLX0X7SSS+8bkjwk5nwJpAHxh3TSerWWY969B2jD8S60cTYd/7C7hMbUFxl1EL08FxMK/5DSxrfg3TvlFw6QT/POI6q+LEUgJuGXgb6UfjznhOX+Dn/mdJHJQNoKBoTo4UUJbpsGFmT9TP7BmSOm3PLwrbQ29nk8Mv5vhLziQ/pMp55ojTQP6AJKIuqMk+E3Ft68wNEicLHJQNfBcQP+mAJDgaQ/ciXrNdAAjVS5cKHyskOhKrPppLNAb6B6rADY5BCbYdOu2HZzDstaygvLnX7NhMW800S4bDaVLA4tjtRuXsKXTw/zfpNxwHZaXrqnziOKIxYHQGcoPLpIduaR8YsvxzlrqaDGBUBZop74NRF8gJjVVmpH7zBPE751+PjC2mctofquy00RcISPpgwiXJRV0dsYI+ED1ac0hyHl+Cty48J0D2t/+4xpcIj3+hAQ7KRvatUF1tJAqON1/NQE2Fb1qngttaxL2yr9PRGLDRM957RM5n8wePgUlV3KED6jIZod04V6AzOHcg7Gt8xi+rX94PuoU9YLqyH3C72q3/jsrbRFtgu7fFb52uhnICZBkwywBaBtTWV6sJ4OSgrF/VRV0iB2WjbsikNziSQFntB31pcs6sZkMJpswRMG/tCd3Hl8jaQ3c5J5TieN4o1UDBkPHCtpuBnEs20oaQg7LSR6Qm+yTdx+Wr/U/KpJZYPDIRRUMTUTBiEpVb9eG+wFndbjwbuwJPhs6Dy+4ILB9jEieXPabt0aeWPw6qZ+YDSWha3w0Fg5NQNHEuHA3y+DJbV8qsY5kloy43spxRtG5npF1zUFb6iGjPnqN7rHLtWumZPCSbrmSRhZGtxDulgENTDc2iZJrzme775nP0KLL5tOJZI8Z+7TCYR/RqlXzQuLmgKD0pzG8gC9kffm2j5B40FpTjUZ+xuNItdI5yVmm3r6/Hm10ycOVwcO9EyQ2PAUEOykb+IMa/fZg+cnzny/6fqRV/yqG5wJRvsi3tnSuYnhdANWgMHey8o4Ph4hH6/2AALfvAF87gNDbCcGChwDW7MQnMqWX4gxu2o+/DduBtwCWNs9tR/RxNOwaScVrtwekCKHt8KRkFMA7aSD8adwzhlrIBbiwOygZQUDQnRxIoa72dS7yyjF82lGBXP6QXkuXjLahaNAcVk5LhMofu6TqUNvG87asBa0UFRCtZds5DZGmAg7LyxoMmwnFj5WXyIa27coHA2IoliwQHeAOSAFvgCZ+puBIP3p2C8q2di1ONgT7MQnbOj84GZZRqy88Vdm88PQ/D3YdQxY1FYdI0WCuELWY+hslvdPWKhcQny3hleZCuAQ7KStcVkyxLHIGyhOHyMonSDht0qwZDv7nte8tWpoJmzjBoZg8B244qJzzJqcKoL2Zj+rdPQlejgNW5nMojRPYX/7aNAKTnD6XTBlzqPQfP+yWh6op0h2C+umvQmsiy8PtfDJ2X1lcdsRTPQdnoGM2urwlOv/ZuuO+3wYwuZfAr+/DkYrVfuVhMZFayzFpWNTCJrGc7uo+20nxoPhhJh9z/kmDabn1+A7qVA4mex3hhO9wy+M/l1md/fpisZO2qU3KzwlF+DzUnFr0EZTN+A0sUHI3bOSgbaLA5KBtIQ1GcHkmgLFNj/awe0E7vFbJGzSdmwrz+f2HJu0/WHtoDe0MukxcQPRrIH5gsWMkOHRc9je5ELeWgrLzBLlsh0A5ojp+Tl9GHdOmk8SgYlIiiKYLTr8LJ83xItoxW7zyJB+9ORlNBecuEGL1itAWzvn+aQNm6Et/bGn1232mH+cM+MGWNbhYxFxSTlXLBsAloCsLaxFpeSv9pjDedB3ka4KCsPH1VbdxA91rdEXnUAmIt5jtnybLI8viKGAXzwxuomzYAmvkJcNTJ+zBxfV8RhnbJwsJfnYe1qfNZ7DMlrl14gwDZ5H4nmnUa6KT0zCfI65eES33800kEKkdMH/v2TmrD/GH8HSTqxN8vB2X9aSdy0ran30HXLhl463X/TgpvHykjUJaBs50xMF5Zxi/LDF90n97tcBUQDc76OdBM7Q9D7vGwt8dtNcF4PF3gml07AvaKPMXrdNvNsO//A6zHBgRdtrjOqmCWslEAyLI2clA28HBzUDawjqJWItJAWe2iIbQdoW5jaFusnI2V5FTFfG4Raj/cBHXSMNhq5C0AonZQO3nDdddvkwVg/oDETq6JyO2+OFngnLLSxojxyaoGJKIwYaq0DAGkrAXPUTAwEeWzpkE1MJmeF0txYEc5brsDT0ctwtOExYACjmICNLPDk08uFWgLzqY/C6otlhs7yErWWdvS4aS1qgaFY2agIC4F+pv3ZJVdu3U91MnD4GwKAiSWVVPsCXNQVt6Yus1m4pUtGzdGXkZR2u2Cft1I6DKGEg+f/twBYbvpqimyvWcfW/iItg2v7XsFLqc0R3tiM2Llt7Hegq+/vgbf/tI6WV262i0VD3unwFiuDPfuv7+xGsxbfWcdB1nKZ3ycRiNZrDU1NcnNyuXbWQP//sW19MFhbP+Tfmtm9AVxn9mHdf1efnDymyHGEm01dVDFpyB/YBLqL17r+N653dCf2088s/VbF8JlCf/uWFvRfejSh0A/vxsMpzcADqtierDdWktWso6ah0GXKa6zKo4thSX9t1FxNG4fyukLAow4B2UDKCiakyMNlHVqqqBJfQ8NaaE5/GJjYr64Cpa1v4W16AHUY0ages2KaB4q3naJGsjvn0RWsiUzFknMwcXaWwPiZIGDstI1z7hIVQOSYC1TS8/kR7Ji4RwCeisyNgtW5cMn+pF+mWR4UkROvyr3X3gZGYNnnrQFwXTPZaiDecMfwT4Megv2Rj2KU+eT7rVnpfGeO3WNUCcNRd32zd6K5HEBNMBB2QAK8pKsnjsH6tFxMD4KjjvU8vwGWRRpM1IJkK3fPB9um8VLTd6jmLX61hHXCQDJmnrHu1AniX33x5no2iUdl05L5zO8vyyL3jEfJ6YroqUP084RaDXgvzYpUl5nKISDstEzyg8+raJn7M0u/p8Xm9mJuM9kkuOv+srOSaNi0zZANWQcWcxqz0p3OBjOu8GieiRQ4yxIhL26HXZ0OawwnN5IwKwuPR624uBBVFEvLkMlHHt/DmvuDDEqqF9xncVB2aDUF7GZOCgbsUMTesMiDZRlPaqf3ZOAWbtWOl+WN024zTqYN7wN85FJaDh1jLbhmR6HzqflrS4eFxkaqNx1ULCS7c+tZCNjRLy3QpwscFDWu368xRoePKHFdcmsJd6SZcc59ToUDk5AacpYsnhggK/m+HlJ5ZSkZ+Fhz1RYqjSS5KNNSKQtGP65/QiKtoB9FDw1F+aN/wdXU73P7rssVpTOW0njWr03sEf0+iMH6H/MVqkMMO+zYTGawEFZ+QNrLiige049a6b8zABZLGlnDyRAtmFvuixP2XaLE8v/lIP4z+7DpS2qoOqPlUwMiGWOtXr/XIJjxheddrtcuN1jAm6+OwHsXInw068IvJvq/NDm50q0JVrK4KBstIyU0M4ffm0zfXh4+3v+nU5nz7pPNAZJXz0YXR1UsLUuowmqYROg6p+EusPyuU8VbEpzUU59A7SrU4kmp+lWbnN8OE9sZU9pV4h+/jswHFsNRnEQbLDmTCVQ1tUU2s4GcZ1VcWwZzKt/FxVH44fcUjbQfcNB2UAaiuL0SARltWsmClvclo0KWbOWT3fR9lFb0U1UTB2HypmTOsW225AVF6UFiM69qjftjtIedI5mi5MFDsrKG2/V8IlklQCbMnyK1VvWCoDg1q1kNcscikkJDqMJj/rPQn5qcJ7ZpdTRkTInlgi0BRfWyXNCJLbZWf1UcDZ5UwKXudMF9WrBWrli7Ye+QSuHHRUTElG9wrvlrVg3//WtAQ7K+taNv5TyCSlQj46HQ6f3J9YmjS2ONUvHCYDs7B4wXZMOXhi0Vsz83mkMf2M/7p1sB4unNq2PrIj//Mt1+MYba2DUB3bKKLb8WtJqer8/XHVAjArp98n1YrIi/MXfrQmpnM6WmYOy0TXiRqODHNl1fTUd1dX+aYJG/2U2AbMnlj2Krk4q2FqXyYKCkZPJIKYmK0Icwbqc0B3eJvz3HNgQVodcoiqZ0y/jR9vJCRhzBmZV3RaTJP8yugLH7h/Ddnu95Dy+BMV1FgdlfWkoOuM5KBud4yap1ZEIysJhh2Zqb9TP7iGpD36FnDaYtr0H0+54GO/eJIuPhnOR8TXPb7t5omwNMLoCZu2X3y9Jdl6eoX01IE4WOCgrT+9Vuw7QPV6xaae8jL6knQ4UDktA0fAEFCRPo7IrN0v7oKHJuUU0Buw3lgKjLWAOPOb/XJrVcNu+u2HaMxTmnQPgdtrbJnuLcbtRuXUv6b9s8Rq4bW3z6a5cov8v4z35E31vVXbGOA7KBjfqmhMn6N6rXCP9Iwxz4qWZN4o4/ppuXYJh13Tol/eD2xZ4q29tsQET//UYkr5yCMV3tcE1OoZyjel/giz3tq6U/q616ZqIR/bqO8rwkDN19v7PjdSO7NVXY0i74e8KB2XDr2Ola+j2gz10r//g7/zTdFQ91xOFQdxn98HpVLoVUVSezYHChFQw+jg2T42UYH70KeqmD4J2xSQ4GtpnZ5ejqhC6DUlE22M4uAQuk/SPmcyxl+3A22COvkIN4jqLg7KhajKy8nNQNrLGQ9HWRCQoyygM5vaCZkofWJ58GnJ/LY9OClZLj06iasUiqFNGcScpIWs18gpgjr0YKKu/yBcMkTc6LVskThY4KNtSLwGvXC7kD0yGKi4loKhUAe3hffTc1GxcQ9ayzNpc6uoif8YGsphllrOxEBhtwez/Og1GW1BfEZxTFuuDo8LuDJX891DdsbM0FuwDk7OVTivTUlExY6JvS9pYGIAw94GDssEruCxxBMoThkkqwFamgmb2ENo+anl+n/LY1c9pkdqU4/+jT+FNDYGxDJRl4GxnD4X5DWS19z//uk2WKnIHLqR3SeFBZbbvWppseOvVdPzn51bLagcX5o6+ovUeePNVgarj6sUSv11Y+PsLxHk947ud3ODH4UBh8nSo+idGFDBrr62AdvEY+k9inLPtElxONF3eB/2iHtCv6A/rs+sBq7XnnyArWXv+8YCyUgTEdVbF0WUwr/pdVByN2zh9QaCx5aBsIA1FcXqkgrK6A2tp24FmXr/Qtet2kaUss5i1VZZCnTgEdbu2hl4uLyFiNKAaMYEWIKqB3Eo2YgbFT0PEyQIHZf0oyUdSyQcCB2nDpY99SMiPLk5IRmF8AkRrc6lO8qy1DXjQKxXFq6XzHMpvXfvlOLVcoC34aENeUJW6bU0wb3oHpkMTgsrPMjVcvQFGI1E0YQ7s9Q1UjunZE7JUbLxwJuhyeUaAg7LB3wWVa9fSPVh/zr8FufnJbQJjGSjLwFnPoM9Mg25xL7hMOs/o5nNGUzDstSyiLWD0BTwAP/uXrQTKMnBWamgsKMfT95OR2z00RzGe9U3tvZcsByf32OMZzc8laIBbykpQUgSKTB8tOLX79y+sC9i6oV32Ie6VTDz7uDqgbEwLuFzNwGzlNgn0Te2kDLfVgvqtC2nnhv5c+1nyOurKoN8yjj5I6vfPh9Po4z3uspGFLLOUVSqI6ywCZVf+DuYoOBq3clA20PhzUDaQhqI4PVJBWabS+pk9UT+rpyLatZfeEaxlb+yEJnMnLS5sFZynTBHldnQhej0BsmzbjLWksqNbw+uXoAFxssBBWQnKaiViq6qhLWJFKbNapQR/abieS89Q1eqlxFmrGpAIW02NpAIr958nGgPDE+kewSUV3M5CzCpv2Ov7Mfcn54Ku2XwpHZZ1v4OzIbT/FsO9x2QNXZg0DdaqGtSsXUk7PFxWDlQFPTjgoGwoumN8soxXtnzKRJ/FMJoCTWpfaOYngNEXtA6O2jJanBrPtN0SzBx5MYdezLEXc/DFA8DoCrq+moGx/U/KUselnrPxvF8Sqm88kZXPn/B3Pp9O4DCzmOVBngY4KCtPX5Ek/fXX1pCDve3pd/w26/aRMqIxYBzYnT64XCgYM5MsZiMJmGXjYsg5As3UftBumgeXObjdULLHlxmGXT8M3aJeROFjvn+xTRG2OxvJSpZxyioVxHVWxZHlMK34fVQcDVuH4dGjRzAY+C4ZX/cBB2V9aSYG4iMZlNXMe5+sZY1n/HvAlDoM5iOTYd7wNpz1lVBPSED10nlSs3K5CNZA3uBkApTyJDopiuCudJqmiZMFDsoGN+SFyTPonrdpfXx1D6LYsgnjUTAoERXpm6hsxjErKbhceJqwBE9HLQKcynj4llSvwkIMjGWgbLBbpp3aEgJkzTnKbO81qYpQMHwiCkZMRNmoYdDsU+Z/UGG1RVVx3FI2tOEqnzEN5aPjYatuaw2mP58t7G5aOg5OQ6PPigwHFkK/sAecjS8/+uyddJu2/24dcR2MQoQHkEMv5tiLOfiSE0rPfIK8fknIfW+unGx+ZS9l3SNwuNvXQ3c+47eiGE3koGz0Duz+7Q8JlH3rtYyAnZj4b0eb32MBhWNdwAOYrdgYWXMXa+FTaOYMo4+H9qrSdhsJZ30V9DtSBavZ3TPh1Akct66mWjj2/hzWHOX4v1mnxHUWB2XbbYjbpSIOyraLmjumkkgGZa23c4lXtn5Ob0WU46wrhGXtb2G+sAy6SxfIWtbwaWCeF0Uq54WERQPW0lKyGmSWfeBWZGHRcTgKFScLHJQNTrt1pz4i4LRsiXTHO4FqsuQ/JU5Z9QezoBo8hs51tx8EykbpxrxSspatyDwrST7ShC6sf06LKUZfEGwwH0iCeXM3MAoDpYJFXYmCoeNoLBqv8P+qUPXKQdnQNGi4dZvmTRXLl7coqOHABgJktenT4LL455d2aCuhn98NhqMr4bA5seztHHr2ji9qJ66/Fi2P3IveP99HYNCl0/J2IFzpNg1P+oyFobQtcB5sb3//z2upLTfPPAu2iE6dj4Oy0T38//mX6yVZrBvrzYj7TCYdujpuUQ4GzI5PI4vZSANmHY1asP+rumkD0HTnSrveoOZbp6Bb8h50S/vAcucsrLkzCZR1GZTd6Smuszgo267DG/bKOCgbdhV3XAWRDMoyrdTP7gHt9F6KKch8YamwvVRbisq0qVBPHgM42nq6VqxCXlBYNcA4ZJlzr4KRU8JaDy9cWQ2IkwUOygavV9XgscQ9GnwJbXOWz5oO1cBEaDIP0ES6YOj4tkI+YkrW7MfDnqmwVLWPh1sfzZAdrS1vwoi/OEAOvoK10rPl5xI9jvXeIdn1+8vA6ArUY0ZBNTSFxprxzfIQvAY4KBu87sSc5cmjUT56KNiCmx31O5YJgOymeZLnUobDy6Bf0B3pv8smQPbjPYVi8fwXwCe55ejaJR3d/1seJ+OTLcdpPnQ5frFiejRoTXjr1Qz8118GthRUrNIYK4iDstE9oA8+raLn8c0u6QE7sme8YPU/9muHA8p2FoGiyR/QfFKdIc9ZYdj143KiIXsT/X/pDm8V/tPCXqlQAbOS1e+eiaalfyTaAuvVJYrXLK6zCJRd/r8wRcHRsGU4py8IcCdwUDaAgqI5OdJBWe2iIcKWuA0zFVGz21RPFAbmo1Ngev5UcFxx7KAiZfNC2lcDusvX6Y8+v39i+1bMawtZA+JkgYOywauyfKVAM1B7RDnrVHttFVSDElE2eQJUIybSAl9z3L9jH7EHTpMFj/rPRl7qGjEqKn4X/uoChr66H1X53p0PBeyE0w7zh31g3h0PuJWlb2j86Bz9Rxnv3m12wqY9mxOwSVzAuwY4KOtdL3Jiqz/cRvek5vAhaNfPoflZQ+YayOEdaMgvReMH3ZDbNxFPc5Wz6JTTj0iW/e5XNoBtl26st8hq5o1uE3Gv1zjYGvSy8vkTTv79DrISnD8s258YT/OjAQ7K+lFOlCT99J+20HPw+2/vCNjikV/IJqdfFzcF5zA0YAVRKEDA7IAksHlrpAVmKauZNgD1a2f6pd4JR7ut2T1h3/FT6Jf0gunT4wCU4+8R11kclA3HyHVcmRyU7Tjdh73mSAdlnZoqaFL7oD5NGYdfTKGWGzvIqok5/6rZmAH1mOFwNNSHXde8AmU1wCgLmJVs+QcrlS2YlxZ2DYiTBQ7KBq9qRyNzcJeIwgRleagql86n56r+8GH6zZfB1Vx38SbRGGhy/TvFCL7Xyua8vF1FlnpH5wfvXMHy6S7h/6RM+T5XzJiIyrRU6rTbZkfpwnQak9pDp5RVRCcpjYOyoQ+022wmULZ28gDBwujkHlmFVjxrBLMiO/PuBOLWc9SWyMof68Kzkj8SQNCJubK6enP6Vno3XEtRjtKGNeBbb6TjrdfS4XIqBxbI6lgMCHNQNvoH0Wh04M1XM8jZXXW10W+HSu83YvAr+xD/Z/v8ynW2xOJpC+gdFYnArF1dTByzmrkjYC1+3i5DYy84Q1ay9oeZ0GemCVyz2yaCcc8qEcR1lvrIcjQt+0NUHPWbR3BL2QCDz0HZAAqK5uRIB2WZbuvTekA79T3YtXXKqNppg2nbezDtjoejXkOgLANneYgeDWgPsm16iVD1T4qeRvOWNmtAnCxwULZZJUGdFE1Mo0mutUQdVH5vmZz6BhQMTkBxQhIKJwjll63a4E3UaxyzlH00MA3McjaSg67GjFFfzMb0b58MGnBwN9XDvPFtmI7PULyrpicPCfzSXfroZdlOF8pXbqQxr9qe9TKen0nSAAdlJanJrxDj4qtNHQjN5D7Qnz7gV7Z1Yt7HNfTMsedOdTGPHH4Z9i9oLdZpr2uqjGQhyyxl5QSXzY47Pcfj0+4T4HY45GT1K7tn8SUCiPt9N/Ks2/w2PMISOSgbYQMSZHN6/WwfPQ/f+5uNAUtI+/EZ+uC79O2LAWU7k4AIzKqXynNg2B46cpmM0G78AJpp/WG8ejq8VbpssB14G9ZjA5qtY80PL0G/vD90i3rBdP1wyDuvxHWW+vByNC39Q1Qc9Zs4KBvoxuOgbCANRXF6NICy2vTxAoXBspGKadr6+IzAAfjwBOqPHaTFrzm/fb6OKdaJTlwQs5BlR+VyZa1COrFK27Xr4mSBg7KhqV336V16DkrnrgitoFa5azavoXI1WbvA6EHyByQBNmmOKyyVdXjQYwrKNirLr9qqiSFfru6RiyF/noXyxw1Bl2U+vwSW9b+HU6eMZYNnQ6rXrIA6ZRQYr2yL4HajYvNuGh/1uu2yto23KKcTXnBQNrRBt9dWQjNvNDSp/VCVPBAVixZKLvDW4VIMe20/Wckya1kWjGc2cmtZDw3+8bu70LVLBq7nlHnEBj69OmIFvQ/uLNgdWFiGxC/+bg1xaRber5CRi4u21gAHZVtrJHqvuzJr2S4ZuHoxsIV/3GczMfiVTHCnXy3Hu2jGYmH+EoHALKPh0Z/OFGh59qyWzJPesoeBr2z3tpKVrKOm5S4tp7EB7EOlfv470G8ZB4cmeIMLcZ3FQdnA4xFNEhyUjabRktnWaABlmSMuzdTe5PRLZvf8ipsyR8C8tSfcJj0qpo5D5ezUdiX69ts4nuhTA1XbDyCfrGQ5l6xPJUV4gjhZ4KBs6AOlGjoe+QOTlX13OR0oHJaAwmGJKF2wiibQxVPmS26sescJPHh3MkxFkbmYv3O8nKxYDky/K7lPrQWdmmL6sGfJVf7DkF2rgTpxCDRZvkGW6n1HaFyY5SycynLZtu5rrFxzUDb4kbSVF0KTNhR10wfBkv8QZWOTUJbwwuFXgGJPLHlMz1vqN0+gscrcLO0y6aBb+j5t3WyO7KQnZw7l4c0uGXj/l/Is4E3V9XjUZyyuviPQnCilPnV+HYFPP/kK30UWqk45KBuqBiMnf1pKDlnL/vsXAv/v70u9Q++9cf94JHI6ECEtiWhgFoD58U1oZsZBs3wiHA0K7dJ9oXuXSQv73l/AenGyz9GwPrsO/Yr+0C3sAdPVA0FZzYrrLPWhFWha8seoOOo3juT0BT7vCiGBg7IBFBTNyVEByjIKgzk9oZnSB5Ynnyqmbrv6obCovr4Nhjs3yVq28Rzn6lNMwWEqKL9/EoGyDJzlITo1IE4WOCgb+vhVbNxF4FzlbmUdsWgO7qVymdVs/sAkspg1q6VZhLrtDjyOn4tnKcpa8IauLcBssCPpq4fAACKnI3ieRHP2WJg3d4Pb1qREs1qUoT2wl/6P7LX+nSBpT16gMWJcs0znPPjXAAdl/evHVyoDYRkYq5kVDwbOslCzezfdozWZvnkT3W5g64jrBEzM+5/zMOvtbapourxPsJatVLVJ6ywRLhfwH19ch298bg2Memk7EkTdXOo7j94Bz3edE6MU+Y3/yVYCn9ZPCfM2XkVaG9mFcFA2ssdHbuveep1Zy6Zj3+b7AbOO/PwBxL2yDzcPyrN+D1hwDAg0A7OrN0dkbxx1VdAuGUsfIy15DxRroza1IskAACAASURBVPXKHDj2/AwuQ6XfMl0mPQwHF9P/o27TGDjq5N1D4jqLg7J+1Rx1iRyUjbohk97gqAFldy+j7QTa+Yx/RblgOj4d5g1vw22qR/WKRbRd1KEP0gu3cs3iJfnQAKMrYLQFbEs1D9GrAXGywEHZ0MfQZbLQM6Ea6fure7C1FCckozAuATW7s6mOgoQpkotqvPmEnH7VnPpYcp72ENwyTACJiu9qg67Oproi0N/cCwNFg8NO/0M16cskta/h8idQDUxGadoyuCyRzeMrqUNhFOKgrHzlksXQ1P5gDlDs1eXNBbB7rXz0EJSlJDfHeZ7YrS4s/1MOAbJr+16Bw+b0TH557rASj55ht/K8zC8rieyzsf1PEgC6adlNWQ2t/vQpnvdNxuXu02XlkyL8jdfTwY5oCJs2b0XP9/rScer0mYBNtlismL9wcXMelt8zsDLE8sTf1jKe8oHOOSgbSEPRlb585sd4s0s6vvFGYCvy51dqEPdKJoa+Js8CPro0EnxrIx2YdVstqP9wCTSpfWHICd3i2aV9TrQFtluB7x1Rq9a8T6FbMYA42Jty9wIuH/+lYoYXv+I6q/zgChgXvx0Vh5ZbyrYaxbaXHJRtq5OYiYkWUJYpXDujJ+pn9VBU9876MljW/Q7mcwvBrJLUScNQu1WekwVFG8QL86sBBsYyB1/M0RcP0asBcbLAQVllxpBRC6j6J8JcFJjnTE6Nhuu5BMZWLp0PVXwKPXu629ItBgrnf4hHfWfAYTTJqTZsss8uVxNItDvlVvB1uF0w7xxAB9zK0wboLueQBaLxgXRqBf3NeyiISwFzouGMEF0Hr+Dw5eSgrDzdNt24SItRzaJkOOrbbuFUz/sA6tFxMOe3tHJtarRhzn+fpWdt35TbASs1fZxN1kC2sicBZWNNoDC/gTy6/+Sft8juWu67M/G8XxIqL92Tnddfhq2zzxFIPOiHkWnB5tl2BqAygJUBrY2NOoxJmQB/wKwIyIogq3jtmYedi+medQV7zkHZYDUXufm+8cYaohvZtCLwXGLKN4/Ru3BH4o3I7VAHtizSgVmmGsNHh+m/kAG0sMvbzeCpWtvJeNj3/wFu+0saH890X+dusxGGw8sFq9kNSXDUBJ7ri+ssDsr60mp0xnNQNjrHTVKrowqUnduHrGWNZ3ZJ6ptUIXPOaljW/hbOukJoD2XRgthSJGzRk1oGlwu/BkqnCtv0GH0BD9GtAXGywEFZZcbReO8Jgacls5cqU6BHKWUTxkM1KBH15y8SKKuKH+eR6v/UXq/Hg16pKF65179gO6TarU4wbjd22MzSLA28Nct6N5usZG0F4bEArkxLRcWMibIdeBmf5EE1ZByKJ82F02D01vROH8dBWem3gP58trA7acUkuJr0XjOa8/MJlFXPndOcXltswOS3jiP+s/twaUtLsLZZqPWJwwrdyoHQ75zaOiXmr3/zjQ8JAH10xz9VSWtFFB29DDYXyu09t3VSyNc//1vBwRfjlY3kIIKw9+6//FDIzkWQ1lvbWZ5pM2ajpKS0OZnl8QRh2bnndbNgkCcclA1ScRGcjVEXMAqDrq8Ftnhk8424z2TSEcrcI4LVEXLTiqYI6zt1hFIZsA4yCgPGq65ZOg6M2kBusBeeIytZ+/PDcrM2y1sL7kC3chD0C99FU85uuJ1tKYFEYXGdxUFZUSOx8ctB2dgYR6+9iCZQ1no7l3hl6+e+57UvwUa6LXqYN/4JpuwU8nRNTr/mTpO9KA62fp5PmgYELtkk6C5ekZaBS0WsBsTJAgdllRsiweFXkrIOvwA0PXlAgG/5rGlQJaTSefW+Y5IbXpV9kWgMjHkvF8GSMysomDlZcLrBrGWDDW6rkXhkGZ9sOII57xl9FGwMktvcVFCMgpGTUTh2Jmy1mnA0MarL5KCstOFryN4kALJrZoBt3/QXylLGEI0B7HYwSpCkrxzCsNeycO/kS6oDf/nFtKZrhzqdtWz2zicEyA78nXw+8CvdpuJxnzFoeB7YYkrUsZRf0cHXT6PAwRcDVpNTxrcAWL3Fefbbl2WsJ5DLAFlPy1nP/MGcc1A2GK1Ffh7m7Kvrqxlgzr8ChY3xAm0Ss5rlwbsGogGYZU6/mPMv5gTM8lT6bia4bLAd7Abb0fcBBO/LgGnObTVBL1rNrhsNR5V3IzJxnVV+cCWMi/4vKg7thlHc0Zf3x6M5loOyzaqIvZNoAmWZ9hl9gXZ6L8UHwnI764X101UYbt0QFsYXlXWcoHijO1GBqkQBDGJbtHmIfg2IkwUOyio3luoNOwXANDP4r/C+WlM+kz1/idB/8jHxOecP9M4j6TW/y4WnCUvwNGlph33oKn/cgPg/y8LWEZ94baLUSMvldfQ/4dQUS80iS65mYwbUY0bAZZa3tc2zEmtlNQoSptLBziM9iNZuvizTWLzI6xgqUMJB2QB3g9uNhr0ZBMjWb1kAOHxb4Ygl1WZm0nzp6qSdGP7GfgJlC2/K/yDgdtgFa9kdqWLRMf3LnHt96/Nr8dYbGTAa5W2HfbLxGL3rcwcsUlxHw/9nGwFN0eDgi1m4MroC9g4RgzdLWDFN/GXAbdzQEXQcPHSEfj0tZz3fOezd4wnYimWIvw6HA2wd5e+oq6sjoKGpSXmnkGI7+G/7a+DyuRLBWvbVwNayrHXDXttP/LKMZ5YH7xqIBmCW/S827FlN/5P6s9K4gm33tpKVrKMyMJ2Pd820jW22ml3QHcYL28H+Qz2DuM4iUHbh/8EYBYd2PQdlPcfQ2zkHZb1pJUbiog2U1S6MoxehZqOyjg3YFgDz9r4w7xoExhNITr/GJ8DFJ1ERcafnD0gkMKjpfmBvpxHRYN4IvxoQJwsclPWrJlmJosOvglHSnXFJrcBWXoqCgYkonzwRRZPmEiBQJmObmf6Biqxlq4+3v5W7y+nG9G+fxNi/PwyzoeWkVWr/mZxTVwXL+t/DfHahnGySZZ1GI9RJQ1G3Qz63ZOtKmJUss5ZlVrOWEnkWi63LCuc1A1lFwNUbKMvSRUBEBG9DAWY5KOt7NN0MXNqygOZXDTtXSP+A4nLh5G+mI/4zmZj4r8fA6AuCDZ3JWjZloODca+mMq7LVdaP7JDzonYKmKvngd6DKvhlFDr58gbIMqGVpvgJLE9877Nfz3cMsaT+58Wmz9a1oWSu+h1qXyYDWR48e+T1UKhUHZVsrLkauv/PljfQRY+LQwEY8Nw+WIe6VfRjx+f0x0vvwdEMEZivXbQ9PBQqVarx8Epqp/el/09+OEpdJC/veX8CWo/zcnKxmj6ykXSb6dSNhU+c1905cZ5Vnr4JhwZ+i4tCsG03vSoMh+HlEswJi9ISDsjE6sKxb0QbKOjVV0KT2QX1aT8VHxZafK3jUvnuw2emXEgtkxRvayQrMHzGFQKC8gZxLNlaGXpwscFBW2REVJ7NKO/xirayYn0bPof5qDv3ms+fRKZ2bteCF0y97Y/tOtk4te0JONu6dUoekbPOpNFjW/wEuQ21I5fjKXH/8MFkc2iqUAVEdOj3xyxYMmwBGaxDJgQGtnsAIa6sIwnqCK+zcFzgipX8clPWuJbag1K6bLQCy2ZukA7IAsmfeo+dr2lc3ovb6Y+8VSIxllj765f2hj3Fr2fJiHTn3+t5XN0rUzEuxW3O30/v3ysiVLyMVOts+7wIBTHE/2qpQieEthr0P5FrKtqY3EK1mW79/PFvO6mGWtZ7WtJ7pzFrW3yG+d7ilrKfWYuP82eNadO2SQc+zlB6l/MMhwQFi6h0p4p1Whuay/RMR6cCstfg5NHOGQbtkLOw13ueY1itz4NjzM7gMlWEbzxZWs+e2ktWsuM7ioGzY1N4hBXNQtkPU3j6VRhsoy7RSn9YD2qnvwa5V3gmBKSsB5s3dwbgDtdnCtjxrecdyIbbPnRC5tQhWskmwVlREbiN5y2RpQJwscFBWltoCCjc7/JqzPKCsXAHmfb1gUAJKxqagZO5KAgaKZi2RXIy1RouHPVNRvCpTcp5QBbXlTRj2+n5k9L4cUlHOmjz6YGe5FroVq9eGuN1QT0pG1cI0r8nBRjqNJhRN/oAcgDFHYJEavIGyrcET1nZvcXL6JIIj5hDoIeTUFw2yLpMR2hWThK2Y56RbcDEL9LV9rxDAsPRXJ1AyYgjU8+eF3GXTtYMxzy37v9/eSUDO9ZwyWfpi1sy33p2AOz3Gw2UL3urfV6W//PsM2o4d6Q6+xPZ7ex94ixPl2a+vdw1z/uVJg+CZJ1CZnrLezjmnrDetxE7cD/9+M33MeP+X+wJ2Sldnw+BXMhH32fabBwVsVIQKFE5MA6Osi3Rg1tGohXblZNRNHwTz45sttOnSPifaAtvN9Bbx4bhgVrOGY6ubrWY1hU/J6pSDsuHQdseVyUHZjtN92GuORlBWmz5eoDBYNlJx/TQvvnPXktMv9eQxqJw/S/F6eIHSNFAwdIJglTdIBoeltKK5VAdqgIOy4VO+aug4kBUrIy1UOFSuWETPo/5aDtWhGpAEtu1ealDvPt2uTr8W/voCRn0xGwaNf2dFgdpPH+u29IDbHjzXq786jHdvkZWs/uPQwGNvdThNZpTMXIyCuBQY7j70JtLhcd6AkmCs4AJ1hIOyLTVEi8klKTSfarpxsWWinyuz3o6FvzpPgOzWEdfhdgNlY5NQNnpo6I4GHdaYtpY9dTAPb3bJwLs/lg/KfDJ+Pb1/P5m4wc/oBJdUV95IQPFPvyqNHzO4WpTNJVILsHeFGNi5P2t6b++aQKCrt3eRWJ+UXw7KStFS9MpUVDTizVfT6fmR0ovF/3uB3p1zfnRWinjnlXG5UJgyKyqAWbbLo5ln9nRm824T28l42Pf/AW5b+/FJ2wrvQrc6HlW75hAoW5a9Cvr5f4qKQ7OW0xcEeuA5KBtIQ1GcHo2gLCPZ1kztjfrZPcKiecYZyLgDnY2VMNz8hBbLupzzYamLF+pfA6KVrL5EWQ/D/mvlqeHWAAdlw6dh9Xphe2vtAeW9/LrNTSgYnICSpGSo12whgKBwgnTrTrfdgcfxH7SL069re4to4XNxY2gWos20NvePhG3QatKXQj1ulCTHSsE0wm2zo3TeKqgGjUHjtZaWHMGUp3Qeb0CJNyDEG6WB2BYGfOTl5fk9iouLaZHCLWUBh7YGmnmjiRPPfP+6qMaAv41VZqR+8wQ9WyeWvKQrqN65k+ZKdQcOBCwjkIDp6gHBWrYo9jjk/+OL6/DW6xnQ1JkCqaFFOrOMvd1jPFnKtkhQ6GL0rz8ka791k08pVGL7FMPeHSKFgfh+YHFiYO8RxhvLflkQZcRrFseoCxiQa7PZyJLWE9QV5f3RG4h1+frloKwvzcRO/C/eFBzkvf29XZI6Ff9n+4hftuq5XpJ8pxVyuchpKVnMbtkb8WowXjlF/6najR/A9uwUWcnanx1q93a7bWZUHd/IQdl213z4K+SgbPh13GE1RCUoSxQGvaCZ0geWJ58qrjtXUz3MG/4I04mZVDZ3+qW4iiUVqBo+/oWV7FhJ8lwoejTAQdnwjZXLZEL+gCQUJkwNSyVV61bQc1l/PBv5A5PJisFc6p1Ly1sD6q/dJ2vZmpPyHdx4K89bXFOjDYl/fRCzf/Byce5NLmCc2yU4gNw5gBxABpQPQsCu1RCYpd2/J4jc0rOwrc9lS9fR2DVc/kR6xnaQlAPKsm3GzLKtdbBYLCgvL/d7VFRUcFAWgL26HJo5w1E3bQAs+dKtp8sfNWDs1w6TF/Fbh1uOgYvpf/QQlE1IaT008q9Fa9mt4+XnjeAcqSPOEvA5PVH+R/6rowXKmFtp4XF+8x9vpOPrr4V/i204hocBpqLjLk9AltXFrlmaZ7wItIp5PEHY6uqa5jxiumfeYNrPQdlgtBZdeYxGB/HKdn01Hew8UDiT/hSDX9lH85RAsp0+3eZAwajJNHepjAJgVuCZHQrtrPdgzuwDwN3uQ+jQVqBy9zwBlD2wCvp570TFoVmbQG3mjr583zIclPWtm6hPiVZQVndgrUBhMK9fWMbAcv1D4hC0qx96OP3aHJa6eKHeNZDfP4kAH+j5l2TvGoreWA7KhnfsiiakgVmZm8uU52F2mk0ojE9A0YhE1B04RhPlggR5XmXzpq/Ho74z4DDKsxaTqrXNQ69jyJ9noTJPJzWLVznr3YP0P2ArCB+ALHKX22qqvbZB0Ui3G+UrN9KYac/mKFp0KIUx0KO1JZq3LcXe4uTUy+kLAFtpPjSz4qGZOZjOpervSU4VRn7+ABL+6iDyPq7xmk2dNps+MFjKpX+k8VoQgFizlmWWsW+9loFv/9V6X132GW9r0ONBrxR80m2ST5lQEo5u/ITA4n7f3RRKMTyvDw1wUNaHYmIsmlnJdn01A7/suk1Sz0b/ZTYBs5e2hbabR1JlUS7kMJmgGibQ2UUDMGu5vg4Ns9+lD5+teWbDPxRu6DaNQVXW4peg7AfvQB8Fh2YNB2UD3R8clA2koShOj1ZQlqm8fmZP1M/qGR7tO+0wbesNU+YIKl9cOFuKCsNTHy+1hQZU8YKVbN5gziXbQjExcsFB2fAOpPbiVQLeSheFhx+wdrsA7NVl7YAqLgWqAYkwPXkuuVOWijqyli1Jz5KcR6pg/vVa2lrNvMKHEpizR/PmbjBnh9FS3+VExYREVK9cHEpT5eVlTsXWCRQX2pMX5OUNk7Q3UDYYvshAzevsoCyzimXWsZq0obBXSqcE+nhPIYZ2ycK4fzyCapXvj6RNDx4RKFuxdGmgoQiYzpyW6Ff0h35HakDZaBDo/qNM4pI9cUD6e1Ls1+W4xfQ+f7QuPBQqv//ntXizSzqe3ZR+T4ht47+BNcBB2cA6ihWJrl0yiF+W8cwGCsV3tOT0i71beQisAUejnpyWMl8G1TtCp8kJXGNwEi6TFva9v4D1o0leeWaDK1V6LvGDZt3zuxyUla62qJHkoGzUDJX8hkYzKKuZ9z5ZyxrPSOPwkasd25MzgpXU07MvnX7NndZM4C23PC4vUQNWK7iVrERdRakYB2XDP3D5g8aCHWEJLieKhiagcFgiGi7fIIv2gmETZFVVtvUYAbNNeS23QcsqpJWw0+HGpDeP08HOQwmWqxvp/e/UFIdSjN+8+utXCcQy3FaehsdvxQAqNu8moKcm62gg0bCnewNlWaUs3h9fpNyGdWZQllnraKb2Jx5Ze22lZNUdnH2fPnJM//ZJ6GoCO7orTx6NsoRhksv3J2i6sl/gli19yV3rTz5S067nlJEToN98a4fsJjZVafD4vTG4+k54wGmD1kTbrn/wV9FJXSBboR2QgYOyHaD0Dqqy/6/3k7XsD7+2RVILJr51lN6vHybckCTf2YVs2gbkM0OA/okRC8xar8yBY8/P4DII/7PGq6ebeWZd5vDsDhPvC0dtGfQLe8BwZAXEdVbZgVXQze0WFUddRiKnLxAH08cvB2V9KCYWoqMZlLXeziVe2fo5vcM2FKZ9I2Ha2ou8bhs+vU4LaO70K2zqpoIFy7skqAZxK9nwarrjShcnC1arteMaEeM1ly0T+EO1Z6V7VZejkrp9OwRQb/tGMECWTZIbrkp3IuW0WPFoUBqeJS+TU61f2UNzHtACh1nLhhJchlpY1v8B5tNzQykmYN6qJR9APSm5wz70VWcepjGs2rk/YFuVFhAtYUXeRvHXk9+R1emPL1JumzorKNt0+zI0qX2hWZQMR6NWktpcTjfWD/iYnqdFv70Aa1NgnkRWcNXmLTRP0pw4Kakev0IOK3RL34d+5zS/YpGe+L2vbiSgprxYPp1Kbv/59Izm7QyRH9uHkib32ENtmx8XuZZnPpoeNdEclI2aoVKkoYxXllnMPnsceB5irDcj7pVMxH0mE06nItXHfCG2qhqoBo+NSGDWpX1Ozr1sN1t+5BJ4ZocJ/8F1VeEZI7cLug2J0K0cCOboS1xncVA2POruqFI5KNtRmm+HeqMZlGXqqZ/dA9rpvcKmKXvFI7KWYlZTLHCnX2FTtVCw1UpboRnAw7lkw6zrDixenCxwUDZ8g2Cr0RKvbFHKrLBVwnhlGb+s6eETem7z4+VZ5mpybpG1bO3Z0B1P1RQayAHRprhrIffXfHYhLOt/DwbOhivYKsoJvNIePRiuKiSVW3fsLIE+FRt3dRg4LKmhCgh1RlDWePmkwL+/bDxcTb6pBzzVazbYMf/n5wiQZfzMbpd0q3O32Yzy0fEonzLRs8igz5tyM6PaWnb5rI8J9BzZQz71QENeGZ68PwZX3gkfKP2dL6TjrVfT4bBzRCjomzRARg7KBlBQjCVPHHqOnvnvf0VYNwbq3rI/5tC7dtZ/nQ4kytNfaMBapoZq0Biau1TvipwPSraT8bDv/wMZcrUeLPZBVLN8IjQz42B5erd1csjXxou7hP/KovtUlrjOKtu/Gro53aPiqEvnlrKBbgQOygbSUBSnRzsoq108hBYcdRvCN2k1n5lHVlNOXRV3+hXmez0/bhz9yRZwK9kwa7pjixcnCxyUDe84FCZPJ7DU0RiY3yyYlmiPZtHzWrMpA6rRqXSuOSHPs3jelDV4NGA2mDObUML8n5/H6C9lo6nBFkoxYHQFlrW/gSV3bUjlBMqs2bsd6sQhcOrCMzaB6vdM15y+SGOnXvNhTAOznQ2U1Z3cQ/Mj7ZoZcFmkbZvUljch9ZsnEP/ZfTi17InnbSL5vHzaVAJm7bUayXl8CTJuWWYta9gz05dIxMYbjTZ843Nr8M2/WAubzSW7nbl95tJzWXrquuy8UjJcP/GUeG67fV2+8zEp5XMZQQMclO18dwJz+MV4mh/fl/Zhl71v417ZB02psfMpK8gem/ILoRqYRHR31fuPB1mKctnsBWfJStb+/LDvQh12NOxcTv/L+rPK7VByVBdCv6A7jCdfzlvFdRYHZX0PRzSmcFA2GkdNYpujHZR1aqqgSX0P9Wk9JPZYvhizljJv+CPMJ4RFAXf6JV+HUnMwLlnmNZ6H2NaAOFngoGx4x7n2iGAFqc6Q5g04mNYUj0pCQVwCzEUltJ0sf9AYWcWYSqpCdvp1bW8RWZrkbMmXVbc3YfORSTBv/BOYo6+wBYcd6nGjUL1mRdiqkFuw9vxlAZhdvRlwygeQ5NbXEfKdBpR1u9GYtV4AZDfOBRx2SeouvV+PpK8ewrDXsnDnWJmkPN6E6i/mkBV45Zo13pJlxxlzdpMFkL0i9OdbduUhZBj0h2yymNu5Tr5VlOa+Cs/6JuNy9+khtMB/1u7fXEftY+AsD+HTAAdlw6fbSC15+mjBWva/vrpBUhOPzHtIc5gxf3dIkjwXEjRgfJyP/BfArObURx2nFpcNtgNvw3psAIDAO0sMl09AM7Uf6rcsgNtqCandbocd+nWjoF8zDHC8NEoQ11kclA1JvRGXmYOyETckyjUo2kFZpgkGyDJg1q6tU04xrUqyfLKDrKfsZXe5069WulHqUjVUsJJlJO48xLYGxMkCB2XDPM4uFxhIWjBkXNgqajhzlMC8qozlKBw3m84rt8uzACjJ2C84/SpQy24n22qd/DeHMOe/z8rO2zoDe7+TleytzNZJil7rr14i0Mr4QD5Yo2hDWhXWkHudxq9sUQbcDmkcoq2KiOjLTgHKut1o2LmCANn6D5cALmnb0u+fVmP4G/uR+OVDKLwZ+lyqLGEEyhJHKnI/NFvLZqYpUl57FPLoTjUBnj/5J2kOf1q36VKvNLIAU+fca52kyDWjK2C0Bd/5fEvuQ0UK54W00AAHZVuoo9NcvCnTWnbE5/aTtezd0/LnQZ1GqV46anzwBPkDkmhXmPbCZS8S4Y+y3dtCVrKOmoeSK7MUPIYmbSi0S8bCEQLPbNP5bQJtgTqvRd3iOqs0Kx2Nae9GxVG7Ook7+moxim0vOCjbVicxExMLoKx2zUTBImTJiPCNi9MO8/a+MO+Op69g3OmX8qpmPLJkJasPbRuz8i3jJSqtAXGywEFZpTXbtrySuSsIaNPdFnim2kqEHlOSlIyCwQlgPKmCtXuSrEIdBhMe9Z2J5+NXycrHhLcn3MCQP89CxbPQaQDY+920rTfcTmmWhbIb+yJD1aI5qJg6LiKpAhqu3oBqYDJK562C2x5bwGysg7IMSGeWN5op76Nhb4bk++ujDXlEVzC563HUlShjIV6xciV9eGi8ciXYx6RFvqYcgS8vWqxlf/Fv28jZz91PKlr0Q8pF9ccPyUo2993wUTYsHHaYQONJ3XdLaRKXCUEDHJQNQXlRnFWutSwDYxmFwbA3sqK41x3TdN21WzTPZeAsO2/v4NY8gTU3CP8NbFdLZgbxzNqKW4KqUvpgU+dBP78bjGc3txEX11kclG2jmqiO4KBsVA+f/8bHAijLtuYxZ1/1s9/139kQU63PL5IVlfW+4LCBO/0KUaEe2VXDJ9Efap7Mrc8eRfBTDw0E47H83v0HYB7Q2a+3UFJSirihI0iGyZ06Hbw3aHGywEFZb5pWNs5UWEq0AkWp85Ut2KM0/bUcen4rVyxC0fSFdF6yWN7W5ZqTH5O1bN2FTz1K9n/KLPriPrMPmZPv+BeUkGp9ckZ4vz8J/r6WUA1sasHBV/0J+Y5/pJSvhEzjJ7fJiUbp3BVw28ILUCvRXqllxDQoa7dBu262AMhmb5KkErcb2DX2Jj1Dc39yDk2NL7c+SirAj5ClXE2gbPkMZfj+3WYjdIt7w5D1gZ9aIyMpc8sDAjz7/DI4cOVSj1l43i8J1dcfh61DP/oy8xCfDoNWGtdw2BrSCQrmoGwnGGQfXXzr1Qx6zsqKpH00Hvu1w/Q+3ju5/YFFH12ImuiG3GuCw1kGzN4MnxGCqBBxzcTWQ/MXLobF7PtdytZLTK71wdZUJcUlMFw8gpLCwhZrLLaO8xscNqIsYNQFjMKgdRDXWaX70tE4u0dUHLWrk7mlbOuBbHXNQdlWComly5gAZRmFwZxe0EzpA8sT6Qv6YMbRlJUA8+ZuxDdod1Gp3QAAIABJREFUr62GOmkY6ra3/UIVTNmdOQ9ZyfZPhL6kpDOrQZG+sz9/miBYrGhs1GFMygS/AKrFYiV5cbLgDZQVAVkxjZU7bcZssPhggjhZ4KBsMNqTn6dg5CRyiCA/p/QcpSkpZC3rqK8ji3dmMSsruN14lrwMjwalwWmxBszKAKXUb50AW8TYzNK2aPsqlFnGmra9BxPthPAlpUy8Zk/kOPjy1yP97QdQDR6DkllL4DKHxnnmr572TItVUJY58dKuTiVAVn9WGhBotzix7I8XCQDIeO8yHLbQniFv41g+IYUcfrlMvher3vL5imu68CFt03TURPY84T++sBZvvZ4Bo14+yF3+0W3k9UvCpZ7ho2ooe15LVry//gd5H858jQuP968BDsr6108sp47tf5I+0HxPIrcsc/TFrGWZ4y8e5GuA8cqqBiRCNSAZjG82XIGtfZJTxjevgTZt3tK87pJaJwNdxbUalTdmLEperIGlrN2MpzeQlSxz8uUtiOssAmVn9UBjFBy1qzgo620sPeM4KOupjRg7jxVQVndgLS1INPP6hXWEnDV5ZE1lzs2gerjTr9DVrUoUvLbnDZDnICj0mmOvBPGPXARPWQ/ZufjH76/HIjjrmVeUZ5OHUCxjxXLEX3GywEFZUSPh/a3YukewZN2dHbaKDDeZlUISKpfMQ+nC1XReNGuJrPoMT4vJWrZ827GA+U6teEyAEuPCDDVYbu+j97q9NHSLW79teeHgq3a9fJoGv+WGKdFw/zEK4lJQPH0RnCZzmGppv2JjEZR1NemhWTae5j/Ga+ckKVNXa8bM756i5ydravju+brsbLKWrd6izIdrspZd1BOGAwsl9bMjhFJHnCUQZnri+aCqz+0+g6gLmKOvcIX4n2ylNm6fdyFcVfByPTTAQVkPZXTCU7nWsnN+dJbezQt/Hdw7pBOquEWX646eJhot1cAkmPK9A5YtMgRxwdZE7HA+PwT7oZ5gaxo5hipsnUVWsq0MW2ylKmhmxUN3WFhz+Vq72Uof0wfKpos7fLZeXGdxUNaniqIygYOyUTls0hodK6As6239zB6on9VTWsdDkDJfWALLut/B2VDOnX6FoEcxK+ORZWCONT84q0uxHP4L+mrr+fWW6aT1F11fevIFyoZqFeutPnGywEFZb9pRPs5lsdAzVjBqivKFe5RYNmE8VAMTYaksFxwv9E+ETafzkAh8WrhwOx70mAJrtdancGOVGSP+4gBWdc/1KSM1wW01wry5O8yHJ0rNErSc7soLB18Pw+O8J+iG+clofPQMKgbMps6H09jkRzLyk2INlGVW6ZpFydCk9kXTbWkOTiqf65Dy/x3B0C5Z+HhPeBaszXeCy4Xy0UNRNiahOSrUE+OZTYJ1kCb0jzGhtqV1fk2dCW+9loFvf2ld6yRJ18XHPiYw4dJ7cyXJByv0jdfTwQ4e2kcDHJRtHz1Hai3N1rJ/s1FSE51OIO4zmWQxq6uTb20vqZIYF6rafZBou5ijW3OZfF5vf+oR10qnTp2G88wI2J4fQ3OcBFq3QLIObQ1Mt3IJ9GXAb+vgtpmhWx0P3YZEv448xXUWA2UbZvaMiqNm5RhOX9B6wFtdc1C2lUJi6TKWQFlmJcscXDCr2XAGV1M9zBv/BPNRAeDgTr+C17Zq7EwCi/IHJgZfCM/ZrAH29ZXRFTAgVQxSQVVxotDaUpaBuuwLsPhll9EcePvCK9Yn5VecLHBQVoq2lJEpmjiXnjWlJ6ierTM+uE11VMxPgzp9K50XTpHHZWvTNOJhz1So5vr2Wp7R+zKGvb4fDJwNNViubCArWWddmAEqAJHs4MufHpueqaAaMh7sHrLrotcRYyyBsvbaSmjmjoBman+YH9/0N3zNaY8/qsSoL2bT8exydXN8OE/UH8wla1nT06eKVOM0NkK/sAcMh5cpUp6ShfT8WSZZoB7dF1xfL3ebhifvj0FDXpmSzWpR1r5lOdTGAf8ljXe4RWZ+EZQGOCgblNpiKlNXmdyyHybcIGvZCf8SudzzkT5AFVszaQ6qGjwWtqoaxZrbvCPx7m1Yz73c4Sl1R6EUQxlxvVVcUADjJy0tpg3HVtN/oKPW//+EuM7ioKxiQx8RBXFQNiKGITyNiCVQlvHJMl5Z7dxe4VGWR6mWW5nCdtdigcOWO/3yUI6MU8b9w7gnTTe9O5eSURQXfUFV4A2UZXGtwdbWCvMHyjIQ1nMbDaMyaF2PWJ5Op6MvnY8ePfL5W1hYSGkclBW1Fv7fhksf0wS1dGF4LaTKUhl/rWAtqxqUTM+3U6a1bMXu00RjoH/QlhPs8cUqWqycWBK6ExyXoRbm9f8L8xl5wHEwoyU6+Go4eTSY7B2ex6QqRsGwCSiakAaHx0efDm+YjAbECihrryiGJm0o6qYNgCX/oSQNXN5egPg/y0LKPxxBVf7Lj3aSMocgZHr6nEDZikXKUQ4YT6yBfkF3OBvaB1iW0v071yqIp/UXXT+UIt5GRrXvIr2fc/vOa5OmZMTv/nkN3uySjmc3I5uXV8k+d3RZHJTt6BHo+PpFa9nv/600a1nW4iGv7kfcK5l4fkU5QLHjNdG+LajYsIPeq/lxKbBpGxSpvBmUvX0TjrpnzWWKlAbNET5OPP1+tBZhaczwRVxfOepraSdMw87l5MzLVnSfaAvqrx31ub4S1155eXkkU5KZjvoZPaPiqF7BLWVb3xOtrzko21ojMXQdS6AsG5b62e9CO70X4MUToZLDxhzDmHcOoANuF7jTL/naLZmxSPizHCDTIZD8qjpNDga8in/mYqeVspRl5YjBX5kWiwXV1dV+j6qqKg7Kispsx9/8QWPBjnCGpicP6LmumDML1VlH6Lxg7ExZVbrtDjwaPAdPE5YALldzXrvVhfH/fJQcfLmc7ub4YE/M5xbCsv73YOBsuAM5+EoaCqfREO6qwla+ubgMBSMmoihlZlQCs7EAyloZ59zMOGhmDoattO1HC2+Dv2fCLfqQMev7p2HQtL/TtrIxo1GWMMxb04KKc+o1BMoaj4f3A5Ocxv3kn7aQBWr+4zo52Zplr7wjWMnqiyub45Q+MTSa0PXVdPzgryJHb0r3MRLL46BsJI5K+7eJPXtdu6SjrKhRUuWXtuVh8Cv7MPIL4fMFIKkhUS5Uvmw9zUNVQ8ZBCaeTjdo6Wmfdu9uSj12Kpaxo/BLIR4cI/LIynY1a+s/XrpgI3bIB0G0aA7vN6neNxdZgarWag7JRfu96az4HZb1pJUbiYg2U1S4bRRQG2jXh5we0FVwla1nLbcHbMXf6Je+hYBay7NB/dENeRi7tUwPetsV4i/NWgDhZaG1R6y2/OGFoLeutXG9x4rYabinrTTvhiytfuo4mp5rz0vgng21J+bQp5AHXWlYIxuml6p8Ic6k8DkhNzi2ylq0+fqW5GQdn3SdwqfBmcMBHc0EAnPVlsKz9LSyXg+N/9Cwr4Dlz8DVmBGrWrw4oGukClrIKFIycTMCsTVMf6c1t0b5oB2UtBY9RN30QWckya9lAwW5xYmX3S/TMLP9TDuxWZ6AsYUmv2riBrGW1Z6U5IpPSCMORFbSFkwG0HR22rb5NgOyg3x8MqinNVrIDFgSVX2qm6X32UTtn998vNQuXU0ADHJRVQIkxUIRoLfuDv5VOHZL45YP0/j61IjhKlBhQmyJdKJm1RABmR0wCbI6QyjSp72P+wkUtnB+L6yepYKuUtROTEaniGM+sZtYgaFL7wHT/qqT2i+ssbikrSV1RI8RB2agZKvkNjTVQ1q6tg3bqe6hP6yFfGUHkMB2aQPyyboueO/2Sob9mK9n+3EpWhtoCiooTA88/fHbuST3gqxBveZmsGO852fBnKeurfM94cbLAQVlPrYT/nPHJMqd6bAt6OIO1II9AWfXMqag9clqYDCekyq7y+YRVeNR3JpxNZtQUGjDstf3YFH9NdjneMpiPpgrvbqvRW7KicfqPLxMoZXx4X9FyO6owa0UVmNO4wjEzYKvteFBMqh6iGZQ1P7kNzbQB0HwwEvbawI5LdDVmzPj/T9GCPmtqS4seqfpSSs7R2Ijy0fFgH2uUCoy6QD+/G4yn1itVZFDlMEP+b31+Lb7+xhoYjcE55bn6zlQ8fm8MmqrC+yx9/4ur8dar6WAWszy0nwY4KNt+uo70muRyyxbf0WLwK5kY0kUw/on0/kVy+wonptFctCBhaosdWHLa7Ki8Dee1D3Dq1ClyxCXmlbom8mbkIpbR+tdT1pp/C/p53aBZOgaaaf1hvHa2tXiba3GdVZKZgfrpvaLiqF4+lqx7DYbo3VHWZiAUjuCgrMIKjaTiYg2UZbqtT+tJX5Ocmqqwq9rZUA7Lut/B/NFyqkt0+tWY05KYO+wNibIK8vsnQtU/CdVHT0dZyyO/uQw8FSkMRItWT0CVnYtfXz17I4KvnoCumM7ixDJZHNtSIwXoFfO3/hUnCxyUba2Z8F8XjJ6C/AFJimzj8tdaBsgyzmgCaONS6Nz08Lm/LG3SmgrKyVq2dMMhzP/5eYz+UjaaGoIDPjwLt6sfCrscbu71jA7bedXSeVBPHgO4Q6dcCFsjZRZsra5FYeJUOth5NIRoBWWb7l6FZmo/aBYkgnHMBQplDxsw5u8OY+ir+3F9X1Eg8XZJL0+dhPKEeEXfO4bsxdAt6gnm/KujQsrAk2R9On9iblBNePah8NHq8uDFQeWXmun+JRXe7JKBP/5reB3hSm1PZ5LjoGxnGm3/fW22lv076dayE//tKH1c2zVWmkNH/y3oxKkuFwqTpxMwW5gyKwhFuGE7+j5sJwaDAaZsHSWul1qviVg844YV08XKPIFWMY79eq7b2LW4HmPrLHOTCbpl70O/bQLNIRuP76IdwQ17VhPPrGc5nufiOouDsp5aif5zDspG/xj67EEsgrKaTTMFCoOFcT77rWSCOWeV4L1bI2wn5E6//Gu3dMFK2s7MABsewqMBNkFgEwJ2eAKyrDYxTZwsiJMLUV78bZ2PXYtpoQCyrA3iZIGDsuEZf3+lVu85RJPSis17/ImFnMaoC9gzzqzjGq7eECwU2NYxmaF4xV7c7z4J4z6/Axc35cnM7V3clDkCpm3vgXGDhzvYaqqErdtHg9vaHO72hVI+s5Jl1rLMatYaBcBsNIKyTTc+EuYzS8fBZQgMPt49UY7hb+xH4l8fRMGn4bW8lHPvaE+couegevsOOdn8yjo0anJ6Yjy3xa9cuBKrKvR467UMfOfLwVvrXn0nFQ/fS4GtQR+uZlK5fb+zkcDjj/beC2s9vPC2GuCgbFuddOYYudaybNcD45aN++y+zqw2ZfrucKBg1GSajxZNlufg1fY0G47dP4a9UKDhEYFXti5qvSYS10ut11Esj6eBi2enxDyt11n6A4ugW9wLzoaXDt/Yh1rm6FO7cjIcjVrPYprPxXVWyd410E7rHRUHt5RtHj6fJxyU9ama6E+IRVCWjQpz9lU/q30oDBh1gXlzN5izBQc63OmX/+dC4JJNRO0eTl7vX1OxmypOFjgo2wFj7HBANTAJBUEApHJbq05jVgmJIOdfQ8eDWcjrbsoDBfTl9bj9f1Nw/vfK8C3a8nIEK9lHJ+V2Jyh57f49BEY5dYEBtaAq6OBMjFeWOf4iYLYi/LtTQulutIGyxtzjAiC7cjJcpsA0GyeWPEb8Z/dhytdPQFMaWD4UXcrO63KhbPRQlKUky87qL4Nh/zzolrwHl7n9tzt2/1EmWZ+eP6by10SfaY/WCB/Irgxd6lNGqYRvvJaOf3+DO/hSSp9yyuGgrBxtxb5sMNays394mqxll759MfYVFOYeOkwmqIZNIGC2ZO4KSbW5bU2wZ/0OtpPxkuSVEjI/vEQfHs23TrUp0lZeCM2c4dDMGQZrcdtdaOI6i0DZqb2hjYKjehmnL2gz0K0iOCjbSiGxdBmzoOzc3tBM6QPr7eC2lMkdY+u9g7TQt+UL9WkP7qOFuKW4UG5RMS1fvmoT/REy6gIeOq8GxMkCB2U75h4omrqArNVNqsDOgkJpIVnLDkxEWeokAmMZKFswZJysIneOuYl1b60iGoP6G49k5W0j7HbBvL0vTLvjAberTbLiES4nKiYmoiY9/KCL4m2XUaCjUScAsyMngzkCi9QQTaCs7uReAZBNnwa31eJXpU6HG2v7XqFF+8JfnYfZEH4LcL8N8pFYsWA+1KPjYC5Qbl5kr8ijRWtTzm4ftYYn+s61CnTtkoFff3170BV80n0S7vcaF3Yr2Q/TzpGV7JCfdoxFcdAKipGMHJSNkYFUsBtvvpqOrl3SUVYk7WOtzexE3GcyMfgzmWDnPISmAUejHqoh42g9ql4d+L1ou7GcrGRd2rbgZ2gt8Z2bObFkHxz1u6b7FGJWstoVk17wzLZ0pCmuszgo61N9UZnAQdmoHDZpjY5VUNaQc1hY0HzQR5oiQpVii/3d8bTgZ1ti3XYbKqaOQ+WcaUETiofapEjMz5wMMUvZqg07I7F5vE3tpAFxssBB2XZSeKtqdDfv0mS0dP7qVinKX6rnzqK6mLVswQhh2xijM5ASSh/UI/7PsrB77A08HjIPT0YsCOl9ar1/RPh4VqiMs7BAfTDcukEf59hvrAcCZiekoWDExIgFZqMClHW70XBgA81f6jfMAez+OZQNGgvm/OgsAbIfJtyA2xW5vMWmp8/peahYpuxHCsPuGcS5B4e13R6zn/zTFgI68x/XBVXnvWX76L14dYQ0S62gKnmR6Tf/sIYA5JIn1aEUw/MGqQEOygapuBjOJlrL/vDvN0vu5Yo/5dB7fub321pNSi6ECzZrwKZtgGrwWDJQqNya2Rzf+sSlL4djz09hvTqvdVJYr/U7UgmUdRob/NfjsKN+xzKaM3jyzIrrrJI9a6BJfS8qjqqlKdzRl//RBgdlAygompNjFZRlY9Iwqwe0M3q22/DYy+4K22I/FSw2mh7eowVIw9n22Sbbbh0NsqLKXQcJkGXALA+dWwPiZIGDsh13HxTEp0AVJ1CuhLMVlspyqJi17KQJsBQUk5MxVby0emd+7zSS/+YQWYZor94ja9mqwzlBNddtM8O8tSfM+9vv/VOzeilZysLVOSxb7Do9iibOJWDWXFwW1DiFM1PEg7IMkN29SgBkty6C2+Hwqw7m0CvlH47Qh4tLW4PbQu+3gjAklo1JQFniCEVLthU/IGtZ09UDipbrq7DMLQ8IkB34u+ApmEQrWUtjeGkXDI0mssj74V9z6gJf4xnueA7KhlvD0Vm+wC2bgYoKadayrJeMV5bxyzKeWR5C14C1vAKqQckEzNZkHfFaoO1sIuyZv4bLXO81PRyRjK5AP/8dmB9Ip6vQn88WjNFe8MyK6ywOyoZjhDquTA7Kdpzuw15zLIOy2gWD6AWl2a4MF6GUwTCfmAnzhj/CZRCsJ2rWroR6zHDEKp+gFJ2IMqoBCcIXyaUbxSj+20k1IE4WOCjbcTdA2ZK1ZKmlvXg17I2oWJBG3LLG+zdRmDiN6q09ctpvvTmb88kq5JOslxQLealr8KjvTDgMJr95vSWar39IH80c1e2z/Yy989UJ8dAe2OutOTEb5zQ2CcDssAmINGA2okFZlxP1WxcJ1i67V5GXZX83ye2jZRjxFwcw+kvZeHopsrl8PftRtWmT8LE697JndMjn+m0ToV/R36836pAreVHAf3xhLd56PQNGvX8rZl/13Z63S7CSHb3Kl4hi8VN77yUAec7A/YqVyQuSpwEOysrTV2eR7vfbbHo2f/IvWyV3edfYmzQvmvAv3gFEyQVxwWYNmPILkT8gmYyGNMdbUgDYS3KJtsD2cFezfLhPmEMv5thLnzlHdlXmJ7dRN30g8czWqZ6S1WnJnrVE58goHSP9qFoyjlvKBhh1DsoGUFA0J8cyKGsufgpNah80zGk/a1mnvhqW9X+A+dRcui3sWg2BsrXrw79NOJLvQ921W8gfkEiOfiK5nbxt7aMBDsq2j5791UIWAv0TCUDzJ6dEmkNTJ1jLThgPc6maPs4UDBrjs+imBhuBTfN/3nKCbCqpImvZ0vUHfeb1luA262De8DZMJ2Z5Sw5LXP2xgwQ+2WqiBzBTShEMmC1OnY+CYRMQbt5iOW2OVFCWWcRqN80TANkDGwICsofS7tPCfOK/HUNtUXgtLeXoV4qso7EB5aPjoZ7hmydPSjmtZSzPbwjWsp8eb52k6HXqiLMEpMxK/ijocm90n4i7PcfBZQs/9+/3v5SOrq+mg1nM8tAxGuCgbMfoPRpqZbyy7Pm0WPzvivDsy5Au+xH3yj78P/beA7yt48oXz2bjEm/y0vYl+5LdbP7rtnGcTdtsvM7zJi9OdWxHkiXLaiwqZhXVSHVShZKoLlIi1UV1iaK6LFG992IViqJIgBUgQRIASYAkejn/b87VBUEQF7j34qKRM993iXunnJk5A17M/ObM78jvat2j6X0AGui8X4bALHFM23b1FkoiVISWAwPwIvehCU7Qb56EG4xinVdaG+tAMz8BFBtzKCgbmkELaS0UlA2pukNbWV8GZYkm2zIHgGbaRwDGrpAp1nhtM1pkWZUPsc62E0dxcU7oDPprIN7eCW1B3bTQcvL0V31Her8pKBsZIyRPyIDKEcngMPl2JCRFaxtz5jHWsreugDxtJr4PmjiOi22Ivw7xz+2FJrm+V9U1q/bAw7+lg6mhpVcaV4Tx/Cow5f8e7O2NXFmkjXc6QZmeCqol/fd9ZzcYEZiVxU2ErvLIOFofkaAs4YNbOwcBWd0x386qTJ1WWPrncwjILvjNGTDoxFlqSvtlFy5NkTEF6hPjJH/v6AoSQJcbB8GiC9GoDWgh++Ov5Qvv9LMSdzK34LvvWmqeaBl8C5bfrIWXn8uFP/5gDd8iNF8QNEBB2SAotY+IfP8Xu3GT590f8fezcWxpKcR8YTckfUs8fUofUZ+k3SBgLAFlidUsAWktD7eilay1TtpTHb4abbi2HzcXzZV3fGXzm+bo0oOyeBMFZf1qKvoyUFA2+saMd4v7OiirXpnKUBisSOKtk4Az2q1g3DIEjDtGMR6+HQ5ozMxAx19gC9VuW8C9kEyAvrYWZMOS0TpOMqFUUFRrgIKykTF8qu37ECBQbQv+0VZiLSsflQh1EyaAXadjuGVHpvRSRNVtDYJOu6fc7ZVGIixteng0ZAbIMtd7TfeMJECsqeAPYDy7zDMpaM+dDxk+cf210E3mg9aZAAQjMDtjEchi0iICmI04UNZqgdY1s3CO0nnRt4VnS00HpL96FP83dk66E9EOvfx9ZbTHjuNGdctubucq/mR4SzeVXmKsZe+d9JYccNyQ3+xFAOXwnieiZd3+26SQWckO/8V6bO+epeJ4uEV3khbsoQEKyvZQB31w0wChDX/5+Ty8/FCIu5UCpK4hwOzdI5HH3d6joVH2QOgLiDNqYqxg2vQHIHyyoQo2bQPoFw6AjkPSOH9k11k1O9aAOv3jqLgacyZS+gI/XzgKyvpRUDQn93VQlljIEkvZ1sy/hXSYLLLLjNOvuwzYYaxkvA5r9+8NaTsioTIkUR+eDLIxUyKhObQNEaABdrJAOWXDOxjEQpZMPuWfZoSkIY1LFyAI3HnrClRPmYv3yoJuCxGnE2DaG8dczr24GtVYdAZpDNrv+gdHjCfmgrHgj+A0hM5JQ3PBKlBO+BT64yac55g5jCaonZmDwGxnablnckifIwmUdZpNoM2djoBs103fR+FLzzQincfoF4vgVnFtSHUWlMocDlAkxEP9RH4O//i3wQn6NWPxAnDyL8YjZ+m9JnjluTx4598288jtPcvtGZsYK9m00Fiu/vuLuUAuGsKrAQrKhlf/kV777364BTdPBr7Fn3+egLEElCW84jRIqwHi8ItYzNaMGQ2minvSCueS5nSAbn0q6FaMAOKUVorArrMoKCuFNiNHBgVlI2csJG9JnwdlAaB1zkAktzaVMTwxkiuRQ6DxwEQwrnsPHIY2zNGyZT0ok0eDRdXAUaIPRpvNzK7jsGQAs7kPdpB2SYwG2MkCBWXFaE/aMjXp89CKnXDMBjvY29sYa9nxaWAh1rLEgn5Esqvak6ueoCXg9T3VrjhvNw6rDR7HzYeysQsAHA5vWTDOrq5iNseubuDMI3WCw9CF73n1ji1Si45aeQjMZi4FeUwahBOYjRRQ1mE0gHZFOmimDoWuOxd8juuRhaUQ+8U9MP67B0FRyswlfBaIkkRl9nxQJsSAUV4laYsN906itSyxmpUy/M+/bUZQloCzYgOxkr03cCIQDuFgh91LLiDQM/KXoXv3BbtPXPLXb9gEAwcPxev4iRKubK54k8kM2QtzXGVIec8gVKZnefdnCsq6a4Pee2qgvd2EvLKEX1ZIIPQFBJg9UxDezU4hbY6GvA5tJeiWvIfArGzUeLA0B5+7t+vCLvzdslQ/kExF7DqrevsaaJkyNCquBmop63f8KSjrV0XRm6E/gLK6fcTz4MegzR4e0oGytzcwx2ZPLsR6HV1doJyYCKocxglYSBsTpsoqR09EyxB5LLdTnzA1jVYbRg2wkwUKyoZxEJ5V3XbhKv6P1i8OjfVW4/JFWJ/u8hmons7c1y9fB7oWI4z7yj7wdO7FpSHtlftoLdt0+CJXFjAenAzGDR9KZnnAWZFbQtvpE3g021gtd4ultw6TGWqfAbMdDx6HRSGRAMo6DJ2gWToJNNOGgfHRTU49WIx2WPHhBdykmPf2KejQBJ/3mbMxQUgwPHmC/yeNy6U5qulqosOOvLKEX1aqQOgKXnk+Dwh9gdhwI30tvveuT14rVoSgcr//19XIJ0t4ZftyICAsAVgJ0NreroPUtEngC5hlAVkWiGWf3csIlelPvxSU9achmv729zfiOybuvQO8lSG/1QKjvrAbRr8QfPop3o3qAxktx2LAuuddUK5k3tmVsRPAYQieo0RbUxXoF3wIncfFc5V7Uzu7zkJQdvJnVBZLAAAgAElEQVRQaImCq2ERpS/wNpbucRSUdddGH7vvD6AsGbLWWQOhddaAkI+e6co6tNSyNzHHbHWXzuFCRH9VWiuOkHeMZ4XIzUOsZNW9HfbwFEGz9UENsJMFCspGxuDKYsbj8fJQtMZlLZuaCmCxPHOskAz5n1zhdO7F1a6KqauhdOgssHf1Pu5lrbuH717zMwoZLhlSxzfOmQ6Ns9OlFtsn5BFgtm7eCpCNSoVwALPhBmWJ8w3tkgmgnj4cTBXcFjGa+k6Y+u/HEJAtTLoJDru0R/Ej5cukSEmA+qSxkjfHcOsoYy1bIc3pKOLY69UX8oA4+hITiGUssZANlZWszWpHy7tffD34zsTE6EOqMiwIe/8B41SXyCX3LEjrrR5SZvrMTKitrXMlkzIsSCtGpksQxw0FZTkUQ6NdGmhoaEdLfLL5IySk/fMh/J04sig8G51C2hoNea2y4+jcy1K+H5tbm7kEN9NkY6cAWKQ/4eC0WUGf/ynoV48GsEnruJNdZ1FQNhq+efzbSEFZ/rqKupz9BZTVzBvKONMo2R7SMXJajWDYNAgMO+OB5ThrzJ4NDZOTgVjO9uVQOX4W82M2vPt4cl/uL+0bfw2wkwUKyvLXWTBz1mWvYqxXb38ezGpcshtX5DD1XT4DtXNX4P2mN3Ng12Tvzr1cBT1uDLUqtJatX3/QIwXAsCMWDJsHg9MeOueKptpq3HRrO3W8V3toBKMBp9XqAmb1d7vBlFDoJ5ygrKOjHbQ5qaCZFQPmmqec3X1ysQmSvrkf4p8vgmu7fNN4cAqJkgRVQQHz/3L5sqQtxoXu8mGg3xI4j31W2jm0YEsf7f9YPFcnbkwswHccsZYNRZgftx/bPPUj/hyVoWiX1HUQYDUlbWIPgNVbnHu9/ixjvZX3Fucu0989BWX9aYimEw387Nvr8P922jjfHOPu2mqu1kPMF/ZA7Jf2uEfTexEaIOt1y76/gPnwJ671OhFTNTkL39/ypGk+6bJEVAldpzeDPvsDsCgrxBT3WYZdZyEoO2kotETB1bCQWsr6HFQAoKCsPw1FcXp/AWXNdy8ir2zrnI9CPlrm8rOMxdaDQ1i3WVEPyqQ4UG/rzWMV8sYFsUIZ8WA5PAnMld0WCUGsjoqOIg2wkwUKykbGoBlkNcgrWzMzJyQNcho6kVu2NoVx9FP+SQo8GZoC5i7hlgg1K3fDwwEZYG7q5v0yl59h3rmPxQMpYhSh2bUV+WQJrywN3BpwAbMjUyGUwGy4QFlbuxY0i1JAkxkHFgU3h+qJ5U8g7kt7IeU7B6DqtppbgX0kxdbeBoqEWFBkzpa8R4arxQxHX22paNmdnRZ47cur4UdfFU/twlrJEj7ZUIW3/jEXCD+lTt2330PEwpXQFRDrVjZ4s4Rl09hPArLGxI/Fa/+BQ/hJ4kgQK5OV7e2TgrLetELjPDXw4J4KXn4uD155YbVnks/nya8cQWvZrUncdDg+BdBE1IDlbj5aydrVHlbHDgdUpcxAYLZqinT0gwSIJYAsAWaDEdh1FgVlg6Hd8MmkoGz4dB/0mvsLKEsU2ZY5ALQzBoXFI7ZxXzIY178PTlMHjqm2aCdaiJhquBdoQR/8IFbQuGQdgjyVw5KCWAsVHa0aYCcLFJSNnBGUjZ4MshEpklsCcPVQlcscCzubUQyFP2G4ZesWruLKzhlvadPDw0HTQD732SaX0wHGwqFoKQtObidgnAJFJhDwRTkhAZrXCnPWIbK6qC+GwOyCXJCNTIX2G8IspMV2PhygrE2tAs38BNDMGQ3WJoXXphP+2FUDLuLCOuuXJaBr7k3H4bVgH4isnzoF6hPjAKR2fmUzg27px9CxUzzgO/KPjMXp7o3iLbqvjV+Ni/nbM0KzCd9cp8Vj0L/5P8KOQUfjV4kLQCVALUnjCiSNdQxGPlnqApJfqEyLxQIqlcrvVVpaCl19/HQcl75pPH8N/Mc3CxCYXT2PP/UK+b1Aa9kv7uZfEc3ZQwOODhXYdr0D5vPTesS7Hmw2kH+aju/y2rkS8KDbLEhZQKgLyMmOYAR2nVW1LR+aJ34SFZdywSQg78qODgYrCYZeol0mBWWjfQR9tL8/gbKanNFIYaDJz/ChkeAk2bW1YMr/PRjPLMUKnFYLKNNTgfAP+vIeHpzWBF+qbFgSEEBWf+5K8CujNUSdBtjJAgVlI2foFPmFOOFUHzsdkkYRa1nZyEQ48/sZMOtnJ8DFP223C66/YfdJpDHoeFIN5vsH0UrWUnVNsJxACnTcuo4bbZ2P7gcipl+VdRAqAwLMjkgJCTAbalDWqqoHzZwxoMlOAJumyevYNlboION1hj92W8ptsNv6Jn+s184DgPbYMfy/URcXc2URHd95fgday9qaawTLqHysxqPEb/3LRsFl2QJ2owU+HzgBQmklm/qnbdjugowTbDP67CcXgOrJGeuuAE8qAtZqlgVmhcokQGtZWZnPiyyiKSjrPgr0nksD1y8o0UHfqy8K21SZ/uPjuKmXP1xaKhiudva1ePO5dARlHV0tnF2zGQwgGz0J58mN+YWc+fgkdH62Bp17ESdfwQrsOouCssHScHjkUlA2PHoPSa39CZS1a1SgmToYWrNC7/CLDKbxYh6CBfYWxit3x52buBhp72P8g83FJd0AS0i+xbSSaNMAO1mgoGzkjJytrR2dblVNzAxZo46+vxQnuLLtn0HdkjV4X53FbFwJaYTTaoPSUXOgPHUJGDcOBGNR6Hmsm1YtgYZpE4Q0m+YFAALM1i9eg8Bs25XgHr8MJShrbagBzexY5JEl9AXewt1D9TDmpSIY95V9QO77ZXA4QJEYB/VTpD/e7zB2gG7xYNAXZQtW7btvbEWL03vXGgSXZQu4rGRnBed4KluP++dPvpILr76Q22edw7n31RNgJWne4tzLHD9R0sMyli1DgFxCfeCtvLc4d5n+7il9gT8N0XR3Dfzoq6uRfqQw9557tM97nZqxlo35O8ot61NRXhJtqvtIW2C+t95Las8oW7seKmPScK7avOtAz0SeT5bqB7hZ2HVuG88S4rKx6ywKyorTX6SWoqBspI6MBO3qT6AsUVdb1kAEZglAG+rgtHSBcePfwLDnU1fVTasWgzJ1DNh17a64aL8hVrKy4cnQFOBOYrTrgbafWwPsZIGCstw6CkdK1fiZUDk8GRwmU9Crf3qlGcZ8aReUfZwCLLcsqZu8P8Ai3Aut5vwdtJZtnj4YbE3cjpSC0TFbWytusLUe2hcM8X1fpt3BALPDk6Ht4vWg9TdUoCxx5EUcemmWTgJHl75Xf4g1bGHSTbRsmvbGMWiu6t9H9ZRzspBblnDMSh1YRyo2tXfqCG/1nT4iwyPEH/xSvKMsQmcSaivZe+eYdg94o8Bbt/pcHOu0i1i3soHcZy/MAZLmLXCBsqzDMDEyvdXjHkdBWXdt0Ht/Gti//QmCsj/8B2HcsnPeKsHflGXvnfNXBU1nNeC0g+XQELAUvw/g4DfvtKiakXaJnO7SlJxnJfH6dJq6QLdiBOjWJgE4hJ8K41XJs0zsOqtqawE0TRgWFZdywWRKX+BnkCko60dB0Zzc30BZ9drpSGGgXRQXlmEzPz7BOKApZbxzW7UaBGWbC4RzKYalA34q1V27g869KJesH0X182R2skBB2cj6IjQXf4YbKqrCoqA2zGF3QvqrR9HLvGL5Mqyz7eQRUOZuwPuaafMF1+806uDpiGQoHTwF7BwLcsFCeRZoO3YIQVmrhvvoG09R/Teb3QGK5euY70KQgNlQgLKmykegnj4ctCvSwWE09BpPraILMn9xAhfP60ZdA6s5dLzHvRoTIRG66zfw/0e1QTxVAFdX7J1toFs0EDoO8ecB/Mm3CpACQNXQG1Dnqscz/loaY/l/K4RWsp/8fD22+/JBD0c1no3rQ88EZGWdfRFLV3JP4thAQFrCG8sCt2we9pnkI9QF7kCuP5msbL6fFJTlqymaj9XA6y8x1rJnDsvYKL+fdosdYv5uN/62kHsa/GvAUrYXrWSt1Wf8Z3bLYaiqA9kI4sw6Gdou8z/h03FwKUNb0BL8kzHsOouCsm4D1wduKSjbBwaRqwv9DZQleiDOvlpnh4fCgNRPLGWJxSyxnCWh9dmCvqsPcBGSHyliJVs/Zxn2jf6hGvCmAXayQEFZb9oJY5zDgRNNecLUoDbi+LIyXDhc3iYHwi0rH5UINYkpWCdOdIclg13X7VGbT2NMF9dA+4IP0FpWuZ3Z9OJTToo8DdMnQtPyhVKI6t8yyFH2Z8Cs9vQlyXURbFDW+OA6aKYNg9Y1s8Bp7m1tXnZeBYnf2A+jXyyCK9uDxyUnueJCILA+aSzUjw+OY9DO4wW4ELbrNH57smTmFQQ2kz/+zG9ergzESvbugElw88PJXFmCEv/vL+bCmy/1jQ1+IQoioCrruMsdkCUyyDNJc49ngVm2jDsgy9brSyabh+8nBWX5aormYzVAqAtefi4X3vxaPhvF6zPnj2dwbpX9zile+ftzJqdZD9Y974Ll+BhRauh8/PQZMJsCHQ/L/MowV95haAsuij+B4bcStwzsOgtB2bTh0BQFlzJ7CrWUdRtDb7cUlPWmlT4S1x9B2da5g0GTMQQ6zh8MyygSTlnTmt+B8TwzeSYT+MbMDIaPMEheGEPRUX1tLciGPTt+HIoKaR1RqwF2skBB2cgbwprpC9Da3dKsDkrjdC1G5NDMfqfboVjTmuUua1nVlj14L584h3f9jo4WMBX8AYynFkLVoq3waOBUMGtCQwljqChHKz/9derUkPeA+croBsxqTkh7DDOYoGzXzXPMKZz18wE8fsedToADWQ8g9ot7YOK/HgZlWWi+m77UHGlpDUuWgDIhBoxy6cFqAsbqF3wIBJz1FSwWBxALNXKRe7Hh2oR8fIfdyQrMGYyQ+vflXkIwedz/bBFSjOYNgQYoKBsCJffBKl57IQ9pDB7cE0a3R3hlicWsxUitZX19LSzXc8C2821wtFX7yuYzTXfrc3zXE2el5nolZ17Cb65fPoyhLXCK/23hrMBLArvOoqCsF+VEcRQFZaN48Pw1vT+Csp0l25nF09yP/aknaOnGs8vAlP97sGtrsQ5j5VNc2GsPBvfYcNA6BADyUePxx6kycXowq6Gy+4AG2MkCBWUjbzB1t5lJpmKlf6cHYlqf/8kViPvS3h48msRatiouEWoSGAddslGpeCzM0tzMqwoCxhJQloCzBIwloGz10h28ygaaqaVwPSgnJIDTag1UFC3PasDhAGXeJvw9kRKYDRYo23HmAM4pWjct6sUT19VugYW/PY3WS8veOw9GPf2esMPs/mmUy3EO1LBUuKM/dzlc9x2HVyKNAaEz4ArjBhxCYHPNQv7HUT1lhctK9i8vr0HHZLVlTZ5Nos9h1gAFZcM8AFFa/cKMi8ht/dNvrRPUg7whF/H3ZtbPQ3tiSFAjw5yZALEEkLVcXxxwS1rPXUMnubJR48Gi9f77ot89B/QLB4AtBLQFbIfYdRYFZVmN9I1PCsr2jXH02ov+CMoSRbTNHoA0Bl6VEoJIp6kDKQyM+7q9hLdsWQ/K5HgwK4PPNSN5F81mIDyylEtWcs32SYHsZIGCspE5vLKYNJDHTZC8ccS5F7Hi2Dvt816ymwpWIghHuGXVBz5Dh1/ylBm98nlG2FvrwbTmXTBezHMlKQqPIY1BZ2WdKy4oNzYrKMePBfX2TUER36+FOp0uYFZ98IQkqggGKKs7uBkB2bYdKwGISaxbqLqthrTvHYL454ugZOUTtxR6600D9amJQGgMghHsrSrQZ38Anae889aqFHoEZH/6rbUBVX9jYgG+x0LJJUs4ul99IRd++Y3cgNpOCwdHAxSUDY5e+4PU115kuGXrq4WdriCnMkZ9YTfo1Mb+oCbBfSSUBYS6gFAYSBHUh0uAOP6SxU8Cm6Enl7zxwTmkLTBcDq3RFbvOIqCsavyIqLgU89MpfYGfLyQFZf0oKJqT+ysoq104ChdSmo1ZYRu+bqdfDHeZo6sLGiYnQWP27F6Lu7A1kmfFVWMm40JEFpvGswTN1p81wE4WKCgbmd+CupzV+P9MOLOkCqxzLwJSeXNuZDcaQB7rZi0bk4aTXFMN95Ew0jbjsVlgXPdXII6+2GA3muHxiCx4Ojm4/Iq6KxfQus8or2Srpp9SasANmG3ZdzRgyZKCsk4ntO1ezQCy+9b2+s0+uqgU4p/bCxO/fxhq77cG3Pb+IKCxoAD/n3TXrgWlux3Fi0C3eDA4zT0XzaSyv/5iB1qlnT7C37GOZyOJley9gRNDziWbO+EYAsqzhoZ20e/Zf/rsXQMUlPWuFxrrXwMsx/Xb/yps43fjmKu4AT7th4H/bvpvZXTlsFafRedexMmXlEFVuBfnzfKEDACbDUXb9Rr8zdFvmggAPTdtpazbmyx2nVVVWACq1BFRcSnmUVDW21i6x1FQ1l0bfey+v4KyxponoJk6BFqzBoZ1RImlLDr9MnVgOwgvoTIxFtrPngxru4RWXjk8CS3bwGwWWpTm74caYCcLFJSNzME3Kxrw/7k2c4lkDTy+/DEuEm7tZyhbvAluWrsKJ7VtJYdBU3KWmeAmZnjLinG2pqfIz226ua1XnubjV9FaVnu5t1Vur8wiI5qWLYDG2ekiS9NivDTgBsyqduznVYQrk2SgrNMJrVuXIiDbfnR7j+o6W82w6HeMs5Xl718AYwelK+ihIB8PlpYWUCTEgiIr00cu8Um25ppnjlZ29xBy50oDHv1/942tPeKFPlxLW4PvrFByyZI2/s8/MdyTHe29wWahfaD5pdcABWWl12l/kvjK86tx08VkYoA+vn2P+xKxlt0DrY3UWtalM4cFLMXvg+XQEACn9Jy7jfmFzLw1lTnlpS/MAF3OILC386PicrVTght2nSUvXAuNKSOj4qqfS0FZf0NPQVl/Gori9P4KypIha80aANppg8GqDY5DGz5fC8IpS7hljWe6wY+mlTmgTBsHdp2w4yp86gtGnrpp8/FHiBCd00A1wEcD7GSBgrJ8tBWePPKx6SAbKc3/dLdzL98egXtZy8amofPAznLvlqjGomQwbhoIYLf0VpLDCU8SF0NZ/HxwWIUtZnoL6x1j1bTgBlrbCWqJ0ls7EscQYPbZYicQYFYKUJZYQxLuWE3Gx9B5sefYV1xrhpTvHIDRLxTBqbxyiZXQP8QpJk8ARWIcgCM4zlA6dmWiwxWnmzO2X/3zRgQ9Kh+Lnws6LNawWMnq1F3oDOi33+2mb+kf35To6SUFZaNnrCKxpXHvHcD303s/2ymoebvS7+BGePprPX+nBAnpY5kt99ahlaxNdT9oPaubyziurZs8haEtuM2chg1ahRyC2XUWBWU5FBSl0RSUjdKB49Ps/gzKqldPYigMFo/ho6qg5TFdykdrL3sTwzln1WpAmToGmlYvD1qdUgqWDUtGb+3mYPM3StloKiusGmAnCxSUDesw+Ky8Yf023GzRnrroMx+fxPxhVxCoapL75+9qXpeL9baWHAbthatIYUAAYs9gqbqO703zwyOeSa5n3f0KtJZVFZ9zxUl103qoGJRJcWDTd9MmSCWbyvGiAQmA2YBBWasFWtfOwXlD182zrkYSKtkDWQ8g9u8ZugJFqXdnH64C9IZTA8279+Bmh/Yo9/81Z2EeCZbaUmahfJORv3vDQwQ8Rv4hMCvsa+MZypc783paTvNoUkBZMgbuxPavm14SkBxaOHgaoKBs8HTbXyS//Fwubr4I7S9xqkqtZRmtOTpUYNv1DpjPTxOqRsH5qybNwnlsw9REwWWlKsCusygoK5VGI0MOBWUjYxyC0or+DMqCzYrOvlpnDwiKbvkKdVqNYNg0CAw7412cM20nP8OFSccd8V6A+dYfSD5V4T784SEE5zRQDfDVADtZoKAsX42FPp+j04BWqtWT5wZUOevca98MfjQCvaxl4yeiA8HOh6U92mHYGQfG7SMBnL4t6mSZ6+HRkBlg03f1KB/QAwEI01OhOTc4nuIDaltfLhwgMBsIKOswGkCbOx00U4dC150LLi23q4ww/9en0CKpYPhVSlfg0oy4G4fJBPWJcVCf0XsjRpzE3qX0myeDbsVIAIcdfvTVfCDOdDr1Xqztexf1GkOsZD8fOCHkXLKkMb/4eh689gK1kvU6MBESSUHZCBmIKG7Gn36yDTdfxg0SZvXKWstO/rfDUdx7aZpuOZcO1l3/A46uFmkEcklxOkC3LhXqEuJwfaxav4MrZ1Dj2XWWfMs6aEweFRVX/dwM6ujLz7eCgrJ+FBTNyf0alCUUBnM+Ak3GEDDfDdwaLJDvgeXpOcbq6/NiRozDAQ1zpuHC32GKXD4g2fBEtGRrLqZWGoGMf38ry04WKCgb2SNflTITKkcku5wWCG2tP+deXPKa1+cx1rInDoH+xj0EZeWjJ7myWyrO4/vSIrviiuO6MSqa4eHf0qEu/9m7lSujgPiuskfMptntGwJK0aySaCAAYFYsKOvo0oNm6STQTBsGxkfdG6V3D9dDwteKYdxX98GtYm6uZEn63Y+EKKZPA0VCHBDnp8EIpqc30Vp24ah1CHTMTD4dUDXXUpn31b3s0FrJVpeq0DnZB68XBNR+Wji4GqCgbHD12x+kEz7ZV57PhVdFbMAQh5MxX9gNKpn/k0p9VZe2hpuMc6/7whymidFH18Vd+PtiLr0KstGT0T9D864DYkQFVIZdZ1FQNiA1RlxhCspG3JBI16D+Dsp2lmzHo4jauUOkU6pIScYDE8G47j1wGJijj6aaKjweq94e/B8RMU3ufPAEaQtkw5LEFKdl+rEG2MkCBWUj+0vQVHQEwdGmPQdFNfT4Msa5152DdYLKe1rLysdOwc0fAtASy1hiIUv4ZPmG2jX7EJglAK0UoWVTASgnJADhF6UhDBpwB2YL+XtQFgPK2tq1oM1JBfX04WCqeICdJc671o5gvFvP+dVJ0CqCAx6GQbMRUaX25Cnc9GjeFjyQsyU3Ef7rG8vQUjaQTrNWsjc+nBKIGFFlx76zBUHl45tviSpPC4VGAxSUDY2e+3otv/zuRtyEWTXnuqCuHpr/CE9yTPz+IUHl+kxmpx0sBwaggy+nPbiON21N1aBf8CF0FOeg+mzt7SCLm4DzV03J+ZCqlF1nyTevg4akUVFx1c2hlrL+viQUlPWnoShO7++gLBm61tkDQTtzYNhH0d7eAKaCP4HxRPdxYc3eHbg4Mcoqwt4+zwbIR45HwEYxb4VnEn2mGvCpAXayQEFZn2oKf6LNhpay8uTpgtvCOvda/Idu7k0hQpo3MByNrccOAKEuINzV8viJYCkr6cHBzUcmoS4gFAbyORv5ZPeZhxyvVqSMAc3OQp/5aGKQNeB0QsOGHczxQJ7ArFBQ1tbaAprsBNDMigFzzVPskPyWBib8yyEgXH37Mx+A0+EMckf7oXiHAxSJ8VA/KS1onU/+HePR/EBOYBb0V5JW4Xfw3iJhTnik6NibL62CN15cJYUoKiOIGqCgbBCV249E11e3I6/s6y+tFtzr+OeL0Fq27kF0OJAW3EEfBSylO9BK1lob3BOxxHmkPn8c6FaMAKepe6PW0qyFylGpUDk8GXTEsCBEgV1nUVA2RAoPUTUUlA2RosNRDQVlATTZIxiHX4XZ4RiCHnWarm1CwMGqfIjxTqsFGqamQWNmBvKf9cgczgezGWTDk3D3L5zNoHVHpwbYyQIFZSN//KqmzEVA1KIV5ryIde6lqesU10mrFariEqEmgbGIrUpIR/CjbcknYDg6Q7DMxqIz6PSLOP8KJOguX2A2yqrkgYihZSXSgBBgVggoa21pAM28caCZHQvWhhogVBwEhCVgLAFlCThLQ/A0oJw3FxQJsWBpkZ7/r/KxGi1M497MBP2G8aI7YWrvQC7ZcFjJ3j1VgX0Y+Z+BbzSJVgAtyEsDFJTlpSaaiYcG3vx6AQKzZw5X8cjdnaUk9wk6/Er7XuiP0Xe3IvR3DmMrWHf/P7CcDP6Jzs6T65G2wFLNrN/de2uoqoPK4Sk4hzU8Dc3ckV1nUVDWfSSi/56CstE/hpw9oKAsgLHmCWimDoHWrPA6/MJBslvBuHUYGHeMAvaYRVfpAwQBWg8HZtHB+SUQkVA5NgN/XGRju3keRYihRfqpBtjJAgVlI/8LoD1zCf/XGwq28m6sy7nXzPu8y3jL2MRayx4ths7yStwEqokbC/bWem/ZfcY5rDYoi58PTxIXAwRg3di0NBsaM6f6rIsmhlYDfIFZvqAsAWE1WfGgmTMGrKp6UFXqYNZPj+MR0DVDL1NnXiEY3o67d3He01QgPV/qu29shVeey4N7hbs5F9F8unglYSW+Gz9fvJtPdknzfPLT9QjK3jsnk1QuFSa9BigoK71O+6tEAsa+8lwu/Pgb+YJVEP/iXgRm+5O1rPnyHLDt/DU49ArB+hJSwFJfhr8lnce4rZg775cy6+aRqWBRSUOl5auN7DpLtnkdKBNjouKqy5pKHX35GlQAoKCsHwVFczIFZZnRa8scANppg8GqVYd9OK11d9Ba1nSrm0+tZf1qUCbHg0XVEPb2kQYQHlliKQtmc0S0hzYiujTAThYoKBsd4yYbmQqE15VPEOvcy6ts1lp2XBI4LUaoHTcaJ7WaEnGUCJoLd9FatuWUOAdd1tZWBIrajh/x2lwaGT4NuIDZHfs5G8EHlCU0BYSugNAW2DRNcGJ5GYx+sQgSv7Ef7h4SvhnA2Ria4FcDiqRxUJ+a4DefkAyXT1UjL+Nff7ED8Ljp8mHQsWOmEBGYl1jJPhg0AcJhJUsa8PqLufCTr+QKbjctEHoNUFA29DrvyzW+/uXV+A4jdAZCArGWJQ6/Uv5JnI8AIXVFQl67+jHj3OtOXlCbQ+amulUxoMuLB7BZfNbVev4K0hjIYtJA6Okzn4K9JLLrLArKelFOFEdRUDaKB89f0ykoy2hIs2o8Q4ErF7cAACAASURBVGGwdJw/lYUk3XhsFhjX/hns+iasz97ZAcqJiaBaNCck9fuqpC6b8TRcMTLVVzaaRjXAqQF2skBBWU4VRVRCbdZS3Igx1yv9tuv4cnHOvbgEN21cwwCxBVOha8Vf0VqWTGjFhqeTV8HjEVngtAh30qU9vB9BWZtOJ7Z6Wi6IGvAHzPoDZYkjL+LQCx17lSlg7lsn0Tp24W9Pg67ZGMSWU9HeNNCwbBn+vxnl0h33/MU/rYdXn88DlYLxRN51aQ9aONmaa7w1gTPu8rgV+F66v3QPZ55gJezLvYRWssnvUl7rYOlYSrkUlJVSm1QWcfT1yvN58Na/bBCsjNFf7i/Wsk4wH/4ELPv+Ak5rcH+7Ow4tB332B2BtqOQ1HurDJcw8Nn4S2AwGXmXEZFJdvYhWp7LN65EKiNABRfpVmzmNWsr6GWwKyvpRUDQnU1D22ejZrKCdMQiIxWwkBALGElDWcGSaqzm6y+dxgaI7f9oVF44b5JIdngSdD56Eo3paZx/QAAVlo2sQOx6WIQBRv9T3kTnWuVf2O6ek6+Aza9nasaPBdCkf5MnTECAWay3bWVmH1rINO04IbmPDjEnQtHKx4HK0QOg04AuY9QXKGh/dBM20YaBZOgku5t+HcV/ZB+O+ug8ubKTHw0M3ej1rImCsMiEGGpYs6Zkg8mnzyrsIZoz5oNsLudNsAN3iwdBRtIC31HBbyb73Sj7SL1SXqni3mWYMnwYoKBs+3ffVmgkoSy6TSdjm8vnNsn5hLWstP8A495KXBPUrYJbdxU29rjNbBNWjKtyL81h5AvEX4xBUlm/mqrxlDCi7aT0oPo2Niqt2NgVl/Y0vBWX9aSiK0yko2z142rmDQJMxBMx3g+uhsbtG33em2zsZp1/V110Zm5YtAGXaOLDrhB1bcQkI8EZ/8jw6/SGe0GmgGhCrAQrKitVc+MoR61R53ESfDVg36hrEP7cXmuSMFZrPzAISm3MYBwnafdvAVKNkrAxGiXfQU7VoKzz6aDpY2zp4t8JYUY6bYvobV3mXoRnDowEuYJYLlO26cwE0U4dCy7KpsOxdhjuWWMmKdlIXnm73yVrrUxOhPmlswH0j694ffmUNvPbl1dDZ2fOIadfpzWjpZG/lB3JeHrv0mZVsUcDtEiqA0MO88nwu/Oc3gnskV2i7aH5uDVBQlls3NEWcBmL+XIyg7Hs/3yZYQF+3lnWa9WDd8y5Yjo8WrBshBRzGDtAvHwa6gkRRjrgVK9bj74h8QqaQannl1V84C9V5Sykoy0tb0ZWJgrLRNV6CWktB2W51dZZsRwoD7fyh3ZFhvCOOvojDL+OWIQB2K7bE2tIMytQx0FKwKiwtqxiWjD8iqsJ9YamfVto3NEBB2egbx7pFDG2JodK719+q2xo86r136j1JO2dvbwTTmj9AVdynUD0mCcDpAHnKDHwPqQ98Jqouk0oDDwdkQM3yXbzLq7duAOX4seC0Mu9i3gVpRtEaaG/XQWraJBg4eChe9x/09mrMJZwFZlv2HXVl8QbKdl45gb/71bOnQuo39yJ/7IkVZeB0uorRmzBqQFVQwGyG3LwZUCsmx5UgiDFv0oVecuydbaBfOAA6jvifV1na9GHlks1PP479mPlx6J2L9VIcjeClAQrK8lITzSRQAy8/l4tOvwQWA2ItO+oLeyD1nw4ILRoV+S3XFoJt59vgaBdGSSO0c/pdWfi7YVOL55qvzVyCc1nyKWVQJsVDFQvKblwPinFxUXHVzp5O6Qv8fBEoKOtHQdGcTEHZnqPXOnsgaGcO7BkZxier8iHj9OvKelcrWo8dwkVK5+d3XHEhuVHrGQu1YUkhqY5W0nc1QEHZ6BtbwidLHPzVzl3eq/EEwJr2xjFI+fYBsBjtvdIDiTAenwvGTQOheSMDCmuKd4JF1YITWdko8bzWis1H4OGH6WCoafTbPALEEkCWALM0hEYDJpMZshfmwPETzPHD2to6iIkfC0KAWWV+IQPeH2SoKjxB2Y5zhxCQvR0/BeL/fjfMe/uU5FbeodFW363F0tKCFAbKeXNFd7JTb4FXX8iDH3+9gFNG57E8XGATgNZXuDw6fFaypF2/+W4eUhfo1F2+mknTIkgDFJSNoMHoQ035/ZtbcYNm3KDujUe+3RvzYhECs3UPwnPqkm87heZztMoY5143lwktKii/8d5JpC0wXAncQIlYysqGJwOxnJUiECtZZWIMVBWsYixlKSgrhVojRgYFZSNmKKRvCAVle+pUmz0cF2mtO6TdtepZi7AnY8l8MBX8AeztDUxBhx0aMzNAmZ4KDlNwCczdWyqLTWOAkJQZ7tH0nmpAsAYoKCtYZRFRQD56Esi8OPg7k/8UrWRv7JXWMsGursJNKfPDwwDPuGVZa9mqlJn4PmratV+UbuxdRij9ZBZUTF3tt7z+5jXcCCMUBjSERgMEhJ0+MxOItSwbCEBLgFoC2PIKTie4A7PuoKzus934W39+wERI/EYxnN/Az0kHr3ppJkk1UD9xPCgS40XL/Pg3exG8OLyLmwefUBcQZy2dJ7k3XoiV7KPBaXDjwymi2xJIwY52AwKy73zH/zsrkHpoWWk1QEFZafVJpTEaaG83IZUJ2XASGkpWPkFQdnwfs5a1HBsF1qI/gtMSvE0re3sz6HIGgX4TofOS4EiNwwGEW5YYPRCu2UCDIiUeQdmWKhmCspUb10P92PiouGpmUUtZf+NPQVl/GoridArK9hw8Y80T5JVtmxM51rIOQxsY170HxgPdfI5GeSWCBOrtm3t2IIhPZCePXDRQDQSqAQrKBqrB8JSvz92A74C2K7dcDehqs0DC14phzq9OuuKkujEemgLGwqFIWUBkqresxfrVe7e6rGXlI1NEV9d09DI6/Wq9UepTRnPuEiBOvmgInQaIRawnAOsNqPXbIjdgVnHqPC5SanYyVEUn/pwBuYMugq45dJubfttLM/TSQNPWbTjfaT0l3Mlp5WM1ArL//f1NveR6RnQU56DTL+L8y1u4FLcY3z/3lwW+cPYm31/cnBFF2JcVqUf8ZaXpEaQBCspG0GD0sab813fXw8vP5cGqOd2+R/h2sa9Zy1orjjDOvSqFWw7z1RkBYQkYS0BZAs5KFWwGA8jiJ+FpVPVh8c7JOm9eBUVCDCjTEoBdZ1FQVqpRigw5FJSNjHEISisoKNtbrW2ZA0A7bTBYtereiWGKMX++n7EYe9K9KNEW7cSFiuEpt/WHVM2VT87CxYg8VvxxYanaQuVEvwbYyYLZzNPiLfq73Cd6YGlWQ+XwJKiZvtDVn01jb6Bzr4ZyaY/BWZWP8J1neXrOVZentWx12mx8L4m1liVeb5+MW4gXlwdcm04HyqQ4aD0iziK3u/H0TogGCChL+GTdLWUJKJuSNhHIp2ew2WxALGHdL626HZrqNaCobIaKTXvhyaoNCMqqctLgs/dmwpXNwf/t9GwnfRauAUdXFygTYkExS/gpnd/9cCtal9658uykkY/qbc01jCfti725psNtJUua/dY/5qJlnEWgx3UfXaZJIdAABWVDoOR+WoWsvBV5Zf/9JeHW8y5r2e8ejHrtEctYYiFrORYT1L4Yrhbjb4TxrnjglKuBFm0bEIe6lcOToe2yOA51ZcpotJI1V1RQUJZL0VEeT0HZKB9AX82noGxv7WhWjsdjjeplCb0TwxbjBMPOeDBsGghOE+Mx3Gm1oPUWseAi98EMlcOScAcP1NJ6VQ9mm6nsyNUABWUjd2z8tUz+aQbIRiQDATHrHrYibcHOidLzWxt2jQHD7t5e11u2Mh5r1bu3oLUsvptGiLeWbb3xCK1lidWst9B28jPc/CJOFmkInQZYJ18spyz7THhl5bJqOJlbDhtHX4dF756BzF+cgLzhZxFwLS0t5fz8/MQFTLuckA3VY8niJRavu0NSoOTPM2D3b5fA2nc2w5LfnYRtqbfhwqZKqPlcG7pO05o4NaDImAz1iXEANhtnHs+E00dkaEX21//c4ZnE+dyxKxM9ajttPR36XY5nHLI8WhWezRlVTSsQxz5//MEazrbThMjUAAVlI3Nc+kqrfvTV1bjxdOVcreAuje4j3LKWm8vQStahDR4NEXHoRRxC6rcL3xzkOzAWVTNShFUOT4GOh2V8i2E+1kpWMZ6ZN7PrrMqNG6BuzOiouKpnzsA5WkcHg3MIUkA/yUxB2T480BSU9TK4xi7QTPsIWjMHeEkMX5RNVY6WY8Yz3Xy3xEqWLCw1e/kvOoT2QLv/KFqjUeoCoZqj+bk0wE4WqKUsl4YiN75h4y58H6iPn4VZPzsRFOde5vLT+K4j1rK9gsMO1fFJeAG5nzIX29OwtrBXVr4RhFeW8MsSnlnP0Jg5FVSL53lG0+cgaUB+SwOXt8nhaE4pPLxVgc69Bg4eilazd+/cR0vZsvsymPDPhyHt2/tg0+82wKVhc6A6NQXqZmfgJZ81G55mZsPjuSvgxuwNkPvHIjg3ZiHUb1iEE3751JlQNnk+PErPgbLUaSBPTHIBtCxQe2twGhS9nQU5P8jFjYcZP/4M1o64CieWP4HHZxuhqz24G6FBUm/UilUXFzNznYP8rbp+/p31eNxfpeC/mWypLWUcuNw47NJVJFjJTv5gB/alcF73aSlXA+lNRGuAgrIRPTxR37jizY9ww+bn/7hOcF9Ya9m07x0QXDZSCjjaqsG2822wXOs+wSV52xx20BUk4oadP2eQgdZteCpn1twjUoA42OUbFCljXFaypAy7zqKgLF8NRkc+CspGxziJaiUFZb2rrXXOIOSWNZV1cyd6zxnaWOOFPAasaOgGKzQ7C3GxQnhmgxEqhyWDbFgy6E+eD4Z4KrMfaoCdLFBQNvoG39FpwPfBreFzEKwiAJqUwWm3Io+s8eBkTrHNhetw0tqyawvYW3VIqYDWu5wlfCcYahrh4YfpoNjck6vRVFuD71bdJTcKBd+iaKoADWjqOuH6nmrYPv42zPmvkzD6hSL8TsX83R78TPrWAQT+Vw24CHun3gPZ02p0/tVcUw+qgrxuIHVSIrRsWQ9d9++6anfYnXB0USmMfWkvnP4wHU+/NN+8iKBszaad+P1pv9STh8/S3ARdDz8H9daNoJyU6JJfnfAplAxZDNP/dXuP9k1/8zPYNeUulJ1Xgc1id9VNb4KgAZsNLWXrp/JzsrV55V0EMcf8rRtc5dsq/ebJoFsxEsimDwmXYnPw+xIuLlnShp9/LRdeE+HQh2+fab7gaYCCssHTLZXMaIA4+3r5+Vwgzr+Ehmi3lrUcHwPWPe+C08x/802ojrrObMHNOrOse44hVIaQ/Lob95DGQDZqPBBaA3+h88E9BGSV48e4srLrrIoNG6F29JiouKpmzKSWsq4R9H5DQVnveukTsRSU9T6Mun1rcBGnmf+J9wzhirWZwbB5MBi3dy8YHCYjNEwdD42z0sFp7XnkLtBmmmsbgaEuSApUFC1PNeDSADtZoKCsSyVRdSNLnAmlQ8bDvP86IXm7TXf34saTXV3FLdvDWrYqIxtBk/oV67nL+EmpWb4THg7IALO6ewJMTiAQ6wOHSfhCx091/TK5/FITWsCu+PACpHznQA+Ak4CyBJy9ua8W6h+1gamz52+ZvbMTCJXBuvy1oD9+GBqmTQDNnu1gKO99xE9+Uw1T//0YxH1xN9z5dAb+lndeO4V8s4TewNjVBfVL8kE2IgXab97jHAtDWSmod2yBhikpLoBWsXgRPNxwFvZnPoB5b59y9WHMS0Ww7K/n4dTqcmipoUfvOJUaQIJi+jRQJMQB4Zj1FRwOgB9+ZQ289uXV0Nkp3KLZVH6D4Q28fwYiwUq2ulSFNAwfvF7gq9s0LUI1QEHZCB2YPtSscYOO4ibUH368VXCvXNay/3xIcNlwF7BWnULaAsuTfUFriqW+DPTZH0DHoeVBq8ObYE3JeaQNJA7AiCMwX0GZynDJEnCWDew6i4KyrEb6xicFZfvGOHrtBQVlvaoFI1tnDYC2WQO5M4QpxVpzk6ExuLbZ1QLD44e4aNQekNYrcOXI8Qh21GXnueqiN1QDgWqAnSxQUDZQTYan/MEhW/C9UJ4nLb+i09wJxg0fgPF4lt+OtWzbgG0g1rIWnQ7vkWLFLs5i0drWAQ8HToWqRc8WNU4ngnHN6+i7z+9gcGSoe9CK1qoLf3sG4p/vtoKd8C+HIG/wJTixvAwqr7d4tTI1mcyw/8AhIJ8k3P/8PlIZVFdWgqneO3deV5sF1o26ikDp5B8chLqcuQjIGm4zpzyIEzAEZY1GALsD6uavQP42/b3ukydeu+J0grGiHDS7t0HD1DT8rVXlzIWuRw/A2GGFW/trYdOYG0D6xVr5Zrx2DHlpH5xQgsUo7jvptS39OFJzjOF3bt7hm65pYmwJAhRzJ1wQrS1dQQLo88e5rGQfLC8SLSvQguN+swX7c6igp2V3oHJp+dBogIKyodFzf6/lledy0emXGD3Ev7gXRn1hD9Q9kNZhq5i28C5jN4Ol+K9gPjqSdxGhGZ0WI+hWxeBF7kMdmncdwLmtPCGDk0+dtZJVpPb0wcCusygoG+pRC259FJQNrn7DKp2Cstzq12YPxwUdsZqNtGD4LBNMBX8Cu7bbC7W6cD16CTfX1UjWXEJbQDxB0kA1IKUG2MkCBWWl1GpoZClK2yD+73fDk6EpIB8/U9JKTZfywZT/e7C3N/qX62EtWz1jIU5e65aIf18rtx9Hp1+dlXXQeZ8cB4sFd8sD/43q3zkIz+q1XdWwbtQ1SP2ngwhQjvlyEcz/9SnYOekO3CquBV0zv4VNg1wO69dvBMIny3LKEmdfXOH8hkpI+uZ+BH+LMm6Ddl02aKYOha67l1xFeoCyAHiypG7OMiBHBDvLKlz5fN44ndBx7bILnG3Mng2dn3c7umsob0ewOef3Z4EcCyUg7dh/2IegLXGMR0MAGnA40FJWMTmNU0in3gLkKO8b/0v8e4AINz44B/p5H0DZx6lw40N+lAmcjQow4T/+IRd++OXcAKXQ4uHSAAVlw6X5/lXv739UiJs34z85KrjjrLUs2ViMlmC5k4dWsnZ179MyUvWh48gqPDVBrGXDFRrzCxlgNtW7gzHF+HGgSIjpNVdl11lP12+EmvgxUXFVTaf0Bf6+ZxSU9aehKE6noCz34JnL7iEo25o1iDtTmFKcXVowrn8fjEXdtAIOQxcop6RAQ9Y0FxdaIM2TJ0xhfgjiJwUihpalGuilAXayQEHZXqqJ+Ig5vzoJhOuzMjULN2wIx6wUwdHRAqaCP4Dx7DLe4lzWsjs2Axgt+L4KxFrWbjTD4xFZ8HTyKiAWsuTYOjidvNvT3zI6HU6ouNoMxbPuQ9YvSyD2iwwXLLESJVQEj043erWC9aUnwo2uWpGDgHjjvJnI8eorv+JxG5DvJAE/CfjbVNEOrRuyQTPtEzA86GlZ6AnKErkOkxlqpi8AWWwadFXw50cmVEFtxw+DcsKnjOXswkywNCh6NNXcZYMLmyph7n930xzM/vkJuLBRRq1ne2iK/4MyKxMUCbFgbe2mGXEvPeL3xQhM7Fh73z1a+L3TAfWpsfhOKV0dPic4d09VIHXBx/8hnppFeOdpCSk1QEFZKbVJZXFpgPDJEl7Z114Ud7qHcLoTa1mVLHjcrFxtFxrvaK8B285fg/nqfKFFeecn/LH67Peh8/Qm3mWClbE2cwn+FtXMyulRhbmiguGSTRndI548sOssCsr2Uk1UR1BQNqqHz3fjKSjrWz9tmQNAO20wWLVq3xnDkGp+eBhpDMyPundFu5DsOxZaj/L3UMzVdNmwJCAXmJnjo1z5aDzVgFANsJMFCsoK1Vx481/dUYXg17n1FdByuAQniapCaY71Gkvmg7Hgj+A0CLAm9LSWnb2YmbhmrxCtqJaS62gtWxWbAIRTloaeGiCWrgRUzB10CRK+XozfB2IRuvgPZ+Hkqiei+VRteh00569kwNhZU0B/46pPQJzQBhDgN+5LeyH5fx+Ay1vlmL9t2zK0kDU8vNGz4QDdnLKEvsAt2LsMUJ0+D+SjJ4FJycNK271sZweod24BZXI8XuQ74/Dym6mq1KFTMJZLd9xX98HmT28AAZVp4K+BtouXGBB8w8ZeheqqdAjI/tf3Agcwu1QaKB+aDHVjR4NVydOKuleLAo8Y/ov12CcCztIQnRqgoGx0jls0tvqn31oHLz+XC8Wb/VDyeOkcsZYlm5sTfyDcOaIXcUGNshwfHVTnXg5jB+iXDwNdQaIkRk5SKEM+IRPntwo33wnK8WMZK9mbV3tVwa6zEJSNGws1UXBVTZ9FHX31GsmeERSU7amPPvVEQVnfw6ldPRmtZdWLe+9C+S4ZmlRiKUssZp3G7mOdLRvW4OLQouxptSOkRapNuxGQrRyRIqQYzUs1wEsD7GSBgrK81BURmQgvZsq3D8Csnz1z7uVw4ASxKmlawO1DK9k1vwPTlXWCZam3P+OWJdaydju2KRBrWXA4oSwmC0oHTARDFX/LScENj6ICHVoznMorB+KMi+VMnfj9w7B53A24d1QRsNWn/upFaJiUhA4rdRfO+F0Ekc0BQo8Q+/d7Edg06BhnTm07Vz3jkPXOJerNUpYdBqtOD1WpM4F8n20+aBLY/J6fluYmaM5fgYBhw/SJYHj6xDMLPjvsTrh3pB6Wv38B4p/bi/oker24WQZWs8NrGRrZUwOKxHioT+s9N/nTf2xDq9KLJd45h3tK8f10cVQOvkvUmcNAv9s/x7VvaeJT3/hyLrz5EqUu8KXB9Rs2uWhOiDNAX4Gks5Qo7p8x8WOhtpahA/OWh9QhNlBQVqzmaDmhGrhyrhZeeS4PfiSSviX++b0Q84Xd0NrYc+NSaDuCmd8qO460BdanwaNa0O/KAv3CAWBT1wezK8JkOxxAuGWJsZSqcC+YFDVoJatI9o5PsOssBGVjx0JNFFxV0ygo6+9LQUFZfxqK4nQKyvoZPJsVtDM+gtbMAX4yhieZcMoSDkbj8bmuBtg7O6BhchI0zp8JQNwQiwiES5Zcuut3RZSmRagGfGuAnSxQUNa3niIpdefEOwggufNi1mRkQ+XwJLBoA7P2M5xcCMYNHwJx9CU4eFjL1s5biWBK9ezFgkWxBeqmZ6K1rKr4HBvV7z6tJjvywy798zkEDwmAmP3OKTiaUwrKMmmcgVi1GlAtzUYgU719MzitDLjKpWzC10ooCggwnPmLE0AcibGhrXg9ArKd106xUb0+fYGyJLNZ1QzysZPRatZhMvUqzyeC0C8QnlnCR6zesx15a7nK6VqMcGzxY8h4/Rj2idCCHFnwCJ2HcZWh8QDK7GxQJsSARdG98XznSgMCsu++Idz7uKdOiZXs48GpcPWDDDBcLsIjrOFYnF888BCtZGP/u9upq2db+/szAVCzF+agQ0DCOZ2aNgn8AbOeOiOAKyuDpJHygYCwnvIpKOupEfocTA28/tJqdPglK+/+feRb3/45D/G3aPKrkWkt67R0gbXoj2A5NopvlwTnM949ge98w1VpHdkKboiXAjaDAWTxk6ByWDLUJ4xDUFZ/4ayXnB70BVEAyBLQmIKyXoeyRyQFZXuoo289UFDW/3hq5w4GTcYQ0F/+zH/mMOQwXduENAbWmpuu2jtuXcdFYVvJMVcc3xtzbSOCGtTBF1+N0XxCNUBBWaEaC29+AoYRUI54mHcPmtOX8F2hyC90jxZ0b2+tB9Oad8F0e6egcu6Z1ds3YjtadmzqaS1r9A3yuctg762trfjuLE/KhkdDZoBN38Um9flPwhH78GQDrB1xFcZ9ZR8Dfv5nCZxaXQ7EiZdkwemE9nOnQJn2KSgzxoOh3LcTDcLNumPCbfwOEuCSOPVyp/rVn9iNgKz+dLHPJvoDZUlhwitLHH/VzV8helOTyGk7cRRPrDTOSgdTdZXPdpHE+8eVLm5c0sfD2RSc5VJaZ2kp/o82rl7tyvLW9zfAK8/nQuVjrStO7M3FkYvwfVK+5QQ4zQbQLR4MHQeXihUnutxHb5KjyHlQfrPboatoYX2wIAvC3n/w0NU7cu8OsLoSOG5IfncrWZKNALIUlOVQGI2OeA0smXEZN3Pe/n5vihc+jSeUQIRbVqeOPGtZy40lYNv5NjhaZXy6IjiPvb0ZdDmDQF+YQVyBCi4figLECEI2KgVkw5NAkeDdSpa0g11nPV23EapjxkXFJZ86m9IX+PkSUVDWj4KiOZmCsv5Hj4CxBJTVzh3iP3M4ctitYNw+EgybBwPYuvlfm/KWgjJ1DFjVLYJaJRtJXvbJULdAPC+joApp5n6nAXayQC1lo2PoiSOlhK8VQ1dbb2BONiIZ5OPSRXfEeGQ68+6y95bNW6iHtWzdkjX4DquesZC3CDaj9sh+BHw6y6vg4d/Soa4g8qwl2LZK9Vl1R4P8rCzfado/H4I9GXeB8KBKHawtTaBaNAd13LJ5LTg8+F0967u2qxrG/5+D6ERs09gbvb6DnZfI7/PH0H7I/8YAH1CW1N9+4y5+fxrWbPFsjqBnY+VTUKanIjjbdpLfpi5xjsZaAyd9cz8cmk/BWW9Kr08eC/WpiZh0eNcTBCGG/Gavt6yC4lgr2SvvT3WV6zpbCPoFH4JdF1rfAq+/mAs/+QqlLnANhMcNoRtISZvooh0gyd7iPIq5Hk0mMwK4npa1BJD1jHMVEnFDLWVFKI0WCUgDrzyfh5tUNptwMTsn3sUN2alvdPsrES5F+hIEiLXteAssN5dLL5xIdDpAv2kibsLZ9Zrg1CGRVGXqpyAbkYTzFMNT7zRb7DqLgrISKT1CxFBQNkIGIhjNoKAsP622zh4A2hmD+GUOQy5rwyO0ljVdynfVbte1g3JCAjQtEeadkuy+kSPJNFANBEsD7GSBgrLB0rB0cq/trsYJ+tm13h3NEG+whOPK0iwcsLAqmfeWufR4wA1mrWXJJwnE0p9sLll0woDFhhmT20PChwAAIABJREFUoGnFIpRRu7oIgVmjojng9kWaAE1dJxyc+9B1dH7sP+yDguFXgYCC7laokrXb6QRycoNsFDZMSYGuR/d9iibW2Qt+cwa/ezN/chwIcOwZCFUBArJ7CzyTvD7zBWVJYc3xM/j9aS464lUW30ibTgdNzygamlYvB760CE8uqGDhb5n+J35jP44Vy53Lt+6+nK9h8WIE9o1yOfz46wXwygt5oG4WQX/ioaSLw7utZNkk4vRFt2ggdJ5Yy0YF/XNf7iUEmhN/FzgdQ9AbG6YKiJUroSsgFrNsIPfTZ2b2AGrZNM9PLgCXgLLufLNCLG896yDPFJT1phUaF0wNfPybPfj++OgdcY5YCV/7qC/sjiBrWSdSFliK/gyEwiAYoeviLqQtMD7wTgcQjDrFyLRpm0GRGAuEW53McWUjU8Gi6j1HZddZT9dtgqpRn0bFJcuglrL+vhMUlPWnoShOp6Asv8HT5MTj4k9T0G09wa9k6HIZT+cgv6xd3X1UUn+V8VTcfpabZ8+9hdUTZjEv+Zg092h6TzUgqQbYyQIFZSVVq+TCWOde0944xgnU6Z5ZFSpWbhBcv2H3WLTyJxYKAQcPa9n6VYwDsOr0ebxFEz5QwgWqv3YJyxDqgkcfTQfZXHHHAHlXHKKMBGy9/5kCcn5/FsHO2C/uQeDvUqE8YGddvrrgMBpcwGTzujywd3KDZ4SqYNfkOwxVwTf3w5mCp16/e8bSW/ibTJx7ec3gpUFCQFlSXLW1CH8PW8/39mzsRTx3lNMJrYeLQZkUB4TOwNKk4s7rkVJ1W+Mar4SvF8OBOQ+BgrMABIwl/6t5HyxB8CF1WOAbO6yVLOGS9QwEkNUtGgQEoA1FeP+1fKQuqC7l/10JRbsiqQ4uUJYAtSTNXyDWsJ6AK7GevXHzlgvUZa1pPfOxsk0mE9TV1fm8FAoFHsnt6goOmMS2hX5SDbAaIBayhM6FWMyKCetjr+EcYfbPAn+viqnfs4y1/ADj3Et+0jNJkmdrQyWehtAXZUsiL5hCFJOS8LdPW3IYWs9fQRoDWUwaOAyGHtWy6ywKyvZQS9Q/UFA26oeQuwMUlOXWjXuKXaMC7bTB0JoVmQ6/SFudpg4wbvwbEKDDnQtHtXwRKNPGgbXVP9caWskOSwZQ6927T++pBiTVADtZoKCspGqVXNjuKcwxNgIM+Qpkp14+epKvLL3SLJUX0brfIg8Q8HKT3LJjM4Jo6u0MQEyoFYjVv72125LKLXuvW82OLaBIGdPDOVPj3tPo9Ev/uHuzq1fBCI8wdVqhZOUTSH/lKC60CBXF9vG3oaUm+ACTpVkFjbOmQMOkJOi679tx5NWdVTD+uwxVwYb4672oClg1m+RloJk+DLTr5/EGZElZoaAsAXsVSwtANiIFOp9UstWL/jSUPUIrYeX4sX514VlJzT0tLP3LeRw/wjlLLNeDYtHsWXEEP9ckJcB/f2MZEMc2FkvgGzsXhy/A9wfhkvUM9vYWtKLqOr/DMykoz6+9kAc//xqlLvClXC5Qlo+lLAu28qEpIPV48s6y7TIajSCTyXxetbW1FJRlFUY/Q6aB//7BJgRlCcesmBDzxT0Q84XdYOy0iykuWRmnWQ/WPe+C+cSnksnsIchmAV1ePOhWjACnKbI3ToiVLHFyqUyKdXWhZd8xxpiK0Ii58VWw6ywKyrpU1SduKCjbJ4bReycoKOtdL95iW7MGgmbqEDDVBr448yZfijhz+WkEOsx3u4+sEDCWgLJNy33zK2r3H0WPjpXDKHWBFGNBZXBrgJ0sUFCWW0fhTmmS69FakYBj/kLd3OVIYWCuV/rLyqQ7HWghayxK5pefby4Pa9mGtVtxslo1KcuvBKfNBsqJidCysZsChi30OHYuPElewj5GzScZw20pt2HcVxmnXVN/eAzO5D8NqlWsu3IICKmc8Ck0Zk4F4kCNKzQ8aYe5b51EwJGLqoAta21WgmbWKNCumgpgs7LRvD4Fg7Jke9Nqg5qp2SAfOwUsav8bm/4aQmiFVDlz0dKl9ehBf9l7pVdeb4Hpb36GuiKfVbeF04b0EhqlEdN+vZgBHRIC5312Wcm6ccl6qoU4+9It/bgHd79nHimeC+edxn5N/iA0ALAUbQ6HDG/0A97ivLXNm5Mwb/lIHF+ZXOUpfQGXZmh8MDUgK2+FV57Lhde+3O0QUUh9eUMu4u9M1lslQopJntd8eS7Ydv4aHHqF5LKJwM5jq3HDzVLt37o+KA0QIJRQP5ETIsRK1j005hfiXFeeOsMVza6zytduBvnIhKi4KtMzqaMv1wh6v6GgrHe99IlYCsryH0bNlmyGwiB7BP9CYchpODgZjAV/Aru+m2NGd+kcvsh90RgQbprKYclAwFkaqAaCqQF2skBB2WBqOTDZ2e+c4nTu5Sm542EZTgjrcvhN/s0PD+Pmka3pqaeogJ9bdm3BtjQXrkNZxHEh2WiyqHw7POy4dxvfkZ2PHvRqg+b8HbSWbTl5o1daJEY8LGmAJX86hwsqwg234oML8PhsY0ibqjt9Ao/rq5YvBIfJuxfnrnYLbEm4AaSNxPqTi6qAbbitXQuaeeNAsygFHAZuCgQ2v+enGFCWyLC2tkHVpxlQPWUuOIwmT7HCnx12aM5fid+3li3rBFn7ksqIheyFjTJI/t8HcIzXjrgKumbvOhbeuOgooVLo4dUX8uCD7y2ChpycgBt9afhCfG94s5JlhdvU9Yy17LUDbFRQPv/0g3x45bk8UNVwb2QEpeIoE8pau7pTFZB7LqoB9+4JAVq9WeS6y/J3T0FZfxqi6cHSwJuEb/u5PLhyrlZUFWgt+3d7wG4Jj7WsXV3GOPe623uzXFSHPAqZZXfxnR5KvnCPJvB+tGk0aCWrSIrzWqY2ayn+htVmMgYE7DqLgrJe1RW1kRSUjdqh899wCsr615F7Du3MQdA6e6B7VMTdEzCWgLIEnHUPTasW49FcS3OTezRzr9Y/s5KV2HKtd000hmoA2MkCBWUj88two6gGwZ7Ta/iDprLYNJDFTfDfIbsFjJsGguHYLP95xeRwt5a1WqFp7yGcqMpTfdfXUrAKj5ZznQkvT10Gj0dkgdMiwp2xmH4ILEP4f0/llUPGa8dw7JK+uR+5WbXKEB/Hc9ihZct6BBzVOwu9Ao4EVCQALAFiCSBLgFkC0PoKDpMBtIvHg3rOGLC1+gbYueSIBWWJPIOsGuQxaVC3MNdrn7jq5Ix3OkG9dSPqifw2O8xmzqxcCUa9FWko4p/bi9bQx5eWgd3m5Mrep+I//NVutCYt+WgiKBJHB9Q3fU0jlH2cClfen+ZXjn53FuhWjgRwBAekcNidyAX5q29R6gK/gwEAhH6AdfbFWr+6UxIQQJU47XIHbolcLlDWk2eWlUmcf4kNFJQVqzlaLlANlByoRGvZn36L2aQWKm/5XxnKnAW/PSO0aOD5nXYwH/4ELMXvAzh8zw/EVEb4wfXLh4E+fxw4BZ66EVNfoGUU6akIyrYe2M0piljKEgMrYjnLrrOeFGwG2YjEqLgq0rOopSzn6DIJFJT1o6BoTqagrLDR084fitayugOh88IrrIVMbtOd3QyNwdNzruJ2vQ6PkqoWZPZaVMpiJ+KLXJbSffTBVZDeUA1IrAF2skBBWYkVK4E4Au6lfe8Q+HLu5a2aukV5+A4xVPrmXjXd2Mo4JGwPnuVmL2vZUanYNlONd3oFR1cXKJNHg7Zop7euYRzhlH34wRRQ7ujNN8lZKAQJhBeW8MN++r+KEYyd8ePP4PyGSrCaA+fYFNp8e2cHczQ/KQ70Vy56LU6O27PH7wllAaEu8BfIgkm7eiaoZ4wEa2Odv+yc6YGAskRo25Vb+D1q2iWdpaT2wF4EZhvnzQSbjh/3sWcHGyt06LAt5u/2wJSXj0LZ+b7tHOrR3Wa0/nrn5c2gys9H/elv3/ZUC+/ni8OycVx9WcmywqzKCrSsMn5+mo2S9DM//TiCzbOGdlNQSVpBHxRGAFMCvJLLHZAlXSXP3uK5rF+bmppdZbhkClUhBWWFaozml1ID5ETBy8/nQnu78FMedjvgvIL8tpD7UAZL6U60krXVS+d3wL39+l1ZoF84AGxN1e7REXlPrGQVhEs2sZtL1mtDbTaQjUvH37O60xcQ4KSgrFdNRW0kBWWjduj8N5yCsv515J7DXHYPNBlDoDVrkHt05N07HWDYEQuGTQPBaen2yKi/fgVf6m0nelIUyIYloQfHyOsIbZEYDfhapHDJ47Io8cxPZHM5vfDMy/VMQVkuzYQ/fu+0z3ES7s+5l2dLCRhL3iO181Z4JrmenUYdGNf+BYxnl7nignJDrGXHJEFVXCKA1Qoth07gJFWeMt1rdboLZ/C9aKr3fcSvKnsLPPpoOljbgu8gy2tD3SJVlTpY/fFliP3iHoj70l5YNfAiPLno5RSEW5lg3loaG6Bh2gTkLydcsp6BHK8vGH4Vv1vEmde1XTwXQk4ntG5aCJppn4CpIjDOt0BBWdKnpu3F+F0iAK1Uof3sSfz+NcyczMshJ1e9947Uw+R/O4I6XvHhBdDUC6d44JIdSfH/9//bjKAsAWctLS2M45NscV6zXVayH0zl3UX9liloXeXuUJV3YT8Zf/e91fDyc7mgU4fYwt1Pu2iyeA1QUFa87mjJwDWQOOQIbvT8+afbRAlb+LvT+Juy5C/dRj6iBAko5DRowLr7/4H5bM8TnwJE+MxqvHsCN9cMV/b5zOcrkV0zkc0bf5Qp7OYQu9HDfrqvpYj1Pnlm09w3mJTpaX6tZNm2OgwGPLVWsTiPgrKsUvrQJwVl+9BgenaFgrKeGvH/3Jr5N9BM/wjAKv1xCv+1889hU5WjRZrxdE++teY1K0CZMhosjYzVWN2CFbjIrBgxnr9wmjNiNUB+yNkJAnv0zv3H3bPhLC8bOxHwPObnnp+dhLhPJNzT+d5TUJavpkKbj3XutT72mqiKZfGTQDaK+z1iPL8KQVmnIfhciS27GccHLZsLsC/yUeORosWbtaxq8Tx0RuWv0yaVBh4OyICalXv8ZQ1aOoKxQxgwNv75Itg05kbYwbeuh58jGEtAWQLOugdynP5oTimM+8o+GP1CEezJuAvmLv4UEG3F6/F0StfnV9zFirqXApQl9BaEwoBQGRirxVvtenZAf/MacvA2TJ8IVo04egYi02axw5EFj2DsP+yDMV8ugpKVT7gYOTybEBXPh3c9QYBhwNvd/4OKCSmgSIwX1X4hVrJsBaanN3FBb3ri3wkiW4bPp8VkQ+qC//ttSl3AR1/RkoeCstEyUn23na88nwcvP5cnqoOET5ZYypIrVMF8fhpYd/0PODqkP/Vh0zaCLmcQ6AszCEO7qC550p8QYxV23cVXIFvGYrGgdb77uooFaMmay97ezljJJvmxknWr2NKshYrFq7tB2eGM4ZUswj8rpsyh9AVu4+jtloKy3rTSR+IoKCt8INUrU3GRqF6WILxwiEuYLhcgjYG17o6rZntnJzRMSoLGuTOQF4049yIcNOba4B0ndlVOb4KqARaEdQdWyT2fyQILzrqXdW8sK3v/gUOQkjYROdnc04XcU1BWiLZCl5d17qVrEec0qH75OnyX6G5+3qvR9vZGMBX8AUzXN/dKC0qE09HDWlZz6jy2TZ7Q0yLO2trq9fQAV5vq1x2Ahx+mg6EmtO9LAsbmDb6ElrEE3Nw87ga0NoTfmg7BxMRYILQ4hL7APZBj9OQ4PVnMLf3LeSBUC0JCx6Vj+FvbcWa/kGKceSUBZQHQ2Vf1pCyQJ05FJ2CcFQpM6HpwD5SpY6Bh6niwtgRm9Uy4hLPfYSycCE2Epq5vWM3+mDiueT4PNOruE0BNGzfg/3D75cuCNO6ykuXBJespWLc2CfQb0jyjA3peknAI+7Zw9MGA5NDCkaUBCspG1nj0x9b8z6tb8N2yZKa4zc05b5Xg7/iqwZeCrj6b4hrj3OvhVunrcjpAty4FdIsHg6NDvHEAAVTJxQayPpo+M5P3uoiss9xBWFaO+ydbR8ezkzS+uGTdy5H7xi17oCKHgrKeeukLzxSU7QujyNEHCspyKMZXtNUC2hkfAbGYjfTgJE51tg0Hw+bBPWgMOu4ynsYb1uSDbFgyVA6nDr4ifSz5tM9z95aU8RbnTZY/UJa1wH1aUUlBWW8KjPK4m/sY516nVpeL7omlWc1QGGQt7SXDeHwOGDd8CE6LOMC3l0AeEeo9WxGIbd60BnPLYicgTYtJXuMqrT2yHwEdvnyeNn0XPBoyAyqmrnbJCOZNQ3k75H3EgrF7oTDpJrQ3hU6HvvrGArJNyxYAuDnKIBbXy95jHIRM+sFheHRaOIBtkpWCZupQaNvOTYfhq23e0qQCZYlsc1MLyEdPgpqp2eC08rf89dYu9zhj5VNQjh8LyikpYFH1tDp2z8f3njhUI1bKxHJWiOM+vvJDmW9h+gUEFpI//qxHtdbWNlAkxIJyTlaPeH8PF4cyXLKyPcKP5RofnEVrWUtNb6oOf/Vypb/zndVoKdvR3g04c+Wl8dGjAQrKRs9Y9dWWNjd0osOv178sbt5i7LRDzBf2QMwXg2wt67CApfivYDk0GMApPYlt57nt+N42Pxa2gef+vWDXSu4nEL3FuZdxv+eblwVl9Z8dBkVSnLsIn/dNu/aDfHiym6XsFpcjb2KEFclXxeS51FLW5+gCUFDWj4KiOZmCsuJGr3XOR8gt23n7gjgBISxlVz1Ba1lPHseWjfkgJx4ZhyVB/YrIdlwWQnVFdVVk95X1RMx2hO8OLjtR8GYp6w7sut+zdbh/EuddLS0tPi+VSoU/vNTRl7vmwncv1rmXtxbLx04G2cjUHkm2pqeM48H70jlI6lEB14OHtWzblZuMteyYbp6yhhmToGn5Ii4JXuNV+8+h06+222Ve06WIdAdjyTH0bam3IgaMJf3zBsiaOq2wa/IdpCkgIOCRhaV4nF6oPqwtDaCZFQPa3OngtEkHeEoJypI+dTx8ArIRKaDM67aYEdpXb/nNdTXQMDkJGtJTAraYJfKJlSxrNUs+iRVttAWLxQGvv7QaL3LvGeonpoEigT+FAWsle1mElSzWTSyuVo6Ejl2Znk0R9UyA2Feez4Xf/B9xR4xFVUoLhUQDFJQNiZppJX408KOvFSAX95VzvrnzucTM+PExtJYtTLrBlSXgeMud1Yxzr6YHAcvyFGBrlIE++wPo2L/YM0nQM3tq0HOtREBUd6CWS6i/NRQpx67HPjv2GWg35oNm15Ye4mw2m9c1VvW5S1C+ZhNz7Spm6Avyt0DlJ8lRcVVMoqBsj4H28kBBWS9K6StRFJQVN5KdJTvxWKV27hBxAkJcyngxj6ExUHb/0Dna2xCQJRwzTqs1xC2i1QVDA1ygLAFqPScQnvWzkwDPfGw8O9nwN6HQ6XQ4ESgtLeX8rKqqoqCs5wCE8XlPxj2cbAt17uWtycq8jQh8tl3unrgbi5LBWDgUwNkbTPEmQ8o4TdF2xlp2A2MhIoubCJXDkkB3+z4Y5ZVoJau7ImxzzWG1QVn8fHiSuBjAIY6TjKuPBIzNHcRYxo55qQh2TLgNxElWJIWOa5dRb6yFrNMJcHGzDFK+cwC/R8Shl9g2OwydoFmQhBe5lzJIDcqStqmPnMTvV+tZ8ZY33vpoVtaDMu1TdJ5GKDakCKfyyoF8p8Z9dR9c2CiTQmTIZCR+xDir4Tp+27R1G34n286c4dWmCx/Px3ETYyXLVmC4cRitrmxNVWyU6M/smH1oBbwi9YhoGbRgZGqAgrKROS79rVV7NjxAJ4I/+/Y6UV1vbTSitWzsl4JjLetorwHbzl+D+ao4p42+OkVOaOny4kG3Kgac5sBOIvgCZd0pDbjaw546JGsrrkDyEHqDqrIyUE2f1Cub0WjkXF+xa6/H125gnicUlO2lv2iOoKBsNI+en7ZTUNaPgnwkt80eANqZg3zkiKAk2//P3neAt3Fc+TvFJXF67nK5u3/a2U73XXyX3DndceI4TmxLlmXZaqQ6u0RJVC+URHVREqneLVFikUSrV0uiGtUbVSkWsYEdLABB9PL+33urBQFwAewCuyRAzXwfPuzOzrx582axmPntm98zEShCwIiV+yMoHTWeFiUlg6KgaeeOEFKWqRKoBbyBsmK4jnjw1ROUxcmBq/etP1BWjO6MU1aMlbqmDB/ca/0QeYLWmGvr6WVP2VTO+9RceoFeCJkfnuqaDnm28thbtiQyGmwGPYGxuDugeGgiqHdsgaq44WA3Gj1r+T1Xn75O3rINhwMLiubZAIKxy987TaAmepnuGH8N2pq8T9o963fVuScgW3qlEab94hDpjd94HmhCr1j0jkUvWfSWlTspAcqijpULVlLgL2N5lawqGx4+oKCcNdOTwKbVyCK74VEbIMcs8vzOe+14SHlfe+tgbZWWAMtffNP7jh57ezuokMJg+jRvYpz5LYXl8ODDODj7ziRnXkAHVhNoFveDtt3uwVQDkfWbf0onT1kM9sVSz7IAA2V71niGc29efDYdXngmDYwBPmfG/mAf/XccSr0vuxnMB4eCJfsNcJi0sstu27uMo5upDF5vX6As77zirQP8OstXOVxjISCLZYS8ZIVkq4+cImeDogExTnqCppoaDpRduRkefhgbFp/CROYpKzS+rnkMlHW1Rg87ZqBs4APaNDeCvGXVa6cELqQLa1pUtzgag1PLqVUK8NU/Bho3rCYPE+Oj4L09urA7rCkBCwgBpkJ5AlWd22U8QVl88/te3w8FP74mFkJt8HkMlOUt0f3ffHCv9hazbMoUj0yibd3oGavPiAR95gjZZAciSL17B+ctu5aLal48fBxH2xITBQ3rAuNYQz0Kxy2HuwNngs0QOHiK/LDoWYogGXowZk28DnKORSD28laHB2RrU+eDpqbNqXf8tz+BM1tKAD1mg0nIH4s8ssgnq0RSCpS1G4zwaMwMKI2fCjZdcF44nv1uv3kNVDFDoHrmJEDgUY6E43Rk2X1AWoyor+6Csx+XyCFWMRnv/l8mgbLH9/n27q0cnwiV0UMB7L498k9/MDtoL1m+s7pTGbQl1tYceJTwlvo28mD783cCfxbx+rDv0LMAA2VDb0yeVI0i/rabnqXv/mp7QCaoLdRCxFOZMPS57IDqe6tkKdxDtAWW4kPeigScbyq8RIBs+6fuFACBChQCVoXyhOR7A3T5svx1DM7cfPkSrc35a96+W0+dp9gwuOu1dMx0+m8rnZAC/DrrPgNlvZkuLPMZKBuWwyZOaQbKirOTUCmbuhbUE/tCy8zeQpdDMs9wchkBs7UrVxAoUTQwjrzEqicnQvXU8YzGICRHTbxS/MTAFVjFY/yDx2u+klBdofJiQV6hunweP1lgnLK8Rbrn+0LWIwIDMRiQnEm1ZitNDNWZPG2KfMFwAtWzbGQM8N6y+tuF5FVQMigadLeuByoSdEUV5C2r2uoeeEiMQORfzZl8nYCxoU9nw9a4K6Br9v0bFSNXqTI8IFu9aD7snX2LAkcNezYHMpOugak9eO++tlN76CWn7ox0W4rts1KgLLZvrKohb9mKFO6lp1idxJRru3COFme1c2eA3STfPYJeszN++Tiqdu/TgPdkqKXb1+qJB/EPL27yq1pDZibZSX3A+z3U4SU72a88MQXshjbQzH8PdAe5YIJi6niWmdqPA51XTzjseYmd9wALMFC2BwxiD+rCi89w3rKBdinh27kEzJ6SiQLHYWwFS9afwXwkKlCVvNaz6VppN4NmbRyAXb7AYeiQ4kpVgGCqmB2JvtZPPCCLOxMbCh9AdWIUNGzyvjsEO91y7gpw3rExULPmYzouHhALNp3OCcreW7kFCvvFhcXnAfOU9Xov8xcYKMtbogd+M1A2uEFFQBaBWQRowyI9pjEoHhhNWxy0R7ktxRTxOToS1Nu3hEU3mJLeLYCTBZ5ugP+Td/VoxWPcGoOTA9fEQFlXa/T8YwzuFfetXJj2yuGgPRw9rWVuaqHnS834QaDfF+QWYU/hAZ437c0moLhu9TKSUBwZxwHHR6VHXndVoXTeFih4byKYGltcs70eO+wOOLn2oZN/dVmv04DgWCgnHpD9dMhyGPf9vQTkL30nDxrK5NHb+OAmeci2ZCrrKagkKIvj13rmIt1TDbnye/u0HNrLAbOp8/x6gkq5l/B+zE0ugMjPZcP4F/ZDRYE8/LVSdPBV9nc/2ESgLIKz/pJNr4eqqCFQNdU74JrXdxaNUdm+8/7Eib6uO7oOtPN6g00n7hngKfj/vpkGLz2TBnZbkK7mnoLZeUhYgIGyITEMTInHFvjNdzeQt6w3fm5/hio8Ww+Dn8qCUV/a6a+oqOumMzPBuuP3YNeqRJWXUkizdRJo8NkcxE4GofZw/YTrKN4BBgFaV+cXzMcdhvx1XoY3UJZffwmtzfi6nt8YFwGpuHDXa3X6ZihPXkL/bfiNiXd+YaCsp+XC+5yBsuE9fj61Z6CsT/P4vaheN40L+DVvsN+yoVLAcu8SeYnhVgfXpM7kAmXo7yuzddS1LXasrAVcKQdcAVlslb/GTxb4yYUnRYFnPV5jb5MK/rqYb36ywDxlxVhLmTI7xl0jcE0pEKYsOgZKI0eBrckd/FemN+KkOr1lm5ugKmYk4DOwJGK0uMpeShlr1VDQewKUpfrfDnjvVC1M+BEXwRjB8KILDV6khk42ArK3PoqFmf+xme6XCT88ANgPuZKlrgoapw6C5lXTZQUbhfRTGpTFNqvRS3xgHOjuPBBSIai8xozNBMz6854JpJGH+fX0omDYczkhEwRs7477BB70+Z34rbJVE8YTMAvWzt7b6pvFxCV75l3voG0gtrNp1ATKBrI9FqkLXnw6Hd78/qpAmmZ1wsACDJQNg0F6glQsftBMz5wffzFw7/6or+8mYPbG4eCAVGvdLaItMF0PLPiYr2HT5+cSbYH+ygFfxQK+xgOvuHYOf1d1AAAgAElEQVRyBWRRIK6fMN9zHYV1eKcZ14ZdZbmuxbyBtLqCO1A0IJZAWVXqWvKMRQ9Z9JoFG+cRzK+zGCjraunwP2agbPiPodceMFDWq2lEX8BgXxj0K1xSUcQYeptWM7o/2Go7SM8dFgtRGKgmJAQU+CZc+s/07H4L8JMFBsp2z1hgUCncMr9x+EVFFHAYtaCe9T49ZxoPB+eJKqeCzQd2k06qmdMI3CoeOY7OG/YEt224csMeKHg3CfRlNYLq1hRqYOFfTxKoOe4H+wBpI8IhNZ69DGt+vgCGfDYTor++G46mPZDVm89uNIB6fhyoU6LAbpCHL9WXXbsClHVYrPAoaTaUjEwCa6s8wbmcfXI4oGHDKrp3m/ftdmbLdYD0GYve5O7TFf3OAnrTd2d6+Wur4aVn00HdKJ6nt3FXLtmncc+eTqrnvZ9MXkVyesnyjWAgGc3CvpIje4/vtYOA5y2zj/Oi2HcPswADZXvYgPaA7vzkSyvhhafToeByYC9YEYxFb9mYbwTxP+SwgXlPXzDn9gJwyPtfY60voxdl2u3Tw2u0rFZQRUfQx5viuvtFjzlkY6FqPgesI4csgrKVqR3gNr/OQlD2wQfxYfG5P2Y2BSdra5NnF5Y3G4ZzPgNlw3n0/OjOQFk/BhJxuWnWBxwX3hH/nlIixClehCKPD4gB/aa+YNg6ABy2jgA/GOwLg4o0bPTNY6O4kqyBHm0BfrLAQNnuGebk/ztKAX6UCihlyEsD/aq3aOJYljS7ezrppdWyqFhA+hbk0TZUqDhvg8HxXkqLy7a1G+DOR9Pg4UT37fdtaiNsHHERhnw+m0DNw6n3wWqWd/EhTkNppXAb9aGZ5yD6ua0Q+dlM2DwyH9pbO/4npEnzUtrhgOb1KdA4ZSBYasq9FJI3uytAWdTY3KCGkuHjoHzaQgCb76BTkntot0PdsoUEPGrPn5ZcXUwFDAKGfMHo1a261yqmiuxlUsbnEVgZ31+il5PVylEYTJrgplOHl+xUt3y5TnB7rDblHdCfk7al95dfS4OXnuUCEMqlC5MTWhZgoGxojQfTBmDdgssEyv7q3zYEbI6RX9pJwGzZ9aaAZJhvbiAvWWvN1YDqe6vksFpAu3IEaJf0B+T8DqdUM3MS/bfXrVgqqLaxpIzAV1zHV8zmqLhsGg29bETPWdfEr7MYKOtqlfA/ZqBs+I+h1x4wUNaraURf0F3JA/WED6BpVh/RdbqrYOXSNfRAfzggDiwVVynol/Fcx5s11Kvpkxz6U9DdkPePsrv6zNoNPQvwkwUGynb92OTv4IJ7Ia+pEsmmqQXj6jfAmL8RSmImAwYT9BcNXQk9vMlU78rkPAomT6QipXFT6Lwuu7NnnTcZQvl1e09T0K/mi3fAYrLB3pTbMPLLOwnc2jb6Cug1MoOaQkrIkHf7eA0k/cce8uqd+d31UHVN2Ps32KY0R7LoZabh1oVgRYmu31WgLCrUdvMud19t2yVaP7EFcVdL7bwZ9AJVf0+ZIHrlN5sBvbqRzuDctlKxqslSTqczww+/sAJ+9MUVYDZLB7WrJk8kYBY5ZvmU12cmLVyrTlzjs2T/1uakgDa1PyAoICapShppG/E/XlotpjgrE6YWYKBsmA5cD1f7hWfS6cWXANOLqJ5joK+IpzIh4d8+EVXetRDyxyKPrOnMDNdsWY51h1YTbYGpJPAgrrIoIlUIvVCMhKroSMGa5EQwMJbmFRXTFzrLlMRPo7yaLTnOPDzg11l3V3wM9/smhMXn3ug5zFPWbRQ7nzBQtrNNekwOA2XlGcrmGb1BPakvgCW0F95FH3GcM7pbHG2B4fgCMK76C9gaijoMYbdBzZxpoBobDdaW0Ar60aEkOwpnC/CTBQbKdu0ougb3Uqplw8EZYNjQGxwWA9Ru20mTxYa9R5RqTrJcDJhUOjgKSgZFg0OvA3N9PectOyhOsiy3CnY73B85D258NAvG/HsugZqrPjoH6gqdW7FQPakr0cLit06R3olf3wzHe80Ei7pREXUNd68SIKvZ27WBJbsSlEXD1T2+/9sK7sluR3t7O9TMmACq0SPBXFstu3wUaGq3wsoPz9I9sX7ohS6jMxjeay+BBctn5QfUr6b9+zgKg52c12rd+dvEJXv6XWW8ZHklactsytugv3KQz/L5nfC3bdTPrMVcwFWfhdnFsLUAA2XDduh6tOLv/z6Hnj/9/pgVcD9xRwUCs7WFWkkyzEeiwJL1Z3AY5d2JgUCsNuVt0B0Ov92eNSnTOS/ZZYs62dJc20BzaaQoKJ+c4ryOQC3tfhXY7cWvsxgo6zRXjzhgoGyPGEbhTjBQVtguUnPVqXG0yFQvjpJatcvKm8pr6KFe1L8jwJfDrOdoDDIiAewd22otDXWgShgBdUvmdpl+rKEnxwL8ZIGBsl075hljrhLAolRwL1v9Q/K+N93kPCesej0Bno/GJndtR320VjNjIqgmjec8C5YuoJIlicl0rkrf5KOm70s1DzWw8fUM8pbd+of1UHpF7btCiFw1aC2wLeEKcQyP+souyH5zKVTGjQSTqlIRDa2NtVxgr5XTARxdG22+q0FZpC4om5hC/LIWjbRFqxjjW5qboXrSGKieOg7seuU4eU9vKobhX8yBiT85AHifK5lqq7QEFPzim0EsqnkKg4njSdXTvafDw49iQUkvWd4mbRlTQZM2BMDh38P3v7+yHH70HKMu4G3XU78ZKNtTRza8+4Uesi88k0bP20B7cij1Ps0px724T7QIS8kRoi2wFEr3sPXViE3XSpQFSF0gdreCL3ldes2Hl6y5Xg3FA+JojlruQQdWMmoC5asPdOYk59dZDJTt0pFUvDEGyipu4u5rgIGyMtneYoamye9Dy4zQDfhVFDGaHt4Vc925apw0BhfcAQnNmZP01q7l2CGZjMTEMAtwFuAnCwyU7bo7AoN7RX4uGzaPuqRYo/rsaOKpdgUkShOmEjArFA1dMUW8CDaWl9EzTZN3Asrj4qFkcDTYWlvAGyeXFzFu2RaTHbInXSeagth/yoUrEYuJXxZ5ZkM5OewOOL6yEFBnvC82DrsApSmLuS3x9+8oojoG9mpaOJoL7NXe9VxvXQ7KordpXSMUDxkDFXPc/3flMrC5phpU8SOgLnW+ojQhdcVamPjjAzDi+Z1w40CVXOp3kvOP/8kgrsPj+4o7XZOSUTV1MqiiIqH25FUCZE/3mialesBlzY9ukaeW4XaeTxmP7tRSP3v9JAjw2WcL7GKoWICBsqEyEkwPTwv86l/X03MIOWYDTciZH/FUFmga/c95HJZ2sGS/AeaDQwNtzms9zdZJFNwLdyyEW1KlzKC5afXieW6q09x0IAfIlsa77/TQ3yuE4gExUBI52q0Of8KvswiUfX803A+Dz72EFEZfwA+gl28GynoxTE/IZqCsfKPYnPw+ccu2nRO3dU2+lsVJKu4fS5xqQqUNR1M4GgO1+59ZXfoSUMUNA1z4scQsIJcF+MkCA2Xlsqh/ORjcK+abuaBUcC9z8VnykjUXuQcfqsv8hF4G1e/a719JhUs05WwHVewwwK3fmrOfkl41i7ndAI8mz6Pz8oVcNFsxqtw6rILE7+6FyM9mwcbhF8m2+rIaKHg3CSo3BMdRK6b9QMvcO1VLAFvEZ7Jgzu+OQ9WdFmjYsIoWBW0XzgUq1m89DOylnjygywJ7eSrUHaAs6tBy5iLdW437jnqqJMu57tplGjv1jo9lkedNiMVog+Xvnab7HTmT5U5Xz1UTx+pffhp8P5oPHyGb3OyXSKAsUhh0VdKuTwDNat+7pqJf/5g81Pas7jpO5a7qP2vH3QIMlHW3BzsLHQsUXOZeDv30y6sCVmpLzEXylp3+in8HHvP5uWDd/luwayoCbk+oYnt+Lr0M0+fvFroc8nlV0RGAH9dkxgBejwHZ4pHcrg/X6yXDE4m6oOXcFdds5zG/zmKgrNMkPeKAgbI9YhiFO8FAWWG7BJKr+zSbC/g1u28g1RWtg96xyEVT4oU30WHSgWHje6DfMcxt252tXQeqpHiomTUZMLgIS8wCcliAnywwUFYOa/qXcXpzMU2a8za6cEf7rya+hMNOHrLoKeuZnBQGo6d7Xurac4cDqsfHQcNqLmItNl4Rn0DeslbkTjWbyeugqH8sgK2DykVISeSJXfJ3jn916n8dgtKr7lQFZanboaD3BDDWuucLyerKPOSNXfIPTu/xL+yHq59wCyPk2VVFR0LT7sC55fz1Q3t8F1H8tF91B+391ZPzeneBstgH1YrNUDwoHgyP5F2M8vZRZ26lMdSeV96+CMjiiwgEaBGolSu9+p0NBFQW3ZWBy9huh4qRwwDpmvJ6yx9MxlefjffOE0BgLPIeLPW/vpzGqAt8GbEHXWOgbA8azB7YlR9/cQW9DCt+EHgMkYjPZsHgz2SCzez9/8Baf5toC8zX5d0dQFze83qDdktSWI5OzbyZ9N9dvWh2h/4GMxQNiqd1e/HwcR35j48QiEUu2ZJhYztd4zP4ddbd9I/hXp8x4fFJmMs8ZfkB9PLNQFkvhukJ2QyUlXcUm6f3hqYpfQBERt+Vt3Xv0tBLFkFZ5JX1liyl+eTpZvSgMdAX3uMW7Dt3eKvK8pkFJFmAnywwUFaS2QIqjJyh6CGLnrJKJdOtPfTsQE5ZofRo9HSiMECAtruS/m4BPcfarnbQNzi9ZRfOIbXKk5fQc7J8lvBWc4vJBntmF8DwL+RA1Fd3wdG0B4K0qJaWNrj9/mQoSdncXd11axfvgYwxV2DoMzmAvLEHFt4F6+PFU9vlC2SX+jXKcVsai24TINuau8FNr64+6U5Q1m40QmnCNPrgsezJbofa+cnkCW54+EB28Z4CkcIAqQym/uchaFIFz2ebub6AANlBf5XP0+nBANwdFAN1p4Q9iTz7JN+5A5DXUPvxREGRPHXB+z9fK3idZfYsCzBQtmeNZ0/rzYJJefTs/c0PAv9/XvL2SXrxP++NT4XN47CB+ZM+9HHYZAyIbTXTs1azuB/Y2wIHlYWV7prcTl6yZjMUDX4MyA5NFFSimOgIYwApDLwlfp3FQFlvFgrPfAbKhue4idKagbKizCS6kHrhcFp8NqUJP0hFC5KxoO7WfSgaEENv1fyJJRqDlX8Ga637ok6dnUELd/0D+aNI+9OJXe95FuAnCwyUVX5sN0ddIs5Q5JRVIjksBjBs6A2Gg9690Rp2HiCwsy5L3sAOUvrTsHENBS90YHQLl1QxOgGKB8YAecvabETxgjxd6Dnrmu7n1cK4H+yjhcfqAedBU++bP6064zAF/dLeLXUV06XHyBv76epCiP3nx7yxIy6CpqFDbwTvVLFDoXbhbLdAj3Iqade2gnrmUGhamqRYG2L17U5QFnVEL9niwQmgSgt88eurrzatBqqT4qB6XAzYNMr83l3br77fCqP/fQ/dX2XXm1wvST7+2ZdXwQ+fWwE6rfvvTrKgxxUwqBd6vT+KHAn1W7cFKibgeoYbx8lb1lLd+UXViN9vJhDkZNb1gOWziuFjAQbKhs9YPamavvB0GuAn0ISbiyI+kwmRnxHebWO+vpa8ZNFbVs7Utj+d25VwVznaJTn19ZRVM382ra1rFjwOhos7th7Hf0EueqFdWxjUi3a+Rgm/9OPb4NdZDJTlLdIzvhko2zPGUbAXDJQVNEvAmZamRmiaFFoBv4oGcSThlUv9bxlBGgP9xj5g+Lg/gMvbTKQuqEmeTFQGdkP3ebsFPDCsYkhZgJ8sMFBW2WGpKGgmEHFbgnKeYsb8DWBc/QbYNLXeO2O1kqesZ6AC7xXkvYLPL1XCCGj8uDMYprt8jia41XO5SXH5ghV0/mgKF3ChtdYA6X3PkB0x0FHhuXpRytkMJrg7cCY8iF8iqrzchVx5Y+e99ikggOaazLXVoBo9CmpmTAC7oQOodS0T9LHDAU1pkwmUtbZ0P5VDd4OyaE9+QdVyOj9o8woJMJQUUbA29JoFu/etpEJ1A8lrUxvJC3/Ys9lwIetRICJgSsxxAimnx50IqL5QpTPvToEHH8ZB5chhUDVOOBCKUD3Z8uw20CwdBNrMmZ1E/ufzafCT5wIHQDoJZBkhbQEGyob08DDlAOAvP+c4ruM+DJz7f+arR2ietCbC/b8N+WORR9Z0ntuRJJfBTYUXCZBt+2SxXCK7XI6bl6zN5heQRQWL0Yu2fwwYKlQ+9eXXWXfTtsLd9xLD4xPP6At8DioAMFDWn4XC+DoDZeUfvOaZfYhbVnfdd/Rd+VsWloheX/hWTWyyVF6nrciGE+5gAi3i44ZBw3rxgXDEtsnKPVkW4CcLDJRVbtwdDoBprxyGuG/lAm5fVyLZ25vBuPpNMOSl+xVfmjiz2ygMtBfPc57+XrZ1V4wZTd6yxhouqnwRbXuOhRNp12Hkl3fSNu39C+6A3ebw20/XAg3HLpK3bOMJ5UBx1/bwuOFRG6S+nUeLI+SNvban0rMI2PXtUD1pDKjGx4GlWbktf5r922jnCNIXhEIKBVAW7VAxZymgF4ypTgbuVAHDtp44Svc7BrbrimSzOmDt4Hy65zKTrglSenjTAz1j0UMWPWXlSmX7ztOcJ+/9ZKhKnglVUZFgaW6RS7xoOfqLewk0sDZyzxWseO9CGUU7/+Bl/y/JRTfECoa0BRgoG9LDw5QDgNZWI/HK4rM40GTQ2SDiqSwY8rlsFxEOMB+MBHPOm+Awt7nkB3eIVAWaRf1AkzYEHGYF6ICCU09UbeSQRS5/eoGKgOyQMfS/hZ6yQh6yKLRmSw6VKUmY5rcNfp3FQFm/pgqrAgyUDavhkqYsA2Wl2UtMae3eTbQQVc/+UExxRcsgEIKALD3kJbSEIItx5etgKevgX8TqLccP058I8hCyxCwQqAX4yQIDZQO1oP96uG094jNZcH67ctvnDcfmg2HtP8Bh1PpVqGHPUXoW1WTs8ltW7gL1aYtBNSHBq1jOWzYGVLO4YGQl89aRrvl/Hw/zX/8U1JU6r3V9XrA74H70Qrg7OBkcZnfaBJ/1Ario15hha/wVGPp0NkR9bRccTr0PCJZ1Sg4H1KbOI29KY5ly94bxwQ36H9Qe7BpgsFM/BTJCBZS1aLRQEjURyibPBUkIpkCfvGXhy1Nc8LXfvOatiOz5yLE85PPZsPCvJ8HQJu5F0KA3dpOXLHLKypXOvDOZvGTVN4uh+eQpskPdpm7gd7aaQJvaH9p2L3R2LfLXmxh1gdMaT8YBA2WfjHEO917+7Gur4MWn0+DMsfKAu5L0w/007zy48A7JMN/fSbQFltJjAcvsVNFhB+3m8aCd+y5Ya0s6XQ6XDFcv2eKhiTTnRC5ZT+os1/7geh5peWwajWu24DG/zrqTtg3u9B4bHp+4eSzQl+BodmQyULbDFj3uiIGyygwpBvxqntpHGeESpOLDGwNdQKN/0MRVLBKxGzIGE1ekJ+BSu3QBqMaMAmuLch5Wrrqw455nAX6ywEBZZca2vcVMgahSfi/jRNhDVZu6jAsMeDXT44qXU57CIG6KlwLKZFs1GgIgm3JdvTc6t1U5bix5yx6ZmUeBvB7is3NALJjrxdEVdJbI5WhuPiRv2epMZQKtIfB6eOk9iP76bgJkt8RcAl2zyZs60Lz/EwKpWj894rVMsBeQqkA9PZKoC5QCHQPRMVRAWdRdd+cBLcLqc/YF0hX/dayPKYdGjwSLusF/eZlKIG0GvhRAqg9/LzPOHntEAOVvvrdRptYBirNOkl1PfzDLKbMqaihUJnp/KeMsqMBB++kdBB7Ymjl6l59/MQ1++gVGXaCAqUNWJANlQ3ZomGIuFtix5hZ58b/yz4F78TfXGCDiqUwY+lw2OAxNYMl8DUxHY1xaCf6w/VQG7UDQn5cvKGTwWkmTUL1kDs3DVCkzoHj4OA6QHRQPYPDOqV61ZDWVK5uQIqoxfp1FoGyvsXAnHD6xDJT1N7gMlPVnoTC+zkBZZQZPPXcw5y27xv8WA2U0ANBcuAbFBMqKpy5w1cXWUALGVX8B/b7JrtlAIMfYaKhbopyXj1uD7KTHWYCfLDBQVpmhXReZTwBdXYm0lzFStDHsSQL9pvfBYRPnEYeyH42bRc8ku67reKl5735Lg29wtezAWfJAyPplCix/7zRUbtpFE2A5eHCLk9fD7fcng6VFvu17aE+kJkh6ifNMWfzWKagr9j3e+sL7BFDXr1omZagllcVAahjUqzF5OGCQr1BKoQTKol1qNuyA4oFxoC8pU8RMFnUjqMZEQc2syQBW8b/TYJXB+3DMd/YQdUrZDe8BwP73/62nLbNXz1UH26Sz/tm3J8O9fvHQUtjh7aWaPavbKAwcJj1oFvYF3YEVcOXIAwKh+7+yzqkvO+j5FmCgbM8f457Sw5eeTYMXnkkHj3iokroX/6+fEDBbvzWKQFm7zvfcS4pwi6oQtCnvgHar+7pUioxQKFsVHUn/ScUjxnOA7MA4MPvyfsUgtOQl2zkIrbf+8OssBsp6s1B45jNQNjzHTZTWDJQVZSbphZprQT2xLzTP7C29rkw1cLGHZOC1G0V6sgm0a7iwmbzhTHcPu13FLZG4NbLlyAG3fHbCLCDGAvxkgYGyYqwlrUzpFfVjbkflIntbKm9wz4X7xyUp1/g4amztlhxJ9YIpXDt3BtSmcLQEQnKQJzZ35i0Y+kwOHPjDDNpZYCrhIqYXDYqnibAxSNDMUFUPBb2SoGyZcGRiIb185anutcKsV4/SOE/40QEoPFvnqzhdQ+7Y6rExUDNjIthN3j1p/QryU6A1dwOoJ34IpkcP/JTs+suhBspiALpHo6fTB4+VSPp7t+m/umGDfJytYvTU1BtgyssHyev89rHOoOum5dcIoOz9a3l+E6iT00v2Q/eAMi1nz5IN6jasF6O67GV0xzaAdl5viP7tCuozgrMsPTkWYKDskzPW4d7Tfn/MomdU3z/43lnkq5+FZ+pg+f/MIdoC8135nu8Ogw40ywaDdkl/sOlC64WvL3t4XqtbOo/+j4ojYp2ArD86grIZi6hs+WzxL9T5ddbt5dvg9rtjw+MTwzxlPe8Xz3MGynpapAedM1BWucFsnvkeBfwylhcp14gPyQjIYpCvoJLDDvrMEcQb6RldvXHrRvpjMVUo4+UTlN6sckhbgJ8sMFBW3mFCgHHSTw/A6H/fA2aDUpHXHWDIiAT9juHSlbfboWhgHJTGdI2Xg6Whjp5RrccOCepaUdBM9kLu3bWDz0PTpes08a2aOonKN+w5TOelo5IE60vJrFi9GwreTQJ9WY2Uam5lEehaG3EeIj+bRV6IJ9c+BIddgDfWrRYAeq/WzJkGqvgRYK73D+B6VBd9arhzheORPd71vMFilAw1UBZ1Ri9ZfIFas0E57t2mvbvpd6DNPyPGTLKVMbVbYd5rxyHyc9mQt6HYKdduB/jJl1bS4r+2yrd3t7OSiINzb08iL1mtwG8MKQyqxsSLkCJ/EZuuhUDZlW/Fw8++sFz+BpjEkLYAA2VDeniYci4WQA9Z9JRFj9lAk8PSDs2r/gSlc96BwjMcbUugslzrabdPJ9oCc8kN1+ywO0Yv2dLBUTS3LB4QB+Z6tc8+2HQ6Wsujp6yUxK+zGCgrxWqhX5aBsqE/RgFryEDZgE3nt6J6SwotUJtSBvgtK3eBR9ET6YFfNCwxaNG2FhUYVv8VDDn4h9ABAKBnT/XMSVA9ZayinldBd4AJCDkL8JMFBsrKOzSHltwl78nLuzu27srbAoCpYC8XBLCaC+QgVX5Z0uwuozBo3rOLtuvbtO5BESwmG+wYd5WCEuE26/unO4DKqskTaALMe8tikER8uaW/XSi1q27lrdp2uP3BFHg4UXp0Y4vRBrnJBTDi+Z0w7LkcyJp4HYw68Z6VjR9vIFBOd+2ym05ynlgaaqBx6iBoWjtLseBVweobiqAs9qk+ey/9X7fdDOw35dcuDgfRDakSRoA/Gg+/siQWwBdFKz88+9h7nws6lhh5hADZYW/vkSjNe/EHm7kXKGcGzBMspEqZA6qoCDDXybeVVrAhL5llq2dD7fReMOLVwPkavYhm2SFuAQbKhvgAMfXcLPDKt9YStyxyzAaSzPnzwLLtNzDl31dA3Lc/CUREpzr6S/sIkNUdl49/vFMjXZBRt2wRlEWM6gBka/3zvZch7deAWFClSdvpwa+zCpZtg4J3xoXHJ2Y+C/Tl5z5koKwfA4XzZQbKKjt6TdPeg+ZpXU9hgMG9MMgXyLRN1XRzNxfU58oON4OZ62qhKm441K+TDjS4CWInT5QF+MkCA2XlG/bWWgOBdvP//Kl8Qj0kOSwGCv6nP+CdDsCjSqfTpqNcIJ7qjcp5BvKNVk8dB3XLOiKfY/7D/HoY/8J+8jbdGnelk0cxgrEIwlZN4rxjW85doglxyfDgX3DV5p6ioF/NF2/zKvr8djgAzm4tIc9n9OZd0e8sNKnafdbxvKi9cI4AWXXWNs9Lsp07rBZQLxoD6tkjwa7XySZXbkGhCsqCzQ5lk+dC6agJYNNJG1+xNsLAnBigs2bOVAC7Ul703rXZOfUmAbPz/n4SXno2HX74hRWg03kPauJdkvCV829PgLt946G9VtjrSHvpEv0OalZ3Dyga/+tl0Dr7bSjakC7cAZbbYy3AQNkeO7Q9smNnjpXDi0+nwc++Jp3yxlp/m6MtuLoChn0hm7hlawuD2w1hrS8HzbzeoN0wulv+u+Qc5EdOQDYWzCIAWQw0S+v5gdK8ZFHnpvoGAjgZKCvnCHa/LAbKdv8YKKYBA2UVMy0JVqf0J2/Z1uzAt4JI1VB77BQBshjkS85k2D0ajKv/ChgAzDVpzubRYkdz9pRrNjtmFvBqAQbKejVNwBfS3z8Dw57N8RvxPOAGAMB4bi0YV78BnlQmkmQ+pjAoiZogqZrUwobih/Rc4rdso3fstoQrBMYiKIvcu95S1TRup0H7vQIqUjw0kfi5EaANJtktVrg3Yh4UjncAACAASURBVC59APdw+0ioH3JyIhg77ZXD4CtgkjcxpqpKUMUPh9r5yeCvPW8yxORrPtlEPLLmiu6h6hGjI5YJWVAWAEy19VAckQCVi6QvhEX3/zFA35QbOF+g2LaEyiGFwSufX01esslxJ4SKBJR3Z0UuvTg5PXiBz/pV0cOhcrS88yKfDbpc/OlzyyH3o+GgTe0PYFWO09mlySfmcN36jfBe3w/pc+jwEZ/9xut8WdfviKEjoLy8wllXikxnJS8HDJT1YhiWHbIW+OFz6RSEsbXVKF5Hhw3Mn/QB8+5e4LCZ4eDCOzR/GffiPvEyPEtazaBdOYKCJdpa/XuVelYPpfOykbjrKhaKBsSAoUIlSrWSuClUpz7noKjyroVK9p5goKyrQXrIMQNle8hACnWDgbJCVpEvz/jwBvHKIr9sV6WHA+K5AF9rtsrapL2tkbhlDRmD6Q/XVTh6yqLHLHrOssQs4M8CDJT1ZyFp1++erKXJ7yezOBBRWm1xpW3aOjCufhOMZ4IHjR5NmksvjsxNLeIaD6CUevsWeiYhzUr5zWZIeonzjt2eeBUQoPWVzFUVnLds0jgqprlyk7wVSiJH+6om6lpzfgF5y6LXrFBSV+hg+XunaTwTv7sX8nc8EirmN8+ub4fqSWMouJcnfYPfyhIKGB/eohePmiPdA/RJUDWkQVnsh/rQCVqANeflS+mWpLL1a9PpZYW+8L6kenIUvnO9jhb6P3o6Hcb9YB80lLXJIRYuvjMebvdNAHOLb4+s6nlzu4XC4GTWdQKiJ7+xlLbg6i/ulaXfTAgAgqwp8xaA0WiC1lYNxI8eS3lSbIMALC8D68kh07V9Bsq6WoMdh4MFEj7aT8+sN17+WLS65muryUvWWsPR1GDFyM9nweCnMkHTaBAtx7Vg277l9Mw03j3nmh12xxXTF3KAbP8YMBZ28Kv76ggGmEUe2eLBCb6KCV4z1TfB7TnrnaDsrbfHQzh8CqIXMPoCwRHtyGSgbIctetwRA2WVH9LmGb2hadL7AM1dA1jimzgM8qVEMt0/ztEYeAAzGM27ZloSccwqFUVaif4wmd1jAQbKymd3i8kOid/bS6CjzdrB+SxfC5wkw4FpYFj/DjhMwW9PVx/Powlq9VqFttTb7aAaGw0N61fC7hm3YOjT2YAAZ9EF8Z4W1cnTSUddAbfAKB6VROcY/CvYhLyydz6cBtY2vVOUQWsBBIzR23nkl3fC3pTbfsFjZ2XPA4cDalPnEZ+ukuCbTdsC6pnDoGnF1JDlkXU1TSh7yvJ6VsxKhZJhY8Hc4N2Tmy8byLfdoAdVUjx9bO3B/5al6PD7/9hEXIUZS29A7D/l0qf6fnBRtK/PzaDf5dlhi/2qor1yhQDp2lXBv1jy25hLgQ9eXkP9vnehDNoyk0GzdFDYb8N16V63HfIg7M1bHS8j8dgVYPWnHJZ39ZKVQ6ZnmwyU9bQIOw8HC7zwdBo9t8Toam8pBev234Lp3Gy34huGn6cXzDN+JX3ehECsNuVtaNuT6iYz3E4IkCVKwRioTBovWv2SEePpv6315HnRdfiCxcnr4XYKA2V5e/SkbwbK9qTR9OgLA2U9DKLAqXr1RC7g17wIBaS7iyxOmEYP8ZIhwfMfukvuONPvm8wF+lG58yKaVVWgihsGjVvDm4i9o6fsSCkLMFBWPsvunn6LJr0PzysXwMaiKqDfvOnGLtkUx4jzJaOUoTDQ3bxO4Mv6P20k22wccVFSYCzsJAauKhkYAxWJY6jPvNdC0aDgI7jry2vJW7Zi9W5AIP3IsvsQ881cilKPurapJWwZFBgRCnAWHQkthxT0yHM4CIxVT48EBGfDIYUDKGtpbiFQtnz6QsWAbv2De/T7qFvRdYvdvVn3yfPqtR9uoVulvrSNuJ1HfWUXBPPsuvzuOCjoMxrMbeIAZqIwSFDmpbW338BPnkuDl5/nKKws1Q8JaDBcP+qtOMsXaQGkG4gbnehGOyCU500cetcigOtKeSBUXyjPm0yhfAbKClmF5YW6BX77g030zF4wKc+3qg4bmPYNAMvOv4HD3Hn3Q+RnsmDwZzLB5nuDklsbSFWgWdiXqAvAKh/3uFsjXXBSMXsZOUmhs1TlyCEAVquoVjXXCojmoGSo9LW8tqCY5pdlx84/9pTNgJv/SAqLz60o5inr7wZhoKw/C4XxdQbKds3gNU3pAy3TlQ/4RYTgA2IBGn1v4wum1w6jFvQb+4Bhc79OXnOtJ47RYq9NwSjfwejO6oaGBRgoK884ILCBnpUY3VzJpM+IAMPH/WVtomzyPEUoDDA4VsG4eVA4ZATEf2s33D5WHbDe1XOT6SVX2xVuO3npY36vuuzgo8aXLc+CW++Oh9k/zSbgeOFfT0JNoSZgXfmK+nu3OcAtzb/nIF8nkO+2T3fTy0bDvY6tioHI6co64QDKoj1aTl+g+0594Lhi5lFnbqX7RHv+jGJtuAp++auraIFfdLfRmd3WZIKJPz4Aw57LgYIj0n+nl6duIjudi1rmlOnvoHrBfI7CoLLKX1FZrvPUBcN/t8kpT/vxRA5sAOV2Njgb68EH6OWKdAXo3conPJ48dYYbUMtf8/wWAluDlenZBp4zUFbIKiwv1C1Q/KCZ6GZ+/MWVPlU1F3zM0RZUCs9DF/z1U5rjLHn7pE85zot2G2jXjwbtvN6AQb7CNVXNX0n/T7guV40YCqoZE0V3pSgykUBZBGclJbsd7kcvhLuRs6FZ3cRAWUnGC4/CDJQNj3EKSEsGygZkNsmVmmZ/QAtY7d6OiblkIX4qaC5cAwzupRR1gWvzlsrr5DlnOJrimk3H9auWgmr0KLA0it8q3EkIy+jRFmCgrDzDm/L74zDi+Z1Be1b60sZ0czfnGV8sPOH2VdfXtZa88zRhrVrFec75Kiv2WpOqHRb+8SCUjRgKpyMWgq45uIA61uZGKB4UAxUJHJcsRcJFephBcWJVEixXebsF5r+6D669lQSHX5sH907JQ21j07QSbQNyydqNgXG4CSrskWlWPQL1pI+gddc6jyuhfRouoCxasXJ+OhRHjFaMxgBphmpmTARVwgiwqDuAUiVGcHrcCQJk+7++s5P49hYzzPzVERjy+Wy4vEvaAvxqr7Fws88YsJstneR6y2i/c5fA6JoVvoEGb/Wl5vd9ea2TuoCvayq+xvEk3ukaQJxvt6d9ewNQEajFa/6SK3csX1aqTIPBAEVFRT4/ZWVlBI60t7fzzbBvZoGwsMBPvrSSnl8I0Aolu6YSrDt+B6ZTk4QuU57NbCNP2YjPZnkt43pBd3Q9PR/1l4IIEOYqsBuOCZDtH0Nz3MqRw0AVHSHaSxbpCtCztmSkeKoDvot1+8+Sl2zT+VvAr7MKljFPWd4+PeGbgbI9YRS99IGBsl4MI3O27noeF/ArWbmAX0WDYulBXitzgC9vpjCcWMKBNUXuW1vsBgNUTxwNNbOnMt40b8Z7wvP5yYLJFBxo9iSb8ULWI/I+OJb+QDEzOIxtYFj3Nhh2KhOxnCgMRibJon/exmLiYl39X8sIdDGUlsgit2bxXHquavO5wFyPxs/iJtrL10uWj6Dxqv7naNzi/iUXzo/Logm0tqBIsiyhCnWL5oAqdiiYKsqELsuSZzfqQT03BtSLxgBYxYNhsjQepJBwAmWtGi1HYzBDOY9nU1UF3S+1C2YpRpWg05rhpefS6YPHQslssMG81zhvqhNrHgoV6ZR3cfxa+h3mj5YOrlbGjoDK+OhOMpXI+NFzafBfX+KoC1zla9cngGZ1lGsWO5ZoAW8AqhhPWSHqAmxeqkycw1RWVvr8qFQqBspKHFtWPDQssHreBXqh9uvvCTsUmQ9EgiX7DXCYOrzVhTSf/PIhmvdsHXNF6LIzz1R0hQBZbWayMy/cDlSpa52UBRRcMjoSqqeLB1iLB8dTgC+kzJKSbHojxSp4OGEFVePXWbeWbocbf58QFp+boxbSs7KtrTMNhhRb9OSyDJTtwaPLQNmuG1wM+KWe1BcsTcp4pSgZ4EvQSjYzGLYNAsPav4Ot1X3rofFRCS321NkZglVZ5pNtAX6ywEDZwO4DQ5sF4r6VC9N+cQhwu75SyXAyFYyr/gK2JmkebGL1KZs6nyav5qbAOUk19QZY+MYJmvDPe+04qObPheqp48Sq4Lcc8qWWDI6G8ljOO9am0xEYhFFxxSajzgJZE6/TNu3hX8iBnVNvAgJRdosV7g6ZQ9vNgh3I1mOHCIxuOaggjywANG9aAI2TB4Clwf2ZL9YW3VkunEBZtFPL6Xy619SHRW77DMC4yDusUpB/eMCfd9GifkqMbyoGq9kGy987Tb/j3Jm3fPYEPWOv9U6kj0MkR5+rQFUXURjsXcMBGiP/uNm1eTo23j3Lecs+9A1SdKrIMpwWEKIfEMpzVnA5EArohZeF6gvluYjye8joC/yaiBUIYQu8+AwG/Or8Ysl8L4doCyzFh/xq31xjgMFPZcKQZ7K9lrVpGkGzqB9o0oaAw9QRBNVrhRC8UJ2+mWi5ivrHgjb/ClRFRUrykq3POUj/+UiVJTVhjIKCd8YDxizAxK+zGCgr1ZKhXZ6BsqE9PkFpx0DZoMwnqbJ6WQJRGKgXDpdUT0zhknEz6UFeMpjbZiumjhxlbI2lYFj9V9DvGN7JK7bl8H5a7LUX3JCjKSajB1mAnywwUDawQd2WcIXAC9wGr1RCINa48nUwnBTP1yhVl6Y8jjuzemVn0EKMrJsHqyD667uJwuHT1YVg02romdO0b7eY6qLL1KYtoudr88FPqM6j6QvpvHyW70BJDrsDUK/Yf86FyM9mwZqB56G1zp1WQH36Ok2k6w+cE62PZ0GTqpKCLNbOm6mYxyO22X7pBP2H6c4d8VQhLM7DDZRFoypNY4AvA9BTljysqypkHUfkj33xmXT42ZfFebPiC6a1g7lo3euHXvD6niI/Pp1+f5cmBkaf4aQwWL5c1v56Cuv909W09ffRHSF6Egfxymq3yLNTwLPtJ+Gc93Z1pSrAYwzehdd8JW9AazAyvbXHQFlvlmH54WCBv//3VnqOR73fQSdg19WDJfM1MB8VHzRxzHf2wOCnsiA/U8AD1GF/zCPbC6y1peFglk46coBsDIGyTXnnoWHTGpqP1kwT7yRQNDAWkIMWqbKkJGN1AxT0SoLy9BxnNX6ddSt1O1x/a2JYfG6MXMQ8ZZ0jKHzAQFlhu/SIXAbKduEwWi2gVMAv5JFFT1klA3x5s5Tp1h4Cb4xnVnUqUpc6H1SJ0YBchywxC/AW4CcLDJTlLSL+G4HYyM9lw5boS+IrBVASKQuQugApDJRMRGEwQhowYWq3OsGbGb88AuoKLvI67y1qaVLLqrLD0A4lEdHwaMTjBYjNRkEYigfEAJiFt2TfPKSCiT85QOD5rFePgi8AvXDsMtp2Zmt3B2zFdIK4QacncTzeMvfbtX2rug4apwyC5vWdecRdy8l9vG79Rniv74f0EQO2+Go/HEHZrqAxQE5Z5JZFjlm8n+RKr720mRbzmRv883u6tpmZdI1+N+l9z4DN6r4VwNymIx7Zy++KX+i6yuaPq2JGQmW8svQBSF3wiy939jDjddBfP0resubyO3wW+5ZoAeSF5YN98d6vmMcnBGnx+eEK3OI1b6AsXvMnk5ct9puBsmItxcqFogVaW43wwjPp8MNnuW3xqCOCsQjKIjgrNpVdbyJQduSXBbjFj2+iZ2F7fq5YcSFVrmbtNgJTMa4LArKYcAdKVVQEgJGbn/pTuHL5elrHlyZJp254OGU13P5gCljbOjyM+XUWA2X9WT68rjNQNrzGS5K2DJSVZK6gCzfNwoBfH4DuU+9bOKQ2ort1nwJ84du17kr6A9M4ftly9614VvRcS4qH2oWzFfXg6q5+s3YDswA/WWCgrDT7oScZUhbEfGM3IIWBUslceJJ+z6abnGeoUu2g3LJpC4jCwFSuEtUMTuzHfn8vBQbaM7sA0BuVT7Up06F2vvQJLV/f13f9Os47T72To2SpWrKaJtBlE9xBStW9Vpjzu+MEKiW9tB+u7an0JZautZdUkbds5Qbp1AON2zfT5L/t8gW/7QRcwG6DptTxoJ41Aux6cQuMgNtyqYiArCsQi+f4CTSFIyiLfeVpDJqOnQ60637rac/l0X3UuONjv2XFFNibdZ+8RH/3A2EuQn8yDqfep9/Q/Nc/JaoPvvzZEYvpd3dtzjY+K6Dv6oULqb/myqqA6vurtDPtDAHSsX/2EcjQbqOtum07ZvgTx677sIDrixtXQBar4DmCsp75CNLyYK6QaF8yhcr7ymOgrC/rsGvhYIH//MZqePHpdDh+sBjMhfuItsB8f5dk1aO+upOA2cIzdc665tKbHI9sxlRnXjgdICCLL+gRkFUf42IPqHdw87KqKeJfHiIlFspBiiwpqfnSHZo/1uZybfN1+XUWA2V5i/SMbwbK9oxxFOwFA2UFzaJYpjPg16w+srVRNDCeFilVywLbyieHIg5zOxg2fwCGDb3ArnffUm14+ABUMUOgeY/0P3A5dGMyQs8C/GSBgbLSxub4ykICKs5vV3B7l83C/ZYzBgNAB+ApTVPxpVvOXabnV+WSNT4rISC9N+U2DH06GxK/uxdKr7hzc1sa6ghkaT15zKecgC/arFAaGQ2lw2KcVC04iUbuMJtGA8htuy4yn2gKYr6ZC0eX3+/k5eer7UeLM6Cg9wQw1TX5KuZ2rf32Lepzw0bftnOrFMCJ9uB2oi0wFnedR5/QNmL0blu6PN3v1mRvXQxXUBb7QzQGQxLBrBaOgu2tz1Ly61cupfvJUFQopZpg2Ze/uooW8Xeudyy+BQv6yMzbUEy/p+T/O0rArLlFC7f7JsDFd8QHTfEm3lBUTH2tXrrUW5Gg8t/5kS/qgg7RGGFcm/I2WOsFtvR2FGNHYWwBBsqG8eAx1ckCe7bjS7Y0+N13VoIl63UwHw6Mhg+pCyKeyoSEb3MesXZdC2iXfASaZYPAYZAGRobC0NRsySEgFZ2ieEAW9VJFSfOSRSos3O1anrxIWrfsdrg3Yi59wG53q8uvs26l7oDrf5sUFp8bIxcz+gK3Uex8wkDZzjbpMTkMlO36oZQ74BeCAkW4jbabk7XmLhhX/hn0uxM7gTnN+3bTAkj/4F43a8maDwUL8JMFBsqKH402tRGivroLUn7vO2COeInCJQ35mzivd5W0LcfC0sTlFg+Kh+KhY70Wbq01wJzfHiNAetVH5wS9hJs+yaGXP7Z25Sb2DVu57WUNGZy3Jjchj4UT78wmXtthz+bA9sSrYNBK92I2qVvh9nsToTRFHL8u7kKoHhcL1ZPGgN1o9Gq7YC+YygoJkG3dvT5YUZLre3rG+vNu89dAOIOyPI1BxRzlOJ6RZkg1JgpqpiUFRWMwa0weeYl+8MfgdwRd/aSCXsQgMHtqwHxauN5ZtcffUIu6Xhk7EqrilKEweOnZNPjvr/jnrHVYLaBN7Q/aHHePe1EdYIXCwgIMlA2LYWJK+rEAPtP+95uLwLLjD2Bvq/FT2vtlnCdh0K/m6nbQbhoH2rnvgkX10HuFEL2C8z9cexMge6BjXi7ZS9ZsJhkUPNZmk9Rb9I7F4F7oLeuZ+HXWrSU74Pqbk8Lic2MEA2U9x9HznIGynhbpQecMlO36wWxcNlq2gF+lE2fTIuXhoPiu74hAi8ZLH3P8sld2uF91OKBuyVyoHhcDlmbxnmDuQthZT7EAP1lgoKz4EV3R7yzgZLa+VDmOV3tbIxhXvwn6g127nbYMA2f1jwEhCoNreysJjB7x/E7Iz3zk1WDVE0dD/Qrfgbe8VhZ7wW4jT9lHQ6MBo76f3lQMx/80Be72TYDVbx9wctuKFedZTpVxmCbY2oIiz0udzmtT5xEIbSjxX7ZTZZEZdqMe1HOioGlhAoBVOtAsshmvxXiOSNx+vDt3D0QMHdGJG9JrZYEL4QzKYnea8/Lp/775xFmB3smTxdMYNOUGBqjqdGb44RdWwEvPpYO6sYPfLhjtCo5WQ9Tz2+l3du7tScGIcqtbvXjxY8/gYrf8YE92LDpFoHT8m1tFidKf2wnalHfA2qgMlYIoJVghxSzAQFnFTMsEd6EFxr+9iJ5riwfPCqrVndNu0Qv2w/2m0y4B/fnw20VZt/0TLq4Aesi6ALJoGKlcskiBhV6ylalrJdkV+WORRxb5ZIUSv866uWQHXPvr5LD4XB++hHnKCg2mSx4DZV2M0dMOGSjbDSMqY8Av5LDBh7mpPPC3lvJawAGGXQlgXPUXsNW7v/m06dqgemIC1KRMJ0BD3naZtHCyAD9ZYKCsuFG7e7KWJrG5ycp6rxoOziBQFsHZrkya/CvcpHRRR7BACuYVwUViRx7dhkfewWjcbo0TYe2lfMXVVucgf1gsbPrfZTQmqa9w58Ujg99S7bBY4c7gZLgfvdAnB3friWPUX6UpYZq3LAL1pI/AUlOuuF2FGkC6AgRixQT60uv1UFpa6vNTUVFBE36DQXpANSH9uiMPaQxKho1VlMagbtEcAvzNKukg4aA3d9HCfeKIo7Ka5+g73MJ1/s+3ga7ZJItsJ4VBqrwvc97+4Sri01WViHuOOkx60CzuB2175NVDFiMxIUFbgIGyQZuQCehmCzjMbWDMfhN+9Y1F8NKz6UFrM++F5aCZ8zZot4UfjywBsrj27h8D9TkH3WzBe8mqpnrf+eVawVxfz/HRYqBuial8RQ4U9EoCY3WDYE1+ncVAWUHzhG0mA2XDduj8K85AWf82UqJE06y+QQf8wgBf/NYJJXQMVKajvYm4ZQ0ffwTINeuajGWloIodBo3bAg/W4iqPHYenBfjJAgNl/Y+fxWSHxO/tBQwa5RmJ3H9t8SUsqgLOy/1CYIF5xLckXLI4IgGKh46hixUFzRTMK/KzWYCR2P31W52xGarihge15VpYK/fcumItLH7rFJx7KwkK3h8D+dseUIGiyER6FmuuBQ+aq09dJW/Z+oNcBF93DQDMtTXU15o5U30Ct571pJ7rLp6gHR3aY50jJUuVFUh53kuWj5rOn7sG/nKVi6BsWVmZz09lZWXYg7JdQWNgaWwAVfxwoHvMg6fO1eaex0V3GwmQ/dmXV3peCuq85WElPPgwDk69NZVoQib++ABoGuQB1itjR0FV3Kig9POsTNQFX03zzPZ53n5qG23jtWnUPsuxi+FnAQbKht+YMY3dLWA6PQ2s238Lf/zuUmfAL/cS4s+QR7YhuS9UTvgAlv7lgPiKIVDSFyCL6knlki2Nm0ov+eu2Sptn6ctraZ5YsXq3V6vw6ywGyno1UVheYKBsWA6bOKUZKCvOTnKXkiPgV8ngBM67bI5/3jK59fcnz1J+hQAe/YFpnYpqTp8gL6+2C+c6XWMZT4YF+MkCA2X9j/fOKTfII/Ph+Xr/hQMu4QBDxmDQb+wDYOv6beqoNh/o4OCkM8QhGfcvufDAJUKv167Z7aAaGw0NGzq8bL2WDfACeuZtjroIQz6fDVFf2wUn4jnv2Nq0xSQRwVh6QRaJfNrBp8Kxy+DOgBlga3cHnhwWC1QnTwJVwgiwNCh3P1jVddA4ZRA0pU1WFPj1ZSkEYz0BWARmJ0+dAehBG0gKd/oCvs9IX4De2i3nLvFZsn+3HjtE/9Mth/eLlv36jzYTKJu5IfiXE66Nnn5/JgXUqzh0AUouq2Hkl3fSSyo5gNnqJUuon+g1K0fKXMTx6Sa8JY66gG/TbmgDzfz3QHdIuecY3xb77loLMFC2a+3NWpPXAtbK82DNeBXMNzcAH/DrlW9J22rv1Mhhd/LIzvh/KyHyM1nOS6F+gF6xFMOlf2wnD1nU3eklO3mcqK4YS8oAeWSLByWIKu9a6OGEFXDnw2lg03uPJ8Cvs24uyYSrb0wJi8/1YYy+wHWchY4ZKCtklR6Sx0DZ7hvI5pm9QT2pL1iaxG1x89QUqQvwDyJUk+F0OgGzpjvu2ztQXwRQ0BPHVBXY4jpU+8z0EmcBfrLAQFnf9qp+0EpA4JpBwl6TvmuLv2q6tYf7rT44Ib6SzCVrT90ioGn1j5fAojdPit6irLt5nUAVXcFNmTUCsJhssH/+HRj1lV0w9Jkc2Bp/BfQaM7VTHhsHJYOjwaZtoXOkL0CgzJNfLBCl2kuqyAuicoN7QKOm3VnUV825vEDEiqtjt0FT6ngCZa3Ngf03iWvIdylvoGz86LEB88r2FFAWLVeRvARKRiaBrU2hwHYOB3nKquKGAXrO+kt7szA6dzr85nvy7oKpu3AXCj+KhdO9Ol7wlt1oopcjuHugtc79xYU/PT2vOykMlizxvBTQ+T9eXEWeZGKpC1wb0R1dD9p5vcGm454prtfYcfhagIGy4Tt2T7rmDrMOLDv/BqZ9/QEcdjIH0he88Ew6WK3SrdN+civxyLafyYKZrx4hh4N1kcrTTknX1L0GArJIV4BrbvSWFUqq6CFQFRUBYBT3n1w8KonmjK0npc3vm87fovlh3b4zQmo48/h1FgNlnSbpEQcMlO0RwyjcCQbKCtulK3Kb0hJpe2jjwmGSm6ucs5we5sWD4iTX7aoKDpsZ9DuGg2HNW2BrrnRv1mqBmlmToXpyItjb3SkO3Auys55oAX6ywEBZ36Ob/L9HKchVm9r723DfEvxfRYoRw7q3wbCz+17wXMh6RP3M/3sS3PpAnJcB37OGdSvIUxYkbLPm6/r6zt/xiGgjIj6TBct7n+7EaavNP0XP4JqFc0gMej0gKCvXM7ksdTsU9J4ApjouMKKpspx4PuuWL/SldtDXtId20P+S7kJHNOGghQYgwGg0kafsocNHnLXxGEFZ9JgNJPUkUNZc3wjFEaNBlS4vCOpqV+SUVcUOBeSY9Zde/ioHRt65XuevqKTrp3tNJVAWwVnXVHWnhYDZsd/fC01Vwc0hkL4AaQzkSEhd8D9fk0ZdwLeLYCyCsrrjyo0p3xb77joLMFC262zNWpLXa5ov1gAAIABJREFUAqbTU8G643dgb+kIstr3D9m0I2LQm7mSGjM/ukWArHbbFABwgEFng8FPZZLjgSRBXVxYDCAr1UuW311VMoSj7BLbJbvFCncjZ3NxB/zMefl11o3FmXDlL1PD4nNtaCoL9OXnZmCgrB8DhfNlBsp24+gFEfALF/+4XRZ5ZUM52VqrCZTVZ0QCgrSuyaJuAFViNNQuXdBtW2Rd9WHHXWcBfrLAQFnvNj+9uZi8CE6tL/JeSIYrhlPLyEvW1tQ9wZw2jbpI/USeyHvjlxCwqS8sEdUz3M6PXLLqHVtElRdTqPSKGqa9cph0wm8895YqEsdA8aAYsDRwgRZLx84k/VXpwfPymlu0UNBnEhQnrwew26Bm5kRQjRkFNm1ggKS3Prjmm8oKQT3xQ2haG1x0ZVeZwRzzwCwf6CsYQBb16EmgLPancd9Rut/abrkDlsHY3LMuBpPDIHqavE89LznPZ43htuz3/UOOM0+OA6QrQM+kvPeTBcUhMBvzzVwY85090FDmPRCgYGWXzOqlS2WhMNg2/xSBFWP+Lo26wEUV0B1cCZqFfQHpDFjqGRZgoGzPGMcnrRdO2oJb7vMZ9JB98Zk0eOk58QG/bJpG0C75CDTLBoHD0OFJOu7FfTTXOraiMCTNizufyEN2QIxXD1lUXKqXLIKxuIaXGoegJudT8pLVFvin2+HXWQyUDclbK2ClGCgbsOlCvyIDZbt3jJpm9ZMc8MtUXkMLsVCmLnC1qun+MQJ9DKc6c9+23ymgxVDzfuHtIK5y2HHPsQA/WWCgrPCYtreYIeYbuwE9ZZVMCMQaV/0FDCfk2borRVcMmjX55wdpQr4lhuPG1BXco2dbxfwVokRp889yYEpJ8MC1ukIHaX3OkD4YWA09Zf0lXcE10rc6eToVtel0FEkXecLAZvNX3e/1mqxjNAGvXrWe+on9VSo5TEZQp0SBOnkY2NpalWqmW+X2NFAWvcPLJqZAacwksBsU8qbHFwLTkkA1eiTYNJ3vC53WDD/8wgpaoKsb9bKO75l3JsO9fvGAgb68JaR4if3nXEj410+grkTrrZjPfCeFwWKOI9pnYR8X/x4EdQEvFgN9aee+C+2nMvgs9h3mFmCgbJgP4BOovsOk6URb4GqG//rGGvEBv+w20KyLB+28XmBWPXQVA7WFWoh4KhNGPi8t0JWbEIVOEJAtQsqCATFQs8X7C0enl+wUcTEFkK6AdlWNSpKkOb6ov/3BFO5FvYia/DqLgbIijBVGRRgoG0aDJVVVBspKtZi85Z0Bv5L7iBZcglHKB8RCSZKw94hoQV1Y0HAkhYBZS0ln7pymfbtpW67+wb0u1Ig11Z0W4CcLDJQVHoV1Efm0pQsBByWTISeWqAscxq71ysrbWATDv5hDXK3X91e5dRG3ZIvd0lW/fBFUTxztVl/qCXLEZoy5AsOezSEKhf0L7oDVLB5QrZw0gZ7HphLO06N89jI6L5sePM0AbVUbnAx33kuEumULpHZNUvnWnDVEW2C4rVzwKEkKKVC4x4GyAGCsrIbigXFQuylTAYtxIg0lRfRSoGF15xerA/+yi7xDJ486Jmv7DzYfpt/R2YH+73sEYxGURXA2UGC2Ki4KKmNHBtUHpC74ZYDUBa4Nt+1JBc3ifuAwyQtyu7bBjrvOAgyU7Tpbs5bksYApb3In2gJXyXzAr//+J/8Bv3RH1hJtgf6iO0c+Lw8dEAY/lQX3TslLfcPLD+RbLCCLsqtiIqVxyQ5KoABfSHklJZUt3UGUVsZq/xzvKJdfZ91YlAmX/zw1LD5XGX2B31uCgbJ+TRS+BRgo2/1jJzXgF0823v2ai9fAYTGAISMCDGvfAluLOwgDDgdRGFSPiwFLM8efKF4yKxmOFuAnCwyU7Tx6RRcayFsze9KNzhdlzDHdO8oF97rZdV7qpnar0xt15q+OAHqneqby2UsJjPFHYWBr19HLnOZPvHsweMp2PbdZHXBk2X3a/jz06WxAb11ds8m1iKhjU1kJlAyMgcqksc7y5AUxIAZsmiCpBuw2KEtI4oI67FSO49VYdJsA2ZaMZc4+9MSDngjK4jjV7cil30z7w1LFhq0xYzMBs+23OwLqFd1tJEAW+WTlTvnvjIfbfROgvdY7fYhrm0hfgDQGsf+UC9X3pb/Mqlm2jPO6L/K/LdS1Xf54y5xPyRbj3gnew9XaWAXalHdAfzawZxuvE/sODQswUDY0xoFpIc4ClrKTYM14Fcy3fNNCvSgi4JfpwUWOR3bHTK+NX9tXSd6y8d+WxlHrVWCQF3hAttiPhyw2w3vJVk8W5xxQt3Un/VeXxk2VpGV7iYrmgZUb9oqux6+zGCgr2mRhUZCBsmExTIEpyUDZwOwmZ62mFeNEB/yqW5dBD3Rc9IdbQjAWQVkEZxGkdU0Y7AuDftWkTAewWlwvseMeaAF+ssBAWffBRaBw/Av7IfG7e8FiEu+t6S7F/xkF99rQC/Tbh1DABf81gi+BXr/jfsDxh+0Yfw3sNoegUCeFwTzfwXJaTxwlEMXSIN274uonFYCR2zGI19J38zoF8RJUzEdm9dxkei63XThNpQKdeHs2wfN53o9OgTsfTgNbu/tz07N8IOd2gx7Us0bQB497cuqpoKzdYoFHY2bQB2xchGy5x5H+o8fFQvWkMc7/6D+8uJmAyL1Z8nLbX521hX5PZ0dIoxNQV+ro2RkIMGuurAJVVARUL1oUkOn+9h8raTuvqqQxoPqeldp2zgNtan9wsPmQp2nC7pyBsmE3ZE+swkRbkP0GmA9EADh8/5f0+2MWPf8/+vMuQXvZWupAs+B90K4Y7tfrf+hz2QTMCr2oFxSuUKb62CmiLCBAdu02v61URUv0ksVgsANiwFxf71e2a4HCxGVwZ8AMsOnF0xTx66zri7Lg0uvTwuJzZchSFujLdeAFjhkoK2CUnpLFQNkQGEkJAb+K+3MBvjRnLoSA4tJVQPoC48rXQX+A42B0lWCqqgBV/HBo2CC/141rO+y4+y3ATxYYKOs+Frun3yKg8H5erfsFmc+cwb3qHsgsWVjcybUPYdhzOeSVevcEFxRLuCSXWxI5GoojfUelrZ2fDLUp03yJ6XSt7EYTzHr1KNkYg3ihV7IcydrcCCWDo6EsOs4prngwt0VNX+jOoeYs4OfAXKPiIt8vXwj68lrOS2Kd/F7NLduX00tB9Jbt6amngrI4bugliy9r67PFe9JIHW9t/hl6EdK8ZycgEPviM+nw+xfcg8BIlelZ3mG1wtVeY+F670Qwt3X2pPcs73keDDBbGR8NVQFSGLz0TBr86uu+XyR56urr3Fpf5nPLr6+67FpoWYCBsqE1Hkwb7xYwnZrE0RZovPN487Ux4NcLz6TDS88KBPyyWUCzJga083uDtaGCr+L1O2vidZqXTXn5gNcySl9AQBbX2GIBWalespWpa+k/umxCiqSuqE9dpflfw5F8SfX4dRYDZSWZLeQLM1A25IcocAUZKBu47eSs2TT7A/8Bv0wmIhzHP41wTsbTKx9vm+68VaXtwjla9LUcPRjOXWS6+7EAP1lgoGyHoWoeaohHdvWAzrzLHaWCP7I1lnRZcC9XuoJZvz4GrXXiPD3L53C8rN4oDNA7FiPCi31OoPfFin5nadKf8G+fwPkM+bd5161MpQl30z7Oa4SCOfSPgZJhHbQGokcPgyvNmgKqMaPApuUoEMqWZ0FBryQQyycmpi3j/RsEyLZmrxZTPOzL9GRQFgenBnfSDIonnlmlBqt2wSxQxQ6DV76+gkDZO9ele6r70i0/YQX9ji6O989V6E1OoMBsTVoaPVcw8JeUtHnmMbLF+HeDpy5wbVebmQyapYMA7MrtmnBtjx0rYwEGyipjVyZVXgs4aQtubxUt+BffXAsvPJ0GyDHrmtr2LaeXSsZbJ1yzfR5HfjYLIj6TCTYJnP4+BUq4KBWQRdFVMUPEc8nabMQji4HDwGwWrZnDYoU7g2bCg7jFgFR/UhK/zmKgrBSrhX5ZBsqG/hgFrCEDZQM2nawVxQT8KhrBBZQpHTlB1ra7XJjdBoacGDCufgOstZ099dSZW7nAX/fudLlqrMGusQA/WWCgbIe9Z/zyCAW+alOL357UUVv8kT5rJBg29AKlg3up7rUSFQNOtNELwmEXP6FEMBa9/irmdg4shD2l4IDRkU7A0lvvMYjXttGPg3h9bRdgEC+laCHsJgOUDomG0mHRThClePg4QA5wBGilpKa9uwkc0p7Lc1bjI+8+nCIPgGrX60CdPAzUKVHgMCl7zzk70c0HPR2UtRuMUDJqApRNTJG8gBM7NObaatjyxlgCIfu/Lm/EbPSMvdlnDFx+N4AXGR4dCASYdVIYLJQWpE9u6gK+K5bqhwRsGK4e4rPYdxhagIGyYThoT5jKbrQFIH6uxgf8QnCWT6a7Z+m51bZ3KZ8l6jv1H6foxfmSv58UVV6uQoEAsk4v2UmJotR4NH0hzWkxEKyUpNp2iLxk2+5LCwqGbfDrrGuLsuDin6aHxedK5DJGX+DnBmGgrB8DhfNlBsqGzui1zOgN6kl9wdIkzElGAb4GxACYpAejCZ1ecpo42ptBv+E90G/qCw6DRzAchwPqUueDakwUBMIXGWp9Zfp0tgA/WWCgLGebU+uLaDKat7Gos7FkzDEV7CcvdeMdZT3R8zYUE10BcjvePlYdUA+KicJAOHhC9dRxULdkrle5VrMNDi2+B9Ff3w1Dn8mBrfGXAwri5bUBLxcaMjbRxLthC7dAwei6RcghNijBS43O2U7agtR5nS7W5p6iCXrzxeCpBpo/XkxesqZSdw+XTo32oIyeDsriUGmv36Z7sOngp4qMnLpRD//5pWXwm68vgfpTZ2Vt48wQbuF6Y2GmLHJdgdnaIo95hpcWiMIgZqSXq8LZSF3wy68LbOEVLi4pty1jKmjSIp0veiRVZoVDwgIMlA2JYWBK+LCA6cQ40bQFnmJefHYF0RggnQFSFWjm9yHqArBJiw+CHrLoKYsv8rsqBQLIom5SuGRtOh1RIuBcUEoyq1vh9nsToXSe74Br3mTy6ywGynqzUHjmM1A2PMdNlNYMlBVlpi4p1LhirNeAX3V7DxN1AW196BJtlG/EUn2b20a9e3QnQnm7vh0QeKmZMQHwmKWeZQF+ssBAWQD0jB31lV0w57fHFB1k9Iw1rHsbDDnSJoZSlDIbbE6agOT/OwqtteLoCoTaqEhZTuCSJ4WBsayU8yI92+FF6lr//PZSSPzeXgK5098/E3QQL1fZYo4fjYiB0shocBi451ZJ/DTqBwb/8pscDo62IGEEWJqbOxe32+HeiLn0sVusna+LzNEXXORoC3I3iKzRM4o9CaAsjlQVctdFjAZrizggUsro9v1DDnnJbvnHJFAlxYPdEPhv3LXdtoo6uPdBApx/R96dQAjMImVJ3LdyQQwwW7NiBT1f2u/cdVXP6/HGGRx1QVLv7V7LBHPBXHGX85a9cTwYMaxuN1qAgbLdaHzWtF8LWIoPgzXjVTDfDox+pf+fuP+EAa9tp6BeGNwLg3wFkpBTFgOw4u4qpVOggCzt5oyOhGqRXrJl42fRHFC1Qtp8q3T+xwTKIjgbSOLXWdcWZsGF12aExedyxHLmKetnsBko68dA4XyZgbKhNXpNU/pA8/TenZQqHhhH22Dr1gX2p9lJYIhkGK9lc5575zv/WeE2SdXokeQ1K5VLJ0S6x9TwYgF+ssBAWYCVH54lb86GR21erCVPtuH4QnoJYmvyH3QhkBaRrmDCj7gJ9faxV8FuE78FTqg9bxQG6uwMAk08X9Zg0C4M3oUTegzmVXpFLSRW8bzWI/tpAl6zdAG1ZdNoyEsC6Rj8peYDe6hvmjOnvBZtvf6AvGVrdornanMVZm9vA/WMIaBOiQZ4wiK7PymgLIKxxUMTQbVkjevQB31842I1vPh0Orz89dXQfvsm3au4QJUj5fWbQ7+b0t2n5RDnJgOfrWKBWSeFwQLu9+smSODkze+vIpu01Cv3/NZ+PBG0K0d0enktoA7LCkELMFA2BAeFqUQWsLc3gCXrT2A+OARAAm2Bq/n4gF/v/mAOvUAyPbjoelnSMfL/RzyVBcOezZFUT2phHpBFR6eatdskVUcuWYxpAEb/tE/m+nrANooG+p//uSqBdAUF74wHpC8INPHrLAbKBmrB0KzHQNnQHBdZtGKgrCxmlE1I0+x+ggG/ivrH0oNdtoZCSJD+wHQCZi1llztpRQu/mCHQtHNHp2ssI3wtwE8WnnRQ9n5eLYGIu2fcVHQwbXUPuJcfp1co0s65baVEV4AevzcPVsnWRicKA4cDqpPioGF1By9XXbEWljzmIkt6aT9c3l0uW/uBCqpIGA0lg6LB0lBLIspmLCLAqXyWd441c10tqGKHQp0AbYGnHiXJG6CgzyRAnlmpqWVr6hNHW8Db6EkBZbG/jQeO0z3XdiN4qgvefr/+7gZ44el0+HQ/FyivbkUq8b+bqvxH6uZlCH033S6BBx/GwZl3pwpdliXPCcz+Sy7Ul/oGUKsSYqAqdoTfdvHFE1IX/OobaX7LBlPAVHKd85Yt8P6yJhj5rK6yFmCgrLL2ZdIDt4D5yCiwZP4R7G3cXCVQSQN/OpeehRcWLA5UhLNe/LdzIeKpTDinQEBWbMQVkK1O3+xsV8yB00t2sjC1lqeMkthJ9D9cnyOBMszhoMBeGOALA30Fmvh1FgNlA7VgaNZjoGxojossWjFQVhYzyibEeDsf1BM/gObk95wyixO5rQ8lg8X9CTgrhsmBw2IAQ0YEba22aTpPDFoO76e3km2X8sOkR0xNfxbgJwtPMiiLW/0Tv7uXgmHZrMF5lfqzt37HUNBveh/AKi8fNQbN2jj8IgHLM/7nMDSW6/ypIuk6BvpCD1OewkB/7zb3LLh6CTT1Btg44gIM+Xw2xP5zLhxLfxC0d64k5XwU1l2/RHqrZk3jSj2OvFs8IAaQX0wo1c6bCar44WBpbhK67JZnrG6Agt4ToCxV2pZpw71rHG3B7vVu8p6UkycJlAW7HR4lzYbS2MngMEvj9hO6H7auukG0BW/8vMMz1tKkpnu2JmW6UBXReXm9Z0DhR7FQc1bZl1MIxsb9Sy6M/vc9gB5Z3lLNipX0nPFHYbBh+hGyyYT3pP0OvbXrK1+7aSxoVkUF7M3mSza7pqwFGCirrH2Z9MAsYL6XTbQFlgefBCbgcS1z5T0on9IHfvRsGvzim8EHIr13qg4GP5UF0d/YFZReQpVbT57hPFf7x4BUQBblVcVE0n+DGC9ZfeFDbpfUYPExBbCNhiMXyEtWfeqqUBdE5/HrrGsLsiH/jzPD4nNpMKMv8DfADJT1Z6Ewvs5A2dAbvGYM+DX5fYBmDqDEhTwG+TKV14SesjJpZGupAsOav4F++1BwCJDD169Np8WfqUJ6BEqZVGRiZLQAP1l4kkHZjDFXCczEbfdKJuO1HPKSNT0IbLu7N90QgJ36n4eoD1tiLoESwLKTwiBlOanRsHktlMdFwZ7kmzDySzth+BdyiHvMqAsedPLWz0DzqyZPIGDWWMQF0qpZn0HnpWNmdBKpOXuKJvotR8V7U1Rt3EsT9/YSVSd5Qhl2gx7UycOfSNoC3h5PFCgLAIaSMrrn6jJ28yYI6NtuB/jx8yvhxWfSoKrMnae25dA+unfxHg4k1eTdhIcfxUJe31mBVJdcp+ahBjAAIfJOewNmeQoD1YL5PuX/9fsrFacu4BUwFl4ib1njXXmDq/Hy2bdyFmCgrHK2ZZIDs4BdWwWW7b8H01Fp2+o9W7PrWkCbOoA+P3t+Gf1HGI2Be3fy8kc+v5O8ZWsLpe8G4mV4fqsPnSRAtrh/LFSvkR48i/eSVU1J9BQteF48fByt3bX5VwSvC2Xa9Ea4M2AGFCZ27AYTKicmj19nESj7h5mQHwYfBsr6H1kGyvq3UdiWYKBs6A2deu0U8mZqmj+EgFiM2Ij0BT09WR6eIvDIcKxz1HHkPqyZM5UCi1g17ovCnm6Xntg/frLwpIKyZdeb/j973wHWRnbtv0ne7mbT89LeS3n557+72by0/0svm7zkZbPZl632ru1dN3A3HeOCK264d+Peu8E2xhX33rsxBmMQXQIBEiAB6uX8v3PGI4QYSTPSDJJg7vfp08yde889c+5odO/vnvs7EP2ZTNgac1PS7nUYmsC47m0w7BfXyx4pCpCqAIHRuznBbV32ZwCWwsBhscKxf6RB4ld3U3TedYOvQrNanCBD/nQI5Lq5XAGKgbFQPX6cq3rJoAQGqFW0Ly7ZW1tAmTwaVNMnAno38k12k1nQ4L1p5/IeS1vA2rSngbJ43zWbdgNy0ptVnXehsHbx9x3X7xh5hI768HCnok6bjQJyqsbFBxT069J7kyjAV7NCPNqTTkp6ZCD/NQvMNqq4A4kihUGVDwoDlrrgt/+60kO6dKe69QnPvGWla0OWLL4FZFBWfJvKEoOwgNMB5iODwJr5d3AY/O/M8dqS0wH6TWNAP+d9QG/ZT97YT/8Tff4702sVvhdOZRTRgv+4lw/xreKzHAGy5OAUB7UbAtvZoIzhzyWLQCw6UymG8wNwWeWrNgpbbGfrcX2z86w787Lg6p9nRMTnxqAVcqAvrs50y5NBWTdjdLdDGZQNzx7VTulNAb+ePpvEl46bE56KiqyV8eJKxqvvYU4nybamRgJla+em9bgANZ2MEeEZ7GChJ4KyOJlP/dFRSPz3g2BskdbD05g7E0xr3gR7s0qUJwZ13zWG8fDFoF7+uBnFaJSlMEh/bRsN0uf/6QggqBIJSZU+nUBYpDPApDnC8HwqRrQDtfUbV5OnYSC7AOpP3iBv2YYznfm43e3joi3Yt849u8cd90RQ1m4wgmJ0KlSkLQyov2tVevJ+Qk9Zi4V70cBQVEjPMAbhE5Iercim38elaH5BtYTI9lcW3yExXz1A9DFIheKZalb5pjBYP+Vkl1EXsLqZCq4y3rKF19ks+TsCLCCDshHQST1IRcuDjURbYKu8FNRdt+aupfeR4QYzX8OAX7ib4pUXxYldgNRUSGNgbLUHpacYgKzLS3bSWF66lEQlEXUBUhjwTeY67TNaKnFiqLDzLBmU5dsDkVFOBmUjo58C0lIGZQMym+SVtOkDyKsJqQvQU7bHJIcdjPviCUiyqvI73TYCF8i7iHQGcopcC7CDhZ4Iyh6e84jAxbyT4gCl3p4Cq/IRE9zr6kZvRQTlN9caYcbvTpLuGf0uA3LiSp0wiNfqt3IIuNnz2zlwfeBUAKe0/Lti3pOtsQEUg2OgPD7BJbZkaAoUD4gF7YWr4AKzgohg/yR+EXnMoucsV3LRFswaCU6z/2jBXDK6S15PBGWx75ou3aDfUOMF4bzsb/18O4GPyCnrK9WvWU5Bvyx1/D1yb74/Fh70TvYlVtJrlQ8byeMfF5hatB1/Py4Kg3ncFAZvfr/rqAvajeAE/aoRgB6zcoocC8igbOT0VXfX1NFYArZdr4P5UnA84OaCKwTI6jNndTDZz7+6Gl5+fgWcPlbSIT+Qk4xPLtN4c/afTgRSneo05Jyg8RZSFgTqIYuClDH8uWTZxfeSmFRBepfM2BBwAFeuhth5lgzKclkncvNkUDZy+86v5jIo69dEISlgqi6FusSBNJEqHhgfEh1C1ajTqAPjtv5g3NQbHC2d+TYx4Bf+QQrhXwzVvcjtcluAHSz0NFAWI4APfSELVnwYnIcCt1Xbc512Cxi3DwDjlr4AHBzN7SX5HRVdqaPtvsNezITzG4r5VQqiVGujGbbE3IShz2cS92N+vzGgGBQD2v17gpAamqq1KxczgNgRJmhFa2ExTRIUg+JBNTkFVKmJ4LRaAlaupbCcvGWrNx/hlNG0ZyUt8Jme5nFe70mZPRWUxT5GT1nFyPGAnrN805kjpfDy8yvht9/1HxjOqmmgBdPaJdwgpmeb15JW0e/ixpjgA8N4yhZyXnq7AUZ8fh9M+skxaGvu+DskCoPYEZ3EhYK6gFXC+PAs4y1bJC31Ddue/B28BWRQNngbyhKCtwCOCy05fcCy75/gtHgPdOivJVt9FejmfQj61aPAaem40Juzq5BA2V98U5xdOYM/tReiPh3YuA8BWQwUi4Csevs+f7fl9brLS3ZKitcy7heKn+1wNSr5L1Dq80poHFeTddpdVFDH7Dzr9rx9cOVPMyPic33gSpm+wE+vy6CsHwNF8mUZlA3f3lMMHkWT96YccTh1wvdOO2tm11aCcd0/wbBnBGfgLwRnlLFDwFDQ2Zu2szQ5J9wswA4WehooO/v1U+SZ1aLpOJAVu39MVzeQl6y1MrjorahXzuxHxH+LgXEq8xrFVrWDPJvFDkfm58PoL++nrcXHFxcA5pWPn0aD6+ZLVzuUj4QTh9kIpdExUDYiFsDBeBeXJTH3UzF0BBgeBw+Wli3aSdveTKqOi1impw8JkG3OXB0JppJcx54MypqUNVAyOAFqN/Of4P7sq2sokNX9G/y8+hsPZtGCaet93+8di66NPGTv9RbGtyfVA/L0Wh0FDZz6X8c7UMp4ozBYN+lEl1MXuO7d6QDdiiGg38wPIHDVkw9CZgEZlA2Z6eWG3SxgubmEoS2oueuWK+zQaTaAPmMY6OZ/BDYt9//CKy9kwMsviLObcfpvcslbdv1QYbs8xAJk0TpCvGSVKzfTWFUxZgZ/wzocUBizAB5HzwKHNfggaWzD7DxLBmVZi3SPbxmU7R79yHkXMijLaZbQZ5rNFCVSMTAGNOn9Q69PCDSwlt3wHvjL6QT18gUUIMdarw6BdnKTwViAHSz0JFD2/MZiGlxK7Wlq15SDafXfwXhidjBdRF5jC948Szovfvs8GPXS8d9aTXa4tqeMvGLRG3dXyh0w6Nq91lTTp9BAF/llIzHV79xE+tdtZbxHjCXoLRtHeWBpv89A783SpIdHfSeDYnq7R6PDZATNrJE9TSl0AAAgAElEQVSgmTEcHEbuYEaBthep9XoyKIt9pt6xn545U4X/oFppCWeeBW3J4t3dDrOZeN9VE5MBA4B5SxcHziU9bk3d7K1Il+cXXqgFfPdM/80JMLcxurMUBqr5Hb1///79DAKrm+paulxPbNBw+yh5y5oV90LSvtyoMAvIoKwwe8mlxbeArS6PAFnLjcC4xVmN9LumMe8eH5767/16F/13jPggeIciXYMFop7bC0Ne4P8/pN57mP5fgvWQxXuu37aBQNnqyfy4ZJlxXSzYW/l7IqsPXSQvWe3Vh6yZRflm51m35+6Dy6/PiojP9QEZsqesn96XQVk/BorkyzIoG569VzIihf5UqkZFAQb96qnJdHsXE/jrwcFOJkDQoSZtAtRMHQf2Nv5/gJ0EyRldbgF2sNBTQFkMJDPqS/sBPWWlTU4w7B4Gxg3vA9KABJrQIzbpuzmAgRbQc1WqhPSwl7cpIOk7OQT+rh10FbTKjgCiVauhQbFicDyURCdJpYrkctFTVhEVA06jAWpmT4HyYaPoHV86XoBHhQ8ta/efpYF9870nVKr5wAbykjU+9u216ENkt7vU00FZh8kMiphUKJ/cEWT07GhNgwFe/exKePWlldCqF7ZooL9xlX6vTUc7B+vEdrSPSqGwXzxcf6892J1n+6E6f3RKRfQy+J7GhSJMSGFQHTPcpVIoqQtcSgCAbulA0G8JPxu66ygfMxaQQVn5SQilBZxWA1j2vwuW7F4A9o7c2UL0arucSYBs25ktPquZTDZ45fkV8MPPiuMti2NRDPh1ZWepz3bxIgKyxf3j6BMMZQHbULUALtmKWctoTFcuIKimrdUA+R9PgafjVrBNivbNzrNkUFY0k4aFIBmUDYtukEYJGZSVxq7BSi3pjwG+YkGbHk0T64Z1k4IVGbH1jcenk+efVdl5my96ySqTR0PtvBlB8TJGrHEiVHF2sNBTQNmFb50jL6z6cmk9q0x3M5lFjIKTAT8ZZ9c+hWEvZkH8N7MBuWSlSkWX1TD5Z8cIjMVAOxh0hys1Hs0hkKdy5kIa8BqKFFzFwj6v+Uwus9A2cQLdT/PZU1AyMJ7yTOVVQeuP294KRsyhj6n0Cf1vNG1fHLTc7iSgp4Oy2JfN127TM9d49rLXru39+h7ydJqZfMFrGV8XaudOB2XCCLA1df5NX+jFUHcU7xKPO8+XLkKv3T9aTYtRc/96GqxmO7AUBi23mS2/aybkkm1SPxInQrZQ/djyxusHZW9Z1hhh/i2DsmHeQd1cPfOl6WDb+QewNxQGfKeW8jzQp78H+q3jAZwOv3J++uXVtJvg3nX+vKrehBacVxMoO/qrB7wVoXwEYRGQRR5ZBGeDTayXbM1UHl6yTicohmEQ1zgAO/8guE6LFUpSV4GxSvwdn+w8SwZlg30Swqu+DMqGV3+Iqo0MyopqTlGEqQ8xk3f8YwGjDjSTPoKmtF6iyI5IIXYrGPaOBuOG98De3JnDiCKYxw8D9fKFERWZXcq+WL9hE/Tu8zF9jufyi1z64GEelcdvz1RRUQlRQ0cIlukphz1nBws9AZTFbflRn9oLxxc/Zm9fkm8Mimdc8xYYswPjabSaHZDRj412exrQu1eKpC7Rw6J/niebxH8rmwKHOR1Or02ppowF9eI5gGAsvhMr54jvUeC1cZEvVCYl0T2opk6gd5XmxFnABbiS4eJ4vKGXbN5746A8LhE0aUPA0SbtIoDI5pFcnAzKMiaunL3Ma9Av5I995fmVgHyygSZzZQUtPNRvWNVBRNmhSzRpvvTB1A754XZy60AF8Wgv+Mc5MCnVoBwdBap5c0nNN/5jVUipC1y2splBv7g/6DcF9r53yekGB8GMd9hxkvu4B8dMbD77jW0EmmRQNlDLyfWCtYCt6jJDW3BvbcCi7M11oF/0MeiWDgKHQc9LzvbVebR49fvvtVMq8aropdCIL2RB1HN7oLaIu/3aDbsooBc6MyGfrBipOiYK0FMWvFDxsHMmfEekz50PrTV1UL2a+z3B9U7BejivKr73yKWuyWQmWSgPj4NJ7DwLQdlLf5wdEZ9r/VfJ9AV+Ol0GZf0YKJIvy6Bs+PVeMXpP9Y+F+l1MtO7GmR+CJrUvmB4JIzoPvzsLXCNHWyMYNn0Ixh2DwGnuTFXQcvcWTQIbtnP/IQbecuTVxD9/9g+9uVkHCUkp4AuYZQcB7OTDfXKCd491ceCAwCwmFqD1LCfEUuxgobuDsi1aMwWsmvbLXMCt+lImBGMRlEVwVmiqK22BiT8+SkDp7nF3wRdIKlQ2Wx6Dm20eeYO80IZ/LgsOTHsIFqNvjwJjmYJ+17pL50gM0heURCezIiPuu3bRHNoBUTW2HUhB7wp83yNAK0YqjpsJee+ngO6sOBMTMXQKFxkyKMv0hFldT0G/ajZ19vb8zbc3wMvPr4QzR/xvFfXVrw3bNtJv16godhW79u4EKPo4HtS3AvfYcgmT+ODa7jKI/vReWPLuBReFQbhQF7C3briWTd6ypuKeS1EidLyDtsOxi+eYZtKUNMDxEiaUGQwIy/YP+y2Dsqwl5O+utIDToAFr5t/BfHgggNP3WMurXnYr6NaMBv28XmCrKfFajOvCKy+shJefF2cR/VRGEY1Px//wSKem3AFZzXFmrNipkMAM1ktWNXU8Z02cB8UnjXHNi9av3wjpc4QBqfiOwbmaoYWh7PIEeWVQltP0PT5TBmW78SMgg7Lh17m0/aJ/rEux1rP7QDOhL2hn9nHl9cQDe91TMK15Cwz7kzi3zzSfOUGTwKbczn/aPcVeLAjrDpjiMQvS+rIDC8661/VWHgcTwUxaegoom9H3MnEUoneolMn8+ATRFiB9gdD04Fg1jPzCPvrgsdgJtwAfSn8EI7+4j7zP1kdf4+2Fq8ncCcq4YYD80Zgw0Bd6y0YihYHhcR69nyqTGW/Z1ltX6J6QugDvCakMgk0WZRnUpQyAvPfHQuncrcGK63b1ZVC2vUvVuw7Qc+ce9Gvtglvk3fTOL3e1FwzwCHnelUmjoGbWFPIKv5e+g9q7OIDxOA1QbJdWQ75r3OVwdeAs+u2uHbo5LKgLWCM4bVaGW7aHessGMt7hM84JdnzD9g/7LYOyrCXk766zgBMsuSPBuucv4NArA262Zd9cWvgxPhJOZfPGT7bT+3LCcHFiKQz5zF4Y/NwesFvaAWbVqs1QMiCWPmItbKOxlDHRPr1k3d8RZeNngVZVC7iwwzqv+DM4zrNwYahcUdapKN85W6eKHhnsPOvWnP1w8Q/pEfG5KnvKevRi51MZlO1sk26TI4Oy4dWVirHTaeJSHNXRG6wxrRdoJ38IYJMuAnp4WYJbG/OTMwQ+GU7N5yxAIE5MNLTc7JlexZ6rt2gkrjwu4/GZrLD13AckbJ6Qb3aw0J09Ze8dqaYJ/ZF50gXKQptjQC8M7IUBvgD4u+Oi19eulDukI3rJoresmImCeG1XUMAwBDbm//0sKAua+TfhdIJqfDzUr1nuquOiMJgrjveFS7DUBzYrYER6VWoiWOtrQTE4BspHx7laLR87k9771YsD3zIODjtoFyZDw5RBUL3hANEY6POEeba4FOqmBzIo296xnkG/Wlst8NrnMuDVF1dCrUqcRaTmU8dpcqu7eA7u9kqBRx8lgUHdmWe2XavwO0KO7TFf2kIUBoNenhMe1AVuZmpjvWWf3nbL7RmHXGMbrjx3a+B1d69Y92vsMY5vfO0uYsvx/ZZBWb6WksuJZQFL3jaiLbA+DZxb1XBlHwGyrbmBUR/UqVrJU/ZHn8sQ5baW9b5A49WF/2S8YVUZG2nnEToyNZ+7JEobKMTlJTuNm1aKnSvhO8KirCEeWe3t++T8wue9YTKYyKuWynJsoZNB2XxoaRF3PiLawxEGgmRQNgw6QSoVZFBWKssGJrcEScr7x4JZ1ZE7VbsklgK3aJa2e9AG1kLk1zJd3cgEM3rAQfrudELd6qXkXYdcsz0t4Z850hWw2/Dw/vGYzwouO9BAGb4SW47P4MObnO4OyrY1WyDuG9lAtAU++FK92UdIvjF3JgXCs2vKeVdDvtgZvztJA1zkkUU+WTFT8fX6DkG8Cs4LD/ZgKHhEgA5Sk7gnojAY0nHRyv16OB435uyje2l79IDUq9uQQSBs/c7NjLoWC7MYNyAO7K2d6Vn43JP+FO6o6AetV3LBabXB4+hZUBizAMAhbt/y0SVcy8igbMeeabpyk567povXYNCbB8iraezQ3I6FgjlzOKBm6jgoHTaK2rmWKM7kPBiVAql7cnkhFEWPgp9/fhn89mvhtSDEesvq1gXvaR+IbUJZJ5DxDgt43Lh5y8Ub6zlmQlCWpXNi+SJx3BNokkHZQC0n1wvEAg7NE7Dteh3M57i33vORaVHcZwJ7bRnHuTORjwws86PPZ8Arz68ABGiDTRg/K+pTe4hWRrl0HfGTIyDbdEXcBSnkEPfFJevuoV8xYTb9t+GOE76LOeWKUqI+4PKSRRux76hg3jkoh51nyZ6ywT554VVfBmXDqz9E1UYGZUU1Z1DCzBXMihv+yXRKVgtoJvfwgF8uozjBcGQyAVHWynuuXPbAabWCeuFsUCaPAktNR3CbLdNdv71NUnDSgdd8JRZs9VcOwVh3PjZPmTqdjoja8/PzvX6XlpbSte7qKbtu8FUCPFWFAjxDPQ3J49xaeYehLbi6kUdppojiZgPEfzMbhr2YBWdWF/Gux6cg0jQgByN6xvIJ4uVLZv3mtaBMGglOjyALVXNX0CA4UigMrPVqUCYMB3XGkvbbdTqgbHgsKKJiwPmMmkG5YgPdV2lyWns5nkfW+hrQTOoP2uWprhray/fJW1Z96KIrr6cfyKBs5yegIm0h3BqQCq+8sAJ+8qXVnQsEmaO9cAlKBsRAfr8EcEbwAsGKv6UTaB3z85VBWkT86oYbOQy3bNFN8YWHscRAxjtYB4FWBFDYhMcsxROOgxCwRY9aTOy4iL3O1mG/29ravI5z2DEQTqLxGMvKSbaApBawm8GS/QFY9r8LTktgz5tNWwO6hX1BtzyKd2Avb/c0e/wlem/+5YdbvBURlD/pZ8dh8Q9W0lipeEAc6G90ngMKEuhRWJ2xlBbQldMmeFxpP2VB2fv3H0BZwmQoGZpCF/E94v5eaa/RfmTTt8GxY8dd75v2K+1H+I7y9r5hSxmNRr/vnadPn1IZBGUv/H5ORHyufLKadJY9Zdme7vwtg7KdbdJtcmRQNny6kjzABsSBYuwsTqW0s/oQtyxyzPb4ZDODYWc0GNe9A/bGqk7mcBgNUJOWStuF7TppgbFOjYcww9skRSxPWZyoICDry0vWZDJBXV2dz09tbS398XZHUDbvhIpASeRRlTI5LQYwbO4Dxu0DwGm38Goqd0khBdpK/PeDUH5Py6sOn0KtjWbYEnMThj6fCcNfyoJ9Ux74DeLlSy4urCAgi8GCPJOLwmBOO62BZ5lwOq9dlE6grFWr6aBW85lcmljULEx35ZcMSqC81sL24Eiuiz4OEIxFUBbBWff0dEIGPOo7GSxN4mxHd5cdiccyKNu510zKGhjyg3TyZjp+4GnnAkHmXOjDUHNUjhwO1sbIoi5wv/W3vr8CXntxBZx+aywcmS8tJY17u3yOe6q3bCDjHS7Awx+lAdbxthBtsVh8jnVwLKRWq2m8I4OyfJ5muUwwFjBfnU20Bba6AMefNjPoV48E3bzeYKvjv/vKl84Y7AuDR4qRisctIA/Z+72SwVAk/v+VMiYKqkdHA3g4A7jrzoKy9+7chfKEyaC7yzi8ICDra26EMhoLyvzSHHC9o9zbx2Or1er3vaNSqWRQ1tNw3eBcBmW7QSd6uwUZlPVmma7PR+oCTi/ZZ6qYHl0DTWpfaJzxYdcrF4Yt2vVq4tI0bv0YHIamThpaG7UEytbMmAQI0vaEhJML94igeM9ceVy2YD1CcEDAldiBiL8VXK66nnnstpruBsoadBbyEJ36X8fBKTVtwfll5CVrr/VP02FqtcLyXhcJLJ7719PQog18K6Z7X9osdji64DGM/vJ+2lK2dtBVaFYzQbncywk91t+8Rt4KhqICzqqKIcmAi1jhnlrv36H7aDxykFPVyjHJUDIwBsyVTLAH7YWrRF/Del5wVvLIbL16gmgLkL7AMxkqaiHvg/FQvnS356UeeS6Dsp27fefaB+TJlPTaTECAVsxUffYuPP0kDq5/MAGUsUOgfqP4nrhi6utNFvJvv/rCCuj3/TlQOXIYvUeR0iCckuHm4R7nLcs1tuHKc+8nHN940hX4q+Pvurt8rmOZvoDLKnKe2BawVV0mQNZyZ1XAovV7ZzLvkYKrAcvwrPj6D5gAiRmzOlJReZbzd14xfhYtWt/vnQwxL+6EgvNqf1UEXVcvn0/jtZrpE33WY+dK6PGqXMj8p7F5vkDZ1pIqUD9W0PvH2zwLG+YDyvpU8NlFdp51c84BOP+7uRHxufzxGtlT1k/nyqCsHwNF8mUZlA2P3qvftZ8m47gdw1dqnN4LNJM+AjDqfBXrMdesyodgWvMmGPaMALB1BpqQvgBpDJDOwHMbdHc0EjswcP/D5/sHz1WXtRELyHpOZtjrQr/ZwUJ3A2XXDLgKQ1/IAtzGL2VCINa06m9gPLvYbzM1T3Uw7uUjBCRkTrwHHHEF/MrgKnAzqwLG/uAwyZ35+5NQ9ajzwghXPT55dRmLQZWaRFHbucpXzmO2r4U1hQEb3GvKWK/vHrOiCEoGxkJVajv3m2LkOPovaMg+xnXrHfIcLc0U2AsDfGGgL65UtSGHaAxanzLbcbnK9JQ8GZTt2NMWi4M4/xBwfDB4AlTO8P8+6SjB99mV91Kh6JM4QHC2YecWmvCaK8XxvvLdsrhX10w8QcD1vL/NoXvY3387vfcub1OI21AQ0nqityzXmMXfeIcdy7iPkRB09RX8C8sGM/aRQdkgHmy5Ki8LOA0asGb+HcyHBwI4uccC/gS1XdzNBPY63U7t4a8On+tPHtfTToz//GLgYHFZ4lSGsmBgHNzZdA+intsDCf/OvdjNRyeuMi4vWa6LHnnHjh4jqgJbC8OVi+8VnzsSnU4onrIWFI+LOjnOeIiWQdl8OdCX5zPhfi6Dsu7W6GbHMigbHh36FAN8DYgD9SHfQTYaMsaRV5R23pDwUDwMtDAXnSOAypAznpOQHgN+KeOHQd06cbbPhMEt+1QBV2rZCQQ7AXFfvcVjrq14XBMcbIjN56rjUxEfF7sjKPswV0kTdfQclTIhVYFxW38wbuoNSGHgK93NqYLhn8uCUV/aD49OicOvXH5fC2m/PkH3OuGHR+Huoc70Ib508nfN3tZKXnXaA3u9Fo0ECoPGwwcIwDEU+n4elLOmMZQFt67Q/RqVtRRRuGSg7wU6LNy4IZ3+DyxKxtOWy2B2kxnyB02HwriFXkFurnrdMU8GZTv26pB3sglsTB50HLTnrtBz2HxNnKApd2ZsI3kX+zF0TBjADhdIa+fN6KhEBJy98R+rKIp4w+NywCAwyvTZsPKjS7Q74OrO0rC5A8Oto6J7uYXNzXlRxN94BwFV5JB1B2GxDrvjhx3fsFyQ7tewSXYMxV73oobPbBmU9Wke+WLQFnCCJXckWPf8BRx6ZUDSzE9v0btDv30S5zwqIKFulV57KYPeoWq18IBfJbhQPSAOcExkqasjqcNeyoSo5/aCroEfdZebKpyHqsWzGS/Z9Gmc190z1buzoayomOZR7HsF3w/sOwXLer536k9ch8Ihs6FMUSaDsj68dmVPWfcnjftYBmW57dItcmVQNjy6ET1kfVEXuGupnfIhNE7r7Z7V44/NDw4wnoNnFnLaAiO4K2OiQXswi/N6d8vEAQIbPRgnGe6JvcYOJtBLBAFXtjz7zdZjBxdsPvsdDEjb3UBZ5FSN+3o2EG2B093a4h8bL66kZ91a7n0rGG633ZF4m4DTiT8+Cg0VwgfCnpprlW2w6uPLJDP2a9mA23ftNvFvtvnsKfqtWlTVnip0OA9nCgPkj8XgXvVrlnXQmevE1qQFxeAYKB/dDsKWp86hSUjFTLfgYB6VDQ+uESCry/EfQENz/g4T9OvIZQ8pPetUBmXb+7swr4EmyRjci42/VTFlPihiUsFptbUXDODI0tIK93qPgQcfJoFB3c4j23T8MP22W25dD0BqaKqw1AW/+9oKUqAqMQ6qY4YD5i/633MQ/ZlMuHdY3IWpgO/UYQfd8mjQrxkNAOK/mwPWS+KK7JgGxybsuIVtEs+58t3r4DGb1Oo6ksGOc7jqsmX5fsugLF9LyeUCsYDl0XaiLbA+PRRIdaDAXvM/At3KoeA0BT9W5FIi8ZMjtAD4z1/s4LrMnWe3Q8nwsTQWKh6UAPbG9h2iOXMe0Vh02q98OzJxC+6cK8RLFufrdRt3u4BXfEe4A7Io3f294zBbIL9/GlQs30t1WKcZTy3c30ns+8dbWc+6XOfsPOtG+gE499t5EfG53G+tTF/A1ZlueTIo62aM7nYog7Kh79HSRMZTqmRIMi9lNLM/YSbjWT3D85OXUdCj89JqAqtMd/ZwVmk+c4ImhPqrcjRyTgN1YSY7WOgu9AUr+1yCYS9mSk5bYFU+YhYffNAWNNcaYcbvTtKANaPfZbCaHUH1LPLR7k29B8M+mwXDXsyCXWPugFFvDUqmr8roSVc7a4qvInQtnCkM1BlLOIN7ebupuvUZNPGo37OVKWK3k7ds8YBYQM9Zz+QwtoFmxnDQpMcAWPl5ijwdtwLyP54C1uYWT3E95lwGZdu7+vX/s4mCr7gH9zKWV9FzWJcZ2OSelX4paj7JuTFmDZtF3xjAT5WaCKpJY7xSenSoEAYnaybkEpgwuS/juV+7ejUzjrh5E6xmO8z72xmirHl8rvPvNBTqG++eII8346MLoWhebpPDAjIoy2EUOUsUCzi0T8G263Uwn2unQBIi2GlqA/2qEaCb/xHYGqRdXHr5hZXwygvM4pZfHRGQxdgB6LA0OAFwp4Vniv50Jgz+lPcdVZ7lvZ3XLJhJ73TVnDRvRVz55elLSafyaQtcef4OqjYyFFKGMnF2q/lrj73OzrNuzD4A534zLyI+MijL9p73bxmU9W6biL8ig7Kh70L0kC3pHwtmFb8XtlHxCDSpfaBxuuwt69l7hmNpBFpZirmBV03mTtoa3ZZ337OqfN6FFmAHC90BlL1zsJIA0BPLpA384rQYwbilH1EXgJ0biCu6UkceuwienllTFFSPYqCyc+ueQvw3s+n+lve+CJrKzgPjoBrxqGytV9PguCn3iMeVzqfhSmGAdAXold90NKez0t5ynA4oGx4LiqgYcJqYQGnqvYdp8K8Y0Xmy1Zy5mhbmTAruQGhczRir1JDXawKUL+m5Qb9kUJZ5MtYvuk1A4xs/3tbpUVGt2QaKqCSw1Gs6XeOToXlcBoX94uH6e52fW6yvv3GV92+cT3tSl/n795htt011zGKGRV1HFAaqOenUtNVkp0Ww4S9lAb5/Q54cdtBnDKcPOINbkAv5vXQTBWRQtpt0ZJjdhtPSBpYDH4Bl3zuAx4KT0wH6rRNoEcdccldwdaEVfvPtjbQQuH01dzBhlzyjBUqikp4BsokARu7x7vx/nKGx6dqoa66qgRxUj44C/PhLCAwX948Fiv1i58fba6ppYMZdy4IHj/3p53mdnWfdmHUAzv56fkR8LvVdJ3vKenakx7kMynoYpDudyqBsaHvTXFFDL3i+1AWstgjIIjCLAK2c3CzgsIMxOxlMa/4BVlW+24Vnh04n1K1eCtXxwwG5ZuUUGguwg4VIB2WRtmD0V/bTpFxqSxrPLATTqjfApuYGW4/Mz4ch/5IJSd/NgfJ72qDUKThfCxNeO0oD3sk/OwaltwMDaIQqwfKw2vXt29R8yQg3CgMMJqiaMpY+QgMLNp/JpUlIzZJ5rlsuGTqGFuy0h0+68hCI1UzoB027he+UqNp4qEcH/ZJBWYDWVgu89rkM8liqLu/8O7M26wGfu6pnUaVdDx7Pg4vvTyUqptKsc15r1MyeSvyyyB8dzgkpCtCz6/df6/hbYykMWN1x58C0X+bCyC/sg4oH7XQN7PWu/jY+PMt4y94/3dVNy+1xWEAGZTmMImcFbQHz2RTykrU3+Oat99ZQ6/E19J5ou9Q1gOG967XwyvMr4WdfXe1NJbDrWqFkUAKNhWj3qB/wE3llhz4fuP41c6fTImHNfP9c56XjZ5BeVcvWetXf84Ji+gZ41HdySHYosfMsGZT17JXIPpdB2cjuP5/ay6CsT/NIflERzWzPUIxlgmHwbVC3bxVNzLWzPuZbpceUQ49Cw+7hYNzwHtibOvNS4hZK9cLZoEwYAUZFcY+xSzjdKDtYiHRQdvE75ymQlhicrb76x1p1j6HmuLK+UzEEBBa/fZ4A1Ll/PQ1tzdxeBZ0qcmSoS/Sw8K1zJCvpOzlwebsCnF1ITYiApnrxHA7NuLPCjcKg8chBGuD7C+7FfTcAlclJUDIwBsxVTPAgU7mS8RYZGE9VMMI6UhZo0oYAUhgITT096JcMygIMevMAecmOie7INe7+LGmOnqbnruWhsMn+k60nqN6FD3wHSzEWF9HvpGGnfz5kd726+nj1+OMdqAvY9t0pDNi8tiYLpP7oKMT+6wGozm9is0PzjR5wa0YTvyw4+Hl0hUbRntGqDMr2jH7uyru0FuUQj6zl0c6AmjXdP0WArD5zdkD1A6306osMhYHJ1Jm3HIN4FQ+Mp/8Q5JIFP4As6jDhR4dh8HN74dLWkoBU4uslS7qhlyyPAKysIrr7RbQIXnvA+wIlW1aKb3aeJYOyUlg3dDJlUDZ0tpe8ZRmUldzEPhsoGRDLO8CXp6CmtF6AQb/AJh2/o2ebkXLuNOqYCPVb+oKjpb6T2g6TEWrSp4EyaSSYqys7XZczpLUAO1iIZFD2yo5SAi/PrOb2XBXLgk5zKxg2fQiGXUPAcxS6e1MAACAASURBVIKtLGiGMd8/RFHA9099EDCAih6/W0bfIE/bEZ/fB9kz8gC35XZlwgUS3Pavu3yed7MuCoP05bzrSFWQDe5VtyZwXYxPC0AxMBaqxqa41CybNI8mKeVpC0F3dCctxrXdCzxgl+bCXSbo1+FLrjZ6ykFPB2Xv31C5gnv57HOHA8qS0+jjigLmswJz8eb7Y+Fx3wRACgN/CX8nytghYG3o/P/sr25XXX/Dg7qAbZelMFCmMxQGbL6uzggp/+cQxH0jG9QKPZsdkm9T/iUCXQy3j4WkfbnRdgvIoGy7LeSj4C3g0FWBddefwXwqISBhlsoC0M95H/QbEgHsXTt/jPpfZlHwoz93DLrMLkAjh2xJ/CTe96UsbIKo5/bQjjXelZ4VVKan0ZhTtdC/I4AibiKNw+qy+L1PHVYbFAxLpw8ehyKx86wbs7LhzK8WRMTnYh+ZvsDfsyKDsv4sFMHXZVA2dJ1Xv2s/bU0lfpoA1NAuGEETdM2yxABqd/8qdl0tGDb2BuOOQeA0dQ5u4zC0Qc3MSaBKiQVLjbL7GySM7pAdLEQqKIuT75Ff3Afpf5Z+e6gxdxbRcdi1HRcPbmZVUPCtUV/aD49O8eOj9nwEbBY7HF9UQAPa6E/vhXWDrwLeWyiSZvc2UMYNA1wwEZLChcKgfs0yCu5l1zULUb9T2ZoFs2nw33ziGa8uBv0aGE9cZg3j+4N2rf9tdp2EemRg0K9QbanzUKVLT3s6KPvb76zvFNzLWweglyxOkBuOnPJWpEP+tUQmWN3lYYs65Hs7QTAWf+/1G1Z5KxLSfBd1wde5A9N4UhiwyiLvNu4ywI/UHNxsm9zfTtCtiydvWfSwl1PoLCCDsqGzfbdr2W4Gy6F+DI+sWfjCj72xFnSL+oFuyQCwtwY3VgnEtjYb0O6DV17McFU3FD0l5yT8v6kYL2zXKAoZ/dUDBMwiQCskVY+OBmWMfy5Z1A8dqJBrnW+q3X+OFr/RWzZUiZ1nyaBsqHpAmnZlUFYau4aFVBmUDV03IBiLf0LqQ7mBKWG1gGbSR4Aes3LitoC9oRSM694Gw95R4LR2BnuQuL1meiqoxsWDRR0e0ZO576R75bKDhUgFZTHi9vDPZUGjSvgWciE9aS25zNAW3NnTodrmUTfIS3fqfx2HQKkTbu2vgLH/9zDJmf2n0yHlQkRKEWVKDATiZVo5jwGD0Gs2VMkV3Ov44aBVwEBfpdExUDY0Bhxm5p2lPXSCFvAqRw4FW1Pw/L7GaiboV9miwLY+Bn2TIRLQk0HZZTOu0mT4nV/u4m195JVFflnkmfWVDOpGyPsoCW5/kAIOC38AkAJvxkSDqZyh6/DVRldfy0g5Svaa0q/ju5fVo3bNGvKy0t+8yWa5vtFLFr1l0Ws2VItcqIyp8BrjLXtDQNBB113IB2JZQAZlxbKkLMdydU7APLJI7aZfNQJ083qDTR26d+7Pv7qauGXPHCoB3e0HtOCMwa4rpy0IqIORugApDMa+eoh3fdopGRMN6qVz/dZRDEuh8Zf+2m2/ZbGAtbmFFr0VMzbwKi9VIXaedX1WNpz+5YKI+Fz4SPaU9fc8yKCsPwtF8HUZlA1d5xEo2z82KAW0M/uCZkJfaDmfHZSc7lzZqnxInobGA0ng5Ihab9PpoGbqeFCOTwBrfRhET+7OnfHs3tjBQiSCsqdWPiEg8+KWwDis+Hav06QnXmRDZgwAMMSuWmUbTP1FLrW/cdh1vqI6lEO+QwRhoz61l0DZWwcqOlwPxQkbkb3lHr9Br7uOoaYwCCa4l/t9uB9rD2bSgh0b9Kv10jGoGjG0U9Av9zpCj6u3HiVPDv3j0IHZQnUOtnxPBWWbG03ww89mAPL51ap8A6zuNrbUa8g7SLV2u3t2p+MLfWfR81qwVhj45zAaQJWaBLXzZ3aSGeqMv313FVE9NNV13mWDunmjMGD1xvfs6C/vJ55Z5JsNVSJv2SUDAGyh0yFU9x4u7cqgbLj0RGTrYau4wPDI5m0TfiPIM719Ei3SmItuCK8vYo0DOwppx8Y7318Oxc8o/KrmdQymKLS5oS9kAgb9slv40W7x9ZJtPneVxl0IzPJN5Ut2Q16vCWCqaeBbRZJy7Dzr2qxsOPXLBRHxOS+Dsn6fBRmU9WuiyC0gg7Kh6bvixKk0iVEMGROUAqb8W6BJ7QuN0z8MSk53r2xVXKHI9YZDqQBOR6fbtTU1gmpyCqgmJgNyQ8pJWguwg4VIA2XRA2rYi5mw6J/8eU8DtaTh8CQwrv0n2PVqElFwvhZivnoAhr2YBchnKzShx9a6qKvEP4tgwdEFjwHpC8IhqVcsIk9ZBDgDSfgeLYnmv7UskDa81Wk6fpg85gyF+d6KBJRfkcgE/TLl34OGKYOgYW4yeZQglQGfABj+GnVabfA4eiYUjpoPQnhD/ckN5+s9FZTt9Ye95PU5M1l4wJG6PQdprGIsr+Ls2srj1+HpJ/Fw6V3+PIDugvTXLtPvp/X+HffskB6z1AW/+5pvoMAbhQGrvOKWBoa/lAXTfpkLGJAxFMlccpeAmK6KsB6Kewz3NmVQNtx7KPz1c7TWgXXP/4A5d1RAyrae2si8B86Hx+6YX39xGfz1a4uhpH8cqDI2BnRP7pXWR18jR4OF//T/H1czfSL959QsW+gugvNYMTiRqAuQwoBPMpSpaLG7ehN/r10+cgMpw86zrs08CCd/sTAiPuc/XA/5+fnQ0sK9GBqIHbpbHRmU7W496nY/MijrZowuPGS9ZM2qwLgg3VVtxIBfE/sANMrb793t4nlsyT9KW8GNJ7m3qyAYS8Ds5BRAkFZO0lmAHSxEEihrtzlhyv87DvHfygYMjCVlMj8+Qc+qOZ8JKpAzKw+iP5MJSd/Ngco8Yc+m1eyAnNmPYOQX9pGMTSOuQ4tWWv2F2AY91THgT8OOzUKqdSgbKgoDfE8oE0YERLvQ4QY4TsxlxRT0q3LUaNCkfgzW2koom7aAALKySdzvMA4xPrOabxfQBKI2W/pFBp+KdNHFngjKXsgtg1eeXwG//ObagKzsMJlBEZMKFVPmc9a//u54KPo4HtTXH3Ne55NZM2MS1EwbHzaLAyvGHCEQe+rHHYPReN4LS2Ggu+7d8+zxuVoY+kIWzPjdyS4Pnsjqq986HnQL+4LT1Mpmyd9daAEZlO1CY3fHppx2sByNAkvWW+A0CeeBNT48R4CsfndaWFhHnZkDG/6USu/Yhe/4XvgSonDUp/aQ04HPOjYbVMdEg3K0fy5ZDOqFFIMY5ItvepK8FPL7p4HdFPoxNjvPkkFZvr0XGeVkUDYy+ikgLWVQNiCzBVXJXFEDCMoWB0ldwCrRsGE6E/ArfSCbJX97sYDp2iYGmL3MPUElYHZiMtEZIFgkJ2kswA4WIgmU3Tf5Pq3Eo8eqlMneXAPGde+A4fBE8q5a8OZZanfuX09DW7OwLagYDGzM9w89q38GVIXCB/RS3ivKbjqdy3iaPn0ScFOhojCo37iagntJ5V2vSnsW8XdJ+/Zu9JTFiQJGKxYjlczYQPxnFk34PRti3J+7jJ4Iyv70K6tp8vvwduDvraaL1+iZa7rckT/1+ti1lH9xMDdg6257X8eGgnx6B+gunPVVrMuu/e07GT6pC1hF/FEYsOXuHa6CIf+SCchFjot7XZ2syiLGS+7Mlq5uWm4PAGRQVn4MgrGA5fYKsO38A9hqHwgWY6ksAP3cD0C3NhbAFnqgULVqK3nHFnycAK+9uBx+9Ln2gF+Cb86jwrRfMdRe6ITgLammjaP/mvpt/vleiwcy83RLHT9au4bTN2mRG7/DIbHzLBmUDYfeEE8HGZQVz5ZhJ0kGZbu+SxTRCTSRKR8ffBRtVvvGqb1BO6U3eyp/+7CA4dQ8zuBJbBXklUV+WQwAhoHA5CS+BdjBQqSAsqV3NLQCvz1eOOepEOs57VYw7B4Khs19QPVQSYBq9Kf3wv6pD8ApYC5f8aARZv7+JIGxE354FO4dqRaiRpeWrZ2TBjVpqUG32dUUBqayUhrcN+bsD1p3LgEOkxEapg+H0qhRFPQLA4Bh0pw6TxxnGIBJjGSub4S8D1OhdF4APHViKNCFMnoaKDt+2AkCZGP7HAnayugpix6z6DmLqU3ZAI/6JMGdD1LAbhS2WMSlTN3yBaAcFw8Y9C+UyWKywSsvrIDff20FLzX8URiwQq7tKaP38eJ3QuOVrt8zA3Rze4HDIC82s33SVd8yKNtVlu5+7diqrzM8sg+F7ySyN9aCblE/0C0ZAI4WYTuspLBk5ZxlUNw/jnhkcRzzn5/PoF0cqipx5lm6Bgvxyo74/D5u9U0mxks2Jpr7ultu9aI1NE8v5TlPR89Y9JBFT9lwSew869rMHDjxX4si4nPuww0yfYGfB0gGZf0YKJIvy6Bs1/ceesjiH5OYSTsnirxlG9YFxusmpi5hL8vpAMPBcT6BWYu6FlTj4qFm5iRwGNrC/pYiTUF2sBAJoKyp1UpRtMe/egSsZmk5WI3nl4Fp9d/h3uZzMOyzWTDqS/vh0Sn+FCe6ejfe2K/sh9ylBSHxzOL7PNICSEw0NOUGDxp1KYWB00nvBuSgBps0IFLzvnX0TtfuWE+Tg5pFc1xmLRk1nvLUew+78oI5qNl7qkcE/epJoGx1uY4Ce/3sy6tFoQxGTln00K7LZLjyLvSeTucF64L/7eKza66uIhqTpqPCgoUF89xz1V2RfJSA7GmfZHJd7pTHh8KArXRhYwkBs6s+vsxmddm3rb4K9OnvQeuxVV3WptwQYwEZlJWfhEAs4GirA+vev4H5BAaEFrAqDwAOYwvoV40A3bzeYFMLj0EQiL6+6pSnzmEWkwfEge424/GbOuIkvWvf+InvQJK+5Hpei/+3gzD4ub1QcJ6JxeB+XTl5DC2ka/b4ac9ud+1m5euYgxyyee+NA+SUDZfEzrNkUDZcekQcPWRQVhw7hqUUGZTt2m6p37Wf/pgoWIuYTTfWgnbiR9CU1ktMqd1Xlt3iAmbN9w9w3qelRgmqlFioSZ8G6LUmJ/EswA4WIgGU3TDkOm09FcrlKtRa1pLLtFBwZeJ8mrhP/PFRaKjg50GAW2KPzM+HkV/cR7puGX0jrHhjvdmiMWcfDZKtjcF7cbAUBhWzl3lrTrR83aVzpHfLbe9cksE0Zi4vIkC2aQfjdVE5Jpn4ZZFnFpNRWUveJgiSgQheiiizcNQ8+gSjd7jX7Umg7N/+cytNeE8fLhGtW1SrtoAiKgmK1mTTwvLF96eIJhsFER1I8uiQ7lD5H57UBeyNt1MYzGazfH7nLimg9/vaQVd9lpPiYsuBBaCf2wvszfy240qhQ0+UKYOyPbHXg7tn3DVlPjIILPveBqdFWNAjrKvflEKLMOYiacYoQu5OEcvQMCEdgElR3qHqKy+shJdf4LcroUNFLycIxkY9tweSv9dxcc+m0dCYDflk/aWKqQx3f8UsfmNJU00D5PWaAOVLdvsT3aXX2XnW1Rk5kPv/FkfE52zvjbKnrJ+nRAZl/Rgoki/LoGzX9h5OovGjPpQresPamR+CJrUvmG+HBy+b6DcoskCnOzCbx+1xZq6uBGXyaKidNwMc5tDzMYlsgpCJYwcL4Q7K5p1Q0QT68Nx8SW2FPLKGtW9DQeoQam9d1FXAAF180qPTNTDu5SNUb+5fw5M31tt9KCckgnqJOEGrsA3FkGRQRCd5a06UfIfRSF70tQtmiSKvkxCHHbTzE0AzLQocbXq67Ar6ldx+b1XzM+i/pDReHGBM/1hBnh7KHcc7qdRdMnoKKLtl5X0CZPv91XegKqH9am3WQ0l0EhT0S4CCvonQVFQhVITP8tZ6NXnLajJDEyGcpS74w9eFBZ+pSoqD6tFDfd6b+8WDM/PofS01HY57m3iMYKx+zvvQcnCx5yX5XEILyKCshMbtpqIt1+aBbdfrYG8oFHyHLfvnE4e04Vq24LqiVrDboWRIMo1T0BEJF5M902++vQFefn4lbF523/NSwOfDP5tFNAbG1vadbcrURAJl/XnJ2nU6KBkQS56yfBVQTGd4+a3NwsBzvvIDLcfOs2RQNlALhmc9GZQNz34RRSsZlBXFjLyFYICvEpECfHk22nI+GzQT+kLjjI88L8nnXizgDsxaCk5yljKVl4IyaSSoF84OOd8dp4IRmMkOFsIZlNXVGSHu69kw/TcnBPG5Cu0O9Gpo2jAY1HPfg4Sv7IQrO/htNasvb4HFb5+nyf34V44ABpOJpGQsLqJBsu7yBdHUrl64miYArXkFosn0FISAkTJ2CFhU0vD06k9lkZds640zHZquWTKP7k17pJ3DtmRwAgWMbD4vjtdd+fK9kPfBBDBWd97610GZCD3pCaCsXm+CH76UAa99LgNMJpvoPXUvaio9hzeHtdNpiNmIZucWUMYNA6mC5/nSdWnCYQKz0/oLA7Nr1qxl3mXXrvkS3+Ha7rF36N29b4rw4D0dBAk8aT2aQR50SGcgp66xgAzKdo2du0srtvJzDI9sgbD3EN5/28U9BMi25CwJqTlw239JVBL9V+A4xa7j3vV1+7ISXnl+Jfz8X9eIpu+ulNv0bk3/8ymSiV6y6CGr5OElq0iaQjrXbOC3MKi7X0SL2bX7w88Zip1nyaCsaI9WWAiSQdmw6AZplJBBWWnsyiW1JJGZzGBAGqlSY1ovojEAoxzMga+N24HZN8D8pCMQwsowKooJmK1dOBscJhObLX8HaAF2sBDOoCx6nSIdgKaSezAZ4K13qIbBuwrmT4O2FW/Aol+tBz4UCVaTHTIn3qNBJwY0OL5YOgCyg7IinzTs2AzV8cNF/T2ZK5Q0oK6YLU2wBUtdLQFGCBxJkWzaOtBM6g+Nq6Z1Eu8wGyngV2l0DLBBvwwFRc942uI7lQ8kw9ZqgPyB06EoZTlIuhIRiHIi1OkJoOwHv99DnkeZm8X37kfPWPSQLfokDsrGzpDkGbHrmum9UL9lnQg9LkzEX7+9El5+fgW0NBsEVXRRGMwW5j2/acQNeo8jpUFXJUdrEwX8askUpmtX6dcd25FB2e7Yq9Lck6OpDKy7/xvM58YLbsD8+DIBsvrtkwCc/HZaCW6ERwVLXR0UD2ICWqOnLNjbPVa5qr/62ZW0GGYTcQ0RA+TiB5NqbBwBso0HuanqWJ2QWoEcpwYnsFk+vx1WGxQMS6cPHodbYudZV2bkwPGfL4mIz5lem2T6Aj8PkgzK+jFQJF+WQdmu6z0M8IVesmaVdETgDRkpTHCYeUO67sa6QUsuYHb138FSfJHzjshjdkwMcczaW8NrmwqnwmGcyQ4WwhWUPbboMU2Wb+0Xd3uue5e0NVsgq/8q4pE9NWIW4Lm/dDOrAhK/fZB0Wx99DTCwVyQmp80GyjExULdO2DZhPvdaMjSZPDT4lBVapm7lYlAmjQJ7mzRAPYKxCMoiOMuVmk8cYbw45s10XS6fxvCfYSANMZL20n3y/FAfviSGuLCS0d1BWeSPxa2gb/3cTyCTAHsFOWQxSOmTBZvpOdSeluYZ0e7fw3ij10o3VvI0AUtd8MdvBPZOqkpKEERhgO3johxyy0Z9ai+cXlXkqZJk521ntxF4Y1U9lawNWXC7BWRQtt0W8pF3CzitbWDJ7g2WnL7gtAob2+FvWT+vF+jXjAKnRVhd7xoJv4LAJkvTVzI6lZeAPv+dSaDsgDfbdwHxquij0Ow/naD36t6kC6CMiaL/Ex/F6ZJi+FjSXXPktL+idB29YzG4F3rLhmNi51kyKBuOvRO4TjIoG7jtwr6mDMp2TReZKyufRXOMk7xB7ZQPoXGqHPBLqKEJmD08EUw+gFncsqwaHw81U8eDGMGJhOrYXcqzg4VwBGXL72th6AtZNFmWyt7l97Qw4yfboXnxP6By8Si/TomqwmaY+fuTNMhM+/UJqM5vkkq1LpHbcvc2eS60PrgnentVElEYGB7nkc5Np8XnA0cjtN06RwtquhOMd4c3w1SNTyHOs9YHt11FSgbFE1iGnrNipOIpa+FRn0lgro/s58zTFt0ZlLVYHPCTL66CH352JdTVir9oULCOWRC40Hs6mbVyxmIoHTUB7AbxAQCHoY243NUZXbcFd3HsIQIGZg0ODBhQr9/AvB8uX/Z87HyeOx1OWPbBRXq3X93Jj7rGp0AeFxG00S/6GPRbxvEoLRcJ1gIyKBusBXtGffPpJPKSdeiEUYvYm+tBv7g/ffA4VEl3+wEDyPaPBSGLxEizgwG/Xn0xQzTVkU826rm9sPD/Lqf3sv7MMZ+y9dduM7uOeO5kRf7YR30nA/LJhmti51lXph+CYz9bGhGf0x/InrL+nicZlPVnoQi+LoOyXdN5Lm6dMe0eTlK1rJn9CRO5e+cCqZrovnIddjA8A2bNT7hXS631daCanAKqiclgUXcmru++xhHvztjBQriBsuY2G4z5j0P0wWMpEnpEjfzcXiid2gf0az8Ep8m71zV6z26JuQnRn8mEhH87CFe2d82kXYr7dpdZt2Y5ecr6RaPdK/E8JgqD/rFQOVNcQKcmbQLUTJ/IUwthxRzGNtBMH0oBvsDhe6uftb4GFINjoHxkLICdeUaZCUUcIHebGAnBWARlEZztTqk7g7KD/zebJrZrF9wSvctMzS1wt1cKPOqTBG3KBpJvqlbRBFy9Y5/o7aHApmOHaDKN3NNdkf7y77iFVjh1Aaubi8JglvAxnt3mhEX/e47e8zf3Sbc7g9UVv9uuZZO3rOnJdfds+VgCC8igrARG7WYiLfm7iEcW+WSFJKepjbxjdfN6Qyg935vPXaKFYfSSrZyzTMgtUNmffGU1ccsix6xYacJ/7IUhn94NhdGj/YosiU6kxW7d3Ty/ZbFA+ZJdkNdrAphqmP9DXpW6uBA7z5JB2S42vMTNyaCsxAYOpXgZlO0a6+OWP+Sq6Ypkqi4FTWofQH5ZOQVgARaYXfU3sBSc4BRg1+sIoFGNjQVzdSVnGTnTuwXYwUK4gbK4lRS9ZNFbVuxkMdoho99l8oi6FDMOjKv+DrbaJ5zN4LbWs2ufUqAx1GdXyh0wtVo5y0ZaJnIyYyAfze5tkqleMjRFVAqD5tO5BBAZCsTn6UQjNO1ZSQtp5nJ+AFT95jUEiNWuWOSyYdm4mZRXOXe5Ky+YA/Whi7Q1T3NRfG/mYPQKpm53BWXvXFHBK8+vgD/9YHMw5vFa90K/2fRs3RjTMRgLBkPBhQBLvcZr3UAvOK1WUI6Lh9p5MwIVwbseS13wp2+u4F2Hq2B1snAKA1aO1WyH9D+fhiH/kgl5J6SnbcAAk7plg0G/emRI+SfZ++/O3zIo2517N/h7s9XlgW3XH8FyY6EwYQ47ebvr098Fc9ENYXVFLK3ekf2M2z4WVBkbA5K8edl9WlT8438EVp+r0cLh8QTKznzZ9/9iXdYx+n/jS7fQ+rSSxkZVGw9xNRs2eew8i0DZny6FYxHwOf2+7Cnr7wGSQVl/Forg6zIoK33n1e0/QS/8rgJl8Y4aZ/QGzYS+YMoX32tGeouFQQtuwKz5Pjc5vKOtjfhllcmjwPCUG1wLgzsJSxXYwUI4gbLIH4vcfscWPhbdZnWlLTDhtaMk//T4LcQja7qzh7Od0tsNMOmnx6gsBhtTK/Sc5SI1U3fxLOMBV1oi2S1ULV5L79zWvOAD6CB/LPLIIp+sFMlU8pgA2ea9qwSJr4hLgJKBsWAuKWTq2e1QMoChMTBWiuBt4nRSwC8M/IUBwLo6PXiYB737fMz5wWuBpO4Kyv78X9fShLa8RHy6ibJDl+DpJ3Fw7d0JnUxub20DxbAUQMoQKVLz2VP0rmi9f0cK8S6ZC0fnkP3So4Lz+q3dsJH0bRZIYcAqgrszpv0yF4a9mAmPz0m/C8f44Ax5yxrvnWRVkL8lsIAMykpg1G4i0mnWgXXf/4L5yCAAp+9dMp63rM9Kp9+v4eZhz0tddq5cug5K0Omofyw07AtOD+RDx48YyaQogurR0bD45aVEY4B0Bt5S8UBGf6OS3zu3MG4h5PdPA7vJ7E1kWOSz86zLaYfg6E+WRcTn9Pub5UBffp4eGZT1Y6BIviyDstL33tOBcbSKWLODG9yTQoOmI1sJlG2c1VcK8T1Dphsw6w1AQ68/9ZJ5oEwYDm2PHvQMu4hwl+xgIVxA2fqyFhj5hX2AIKjY6W5OFcke/rksuLfnARjXvQ2G7JROzejqjLBmABP0ZewPDsPdQ8J4xToJDNMM9cLZRP8hpXoshUGFCBQGmt1bmaBDdfwG7ELuy2mzgmZOLFEXIIWBkGQqLgTFwFioiIt3VWs+f5XZQjh0jCsvmANjtRryPpgA5ct889wG04aQusdzT0BCUgo0N+uEVHOV7Y6gbPKg4wQoThp1ynWfYh04LFa49f44KOyXADWXuf/fNEdPMwsgj/l5eQvRDb1lkSaoJi2ViYolpLKAssFSF7BNWRubQDk6CpQzA/fubWuy0KLc8JeyABfopE66NTHkMYues3KSxgIyKCuNXSNeqtMBltyRYM18Exxt3ME9vd1j2+nNBMi2nljvrYjk+ZUYZLR/LO0C1Z6/EnR7f/nhZvovWzz1atCyqpJGQvXoKMgZvY8cHGa+zr3wVL2I2XWEO434pPoT18lLtuH0TT7FQ1qGnWfJoGxIu0H0xmVQVnSTho9AGZSVvi9wBRH/uLo6NaX1As2kjwCs/qO6d7VuEdMeArNHpzGejTe4t1tjJHkMSKKMGwr668EPTCLGNkEoyg4WwgGURT6/yT87BrFfywZdvXhBaxx2J+xIvE0DQvSSrS1sAMOuoWDY3KcDjyy2f2R+vgu4zZmVBzaL91X9IMwe8qoYHE8ZEw3aw9IvUCmGjoGSqMSg7tlSV0uArGaPNNHs9bl7yEu27c7FgPSsWTqfALG6retc9UsTplBe7RZxgFTltmNMhOGHxa42QnFQUVEJUUNHQKBesqhzdwNlix9raRL7i2+097+YfXMpSPqXDgAAIABJREFUinm+Lg9vp8noJN/hgLLkNCjHSa3D0elysBn6a5fonaG/JiyAFt92WeqC178pjodWMBQGrM4tWjPtrBj1pf1Q+bCRzZbk21R0k/G2uxKcl7AkynUToTIo2006UuTbsNxZBbadfwBbzV1Bkk33TtBvFj1lAZyC6opVWBE7kcYZyCHbWijO2EBV1Uo0PD/+YnA7LwwFBbQ4Vh0/nG43+tN7AT+dksXyLAB3LNhb/QfHtBtM5CH7JHlpJ1HhmMHOsy5POwxHfrw8Ij6n3tsie8r6eZhkUNaPgSL5sgzKStt7lfOW0x+XQqQALEK0bViWRBN+zfxhQqrJZT0t4HS4gFnDWfwz5hgEOZ1Qv3E1s3XxPHeAME+xPfmcHSyEAyi7Z9xdAk4fna4RrUuaa40w43cnSe7yXhfBYrSB4VAqGNe8BfZ6hasdbHPcy0eo3Mo+l6BRJcxb0iUoQg6ajubQbwTBWalT1ZJ19O4NhsKgFr3gU2IAKQzETtZ6FWgmfgKNq6YFLtpug7LhMaAYFAMYAIyS0UL3jYuB9sbAPErdFXJabVA4ah4UDEsHPA5VWr9hE+AnmNTdQNnff28jvPz8Cnh4W3wvbvSMffJxPNx4fxw4/YCtujsP6ZnTnjwfTPdw13U6yVMWPWbRc1bstGAkEyAtfdh+UUSrN26gd1zTxUtBycOdE/jfEPPVA6AsaA5Klr/K+i3jQLcAFwu79/+PPztIdV0GZaWybOTKtVVdpcBelodbBd2Eufg26NPfIy5Zf0FBBQnmW9higZIhyfS+LxkYD3y3/PMV/9pLSGGwAtTqwMdcCMYidYHxHkPfl/7nUzTG3pVyu4MaZZPn0n2Uz+YXmKxq/UFaoDaUSc/53UHRAE/YeZYMygZowDCtJoOyYdoxYqglg7JiWNG7DOTaKRkQC20PH3ovJOEV7ZTe0DhVDvgVtIkRmD05lzxmjcdnAOdgyOkEzd4dNCFrPHIw6Ca7swB2sBBqUPbJJTUN1nanCPNU8NU3RVfqXAG6Ti5n+D5Nl1bTs2MtZbZl1Ze3wOJ3zlPbqT86CkWX1b5EdptrqskpUDuf3zaxYG+apTCoDJDCoPXhPQZcOXU8WFU462uXTwTNpP5g0wrbtugpTH/9Ev3HVI5rpyxwBa4YOc6zeEDnLQVlNBlRbjsaUP1gKyFdAdIW+PKStdvtYDQafX7Y8Q6Wi/S0eNo18pId2StHkltBDtmnn8RD5Ql+AWQq05eDYsRYsBvEt23Lvdv0W2w+y70FNRgD/Pe/rYRXXlgBLc3i8CYjhQECAsoZ04NRi+riIl3Sd3Lo/6TmafALLN4UsqqKn22Flsbj2lu7PSVfBmV7Sk/zu09HczlY9/wVzGfH8qvwrJStpgR0c3uBbs1ocJrFeV8JUcCu00HJoHhm0Tc6kZd3qRD5WDb+4yP0v/b2L3YJrUrlEYil92/iCFd95JMd/NxeGPZSpivPUldH4yb09OWTjFVI5TQeypdzeNzyERCCMuw8SwZlQ2B8CZuUQVkJjRtq0ewkxWYLnQdMqG0gWftmMxGgIzAbqqRNH0Desk07F4RKhW7Vrun2LgLXiBPUxk3y3vjMGxABWnByeNV2K4sEdjPsYCGUoGyz2ghx38gm6gKkEBAj5cx+BNGfyYTEfz8I5fe0JNJceIqhv7i1E6wmO2ROvEeBXNAD6uSKJ+B0iNO2GPpLKcNYpiBgRdeFnuQYhKhkUILw23I4oGbqOPpIsSW79fppei+3nMkWrhtHDdWMaTRRajzUPulQxDHbC2s3BDa58WwGeWWRX7ZNIUIQMU/hfs4RjPXHJct6webn59P2N67v0tJSuhbpoGxlqQ5efXEl/PTLq6V4POFKDLPD5+LAuX56pv2yubYO0HOqdltWe6aIR7Vz00A1NlZUb1kEYhGQ/fO3MkTUFKAqORGqRw8VRSYGiYz/VjZ98Fiq1LJ/PujnfgD2RvG9rqXSOVLkyqBspPSU9Ho6LS1gye4F5kMfA9i55xBcWti0KtAv/gR0y6PB0Sp+QEeuNt3zTIpy2uqPIGbJcGFgsrscPsevvIALZYHRyShjhxJ1gbHwUYemkr+XQ8BswXnGAaI0fjKNmdTb+dG2PB23Ah71nRySoKcdbkTACTvPQlD28H+uiIjPyXe3yvQFfvpYBmX9GCiSL8ugrHS9VzpyAr308TtUyVRdCtqJfQD5ZeUkjgXMRefAtOYtMOwd3YEb1F168zkmanTdenEne+5tRPIxO1gIFSiLQOiM356EEZ/fB+i1Gmxqa7bAgjfPkufr3L+eBuQExGRVPQLTmjfBmDsTru0pI68n5LbaNPyGq0ywbUdKffIijxsGjrau2yJbvXQ9vYN1N+8LMlPT6VwCkFsfiOdBzSrgaNODZloUaBYmi8bB6TS0Qml0DCgGx4C9+dmEzYh8aRiEI1aULYb2ViM8HjwDCmMWANjF5w5l7cP1zYe6ABeWW1pafH40Gk23AGVf/z+biHvv6pkKLnMFlae+WQAFfRPh9gcpYDcK46NHHuOSwQmAAK3YyVCQz3iuHw8uwre7XnOHHaTJ/7wR4iyOsLLVmzaTro3nzrFZQX2jl2zc17Pp/0Mqihu7roFAWYanMih15coeFpBBWQ+D9NRTDOx1MpYJ7NXCf/HDYdARGKtb2A8QnO3q1HTlJuNV2j8WylKC3wHgT/9ffGMtURgc2MHsNPNXnr2uP32C4ZJNGMlmub4RjEVv2cRvHwRD0VMGYOZJK6i98oB2CtUelICex6Wh+AfsPEsGZcW3bSglyqBsKK0vcdsyKCudgYm6AL1kzfxXQ6XQpnHmh6BJ7Qvm22elEN8jZSLYZlz/Lhh3DgZHC3eE5NY7N2lihh4+dr10Ww8jsQPYwUKoQNnM1HsEoN49VBW0+dAjNum7OeQhmz0jz+UcbW+uAeOG96B86ViY+bsT1F7ar09AdX7XezkEfZPBCnA6QTUuHupWdW2ABAt67/WPhYq0hbzvwGE0Eo+seuFs3nWEFGzauZy8ZC3VpUKq+S3beCybAGjl1ImusppT54ECTUYnufKCOdDdL2JoDHZIQ+nApZvJZIb0ufPheO4JrsuC8lhv2kj2lJ0/8TIBiVH/lCZY3pX3UuHpJ3FQvFf4eMHe2kYUBtULggvU4q1T8TepTB4NDpPJWxFB+X/6FkNdgMG+xEwshUG1CBQGrF7IK4u7K5BnFvlmpUitpzYSjQHSGchJPAvIoKx4toxkSZabS8G2649gq+W/SOy0mEC3PgF083qDpaqgy2+/bt9hZnG3fyxUL1rTJe2fOVRCoOwvvy6MTkUZO4RAWZOiiFPP4Z/LhKjn9kLx0BQaKzWfY+jEOAs/y0Qe/cfRM6Fw1HzRFtF9tSfmNXaedWnaETj0o5UR8Tnxjuwp6+8ZkEFZfxaK4OsyKCtN5yGHLHLJhpK6gL2zlvPZoJnQFxpnfMRmyd8iWMCurQTj1o/BuKUv2LXcHkvmynJQjY8H5YREMCuDBwBFUDssRLCDhVCAsnknVASQ7ky6E7QtcpcWwNAXssiLqeB8u+eD09wKTRuiYdub6TDkXzIh4d8OwpXt4oJwQSvfhQJa8+7TAkXLnZtd2CrTVMmwsYIoDFheaIuqWnRdTcWPCJBt3i9sssFXkerx4xjP4MvtHnrlY2cyYO1ScdosX7KLaAwMFe3PO1/9AinHh0+Wr9xIB2WRtgC3df7kS9LQFtwYv5aelYt9A+d9bjh2mmS0PuaeGPPtK65ypmcUKI05/Laccslg81jqgv/+N2l2s1SlJEFVzFBRJ/KVDxtpd8eE145KstMCA33pF30M+s0prJnkbxEsIIOyIhgxwkVYFScpsJc5f7egO9HvnEoLJeYn/Li9BQn3U1i5HHca4Tw2FtS7ujZOxqsvrhBEYdB0NJvGmMrkUV7vavf4uzDmS1uZheqh7Rz8XisAgHJnLi1E6x+3B+j1VT6crrHzLBmUDadeCV4XGZQN3oZhK0EGZaXpGsXgBJqYVM5bLk0DAqU2Tu8F2okfAch8YQIt57u4o60RDLuHkdcses9yJYw0r5oxEZQJI6Atj/8KOZes7pLHDha6GpTVVrfB6C/vh6n/dRyC4ZE1tVphea+LBO7O/tNpaK5181xyOuBS0gxI/PIWGPIve2FH4m0wtogfNTySnoX69RmgTBwBzhBwl1cv30jvYt21jpF3uexnqasF9LZo2LGJ63JweTYraObEQsPM4eAwuT0vwUntUNtaX0MUBmVDY8Cuf+aRbbdTcA6kMWgtDN4DjqUxeBK/qEtoDGRQtr2Lf/udDfDy8ytBCtoC7aNSyO+bCPd6jwGzNoidHQ4HlCWnQfm4mZJwqtdlLKF3ib01ONqZ9Kh9NOlfHCsN2KDeuo1AgqYzZ9o7UISjp9fqYPhLWTDpJ8cAaXPEToYbhwgEMuVfElu0ZPKQ3qR3n4/pw9ejHnmq2Tr47RlEMBCZ3m5QBmW9WaZn5Ds0T8C2+89gPt++i8X/nTtBnzmbfovGvPZFVv/1xClRNnYGgbHIIcvHo1ScVtulvPurPfR+Hv0RP7qa6phoCvBlqva9mH7mfybDk4/jeY2FLJpmeNQ7FRRztrQrFkFH7Dzr4rQjkPOjlRHxyZU9Zf0+YTIo69dEkVtABmWl6TtcWcRto+GSNGunkoeWdu6gcFGp2+jhtBrBkDOeeGaRb5YrOcxmUONkMiYamkTkxONqKxLy2MFCV4KyCMIiGBv7rwcAwdlAE24jxS2kUZ/aC3vG3+0QqEtdoofZP91M12b8IhuqH/dAqgIPw+JW4+r44dCwXQKg06MtrlMXhcFU/xQG9BtNGgX2tlYuUUHl6XP30ju47a60YEf97i0EQldNTnXp25qXT3nFPDnUXBW9HLhoDHbmeikhXnZFRSXEJ40B/A42RbKn7PSkczRJHf7BoWDNwFn/ynsTobh/HBSs4zcJ5hTyLFN3B3cKxYH21EVfxQK6ZqlR0f+oNiu4AHavf0Ma6gL2ppA7m6KAT5vKZon2XXihloJF4v+Z6At+TgfoV40A3Yoh4LSH/2IigrBIb4I0J+wCjj9gFgHYqKEjXO8UfLdMmpJG9bGTApHpq3NlUNaXdbr3NYdBC5Z9/wTz4YEADv6LKK1HVhIga7guzaKRV6vb7VCMAVIHxEHxwDhofRL8Qq7XtnxcUKtbaQHytZf872So377xmZdsjA+JAOrdB+i+Nv9sAewce8tnWbyIYCyCsgjORmJi51kXpx6Bg69lRMQn9+1tcqAvPw+bDMr6MVAkX5ZBWfF7r2bHAVphfDoggKjf4qvjktg4tTdop/R2ncsHIlrA6QDDmUVgWvU3MN3a4VWwJjuTBg/1G1eLGkXaa4NheoEdLHQlKLs94TaBpY/PBb7t+sqOUhj22Szi9nt0qj3ggtVkJ4B26PN7Ie4LW+DcLHEDx4RpN/JSS3flAj3zhqdPeJWXopBixDiKDO9LtqGokPRsyj3iq1hA12waNWgmfgKNq9MCqi+0UsWYZJp8NB7c66paMWMh5ZVNmuvKC+agq2kMgtGVrRupoGzx4wYCZH/21TXgkCDG2pWRS+jZuNAncNoC1sbsd+WMxcQvazeI7xWOnve40GPXBTZZRuqCl59fAX/5dmARvtl79PddPVZ8CgO2Tfz/Qeqc6b85AeY2cTlxTQVXGUDoqjS8xew9BPvNgrDuXq54zIK0XPJZjmr3Ou7lApHpXp/rWAZluazS/fNwUcNyNBqsWW+Bo62e9w23nd1Gv7+2M13roWmp0wAu3BIgOzgB7LogdkzwvlvvBX/0+VUU0FJV5XuRvDomCpQxUeDPSxbvCykFh39mNwx7Kct7wwCAdAV5740j+gKfBcP4IjvPkkHZMO6kAFSTQdkAjBYpVWRQVvyeKsYX/4A4qNsffGASMbXTzo0iT62GjHFiipVluVnAdHsXAbOGk3MBnNyz55Zb10EZPwxq56RBsFsw3ZqOqEN2sNBVoCwG9ELP1n1THgRkJ4vRDmsHXSUZab/K7eBpe+dgJSR/LweiP70HNv9pGjQd97+yH5ASEVpJvWQecSqHUn3VKsZ7tOmyF142pxNqpk8E1cRkSSgWEIzVTBoACM52RbLW10JpVAxRGZjcuHGLBydS1GHt+StBq9HVNAZBK4wTLb2evDAiLdDXr761jryG7l1rXwgSwx4oo/L4ddrOefuDFDA1B0cJ4K6TqVpFCyHqHfvds0U5ttarGZqRnYGBFmn9swjkXpoQvFewrxuq276DFnq0J6QZC94/Wk2c5bNfPwW4MChm0m+dALoFfcBhFO+ZEFM/lMXlRc+V596up1es+7VAZXrK8DyXQVlPi/SMc/Ol6WDb9TrY6x/zvmHDraMEyLYcXMy7jhgFDQVFFNCLANlhKQB2cd8ngeiYEn2S3tNv/Hib1+oNa1fSO7Z6rO+dqRWzlj1blJ4HSd/JhsHP7YWC817GYw4HBfbCAF8Y6CtSEzvPujj1KGT/cFVEfI6/vV32lPXzwMmgrB8DRfJlGZQVv/cQlMVtgGGXjDrQTPoIGtN6hZ1q3UkhpDAwrXkLDAfGgNPCvU3eVFYKqrGxBALhdsyeltjBQleAsvXlLRQcJf3PpztQDfC1OVISjH+VoSvYGnvTxUWrqWyFeW+cIaB2yk+y4enkgWDITvEKxvNtrzuVs+l0NGBuPOjbK0Hqe2YpDMqnzONsSnfpPOkpRSCytlvnaDFMfyr44EScynvJbDy6nyYhFYmJrhKm8iryFMFtiWJMurqSxsB1E0EcRCIoOzn2NE1MY/uI78FtN1rg1vtj4ekn8VCaxU29E4S5oWbjLigZnACWek0wYjjrNmzdQMCsVStc9u+/hkFkVoDFJO2EGykMlKOjQTllMuc9iJF560AFRH8mE+b+9TRYzeIBKbb6CgKHcBt1uCb0dk1ISnHRDqCe6OmKVAQIvnIl1pP2xs1bLk5ZdxlCZTqdTrBYLD4/Op2OgIa2Nu7xIJeecl5kW8BSuI8Ce1mf8n9vI3esPv1d4pL15tQhhVU0p87TnBVp95BLNpwSBrZ8+YUVXlWqHh1FNDE2rdZrGXtrK3N/A5hxD4KxCMqO+R43FVDtwfPkJau9EpgTh1dFuvgCO8+SQdkuNrzEzcmgrMQGDqV4GZQV1/olY5hI1yVRSeIKFkmaduZHoJnQF1rOy9urRTIppxgM+mVc/y4Ytw8Ee2MVdxmthgkAljgC9NeD91zjbCRMM9nBgtSgrM1ip4Aocd/IhhaNSbA1ru0po6AqIz6/D+4dYQII4MQ3e/pDojEY/ZX9cHLORTCsfRsMmTGA/MJyarcAUgEgj7K1vq49M0RHipHjOSkMkO9ZNS4eaueJPxlxGFpBM30oaBckAjjEA0z4mrB60gQCZtVr2wNOqlZtpjxFojhcl5FEYxBpoCzSFrz6wkpA2gIp0sV+s+hZuDRAHEoLTx3trW2gGJYCysVrPS8FfY5gLO44qd+yTpCsproWoi7423e6ZkdD1bgxUD16CEjCO/Hszq/tLoPoT++FBf8451o0FGQUL4VbDi0lkAgB2nBM3gBUBFnxGlfCfAzshYG82ITHLOWBUJkItObn5/v8lJSUyKAsa+we8G2ruQu2XX8EyzXuRWAuE5hL7oJ+zvug35bapWMF1dptBFhiDBTl8vVcqoU071ffWEu7RA7sKOykR828WTS+VI73TRVYmjKd/ueqlm9wyRj+2SwCZo2tHcdl1uYWeNR3MhRPWu0qG6kH7DxLBmUjtQe59ZZBWW67dItcGZQVtxvRQxY9Zc2V3Kv04rYmXJop/xaBso3TZW5Z4dYTVsOuqwXDriFgXPtPsD49z1nZabVA/YZVNLCgQEi28A+swXkjAjPZwYLUoOzagVdh6POZoLjZIEhDq9kB66IYuoJJPz0G9WXMFs78MzUw9geHyTsW6Qyai54Q+G7YMwKcFoOgNnpC4Zq0VKLpCId7rV69lQbm2nNXO6iDXrwIHJsryzvki3HSvHcVecmay0LDp2vXN0HpkBhQDIyF1ry7rltSDB9DEzHt4ZOuvEAPOtAY/H/2vgMsjutq2/EX23GKU5yeOPmSuKT3P5+dHqcntmxZzZIsoU6XkEAIod67BBLqvYEECEkIIdRQ7x0JSfSy9KXsArtsf//nnNHAAtt3gV0093nmmdlbztx77uzMve899z1dQXjqasUslPM1UJZoC8iisytoCx5sOszPwJU+k7qEskNUf82hDP7fNd1/JEZ57Czfs02wlq22sg3Vwp2iBwpevWPCHLdgsyDG4ajqvXv5/SJPTXW4jCsZz23PY2B2+TuZHgNmDU31UCz8AERl4I3BGoDqiKUsccuKQaQ0UCiUDOaaW85SHlvWt3q9HjSesXXI5XIJlBWV3cvPRkUxdPF/gTZ9HGBqD/hZa7q2+D4UC96HcuN4mLTOGw9Yk2svvmDyHPZ/QnPWyviupXKxVxdr6Ylb7jEo+7MvdF7Y410I/sOhb7DOLc67g4hScGhwu1vsmCD4mJj/5xPt4guX78Hd9yejpdy5OUM7IV7yQ5xnZUYfQdJrcT5xHPn3Tn5XNjZ6L21OT3evBMr2dA904f0lUNZzytWUlfHkg1YcvTnUzeiL2in90VKa783V7B11M+igylgk8MyeWml1BVx5/gxkIaNRPisK2krXHVH5itLEwUJXgrLHYh4yeHp8jXNgANEVRH4/lctu9b8MsratlTVjVd8zHEdpj85XwVBbCPXGPlDtHgmTxrYjAl/pF0/Ws6W4kMGIhhNdw6fobF21tfUMQhVGzW8tqqur4/8dOd7zdCAgVj55IOr3do9FnrX6KzKP8XepYEwgoBMWfbRVVU++VUHQesCZh0hjULbrqLVqeEW8L4GykWMEPr2QwZ4H8xqLK3Gr7wTmki081H6RwtMdZdLrkR8SjYLw2YDJ5FHx5OiLHH5VrXd8i/2bL8cy0G00eLYu1homUhiUTo2ylsVj8QTMEnc6AbOeal/z2Xi2lm3JvuSxenpKkCX+WEtx5vezBOSKZYqLS1ziqTWXb+la4pS1pJXeF2dU10Gb9B60Bz6ASevYmFBfkc/czYo4f5jUjpVxW3MGA3JHCM5AyZBIcc27t+nTwiTRGJgH2cwpPL4snzbJPLrTdd7YcB7ryNNPdkqj3QV0iKHpcTHTFpRsskxrIObzlbM4z2JQ9tU4JPnAceRfEihr7/mSQFl7GvLhdAmU9Vzn5YwK45d/XnDX8Yd5orb1uxYzWCCf+6EnxEkyHNCAJjtD4JmN94ex0bIXVk1pCcqnRUAWOgZN1684INV3s4iDha4CZckylnj2yFLWmdCRroAmtocXZTEn7dhP70fa0gc82TU0lEG96X2odw2HSd2zHmqdaV935pUn7GIrNgIlvCXkjZvczmKCwFhaDCFw1qPBaGDKAqIuIAqDng6yOdP521Q2v42ioXLHfo7LHxfhkeoVrozH3fcmgyY23hp8BZS9dbmMJ6G/+FJn6yBP6PZMn2ju+/Njl3tCnF0ZDZdv8P3qTjv3PrYrGEBtomCJ6gg3u0hd8LdXunehpDRikkBhoO9aDlvS18l1jxmYje131iUO9Y46Jw/yihg/KFePBl17UyBrV6IdIKBVDHQtUhGIceZnsnrtSG8gWspSmisyzeVbupZAWUta6WVxRi20qcOg2/cPGJWO+YnQ15ZDuexDKFYNh7GpvlsUoq2oRu5Hwfw+pjP99vbw1x/t4O/hmPefgKUtLWAu2YDhgI13qvLyTXZeluMXZrGJs95M53dlytx7vGCYHbQEWR/NhMHMit5iQR+JFOdZp6ceQeL34nziSP2nBMrae7wkUNaehnw4XQJlPdd5RJLODr40bduiPCfds5Lqp7+P2ugPgKdku7xnteeaNENNHtRbB7J1pa7klkUhxpYWVK1dxSvANbu2wvTEss1iZh+OFAcLXQHK1pU1I+iLyYj+aRpbuTqiJkt0BWQNK1rM0gS3oULgizUoK6HeOoD5go3NHgbzHKmsL+QxmZintWp194A+jqqkbP1OnozIj2cyXQHRFtR2gRMy5fFEXvhqvtLZOsPRuno0n06HwrGByB0SCMWZ462icwMieftiWaxrXuxbBQEwqDW47zcHD0bPh0nb9eCT+b0dvfYFUJYYIH7y2Ti89kIscrI9v4Xy2tRN/B84984UR9XmkXxF0xcjP3CKx79pRlUzL2RWOvCuiey3hyf3ayd3r0V3VXyC8E1P6Z4twsdWZTPYEDf4vEeMk1uyzrK1rOp89zordOTBSzua3ursSwRcKU4MBNISh6w5cEvpInArgrDmHLP2ZIqyHT1LoKyjmvLdfJpTEdDv+QMMNQ8caoShoRqKlcOgXD4EBM52RyCLWJqj5tJ2/jHhHnH22R31LitpwqvPxeKNF9fw7cqmjOf3qWzedJu3J98uuWQJfCvLYj5FjRbDn4lno4uqtAtsJVtz6prFvL4YKc6zJFDWF3vPep0lUNa6bnw+RQJlPdOFypNXeEWOPgC+EORLxwrWsiu8m2rBF3TpTB1pm7sqJQItcX9Dy9WdVosqMk8IdAZzo73CSZLVirqYIA4WPA3KErhKYCyBsgTOOhLM6Qq2jLuMOlkT1g4R+GSJPzY7s41OwthYA/X2D/mgaylY1kDTvds8aG686l1bXlspDCLnsWMvcvBFjr48GfTySsijhqA2puu3KztT75acbOR+FMgcs/r6J56K1VrkDBUmaYobbdZmzsg1z6u8n4+7fSJQHJdoHu01174Ayn709yQBOFzk+clh9Y1sPBgQijsfTIAyv3uAALHzVXlFDAZU7/c8l2vdoSR+39jjhf5/X4jBa8/HeGxrv9g2e2eDSsWWsqVRkfayeiyddngQlcHGkZc8Aswqt0XwNmvimfW2QIAqAa90mAOyVE/6bSnevIw5ICu2zTy9o0wxj6NnCZR1VFO+mU97Yy30u96EvtCxRVhKmCWxAAAgAElEQVRjYx0UMSOgXDoI+mrLjoA9rYma5CPs74SMh4pmLPW0+C6X98aLq/HqczEouydDqb8fW8rauim1l8HnANvv3NCvJmPMc7txt/9UPA6PsSXS59LEeZYEyvpc19mssATK2lSPbydKoKxn+i93aAh/AEpjt3tGYFdL0WlRO7UfyGJWCt2vAQJkCZglgNYaHynRGZRNnQjZ+HFovt3mpKf7a+v5O4qDBU+DsmTRSrQFjjr2MqcruJJYBOKh9f9sIka/uA8pc+5Cp2lz1EBWseodQ9lKlqxlpWBdA+y8LnRMlzoQsn532yl5/kRhEMQgjuKMY5Mo2xLbp9bFzYB8yofQVcnaJ3jBr+pt6/k7VRIZ3lobAmPJ0UfO0GAYmtynWijdepgtThR3clrv4S0X3g7KHtyTzRPPv/3Q8+MIk9GIi+9MZkuprLiUHumSsjVbmctQr1B69P7GFjVkYQGoWrXYqlxZXg1bW/3924K1ldWMXZRQOjm82ygMxCYkzbjNwOz6Ye7TRuiri9g7fGOy7wE6oj566iyBsj2l+a6/ry43jQFZ7e1NDt2MFjWICkSxZAD0lQUOlXE3k2wFffdpp0wQKjbvdVdcj5Qn6gLilV36u0geu1WuXGKzHjTGyxkSCLWszajCUoEHpyux48eLcPudcKhLete4XpxnESi7/7trfeJI/ccuydGXpQfVLE4CZc2U0dsuJVDWMz1KFrK+YiUrtlg+Z5DgiGb3MjFKOnejBojCgHhJVVv6QVdy0+KdjWo1aFsmbbOu3roe9Ls3BHGw4ElQVtyymRFr39O9rsUAmqiSJVHUj4/g9lEZpv3iKP9e9p/TkBe3B6eIN5b4Y1WbPwDxyUrBugaIgoOc79Rsd2ySYl1S16TINu7iyUlx2HiPOx5qvnme36nKtD1dU3kPSC2eKHCfy+N3tEqr2LibaQzyRtt2mtFawNaFwYhWbrZm73pfeTMoq2zQgqyB6KBrT4ezI5bwc39m4BxPi3ZYnlZeh9zhoSiL2+ZwGUcz1qcd5O+kOs/yYkB4n108qd8QfcxRkR7NV5OYyPWTHzjgUbn2hO0Jv8Hftc1j3N+10JQWxzQG2pJse7eV0s00IIGyZsroRZf6yjvQ7/4dNGeiHWoVA7Jx46BY1A+6MsvvKYcEOZEpLyiKv+1kIVub6f7ijBO39njW11+IQf9vzUdpgJ9N2SWLVvO3rnDKXJv5KFFVUIY774Rj+48Xw6BtM8KwW9AHMojzrFNTj2Dfd9f6xHFYAmXtPlkSKGtXRb6bQQJl3e87so7lbRJDQ9wX1o0S1HkPUDulP+pmSNay3aj2drci60umM1jzNlQnlwN6y1upleczIZvgD9nkUKge3Gsnwxd/iIMFT4GyD89WOuzYqzSrHhGvHeaJ6qYxl7Fr/DWM+HgCQr9+ADcPl3ZSJ1NO7B7JALqhrnu2mnWqhA9FKOhZDfCD6rF9cLwnmlV/OIWtRgonODaRcriOOi1qZo+GfH6gV3N16+vrkO8XgLyPAqEpyW9tXn7wVP6OlSxw3wkSWZzc6xuJ/AWeB99aK+zChTeDsmQdS9szyVrW0yF/fyYeDgrG1T7hMKg9D/g6U9+qfYfY2V5LsWctyU06LcomBaFy2XyL1fn153uGukCsTCuFQaRnHOuJch05ewqYNWlUUCwdCMV6oukyOXJrKQ8ACZTtfY8BOfPSJfwN2iMjHXKAZ1QpoSRAduEH6I5FDUOdArnDhB2cRFHUklfo850Q+fPp/I08HrHKaltotw/t/KE5ObT2v3UPJ6zAjT5TMea5PVj0jxNW5fpigjjPOhV1BAnfWecTxyEJlLX7qEmgrF0V+W4GCZR1v+9yyMHXkEAoT513X1g3S6ib1RfyyAFoPN291hvd3Eyvv532fhrU6/8L9bZB0Jfft1hf8hBfsXzBE6vZDT5tNSsOFjwBylYXNML/c4kOOfY6EfcIoz6xj/MnzbyDCa+kwO/ZeGwNuIKWps6epY2N1VDv8mPnbIZa3x/UWnywPBxZSc/o5FAPS/WMOENzE2QTxiF/pLBdH+RVyUNBkbKVrWRbcrx/0URx7pRgSeIfBBieOOUyGJD7UQh/yzxhUVORfJppDOSnr3tIw+6L8VZQdu2ia2zFOfRvnufibZbV4Ob7YcgeGIzyzNvuK9FNCWRJn+8/GUWzPe8EsP7YEf4+Nj9o79hFpC7413d7hrpAVFnplMlMYUAAbXeHHSHXPGIxq76extaydJaCYxqQQFnH9OQruUwaBbQHPuCDru0FU0sTFGsDoFjwPrRF7d9N9sq6kk6URGwoRODkiAlADy/EudKGjmVUDx7g2uCx/J38+cvrOia3/i4Mny0sLq/a2Bpn7aLmxFUeo1SnX8Twj+3luYC1vL4YL86zJFDWF3vPep0lUNa6bnw+RQJl3e9C5uMb7JsOswiMlU8eAAJnpdCzGmAAMGk8Wtb8Feoza2AyWF7lFaxmx/m01aw4WHAXlFUptAj/3mEEfzkZDRXWt0qrG3VY/k4mT0qJpmD5u6f5esoPU5F/TW6x4w3VeVBt6gv11oGQLGQtqqhTJC0ckJVsXYr3eemmysr37uD6la3dygP36oNtXro7NcaJCOKPlUcOQv1236GCKV+xiHVQOmNqa0tbCmWt3HPaKsv/i9bMDlzkRK7BvQFToZU3OJC767N4Iyibk12D116IxU8+Gwe93nOLBKI2z78zhfv5evRWMarHz3WnL3CdyBu4JwNZy8oiQtiJn7nc0H/v4Mn8trk9awklPyBQLNTs75n3o2eAWRNbypLFLFnOSsG+BiRQ1r6OfCWHyaBj61iykiVrWXuBrcs3hEBJgGz+LXvZ3U6v3JMkcMQPDkJR1Dy35XmLgNLgUTx2+9VnVvC73FK9iD9W2LUabCm5XZyhRYOsj2aCLGUpTP9FGs8J0mM8v1Ol3Y278Yc4z5JA2W5UejfcSgJlu0HJPXULCZR1T/P5YTOFj4BfmHuCerB0/Yz3mcagpbRtK2sPVuepv7XmdhLU6/4F9c6PYKjOtaiPdlaz23zPalYcLLgDyhoNJsz9/XG2fC2+U2dRTxSZf60GYd86yKvgS/55EgGfT2JHXocXZln1wq0rvMJ9oNo7BkaV93mbttrYHk6oPyKADrrqqh6uSefb6+TVkAWOQM3OzTA2qZgDvGDirM4ZXYipjZ2KmuiPYFD61rNSFDqev1/y3W2AXdX+Q2wtmzN8vAuaaF+EwFgCZQmc9YbgjaDsL760jieZty7bn+A7q8MzHy3k/s3sO9PZol2b32RCQfhsFITN9Divc8OJdJ68N91rA3x/8dkYvPaCF3jW1uvZUrbUzNFe1yq6s3QRmKWzq4G2XyvnvQPimJWCfQ1IoKx9HflGDhM0pyKYR5b4ZO0Fk7YFyk0T2EGeJsf1/5u9+4jpRVPmC9/uIYE+69BLbIv5WXHuNEr9/VAaOAJ/enULfy/HvHfQPAtf540NZ/5cebp9B64lm1LYSpY4ZSmQH4lhz+zF2M/0zIJZp8Z4IEKcZ52KSkP8/673iePg33dLjr7s9L0EytpRkC8nS6Cse72XMziIvRlriovdE9SDpet3L+Ntt7VzBvVgLaRbm2vA0FAOVYI/WuL+hpZLWwCjZQJ6xdlTvB3b17hmxcGCO6Ds+mG05SgeNw9Z53k9vCgLI59LQMAXkkBWsZR/4dsnUF3YaK7udteau4fYWll1MBKwYq3croD0o1UDZVMndrJSa03s4YvqtSshCxkDvULYbkgcqrTLAfon2/ddrF/zlZP8/mw8m+qihJ4rppfXIH9EAPKGBqLp5pXWiuRPnsdgXkHUwtY4Vy9qTl7jyU/lwTOuivBYOW8DZQP6HeIJZtS4DI+1URR0Z1kCj00u95kEbWN7x4Vinp48N2U95GesNsOzz4VJp2Nr2fK5Amd0QVYFvvdcLP772tqebG7rvUujInuMwkCshCeA2caU5Qw2dZcHebHuvniWQFlf7LXOddZeXAD9rjehy3fgfa3XQrk1XABkH7rvZK9zbcxi1FrkjJjA71Oakyovdj0AbHb3Lr8sDRzFoCyBs/fvVPP7nBximgfl5ZsMSOeOnGgebfG6pbwGd9+fjMKV8e3SA19OxPBn4iHL9q3F9XaNMPshzrMkUNZMKb3gUgJle0EnWmuCBMpa04wD8RoNfwTJq6Wvh/rp76N26geAzvKWeV9vn0/W32REy7U9aFn7T6h3DYOuxPLWJ12tnJ2b0Lbxqg2rQb+9PYiDBVdB2fSV2Qywpsy1zN+pqFYz+EogbNi3UjDy+QQEfSkZF3bZsgY3MW1Ey5q3oc6MlRyZOPkQqfPz2EKt4fRxJ0t2fXbyyM60CqkprTcr35XI7++qxCOtcc5eGFVNkM8cBfmSMI9b/DlbF1fzN167iNyhgQzO6qorWsXkDicr2kBUpxxtjXP1Inf2JtztGwlVYbmrIjxSzptA2eOHcnly+ea37HPfOdv4inN3cb9/CLIGhKLyygNni3db/pIlccwvSzyzngyKzBOCteyt6wj++3YGvuOXnvbkLVyWVZuaynWr2tseEHBZoIsFN4+5xN9QVy1mDU0NUCwZCOVG4g+XnH7Z6gYJlLWlHd9I097ZxoCs9kGC3Qqb9Dood0yBct670Nw/Zze/OxnIgVfuUMGxVc5HIdBWVLsjzuvK1qcKu69kISNb6/b6C6vZ4VdZSdtiY97w8QzKNmXntOazdvE4cjWyBkVD19DeOOPstlwMeyYeEa8ftlbUp+LFedbJqKPY++0NPnGk/G2PZClr5ymTQFk7CvLlZAmUdb338kZPElYmA6JcF+IlJWuXB7K1l3zxaC+pkVQNUQOG2mKo9owEgYWq1GkwKC1vDVdevoCyyFC2Bqw7fMCrPcCLgwVXQNm7x8qYimD1QMuD3fsnyxmA9fufeAR+MYknnhv8LqK5wcaCg0ELsowlPl+ylJWC8xqQ79kGWdAoGJubnS/cxSXIao6dj+nbnLnpVSq2lM0Pm+Hy3Rv2r+f3pqbYMs2Iy4K7uWDV+hj+lhUFBbda5ROnLPGzkSNL4mpzJ+gbVbjvNxvZYxfApHXPMtmdengLKCuvUeGNT67GGy/GoqJM6U6TOpVVVdbhah9hbHJ7Uc8Cf50q1yFCU1aJ3KHBqNyT3CHFzZ9GA8qmTAD973/xGS+hLhCb9ITCoCTcvkWXWKSrzu4Cs6prqUxjoLrcttjVVXX1ZbkSKOvLvQfoco8KgOx1B2h4DATIRgnO8O7Y30bvjmZowVR06JUXOAUwWN5R5849erqsLGAEZP7DQY6+xPDhXxN5oe3Pbwi0S8SjS3rIDxF2R4j5LJ3lZ24KO3cOW54/0M46spbtDaoU51kSKGvpSfDdOAmU9d2+s1tzCZS1qyKrGWibCFkSQaOxmsdnEvQ6tpStmyY5/PLKPjMZobl9AOpN70G99p8CpYGFrfVGjQbypHjIQkaDtpI33rjqlc0RBwvOgrKyBw0Y/cl9mPWbY9Br2w9ADXoTdk+8jmEfi8eYT+9jMJacgGWfqbSpA+KMJe5Y4vElLlkpOK8Bk14PWVgAqteucr5wF5dQXjrPlmnKi2c73SkvNNplCgNtSS4Dsg1Jnrd07FTRbogonjSRJzZl89t4duXppwWOumFkDedeaMwuxN0+ESiKsW9p5N6drJf2FlD2rW9vxqvPxeLwvkfWK+tiyrk+U7kfMwfNdVFC9xYr37ALucNDoZVb5wV3pUa01fXhyNFsUfXeD6x763ZFtrtlSqOjIPP384oFLPeAWROUG8dDsbg/jI2e7T93dexN5SVQ1pt6w7m66EsvQb/7t9CcmWa/IAGy2yMZkG253bVOBYvmxTAvPlEwyZavt183H8wh37GJx26y8f7tak+MU997PgavPi/whAuLx0EwKNosZ9sVePLDpNUha+hMZAcutrqzKXbAGZ47xHyQaUmET8WJ8ywJlPWpbrNbWQmUtasi380ggbKu9V3znTtPvFQHuCbAC0vVzhvCIEPNOt+3/PVC9XqkSiZNE1SZMWhZ+3eotw2CLsfywIGcGlWuXs4Dmsql86At97wTGXcaJA4WnAFliZIg9OsH2GlXU137hZDKXCWm/Zy8pyZg1Av7mK4gafod6DTtgduOdTbUlUC9dSBUm/rCUJ3XMVn67aAGGm9e42eNzl4V9Dq2kBX5JTvWrTL+AANYlfuctI42mSBfGoaa2aNhbFF3FOuTv02qJhSMDmB91B1sc3ZRunANx+UFuf9dkO06ylYqdefbnDB1p7K8AZSdOPwoW/mMtuCoxF1dnBu1lPvqwruTQQslvhD0CiVyR0yAbNUmz1bXaMCKP0WxrlPiLnpWtpvS6o4Kzsiqdu1yU5JnirvDMauvzGcQqnGfbywCeEZjzkmRQFnn9OUtuQ0196Hb/QdoMkIAk+2xJPSaVkBWfbcLqVK0WuSOieD3fO7gIDScvuAt6vJ4PUoD/HjxqqW0tJPsH312LdP/JAxcwroomL64U56OEaVbDvP4o/mxdR8wZCFLtGd+H/fuXSYd22bptzjPOjHlKPZ8a6NPHCl/3SvRF1jqTLM4CZQ1U0Zvu5RAWdd6NO+jYOFDEO2+IxTXatAFpeoqUDulH+pmvN8FwiWRntQAgYnCdvu3oU4MhaG2yKJ41YMslE+LgCxoJGr2bIdR5R1by8XBgqOgrK7FgOifprGVbPljwVGT2ODMzTkY/cn9GPE/8TyYmvPbDHTMI+Y1P2uzjkC9/r9Q7/KDsbF38XCZt7M7rslClixlvQ0Iqj8i8JERp6ylIFIY5IU4YAVjJqDpXBovYDXf6Gx9a5bN5y41BTnIGxbAHLNNd2+01j9v3GT+3hXPWdEa59KFyYTHk1fj3oCp0FR3v2VdT4OyIo/sr766wSX12SqUtToZjz8Mwo33w9BYbHt3gC05PZFWnZzGz5cqz/J3zNU6/eELy/DHLy5B4xXvAmVhNKIkYCRKJ4W52jSPl3MHmG1KXc3ArOaxd+7M8biynBQogbJOKswLshsbiqCL/yu0qX6Aob0RQMfqmTQqKLdMZKdeXQnICvyxwtwzZ1gItFWWqcw61s8Xf5cvnCNYyYYHW6z+kujzvOA29Scz+dthMZNZZKtzr+W7zWItX07+/iHmliWOWV8O4jyLQNnd39roE8cBCZS1+8hJoKxdFfluBgmUda3vaMsIUxe4VtxrS9XN6gf55AFoSt/ptXWUKtamAV3xdXYC1hL3N6hOrYRJawF0NRrQkJEG2YRxkE0MQN3hZBjVqjYhPXAlDhYcAWWNBhMW/e0kRnw8AVkn2hwFqRt1iOl7loHY4c/GY9xnE3F6o2XwzbyJxuY6qFIimKNXfWIxyMJBCq5rgDhkiUuWOGW9KRiam5hfmSzGbYWC8dOZwoAAWkeCoVEB+bRhqItznYvWkfv0VJ6G08f421YwMgCGhideiA0G5A4LZSqDis173aqark6JrEHT8ChsJWDsXgdBPQnKijyyr38iFqWF7ReW3FIogMqr2bjXPxQPBoSi5KjvUbCYdDrkB05BkQPWTo7q6sGlQrakmvH/pqF8WrjV7aqOyvN0Ptn0aK+hMBDb5iowy6DUssFQrBwGupZCew1IoGx7fXj7L2NzFbT7/wNtSn+YNLY5v00tzUzhoZzfBy33z3dZ01r5YwcHIn/89C67j1cIJjos/+GQBQyHvqHBapX+76Xl+M1LK1C6yb5VKzn3osXgjs69LAmXZddj+DN7EfCFREvJPhMnzrNORB7Frlc2+cSR/Ha8ZClr5wmTQFk7CvLlZAmUdb73yncmIXdwIHKHWF7Bc16i95TQXDvJoGzdTIlb1nt6xU5NmG82WeCb3fgu1Bc2wqTuPOk3NDVBnrgXsvFj2aqx7lByj3HaiYMFR0DZuA/PM/B6Kb6gVRGPL1Yh9GspPHCirUax/c+C6A3sBV3BZag39mG6Al2Rl221t1d5L01vOJXBFg3qfO+if5Dv3gZZ4Ahoq2w7qapKPMyWFo46G6rfvQryqCHQy33LGtGZx6dqQ6xgGTu+jUuW+NqExUj3t0zWX7nP2whLt6U6Uy238/YkKPvHV7cyv+n+bVlut8NcgLaxCVf6hIM47m8v2mOe5FPX9Wcv8zPXcNEz7+XRv9/CllSZS+L5/aS8aNmxS08pqS7jONercvuOnqqCxfvuCb/B31vimnUmqO9lsrVsU1qcM8WeirwSKOs73UwgrPZAPwZlCZy1FYzqRijWB0G54D1oHnXdYlgrf+zgQLi7KGqrPd6SVka7+wL8UDZ9stUqNWXnYOmvowUqoD4HrOajhNpztwTnXgfP2Mxnnjjupf0Y9sxeyItt89Sal/G2a3GeJYGy3tYz7tVHAmXd059Xl5ZAWee7J2dIMIOyFdvaePecl+K9Jepnvg95ZH+0ZElb0by3lzrXjKxkW67uYsCRnFapM2NgUHYeVOqVCsj374EsdAxkE/xRdzCx28FZcbBgD5TdF3WLJ4jHYh5yg8lqNmHKTfg9G8/biwK+kIR7Gfb5ckk36vR5bB2rOjQFppbGzgqUYlzSQMWCGSifEelS2a4qREAsAbLyXYJ3Xpv30esZbMwPtu+5V5OfzbQFyvSec1Zlsy0eTCyZIvDWlS9vo+hpepiDnMGBfNC1O6F4bRJPlJR3u2+LYE+BsrPGn+LJ4/B/J7mjMotlz7w3jcHMM8MWWUz3pcjCKfPZg7YnaFB+8qkY/OATq9hCtnzmFMFa1miHF7I7lfWEwqAkbHx33tWhe7kKzCp3TmVgVit77NB9npZMEijrIz1t0ECbOpxpC4wNhTYrbWhqgCLOH8qF70OT20b1Y7OQk4lahQK5o8L5/U7OrBQ37jopwfeyk2UsWciWBgwHbPCi542YgFv9Q/i7+saLq602tNW517iFINoYR0N6TDbPPaJ/esTRIl6XT5xnSaCs13WNWxWSQFm31OfdhSVQ1vn+IYsU+kD21qBIjmPgoXb2gN7axN7dLoMWmttJ7MCKHYJlLIChtjOxfSdwNqX7wFlxsGALlCUqArKC3R12nfurMk+Jyd8/3Godu3rAWaiVOrt9qSu5CdWWflBvfBea7Ay7+aUMjmtAV13FFg31aQcdL9QNOavWrGDqAqIwcCTkh81kT8bGJttbb2sXj4d8Qe9995vryqhRozCA+OsCId/XZs1HjkXY2/EQ+96OzeV1vDbq9MgOWMzekB3ZUtixvCu/ewKUPZdRwBPHruCRPTtisQDI9nHfCZsr+vR0meaHudyemkPH3BItUhcM+pnglbzx2mV+TynOWXaM6dbN3CgsmzkDpf5+0NU9oQlxQ5ani7oCzBoaqqFY1A+Ktf6ANwHgnlaOk/IkUNZJhfVAdhONm9MD2bGXofq+zRoQIKuMGwvFwr7QFtyxmdfVROXlm607U3JHTXRVjM+VK5sUxO/q8sWzrda9JiWdvxN5/pF47ROx/H29f8eyX4jSrYJzL+X9fKvyrCX4/U8Cz0GspXt7vDjPOj75KHZ+c5NPHEkSfYHdx0oCZe2qyHczSKCsc31XFL2IPwaPh7Zt63ROgm/kJmdf8qh+QJ3trb++0ZqntJZGAzT30wTO2TV/hepwNAxVnS1Y2oOz41B7YB+I6qArgzhYsAbK3k6TsTXsqr5nYDIBGasfYsRz8QzI+n8u0SHrWBi0UJ1cIXDHJo2Hqbn7HQt1pQ69QXZtUgIPoHV13qNbcupFW9/IyZejoTqFeFSDUL7NOjdZ48lkXqxqybnnqFifz6eTV6FgJFH1BKLh2KHW9tAWypwhgcwzC3JX7GJQl1bhXr8oPI7qni3P3Q3KKhu0+MGn1+C1FzzPI3slYgM/s5f7hKOlofdY/pcuX4+8URNhaHT9G+T35maeqF9LF3ZY0EeErGXLpkzwKrCw7tQpfldVbt7i4j+oa4slTb/DoMTGkZf4O+zI3VSXD7K1bHOm71JpONJOZ/JIoKwz2uqBvCYDNMdDod/ze+hltmkIDA1VUK4eLQCyxbbBW1dbIlu+XqDIGxwEt51rulqJHijXUlrKPNulAX42707UgbmDg6CtkqPvm3v4Xf+n1zu/Q0XnXgVLd9mUZy1x6b9O8/tv/UjnqFysyevueHGexaDsNzZhpw8cSX+ROGXtPScSKGtPQz6cLoGyznUeccnSZFR1rXdvI6mNncQAhHz+MOcUJOX2Pg2YjNDlZEK1d4ywfT/BH5o7KTBp2k96GZzdt5stDInaoHrrBljzWu9uI8XBgiVQNu9KDUa9kID5fzqBhko1Zv8ug6kKyGo2pt8ZtDTZto5li4fbyVBt6Q/1un9DczvZ3epK5S1pwGSCbHIoKle0bW+3lK2748rnRnO9oLf9nLSrl9GInKHByA+Y0i5a/KGvr0FN1BDUb18mRj01Z03eI+QNC0DuR4FoutrmyIQmiwRk5wVY531zREnVGZeZxqB83wlHsruVp7tB2d9/Zwu+91wMdsTdcqveHQvfXhSPxx8G4eb7YVDmtzk/7JjPF39rq2qQOywE5ZtdB/V+/MlV+OGLMe2a33jjGgOgisyT7eJ7+kep/0iUTgjp6WpYvf/hRVkMTKwdcsFBYNYE5eaJvK1bX1NiVe7TlCCBsl7c2wTInpwE/e7fQV/S9n2zVGN9dQkUK4ayNbi2KwBZtRa54wTaIPq2ytNPW6pGr41jSrUAP8h3bLLaxsK5K3ncURQtjDubmvTs0PHV59u/70mAM869LN3QoDVg+DPxGPn8PkvJXh8nzrMyJqdjx9c3+8SR+GcJlLX3YEmgrD0N+XC6BMo60XkaDa/OETD7NITaaX1RO+2Dp6GpT00bdWVZUJ9YDPX6/0C99h9Qp82CrvAqYGrjWjKqmtFwIp0ti5hsf+YUNBw/6lHeWXGw0BGULb5Th3EvJSL6p2m4GF+AUS/uY0B27Gf2495x21bbJoMOmtsHoN46AC1r/wHVyWUwNtY8NX3b3WeQVCAAACAASURBVA1VPchikMObHOgor1x8UqezTqsjP3w2O0uyRGFQu34OaqI/gkHpfduMnW6oCwUaL59D7tBABmebs9sWJPOCooQJ0oylLkhtK1KwZCfu9olA44M2Z35tqZ676k5QNqDfIbbg8fuPbSckzrbu4bZ0PBwUjHv9x6PiXFtfOCvHm/NX7tiP3KHB0JQ570yPrGNffT4WH/2688SeFmy8zVpWNmc2exrXVnbmf/eWPjq2SuBXJIeaxOtuLxAYS97oCZyVAiCBsl76FJCT3NNToN/9W+gKT9mspL48F4olA6Fc9iHo2tOB+GJzhwrUeLkjxsNQ19lZr6fv6U3y1LdvMpWLLNC6lazgbJR27gTBfIcO7Ub53nOxSNzStoup9qzg3Ksi2T1ge8K3D/IOvWtJvrfAJM6zJFDWm5509+sigbLu69BrJUigrONdUxAQyR+D3NFhjhfy4Zy1C0cI1rIrg324FVLVLWnApFND++AY1EnjBevZLf2hzT7eKas65xGqN69FafBoqG97zpmBOFgwB2VlDxoQ8PkkTPruISz992leoR72TDyWv3vapnUsg7F3Uto4dE8shbHRMr9UpwZKES5roHrzOnYWZ9I5YZHq8t3sFyTnQGVRYbyYYD935xw1R0/x+71s4+52iaq7l/k92Hg2tV380/aj9nAi6yd/RAC0ZW0TFJpA0kKlO16hTcQv678IWUNnQFev7DLVdhcou3fjXZ4kvvnKRo+2peToFWQNCGVQNmd35/e1R2/Wg8IMKjXyxoSjdLHztBaDf7GhPXWBWTuabt8QrGVPe4/uFBeFhaTytevMaup9lyfXPWaL2RXvZsKgtw/MNp/azjQG6utp3teYbq6RBMp2s8Idup0JmrPTod/1FnR5tjmstfm3oVj0ARSrhkMvlzkk3ZlMZeu2s/NM2pJfPGOJM0V7Td7SoNH8bq5PtU47Rc5YCZCt2NqeZmry6Ax+5//s5bWsj1bnXgGLnXLuZUmZeVer2TAk5Ku+t+NOnGdJoKylnvXdOAmU9d2+s1tzCZS1q6LWDExdMDgImjL73t5bC/nyhVqB2qgPUD/9fV9uxVNZ9w0bN6Nv/0F8pB1Nt6kDQ0M5jE1y3L5zl/PfvnULmpuJ0BVfB1EBUDAZ9OgoU1NcCLKWdMajqVgRcbAggrLljxUI+mIygr96AGQVO/yZvRjzqf24e8z6AJjB2LsHod42CC1xf4MqYyEMCtvWtOL9pbN7GjC2tDBQX71VcKTjnjTPlK5PT+VBverRA9cEPqEwyBtnth1fp4V87jjIl4SxF3fXBPeeUtWb43hSVDA6APp6gUeY+KeZ483N7ZYtZdW41z8KjyauAgxtlvue1F53gLI592vx6gux+P6n1kBeY9txnDNtq7yajdt9J7A1962Frm/td+aePZlXnnaSn7WmrCe8sA5W5oefWAWiL7AWmN4kIgTesphE9SwNGI2SUO93IHh2Wx4Ds0v+eQp6rR0uaYNOcIa0uD8MCrm17ngq4iVQ1vu6WXNhLvS73oQ+94jNymkeXYZywXtQxo2DQenh51irRa5/ZCt/7NNGVyAqXnnyOO8WkAWOFKM6nZvuZjF1YN7w8Z3SKIJ2R4gUBiUbDjAlUtPjzg6OLRa2E0k79mhOom5q/84T50w015q3YBFaWjRWJdE8TJyTmZ+HjxyDoqK2enacZ1kV6ECCOM/KiEjH9q9t8Ykj8U8JyMrKQmNj7+HJd6CrnMoigbJOqcu3MkugrGP9pSkuZk+YOU8JdYGoFfncD9lKrG7HAjFKOnu5BujjLw4QGhoUCBk/EbaAWRpIUH5xoECgrDY5THCQte5faLmyjcuLMusqKlpl1m3fCNnEAFRvikPTjaswaqwPSszVJg4WCJSVFzch+CvJDMIO/9heXpVe8q9T0KrbD4CoPIHEuvwLUB1bAPWm9xiMVR+bD0PDU7JQYq7EHrxWns8UANCHLgKgHq67obkJsvHjULV6uVuSCyLnMeilrRVoChQHt/H7T1Ps+e2KblW0BwvLZk9nsKwwIBgGtQA6thSWMLVPzuAg1GZecLl29ZezeDJVsjHFZRm2CnY1KNvUpMVPPreWJ4gXThTZqopTacQbe/29iaz3y6GrnSrrs5mNRuSHRKMg3LoX7o5tOxV/k3Xv99bmjkmtv5vu3uJ3V8OpjNa4nr4oWzBfoDAoKe3pqti9/4Xd+SCv5Av+csLiN9pcgE72mK1llTssc3Wb5+3N1xIo6129q7m4iAFZ3UPb1o/qWxlQznsXivXBMKnb+2Bwt0Wqe4+QI9IVDB8PbZX30pe421Z75UsDRzB1AVEYWAs5fmEMyiovW87zqy+t43f/zIHxuPteBIpiE6yJcjp+x4RrvBg19/dtBi4EpAaPD2sFVAlMFedIjt6gYxln52727iPOs45FpGPb17b4xLFfAmXtdSskUNauinw3gwTKOtZ3uX5hPCHKC57qWIFekstQU4raKf1RP0OylvWFLhVBWFrBFQNdOzJYEMFZym/SaaArvAL12TjU5t1hEPb29avQpM2E+vwG3Lp5g2WqlI2oTzuEigUzeKJLNAeVsUuhPJcJsqCzFsTBQlVJPUK/kYLhzwpg7KhP7MPNg21bo6m8SauC5uEJqOne6/8jWMUmjmcHXiaVYK1n7T5SfNdooHLpPMGZlsn+NtauqUF7qfLd2yALHAFtlXuW0rWnLvB7Xha3DbryYsgjB6EhybNb0NvX3Ad/mYwoiQhnPRVPGN/qzZ448WjR0l1gtmTTQQZmCaD1dOhqUPZvP9rBtAVrF13zWNW19Upceldw/nLmw3kek+sLghou3+DnrPaUbQc8Ylv6/2Q96//BpUIxyuK5YuEsyLzIWrY56z5/P8tjYy3W19siryYWYcTHEzDr/45B3WibvqYpYxMDs6prTy/9iwTKes8TrL0Rx4Cs9n77LfAda6i6fJCfW8W2yTBp1R2T3fpdFruVjXyIrqAo6uk2eCGnXuS7ojRkjFWd1qSkC/NvG05FiU+WeGVT/jQVWYOnQ9/kuV0qVDFyNOz3bNszQ4AqHWKguVdU9IxWkFaMt3ameZa5law7czdr9xDnWccijmHrV7f6xLHvT/skS1lrHfokXgJl7SjIl5MlUNax3qOPJ5OLO2gJ6JhU38hVO7sf5JMHQHlwi29U+CmuZcfVW1KFpThLKjIHZc3TW8vn56Pl0lao9gWi4N5lYZU45yFajs6C+sQSNGduQX3CGlQsnMYAGQ20yqdFoGp9LAO3zVl3YWgStqSIg4UpPz2MYc/s5a1Bc/+QAV2LYB1rUiugzUqFKmUyWtb+UwBik8KguZMCo+rpdLZk3ic9ea2rq+NBdN3BxJ6sRuu9CYglQFa+Z3trnDsX5GAob2w4aldEoGb2aBhbPDshc6duXlPWoEfxRGGhsmRqZGu1PALMGk1MYUBUBkRp4MnQlaBs+CiB127gnzxnoWPU6nD+3Sk89jjzwUxPqsJnZBVNX4z8wCkO0Q288YkY/OzTnb1wd2xs0707/A4jh5beEkqCxqAkJMBbqmO3HjcPl2LkcwmY9vM0NNcLNEeWCpn0OijXjmNOTkO9847bLMn0tTgJlPWOHtPe2yEAsvd22KxQ47GNgoV3whwQTZangkGhQO7oSfw+pznl00pXYK7P0gA/yPz90FKYZx7d7prpkQYHQVtlmz7C/zvzeUE3L8l5R6/tbmjhBy1AETCbNOM20xSQoYv5DkRx/mQeZ0EMR1nK2zrPMqMysBRnTaaleHGeJYGylrTju3ESKOu7fWe35hIoa1dFUJ68wh9RsgB6GkPLg6uQR/ZHnWQt6/XdT6uvRFdAq65icHQFVxwokAzzYFFmXR2vChfm5UJ9YRPUiaFQb3yXKQ8atw1F+eGleLx7Le5u2oybcdtxfdVOXFmxCxeX7sHphQnIWHqYV0MnfDsZo5/bjaivrcfs78ViwesrsOSHS7H8J4ux4qcLMf/1VYh6ZStCvpSIwC8mIfjLyQj56gGEfP0AQr+ZgrBvHcTE7x5CxGupmPLDI5j60zRM+2U6Zr+ZgXm/z8CCvxzH0n+dBjknWT3oHNYMPo/1H13ExhEXsWHkZWzxv4o9k24gZe49pMdk4/yufNw6KkPejVpUFXSdwyFz/fradd2hJAY0dNXesd2uKmYpZBPGgSgMPBEKpy1ijrea8EFovuH5wb0n6ugVMnQ6FIWE8rexfPHc1ip5ApglZ1/k9Iucf5ETME+FrgJlD+y6j1efi8Wvv7bBFYptq80720dwbJL5XrTVPL09QZVXxM9Y1f7DNpuavOY8b18d+6etNvOJid5mLVu2aBG/V9U5vkOVcu94OWh3S+T3U6Gosr54pa/I523gyi2TRPU/VWcJlO357tbe3iQAsjdtOdQzofHAUgZkGw8RL7XndgLJU48zxQ8Z9xAwSwDt0x7KF87hd15ZuHVn0oXzVvD7v2jaYpvq0iubcOW/k7H3d9H476/aO2u1WdDBREWNlg1IQr96gOdXNM/qOFciy1lHQFlLYKvFeZYN61u9Xo/q6mqbR3l5Oc+zJFDWwU72kWwSKOsjHeVKNSVQ1r7WcoeG8EeheP4K+5l7aY66mX0hjxwA5TnbpPi9tPk+0yxrH3ZLA4iOjXIUlE1dmIXbp/IZ/L1y8QbmvHUCw5+Jf3LsxcJ/H+WBAJG1WzuO7bryBJRN4tVnWoH25kO05m1t58f2CvV9Np759UY+F49RLyRg9Iv7MObT+zDus4kIeDkJwV9JwoRXDiD8e4cYNI7+eRpmv3UMi94+iRXvCEAxAcP7p97CibUPcStVhopH3g0Gl02diMolbSBcx+eoO3+rHmXzoL7+mOfeS3WnzvD7vnRiSHc2xSfvZVI3oyhI+D5WLJ3f2gZPALONDwpw973JKFiys1WuuxddAcoW5tbj9U+sxhufXI2qCs8sDJiMRpx5bxo/h2f6TIVJ7zlg2l0d9kR52aqNyB0xAXqF9Xfju2+s5e2rBVmOUZiQk0razVGfkdYTTep0T5HCoGy5e7zYnQR3ccTji1XsnDPs2wdRU2T9+W8+uV2gMbjcNXzRXdxMt8RLoKxb6nO7sPbKsieArHXHpCZtC5R7ZvAz2nzKtiWtUxUyGFAwaZZA7TMkCERdIAUAer3g3CtgOPQNDRZVYlA0MY8s71I1dPYxYV6ocPlu3OkzGW+9tAKvvdA1NDBBX0rCuJcSUVkuFyjdOhiwdKQ0MK+f+bU5d6wY7+zcTa1WW51fifOux48fc5708GPY8pWtPnEk/FGiLxCfCWtnCZS1ppleEC+BsvY7MXcI8eQF2s/Yi3MozxxiULZuVt9e3Erfb5q1D7sjXEcdQdmjy7Ox7N+nQcArgbqPr8sw9qVEBiNvHs9nS9l71x5jwjdTMOxje+H3sXiMIJDyOQGc9H8pEUFfSUb4dw9j5m+OYsnfT8L/c4nsyGvhfwTgtrEwH/XnL6AyIRF5i2KQGzENuf4ByB81GnmjxiBn5Bg8HDEOd8ZMxlX/BTjtH4c0/51IHHcE20efxdoh5xHzwTks/c9pLHj7OOb8LgMzf52OKT9JxaRXUzHhlUMI+UoyAr5wgAdTY17ch1HPJ8Dv4wnMDzXsmQSuzzAGlRPagcsiSCwAsiLoHM+r5UJ+ihO4cOm3cBAVg5j3CXDrKuDMtA4CWO337F6M+LgA/I751H74f34/Qr6WzGDv1J8dxbw/ZmB5n0xsHnMJ+6fdwakNj9nityLXOojhytOuevSAgQzFuUxXinu2jMmE8plTUBYV5lHQqn73KuQPG4e80WGerW8vlWZQKlAwTqD3KZ0eBZiM3FJPALMViSd5O2LFgdMe0Z6nQVly7PXjz8WxheaJw/keqaO2sQnn+kxlQPbcO1NAFAZPe9BW1SB3WAjK1lkHS157IQa/eIms2xwPZC1bNikIJp317feOS3M/Z0nQWJQEjXNfUDdLKL5Th8AvJPEulvLHViwAjQaBxmDB+9DXPl2OOSVQtpsfSLPbaS4sYEBWd3+PWWz7S2NTPRTrAqGc3wctt0+0T3TjFznzyv0omN/ldFY9euyGtN5VVBY9kceSsumTrTaMHD0SIFuxtY3L1VJmXsB9NxyyHUfw2idieXHuUqbMUla34q4llfAc6OGVEqugrD1LWXGe1TGfO3M3a40S6QskUNaahnwzXgJlfbPfHKq1BMraVlNp7Hb+KOQMtb69wraE3pNaN4OsZfuj6ZoXADK9R60ebYmlbTGW4sxvmrkxD9N/nYGjK7Mwb/4iXDpL1q/HGXylVeFrp+4zf+yjrDyEfesQUwbcv/m4nedRc3mWrk9tyIHfxwXg0u9/4vHgchGv4GqscDQbFA0gK0jFmZOQJ+xi52HETysLGikM5IiHio6wAJTPjUZV3ArUxO8EcQQ2374BjazEYS5Qo8GERnkLqvIbUXS7DtlnKkF8eRd25ePE2kdInnUX24OvYO3QC1j230zM/f1xEBA66XuHEPzVAxj32SSMen7fE4BWAGUJyBWBWgJ3ySkKtZ8cBbSCvWZg7bCO10/KC3n3MuhN1yLwy0CxWRlRprWzCCzTfcwB3rGfFgDe8d9IRvhrhzHjl0ex+O+nmOZhT8R1ZKx+xOCuvFiwgKreugHkzM3Y0mKpm7s1TnH6OD8DjdeveOy+moKHkE8eiKJJEUxhoCny/MDeY5X1IkH6+tpWYLYkMhzQCUCiJ4DZ/AXb2Juy4tYjt1vsaVD299/Zgu89F4Ol0xxzRGWvAZpaBS68O1kAZN+NBAG0UhA0ULlzP4jvuaW4839y96JMBsZD/2EdtLWkR9VDYZHJk5b2lu7jaFzZsmX8TvMlCgOxbQTGErUQgbME0loKTGMwvw8UG0JaHQRaytfb4iRQtid61ISWs7MEC9ns/VYroK8ugmLlR1As6gdt/m2r+ZxNkK3cKMwdBweypSzsWHo6K9+X8+tra1EaMJwPa+1oupslWMkOC7WWRYg3GpE9biEejJrHVEfD/5XE34L/+2bXOGglHu3L+/PZ0bE5sGoNbO1YeUsOvSiPpXmapbiO8mz9NgdlN395G3zhiP/Dfp4bNjYK/kdste9pTZNA2V7c8xIoa7tzmf9ncCBqD3mPQwjbNe66VOXhjezwq25Wv667iSTZLQ2IAwNadRUDXRMpPaVRqCtrRkuTHnN/e1yw6nwC7qUuudcKys797QmQpevM36SjIKuGy9uSKd6r41ml1GLaL9IYsCQL0tEvJqA0qx7iYMEaKNtRTutvowG66krQ1lMGbBPjUbVhNSoWzADxUjFQKwK2AX5sBVU+bzqq1sVAvm83Gk5loPnebWjLZV1iHdVQoWZg915GGc5tz8PhhVnYOf4a4j48jwV/OYGoHx1B0JeSYQ7CtgdSE9iaePw3UzDxuwcR8fohTH7jMCJePYSwb6cg+MsHMOaT+1uBXfOyokw6j3phH3P9jSLL4Bf3YeQLCRjxPIHDAt3CcAaHBQdr1C8E9prLsngtWu7S+VlBFskd95n9CPxiIoP1UT9MxZzfCla7RMtAXL3E00scvZ6ckxjVasgmBoAs3TwWjAbULg6FfH4gmm7f4wlVyTJb/HMeu3OvEGRoqG+lMigKDYXpiYM0d4FZ4pR9GLIU9wZGo6W8xi1deRKUHfz2fp78jXrHM9uxlfnluNwnnJ+7M32iYFB7h/WmWwr3YGGDSo28MeEomt15e/+/vrvGKeoC82pVLpvvNdayBMbyN2yxbf5E8/p70zXRFxCNAS32PTpn2alX87kEYYv4yW3eVPUurYsEynapei0IN0FzZppgIZtrnZ6EQFgCYwmUJXDWE4GcUeWMFJxgsjOv1OOeENurZMjCAvk9VxmzzGq7iK4mZ0gglJdvWs1DCeX7hd00ipsPOR8x/bz6PFnL2nf4aFOwlcQ1g85gzYALOJh8BERXIAZHfXdYA1odmbuJ93L0LM6zyFLWFwBZqqMEytrvXQmUta8jn80hgbK2u45oC5526gJzDdXNeA+1U/pDnffAPFq69iIN0Oqt6OxLXJVNPXIU64de4sEEpQ8fOQZ3Lj/G2Jf2Y+5bJ6BW6lo9ipqDr2KzLMk0XyUW85mfL8UXYsRzCQz2ERgY8PkkBmQpjzhYcBqUNb+BhWuy4NSUlrC1rOL4UdTs2c5WtmUzp0AWMqYzaDsxEGWzpqBixSJUb10PeVI8Gk5moOnGVajzcqCT13h0a7x5lRsq1WxRdPdYGc7vyEfq4vvYG3EDcYPPY+FfTyDqx0fYsZlFgPRj8Qj+SjKifpKGBX8+gRXvZWLNwPNY99EFxA0+h9UDzmHZf05j9lsZmPx6KgJfTrYLugZ+SeC+nfxGKiJ/cAQRrx9mJ2qh3ziAgC8mYcwn4zH647sZ2BVBXVctdocT3cWzCWAu3hcT4P/ZRAZz4z48h6RZd3HjUIm5qjpd1ybu5b7UFBd2SnM1Qpmxj61kW3LusYjc4eORO3KCq+KeynIExBYFC86/igKDYVDWsx7agNlAVO0/5LRutPIGZA2ZwRYxBpXrVtqeAmXnTTrDE78/v+4ZYEl+Jw/X3psoWMi+H91KAeG0onp5gRpyljMkCMqbwn+Umks7HV59Pga/+pxrk3B6zzO3bHqqV2ivNNgfpQGjvKIurlSCHH6R4y9aGLxp8T1ugnLbZHb8pS15OsaREijrypPkYhmTAZrTkdDvegu6/AyrQoimgOgKiLaA6As8ESp3H+D5Ir2jckZNlJx5WVCq6sEDtpCld661UJOSzu/5vADr1AZUVlNdh7t9I0G7aczDj55QCm1Yft082iPXZFxAlG33b+bwPEqcLxFAa278QvF9+w/q5AzMGihLlXNlnmWrUeI862j4MWz68jafOCRQ1laPCmkSKGtfRz6bQwJlrXddfvh8/jAQF5AUBA3Ub5/PwEXtnIGSSrxYAzRAoAEBHfShp5VdAvcOzs7i1V2Kv3LpJrQtBt42QyCtmF88dwRdO8q01vyWJi1mvZnOVri0XZ8oEMg6tOxhG5m/OFjwNChrrU5iPNEi0CRceek86lJTGIitWDoP5LxKFjiiE2grWt6SFW757ChUrlzMZWqTE9Bw+jiabl1HS0EedLXyLt2OqahWM6B9/2Q5MjflInHabawbegHz/nCcLVQtAbfkeGzSdw9xntUDz2H3xOs4MOcu0pbdx4m4Rzi18TFb8xJ3cMKUmwzoLnz7BCJ/kMoAuiWZYhw5NKOtqjT5JuB34V9OYMm/M7Ho76cYJJ71f8cw9adHmPOWeIXJmpa8dBOX7/BnBQtdRwBdIc9eEOXFqE8IVsSTXjmAFa+tRNxbG7Az9BpOb8pFcVbbsyX2tTNnvbwS8qghqN/VxklZPG8Vv/9VOZ7hCnWmPr6c16hRo3iiYClUMC4Quupybo4IzBJHe+nStU43selREe71jUTO9PWAyTWv2J4AZRN3PMCrz8Xi5y+vg1Yr8Oc63RizAuWZt3HzfUFfmR/MADn5koJlDZDDM+IZLAif3foMrI9KZ4A8vM8uy4UciK1cvsBrrGXLY2P5O6S8ds2BmntnluYGLWb95hjT9Zxc15lH06CUQ7F0IBSrhsPU0ux2Ixwdm4g3Ms9vabxDYx8xXjxTGVeDBMq6qjnnypkMOmgyQqHf/Tvoi6zTrDUe28jW2sqdU0EOvtwNBoUCueMieLyQMzgIZas3uSuy15Yn+isaV9ck7rbaxtwhwSArY7I6thVyotfhXv8o6Ora+04gMJasZQmc7YpAu9fIwfHNm7db3xPmgCzdU3yHdJxHEVgrGs1Yqpv5u6ljWUv5bcWJ86yjkzKw8UvbfeLY+/tEib7AVqcCkEBZOwry5WQJlLXeezkfBvL2CdW1tq3g1nM/PSn109+HPKofdNWOeTl+ejTTsy2N6XcOo1/c32krOm1NJ+dbxBtblWvFCYeHqn49uRgjiV/1Y/GY8MpBBL2cjNCvHUBlXvtBkzhY6G5Q1mYzjUYQaKspLkLzvTtQns9EfdpByPfuQNX6WFQunYfyGZMhm+BvHbydFMSWt5XLF6J64xrmua1PO8SySCZZdurq6oAuAF5qZc3Iu1KDK/uLQEAr0SbEfHAWs988ZhW4pX4iK1Wypp33hwzE9j+LHSFXcWhBFs5uy8PZ7Xk4vyMPV3dlI/XtqTgwOgFJM+4wGLp+2AWs6JPJIGzEa4dBQK0I2pqfaTsr8fCS9e6uCde4bpfiC/D4QhWqCxvx6FwVOya7uLcQ8ZE3EdP3LGb9Jh2TvnsQAV9IxKgXBcdsLJOdqFlxoMY0DGSBu5ctcGkLLQHCZPlLjtDWf3QRKfPvMUeuVt3ek29d3AzIp/vB2Nz2nBIYSxYvxfNds8Cz+az19kSjASVRAjdqwcgAaIoLuMXk6IT42XMHB6JwwgyntSDPvMGOv0q3OG9tSzdzF5S9c7WCPTu/8ck1qChte1acbsiTAoWHLuBuv/H8nJ39aKGrYp6qcg2XrrO+ao+f4Xb/9ZXVvFVVUeM6uNdqLXv0cI/rUltaKnglnzevx+viTgV0GiOW/fc0fxOIl71j0Dy8LABj+9xrJwEXIiAi7gyyB2YQ8GErD6W5A8J2bKsEynbUSBf8NmqhPRYI/Z4/QF9yweINTHodlAlz+LlrPLTKIzsSaOcH09wNCULuiPFoKezMeW2xMk9hpPLkcZT6+6E0cITV1hfNWcn6LJpmm8Kl9sIdm05Aib6AgFmiM/B0kGXXs9EJjU+9OYjzLAmU9eZecr5uEijrvM58poQEylrpKo0GZNEjURd01o98eTBby8rnDe2cKMV0qwb2z7iNkc8ntOOGJetCv//Zi/BXD+H2ccFKrasrZdQbMf/PJwXu2GfjsTvsOlvHEiBLwFvHIA4WvAqU7VhJG79NOh101VVQ5z5G442rbDVbdzARNTs2o3L1clQsniNY31qgTGi1vp0YiPKZkSBOQwJ9CfytP3JQAHCz7qClwhcdBgAAIABJREFUMF+wwLVRD2eTyKFZ8d063DkqQ+bmXByYfRcbR15ivluyqjUHU82vt/5yPg+mF/w6iSfaWwOu4PCiLFzcW8BAMMml0FirYU7d20dKkRH7EHvCb2DNoHMMyk76ziGQ9a65XPGaLKkJ2CVgmPh3yar36PIHIPD20fkqVBc0QqcxMKhdMs4Pt+bvQurSLGwYeRkL/nISU354BMFfFSxyRz4fz5y3w9s5S2vPmcscuk94dFd+fxm/zza/uQgTv32QnZ2teCcTuydcxd2Bk/BoqERh4OxzJuavXLWEv6P5IwKgzhaAGa1CgRw/geIgxy8MhibnnFmVbDrIkzECaJ0N7oCyNVVN+MGnVzMoe/VcqbO37pT/4dajyBoQikcfBuFK5IZO6VKEdQ0UTV+MfP/JaGloYuqCN1+OtZ7ZwZTKFQvZWtb4hAvZwWJdkq0kNAilASO7RHZ3CiWDdlrko/c8fWc6Grg3HlzJAJn6hms+G0QQVtxCTG2jaxGktdRWkbvRFihLgKwEylrSnnfGmbSN0B4ZCd2eP0JfYZmDlK2zN4QwbYb6UrLbDaHvWK5/JC8wklWnbPl6t2X2dgE09iVQVnHxrMWmGhRNgnMvcqxtwwmBSatD1tCZyA5Y3LpjoqPAN1/ZyKDsiP+439cdZdPvsZ8hA5i9EJ3gWsrT03HiPItA2Q1f3O4Tx57fSZay9p4bCZS1pyEfTpdAWcudVxAQyat1eSPCLGd4ymNro/uidmo/QCc5I+nuR+HRxWoEfjGJLWJFB000OCBwdn90Z4uUrq7f7aMyduBFE6/xr6Tg3rFy5jCd8EqKRUCW6iMOFnwVlHVGpzTJ11ZVQp3ziAFcxenjqDuUjJqdW1AVtwIVi2ajLDocsvFjrVrgysIC2Eq3cslcVK5ajKq1q1C9eS3LqInfibqURBCHbuPFc2i+c4spGrSVFU4DXtSu2tJmPDxbyTy3Imj7cFQQLg6IwOhPWraGpb4nmoron6VhVd8ziJ98A6c35uD+qYpOg1YCbgkYvptexnnIimrz6MuI7XeWeWUn/u9Bq+Dt1QETkDdmDJb+7RjWD7vItAvH1zxi7sLCm7UgPsOOoeKREme35WLPpBtY3icT0391lMFX/8/vR8BLe1AQNAx3ho3lBQXx/ySCxXFvLOPvQNhntjKwQPQLZIEb8rUDDN7GDDiHQwvvsyOzjveVfgsakO/bgbyhgcj7KAB1qW2WJQVhM3hCS5az6mInrIuMJqYwICqD5jznwFFXQVm93ohffnkd0xYQfYG74UJQDB4OCsb9/iHIivOMozB36+RL5VW5hfy/3NBvFU+8Zwyx7l3d0Xa1WsseOehokS7LV7F+HX8L6s+c67J7dKfg9JXZ/P6knRW6FrNdCnotFLEjoVj0AfS1zi8gW+JntBRn3lYRlDUHcs3T6dqeJW3H/PZ+S5ay9jTkerpJJYc2pT90CX+Hocbyu5m4i5XLB0Ox4H1oHl12/WZPSlanHBXAQ+KO9QtFS57nuO3drpyXCiC6AjZICB1jtYb5wVP5vU7cvLZCyYYDvDDb9LjYarZLmTJ2/vjGi2us5nEnQXynRf/cuiM5d+R7oqw4z5JAWU9o03tkSKCs9/SFx2sigbKWVZpDH9vBQdCUlVnO8JTH1i4cwdZlNYt91yGFL3UhbcGZ/sujIAdJZAHIoBGdn93LW7N7oi1kHbvkn6dauWMTIm+h8FYt/D+XCALWCNyzFsTBwtMAylrTgbV4tsDNy2G+WkXmSdQdTkbNrq0MxJJVbfm86WxhWxYVxpZdlhyYida44pl5vCYGQBYRgrLoSSDHZySngkHeJQLVws4tkCcnoD49FYqzp9B0/QpUD7KgOJfJg2kCkykQqEr9fCOlBMdWZbM1LFETzPltBnveFgHNjufx30zBzP+XjpXvnQFZ2h6af485bbNOlKMsuzMnbHO9FqX360GO0M5sycWpqGSux8GBazHj1+kI/foBjCCO2o+1t4JlLt3vHMLc32VA5NKlAfTVxCK26iWaB5NR4CRtSNoIeeQg6MqFwb26yYDL+wvZSnbRP05i1o/283dg688WMa8t//fE/1+H+4qALgG3Yz4lALfTf5GO2P5nBOD2arW1Lu/18YqzJ5A3LIAnXLI50wGdjttcGrOZJ7f0va0/f8VhPZCzr+xxC5E1dAY0NY47aXEVlP3nz3Yx+EcOvtwJqso6nHlXmHje6jsBJUcdb7M79+2NZWWrNsH/tbl47flYNDaoPNJE4gynBbCetpbVVlcL23xnOk/x4RFFdIEQev/Su5re3cSRLgZdWc4Th0tBgN65RX5L/Iz2vKCLoKzIFUvnjlax9Ns83ZblrcFgAIGutg5xntXcbH1MJOpDOjuuAWNDIbSJ/4U2qQ+MCsvOQVvuPHHotXIY9BXu8cPTro68wCk8JqBdlJJ1rON9xVayAcPRUphnsVDT3Szmkc31C7WYLkaqCstx970IFMe1LfCKaR3Pr70QywupZSXO7cbpKMfab/KZQe80bw3iPEsCZb21h1yrlwTKuqY3nyglDhb0XUG84hMa6FxJAmIJkCWeIClY0YBagdqoD1Ab/YGVDFK0JzSwf9pd5scc/mSrNW/J/thehP3vIcjLumag4Ui9iQd09KcEq8mgLyejIrcReVflvKWHtqE3VLZNuizJEwcLEihrSTuuxRmam6CtqmAr2ea7t9B46RxbzxKtgnzfbtTs3orqrRsYgK2KW8kWt+TkrHzuNAGonRgoWDIE+Nk9l0UEo3xahADsLp3HDtCItoFoGMiCt2zdWhSsXIcH89biZtRanAuJQ9rQOOz55xqs/tlqzP/2asz82lpM+eJGhL20FYEv7sCUH6Zi6b9PY6v/ZaZGuLKviJ8pfpaMRpRPC+ejIx8vc+lelTPoSuArUSYQGEugLC0OdARtxd8Lf7QFNREDcWbkfGwZdxkpc+6yE7XbaTKmYBCtbvNGTUTuRyGtnUK76h6crkTSrLvMf0uWEqFfS2IgdsTHaZC+txOvs3hPEbilfATcUjkqT8At8d0+vFDZep/edqHJe4SC0YH8XS30D4KmSJicyQ8fFyxmhwSifNs+h5utqaxF1uAZyB63CIZm2+8bUagroOzY9w8xIDvwz+5ZYxYeutjq0OvSu+GozS4SqyWdXdBAXV4pfvziKgz89iIXSlsuIlrLkhPIng4lYaEo9R/RJfzjPdW2/Gs1vIuGFujKH7Xx2zdfTG7j+XSictZAWXKkY80SlkDZtPRjIPCWgkiBIAKzlH75ylV2gErpIohrDZgloDUrK8vmkZuby+kSKOtE59rJqq+8A13829CkDIRRVds5t9GApsOx/Fwpt4bDqGp73jpnth9TY8YdmzMsBE3ZOfYLSTlYA+WLZvGYkhzmWgu5w8czKEvgrNVgMuFh6HKmLqCFWXvhP7/cwd/uv/9ku72sLqUvePs4jy+3Bbpvfe1SBewUEudZaRMzsP7lHT5x7JboC+z0quToy66CfDmDBMp27r3ckRN44pgbGNk5UYpp1UDd/CFsLVu3sg2waE2ULlzWwKNzNQj4fFIHnth4jPtsEm4ctmwN4PLNnCxI/qloC6IIEm8LuMoSCJAlkCny+6ntrGCsiRcHCxIoa01DPRdvVKugk9dAU1qM5vv3UBY8CpXLFqDhZAbqU1Mg378HNTs3o2rDagZ2yQFaxfwZKJ8dxRQLZVMnCha5BPKGjrEL8IrWvAXjRuPxyHG4NzQQNwYE43Lf8Tj77kSc+FcErvYLYcuxy0OjkDlyGS6FrcWtOdvxeH0Syg9lsFVv873bUD1+yFy82ooy5uMloJoCWWaRdS9x3RLdQXzkDeRNCEDRhBGY9qOD7OxMBE47njf8THA8sf7ve7F5zCUkz7zDtAsE3hJlgrUFiOKsBqTHZLODsdlvHRMoEz6bKHBAP2sduBUs4feCgFta+Aj5WjIDtzH9ziJlrm8DtyZVE4rDJ/L3lSxnRToD2v5JNAY5QwJRPH+lww9/U04x7n4QiceTV8Oos+/Rw1lQNmJUOk/q/vz6VofrZCnjxaBYZA8M4XafGTAHMNivqyU5UlybBuYMS+S+2fuXCLQ4Q3/RJsLiVdWqJV5hLVu5bTu/O2szhB0KFivrg5E1RU2IePUw090QTY4YlHtnCfyy9zLFKLtna6BsVPSMVlDVrpAnntJteUSn+wwfOcaiTKPRCJVKZfOor6+XQFlHOsLBPPqiTHbopU0fB5O2s/UxAbDKzWEC0H90nVsOvdSyCuSOCud3N1nHFs9e4WAtpWysgZYWyAKGozTAD/qGzjuiKE/ljgTWb35ItE2lVR0+J/DJn7HMG9yxcGVlE1vKksOvrgi0s4rGa6M+4fhiclfUw5pMcZ51ZGIG1r28wyeOXRIoa607W+MlS9lWVfS+CwmU7dyn5BmanHxBo+mcKMW0akBXXQH5lP6omyZZy7YqxY2L5Nl32rZI09boZ+Ix4vl47JroHVtccy/XYOynBevYwJcTUXJP2DZMjphEQLapzrH/jDhYkEBZNx6YbigqUheo83PdvpuxuZnBXq2slK15VffvounGVXZs1nAinR2dVW8TLHnLVy1D4ey5yJsyDTmh4QzIlviPQP7osSgcO9JhoFcEfPkcFoCyyPEonxGJyumCs8KqRdME696tG1C1aztKt+5G7to9uLs0AZdn7UfG+AQkD9nBOydS/zIbU765E/6f2NnJ+nbkcwlM3TD398cRN/g84iNv4uS6x+xQTfagAVq1GY+imSYVNWqc35WP7cHXsOjtk+zsLPDlJB7k09Y44ooWrWvNwWIhjnik40EegKN+mMpWu2nLsztx+JrdzmsuqzfEIneo8J2VzZ3JdAbmDsByR0xw2It1/dX7uNsnAnlzNlt1+iE23BlQdum08yAPzm9+ayOIU9aVQHQF5/oIdAUPBobgxsyusdhxpW6+XuatL8bitedj8HhUBIpmL/dYczTFhQIYeijJYzJdEUTvSxl5Kp821ZXiXl2muUGL2W9lgN6bF3YLW8pNGhWUq0dDsfAD6KsdsyK3xB9rKc6eMiyBu+ZlXJFpXl7ilDXXhnvX+scHod/1JjSnI2EyCDQ45hKJokCxchiUC9+H2gmA31yGeF26amM77ljVo8diknR2UANlU8bz+7Rs1hTLJbRaYWfq4ECQoy9rQa9swr3+UciJdI4j9vUXVzO37ImD7lFXWKvX+G8k8xjtwam2BSZrebs7XpxnHQk7jrVf2OkTx67fJvECVmNjZwfR3a0/b72fBMp6a894oF4SKNteiaprdwWOu8GB7ROkXxY1IJ8ziK1la2Mkh2gWFeRAZEy/cxgmbnl+Jh4Exsz73TGRdtEBCV2fZc2g861A1MYRl1pvSI6caJV46k+OwFFAlgqLgwUJlG1VpVdeVCyeg/LpET1at9rkBB7UE1giBp3GgPJ71bh34CFOL7uElPHp2Nl/P9b9cQtW/GgNVry2Amt+uBSbfrYI2341Hwl/mIO0d2bjzJDZuDkuGtURg1AWPgKFkZEojZzElr2y8eOsgr35w/yRNzSgU3pxSADygsfjYeAk3B41GRcHT8Hxd6Jx4I/TEP/mLL73+p8swqo3lnO91vxuGzb3SUT8uAwcnX8NF/cU4PGFKpv8ywatAbeOyrB/2h2seCcT0T89guCvJGHMJ/ezNS2BtR2BWwJz6T0y6pP7EPr1ZMx5MwNb/K/iWlIJSJ43hKar51EwUuCZNaczKJolOFcjCqGy1ZscqmrVkQtsQVOyybaTJkdB2c0rruPV52Lw8y+uQ0uLa1atxWmXzOgKIlB68oZDbZEy2deAoqaZAfO3v7Ea8rSTbGWluHbbfkEHc1TFLPUKa9mS8DCUBIwAeiG9mF5rQGz/szyuoN0HFAiMJWdMBM6atPa3J4vUAuZUBXRtjWrAWvenHU23WcYeaGtNrhgvgbKiJtw7a67FCoDsFcvWqgTCEhhLoKw7/LHMbzo8VLCOHRKEsjXb3Kv4U1q6pbycx0ylAcOtaqAgYg7ruWixbbA1f9EOkHPPlgq5VVmWEsa8f5B3VPzm6xssJbsdR2AsWcuSY2NvC+I8SwJlva1n3KuPBMq6pz+vLi2Bsu27J2+YsMWwMGJW+wTpl0UNGGpKBWvZ6X0tpkuR1jUw+fuprWAKgSj+LyVClu0e75X1u7mWkn9DjoDP7eeJE53ptxjIAdOoF/axAzKVwjkHHeJgQQJlRW1631lbIQyoGzJ6zrusrq4OspDRzIPrjIbIEiv/uhxX9hcxPy3x1C77z2lE/zQNZ/tPRHnYhwj+9LbWhQYCNoO+lMxOaGLeO4nEiWdxavEF3N5xBYVpV1E4ZylPHCrWbxB4eg8nCzy9OzejmmgcYpaCaBzK50QL/LyTgjoBuO2sdjvw9uaPGoXHfmPx0C8AD0YE48HoCXgQGIGHE6LxKGoe8hbFoHTjVtQfOQhF5gk0Xr0EVXYWNCVF0NUJfHqPzlZiT8R1zP/zcYT9f/a+AyyqK30/u4kxdTfZTbb9Ntn/bnrfbDbN9DU9MZbE2EVFRYqAHbGgqNgBBVGaghRBAREFFREVRUURlSIwSJuh1xmGMsMwvP/nO9eLlBmYgZkBZM7zzHNn7j31O3fuPec973m/Zw9jzmOhmH7/ga5sW+aoLAgzhpEkykHGzt36XTzTyC24rnp7oTa21yZua2M9hCs5Jml7OQPxtVSQbh/pumdryJoV+hxhwCwBtOqCJqBs6N5UNol7/fduqKzonQOpRKudyPjVEpkTLXF2ynqjXIG6Dunl+aU/B7I+2rUkmmmu5tquBn066033MnsmgUL/16rD/cuWLQ8KYs+RioiBN+HvrW07pzu4IoU9hwmgJaC2KSWW23Yesr5zVJW/CVDlpQd4fVg6xwcCVMlpFw/cknYsrx9LcYgFS9IEfJrOAC2fZ/s0fN6aHo2grKaWUhOvtQWyMysYICvPUKHt3dKMOl3ox7a0IN9uHXvv0I7JnLmL0VI9sMbkaiw0IE/z8lXlPh4q69eUJ+JIUO00+1VFFF/PZu/2oqDjqi73eI7kC54fph8JAyqc5kG0s3GgLHjzBuHnWQyUfdIfuwbBZ/+HRqYs33/qjkZQVp1l7oHzRlC2YydyDr6MLNmOVun+V9WaXxhbttJdzfaU7pMPqau1pVJY/KmdXux9QbD+awSapL1jY+nTeD6zL7aBVm4TEzoUlXxEyLYeOrx/HI11XbeQdYis4gc/WDCCsiqMM0BOVR0MgshiFpQNXTXbDFVFGsxTHQic1UVoyrjGnlV18ZEoulULWliI9xLg0Krr2D3tPDZ8fhKLnjvSdt/zkgGzhwUgc6IFDn/miO2j4hGw4AqObU1HYjDHdCWdRHWhRSJmDtia8m6j4VY66u5INpRHRiHPMwC3NnkiZZkrLllswnmTtTg7YSXixyxF/A8LkTDaFld/tUTGtLnIm929bEOh5WwULrZB8frVTOu33MsdlcH+TAe4KOI4Tq2MhOfoMDi8fhBWTx3AjGEHuHbyTgRJMoXJpgRhOrFsHzoAiz+HYeXbMUwXN94nC9JqzRxqqbOFuvPVUWG4PZ1jzRYstEV9xg0WNd9hGwfMTrLQyNP17Q17mZQBSRqoCj2Bsmdi8vH8g654+VE3CPO0n4xnB5/ChVGLWZ2Tx9rilm+0qmoYz/XRAv990pX1k7KlleVUeymZ2bwq5nQfc76bfCCwZZVNTczZl3DZkrsVuwe/kYQBSRmQpAEtqNVFbGPALDkA0yQQYErAK314cJVPR7/588SsJZC1ffz2gC2lKS0tY3nw+fFp+fx6czSCsr2xGpemVSaBPHo205AlLdnOoaW6BGJ3M3a/SPugH1sZcxqCKZyDZ8EUS1RG3Vtazp3tpu/f0uRkpiMrMp+htigBOVGdZI6aBPUSba3NCqTPWoeMuU5AS+9khN540p0t4m227ziPUVsxLS94mZ5nY6ct3+ru/aNlFVRG5+dZBMq6P+E/KD7+HxhBWZWd2e6kEZRtZ4x77asRlL3bo1WRMewFQS8JY9DcAo15GagibdmVYzRPNMRipsUVw/SRg20Osmi7y9JXowakFSry6mH5lzA2yJj9WChIM7Z9IEB2xgMHsO6Tk2q1MtvHV/WdHywYQVlV1hkA51pbUbTQAmW7XPqtMvIiIWOJETisk9AsR6XjXFRuttWIUVclqmf3foL/bRxedxMJP9nj5s/WWPLcYQ685EHMdkfLP4VhxdvR2PrDafjMvYjI9TdB6cmhTXfArbr2kYOy/JRq0H8udlcmQu1TsM/kBPb8cBA7R/hixxs7seu1zUwmIXTEKhwbuYyBuVd+nY9bM+Yhf+6s7hm7NmYQ2S/GjfkOiPllE/Z+vANOL+7C0j95weKRfZh5f2DHtjKNW84J2dzHQ7Hwn5HY8MUpxtAlpm5fgqKyAsIVyziW0hRzCFctR1OREA3pmW2sWYGJNcgpmLpAzr7I6Rc5/yInYJ1Dd6DstYtFePGhnXjh4R3ITlPhzbtzZu1+F8en4Oxoe6aNd2uCJc5MdIS8RtIuhvGrrixQklfNWE/f/qvjdtf8lZuQM3sRWhp0s3BAiygDgS0rXLqYAbME0N7LgZ6Rc393EAv/FYnSzEqId1tCsm4U5DnXBn2zjaBs77pQWZsH+aGf0BzyDRTl6V0yaUo/D/HGn9mHvvcmyMvKGCOWnEwSKSd/MTliHBgSP71pz0BJIzSfxXwBSM6oZrdWRR7n5ttzFnVbZZHfUcaSrUvP7TZedxf3bLtyZ/eLe3fR+nRt+m+CMOP+4D7loevE/DzLCMrq2rL9m58RlO1f++u1dCMoe9e8tDpK2yVFO73vnjR+08gCPFu2xt9Jo/hDJdIx1wyYPEBOuziHPaQdu33UmQHb/EinNKZFSRqVTiPjoOzk4IYYLTwg2yzr3ao1NZ4fLBhB2YF5K0ivXWGAhPRG/02ISQ5AtGAelI2920Le2bLiw/sYS1ZW0DunZSV7Q9j7oTyCYz+KyxqRl1yF5MhCnHTLRIhdMjymnseGL2Kx5KUozHmck/3g2bb8cf7fwkEMc9quG7T4KqK3peNCUC4y4ktQnCVGk1R75nlJtpilT/DjAGTv2YnY8m0c03qe/1QorB7bi2VPeWLt392x7XlneLy+GUEfb0DM6HU4P2U1rs1ejkzLhci1soTQwrQDkHt7limu/DIfJ75aBv/31mPz8y5Y9tQemD3k1xGwZSxb0sQOgunDIVjwbCScRsYiwvEmqos1B8rqLp5D7hyesWSOki3r0SKpQeHarW1OV3Is7NBYIOrcxex3S30jMuZuROrEFWgsKOkQRx0oez2pBOQQ5PnhO5B4urBDmu5+1GTm48wvq0FALI0dzo9agoITl7tLYrzWRwtYfrWPTbCDNndkzTXk5LM+KA3QjF2pSTUGAlu2IiKS/R/LggbWhF8T+2kbh55jBMrSszM9Kh2SbZMg3jweiqpibbMaUPGNoKz23aEQXkBz0GeQRU6Csr68YwYkVxDpwtixYg8LEFu2N4F2YhAYS89uwTQriK9yOzR6k5cxzV0LVIcFQWQ2HULLWXdPdvqWPcUS2ZPM0ShS33eNwlLcGL0EuVsDOqXW/ic57SQZA33Jc9u9cYyNh2hH0UAJ/DwryiYWbr/fPyg+fu+HGR199XADGUHZHgw0mC8bQdm7vUcvCMFkI0v2rkU0/yZLT0bl0l9Qs8rIliWrec66AFo55cFY2g68f4H6LTqaW1o/MRtq5Vj6CqdxO+PBA7gY2pWNRt7kCVgisKcvgCy1gB8sGEFZ/fRnX3Mt3bmNOb9CK7c9uK/5aZteej2ZARE1J3Wz/bu5uACVSyeg9pCntlVpi09MtezJFrhts7LtXE9fZPUKCFNrcD1ahFj3TAQvTYb7xAQ4fnSC6b7yQG3no+kjIYyFunbECez4+SwCbK/g2JZ05hgs81wpynO190xbnCnGzZPFiPfORpjDDXjOTMSmr07B7rWjMP8jx4zn62E6LBDWj+/F8qf3YNsbexDwtRtiJm5D4uwNSLVahRybhSi0nIuCuTNxc7I5zvy4EOGfroTXWxuw4R+uWPCEN0wfCOgA2s66PxBzhgfA7MkQLHv1KNwnnsPZvQLVOmytSpD8Qu4cWwguXWGaj/x2YtqOXLzDm02mc8yXqWTOyitr2ZbH1MmrOgCzqkDZKwlFHCD74A7EHtHMQ7OsSoxz0zYibTznDCZlnA2SlmvmlKyne8Z4vXsLvPW4K156yFVlJNEObwimz4e8UkdyJ3fYstWR/agtq1AwZ1/k9GsoBNKn3/R1HFscPr3+GCQbRkPiPgetMt0szvWHDY2grHZWl1/bwzn0Or0MUHb0V6CoKuogV9Daov0iJi2sCiZzC2mMiOPc+3GBdi0bGrFphwE592rI6spuJgvkruY0+vNWbe7WIJkLXJA6wR4KiXp5qG4zaHfx/b97MlB2xve6W7Rrlz0qC6Rsvmf2xMH2p/v1Oz/PMoKy/doNOi/cCMrq3KQDJ0MjKMv1BbFj6eVMq3fG0DsLVDv8zJho4hD9Car3rmaGSxW4+CqIDUvgBrFNiVUa75ljuAr0oiTGfh1GDoGCsfzNo2iQdBwEU5aHVl5nbSJ2X6uy70AdP1gwgrK96DA9J1FIxCAdsKrwED2XpCb71lYUr1iEIjvNZAbU5HL3dGsrqrYvRsUaUyibNGds3s3g7rec+fYMmNXlVmJi3BZcr2bALQGmJJWw1/wSXMedZeDtgv+nXi6Bbff9ZyRWvxvDFkuIqRu46CqOOKXi7N4c3DxRhLxrVagt0azd5Xl1yLpQxhykHXfJYExejynn4fS/WCx9OQo04eCBWzqaDgvAwie84fTCLvh+6oaon7fj3KyNuG65Gtk2i5E2wxoJPy1AxKcrsedNJ6x/dgdsfucDkzvPSMqDvs8d7g/L3/lj0d+CsPbDGATYXEbWxTLk3c4x+2GQAAAgAElEQVRlgCzvpIf0IO3sVyEv5zby7Zw4JyGTLZAzdwmkGdl3OwqArLz6LjAr4phWnUFZBsg+tINN1o4d0oDh0qLABUtXpIy1YeOFlHHWSDDdapQq6GB5/f24dakAzw3bgbGvqXYcQ2AsgbIiV90B5AOBLStcYQ+RmQmU9f2n762/Xu2aM60FBi+5yp41R03dGCNSsn8F0Nr73TldSzHcGSMoq6GtW2SQnbSBYv+HkN/Y1yVR4814iJ3GQbzlV8gEV7tc7+kESd8wHVOa602yQJ7NKrRI+w749VTuULpetNWRLagLF6omOBEzlghQPc21K2IvM9mC8pgLOjFfYryIvTteeninTvJTlQkbH90XxABaVdcNfY6fZx2xicXO3+8fFJ99RqZsj7eJEZTt0USDN4IRlOX6jnRk6UO6ssbQOwvwbNnqIciWTfDLgcn9vExBEEwfCkXKyYG95U4hVzJdWPIaSnWPce66qk2TI2LUEXhCR10RJ/nBghGU7d1/TZ+paqKPsEF1c2WnLYP6LLRd3uL4U6z8usuJ7c72/qv03DG2WFSf3HcnD+WhUQyMK95veDZEXWUTA29TjgpBrHVyTka6tcSkXf9ZLGO8Wv0lvANoSv/b9h+Lp8IYI37D57HY+es5+M9PQuSGVJzxESDlmIjJMZCWbnehWdaCUoEE6adLcM4vh+nm+ppdxLYf45meruWfwxjLrX25C37vgw3P78G+L9wRPcEZ52etx6mfVyPyy1UIfG8tnF/cBvs/eWDOg/vb6us2/jzc3Txx7FgMLuy5iUOfrEfWvJWQi0ogctwCkcMKVB4IRM68ZXfAWXMI5i5mGrR8/QmYTTNZg9Spq9FUUon2oCzJFLyoASDb0tiAaxv248zYlbgxzpoDY8fa4NxsZ7T2EeTn62k8amYBkw99GIB+Jkz9NmOSL6AFdpIz0EXgtWWrDxv+P8/XvyY2lj0TS318+VND4kiOFEkKJXbKcgbM0pb1wRiMoGzPvaaUlkIW8Suag7+AoqiTBIxCjrrwrRw4722LFkllzxm2j9HSgvxl6xkYSPO8bBNrNGRqsAjXPg/j954toFAwHVnhPBMoamtVxr9txjnCJE1ZdUEhbUDqpJUgpqwuwwvDXZkeeVGhfoB4ki6gcY/9m0d1We1e58XPs45Yx2LH7wIGxWfv++FG+YIeetwIyvZgoMF82QjKcr1HsgW0cmoMfbNAtcNYVC4Zj6HClhVliGH6UEibTAF9p3MDPaSdLgFtkaYBhM2zEagSdh2kECOWmLEUh5iyugz8YMEIyurSqrrJq3jlYpRuXa+bzLTMRSmToWiRJYod7bVMqTo6aZFW2E9Ftfsq1RG0PatQIHuKBXLM7bRNadD45MGc5ArIeQ4BG8R6JSdhtLCy9fvTWPXfGCafMIueXZ2AW/43SRoQO3bdJyeY4zL3SQnwmXMRB5YlM53Y4663cG5fDq6EFyDtVDFuJ1UwTdza0kbmAJBYt+Qk8Pz+2wy4JZ3bzd/EYdmrHfV2Z/w2iEklOPyfO3a/44L9n27B/hEbkHb8OuyWr0JWqgAOL3OMWtMHArHtX644NdKOAW8EvqX+Mh9nvlmGK2MWIWsSx4AifXhiQdE2VQJjCZQlcLZKWMQG/JfO5eGF4RxDNnx/Wpe+qSsoxcXFe3Dmp+VIG2/FysqaaIFzPy7DlZW+QLP2W2a7FGI8obUFXn/EFa8+1P1EnRx9kcMvcvylq8DYstZz+pWpKpw3E4U2Vrpq0qDJp/BmDWz+Ho7k2bMZKNdwQT/bj/VpECMo2711FaUpaA75GvKIX6AUd9T0louyINlpypy+SU/6aM2WLg0Ib3tXkPwQ/TYG/VhAZLeQLR6JVi9TWUBNwiVOw3dm91Isec5BTEuWNGV1Gb57258t6tFRX4GcfdEYaiAEfp5lBGUHQm/org5GUFZ3thxwORlBWeD2ovXspZ0zbf6A65/BViFpcvyQ0JZtEDdj3pOHQCxT2vZv8ttgEFt2MISdvyZg2n2cxELgQtVbwEgzlrRjaXBBrDxdB36wYARldW3ZvuXXmJ3JBtWSC+f6llEvU1dHhLLyG3M6bkXvZXao2bcVlXaToajU3eA+d5EDBJMsoJQOXo3D9vYkDUdyMEZatZdC83Fixy0G4HqbcuxX0rUlINXmmYgu8gU8gKvuSM9I22cPMxYv6eiS46/tP8WDAN7dJhewa0oCdo4/i+2j4uH05Sms/egEVr0TjdX/jUHyuQwmVXD1Skqbpuz0mbOReT0LXp/sgdvLmxH2oQOujrZtm3RTv1wfZ4Pr46yROZFzFkZOuFLGLcCNsUuQunYPA2W/ftOXTc58rUOR7LAPCSabGRM2YdRSJI9tl99kCyT9tBDnpm9C6eWM9mYzfjewBa6eyGJ9NumdnvUfq2JOs3ui9qLq95u2VR8IbFnR2jXMeY68vH92MGhrM13Gp10CTh8dgcBmMgNmm9L6vutBl/XrKS8jKKveQvKb/px+7AkrtMrvkgNIK5ZAWMn6nyB2mQ55fqr6TFRcqTqdAME0TvObSDcFKzYCLS0qYhpP6cICTcXFbOxGLFl1IXuqFQNlpbfUj+/qMvKYbIHQ94i6bHp9nhiyzw/bwRZke51JDwk3f8fNm2j3UH8Hfp4VaR0L18cDBsVn73tGpmxP940RlO3JQoP4uhGUBQST57EXRUOS+i1xg7iLDV71NrZs1F6Dl22IApnG4x1Qc9pvgrHPvNNWK0NUohdlCNNqMO+PhxjQStpHhTdqVOZC3t/XfHCc6eGS3qw+Aj9YMIKy+rBu7/Os2LsHovmzAYXhmYAKsRgiK1OQkzFdhKaMa0y2QHJSt9uOK46dYoBP0W79sS100X595kEOzEinlti4xJBNiythjFlizhKDNsLxJtO2JWYtOTYjdi4xblf+J5qxbwngJSauOqYuaeVeS8hgYOy6DRtRL21izSEnX1bzF+Dm2XzMe+IgZjwQDJvf74XzCy6InOCKlKDDSA+N6PgJiUD6nc+NfREMlJ387h4c+XrhXTCXvG+3+6RNn4PkeXOQaG+G85utcX7zAiRsWYSErUtxdps9zjqvQZzzRsS5OOOE6y7E7NyLY26BiPIIQ9Seo4jyiUOU30VEBV5DVMgtRB/KxsnDAsQdvY0zx/OQeLoAF88UIilBiOSLRbhxpQTp18uRlVYBQUYV8rKrUZhbi+JCCcpL6lFZXo/a6ibUSWRoalTos2sHbN7j3/BgoCyBsz0GpRK5tqtx28oerTpyt13qugUi67loqb8LHPVYDx1GECdeZKBH8a5dOsx18GTVomhF8LyTKFwyHjVrf0K9QDuQrj9bagRlu1q/VSaG7NRCBsjKr3VcaFGU5bc58yLJila5ZproVAppiwtMF7Kdj7RIJ5i3FKRjagz6tQCNG8nBV7m36ueTcOsu9o7NW7hGbUWUzQqkz96A9JmOoO/6CKQpS7rkpDGrj9Aib2FknZkPHdBH9lrlyc+zjKCsVmYb8JGNoOyA76LeV3DIg7IyGZh0wWSjdEHv76KOKesSjjK2bPXqMR0vDPJfG786xV62jBV2XzAcPz4xaFp0wO4aTO44H3MZc1ZtvYmRYv/mMcwaHoIbMUVq4/X1Aj9YMIKyfbWk7tKT8yoaWFf4++guUy1yKvfdwxyMyct0MIFqlqPScS6qNloBSh2zY5RKCKZYQDBnsRatM0btzgKNdc0g2YPSHAkKblRDcKkcgszbjClbXVmLw85pWPJjDHIzCtm5jJSbiFk6H/GLf8b1td+j3P0zSA6bIOvKCWQlnUTmpVjcSjyFjPOnkX4uHuln43Et7hwO+pxmoGzynPXInnjX+7Zg6jzcNjVFvtUUFK0ei2Kn71C283NUe3wCidfHqPf5CI2+IxiAoNj/gdbHOu+PWB0LnEfi1savkbLmByTYjUGk1a/YN2M6to+bgxVfW8Hiw8WY+PoKfPOPdXj3j1sYCPn8g5zMgqrja79zx3v/54n/vbIPo94NxKSRBzF7zGHYTovGCotYbLQ7C3enS/BzT0HY/nScjMxhYHDatTLkC2pQWda9fnB3fWboay895Io3HnXVuFjxlRQGAlRGndQ4TXcRebZsZVj/TbaF82ZBOF+1A53u6n4vXUvyTkTZijEoWzkOxVcyB0XTjKBsx25qTgtAc8g3kId8C0VxOzZ7qxL1ZwIh2TAa4m2TIctJ7piwm1/ysjLkWC6/A8aaQzDTtoO+eDdJjZf6aAHppfMghqzQfIbKnFrEUuazhUkEyrs6EuYTifyOMpas5IaAP6Xzo+lP4ey9+uEzunMG2bmSts9GsB2U6XG626HVuQxNfvPzLAJlXR4PGBQfXyNTtseuNYKyPZpo8EYY6qAsvcSJIZM93WbwduIArDkBspVLx0Ma238TGF2ZZb/1VRAjlsBY2vZv9dfwQSMpWFPSAN57O+nd3jihHmitLqrHwn9FMq1Z2sqsz8APFoygrD6trF3e4rNxnHRAruFlOMipGLEsKvy9tau0mtjiI/6MJSvL08+kPc9uA5tkyMsq1NTAeLq3FpDUyhG45zpSrmbC0toWmam3EO8wF1Uen6ImKx5W1guQcuUSmo7OhdB5JG6u/RGJyyci3s4MZx1X4qzrblwNOITsMxcgFnFsmF0bkxg7ZtKXgQyUvWm7DdfG2CHyi/WI/GQVTnxhj8QfFrVJHrAxwSQLZEywxJVx8xH+1UJseXcFJj67nmmafvnnTbB4yRHLX9wEu/9zx+p/uWDTm9vh8b8tCPh5MyJnb0TswvVIXOuIlG2rcMvDHrl7l0AYaIuyUEtUBJuiKmgKJAGj0LT/s25BXqnf/1CxdzQKvScja/dsXHe3xQUXe8Ru24iDa52xe9EurDf1gdXY/fj54wP45k1/fPwvH7z99O4eQd32QO9//7IHn73gi+/f3o8Jn4di5o/hmD/pGJabxWL94jPY4XgRvq7JCN2biuhDWUiIzcf1pBLk3KpCaVEd6qXqJ9u9vRf4dGFuCawtcz7VztFV/pptTF+WdGZ1Ecp2boWoH7VlRRudOAkDoVAXzRm0eRTFX0DNmp+Qv/hXXAnsqgk90BpmBGW5HmltqITsuDnHjj06A8qGqrauUlSKIN5jxTl0O7QRrY0aMtIb5ci3W8eBsTSXm2qFypjTbfkav+jfAiLzGczBlyT+lMrCblvas3l2qZ/6+WCjqJzpyOZtC1CZh65O0sYJ9t4bpvkCn7Zl51wuZ6Cs7TOHtU2q0/j8POuwdSycHwscFB+fd7ndTHV1dTq1xb2UmRGUvZd6s1Nbhjooy7a3TDaHrKCgk2WMP/tiAQJjCZQdzGzZeN8cTP9tEHu5knas6SMHUZo38J148f120j0TJvdzmrcOH8RA3qTkL3U5lufWwfr/ImD+h0PMA3uXCDo+wQ8WjKCsjg3bh+xKNqxCkRoHDX3IVqOkZbtcmHRBi1i1x16NMrkTqbm4AJVLJ6A2xEObZFrFrUm4zCYZQuc9WqUzRu5qgeMRWYzZ+eNbXrD6cBl2TZyFiyt+QsOtKJB0wbGjR1B3wgE5m39Bcfp1xpTNz83tmpGaM2ts4xgg++JDO3HpXA4DZWvyhEidvIptk5SV35VxOeVwBr7vOcPrjY3Y++ZGHPt0Ja6NsWEawm3yBgTWTrREwk/WCP5iCda+vQqL3lwH+092YfuoCKaba/faUVg8FcYW8lTp7Vr9JZxp52766hTcJpyD77xLiFp9Gudco3F9XwRyQvej6MgeVB3fhrpYB8jiFkMePQfyiPFoPvBVtyCuPOQbyCInQXbcArKzK1GfsBU1F7xRfC4EgtMxSDl+BqcPJeGQXxr27kjGznUXsWHJGSw3Ownryccwa1QEJnwRih/+E4DPX9yLd//qqRW4+++nPPDRP33w9Rv+GP9pCKZ9Gwbz8VFYPOs41tiehrPDBXhvv4oD3jeZtEOIbypj8CYnFjH2bp1Y1qUnf3zRnfVhbqp2LPqmAhHI6VvJvpAuefbmhKwgjy0eVYXrJj9t69CYk8PKL9q+Xduk91x8yZU4BuClmU+D35zTIB38gRqMoCygKDiL5uCR7Nklu9RRoqgxMYz1pWTrJDSln9e4G4Wb3EDOu9izeYolugP9NM7UGFErC1QG+LFnktBqtsp00hupTB4wZ7q1yuv8yUxbZ6ROWokWqW4W0Ph8VR1ff2IXe6ft2XZF1WWdnJv18AG2s7JRquOdWlrUjp9nGUFZLYw2CKIaQdlB0Em9reKQBmUlEvayoJe6MejeAhxb9heQnMFgCpnnKjDzQY4VO/2+IAZsXj3S0SPsQG5Pk1TOtBup7qS5GO/TPfORtgtbPB0Gyz+HoSTbMKAzP1gwgrID406Si4RsYF17WjdbfbVpFTn1IpZs9WEdaL+2tqJq+2JUrp4JZaN+t2YzJyIzF2jTVGNcAGUlUqxfdBYjX92Hkc84Yc23lji7bEwHoLF855eoPGCHlJQUxoytreWeS3s8vRlQ29TUFbhTZVzLicfY5OvlR3ci40YFJBIJA2UbGxvRWFiqEpjl88lNFMLtEz+s/KsH5g33h91TnnB/aSuOf7EcqeOt25hZPFibPckcN8ZzYO2ZX5dCsNUHTXkiVORLkXWhDJcP5uO4SwaCFl+Fx5TzcPpfLJOKIUdocx4PVQvg8qAuOU1b8mIUHD8+CZcxZxBkEYsTa4/h0q4IZAYGQhTJgbjS2FWQnbSGPGoa5Ad/7GDXztILzaHfQnZ4ImOvyc6sgOziNjSnBkCRdwotFekdmGxKZSuqKxtRcLuW6d9eOivEqajbiAhMx36PFHhsuozN9uewyuoUFprEYO64SEz+8iBGvx+EL1/zwwfPeOGNO5Ph9gxdVd9ffcwdHz7rxVi7lMcLD+7Aq4+4wnVtIvx3peDYwSwmw5CdXskkGKhu6kKR+14IpllBV6z2/mbLCi3NUGgxR11zh9T5hstRDMxLnWeCVW+Go+z2wGRXDWVQtrW5EU3n1rDnkDz0hw5yBYryQki8bDhANsgBLdK7C2Td3ciibbuRTRJCDJA1R4Gji9GJV3cG0+M1kdl0Nn5rystTWYpgujVb1BQnpai8TifLohKYbEHFqSS1cXR5YbM9t/PizT+o1r/VRVl+VpfZO33j17G6yK5XefDzrMPzY7H90cBB8fH+r5Ep21NnG0HZniw0iK8PZVBWMHsB91I3XTSIe3DgVl0ctReVS8aDHH8NlkATZJIoYFIFvwlG+OrB5fztamQhZg0/wOq/5MUjkFRwDnLU2T/nUgXmPBbKPKRXFmi4XUxdZlqc5wcLRlBWC6PpMWpl4F7GVFXKNAO7dFmVYkd7FNnZQhdlSxNimGxB/VX1usm6qnu+43b2/mjI1o8zPF3VcyDkc9AvHVO/OoQ3/+CBaW8th880Ewg232V81nl+jjr/mag/uxctkrtbWqnu5Nxr7C8T2IeYs5oCsj+9F8AAWdJdLSrgwJr2oCzl3RMwy9uutkgC7x+D4fB3D8wd7s+erwue8Ib7fzxwc4Un8pasw63pNrjVXqf2DoOLwNrsKZYQzFmE/FVbUBEaiZZq1Ytf4rJGFN2qRdb5MiQfESLB7zait6fj0Mrr8J6dCOfRZ7B2xAksfuEIyFkjD9iqOtIi27JXo7D+s1jsnnAch6wjcHp9CK7t2ods/10oOrgZVZErII2aD3nUdMgPjVIJ4DYHfsoYurITlmg66wB58m403wqDovA8lNUCkMMebYO4pgmifDEyUysgzBMzR2fx0bkI80+H17arcFp2ljFrTUcfxkfPcjIMLz2iXlv3heE7QPILBP4SO5cAYbu5J7Fp+Tn4bzyLrKlWuL5kO0hLl5ynyWS9dyLT32zZYldXBoJIUwePoytt7w9t4jcmhnPArKUpLJ4IxtWIgbeAPlRBWWXlLcjDuAU3WvRplXNjTEVVMeqOurVpxzbejNeoywu3cM6iCIwlMk3eciegUX+yKRpVaghHKl69jD2LipapZsESc5n6imQC1YXmGglu/mKHrCU71UXRy/nnh7my8YFeMr+TKb2XTe5XL9mgz7Ipb36eZQRl9W1pw+ZvBGUNa2+DljakQVmaLE02ByQSg9p8KBVWs4q0ZX+BNFmzQVd/2ebI5pttTrym3ReM7aPO9FdVelWuUgls/iaOa8Nvg3HI4XqP+ZAjL/J+ThN3AgMMGfjBghGUNaTV1ZSlaIbIZi7KfXeriaC/05LEBDaor7t6uc+FKOslqLCfiioPhz7npUkGBMbShKNgnYsm0YdcHD/3a/j23/4g2YAJr63EQbNJIIdXPFtT6vUjpOErIc/pe9+3N65CocQn//JhE663n/YAadTyoTMoS+c1BWb5PBolcnh+Hwz7P++GyW+CMOO3Qey713dBqCvnwN/yuETEzXRE9A8LkTDaGmkTLDtKIPCA7TQrCCztULhhJ6eD2I0TFL78zscqYT2TnLkeLcK5fTmI2pTG2Li7p53Hlu9Ow+G940wr3Oz33YO4xNa1/cdhbBhxEHt/9ccxa3dcdHRCpusyiLzmocZvEhoD7gLpfD/SsTnoM8giJ0N2agFkF7dCnhbMgbY1mstMdG4X/3vkM+Qt2xXiinq0tLSivKSegbkX4gpw5MAt7Nt5jUki2JvHMpkEkl4g6QRygEaetomJ6/DWSvZf/emvm9hvOkes3U+f92VMXpPvw7FgegwcF8Zj18bLOODTUVJBUttxsao/2bJyoZDpyhZtWM+baMgfGxJCGTCbsdgcsx4IhNesRMjqew+869qgQw6UbVVCfs0TioCPOMmCvDhm0lZ5E6QnvCHZMIb1V12kC5SNPbObCze7MRmSNjDW3gjG6voe1Tq/2koIzaYzLVmQUGvnIJe3OV0jR1/qQs46H9wYtxRNJZXqoujlPC3i0Xtg3vhIveRPma58+xhbOI33ydJbGd1lzM+zjKBsd1YafNeMoOzg6zONazxUQVnSkBVMNmcTJY2NZYyotQXa2LKrx2md1hAJmhuaMefxg0w3lhiyFk+FG6JYnZZxO6kSc3/HbX8lGQJNJAhoK+2MBw4wXcNGSbNO66NJZvxgwQjKamIt/caRXDjLgNHGbP04xVJbewKDl8xHiZNuQNQav62osJsMRY3hBvfk4ZlkDIyBs0CQ1w388B8OiP38bxvgMXEmyt0/Z0Bso8+nkPrNQP0ZX7RI+64drMrmUokc7/yFY1aO+Icn5PKOOpOqQFnKR1tgli87/agAm171gtVjvmzyZfaQHza+4gnB2btbOQtv5GPrtH0Y+ZctmPysE1zet8eZsba4NdmKAYUENPAfxqqlcckMG+TZrILQxROSi5p7IOfr1d2xtqQRJFmTdqoYF4Jycdz1Fg6tus50bXeOP8dkFVb8+xjbPTH7UdWyCguf9oTji9ux+2NHhE+0Q4LtfGRumI4y95/QtO+TNuCdB25lQV+j6fB0yE4vhSzJlQNtC85CWZXVxp5TVWd5kwLPP+iKj57eoeqyRudqq5uQm1qKzFmLcHPeagR53oDb+ktM39ZmajTTvP3xv4HMORqxqlXJKdC5Vx5zYxq75ARtw7QA9sw8Y78DJyIEuHm1BJVlDRrVRxeRCq2tIJw3SxdZ3TN51J/ay4C+wo02sHgyiDk4zblsuHdBd4YcSqCssioTsiNT2TNAfnwelNIyZprG63EQO09lfSTeMROK8vzuTMbkCDjNWHP2fKRnY54RjO3eZga8KrI1Z89A8gegKuQuWsP6LX+jegZsbfItJltQclC1gzBV+erqXOzh20yn/OVH1Nevr2XR7kOaV9Kulv4I/DwrYv4pbHskaFB8vN8xyhf0dK8YQdmeLDSIrw9VUJbp3PSwrWIQd+uAqjqvLStL1+3ksq+NdJuSANJdZVtMfhOEcwHda6/2tTx9pPeckYhpvwlin93TEzUq4oyPgLWZNA3ljf0jQs8PFoygrEZdptdIJZsdUbzC8BIuNccOs0E9bQfua2i6lcJkC+piw/qalVbphdv3sImH+OJVrdLdS5FJmoCkAl58eCfeeXIL1n1vgZzN37BJefO+EajbNw0N147pvcklRRK8/gQHqn31up/K8tSBshS5t8AspW1RtGL/1MNY9TcPzLw/ELMeCMDaf3jgzM6LHepx4UAirD/biTcfdWHg3xd/2YaAxcEoCgxHvsNW5MxdDMFUqy56tRxoawmBqS2TSijxDEBTnuG2aVcX1aPwZg3S4kpwKTQfsbsyEeF4E/7zk+A+KQEbvzwFAnKt/x4B04dDMP8JH6x9YTs8Rjjg4OgFOD3LFDeWjIdw87do9P24C2hbv/cLVHj+DJGXOfL9HJB/cA9Ep47CzdQDbzy2HU6z+/6/rj51jv1Xa85d6tAnnX801Df3KKkw7qMDOPLzAghmz8Tbjzm3AbmvPOrG2Le/fhaC+ZOOYf3iM/B1TUZMWBZuXCllLN9W9fK3naui9neJlxd7dlbHGb3MtzdSXdROBvpVu1vD8b1ItnU41D6F/T/bxzP096EAyrY210OWuAmKgBFoDvgE8tRAZmZFWX6bbqx40y8gVnNri3oigFwsRsHKTey/ypixDIzdaJQpMPRN20150uRkiMxM2DNIVbSGm5mcv5apVqous3MtDU1Im+aAjHkbAdrq1w+BFtueG7YDpaXqmbx9rZbZk4fYPNOQ8nB8nfl5FoGyWx8JGhQfLyMoy3ef2qMRlFVrmsF/YciCspOInWIO9IOG4uC/a7RrgThkBwNMqh1+1i6hnmKLMsTMARbJFNAq5oq3ovVUkv6yrRJKYfkXzru36SMhyEzg2Ag9lXh43U0GyG7/Kb5fJyr8YMEIyvbUY/q9Li8rYQPr2hP6B83at6SlXgqR1WyUe7m3P927781yVK6dg8rNNgYf3JPzIAE/aexd7QdlqsOBGRjzYTBeeoTbHm7z8UJcWXnXWVeD97eoj9mK1qaet6bqwgDZaRV4+VE3Bo5NHqmelada6AwAACAASURBVNIdKEv16Aswy7eDWLJOL3pgzoP+bDJGMgcHTI/wl9lRWi2Fu3kARvxxG6vzh3/YDnezANRV3pVSIidhJb7ByF+2HgLTBZwubTtWLQMs2G9LCGZYI8fCDoVrt6LUPwzSjOwO5fXHj/K8OtAuDpLJoYXAIxtTOSdnU89j56gj2P2DD3y/24SISfY4ZToPyQsmIt/pB9R7dwVtq9y+QPbacUhaPBtxVstx1MIZYfODcXBZAo5tScfZvTkg+QbSSC/NkaBBfFeyoq3tra0g9tZt82VoVbXdti2iZl94bdny0CDm/OxifCHC96czFu5ys5OY8UM4vn3LH28/zTG3eQbuy4+4MVbuL5+EwHLCUSaZ4O18FdGHspFyuQQlojr0BNw2V9ewbcPCVSs1q+wQiiWN9uDYmHusELXmMtsRZP/mMRRnaa99rCuz3eugbLMgGvKQb9lii+y4OZTiArQ2SVF3xBWS9T+x/qgL3wplN468GgtEbHcAScoZwVhd3Xn6yUdkMYNJqFTFHFZZgMDEhu1CrUlQvwBWsOsQboxejPococo8DHHy85d82ft31H8D9FYcSRcQ8cf+TcM7vObnWRFWp7Dl4aBB8fE0grI93otGULZHEw3eCEMRlJXEJbBVPMEki8HbcYOs5ry2bH+zZQmAJSCWGLIm9wchJ6l8kFkSOOmeCZP7g5l+7LpPTkLRaYuuugb5ml1kgwPy/N3TpE9dHro6zw8WjKCsrizau3yqQgIgspgJZaPhtt5STSv2+zLHYs3V1b2reLtU4iN+bNFHLuwfh1s5cxZDMOXef5fQNnDrKdF49TEO/HzniS3YN3026ry47eoy309QF2iO5nz1XpbbdZvOvl5JKGIsXdIdXT6v+22QPYGyVCkGzE5ZjfSZjn3SuasQVGP7v71h+cg+9txd9KQXdo0MgLz+LkuspbkFwWsO49u/c+Ds249vh9NEb1QWqt923ZCeiWLfYI5NZrYUtOuHeSJnC813pRA4dq0Fsk3mQzBvKYtPIK/4WuqA9VTOHJ1l1CL7dCau7ouG9YhF8PjFArecbVHoMhk1u7/uwrIV7/4MgjU/4YL5dISPs4bXZyvh9OpWLHjKE7yzsw2fx2LHz2fh9WsM9r65EYfnhIMkfG6dLUVRRi3qqjpqxmp6c5bt3AaR9Rwo6+u7TdLUqIAgowpnjufhgPdNbF99AYtmHMfkLw9i5Kv70Fk2gbRwP/qnD4iRaz4+ikkteDsn42hoFpITi5izsoKFthDOm9FtuUP1Yv25AwwIlOwyQ35iLhY9d4QxuE/svNUvJrlXQVmlpAjkAJBkSuQh34DAWdKNrT8TBPHmX9vAcblIvaam+OoNCOYubtsdQA68CtY6G5mx/XKn9lxodVgQA2RFFqrlU4o99zNQ/baVvdrMCIi9MWoRCvf0r1xc2vVyxpR9frj+JAzICOTsi4BZQwd+nmUEZQ1tef2WZwRl9Wvffs19KIKygqmW3Etj6dp+tf1QKrzG34kBJ1Vr+kdblqQJ6KVIn8HoyIvuFXmTEqvejb4DKAcj3kczuQVlSyvcJpxjbQ9cNDC2WfODBSMo249PAWULihaao2yPfgeknVvI2LnmM1AVHtL5kta/m0sKULl0AmoPeWqdVlcJirwD2PukIuqkrrIcUPmcO5HPHHbxTL+RzzghYdlkyPd9yCbjjV5fQ3piB9DNllR9Neh4RBZeGL4Dzw/bAWeH8z0WowkoS5k0FZUjdcpqpE1f0ydglvIix2Bun/jB9vc+7Bk8/zFf7Ppif5edCqe84jHhFQ6cff0RZ9h95wHhzYIe29QWoaUF4qQUFO/2Z17JBXMWQTB1PreNdBLHPuOBWlqQJvAje5oVcswWs/hFHvsguZA0YADbJWMDGItpj/3xtibSl9YWOZQ1uVAUnEVzWgDqT69DXbgZ6oNGoXn/iA6grdxvBCp2fY/sDZNw3sYMYT8vgdsHa+HwnAssf8fpAPPjAjpa/imMOb7c8PlJ7Pz1HPysLiNy/U3Ee2czxu/tK5Ugx2p84NmyVWF997BdU9WItJQynIzMgZ/bNTgtPcskEMZ/GoJPnvMBMWz5/yAd1727nO1y8PhxHeb9cgRrbE7Da9tV5vzsynkRRPli5hiNr+tQOzYlH+dAwR0zISsvh88cblGaAHrSVTZkuOdA2dYWyFO80Rz4KZMrkF/aCmVjLRoSwyHZNpmz+/YpaEqJpX+sSlNXRp1k2tnZ/GLSVCsUeexVGdd4cuBYQHTHuVdDVnqXSrVIpZyvlsnmUOvcS6lkkgUkXdAqv7tA2SUzA514YfhONn5IjBfprcTN38Wxdz8RYwwZ+HmWEZQ1pNX1X5YRlNW/jfuthKEIypJgPJMu6DerD82CebasNDneoAYwf4o0fThmqelDIagU9t82tt42PO10CajuNHG0/X+HUVOiGbORPBDTBJPS9RdLRFWb+cGCEZRVZR3DnKu7nMgm9fXpNw1T4J1SyHN50SJLKPsqHdPaiqpti1DhYAplk2En2e0NpmxoYADXbZtV7U8P6u8KhRIblpzB2097MCYJsVBN31+DnM1jofD/gH2kPj+jIUn19kVDNH7PlqQ2kCpgt2bsXE1BWaq/LoFZ3h6+o0Ow5I+e7Hm88PfeoN+dw42TNzHvgx14abgrXh7uAvsfdqFKVNU5mna/W1pAW0mL3HyYJm3O7IXInkqOxsjZaUfAts3Z2DQrCGYvYvGLdnqh9vR5g7LX3nliB14Y7qpdO1tboJQIoRBdQvOtMMiSdkB2ehnkUSZoDuF0jnnnY3SU7f8C1fsmIXe3La5udEL0Qi94/XoQaz+MYY6iSBqoPWjb/vu8Jw9hyUtRSJy0HPlmpgi2SmASDQl+t5EaWwxhWg2k1b1j4KpqNO1uKS2qQ/LFIsaY9d2ahEIzE9ycYYHR7wfh/b97tv0fePCWFiw+eMaLXZ87LhKrrE5h9+YkHA7KwOVzQhTm1oL+6/dqaEw9w7bPi7dPhaJYgJRjIpAzVHK8c9rTcBIf9w4o28rYsPKwsRw7NsoEyqpsNF45BrHLdI6dvGUC6s8GM8asqvuK5FWyZ9iwhUwmU2BiDQJojWHgW0C0biUbMwoXqt4ZlGNtz/qV2LLqQvGBk4wlS06+BkL4+ZMQ9twc8U8vvVWnRd7C5qAzH+r74p02leTnWeGWp7D5oaBB8dnzH6Ojr5762AjK9mShQXx9qIGyVZExbBJCEw9jMKwFavZvQuWS8ahebRi27P4FVxkrlk2k7gsC/R6MYfe0RDYxJIdegQs1bwNtBV3+xlHMGh6CK+FaMK4MYCR+sGAEZQ1gbDVFlG53QtEyGxhSy6IhM50N6sXx3W8zV1PlDqel544x9n1DyoUO5/vjR+78FQyYVTY19UfxOiszO6MCU786xOQACNh58SEXOE+wR60HpxcoJ8dd/qZoFqbprMzeZLRszgkGFhPodDJSoHEW2oCylKk+gFnKN2jmESx8wos910nW4JBVV13z7IvZMP0v5xDsrce2w2WWH5qkul98IHZTbdxZiJw9meZqm34tgbWdAFv6TQxbckYmMF3I4ou27UZlzCn1zCiNe+duxNzUEta/o1/xuHtSB99amxsYiFTpswblK35BY+xKyGPmojmUu787ALaHJ3KA7jVPVCZGIjfuEpM8OOmWiUMrr8N7diJIm93ti2D2TAv60FEtgGvzTAQc3juOrd+fxu5p5xGw4AqOOKUyBm5yZCGyLpShJFuM+hoVWrjdtFu4wp5pyypqa1gsAlgJaL14phBh+9PhvuES7OedxMwfw/Hdv/fjP3/qqG9L/3H6DxETd8pXB2FvHgsfl6s4few28gU19wTTVp57A+RgSrxhDGQZFxhQvnvaBdZXa0ecMIjW7L0AyioKz0MWOYmBsc3B/4M84yAab8RB4jabY8Zu+gX1cX5obbrLJOdv3ZZqMfLsN0IwhdulyJ4hcxeDpAuMYXBYQFFbC6HZdIjmTQd97xxolwbtwMiZbt35UtvvppJK3By7FLed9rWd6+8vUqnizsLzDr1Whd4BtEszPa5Ur+W0z5yfZ4VZnsKmh4IGxWe3EZRt34UqvxtBWZVmuTdODjVQNnsqp7km2ul9b3TgIGtF9aoxqFz6C+oS9Cd6TkxYAiJ5diwxWpr7f5eM1j1VkVfPWB0EKs9+LJQ5TdE0k1KBBDQImPu7g8g6r5kTME3z1kU8frBgBGV1YU3t82iurGBAQs1RAzIdW1tRvHoZ+/QVCFZKalFhPxVVHg7aN14PKcojohlDpMSvK/NRD8XpPMvkC0X46jU/to2PgJp//9EDhxY5oMFrJJuEy3w/Rd0hO7RIKnRetrYZjhkRxJgtrzzmhutJJVol1xaUpcz1Bcy2KFrh8b/9IDkDesYv/9MeRDuc6dKepMirGP0cJ2tAjsGCHA6jVal6S3CXxH08QVtQicUm3LILubarIJhpy4CVti3H7R2P8QDuVEtkz7Rl8YWb3FAREQN5mXbvoFkf+bA+PheuH/C/pU6KnFkLULDOpc1CrTIJFCUpaL4VDtnFbZCdsIL80E8d5BDIs7w8fBxkJ+dDdnErA6YUxVdQ7r6OactKi2tRdKsW6adLcH7/beaEbL9NEpMPoh0ry16NYjq37Rm3qr5b/SWcLag6jYyF+6QE+FsnIXIDB+KS47SC69VorGtGdVwce46Xevu0taOnL/VSOW5eLUFkcAZ2OF7EgukxTLv23b92ZdqSZAJp3hKou8b2NPx3peD8qXwUFYj7+gjvqZo6va6oFEHsOoOBh/XxgSzvtFPFjA1NY8Ww1dehkLfotMz2mQ1mUFZZlckWLmjBguQKZEmukN2MhXjXPA6MdRqHuuOeUDbcdVLIt50We4iVzxZzSKZg+nwUue0dMBIpfD2Nx54tIFowjz1rip1Uy/4JaGfFJAs03MxUm1nWkp24+as9FBKp2jj9ceHlRzmHpcGe1/VWPIGxBMraPmO4MTc/zzpkGYeNw4MHxWf324eRmpqKujrDOInVW4frMWMjKKtH4/Z31kMNlGXb9Sar3nrR330xFMoXh7rdYcuO0Utznb46eZcdy7bsZ+ilHH1nypx5/ZYkF4LgNDIOSi22GJLHawKi5/8tnE0Q9V3X3uTPDxaMoGxvrNf3NKSBKDKfgRap4QY+4nOn2aCe2LJ9DTV7N6PCbjIUNeodIvW1DK3SK5XM2VeO2VKtkvV35PjoXHzyL288P8yVgWDfvOWPFE9XNHp/yYGxPp+i7sh6QKk/wEJTG0ilcnzwDAcc/fspD5SVaD+x6w0oS/XTFzBLedeV18H5HR/Me8iPPe9X/c0DZ3Z21Z476noCI//KgbPkGOyMf4KmptNLPAJay0KOIn+dKxhTnG1JtgQnD6XC4Rjp2BJTboYNi1/g6ILS4EiQ47LO4fVHXPHaw1pKF3TOpIffFYdj2EKKJLl7+ZbW5ka0VKRDITgK2RU3yOIWQxY5uSNYS4DVvg/RuP9HyOKXQ35tD5pzYli61uauzEGqWoNYDlo8zU4sR/IRIc74CJj8QfCSq/CYeh6bvo7D6ndjYP33CMwazjmK6Qzg0nve7uk92Pz8DgTYXsGJHbeQclTIQFvaKaNtkNbJceNKCZM3cF2bCNtp0Rg7Ihj//cse9nzgZRHo+OrjbvjmTX+Y/RzJ9G9DfFOZJEJlmWbSStrWra/xlY11kPgs4LbYB61Ga5MUzTIlyN4zhx1gUhTEWNZHGIygrFJcCFm8Xdt9Lju/Hk2XwyD2MOds6DQGdUfdoZRyLG3ebo2iEhSs2Mj910m3mtiTFnacg0E+kvE4qCwgTU6GyMyEsfJVVZzkbUiKojsJp/ITF5lsQfnxru82VXka8tz8qUfZ8+3tp3S7M6NzG2aRBN19wSA5A0MEfp5lBGUNYW3DlWEEZQ1na4OXNJRA2ZK9oezFkT3Z0uB2NhZ41wK8tqwu2bLiymbMGMY58Zp2XxCWvBp1t8BB9I2cea18N4ZNzmc8EIzzAdp5lKcJGU3glr4cZXBnFtqYmR8sGEFZbaymo7itrRAttkKZ23YdZdhzNqQfSzqyZS6be47cQ4zGtCQmWyCJj+whpmEv5y1bz5wqycv6n03aU8sP+qXjvf/zbJMAmP5dOEpPhaDRm/NuL/P9BNJIRyhl2gM7PZXdm+tFBXV48w8ebOL00f/zgVzeOx3M3oKyVOcOwGxReW+a0W2a4pvlcHrJA7Me2I8Zvw3C+ud2oUJQ3SGNskUJP7tD+OBJDpyd8roz0uP1wybtULCWP5py8lAaEI7CtVshsLRDtsn8O2Ovjvq1vOMxTsfWgrFw0ydb4+g3CxD14xLG0C09EMEBOi26nci2KhQgD+G5pAWt7M391AryPq8QXoA8LQh1XpNR7zYS8tAf2oAsXg6B9GzlR2dCdmYFB9gKjkFRdgPKxo79252ZCcQliQPa+XIhMJc5IPOalQjH532w4I4Tuc6gLf22/r8IBu5u+zGeObuKWHsD8V6cvmp+SjU0BW/rJDLcuFKKiMB0ODtcgM3UaIz9MBjv/LkrYPvWHzww6t1AWE08iu2rLyA8IJ2x2imPfg3KFtQd2sgxPF1MmM4s1afgRjVWvB3NGOvesy+iUaLbrVWDCZRtbayC/MIGKAI+gmL/h2iKW4aGk25tDrwkG0ajLtIFLZJ2C6JyOYQuntz/nBixxJqfaoXCzW6AXDtJjn69P4yFq7SA0GImyMFXVUxXliftpuBkbcxBUjiqQnNNHWPIZi3Sr0SAqrI1Pff8g6547kH9LgSSoy96Jm/59rSm1epTPH6eZQRl+2TGAZfYCMoOuC7RXYWGEigrmMzpGRE4awz9Z4GaIz6oXErasrphy4avvsFATHrZTftNMNLiivuvcX0oub0zr0XPR0JSoZ0+JU20TH4bDMePT+p8UtGHZqlMyg8WjKCsSvPo9WTd1cuMsSq9nqzXctpnXh0Rypi58jLttpu3z4O+k0MvcuxFDr4G2v7ZmoTLDHgSOnt2rvaA+b1782W8/TSnK/niQzsxd+xhVCdGo8GbA5Jkvh9DGuEApQpdwP5qBEkr8NsLJ37Rt3d3X0BZaj8Bs2nT1yB1ymr2XR82uXYwA8SWpfeZxSP74PlNcJdiGiUN2G7ihzcfdcGLD7pixY8eoHODIUhvpKLYNxgFqzZDYLb0DmBr2VW/tr00Qtt3AnUtIZg2H4LZi5G70AEF651RvDcEkgtJWje/9kIS+89WHe+781F5kZA9V6tCA4EWGWPJNt8+Afl1HzSddYA8eo5qwDboc8iOTOUYuJddIE8LhiL/DNO+pXx6Cg0ZGazcou3bUSWsR+a5UlwIykX0tgwELrwC94kJ2PB5LGOCkpwR3VeqPu3BW9LLDXO4wZxh0UJv3rWqbsHbOrGMga4EvjLAdsoxjPkgSKWGLckkjPvoABaaxMBt/SXmtCzjRjmaGhU9NVVn15ljKqexkGwYg4bEcJYvOVI77pKBOY+FMtmoUx5ZOpMJGQygrLI2D7Lzjm0LCk3RFpAeXAWJ0xiOGbt1IqQnvKGsu7uQUBF2FDlzF3M60/QfnWTBWPCkL2oM94YFKgP82PNFaGmqskG3ze3YM7TUT/27WbBqD26MWwpZaR8dVqqsgW5OkmQT7QCwmxujmwzV5ELPXpP7u77T1UTv02l+nkWgrNODwYPi4/Fvo3xBT51uBGV7stAgvj6UQFm2rc7o4GtA3K01q0lbdjykp9S/yDWpqPUzh5lcAbFjzZ86pEmSARmHtitSG+iFfcDumtZ1DFp8laXd+sNpvWqjaV0xNQn4wYIRlFVjID2eLnXeZFAHX4qaaoisTFHhr7nuobrm1x7cg8qlE9BcMrAc1/H1Jc080t0caGHjsnN44/fubNLx0sM7MX/yUdReOYF6b04zU773Y9SFrQDkqrda91d7DvmlMUdEzw/bgZVWfXcO11dQluxAzkr0DcxSOQdMj8Dmdz7sub7s6T0459YVdCzLKYXZ+5z0BOnNHt8d119dpZtyW1rw3Z83wfYVR8ayy1uyjgG3JHnAOwki4Idn2HY5kiMykkmgbdPTrJAzexHTti1Ysx0lngGoij/fxSFZ/spNTPeypaHvrPDyXc7sWaeQiLu1h7I6B4r8eDSnBkB2fgNkJyyZVi3PrG1/bD7wJWSRUyA7tRCyS84caFt4Hsqa3LYyhJZmEFrMafvd3Rfasl+aI2HgbWJwLqK3pzPwdtfk8yDdW9plY/aEavCWtvkTeLvqnWjwzFsCbxnz9qgQPPOWAE4+SGplSLlcwhyPEWt2/qRjGP1+UNviUHtJhA+f9cKEL0JhN/ck9mxJwsnIHAgyqiDXw3ZfRUUhJO5zOsgZUJ2ri+rBOwIjW5A+cF/DQAZlFQVnIT9u3gbGyiKmQrrvjkTBuh+ZXAGB2Gjh2MPSW9m4vWAN2xVC/z+mLz1nEcpCB9bOlb72mTE9ZwFiyArnTUdTXl4Xk9QkXOLugxk2Xa7xJ6rOXmOyBSXhhmGH8uVqe9yz7QobH73yuJu2SbWKb//mUfZOj/fJ0ipdbyLz8ywjKNsb6w3cNEZQduD2TZ9rNlRAWXLsRQOIrKlWfbaZMYO+W4DAWHL41Vu2bP61akz/LQdikkZP8HLDsf763vq7ObR35jX3d6EovNFRn+tuTNXflC2tzIkIgbnEbmk/GVKdYmCc5QcLRlDWsP3RXFXJWA/VUREGK7jcyx0i67loqVe9tU3TisjyMplsgfiIn6ZJDB6PHAfRe6ZB0HUCY/DKAPBxvorXHndjkw1imy4xPYEGUS7qfCdB4f8+5L4foe7gMrRIu3pT7o/6ti9zh2Mik1cg0GbfTu0XqtrnxX/XBShLebUHZhsL9edNuVEix9Y3vGA6LAAzfhsIpxc9UFvU1aEOgbEEypKt5r7nCgJrB2PYu/Yka8PiMQHdVp+AIXIgJnLZg3y7DciZZ8e0arOnWjGQQKUjsja27R3Qln6Tc5oZtozhd9tiOYo89qHyxGmtHZPxlW1jy4Z0X38+vqqjsr6MSRs0C6IZy1Z2ft0d0PZnNAd80gae8cAtySXU+/wIybZvUB+9Fs28NIK0b/qoBN6W3a5j4O2lkHwOvF10FQy8/SKWgbekaauKdUvgre2zh+H40Qk2PglcdBUndt5CcmQhA26l1RwDuLqyEckXixC+Px3bVp1ncgc/vRcI0oxuD9YSq//L1/xgPv4IY+JGH8pCblY1lH11eKeQQxKxnZMzcJ4GWfpdnWYCmNd8cJy1b8t3p1Gc1T3Qrqov+XMDDpRtkTEndeS0jr+PGkMmoc7tVw6kXjcKkuA1kN/mGK81CUmMlc4WRmjhg/47M2xQtMPX6LSL7+R78ChavYxj4S+dr7J1/POWnseqQou0EWlTViPTZvuA29mkqr60+EsSBgo9kvYrC6RsZyctfOk78POsQxZx2DAseFB8dr1lZMr2dF8YQdmeLDSIrw8VUJYNIiaZQxJ3d9A1iLvtnqh69eqxzOkXyRloE3ZOSGBi6eQEy2RYMEhPdjCGGOd0JjdAHjk3fxuntaydrF7BmC00KTq2pe/OkwxpQ36wYARlDWl1gLbWiixmqtX+0nVtZAX5bFBfc6yPLBplC6o2WqFyvTlaFQP3/05gLOmr5a/ZpmtTapXfyUgB3rnjnOeVx9wYy1Qhb0ZdxGrI946Awv9D1O2fjRbJwNxOSHqVzw1zxYsP7QC1RVdBV6As1acNmJ28CvoEZqkskjRY+bfdDCCyenQvfH8K6WISki9YM9YTLw13xb8fc8beJX3bhdKlAAOcGPmsG+t3cUXfGduNBSJUHotDkZsPk0pgzshm2oIDErph27YDbxkTd6oVY7+Ts6I8+40gpzaVUSfRlFeo0iJlu1w0YsuqTKzBSQballxDc9YRyJM9mE6t7PA0yHxGtAFsPNBGR/mh0ZDHzOXiJe2APCOU6eAqa24zmQUNiuw2CoG3pHWbdqoYZ/fmgDRrSZd18zdxsHv9KHM6qgq4NX0kBEtejMKGL2Kxe/p5HFp5nTFub54oYg5KS4USXL0gQph/OrasSIDlhKNMp/atO9uMCbQlZ2M//jcQC6bHYPfmJJyJyUWxsOuiRbcNACDLvASx8zQOkPRfjpbau4D25YP5WPjPSOYMbK/5JdRV9Swp0bm8gQLKKuuKIb+4Bc1BX7B7RR74BRq8x6DO6XsOmN78K+pidqOlugS0HV0wbwnHhCVG7B0gtnDLLrRU9x6g7mwb4+8BaoHaSgiJJWtmAlUoZZ6jM1uAvr3YQW0Dcrfsx82xS/Um9aO24F5eGPGsF1sMmvyVfgFTthPhviAQQKvPwM+zjKCsPq1s+LyNoKzhbW6wEocKKCuYbM4mywYzrLGgHi1Ajr6ILUuOvzQNcx4/yOQKiB277qPjmiYbUPGYM693ojlnXsMO4GKo9qw6cs6x/I2jbKJAWxAHW+AHC0ZQ1oA9p2xB0QJzEGhgqFCyYTWTSiCnOn0JkhMhjCXbJBh4To06tytn1gIIpvaPM8mbV8vw+Yu+HKD58E4sn3eKLfY0XI1Eo/f/2ES8wftbyLIGngdksiP5W/rhP/5sYvTqY27IvKlbp2m6BGWpvgTMps90RKoBgFkqL2BqRJukwYq/7Ebm8a6OIMnx10//5FizY5/fhuxE1Symzvdtf/+WNylAzlY++pPhnMEQuFQbdx4iVy8mj5BDMgmmCyGYOp+TSOCdFnUGavnfJJXA5BLMmbf57OnWEMyyRc40M+TOW4CCtdsZKExbuyUXk3vNwNWkbwpt5zPdbmVlFhSF5yFPPwDZZRfI4u0gjzaF/GBXB2QMtGVOyGaweDICbW8dgkJ0CUqJSJNiNYrT3NSC4kwxUmOLccZHwPRqvU0vYtPXcVj2qnq5BPM/hmHFv4/BefQZ+M9PQoxzBq5GFOLqCRFOHMxmQKzttGj88J8AvPoYJ89CYC3pZo//NATLcCN+ewAAIABJREFUzU7Czz0Fl84KQTIK3YVWeSPqjrpDsm4UxBvGoO64J5SNdSyJQt6CqE1pIE1es98fZAAyOV7TNPQnKNsqE0ORFQFZ9Nw20F7m/yUatn/NgdCkGRu8BpUhPsi3X880nhkAywOxsxej2HO/kRGraWffI/FENnPZgrqq8WKjqIR77k2xUOvITXwtk8kWFAUOnnlaYryI7c4hZr4+Az3HaKGKpAz0Gfh51kGLOKwfFjwoPu5GpmyPt4QRlO3RRIM3wlAAZfMWO7ABds40o3TBQLtTqx3GMbasOLR7HZ9zATkdnHndODb4nXktefkIGmo1H9jzfVcqkMDmmQjmkEIXemd8voY88oMFIyhrOKtLEhPYILs+/aZBCq27nMjKo2NfQnN5ESrtJqEmUL+ecftSx/Zpi9x82fumKu58+9N6/V4ilGD0B4EMjCVgy+T7MEgkTWguzWuTKpD5fgLpye6fs3qtZA+ZS2rlePdvnBMy2r5cWaF7x1W6BmWpSbLyGoMCsyRpsOUNL8x6YD/Mhvtj98iuW+Vbla3wtj2ANx91xsvDXbBpsi+apH3XTO2hC/t0ed2sgwyM327VR1Z9L2tRFhzB/rf1WTkdcpCLxSDtROaczNEFuQtWQzB7EQQEwE65o6nJg7SaHJkmLrcFPHuKJTggdxGIiZu7ZO0dIHcvykKOagXklvn5s+dtdXT3jmqILakouQaF4Cjk1/ZAds4B8hgzyA9x+tLtWbYMtA3/GbKT1pAlbuL0bIUXoKy8BaVUtxIZ8sYWxpAlpmy8twBhq6/Dc2YiNn55CktfiWKAaGfGLYGkdq8dRVZCeVufXTkhxJqZcZj1XTg+e8G3gwwCadZO++YQMq7fjd+W8M6X5qIsiHfNQ/Otds9vZQu7SixZ0u+f/WgoB86uug5NwFlDg7Kt8jo0Z0VC1k4rVu7/ORrd/wfp5u8Y8FzjvgDFq+3ZIgIPwjKN2Mnm7F4kJ17GMDQtIL10HsJ5JmyRR5UFcuYsYs/KCjU6wi0NTUib5oCMeZuAFqWqLAbsuReG78Dzw1xRmKtfSSeT+w8wYFafhuDnWQTKrht2YFB83N6KRGpqKurquAUxfdpnsOZtBGUHa89pUO+hAMpmT6QBsDkakm5oYBFjFENaQJocz2nLrhqtttjV70XfYccGwezJMLXxBvoF90mcMy+T3wTjkMP1XlX3dlIl2w5o+acwCFO105/tVYF6SsQPFoygrJ4MrCLbks2OKLJfpOKK7k8RM7ZomQ2IKdvXUOWyDJWrZ0JZr/221L6W3Zv0ippa9r7JXeLYm+RapZFK5Zg9+vAdZ1iujGVacFvMnLLwUgXNfh9AEmAxIHVj+cZSnV/7Hcd0+/R5H8jl+pnI6QOUpTa0B2Ybcov4Zun1eDUgFUv+6MkmdupYs6QtO+ddFwZMjfzrNmQm3NJrnfqS+ft/3IEXHtwB0knvj6BskuH23CXIW7pO++JbWkC6irVxZ9m2b+F6Z+SZzMHtuQu4LeAzbcGcAE6xZGAGY9d257CsC7hrDtrtReAZk18wmY9s04UMPCNnaAWOLija6Y2CmaYonL8A8rJK7dtwJwUxZBVFSYwxy5i2pxZBdngimgM/bWNatgdum4M+Y4Cu7MhUyE7MZyCvLGknmtMCOH3bossgx2bKxupe14lPSJJNBTeqcfVwIWPN+lsnIftCBfZ4emPsLxPY51h0DJIOFrL/BUkkLH7xCFa8dwx2Hx/D/A8OI2xXWof4fLqoqGgEed1AVMgt1ElkHeJQni01pUAr91wSlzcy52iUP2PO9gDOGgKUbZVLocg6DNlxi7Z+avYbgSb3zyHd8g3EjqNQvnIW8s0t2GICyewweQ7aRTjTFuQMT3wtlTe18TiELSA0n8FAWfG5+C5WIOkWdu/MXNDlGn+iwC0UN0YvRn2O7tj2fN76Pn77bz/2vqSjPsOGr2LZM8rXTH+7lvh5lhGU1WdPGj5vIyhreJsbrMR7HpSVybjB7CRzg9nUWJB2Fqhy+FklW5a0YmcMC+YYsvcFYf+Cq9plPEBit3fmRVpCwrTegakpR4WYNfwAFr9wBJWF+tUi0rfp+MGCEZTVt6W5/OVlpYxFVXPcMOyXmugjrDzSlO1LkJ6PYbIF9UldJwd9yVffaW+b2yGbtvb1UbZBXT1pm/9Ky1i89PBOtt1uxD+8cPmckEVvuBp1V6rAZxSabg9sJ4ixR27jpYd3MJbvrB/164BOX6AsGb4NmJ24AoYCZlsUrXD5r+8d1qwfdqlgzVLdDm85hjcfc8arDzvD0zpI3W3Vb+fLCqpY/3/3XP8yuatPnWNAVc25S322RdnuHRBZzoKiRj0YSbq3xMItDY5kWrUEjOUtXosci2VMRoFYtIxN2wbS8kCaJpq4d+ISEDzVktuWTkCu5XLkLV3PAbkee0GMSHFSikZArlJaxrFsc2OZNq08xYtplMrOrGDOyGSRUyAP/b4NFGwP3vLf5aHfgeLJTlhBdnY1k1hoTm0P4AqgbNBc65oA03UbNqKpSYbqqlpYWS8Anbt5shgBC67AddxZrHonGhZPhzEQ5OjGDHjs9sKRw8ew7uNYzH3qIGb9NQTjnwrEFw/6YPHY4zh6LAZr1znh7HEBbl1MuZNnNKQxnqg/vb9Nc5bA2f02STB9mANnid2rijmrD1CWyRIUnEHT6dWQhd512NXs/wEaPT6HeN0olC2ajAIzU+RMN0N2GwhrgWwTW+Q7bGVM7D7f6MYM7ikLVOzZycZuImszle3iWdVNeaoBV2lmPpMtEHofVpl+oJ8khiwxZYkxq8/QKG1hvlFmPdRVH15X5fLzrFDzODg+cGBQfIxM2Z573wjK9myjQRvjXgdlBfNXcKvBJraDto/u9YrL0pO7sGXDV99gYCw5wTJ5IBiVwsHpWIB35kUauNtH9R5YivcSMKdgDu8dR30vJA8G2j3EDxaMoKxheqYycC9zPqNs1P2W8M4taKmXQmQ9F+V7+qbLpZTUosJ+6v9n7zrAojrWtsbY08t/783NTe5NNGr6vakmMb1XjSbGBoooINgVsfcuSlFQAQUFRERURAXF3lBRFESk49JZeltYyvs/3ywHt7IddvHM8xw4Z86Ub745e87MO9+8H4o9VDuSkK/bVK7z/EPYdycvyPBbscmai7MqfevpLQj2lTj5I6ddlTstUO/3AUTen6HqlHYOFNtDd84LL7RsL96y+orRRTAmKEvCM2DWegXi2hCYpXqjvWMx66ntrVrNCuIy8XsfCdesxZsbkZ+aa3R9a1qBw3cS66Rg13Z2xNrUhPSZS5BiOwdNYv14sOuyBWz7r9B/p6Zq0ChdXX4+A9OI3iDbYwcyySrXcQXSHOYh2XIyUkbZMn5cWhQiII6sciUWkRr+pzxkPdnMKUrlJI92QNIYByQzzt1pSKbty/ZOSJ2yQEK5sHAtA3mzNngi22MX8vz3oejAQZRGhqLy/H6Iru5FXZw/iLNWdGaxhA7h0GgJz63/J8pB3N0foS7oO9QeGM74UGtPzkHt+ZWoi/FkfLni1AiU5GczwPRGbCzQJKEYuBF7swWklVeouLYBJQWV7P7hw0cQ6X4Hbn+cBY2rHP6+n/1+YiJTWZmXL8Rg2SfHMeml/Th3+grLU5QQK+FhXf4zYp1scHaNG6LDY5GZWAJfh2gQwDLhkb3M0RlZ9HLBEKAsOXgTxwdDFD4Ztf7foX7XB0xvtdsHoXzddxDO/x05U0cizcqaGaKw/qO+H+PALKqznD1Rdo3fLcj1Cf9fiQZEIubYK8vWEihVtLZPn7+avRfSnFYpyQw0iutx23oF4scuY+dKE5lBJHHKvtzVFcQxa8ww5flQtgv0dpRhqWA4mbl5Fg/KchrpGP95ULZj9KPSVnR4UJatDtuhNjNTafv5SNPQQNESspb9EyW71mDKvw6wD9WYTgFY8G6EaQiopRScMy8Clcd224NrB5V7atakWP+Z19hkYf1PJ0GejjtC4AYLPCjbNr2ZNdUGBd4ebVJZoZ83s7QQFykO6rURoHj7ChQ6jUR9iX7laFOnodI2ikTMUjbVfp6hikRSfBG+6LeDgZhkIbti5umWsqtOeKDW5xMwqgJ/cr6hv/f6lsKNdGLxXQizjiQrWbKWbYtgbFCW2iAuLmcTUwJmK5PabtzRUFsP57e9YPXwbth094XHl7sUVdrUhLWjJM/QO48744TXGcU07RDz1qMu6N/DNDijK+MTGfBQYABOzYJt7mqtZQ2q7sZGCGzH4t70KQrFkmUbWcQKj55E3p5Q5ryJQNTMpRuRPncV0mYsZla0DHAdPw3JllOZwzNGl8AAWgJqtbHUVQYCSygYOMCQAb5kyWthj9Rxk5A2wQ7pdra4N3UCBLOskTNvLPIXj0Hhir9QvHYoyjf+hErXr1Ht/iVqvH5E+u0Y2E+Zhoy78agP+QXifb8i/fZVSVzKXYgub0TtVXfUxfpI+HDvHkC1UMAAVgJvudAkrmHWuXWVlUhNSWf5kxPTsH9xLDb/dQ43LiSwuDs3U7Bl0FZcGj2xBZwtX/4z4iaNgt+PM7H2y3WY9q43hjzqhyEP7cacNw/j+JZEFBWUMp7EqqrW38v1eXcgig2B6OQa1BxwQE3AMNTu+gY1Hl+gyv0rlK35AYULhyBn2khkThyHZALgm62oU0bZSQBY+7kQbNqG6sS7XPP4/7wGNNKAYJYDG7vlLFMct9D7g1uoQYNkAUS+UIH3QWYlWx4ny8stn87Ur0d/F8LGWQNfNO7CNoGxFp0CmI8QY+iEm2cRKLv04T1mcbjxnLJqHwUelFWrIvNN0KFB2fJytuJP2y34YNoaqElPQNGcYcidM5QBkARmknMvcwyJZ/MxvqeExJ0cVFSX62ZxQ9x67sPPMn14WV9EU/tQ7RmlC7jBAg/KGkW9MoWWnYliA+2aZONP0ph1mK0likL2yMig7UX1jQtskab81CFts5pMegI5CMQgjll9Qn19I8b+tL/FonTMdyGoq5NMisRZd1Dl9RuzmKrx+ha1d/VzqqaPnJrmJQdkH724jbXnjSe3gHHgappZz3RtAcqSiATMJkxcjVt/zmtTYJbqPu12CTOflFjNLnjOEzm3FZ0aXT14DR8/s4Ft01zwiydqq1v3TK+n2lvNHhOVzKySRr6ztdV0bXnz3trNSLacAnGpfjzWdfm5zFq2cJdPm4mftXgRs3arK1Dsd0MK0VBcxoC/opPnUBB6BDk7gpDt6gPBKndkLFwH4rpNnTqfUTGkWM9gvKXkHI0sbiWUDM0gb7PjMw5c1PR/usM8xERfZVat+fGJSB0/g4FGOZevwWneQqTGJyBjyhykWkxE2tgJSBtnzaxIi65cZaAsxyVL/4mTtjYtBVlzpyPmiqTMgjsJuDd9Iu7ZWSLvarSkzNu3kT1/GjImWSLTno4xyHSyQdr2DZLDawPSmo/UbRuQQsdWZyTt8GCgbNpqR2TN/As5jn8ib84w5M8divz5v6NgwRAGtubN+QPZ00dCYD8G6dbjkTL6PuhKekkZY4O0sTZIHe+A9GnzGfgqjDhpyG7ly3pANVAZG8PeG+TgS1lIHjedcckKw6OU3Wb8scQjm+FmvO34Sis2QiSxTr3czYUtGhuheJkix3Xfw2gMGprHdDI39bzg5lkEyi55eI9ZHK48KKu213lQVq2KzDdBRwZlU2wkHiKTrVUTkptvz3UsyUNXxOHqOCsGxPh/usRsG7fTPpqBqBadAxA074bO7SBesmWfRLKyDq3ueM4XuMECD8rq/IhonDFn0RzQ0RYhj5yJzbRHY63uIE9jTRUKF49H0SZHmPNKRNGxKAYSZG3ZobPqPdZEo18vdwZakQMsspZloakRFfsXQLzzI9Tt+AgVh5a1OKHRubI2yEjyv/64OwNkP39lB0Qi3RasdBW1rUBZkq+upP2AWbKaXffGdozr4g+H3jtwaGakgsrKC8sx6SNX1hff/bP9nICN+O9W9nzfuawf/7RCA/WIqCsQMqvDbA/9nb0UeG1h1rJiYaEeEmmeteziJYm1m1v78vNqLrFsSqJnIK5dcpxWfSuRWfeWnLuC0qjzEB49wQBg8vpeEBqOmKsxDJQtTM1ElocvaIt+3q0EFhdz5Rpyt/sjfd4qZDgtQ8bsBciYtxQ5e4IR6uWDzMPhyJg9E/nx8Sw9AbMlB/fLgrIzbZE5SQLKEldtTPQV0DcuY+JYpE8ch4wJ45CyZDEDXMljuKoj/vhJdu/unOVItbBBKoHEVtZIHz8e6RPGIdNmLAN/700ag4xJY3B3wlhc/MsWoT9Mx9r3FmBi35V466kt+PCFbfj1gwBMHHIAq+ecxYHAhDZd1JLtKf6qI2kgy24csmwsULx/n0Kz8nbvZ2OZVJtZCvdYREMjEmzXIH7MYjRUi5SnMbPYAY9KximB23Rzyqxpcz3HXWTzvLU/KAe7NS1HWTpunsWDssq0Y75xPChrvn2nVvKODMqSh0jixqrNbhtvyGqVzSdQqgFywkCcq3a9dkA4ZxiKFwxRms6UI0tyqzHthVD2cbV5fC/SYnSfgBWkVWDGSweZU6+r+9tu+2tb6pcbLPCgrHG1LkpPZRP0spOKoIyha66KjWF1lZ/TnTuZZCrdsxnCOX9BXJBjaBHbvDxysJNipf2iYMLNQgx8YTsDzIg/dp9vfIvsotRrqPH6hlnHVnoPRX2B6YBZLUIqOTngnwCOq816cPtYQLclKEsqkAZmKxLSlWjFuFGRy89i8iM+GPtQANa9vg3kGEw+BK84hDd6bcJrPTdhx+y98reNfk20Bf99bJPR69G2gtydQQyIEAn0Gz8ya9lJ41Do66WtCDqnv2dnDYH9RJ3zm0tGoiAgsLS09L7PATonS9mMDM3HTuQYjMopKysHV2ZeThHWzTuPn97dhXNRyazMmCuJ+OQ/Puy9TI6A3nhiCz781zYMGxQI++FhWO10Fn4eNxDqH48Th5Nx7XwWkuILkCUoYKCsi/0pDHlkN354aAc7Bnf2w1+ddzcv5AdK/ncKwKhuAfjr0d0Y8uQu/PS0L754xhsfPLUNAx4hoMiF1d+nm2RBhfs/oLc73v3HVnz7xk5Y/LAfiyafAPGPx8UYh6/SXJ4RXk71GhDu8WNjN4G9lWLimjokN1uzk3W8spAdcIzRFpRdT1R22yzjnCYeZb+z/z5jfNovMuIZ2yXQ4Hri5llBdlFY3CXILA6XNw+xd2VFRYXB9dFRCuRB2Y7Sk0ra0VFBWQJiycEBT12gpNNNJEpcLca4roGMP5Z4dW5E5kC47C9mLVvsMddEpFQvxtmdyRj7sGQLyuovj4M8o+saEs/lw+aJYNg9tQ/pMZp7INa1vvbKxw0WeFDWuD1QuGMbshys9bJc1UjCxkbkzJ+JnKWKXGQa5W9OJEq5LaEtOKof/YE2dRozLXm4psXB6mTNADmiKJk45BD6Nk+4HUaESxkLN6GSrGN9B6LO5xNURrUdyKOvjpZMi2LWkAQgtIVDL1XytjUoS3IwYNZuDW4Nc0J7ALOFycUgGgOLzoFwenYrbocnK6gnMzYDv/5H4gTM6p2NqBDqt21foQIVEf5rT7KJ74xflPDfqsjTVtEN1TWgbfeZi9frXWWBjyeyJo1DW1nLZjs7M5Cl4to1vWU35QIIeGWcslIArLI4dW3ggNiYy2m4cCaOlXk7LoUBsG895YGr0RJO2dvxKQj1T4CwUDuHmfKOvlKvCOFjexnjnwrGzw/54ouu3vjm6R34tNd2fNHFiwG2w7rswpguzUBtZ8l/q+574PTaYaz69gSW/RqJ2T8ewfjPQ/HjW7vw/vPb8FqzdR8H1Er/f/MpD3z3lh9mWkXgUFAiKivr1KmFv/+AaIAce5GVrChdcZySSg4ER05iTgWVqaMmMxe3hjgibZ3pvcOVyatNHKMw6GZ8rvM5Aw6x7/Mpb8NSjHHzLB6U1abXTT8tD8qafh/pLGFHBWWTrKaxD0mynaPOuuEzGk8D53xTmp15BcKqZ3BLReKCXBTNHYri+aZvLUvg6+qvTzCidgJlCZzVJ1wMTGPg7uxXwiDMrNSnKJPPyw0WeFDWeF3VWFONLIfxIMdbxg6lEeEMBKhJSdK9KnEdhMttIVxlDzQqdyShe+Htk7P6bir7DmUu2aBWgLC9iSCrWJpID3rJC0nx963txYIE1Hh932wdOxj1xeZjRTzk40DWprZ06KVK2e0BypIs9eVVSGhHYJZkcB/kC6uHd8Gmux/8/gxRqqKVw71YX336fxtw+6TxaXO++Td5uXZBWWHrDpCUCtsGkcIjEgqS0ssxetVGYCyBsoU72oY3ty4ri4EsWcuW6iW3qWcWiWoVnHYRwLp85WrQvdbCqSNpmDD4IDzXXQVZyi5bsRqbV11ix9LlqxBzPRYxlyRW0pqWqao+eVCWS0eW69dC72Hjb6cxrluQxFL28SBM/TIMk4eG4df3/fFWry1452FPfNJlO4Y84Qfr5/Zi4pPBkrTNYK3lQ4GY9uIBrPnmBPwmX0HYhnjsWHoN62adhd2wQ/jlPX+284Ise/t0v29hS98bch5JaXw3X9cabObawf83Xw0I5s5gY7cspxkKjSg9eR5JtOPUcrLCPRbR2ISESWsRP2oRGqpqlKcx49i3n/Zk38MFk44btRVZCSVst6jtk4bdqcLNs/bYRWFRlyCzODbxlrJqnzUelFWrIvNN0GFB2WbqApS3jcWH+T4BbS/5hh9Osg8QURYs/ShCQQDh8lHMWk64boLCPVOJuHerBERTQNZHk/+5H0RfoE8InH2NlbXy80jUVIj1Kcos8nKDBR6UNV53lTQDpeR8y5ihoaoSWVMmIt9DP4uCsgM72O++LlMPYNeYDdWxbKIvIBoDVYGsrn783y5mSUrApefaaJmklQeXSbhjfT5GZYSrzD1TvqB2vf/P9nHopUov7QXKkjwEzN5xWM8sZtvLO/VZ9yuY9rg3+9Yse8kDFQWKWwRPbD+FN3tvxOu9NiLM+agqVeodX1FazbZif/x/JvxMNzYibepCkLVYE3l/0SMU7tzWptay96Y6QGAzDnpt3dGjvW2VlaMeINoCOoiGgOK4QIAqOfOi/0X51di8ZRs8t97fZUCWtRbjrBEWdgTRZyXfSnVlcmVr+l8VKCudv6q0DpHuiVj8/rEWwHVWn0MImh+LcP87WDP3LIZ8FIh+Pd0ki1zd3fDbAH/M/uEI1v15Cht+PgXH/mH3wd1mwJZ2XS0ZGIGtlhcQvu42rocJEH8xD1tWR2PMtyHMwpZoZWgxkBZI+vd2xyf/8cLYn0JBnObpySXSYvLnHUgDZBlLFrJZthaAkvdb8kh7yU6f28ppCXL2RDLagtIrtzuQVu43hfhk6Xfx6mPG5+ee8GgwM/AxpEEON88KtIvCwi5BZnHwoOz950/VGQ/KqtJMB4jviKBsbWYm83pNK3x8MC0NWD+yl314iK7g1LYU5cLVVKFo7u8omvc7IDa9LVbkwIvAWDo8Lc4rb4OGsWJRA9b/dFJS1pgLaGpU5PzTsCizSsYNFnhQ1kjd1tSE7Hkzkbt2mZEquF8seRYni1x9tubW3L4GoeNwlO2/P1m+X4N5n2W5eTNr2aJjily7K2aeZjyrfbq6gCxKK8vvv++IK7ba6ydmHVvl9SvEeYpbC01VM9cvZYM4DmlC0x4OvVTppT1BWZKpobKGAbM3f5+D9gJmy/KqsPTFLeybM/0JLxBQKx+IzuCb5yR0BvN+2oIGseEt15eOCWbPh7PDQfnqTeq6POYm+/0WHlRcQNZGUM5atsDb+ByFJFeB3y5mAVd0yLT1q40OVaUlJ10EvNIhDchS+sPhR1viVzudxs7N0ZBOzwG28mVLp5EvUz6tumtNQFnpMvJTKxDkFINpLxxoGWsu+zgCUZ53IcytwsnwVCybcQo/vbMbxG3LgKNHNmPEV8FwW3YZUcEpuLI/E4dWxcFzzHks/uAYbJ/c11IWjV2tegRh3pvh2DziHA6uuIXg9bFYND4KgwcG4u1nPVoodKjsV3q6sQW24Z/vxdq55xAbnSstLn9uphoQ2I9n74gCH8VxV/qCNey9l+a0UmnrRNmFjLYgdbX+zhCVVmAikbRQQTQGSjBrg0p4dGMC+33OezvcYOVy8ywelDWYSk2iIB6UNYluMI4QHRGUTbaYwj4mSZPnG0dpfKlaayDlSkHLgNCyyx6UCVu3Bi1aN1HCLbvSQuu6jJWhurwejq+FsXZY9diDuOP6OQCpEIrYoJi2noWv75grzar6ghss8KCsKg3pF18df5MNtisuX9CvIDW5yQqX+MiK9unBAUu0BUsnMOqCprqO4blXWm31JaVskTBt+qKW6KT4IuaUhSa8tIU08qAs9UnVKW/U+XyMup0foTJ8bUs+czjxcb3OgIKXu7oyL+GmJHN7g7KkCwJmE6dtBAGzZTcMyyGnja63/xgI665+jNJgy2d+ClnrqkSw/VAC+Pz60gbkJxsWiHn/KVf07e6CxgbTX4jMXL6JOexrqNSPZqHQzwtZdmNBzr+MHRpFIghsLSFwnGnsqkyu/Lq6Rqx1Oov3n9vawmU94BE3tvAl7TSxrQTXFpTl5CKO8YRTuWzxf8Kjkp1ZxCvr8vsZxBy8xxz3lZWIcDTkLhbYn8A3r/sygJa+K28/44EJQw7C1/06UhOLWZGleTWIP5GDY5sS4GV9Ecs+iYTd0yEtY3MCa8f3DML8/x7BlpHn4Tz6DCZ/ewjf9/OVUOt0vU99QEDtV6/uBC0s5gr4HYlcn5nL/5KwEGYlK7BTdO4lSklnFrJkKas0NDbhzlRnRltAO0A6chj4bwmlz9gflVP+GLLtNBek36ChAjfPIlB2wUNBZnFsfIN39KWu/3lQVp2GzPh+RwRlGQfOiElAbeucUmbcbWYluv+saxjTKYAdjq+EaSw78coSv2x98X1uRY0zGzjhjSNZbFsbg3yPAAAgAElEQVTYmE6BmP/fcIj0dJKQnVCKKf8MZQPgWxH6gbsGbmqbFMcNFnhQ1jjqznPbgKyZxudmzVu7DNkz7fVyJFbaTFsguhtrHGWYQKmpDnOZ00kCSuZMiGieOLvAevAhmd3FDZWlqNgxilnHVnt9B7Eg3gSk11wE2vJKYCyBAt4bTc/JkCmAsqTNhmqRBJgd4tiuwOy13XGY+eR2NhFc9qJyC07fOfswoIcL3nvCGdH7Fa1qNX867qfMuJ2HPl1dMeRV5XXeT2kaZ7W5+UgeZY+cbfo5s6kvKUaWvRUKtm9uk4YJ5jpBYGOJ+tIHYws6WejTjgNuOz5Zkf7w310I39d+ix/U0bqCstIPCe2qOr87lfkxIMMGAm8mPROCHXaXkXrl/hhZmF+FAwEJmDMhEp/329EC0n7axweLp5zEhahMNMgthJTl1yA+KhcRrnfgPfESlg+KxKRnZcHaCY/sxfx3jmDaOwfx+wu78V7PrejbVUJ7QDs93np6C6NDOOCfIPNNk24Df246GmALNraWqIxV5MtOtpzCHGUTp6yykBN0vEPTFki3+eKpLPatokUIY4flgyLY73rHJFkKK13r5eZZPCirqwZNMx8PyppmvxhEqo4GylZfuYmkkXZIJlCWD+2ugQXvHW0BZHfaa/ehKd46j1nLFi0b3q7tcB9+TsKB+1Agwtbq7/yEQFjr3nvh8Pf9IG7aBzFwgwUelDV874uLhMwaqzj0vgM9w9cCVMRcYVayZWcVt+VrWp84T8B+42Vh+oEdmtbXXunygw+z3Rv2A1aySTJZMV09J7sYUx17DCLvzyD2/RCVwbPNytlZabEIH/5Lwh/72qObEXvF+JaAuvSlqYCyJLs0MNuenHylOeVY+qIHmwzOfmobboYkKKj2ZuQtfPS0M/p1d8Fmu90K97WNsB7kw34HZ/ebz6JDrncA+w2LBLK/W23bLvTfIbGWNTLXN8lVcvwEe0fnbm0bB2Pa6sIQ6Ssr67B4ShT+938ekgWhri547zlPrJh5BnTPFIIhQFnpdhCIGrYmHk6vHWa/WwJoZ/cLQ+iyWyjKkrVcFKSXwWvjNYz8eh/695JQyvz3WU9MGRmOsKA7qGpFRxVFtcxSN8LtDnxsLmHFZ8cVwNqxj+7B0N678OXDXnj/4a14vetmtlNi0MveWGB/HEkJ9wFj6Tbw5+2ngewFM9l7IdtR0YFXrk8ge8+l2jkpFbCFtmDlDqX3O2Ikc47X1QV5ecZ1wFxT2cDo/ax66rHzTKoDuHkWgbLzHwoyi8OZt5SV6kHlpzwoq1wvHSK2o4GyKWMc2AclfdbiDtE/5tyI8b33gixL6bgZrpu38OIFg1E0ZxhESW1vRVeYWQn7v0msBWyfDIYgQX8A9YjzbZCVg+OAMNDA+kEN3GCBB2UN/wQUBQewSX9DWanhC28ukZzeZM+Zipyl8wDaY6ljKNroyKgLOiJtgbRKpo48jKtDHeD/+WzMGCvHTdlQh/IAB9T7fQiR12cQJZyVzmry5+ePZzDnMGQdS9tny8tNl4LClEBZ6lgOmL01xBHtCcySLJs/3YlxXfxh28MXe6wPKzx3pbkl+LO/MwNT7Qa6QlSp+/frtZ4ueKO3fo4BFQQ0cgRRF6RYz0Dm4vV61cSsZR3GI9+zbRyc3bO1gmByx/OvkJ1ZgdHf7GvhVB3wiDssfwwBUcOYWjA0KCvdvqzbpQhZFAun1+8DtOQsjEDbgjRZR34VZbU4GJjAAFkCZumdTdzfY77bB9/NN1CYJwvoStcjfV5ZXIu44zmMdstj9HlGw2XVPagFIB7V2R9DOvvh24d88EmXbfiw91YM+ygIuzxugKgl+NB+Gmhx7mVjqeDcq66sDJKdpnagc4XQTFsQ99d85rhS4X4Hjfjxv7vZb+XX9/RfkFSnIvu/7WNz5pToAnVJ1d7n5lkBdlGY91CQWRwbeFBWbb/yoKxaFZlvgo4GyiaPICvZjjcANacnLC+9GpadA9gAzfLhQIirW+ePba1tJUEuEM7+A8WLf28tmcHv0TYuAk8JUCZHXPoGcuDlOeYC08mab6NQW6WfJ2d95Wnv/NxggQdlDdwT9WJkT7dD/pZNBi5YtriSI4eYpUVNSpLsDS2uKqJCmZUsOfnqqIGsYd96agsb0K//cAGb8NRKWdqJM26g2utr1Pt9gAq/cWgSGdcSw9B6dl12UeIQpqsr5k06YejiDV6eqYGy1EBTAmbD55+CQ28fjH0oAM5vKzp/oe/YosFb2fP804vrUZipvRXckR1XWf5JX5mfpZUw/ARb9C+7ckOvZ7MoaDd7fxInt7FD9urVze/qVGNX1Sblx1zIZos/5ICHQMV3/7EVnmu124XVJoJKVWJMUFaqGgbCktMu4oQl61k6CKzdtzAWgjhZowKiMLh0+h6WTj+JL/rvZLokff78rj82LbmIhJvag0IZN4pxzi8V/jOuYs03JzD+MQkPLifL8M678ctDO/HTYzvg9PURXAu9pwAcS7eHPze8Bog+JcvGAgW+2xUKT7Z1ZO83spZVFnL2nmC0BcLTipQHytJ3lDiykCWKjld6GH8h7cq+e2zeOfXFA3qrj5tn8aCs3qo0qQJ4UNakusOwwnQkULY86pyEnJynLjDsQ6JFaRFuCYyuwKJTIKb+S/+PClVdsmgwA2YrI4O0kES3pPV1jVjy0TH2URz78B5cDNTf43lNhRgrP49kA2S/KVf0MSzUrVEmmIsbLPCgrGE7p/z8GTYBr75jPMdx9WVlyJoyUS9Lr/rCXAidRqDE37ys5bTpLfs/w9Cnmwuz5Fo0+QTKrlxnE57MVRJusqrwNRD7DkTdjo9Rec74FhjayK4ubWMj8Mdne9h2YeJaa2/ORnXycvdNEZQl2QiYvTvTlXmzLrl4ixO3Xf5nXs7BnGe3su/Vwuc8QPQG8iFg8QH0774JA5/agITTinQH8umlr3/ssxkEqOVnmp5Fo7ScSs8bG5E2dSE7aLeArqG+nN6hE1Bg5MUzkq8mJZWBMFmrVukqrknko3fMx//2Zu8cen6+fnUnzkakmYRs6oRoK1BWWg7hvUpmybr4g2MtAO3Mlw8xwDQlWiidlJ2TMzDPtVfw52dBLZy8xEm7bv45JN1WTK9QgIqIqtI65lxsz8LrcHg9FCN67sboThKjDQ6stey6B0s/imDOxyLdE5F4Nu+BN1xQoU69ooV7AiTOvSYpOvci/tikEZOQZDlNaR0cbUHKEsXFOqUZOlhkv56ujFs2Nsb41Ezjuu5hlHkNdQ16aZGbZwXYRmFu5yCzONa/zjv6UtfpPCirTkNmfL8jgbLJo5qpCxaYl7dqM358ZETf+Osp9iEhp15uw8/J3NPnovbaaQgdh6Fk4WB9ilGbN/lSIax7S7ZgzXzpIMoL9d+GK8ysxOxXwpjV7VnfFLUyPCgJuMECD8oatsdzVyxEzqI5hi1UrrTCHduQ5TAetA1Xp9DUBEZbsHg8GmuqdSrClDORsxnijCWro3f+7omk+PvWhMmWU5Fs4YBKnz+YM68qr59RX6D/wk9b6oM8bb/zN8nW1/8+6wHaRmwuwVRBWdJfg6iWAbM3f5uN9gZmG2rrseLlLQzMmfXUdtw5rmhlGR16Fe8+7ow3em3Cie2a8UrXixuYZfWHT5vvYkzFjXi2uFJ4UI6GRMsfQVHIHraAVptp/N8/0RcQjYE5htVzzra8T8lx16iv9yE1Sdbq09Tb1R6grLROSnNrcGxTAnPgxTkJm/zcfvjYXsbtk7lolHP8VVJUA78tNzD8870t9BDfv+WHzSsvgzhqDRH83K/jt1f98Um37fi6iw9+e2gnRnbxbwGQCbCd/u8D2PDzKeyddwOX92Yg524Zb9Sgh/IFNhYMlK29K+f4rqEBySPtmVGTKEXJ+6ipCXemOuNBoy2QVvX4X/ezMd3n/Xyko41y7vrHafY72KDnLk1unsWDskbppnYrlAdl2031xq+4Q4GyRF0wknfwZfynRrEGsoqlrf4WnQJwzgjgY/HioWyrc4mfcaw9/GdeaxkM0rkhAlkj2D21DxMe3csGvoYos6OUwQ0WeFDWcD1Kk/ssW0uURukHFrQmUa0gk9VRvF93q/WKkwc6LG3BTMujku383Vwwe7xiPwiWLmTfqCq3L1C5f35rqjbJe8dC76JfLzdm6fjXF8Fm52XblEFZ6nBpYLb4rH5b5A3xAG3+3I9RGdj33oHIlYpcx1m3s/D1PzbglW6aOQBbaSWZ2K6yDjGEeO1WhmDNZqRYTYe4VNGKWFOhGquqmLVsvtsGTbPonC5v+zbJezsiUucy2jqj6/JLeO2xzQwIITB2wuCDqCw3Dcdd2uqivUFZaXnLCmpwfEsiVn15HLQbjMBPu6dD4GlxHtfDBBDXylrnCfOr4b3pGoZ8FNhCcUDnPi4xoHuGCGF7E/HXF3vx6iPuGNDVHe887IEfntgJu/77mTMzab7a8b2CQJy5XtYXWTtonF1XIyuzIWTqaGVkzZvO3gGCuTMUmpY+Zxkbl6QvVG7QlBscJaEtOHlVIe+DEkEbI17uJqFMMXabGxrAdpyO7aKfwy9unuVvGwWnzkFmcfCWsuqfLh6UVa8js03RUUDZooNH2SofkZTzoe00UF0mhmUXCXeVRecAlAl1549tTWpRRhKEc4aieMGQ1pJpfa+6tA4zXj7ABqZkJUvWsoYIV/dnYly3IEz5ZyhykwxjWWAIuUylDG6wwIOyhuuRAm8PZDlYo7G21nCFypVElrhZsxx0rqOFtmC3cTlv5cQ2+mXirUKQ1ShZx9L/W9fyZetsbEBl0HTUeX+M5FG2yJgxS/a+GVyRN3OOx3HL6itmILGiiKYOypLE94HZWTAFYDbYNhw23X0xvutu7Pxzn4JSK4srYfH2RvbsTx7khgaxaoDkw6dd2aIFWcyac6jNzUfyGAfkbPXTqxlFB/YxoMTY1rL1pSUQ2FhC4GTcXRR6KaM58wH/BLz5lORdSmDs2J9CUVqs/64lQ8imaxmmBMpKt4Ecdp3ySsLa76LYeJUAWjIicPvjLC4HZUBUKTuez82qgMeaaMY7S9866p+RX+/DHq9bKC81zLiDKClowW/AI24tIPCgl72x0vYUorYnwW/yFaz47DhsnghuMaRgznP7h8Htz7M4tCoOtyKyUSE072dGup/0PSfLWOKRJUtZ+VB9O5HRFiSPtpe/xa452oKkBZ5K7z9Ika8/TtQ7rjgaorsvBW305f7HeZzylrNq1qIAbp5FoOyczkFmcazj6QvU9jAPyqpVkfkm6Cig7N2REuoCwcat5tsZZiZ5fFQOs4ylgZzN44qTNUM3R7hiFLOwE66bYJCiiS92LOPuCcDiD4+C+GQNEcipAulkwf+OtNvAcOs2LwwZNpwd4UeOqm1WRkYmLMZZs/QOU6ajtFQRSJYuc/nK1RCJdB+Ec4MFHpRV2zUaJWiorGSUAsLdxnOeU35BwldL/3UKRFvgPAvCDkZb4DQxknHH0iR1yqgjCqoRCxJQ7fU9oyuo2DkaKTazkDxqkoLnY4WMJhJB3rJ/fGcXmyCTh3NytGOuwRxAWdKtNDBbeKL9AfBru+Mw9TEf5sBz07vKt2+uHO7FnpGhfZ1RlKXIF5txO49x8n3/kru5Pj4ycuf5BTPrMpGU4z6ZBBpcNIpqkDXNFvmblFuoaVCExkkEs2dCYGuJxmrDWDdqXLGGCQmM+/Bf21qAuDHfhkBYaJqyatiklmSmCsq2CEjcwxVi5qTL+ZdTsOohofGy6r6HObo9syMFBOBKh3tppXBddgnfvuEn+Tb0dofVL6E4EJCAqkrDWDQfCkrEbx/6g3jLORD4m9d84eN6ne3SKMyoBBlA7FsQy+Sc+q/QFqCWxuCT/7GfAc6BjjGM/iAvufyBpD8QTJI49yJOWfmQbDmZOSAtv6DkO9NMW3Drj7kQl5gPTZF8Gw11vXrOKfYcvv9PCc5wI/ZmyzxL0zmRdB6ao9E1F2jeRfMvbu5G9w6tiOdua/2fm2fxoKzWqjPpDDwoa9Ldo59wHQWUTR4xCXTwoW00sH/RTcYfS3QFs18Na5tK68Uomvc7iub+jvoy/TjFnJv5by0eCsRxz0SDyE9bqFi5nQOxecQ5hW1gBqlEg0IIhOUGCNxHvjVglkvDDQ4orTwwS4AsVyaJQNd06Bq4wQIPyuqqQdl8JWGhzOKqLidL9oaBrprEYmTPmYrclQt1LrH8SABbVBElXNe5DFPKSLyG7z8n8UT/xpNbcPWcIlhZdWYH6nZ8xA46p5AXdJCBOXn+pr+Fm/hx33hiC7MOIWBWJNLduZEp9J25gLKkq6Y6MZIc3SXbRo+3v3f5nNsFmPs3iQOwxf/yQF2VrBUdyRy69ghzADbo2Q1IvZIs0+XWg3zYhPaEf/vTMsgIpuNFo6gWqRNnI2P+ah1LkGQrOXaYvbtrUoxrfVV0LILVk7djp17yGjpzZmoZvn/bjwH2fbq64qf/+ZkdZ6w6nZgDKCvdhuqyOlzwT4P78LOwfXIfAzoJoF3zbRQi3O6AfCVIB3ISRg7ByDEYgaevPrIZNkMP4mjIXdTW6v/NqK9vBO3OGPSSZOGH6nilhxuGfByIiyfvSYuCoqwqxBwSYP+Sm9g0+DRmvHRQBqglC9vlgyLg6xCNsztTcO9WiQKnrkyBZn4h9POSWMk6WCu0RLBpGxuLpNrPU7hHEbkhJ9n3pzDystL7D2IkvaPI4SAZsthPmcb+kx7k50jKdENzLDJ+obwU6L/TvIXMCIaMXGiOxc3V6N6YsdaIuR6LsjzdFqe4edZu2yg4dg4yi2Mtbymr7NGRieNBWRl1dKyLjgDK5noFsA9LEs8n2yYP55rvohjfjUWnQATOjWmTOrlKijbPZsBO0ZI/uCit/hdmVsLuGckg0/bJYOSnGmb1lzzdOvYPYxxdR5yN5/leXWPlAVZKTwMBaUBVvgxpEJfucYMDDqSVv6Y0NGBw3uSqs7UsN1jgQVn53tDhurEB2bPskb9pjQ6ZNctStD9Iss1WIBlMapbrfipxdjqEjsNREuB2P9KMz1yWXESf7hJvvJY/hoAmjdKhsbYGFX7jmHVstdfXIGvZltDYiKSR9kixmd0SZYon6xdcYBNsmgATv2NHCOYEypK+m8T1uDt3C5sY54efb/cuaKhvwso+HgzkcHxmGwQ3FD1RX9p3GW8/spEddM6FV3u6gI6OFIqjzrGxZ8m5++3Utn1N4jpGCZO3foW2WbVOT86+7k02DeOF8nIRxny/j71jiBbl0z7eoEWgjhjMDZSV7gNyApZwKhd+U65gVp9DLQCn44AwkP+FxLN5aGpsaskSeyUXS6aexAfPS6ye//d/npg/6ThuXVN8V7Rk0uKkML8Ss6yOMudvtJWcjref9sCcCREqLavJCpjkPOZyB1stL2D+2+GQ5qklwHn+f4+wexGud3D3fL4CdYMWIppOUpEIAlsLZiFfXyRLqVSTmYXkkc1+WGoULZs52oLkJdtNpz0mIMm7f9uKrWuvwcNzu4xhCs29CGDlAFd5UZXNo6TTSAO0XDzNzZYtX4VbJwRclFb/uXkWD8pqpTaTT8yDsibfRboL2BFAWeY1cuQkEDjLB+NqYMZLEode5NTrRmSOcStTUXrJwsEomjMMNXHaAQVkEUvcUyT7ej29WkqLlnA6jzn0snk8GHTenoE+7NKrtySLsjhpGZVZvcrHyV8TYCtvTStdprpzbrDAg7LqNKX+fvnFcwwwrbxpHAu0utwcVn6hr26W0U1k4b5mCoRLrNFUa948b7Sd9ov+Emsg2sofeVDWGpB6S5wZhxqvryR0BbusgQbFCU/6vNUMzKm5Z3ogBDnT+fZNXwaWkJVsXEz7vtPU/wI0T2FuoCy1rFFcj+SFW00GmCWZJA7A/DH5UR9Ee8cqdABZyZK1bP/um5j17AHPS+x5ImvZjhbSHZcjxXYOA9B1bVvp8aPsHVt1+5auRWiUL2vNGmY1V5OWoVF6YyRqbASI8oXbkv7uP7Yyi0pj1GUqZZozKCuvw5zEMoSticeyjyPYeJrRlz0RzKxST3jcBRkoUGhsbMLZyAxMHX0ExMVJi3vfv+UHr40xEBZUyRer0zWB+CO/Cka/Xu6sfKqDvs+7PdWPhQhsFsSV4JxvKgOcV35+nI3jqT10WD4UiFl9D8F16BkcXHELN49moyy/Ric52ytT1kx79l7JWaboVDR53DTmh6UwVAm9WWMT7kzegLjh81FfoZuVZnu12dj1Ep/ssQN3ZaxaqU4OdOUsXeXlUAa6SqdRZjzD5blzWX9QdnbnIJjDsYa3lJV+LJSe86CsUrV0jMiOAMqSc69k3sGX0R9Iqx57GaBJDr2EAkXOUaML0FxB+QFvCGf/geJFmjn9oknA6i+PM7oF8jZLXLKGCrTyTmWSlWxBumGsbvWRTRlY2toKrqqBBA0sCIjlAmeBS1xH+0JC2RYczpKWS6PNfx6U1UZbrafNWeKEnEWOMBZZWu665Yz3sL5ct9982YGdEtqCJOMCDq1rSf+7uzxuoF8vN2aZM3hgICqV8OZVRm2FeKeErqDy3G6VlVbGJzFQNnOlaVkOnj+egf693ZlDL9oaSnyyHSmYIyjL9N/Q2ALM5h04bRJdEuJwFBO6+bGDzuUD8coOftkZfbq6YHSflWx7+r3EAvlkZn9ddTeF/Zbzgw7q3BaihyEHirmrFutchiYZCYwlhz/Zq1ZqktzgaXw3X8drj0oAtNce2wy6fhBCRwJlpfurqrQOFwLS4DHqPCY9G9JiRUsWtT62lxFz8B6zOCWO2SCfOIz6JrgFPLUffhgXojINNmwhIJb4Zvt0c2F10HfM4of9SIpX5LeWboP8OYHKJHfI4pvY+NtpTP+3xBEwB9Y6/H0/o3EwdZ7amphoZNlaMFBWvo3ZHrvYOyt1onKHo1m7jrBFwJKL9/lO5ct4kK8vn09lRinycyCaM6kCZTnQ9dLl6BbOWGnDFmVzN86g5vaNJAQvUlz8VNcH3Dxrl20UZnUOMotjNQ/KqutW8KCsWhWZbwJzB2XJsVfyyElIGqXcc6T59ozpSE4ALAGxZGFKwKwphOJFgxkwW3LIu1VxiC/K5vG9bLA4+Z/7UZJrmFVfcW0D442lgdq676NAfLKmEJR92DlAVX4AQfK2BspKUx7Q4IBzBEbArPQ9+XaXlZUhLi6u1YM+KpSGt5SV15521zVJiWzQXXYyUruMGqauiL6oV/m1qQkMkC0NNl/PvQS+EghLW2wJlCVwViHUVaHCd6xyugKFxJKI5HHTkTR6soq7bR89e3wEm9CSR+2t65Q4/Wh7kQxeo9mCsqSJhkakLPVik+Xc4BMG140uBZ7feg2TH/HB2If8sf0HxZ1KtdW1sH5vEwNJhr2wEo0NHQvk53SW5bIdKRZTUFekO9d92akT7F1rrB0PnKyCqQ64ZzOOTBm5KKP/T7hZiIEvbGfPAb1fyFL2QQodFZSV7sOmJiD1qpCBmYvfP8YsTWl8PK7rHiz7JBKhS28i9YoQ+TlV7Pvy+SuSHSef9fXB5pWXDWY9S7QYS6efxnvPebIFIVoUIu73lbNP68yJXlMuxu2TuQhffxub/zrHjDBo1x0H1E54dC9rI/HUkuUtWeBKUzpI66mtzrPsxjJQtuzsSZkqG4rLGG0B0f3RuXyoTsvGzd9mI23dLvlb/HWzBmKvZjBQNvqK7KKS/I5CaYXR/IvmTtLGLnTOzaW4eRoH6nLXNO+6czMFs/scki4ONTU1rc6xaH6VmJjI0vCgrIzqzP6CB2XNvgtVN8DcQVn6sJCVbNE+2ReW6hbzd7TRAFEUEBhLB1EXmEoQxUUzCoPiBYNVihS2No4Nmkj2LSPPqUyn7Q3awkScVDQgC9Fh9VLb+rRJrwqUVcV11Booyw0euMEBB+py19xgQl4+kUiEgoKCVo/c3FwelJVXnA7X+R4uyJ5uh8ZaWc/IOhSlkIXjOsxZ7KSbFW69GMLlNuxAvaJTIIUKTTCC6AmIpoC2RX796k6lnHUSuoIvUe/3ASr8bZXSFShrWpabN1tQFEaeUna7zeKIkmHgixIHKm8/44GkhMI2q7utKzJrUJaU1diI1FU7GTCbvetIW6tPaX1pFwWY9dR2kNPP9a9vU0gzf3gQfn9hBfsNjXzdGXVV5k1hotBAgIGxyZZTQEYCOgfiBp8zFTnLlDvd0blcuYwFfrsY+FsUFi53x/CXxLU9YfBB1vfE/fndm77IFZQbviITL/FBAGXlu6CiqBbnd6XC7c+zMrQA5Ghr0+DTOLMjBZEhKZg6Kpx9Y/v3csfE3w/i9NE0g1nP0mLAH5/tAS0E0Dec/v/1RTCS4vX/xpEhxt0L+SAOWk+L85j3VjjGdQtqAWqtegRh0XtH4T3hEqI87zLAmow52iLkOq9gv/Gs6bYK1aVYz2TjjpwdQQr3iConYeJqxI1ehIYq86JqUGiMESNycoQSUDZaEZTlQFX56mn+JD9n4ugJaE5FQdr4haxoKQ/R0SXEJmPK8weQEn1/p0l9fX2rcyyag2VnZ7N5lp9tFGZ2DjKLg7eUlX9yFK95UFZRJx0mxtxBWWYly1MXGOV5JCde5MxrTKcAkHMvUwvCZX8yK7xiTycZ0errGrHwvSMMSB7bdQ9uHDGcR/rUK4Ww/1sIxvcKQqwBy5VpgB4X3HYX+s8FZXHcPfqvbHVXOk7ZYIIGEaqAXumyVZ1z22p4S1lVGlIfLy4uAllDFAUrWqipz60+BZWbZWsJUXqq+sRKUpQGb2W/T7KWNcfAwISukokcOfZSFqpOeqGO0RV8jNboCpTlrS8tBS0qpk5bpOx2m8QdC73bQskw6ut9bWk81ybtk6/E7EFZalBTE7NiuvnLTGRu2y/fxHa5Ls0px/x/SByALXreE3VV9xdh/ve4C/p2c8G2qXuY5dqv/9mA0lzdLUrbpYEaVDKAEkQAACAASURBVJq/9xADO4jOQNdQfu4Ue+dWxBjPUr2RnP/YjIXAcaauYmqUL2xvIl5tXtAiTlG6flDDgwjKSvc1WdGmRAuxb0EsFr5zpMWKlgwbiLfVbdQ5LLQ4jq8G7GTg6ScvecNl6UUU5BqGe5asZ+fanmjhtu3T1RVkqRu+7660mHqf19c1ID2mCCe3JcF74iWQxfD4nveBWrIanvdmODzHnGdOx8ihWG1Vvd71ShdADr2IooQcfEEk4ffl7uftCWVGTMQnqyzc2xbKFvzKYpOU3ebjmjVAxizLVqzGobBwNDTj7KoMXDil0TxKmq6A4tXNzeg+zbNyMgow8bFgzHxZO8Mobp7Fg7JcL3SM/zwo2zH6UWkrzBmUTZ27ig2C744ynS2gSpVshpEuf5xhgCyBsgTOmmIQFxWiaO5QFM0bAtRIBm/Jlwph3VsyCJrZ9yCqSxWd7Ojalgv+aWwlfOq/QpF9p1TXYoyajxsY0ACAC8pAVe4e/Ze/L1+G/H3Kw1nLStcjXaa6c26wwIOy6jSl+n7RXn9kTRoHcZFQdSId74gL8pA1yQqFO3XzvCtKusUA2bJQ83PsQxx0/33Wk00OadujIF1xix8axKjYZc3oCmq2fwtxtm6Tu7QpCxgw21htGFoVbbrbbtghxvPZt4crArbdf19oU4a5pe0QoCwpvakJ6ZsC2QQ6w900KIVIrFWvSIBZp2c9UZhcjNhTyRJ+4lc92KNycMNRDOjhgi/+vgG5SYbxxm4qz2CTuB6pDvNAjr90NvVrakL2vBnIWeho1GZlLZgPgY0laGHI0CE/txLfveXH+p0sE8nRUxsyJRi6OQYp70EHZeWVWFZQg7yUcgZekiUtGTq0UAG8FIzBA3ZjQG93vNLDDVa/hOL4oRQ0NDTJF6PT9YHABAx6yUtCbdDNFbQ7ZPWcsyCrbmMEojEQxDc7FJt8BcsHRTKAjWsvORSb3S8M7sPPInzdbcRH5aK6TPd5i8DBmi3sFGzfLNOcujKiLZjEqAtqMhUNVcrjU9n3JNOEvicyDTCxi4OHwplBy9H9EgBbnaGKsjkTB7rSPWVB2rfH2C4SAykOBFaWXj6Om2cRKDujc5BZHKt4Tln5blS45kFZBZV0nAhzBmWTRkioC8qjDLc1veP0rO4toZVs2opIgCzRF5hyKFpjzcCfouUjETTvRsvAzn/mNYOJTYMq4oqiQdSKz46jqkT3AZPBhGqlIPqQcyuy3EBAeksNnRNPEQ0IKMinkc5P9zmQVr4Mro5WRFF5ixss8KCsShW1eoNRC0yZiHxP11bT6XqTc+7VWKW9pUpjTTWES6whXGWPJjOjLfBYE92y1XHKKOXbw+vz01Dt9R0DZCv8rDSmK1DWF4XhJ9hEKcvDV9lto8RlZ1aAPJ7Tds7//Z8nMlOVTwiMUnk7F9phQNlmPRIgSxazBNDqDAQauE/cPvaFZecAzHhiO8YN2MKes4th963lLwZdwhu9N2LgU85IPHfHwLW3b3GlF66w33Px8TM6C1J++YLEWjZauXW+zgVLZSy7IKkjd8sWqVj9T5dMi2JAGlEVfNF/B1KTOp5FtC5a4kFZ9VojQ4cItzvYNOQ07J4OwcjOAfiuiw/eeVSyQPre37Zi1ewzyM40zPeKaHqIyoCAX/oW9uvpBuvBh9qMXiM3qQyX92aA5iqrvjoO2yf3tcxfaK4x7cUDzNEYcfHeCM8C0UGoCyVhIRLnXpPGKSRNsXFk76bMte4K9xpqahFvuRS3x69AU51hLXcVKusgEenpmRgz1poZtVCTpPlh6ZoMVohDVtpwheZQHIUBN6/iaOLompwo038uv/Q8bd33J9nz4fqH5o4+uXkWgbLTOwWZxbGSB2VZ/7f2hwdlW9OOmd8zZ1CWuGQJmOWD4TTg8I/9bNs/gbJ56W1vvaVLS4oXDIFwzjBMftwHVj32IPFsvi7FKM1DACwBsTRI8pt8pd3J+5UKqSSSPvQ0IKBDGkylpNw96cECAbScIy9lYCs3gODKVJZGiRgqo7jBAg/KqlRRqzdKoyLYxL0mxfDbzFqce53SzZlQSYArhI7DUZuZ3GobTOkmbW8kvkOanBGH7NmIDKXiVUWHoM7nE4h9B6LqhMT6T2lCLSKTRjsgxWq6Fjl0T0oWsX17ujILWaufQ3UvyExzdjRQlrqBKAwImGWOWWifsAmE3SP3Y/zDuzGp1w78+oyzgkTxJ+Lw3hPOeLP3RtyMvKVw35wjMhevR+rE2Wio1p2TkSxlyWLWmED7PbsJENhPNIiqE28VShwrNb8/A7Y/GJb3miqPB2U11ZQkHb3GMm8W48iG21j/00mMeDQAH3XZhn5d3ZiF63d9fLF1YTRqDLD1XySqx6LJJ/DGk5IFJBoDkKX32Yg07YQ2QGrhvUpcO3CP0Tys//EkJj+3XwaopV16G387jQPLb+FWRDaq5HYCChhtgSVq78ru3CkMPcpoC5LGOCiVku26+HUWKu/epz1TmpCPlNEAB7zSvIgDW7kENO9qbf5F9zhAlvLk5+e3zM3onvwcq6GugRlKjeu2h6tC7X9unsWDsmpVZVYJeFDWrLpLO2HNFZRNnraErfqlWCr/yGinBT41aWB8j71sAEDbacTV9znhTFk7BMBu+d8qCGf/gYwZf6G63HBWrLRyT4Mgq+5BIOoCPhhOA9xggQdlddApbXGdOx25Kw3PRdri3Gv5Ap0AAVHCdWa5Xn54tw4Na58stP1swCMSa5nfPvRHXZ1yZxyVe2eh3u9D1Hh/ibrUqwYTNmPZRvYtq4w3PMDOCUnbh0d/s49NaPv1dMU+33ju1gP1vyOCstSB2buPMmCWnICZyl7xlV/thF3PnZjQbRcCxik6Yr13M4PRGLzRaxNO7zzbYZ5DkSAbyaPskeutO9c3ccoSn3fZOeM5AcxxdZVY5F6/oZfuZ4+PYItZZB1r/Zt2nId6VWxGmXlQVr/Oot1q5M8heEksLF8LxtvdPNgz92o3d/z+gj+22V3CtdB7GlmTtiYJccwS1yw9y3S895wnaPdMe4YKoYj5r9i/5CY2/HxKAaid/u8DzHHa7QnT2O/53pwZsuLW1LHxRdIIO4hS0mXv0U65qwns2yHwVnxHKyTmI2Q04Lbissy1sS+mPB/KjKau7LunUVXcPMvXNgrTOgWZxbGCt5RV27c8KKtWReabwFxBWfrAJI20Q9kFw02OzbcX9ZOcAFgCYska1KqH6fDTqWsVbfshmenInTOMAbNlexW35qgrR9n9mIP3mDMv4rrKuFGsLAkfp4cGuMECD8pqr8TK2Bg2+KZtroYOjKfW1hK1As0GfdL1N1ZXQrjYCkVrpgCNyoFN6fSmcC7tzMt7k3LKk4ayfFR5/croCiq9h6JJVGFQ0atTM9mkKWPhWoOWyxVGVmzEm0cWQO8/vw3E+figho4KylJ/5gafYJPrlKVeQINx+BG1eW4+/bsrBj3qjCmPeWPsQ/7w/EZxoYYcfn3z3AbGM3vYJUKb4k06LQGyBMwSQKtryFkyF9lzphoNZBcXCBmvbNZi3Rb36L3yzt8lW8vJyjD6rEDXpnb4fDwoa9gubmxoQqR/EkYPDMaAnm7o280VH3XZiqEP7WaOw8iR1qntyTr7fkhPLoHFdyGSXSXdXPHao+4gag5j8c5qq52y/BpcDxNg38JYrPvhJFb082K/5XsTLdl8iJynbR5xDkc3JuCGxUI2vkhfrrhjob6iGnEjFiLBdo1JfDO01UN7p6+vB17u5oI+3Y1DIybfvttReYxa0P7vmjn45OZZPCgrr0nzvuZBWfPuv1alN0tQtraW0RYQfQEf9NMAURQQVcGYToEg6gJzCNXl9Zjd/xAbfIzvEYSE0/kQ3Y5G0ZxhICoDfcPeZm7a+W+HgwY/fDC8BrjBAg/Kaq/bPOfVyHY0PPBZl5stce7l56W9UACKvVZBOOcviLMVrTF0KtCImZgzr/9rdub1z624l6acp04Ufxoin08h9v0QFQeXGE2ilAmzkDTS3uAAzNZ1VxhHLln92P8ZZjT5zaXgjgzKUh/kHTjNgNnkhVvRKG4/bsD8zCJGkfH5c67IuJoDx2e2sXHGpne8FR6VsoIy/PbyBvTt5gKfWUEK980xgqgLUqxngKgMdA2Vt2Il1rKnjutahNp892ZOg8BmnNbvHaeJkWyRp083F5DDwAfdkZc6RfOgrDoN6X6/sqIOPi4xGPQfb/ZMfv68D0Y/L3H2SwYbxE9LVAAHV8Yh8WwexLWaL1jV1TVirk0kozSiRc3+vd1AluFEeWBKQWA3lnHJ3lrjiyCnGKz55gQmPROCmU94I/Evexz9Yh7mvRmO7VYXEeV5lxmaELBN34mbQxxRIzAc5Zsp6aUtZHntUaLUcEVsTNs4rqSdmzRnr6lUb/jAzbN22kZhaqcgszh4S1n1Ty0PyqrXkdmmMEdQNnnyfLbyl2w5zWz1bgqCkxMvcuZFL3hy7mUOgegKxnWTDLgcB4TJ0BUIV4xgW6cL11jp1BRRpRjrvo9iYC+tMotr1X/0dKqIzwRusMCDsto9DAw4tbVESbjht4nmrl6CrGm20MW5V1XMWfbbKzuqOd+Vdi03XGqXJRebnXm5MM/gqkquPLQS4p0DUes9CKI43fh1VZUtH5+7I4h90/KDDbOFkCaNRMVAYGy/Xm44FirLMSdf/4Ny3dFBWerH/PDzDJi9O3cLmtoJmJ38rYSfecfSSPZoVRRUYMFzHuzbuuJlDzTUy3Lf1lWJMOZNZwaqLP9ze4d4HIsiz7DfdMk53be45q5ciKxZDmgSG4dOSrj/AAN+C4I0A8MF6WV4/zmJk0DeOlbzx5QHZTXXla4piYc2IjQZf32xl71HPn3ZB0usT8BncjSWDIxgNGRsN2D3ICz+4Bh2T7uKq/szQfQA6gItOqyYeRqvPbaZlf1KTzfY/xWOSgPSpamTQdX9Qg8JDUnWZGvZJHV1SBzhgLt/2SNg/DEsHxSJCY9IKOpID84vubPvxOExu3DOLxU5d5UvTMsWyl/Ja4Cjb/n0ZcUFR/m0hrjeanlB8h39XP1iHTfPIlB2SqcgsziW8/QFah8THpRVqyLzTWCOoCzRFiSPmITaJJ6UXNcnL8ItoRmQDYTLH7p7Cta1fl3ySdMV7J6qZKtxvRhF84agyGkoUKzdqmVBegXb9jT24T04tum+p2hd5OTzqNcAN1jgQVn1upJOUbhjG7IcrNFQadgt6BXNHr/LzkRJV6fReUNFKYQLx0K4brpOPLQaVWKAROTM69tmZ16vPboZF0+qoGioq0LljuGMrqBq+8+oL84xQO2tF9EoEjEAJ8XOqfWEGty9fim7ZfI48EUvCAvNw2GjBk3TO8mDAMqSkoTHo3Hzt1lIcnRHQ7V60EFvxcoV8HpvF/Tr4SIXCyx/WQLMLnzOAzVygEZjQyPsP3ZloIfdQFfUVqv3Nq5QgSlFNDUh3XE5Umwd0djsUVtb8aoTExhoWhoRrm1WzdI3NuKezTjcmz5FbXri1uzbnfqHt45Vqyy5BDwoK6cQI1/euVWIaWOOYEBvd7z1lAeWTD2JlIQiZilLFrO05d/uqX0M3CKAknhZXYeeQdiaeCSczkNtKw7EXJdfwltPS5yC0e9h7E+hKMw37HhMU/XUF+VDYGvJrGTrhUKZbKnTFrAxRYaUtT4B11m3S3HWLQbXf3FE5DcrWsBq0oPN48FY+cVxBDrGMI5efqegjEpVXhCFwcvd2obCgISw6BwAi4fUG0Bw8ywelFXZdWZ5gwdlzbLbNBPa7EDZ8nLGJZs8kqcu0KyHFVPtmn65BZClc1MPRFcwq+9BNoCy6r6H0RWokrnYYy6z2CtePFRVEoX4uOM5bDBCgzQakPHB+BrgBgs8KKu5ruvLypBlbwXh7h2aZ9IgpYxzLw3Syycp2rIYhU4jIc7XnT9RvkxDX586kob+vd2Z5ehP7+5Suf1QLLiNGq+vUO/3Acr97YEmzbc66itz2uxl7NtWl1+kc1HrF1xgoBZttZxpZf4cnZwHY/JGzB3SHou1VdSDAsqSXorO3cDN32bjzlRnNFS1HQ3PxbAE9gyOfGer0u7Z+J43+5bP/T9P5N8pVEizeLDEEnNoX2cQtYE5h6q7qQwYydsdonMz8jauQfYMO9DCjTFC1vJlDPgVCbKUFk+LWT/+bxd7d7a6mKU0Nx9JGuBB2fZ5Dgpyq7Bu/jm8+/etbEFh/G8HcPHkfWMeAihpO7/HqPOY8R/JHIPASfKxQTvxPMdcQITbHaReEaJezgFowLabeOfvkncVfW+Hf74XZEneliHLwQpZNhYo2LlNptrySzFgflfGKHGE3diEOw7rEDd8PsSlFaxd1D5qJ7XXsX9Yi48R0sWUf4Zi42+nGf1DfFQuaEchH2Q18PbTHuz9eDTEeM5apWuc3V/yrBJncGuBm2cRKDu5U5BZHMt4S9nWupTd40FZtSoy3wTmBsom2zmyQW6SFU9doMtT5zL0LKMrINoCspY19RB3PLuFrmBWv0MggFZdKFk4mDn9qjyh3mkZrYxbdtnDBiLCe+2z2q2uPR3xPjdY4EFZzXu3aN8eZNmNhbiwQPNMGqQsCtrNJuW6OPeqPHOYLYJUnjNd+pMpo44wkIisWsjKRVWouhSMup0fsaPqrJ+qZEaLL7sUw75t99Zt1rqO3OxyfP6KD2vnG49vxtmINK3LMMUMBMrqA8LKt+lBAmWp7SWX43Fz8GzcsV/HJuDy+jDG9U99NqNPVxck31C9SENOv8j518wnvJB5WdESfbPNbvYsf/2PDRDEq7BoN4bwRigz290HyWMcUJurG29j7b0M9n4uPmQczv+apCQG7GSvV+S/jTyYjAGPuOHlri74bWCAysUsI6itQxXJg7Lt2511tQ0gEPWb1yW0Kt+/5YcgnzhQvHSoKKrFjcMChCyKZTy05OiXgEk6iMuTaN68J17Cae9kCOJLQJanB/wT8OEL2xgoR+As0QYlxSsuNknXY4hz4W5f9rulhXr5kDTKno0lqhMVaYuy/MIZbQF9G1QFshS+fTIXh1bFYdPg0wyY5fTAAOv+EsA60j0RqVeFCnQ0qsrtqPFbVl5k36t3/6Z8IdLQ7c5KKGGGVRMfD261aG6exYOyrarJ7G7yoKzZdZnmApsbKMtW/0baoTZb9YBf89Y/WClXfR6BMZ0CGCh7M1xxImRq2thpH80+PCSzUroCFQJXnDsMoeMwFC8crCIFGNk/bVeigYbzr6dQVyM7OFOZkb9hEA1wgwUelNVMncyadcpE5HsadosU46i1G4vCXT6aCSKViixjyUKWLGVNMWRnVuD957exwfLbz3iAvIWrCpV7Z6He70PUeH8JccZNVcmMHp8ydhqSRyuxbmml5i2rr+CVHgScSLZSmoqH6FZE1vgWAbI8KKuxupQmLI25g5u/OyJh4iqIS8qVpjFUpKiqjnlC/+BpReoC+Tp2j9wPq4d3Y9rjXrgZorhAHLTsIHP+9dHTzki7miqf3WyuxaXlSB43DZkr1OtEVaMKtmxC1lQbNFZXqUqiV/y9yZMgsL0P7hCHpvVvB5gDm1d6uGKXxw29yn/QM/OgrOk8AWci0mHxQwgbF7z3j23MkpYsalWFoqwqtpV/z5wYrP76BHMcxgGUxNG67JNIxk/r5RiNL/+9gy1I0SLGd2/6IjZaOxo1VTIoxItEENhIaAtEAlnHqumzlzNANn3hWoVsVSkC3Px1FtKd/RXuqYsgKoNrB+4xagOiOCCqA04PtINx0XtHscPuMs76piA3qW0thtXJ3hb3qc/J4VdbBcYP3CkAwkzVxkTcPGuHbRQcOgWZxbGUt5RV+wjxoKxaFZlvArMCZZupC4hTlg/aaWBO/0PNlAUByEow7Q9mdWkdZr50n67gZoT2AHzR0mESGoPNsxQUVZxdBafXD7MBxf4l7QfAKAj2AEVwgwUelNWs00siwiXWrFmGtRrLXbkI2TMmae3cq6leDOHaaRAuskJDhem9T/b5xqNvT1c2QRrzbYhK7+ANFcWo8vqV8cdWeg9Gk6hCsw4xUipmVTdyEooiTqutgaxjv+i3g00uyQEJUTR0tECALFnLGio8aJaynN7K41Nxa5gTblstR21hCRdt8P9z/whkz+N6O80cEYbNPQnrrrtg32snTrspWrEf3RyJAT1c8O7jzrh9Ms7g8rZVgcLwEwwoKb0co1OVdTnZbJdEUXCATvnVZcr39WPfF2HYYSTcLGzhzPzwX9uQKzAukK9Oto5wnwdlTa8XU+4UYa7Ncca/Ttyzs8YdRXpSsUaCFqRV4HJQBvxnXMWKz45j4mP3AUrrR/dieO/d+Pohbwzssg3fvLgTpw38bc6abst+r/ku62TkLbtyA0kjJyFJCW1BQ00te//TN4DODRHIOdg531T42F7GwnePyvLTPhGMVV8dR5BTDGIOCUBWyB05vPecxACArGbbIuxbeIPNYee9eVhlddw8i0BZ+05BZnEs4UFZlf3J3eBBWU4THfC/OYGySdaz2cA2efzMDtgTxmuS/f/tZ9axYzoHQCgwPQBFuuU3jmRhbNc97GMzs+9BjegKpPO3nBfnomju7+yQdvpFW3ImPROC8b2CEHtEOYdaSxn8idE0wA0WeFBWAxU3NSFr9mTkbVilQWLNk5SdOckG9uXntXf0VxbqwxY9RImxmlfYBinJwsviuxAGxhIoS+CsqlCXFgOR12eo9xuIin36O9hSVY828fWlpWxSlTZlQavZvJyvMutY2iZOoHNHso6VbjiBshyXLP1fvnI1RCqcJjU1NUEsFrd6cO+dmpq241iVbk97nlfezWQ8gvFjl0GUo9pqXB8Z337UBa90d0VjQ5PGxRxZfBp2PXfCprsvwpwUHQ2e2X0Br/faiLceccbVg0ocfGpcUzsmbGxE2qylSJ3khCaxegomZZIWeHlAYD8eDWWlym7rFUd8tQKbsUiwcWCgOm3DnmVluMUQvYTTILP0e0KbRRx6l9A7xWHKdJSW3h8bG5rLmgdlNejEdkpSWiyC+4rLGPjCdsY7a/dHGMhRmDaBaAwYQOmXCl+HaCz9KAJWPYNaLElHdwrA8O67sfL74ziyIQHxJ3JQXVanTRUtactPH4PAxoIt0rRE0klDA5JHTWJz5MoERW5Tso4lK1myljVWIN7dlGghjrncweYR55jzZM6alv5Pe1HiUC18/W3mdE0s6jg7FIlPlnYrvfGk9vRTuvYHp1tV+bnxjo9tFCZ1CjKLgwdlVfXm/XgelL2viw53Zlag7IhJzBEKT12g+WM4vtdeNjAY81AAxCbOz+5tfanFARmtvOobijbPZsBR0ZJhjPtp38JYRmA/u18YG0DpWz6fX3cNcIMFHpRVr8PyS+cZeFodbzir7obKCrYdNm/tMvUCyKUQJcez31XpPlnnEnLJ2vyS6AmIpoAABaItIPoCVaHqrC/EvgNR5/MJqq8dVJWsXeLTpi9mEysCaOUDeXn+coDEOvbVR9xxLFSRM04+j7leE2By6XI0MjIkjlk4AEUVMMtZwcbFxUHVkZqayu49iKAsPQfVGTmIG7EQcaMWokZgWKeWlw8nsEnpn29qz6t3bXccJj/qA6uHd8F/TKjCI0tg7Ju9N+GNXptwYU/bWCIpCKFnRHVyOvtd5wcqtk+TosVFQgbEGNrRI9UtEtXj3IgpbEv013/fgOizxgNuNGmrNmkIQOXeCQSsEsCqKTDLga/KQFlD0qbwoKw2Pdo+aWlhk3hmvxywk40hxnwfgstndP8dEFCbfacUB53jMfRvu/FLZ1/81cm/BaglQI2caK374SSzJr28NwN5yeVsrtKaBgS2lsiysUT17dsyyVKnLmDvl4wlzjLxdMG4xX+ZCeKTbetQUy7GzWPZoF2J1NZJz97n6R378B7MezMcXtaXcMrrPk9vW8toqPr6dHPBy910p6nRVo7FHxxjzxMtBCgL3DzL2zYKdp2CzOJYzFvKKutKmTgelJVRR8e6MBdQloBYoi0gTlk+qNcAAbCWXQLYC3tstz3qM7RjCqIrmP7vAxJZu+6BLnQFqsQvXiRx+nVi9HJW/qbBp3n+WFXKasN4brDAg7LqlZ69eA7oMGQo2OYOchChrdOwxupKFC4Zj6LVk4F601nl2bruCrNyIUB26uhWnI41NqBity2jK6j2+hr1+aa35b/o1Hk2uRJslAW3yDpWQsngir++2PtAOt25EXsTFuOsW4Ba6d8EWcmWlJS0ehQUFDzQoCzpi8DY+DGLETdiAch61lDhl1e2MIdQ8edkOQ41LT/5TDpz/EUOwLZ8tVsh2/UjN/DOY854tedGHN92UuG+OURkuXlLnH7l6easUbjLR/LeLhIarLlxMXlsC/eIF1awxb/MtYoOvwxWmYEL4kBYei9wgc45kJaLU/afFnvsp0zDvpBQBUtZAmR5UFaZ1jp+XGNjE8KC7uCn/0mcDQ79ZA9OhOnPaU2/s69e3Yl+Xd3w7sOeGP7vQKz7+STISIScDXNWj8QVuuTDY8yh2AmPu8zyVFzbyBSf7TSF/UazFjrKdERp1Bk2N04aM1kmni7ExeVsh8Qdh3VAo+Y7GBQKMmBEQXoFLgamwW/KFWZVPF7KqpjaT5QQAbOu4er+TBCXrbmEz17xZoD+1JGqKQUM2ZaywjrmJ4asspUFbp7Fg7LKtGO+cTwoa759p1ZycwFlU8fPYBPVlAmz1bbpQU9AgKxF5wCM6RQI26dCTFod0nQFk/+5HwTQGjJkBoaiaM4wFC8YjAjXO4Ysmi9LDw1wgwUelG1didW34yQUA5fOt55Qi7vViQmszOIw7S22ircth9BpBMQ5hgNztBBdISlZeP3ynj+z0Ovf271VXtWGsnxUe/3IANmKnaPRKFLt3EOhojaOSLKYDDookHXsN6/5trTxUFBiG0tjOtVxQApnPautZJw17YNqKcvpqzavKsjxMQAAIABJREFUCERjcGuoE8pvJXPROv+vFzcwB1/vPqmfo5P8O4VwenYro1va9I63gjyJ5+4wftl+3V0Q7hqpcN/UI8RlzU6/lm3USVSiLiAKgwKvLTrll8/kuvxSC13Bytmncc/BVsbhl3x6U7tW9j5QFqdMbg54JRBX3lKW7mlqbausbPk43lJWXiPmcU087X98GsR+I9+/5YcDAQkg0FafcOm0AJ/8x4t9z/t2d4XVz6EoKRQh5XIhCIT1nnAJZAFp3Vuyy5HAWsuHArHlfU9myU4Ovk57J7P0ZIWKmjokjZLsIhWly/kcaGrC3Zmu7D0vyjXcQo4+7VeWt6mxCRk3iln7PS3OY86rYazNHFA95flQuPx+BuHrmmkPmkFqZWW1Z1xsTC5z9tW/t1ubiWH79D4210+JVlzo4+ZZPCjbZt3RJhXxoGybqLl9KjEXUDa5mboA5bzTgdaelDKhGMQda9EpANNe0MzZRmvlGfPeTvtoCddtp0B4jDYc6MTJfMT5NsZ13YPcORKnX8J1E7hb/P921gA3WOBB2dY7In/TGsYnq3ZPW+vFtNxtEtche+505MyfBTRqx+dVeTGC0RZURGkP5rYIYMAT2mJLDq7IOvab131RWa56QUeUcBa1Pp9C7PshKo9tMqAUximKrGSTR07Czhl7mXUscZUN+TgQlZWq22gcSUyrVGUAijYS8qDsfW2Rwy9y+nJriCNKr8huhb2fSrOzhSP3st/hSqv9mmVoJVVFQQXm/8ODWY6t7OuhkDL1SjI+enoDCJgNXdv223EVBNIyQhgWyX7bZdHXtcwpSU7OvrLsxoKcf+kaaDHrx3d2sT4jGhSOriDPx5st2BUdi9C16DbNp+x9QNazTvMWKrWm54STzid9zt0nUFZTLmsuT2v/eVC2Ne2Y/j36fVj8EMJ+L5+/sgO7PWNRV6vd+Em+lZEHk/H+c1tZma/0kOzwod+ldMhJLMOFgDQEOsYwQDbL1gIb+21osaol0PL6kGnsfXLJYg0i3RORcCq3xalWTtBx3PxlJgqOmh/lS21VPeKjcnFwxS04/3IK9n+Toz14i2gPLjKAmmgiiC7CFELfHq4McK+slO1LY8l2yvsuex5m9FGk4eLmWQTK2nYKMotjEU9foPZR4UFZtSoy3wTmAMrWJmWCQFk6+KBaA3np1QzkJEB2Vl/FF7TqnG17h9EV/KeZruDhPSBrWUMGUaUYRFNAA5aVn0eiKrcERfOHoMhpKEQC/bchGVLWB7UsbrDAg7Kqn4C63Bw2QS49cUx1Ii3vsAm9rSVqUhQdQbRWVL0wD4VzR6PYfQFMYfRLVl0ExtKxfsGF1kRHVdRWxh9b6z0IorgTraY1lZtFGQWY0m8Jc1hGVhetOSwzFZkNLYc0VySVzW1V1mdbMQ/KyvaSuKQcCRNX4eZvsyE8HSN7U4ur/z22CX27uYAsZg0RGuqbsPgFCTC7+HkPNNTKTnAF8fcw6NkNeKWbC4KWme5YR6kuyOnX9MU6O/1qrK5C1mRr5LltUFq8usjYK7l4/XHJYtb3b/vJLPQ01dQwh18CR/NwpqsMUOXeE3RPWZC/L1+GtlzWdXV1yMnJUXsQz3VVlenuzlCmKz5OVgPkAMzuj0OMKunDf20H0SZV6blQGux7G28+JeHC79fLHYunRIEclkqH/2fvO8DaOLa2Eyd2ernJl3uTmy9/vptip/fcm3pvyk1vbonjCq40d1xw7zUugI2NDdhgG7DBDdxwj3u3sQ22KcYgOhK9CCHB+z9n1iskUFlJKyHBzvMs2p2dOTNzZtmdeefMe3JnTmJjQXL4Ss60spNKQRy0R72DkdrTC9d6DMOAexsdi9HcZ/IzEbj44xgc6LwQW2ck4tTGW8i8VAxXdq4lz6xk7Vg34gymf5ig12aPR2Iw94t9jJ/3fJwMlcW1uip02PnP73O0Fz0+M0wpYI+KEP1F3zsiydebXuDnWQTKetyx0SWOKRIoq9eHhi4kUNaQVlpJnCuAsqnuI9hKIHmulYJhDaSdKWRbGIiyYPJ7zmvl0JSuoLxIabhBVsbSYMX3+Ti29WXz1Eta/Kg4fA6z8iue1sVKyVI2MTXADxYkUNa4VsnbdvYoT5B1qxhBlS1jFlZF4SGWiavXQLHIF/Ip7tCUl1iWV+TUZA1LVrEExhKwcP64CWsx4o9dN/g2f+y3UCvEXfwRuWlaceHLL6DTfQEMkB3z6jSUZBdo77Wlk/z8AraFWNdizdYtxRIo2/wJqiutQLLnPGZRVbTnZPMEZmJ4B1/dX19pJqXlt+e9vIotrk782wqQBa1uyE/Nw+dPLmL/J2FjHDcB1q2DtedV11LYmLYg2rrdTIrtsQykUd5Ms6gKoUvOmV3Myp48CeRMqE7uvNud+UY3BVQp3pylLC3q6HLOGpLBy+d/KY0xLuvq6mokJyebPHgHgxIoy2vUtX8zUorh674bL92/DG8/sRKLphxDicI27tOgeWfw2iPL2P/nqw8th/90zrpVmXadoy3wdNNTmqqggAGyZKxUk53H5jr5aeUgQDJ+9kWc/nkyTn43ET6PRulZ1hJgSw7G5ny2j1ma7lqUjAvxMuSllKFe4yTmpnotNX5B9c04r2AWwit6H8PYjvF6bR39j+0I/O0Idi9JZnQPBGjbO+TnV7JvElk/Oyos/PYga3fg70f0iuTnWSGeBzDkjmiXOCa/tp3x/ldU6H/v9RrWxi8kULYVPwAuAcr2JAdf3kBty6x8OXv3J+7MvU0DEIm5Xzkvz5ouXcHynuLTFRyNSGcrp55/iUXSwbxm3VZy2+lX2ebmWyKbJZYi7KoBfrAggbKG1VxXXIxs7/4o3hZjOIGlsQ0NyJ05Edm+PiBLK0tC+Y71bEGj5upZS7KJnvbYvlsg3lgCZL9/Z51JR1eaknxUh/zA8ceuGwRonMcpmTHFlBYr8c2bEWzrW6f7A7FuzCYG3GQttRBEN1aAFA8JlDX8EKgrqnFt+CIGzNKWV0vCLy+vsMnBl7my/D9Yy8Y3xDVLnLO6oSA9D18+tYi9E1YOjdS95fTn2f6rkdZvOFRFCovrWq+sQc5ob+QtnCUoL1ne9f5vLOunlx9cZnIxqyqR4zHPXer8NC+G+GMNxfFKIitYAmR1F3p0zwl8NRRMyTSUvmmcRF/QVCOt4zo3qxxThu5nNEq0SDx9xAHk59gGJtEuIH6c8/qjQcjycmcLMCXx+v5B0gaMYuODnGXNubfT565F4s9jUHn9FlN0aV4Nkg/n49DqVGzwPcd2Evq9tgMD79e3rnW/OxoEZJLFKVEDxM+/itOxt5CZWOwyDpKJZzdxTw7IKGfBNwfg9Xgj7cGAezZi6vu7Ee5zBsfWp6Pwpm19Zewp7nhfIHvXZt0sNZZE1PiaSg363RGFpk69+XmWBMqKqu4WFyaBsi3eBfargLODskRdkNLLi3187KcF15V8etNNtm2BKAuCeh51yoZUl6sx+nn70RWQZ9JV/U+wlcIp7+6CQmYYdKpNOs+cfikmS9ayLf2g8IMFCZQ13BOKjeuRPXQgNFWVhhNYGEsUCNmebqg4ZXqrf1OxtRnXGSBbEum4Vf+mdaBr2tLH0xUs8NO3BmiaXpV2GspQ4o/9EJUJjnO40LQellzz1rHEHUuAc/lth4epfYaCdopIQRwNSKCscT1qqpXMKQxxEGau1AcAjOXiHHz5491H/Y0lESV+9XeRcG8XCd9HQ5B5KldPpiJbgR+e/cPlgNm64hKk9h+JzDnW6a507y72Tq+6ZJqbNiezAm8/wW2P/uQfoSa5t3nFynw8XMLhFw+y6oKpdK5rCcu3ydgvpW/q6KtpWiFpmubRvZZAWV1ttL5zspKdP+EI3nx8BV5+YBnG9N8Nsqa1JYwdmICYH4ax//Fr7gOxL66Rei1n2Ro2J6b3R9NQtO80W1zL2SCM9kqRXcWMWA6svIH1o84y/tZxL8djwD3RelanZGHr89fNmP7BHgT1OobYKZdwJDwNN44XoKzANivhpm0Q+zo/tRxktBPmeQo0R+zfoRGM9n5iMxZ+d5BRPFzemwuiv7M1uH/P8Q9/+1a4raIE5x/+9Ga2eJl0IF+bh59nSaCsViWt4kQCZVtFNxpuhLODsml9h7OPT8qwSYYb0IZjd/ons9Ux4pJZN+qcU2oi+XCB9uM+7OktEJuuoCC9gnnqpAHDGq9TIC46U0Expx8DmeSz+5pKJt2zswb4wYIEyjZXdH0VxxlYtD6s+U0rYshjd/bwwchbNNei3PXKashnekA+2wsNteLSjAitCNEVfPHyGga40JY+k3QFAKoOhzEwlkDZ2mTxrfGF1ltoOgJfv3t7HbOqIMoCAmd1Q9bC5ez7V3bSer5PXXlt/VwCZU0/AQ2qOqRMCGKTerK2ghlP4zP6xrD/Tfq1d4j4bTMG3L0eIx4OQ+LmZL3iyovKtcCs/8AIvXvOfME7/So9afn4rUGt5pw2ThlrlOd7Z+wNcFZbARjZd5dgVeQFB3PWefsss5oWXICICYnShAdVeb5YXZoTAlTJGpZ+DYWmgKs9uKwlUNaQ5ltfXEV5LZbPOYX3/76K8c6O6LMLmenWWUsqM9IYjYjMox9ef4Djz//q1XDcPJbE+Vjp5Q2iMNANyjw5EruOZ4trWu423QQWnJPjLDJwYRa2ISmMq3VZjyPM0pSATJpz6R6DHtgEAnMJ4KS5GNEikJXtrYvFqC4Th4LLguqbTFpXq2Fg8q5FSQjo/idzis23xa1dFMa9FI+V/Y5h/4obzEq4wcx3sGlhajXwfAd/9gw0vWevawJjyTiLwFk+8POs1Z4HMPiOaJc4JPoCvveM/0qgrHHduPwdZwdlUyTqAoPP2KZJicxClgBZOnfGEDvlIvfRviMSy3qIb8V7cYcMgx/cxLbgnNuaJVgFxZO7QDG+G5SXLbMaFFyAlNCsBvjBggTKNldVMfEFevdHnVx/q27zlMJiCoOWMKvbumLLtskWh8yFfPzvqMvOEFaQyKl06Qq+fiMc5eWmgeGKqOFQR/yL0RYQfYGzh8jViSCaArKO/fr1tSD6gqaBtjan9vLGzdHTm96Srq3QgATKClCaph5s++tPvkidGoyGOn0nW7oS3n00QFQHX7qyDZ1vG5mAQe3Xwef+tTgcqM9/S8Dsz89xVAbzejbf0mtIXovHkdOvMTOQ5jEOBIhbGspPHmPgadmRg82yEiD0QvsABsoSOGtJ4Bx+uSFr7BhLsrVYWuKJ5WkIdAFZqhBd072m8Xxlm4Ky9uCylkBZXttt41dZo8bKBWfw3pPB6HRfIOOfzb5VZlHjZV7uIEC2eOtGFBVUosvHUWyskPSbD+OSzQlrwqOtqcc1n4W40mMi6orLLSrLmsRkUUqOwwh43bkwCaGDT2Lef/cznx66lqg82Em0chPf3IklvxwGOepKCLjGuGzJD4iqxv5cr+baWCFX4ty2LESNPcf4dmluydedAOdZn+5l1A/UXiGWwa88vIy9f08ccpwvA6IvIBoDzW3uXH6eRaDsoDuiXeKYJHHKmntUIYGyZlXkugmcGZQtO36WURek9PJ2XQXboebEzUoOvejlS9ayzhbUqnpMensn+6C53R2Fk5vEBXWI3J0+6vTBHNspHrk3LBvsVO4mjsxfUTKls7Oprs3Uhx8sSKCsfpcTV2D2SE8UrQnWv2HlVdWl85zF0+54iyRUHtnJLMorDrWMZ3NduoIZow6brLumohhVIb9w/LEbPIH6lh/gm6owWcd+/y5nHfvifQEIWWyaqzd92ETQN7C+ujloa6oc6V5zDUigbHOdGIxpaMCtZZuYxewNX38QtUHTcPVoBgMJiFPWkWHXtMPwuDccHveEg851Q015Nbp35IDZyT+J73hMtyyxzmvSMtjCS37EJqtE5s6azLjCG+o4UJd2FxBNAdG9EG0B0RdYE2QT/VzG4Zc17XNkHgmUdaS2naes6qo6BM46yZyBkVOwCR77kCszD5jm/TGLjdtkI730GnN59Hz2rjjTeSjjnV0x/7T2ftbqbex9XXL6qjaupU7IslSeVcmsbI+sTWP8riv7HsOsTxMw8tltIO5aHvDkf8n6dtLbuxhoGz70NMiK9XTMLaSflaOs0PH0CGQpLLtSgoOrUhg93vhX4pkDab6+w/93K/y7/sksgonCgWj0dIPfkN3sHfzxPxy3QLi81xGm1wXfHWBV4edZBMoOvCPaJY6JEiir+xgZPJdAWYNqaR2RzgzKpvTjqAtSR0pWQvzTtsr9uBaQPbLeMs+7vAx7/mYllmDQ7RVG779uRklOtajFEWH9tH/tYR+epZ0PW73CqpjxK8eVGTha1PpJwoRpgB8sSKCsvr5KdmxDtpe7KFayDOD19UHO1PEAeXoRGMgyVj6+JxTBMwTmEC8ZAZafdQxjg1lySHPysMyk8DrZVShDP2eUBVUHxAGyTRZo482VC06DaAoIMCFaBrKAMReKdh1gE7HsQMcN7s3VyVXvS6CsZT1HvITEMZvsNR/qcv1ntcsrnIOvM7uvWSZUhNSnQy8xa1mymo0ZslNPoqpKqQVmx36zXO+es17kBkcgtbcPanOaOyg1V+eaG9e4hbcd23DpdB5eeXAZo0P5/fNNlrz2mxVTcfYck5vrbx3nbTOBbThCAmXbcOcDqCirxeKpx/HmYyvwyoPLmXMweYHhuRFHW9CP/e+B9sHfDpWJV9g4gJxer1t6lP2f0zjivaeCcWz1n+w9TQtprhDIsKboViWSD+XhcGgqYidfwoo+BNruxYhntsLtruag7cD7NmJsx3jM/XIfA0m3TE8EAb4kgxx2kUx7h9oqNa7uz8XWmZfxx/cHoUvjQNbBU97TdyJGFAbUR44KGg3YDlr3u6JZkfw8SwJlHdUDjilHAmUdo+cWKcWpQdme3mybRosoxgkL9f/1T61Tr3NxwrfrO6optLJJfDzEa/PHD82309laj6SDefD+n82MpH2Pv40TwZoqKCZ2hcKvK2oynM/a2FZdOXt+frAggbKNPdVQp2JWsoWrxQES5JHhbGBfmyncUp3xyM72gnzGYNRX64MwjTW1z9mhXTfx0gOBbBD75StrzTqkqToRDdWaj6AM+Y/T88dePleAD55ZxdpGbQxdahmHZGrfYUh1H24fxbchqRIoa3lnF+w8xib8SYNmo7aQc16jrFIx2oL3/tJygB3xyhK/bP+7NmBtN30wgoDZHi9zFrOuAMxqKquRNngMbk2eb3kHASjwX4CbXoPwzsNL8EIHfwTMPGGVnKaZXMXhV9N6O9u1BMo6W4+0TH3KSpSYO/5PvP5oEF55aBlmjj4EeaG+Y2KZN0dboNilv7uJFm0IkFVs5xx40Tr7aPcEvPvgUhz9eiz2fjsROWklLdMwkUvlQdtrf+YzB10EgoYMOon5Xx9gvLW61AK85SrNPYf9fQsz2gn89Qg2jD6LhECOIiHrcgkIULVHIED42Pp0hPucYaCsLnXD23fTwmUAJv+yhzlTs1cddNs1+kXOqfah0Bvg51kSKKurIdc/l0BZ1+9Doy1wVlC2/MBRBsjSR0gKAA/IEofs1QP63oedQT9zPt/PLHjd7orCoZAUUatE20hoVZRWT2nLSMZ5y7gxjVWmOHwuozEontrFWBIp3k4a4AcLEijbqOCSPTsYiKoqsNxaqlEKd6a8mc5kETBrSeB5ZFWZqZZksyktTS7cf9jKBq8EKJijK6DCKmLGQx3xAapDf4KmXBzuXZsaYSSzUqlGv++2MKCELCb6fbMZFGdpkC0JZlYyigPic3NbWhdXTi+Bstb1XvHRS0jsPBZX+kxFTVY+Jv4WyRYY5g9udCpinWTbcmWeysWYx1bBvV0kVn61Xk9YbXUt+rxOIGUARn4WCEudtegJc8BF8aHj7H+82Ir/8XE/r0WWhxsC/j0GZ4/miFbb/LBQ7jsSv0M0mW1RkATKtsVeN95mAmJnjDrIgFkCaAmoJcBWS1swWp+2IGPsLPZuSB86UV9oQwOSRvrj3I9j8Okji5ljKZ/fd0KlEr4zSl+g61xVlagYp+357VmMn3b9qLPMaRftpCRwlhkINXFGNuThGObEi6xtg92OMwtdoidI3J0D2dUSURySkROxlBOFjH5h8GucI8z37lrBdnfSHHbC6zsYwEwWwjnXrHMCZ6qX0k4XMmpDr8djtKDsKs8DGHBHtEscEyT6AlPdy+5JoKxZFbluAmcFZVP7+HAfId/ZrqtckWr+xw+chSzxyF4/XiiSVHHEFGVWgl7+tFrp+egm5KVax19mrDZVpSrM+Wwvk0+/dC1mKJ7WlQNmQySKDDH1ak6WBMrqa4j4AHNGe6Ngpe1bnZisib7I8RuJemVzLkj9khuvKo/v4Xhk929pjLTzWZ6sHO8+GcyAk5cfDMSRhFumS1RVoTK0O3PoVR7pAzQ47+Rj3YqLWsvffz69ChdOWg+WqEvLkdrLCzeHTTKtH+muSQ1IoKxJ9Zi8WXbxBhK7jmOOZH5+aiFevMffIVtGTVYKgCKrDH5PBLMdOoEf6y9CqVV1WmDW+6MApwdmyVKWLGbJclZIIOeAvAV+xA9jIPMagLpCfY/sQuQYS8M5/HKHbPRIY0mkeAEakEBZAUpqg0mIwmCyz35GafDrCwsh82xOW6A4dIzNhVN6+zTTUE4kRy9DuxloMYZ/F7z0wDKELrFsN04z4S4ewVvbXj9agOMbbiJ+/lVmzbr450OY8u4u+Pxts0Hglqxwx70Uj7lf7MPKfscQM+kiDqy8gUu7shnHrKVz0Bfa+4OOs1symaMwomggx2G8hS85QCMLYDI8ImoEMaxpBz6wke2qzc2S48qVKwj2PID+d0S7xOEngbJm//MkUNasilw3gdOCsr28JOoCALO/4CxQyalXdrJlDq3s/VT+uSZNy/0z+997RS+OLGLJMpZWPGOnXAJZzIodNEUyKCZ0RfHErkCNc+lX7LY6kzwJlNXvjdJ9uzkr2RzTHKr6uQxfKTauZ7JqUq4bTmAgti4vC0V+vRzKI7svLh2d7ufoCr56NRwEMJgKdbkpqAn5kuOPPRxmKmmL3ku5WoRPnwthQDPxx4q1lfim7zQ2OVMpWscWxZboJAmUtU3rlddv4WLX8Tjz3RiM/2CJbcJEzF1RWIGJT3LWSIvfCtGTTMCs+ztL2f+jswOzxCmb2ncoclZG6LXB0AWBMAS+0PbYvt/Gok4hh8xnIAqCAw0ltzoue/o07tuUZfu3yepKuHhGCZR18Q60c/XJ+RdZuss83DDtgynMOVhlBWeAktrLm333Sw8c06tFRdJNJP48Bulz1ujFExhL7wXaIfDPp4Nx4qDzUd3pVbgFLwi4LcyowPUj+YyCIG7eFazxOgUCbie/Yxy4JVB1zAtxzHHZ8t+PMqqE3UuScWrTLZDTL3lmJTRqbsJKfUB9ETSnkVKGdm1kXirGvqDrWNn3OHNYzYO0vDVt6OCTOBKehvw0847hmqpw/SjOEXa471EtKOt+RxRc4fB7bRurc0WFuAZeTXXkytcSKOvKvWem7s4IyvLUBaltnLpg2od7GSUAWcjmZwiznDDT3aLd9u9ymFvpaxeF3UuSRJPLC9qzNJlxx9IqInHJ2jMoAkYwC8Hiad3sWYwkW0cDEijbqAyybM0eMxT5gYsaI60842kLitYJBy0bVErI5/o4lEd22vADt+kKAjBnrL4HdUNNr76wA6qwT6AM/TdUaY0ehw2lbak4tboeXt3j2AD8hfYB6PpJlFleXEvqWnb6ApucZc613ZraknJbU1oJlLW9N3t3XILDX43FpV/GgGgNnCVoatWY+nQQG5cseHmVXrU0dRoM+SfndMXrwwDUa5zXwj5/w2b2f1513bgjV3IYSFQvdNA5HxQxkQxAVWak81E2/9akpCLbox+y5861WVZbFSCBsm2154W1m6ctyBzpBV/3Peh0XyDeezIYV3qPYu+CjHH6O0bJ6eKV3lNAPN8aZW2zQmgsMqLPLrxwTwCz0vzp/Q3Iy7Ec3GsmuA1GELhKTsluHCvAqY23sGtRMtaNOAPirZ35cQJG/d82DLinuWMyMiYiR2B9/28jG+u+dF8gNk9LxKHVqczqlnhuK4sb+44scC/uzMZGv/OY89k+6PLmkpxFPx5C3NwrIJ7dulrz3y8CeRd22SOBsq3wmZVA2VbYqXyTnBGUTblNXXBr6kK+mm3ud9LbuxkvDAGycpnzWHCWFlRj2FOb2cRn8MMxjIdHzM6hrRtLO3OAL20xUcj0SfDFLEtXVvGULozGoGT9H7rR0rmdNCCBso2KLTu0j02kLXHI1Zi78cxa2oKStX9APq4HHMEjW16qwr9fCGPA5asPLxe0pb8ibibqwj9AdcgP0JTkNzbYic62rLuq9Yb81hMrcGyfGRoGK+ue2n8U89Juk1t1K8tuDdkkUNa2XiySleLFDgH48ZklSOo/kzkAK0o4ZZtQEXPTBHr6MxwwO+PZIK21EhVBQCwBsmS15MzAbIOqDunefrg5aipgADwmXmqyjiVruKb8sfXVVcgZ5YW8+TNE1CogGzEUWZ79Ib13rFOrBMpap7e2kKs6KakZbUFGSjGieyxku0WTe/hgTcD5RlU0NCBl3DIkdhmH6lumDVYIiCVAlrbPv3hPACZ47m+UI52JqoEKuZJZv17cIcP+FTcY7QHx1s7/aj9okf75Dv5aygLeKpZ+CdAlYHfGRwkI6PYnwoeeBlnskpXsgVUpiJl8EYHdj7A0fL7+7aMZBQM5FzseeRPyrOZOeSe/vRMLO0ugrKid7CTCJFDWSTrCHtVwRlA2tacXWx20R3tdQebYV+IZPxpRFjgTIHtyUwbc20cz692p/9yFerX51TpL9C27UoLR/9jOPlzhQ89YktXmtDVpl6GY0A2KiV1QV2h6oGNzYZIALQF9W3f0xYDU8SOY92xbHwveSsoS2oLKE3uZlXj53hhbizdIhBDdAAAgAElEQVSb/9Cum1qO1e/fWWfe4ZVGhYo1v0O97gNUrPMgVMVsGY5OIMsow5evrMXz7f3R8d5ATB1m30lPTvA69m0siIlzdFNbRXkSKGtbN3p/uYaBmmFTE1BXUoFkr/kMmM2NSrBNsMi5Zz7HURmQ5SxZ0PLBVYDZiotX2P950ZZdfNWZ1T3PGfnRs6uN0r2UJuxki3yVl3SAHK0U606KNm5iMgsio6wT0MZzSaBsG38ATDRf5uXOaAsUu+K1qSqvpYCcXNMxtTvnVPGT50KxOSIJ2RE72Tu3YIdwp5+0SPzm40Hs3f36X4JAYzEpOE4Dn3XiDBGG/r4D+anlSD6Uh6MR6czylYDVJb8cxtT3d2P401vhfndzq1sCYwc/tAmjn9uO8a/swNhOccw4SjctceQS7QJZ8qadKmLl6IKybndGwRWO8RJ9gdkHUwJlzarIdRM4GyiriI1jq4PEo9MWAwGyZB1LL+EyeZ3TqGBFn2Paem2fc1n0eu1ddp2tGA68byPbIiJ6AQIEKpb7MoBKIdEYCNCWbUkkS1lOf6UHErjtpjeNb1UVomlGW+DlDktoC7Q8ssunwC6EzToV16Ur+GPycZ07hk/VBTdRs/prjj/2QLDhRC0YW18PjHZPYNYnZIXywzsRKMhrbq0gehVVaqT08kGax1jRRbcFgRIoa1svv3yfP+jgg6ZaiRu+/gwkuLVsk93fI3y5Qn7/eG0VG0cR1yxxzvKBgNnh/+a4rMlilqgNnDFkL12FtH7DUZtfhEun85glPlnIDvxpm8nqNqjVyBk3HLnT/MTrj/p6yDz6I2t42xyXm1S4gJsSKCtASW0wSc5sjq8521ffiVdKn6FsHpy7ZiPTyvUrRej7TSx+eXIhLv3oi1PDllulLVo0fvFeojQIQOcPo0A7l6Rgfw1cOp/HFu5ffnCZoMJK82qQflaO89uzmNVt7ORLWD3gBBZ+ewAT39zJnJTxVrP8b987ItnuWv6afnlQdqXnAYNWurppneV8nATKmn1GJFDWrIpcN4GzgbIpfThSc9kS55uI27uXGwHZSFSXOQcgW1mswvBntrIX+qD7NyL9jFxUNdRU1DGuHPogkMdLWkVsyVAytbNEY+CADpBAWYDnki2wkUvWGtoCnke2aNpA1FfZ73+OBv2fdbSMrqD63HbGH1sb9imU14444Gm0rIi921Px2iPLtVYndO3IkDFxHrOiqzbBOenI+rhSWRIoa31vkXUsbf0na1nd0FCnRurUYAbMps0Oc6ot7kveD2W7jvyeCIYiq5EGihyt8MDswPeWOiUwq6moRNrA0TjnOYNb/Ongj7CAC7qqN3pefuIoW+wrO3LIaBpLb2TPn89Z4F65YmnWNp9eAmXb/CPQTAGV588z2gKZpxugbrTmvzlmBvu+p3v56eWpKynHxe4Tcfg7P7x631L0+GwTEs9aTudEi8ffvb2OUaB0vC8QC/ycb4yl1/BWctHxXo7CoLKysa9taRp9w4pzqpB+poiBt+Q0LGbSRQR0PwLfF7kdp7qgbN87o+AKx1gJlDX7WEigrFkVuW4CZwNlibogpaeX6yrUypo7IyCbfLgA7h24rRR+b+yASikuXcGti8UY+f+2McA3ZOBJQeTlVqpXcDblrRSJxkCwtqxPKIGyAL/NtDbLNv5RRWwUmyxbQltQHDaf8cjWpidb34lmcurSFdAkQKk0PxitiBkPdcQHqAn5CupC2/RipnoW36bJDNEu8PxsZCnbEoHAWPpO3po8vyWKd+kyJVDW+u77+K8BjE+WeGWbhfoGpM9dy4DZG37LDTqfaZbHQRHLP4uA252RGPvYKsguNlIT0aTW97/c4oqzArNhbsEMoBnScXYz/lhz6iNLWbKYpUU7MYIqP59ts5ZNmyqGuDYlQwJl21R3C2qszNOdOdDTXTiR7zzA5r+pvb0BjY4Ff30Dro9aisTOY1GVlo1tkcn4z4vcYrfXr/G4lVoiqEzdRPGbrmsXl9/920pB/P66+aVzyzTw8/vr2aLm71/ajyqsplLD6A2I+pCOwL77maMvspR1BUCW6iiBsuafKwmUNa8jl03hTKAsoy7o5Y2U3m0LlHVGQDZ63AXtdgc6FzsQ703/Dhsx6IFNOB3rXOCLRGMgdm83l9fWQVlm3TraCwVBS5srx4IYAnSzibYgIlRwropD2xlNR8W+WMF5LE1oKV0Bya8M7cz4YyvX/I56pWMc/Alt1+Sh+xlnLHHHEocsccm2ZEgbPIbRGEBlHuhuyXo6W9kSKGtdj6RfymFbXr961vT2y6yQbQyYveazEOpy5/kfDvkxCu7tNmD0IyFI/TNDTwnOCMyqVPX4+vW1bBK/83tfpAz0haayWq/e5i6qk66wxbqSnabpDszJ0b2f5TuKAbMNNTW60dK5GQ1IoKwZBbWx29njhrH/zdyJo7Qt15SVIZV4ZHt5oexcojaeTmRr4tl7tSC+kUdWpdIgzP883n9qFV66fxkmeu6FvMCydy7RMI3su4u9Z2hs0/frzSgvV+qVLV2Io4H8/Eq2oE++B+wRFv18SDtnH3DfRpzbmqX13bHC8wD63BnlEscYyVLW7OMhgbJmVeS6CZwJlL3RayizCsgLiXRdhVpYc2cDZMkalqxiiU6AvEKStayYoapUhQXfcPw2k97aicKbjVxvYpZjq6ziqV04GoM1s20VJeU3oIG2DsqW7IpjYKoqN8eAdoRFEbCbO3UccvxGol4pbCCtTL3KLGSLV80SVoiFqXTpCl55cJkg64u63BRUh/yXA2S3TLawRPsmJwcZbz2xgk1aqD1b1l21b4ECpedv3M6+lTmrNwjMISUjDUigrHXPQa93g9n/wKHoi2YFFMQdYQBC0sDZqM1XmE3vqATrem7BgLvXY/hDYbgQo79DQBeYVavEsSy1tl3pKSV48zHOKU+Xj6OgzM5Dap+hyA2OsFhkwdL5yB7hAU2lOHzXij0cB3reqtUW16UtZ5BA2bbc+/ptL4nfzFmce7rr3UgbMIp907MW6C98lZ5NZu9TRg2jl4O7qCivxcJJR5nV6+uPBmHx1OOoqrSMK5beOZ93WsMoDTrdH4jQpecMlCRF2aqBTvcRn68/CKAVK+xclAy3uzg/NP3aRSFm8iWtaH6eFeS5H73vjHSJY8xrW5l1b0WFc2IDWuW24IkEyrag8u1dtDOBsuRpMrVX27GSdTZAlvhiiTeWAFnika0uF9cK68bxAuZdkuSHDz0NjbrB3o+31fI5GoOuUEzoCo28ccuj1QKljHoa4AcLtbW1evFt4YIA1JzRXihcbZ2zBl5His3RFtEWqEsVkE9xh2L+cNQrxbd00qUr+PatCFQKmBhUX9jB+GPrwj9A9XHn8exN4HLnjyLZAJp4ND26xUGtFpe+he9Hq37r65Ha2wep/RstbayS08YySaCs5R1er2nAi/f4480HGx18mZNSciIRl7uMw5VeU1B9K9dccofdj/HciYHt18PngTU4uUofYOaB2X5vLUFLAbN7tt7QWuQT0MKH/PWbGWBTZSGPdK0siy3+yaPX8aJs/pV5DkCW9xCb5bQlARIo25Z620RblZXI9nAD8chW30jSJpT5h7D/7zT3Edo4OlHmyXGlx0QkDZoNcqpoKhTlV2GCxz50ui8Q7/99FdYGXrB4zBIdegXkjIrGPJ8+F4qUq0WmipTuWaiBft/GMN1+//Z6C3M2T550MJ/tNGWOwe+IxLwv9jdLxM+zJFC2mWpcOkICZV26+0xX3llAWbKOTSXqgl5tw7urswGyuxYlcVsf7ohEUK/GyYDpp0fY3YYGYOuMRLjfHQ2PR2OQuNt660BhJYqTqjh0OrOWJatZKYirAX6w0BZB2eK4LWyiXFdouZMGvhcspS0gj9yKxWNQNLEP1EXiLzLwW+BoMP/H5ON8NU3+VmydCnXEh6gN+wTVl/aaTOuom7Sdb+zABLxIFg1OPjHJnL2UfTPLzohPL+MofTu6HAmUtVzjcwZsYf8LE3+zbAdTRdJNXPl9Ei7/OgHliSmWF2ynHFtH7cOg9hHwuDcce+foO7lpSWCWQFjaQkzbWwmc1Q3kTC192CTcHDEF0Fi2OFQYFoxs7wGokxfqirT6PDdwGVsMLDt+wmoZbS2jBMq2tR433F7Z0MHsf0eXtqr68nVu7tvTC6qCRkfK9D+f7DUfiV3HoyZL+FiR+GU9um1n7+zPOq1BXPQ10BxMaCDqlEG/bGP5aQzk/esOi8FdoWW1tXTkz+35Dv544R7rKQyKc2sw/H+3MgeWfe+IhO/z21FWZNjIgp9nESjb685Ilzh8JUtZs/8WEihrVkWum8BZQFkiNidQti1QF/g+Fwe2unVnJKrLWnarHIEQs/+9l73g3e6OwslN+nxrtj7Zpfk1mPVpAgN8p76/m3mLtFWmI/MXT+vK+DcV/iMdWWyrL4sfLLQ1ULa+uoptJy1as8rqPma0BZPHWERbUBIZyJ7jmqtnrS7XUEZ5UTU+fDaEDeBffXi5ILoCqKpQGdqd0RVUh3yLunxx3zmG6ikkLnTJObz8AGcl8vojyxG5Wp/XTYgMR6ZR5RWwb+bN4c5F+eBIHVhalgTKWqox4K2H/PFiB38oqyzbEkslKXOKcNV9JnNQIz983vLC7ZQjfsJBeNwTgSEdIhDnq78gNOF7jq7E/e0l0NTpONuxU11I7K//iWZbh2n7MW0lNhQqk26w//eCjdsN3TYapy4rQ/bQQShYtthoGktuqMvKOWu/MaMtydam00qgbJvuftb4wtAVzLGXzGdgozI0GqT09gHtEi3aursxHkD6vHBGW1B8tHE7ul4CMxeJZ/PR7ZNoNjb7/u11OHkoy0wO/duXzxXgo2dXsfzORN2kX0vXu3rloWWMn/3SecuMIzQqDab9azcIiCX8wOORGKSdNr3Qxs+zJFDW9Z4TUzWWQFlT2nHxe04Dyvb0ahPUBc4EyBZlVsLz0U0MMPV6PAYlOZY5kjD36JNFrNfjm+F2VzRiJl0EbYN0uVBTBsWkLpD7dUPlmUMuV31nrTA/WGhroGzx1hhk+wxAnaLRIsLSPipaF8bRFqQJsz6rPLabAbLlO2zfMqVbV7LmIv6x59sH4Od/RUKpNE93Upd9DTUhXzJAtiJiAKBp2UUpas/e7akg78NkFfLSA4GY7funbjOd+jx9xGQG1BBAKwXzGpBAWfM60k2xM/Q0+7/47Y1g3WiLzlUl5SDHX4k/+YL4Zp0lHFx8Ap73hmPA3esQPWiHXrV4i9nB7y9FvYWWqXqCzFzQotY/n+aAj0+fDzX7Ds1ZFsb4ZWtzhVvOURVK4reyb0b19cYt02aqZvK2bMpkxoupkslMppNuchqQQNm2/SQoM9LY/1+2Rz+o5Y1jv7Shk9j3O32k/sIqz8uduWKzzYrbH5+Or1+PYO9x9x+24OaNYotkrlxwGsSFSlb8X70W3uJOTi2qvBMm9h2wh/XFv18ME1y7MM9T6Hsnxxvr3j4aB1enCsrLz7MIlO15Z6RLHKMlS1mzfSuBsmZV5LoJnAGUlS0JZh8mspRtzWFcx3insZA9tj6dkYPTitv8r5pz0djSD2qVBhHDznDctE9vBXHJunIoj1sF+bhfUTylsys3w6nqzg8W2hIoq6mqZBZL8shwq/uiOukyG9wrNglz8FSblQb5+J5QBE2DRXvYzNSQtrS90D4AL94TgOCFZ8yk5m5XnYiGKuxj1IV/iMoE67dvCSpMQCKyBPmsYxibbFA7fH6LB23dc6VA1AX03cycvsiVqt1idZVAWctU//nTgez/PP2SbZRDGmUtbvgtZ8Bs1uqtllXCjqmPBZ+D9/1r0f+uDVjbbZNeSTww6/VRABrqxV9QpvcPWebTopZX9zi9so1daKqqkTZ4DG5NnGfZ+1xdh+yxw5A7dbxl+YxUpPLKVWb1lz1rppEUUrSuBiRQVlcbbe9c5u0OmUc/FMU0LoznR3A80Sl9hgKaRov8ypRMtrPg+qglAG1lFCHU1zcgclUi3v97MOOcneyzHyUKw1veDRVXWa5Cj882sXcVjZVmjT5sKJkUJ1ADjMKgQ4DZ1AS+EghLflgIlCVw1pLAz7OWe+7D73ducIljlATKmu1iCZQ1qyLXTeAMoGwKWcn29IIiVtjA1BW1Pf71HU4DyAZ0O8Lq4tYuCnuXXxdVnYU3K+D32g72EVn04yFUlVq+5VHUCokkTD6rJ7M2lM/8XSSJbVsMP1hoS6CsnCxcRwyx2hO2urwMOaO9kTvND0RhYC7UV5RCPmMw5LM8UF9TZS65oPsFeZX45/9yll1vPLYC1y8LcwRRETMe6ogPoAz9N5RXW9biPC+nHL98GMnA2Bc6+LOtw0UF4nnDFaRIERPxXpuhMm+pLGKxLilKAmWFdxsBsbTw8u8nRVpAqa/HzfkRjZ7ERQIchLfIcMqTay9g6ANhcG8XiZVfNYImlJoHZkd+JpIObldh24ZkvHBPAF7sEACiTbEklBw9zRZiinbo0y6Yk1Fx6jhb0Cs7LM4ifNaIYZB5uKOhRji4Y66OrfW+BMq21p413668GRPY/53Mt9HoSJmWwSgLiLaAzvmgLq/Clb7TcLX3VNSViO99vqpShbnj/2TOvN5+YiVClpy3iC/2xMEsEMUK7Sp676lgXDlvmcU+3862/vvGY0EM4N692fBuN6IlGPJIDJunk+HU5Hd3gegLLA38PEsCZS3VnHOnl0BZ5+4fm2rnFKAsOfjq2fjBsqlBTpi5EZCNalEO2cpiFYY9tZkBpoMe3ATZVcPcZdaq8HjkTeYNcuD9G3Fgpb6jCmtlOlM+spQli1mynJWCbRrgBwttBZQlJyvZXu5sG6m1mstbNIdRH6jyBFit1ddD4e8HuV8v1OXesrZIvXyx4Ve129iIA1GtNm/FoakoRmVo59v8sT9AU9Jyg3iiV/DoFsese8k67ctX1rYK78K54ZsYSJMTLJ6Hdb2Ob0UXEigrvDN7vh3MJt9EYSBmkK2JY8AsWc6SBa0zhAsbkzHi4VDGrR/4sf5OBh6YHfvNclGqOm/8ETYhpy3BRxJuWiUzc+YSpPYbDpXcsq3IeXOnIcfXB/U1tlNVKeK2M7Apb+UKq9rQljJJoGxb6u3GtlaeOgaZZz9mVQ7y8kRBo0FqHx/2zSZrWW2ob8CNsYFI/GUMKpKtey9oZZk5kWWUwafHDvZ+//yltdi7Tdh2eBJLa2lDe+5kC0oEzvq66XPhmilaug0gaM4Jpvv3/75aTx/ksIscd/G8scOeikXBzXK9NJZc8POsZZ770OPODS5xjJQsZc12sQTKmlWR6yZoaVCWpy4gsvPWGCa/T8TcUewok5u3brOXDpIPF8C9QzSrx+R3dkEt4jbd2io1VvQ+xsBespLNT7X+I2Kv9oshlzhlFeO7M45Z1JSJIbLNyuAHC20FlC0MWoqcMT6CLFwNPRQlCTvZBLhk7y5Dt5vFlcauYpbdVWfF2Wbm/sNWLV3B2sALzcozFKG6eR7KkP9w/LEbvIB6y1f6Dcm1Jm7GqMOM/5YmEf98OhiHd4sDVFtTF9Hz1NeDOcrsN1x00a1NoATKCutRdZ2GOfd648GlwjJYmKpoz0kk/jyGcc0S56wzhOt70jDykRBul887IXpV4oHZWb/qT6L1Egm4oMUsege9/pcgZKZbP4YgMDbVfSQInLUk1GZmsO+IIibSkmxG02Z5DkSW1yCj96UbnAYkULZtPgnZnm6Me7nmfOPCVvrQiQyQTRs+UU8pWau2ssWqvC0H9eLteXH+ZA46fxDJ3klET3DjqrCdT1QnspJ9568cF/+bjwXh7FEBxgL2bIyLySaOXjooEHvFnM/3s0VBwgsG3h+NC7uybW4RP8+SQFmbVelUAiRQ1qm6Q9zKtDQoS3x4rZW6gADZfrc9JeZnWD8At7XHo8ddYBMN4qWJnXLRVnF6+W9dLMbof2xn8sOHngbxybbmoFg6lIFdxdO6tuZm2r1t/GChLYCy/ES47Ih1g+3a7CxmIZu/cJagfqk6e4g9o6WxtgEIVFhKcpF24E0DcLoWEqoOhjDuWNXaj1B1RN/yTEh+sdJErk7Eqw8vZ5MO+qXr1hgy5wawiZ4iQRwQvjXqiNokgbLCenZ8tw3sf2by79HCMliRquTkFQZCJA2YBWWOaS/SVoi3KsvNEzL4/mU1G8/Mf0X//ckDs/N7CXfQwleivFSldej1Wcc1Zh168flM/Sp2H2T/8yWHT5hK1uxeYcgKZHsPAO3esDXkLV/OgbzxO20V1arzS6Bsq+5eg40ji3QCZfPmTNHez1u1ns13U5vwyBYfvcTRuswM1aZ15Mm2yGR88lwo20U0pv9uyAuEW9JPHrr/9u4jfwz8aZugHVSObJuzlvXek9xOlBGfbke/dpHcHL1dFLbOvixalfl5FoGyv925wSUOyVLWfPdLoKx5HblsCmcBZV1WgUYqPuvfCS0OyJI17MQ3d7KX/YB7okHWsmKGuHlXmGzvJzbjkgiremLWzZ6yiqd1YaCXYukwexbTqmXzg4W2AMrSltHcyWOscrBC3LGUN3uUJ9Ql5req1t68xj2bgfpWGNY8TOTAi5w6EK8kWcoKChoVKiIGMuvYmtAvUHerZUDQY/tu4YNnOO7bTvcHYvrIA4Kq76qJVIoSpPbyQpq3n6s2wSH1lkBZYWp+7f6l6HhPAMhi1p6h6kYmrvSagsu/TURFkn237AptR25SIcY+voqNbWY/H6SXbcL3KxhYPb2LcAqjlKsKvPrQcmYVNeiXbXrybLpoaGAOv8jxl6ZCOCd2XXExczhJuzdsDeqycmYJmDVSGguZ0qUEyprSTuu7R85cZR5uIAdffKhOuo4UMkLq5QVlRqMVZE1WPhK7jkfykHktSudSq9Rg2exTeOMvQYw3NnDWSVCckEBW/58+F8Itfj+0DHu3C6dDECK/NaZZMeoko7H5rB3tzojEoh+sM9owpRt+nkWg7K93bnCJY4REX2CqS9k9CZQ1qyLXTdCSoGzG5AVspT+lT+uiLtAFZAtSW8ZCNiuxBMQbS9axw5/Ziupy8ZzAlObVYM5ne5nsef/dj7LCNubooaYMxZO6MCqDioNbXPefvwVrzg8WWjsoW3HuNLOWqLx43ipt0+CerC2qLpp3BlNXmAv5FHfIZw6BpsL6945KVY/OH0YxEIF4D4lLVkhQF9xEzeqvGSBbGdoNDUrxHVWYq0d6Sgm+fiMcL7T3Z4AyccgSl2xbCDdHTWPc7LVZjRO+ttBuS9oogbLmtRUTcJRNrnu+Kxx4NC/VeIrafAWSh8zF5S7jID9s3XvSuHTr7iiyyjD+iWA2xpn5f0HQqBu0giwBZsmhV8d7A5k+g+ad0coQ66Q2rwCpfYeBaMAsCYptsey7Un09yZJsBtNmT5vKODMrrwj7ThgU0sojJVC2lXewTvOUubmQEW2BpxuUGbedeBGPbC8f9n0u2LRdm1pTrUTSwNm43N0Pyhxhu5C0me10Qlay4wYlsPETWc+SFa3QEDDrJPe+ax+Abp9Go7xcKTRrm0mXcV4Bz8djmdHWO3cHoVP7QFQW22cOzc+zJFC2dT1eEijbuvpTrzUtCcqyVcOeXig/cFSvTq58Mf+bA1oL2VsXzFu22aOte5dfh1u7KFaP5T2PiVrEuW1Z8HgkBmR5u2ux7QN6USvnQGEExhK/LIGzEr+s5YrnBwutGpStr0fuJF/kzZtuuYIAVCddZhPnwrCVZvPXV1dCPssTRRP6oC5fZja9sQQXTuZovet++GwICvKEWWBVn9sOVdgnqAv/AJVbpxkTb7f40mIlev83loEfxNnY5eMo5OU4B1el3RrdRHDZmQtskTNj0rwmd6RLXgMSKMtrwvjvR09w1vHZaY4DCTSVNbgxLpBt4c2NSjBeOQfeKcuvwsS/rWTA7NT/XWkxMMs79HrxvgDsi0u3W82Ltu5i//fl5yzYlaCuQ/bYYcidOt6qHRy6jalJS2PfKdmUybrR0rmOBiRQVkcZrfxU5tWfWcnSgjof0jzGsf/R9NE6Y6OGBqRMXMHeeSWnnG9Bg/hle90eUxHvLPHPCglFBZX45o1wzpnh/csQE95254m6+iLgdfxL8VonXl7/E4NPnlnNxqx+Q+zjLI2fZwV67UP3dutd4hj++hZcuXIFFRWON+rQ7S9nPpdAWWfuHRvr1pKgLPHJpvT0trEFzpN9cec/tU69WgqQnf/VflYHt7uicHLT7VVaEVREzrxW9uWceY1/JR7ZSaUiSHVtEYo/PLit4tMlfllLe5IfLLRmULZ03242WVVmWD4hV5eXIWe0N3LGj0C90rS1QYO6Dgp/P8jH9YDymvWc0XPGHtaCmiP7CnMoRv1eEesHdcSHqA37BDUX7TO4NPZ8qdX1GO2egI73BrBJwOedwnD9suPAJGP1aqn4tEGj2RbJ+mrTz0xL1a+ly5VAWdM9kHQig1mZf/50oOmEdrhbX6fGzfkRDKS4uWg95+bbDuVYIrKmXIXJT61gwOyUv68AXfPBlMVsry9j2PuIHHqR9b5dQ309MsbNQrrHWGiqhHNBlp84yr5P1nKd67ZJNmo4sj3cQNQIUmiuAQmUba6T1hiT7Tea/U9ljxmqbV7OsjUMkE3to0/xIVsTz9512euEj7W0Qh14sj8+HV++spaNDUf02SWYbzZyVSI63b+M7bj69q0IEFjbVsMf3x1i3xDauTrg3micjObm5icOZTN6sFceXmYX1fDzLAmUtYt6W0yoBMq2mOrtX3BLgbLpE+ayD9WNvq2DuoAA2X53RDFA9Ppx2x0oWNrzJTnV8Ho8hr346bcoU7wPYNppOUb93zYmO2L4mVbvzMsS3RdPJX7ZX1Gy3NeSbG0+LT9YaK2gbH1VFbJHeqJw9XKr+jp/yXw2uK9JuW46f0MDikPnscWBikON2+JMZ9K/S05ovnh5DRt0v/TAMhzaJXvfslMAACAASURBVIzbUVOuQGVoZ0ZXUB3yPeryxVsE0q+h4asl047h5QeXsXq/91SwxGMGID9qC/uuZgfoOykyrMG2FyuBsqb7/JeXOc7UnaGN3sJN5xD/bnbETgZW3PBbDtre29JBVVUHspSlCTVZzlYUNlrwNAVmiSrl0+dC2TuJfh1FnaKU5YCcB2UHWuYoiPjOySFRfW2tTWou3sUtQOYuWWKTnNaaWQJlW2vPNrareHMks5Aluik+lJ1LZN9j2hWqymucFxJNS+JPvkid5hiKGL4+1v7S4veagPN492/BbCfV8rmnoBLg1JnoC7p+EsWAR6JxIT8FbSnETL6EfrRr9c4o9hs1rjk9D/lteL6DP9R2YNni51kEynZrt94ljmGSpazZfxEJlDWrItdN0FKg7I2eXswLZWugLlg9+ORtQDYSLQHIntueBbe7OUB43hf7RHsY6zUNiJ18Ce53R8Pnr5uRfChPNNmtRZC6pAiKiV0gH98d1SedY9ulK+iWHyy0VlBWvi6MOVMR4pyraX+V7IpjgGzx1pimt5pdl8VFMEC2JNI6y7Y9W2/gpQc4zsOvXg1HpY4lWLPCdCKUyUegDP031BH/QsUGT6BemEMIHRFWn9J2uLefWMmAj1ceXIbQJeb5dq0uzAUzEjiT0sQqxwWbYZcqS6CscbWWFFTgxQ4BeOthf+OJHHSnaP8ZJHYei2TPeagttLOlqYA2Eafs9GeC2OTa74lgELUBH3hgdtIPK0CWsc+3D0Dfrzfztx32W7ApjgFAFYnCOSBrMzPYt0YRG21zPbO8BkHm0d9mOa1RgATKtsZebWyTWqFAtmc/dtTeuMFuaCorkdLbGym9vKDYvkebuCotm/FnJ3vOR4OqThvvCiflpbWY5L2P8cZ+1mkNyIpWSCDHX68+xC2g//uFUJBjsNYczm3NwsD7opmRFhlrzf3S+Lz8mzfD2VhWVCeQt5XLz7MCvPaha7v1LnFIoKz5/wwJlDWvI5dN0VKgbCoDZV2fumDdqHNaC9mLe3Md/hyEDTnN0RW0i8KuReJx9xRmVGDyO7vYJGTxz4dQVdK4bc/hjXTyAsvi10A+jvhlO0v8sgL7ih8stEZQVpWbg2wvdxTHbxWojcZk1deTWd78BTPNcv1VnTrAANni5ZOt2uo7qHMcs2AgDtY/Jh9vrISZs6qd81EX/iFUaz5C1ZFG3jQz2Wy+TU5z3v87B8Z2ui8QU4ftt1lmaxQgW7KKgTP5kZITwqb9K4GyTTXSeD34P2FscjjTPbYxsgXPyhNTcPm3ibjSeyoIyHCGMPM5jsqAnIDlJjVavo34TwDTXbf/NxuLpwh/l4raJk09MnynI91rvEU0BoWrliF76EDUyRvbY0298kPDGMCbH+64b4I19WyJPBIo2xJad1yZ2d79GSBbGBaiLTRt4Gj2Hc4YO0sbpyopx5U+U3Gl1xTUFrou1UdqsgLdPolm7zzinb15w3xbyNp2wI9bGZ0BWYfSTqfWFrKTS+D1BDnx4ny6jHkxDmVFpp14Zd0s5Zzq3i8+hQE/z/L32ocu7da7xDFUspQ1+28hgbJmVeS6CVoClE33nc0+Vml9XJu6YNOkREbaTS/go+FpDn0IqstVGNsxjoGmg+7fiKxE8axJDoWkYPCDm9hB51Iwr4GShYM5gGxqF/OJpRTgBwutEZTNmz+DccFCbZkVhIZ4ZEd5MQcsZGVhKiivX2Icsop5Q1FfI5xHkGSmJBfhnb9y4OYbj63AlfP5popqvKeqQuWaHrfpCv6LOpl4i0CNhTQ/2xl7A/98ehWbAHS8LxDEd+uobcHNa+P8Merqamahk9Z/pPNX1sE1lEBZwwpX12nQ8R5/dLrXH7RDxllCjSwfV91nIrHreJSeccz7xlzbF7y8io27fP+yGrKLeVi34iIHyD47m/1O79JyW5JrMrIYjUHOCuHAKPHAEihbsMJGC+m6Osg83UEWs44OwatC0KV7D3bs3CWc11yprMWsOfMwdPgolJbqW+9ZK9NQ2yVQ1pBWWkdc3oyJbDFCNtJT26CshUFsjpvab7g2jjizr41YzHYAVN7I1Ma78kn8xmv4+B+heOn+ZZg5+hAqys3ToJw9moM3Hwti78pPnw+FLEP//84V9UFOvMa9HK8FY70ej0XGeYXgphC1A+2wyM83Pe4XLPB2Qn6eRaBs53brXOLweX2z5OjLTEdLoKwZBbny7ZYAZcm5F1nKlh0/67KqSwhMvv0CjgKdOzKkn5Fj4L0b2cRg3KvxUCnrRSmerGHJKpb4b8hKlqxlpSBcA8XTiF/2NxBAKwXTGuAHC60NlK04e4oN0OnXolBfD+L3y/YeAHOOweryZSia0Afyqf2hLrbMuok4vchK4YX2/ujzVSzIekFIqLuViJqQLxkgWxHuhnpl4/ZdIfmtSUNb3j54ZhUbrJIH82G9dqCyUrLYF6LLzOmL2KSw+EALWe0JqWQLpJFAWcNKn/w7Z/U07GvhYJ5hSeLHknXZteGLkPjLGORvOyx+AVZIXPxWCBsnjX50NT59MACvPrQcKVcVIECWdh4QpUFLhYLobex/3xIaA8X2WPbdMsthbqZROYsXMzny+HgzKcW7TSAsAasEsBKwSgCrUGCW0hGY2xSUtUWmoZZJoKwhrbh+XPn+vczBncyzn7Yx8ri9SO3J0RZoihsBx5sLOCeG8v2ti1e1VqnBoikcv//7fw/GxrDLaBCwrje050680MGfjUeD5rmuThZ8s599C5o68dI+EAJOun26kX03On9kO42MbnH8PEsCZXW14vrnEijr+n1otAUtAcoSIEvArKsGsorltidEgaxlHRm2z7nMPgB974jE+hHicSle3pvLeGOJPzZ2yiWnspZxpH5tKqumDMWTujAqg7LN1jl4sql8F8rMDxZaFSirrmMWsmQpa2mQR4azyWzpwb0ms9aXl0I+YzADZVUyYXxeJJDAzJ/e38AAzk73BSA2/KrJcnRvVh0MgWrtR4yyoGq//cEGsozlwdiO9wbA57d4kMMIKQjXgKqgiH1j0738hGdqAyklUNZwJ796vz/jky1VOOdCbINKjdTpq5lznIxFG6yiazHccutjJ/0jCP3uiMTwh8JwPPyyVlCLA7NEYzB6OtI8x6NeKfC9Sd+uiaORO2UcGmzwOFNXXAKZhztkIxq9z2sVY4cTHoS9eKlxHE7nPEhrqshbtzLhM3wkYjdv1QNlbZFprDwJlDWmGdeNV5eWQubRjzn3qknm/v+VaRnM4IjmuCVHGxfm82IPsHdXZpBzUMPYQ+tk8Tqk63YGLv743gYknjXvg+TEwSzGw00LWeRstqhAXEtRe7STl9nUiRddWxsqK9VsbN7xngBrRRjMx8+zJFDWoHpcNlICZV2268xX3NGgbNqYaWwV/0YfxwzazGvAshTEG9uX8cVEgRx8OSrU1wOzP93HJgHu7aORmJAjStG1VWqEkqOyO6Pg+3wc0k7LRZHbVoWUH94OuV83KCZ2RU2GYy2oXUnn/GChNYGyJfFbGR8sccpaEirPnWaALHH7mQoNtUrIF45ktAXKG42TUFN56N6RhFt4+UHOycKnz4WgIE/YwLe+tgYVEQOYdWxN6BdQ3WzuOdZc2Zbcj1yViHef5GgVyJp3cOftgh2PWVJOW0l705f71lZelSho+D6XQFleE42/K/12s4n0728FN0Y641lDAzJXbWHgxo1xgVBXWEbbIlaTaIGIp1OZ8FwQ3O6MhM8Da3AmwnmAWS2NwfI1gptdnXSFfYfI0aQtIXv6NCanKlH4N8ra8nhglX75YCiOv6f7S/QEdBCIq2spayi/oThdWebOJVDWnIZc7362zwD2nBcF33ayqtEgpbcPA2VzVqzTNqjs4g0k/jwG9M4CTeRaeTh5KAv/fZVzXjWq327IC0y/p3mu2RfaB4B2RIUsdu4dtH+uScWA2ztV+90ZiT++OyRKjxIFxPPt/UEcs2IFfp5FoOwv7da5xOEt0ReY7X4JlDWrItdN4GhQlt/W4YrUBdePFzJQlEDZoJ5HHdbpRZmV8Hx0EwNOvf+6GaVmPnJCK0YA7Kj/28bkhnmcRJ3ScR7UhdbRFdMVrxgP+dhfUTylsytW3yF15gcLrQWUrVPIGS+ffF2YRfpjTsGGDmIWSiY5aBsaoAiaxugxqs8K38Lr8zttEeOc0EwbfkBw3eoyr2jpCohHtkFpHws6ttjk+ydee4QDjQmM7ffdFpQWC7TwEtyitpeQwNjUXt64OXp622u8kRZLoGxzxbz3F382GcxOK2p+0wljivafQeIvY5HUfyaUOZbRt9janPSUEu5d1d4f00dy79OQH6Pg3m4DvO9bi8MBp7VFzO/NOU5rKSqDwph4jsbgQiNYrK2ckZOCZYuRPXQQ1CXmHfcYEQFVdjazHpSNG2MsiWjxTQFVEkyWrn4Tp0AXqG1aoG4+3XNK1/RaqMymZeheS6CsrjZc/zx37lQGyMpGDNE2Jn3IGPb/ljZ8ojauRlaAy79OQNKAWdBUmXb4pM3UCk40mgaELDmHt/5nBd74SxBWLjgDlcr0/JLoqogGhrhVv3kj3OnGgGmnC+HxlxgtBuD3SjyIS1asMLhrHBur//e1tWKJ1PruWOq1Dz+3W+cSh5cEyprtfwmUNasi103gaFCW45N1PeqCWxeK2cuYtqvN/cr0FmMxn4Zj69Phdhd5cozCou8PiiJao25A1LjzcLsrGsOe2gKiLpCCuBoonvErxy878zdxBbcSaa0NlM33X4icMT6orxLOtVpfW4vcKWORPWwQVAWmnW2VblrJnqfyPRsFPQEEHrz7ZDAb5BHgSc4VhIaqAysZVYF63QeojGv0HCw0v9B0vgMS8NIDgVrQmDhu5UWmrSqEypbScRogT+y0EEp0BlIAJFBW/ynYv+EimwR/+w/TVvr6uVr+qvxqOq70mMQAj/JEx1iC74tLBzlkoUUusurXDev6bEP/uzbA455w7JrauGi2xH0tS+/73xagM2poQMaEuUj3GAtNhbDdEdzi4iAUBC3VbZ7F51ljxzBglgBaewZjACpZvtI9Q6EpPUFTGU2vSUbTPLpylUolMjIyTB5ZWVnMeU2VBeMD3TKkc+fRgGJXPLI9+0Hm6QbcpvrgHXul9G3cAUogLIGxl7v7gcDZthjkhVUYM2AP4439z4thOLrvlkk1kAPX3z/fxHweEM1W5GrD/8MmhYh8s6ygBqOfi9M68fL5WyzyrpeLXAr3KD3fwZ99L8QSzs+zlnjtxU/tIlzi8Ho9VnL0ZeYBkEBZMwpy5duOBGXTR07lVhLdRriUyvIzyrSrY1Pe3eWwui/veYx9CNzaRWHv8uuilJudVIqJb+xk1rHLehxBdZnkOEcUxRoQQpay5Pir+A8PA3fbdhQ/WGgNlrJVF88xq4mKE5ZZzxcsX8Jt87x0weTDUL4nmgP4I29vkzOZGvCffgIv3Hbm9fvnMVCphG+Zqwx3Z3QFypDPoLx2xExJlt8mC1iiJaBtagRudLwvEB7d4pzOKsLyljlnDnL0Rdayt6b94ZwVdHCtJFBWX+H/eSqAWcmeP5Cqf8MFrpR5ciQPmcccgBUlNPI32qPqKxecZu+rlx5YhgsnDS9wRQ/agQF3r8Og9hGIHdo4TmxJYLY2rwCpfYdBtkQ4NQWj4fF0A9EZWBuIuiDb0w3ZM+xrpW8MQDVlKUuUBbqcs01lNL0mHZiyvq2pqUF6errJIzMzUwJlrX2YnCifMjeXswL37Ieaixydk0HHXvUNjK4g8SdflJ6VaMySLhWi8weR7B3q/sMW3EorMdmr2zYk4+UHA9m36Yf31qG81PHzVI0GmPFRghaMHfTAJlzYZd9FplcfJgqDAJw4JE45/DxLAmVNPm4ud1MCZV2uy4RX2JGgbAo5+OrlBVeiLiiT1zEOWaIsGP+qYzzKVperMfyZrQw4HfTgJsiumv6ACelt8oYZP/8qBtyzER6PxOB0jOkVSyEypTSmNaApknGOv4jKIHyO6cRt7C4/WHB1ULahToWcccOR/8dsi3qwNGEnm7QqYqNM5qs4sJUBsorgGWb5yGjg+tVrHJdXp/sDQQNboUGZfh41IV8wQLZibW80KIVZVgmVT04gCCAmegICY4njdvzgBJBlhBTsq4HU/qOQ0tsb6mrJClkCZRuftWunbjGLpI+eENe5SGMJ9j/TVCtxw28545m9tTzG7DvSmhpN8NzPJspvPb7CLB93nO9eDOkQgQF3rweBtHxoSWC2aHsCW5gpPSWME5wcfZHTLzpscfpFzr7I6Rc5/7JXMMT1aiiOL1+prGWAbJfuPWDoSLx8hdEekAMwXfoDUzJ52aZ+JfoCU9pxnXtkHSvzcENhKOfw1Jhjr1v+0eydlLvRcbsqXUGLmyOS8K//XYWXH1iGueP+RHVVndFqE3c355zWHzSetcQ5rVGhAm+EeZ5i82/ytUI7SncuEj6WFliEwWSTfPax8fFH/1ht8L6lkfw8i0DZH9tFuMThKVnKmu1mCZQ1qyLXTeAwULa2lnmDJmDWlULfO6PYy3noU1scUu2U40UYcE80K3PiWzugtsDKzVgFCzMqMPPjBCZz3n/3ozRPPB4cY2VK8ZwGKs8fgmJCV8jHd0flXmFbz9uC7vjBgquDsoqN6xmXbF2h8O1pNWkpzCFY/oKZAK2WGAmVf+7gAFl/P5jkmwWwM/YGOt3P8bJ+/tIai2gAKvcuQ93aD9lB52KG65eL2MCa57V9/dEgzBt/pC34uxBTjTbJyt+wmYEysqXiDPRtqkwLZ5ZA2cYO+KlTEJsAxgU7zmFpY+kintU3IHPlZq0DMLG4G4nvmqy06N31Wcc1gncc7J1zBB73hjM6g7XdNmkbutxzA5M18rNANNQbf+9rM4h10tCAW1MWIG2QL9Rlwrbdap1+xW+1uhaKeG7hMWfxYqtlmMvIg6xk3coHOte1hOXjjf02tYwVQ2bTsiRQtqlGXO86Z7Q3Z/09bhhXeSOOvfJiD7B30c0/1rteIx1Q48oKFaaPOMCoYD56NgTxG6+ZLHXdiosMlCUL0i4fR6Gy0n5WswS+urfn5vxud0ZhmQN9x/BKYBQG7f35S5t++XkWgbI/tItwicNDAmXN9rkEyppVkesmcBQomzJsEpsYpvYb7jLK6tcukgGZnn+JdUidt8+5zMrre0ckoseZ3tIstEKHQlIx+MFNGHj/RuwTiQJBaNlSOk4DZZuXQzG+O4ondoUyqdERSFvWDz9YcGVQVpWXw8BVxTbh7wdNeRnjns0eOwyaSuPWqJXHExggK184CvVK44so5Lm2939jwTzX3hOABROEUyhoKktBVrHEHUtWsmQtK1Y4eViGL15ew+pFoMY7f13p9F51xWq708mpr0dKn6HMM3RbR8MlUJZ7OvMyitn/5lsPiTP5c4ZnnigMmAOwQbNB1Aa2BOK2fu+pYGYhS3QrloaTqy7C54E1cG8XiZVfNYIzK4dyW3i9PwpwKDCrKpQjtd8wZM4WzhVLvLLZQweCeGatDVleg5Dl0R8aO1rp79y1G8QhSxQDPPcrxfGBQFeyitUFbvl79NsUlKU4czJ18ws5l0BZIVpy3jRkGZvt0Q8yL3dtJdM9mjv2Kjl9lVscGhtoF6t9beGt4CQlSY5f/sW9D3/7z0akXVMYbRW9j/ldYEQhE7dRHDo/vkCiJSB6AvIZQ/Pv6R/uAdEXtER48/Eg9t2JWnXJ5uL5eZYEytqsSqcSIIGyTtUd4lbGUaBsak8v5nCkNiVT3AbYSZrbXRwgO/CBRksHOxXF5snTPtjNaBLc20cjMcEwZ5kl5RM5+cLvDjKQd9q/9iA/TZiFhCVlSGmFa6B4pR/kRGMwqTPqFJLTHX6w4MqgbN7cacxRF+qFjd6I6iB35iRkew+AMiPd6MNTdf4IZyG7YATqqyqMpjt9RIZXH17OrK/IqVfKVeOD2qZClFcPQRnyn9t0BX0BlXAHZU1l6V6Txe5Hz65mg8rn2/vjo2dXWUSjoCtLOhdPA9mBoWxRNGdVI0AknnTXkSSBslxf9XhzJXtv+I9wDCWTo54Q3gEYOQGjc2vC5XMFbHstLSYFzTtjjQiW50JMMoY/FMYm+oEfh2vlhI3ZyHQ/5J/+DgVmFQmH2TtAsUeYw1h1STGyhw5CwTLrLV0LI9Yx68LcoCBt++1xQjyxPB2BLiBLZdE13Wsaz9fDEChL90zJ5PMK/ZVAWaGacr50xB0r8+yHbA83oJRboDDk2KsyJROJXccxnmuxrPWdTxvi1og2ikWHXMa7fwvGS/cvw8zRh0CWtMbCivmn0fHeALagSHRYttJfZSeXwOevm2878Y6C7/PbQXPnlgxZN0tFK56fZy32SsD3d4W7xDHkjRjJ0ZeZJ0ACZc0oyJVvOwSUvU1dQMCsKwQCRolLpn9703yPYrQlL7UCno9uYuV5/3UzSgts5/07ty0LXo/Fon+Hjdg267JDB/5i6KS1yiie24+BbeQAzN7B0gkFcab16z+ITV54q5OmddRNY2qS0zSfoWt+sOCqoGzZnwfYZLMm9Yah5jWPa2hA/tIFLE/FqePN79+OqU48Cfm4HpDP9oKmwvjgzPvXHWxiT8DBiD6NTmWMCta5UbF5AurCP4BqzUeoPCDcAYyOCL1T2ua7cNJRvP0EB/S80N4fRKFwJOGmXjrpogU1oFIjpZcPUvsMbdMWPBIoC5QUVODFDv545b7WYyWr+59FVrJJg2YjsfNYFMRZ5qxw9+YbzElix3sDsS/OOlBXty6pf2Zg9CMhbHy3+K0Q7S0GzLb3BwGzmjphi3razDackKUsWcySAzAhoWTnNvbNstrpV309ZJ4DkOU5oE2/dyRQVsjT5nxp1KWl4Hlkyw/tZxVUbN/DDIzIP4qmuIzF1eYrcKXnFFzpPQW1RfbjUHY+DYlTo2J5Dcb0383GtB88sxpb1icZFZwnK8enz4eytK88uAyHdlk+ziwrqsHYTvHMiRf5i/F6PBYZ54UbNfCV463waT4klDJFNw/lo2vdoDt3EypTN7/uOT/PkkBZXa24/rkEyrp+HxptgSNA2TSfCRx1gdtIo/VwlhseD8ewAXTfdpF2r9Kx9elwuyuKfRjIqtXWUFWiwvKeR1n96YOTmVhsq0gpv8gaUEzrxgGz07uLLLlRHFmE8B9zQ9v5GlNyZ3wafnBA+ZsCszwgy6ehPKY8HDcto+k1P1hwRVBWXVaG7BFDUBi2smmzjF7LozmLoeKtMUbT1CSdg3z875BPHwR1sWFrauJofet/VrAB6et/CcKJg1lG5TW9UVd4C1UhPzLr2OqQb1Ens815QWmxEl7d47RctuTEq+snUUhONFz3pvWRrh2rgaxFK9l3ODfc/rs/HNsy4aVJoCzg9iE3oZ0zwDE8+cJ7R7yUZKmWMnEFx+24cB3q68w7FFw85Th7r7760HKLdh2Yq7XsYh7GPraKjcvmvcQ5CKI8GyZvYY7W3N9ZCrXKuMMbc/ItuV9XWo70IWOR4Tcb0NSbzarr9Mscr7kxYXmrVzNgNz80zFiSVh8vgbKu2cXZPgMYbUFhwALWgOrL1znfKL28UH6cs6JXV1SzRaDL3fxQfdP2XY6uqSlxan3xdB6+fj2CvYeJ0oAoDoyF2b6HWToyTOj3zWZjyfTiiZJg5qcJt2kKojDwvmicjM7QSyP0oqnzPwJT+XmXMRk0fyLjF8pLgX5pHkXzKQq8jIS4GxjWcxdWrlzN4thNK/7w86xFXgn47q5wlzgGS5ayZntaAmXNqsh1EzgClE3p6e0S1AVDn9zMBs5ud0aizs5j5GU9jjIw1q1dFPaKwPV6OSEH3k9sZp4iI8ecQ12t46wvXPfpb4Gaq+ugmNqZA2bn9xe9Ak0BViqABgKmBgu6IC6lN+ToggYLxrb/WdMIfrDgiqBs/pJ5yPH1gabKOCesrk7KDu1nk9KClca9nCuvX4LcryfkU9xRV2h4YE9ewGkASpaofb+NBfHJCg1VJzaiNuwTqCM+QEX0SAilXDAk/8LJHK0DHKoPcXyN7LsLleXGt50ZkiPFOVYD6upqpJK1rNsIxxbsRKW1dVC2VMFZyb50b+u0ktV71BoakB2xkwGz14YtgkpufOeB2/ebQXQr/3x6FcpLxX+PKbLK4PdEMBtfzng2CBo15+hr48zt7H3e5/UlqK2u1au+vS4qLl5hizMFkcKcePFOv4q3C+dO16t7XR2zlCWL2bbKaS2BsnpPhEtc5EwZz8ZtshFDWH3JKpasY+nIj+BAQFrsuT5qCRJ/HoOy86YdVrlEo52gkhpNA1YvOgdyCtvpvkBMG34QFWWG340pV4vwr2dWs3Hxa48uB1F6GQuBPY6AnHfRLli3u6KxdfZlY0kFxdOciA4+mDNUMTSv4vPSr+79k4ey8OZjK3Hi2FUsXhrA7ummFXrOz7MIlP32rrUucUigrPnelUBZ8zpy2RR2B2WJuuD2h8yZlTT6+e3c6tmdUagusx8iW12uxvBntrIPw6D7NyIr0batLsrKOqzsd4zJG/3cdqSfkazUnPk5Y3UrzmPcsoxjdvUUUavbdPWWhBuK0y206eCC7unGmRts6MoSes4PFlwNlC07cpAN1KuuCCPhr0q8wJyB5S+YCbI6MhSUqVdR5NcL8qkDUJfXnHObBp7/fDqYDTxffnAZiLdVaKivrUHFusFQR/wLtaGfovrCDqFZm6ULC7iAD/7fqtt8sQHMEc6yOaeapZMinFcDmXMDGSBTuKl1cYkK1XhbB2U9Pg9j75FJPTYKVZnLpys5dQVkxXal1xRUJOtvdVWp6vHpc5zl8C8f2nd3VEVhBSY+uYKN1aY+HQRNLfc9IGC2Ywd/9Hh5EVRVSofoO2dlBFJ7+6DqWqqg8mhB0RanX3lBQey7WRhpXx0LakwLJJJA2RZQug1FyqMjOdoCTzeAxm0aDVL7DmXfzswZHN1QtwAAIABJREFUjRzL6XPWsEWfgh3HbChNympIA3nZFfDsHse+V+//PRix4VcNJWNxYwcm4EUyWOgQAN8BCXrpYiZf4nakEiDbLhIregt3hqsnSOeCB1B1DVUMxelkaWYVq3uPP9edd20MvYoLFxOb7Vrk0wr55edZEigrRFuuk0YCZV2nryyuqb1B2XRvP/YhS+3vvNY5k97cxZxskefFMrn9ANmU40UYcA/HVzv+1XiolMIt3Qx17NUDeRj+9FaQtW3E8DOoU0rWsYb05IxxyqTTUEzoBsX47iiLXyNaFckqtin1gClQ1dhAggYb/Cowv8WG33pDPEi6W3CaVl6pVKKgoMDkkZeXx8jcXQmUZY5Phg0CeeIVEsiZF01kc6eMQ32NYa7o2ozrKJrQmwNkC7KbiV3gd4QNNMk6tvNHkaisFG7Fpbp5HjUhXzK6gsqwX6EpE8YjqFsJKs9vyF6tQzEa9H71arjEF6urJBc6r6+sRkpvb6T2d34qIXuotS2DssoqFTre449O9wagXsNZatpDx84os0aWj6SBs3G5yzgU7OQAFOImfOvxFcxSlXYhOCIQEEuALFlrEUBbls85WNy6YCcDZrt3dAwwW69U4ubwyUj3mQA6Nxd4p195i+aaS2rwvqa6Glke/ZHlNcjg/dYeKYGyrtPDyrTrkHn0g8zDDXROIX3IGDaPTfMer22IbE08A2SzVguzONdmlE4s0sCx/be0HLJdP45GcmKhwfxnj+aAKL1ojPrPvwcjZlYiBty7kb1r+94Zidmf7SVsXZRgaEciCaY5ky5Qq1sYv2Px5KnTWqeEhuZqFEdzrNjNW9k86+zZi7pitOdqtdrkHIvmYDk5OWye9YdXAr65a61LHIMk+gJtHxs7kUBZY5ppBfH2BmVTnZy6YPYX+2/zy0SiIJXjdbFHt26fc5n7ONwRhfUjztlUhKpGg5BBJ5i8kf9vG1JOGP5I2VSIlNnuGiAwlkBZAmcrDgrjRDJXKWOgLH3o6V7TYAqU5SkPCJQlEJa/Jhk08Gg6oOBll5WVsYHAlStXjP6mp6e7HCib/8dsZI8ZahRg5dtPv3XyQuSM9ka2rw/qig07EKjNTEXRxD4GAdmM1BJ89OwqNsB86YFAxG3kJge6ZZg6r9g6FXVrP4Rq7Ueo3PmHqaQG71H55N32RfJ02yEA5PiGeLsy0+33jjRYESlSdA1kTl/EJphF8XtFl+3sAtsyKDvyR46rb/RP65y9m+xSP12e2VOjVuCVBwLZu23dCsOTXrtUAmDUBURhQMDsuP9ZhYJr3O4mAmY73eMPAmZryg0v4olZp+q0DGYtm7NMGNdrScJOZu1afuxPq6qRu2QJy1+0WZyxjlWV+P/sXQdYVMfaTrHH9HJT7v2Tm9iNMYmpJqb33MQWY2wUCx17AXuvoIAIKkVQKZZYsMRu1Gg0NkRRKVJ26R2WtrT3f745HFxgK+zCLsw8z2FPmTPlm8M5M++8837NdBMHZZvJ8LpmW17OGLJSa3Nk/y7IdcTPWy0Qi8Y41qSWceRvBsjGLPIBqlrXBFeNEZpwR15aAdf5f6FXZ0/WF51tewx5OfUnk0jSy+z93Rj5wHZGtCInXk69wiDLLtZradWBsiKZpW6GNP4isFXxOu0rjqvEsRbFo42upaYo73MXFxerHF+JY687d+6wOByUrdsapn3MQVnTbj+1pTcoKJufz6QLokfaqi1Dc13cZPEXA2TNHghG+MFkgxSDPJMv/PAw+0BYtA3B5X3aO+ZRVqA7Z1JBQCx16P1t/wYBtDyYrgWyA5YjcyYBs0P0AsyqAmVVOeVSB8qKnQeRKUsdETGoY9+KcdT9istqTIUpm3fqGBtQFt1W7RVWrC9pzSbPmQap43iUSpT/v5clxSFzrplSQJbYseQ067W27qAltfn59TufYl51f8vT7qHI58dqZ17fokyieslX3XvpmDzZft7dn+VNYOzrj3tirv0xlJQol15QlgY/Z9wWkGflIGqkHWLGTzPughqgdK0VlCVmLDFkiSlbXtaK+wxVVTho64Pr/5uGXZ844+9D2kvB6PtxXN5NkDKY9uRmRP8pOJs56H6UAbM/v+qC/Ix8fWdZL730nWEMcMqtdlpUL4LiiaoqpCybD+kka1TIChSvaLVfWVgICbFlHWy0it+SInFQ1jRaU+IwnvXzUpbOZQVO8QlC9AjSkbVDRZ7gQyD3ciTCB07HbYc1WjkQNI2am0Yp46NzMOLLnWwy7Z3nNyLE50YNJi6NzIHjC7tqnHj99uBW9Gnnha9fD9C7Trg6UFYTU5bGXGJQHFvVTVM8JmC2uPj+PeK92vyK4ywCZb95eItJbOM4U1Zj03JQVqOJTDeCIUHZaNuZwgyjEUoXBDtfwZgHgth2NiDGIA2YkSCDzRM7GIBq99xu5KY1nP1A0gQB9pdYWiRZQOAsDy3DAtm+C+8Ds2cbrvlJ1qCPvP3EyexXtI6yc+I1+iXwVQRgxfOK55TdL3YYlLFvxTTU/YqdBVMAZcsyMxjAmrFls7oqsWukG5uyfAHTkS26pdyRgDwxWikgS+zUD1/2qWHHqtPQUlaQwhMbIffvj7KAD1CwY6bWzrxIooCW7/Z9Slj6RWAwsXSbmkGmrE78nGEsED9nlQDGnPrLMBkYIFV6J6mTTdEmy9YKypKGLE2y2H2pP6kcbextbHFIb5Debxbd1iB8iBMiRs+H7G59He+mKrfrmz5Cn+5RP1zdGcmyPbbpJHp2cMOPL69BllT5Kgu9la+qCgkL1iBm7BTIMzTnJU9NgdTOEukbPRpUhKTVqxjolX3ocIPuN9WbOChr/C0nOvaiyXQKuSfPCePXkXaQ3Y5i5/JvxiJ88ExETliG8nztHL0af81Nr4Rhobfx/r+FlWQ/vb0dk17ZW02wCoLVkztx50waIzP8+M5W9r7v3mk99m4X3q/6qK0yMouyc4p5KSPMiGMriUSq1CHz2RN3QYSamxHaaX8r5kf74jhrje0f+Pphf5PYxr6xg7F7Cwp0n/irW/+WesxB2ZbasgAMCcpGjbBjTNnSJOXexJvLrAfdIkHsWNrClkcYpBgXdsQxcXFaPrHy68bplZE8ATnxInasz/gLIOdePLQsC2R7OTNgNnv2EMgunWpw5cSOgSJYSvuKS2TqJl73et00xGPFGWACZVWxb+umr+xY7CwYPSjL2EHzBNkCLbT3mEMUG3PknVL+P1986/J9p14KGrILJp5g7FhRO1Yndmx2MkgztnzrByj2/QIlkWeUmbzeufMnE/HTu9uFfJlEgTuGfUqaXdxZYD1jtbAT8rQMkLRQzITpJlEzekfRcj4OyjasuXp0cEPXdm4gXdnWGMih1zdvBDBg+vu3toKWuZLO7E2LxUxnNnW/du9MQ9jO46MAmD8YBPtH/HFhkyClcHrLGfTquBZfvuCCtNgUQ2Rbk2Z5Th5ixk9F/JwVWi3Fztq3S1g1crO+HFJNoip2yrJzkGhjgURH41w9p6LYjT7NQdlGm9CgCaRv9mQashJbwbFXSVwioqoZspmHT7K8i+KTcWOYMyLGLEBpZq5By8MT12yBjJRiTPjXzmpyVTDGtAnCab/64KXvusvVfWt3jPlmN3v3a05dcwwaDymSWTSNiZQRWQiUpXFUXl6+UlA2IyOHycSdO/eP5gIpiSGOs1bb/oGvHvY3ic2Sg7JKWrL2KQ7K1rZHizoyGChbLV1Ayz6MKZBMgQDIBmHrxMZpu6qql5/VRZYHOeA66qmbFqRimmWlFdg2+R/myMvh+d9Bjr14aLkWEIDZYcia0zhgVlHvVewIKAKqtK8IbtSNo3i/aG0CRRQ1ZKkzog7oFe9T9St2FowdlM3es4OxXoujNP8fZ+0OYYPVrB3blVa78J9TyJw5HJmLrVGWLsilRN3MwHsvbWRgQc/O63Fwl27LaQtP+kDu9zHKA99HwdbxqCwRHMcoLQDAZAgWTj6Bt571ZgwCYo31+5c3ls04DQIueGg9FohzXs6YQFnHGqYR2VSWEt9P5Pii7ioAXcvQGpmyzsOC2ftlwifaaYfqalNjj6/o0KuuZ+5ycnzn5CnoQy7xQ0UDl4k21gY+/wuGxUPbYd0hAIcWnGbJ/RVyHn06rcPnz7sgNdqwfb/8y+HsXUByBhpDZQWS5s9C0kxHVJbortUoXbGcfSczw7TIS2NhTCMCB2WNt53yjx+FxMaMbeVZaaiQyRA90p79PyR5CSsLStOzcXPUfEQMn41iie4OU4239qZZskX9j8DswSBGVCJZwGEvh7Bv3LsvbsTuwPoSY5K4PHzwH4FZS87AyClYYwMBqjSOorERhbpjInEiWbxOcWhsJY6bRLKLCOyKx3XHajTuunAmBmlpujOzxXHWKts/8OXD/iaxcVBW85PJQVnNNjLZGIYCZWOsp7GPWozlFKOxTfzVbDarZvZAENb8qP+BaFG+HNO6CIzW8Z1CkRie0+C6x17KwPSu+9lHx9vsHIrzOTu2wcY0oRtz1k8XpAzmDEFJxMUGl5w+9KJYvOJHnhIUryl2FsQOBt2jCL4qFoDSEdMUOxaK13XZFzsLxgzKFt+9LSy1DNPsXTf3+B8sbpqnq1K2Uf7hEGTO+BVZKyeiPFdYJjrX4XgNS5Vm8HUJ5Qrs2BLfT1H0zz61t1+9kMT0aUmrlpYxd2nvjoEfbAed56F1WqBYklStLWvcbFlxIHPnbhQHZXV8VEk/lrFk27shN6v1LQc8c+QeunfS4NCrsgpJWw8h/OfpuDV+GYoTDAuAqmrC7WP2YGybrRjfdit2Wh1k0S7u+Qdvdl6LAc+6QHJTuT65qvR0PZ/iG4To0Q4oionXeGtpQhybrMzcprscRnluDiTWFki0t9aYT0uJwEFZ42zJkrgYkFMvqbUZ8s4IjNhoi4ls7Hpv+iJW6LKcAtwauwThQ2Y1q9SJcVqwaUvl8uNJNiamVaPmbUKwc+51VgDytRa0KRxvP+fN+re/fhoK0p+tG5ysjqJrO3e2OVs33tGpCLzSuKjumEgcL6kaf9E9IiArllMEZsVxFo3Frv+TgDef9sag/iFiNK1/xXEWB2W1NplJROSgrEk0U8MKaShQVlj6YQtjkS5Ijctj7FWSE1jwYeNfxnWtHXspE+M6hLIPxsyeYZCXNIx1RuzYoOmXYf5wCOye3Y0bRzhoUtfWLf04a52jAMzOHtwoYNaY7SR2FowVlCWnJNLpDkhZvUQpyKpoWxGQTXFZDtKUrRWqqpAT5CEAsutmorJIhnPH4vHms16s89jniQ04c0TzIFgxTUV2rGyLOapKlIMtxHxdMesM+j1PrFg3lt+bz3iBwGDSkeWBW0DUljVWtqyouUa/ivsNbbnWxpSdNnA7+79vjVqyvmsvs8F3j0fW4+IZicZHJu/KbUT8NgfhQ2Yi48QljfENESHM6QSs2wfA8uHt8BsYyrK4eTwC/R5zRf+nXRB/TXAIZoi8K8vKcG/aQtybOAeVWkj1ZIVuYxORxTGC3qYuZRK1ZTP2aJ7w1CVdY43LQVkjbJnycvb8SmzMkR4g+AuIdZjNANloi0mswBVFJYi0WYHwgTOQd13359wIa22SRfIYfgZmDwULgOxDwQh0VP5+zs4sxhSzw+yb16uzJ1zn/wV5aW3HlsSSJbYskRPIh0NSgvL+s7EYSiYrZ6vaurbXXcdbHGdxUNZYWlM/5eCgrH7saJSpGASUFaULRhiHdEFZUVmNCPisHvv13g6HXG6xjwUBvtsmNVwSQZEd6zniLApzOHCi98YykQQFYHYYsgiYvXvVREqtfTHFzoKxgrKp61YhaaqtRi/TagHZ8jJkbVwsALKe8yDLlmHIx8Ho0lZgqzqMOIhKHeZuKnJSIfMfzrRjS30HqGTHkibsr5+FoluHalZsO3f88PZWEGuMB24BRQvI07IYWzZ6rPGsaBHLJ7JGRKaJJlCW3iUpKSlqt+TkZOZEorhY92XXYrlM5ZdYst1JS7a9G+QldSaLTKUSDSyn6NDrrWe9kJai/bLP0owc3JnkyuQM7rlsQ1VZ09vttMcF2HfawnRmN3y5jVngztnb+OBJF7bRvqFCaXIqos0nQuLqrTGLqjI5kpynIHnOdK2dSoqJ0qQnY8vaTRBPtehfDsoaX/NK7ccyUDZl2TxWuIR5gvPLqNEOgFyOKnk57kxdx94F2WcFrWfjq0XLLhGBryQDyJixDwXDbZh22t//nJPiy15bGPA64DVfXDhde5UBaYqP+moXyIdD147u2OJh3GOsHp08GLEi8Z5uWsbiOItA2S8e9jOJzeKNUO7oS8O/NQdlNRjIlC8bApSNGj9DmG0cN80oTGP2kKA9Y/fsLr2XZ/mXJxjga94mGJf31X7xa5tZWUm1dmw1O/baAc2sDm3T5vFM1wJZa2yROWMYsucMRnGc/jyHGoNFxM6CMYKyuUcOss56UeRNtabKORwmdOqVMGQriwuR5ebEANlsv5XwWHgW3Tu6sxnvz7r5ITaq/tIqdZkVHvdCabV2LLFjKwqya0Unx2DzHY9Xs2IFMJZYuDPGHYEsn0/u1DIWP6hlgfgFa9j3On2vcXlEJzBWUUpFEyhL3npv3bqldouNjW01oKzj94Jjq0k/BNRq75Z8wBx69REG4z/0Exx66VzfikokbPqdgTGRtitRkpKpcxKNvSF8dyQmPebH+pbr+vmy5IglS2zZtx51xfnQC43NQuX9uecusfdB5qETKuOIF4ruRLJvYPaeneIprX+TXF3ZvRk7db9X60yMJCIHZY2kIaqLkTR7Onv2JJOt2Bmpi7cwZh1lh4q8PNBseZTzBvYOSAs7a1yFbwWlIVkCizbVzNgHg7D6h1OoqE141WgFAl49llwA+WogVqzjiIPITKvtc2FXwM3qfrkbBvUPYj4XNCbcDBHGD9zL6vDV61t0yl0cZxEo+/nDfiaxmXNQVmMbc1BWo4lMN4IhQNlo5rXSOKQLxBf7uI6667Goa9WcpCLYPr2TzeDRLx03JESdT8fUVwUdWq9R5zg7tiFGbMH3ZK0aLwCzc1sWMCt2FowNlC25FwOp3Vhk7VL/vlAHyFbk5yBrpSMDZKM3eOB9BUdeIb4ROj2t5enxKPQZyNixJT6fovBS7eWelN7XrwvgC9OKbefOjo/uq++FVqeMeeRWY4HynFxhQFq9ZNNYKi5qX4v6aoq/IntW17K2FvkCYsYSQ5aYssSYbQ2BnLn0fWoDYz852xxvdJVzzt9g3tbJ4zrtN3WQXEvBzGc2sT7msm4Cc1V6S4pPn3NBzw5u2OdiuEmU5I2BiB7jgOI4zUSDjEAfSO0sIU/VTYuX2LKJpC1LbFldlow0dUPoIT8OyurBiHpKIm2DK9OQldhasBST/UMhyu2VxEnZudgVAQyQlQYK2s56ypono8ECYasjYNlOBGODsfSTY6iQN+77RezSEV/uZKAmyXdt9boG0qAVA62kIKIE9Z97P+bJ5MXEa8byS6por7UTVr3oUiZxnLXS9jA+a+NrEptZ3xDOlNXQyByU1WAgU76sb1CWNGSjRtqyQV5z28Xq0R3CsoeH1QMsupaTGLHEjCWHYUs/a1jnn9ixAQ4X2dIMh+d/59qxujZCK4ovArMkZVB6qWHPm7GZS+wsGBMoW56TjaRp9kh1Wa5WR1YdIFuWJkXmYitkzhwOz+GrWEePOnvjftoLYnHpEgoProTcvz/KAj5EQegUVJYIs/xRN7Ng9v3v6NlZcGDzWlt3plE7a8IR5GaX6JIFj8stwCwQv3gt+2an7TxgtBbRxJTVpuCtBZQlDVl678wYLCx/18Y2phzn1KF76NbRgzlOpEG3vgKxZIktG/7TNMR77kRlM8gZLHp5A+vHLvw/L1atjIQMfPdvF9a+HlaGad8q0pedsRiksVkhU084qCwpRtJMR6Qsm6/2u6msTZLd3RljMS0oWNnlFnOOg7LG0ZQ5B/dDYmMGibUZkJuJzP1H2Xg1aoQd8q4KE+YJXrvZ/3uci2H+t4zDEsZVihMb72JshxCQBKDZA8GY9+4fKJY1DoytW8O9QZF476VN7L058P0gRN2qvQJiwcQT1f11N0y1OFL39mY/7vnoerbS7vwpYeJAmwKJ4ywOympjLdOJw0FZ02krnUuqb1A2etw0NriLtWpe6YJJL+1hHVnSotFnIM1Y9uF4MBikJduQcOdMag071tvsHIrzyxqSDL+nFVkgy8UWmTOHIctpCHJ3uJl8zcXOgtGAsuVlSF48G0mzJqGyqPYSJ0VjqwNk5YnRyJxrhuTpI2HWYzHr4JEjAdJ41SWU3r2AIp8fGDuWfuX3roDkCajT+M4LG1nHjAAX8io+8suduHE5TZfkeVxugXoWqJQVCdqyRsaWVSwoB2UVraF6PzergLFke7QSluzqOWfRpZ0byKHX9Yu6sTVVW7H2lbh1wQyouT3JtVnkDNze82f92dn/8kZGdDby0nLx838FYHbGt56oqlSgftUueoOP5GkZiLacjISlmvsbhdevMnA19+ghnfKrKCoS2LK241s0W5aDsjo9FgaJXHzlIgNjpdZmkF2/gvwLV0BgbPRIO+Se+JPlmbT1EPs/j1niCxjgf8ogFTPhRP8KisP4R3awMTWNq2f1DkNehuH03gvySuFsfZRN3nXv6IEl006hpPi+bvjVC0l44ynBCe97/96EhNg8o7HuzPF/sDHFR/8V5Gy0KZg4zlphexiftvE1iW0MZ8pqbFoOymo0kelG0DcoSx85YsoiP7/ZjELOvIQZtyAU5ekH8CyXV8LpjQOsYzyuQyhiL9WeZdOmsvLiCvjZ/M3SmPjSHs6O1cZoPE6NBbIDliHTaSgyZ/6C7A3Ta86b4o7YWTAWUDbN2x1Sh3EolaperqkOkJWdPYz0mSNwx240vn5+BQMIyPu3LqE8OxmyAAsGxsr9Pobs4Crs8I/AN9UaiQTEdm3njs97+Bu9YwJd6s3jGocFEpZ7sAFq8lbj1HjkoKx2z4n5hz5s8DZneKh2N5hwrN8+38Emqd590dvgqwQyT/6DG784MUmDzNNXmtxqW4buwLg22zD1ic2480csivOL8FsvV9bWVu+5oVyun76uYsXyL11j74SMPZqlEtI3ezJgVp6sPZOL8krZsIHdl+qvm16iYjmNfZ+Dss3bQiUSSTVD1hw5YbtREhPHnuvokbZIDREkoVJ/P8UA2ag5XkCFbquamrd2ppd7+B8SWD++s9oBdzCmd9mH7GTDgbF1LXTjcgq+6RPI3p0fv+qL03/E1UQhLVqzb3czh7xdOxiXEzCSMKBxgLZBHGcRKPtJG1+T2Dgoq7l1OSir2UYmG0OfoGyNdMEI22azx9IvjtfMuqXG6WeWS3IzB+M7C1IIE/+zB0UNcJxz80QKJv/fXgbIbh57HiUy/Xegm83oPOMms4DsWAhIxoAcgOWsEDSxmixzPWYkdhaMAZTNrXbsVXD5ksoaqgJkq0pLIPVYyvRjL1hY4IMnXOA48gCoY6d1qCiDbM8CyP0/QlnAB7jnYYPx3wfXOCh4ra0b3n7OG7PtjiM/lzvt0tquPKJOFqgsKkL0KHtEjXEASMSsBYaWLl+QlpDFWKO9OmpmN5py85JMCwGxJN3y2+dNN4lQkpSBSLtVDLy557qdeWhvSjuGOZ+ETYcAODzihzPrLzEglgBZGqgTQCsv1L98TYpfCKJHO6DwdpTaqlYWF0E6wxHJC52ASh2WHpeXI9FmLCTWlqgs0X/51Ra6iS5yULaJDK0smxIZJDbmjCWb4eUOeVqaAMiOsEWSux+7QxGQbQ6JEmXFbonnGBj7BIGxwRjzQBAm/ed3pEQ3D4GroqIK3qsuMR1Zen/aDgtDZtp9qRbmBKyTB6j/bSxOwN54agP75h3erf5dLD474jiLg7KiRVrGLwdlW0Y7Kq2FPkHZmHFT2ccudsIMpXkZ+qTH8LM1M293zui2ZFhV2U75RDHdV/qIeI44pyqayvMEvvqMP1/DjiVwlgdugcZYoOTuVWTPHcSAwMwFQxuTVLPdK3YWmhuULb57G1JbC2TvVTGwr6pCxvYtjMmT4rIcVQpglSwhDncmjWXtsGOQDQa/twUpSbp1MIvOh6DY53PkbPoEW8ZY46MX3WrkCWg5Ls3Y6yp/0GyNyjM2eQtIN/izb3ii2yaTr4uyCrR0UPbnHp4MoPObf1RZ9VvEOZIooHcjSRa4Lz7f5HUi0CbBW9CdjLRajqL45CYtw4UtV+HY2Q9W7QOxy+4Qky4gCQMCFga+5oK8dP2QEWoqVVGJOOfliLGagYoCWc1pZTtFkRHsW5m1M0jZZZXn0rdtF76x69apjGPKFzgo20ytV14OcugltTFH6sqFQLEcUaPs2TcuYaErK1Ta/jMCQ9bJs1k0o5vJMk2aLflhsXp8ZzVhKgiOL+5GwvXcJi2DqszIQeTob3ax92ffp70QuOG+I7DMjKJaTsAunpGoSqZJzm9Ydp6V890XtOufieOs5baHMaCNj0lso/sGc0dfGp4mDspqMJApX9YnKEuyBc0lXRDsfIUBsjT7djYgRi9N4vrzKZam+cPBOLctVuc0CYAlmQLStfWdcIGzY3W2IL9BlQXKsjKQPZ8Ys78ie94glKWbFtgvdhaaE5SVpyRDOtkGqetWKnVQQg5MUlyWCR16t9W1ANlds3wgnTwcqVOHY/Fnc3H+pGrZA2VtWBZ/DZleQ7DPYTjGve2Ebu0FthMNrL/uHYCgzeHKbuPnuAUMa4HKSkSZObJBKzFnW1poyaDs7b8TGKvn7cdbLkvWz/0q0wMkp17k3Ks5Q+7lSESMmIcbg2cidZ+gSdlU5Yk+K8GMpzbB8uHt8Pmf4DdhrcUWNmD/+kUXpMWk6rUo8sxsEOkiYcEajdqvGYE+7JtZHHVHpzIk2llBYm2BskzdpcF0yqgZInNQthmMDkDqOJ49i0mzpwMVFYgyF75t5MCOgggw933SAAAgAElEQVTI3p3m3uSs9+axSNPmemlXIiY8tqOaLBWEif/eg4QI4wBj61pif8jtGkdggz8Mxu0b94ld952AuYMc6jZn6NLWnRE3tCmDOM7ioKw21jKdOByUNZ220rmk+gJlRemCqJF2OpehsTcQCCsuhwhbLnjQbEyasmw5HF/YzcDUCY/tREp0gU7JkeOuTZYCO5YkC8ixFw/cAoawQPaiXwRgds5glNy6aIgsDJKm2FloLlC2LDubLbVMWToPlaWl9epYlpWJ5HkzWYc+3W9jzUB095ZwbBs4kdn8rv0o7F6xv9696k7kJqdih9UkOPafij6dBT1AYnx99Iovls04DZmMyxOosx+/ZngLpO/YV80kcjF8Zk2cQ0sGZT99kQZrbti/8UITW7VpsrMbdgBd2rrhzWe9QOwmYwhlOfkgQCf8p2mInrcR5QVNN5GRl1qI2c97McBj7buC85ets3ejK31PnnFB3BX9gtYF4beYvEmKn3rnuSRBkOQ0WXCaWay9PXKOHmPfW+niRcbQtHotAwdl9WpOrRJLmjlJeJ4mTmDxyWkdOfWKGjuFHWf8cYH939L/b0VJ/T6gVpnwSEotQGCs1aOiA68gJt2Xcke3VWRKEzbwyfxccgR2jE1ukSOw5bP+hLxUkGJRdAJGDnyTEnTDBfRV9Lf/5c3KR6xZTUEcZxEo+3EbH5PYRnGmrKZmBQdlNZrIdCPoC5SNsZzCPngxTSxdQDIFBMiaPRCETRZ/NbohIk+nwaJdCFtmMffdw6jURRsSYM67HJ7/nQG6/rZ/g5x78cAtYEgLZK+yZBqzWc5Dke270JBZ6S1tsbPQHKBsZWEhkudOZxvt1w0l92KRNNUWUjtL5B4THJwQK2tQj3X429KcAbLXJtmhJDu77q1Kj+XySqxffBrj+i3EW4+vYR2qnh3W4eOXPTHXgevEKjUaP9msFoi2nAKaYJWnpDVrOfSdeUsFZY9vv8YA2U+e194JiL5ta6j0SkrKMeA1X/be/OHtrbrpdRuqUIrpVlYhOfgIwgfOQMTo+ciP0M9KLcUsVO1XlFdh0csbWH9zyWteoOMDbkfQvb0b3nncFeFHb6i6tUHnM/YeZv38nD/VA//EkqUl4+T8S5eQONkREmtzyCXNu0xYlzJrE5eDstpYSX9xUhY5Q2ptxqQLKNXoamm9aLOJjDGbcfwSA2TvTF7LAVn9mR1/BcVhQmcBjKVx+ZRX9sEUwNi6JrhyPglfvx7AvjmfdvXDXycSWBTyFUEa5qRl3rWjO4I2Nf2KtuBN11n+fZ/yqlvsesfiOGuZ7SF81GazSWwjOShbrx3rnuCgbF2LtKBjfYGyNIBraukCcuQ1hgmGB4McfDU27Jp3jXVuSW6A9nUJhblyeI06x+6f+uo+zo7VxXg8bqMtkO3thKxZQxk4m73oV6DMuBmXYmehqUHZqrIyEDs2adYkEFu2bpBd/QdS+7GQTrJC0Z1buPJXEj7p4gurnvMgmfQb0qf/isw922qYs3XvF48rK4EtHlfx3Rv+6PuYC+vcde+wDr/1no8FZgFIS1GvzSemw3+5BZrDArmn/mLgS9z0lsVaa6mg7LtPkha1G/45ptuS8eZ4tnTJM+pmBvo8sYExZOc7Nr6Pp0veusYtiLyHm+YLET5wOpK2HtL4jdA1fXXxXfpuZsQEYs4Sg/ak32m83mkt+jyyFueCG09WUMxb6rYZMWYTURQTr3i63n5W6DYGzBZc1MzoEm8uDA9n90icmscvhVgOff9yUFbfFlWdXqr7KkhtzNhzhJISRE+YJjBkyYGlXA4GyP48HQyQLWqZjuVUW8cwV0753sX4TiIzNhhTX92PtHvGz4xVZw25vALrl/5d43B30qiDyEwXSBwExnbvKMgIEEirk2NfdZlqeY1A4dfaaZYpEsdZBMr2b7PZJLYRHJTV+BRwUFajiUw3gj5A2RrpghG2TWaIoryyGp2aWT10W0Jct5AEoCz44DADeC3ahoDYsrqEK/slsHt2N8wfDkHgxEsoK9XB87ouGfG43AJqLCA7GorsuYLObNbcQSg4e0BN7Oa9JHYWmhKUrSqTI3XNUsaCLUuvLymSvW8X68gnz5mGO+ci8W3fQBCjdeM3glxB+oLxkCdEqzUceWz96d3toKVPpA/btd06jOwzG5tH2CL+lHGDCmorxi+2OgvE2juziVbZTe08/ZqCgVoiKEtOvehd879uurESjb29aODbtYM705Cl96ophApZMWIW+jAW3u1JrihJvq9LaOjye3+9jWnMTn9qM24fi8XVg1fx9qNr0bODG2PP6iv/qrJy3Ju+CDE2s1Cepxp4oQnQ5Pkz2QRneU79CVBV5ZE4CbJBBNC2lMBB2aZpyYyd2xhDlkDZ8qwsxNg5CYDsaAfm5Cv7zDWE/zwdtx3WoIIDso1uFAJjx3YKrR6LB2N6l33ITi5udLrGlEB8TA6Gf76DfWPffs4boX7C6gMiVpCMAX1733jKCyRv0FThw5eFlSPzJp5Qm6U4zlpqewgfttlsEhsHZdU2KbvIQVnNNjLZGPoAZWPFpSHWTTe7TWxW2uye3dUo22ckyGDzxA4hred2IzdNew2svPRirB14mt07o3sY4q5mNaos/GZugUZboLgQWQsFxmzWrF+Qvdah0UkaIgGxs9BUoCwBsikrFkLqMB6libUZPjR4TPNyY4Bs+Owl+KmfsGzp46dW47LVOEGz128lKpXo49GEToDnVfz4zlZ07yQAsdRJG9J1PnzHWCDRZShKIjgYa4hniKdpWAsQGEurX2hg21JCSwRle3UkJ4FukEY1HQBo6OfB/reDIIcmrz/uichw06tX+pELuDHMGTeGOiHt4DlDm6sm/d0Oh2HdPhD2j/jj6LIzuHv+Dj58yoXpzAY4Na6vXJMJAHl6JmLGT0P8nBVqGcGl0kS28oQmQ1FVpZiEyn2SLiAJA5IyaCmBg7KGb8n8U8fZcyOxMUPp3buIn76oBpCV5+XVMGQjbVeCJk94aLgFTmy8i3EdQxgYS6tVp3VreWBsXev8vvUW3nl+IwNhh30Sint3hYkmcvxFfX7ayC9EU4Tzp6RMwoC+j+qCOM7ioKw6K5neNQ7Kml6baV1ifYCy0SNsm1S6wLxNCANCx3YI0bqeyiJe2BEH84dJjzYYq78/qSyKynOnfaNh8+QuWLYLxc4511Au59qxKo3FLzS5BUhbljRmM2f8iuz5Q4DslCYvg7oMxc5CU4CylSXFAiA7yQrFMbVZfxWyAiZnEG42HhZvrGYdnW7t3eDy7VykO41G5pwxKPy79mw0OeNyW3geX/bawlhcYodswL9WYf3QCUhy+wJFPt+h6KrxMpXVtQ2/xi0gWiBuxhI2sM06dkY8ZdK/LQ2UnTV0OxsMmn/gY9LtIhY+P7+kRj/2mzcCQHqyphpKU7NwZ+o6xpqNmuOFspymcQxzKfAGJj/mg3Ftt2HLr7uQEpWC7/4tSOgsHLxJb+aU3brLHH8lb96uNs2cIwfZhGfukYNq4ylelC5Zwu7J/qN5PZ0rlqkx+xyUbYz1NN9bfOUiJDbmDJTNO3fuPiA7yh4MkK126nXb0QXlMu2JN5pzbl0xDrtFgsbdBMTSuHlWjzDkpbUegDs3uwTTLP5g39xenT2xbuF5kMzBuWPx6P2YJztP44L8XMPLx73WTrOEgTjOIlD2gzabTWL7jcsXaHypcFBWo4lMN0JjQVmSLogeYYfokU0jXWD95G4GyJo9FNQoo/tZXWQfFfOHgnHUU3sdtsxEGZYMOMLK4NznAKS3chtVDn4zt4ChLFBy9yqy51XLGcwejPz9+huQNbbMYmfB0KAsA2SXzoN0sg1KJYJYv1j2whvXcHn8JEx6fR66tSNNRnfYvL8a0nk2DMzO8l6I8hyBpZWRJsPCySfw8X+F5UoExJKG45tPeWLx/xYgavkPKN/6AYp9vkHRX+q9U4v5819uAWO3gDwtA1Gj7BBtPtHYi6pV+VoSKFuQVcQYkN07uKEg1/SBhusXU4SBbVt3LJrSNIwjrR6axkSqrELKzuO4MXgmIkbMRfbZ641JTet7k2+lw+k5b5g/GATXfn6QZcvwaw9XBhqMf2ctSov0420+89AJNmmTc1I9GzjFZRljzMqTtVviS7IIEmtLJNqOB8pNF5gXG4yDsqIl9P8ru3KlRkM2+/ddiHcSJhKjRtmjIi8Pqb+fYhMjd6e7o6JYP8+9/mth3CnunHsdltUOsAmMdeoVhrwMwwOPxmqVv/+UgByA0TiAHIKRYzCaQPz5/SA2jujxiAf+2HPXoMUn8Jfytx+uWr5RHGcRKPt+m00msQ3vG4SIiAgUFDTNJKZBG8lAiXNQ1kCGNYZkGwvKRltOEpaI2Bh+iePk/+4THHs9GIyysoZZT15SiRk99jNQdXynUCSG52iVEK28+sPtNvMsObZDKPaviEBVpXbLsbTKgEfiFjCQBbJXWYKkDDJn/oLs5WYGykW3ZMXOgiFBWZIbYE69pttDnnTfm3NlYSHOz1kHh17zGRjbtZ07hr3tjXsuixgYm7lgHAr/OY246BxMtTiCd1/0Zh0txoht64Z+z3tj5m/bcc/NDnL/j1Ae+D4KfX5G4fnGMfd1syCPzS3QNBaQuG5k33iph2/TZGjAXFoSKDu4txcblC0b+7sBLdY0Sfu5X2WrDrp19MDBXYYdzDZNjWrnUpyQAlo2Hf7TNNxbvRUVhYZnl1WUlmPRK16sr7vg/7xQnFuCiZ8IEjtDu7oiN0W7vm/tmtQ/SvL0Z4xZ2U3V5Iby/DxIpzsgeaETSC5Im5Dq4ytovLu7axPdqONwUNYwzUOALEldSK3NQYBswtyV7FsVPdIe8rRMSPz3C0x1J0+QFjIPulnAbdgZYTUpkwsMwry3DyEvw/DvLt1K2Tyx5aUVWDX7DHp0Ws++w87Wx1CQX4qNqy8JK+jausN6qGrAtLGlvn4lhRFDCABWFcRxFgdlVVnINM9zUNY0202rUjcalB3ZNNIFc/oeqlkykZepXaeurgEIgCUglrRop3ffDwJotQmpMfmY/+5hdt+i/kdAxzxwC5iSBRSdgGXPHYS80OYd6IidBUOBsmVZmUieNxPSGY4oS7/vuG/r3L0Y3WWJwDBr74bB72xBzBY/ZDiPYoDslRUusB64C28+7VUDxBJo+9ErviDv38l/HoLMfzjKAj5A2ZYPke8/GvKYi6b0KPCycgvoZoHKSkSbOYINdLP0A+ToVgD9xW4poOylw7eZ5uqbj2n2wKw/6xkmpXE/7UUXWnXwtBeSElouO6ayrByJm/cwR0M3xyxAfrh6p5H6srbbB1sYY9bp2Y0gBu3KUQLD6/PnXRB/La7x2VRWImHBGsSMnYISSbLK9IruRDKQNSt0m8o4dS8k2lsh0cYC8vT0updM6piDsvpvrqJbtwQNWWtzZIYEIWHRWpCUXvRIO8hT0hHnHsIA2eiFm0H/ezxoZwF5cQWWfnYUZg8GsTEvrSZd+fUJVHCJPqUGjLqVicEfBjNg9v1/b8LBnXcRFZkBcgpGRA76pWNDBHKE+Vo7N8hkyp9vcZy1xPYQ3muz0SS2X/tu50xZDQ8LB2U1GMiULzcGlK2RLhhhWOkCt6FnqgXFgxB/VXsvrortQhIF9HGhpRckXaBNICbsvmURGNs+BBMe3YGj61UzAbRJj8fhFmhWC5TJkb10FDKdBEdg2fMHo/Ry8ywTFTsLhgBli6PuIGmqLZIXz0ZZdjZbVjTX6jA+fXYN6yT16bQWIz/0RcKpc0hbZIvjIydg1ofz8dbj5DBHEOzv2t6dacaSdqysoASy495MJ5YkCogdWxA8EeVZ0mZtTp45t0BTWSDz4HE22I2btbSpsjRIPi0FlP3gaXcGyp7ebboe6kk/9uveglPFIR+3HsmX/JuxuGmxmAFG8R6hTbKkevuYPUxjlrRmSXM2aMFedG/vhnceW4urh641+n+toqgYcVMXItbOCWV5qkkLWTuDGDBbdPuWVnnmnb/A4ktmq1+Jt3GTDwb/MpxtBw8d1pj2tevhNfHpvrr30LGYnvhLeTQ0cFC2oZZTfl9JzB3GjpXamCEzYLPAkCXfJqPsUBwvwT2XbQIrfWUgwFc0KjdinbMkR+Dc9xAbIxNxyaJNMLxGna0Tix8qswCtpA3ccA19nxZWr1j8+DuSE/MZU5YcVtJ4ghi0+g4/vbONjVlGfr1TadLiOIuDskrNY7InOShrsk2nueCNAWWjx01mA7V7NjM1Z9TAGNunX2aALIGp4QdVz8KrS97lh5OCfuzDwSDnXtoE0oolzVj6OC3/4hiykwq1uY3H4RYwegsUx9xC1vwhTM6AZA1yFv/a5I7AxM6CvkHZ/LOnIbWzRJqXGxKiMjHmm93o3Wkd67h88vQqzPlqLS4duALPIQth3Xsu+nYWdPYIjO3eaT1+fm8btnpdQ2UlUCa5ifwge5T6DmB6sSW+n0O2bzEg5+8Co3/IeQH1boEYu1nMoWdBuHaAit4LoIcEWwIo6zNPcDTyYxf1npf1YC6DJXHlryT0ftSTActrF6jXIzVYIZox4Yqikhrg6Kb5QuRduW3w0hxddgb2j/jDun0gdjscxunAs+jzyFr07rgOhz2PNjp/eWY2YiZMR5zTMtVLxSsr2GRp0nR7VOTnaZWnZNZMSK3NUHD5stL4BKAuWbYCJSWlyM3Ng8PEKfVAVsUbCZClOBSXQnx8Aswsx4POi4HSbAwIK6Yj/nJQVrRE439LJHE1kgXpPhsUnHrZoSQ2ETFL/QRA1mUbQGgZD2otkBCRiymv7GNjZHLgZdk+FHsW31B7D7+o3AKpSQWwHrqPjTfeeHID/Nyu4PDvd0ESA+SDYuCHQXp1XpmaKmOrTLp3XK+0QOI4a7HtIbzbZqNJbJwpq7Qpa53koGwtc7Ssg8aAslE0M0kOvkoNI55+yi8GYx4IYrIFe5ZG6Gx4WbYcds8JjsFsntiBjASZxjTK5RUIdboCy7YhsH1qF84GxGq8h0fgFjBFC8gOB953BOY8FFmrxjdZNcTOgr5AWdKPTd/syVg1Z5ZvqWFgEdg67OWlWPHJfFgN2IAvnl/FpAvofLf2buj33AaMH7gXx/YL/+cVBVmQhS2vYcWWBXyIAr/hgl5slXZyJ01mRJ4Rt0ATWqD4XjybhI0ZN7UJc9VvVqYOyspLytGjgxt7h0ljDLMkUr8Wr5/ahhWX2KC1ewvVj61fY9Vnci9HImL0fAFEct1ucM/wt4/FYvpTm2Hx0HZs+HIbbh6PwIdPubLnKcBpl+qCanmlOCYOMWYTIVnjpfKOssx05ngzZfkCsNlPlTGFCyUSKSTWFpA42NSLKYKwioAq7Ysgbb0bVJwgAFYRhK17rOI2rU9zUFZrU6mNSIAsAfSkIZvh5Y4YOyf2TYoeZYeSpGREzfVm/0uJ3rvVpsMvArdOpML22V3VsoBBGN85FKd8W56ed3O09fGwWPR/WXAK/NO72/HPX8n4vIc/++71fswTF8/c93HR2PLRd5TkfwigrRvEcdYi24N4p423SWzD+m7j8gV1G7LOMQdl6xikJR02FJQtjUpA9Ag7AZQ1gEHunMmo+Vh4m53XOYfI02mwqPYWOf/9w9r0/RB3NQszuocxdqzbkD+Rl84FzXU2PL/B5CyQ7e2ErNmDmaZq9pzByA5YbvA6iJ0FfYCyJFcQP20iNn87Cx/+i2ak3dG9/ToM/b9lsOyyCG89ep8N2/+p1TB7YyVcph1FRlp1J6aqEkV/BTPwlXRiSaKg2OcbyPYvQ0V+lsFtwTPgFjAVCyQsdGGD4NTgvaZS5FrlNHVQdsIngh7opB8CatXLFA7KyysxdEAIez+Ts8SUJNXL3E2hPvoqI7Fm46v1LyNGzUPuJcMy0XOT8zHvRcEB2NLXNkASnogvX3BhgIHzj16orGjc5GPehcvsHZEWovodURgRziZQM7f6aWXGJFdXFj89cGut+MRytZ84mbFdxQvKzonXlP0Sw5ZAXEUJAwJlFY+V3afLOQ7K6mIt5XFLkpMZIEuOvQiQjZ4wjT1nUaMdIJek4e5MDwbIJm09pDwBfpZZ4OzWWEx4NJSNr4n0ZPP0Llw9xKW49P14FMrkmGt/nEkXkDOwFU5/YvHUU+w9S6SQBRNP6CXL377cydL8+d36Wt3iOItA2X5tvE1i+4WDshqfCw7KajSR6UZoKCgbYyFIF8TazdJ75VPj8qo/GMFY8skRndPfNe8aA1ZJeoD2NQUSNg9wuMg0Z+2e3Y0r+/U3i6Upb36dW8AoLEB6s8tGI3MW6c3+iuy5g5G1egLKsgzDxhI7C40CZSsrsG/6RkzpM69GoqDvI6749OlVTC+PSRK0d8Ov/10M18+n4eRCD1Tm5zJzV5YUovC0Hwq2jEap38cMiKXfgq3W3HGXUTyQvBDGaIHKohLmaZ0GwrRvasGUQdnoa0no0s6NvetMze5x0Tk1zhPHfNd4Rqap1V+b8ubfiK7Rmo1dEYDyfMPK5Lj03cwcgM18ZhPCwyIx6vW1bHD/aw9X5KUJ30ltyq0sTvrOMAaY5f55Qdlldi5rVwgDWvPPa9atrCwpgcRmLBJtLFGee9/ZYF0pAkqY2LNOs+fVAmpVFgJg4KuinAHFJVBW1JKlX12Zt3Xz46BsXYvodlyelQWJjTkk1mZIXbcC0ZbC+DNqjCOK45MQabWcOdDL+EP186Zbji0vNkkSWLYPqZYDDMKk//yOuCucdGDolg7/JxVfvy5op3/a1Q9bN1xDnyc2sHftZ938kZlR1KgikJMvIqJ0aV/febM4zlpkdxBvt/U2iW0oB2U1Pg8clNVoItON0FBQNkpkyepZuqCsqEwAVB8IwsxuYToZlnQgiRVLujjEkiW2rKYQeToVk/6zh+XpPeYcCnPlmm7h17kFWqwFKjIkyFo2GllzBOYscwq2YChkx0L0Wmexs9AQUJYG+FN/8MNnz6zCa2090K3dOvTsKOjGEhD77uMucOw7FzsH2SJhmjly9/ijoiAX5TnJkB1cA5nvEJAsATFiywI+YMeFJ32AijK91pEnxi3QEi2QvksAXOJmrzC56pkyKNv/GXc2+Arb/LdJ2T3ENwLdOgjOTkivmwfVFqiSlyHBezcDmG6Omo/M01dUR9bDlZDxB2DdPgB2nfxxYPZJzB+0kYEFnzzngrgr9xqVg3TDFjaBU3BVhfRYVRVIwkDqMA4lcZplwrIPHWYgrnTunJpyqQJlCWRVlDSouUFhRwRe6wKuxJy98PfFGlBXZNLWjScmVVRUhLt376rd7t27x5bkFhYaFmgXy9SSfkskEgbIklOvlJXLEGXuyAD/aItJKIqVIGLUfIQPnmlwhrkp2rSiAlg36DTMHw6pHlcHY1avA8hO5qtAm7I95fIKrF/6N3p2Xs/er1PMDmPgB0FMZ7Z7Jw/sD22cE3FRszbxXu3JNHGcxUHZpmxtw+fFQVnD27jZcmgIKFsjXTDCTu/lNnsoiH08bJ/RjU1BerGkG0vsWNKRJT1ZdYHAV+8xf7H4BMrePN4wJ2Lq8uDXuAVM2QLZm+Yhe94gZM4Yxjbaz3a1B8rU/29pU2exs6AtKJsQm4fJZkfQ7ykPdG3njtfauTHWGNOGbeeGQf9eimUDnPGXxTjG9M1cNRkFp8NQGnMZBbudBY3YwA8YECsnRqz/b5Ad8UBFnuaJG23qw+NwC7QmC8TaOiF6hC3yLhgWNNK3TU0VlF07cT8bzH3/mnKHHvq2k77SG/u/PcyZV58nNyAy3DCrLvRVVmNKp/BuAm6NX8aWY0cv2ISyHMNJPfwTfANTnvCB5cPb4fnJFgQt2Ise7dfhzc5rmTOwBtulqgqJK9cj2swRRdHKAd6KvFxIp9lDOsMRFbL6moh185bMmsGWsOedFdi1qkBZXZiyoqMvdXIFlA85A6O4dQP1YSQEHKrZkpKSOChb13BaHJfevXsfkF21FFFjHARA1nIy8v65hRvDnBExch7o/4WH+xYg0NW57yEBiH0wGGMeDMbC/n+gWFZxPxLfa3ILxMfkYNgnoexb/u6LmzDN4jC6dnBnmrDjB+1vcHnshwv9g69e31IrDXGctdDuIN5q620S2xDOlK3VhsoOOCirzCot5FxDQFmaoYweaYcYe2e9WmFsu1D2EaElFrqECzviYP5wMPMeufr7kxpv/SvoHkimgGYPAydeAskX8MAtwC2g3AKll08je9EwZDkNEQBPp6HImj+IMWplx3cov0nDWbGzoA6UJUbssE93gPSYaNluF1qi007YPn56DWa+NRu7frbHvWnmrFwZTiOR6TYV+X6OkPkORanfAAbClge+jyKfr5Ef5ICiqwcA7rBLQ+vwy9wC6i1QGi9F1Eg7RFtM1MpZj/rUmu6qKYKyOWkFzCkhOSakfVMINIn29nPejNlLHqfl8sbplJpCnfVdxsqyckj8wxA+aAYihs9G6v4zBvMmn5daWKMzu+gVL5wLuoi3H12Lbu3cEOjccKdJlWVliJ+3GuQcsDQpRamJiqPvQmpnidRVizXWryw9kzn9SrQdD5SXM5C0sZqyVCgCZOtKGCgWVledWsV7aZ/LF9S1iObj4mtXQPqxtKVv9ARJ5tC4k7RkM45fQvjA6bg1bilKU/kSfNGa5LzL4YXdbCxMBCWLNsFwG3YGxJjlwXgsEOp3g30faTzzy4CQmn36ZkZFNmzykogqXdu71aqkOM5aaHcAb7b1MoltSN+t3NFXrVasf8BB2fo2aTFnGgLKRo20BckXQI/SBcSMpY8IMWV1CdsmXWYfIPOHgnHUU/0SgOykQqz69gTLZ1avMObYS5e8eFxugVZtAXkxctZYIXsusWd/rdmynIcge/4gZK+2Rukt7ZhzYmdBEZQlRzDLZpzGey9uYuDra22JDSuAsH07u8Kq53wE/uCIuzZjavLOmDkcWYt+hWzt9ygP6C9IEsUjK+IAACAASURBVGz5EEWbv0fBdlsUnvJFeTZnwbfq55ZX3iAWkKzbzAbJiS7eBknfEImaIij7YxdP9h4ktqwphKBN4Yz907W9OzauvmQKRTbqMhbFp+DO1HWMNXvbYQ1kUYZjBbr284PFQ9sx46lNOON9AV9VOwCb8dV6VJQ1DNmpKCrGvWkLEWMzC/Ks+3qwikbPOXqISRNkhdZ3VqMYj/ZT/bewuElr1kCUFlCUKqB9VVIDddMSj5UxbsVr9KvpumJcZfsclFVmFdXn8k8dZ/qxJFmQ7u0lTACOtMM9xzkgR17hP03D7YkuBtddVl1C47oStjoC4x4JrdGLJUdeh90ijauQvDS1LJCZXgiH3w6wb/vrj3vi276BjHhC380tHldrxdXmoPfjG9j950/dd9omjrMW2B1A37ZeJrEN5qCsxubmoKxGE5luBF1B2fvSBbZ6qzRpx5o9IMgWkKasNkFeUomZPcMYwDquQygSw5V39iitqirgiMdtTHh0B8a2DwEJnldWVGmTDY/DLcAtoMQCskunkLV6HLLnD0bW7GoGbTVQmz1nMLIWDEWW5zQgX/msr9hZOBZ2F1/18sfbj69FLwVd2D6PrMWoLgvh/c0kXB1vVgPCMjB41i/IXfITitd/wYDYUt8BkPn+goI981EUfoRrwyppL36KW8AQFoi2mMwGzMScNYVgaqAs6ceSE4/+z9Z34mFs9iZN/1Ff7WLlfeMpL9y5ofzdb2zlNpXyZBz5my3VDv95OuLcQ1BRaBhdyF0Oh2DTIQC2HbcgyGp/jQOwoV1dkSVtGCuxPDcPsfbOuDdlPipkyh3bpPt6MbBVdvmixiaRTLKH1NocpUnJtViu5OSLGK+KUgQEqJKzLvqlQFqyiqCteA+dp0D3qrvOIun4h4Oy2hss5+D+GqdeKd4bBHbsCFvEL1iDeysDGSAbNdcbVfJy7RNtgTGJ/eo29E/GhmWEpgeCMeXlvYi5mN4Ca9tyq3T6jzj0f9mHgbMDXvVFt44eTGt2yMfBOq0wmWt3jKXxyWu+NcYSx1kEyr7RdoNJbIM4KFvTfqp2OCiryjIt4LyuoGy0ueD1Mtrxvth+Y8zg8v1J5piLnHOlxuVplZTkZg7GdxKkDmZ024+ifNUal8l38zD/3cMMvKXf1BjDaXNpVXgeiVvACCxAgvDH9sZi44qLmD/xJGyHhcH8+98x4oudGDogBD+/ux0/9tuKb/oE4steW/BpN398/KoP6zy895IP3n1+E/o9txFvPu2Nvk97YWSvpfjT0hxSp6HInFMbpM2cOQyZs35BlvNQRNiNxLZBttjg6MWWqAzospl1JHp1XIuRXRZh3edTcM58bA0ISw7Hchf/BNmab1Ho/gUyXL5G5LyBOGY3Gu4/T8SIN1bhs+7+GPJhCKvDqtlncWBHlBFYmBeBW6DlW0B2LYKtmom1nWUSlTUlUJYmjnt3FLSzo68lGbV9acnlm894MUB2+Gc7QKseeNC/BcplRYh3C2HAFHMEdkwzgNmQUoTvjsS0Jzcz1qzrWz5Y9IuweqX/064IP3qjIUmiNCUNMROmI85pKSoK6wOzVeXlSFk2D1KH8ZAnq3/ei2NiGShL4CwF0WkXga+KgCxdo+O65xXj0zURkKX4qalpNffQtbr3sgx1/MNBWe0MlhkSCGLH0pbsvh7RI+yYdrnUKwB3nTzZc08TEqhsvaQa0oud/eZBYWXpg8GgVaKLBxyBLNswkzTatRyP1RgLFMrkWDjpJIgl262DB/uW0irBPk9swNUL6t+FivmShAFtYuCgrGiJlvXLQdmW1Z61aqMzKDtCf9IFW+wvMoYsAbJ3zmjHqjjlE8U+QmYPBMPPSnWHtFxegd0LwjG2fSisHtuJY553GGO2VuX5AbeACVrg6IFobFj2N6ZaHsHob3fh+7cC8dF/fRlISh/xHp3Xo1tHd3Tt4MEAT6bHWu0cS1ESQJQG0NcvMbq6kORAW6FjYNlrLib2c8KEPrMx8JXFeOuxNdXlcYflT6EMlHUZuhCHRlsiZfYgSJ0HI8FpMG7PHIprU4fihN0I+P1ihUnvz8C7T6xhs8cs/WpJA43lbksOwahMggQCdXh6PrIe5HTmvRc347MefhjaPxiTRh6A71rdlwuZ4KPDi8wtoHcLEIOJtP5SturmnFPvBdEiQVMCZUf228jel47fB2hRs+aLQkst6d1KDktIuoAHw1tAdicekXarGEhF0gbFklS9Z5qbnI/FL3sx8GfO894IdtoLWsHSs4MbghfubVB+JfESxIydwoDZyuKSemmU5+VBOt0BSbOnobKosN51xRNJLi6MWZu6eZPiaaPc56Cs5mYhprSEAFlrc0iXrQHJ5NF3JWP3EUTarGDPenLoMc0JtdAYpBfr+MKuGokCi3bB8LVWPQZuoWZo0dW6eS0N374RyL77fZ/eIIxf2rkzWTdtKt73aUHH/fBugZjCQVltrGZ6cTgoa3ptpnWJdQFlRekC+lA2Nhx0i2RasGMeCMIpvxitknP9+RT7IJFTL3LupSrEXsrEjO6CtAFpyJKWLA/cAsZigejb2dgVGIkVs07BfngYY6Z+/XoAPvw/H7z1jBd6P+aB7h09BF0+mvmsBjm1BiRZfHfGWhLE32n21Y2l2bPzerzx1Aa885w3Y71+3mMLfn43GBY/7Ib10DAGUM4YdwRzHY+zjsC6BecZmzbAM5yVmdi1pFl0/UoKkhJre0u+eT2dgcTUmWCAqYJjLip71w5u6PevjazO9+4J3ogVNWUb0j7hF1MYoDrL6gjGfLcH3725FR+9LNpxPZt1JsCAyqMI0KoCdEVbd23nhm7tPdD7sfVMhJ/YwiO/3o2FU07i2N7ohhSV38Mt0DItIC9HlNlEQcZAoj2rozmMYSqg7CH/f9jk1puP3me9NIe91OVZUlKOgR9sZ98nclBCzr14aEILVFYhdc8p5oE+fOAMJHjtRoVM/2y59Z9txdiHt8HhEX9sG/c7vqjWmZ36pSdKS3VfQl4UE8eA2fg5K1BZUlrPYKWJ8ZA6jEPqulX1rtU6UVWFRHtr5virOPZerUvGdsBBWfUtkuq+SgBjrc2QOHO+IFkw0h6p+08yJ3c3hjoh5+8I9Ym00KvBM69gQucdbHKExss2T+/C2a2xLbS2vFoVFVXwXPY3aKxG45RuHWj84gEaI8rUrAomy21Ydp7d895LG5khRVB2vt0B9GnraRLbwL6B3NGXhn8DDspqMJApX9YFlI0ymyR8LO2dG1Xl8IPJoI8L6chun35ZY1pF+eVwJI+SDwZjwmM7kRKt3AOxvLgCAQ6XGJPW/rnd+Ds0XmPaPAK3QGMscPZEPGjJPIGatNSfGJivP+nJGJmMPdRecFZFgCABpKrAwFrnqx1cCaxWAcwkkJYAQpIL+OD/fPBV7wAG5hKoS/nv2db0ov7bva7j274BjJnL2LEKICzVl8r8WTd/rJlzrp6Jxc5CY0HZeglreeLSGSkDmwmA/u3zUFbOt5/1Rs/OHgzAFtjFBIgLgG6t9lFk6hLY3N4dPTq5M7B7wKt+LD0C3EkiggdugdZggbxL15mMAXnGNuZgCqBsSaEcPTusQ9d27rh+yjgngM4ciUfvRz3Z+3H8INNwQGbMz2VjylaWnY/Y5VsYkzBixFyk7j8DkMCvHsPhhX/CsbMf64O7vOMDm/eFvsx3/3GBJEJ3x2MEzJIedcKCNagqq+9HouDiecaCzdjmr7YWsoibDMxLdNSfjwu1GTbwIgdlVRsued4M1tYSa3PEWE8XxphmEyHZsh+kn3xr3FKDMMFVl6j5r6RE52PBe4LsHo17xzwYxHyoSCNV+05p/lLzEujTAvExORj2SSgbM3bvKIxDejyyHqcOqZ+AYuSdtoIGvTjOIlD29baeJrH9zEFZjY8RB2U1msh0I+gCyhJDNmqEHVBaf3ZbWwukRefVLL8gPVlNIeqvDOaciz5M8945hEoVWmU3jydj0n/2sE6j95hzKMxVrTOrKU9+vXVbICkpl7EvaVk7aav2f8UPxP6kDyKxPWk5vFrWZTWzVQBhCbQTWJds6fwTGxhblMA70mwl+QECBmmGk2QJcnPrL+kzhtYgVtRcu+OMzUsM0loAczUzt/fjnhj0/nYQUK0piJ2F5gJlNZVP8ToxgEkugpjEP7y9De//exMD3gl07kIsXPY8CIzmuuAtgboErtMz0PMRD8a6JfCeNHwJ1JbJdGcaKZaN73MLGIsFEpasYwPqpPV+xlKkeuUwBVB2cC8vNhCbMVizJ/p6FWyCE/a/HWTlowmso/uMEzRuAjMYXRb54VE1kgaRVitAx/oMyTfSMftf3qyPPfcFL3iOC2RSBm896orTgWd1zqrwbgyizSciYbErKpUAs9lhexhYl3NAvVRCsocHi5fsZryscg7KKn88pFNsWdsl2lki2kIg/cRYOyFmsS+bZIia7WUwh3bKS9S8Z3fMuY4Jj4bWkJbGdgiF9+i/QE69eGidFgj1i8Bbz3rfJ/S0dcc088MqjfHWs0L/IXjTdYjjrHl2Yejddr1JbD/3DeBMWZWtK1zgoKwGA5nyZW1BWZIuYBo/Ixo+I11WVFbj1GtWnwMazbZv2Q3WASRW7a5515TGl2WXwnPEWRZvyit7EXla/9paSjPmJ03SArT0nJbmEzuSHFfRUn4mFdC+WiagmqVaF1yjYwZEEnOyvcACJf3W91/azDRdrQbtBy31v3I+xSTtUrfQBESSHMBbz1R3BhTt0lbQD6QlqwQupiXVljGom5ayY7GzYAqgrLLyqzpHMg9kk6/6BDKNXwLiiUnLZBEUbajItmUMaoFxS8A2MaHJcRmB4Ldvck+6qmzNzxuZBSorEWU+ickYFN3RTpKoqWtg7KBs8JrT7F3xzlPGBzDFRuWg3/MbGTv2h7e3Ij/fOCcQm/qZMqr8qqqQ8cd5RIyax0Ct6IWbUZKsnb8Gbeuxps9mmD8YhImP+iFw/E6Q869u7dzgaq679rHs1l02kZO4XGB21S1Duv9GBtrlnz1V91Kt40RHO8aYLYy4Weu8sRxwULZ+S0jtLFnbSh2tED3agT0H8bNX1ujHSraEoTU4AiFW7Ny3DsPsoSBhvPtgEKa+uh+3z/GxbP2npnWeyUwrgt2vYbWA2ff+vQlpKfXHXgTG0ni137NeHJRtoY8LB2VbaMNStbQFZWlGmzFlHec02BriR8fx+T1q06CVV0sGHGWMWou2IQg/olyn7mxgLOye2Q3zh0OwddIllJXqd8mW2kLyi0ZngVD/G5gy+hBjoL7/0ia8/vgGpguqDGCtfU5YikeOSkjHh8BGcgI14oudDMA9sEO/jBOjMxzA9GJJj5XYT4z5qbBsX5Qi+LSLP1Y5n9FL8VsqKKvJOKQnTNIG9ycFPNG9gztIw7b2M6kgm8DAXDemLUWTCMS0JcCWB24BY7NAQfgtRJODFsvJel9CrY+6GjMom5dRiO4d3Jhswb0I45rc81p5kU1G0gQT7fNg3BaoKC5Fos8+3Bg8k20Jm/agokh/IHqQ5X5Ytw9kWrOr+27GiN5r2fdrzBuuSIvV7dktCI9UDcxWViLFZRmkthYovKZa6qw4Ng60/F1ib2WUQB4HZe//vxRH3oDExlxgyE50FMaVI2wRt2Jjq9KPJVas1aM7GCuWnF1btg/hrNj7jwnfU2KB03/EMV8gNFYgogfpze4KqD8RJZJAxHHWXLsw9Gq73iS2nzhTVknL1z7FQdna9mhRR1qDsiNsGyVdYNkuhM0Cju0QotZ+OUlFsHlCEDW3fXonctOK6sXPTJRh+RfHWHqzeoUh7mpWvTj8RMuzgMeii2y5P+mU9n3aizFcBSBLOaDFlo63EwAvAr5I65VYiCRJMNXyCAjEbY2BZlJJZoAAPhpkC/qp1SBgtfSCKEXw5xHNUgQNsaHYWWhpTNmG2KLuPeQEbpLZQea0jHRue3TyYEBNLcmIGqatwLClCQj6v5gwZB9awyRCXZvxY+OxgMR1owCyrFxvPIWqLokxg7Lf/Vdw7LHKWv2kdVMalZx3fdbNjwFu7720CXHRXNOwKe3f2LxKU7MQu8y/Rm82LUx3mQFVZbh1IBpOz25k/XD6nfelsGz2ncdd8Yf3CVW3KT0vuxGJaDNHJCx0QWVJbfCYjpMXz4HUfiyK795Wej+dTPP1E5iXq1aqjNNcFzgoK1g+K3gbpDZmrJ3ibGhVhS37VsS7bmXP6K2xS1CcoBuo31xt2pB8RVas+UPBCqzYvbjzJ2fFNsSerfGeQpkcCyedFEgcRJ5p644x3/1eS0acJNZobLx76z9MCmCu3X70bOthEtv/+m7h8gUaHmwOymowkClf1gaUrZEuGNkw6QLbZ3axDxAxZdWFy/sSYd4mmEkcLP+yfqeuqgo45HoL4x/ZwXRm9y65gcqKKnVJ8msmZIE1c85hwsC9TBKAsVxJv1WUDagBoe4zCJmuazs3dO/ggT5PbmByBCO/3o1lM07j/CmpCdXccEXduOIiYw6T1AIDYBWX0BMA29adaeWSlMOsCcdBerpNETgo23Ark/wGsZpJ57hbR2HGXJicuP+/IYr900w6TWDQRAT9f/HALdAUFogeO5UNuHPOGRer0lhBWRf7/exd/OkLypdxN0Wb1c3Dyepo9aSdO2ZNOFL3Mj82IQvk34zBbYfVDPiKtFmBnAv68WRfUV6Ftf18MbbNNli1C8SKfpvwybMuoO+P8w9ekBfWBljVmYw0ZmPGTkGc01JUFBXXilqen4ckp8mQTrRCqTSx1jXFg8QpExljNve0/sBnxfQbus9BWSBl6VwBkLW2QIy5AMZGjXZElNN69lxGzfVusfqxO+eKrFhhfEusWK9RZ7lWbEP/ofh9uHktDV/03CKMkdu64fUnN+DODUGq5vDuKNafcBi1uwaU7dHWA6aw/chBWY1PNwdlNZrIdCNoA8pGmwnSBfcm6S5dMLNbmODY68FgkKasqhAy8yoDY8mh1yGXW/WiJYRnY85bhxi4u6j/EaTG5NeLw08YtwXIG/3CKScZQETadD0e8RBm+9opcZIkgofk2f4RD6bPSTqdooMk465p05euvBwMdKOl7b0eE+xKS1hqwDo2o0rOptaDZAicrY8gNbW+HlFTlZyDsvq3NDmLI8mNd1/YxJyKkXMxYeJCAaylyQ227MkDbz2zEUMHhIB0cHngFtCnBUoTpYgaaY+oUfaQZxkPu9IYQdl/jt1hqxVIuiBD0jSTYura+vzJRLz5TDXr8YWNiLrJVyKps5cpXcs8fgnERgz/aRpuO7og77p+pJlOu1/EtCc3s/6587+8Yf/OOtb3+PIFF9w8rj0AXByXiJjx0xA3cwkqCmr3T8rSU5E03R7SafYoy1Suk1uWngGJjSXbytIzjaZpWjUoW16ORAcrQa7AygLRo6oB2XGzap7F5B0tT46JWLHz3j4Ezoo1mn/DFleQiooqbFx9Cd06eDAQllY9blguTITT2G/C0B0MlJ1jtx/d27qbxPZDX3/OlNXwpHJQVoOBTPmyNqBsVAOlC1y+P1nj2Cs1Lk+pmcrllXB64wDrzI1tH4LYS7U7UqQTu33aZVi0CYHNk7twyod7+1VqSCM5efRANFt6TQAqMfSIyUcfCmXgEC3HpvMU582nvfFt3wDMGHcEhloybyQmanQxZLJyLJ7+Jz7vsYVp4DL5AUUN2GoN0p6PeODTbv6YP/EkcnO1Z6w0uoBaJMBBWS2MpKcoSYkyxoKm54UY6OSorq4UggjgE6D/Ve8AxjbXU/Y8mVZqgYz9R9jS1BjrmUZjAWMDZUsK5ejV0Y0tQTzo2/ys4tFf72JgGq2qcLY+ajTtxguiRwtUVCJt/xlEjJovMBSdN6DonnK/DbrkKi8sw+pem2Dx0HZYdwjAone88GbntejZYR28HdSvklPMpzQ5FbHWM3Bv0rx6EzpyqQTSyTZImj0NFbICxdtq9oklS/qyiZMcas41905rBWVLJBJBUsLGHAnjxjEnkDSevGsnTAzcHLMABbfuNXfz6C1/eXEFPH87g7GdQhkZSdSK5axYvZmYJ6TEApK4PPzw1tYaktPXvQPw8au+sBq6k4OySuxl6qc4KGvqLaim/JpA2by//mHLEKN+s1OTSv1LW+wv1nyU7pxRPqstuZmD8Z0F/diJ/9mDovzyWgndPJ6MKa/sZYCtx69nkJdee0lTrcj8oMkssN3rOix+2I1PXvMFLYvvRjIDBAQqMjNr5AaIrenGdDH7PbcRP7y9jbE0b17nXuW1aTCSE5hldYTZmliu9ZxwtSWAjRyUeTDnZATWEmhr7IGDss3fQvQ/6DjiAD76ry9j1grPlgK7uppVS5q2773kA/Pvf8fZE4bRGG5+a/ASGMIC8QtdBH3ZNV6GSF7nNI0NlP3+NUFHdu5vO3Suiz5v8HO/ymRsiF3z4cs+iI0yHnazPuvJ07pvgSp5GZKDj+DGMGcGzsYs8UNJUuP7ZYcWnMaUx31Yv33Oi14Y+poLAwt+6+WK1Gjt9EJLUzMQa++MWDsnlCbVvqfkXiyTMUhePLue/qxYu5R16xgYmLR6lXiqWX9bIyibdSgMEhszSKzMcc/cin0Hon+zxy2rpex5i56/CeWy+j5DmrWhGpj5DuersHlqJ3PaRas9zR4IxtRXuVZsA83Jb2ugBYI2hdewZmli1WrIfVC2W1t3mMLGmbKaG5+DspptZLIxNIGyMWME6YJYx7la1/GgWyT7KNGH6ZRfjNL7zm2LZcs6aCbRfWhtj+6y7FJ4jTrHOnWT/rMH4YcbP4uvtBD8pFIL0LJ2cqpFHuI//D8f9Hp0PWgpNFsKr8DIFI6J7UrOhtzQo/N6vP/SJgz5OBSrZp9FWlLt5WdKM+MnayxAjMYpow/ho5d90KOTIOBOQBmzMwPIhH1qjy97bcGKWadQUmL8AGxNBRV2OCirYAwj26X/XZLB6P04/d8rYdVW/7/3fmw9Y2ITuz36draR1YIXxygsUFmJ6HHGoy9rTKAs6cjSu/3TF5tPRzbqZgYGvOrDytG9kwe8VzU/W9conttWVIjygiIk+uxF+JCZCB84HfdctqE0o3GgfEF6AZZ29YL5g0Gw67QF09/wRPf2buj3mCsOumvHwC7PyWMyBqQzK7t5p1aLFEfdgcR+HFJdlgGVFbWuiQeJkycyYDbnWPMvjW9toKyoHyshuYLRglzB7ZFTcOMXZ0SMmoe8K6odtontZ+y/F3bEYfL/CaQhAmLHPBCECY/tgJ/N31wr1tgbrwWXLz+3FN+8EcjkDCYMEeQLZtvtR9e27iaxfc/lCzQ+nRyU1Wgi042gCZSNGmmHqBF2QGmpVpUkVix9nMweCAKxZZUFj1/PMlkD0tohcFYxnAmIgd0zu2H+cAgCHS+BloPwYBgLHNsbC6tB+9H/FT8GvNIAUanMALEx27qhawc39H7ck4GGo7/dBXIixYPuFiAAi9ivtEycOeDqIADb4hJyEewmhnFvWk7eJxCrnM+AdGNbSuCgrGm1JDnOG/u/PSCvrgTeCJIZ91m15DCOvTvau7N3xGfd/THV8gg4I9602tkQpZWnpCF6lJ2gL5vWvPqkxgLKng+LFFaQdHRDQVbTs8XKyythN+wAA2Ppf/e3z3cgP9+4JG4M8SzyNFVboDQzF/HuIQgfOAM3Bs9EvFsIShv5/7rT5iAcO/ux8cDMFzbg06fXsmfO/iN3ZEk1vwsqS0qRsMwN0WMckPPnhVqFL4wIh9TOEimuK1BVJq91jQ7KsnOQaDMWEmsLyFOb17t9awFlSyRxkNhZMDA8YexYYZXlCFvcGj1HYMcuMG12bNyVLMzpe7BGJ5bGuWM7hMDl51PIy+ArOev9E/ITBrdASXE57t7MwMmDsQjccA3LZ/4JxxEH8WlXvxpNWQJlGcGH+RZRIPwY4fF3HJTV+MxwUFajiUw3gjpQtka6YIStVhUk3VhivtKHivRk64aifDlIpoBmFUm2gOQLxJAeV4AlA46wa859DiDuquYOm3gv/1VvgZ2+N0Ag6vsvba5eokiOtRQYmATGthWcbREz7vUnBQbchCH7EOp/Q33i/KpKC1y/ksL0dQmgIjCbtDwJzKpl+2rZh+4dPdDvXxsx7JOd8He70qIAWGUG4qCsMquY3jmamBnaP5g54uveQejs1ZpcEGVM2rszjWli0R/by3XBTa+lG1fi7BN/scnd6LGT0ZwvN2MAZdMSstCjWkf2RPCVxhm2AXf/vvUmenUWZBP6/csbF89IGpAKv6WlWoCAWAJkCZhlzNlVgSiWNBzUzIjOxqJXvNi4YEK7QIx7QXj23nlsLYIX7tVsxqoqSD392fL39J1hteIXXr8Kqd1YpCybh8rCwlrX6CDvwgVBX9beWqXUQb2bDHCiNYCymdv9ILExh9TKHLFmglzBnWEOiPjVGRHD5yDz5D8GsKzhk8zLkGPFN8dh2S6EPcM0xiUfJwv7/wFy5sUDt4AhLZCeUogrF5IQFnob3qsuYa79cYz7eQ++f3Mr3nrWm01y1aymrO5vk57ssE9CsWHln0xT1tl+H1vRKvhxqSYBMZ8uxrf/7Zvc0Zem54mDsposZMLX1YGyMeaTWEdIG+mCsqIyBqgSIDurz4F6FiEHXuM6hNaAruTgi0JVZRX2r4jAuI6hbKN9OseDbhYgFuVGl3+YN/V+z28EgXwCm60u+Cow2ojt9t6Lm5lEQWsAAXWzpm6xL52Rwn54GNN9pSXdBGzX/UiKmrutDXxVZUkOyqqyTMs4T++iXz/dwSYa2LtIid501w4eDMwd890ehF+srRvYMqzAa6FogWSvLUJ/YuIcxdNNut/soGxVFfo9ITDMV1nva9K6J8TmMdkb+jaRt+b/b+88wKq40jeemIiauonZlM1/s7tpmphEE2NM3JieTdUUTbOA2AUr9t5iLFEDKAKCxkIRBHtX7CgqKiAqRUS6jdx18gAAIABJREFUHRAVa97/851h8HK9cLk0ufDO81wud+ZM+803Z+a85zvfN2HglgrdP3dmXQSuiufszEBEiDjboj/ix3njYnzJBXzxmu37kBZr1uFBb3z4sPae1LreNCQeOG4Wzung1ar+SHHxAm5q7QdZ6dKhCKT07IS0kYNwI/v2hMIn//xTeW4mD3Qyu4/yKlClRdnr15HSrwdSutsiqXNHxLXpoTrgDv3YT9lNzJCZuHbeusTLG1dvYHanUHR5MOBWnNgafhj88koc3VryDorysi9u1zoJyIiVxPjzCA05gYC5UZg+eicG2K9Bm08CDRI5F2xPyujKT1+ZB9svgjC02wbM+HU3ghdGY8/2ZKSeyMJNA/1Eb2dRlLVO+yjsqCnKFkamCswvSpSVLJkqdEExztO2hq8SXHs8tvi20qunRqtl0sO4sM++/OXiDSteseI5K16y4i3LqWgCksTp9+E70LKJH15/zEM1rkTwu907TRp+zioBlMQolaHHa4Jii944lxZJQDz89HAPklhLeb3qnoD6dzX1fC0SnImF+svClWKGRTGxCc6yQgIS0uDtZ7xUp5FxnaX/fuVhN3zVeAG8p++3wjPkIRdFIGHQeCWsJE2aUVSxclt2p0XZz/+jeQl2/K93uZ2j8YZzcq6i8zdLtc7Cmi5o+dZCnDld8SETjI+Lv62DgAhqJzyDEdlqiBLZYofPwoXDCSU6+KsXr2FaIy90rjlfxZvtWtcNL0vImzp/wLXrQty8cUtsNbWDzJ17EG/bGydGTcG1zFtCn8SYTendBalD++Ha6duTlaVO+FUJsykTfzO12XKfV1VF2cvhYZp3bDc7HMtL5nX0x56IbD1I2UvG8oL5QsoddCl3sOy3Q3B8PEjLiSIJu+72Q59/BmOzd0wpt8zVqyOB82cv49CBk1i/NA5zXcIxzmkzevywAt+944e3/znbpANPk394oOVbPujeejnG9guB9x/7sG5JnNqObM+SSW9niSj7rI2zVXz+R09Zs5eYoqxZRNZboDBR1pLQBZ3q+KuHl31Nv9tATPp0oxY/9l4/7FuWpJZLnFiJFytxYyV+rMSR5VSQgCTJGtMvBF+8Ph8N67rhxTpaiAHDxE+GcRxffsgVH7w4F33arER4KL3OCtK07Nfi+YdVpnkRj166XxrRzlCerrrwKt954qtcFz3sgIhIVSnuq2XULCutvyxQlLWMW1UrnZSQCQmT0uRJT7z+mLuq5wy9zA2F2s8azsMfo0OrGoLqdT43byK+6wAlzJ4OXlXh534nRdnun8xTIyg+fsa1ws57hOOGvFEzLmhUdxbWL2PokAqDX8V2dD37IpLnLkfkj8OUOHvU6Q+c234AMPDMKu4pR6+Mw8inZ6l2Q9fa8/DdI1pnxef/NxX7Vx8ocjOX4o8jvvsg9ZH/9Sk34RhS+nRF6gBHXEnW2hr6MvlOcuqrhNnTfre3UwzLlcf/VVGUzZg4RgmySZ3sES/esT87IKqV5h0bN8oTV05V/uSfN24AC/vug8MTQbC9W3MskgTVPeouRsBQdgqXx71QVbYpXq4njmVi1+YkBM2Phsu4XRjcZT3af7ZYebK+IiHrDNuMNi546YEZygO2zSeL0b/DWkwbtRP+3lHYviERCTHncOVK2SYO0dtZQxyX4T82f1jF53+N5qiQCxcu0EmvsHuFomxhZKrA/MJE2XjbXtpQw76jijxLPfuk3d0FX3QyT16C45PyoPND978F4Hyq5pkRsSYVffLiys5quwM554qXQKzIg7DihRkZOWoYoYivrz3qBhnSKwlzDOOO5ouvtV1UYihJECWJopjxvGQXPjf3uorbavdFMJo/Owfimfdi7Tzh1XiYNcXXkkE2s5b+skBR1gyoarx48rDt+PKNhSoe8wuqYyRvGFfePfrygzPw/vNzMbDTumpMyfpO/WbOJcS27wVJIiqdvxU53SlRdnofLamWhC7AX+Ufnslr2l40eEhrFNa7bwZ+7b+1IjFzX1WYwI2cy0j1WYuon7XkTdH245ARvBk3LlrmxSWI/DstR5+HvLV2woOz0aSOK160ccaIFu64nF24N7d4yYq3bFz7Xji77lYYjqspyUgZ0BMpvbsiN6Ggs8dfly8jyaGrEhKztm2v0CtUlUTZ3LQ0JPewR4p4x9p2QVwbRxxu3VvFHz5kNwaZew9XKFtLdyYJuZx/2IYuD0loAs0bVsLudXkgAO7tdkJCF3AigTMnLyJibzpWL45R3qritdrjh+VFe7k+5Ymv3/RBl++WYXTvEMyeug+rAmNwcE86TmfcHvO6vCnr7SwRZf9t84dVfD6lKGvWLCjKmkVkvQUKE2WLE7pgRJM16qEmD7ZLWdfyIURtSEWHmv5q2Zh31qjwT1mnLsP1x23q5avfv5fi0Ma0/PLV4Z/MzFyIyCDDchvWnZXnEWbkgZkXhuDFOs7KO1aE2nEDtkK8ZjlZRiA1KQcTB29WSYiaPu2J+pLYpFZehnijJGfSm6mE75ou6rqI52ur5v5q+DQ9Xy3jXtzS+ssCRdniEmM5IeA2YTc+b7RAdU69UEvqT8N4W854sbbmuf7LR4HYvimR0CopgSuJKYhr66ga9DmHKi6szp0QZedNCFEjK16q/QckyVd5TuIJ++ZTHpqHTi0XOP5c8d7I5Xl+3HblIfDX1Ws4uXwbDnedqDxnI38YiiT3IFzJsMzGL2dfxZTXZqNTzYXoUMMH7R92x0s2M/DOo1PhOzK48BwTN28iba6/FmfW1Rt/XdO8zK6dPYO0kQNVnNmLUREFgOWmpCCpe0ckd+uAC+EV5wlZVUTZ9GlaGAjxjpXYsTESquDb/oj8diCSvJfhr6tl6+lX4OKV4seJqEyMf28dOtZeZCDE+qHrQwFKoBWhllP1IXAl9wbiDp/F1nXH4e8ViakjdyjPVfFg/bD+n8qj9TYv1/tnqNGoP30YgH62a9Q6sq5sI/7IWVy9UvnEfL2dNcRxKf5lM90qPp808qanrJlbkaKsGUDWvNiUKJsfuqCNQ6Gn5txqmxYA/S4/nIy7FVw/YGg42ucNA1k2IVKtv9krDt0fWawyVvr034drV4qOG1XoTq1ggcR8lSG2EvO1UV13FTNGeb0aiAe65+sLtSUjuZvyBhPBVtblVHwCW9clQmJUyrDm1x+blT9MUxdZDR+q6hrkDSWRkAMyVPrjl/9U8X0kXAHF1+JzL4uS+ssCRdmyoFm9t7EyIBZtPw7AG4+7K1FWxXrOq28l26zUA+JVq8K72K7iCINKYi45EdHKWzaurQMuxR6rkKOqaFF2idtOFf6mXi1nHNxcfqEDjkaexof15qrOxRdsXND2k8XIPJdbIUy5ExLI3BMNiTUrCcEiWg5QScGyDxX0VDVHaX/gYYz4h7ty3Ohwz0J8XdsD9Wxc8clTU7FlfuGeree3hyHOtjcSnMbgSqoWuuvmpYtI/200Uhzskb17Z4FdXzp8FMnd7NXnYtShAsvK64e1i7JZ2zYrD+PkrvY41r4b4n5xxKFv+6jrHTPQFbmpp8sLXYm3u39FCgY3WAG7ezUHIRm1KSEKej4VzNAEJaZa+VeURFdpSdnYuyMFS30PY9akMAx32IBOLZfgqzcWqnBzhm1D/f+3nvbEN0190a3VMozpswle0zQv1wNh6TiVfrEiBriUOVy9nTXYcSmesZluFZ+PKcqatQOKsmYRWW8BU6KsudAFS36Nggz3kNg7YQFawH9Jhjqm2VrVC9nBxh+Ht5xERnw2xjZbp16yhr++GiciKn+MIUuuZKB3JH7+cJGq5CWbsRZn9JbnliYEOith9tW/zVRxZkb02kjP12JCFqHUZ9ZBlaRMhilL1knxIpY4k3qsSf2Bqr5r5sXdre2CBg+54p1nvFQG+N+H7yDzYjKvqGL6ywJF2YoiXr32I6MLJKyB1BvKS17Fgdbq5vx6ubYzXn3ETcXtFq96Gc3AqWIJSAdwXBsHxLbricsJ5e/ZXJGi7CrvMCXIikf3njVHygVsemo2vm3mqz0PazrjyzcW4Fjs+XLZFzdKAuYIXE45heMu/vlJwQ47TEbGsq2QkAfFnRb3XI2BdT1Vu8H+3gX4xMYTL0pHwyvTEb3ZtIh6JS0DCQPGKnH27JoQbVfXryHDdaqKI3sm0BdqyF7eQYiXrHjLJnXrABFpy3uyVlH2+pkzSO3bQ4UqSOjQBXE/90B0q95KjI1qOxJnQio2/Iy567Tk10j0e2YZ7GpoYQlkFKeIskNeXoF9S26PM2xue1xeuQhI5J/0lAsI35WqwgJ4TQ9XybAkedb3//VHs39rSWQLtAttXNDw0Vmq/W37RRCGdF2v4r9KHNjQkBNIjD+Pq1U0ZIXezhrkuBT/tJluFZ+PKMqavekoyppFZL0FTImyRYUuEBFWxFh52Ik4K9PZ5Bx0fzRQvUQ5PB6ErFNXEDQ6Ah1r+aPz/QFYPS3aKnuZ9KsaEZaObq1W4L//ksRPrsrz6jZRUHlmOeOlB1yVENCv3WocOXR7Flh9m/zWCPh5HoTjTyuUt6uEDZDQDvlhBoyCpMuDVuLtSnzJ+ve54o2/u+N/r86HsN6wtGI8rXjdyoaA/rJAUbZseHIrxSMw1zlcddRoXrWut3fw1JQQCK5o+vRs5UXPuN3F41qaUue37NQ8ZkWYTUotzabMrltRouxGnwOaIGvjjC2LCg6hNnuQxSggwquE2NEbn82f9ULYtuRirMkiJFD+BCS+bFrARhzqME7znv1+EBKmLEB2VPG9Zxf8Eoz+j8zWPGdrzkPzmp6oZ+OMvh+44mTc7cls/7p+HenzAlQnT9JvLriWla3iN59bFqSE2fSJY3Dt3K3QCtm7w5Qwm9zdHrnHbyUMKw861ijKZrhMVmJson0nFargiMSNbeGEiJb9kTgzEDcu3flOTEkaPbtTqNb+zIsP2/4uX0jy6QkfbkTKYXZQlYc9l8c2RXDNSL2g4q+uXhwLr+n7MM5pMxx+XIFW7/rjv//xLjAaUn/2Sex0GfXY5pNAFYJgyvDt8PE4iM2rExBz6DQuZFXfvDV6O2ug41L8n800q/h81MiL4QvM3GAUZc0AsubFxqJsUaELJEyBJsj6wt1Wy4K9N+iECksgIu3kzzYhfvdpDHhhuXqRkt9nkqwnHqp4V41w2AhJpNXgYS0GqV7x53+rxE8uqH+fC9562guSLGpNUMXFxLMmW1u/Mk7x/PH9ADT7lxdeeWQmXqwlorYz9GHF+Vx1AVZ5wbqoxFuSgEsexO0+Wwy3Ccy6bk3X3tyx6i8LFGXNkeLyiiAg9cv37/ij8eMeWtK/vLAHWv3kjHq1XZRQK51z7Gwr+ytydsNW1fCPa9ezXEMZVIQoG+y2S3UcynNOvGXLcjoYlo7PXpuXL8Z+8OIc1fgsy31wWyRQZgRu3sT5sEMqnEHEtwOVQCsxaNMDN+F6dvES38z+0g99H9aSgdnZzMNb97jjlfumY+Iv3iaTgeVExyC+2yDEdx2ICwc0z9qLUQeR0qcrUvv1wMXIA/mnl7V9uxqWL3Fmc6I0J5P8hWX4jzWJslk7diC5Rwec6NQR8W26I1+MbdEfxybMxeXkjDIkY9mmJAnXknGRGFx/Bext/FR7VMISiBDb9ZFAlagr51zxvbIt2ztLl5TA+bOXcTTqNLasPY5FcyLhOn4XhvXYoBJiffu2r/JwrX/fjPznmt4ufOmBGfig3lz8/GEA+rRbjYlDtmK+2wFsXHEM0QdPQbbLqXACejtLRNmnbaZZxedDirKFX9C8JRRlzSKy3gLGoqweuiDeaVSBk5JEXiK8ykcSfMnk47RP/ZaH4sop0fCw26nEWMfHgxDqp4U1KLCRSvRDPKa+f3cRXn/MQ4UXMIxDqB4IeUPkX6gl8Uc9VIPdY+pexh7Nu4YSz3XCwC1o//kS5RkssXHr1cnzIlaJs7RYjvrD9da3Nl/iur726Ey895wmuk4eug2SnItT9SCgvyxQlK0e19sazzI8NF3Vb29KrNo6Um8VrNO0hIyzVPiDMf3yhsxa44lWkmM+vXQ1Yn9xQGxbB2TtO1guR1Xeoqz70PV5HrIuCJ5RMJZlaU5IEng1f9Y7b5SOC754fQH27ypfr+LSHC/XJQFjAtcyLyA9cOOtxGDfDVIiX1b4EeXRalze8PeNK9cx870/0euBOaqN0a7mn2h2ryeaPDQdv7f/E+dTC4ZGu5FzCUkTZyiv2dSZc3HjQg6unszQEoB1t8MZ/wXATS0xz/mQzUjuZqe8ZrN2lk/nvzWIspcPhCPJsROSu3TAsbbdcPSH3ohs2Q8RX/dH/FgvXEq83TvZ8BqV1/+rph7G0FdXqZGX4hSkxYb1g20NPxWqQERaTneOQFJCJnZvTcYSn2i4TQzDyJ4b0b31chVOoPlz2jPrVvvvVni/Jk954svXF6DDV8EY1Hkdpo/eCV/PCGxaqQmuZ04Vr9Pmzp155d+z3s4a6LgE/7CZahWfDyjKmjUsirJmEVlvAWNRtrDQBXYqSLof+j6zFNev3sSwhqvUw7FT7UUIGhkBh78Hqd+e9qG4mHm10gA5GJ6uhqE2+/ccvHS/9MQVzNgt8QXVkPhazipmqQyHHzdgKzIyqp9AKDFcNyyNw6jeIZDs5dJDKSECJCajJCUT71ZhVTDjuR6nURctnCGC68sPzVCexJLwTGI70pu40twSleJA9JcFirKV4nLwIIpJQELZyOiIxk96qHpO1YUyekL39JfwKrVdIDHEP6g/B31sV0EaLZyKR+DMyg1aKIM2Dji7tuyF7vIUZce2D1B2IOF1lriVjbjj/cc+vPW0R759SciC43Eckls8a2Kpykog+9AxHJ/qkx979pDtGJxwD8KFw0WHEbhw6gL+aDIXDnX+VO2NtjUW4v17vNCwjguGfz0LqYcLhvDI3LkH8d0HI77LAJwP2YGbubnIcJmihTOYMBLXzmgJqs5vCtFCGXSzw9lVq8scW2UWZXMOhiOlZ2ckd7bHMduuONq6JyK/6ae8mmOHueFSQsV2/mxwO4JhjVahY23/fE9YPUlX14cDMenTTTi69c5565a5cVTSDd648RdST2SphFnL/Y/AY8oejO4dohJhSUKspv/nmefQdEtolfcgyf0h4QR+Eu/WtquU8448x1YFxiA8NBUpiVm4fr3qJvuuTJdTb2cNcFyCp2ymWsXnfYqyZk2IoqxZRNZbwFCULSx0QYea/uoFqGOdRUiPzUKXBwPU755PBWH022vV//2fW47DW+7cgzIn5zomD9uuvJZeeWQGJLmGEhANGsuamOis4sLKsHiJZXroYPWJ+ypDdLt+u1zFYRVRQTKSi4AqnAoNJ2Dk9VqvtiskrMBb/5it4sB2+X4ZxIOYEwlYQkB/WaAoawk1lq2sBCTpo4RZkYZKfRV3/Fbnn0pMaOOMF2q7QkYUfNV4AX4fvgO5udcr6+nc0ePKCtuPuLaOysvtpP+SMj2W8hJle32+ANLBW7+2M/atiynVMUvyLocfVuLlB7ThnBLjuOPXS3D6ZPXrKC4VSK5c6QncuHxFJYuKG+WJyO8GKSEw2n4cTnguQU7MiUKPPzMtG67/nYd+D3up9ke7u33wyT1z8JqNK/q854KY0FvJu25ezkWal4+qUxJHTMKV1HRkhaxHSq/OSOnTDRcP7FP7yYk6hOTuHZXX7Gk//0L3XZIFlVGUFTE2uVcnJHWyR3zb7jjaune+GBvjNB0Xi+BfEgaFrbPZOwYjm6xFpzqLVBiCfE/Yu/3Q9aEATPxoI6I33bm2ZWHHbe3zE2LOqURXQQs0D9cRjhvR9ftl+K6ZH97+5+z8jkDDDudb8VsXw8luDaaO3IGF7gexZU2CCk+Qdf7Oxxm29utSlsevt7MoypYl1Tu/LYqyd/4alNsRGIqypkIX9HhssXrpsa3hi21/xsHuHi2EweAG2nASe5tFCBh2ANeuaEOByu1ADTa8MiBWNYBl+IOIipq30q3eOi27tovqxVOhB95dBAlXUBWnxfMPK89W8d76vNECvPOMl2r4S8xblTBLxcAt6MmlP2TzvYRtJGaiq+rhFFFBRAPJZukxMYwhBaqi0VSCc9JfFijKVoKLwUMoNwLbNyWiw5dBaPq0p4pDbuxZK4KtiG7ynGrxpo/qWCy3g7GiDV9JTEFc+16I+6UHToybXiBzemlOo6xF2ZvXruGTZ7SwPY0edEZKrOZ5V5Jj/NN1P957fo4Sd+UZ3ejvszC696aSbIrrkIDVEbiRcxmn14YiZshMRHwzQBNoO/2KJO9luHQspdDzWfDLEgx7wl1rp9zth69qzEWjmm7o2Hg69izTBFdZ+VJ8IhIGjIXErU7zXIDcY3GQ5F8pEs7Abz7+unYNuckpSHLogpRutkgePw5lFa+sMomyl6KjkezYWcWMlfo1+vs+WgKvFk6IGzaj3D1jF/bdhyEvr0Cn+4w9Yf3Q9cEAlaBr/+rCr3ehhsAFyLlwVY3MObgnHSGrjmHBrAOQxFf9O6xB+88WK4ecRo/NMim4vvLwTHz0kiTMWoy+7Vdj0tBtan1JmHU44hQyz1FwtTYT09tZIso+afO7VXzebzSbib7MGBpFWTOArHmxoSgbJ/HcfnHIP53Br66E7V2+6mVndoftKn6sXQ0/9HwiWM0b1WQNUqLLb2hmZmYuJFafJN56+SGt4aN5u94SYPXfDR5yVcNFB3ddB0nYZa2TeJ32a7carZr54f0X50KyhDd4eKaK1yrxbTWP1lteWLrAavytytUUYdpZeW41quuuticxYCcO3ow92/jSY602UhWOW39ZoChbFa4mz8FSAlLPS2IxCQ8joqw8x0Sg1etxqb8lDIKM+pAwMpJgbMnCw5buxqrLXz17HnEd+yqP2fjOTricVPphtGUpym4LPoSXVaxhF7zzmAsk+7ulU/LxLOUFq3lXa+81Ld9aiL3bS3+ulh4Ly5NAZSFw7fwFZCzdgqNOfyhxNqJFf0R3HI9E10UqcdhfV6/ddqhbXHdh7L/c0PGehap98u3d89D0Xg989a/f4d3PH5np51Xs2nMhO3DMYQji7HojwycI55YGIcWxI9KGD8CFsFBcz8xCUm8HJdYmOXbD1aSCIRFu23ExZlQGUfaUlxuSutvjhH0nxPzkiKjv+iLiaydEfNsfSW6BxU68VozTVUVu3ADWTD+MMe+sRbe/BcCuhm9+e1K8Ydvf7atGXY5/bx32LUsq7marVbkzJy8i5tBp5dEqIQTmzdivYq8Od9gAx59Wos0ngSou6zvPmPZs1d8nmvzDAy3f8kHHFkswtNt6uIzbpRJubVufiNjoM8jOvFKtuFaXk9XbWf0dl+BxmylW8WneyJOirBkDpShrBpA1L9ZF2XO79iG2TQ/E/txDnc7UL0K0B+hdvnB6bpl6yZEwBu3v9lMP0nWuR/DXX2V35qGbU1RSFeX9mtdIfd6gkao3WsWjU4bet/04AOIxW5knaaOtXxmnRFAZfvjF6/PV8NZXH3FDvftc8ULtW43wAudqGHLBMIZrTWclsr5Y2wWSlVKEVomV+1VjX3T5Zqnaj8RulVAOnEigMhPQXxYoylbmq8Rjq2gCMqLj5w8XqfAw8oyQRlWB0DJ6Akol2M5Ugq104kms2yo5Xb2OhGG/KWE2tq0jzq7dXKrTLCtRdnS7wPzY6nZve1t8TO6Tw/ITd8k1Fu8laSxzIgESKEjg2vlsnFy1A3GjPRHx/WBNpP1uEGJHuCvhNjf9TIEVEkKTMeUVT/TIizv7y90LVWiDN21movvbLtg4ezNuXrmK08vWQjp7JN7sSb/FSJ80VgmxaeNH4FLEfqRNmqh5zHazx7m1awvsw9Ifd0qUzU1LQ9qQvkjqbI/4dt0R3SoveVeL/oj6cTBOrdkB3Cib+J4irE79KgSOTyxGh3v9CgiwKiTBXX5qvuOTQZj2denqcUv5V6byEqc1Ym+6Smi1aE4kZv62G2P6bELvNqvQ9tNAfN5wPkRE1QVVU98NH52F91+YA4ntKomy+tmuwdh+IZg5YbdKlrVuSRz27UxR8Vsr07nzWCqWgN7OcnIMxt9rTbaKz7uve1CUNWMm1UKUzc29gvETJmLV6jVF4vDw9IJ89Ckx8QQce/eFfFvjpIuycQ6DNY8Up1HwGbBPPVDb3+WLjrUlzo8fOtTUsl5Oa7kZ51JLnhVRBEPx1JSEWpIMRYbYG2e11r1fJVmUBAwf0WvjHU+8JaKxeDeJJ654m8oQ/3ef9YJk5pbA5tKAVqEU8mKwFmhIG4useQ1t3TNKPKUaPDRDbUu8Y0VwdrJfp/Ynico4kUBVI6C/LFCUrWpXludTHgTijpxTz0HpgJNnTv08wVZ/VmrirQskydRL97sqUbdlEx+McNgIeXZVlSln9341BFm8aEsylVaUPbT9ON59XOtMrVfbGYEu24t9GC7jQvG/1+blJ0eRkS/iFRsaQi+xYkNkwWpN4Oa168jcE43jrotwyG5svhdt9t4j+VxuXNKGWV+9eA1zWy/GqP9zQ4c879kf716ID+/xwmi7gsm8zi1dg/hug5A+0x2pg/socTY35tY2s1cuRdKQwbh2qqAAnL9TM/9UtCh7LsgXJ7p1RIJtVxz5QYRYpzxWTjjSZSwuxpfumZB+NBueHXbC6dml6GAjIe20EZV6PFhpM9rW8EPXRwIxrvk6rHM9CvGcrYpTWlI2Dh04CfE6Xep7GHNdwpU3q3SydWu1DD++v0iFBWhY13TYAHl2S36Pd5/1ViKr/dfBGGC/RoUP8Jq+D0t8orFz0wkVQiA95UJVRMhzKicCejtLRNnHak22is9/KcqatQaKsgaIjEVZEXG/a/0TDhyMMChlPf/qomxsl4EqdMHmOfHqAaseqndLb6cmxjo+EYTw5ZYN4wkPTVcenE2fnq2G3ysRsqZh6AFnFT9Neb8+oXm/lvcQzQ1L4zB56DaV5EuGj4oIKp63rzxtKbekAAAawklEQVQyUw3zfzFvOKIWl1Y7PlM9lcbzRITVPlr2bYnp+tqjMyHn/lnDeSqu4ISBWyD750QC5U1A6impl+RjrqNJjkU6lWztO6vyPXv3Q2ZmVqGHKNuWsqXpiNJfFijKFoqZC0jALAEZjeE2YbcahdHgYUkMJc8sgxEYeR2C2rNXC4kgHYASO1xC5Eh4oMrc8WdYL0ldJnXP5SNxiGvrgFT3+Wb5GBcoqSh7Nfc6xCNW70B+/ykXnE4uOnTTiWNZGNJ1PQyHlkpIik8bzIPL+F1M9GZ8cfibBCwkcCkhFZeTMlS9YPi+k733MI5PXYhT63ZBPGnPJmXB7cMFGPR3DyweHoH9ByLy34/0d6TM/YdwrOtAHLPtBYm7avwOdWn/HiR364AMd3eLY1xXiCibeQapA/siwa4LjvzYKz9p18EWTjj0wwCccF4IidtrybR/RQpmdwrF8Iar0O2RQHS4V4sDm98+lDAEeW3EzvcHYNhrKxEwdD9yzlm2H0uOqbzKXr9+ExmpF3Ak8rQSQVcsOoJ5Mw/gjzGhGN07RHmySlzWr9/0UQKqOOMYtwMNf0vouU9fmYefPghQOTok5IDz2FCVGEv3ZE2MP6/iwJbXOXG75UtAdB+93hGnPnHuMzcZriPr6tqR8Xx9u4ZlzG3beLnezurnGIy6tSZbxYeirPFVvP03RVkDJvKglk9VmXRRNqbrAMT87KA9YOUhKz2fd/nCroY/vLvswuXs22M46Qwki/Tvw3eohqHEwBMPEMOHk/o/T4wV79cP65fe+zUpIROS8XpU7xAleIrnqgzlf/2xWcrrVMXpy/PCVWKpitln4rh0L1Y5Piljk9egreWiYv3Vf2CGElff+sdsFbNWhNwu3y/DuAFb1f6PHDqlY+A3CVQKAiLC6i8IIq6KyFqUMKuX0V8OpGxhwqz+4kBRtlJcah4ECZgkIJ1/AzutUyM6Gj/hobxn9VEppkRbCZ8j80U0lPjtkjCyVXN/NarlTj3jRJA1HIWk11OrVq1GhvsCNbInrkMfZO3Zb5KBqZklEWXnjFqPl/I6a+vXdob7YNOjqQ5HnMaoXhvx2Wvz0ODBGfnieL37ZqBlU18sdD+Am2UzUtjUqXEeCVRLAre97/TqB6kjklwW5XvSRrUdidjhs5CxYhv27tqLHj1653c86x0/e8IOoEfDuVg0Yrlaf/y4CUpkUfVOr75q3tk/vZDa3VYlA8vavqPYvMtLlD0X7Iekbj0Q16YHDrfOE2K/doIIsVGt+uH4r55mhVgRUCX265QvN8PpP8vQ+b4A5eWq5xPRvV/zv+/yg32tRXB6djk87HchPS672BzKu+CVK9dxOuMi4g6fVcP3N608hqAF0cp7VcRVCRPgZLcGnb5ZqjxYP3ttPpr9ywuS5Oq2NqveNrRxgXi5fvDiXOXJavdlsEqENaZvCGb8uluJrKsXx2LXliQVn/XMyUu4caMMY/uVNzRuv0QEjN9PRBfS212FbVDaT4ZtJ9nGkGEj8+si4/WKaosZlzX1Wxdl+zoG4dFak6zi0+x1d4YvMHUxDeZRlDWAUVVF2diuAzGv4a/5w1BkOEr/55fj2J6Cw3XEq0ZEybef8crLJl3QM0fzMBVB00Ulqfrlo0Asnm86QYl4+UjCKe/p+1VYgHafLVbCroirkgBFGof16rji+doipt7yWtX3UehDVHkKaeVFINZisLqqB6sct4ROkBABg7tshMTwq8yeQgamx39JwCwBXbjQBVZZQf4v6mXBsFEj5fVQLobbkPn6thcHLSkglpg9KBMF9JcFesqagMNZJFDOBCT2eB/bVep5Kx49L90/Q4US0jswjZ+tmpArHZbOkJEtknxSOiplFIjEM/9jdGiFxLXV66rLFy/hxNhpiG3joIVdkriQ/kvMerAVV5S9kHkJA7/zwWsP/KEa6y/YuKDze3MgHrMyibi6dkkMerVZiebPeqFenYIdvg0emok2HweqMuV8Kbl5Eqi2BPR3EsN3FcP3neyIOKT6rlPxZyNbD1EibeKk+bh2JhNHuvyGgx0nI3VDlHK0meXmiVk/bUfYyjjVKR2+7wAmtg7CArtZ2L//AMb/+huyIg8iubsdkrvZIbWbLZL7OOCUnx8gjZkiprISZXOTjyOpbz/Ete2OaBFhv+2XLzxLMjRJ3pUw0gU3sm8PMXciKhML+4RhdNM1cHh8MextZBSkb76na77oajBC0r6WP3o+FYQxzdbCx2kfZBvlNV3IvoK05GwlbIbvSsXWdcexKjAGi+ZEQYbxi6g6zmkzBndZr5JciTjauvki5Y369j9nqxAAxs8t49/i3drs314qbqt4sHb+din6d1gLEVgl+dV8twNYGRCDXZuTcDTqtPKcLa/z5Xatm4CxFiR1kQisIrSamgprV5kqK/P0ziLDuq2wsoXN19tZIsr+rdYkq/i8TVG2sMuZP7/KiLLyQm/oEi7/670W+g0jgoMIGHo5WcdwMr4RjXtL9O3IjSRlC9uObNNwubFoor9s6Osbe67pPSyyHzkH/TwMj7U4/+d7ynYZkOcd6we7e/wROCoCzqN3qSRSMgxfPGieM+g5lIediKMqht19rmj8xGz8r+ECtP8sEBLLTjJGS6OtYV03iLepCKMv1HKG8sgRb1QTQyyNH6B6Q1D/lmOQWHrSIGz8uAeaPzsHLd70UY1C8VwtTPwtDgeWIYGqQMC4PpJzMjXP8FyN6zRZZmqeLogcjYmlKGsIkP+TQBUjIJ62Mgrllw8X4f3n56JR3VkqvM+tZ3hBEVJ/duvPavktoYBeesBVxcCV0TFtPg1S3ruuY8NUkk4Z7WLpZFwvXU0/iePDJ2pes20cENvGEcdHTsaZ5etMbrooUfbkibOY2mMpPn9OCwMh5yDvN61enoVpQzfD4YeV+KzhfNXZLCKtfs7y3fBRNxUfdvKQbTgWW7J4tyYPmDNJgAQKJWDq3cbUPLWBv/5SoQ7ObNyDxJmBONpvOiK+G4TMuGTV5lu5YiWODfdAzN4I9X4TFxUL72ZemPCsNw7sjFbzog7EYGjj2fj11fFY8kVfJHSxR0o3O6R074DkcWNwdsUq3Lx4uyBqsSibm4v0KdOQ0KmXCit3uHVPHPquDyJbigibFx9W4sR+0w+7vh6KwP/NwIRmq9D/heVKcO3yQADsJQ9IjVujHguIrnrYgbzkWxL7dXCDFZjVdjt2+h4vVvzXrPO5kBinCTHnVEzVvTtSlJC6JihGeaf6eByE1/RwJXZOG7UTxh9xjhEvVUlaZViXFvW/xF6VJFjyPPmq8UL88nEgun6/TMVgFcFWhNV5M/arOKxb1h6HiLvHjp7DmZO3X5NCjYoLSMAMAV3nMdSHTM0z3IzUS0V5xRqWlf+N33WMlxfnty7K9nFcjIdrTbSKT1OKsmYvbZUQZeXmMRQ2dYFBbiSZ9BvKUNyUm0h+G954xjeK8QuAvh0RU/UeDl04lbL6ZLwdw+PRt6Gvr/+WdfRJPzZjMVdfXtzv1D37lav4jl+Go9VdC9D4HncltuoJRER4lYaW/q3HrFPD/M2FBNCTXulxZGV4ZC1nvFjLVQ2n1GKueqqwABLfrscPKzB52HZIXNnUVMsbbMU9Z5YjgapKQOoMw3pOzrOoHly9bjGs42Qd+W1c3+hDiY3rvJKw1F8W6ClbEnpchwQqBwEJISRJKaUjVhrYrz7ipka3yAgV7b3h9vi2tzW680a2yDuHiKAyMkbCD4mg+9qjbvCcGq5ONnz/QbTv0BlxsQkY3mOD8vSVxJsiHk91WofVthMR/bNjvkAb18YBkW37Yn/PX3FwnCfi5q/G6cMx6n1nxdzdGP5TANo29sRHT7ugQR3NI1Y/tnq1/8D7dX83KRbIub39T090/mapynRdOa4Ej4IEqh8BS993TBGSdx15ZzqdmILE6X4ID9unfp88fAxRPw5TnqipYVFKUImPPILtraZgadOx8G00Ae71p+D353/HhOemYGK9yZhUfxKmvjIBM14bB/cm47Dgg1+x7OffccB7rap34gNDcNBpBkLbjMeOb4cjtMUg7PpqIMK+GoA9Xw1AeAsnHBSxNT8xV/9bnrAtnbDnywFY8c5oTPmXC4xFVsPfMtKx3d1+aHevL2zr+KNj3UVweHYJBjZdiXHfr4dLn1AEzI1SAuasSWEqMZWImkO7bUCfdquV0CnxU8UT9as3FqpEVRIbu9FjxRdQ9bpU/xbxVWKZi8PO5w3nqyRY4qUq8VpFsHWfvEeFApBkWRJ2IGxbskpuJZ13589aX4xaU7bGeVWDgO40p2s0+llJm8m4LaUvk7Ki1+zaHZbvrGfcVtPLFrZ9fXlxv/V2Vt+eQXjkvklW8Wn6xiyGLzBzgauEKGssghoLC0WJE4bCZ0m2Y3yDyb6Ne0yKEk7k+siNbngcxsdv6homJycr446KijL7Lb2P+sPztm8RZfMSWallekiA+11VI6zJk54q3o54rXb4MkhlfJaQBBKawMyoHlOHzXkkQAIlJFBYI0Ue/sYvELKL4tR7xmXM1T1paWlm65vIyEhV5urVqyU8U65GAiRgLQQ8JoapTlfpfJXkJyLgSoiiV/82U4VOkJE0WszbPDE3r0O3dfMABAevVI0YvQGzZ1uqyXeVEb2Wm6139HehWKfRBcRbEXD5IQPagPXYwPGewxAetlcTUA8dxbFOTuoeTtutiarhu/cgedTvJu/rc8Gr80cq6u2qzDUhMN5mnH1/HP2xJ1JD87a5aw+ODXZWSbQiW2ihAyInzTVb7+jvOxG9ptwSWVsYCK76/y2dENmyL/Z+1R8hHw9FUNNxcKs3DUPqeioRts1dPmh99wK0rDEPn9eYi4/u8Ubze2aj6b0eeL3mLDSoWXRs1NvadgYe/+KF+uaTHmj+nLeqo79p6oufPgyA/dfBcPhxBfp3WIMRjhvx26CtKmGV17R9WDDrAIIXRGP14hhsWZOghNRD+08q79S0pGxknsu1lkcUj5MEik3AWNPRVzTWh/T58i3tL3HWkzL6JP/r9Y8+Ty+rv+8Yzjf8Xxdc9XeaqvZ94cIFw9Pl/wYEqoQoayxWGIucxsKDfv56L6rchDIZ33TGAoWp7RjfwPrNqYcm0L8NvXRlX/p6+nLDm9R4v/rxGn5nZWXh+PHjRX5EuB3Xe7VKkPXmUx74/t1FqvE0YeAWLJobibgj5ww3yf9JgAQqMQHjek4OVeqRwmIdmaqvZB2p9/SXB+M60FzdIw/T4tQ7J0+exI0bNyoxTR4aCZDAnSaQkZ6jDuHM6fNw7NVP1Utb1ibix/cDICJvyyZ++PKNhejVdimC/UMR5LcTQb47sdhnJ4J9dmCN/xasX7QZmwJCsG7uWiyd4A/3L3/DzA9GYvb/RsPn+wnYPmIOwicvQKx7AE4uWsYPGdAGKrkNnF6+DuF7w5UoeyY5FaeCVqlrdio+Ub3vJMTEQcoUdj/nJqepeiUx4Xj+iMjMsAMWbzM5eBUOrtmKAys2Y/+yEIQv3YTwJfLZiPDgjep7r88ahE7xxfpWv2HZeyMQ+N+RWPDOaMxpMgZujSdg6htTMKbxDAxsMheOHyxHn89XoP83qzHkl3UY1WkDxvfarLxJp4/eCdfxu+A2MQweU/aoWKt/uu5X4qi/VyQWzYlUIql4m0psVBFL1y+LR8iqYyq0QGjICYSHpuJI5Gkkxp9XSbFyLrBj/E4/47h/6yKgazPS3jKcpM0k7SVTk5Q1FmClLWXsoCfrGutMpraXm5trtp2VmJiIhIQEpKen49SpU1b1ocOOqauuzasSoqwuPpgSOOU09eXGN5T8NryRjG8WY4HC1HaMb2DjbZpCL/uRY9VvemOxxXi/prbBeSRAAtWLgKl6wdQ8QyrGdZosM5yn10V63Wn4bVxfGm6X/5MACZBAWRKQ9yDjzuuy3D63RQIkYD0ETL3bmJpn7ozkPUZ3ejG1vql55rbJ5SRAAlWTgCmdx9Q8w7M31nBkmal6xdx2DLfJ/6sngSohyspDV8SFwqbCbgRDcULWNf5tfFOZ2o6xKGu8jvExmVpufEObKmO8Hf4mARKoXgT0+kfqC32S/w07lvT5+rfxclPb0MvKN+seQxr8nwRIoKIIsO6pKNLcDwlUfgKm3lWM32eKcxayji7KltU2i7NfliEBErBOAsaaUlEjEuUMjXUgmSfvM8aesqbKWSchHnV5EagyomxRwoT+INYfzAJTHtTGXhllIcrKtmU7hvuS/UtWc5nkRpX9yv4NfxuWZ+NEoeEfEiABIwKGXh/6A17m6ZP8b1ivGZcxXF9fx/CbdY8hDf5PAiRQHgSM6yH9Ha2o97jyOA5ukwRIoPISMKwnjN9l5KilHWU46lDaXoZ1iL6OzNcnc9vUy/GbBEigehIw1mmM6xXjekcoSb2i1z36+4xhvSNl9PpI13+qJ12edVEEqoQoq98AhkNv5X/9htCXh2zeosRSvZzxjaHfaHJzyWQsUOjb0ZdLmcJuMtm3vh/5nr/QR4VRkHVkfX2Z3MQi2Br2qBjvVx0M/5AACZBAXqePXn8Y1kUCR693DOs2/QVD1jHs/DEFk3WPKSqcRwIkUNYEDN+DpG7SGzRlvR9ujwRIwHoJ6O80UkcYv+/odYjhfMPyso78Np4Myxiua1yOv0mABKonAV0PMvVuYqreEUqG9Yqpeoftq+ppS5actdWLsrpQaihCCAAavyVmwLIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIVRcDqRVndU9W4t1N+m/MKqyjI3A8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ6ASsXpSVEzEcniuu5qbczfUT5jcJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ3EkCVUKUvZMAuW8SIAESIAESIAESIAESIAESIAESIAESIAESIAESsIQARVlLaLEsCZAACZAACZAACZAACZAACZAACZAACZAACZAACZSSAEXZUgLk6iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRgCQGKspbQYlkSIAESIAESIAESIAESIAESIAESIAESIAESIAESKCUBirKlBMjVSYAESIAESIAESIAESIAESIAESIAESIAESIAESMASAhRlLaHFsiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQSgIUZUsJkKuTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgCUEKMpaQotlSYAESIAESIAESIAESIAESIAESIAESIAESIAESKCUBCjKlhIgVycBEiABEiABEiABEiABEiABEiABEiABEiABEiABSwhQlLWEFsuSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQCkJUJQtJUCuTgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKWEKAoawktliUBEiABEiABEiABEiABEiABEiABEiABEiABEiCBUhKgKFtKgFydBEiABEiABEiABEiABEiABEiABEiABEiABEiABCwhQFHWElosSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKlJEBRtpQAuToJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJWEKAoqwltFiWBEiABEiABEiABEiABEiABEiABEiABEiABEiABEpJgKJsKQFydRIgARIgARIgARIgARIgARIgARIgARIgARIgARKwhABFWUtosSwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJlJIARdlSAuTqJEACJEACJEACJEACJEACJEACJEACJEACJEACJGAJAYqyltBiWRIgARIgARIgARIgARIgARIgARIgARIgARIgARIoJQGKsqUEyNVJgARIgARIgARIgARIgARIgARIgARIgARIgARIwBICFGUtocWyJEACJEACJEACJEACJEACJEACJEACJEACJEACJFBKAhRlSwmQq5MACZAACZAACZAACZAACZAACZAACZAACZAACZCAJQQoylpCi2VJgARIgARIgARIgARIgARIgARIgARIgARIgARIoJQEKMqWEiBXJwESIAESIAESIAESIAESIAESIAESIAESIAESIAFLCFCUtYQWy5IACZAACZAACZAACZAACZAACZAACZAACZAACZBAKQncEVE2JSWllIfN1UmABEiABEiABEiABEiABEiABEiABEiABEiABEjAOgmIPnr16tUSfe4q6YppaWnIycmxTmI8ahIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIQHRRUUfLam2WmJRNjMzExkZGSU8bK5GAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtZJQHRR0UcrXJSVHYqLrhwAPWat03h41CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAsUnIDqo6KHJycklFmRFVy2xp6yuAosiLK66ItBKcFt+yIA2QBugDdAGaAO0AdoAbYA2QBugDdAGaAO0AdoAbYA2QBuoajYg+qfooKXxkNU11VKLsvqG+F2yoL7kRm60AdoAbYA2QBugDdAGaAO0AdoAbYA2QBugDdAGaAO0geplAxRlS5ghjTdK9bpReL15vWkDtAHaAG2ANkAboA3QBmgDtAHaAG2ANkAboA3QBsrKBijKUpQtVfyLsjJEboeVGm2ANkAboA3QBmgDtAHaAG2ANkAboA3QBmgDtAHaQHWxAYqyFGUpytIGaAO0AdoAbYA2QBugDdAGaAO0AdoAbYA2QBugDdAGaAMVaAMUZSsQdnVR+nme7NWiDdAGaAO0AdoAbYA2QBugDdAGaAO0AdoAbYA2QBugDRRuAxRlKcqyF4Q2QBugDdAGaAO0AdoAbYA2QBugDdAGaAO0AdoAbYA2QBuoQBugKFuBsNk7UHjvANmQDW2ANkAboA3QBmgDtAHaAG2ANkAboA3QBmgDtAHaQHWxAYqyFGXZC0IboA3QBmgDtAHaAG2ANkAboA3QBmgDtAHaAG2ANkAboA1UoA1QlK1A2NVF6ed5sleLNkAboA3QBmgDtAHaAG2ANkAboA3QBmgDtAHaAG2ANlC4DVCUpSjLXhDaAG2ANkAboA3QBmgDtAHaAG2ANkAboA3QBmgDtAHaAG2gAm3g/wGgs9WY92cKqAAAAABJRU5ErkJggg==) - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ### Hyperparameter importance plot - - The hyperparameter importance plot shows which hyperparameter values had the biggest impact - on your metrics. - - We report both the correlation (treating it as a linear predictor) - and the feature importance (after training a random forest on your results) - so you can see which parameters had the biggest effect - and whether that effect was positive or negative. - - Reading this chart, we see quantitative confirmation - of the trend we noticed in the parallel coordinates chart above: - the largest impact on validation accuracy came from the choice of - learner, and the `gblinear` learners were generally worse than `gbtree` learners. - """) - return - - -@app.cell(hide_code=True) -def _(mo): - mo.md(r""" - ![image.png](data:image/png;base64,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AAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAgSQCjL4mFkxCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhBobQK/OHLkiOMDAzSABtAAGkADaAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATRQLA1g9GF0YvSiATSABtAAGkADaAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA0UUAMYfQVsNNz0YrnptBfthQbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANNEIDGH0YfTj0aAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADBdQARl8BG60Rji9p8pcEaAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGiiWBjD6MPpw6NEAGkADaAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABgqoAYy+AjYabnqx3HTai/ZCA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAYaoQGMPow+HHo0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoIECagCjr4CN1gjHlzT5SwI0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANFEsDGH0YfTj0aAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADBdQARl8BGw03vVhuOu1Fe6EBNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABpAA43QAEYfRh8OPRpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQQAE1gNFXwEZrhONLmvwlARpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAaKpQGMPow+HHo0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoIECagCjr4CNhpteLDed9qK90AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABpAA2gADaCBRmgAow+jD4ceDaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABpAA2iggBrA6CtgozXC8SVN/pIADaABNIAG0AAaQANoAA2gATSA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ATSABtAAGkADaAANoAE0UA8NYPRh9OHQowE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANFFADGH0FbLR6OLykwV8KoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaKDYGsDow+jDoUcDaAANoAE0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGiigBjD6CthouOvFdtdpP9oPDaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABqohwYw+jD6cOjRABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAYKqAGMvgI2Wj0cXtLgLwXQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0UGwNYPRh9OHQowE0gAbQABpAA2gADaABNIBcfLLQAAAgAElEQVQG0AAaQANoAA2gATSABtAAGkADaAANFFADGH0FbDTc9WK767Qf7YcG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABpAA2gADdRDAxh9GH049GgADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0gAbQABpAAwXUwC8cGwQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgUDgCv9i/f7/jAwM0gAbQABpAA2gADaABNIAG0AAaQANoAA2gATSABtAAGkADaAANoAE0UCwNMKOvcN4sBYYABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEICAcxh9qAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACBSSA0VfARqPIEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEMDoQwMQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQKCABjL4CNhpFhgAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgABGHxqAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAQAEJYPQVsNEoMgQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQw+tAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABApIAKOv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07vvvTfkuKIYvOuenxez/WK9K6++Nn362We1w4htxeeuuOqa4lijsPnOueenBS++lKIoLD8alUWHmtGXb98Y2/7JzbcM2W7sI44jZhFGsRXrRSH4+G/mFEXjcy8sGFL0xWdi/ZNPPa2Y4ZhvVxrL43jidqRxHrGtuHazH32s2Fb+Pb76oi8fw3AtYv2RPGI26N333pcmn3hScS3iuOr/xWzDPBMvl10jzWDMqIvbw0ZWF/zhxdohNrp2oy36YsNxjI/++vHiWsW5RMFX9ZuDI722+dwVfbXL5wUBAgQIECBAgAABAgQIECBAgAABAgQIEJhQAmNa9E0oKSfTcoE8WzBuq1r/m49xcFECPv7bOUXxN/OBWS0/XgdAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBhLAUXfWOradkOBPAOufjZe1d/5t+3itp3xW4L33nf/kBmXeUev/enPRdEXM/g8CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQITWUDRN5Gvbhuf22iKvvgNw5jNF7cQjVtoxu8LxiNuMbpt2/ZiWZSCuRhs49N3aAQIECBAgAABAgQIECBAgAABAgQIECBAgACBwxZQ9B02oQ2Ml0AUevOffa743byqmX+xLErAP/359YYz/sbrWO2HAAECBAgQIECAAAECBAgQIECAAAECBAgQIDDWAoq+sRa2/SMqEGXfhx8tT1dde31R6kW5d9Sxk9J5U7+bfjv3d2n79h1HdH82RoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoVwFFX7teGcdFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoImAoq8JjrcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItKuAoq9dr4zjIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBEQNHXBMdbBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNpVQNHXrlfGcREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoIqDoa4LjLQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtKqDoa9cr47gIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINBFQ9DXB8RYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBdhVQ9LXrlXFcBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJoIKPqa4HiLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLsKKPra9co4LgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNBBR9TXC8RYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBdBRR97XplHBcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJgKKviY43iJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQrgL/smfPnuQfAxmQARmQARmQARmQARmQARmQARmQARmQARmQARmQARmQARmQARnorAyY0deuFazjIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBEQNHXBMdbBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNpVQNHXrlfGcREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoIqDoa4LjLQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtKqDoa9cr47gIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINBFQ9DXB8RYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBdhVQ9LXrlXFcBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJoIKPqa4HiLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLsKKPra9co4LgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJNBBR9TXC8RYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBdBRR97XplHBcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBJgKKviY43iJAgAABAgQItIvA/KU70/R569PxMz9O/37nR/51scGevoHkHwMZkAEZkIF2zcDevoHU2z+Q+gcOtsvXqNpxPLlpSZr24bx0zFsz0r8uvMM/BjJwBDOwrb8n+cdABmRABo5MBrb396bdB/pS38EDte8xzV4o+prpeI8AAQIECBAg0GKBjTv707S5axV7XVzs1Re77Tqw67iUDjIgAzIgA/UZ6N0/kNqh7lu/b0c6e+kcpc4RLHUUpYri+gwY3D8yg/scOcqADNRnYNeBfelQ36gUfS0evLN7AgQIECBAgEAzgXMeX6PkU/INykD9IKq/DazLgAzIgAy0cwZ69g80+6ozLu9Nef/XSj4lnwyMcQbqB6b9rayQARmQgSOXgSj7mj0Ufc10vEeAAAECBAgQaKHAvPd3DCp46md2+bs7b2HazoO5jk3ZIAMyIAMyUJWBVt7Gc+4X7yt4xrjgqZ/Z5e/unO1nQP/IDeizZCkDMlCVgWa38VT0tXDwzq4JECBAgAABAs0Eps1dp+gzm29IBqoGUC0zsC4DMiADMtDOGYhbeLbqcc6yuYo+RZ8MjEMGqgalLVNWyIAMyMCRy0CzWX2KvlZ907RfAgQIECBAgMAhBCbPWDmk5DGLrztn8ZWvezsP5Do2RYMMyIAMyEBVBvb2ta7oO/rt+5U841DymMXXnbP4ytfdYP6RG8xnyVIGZKAqA9v7exqOIin6GtJ4gwABAgQIECDQWoFyueO1gi9noGoA1TID6zIgAzIgA+2egVZ9qyoXEV4ro2Rg7DJQNShtmbJCBmRABo5sBhp9n1L0NZKxnAABAgQIECDQYoFc7HhW8pUz0O4DuY5P2SADMiADMlCVgVZ9rVLsjF2xw5ZtOQMG84/sYD5PnjIgA1UZaPR9qqOLvqefeTZ96ehjUzx7/F1g9Sdr0inf+K907fU/Tr29vVgIECBAgACBDhYolzteK/tyBqoGTy0zqC4DMiADMtDuGWjVV7JyEeG1YkoGxi4DVQPSlikqZEAGZODIZqDR9ylFXyOZDl2u6OvQC+ewCRAgQIBAhUAudjwr+coZaPeBXMenbJABGZABGajKQMVXnXFZpNgZu2KHLdtyBgzmH9nBfJ48ZUAGqjLQ6MuToq+RTIcuV/R16IVz2AQIECBAoEKgXO54rezLGagaPLXMoLoMyIAMyEC7Z6Diq864LCoXEV4rpmRg7DJQNSBtmaJCBmRABo5sBhp9eVL0NZLp0OWKvg69cA6bAAECBAhUCORix7OSr5yBdh/IdXzKBhmQARmQgaoMVHzVGZdFip2xK3bYsi1nwGD+kR3M58lTBmSgKgONvjwp+hrJdOhyRV+HXjiHTYAAAQIEKgTK5Y7Xyr6cgarBU8sMqsuADMiADLR7Biq+6ozLonIR4bViSgbGLgNVA9KWKSpkQAZk4MhmoNGXpzEv+jZs2JhuvvW2dNwJX0lHHTspTbv4+2nR4sVpYGCgdky9vb3p2ut/nE75xn+lKKrqH08/82z60tHHpnguP/Ly199YmMr7OWbScWn6ZZenZR98kA4ePFj+SPH3hx8tT1dcdU2K9eJfvI5lVet+vGpV7fjjGE6bckZ67vkX0oEDBwZtN/64b8bMdO4FU9O2bduL7f3oiiuLc45zv+uen6cdO3YUn4ljvfq6G4p9179X3mj99srHHJ+P7dQ/DlX0bd26Nf3iwYfSiSd/vTCN83n8N3NST09P/ab8TYAAAQIECLRYYPKMlSmXO54VfTkD7T6Q6/iUDTIgAzIgA/UZ2Nv3zzGg8f56dfTb9yflztiVO2zZ5gwYzD+yg/k8ecqADNRnYHt/4w5nTIu+VatWF8VYFGTlf1H4/fJXj9XKvsMt+q657oaiSCzvI15HifbW2+8M+g4Zf8fy+nWj8PvDSy/X1t2zZ0+68+57i6Kuft34e87cJ4YUg1HMRXEWz7G9+s9F4Tn/2ecq93/LbT9LfX19tf3Hi9hOlJ9XXn1t5XFEWbdk6bJBn2lW9K1e/Umacua3hxxXHOcNN96U9u5tHJRBO/EHAQIECBAgMC4C0+auU/TdqeDLBV9+rh889bcBdRmQARmQgXbPQO/+1hV95yybq+hbqIzKZZTnsctC/RFnlxwAACAASURBVIC0v5UUMiADMnBkM7DrwL6GY1FjWvTNfGBWUSo9/ts5ad++fUUxFrPQokArF3CHW/RFURUlWmw7ZuXt3r07PfTI7KIcO/u8C9KmzZsLgH19fUWhNWny8enlV/5YzMqLmYUrVqxMN91yW4piMj9iGzGD7vY77krr1q8vSslY9933/laUeeXt5s9EMRfHEkVm7D+2EZ959bX/HVTuRakWxxTvvbFwUfFe1WzG8vYemPVQ2rJlS7Gr+Oytt99R7OvyK68eVNA1Kvp27tyZLvnBD9M5508t7Pfv319sK8q9p+c/UxzD737/ZD4VzwQIECBAgEAbCLyyYreiT9E3JAPtPpjr+BQOMiADMiAD9Rk40LqeLy3YulzRp+iTgXHIgAH9Izugz5OnDMhAfQb2Hxx6l8k8dDVmRV+UWHG7ypNPPW1QgZZ3XH4+3KLvkdmPDrmVZt5mFG9xa894RKkVxViUdFu3bSsfQuXrqttzRpF47333F2VelH7lRy7mojgr3wY0Zur95OZbimKufuZc7OOOu+4p3vvLX98tb66Y0RfHv+DFlwZtL1aK0m/qtIvTCSd9LX20fHntc42Kvpit+NVTTi1uKVpb+R8vslUcW5ShHgQIECBAgED7CJjVZ0ZfnsmXn+sHT/1tQF0GZEAGZKCdM9Db38KW7x9f6czqG7tZXGbIsc0ZqB+Q9reSQgZkQAaOXAZ2H2je24xZ0RffpWLWXMxui9/Li1lzUf5VPXLRVDWrLdbPv8XX6Df66pfnfeTPRREYjyjfZj/6WFGqlWcA5vWrnuMzMYMufpcvSsLTv3Vm8fko4BoVc/XLY7u5BKx67zdz5jYt+qo+U97my398tXboVUVfuUyM4270L35fcPv2v/+OYG2DXhAgQIAAAQItFVi9pS/9xz3Lh8zqyqWP5+4rAtt5MNexKRtkQAZkQAbqM3Cwpd+k/r7zlT1b0r8tutusrnGY1ZVLH8/dVwAa0D9yA/osWcqADNRnYCA1/0Y1pkVfFEzPPPt8it+Si3IpZvc9+uvHh5RJY1X0RUEW+42SLT/iFqJR/OXf0DvjrLOL383r6Rn6+3RxK9AfXXFlw2KsvoBrVuY1ey8XkiPZXpxP/ly56Kwq+rJvo4IvL1f05ZR4JkCAAAEC7Scwf+nONH3e+nT8zI+Vfl1+O8/6AVR/G1SXARmQARlopwzs7RtIMYuvf6D5gFQrvm09uWlJmvbhvHTMWzOUfko/GTjCGagflPa3okIGZEAGRp+B7f29KWbx9TW5XWf5u9SYFn15R/FbdTHrbOq07xWlWRR/f/rz67XbUeYi6kjP6ItbdtYXffmY4taXTz39TIqiL9aZcua307IPPshvp0/WrCl+iy/ei+OOdddv2JDiWBuVdo2Wx0abvZcLu5EWfXkm4HCLvm+ecVbauPHT2jl6QYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0LkC41L0ZZ64DeaKlR+ns84+L/33t89JGz/9e+k0VkVfzNyLom7e0/PzIQx5jtuJvvX2O8Xv131/+v+kKCXjkT/7+3lPDbnlaKPSrtHy2F6z90ZT9O3fvz/F7Ufj/OL486NqRl9eN26junDRm3lVzwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAh0sMKZF3569e1PcvrP+EaVXlE7vvve34q1c9E2afHz62/tLBq2+efOWdOFFFxeFVnnmWqyUC7LHfzOnNjswf/jzz78oCsWvnnJqUS7m5bt27R6ybt7/N06fktauXVcUe3fd8/NUNcMwbv15480/LY5nJDPwDqfoKxd5+Tw+/Gh5UU6efd4FxW8I5uVVRV+894eXXi6O+errbkh79w69TWn+vGcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHOEBizoi8XdPEbdytWrCzKs5g9F+XeaVPOSLlUy0x5Bl0UUVu3bi3Wj8+dc/7UFAVgzFxrVPTF7+3F53fu3FmUeOvWrU/TL7u8+Mwtt/0s9fX1FbtZtWp1Ov1bZ6Zbb78jxe/vxQzDKCJfefW1dNwJX0kXXDit2EasPPOBWcXnH//tnBTlXhz7mrVra9uN4xmvoi8KxzjGfBxLliwtXOIYZj/62KDiMhd9V117fSr/7uDWbdvSRZdcWpxTXJM4lzin+Ldu/fr04EMPDyoM83XxTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0J4CY1b0RSl1/8wHipl7UUjV/5v18C8HzfbLM9Tq17vkBz9MLyz4Q/H5qqIvSsDzpn53yPZjOzETMArH/NixY0e64cabKteNGYbPPf9CXjVFmRblX/3xROl25933FsvHo+iL45p84klDjiOOK86lfnZe/AZf/BZfvH/t9T8uflMwn9Tq1Z8Uv0VYf07xd5zrm4vfyqt6JkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQaHOBMSv64rxjxlwUeFdcdU2KWXdRWkUp99qf/jyo5MvrLnpzcfrOuecXJdWJJ3+9mK0Ws9KWLF1WzOqrKvqi1Fq/YUNatHhxmnbx94t9lD9b7x8z2MrrxnHF7L9333tv0My4OPaYfTh12vdqx/OLBx8qZhvG8jiX8Sj6Tj71tMJwwYsv1WxiRuQzzz5fm6lYPseYoThn7hNFcRdFZ8xyLD+2b9+RHv3148WsylzwxW/9xQxHDwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc4RGNOir3MY2vNIm/2uX3sesaMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYLwFF33hJj2I/ir5RoPkIAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBLBBR9bXyhFX1tfHEcGgECBAgQIECAAAECBAgQIECAAAECBAgQIECgxQKKvhZfgGa7V/Q10/EeAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC7BRR9bXz9FX1tfHEcGgECBAgQIECAAAECBAgQIECAAAECBAgQIECgxQKKvhZfALsnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMBoBRd9o1HyGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsFFH0tvgB2T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA0Aoq+0aj5DAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEWCyj6WnwB7J4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAaAQUfaNR8xkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECLRZQ9LX4Atg9AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgdEIKPpGo+YzBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFosoOhr8QWwewIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKjEVD0jUbNZwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0WEDR1+ILYPcECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERiOg6BuNms8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaLGAoq/FF8DuCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIxGQNE3GjWfIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBigX/Zs2dP8o+BDMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADHRWBszoa3HTavcECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERiOg6BuNms8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaLGAoq/FF8DuCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECIxGQNE3GjWfIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBiAUVfiy+A3RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYjYCibzRqPkOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgxQKKvhZfALsnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMBoBRd9o1HyGAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsFFH0tvgB2T4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA0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om8iXc0OOpfRFH3xG4Yxmy9uIRq3DI3fF4xH3GZz27btxbIoBXMx2EEcDpUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMGIBRd+IyXygVQJR6M1/9rni9xSrZv7FsigB//Tn1xvO+GvVsdsvAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOBICyj6jrSo7Y2pQJR9H360PF117fVFqRfl3lHHTkrnTf1u+u3c36Xt23eM6f5tnAABAgQIECBAgAABAgQIECBAgAABAgQIECDQLgKKvna5Eo6DAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAgEFH0jwLIqAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXYRUPS1y5VwHAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRGIKDoGwGWVQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0i4Cir12uhOMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMAIBRd8IsKxKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoF0EFH3tciUcBwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIERCCj6RoBlVQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtIqDoa5cr4TgIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIjEBA0TcCLKsSIECA7BgavgAAIABJREFUAAECBAgQIECAAAECBAgQIECAAAECBAgQaBcBRV+7XAnHQYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAEAoq+EWBZlQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC7CCj62uVKOA4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECIxBQ9I0Ay6oECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE2kXgX/bs2ZP8YyADMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADMiADnZUBM/rapXJ1HAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRGIKDoGwGWVQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0i4Cir12uhOMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMAIBRd8IsKxK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Vfpfe8ONxW8h1hd9VZ+J23/mojIXuEcdO6l6u9f/uPhdwuEev/UIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQaC4xp0Re7jZlcJ596Wjr9W2emmEVWfkRx9Kc/v56mXfz9YiZYFETxetHixYN+iy9mjr373t+K8imKsJgxFiXY1q1bi+XxuU4s+qLAjFl14ZMLvvrn+rKt7Heo182Kvvjsnj170oMPPVyUqGX7mG14w403DZnRF5+J4jFupRqz/o6ZdFy68upr06effVY7lJht+e5776UrrrqmeD/O50j+7mBtR14QIECAAAECBAgQIECAAAECBAgQIECAAAECBLpcYMyLvi73bXj6cbvM+J3C3897alCpGR+IYjPej1mQUQTWF6QNN+oNAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBrhFQ9LXoUs97en4xk2/VqtWVRxC3PY3fIIxbY765+O3iNqX1s/2q/o7bmcZMPg8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGJLaDoa9H1fe6FBcXtOn90xZXF7L34fbt47N+/P3340fJ03Y9/Urw/84FZaeXHqxR9LbpOdkuAAAECBAgQIECAAAECBAgQIECAAAECBAgQaFcBRV+LrszmzVvShRdd3PC3+WK2XvxOXvwmngcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBegFFX73IOP7d09OTHv/NnPSdc89PRx07qSj9Tjz56+knN9+S3n3vvSG/3TeOh2ZXBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbS6g6GvzC+TwCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFQJKPqqVCwjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0OYCir42v0AOjwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECVgKKvSsUyAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAm0uoOhr8wvk8AgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUCSj6qlQsI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQINDmAoq+Nr9ADo8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlYCir0rFMgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtLqDoa/ML5PAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVAko+qpULCNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQ5gKKvja/QA6PAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJWAoq9KxTICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbS6g6GvzC+TwCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFQJKPqqVCwjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0OYC/7Jnz57kHwMZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZ6KwMmNHX5k2swyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQJaDoq1KxjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECbCyj62vwCOTwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVQKKvioVywgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0uYCir80vkMMjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUCWg6KtSsYwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAmwso+tr8Ajk8AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlUCir4qFcsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItLmAoq/NL5DDI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAloOirUrGMAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJsLKPra/AI5PAIECBAgQIBACMxfujNNn7c+HT/z4/Tvd35U/NvTN5D8YyADMiADMiADMtBOGdjbN5B6+wdS/8DBtvsS9+SmJWnah/PSMW/NSP+68A7/GHRFBrb19yT/GMiADMhAZ2Vge39v2n2gL/UdPDCs71OKvmExWYkAAQIECBAg0BqBjTv707S5a2vlXi754rmdBvUci0FmGZABGZABGZCB+gz07h9I7VD3rd+3I529dE5XlDoKTAVufQYM7nfW4L7r5XrJgAzUZ2DXgX3pUN+oFH2tGbOzVwIECBAgQIDAsATOeXxNZcmn6DOYWj+Y6m+ZkAEZkAEZaMcM9OwfGNZ3nrFcacr7v1bymb3X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AQIECBAgQIAAAQIECBAgQIDABBFQ9E2QC+k0CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEuktA0ddd19vZEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQITBABRd8EuZBOgwABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLsEFH3ddb2dLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAQRUPRNkAvpNAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLpLQNHXXdfb2RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEwQAUXfBLmQToMAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC7BBR93XW9nS0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAEEVD0TZAL6TQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6S+Bf9uzZk/xjIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAMyIAOdlQEz+rqr2HW2BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECE0RA0TdBLqTTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6C4BRV93XW9nS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMEEEFH0T5EI6DQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAge4SUPR11/V2tgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhNEQNE3QS6k0yBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOguAUVfd11vZ0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDBBBBR9E+RCOg0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHuElD0ddf1drYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQITREDRN0EupNMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoLgFFX3ddb2dLgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwQQQUfRPkQjoNAgQIECBAYGILzF+6M02ftz4dP/Pj9O93fpT29A34x0AGZEAGZEAGZKDtMrC3byD19g+k/oGDbffl7MlNS9K0D+elY96akf514R3+MZCBFmZgW39P8o+BDMiADFRnYHt/b9p9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nRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoR0DRV46rvRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoVUDRVyqvnRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoR+A7+/fvT/4xkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkAEZkIF6ZcAZfeUUqPZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFQBRV+pvHZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBwBRV85rvZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFQBRV+pvHZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBwBRV85rvZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFQBRV+pvHZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBwBRV85rvZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFQBRV+pvHZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBwBRV85rvZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFQBRV+pvHZOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBwBRV85rvZKgAABAgQIEChU4PDhw2lkZCQNDQ35x0AGZEAGZEAGZKCrMxAzS8wu3XYzT5kjzdIyIAMyIAMyUJcMTGWeUvR129TpeAgQIECAAAECTQLDw8Nd/cu8ugzJjtMPdDIgAzIgAzLQ2QzEDNMtN/NUZ9fe9xpvGZABGZABGSgmA5OZpxR93TJxOg4CBAgQIECAQAsBv5QqZjD2AwZHGZABGZABGagmA5P55VSLEajQu8xT1ay97znuMiADMiADMlBMBiaapxR9hY6OdkaAAAECBAgQKE4gLi9lKC5mKObIUQZkQAZkQAaqy0CVl/E0T1W37r7n2MuADMiADMhAcRkYb55S9BX3uzh7IkCAAAECBAgUKuCvz4sbiP1wwVIGZEAGZEAGqsvARH+FXugA1bQz81R16+57jr0MyIAMyIAMFJeB8eYpRV/TAOhDAgQIECBAgEC3CBiIixuIWbKUARmQARmQgWozUNV8Zd2rXXf+/GVABmRABmSguAy0m6cUfe1k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/YfZp/KiLy7t2de3tXnzKX882ceNHbcr+v62e3eaf8nC9E+3/0v2l/itDqK/vz9devnPs7IvSkE3AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAu0ESi/64jKU8TpzcfbegQMHsqLu66/3Zcfz5Z49WbEVn//VNdemz7Ztyy7tEJdS2P755+nBhx5OUZDFLX9tu9hu8+Yto9tFuReXwpx79ry0bdv2bNv8bMHY76PLH8uKtcHBwezxsw2m8N9UHjd226roi0t23nn3vdmZh1988ddxH/2Pz/9XVlrG5UjjtfjyM/vi7UuvvJri824ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIESi/6Nmz4KLtcZZRu+b/G16DbuvXTNO/H541+Lt8m3sZlLt9e+062SlHU3b9kaVaCNW6Tv7/s4UfGnO23+qWXj9o2XtdvqrepPm6rom/NG28edSz5ccfbC+cvSHv3fpUdWpSC8VziDMXGbfL3b7zplmkVllN93rYnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoboHSi754Pbu4DOVPLrw4K67i7LuVz64a86LMUXItf3xFdmZeFFpR8MUZgDt27ByjF/v6eOOmdM11N6QTZ87KyrCLFvw0vfra62NKvviiKMzi7Ld4vNhnPH4UbtO5TeVxm4u+/DKieVHX6m1j0RfHF2c0rlu/fvR55sf/pxdebHvZz+k8L19DgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQX4HSi7760jhyAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAt0r0HNFX37GXasz65rvi23dCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHSjgKKv4bUDFX3dGFHHRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0Eqg54q+VgjuI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFA3AUVf3VbM8RIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIKSn6xIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBADQUUfTVcNIdMgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQNEnAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqKKDoq+GiOWQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECij4ZIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBDAUVfDRfNIRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBQ9MkAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRoKKPpquGgOmQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgICiTwYIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1FBA0VfDRXPIBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBR9MkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECghgKKvhoumkMmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgoOiTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1FFD01XDRHDIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB7+zfvz/5x0AGZEAGZEAGZEAGZEAGZEAGZEAGZEAGZEAGZEAGZEAGZEAGZEAG6pUBZ/QpewkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUUEDRV8NFc8gECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFH0yQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCGAoq+Gi6aQyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCg6JMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjUUUPTVcNEcMgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAFFnwwQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqKGAoq+Gi+aQCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCj6ZIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBADQUUfTVcNIdMgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQNEnAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqKKDoq+GiOWQCBAgQIECg9wQOHz6cRkZG0tDQkH8MZEAGZEAGZEAGujoDMbPE7NJtN/OUOdIsLQMyIAMyIAN1ycBU5ilFX7dNnY6HAAECBAgQINAkMDw83NW/zKvLkOw4/UAnAzIgAzIgA53NQMww3XIzT3V27X2v8ZYB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wXTjTbdk+7/yqqvT9u2fZ2f2xSVFVzzxZDpx5ixF36iudwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOogUFrRNzg4mO5fsjQ7cy8uy9n8L4q9KOzy28DAgXTrbxcdtV3+db978KEULz6Y36a6fV/f1qxgzPeXvz1+xswU5d/355yRnNGX63pLgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQ7QKlFX3xxOOymB9v3JSuue6G7Ky5KNUuWvDT9Oprr48p+XKkoaGh9Nrra9LCy67ICsLYPt5/a+3a7IzAfLv87VS33/WXv6TbFt2eZs0+Jdv/5b/4ZVq3fn3as2dvunD+AkVfDustAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA1wuUWvR1/bN3gAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRqKqDoq+nCOWwCBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHeFlD09fb6e/YECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1FVD01XThHDYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBvCyj6env9PXsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGaCij6arpwDpsAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC3BRR9vb3+nj0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBNBRR9NV04h02AAAECBAgQIECAAAECBAgQIECAAAECBAgQINDbAoq+3l5/z54AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCmAoq+mi6cwyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhtAUVfb6+/Z0+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBTAUVfTRfOYRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPS2gKKvt9ffsydAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKipgKKvpgvnsAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBHpbQNHX2+vv2RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNRUQNFX04Vz2AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAr0toOjr7fX37AkQIECAAAECBAgQIECAAAECBAgQIECAAAECBGoqoOir6cI5bAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgd4WUPT19vp79gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjUV+M7+/fuTfwxkQAZkQAZkQAZkQAZkQAZkQAZkQAZkQAZkQAZkQAZkQAZkQAZkoF4ZcEZfTRtah02AAAECBAgQIECAAAECBAgQIECAAAECBAgQINDbAoq+3l5/z54AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCmAoq+mi6cwyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhtAUVfb6+/Z0+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBTAUVfTRfOYRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPS2gKKvt9ffsydAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKipgKKvpgvnsAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBHpbQNHX2+vv2RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNRUQNFX04Vz2AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAr0toOjr7fX37AkQIECAAAECBAgQIECAAAECBAgQIECAAAECBGoqoOir6cI5bAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgd4WUPT19vp79gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjUVUPTVdOEcNgECBAgQIECAAAECBAgQIECAAAECBAgQIECAQG8LKPp6e/09ewIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZoKKPpqunAOmwABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLcFFH29vf6ePQECBAgQIECAAAECBAgQIECAAAECBAgQIECAQE0FFH01XTiHTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0NsCir7eXn/PngABAgQIECBAgAABAgQIECBAgAABAgQIECBAoKYCir6aLpzDJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6G0BRV9vr79nT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUFMBRV9NF85hEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9LbA/wJCYwWP/92mTwAAAABJRU5ErkJggg==) - """) - return - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - These visualizations can help you save both time and resources running expensive hyperparameter optimizations by honing in on the parameters (and value ranges) that are the most important, and thereby worthy of further exploration. - """) - return - - -@app.cell(hide_code=True) -def _(sweep_complete): - mo.md(f""" - ## Verify your sweep - - In W&B, open project `{sweep_complete["project"]}` and select the sweep with - ID `{sweep_complete["sweep_id"]}`. Confirm that it contains - {sweep_complete["run_count"]} completed runs, then inspect the parallel - coordinates and hyperparameter importance panels to see which settings had - the strongest relationship with `accuracy`. + Try narrowing the learning-rate values or changing `method` to `bayes`. + Run the sweep-creation cell again, then the agent cell, to compare the new + sweep with the first one. See the [Sweeps documentation](https://docs.wandb.ai/models/sweeps) + for more configuration options. """) return diff --git a/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py b/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py index 70d6e3ca..b8b1cc5d 100644 --- a/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py +++ b/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py @@ -1,5 +1,7 @@ # /// script +# requires-python = ">=3.10" # dependencies = [ +# "marimo>=0.24", # "torch==2.14.0", # "torchvision==0.29.0", # "wandb==0.30.0", @@ -8,8 +10,11 @@ import marimo -__generated_with = "0.24.0" -app = marimo.App(auto_download=["html"]) +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Weights & Biases Tables Quickstart", +) with app.setup: import marimo as mo @@ -21,18 +26,6 @@ import torchvision.transforms as T import wandb - WANDB_PROJECT = "table-quickstart" - - -@app.cell(hide_code=True) -def _(): - mo.md(r""" - # View & analyze model predictions during training - - [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py/server) - """) - return - @app.cell(hide_code=True) def _(): @@ -54,32 +47,16 @@ def _(): Weights & Biases by CoreWeave Weights & Biases by CoreWeave - This quickstart guide covers how to track, visualize, and compare model predictions over the course of training, using PyTorch on MNIST data. - - With [W&B Tables](https://docs.wandb.com/datasets-and-predictions): - 1. Log metrics, images, text, etc. to a `wandb.Table()` during model training or evaluation - 2. View, sort, filter, group, join, interactively query, and explore these tables - 3. Compare model predictions or results: dynamically across specific images, hyperparameters/model versions, or time steps. - - ## Examples - ### Compare predicted scores for specific images - - [Live example: compare predictions after 1 vs 5 epochs of training →](https://wandb.ai/stacey/table-quickstart/reports/CNN-2-Progress-over-Training-Time--Vmlldzo3NDY5ODU#compare-predictions-after-1-vs-5-epochs) - 1 epoch vs 5 epochs of training - The histograms compare per-class scores between the two models. The top green bar in each histogram represents model "CNN-2, 1 epoch" (id 0), which only trained for 1 epoch. The bottom purple bar represents model "CNN-2, 5 epochs" (id 1), which trained for 5 epochs. The images are filtered to cases where the models disagree. For example, in the first row, the "4" gets high scores across all the possible digits after 1 epoch, but after 5 epochs it scores highest on the correct label and very low on the rest. - - ### Focus on top errors over time - [Live example →](https://wandb.ai/stacey/table-quickstart/reports/CNN-2-Progress-over-Training-Time--Vmlldzo3NDY5ODU#top-errors-over-time) - - See incorrect predictions (filter to rows where "guess" != "truth") on the full test data. Note that there are 229 wrong guesses after 1 training epoch, but only 98 after 5 epochs. - side by side, 1 vs 5 epochs of training + # View & analyze model predictions during training - ### Compare model performance and find patterns + [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/w-b-tables-quickstart/w_b_tables_quickstart.py/server) - [See full detail in a live example →](https://wandb.ai/stacey/table-quickstart/reports/CNN-2-Progress-over-Training-Time--Vmlldzo3NDY5ODU#false-positives-grouped-by-guess) + Train an MNIST classifier and log a Table of labeled prediction examples + after each epoch. Use the images, predictions, and class probabilities to + inspect mistakes that an aggregate accuracy score cannot explain. - Filter out correct answers, then group by the guess to see examples of misclassified images and the underlying distribution of true labels—for two models side-by-side. A model variant with 2X the layer sizes and learning rate is on the left, and the baseline is on the right. Note that the baseline makes slightly more mistakes for each guessed class. - grouped errors for baseline vs double variant + Running the following code cells downloads MNIST, trains a model, and logs + metrics and prediction tables to Weights & Biases. """) return @@ -87,82 +64,71 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Authentication + ## Authenticate with Weights & Biases - Enter your [W&B API key](https://wandb.ai/authorize) and, if needed, your team or entity. You can leave the key blank when this environment already has W&B credentials, including a `WANDB_API_KEY` configured in the Molab Secrets panel. + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. - If you do not yet have an account, [sign up for W&B](https://wandb.ai/signup). Your entity is the first path segment after `wandb.ai` when you open a W&B workspace. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. - This example runs in Molab as a convenient hosted environment, but you can run the same training code anywhere and visualize its metrics and predictions in W&B. + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `table-quickstart`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use cached credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}") - .batch(api_key=_api_key_input, entity=_entity_input) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="table-quickstart", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - "Submit the form above to authenticate before creating a run.", - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _entity = wandb_login_form.value["entity"].strip() - try: - wandb.login(key=_api_key or None, relogin=bool(_api_key)) - except wandb.errors.Error: - mo.stop( - True, - mo.callout( - "W&B authentication failed. Check the API key or your Molab Secrets configuration, then submit the form again.", - kind="danger", - ), - ) - - wandb_entity = _entity or None - _entity_note = ( - f" Runs will be logged to `{wandb_entity}`." - if wandb_entity - else " Runs will use your default W&B entity." - ) - mo.callout( - mo.md(f"W&B is connected.{_entity_note}"), - kind="success", + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): + _login_ok = False + + mo.stop( + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - return (wandb_entity,) + + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ## 0. Setup + ## Set the Training and Table Sizes - The dependencies are declared in the notebook metadata. The next cells define the PyTorch data loader, model, and training schedule. MNIST is downloaded only after you explicitly start the training workflow. + The next cell selects a GPU when available and defines the model's + hyperparameters. One epoch keeps the demo short. Increase `EPOCHS` to compare + predictions at different points in training. + + We evaluate all 10,000 test images, but log only 32 images from each of the + first ten test batches. That creates a table with 320 rows per epoch and + keeps image uploads small. """) return @@ -170,72 +136,57 @@ def _(): @app.cell def _(): device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - - # Create train and test data loaders. - def get_dataloader(is_train, batch_size, slice=5): - "Get a training data loader." - ds = torchvision.datasets.MNIST( - root=".", - train=is_train, - transform=T.ToTensor(), - download=True, - ) - loader = torch.utils.data.DataLoader( - dataset=ds, - batch_size=batch_size, - shuffle=True if is_train else False, - pin_memory=torch.cuda.is_available(), - num_workers=2, - ) - return loader - - return device, get_dataloader + EPOCHS = 1 + BATCH_SIZE = 32 + LEARNING_RATE = 0.001 + NUM_CLASSES = 10 + L1_SIZE = 32 + L2_SIZE = 64 + CONV_KERNEL_SIZE = 5 + NUM_BATCHES_TO_LOG = 10 + NUM_IMAGES_PER_BATCH = 32 + return ( + BATCH_SIZE, + CONV_KERNEL_SIZE, + EPOCHS, + L1_SIZE, + L2_SIZE, + LEARNING_RATE, + NUM_BATCHES_TO_LOG, + NUM_CLASSES, + NUM_IMAGES_PER_BATCH, + device, + ) @app.cell(hide_code=True) def _(): mo.md(r""" - ## 1. Define the model and training schedule + ## Define the Classifier + + The next cell defines a small convolutional network for MNIST. It returns + ten logits per image, one for each digit. During evaluation, we apply + softmax to convert those logits into per-class probabilities for the table. - * Set the number of epochs to run, where each epoch consists of a training step and a validation (test) step. Optionally configure the amount of data to log per test step. Here the number of batches and number of images per batch to visualize are set low to simplify the demo. - * Define a simple convolutional neural net (following [pytorch-tutorial](https://github.com/yunjey/pytorch-tutorial) code). - * Load in train and test sets using PyTorch + This is ordinary PyTorch model code. The Weights & Biases integration happens later, + when we start a run and log its metrics and predictions. """) return @app.cell -def _(device): - # Number of epochs to run. Each epoch includes a training step and a - # test step, so this sets the number of prediction tables to log. - EPOCHS = 1 - - # Keep the amount of prediction data low to simplify the demo. - NUM_BATCHES_TO_LOG = 10 - NUM_IMAGES_PER_BATCH = 32 - - # Training configuration and hyperparameters. - NUM_CLASSES = 10 - BATCH_SIZE = 32 - LEARNING_RATE = 0.001 - L1_SIZE = 32 - L2_SIZE = 64 - # Changing this may require changing the shape of adjacent layers. - CONV_KERNEL_SIZE = 5 - - - # Define a two-layer convolutional neural network. +def _(CONV_KERNEL_SIZE, L1_SIZE, L2_SIZE): class ConvNet(nn.Module): def __init__(self, num_classes=10): super().__init__() self.layer1 = nn.Sequential( - nn.Conv2d(1, L1_SIZE, CONV_KERNEL_SIZE, stride=1, padding=2), + nn.Conv2d(1, L1_SIZE, CONV_KERNEL_SIZE, stride=1, padding=CONV_KERNEL_SIZE // 2), nn.BatchNorm2d(L1_SIZE), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), ) self.layer2 = nn.Sequential( - nn.Conv2d(L1_SIZE, L2_SIZE, CONV_KERNEL_SIZE, stride=1, padding=2), + nn.Conv2d(L1_SIZE, L2_SIZE, CONV_KERNEL_SIZE, stride=1, padding=CONV_KERNEL_SIZE // 2), nn.BatchNorm2d(L2_SIZE), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), @@ -248,64 +199,80 @@ def forward(self, x): out = out.reshape(out.size(0), -1) return self.fc(out) - model = ConvNet(NUM_CLASSES).to(device) - criterion = nn.CrossEntropyLoss() - optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE) - - model - return ( - BATCH_SIZE, - CONV_KERNEL_SIZE, - EPOCHS, - L1_SIZE, - L2_SIZE, - LEARNING_RATE, - NUM_BATCHES_TO_LOG, - NUM_CLASSES, - NUM_IMAGES_PER_BATCH, - criterion, - model, - optimizer, - ) + return (ConvNet,) @app.cell(hide_code=True) def _(): - mo.vstack( - [ - mo.md(r""" - ## 2. Run training and log test predictions - - For every epoch, run a training step and a test step. For each test step, create a `wandb.Table()` in which to store test predictions. These can be visualized, dynamically queried, and compared side by side in your browser. - - The button below downloads MNIST, trains the model for the configured number of epochs, and creates a W&B run containing metrics and prediction tables. - """), - mo.callout( - mo.md( - "For faster training in molab, open **Configure compute** and select a GPU before starting the run." - ), - kind="info", - ), - ] - ) + mo.md(r""" + ## Load MNIST + + The next cell downloads MNIST and creates training and test data loaders. + Training batches are shuffled. Test batches stay in a fixed order so each + logged image has the same identifier across epochs and experiments. + + The test batch size is twice the training batch size. We use + `num_workers=0` so loading also works in notebook runtimes without separate + worker processes. + """) return @app.cell -def _(): - run_training = mo.ui.run_button( - label="Train model and log predictions to W&B", - kind="success", - tooltip="Downloads MNIST and creates a W&B run", +def _(BATCH_SIZE): + train_dataset = torchvision.datasets.MNIST( + root="./data", train=True, transform=T.ToTensor(), download=True, + ) + test_dataset = torchvision.datasets.MNIST( + root="./data", train=False, transform=T.ToTensor(), download=True, ) - run_training - return (run_training,) + train_loader = torch.utils.data.DataLoader( + train_dataset, + batch_size=BATCH_SIZE, + shuffle=True, + num_workers=0, + pin_memory=torch.cuda.is_available(), + ) + test_loader = torch.utils.data.DataLoader( + test_dataset, + batch_size=2 * BATCH_SIZE, + shuffle=False, + num_workers=0, + pin_memory=torch.cuda.is_available(), + ) + return test_loader, train_loader + + +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Train and Log Prediction Tables + + The next cell starts a Weights & Biases run with `wandb.init()` and records the training + configuration. Each execution builds a fresh model and optimizer. + + During training, `training_run.log()` sends the loss to Weights & Biases. At the end of + each epoch, we evaluate the model and build a new `wandb.Table`: + + - `columns` defines the schema: image ID, image, predicted digit, true digit, + and ten class probabilities. + - `add_data()` adds one row per image. `wandb.Image()` makes the image + viewable in Weights & Biases. The remaining values let you filter errors and compare + class scores. + - `training_run.log()` uploads accuracy and the table under + `test_predictions`. Logging a fresh table under the same key each epoch + lets you inspect predictions over time. + + The context manager finishes the run after training and evaluation complete. + """) + return @app.cell def _( BATCH_SIZE, CONV_KERNEL_SIZE, + ConvNet, EPOCHS, L1_SIZE, L2_SIZE, @@ -313,27 +280,12 @@ def _( NUM_BATCHES_TO_LOG, NUM_CLASSES, NUM_IMAGES_PER_BATCH, - criterion, device, - get_dataloader, - model, - optimizer, - run_training, - wandb_entity, + entity, + project, + test_loader, + train_loader, ): - mo.stop( - not run_training.value, - mo.callout( - mo.md( - "Click **Train model and log predictions to W&B** when you are ready to download MNIST and start the run." - ), - kind="info", - ), - ) - - train_loader = get_dataloader(is_train=True, batch_size=BATCH_SIZE) - test_loader = get_dataloader(is_train=False, batch_size=2 * BATCH_SIZE) - training_config = { "epochs": EPOCHS, "batch_size": BATCH_SIZE, @@ -341,47 +293,15 @@ def _( "l1_size": L1_SIZE, "l2_size": L2_SIZE, "conv_kernel": CONV_KERNEL_SIZE, - "img_count": min(10000, NUM_IMAGES_PER_BATCH * NUM_BATCHES_TO_LOG), + "num_batches_to_log": NUM_BATCHES_TO_LOG, + "num_images_per_batch": NUM_IMAGES_PER_BATCH, } - # ✨ W&B: Initialize a run and log the training configuration. - with wandb.init( - project=WANDB_PROJECT, - entity=wandb_entity, - config=training_config, - ) as run: - run_url = run.url - - def log_test_predictions( - images, - labels, - outputs, - predicted, - test_table, - log_counter, - ): - "Log predictions and per-class scores for one test batch." - scores = F.softmax(outputs.data, dim=1) - log_scores = scores.cpu().numpy() - log_images = images.cpu().numpy() - log_labels = labels.cpu().numpy() - log_preds = predicted.cpu().numpy() - - for image_id, (image, label, prediction, score) in enumerate( - zip(log_images, log_labels, log_preds, log_scores) - ): - row_id = f"{image_id}_{log_counter}" - test_table.add_data( - row_id, - wandb.Image(image), - prediction, - label, - *score, - ) - if image_id + 1 == NUM_IMAGES_PER_BATCH: - break - - total_step = len(train_loader) + model = ConvNet(NUM_CLASSES).to(device) + criterion = nn.CrossEntropyLoss() + optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE) + + with wandb.init(project=project, entity=entity, config=training_config) as training_run: for epoch in range(EPOCHS): model.train() for step, (images, labels) in enumerate(train_loader): @@ -394,17 +314,11 @@ def log_test_predictions( loss.backward() optimizer.step() - # ✨ W&B: Log loss over training steps for live visualization. - run.log({"loss": loss.item()}) + training_run.log({"loss": loss.item()}) if (step + 1) % 100 == 0: print( - "Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}".format( - epoch + 1, - EPOCHS, - step + 1, - total_step, - loss.item(), - ) + f"Epoch {epoch + 1}/{EPOCHS}, " + f"batch {step + 1}/{len(train_loader)}, loss: {loss.item():.4f}" ) columns = ["id", "image", "guess", "truth"] @@ -412,68 +326,74 @@ def log_test_predictions( test_table = wandb.Table(columns=columns) model.eval() - log_counter = 0 + correct = 0 + total = 0 with torch.no_grad(): - correct = 0 - total = 0 - for images, labels in test_loader: + for batch_index, (images, labels) in enumerate(test_loader): images = images.to(device) labels = labels.to(device) outputs = model(images) - _, predicted = torch.max(outputs.data, 1) - - if log_counter < NUM_BATCHES_TO_LOG: - log_test_predictions( - images, - labels, - outputs, - predicted, - test_table, - log_counter, - ) - log_counter += 1 + predicted = outputs.argmax(dim=1) total += labels.size(0) correct += (predicted == labels).sum().item() + if batch_index < NUM_BATCHES_TO_LOG: + scores = F.softmax(outputs, dim=1).cpu() + for image_index in range(min(NUM_IMAGES_PER_BATCH, len(images))): + image_id = batch_index * test_loader.batch_size + image_index + test_table.add_data( + image_id, + wandb.Image(images[image_index].cpu()), + predicted[image_index].item(), + labels[image_index].item(), + *scores[image_index].tolist(), + ) + accuracy = 100 * correct / total - # ✨ W&B: Log accuracy and the prediction table for this epoch. - run.log( - { - "epoch": epoch, - "acc": accuracy, - "test_predictions": test_table, - } - ) + training_run.log({ + "epoch": epoch + 1, + "acc": accuracy, + "test_predictions": test_table, + }) print( - "Test accuracy on the 10,000 MNIST test images: " - f"{accuracy:.2f}%" + f"Epoch {epoch + 1}: test accuracy {accuracy:.2f}% " + f"on {total:,} images; {len(test_table.data)} table rows" ) - training_result = { - "run_url": run_url, - "accuracy": accuracy, - "epochs": EPOCHS, - } - return (training_result,) + run_url = training_run.url + print(f"View metrics and prediction tables: {run_url}") + return -@app.cell -def _(training_result): - _run_url = training_result["run_url"] - _accuracy = training_result["accuracy"] - mo.callout( - mo.md( - f""" - Training is complete. [Open the W&B run]({_run_url}) to explore the logged loss, accuracy, and prediction tables. - - Final test accuracy: **{_accuracy:.2f}%** - """ - ), - kind="success", - title="W&B Tables run ready", - ) +@app.cell(hide_code=True) +def _(): + mo.md(r""" + ## Explore Your Predictions in Weights & Biases + + Open the run URL printed by the training cell and find the `test_predictions` Table. + Each row connects an image to its true label, predicted label, and class + probabilities. + + Filter to rows where `guess != truth` to inspect mistakes. Group by + `guess` to find patterns in misclassified digits, or compare the + `score_0` through `score_9` columns to inspect the model's confidence. + + With multiple epochs, use the table's step selector to compare snapshots. + Across experiments, stable image IDs let you match predictions for the same + test image. Try changing the learning rate or layer sizes, rerun training, + and compare the runs in your project. Repeatedly using the test results to + choose settings turns this split into validation data. Keep an independent + test set for a final evaluation in your own project. + + ## Next steps + + - See the [Weights & Biases Tables guide](https://docs.wandb.ai/models/tables) + for more ways to query and compare your results. + - Explore the [CNN-2: Progress over Training Time report](https://wandb.ai/stacey/table-quickstart/reports/CNN-2-Progress-over-Training-Time--Vmlldzo3NDY5ODU#false-positives-grouped-by-guess) for examples on how to compare, filter, and group predictions. + """) return + if __name__ == "__main__": app.run() diff --git a/marimo/convert/wandb-artifacts-time-to-live-ttl-walkthrough/wandb_artifacts_time_to_live_ttl_walkthrough.py b/marimo/convert/wandb-artifacts-time-to-live-ttl-walkthrough/wandb_artifacts_time_to_live_ttl_walkthrough.py index 9b859d51..683c0d3f 100644 --- a/marimo/convert/wandb-artifacts-time-to-live-ttl-walkthrough/wandb_artifacts_time_to_live_ttl_walkthrough.py +++ b/marimo/convert/wandb-artifacts-time-to-live-ttl-walkthrough/wandb_artifacts_time_to_live_ttl_walkthrough.py @@ -10,12 +10,15 @@ import marimo -__generated_with = "0.24.0" -app = marimo.App(width="medium", app_title="W&B Artifact TTL Walkthrough") - +__generated_with = "0.25.1" +app = marimo.App( + width="medium", + app_title="Weights & Biases Artifact TTL Walkthrough", +) with app.setup: import random + import shutil import tarfile import tempfile from datetime import timedelta @@ -31,17 +34,19 @@ @app.cell(hide_code=True) def _(): mo.md(r""" - # Weights & Biases Artifacts Time-to-live (TTL) Walkthrough + # Weights & Biases Artifacts: Time-to-Live (TTL) [![Open in molab](https://marimo.io/molab-shield.svg)](https://molab.marimo.io/github/wandb/examples/blob/main/marimo/convert/wandb-artifacts-time-to-live-ttl-walkthrough/wandb_artifacts_time_to_live_ttl_walkthrough.py/server) - W&B Artifacts supports setting time-to-live policies on each version of an Artifact. The following examples show the use of TTL policy in a common Artifact logging workflow. We'll cover: + Use artifact TTL policies to schedule data retention. This lesson covers + setting a policy before upload, changing a policy on an existing version, + updating a collection of versions, and following artifact lineage. - - Setting a TTL policy when creating an Artifact - - Retroactively setting TTL for a specific Artifact alias - - Using the W&B API to set a TTL for all versions of an Artifact + TTL is measured from an artifact version's creation time. Expiration + marks the version for deletion. Storage cleanup happens separately. Linking a + version to Registry deactivates its TTL. - TTL applies to user-generated Artifacts. Linking an Artifact version to W&B Registry deactivates its TTL policy, so use the examples below on versions whose lifecycle you intend to manage directly. + Running the code cells downloads Imagenette and uploads sample artifacts. """) return @@ -49,741 +54,331 @@ def _(): @app.cell(hide_code=True) def _(): mo.md(r""" - ## Setup - Let's do a few things before we get started. Below we will: - - - Connect to W&B - - Download and sample a dataset + ## Authenticate with Weights & Biases - The notebook dependencies install the required libraries automatically. - """) - return + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Authentication + ## Set your team and project - Enter your [W&B API key](https://wandb.ai/authorize) and the team entity where you have permission to create runs and Artifacts. You can leave the key blank when this environment already has credentials, such as `WANDB_API_KEY` configured in the marimo Secrets panel. If the entity is blank, W&B uses your default entity. - - Changing these fields does nothing until you click **Connect to W&B**. Connecting authenticates and resolves the target path, but it does not create or modify any W&B object. + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `artifacts-ttl-demo`. Then select **Connect to Weights & Biases**. """) return @app.cell(hide_code=True) def _(): - _api_key_input = mo.ui.text( - kind="password", - label="W&B API key (optional)", - placeholder="Paste a key or use configured credentials", - full_width=True, - ) - _entity_input = mo.ui.text( - label="W&B entity or team (optional)", - placeholder="Leave blank to use your default entity", - full_width=True, - ) - _project_input = mo.ui.text( - value="artifacts-ttl-demo", - label="W&B project", - full_width=True, - ) - wandb_login_form = ( - mo.md("{api_key}\n\n{entity}\n\n{project}") - .batch( - api_key=_api_key_input, - entity=_entity_input, - project=_project_input, - ) - .form(submit_button_label="Connect to W&B", bordered=True) - ) - wandb_login_form - return (wandb_login_form,) + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="artifacts-ttl-demo", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) @app.cell(hide_code=True) -def _(wandb_login_form): +def _(wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() mo.stop( - wandb_login_form.value is None, - mo.callout( - mo.md("Connect to W&B before running a remote Artifact step."), - kind="info", - ), + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), ) - _api_key = wandb_login_form.value["api_key"].strip() - _submitted_entity = wandb_login_form.value["entity"].strip() try: - _login_ok = wandb.login( - key=_api_key or None, - relogin=bool(_api_key), - ) - _login_error = None - except wandb.errors.Error as _error: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): _login_ok = False - _login_error = str(_error) mo.stop( not _login_ok, - mo.callout( - mo.md( - "W&B authentication did not complete. Check the API key and " - f"try again.\n\nW&B reported: `{_login_error or 'unknown error'}`" - ), - kind="danger", - ), + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), ) - entity = _submitted_entity or wandb.Api().default_entity - mo.stop( - not entity, - mo.callout( - mo.md( - "W&B did not return a default entity. Enter a team entity in " - "the form above and reconnect." - ), - kind="danger", - ), - ) - project = wandb_login_form.value["project"].strip() or "artifacts-ttl-demo" - wandb_settings = {"entity": entity, "project": project} - mo.callout( - mo.md(f"Connected. Remote steps will target `{entity}/{project}`."), - kind="success", - ) - return (wandb_settings,) + entity = _entity + project = _project + mo.md("✓ Connected to Weights & Biases.") + return entity, project @app.cell(hide_code=True) def _(): mo.md(r""" - ### Image Sampling - For the purposes of the walkthrough, we will sample from the Imagenette dataset and organize them into training and validation directories in our notebook session. The block below: + ## Prepare Sample Images - - Creates folders for our sampled images if they don't already exist - - Selects a random sample of images from the Imagenette dataset - - Organizes the samples into training and validation directories + [Imagenette](https://github.com/fastai/imagenette) contains images from ten + ImageNet classes. The next cell downloads and extracts it into a temporary + workspace, then copies 5% of the training and validation images into sample + folders. Sampling leaves the extracted dataset intact, so rerunning the cell + does not repeatedly shrink it. - *Note: we overwrite the files every time we execute this so we get new Artifact versions.* + We call the training sample "real" and the validation sample "fake" to + illustrate different retention policies. Both contain actual photographs. + The names describe roles in this example, not whether the images are generated. """) return -@app.cell(hide_code=True) +@app.cell def _(): - prepare_imagenette = mo.ui.run_button(label="Download and sample Imagenette") - mo.vstack( - [ - mo.md( - "This downloads and extracts Imagenette locally, then keeps a " - "random 5% sample. It does not contact W&B." - ), - prepare_imagenette, - ] - ) - return (prepare_imagenette,) - + workspace = Path(tempfile.mkdtemp(prefix="wandb-ttl-")) + archive = workspace / "imagenette.tgz" -@app.cell(hide_code=True) -def _(prepare_imagenette): - mo.stop( - not prepare_imagenette.value, - mo.callout( - mo.md("Click the button above when you are ready to prepare the dataset."), - kind="info", - ), - ) - imagenette_url = "https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-160.tgz" - imagenette_workspace = Path( - tempfile.mkdtemp(prefix="wandb-ttl-imagenette-") + urlretrieve( + "https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-160.tgz", + archive, ) - return imagenette_url, imagenette_workspace - - -@app.cell -def _(imagenette_url, imagenette_workspace): - imagenette_archive = imagenette_workspace / "imagenette.tgz" - urlretrieve(imagenette_url, imagenette_archive) - return (imagenette_archive,) - -@app.function -def untar_file(file_path, dest_path): - destination = Path(dest_path).resolve() - destination.mkdir(parents=True, exist_ok=True) - with tarfile.open(file_path, "r:gz") as tar: + # Validate archive entries before extracting downloaded files. + with tarfile.open(archive, "r:gz") as tar: members = tar.getmembers() for member in members: - member_path = (destination / member.name).resolve() - if not member_path.is_relative_to(destination): - raise ValueError(f"Unsafe path in archive: {member.name}") + destination = (workspace / member.name).resolve() + if not destination.is_relative_to(workspace.resolve()): + raise ValueError(f"Unsafe archive path: {member.name}") if not (member.isfile() or member.isdir()): raise ValueError(f"Unsupported archive entry: {member.name}") - tar.extractall(destination, members=members) + tar.extractall(workspace, members=members) + train_source_dir = workspace / "sample" / "train" + val_source_dir = workspace / "sample" / "val" + rng = random.Random(1) -@app.cell -def _(imagenette_archive): - untar_file(imagenette_archive, imagenette_archive.parent) - dataset_dir = imagenette_archive.parent / "imagenette2-160" - return (dataset_dir,) + for split, sample_dir in [("train", train_source_dir), ("val", val_source_dir)]: + _images = sorted((workspace / "imagenette2-160" / split).rglob("*.JPEG")) + selected = rng.sample(_images, max(1, len(_images) // 20)) + for _image in selected: + target = sample_dir / _image.parent.name / _image.name + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(_image, target) + return train_source_dir, val_source_dir, workspace @app.cell(hide_code=True) def _(): mo.md(r""" - We are going to use Imagenette dataset for this example. [Imagenette](https://github.com/fastai/imagenette) is a subset of 10 easily classified classes from Imagenet (tench, English springer, cassette player, chain saw, church, French horn, garbage truck, gas pump, golf ball, parachute). It was created by Jeremy Howard and is a great dataset to experiment with. + Preview five images from the training sample before uploading them as an + artifact. This cell only displays local files. """) return @app.cell -def _(dataset_dir): - # let's keep 5% of the images - for image in dataset_dir.rglob("*.JPEG"): - if random.random() > 0.05: - image.unlink() - - # we get two image folders: train and validation - train_source_dir = dataset_dir / "train" - val_source_dir = dataset_dir / "val" - return train_source_dir, val_source_dir +def _(train_source_dir): + _images = sorted(train_source_dir.rglob("*.JPEG"))[:5] + figure, axes = plt.subplots(1, len(_images), figsize=(15, 4), squeeze=False) + for axis, _image_path in zip(axes[0], _images): + with Image.open(_image_path) as _image: + axis.imshow(_image) + axis.axis("off") + figure.tight_layout() + plt.close(figure) + figure + return @app.cell(hide_code=True) def _(): mo.md(r""" - ### Image Preview - Quick block to view some of the images in the sampled dataset. - """) - return + ## Set TTL When Creating an Artifact + The next cell starts a run, creates dataset artifacts with + `wandb.Artifact()`, adds files with `add_dir()`, and sets a ten-day TTL + before calling `raw_data_run.log_artifact()`. -@app.function -def show_sample_images(img_dir, num_images=5): - images = list(img_dir.rglob("*.JPEG"))[:num_images] - fig, axes = plt.subplots(1, len(images), figsize=(15, 5), squeeze=False) + We create two versions of `real-raw`, with aliases `extended` and + `compliant`, so the next example can give them different policies. Different + directory names inside their manifests ensure these are distinct versions, + even though they contain the same images. A TTL applies to a version, so + all aliases pointing to that version share its retention policy. - # Iterate over the images and display them - for i, img_path in enumerate(images): - img = Image.open(img_path) - axes[0, i].imshow(img) - axes[0, i].axis("off") # Turn off axis labels - - plt.tight_layout() - return fig + We also log `fake-raw` with a ten-day TTL for the bulk-update example. + `wait()` ensures each upload finishes before later cells fetch it. + """) + return @app.cell -def _(train_source_dir): - sample_figure = show_sample_images(train_source_dir) - sample_figure - return +def _(entity, project, train_source_dir, val_source_dir): + with wandb.init(entity=entity, project=project, job_type="raw-data") as raw_data_run: + extended = wandb.Artifact("real-raw", type="dataset") + extended.add_dir(str(train_source_dir), name="extended-snapshot") + extended.ttl = timedelta(days=10) + logged_extended = raw_data_run.log_artifact(extended, aliases=["extended"]) + logged_extended.wait() + + compliant = wandb.Artifact("real-raw", type="dataset") + compliant.add_dir(str(train_source_dir), name="compliant-snapshot") + compliant.ttl = timedelta(days=10) + logged_compliant = raw_data_run.log_artifact(compliant, aliases=["compliant", "latest"]) + logged_compliant.wait() + + fake = wandb.Artifact("fake-raw", type="dataset") + fake.add_dir(str(val_source_dir)) + fake.ttl = timedelta(days=10) + logged_fake = raw_data_run.log_artifact(fake) + logged_fake.wait() + + project_path = f"{raw_data_run.entity}/{raw_data_run.project}" + raw_alias_paths = { + "extended": f"{project_path}/real-raw:extended", + "compliant": f"{project_path}/real-raw:compliant", + } + return project_path, raw_alias_paths @app.cell(hide_code=True) def _(): mo.md(r""" - ## Setting TTL on New Artifacts - Below we create two new Artifacts for our real and fake data. Because we have internal retention policies in hypothetical organization we'd like to remove any Artifact that has real data (potentially containing personal data). Below we: + ## Change TTL on Existing Versions - - Create a W&B Run to track the logging of these raw data Artifacts - - Set the ttl attribute on the real raw data - - Log our two Artifacts + Suppose we can now keep one version for a year and another indefinitely. + The next cell fetches each version by alias with `wandb.Api().artifact()`, + changes its `ttl`, and calls `save()` to persist the change. - > We will use the train dataset as our real data and the validation dataset as our fake data. + A `timedelta` sets the retention duration. Setting `ttl = None` deactivates TTL. Changing + the duration does not reset the version's creation date. These metadata + updates do not require a new run or another file upload. """) return -@app.cell(hide_code=True) -def _(train_source_dir, val_source_dir, wandb_settings): - log_raw_artifacts_button = mo.ui.run_button( - label="Log TTL demo Artifact versions" - ) - mo.vstack( - [ - mo.md( - f"This creates a `raw-data` run in " - f"`{wandb_settings['entity']}/{wandb_settings['project']}`, " - "logs two distinct `real-raw` versions with a 10-day TTL, " - "assigns them the `extended` and `compliant` aliases, and " - "logs `fake-raw` without a custom TTL. The files come from " - f"`{train_source_dir}` and `{val_source_dir}`." - ), - log_raw_artifacts_button, - ] - ) - return (log_raw_artifacts_button,) - - -@app.function -def log_raw_artifacts(entity, project, train_source_dir, val_source_dir): - with wandb.init( - entity=entity, - project=project, - job_type="raw-data", - reinit="create_new", - ) as run: - raw_extended_art = wandb.Artifact( - "real-raw", - type="dataset", - description="Raw Imagenette sample approved for extended retention", - ) - raw_extended_art.add_dir(train_source_dir, name="extended-snapshot") - raw_extended_art.ttl = timedelta(days=10) - logged_extended_art = run.log_artifact( - raw_extended_art, - aliases=["extended"], - ) - logged_extended_art.wait() - - raw_compliant_art = wandb.Artifact( - "real-raw", - type="dataset", - description="Raw Imagenette sample approved for indefinite retention", - ) - raw_compliant_art.add_dir(train_source_dir, name="compliant-snapshot") - raw_compliant_art.ttl = timedelta(days=10) - logged_compliant_art = run.log_artifact( - raw_compliant_art, - aliases=["compliant", "latest"], - ) - logged_compliant_art.wait() - - raw_fake_art = wandb.Artifact( - "fake-raw", - type="dataset", - description="Raw sample from val Imagenette", - ) - - raw_fake_art.add_dir(val_source_dir) - logged_fake_art = run.log_artifact(raw_fake_art) - logged_fake_art.wait() - run_url = run.url - alias_paths = { - "extended": f"{entity}/{project}/real-raw:extended", - "compliant": f"{entity}/{project}/real-raw:compliant", - } - return run_url, alias_paths +@app.cell +def _(raw_alias_paths): + _api = wandb.Api() + extended_artifact = _api.artifact(raw_alias_paths["extended"]) + extended_artifact.ttl = timedelta(days=365) + extended_artifact.save() + compliant_artifact = _api.artifact(raw_alias_paths["compliant"]) + compliant_artifact.ttl = None + compliant_artifact.save() -@app.cell(hide_code=True) -def _( - log_raw_artifacts_button, - train_source_dir, - val_source_dir, - wandb_settings, -): - mo.stop( - not log_raw_artifacts_button.value, - mo.callout( - mo.md("Click the button above when you are ready to create the Artifact versions."), - kind="info", - ), - ) - raw_artifacts_run_url, raw_alias_paths = log_raw_artifacts( - wandb_settings["entity"], - wandb_settings["project"], - train_source_dir, - val_source_dir, - ) - mo.callout( - mo.md(f"Artifacts logged: [open the W&B run]({raw_artifacts_run_url})."), - kind="success", - ) - return raw_alias_paths, raw_artifacts_run_url + print(f"extended: {_api.artifact(raw_alias_paths['extended']).ttl}") + print(f"compliant: {_api.artifact(raw_alias_paths['compliant']).ttl}") + return (compliant_artifact,) @app.cell(hide_code=True) def _(): mo.md(r""" - ## Updating/Retroactively Setting TTL on Artifacts - In our hypothetical organization we've been given approval to retain a specific version of our data indefinitely. We've also been given approval to extend the retention date of an additional dataset. Below we'll: + ## Update All Versions in a Collection + + `wandb.Api().artifacts()` lists the versions in an artifact collection. + The next cell queries `fake-raw` directly, then deactivates each version's + TTL with the same `ttl = None` and `save()` pattern. - - Extend the TTL of an Artifact tagged with the `extended` alias - - Remove the TTL of an Artifact tagged with the `compliant` alias - - Programmatically check the status of these two Artifacts + This applies to every version of `fake-raw` in the selected project, + including versions from previous executions of the lesson. - The preceding logging step creates two distinct `real-raw` versions and assigns these aliases. Retroactive TTL changes take effect when the code calls `artifact.save()`. + Team admins can also configure [default TTL policies](https://docs.wandb.ai/models/artifacts/ttl#set-default-ttl-policies-for-a-team) + for artifacts without a custom policy. """) return -@app.cell(hide_code=True) -def _(raw_alias_paths, raw_artifacts_run_url, wandb_settings): - update_alias_ttls_button = mo.ui.run_button( - label="Update TTLs for real-raw:extended and :compliant" - ) - mo.vstack( - [ - mo.md( - f"This reads those two aliases from " - f"`{wandb_settings['entity']}/{wandb_settings['project']}`. " - "It saves only TTL values that need to change. The source " - f"Artifact upload completed in [this run]({raw_artifacts_run_url}). " - f"The exact inputs are `{raw_alias_paths['extended']}` and " - f"`{raw_alias_paths['compliant']}`." - ), - update_alias_ttls_button, - ] - ) - return (update_alias_ttls_button,) - - -@app.function -def update_alias_ttls(entity, project, alias_paths): - extended_path = alias_paths["extended"] - compliant_path = alias_paths["compliant"] - api = wandb.Api() - extended_current = api.artifact(extended_path) - compliant_current = api.artifact(compliant_path) - extended_ttl = timedelta(days=365) - needs_extended_update = extended_current.ttl != extended_ttl - needs_compliant_update = compliant_current.ttl is not None - - changed = [] - run_url = None - if needs_extended_update or needs_compliant_update: - with wandb.init( - entity=entity, - project=project, - job_type="modify-ttl", - reinit="create_new", - ) as run: - extended_art = run.use_artifact(extended_path) - if needs_extended_update: - extended_art.ttl = extended_ttl # Delete in a year - extended_art.save() - changed.append("real-raw:extended") - - compliant_art = run.use_artifact(compliant_path) - if needs_compliant_update: - compliant_art.ttl = None - compliant_art.save() - changed.append("real-raw:compliant") - - print(extended_art.ttl) - print(compliant_art.ttl) - run_url = run.url - return changed, run_url - - -@app.cell(hide_code=True) -def _(raw_alias_paths, update_alias_ttls_button, wandb_settings): - mo.stop( - not update_alias_ttls_button.value, - mo.callout( - mo.md("Click the button above when you are ready to update the aliases."), - kind="info", - ), - ) - updated_aliases, alias_update_run_url = update_alias_ttls( - wandb_settings["entity"], - wandb_settings["project"], - raw_alias_paths, - ) - if updated_aliases: - _alias_message = ( - f"Updated `{', '.join(updated_aliases)}`. " - f"[Open the W&B run]({alias_update_run_url})." - ) - else: - _alias_message = "Both aliases already had the requested TTL values; no run or write was created." - mo.callout(mo.md(_alias_message), kind="success") +@app.cell +def _(project_path): + _api = wandb.Api() + cleared_versions = [] + for _artifact in _api.artifacts(type_name="dataset", name=f"{project_path}/fake-raw"): + _artifact.ttl = None + _artifact.save() + cleared_versions.append(_artifact.qualified_name) + print(f"{_artifact.name}: {_artifact.ttl}") return @app.cell(hide_code=True) def _(): mo.md(r""" - ## Use W&B Import/Export API to Iterate Artifact Versions and Set TTL - Let's say we've received approval to retain all of the data within a given Artifact and we'd like to remove all TTL policies for every version of an Artifact. Below we: + ## Record Lineage During Preprocessing + + The next cell consumes the `compliant` version of `real-raw`, resizes its + images to 64 by 64 pixels, and logs a new `real-prepro` artifact. - - Use the W&B API to get a list of all Runs in a project - - Get a list of all versions of a specific Artifact (e.g. `fake-raw`) - - Iterate over each version and remove any existing TTL policy associated with the version + `preprocessing_run.use_artifact()` records the input relationship, and + `preprocessing_run.log_artifact()` records the output. Together they give Weights & Biases a lineage + graph connecting the source data, preprocessing run, and processed data. """) return -@app.cell(hide_code=True) -def _(raw_artifacts_run_url, wandb_settings): - clear_fake_raw_ttls_button = mo.ui.run_button( - label="Clear TTL from every fake-raw version" - ) - mo.vstack( - [ - mo.md( - f"This searches `{wandb_settings['entity']}/{wandb_settings['project']}` " - "and saves only versions whose TTL is currently set. The " - f"source upload completed in [this run]({raw_artifacts_run_url})." - ), - clear_fake_raw_ttls_button, - ] - ) - return (clear_fake_raw_ttls_button,) - - -@app.function -def clear_fake_raw_ttls(entity, project): - # Artifact metadata extraction - api = wandb.Api() - - # Define entity and project - runs = api.runs(entity + "/" + project) - - version_names = [] - for run in runs: - for artifact in iter(run.logged_artifacts()): - if "fake-raw" in artifact.name: - # Can be edited to just display individual elements - version_names.append(artifact.qualified_name) - - unique_versions = sorted(set(version_names)) - versions_to_clear = [ - version - for version in unique_versions - if api.artifact(version).ttl is not None - ] - run_url = None - if versions_to_clear: - with wandb.init( - entity=entity, - project=project, - job_type="modify-ttl", - reinit="create_new", - ) as run: - for version in versions_to_clear: - version_art = run.use_artifact(version) - version_art.ttl = None - version_art.save() - print(version_art.ttl) - run_url = run.url - return unique_versions, versions_to_clear, run_url - - -@app.cell(hide_code=True) -def _(clear_fake_raw_ttls_button, wandb_settings): - mo.stop( - not clear_fake_raw_ttls_button.value, - mo.callout( - mo.md("Click the button above when you are ready to clear the TTL policies."), - kind="info", - ), - ) - fake_raw_versions, cleared_versions, clear_ttls_run_url = clear_fake_raw_ttls( - wandb_settings["entity"], wandb_settings["project"] - ) - if cleared_versions: - _clear_message = ( - f"Cleared TTL from {len(cleared_versions)} of " - f"{len(fake_raw_versions)} discovered versions. " - f"[Open the W&B run]({clear_ttls_run_url})." - ) - else: - _clear_message = ( - f"Found {len(fake_raw_versions)} `fake-raw` versions, all already " - "without a custom TTL. No run or write was created." - ) - mo.callout(mo.md(_clear_message), kind="success") - return +@app.cell +def _(compliant_artifact, entity, project, workspace): + with tempfile.TemporaryDirectory(dir=workspace) as _data_dir: + output_dir = Path(_data_dir) / "processed" + output_dir.mkdir() + with wandb.init(entity=entity, project=project, job_type="preprocessing") as preprocessing_run: + source = preprocessing_run.use_artifact(compliant_artifact.qualified_name) + source_dir = Path(source.download(root=str(Path(_data_dir) / "raw"))) + for _image_path in source_dir.rglob("*.JPEG"): + _target = output_dir / _image_path.relative_to(source_dir) + _target.parent.mkdir(parents=True, exist_ok=True) + with Image.open(_image_path) as _image: + _image.resize((64, 64)).save(_target) + + processed = wandb.Artifact("real-prepro", type="dataset") + processed.add_dir(str(output_dir)) + processed_artifact = preprocessing_run.log_artifact(processed) + processed_artifact.wait() + print(f"View preprocessing run: {preprocessing_run.url}") + return (processed_artifact,) @app.cell(hide_code=True) def _(): mo.md(r""" - > To apply a TTL policy to all artifacts within a team's projects, team admins can set default TTL policies for their team. The default will be applied to both existing and future artifacts logged to projects as long as no custom policies have been set. To learn more about configuring a team default TTL, visit [this](https://docs.wandb.ai/models/artifacts/ttl#set-default-ttl-policies-for-a-team) section of the W&B documentation. - """) - return + ## Follow Lineage to Set Downstream TTL + TTL policies do not automatically propagate to derived artifacts. The next + cell fetches our source version and uses `used_by()` to find its consuming + runs. For each run, `logged_artifacts()` lists its outputs. We select dataset + outputs, then give them a 30-day TTL and save the changes. -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ## Traverse an Artifact Graph to Set Downstream TTL - In this last section, we'll do some preprocessing on our images and log those as downstream Artifacts. Once again we'll use the W&B Import/Export API to set a TTL policy on our downstream images for images that originated from our "real" dataset. + This follows one dependency step from the source Artifact, through each + consuming run, to that run’s output Artifacts. A longer pipeline would repeat this traversal for each output. """) return -@app.cell(hide_code=True) -def _(): - mo.md(r""" - ### Preprocess and log a new Artifact - """) +@app.cell +def _(compliant_artifact, processed_artifact): + # Referencing the uploaded output orders this cell after preprocessing. + print(f"Preprocessing complete: {processed_artifact.qualified_name}") + _api = wandb.Api() + _source = _api.artifact(compliant_artifact.qualified_name) + downstream_ttls = {} + for consumer_run in _source.used_by(): + for _artifact in consumer_run.logged_artifacts(): + if _artifact.type == "dataset" and _artifact.qualified_name not in downstream_ttls: + _artifact.ttl = timedelta(days=30) + _artifact.save() + downstream_ttls[_artifact.qualified_name] = _artifact.ttl + print(f"{_artifact.qualified_name}: {_artifact.ttl}") return -@app.cell(hide_code=True) -def _(raw_artifacts_run_url, wandb_settings): - preprocess_artifact_button = mo.ui.run_button( - label="Preprocess real-raw:latest and log real-prepro" - ) - mo.vstack( - [ - mo.md( - f"This downloads `real-raw:latest` from " - f"`{wandb_settings['entity']}/{wandb_settings['project']}`, " - "resizes its images, and creates a new downstream Artifact " - "version. Every click intentionally creates a new version. " - f"The source upload completed in [this run]({raw_artifacts_run_url})." - ), - preprocess_artifact_button, - ] - ) - return (preprocess_artifact_button,) - - -@app.function -def preprocess_image(image_path): - "Resize the image to 64x64" - return Image.open(image_path).resize((64, 64)) - - -@app.function -def preprocess_and_log_artifact(entity, project): - with tempfile.TemporaryDirectory() as data_dir: - real_prepro_dir = Path(data_dir) / "prepro" / "real" - real_prepro_dir.mkdir(parents=True, exist_ok=True) - - with wandb.init( - entity=entity, - project=project, - job_type="preprocessing", - reinit="create_new", - ) as run: - real_art = run.use_artifact(f"{entity}/{project}/real-raw:latest") - real_images = Path( - real_art.download(root=Path(data_dir) / "real-raw") - ) - - for image_path in real_images.rglob("*.JPEG"): - print(f"Preprocessing {image_path.name}") - preprocessed_image = preprocess_image(image_path) - preprocessed_image.save(real_prepro_dir / image_path.name) - - prepro_real_art = wandb.Artifact( - "real-prepro", - type="dataset", - description="Preprocessed images from Imagenette", - ) - - prepro_real_art.add_dir(real_prepro_dir) - logged_prepro_art = run.log_artifact(prepro_real_art) - logged_prepro_art.wait() - run_url = run.url - return run_url - - -@app.cell(hide_code=True) -def _(preprocess_artifact_button, wandb_settings): - mo.stop( - not preprocess_artifact_button.value, - mo.callout( - mo.md("Click the button above when you are ready to create the downstream Artifact."), - kind="info", - ), - ) - preprocessing_run_url = preprocess_and_log_artifact( - wandb_settings["entity"], wandb_settings["project"] - ) - mo.callout( - mo.md(f"Downstream Artifact logged: [open the W&B run]({preprocessing_run_url})."), - kind="success", - ) - return (preprocessing_run_url,) - - @app.cell(hide_code=True) def _(): mo.md(r""" - ### Traverse the Artifact Graph and Set TTL - Let's take a look at the original real dataset and traverse downstream runs and Artifacts to set a TTL policy on anything that originated from the real dataset. - """) - return - + ## Inspect TTL Policies -@app.cell(hide_code=True) -def _(preprocessing_run_url, wandb_settings): - set_downstream_ttls_button = mo.ui.run_button( - label="Assign random TTLs to downstream dataset versions" - ) - mo.vstack( - [ - mo.md( - f"This traverses consumers of `real-raw:latest` in " - f"`{wandb_settings['entity']}/{wandb_settings['project']}` and " - "saves a new random 1–100 day TTL on each downstream dataset " - "version. Every click intentionally changes those policies. " - f"The preprocessing upload completed in [this run]({preprocessing_run_url})." - ), - set_downstream_ttls_button, - ] - ) - return (set_downstream_ttls_button,) - - -@app.function -def set_downstream_ttls(entity, project): - api = wandb.Api() - - # For demo purposes we'll just do this on the latest version of the real dataset - artifact = api.artifact(f"{entity}/{project}/real-raw:latest") - consumer_runs = artifact.used_by() - - # Same pattern from above to get all downstream versions - version_names = [] - for run in consumer_runs: - for artifact in iter(run.logged_artifacts()): - # filter for datasets only - if artifact.type == "dataset": - # Can be edited to just display individual elements - version_names.append(artifact.qualified_name) - - unique_versions = sorted(set(version_names)) - changed_ttls = {} - run_url = None - if unique_versions: - with wandb.init( - entity=entity, - project=project, - job_type="modify-ttl", - reinit="create_new", - ) as run: - for version in unique_versions: - version_art = run.use_artifact(version) - # set ttl to a random integer so we can see changes in the UI after we run this - ttl_days = random.randint(1, 100) - version_art.ttl = timedelta(days=ttl_days) - version_art.save() - changed_ttls[version] = ttl_days - run_url = run.url - return changed_ttls, run_url + Open the project link printed earlier and select **Artifacts**. Check the + versions and their TTL policies: `real-raw:extended` has 365 days, + `real-raw:compliant` and `fake-raw` have TTL deactivated, and downstream + datasets have 30 days. The lineage view shows the preprocessing relationship. - -@app.cell(hide_code=True) -def _(set_downstream_ttls_button, wandb_settings): - mo.stop( - not set_downstream_ttls_button.value, - mo.callout( - mo.md("Click the button above when you are ready to change downstream TTL policies."), - kind="info", - ), - ) - downstream_ttls, downstream_ttl_run_url = set_downstream_ttls( - wandb_settings["entity"], wandb_settings["project"] - ) - if downstream_ttls: - _downstream_message = ( - f"Updated {len(downstream_ttls)} downstream dataset versions. " - f"[Open the W&B run]({downstream_ttl_run_url})." - ) - else: - _downstream_message = "No downstream dataset versions were found, so no run or write was created." - mo.callout(mo.md(_downstream_message), kind="success") + The reusable pattern is to fetch a version, assign `artifact.ttl`, and call + `artifact.save()`. See the [TTL documentation](https://docs.wandb.ai/models/artifacts/ttl) + for permissions, team defaults, and expiration behavior. + """) return diff --git a/marimo/convert/zoo-wandb/zoo_wandb.py b/marimo/convert/zoo-wandb/zoo_wandb.py index 4331db04..8451598a 100644 --- a/marimo/convert/zoo-wandb/zoo_wandb.py +++ b/marimo/convert/zoo-wandb/zoo_wandb.py @@ -36,13 +36,18 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - The goal of this notebook is to demonstrate how you and other members of your organization can use W&B Registry to track, share, and use dataset and model artifacts in your machine learning workflows. By the end of this notebook, you will know how to use W&B to: + Use Weights & Biases Registry to share versioned datasets and models across + teams. This lesson converts the UCI Zoo dataset to tensors, logs and links + those files to a Registry collection, trains a classifier, and retrieves the + saved model and test data for inference. - 1. Create [collections](https://docs.wandb.ai/guides/registry/create_collection) within [W&B Registry](https://docs.wandb.ai/guides/registry) - 2. Make dataset and model artifacts available to other members of your organization, and - 3. Download your trained model and dataset artifacts from the registry for inference + The classifier uses animal attributes such as feathers, fins, and number of + legs to predict one of seven dataset classes. The model is intentionally + small so the lesson can focus on Artifact paths, version selection, and lineage. - To achieve this, we will train a neural network to identify animal classes (mammal, amphibian, reptile, and so forth) based on features such as weather or not they ahve feathers, fins, and so on. + Before publishing, check that the target registries exist and that your + account can link versions to their collections. Registry access also determines + which colleagues can retrieve the linked files. """) return @@ -74,6 +79,62 @@ def _(): return fetch_ucirepo, nn, pd, torch, train_test_split, wandb +@app.cell(hide_code=True) +def _(mo): + mo.md(r""" + ## Authenticate with Weights & Biases + + Paste your [Forge API key](https://docs.coreweave.com/products/wandb/platform/hosting/iam/api-keys) into the password field below. Keep your key out of the notebook’s source code. + + If this runtime already has credentials in `WANDB_API_KEY` or your `.netrc` file, leave the API key field blank. + + ## Set your team and project + + Enter your Weights & Biases team name and choose a project for this lesson. The default project is `zoo_experiment`. Then select **Connect to Weights & Biases**. + """) + return + + +@app.cell(hide_code=True) +def _(mo): + wandb_setup_form = mo.md("{api_key}\n\n{entity}\n\n{project}").batch( + api_key=mo.ui.text(kind="password", label="Forge API key", full_width=True), + entity=mo.ui.text(label="Team", placeholder="Your team name", full_width=True), + project=mo.ui.text(value="zoo_experiment", label="Project", full_width=True), + ).form(submit_button_label="Connect to Weights & Biases", bordered=True) + wandb_setup_form + return (wandb_setup_form,) + + +@app.cell(hide_code=True) +def _(mo, wandb, wandb_setup_form): + mo.stop(wandb_setup_form.value is None) + + _submission = wandb_setup_form.value + _api_key = _submission["api_key"].strip() + _entity = _submission["entity"].strip() + _project = _submission["project"].strip() + mo.stop( + not _entity or not _project, + mo.callout("Enter your team and project, then connect again.", kind="warn"), + ) + + try: + _login_ok = wandb.login(key=_api_key or None, relogin=bool(_api_key)) + except (wandb.errors.Error, ValueError): + _login_ok = False + + mo.stop( + not _login_ok, + mo.callout("Check your API key or saved credentials, then connect again.", kind="danger"), + ) + + TEAM_ENTITY = _entity + PROJECT = _project + mo.md("✓ Connected to Weights & Biases.") + return PROJECT, TEAM_ENTITY + + @app.cell(hide_code=True) def _(mo): mo.md(r""" @@ -123,9 +184,14 @@ def _(X): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ### Process data + ### Convert the data to tensors - For training let's convert our dataset from a [pandas `DataFrame`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) to [a tensor with PyTorch](https://pytorch.org/docs/stable/generated/torch.tensor.html#torch.tensor), convert the data type of our input tensor(float64 to float32) to match the data type of the `nn.Linear module`, and convert our label tensor to index from 0-6: + Convert feature values to `float32`, matching the linear layers’ weights. + Convert labels to integer tensors and subtract one so the original class + IDs 1–7 become 0–6, as required by the seven-output classifier. + + Keep the numeric class IDs consistent through training and evaluation. + Human-readable labels are added only when displaying predictions. """) return @@ -161,24 +227,22 @@ def _(dataset, labels, torch): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ## Track and publish dataset - - Within the Dataset registry we will create a collection called "zoo-dataset-tensors". A *collection* is a set of linked artifact versions in a registry. + ## Log and link the dataset - To create a collection we need to do two things: - 1. Specify the collection and registry we want to link our artifact version to. To do this, we specify a "target path" for our artifact version. - 2. Use the `wandb.run.link_artifact` method and pass our artifact object and the target path. + An Artifact stores a versioned set of files in a project. A Registry collection + contains links to Artifact versions so authorized users can discover and reuse + them. Linking creates a reference to the source version. - #### Define target path of the collection + The target path identifies the registry and collection. The registry must + already exist. This example uses a `dataset` registry and a collection named + `zoo-dataset-tensors`. Match the registry name to the one in your organization. - The target path of a collection consists of two parts: - * The name of the registry - * The name of the collection within the registry - - If you know these two fields, you can create the full name yourself with string concatenation, f-strings, and so forth: ```python target_path = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" ``` + + See [Link an artifact version to a collection](https://docs.coreweave.com/products/registry/link_version) + for the required permissions and supported paths. """) return @@ -186,17 +250,15 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ### Publish dataset to registry + ### Publish the dataset to Registry - Let's publish our dataset to the Dataset registry in a collection called "zoo-dataset-tensors". To do this, we will + Define the target path, start a run, and create a dataset Artifact. Add the + feature and label tensor files, then call `run.link_artifact()` with the + Artifact and target path. For this draft Artifact, the call logs the files + as a run output and links the resulting version to the collection. - 1. Get or create the target path. (For this notebook we will programmatically create the target path). - 1. Initialize a run - 1. Create an artifact object - 2. Add each split dataset as individual files to the artifact object - 3. Link the artifact object to the collection with `run.link_artifact()`. Here we specify the target path and the artifact we want to link. - - First, let's create the target path: + These first files contain the full dataset. The following section creates + and publishes separate training and test files. """) return @@ -214,15 +276,15 @@ def _(): @app.cell(hide_code=True) def _(mo): mo.md(r""" - Now that we have the target path, let's publish the dataset to the "Dataset" registry. In the following code cell, ensure to replace the values enclosed in `<>` with your team's entity: + The next cell uses the team and project from the setup form. It adds + `zoo_dataset.pt` and `zoo_labels.pt` to a dataset Artifact, links the version + to `dataset_target_path`, and finishes the run. """) return @app.cell -def _(dataset_target_path, wandb): - TEAM_ENTITY = "" - PROJECT = "zoo_experiment" +def _(PROJECT, TEAM_ENTITY, dataset_target_path, wandb): run = wandb.init( entity=TEAM_ENTITY, @@ -242,7 +304,7 @@ def _(dataset_target_path, wandb): run.link_artifact(artifact=artifact, target_path=dataset_target_path) run.finish() - return PROJECT, TEAM_ENTITY + return @app.cell(hide_code=True) @@ -313,7 +375,7 @@ def _(PROJECT, TEAM_ENTITY, config, wandb): @app.cell(hide_code=True) def _(mo): mo.md(r""" - We can verify we correctly linked our artifact to our desired collection and registry with W&B App UI: + We can verify we correctly linked our artifact to our desired collection and registry with Weights & Biases App UI: 1. Navigate to the Registry App 2. Select on the Dataset registry @@ -329,9 +391,12 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ## Define a model + ## Define a classifier - The following cells show how to create a simple neural network classifier with PyTorch. There is nothing unique about this model, so we'll will not go into detail of this code block. + The network maps 16 animal attributes to 16 hidden units with a sigmoid + activation, then produces seven class scores. Cross-entropy loss accepts + these scores directly. The same architecture must be recreated when loading + the saved state dictionary later. """) return @@ -384,24 +449,22 @@ def _(hyperparameter_config, model, nn, torch): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ## Train model + ## Train from a registered dataset - Next, let's train a model using the training data we published to the registry earlier in this notebook. After we train the model, we will publish that model to W&B. - - To do this, let's first get the artifact we published to the "Dataset" registry. To retrieve an artifact from a registry, we need to know the name of that artifact. The name of an artifact in a registry consists of the prefix `wandb-registry-`, the name of the registry, the name of the collection, and the artifact version: + Retrieve the split dataset through its Registry path so the training run + records exactly which Artifact version it consumed. ```python - # Artifact name/filepath for downloading and using artifacts published to a registry - f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" + artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}" ``` - Since we only linked one artifact version, the version we'll use is `v0`. (W&B uses 0 indexing). - Note that the name of an artifact is nearly identical to the target path we specified in a previous step when we publish our artifact to the registry except for the version number: + The code below selects `v0`. That is appropriate only if it is the split you + intend to train on. If the collection already existed or you reran publication, + inspect its versions and update `VERSION` before training. A Registry collection’s + version number need not match the source project’s version number. - ```python - # Target path for publising an artifact version to a registry - f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" - ``` + A target path identifies the collection used when linking. Adding a version + suffix selects a specific entry to download. """) return @@ -458,17 +521,18 @@ def _( @app.cell(hide_code=True) def _(mo): mo.md(r""" - The preceding cell might look intimidating. Let's break it down: + The training run downloads the feature and label files from the registered + split, updates the model, and logs training loss. Every 100 iterations, + including iteration zero, it saves weights when the loss improves over the + previous saved checkpoint. - * First, we download the dataset from the Dataset registry and load it as a tensor - * Next, we create a simple training loop - * Within the training loop we log the loss for each step - * We checkpoint(save) the model every time the remainder of the epoch divided by 100 is 0 and the loss is lower than the previously recorded loss. - * We then add the saved PyTorch model to our artifact object. + The checkpoint file is overwritten locally. After training, the code uploads + only the final saved checkpoint as one model Artifact version. It does not + upload a version at every checkpoint interval, and checkpoint selection uses + training loss rather than held-out performance. - A couple of things to note: - 1. The preceding code cell adds a single artifact version to W&B. You can confirm this by navigating to your project workspace, select **Artifacts** in the left navigation, and under **models** click the name of the artifact (starts with `zoo-{run.id}`). You will see a single model with version `v0`. - 2. At this point, we have only tracked the model artifact within our team's project. Anyone outside of our team does not have access to the model we created. To make this model accessible to members outside of our team, we will need to publish our model to the registry. + The model is now stored in the selected project. The next step links that + version to Registry, where access is governed by the registry’s permissions. """) return @@ -476,26 +540,18 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ## Publish model to registry - Let's make this model artifact available to other users in our organization. To do this, we will create a collection within the Model registry. - - To create a collection within a registry, we need to know the full name of the artifact. The full name of the artifact consists of the name we provided to it when we created the Artifact object and its location within our team's project. - - There are two ways to get the full name of an artifact, interatively with the W&B App UI or programmatically with the W&B Python SDK. In this example, we'll programmatically create the name of the artifact since we have these values loaded into memory. - - ### Programmatically create name of artifact + ## Link the trained model to Registry - The full name of an artifact consists of four components: - * Team entity - * Project name - * The name of the artifact (the string you passed when you created the artifact object with `wandb.Artifact()`) - * The artifact version + First identify the model version stored in the team project. Its path contains + the team, project, Artifact name, and version suffix. - Putting this together, the full name of an artifact is: ```python - # Full name of an artifact in a team project - artifact_name = f'{TEAM_ENTITY}/{PROJECT}/{ARTIFACT_NAME}:v{VERSION}' + artifact_name = f"{TEAM_ENTITY}/{PROJECT}/{ARTIFACT_NAME}:v{VERSION}" ``` + + This example uses a run-specific model name and selects its first version, + `v0`. If you adapt the code to reuse Artifact names, choose the intended + version explicitly before linking it. """) return @@ -511,16 +567,16 @@ def _(PROJECT, TEAM_ENTITY, model_artifact_name): @app.cell(hide_code=True) def _(mo): mo.md(r""" - Now that we have the full name of our model artifact. Let's publish it to the model registry. - - Similar to how we created a target path when we published our dataset artifact to the Dataset registry, let's create the target path for our model artifact. The target path tells W&B the collection and registry (Model registry) to link our artifact version to. - - As a reminder, the target path to link an artifact to a registry consists of: + Define the destination collection for the model version. The next cell uses + the `model` registry and the `Zoo_Classifier_Models` collection. Check that + the registry name matches your organization before running the linking cell. ```python - # Target path used to link artifact to registry target_path = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}" ``` + + The source Artifact path selects the files to share. The target path selects + where users will discover that version in Registry. """) return @@ -562,24 +618,20 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ### View lineage map of registered model - - Let's say that you did not know exactly which model version to use. You can check the lineage of all artifact versions on the W&B App UI. The lineage shows which artifacts were used as input to a run and which artifacts were the output of a given run. - - For example, the image below shows the "Zoo_Classifier_Models" collection within the model registry. Highlighted in yellow is the current model artifact version that is linked to the registry. + ### Inspect the registered model’s lineage - From left to right we see that the run "trim-rain-2" was responible for creating the "split_zoo_dataset" artifact. (Recall that this is the dataset artifact that contains the test and training data). + Open the model version in Registry and inspect its **Lineage** view. Follow + the input edge to the split dataset and the output edge from the training + run to the model. This connects the saved weights to the data version used + for training. - We then see that the "golden-sunset-3" run used the "split_zoo_dataset" artifact for training. Within this run, we created a model artifact. The specific artifact version we linked to "Zoo_Classifier_Models" is called `zoo-wyhak4o0:v10`. + The screenshot below is an earlier example. Its run names and version numbers + will differ from yours. - ![](./images/dag_model_registry.png) + ![Example dataset and model lineage](./images/dag_model_registry.png) - To view the lineage map of an artifact in a registry: - - 1. Navigate to the Registry app at https://wandb.ai/registry - 2. Click on a registry - 3. Select an artifact version - 3. Select the **Lineage** tab + Use the lineage graph to choose a model version based on its recorded inputs + and training run, then copy that version’s full path for inference. """) return @@ -587,27 +639,20 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - --- - ## Download artifacts from registry for inference - - For this last section, suppose you are a different user in a different team within the same organization. You and your team want to download the model and test dataset that was published to your organization's registry by a different team. You and your team will use the model and test dataset for inference and store those findings in a project called "Check_Zoo_Model". - - Note: The team member that wants do use and download published artifacts has [member role permissions](https://docs.wandb.ai/guides/registry/configure_registry#registry-roles-permissions). This means they can view and download artifacts from the registry. + ## Download registered artifacts for inference - How can you retrieve the artifacts version that were published by another team? Simple: + The final section simulates using the registered model from another team’s + project. It downloads model weights and the test split, recreates the model, + and compares predictions with the saved labels. - 1. Get the full name of the artifact version programmatically or interactively with the W&B App UI - 2. Use the W&B Python SDK to download the artifacts + The API key submitted earlier must have access to the Registry versions and + permission to create runs in the destination project. Changing the destination + team does not authenticate as a different person. - #### Interactively get full name of model and dataset artifacts from registry - 1. Go to the W&B Registry app at https://wandb.ai/registry/. - 2. Select the registry that your artifact is linked to. - 3. Click the **View details** button next to the name of the collection with your linked artifact. - 4. Click on the **View** button next to the artifact version. - 5. Within the **Version** tab, copy path listed next to **Full Name**. - 6. Paste the full name of the registry for the `artifact_or_name` field in `run.use_artifact()`. - - Note: In this example, we happen to know these values, so we'll programmatically create the full name of our model and dataset artifacts published in the registry. + Open each version in Registry and copy its full Artifact path, or construct + the path from the registry, collection, and version. The examples below use + `VERSION_1 = 0` and `VERSION_2 = 0`. Update them if the intended model or test + split has another version number. """) return @@ -634,9 +679,9 @@ def _(): @app.cell(hide_code=True) def _(mo): mo.md(r""" - In the following code cell, ensure to replace the values enclosed in `<>` with the entity of a different team in your organization than the one you specified earlier in this notebook. - - Note: If you do not have another team entity, you can re-use the entity you specified earlier. + Replace `` with a team where your authenticated account can create + runs. You can reuse the team selected in the setup form if you do not have + a second team. The run records the downloaded model as an input. """) return @@ -655,7 +700,8 @@ def _(model_artifact_name_1, wandb): @app.cell(hide_code=True) def _(mo): mo.md(r""" - For PyTorch models, we need to redefine our model architecture: + The checkpoint contains a state dictionary. Recreate the same architecture + before loading its saved weights. """) return @@ -720,11 +766,19 @@ def _(local_dataset_path, run_5, torch): @app.cell(hide_code=True) def _(mo): mo.md(r""" - ### Make predictions with loaded model + ### Interpret model predictions - How does our model perform? Recall that the goal of the neural network is to predict the animall class based on features of that animal. + The model returns seven scores for each animal. Taking `argmax` selects a + numeric class ID. The display dictionary should map those IDs to the same + classes used by the dataset. - For each prediction, our model returns an integer that refers the class. Let's create a dictionary so we can map the integer to the class name: + **The display dictionary below needs correction before interpreting class + names.** After subtracting one from the UCI labels, ID 0 is mammal and ID 1 + is bird. ID 3 includes fish, and ID 6 covers the dataset’s remaining + invertebrates, not only crustaceans. Check the + [UCI class definitions](https://www.archive.ics.uci.edu/dataset/111/zoo) + when updating that mapping. Numeric prediction comparisons remain the basis + for accuracy. """) return @@ -761,7 +815,9 @@ def _(loaded_data, loaded_model, torch): @app.cell(hide_code=True) def _(mo): mo.md(r""" - These integers don't mean much, let's convert them to return the animal class and store this into a pandas DataFrame for us to compare the predicted vs the true values: + Build a DataFrame that pairs each prediction with its reference label. + Use the numeric IDs to check correctness, and verify the display dictionary + before using class names to explain individual errors. """) return @@ -793,7 +849,8 @@ def _(df): @app.cell(hide_code=True) def _(mo): mo.md(r""" - Let's see how many it predicted corrected + Count correct and incorrect predictions to see how many test examples + contribute to the accuracy percentage. """) return @@ -823,7 +880,10 @@ def _(df): @app.cell(hide_code=True) def _(mo): mo.md(r""" - The percentage the model predicted correct might vary. As of writing this notebook, our the model correctly predicted ~88% of the time: + Use the percentage calculated from your current predictions. The historical + output below reports about 88%, but it is not a target or a result produced + by the current run. This small test split can give noticeably different + scores after changes to training or initialization. """) return @@ -842,20 +902,23 @@ def _(mo): @app.cell(hide_code=True) def _(mo): mo.md(r""" - As a next step, you could dig into the examples that were incorrectly predicted and try to figure out why it predicted incorrectly. You could also try feature engineering to extract more features to train with. - - ## Summary - In this notebook completed each major step in a typical machine learning workflow, from downloading a dataset, processing the dataset, defining a model, training that model on processed data, checking/saving the best model, and checking how the model performed by making predictions with that model on a dataset it had not seen before. + ## Review the saved experiment - Throughout the process you learned how to use W&B Registry to: + You have logged dataset files, linked their versions to Registry, trained + from a registered split, and retrieved a model and test data for inference. + The Registry paths and lineage connect these steps across projects. - * Track and publish multiple datasets - * Track and publish a model - * Mimic how someone else in your organization (with correct permission) can download and use model and datasets published in the W&B Registry for further analysis. + Inspect incorrect predictions alongside the original animal attributes. + The test split is small, so avoid drawing broad conclusions from one accuracy + value. If you use these examples to change the model, reserve other data for + a final evaluation. - ## Next steps: + ## Document a model version for reuse - As the number of machine learning experiments increases, so does the complexity of keeping track of saved models and datasets. For each model version, we recommend that you document key aspects of your model such as a brief summary of the model, information about the architecture of the model, how someone can deserialize a saved model, and so forth. You can provide all of this information, and more, within the **Description** field of the model version. + Add a description explaining the expected input features, network architecture, + class-ID mapping, and how to load the state dictionary. Include the training + data version and evaluation results. This gives another user the information + needed to use the saved model correctly. """) return